obsidian-dev-utils 13.3.1 → 13.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/dist/lib/Object.cjs +5 -1
- package/dist/lib/Object.d.ts +5 -0
- package/dist/lib/scripts/version.cjs +2 -2
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
package/dist/lib/Object.cjs
CHANGED
@@ -141,6 +141,7 @@ function toJson(value, options = {}) {
|
|
141
141
|
maxDepth: -1,
|
142
142
|
shouldHandleCircularReferences: false,
|
143
143
|
shouldHandleUndefined: false,
|
144
|
+
shouldSortKeys: false,
|
144
145
|
space: 2
|
145
146
|
};
|
146
147
|
const fullOptions = { ...DEFAULT_OPTIONS, ...options };
|
@@ -191,6 +192,9 @@ function toJson(value, options = {}) {
|
|
191
192
|
}
|
192
193
|
objectDepthMap.set(property, depth + 1);
|
193
194
|
}
|
195
|
+
if (fullOptions.shouldSortKeys) {
|
196
|
+
return Object.fromEntries(Object.entries(value2).sort(([key1], [key2]) => key1.localeCompare(key2)));
|
197
|
+
}
|
194
198
|
}
|
195
199
|
return value2;
|
196
200
|
};
|
@@ -225,4 +229,4 @@ function _assignWithNonEnumerableProperties(target, ...sources) {
|
|
225
229
|
setNestedPropertyValue,
|
226
230
|
toJson
|
227
231
|
});
|
228
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL09iamVjdC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsidmFyIF9fcHJvY2VzcyA9IGdsb2JhbFRoaXNbJ3Byb2Nlc3MnXSA/PyB7XG4gIFwiYnJvd3NlclwiOiB0cnVlLFxuICBcImN3ZFwiOiAoKT0+XCIvXCIsXG4gIFwiZW52XCI6IHt9LFxuICBcInBsYXRmb3JtXCI6IFwiYW5kcm9pZFwiXG59O1xuLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb24gT2JqZWN0XG4gKiBDb250YWlucyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgT2JqZWN0cy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFVuZGVmaW5lZE9uUGFydGlhbERlZXAgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgeyB0aHJvd0V4cHJlc3Npb24gfSBmcm9tICcuL0Vycm9yLnRzJztcbmltcG9ydCB7IHJlcGxhY2VBbGwgfSBmcm9tICcuL1N0cmluZy50cyc7XG5cbi8qKlxuICogU3BlY2lmaWVzIGhvdyBmdW5jdGlvbnMgc2hvdWxkIGJlIGhhbmRsZWQgaW4gdGhlIEpTT04gb3V0cHV0LlxuICAgKi9cbmV4cG9ydCBlbnVtIEZ1bmN0aW9uSGFuZGxpbmdNb2RlIHtcbiAgLyoqXG4gICAqIEV4Y2x1ZGVzIGZ1bmN0aW9ucyBmcm9tIHRoZSBKU09OIG91dHB1dC5cbiAgICovXG4gIEV4Y2x1ZGUgPSAnZXhjbHVkZScsXG4gIC8qKlxuICAgKiBJbmNsdWRlcyB0aGUgZnVsbCBmdW5jdGlvbiBkZWZpbml0aW9uIGluIHRoZSBKU09OIG91dHB1dC5cbiAgICovXG4gIEZ1bGwgPSAnZnVsbCcsXG4gIC8qKlxuICAgKiBJbmNsdWRlcyBvbmx5IHRoZSBmdW5jdGlvbiBuYW1lIGluIHRoZSBKU09OIG91dHB1dC5cbiAgICovXG4gIE5hbWVPbmx5ID0gJ25hbWVPbmx5J1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGNvbnZlcnRpbmcgYW4gb2JqZWN0IHRvIEpTT04uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVG9Kc29uT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgaG93IGZ1bmN0aW9ucyBzaG91bGQgYmUgaGFuZGxlZCBpbiB0aGUgSlNPTiBvdXRwdXQgKGRlZmF1bHQ6IGBleGNsdWRlYCkuXG4gICAqL1xuICBmdW5jdGlvbkhhbmRsaW5nTW9kZTogRnVuY3Rpb25IYW5kbGluZ01vZGU7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIG1heGltdW0gZGVwdGggb2YgbmVzdGVkIG9iamVjdHMgdG8gaW5jbHVkZSBpbiB0aGUgSlNPTiBvdXRwdXQuXG4gICAqIFVzZSBgLTFgIGZvciBubyBsaW1pdC5cbiAgICogRGVmYXVsdHMgdG8gYC0xYC5cbiAgICovXG4gIG1heERlcHRoOiBudW1iZXI7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hldGhlciB0byBoYW5kbGUgY2lyY3VsYXIgcmVmZXJlbmNlcyBpbiB0aGUgSlNPTiBvdXRwdXQuXG4gICAqIERlZmF1bHRzIHRvIGBmYWxzZWAuXG4gICAqL1xuICBzaG91bGRIYW5kbGVDaXJjdWxhclJlZmVyZW5jZXM6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hldGhlciB0byBoYW5kbGUgdW5kZWZpbmVkIHZhbHVlcyBpbiB0aGUgSlNPTiBvdXRwdXQuXG4gICAqIERlZmF1bHRzIHRvIGBmYWxzZWAuXG4gICAqL1xuICBzaG91bGRIYW5kbGVVbmRlZmluZWQ6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGluZGVudGF0aW9uIG9mIHRoZSBKU09OIG91dHB1dC4gVGhpcyBjYW4gYmUgYSBudW1iZXIgb2Ygc3BhY2VzIG9yIGEgc3RyaW5nLiBEZWZhdWx0cyB0byBgMmAuXG4gICAqL1xuICBzcGFjZTogbnVtYmVyIHwgc3RyaW5nO1xufVxuXG4vKipcbiAqIEFzc2lnbnMgcHJvcGVydGllcyBmcm9tIG9uZSBvciBtb3JlIHNvdXJjZSBvYmplY3RzIHRvIGEgdGFyZ2V0IG9iamVjdCwgaW5jbHVkaW5nIG5vbi1lbnVtZXJhYmxlIHByb3BlcnRpZXMuXG4gKlxuICogQHBhcmFtIHRhcmdldCAtIFRoZSB0YXJnZXQgb2JqZWN0IHRvIGFzc2lnbiBwcm9wZXJ0aWVzIHRvLlxuICogQHBhcmFtIHNvdXJjZSAtIFRoZSBzb3VyY2Ugb2JqZWN0IHRvIGFzc2lnbiBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcmV0dXJucyBUaGUgdGFyZ2V0IG9iamVjdCB3aXRoIHRoZSBhc3NpZ25lZCBwcm9wZXJ0aWVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzaWduV2l0aE5vbkVudW1lcmFibGVQcm9wZXJ0aWVzPFQgZXh0ZW5kcyBvYmplY3QsIFU+KHRhcmdldDogVCwgc291cmNlOiBVKTogVCAmIFU7XG5cbi8qKlxuICogQHBhcmFtIHRhcmdldCAtIFRoZSB0YXJnZXQgb2JqZWN0IHRvIGFzc2lnbiBwcm9wZXJ0aWVzIHRvLlxuICogQHBhcmFtIHNvdXJjZTEgLSBUaGUgZmlyc3Qgc291cmNlIG9iamVjdCB0byBhc3NpZ24gcHJvcGVydGllcyBmcm9tLlxuICogQHBhcmFtIHNvdXJjZTIgLSBUaGUgc2Vjb25kIHNvdXJjZSBvYmplY3QgdG8gYXNzaWduIHByb3BlcnRpZXMgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSB0YXJnZXQgb2JqZWN0IHdpdGggdGhlIGFzc2lnbmVkIHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ25XaXRoTm9uRW51bWVyYWJsZVByb3BlcnRpZXM8VCBleHRlbmRzIG9iamVjdCwgVSwgVj4odGFyZ2V0OiBULCBzb3VyY2UxOiBVLCBzb3VyY2UyOiBWKTogVCAmIFUgJiBWO1xuXG4vKipcbiAqIEFzc2lnbnMgcHJvcGVydGllcyBmcm9tIG9uZSBvciBtb3JlIHNvdXJjZSBvYmplY3RzIHRvIGEgdGFyZ2V0IG9iamVjdCwgaW5jbHVkaW5nIG5vbi1lbnVtZXJhYmxlIHByb3BlcnRpZXMuXG4gKlxuICogQHBhcmFtIHRhcmdldCAtIFRoZSB0YXJnZXQgb2JqZWN0IHRvIGFzc2lnbiBwcm9wZXJ0aWVzIHRvLlxuICogQHBhcmFtIHNvdXJjZTEgLSBUaGUgZmlyc3Qgc291cmNlIG9iamVjdCB0byBhc3NpZ24gcHJvcGVydGllcyBmcm9tLlxuICogQHBhcmFtIHNvdXJjZTIgLSBUaGUgc2Vjb25kIHNvdXJjZSBvYmplY3QgdG8gYXNzaWduIHByb3BlcnRpZXMgZnJvbS5cbiAqIEBwYXJhbSBzb3VyY2UzIC0gVGhlIHRoaXJkIHNvdXJjZSBvYmplY3QgdG8gYXNzaWduIHByb3BlcnRpZXMgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSB0YXJnZXQgb2JqZWN0IHdpdGggdGhlIGFzc2lnbmVkIHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ25XaXRoTm9uRW51bWVyYWJsZVByb3BlcnRpZXM8VCBleHRlbmRzIG9iamVjdCwgVSwgViwgVz4odGFyZ2V0OiBULCBzb3VyY2UxOiBVLCBzb3VyY2UyOiBWLCBzb3VyY2UzOiBXKTogVCAmIFUgJiBWICYgVztcblxuLyoqXG4gKiBBc3NpZ25zIHByb3BlcnRpZXMgZnJvbSBvbmUgb3IgbW9yZSBzb3VyY2Ugb2JqZWN0cyB0byBhIHRhcmdldCBvYmplY3QsIGluY2x1ZGluZyBub24tZW51bWVyYWJsZSBwcm9wZXJ0aWVzLlxuICpcbiAqIEBwYXJhbSB0YXJnZXQgLSBUaGUgdGFyZ2V0IG9iamVjdCB0byBhc3NpZ24gcHJvcGVydGllcyB0by5cbiAqIEBwYXJhbSBzb3VyY2VzIC0gVGhlIHNvdXJjZSBvYmplY3RzIHRvIGFzc2lnbiBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcmV0dXJucyBUaGUgdGFyZ2V0IG9iamVjdCB3aXRoIHRoZSBhc3NpZ25lZCBwcm9wZXJ0aWVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzaWduV2l0aE5vbkVudW1lcmFibGVQcm9wZXJ0aWVzKHRhcmdldDogb2JqZWN0LCAuLi5zb3VyY2VzOiBvYmplY3RbXSk6IG9iamVjdCB7XG4gIHJldHVybiBfYXNzaWduV2l0aE5vbkVudW1lcmFibGVQcm9wZXJ0aWVzKHRhcmdldCwgLi4uc291cmNlcyk7XG59XG5cbi8qKlxuICogQ2xvbmVzIGFuIG9iamVjdCwgaW5jbHVkaW5nIG5vbi1lbnVtZXJhYmxlIHByb3BlcnRpZXMuXG4gKlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyBBIG5ldyBvYmplY3Qgd2l0aCB0aGUgc2FtZSBwcm9wZXJ0aWVzIGFzIHRoZSBvcmlnaW5hbCBvYmplY3QsIGluY2x1ZGluZyBub24tZW51bWVyYWJsZSBwcm9wZXJ0aWVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2xvbmVXaXRoTm9uRW51bWVyYWJsZVByb3BlcnRpZXM8VCBleHRlbmRzIG9iamVjdD4ob2JqOiBUKTogVCB7XG4gIHJldHVybiBPYmplY3QuY3JlYXRlKGdldFByb3RvdHlwZU9mKG9iaiksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG9iaikpIGFzIFQ7XG59XG5cbi8qKlxuICogQ29tcGFyZXMgdHdvIHZhbHVlcyB0byBkZXRlcm1pbmUgaWYgdGhleSBhcmUgZGVlcGx5IGVxdWFsLlxuICpcbiAqIEBwYXJhbSBhIC0gVGhlIGZpcnN0IHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0gYiAtIFRoZSBzZWNvbmQgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBkZWVwbHkgZXF1YWwsIG90aGVyd2lzZSBgZmFsc2VgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVlcEVxdWFsKGE6IHVua25vd24sIGI6IHVua25vd24pOiBib29sZWFuIHtcbiAgaWYgKGEgPT09IGIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgYSAhPT0gJ29iamVjdCcgfHwgdHlwZW9mIGIgIT09ICdvYmplY3QnIHx8IGEgPT09IG51bGwgfHwgYiA9PT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGtleXNBID0gT2JqZWN0LmtleXMoYSk7XG4gIGNvbnN0IGtleXNCID0gT2JqZWN0LmtleXMoYik7XG5cbiAgaWYgKGtleXNBLmxlbmd0aCAhPT0ga2V5c0IubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgYVJlY29yZCA9IGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGNvbnN0IGJSZWNvcmQgPSBiIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXNBKSB7XG4gICAgaWYgKCFrZXlzQi5pbmNsdWRlcyhrZXkpIHx8ICFkZWVwRXF1YWwoYVJlY29yZFtrZXldLCBiUmVjb3JkW2tleV0pKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogRGVsZXRlcyBtdWx0aXBsZSBwcm9wZXJ0aWVzIGZyb20gYW4gb2JqZWN0LlxuICpcbiAqIEBwYXJhbSBvYmogLSBUaGUgb2JqZWN0IHRvIGRlbGV0ZSB0aGUgcHJvcGVydGllcyBmcm9tLlxuICogQHBhcmFtIHByb3BlcnR5TmFtZXMgLSBUaGUgbmFtZXMgb2YgdGhlIHByb3BlcnRpZXMgdG8gZGVsZXRlLlxuICogQHJldHVybnMgYHRydWVgIGlmIGFueSBvZiB0aGUgcHJvcGVydGllcyB3ZXJlIHByZXNlbnQsIG90aGVyd2lzZSBgZmFsc2VgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVsZXRlUHJvcGVydGllcyhvYmo6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBwcm9wZXJ0eU5hbWVzOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICBsZXQgYW5zID0gZmFsc2U7XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eU5hbWUgb2YgcHJvcGVydHlOYW1lcykge1xuICAgIGFucyA9IGRlbGV0ZVByb3BlcnR5KG9iaiwgcHJvcGVydHlOYW1lKSB8fCBhbnM7XG4gIH1cblxuICByZXR1cm4gYW5zO1xufVxuXG4vKipcbiAqIERlbGV0ZXMgYSBwcm9wZXJ0eSBmcm9tIGFuIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCB0byBkZWxldGUgdGhlIHByb3BlcnR5IGZyb20uXG4gKiBAcGFyYW0gcHJvcGVydHlOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHRvIGRlbGV0ZS5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgcHJvcGVydHkgd2FzIHByZXNlbnQsIG90aGVyd2lzZSBgZmFsc2VgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVsZXRlUHJvcGVydHkob2JqOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgcHJvcGVydHlOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wZXJ0eU5hbWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZHluYW1pYy1kZWxldGVcbiAgZGVsZXRlIG9ialtwcm9wZXJ0eU5hbWVdO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSB2YWx1ZSBvZiBhIG5lc3RlZCBwcm9wZXJ0eSBmcm9tIGFuIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCB0byBnZXQgdGhlIG5lc3RlZCBwcm9wZXJ0eSB2YWx1ZSBmcm9tLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCB0byB0aGUgbmVzdGVkIHByb3BlcnR5LlxuICogQHJldHVybnMgVGhlIHZhbHVlIG9mIHRoZSBuZXN0ZWQgcHJvcGVydHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXROZXN0ZWRQcm9wZXJ0eVZhbHVlKG9iajogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHBhdGg6IHN0cmluZyk6IHVua25vd24ge1xuICBsZXQgbm9kZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQgPSBvYmo7XG4gIGNvbnN0IGtleXMgPSBwYXRoLnNwbGl0KCcuJyk7XG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICBpZiAobm9kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBub2RlID0gbm9kZVtrZXldIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkO1xuICB9XG5cbiAgcmV0dXJuIG5vZGU7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgcHJvdG90eXBlIG9mIHRoZSBzcGVjaWZpZWQgb2JqZWN0LlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSBvYmplY3QuXG4gKiBAcGFyYW0gaW5zdGFuY2UgLSBUaGUgb2JqZWN0IGluc3RhbmNlIHRvIHJldHJpZXZlIHRoZSBwcm90b3R5cGUgb2YuXG4gKiBAcmV0dXJucyBUaGUgcHJvdG90eXBlIG9mIHRoZSBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQcm90b3R5cGVPZjxUPihpbnN0YW5jZTogVCk6IFQge1xuICBpZiAoaW5zdGFuY2UgPT09IHVuZGVmaW5lZCB8fCBpbnN0YW5jZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfVxuICByZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKGluc3RhbmNlKSBhcyBUO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgbmFtZSBvZiBhIHByb3BlcnR5IG9mIGEgZ2l2ZW4gdHlwZSBgVGAuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIG9iamVjdCBjb250YWluaW5nIHRoZSBwcm9wZXJ0eS5cbiAqIEBwYXJhbSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IGFzIGEgc3RyaW5nLlxuICogQHJldHVybnMgVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbmFtZW9mPFQ+KG5hbWU6IEV4dHJhY3Q8a2V5b2YgVCwgc3RyaW5nPik6IHN0cmluZyB7XG4gIHJldHVybiBuYW1lO1xufVxuXG4vKipcbiAqIE5vcm1hbGl6ZXMgb3B0aW9uYWwgcHJvcGVydGllcyB0byBhbGxvdyBgdW5kZWZpbmVkYCBhc3NpZ25tZW50IGluIHN0cmljdCBtb2RlLlxuICpcbiAqIFRoaXMgdXRpbGl0eSBwcm92aWRlcyBhIHdvcmthcm91bmQgZm9yIHRoZSBgZXhhY3RPcHRpb25hbFByb3BlcnR5VHlwZXNgIFR5cGVTY3JpcHQgZmxhZyxcbiAqIHdoaWNoIHByb2hpYml0cyBkaXJlY3RseSBhc3NpZ25pbmcgYHVuZGVmaW5lZGAgdG8gb3B0aW9uYWwgcHJvcGVydGllcyB3aGVuIHRoZSB0eXBlXG4gKiBleHBsaWNpdGx5IG9taXRzIGB1bmRlZmluZWRgLlxuICpcbiAqIEV4YW1wbGU6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBXaXRoIGBleGFjdE9wdGlvbmFsUHJvcGVydHlUeXBlczogdHJ1ZWBcbiAqIGNvbnN0IHg6IHsgcHJvcD86IHN0cmluZyB9ID0geyBwcm9wOiB1bmRlZmluZWQgfTsgLy8gQ29tcGlsZXIgZXJyb3JcbiAqXG4gKiAvLyBVc2luZyB0aGlzIHV0aWxpdHk6XG4gKiBjb25zdCB5OiB7IHByb3A/OiBzdHJpbmcgfSA9IG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllczx7IHByb3A/OiBzdHJpbmcgfT4oeyBwcm9wOiB1bmRlZmluZWQgfSk7IC8vIFdvcmtzXG4gKiBgYGBcbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdGFyZ2V0IHR5cGUgd2l0aCBvcHRpb25hbCBwcm9wZXJ0aWVzIHRvIG5vcm1hbGl6ZS5cbiAqIEBwYXJhbSBvYmogLSBUaGUgb2JqZWN0IHRvIG5vcm1hbGl6ZSwgYWxsb3dpbmcgZXhwbGljaXQgYHVuZGVmaW5lZGAgZm9yIG9wdGlvbmFsIHByb3BlcnRpZXMuXG4gKiBAcmV0dXJucyBUaGUgbm9ybWFsaXplZCBvYmplY3QsIGNvbXBhdGlibGUgd2l0aCBgZXhhY3RPcHRpb25hbFByb3BlcnR5VHlwZXNgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplT3B0aW9uYWxQcm9wZXJ0aWVzPFQ+KG9iajogVW5kZWZpbmVkT25QYXJ0aWFsRGVlcDxUPik6IFQge1xuICByZXR1cm4gb2JqIGFzIFQ7XG59XG5cbi8qKlxuICogU2V0cyB0aGUgdmFsdWUgb2YgYSBuZXN0ZWQgcHJvcGVydHkgaW4gYW4gb2JqZWN0LlxuICpcbiAqIEBwYXJhbSBvYmogLSBUaGUgb2JqZWN0IHRvIHNldCB0aGUgbmVzdGVkIHByb3BlcnR5IHZhbHVlIGluLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCB0byB0aGUgbmVzdGVkIHByb3BlcnR5LlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIHNldC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldE5lc3RlZFByb3BlcnR5VmFsdWUob2JqOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgcGF0aDogc3RyaW5nLCB2YWx1ZTogdW5rbm93bik6IHZvaWQge1xuICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihgUHJvcGVydHkgcGF0aCAke3BhdGh9IG5vdCBmb3VuZGApO1xuICBsZXQgbm9kZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQgPSBvYmo7XG4gIGNvbnN0IGtleXMgPSBwYXRoLnNwbGl0KCcuJyk7XG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXMuc2xpY2UoMCwgLTEpKSB7XG4gICAgaWYgKG5vZGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICAgIG5vZGUgPSBub2RlW2tleV0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBsYXN0S2V5ID0ga2V5cy5hdCgtMSk7XG4gIGlmIChub2RlID09PSB1bmRlZmluZWQgfHwgbGFzdEtleSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cblxuICBub2RlW2xhc3RLZXldID0gdmFsdWU7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBnaXZlbiB2YWx1ZSB0byBhIEpTT04gc3RyaW5nLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBiZSBjb252ZXJ0ZWQgdG8gSlNPTi4gVGhpcyBjYW4gYmUgb2YgYW55IHR5cGUuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbnMgZm9yIGN1c3RvbWl6aW5nIHRoZSBKU09OIGNvbnZlcnNpb24gcHJvY2Vzcy5cbiAqIEByZXR1cm5zIFRoZSBKU09OIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgaW5wdXQgdmFsdWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb24odmFsdWU6IHVua25vd24sIG9wdGlvbnM6IFBhcnRpYWw8VG9Kc29uT3B0aW9ucz4gPSB7fSk6IHN0cmluZyB7XG4gIGNvbnN0IERFRkFVTFRfT1BUSU9OUzogVG9Kc29uT3B0aW9ucyA9IHtcbiAgICBmdW5jdGlvbkhhbmRsaW5nTW9kZTogRnVuY3Rpb25IYW5kbGluZ01vZGUuRXhjbHVkZSxcbiAgICBtYXhEZXB0aDogLTEsXG4gICAgc2hvdWxkSGFuZGxlQ2lyY3VsYXJSZWZlcmVuY2VzOiBmYWxzZSxcbiAgICBzaG91bGRIYW5kbGVVbmRlZmluZWQ6IGZhbHNlLFxuICAgIHNwYWNlOiAyXG4gIH07XG5cbiAgY29uc3QgZnVsbE9wdGlvbnMgPSB7IC4uLkRFRkFVTFRfT1BUSU9OUywgLi4ub3B0aW9ucyB9O1xuXG4gIGNvbnN0IG1heERlcHRoID0gZnVsbE9wdGlvbnMubWF4RGVwdGggPT09IC0xID8gSW5maW5pdHkgOiBmdWxsT3B0aW9ucy5tYXhEZXB0aDtcblxuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiAndW5kZWZpbmVkJztcbiAgfVxuXG4gIGNvbnN0IGZ1bmN0aW9uVGV4dHM6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0IG9iamVjdERlcHRoTWFwID0gbmV3IFdlYWtNYXA8b2JqZWN0LCBudW1iZXI+KCk7XG4gIGNvbnN0IHVzZWRPYmplY3RzID0gbmV3IFdlYWtTZXQ8b2JqZWN0PigpO1xuXG4gIGNvbnN0IHJlcGxhY2VyID0gKF9rZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiBKU09OVmFsdWVGPHVua25vd24+IHwgdW5kZWZpbmVkID0+IHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKGZ1bGxPcHRpb25zLnNob3VsZEhhbmRsZVVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gJ19fVU5ERUZJTkVEX18nO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgaWYgKGZ1bGxPcHRpb25zLmZ1bmN0aW9uSGFuZGxpbmdNb2RlID09PSBGdW5jdGlvbkhhbmRsaW5nTW9kZS5FeGNsdWRlKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBjb25zdCBpbmRleCA9IGZ1bmN0aW9uVGV4dHMubGVuZ3RoO1xuICAgICAgY29uc3QgZnVuY3Rpb25UZXh0ID0gZnVsbE9wdGlvbnMuZnVuY3Rpb25IYW5kbGluZ01vZGUgPT09IEZ1bmN0aW9uSGFuZGxpbmdNb2RlLkZ1bGwgPyB2YWx1ZS50b1N0cmluZygpIDogYGZ1bmN0aW9uICR7dmFsdWUubmFtZSB8fCAnYW5vbnltb3VzJ30oKWA7XG4gICAgICBmdW5jdGlvblRleHRzLnB1c2goZnVuY3Rpb25UZXh0KTtcbiAgICAgIHJldHVybiBgX19GVU5DVElPTl9fJHtpbmRleC50b1N0cmluZygpfWA7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICBpZiAoZnVsbE9wdGlvbnMuc2hvdWxkSGFuZGxlQ2lyY3VsYXJSZWZlcmVuY2VzKSB7XG4gICAgICAgIGlmICh1c2VkT2JqZWN0cy5oYXModmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuICdbQ2lyY3VsYXIgUmVmZXJlbmNlXSc7XG4gICAgICAgIH1cbiAgICAgICAgdXNlZE9iamVjdHMuYWRkKHZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgbGV0IGRlcHRoID0gb2JqZWN0RGVwdGhNYXAuZ2V0KHZhbHVlKTtcbiAgICAgIGlmIChkZXB0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGRlcHRoID0gMDtcbiAgICAgICAgb2JqZWN0RGVwdGhNYXAuc2V0KHZhbHVlLCAwKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRlcHRoID4gbWF4RGVwdGgpIHtcbiAgICAgICAgcmV0dXJuICdbLi4uXSc7XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgT2JqZWN0LnZhbHVlcyh2YWx1ZSkpIHtcbiAgICAgICAgaWYgKCFwcm9wZXJ0eSB8fCB0eXBlb2YgcHJvcGVydHkgIT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgb2JqZWN0RGVwdGhNYXAuc2V0KHByb3BlcnR5LCBkZXB0aCArIDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZSBhcyBKU09OVmFsdWVGPHVua25vd24+O1xuICB9O1xuXG4gIGxldCBqc29uID0gSlNPTi5zdHJpbmdpZnkodmFsdWUsIHJlcGxhY2VyLCBmdWxsT3B0aW9ucy5zcGFjZSkgPz8gJ3VuZGVmaW5lZCc7XG4gIGpzb24gPSByZXBsYWNlQWxsKGpzb24sIC9cIl9fRlVOQ1RJT05fXyhcXGQrKVwiL2csIChfLCBpbmRleFN0cikgPT4gZnVuY3Rpb25UZXh0c1twYXJzZUludChpbmRleFN0cildID8/IHRocm93RXhwcmVzc2lvbihuZXcgRXJyb3IoYEZ1bmN0aW9uIHdpdGggaW5kZXggJHtpbmRleFN0cn0gbm90IGZvdW5kYCkpKTtcbiAganNvbiA9IHJlcGxhY2VBbGwoanNvbiwgJ1wiX19VTkRFRklORURfX1wiJywgJ3VuZGVmaW5lZCcpO1xuICByZXR1cm4ganNvbjtcbn1cblxuZnVuY3Rpb24gX2Fzc2lnbldpdGhOb25FbnVtZXJhYmxlUHJvcGVydGllcyh0YXJnZXQ6IG9iamVjdCwgLi4uc291cmNlczogb2JqZWN0W10pOiBvYmplY3Qge1xuICBmb3IgKGNvbnN0IHNvdXJjZSBvZiBzb3VyY2VzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTtcbiAgfVxuXG4gIGNvbnN0IHNvdXJjZVByb3RvdHlwZXMgPSAoc291cmNlcy5tYXAoKHNvdXJjZSkgPT4gZ2V0UHJvdG90eXBlT2Yoc291cmNlKSkgYXMgKG51bGwgfCBvYmplY3QpW10pLmZpbHRlcjxudWxsIHwgb2JqZWN0PigocHJvdG8pID0+ICEhcHJvdG8pIGFzIG9iamVjdFtdO1xuXG4gIGlmIChzb3VyY2VQcm90b3R5cGVzLmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCB0YXJnZXRQcm90b3R5cGUgPSBfYXNzaWduV2l0aE5vbkVudW1lcmFibGVQcm9wZXJ0aWVzKHt9LCBnZXRQcm90b3R5cGVPZih0YXJnZXQpLCAuLi5zb3VyY2VQcm90b3R5cGVzKTtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGFyZ2V0LCB0YXJnZXRQcm90b3R5cGUpO1xuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBYUEsbUJBQWdDO0FBQ2hDLG9CQUEyQjtBQWQzQixJQUFJLFlBQVksV0FBVyxTQUFTLEtBQUs7QUFBQSxFQUN2QyxXQUFX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
|
232
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL09iamVjdC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsidmFyIF9fcHJvY2VzcyA9IGdsb2JhbFRoaXNbJ3Byb2Nlc3MnXSA/PyB7XG4gIFwiYnJvd3NlclwiOiB0cnVlLFxuICBcImN3ZFwiOiAoKT0+XCIvXCIsXG4gIFwiZW52XCI6IHt9LFxuICBcInBsYXRmb3JtXCI6IFwiYW5kcm9pZFwiXG59O1xuLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb24gT2JqZWN0XG4gKiBDb250YWlucyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgT2JqZWN0cy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFVuZGVmaW5lZE9uUGFydGlhbERlZXAgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgeyB0aHJvd0V4cHJlc3Npb24gfSBmcm9tICcuL0Vycm9yLnRzJztcbmltcG9ydCB7IHJlcGxhY2VBbGwgfSBmcm9tICcuL1N0cmluZy50cyc7XG5cbi8qKlxuICogU3BlY2lmaWVzIGhvdyBmdW5jdGlvbnMgc2hvdWxkIGJlIGhhbmRsZWQgaW4gdGhlIEpTT04gb3V0cHV0LlxuICAgKi9cbmV4cG9ydCBlbnVtIEZ1bmN0aW9uSGFuZGxpbmdNb2RlIHtcbiAgLyoqXG4gICAqIEV4Y2x1ZGVzIGZ1bmN0aW9ucyBmcm9tIHRoZSBKU09OIG91dHB1dC5cbiAgICovXG4gIEV4Y2x1ZGUgPSAnZXhjbHVkZScsXG4gIC8qKlxuICAgKiBJbmNsdWRlcyB0aGUgZnVsbCBmdW5jdGlvbiBkZWZpbml0aW9uIGluIHRoZSBKU09OIG91dHB1dC5cbiAgICovXG4gIEZ1bGwgPSAnZnVsbCcsXG4gIC8qKlxuICAgKiBJbmNsdWRlcyBvbmx5IHRoZSBmdW5jdGlvbiBuYW1lIGluIHRoZSBKU09OIG91dHB1dC5cbiAgICovXG4gIE5hbWVPbmx5ID0gJ25hbWVPbmx5J1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGNvbnZlcnRpbmcgYW4gb2JqZWN0IHRvIEpTT04uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVG9Kc29uT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgaG93IGZ1bmN0aW9ucyBzaG91bGQgYmUgaGFuZGxlZCBpbiB0aGUgSlNPTiBvdXRwdXQgKGRlZmF1bHQ6IGBleGNsdWRlYCkuXG4gICAqL1xuICBmdW5jdGlvbkhhbmRsaW5nTW9kZTogRnVuY3Rpb25IYW5kbGluZ01vZGU7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIG1heGltdW0gZGVwdGggb2YgbmVzdGVkIG9iamVjdHMgdG8gaW5jbHVkZSBpbiB0aGUgSlNPTiBvdXRwdXQuXG4gICAqIFVzZSBgLTFgIGZvciBubyBsaW1pdC5cbiAgICogRGVmYXVsdHMgdG8gYC0xYC5cbiAgICovXG4gIG1heERlcHRoOiBudW1iZXI7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hldGhlciB0byBoYW5kbGUgY2lyY3VsYXIgcmVmZXJlbmNlcyBpbiB0aGUgSlNPTiBvdXRwdXQuXG4gICAqIERlZmF1bHRzIHRvIGBmYWxzZWAuXG4gICAqL1xuICBzaG91bGRIYW5kbGVDaXJjdWxhclJlZmVyZW5jZXM6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hldGhlciB0byBoYW5kbGUgdW5kZWZpbmVkIHZhbHVlcyBpbiB0aGUgSlNPTiBvdXRwdXQuXG4gICAqIERlZmF1bHRzIHRvIGBmYWxzZWAuXG4gICAqL1xuICBzaG91bGRIYW5kbGVVbmRlZmluZWQ6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hldGhlciB0byBzb3J0IHRoZSBrZXlzIG9mIHRoZSBKU09OIG91dHB1dC5cbiAgICogRGVmYXVsdHMgdG8gYGZhbHNlYC5cbiAgICovXG4gIHNob3VsZFNvcnRLZXlzOiBib29sZWFuO1xuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBpbmRlbnRhdGlvbiBvZiB0aGUgSlNPTiBvdXRwdXQuIFRoaXMgY2FuIGJlIGEgbnVtYmVyIG9mIHNwYWNlcyBvciBhIHN0cmluZy4gRGVmYXVsdHMgdG8gYDJgLlxuICAgKi9cbiAgc3BhY2U6IG51bWJlciB8IHN0cmluZztcbn1cblxuLyoqXG4gKiBBc3NpZ25zIHByb3BlcnRpZXMgZnJvbSBvbmUgb3IgbW9yZSBzb3VyY2Ugb2JqZWN0cyB0byBhIHRhcmdldCBvYmplY3QsIGluY2x1ZGluZyBub24tZW51bWVyYWJsZSBwcm9wZXJ0aWVzLlxuICpcbiAqIEBwYXJhbSB0YXJnZXQgLSBUaGUgdGFyZ2V0IG9iamVjdCB0byBhc3NpZ24gcHJvcGVydGllcyB0by5cbiAqIEBwYXJhbSBzb3VyY2UgLSBUaGUgc291cmNlIG9iamVjdCB0byBhc3NpZ24gcHJvcGVydGllcyBmcm9tLlxuICogQHJldHVybnMgVGhlIHRhcmdldCBvYmplY3Qgd2l0aCB0aGUgYXNzaWduZWQgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnbldpdGhOb25FbnVtZXJhYmxlUHJvcGVydGllczxUIGV4dGVuZHMgb2JqZWN0LCBVPih0YXJnZXQ6IFQsIHNvdXJjZTogVSk6IFQgJiBVO1xuXG4vKipcbiAqIEBwYXJhbSB0YXJnZXQgLSBUaGUgdGFyZ2V0IG9iamVjdCB0byBhc3NpZ24gcHJvcGVydGllcyB0by5cbiAqIEBwYXJhbSBzb3VyY2UxIC0gVGhlIGZpcnN0IHNvdXJjZSBvYmplY3QgdG8gYXNzaWduIHByb3BlcnRpZXMgZnJvbS5cbiAqIEBwYXJhbSBzb3VyY2UyIC0gVGhlIHNlY29uZCBzb3VyY2Ugb2JqZWN0IHRvIGFzc2lnbiBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcmV0dXJucyBUaGUgdGFyZ2V0IG9iamVjdCB3aXRoIHRoZSBhc3NpZ25lZCBwcm9wZXJ0aWVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzaWduV2l0aE5vbkVudW1lcmFibGVQcm9wZXJ0aWVzPFQgZXh0ZW5kcyBvYmplY3QsIFUsIFY+KHRhcmdldDogVCwgc291cmNlMTogVSwgc291cmNlMjogVik6IFQgJiBVICYgVjtcblxuLyoqXG4gKiBBc3NpZ25zIHByb3BlcnRpZXMgZnJvbSBvbmUgb3IgbW9yZSBzb3VyY2Ugb2JqZWN0cyB0byBhIHRhcmdldCBvYmplY3QsIGluY2x1ZGluZyBub24tZW51bWVyYWJsZSBwcm9wZXJ0aWVzLlxuICpcbiAqIEBwYXJhbSB0YXJnZXQgLSBUaGUgdGFyZ2V0IG9iamVjdCB0byBhc3NpZ24gcHJvcGVydGllcyB0by5cbiAqIEBwYXJhbSBzb3VyY2UxIC0gVGhlIGZpcnN0IHNvdXJjZSBvYmplY3QgdG8gYXNzaWduIHByb3BlcnRpZXMgZnJvbS5cbiAqIEBwYXJhbSBzb3VyY2UyIC0gVGhlIHNlY29uZCBzb3VyY2Ugb2JqZWN0IHRvIGFzc2lnbiBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcGFyYW0gc291cmNlMyAtIFRoZSB0aGlyZCBzb3VyY2Ugb2JqZWN0IHRvIGFzc2lnbiBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcmV0dXJucyBUaGUgdGFyZ2V0IG9iamVjdCB3aXRoIHRoZSBhc3NpZ25lZCBwcm9wZXJ0aWVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzaWduV2l0aE5vbkVudW1lcmFibGVQcm9wZXJ0aWVzPFQgZXh0ZW5kcyBvYmplY3QsIFUsIFYsIFc+KHRhcmdldDogVCwgc291cmNlMTogVSwgc291cmNlMjogViwgc291cmNlMzogVyk6IFQgJiBVICYgViAmIFc7XG5cbi8qKlxuICogQXNzaWducyBwcm9wZXJ0aWVzIGZyb20gb25lIG9yIG1vcmUgc291cmNlIG9iamVjdHMgdG8gYSB0YXJnZXQgb2JqZWN0LCBpbmNsdWRpbmcgbm9uLWVudW1lcmFibGUgcHJvcGVydGllcy5cbiAqXG4gKiBAcGFyYW0gdGFyZ2V0IC0gVGhlIHRhcmdldCBvYmplY3QgdG8gYXNzaWduIHByb3BlcnRpZXMgdG8uXG4gKiBAcGFyYW0gc291cmNlcyAtIFRoZSBzb3VyY2Ugb2JqZWN0cyB0byBhc3NpZ24gcHJvcGVydGllcyBmcm9tLlxuICogQHJldHVybnMgVGhlIHRhcmdldCBvYmplY3Qgd2l0aCB0aGUgYXNzaWduZWQgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnbldpdGhOb25FbnVtZXJhYmxlUHJvcGVydGllcyh0YXJnZXQ6IG9iamVjdCwgLi4uc291cmNlczogb2JqZWN0W10pOiBvYmplY3Qge1xuICByZXR1cm4gX2Fzc2lnbldpdGhOb25FbnVtZXJhYmxlUHJvcGVydGllcyh0YXJnZXQsIC4uLnNvdXJjZXMpO1xufVxuXG4vKipcbiAqIENsb25lcyBhbiBvYmplY3QsIGluY2x1ZGluZyBub24tZW51bWVyYWJsZSBwcm9wZXJ0aWVzLlxuICpcbiAqIEBwYXJhbSBvYmogLSBUaGUgb2JqZWN0IHRvIGNsb25lLlxuICogQHJldHVybnMgQSBuZXcgb2JqZWN0IHdpdGggdGhlIHNhbWUgcHJvcGVydGllcyBhcyB0aGUgb3JpZ2luYWwgb2JqZWN0LCBpbmNsdWRpbmcgbm9uLWVudW1lcmFibGUgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsb25lV2l0aE5vbkVudW1lcmFibGVQcm9wZXJ0aWVzPFQgZXh0ZW5kcyBvYmplY3Q+KG9iajogVCk6IFQge1xuICByZXR1cm4gT2JqZWN0LmNyZWF0ZShnZXRQcm90b3R5cGVPZihvYmopLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhvYmopKSBhcyBUO1xufVxuXG4vKipcbiAqIENvbXBhcmVzIHR3byB2YWx1ZXMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlIGRlZXBseSBlcXVhbC5cbiAqXG4gKiBAcGFyYW0gYSAtIFRoZSBmaXJzdCB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIGIgLSBUaGUgc2Vjb25kIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZGVlcGx5IGVxdWFsLCBvdGhlcndpc2UgYGZhbHNlYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlZXBFcXVhbChhOiB1bmtub3duLCBiOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIGlmIChhID09PSBiKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAodHlwZW9mIGEgIT09ICdvYmplY3QnIHx8IHR5cGVvZiBiICE9PSAnb2JqZWN0JyB8fCBhID09PSBudWxsIHx8IGIgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBrZXlzQSA9IE9iamVjdC5rZXlzKGEpO1xuICBjb25zdCBrZXlzQiA9IE9iamVjdC5rZXlzKGIpO1xuXG4gIGlmIChrZXlzQS5sZW5ndGggIT09IGtleXNCLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGFSZWNvcmQgPSBhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBjb25zdCBiUmVjb3JkID0gYiBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzQSkge1xuICAgIGlmICgha2V5c0IuaW5jbHVkZXMoa2V5KSB8fCAhZGVlcEVxdWFsKGFSZWNvcmRba2V5XSwgYlJlY29yZFtrZXldKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIERlbGV0ZXMgbXVsdGlwbGUgcHJvcGVydGllcyBmcm9tIGFuIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCB0byBkZWxldGUgdGhlIHByb3BlcnRpZXMgZnJvbS5cbiAqIEBwYXJhbSBwcm9wZXJ0eU5hbWVzIC0gVGhlIG5hbWVzIG9mIHRoZSBwcm9wZXJ0aWVzIHRvIGRlbGV0ZS5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiBhbnkgb2YgdGhlIHByb3BlcnRpZXMgd2VyZSBwcmVzZW50LCBvdGhlcndpc2UgYGZhbHNlYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlbGV0ZVByb3BlcnRpZXMob2JqOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgcHJvcGVydHlOYW1lczogc3RyaW5nW10pOiBib29sZWFuIHtcbiAgbGV0IGFucyA9IGZhbHNlO1xuXG4gIGZvciAoY29uc3QgcHJvcGVydHlOYW1lIG9mIHByb3BlcnR5TmFtZXMpIHtcbiAgICBhbnMgPSBkZWxldGVQcm9wZXJ0eShvYmosIHByb3BlcnR5TmFtZSkgfHwgYW5zO1xuICB9XG5cbiAgcmV0dXJuIGFucztcbn1cblxuLyoqXG4gKiBEZWxldGVzIGEgcHJvcGVydHkgZnJvbSBhbiBvYmplY3QuXG4gKlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgdG8gZGVsZXRlIHRoZSBwcm9wZXJ0eSBmcm9tLlxuICogQHBhcmFtIHByb3BlcnR5TmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB0byBkZWxldGUuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHByb3BlcnR5IHdhcyBwcmVzZW50LCBvdGhlcndpc2UgYGZhbHNlYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlbGV0ZVByb3BlcnR5KG9iajogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHByb3BlcnR5TmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcGVydHlOYW1lKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWR5bmFtaWMtZGVsZXRlXG4gIGRlbGV0ZSBvYmpbcHJvcGVydHlOYW1lXTtcbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgdmFsdWUgb2YgYSBuZXN0ZWQgcHJvcGVydHkgZnJvbSBhbiBvYmplY3QuXG4gKlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgdG8gZ2V0IHRoZSBuZXN0ZWQgcHJvcGVydHkgdmFsdWUgZnJvbS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggdG8gdGhlIG5lc3RlZCBwcm9wZXJ0eS5cbiAqIEByZXR1cm5zIFRoZSB2YWx1ZSBvZiB0aGUgbmVzdGVkIHByb3BlcnR5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmVzdGVkUHJvcGVydHlWYWx1ZShvYmo6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBwYXRoOiBzdHJpbmcpOiB1bmtub3duIHtcbiAgbGV0IG5vZGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkID0gb2JqO1xuICBjb25zdCBrZXlzID0gcGF0aC5zcGxpdCgnLicpO1xuICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgaWYgKG5vZGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgbm9kZSA9IG5vZGVba2V5XSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiBub2RlO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIHByb3RvdHlwZSBvZiB0aGUgc3BlY2lmaWVkIG9iamVjdC5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgb2JqZWN0LlxuICogQHBhcmFtIGluc3RhbmNlIC0gVGhlIG9iamVjdCBpbnN0YW5jZSB0byByZXRyaWV2ZSB0aGUgcHJvdG90eXBlIG9mLlxuICogQHJldHVybnMgVGhlIHByb3RvdHlwZSBvZiB0aGUgb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHJvdG90eXBlT2Y8VD4oaW5zdGFuY2U6IFQpOiBUIHtcbiAgaWYgKGluc3RhbmNlID09PSB1bmRlZmluZWQgfHwgaW5zdGFuY2UgPT09IG51bGwpIHtcbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZihpbnN0YW5jZSkgYXMgVDtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIG5hbWUgb2YgYSBwcm9wZXJ0eSBvZiBhIGdpdmVuIHR5cGUgYFRgLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSBvYmplY3QgY29udGFpbmluZyB0aGUgcHJvcGVydHkuXG4gKiBAcGFyYW0gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSBhcyBhIHN0cmluZy5cbiAqIEByZXR1cm5zIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5hbWVvZjxUPihuYW1lOiBFeHRyYWN0PGtleW9mIFQsIHN0cmluZz4pOiBzdHJpbmcge1xuICByZXR1cm4gbmFtZTtcbn1cblxuLyoqXG4gKiBOb3JtYWxpemVzIG9wdGlvbmFsIHByb3BlcnRpZXMgdG8gYWxsb3cgYHVuZGVmaW5lZGAgYXNzaWdubWVudCBpbiBzdHJpY3QgbW9kZS5cbiAqXG4gKiBUaGlzIHV0aWxpdHkgcHJvdmlkZXMgYSB3b3JrYXJvdW5kIGZvciB0aGUgYGV4YWN0T3B0aW9uYWxQcm9wZXJ0eVR5cGVzYCBUeXBlU2NyaXB0IGZsYWcsXG4gKiB3aGljaCBwcm9oaWJpdHMgZGlyZWN0bHkgYXNzaWduaW5nIGB1bmRlZmluZWRgIHRvIG9wdGlvbmFsIHByb3BlcnRpZXMgd2hlbiB0aGUgdHlwZVxuICogZXhwbGljaXRseSBvbWl0cyBgdW5kZWZpbmVkYC5cbiAqXG4gKiBFeGFtcGxlOlxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gV2l0aCBgZXhhY3RPcHRpb25hbFByb3BlcnR5VHlwZXM6IHRydWVgXG4gKiBjb25zdCB4OiB7IHByb3A/OiBzdHJpbmcgfSA9IHsgcHJvcDogdW5kZWZpbmVkIH07IC8vIENvbXBpbGVyIGVycm9yXG4gKlxuICogLy8gVXNpbmcgdGhpcyB1dGlsaXR5OlxuICogY29uc3QgeTogeyBwcm9wPzogc3RyaW5nIH0gPSBub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXM8eyBwcm9wPzogc3RyaW5nIH0+KHsgcHJvcDogdW5kZWZpbmVkIH0pOyAvLyBXb3Jrc1xuICogYGBgXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHRhcmdldCB0eXBlIHdpdGggb3B0aW9uYWwgcHJvcGVydGllcyB0byBub3JtYWxpemUuXG4gKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCB0byBub3JtYWxpemUsIGFsbG93aW5nIGV4cGxpY2l0IGB1bmRlZmluZWRgIGZvciBvcHRpb25hbCBwcm9wZXJ0aWVzLlxuICogQHJldHVybnMgVGhlIG5vcm1hbGl6ZWQgb2JqZWN0LCBjb21wYXRpYmxlIHdpdGggYGV4YWN0T3B0aW9uYWxQcm9wZXJ0eVR5cGVzYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllczxUPihvYmo6IFVuZGVmaW5lZE9uUGFydGlhbERlZXA8VD4pOiBUIHtcbiAgcmV0dXJuIG9iaiBhcyBUO1xufVxuXG4vKipcbiAqIFNldHMgdGhlIHZhbHVlIG9mIGEgbmVzdGVkIHByb3BlcnR5IGluIGFuIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCB0byBzZXQgdGhlIG5lc3RlZCBwcm9wZXJ0eSB2YWx1ZSBpbi5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggdG8gdGhlIG5lc3RlZCBwcm9wZXJ0eS5cbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBzZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXROZXN0ZWRQcm9wZXJ0eVZhbHVlKG9iajogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHBhdGg6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB2b2lkIHtcbiAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoYFByb3BlcnR5IHBhdGggJHtwYXRofSBub3QgZm91bmRgKTtcbiAgbGV0IG5vZGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkID0gb2JqO1xuICBjb25zdCBrZXlzID0gcGF0aC5zcGxpdCgnLicpO1xuICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzLnNsaWNlKDAsIC0xKSkge1xuICAgIGlmIChub2RlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgICBub2RlID0gbm9kZVtrZXldIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkO1xuICB9XG5cbiAgY29uc3QgbGFzdEtleSA9IGtleXMuYXQoLTEpO1xuICBpZiAobm9kZSA9PT0gdW5kZWZpbmVkIHx8IGxhc3RLZXkgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IGVycm9yO1xuICB9XG5cbiAgbm9kZVtsYXN0S2V5XSA9IHZhbHVlO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgZ2l2ZW4gdmFsdWUgdG8gYSBKU09OIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gYmUgY29udmVydGVkIHRvIEpTT04uIFRoaXMgY2FuIGJlIG9mIGFueSB0eXBlLlxuICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25zIGZvciBjdXN0b21pemluZyB0aGUgSlNPTiBjb252ZXJzaW9uIHByb2Nlc3MuXG4gKiBAcmV0dXJucyBUaGUgSlNPTiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGlucHV0IHZhbHVlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uKHZhbHVlOiB1bmtub3duLCBvcHRpb25zOiBQYXJ0aWFsPFRvSnNvbk9wdGlvbnM+ID0ge30pOiBzdHJpbmcge1xuICBjb25zdCBERUZBVUxUX09QVElPTlM6IFRvSnNvbk9wdGlvbnMgPSB7XG4gICAgZnVuY3Rpb25IYW5kbGluZ01vZGU6IEZ1bmN0aW9uSGFuZGxpbmdNb2RlLkV4Y2x1ZGUsXG4gICAgbWF4RGVwdGg6IC0xLFxuICAgIHNob3VsZEhhbmRsZUNpcmN1bGFyUmVmZXJlbmNlczogZmFsc2UsXG4gICAgc2hvdWxkSGFuZGxlVW5kZWZpbmVkOiBmYWxzZSxcbiAgICBzaG91bGRTb3J0S2V5czogZmFsc2UsXG4gICAgc3BhY2U6IDJcbiAgfTtcblxuICBjb25zdCBmdWxsT3B0aW9ucyA9IHsgLi4uREVGQVVMVF9PUFRJT05TLCAuLi5vcHRpb25zIH07XG5cbiAgY29uc3QgbWF4RGVwdGggPSBmdWxsT3B0aW9ucy5tYXhEZXB0aCA9PT0gLTEgPyBJbmZpbml0eSA6IGZ1bGxPcHRpb25zLm1heERlcHRoO1xuXG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuICd1bmRlZmluZWQnO1xuICB9XG5cbiAgY29uc3QgZnVuY3Rpb25UZXh0czogc3RyaW5nW10gPSBbXTtcbiAgY29uc3Qgb2JqZWN0RGVwdGhNYXAgPSBuZXcgV2Vha01hcDxvYmplY3QsIG51bWJlcj4oKTtcbiAgY29uc3QgdXNlZE9iamVjdHMgPSBuZXcgV2Vha1NldDxvYmplY3Q+KCk7XG5cbiAgY29uc3QgcmVwbGFjZXIgPSAoX2tleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bik6IEpTT05WYWx1ZUY8dW5rbm93bj4gfCB1bmRlZmluZWQgPT4ge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoZnVsbE9wdGlvbnMuc2hvdWxkSGFuZGxlVW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiAnX19VTkRFRklORURfXyc7XG4gICAgICB9XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBpZiAoZnVsbE9wdGlvbnMuZnVuY3Rpb25IYW5kbGluZ01vZGUgPT09IEZ1bmN0aW9uSGFuZGxpbmdNb2RlLkV4Y2x1ZGUpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGluZGV4ID0gZnVuY3Rpb25UZXh0cy5sZW5ndGg7XG4gICAgICBjb25zdCBmdW5jdGlvblRleHQgPSBmdWxsT3B0aW9ucy5mdW5jdGlvbkhhbmRsaW5nTW9kZSA9PT0gRnVuY3Rpb25IYW5kbGluZ01vZGUuRnVsbCA/IHZhbHVlLnRvU3RyaW5nKCkgOiBgZnVuY3Rpb24gJHt2YWx1ZS5uYW1lIHx8ICdhbm9ueW1vdXMnfSgpYDtcbiAgICAgIGZ1bmN0aW9uVGV4dHMucHVzaChmdW5jdGlvblRleHQpO1xuICAgICAgcmV0dXJuIGBfX0ZVTkNUSU9OX18ke2luZGV4LnRvU3RyaW5nKCl9YDtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChmdWxsT3B0aW9ucy5zaG91bGRIYW5kbGVDaXJjdWxhclJlZmVyZW5jZXMpIHtcbiAgICAgICAgaWYgKHVzZWRPYmplY3RzLmhhcyh2YWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4gJ1tDaXJjdWxhciBSZWZlcmVuY2VdJztcbiAgICAgICAgfVxuICAgICAgICB1c2VkT2JqZWN0cy5hZGQodmFsdWUpO1xuICAgICAgfVxuXG4gICAgICBsZXQgZGVwdGggPSBvYmplY3REZXB0aE1hcC5nZXQodmFsdWUpO1xuICAgICAgaWYgKGRlcHRoID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZGVwdGggPSAwO1xuICAgICAgICBvYmplY3REZXB0aE1hcC5zZXQodmFsdWUsIDApO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGVwdGggPiBtYXhEZXB0aCkge1xuICAgICAgICByZXR1cm4gJ1suLi5dJztcbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBPYmplY3QudmFsdWVzKHZhbHVlKSkge1xuICAgICAgICBpZiAoIXByb3BlcnR5IHx8IHR5cGVvZiBwcm9wZXJ0eSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBvYmplY3REZXB0aE1hcC5zZXQocHJvcGVydHksIGRlcHRoICsgMSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChmdWxsT3B0aW9ucy5zaG91bGRTb3J0S2V5cykge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHZhbHVlKS5zb3J0KChba2V5MV0sIFtrZXkyXSkgPT4ga2V5MS5sb2NhbGVDb21wYXJlKGtleTIpKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlIGFzIEpTT05WYWx1ZUY8dW5rbm93bj47XG4gIH07XG5cbiAgbGV0IGpzb24gPSBKU09OLnN0cmluZ2lmeSh2YWx1ZSwgcmVwbGFjZXIsIGZ1bGxPcHRpb25zLnNwYWNlKSA/PyAndW5kZWZpbmVkJztcbiAganNvbiA9IHJlcGxhY2VBbGwoanNvbiwgL1wiX19GVU5DVElPTl9fKFxcZCspXCIvZywgKF8sIGluZGV4U3RyKSA9PiBmdW5jdGlvblRleHRzW3BhcnNlSW50KGluZGV4U3RyKV0gPz8gdGhyb3dFeHByZXNzaW9uKG5ldyBFcnJvcihgRnVuY3Rpb24gd2l0aCBpbmRleCAke2luZGV4U3RyfSBub3QgZm91bmRgKSkpO1xuICBqc29uID0gcmVwbGFjZUFsbChqc29uLCAnXCJfX1VOREVGSU5FRF9fXCInLCAndW5kZWZpbmVkJyk7XG4gIHJldHVybiBqc29uO1xufVxuXG5mdW5jdGlvbiBfYXNzaWduV2l0aE5vbkVudW1lcmFibGVQcm9wZXJ0aWVzKHRhcmdldDogb2JqZWN0LCAuLi5zb3VyY2VzOiBvYmplY3RbXSk6IG9iamVjdCB7XG4gIGZvciAoY29uc3Qgc291cmNlIG9mIHNvdXJjZXMpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpO1xuICB9XG5cbiAgY29uc3Qgc291cmNlUHJvdG90eXBlcyA9IChzb3VyY2VzLm1hcCgoc291cmNlKSA9PiBnZXRQcm90b3R5cGVPZihzb3VyY2UpKSBhcyAobnVsbCB8IG9iamVjdClbXSkuZmlsdGVyPG51bGwgfCBvYmplY3Q+KChwcm90bykgPT4gISFwcm90bykgYXMgb2JqZWN0W107XG5cbiAgaWYgKHNvdXJjZVByb3RvdHlwZXMubGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IHRhcmdldFByb3RvdHlwZSA9IF9hc3NpZ25XaXRoTm9uRW51bWVyYWJsZVByb3BlcnRpZXMoe30sIGdldFByb3RvdHlwZU9mKHRhcmdldCksIC4uLnNvdXJjZVByb3RvdHlwZXMpO1xuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0YXJnZXQsIHRhcmdldFByb3RvdHlwZSk7XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFhQSxtQkFBZ0M7QUFDaEMsb0JBQTJCO0FBZDNCLElBQUksWUFBWSxXQUFXLFNBQVMsS0FBSztBQUFBLEVBQ3ZDLFdBQVc7QUFBQSxFQUNYLE9BQU8sTUFBSTtBQUFBLEVBQ1gsT0FBTyxDQUFDO0FBQUEsRUFDUixZQUFZO0FBQ2Q7QUFjTyxJQUFLLHVCQUFMLGtCQUFLQSwwQkFBTDtBQUlMLEVBQUFBLHNCQUFBLGFBQVU7QUFJVixFQUFBQSxzQkFBQSxVQUFPO0FBSVAsRUFBQUEsc0JBQUEsY0FBVztBQVpELFNBQUFBO0FBQUEsR0FBQTtBQXFGTCxTQUFTLGtDQUFrQyxXQUFtQixTQUEyQjtBQUM5RixTQUFPLG1DQUFtQyxRQUFRLEdBQUcsT0FBTztBQUM5RDtBQVFPLFNBQVMsaUNBQW1ELEtBQVc7QUFDNUUsU0FBTyxPQUFPLE9BQU8sZUFBZSxHQUFHLEdBQUcsT0FBTywwQkFBMEIsR0FBRyxDQUFDO0FBQ2pGO0FBU08sU0FBUyxVQUFVLEdBQVksR0FBcUI7QUFDekQsTUFBSSxNQUFNLEdBQUc7QUFDWCxXQUFPO0FBQUEsRUFDVDtBQUVBLE1BQUksT0FBTyxNQUFNLFlBQVksT0FBTyxNQUFNLFlBQVksTUFBTSxRQUFRLE1BQU0sTUFBTTtBQUM5RSxXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sUUFBUSxPQUFPLEtBQUssQ0FBQztBQUMzQixRQUFNLFFBQVEsT0FBTyxLQUFLLENBQUM7QUFFM0IsTUFBSSxNQUFNLFdBQVcsTUFBTSxRQUFRO0FBQ2pDLFdB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NUIsWUFBTSxlQUFlLFlBQVkseUJBQXlCLG9CQUE0QkEsT0FBTSxTQUFTLElBQUksWUFBWUEsT0FBTSxRQUFRLFdBQVc7QUFDOUksb0JBQWMsS0FBSyxZQUFZO0FBQy9CLGFBQU8sZUFBZSxNQUFNLFNBQVMsQ0FBQztBQUFBLElBQ3hDO0FBQ0EsUUFBSSxPQUFPQSxXQUFVLFVBQVU7QUFDN0IsVUFBSSxZQUFZLGdDQUFnQztBQUM5QyxZQUFJLFlBQVksSUFBSUEsTUFBSyxHQUFHO0FBQzFCLGlCQUFPO0FBQUEsUUFDVDtBQUNBLG9CQUFZLElBQUlBLE1BQUs7QUFBQSxNQUN2QjtBQUVBLFVBQUksUUFBUSxlQUFlLElBQUlBLE1BQUs7QUFDcEMsVUFBSSxVQUFVLFFBQVc7QUFDdkIsZ0JBQVE7QUFDUix1QkFBZSxJQUFJQSxRQUFPLENBQUM7QUFBQSxNQUM3QjtBQUVBLFVBQUksUUFBUSxVQUFVO0FBQ3BCLGVBQU87QUFBQSxNQUNUO0FBRUEsaUJBQVcsWUFBWSxPQUFPLE9BQU9BLE1BQUssR0FBRztBQUMzQyxZQUFJLENBQUMsWUFBWSxPQUFPLGFBQWEsVUFBVTtBQUM3QztBQUFBLFFBQ0Y7QUFDQSx1QkFBZSxJQUFJLFVBQVUsUUFBUSxDQUFDO0FBQUEsTUFDeEM7QUFFQSxVQUFJLFlBQVksZ0JBQWdCO0FBQzlCLGVBQU8sT0FBTyxZQUFZLE9BQU8sUUFBUUEsTUFBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksTUFBTSxLQUFLLGNBQWMsSUFBSSxDQUFDLENBQUM7QUFBQSxNQUNwRztBQUFBLElBQ0Y7QUFFQSxXQUFPQTtBQUFBLEVBQ1Q7QUFFQSxNQUFJLE9BQU8sS0FBSyxVQUFVLE9BQU8sVUFBVSxZQUFZLEtBQUssS0FBSztBQUNqRSxhQUFPLDBCQUFXLE1BQU0sd0JBQXdCLENBQUMsR0FBRyxhQUFhLGNBQWMsU0FBUyxRQUFRLENBQUMsU0FBSyw4QkFBZ0IsSUFBSSxNQUFNLHVCQUF1QixRQUFRLFlBQVksQ0FBQyxDQUFDO0FBQzdLLGFBQU8sMEJBQVcsTUFBTSxtQkFBbUIsV0FBVztBQUN0RCxTQUFPO0FBQ1Q7QUFFQSxTQUFTLG1DQUFtQyxXQUFtQixTQUEyQjtBQUN4RixhQUFXLFVBQVUsU0FBUztBQUM1QixXQUFPLGlCQUFpQixRQUFRLE9BQU8sMEJBQTBCLE1BQU0sQ0FBQztBQUFBLEVBQzFFO0FBRUEsUUFBTSxtQkFBb0IsUUFBUSxJQUFJLENBQUMsV0FBVyxlQUFlLE1BQU0sQ0FBQyxFQUF3QixPQUFzQixDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUs7QUFFeEksTUFBSSxpQkFBaUIsU0FBUyxHQUFHO0FBQy9CLFVBQU0sa0JBQWtCLG1DQUFtQyxDQUFDLEdBQUcsZUFBZSxNQUFNLEdBQUcsR0FBRyxnQkFBZ0I7QUFDMUcsV0FBTyxlQUFlLFFBQVEsZUFBZTtBQUFBLEVBQy9DO0FBRUEsU0FBTztBQUNUOyIsCiAgIm5hbWVzIjogWyJGdW5jdGlvbkhhbmRsaW5nTW9kZSIsICJ2YWx1ZSJdCn0K
|
package/dist/lib/Object.d.ts
CHANGED
@@ -44,6 +44,11 @@ export interface ToJsonOptions {
|
|
44
44
|
* Defaults to `false`.
|
45
45
|
*/
|
46
46
|
shouldHandleUndefined: boolean;
|
47
|
+
/**
|
48
|
+
* Specifies whether to sort the keys of the JSON output.
|
49
|
+
* Defaults to `false`.
|
50
|
+
*/
|
51
|
+
shouldSortKeys: boolean;
|
47
52
|
/**
|
48
53
|
* Specifies the indentation of the JSON output. This can be a number of spaces or a string. Defaults to `2`.
|
49
54
|
*/
|
@@ -247,7 +247,7 @@ async function updateChangelog(newVersion) {
|
|
247
247
|
const lastTag = (0, import_String.replaceAll)(previousChangelogLines[0] ?? "", "## ", "");
|
248
248
|
const commitRange = lastTag ? `${lastTag}..HEAD` : "HEAD";
|
249
249
|
const commitMessagesStr = await (0, import_Root.execFromRoot)(`git log ${commitRange} --format=%B --first-parent -z`, { isQuiet: true });
|
250
|
-
const commitMessages = commitMessagesStr.split("\0").map(toSingleLine);
|
250
|
+
const commitMessages = commitMessagesStr.split("\0").filter(Boolean).map(toSingleLine);
|
251
251
|
let newChangeLog = `# CHANGELOG
|
252
252
|
|
253
253
|
## ${newVersion}
|
@@ -357,4 +357,4 @@ function toSingleLine(str) {
|
|
357
357
|
updateVersionInFiles,
|
358
358
|
validate
|
359
359
|
});
|
360
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3NjcmlwdHMvdmVyc2lvbi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsidmFyIF9fcHJvY2VzcyA9IGdsb2JhbFRoaXNbJ3Byb2Nlc3MnXSA/PyB7XG4gIFwiYnJvd3NlclwiOiB0cnVlLFxuICBcImN3ZFwiOiAoKT0+XCIvXCIsXG4gIFwiZW52XCI6IHt9LFxuICBcInBsYXRmb3JtXCI6IFwiYW5kcm9pZFwiXG59O1xuLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb24gdmVyc2lvblxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgZnVuY3Rpb25zIGZvciBtYW5hZ2luZyB2ZXJzaW9uIHVwZGF0ZXMgaW4gYSBwcm9qZWN0LlxuICogSXQgaW5jbHVkZXMgdGFza3Mgc3VjaCBhcyB2YWxpZGF0aW5nIHZlcnNpb24gdXBkYXRlIHR5cGVzLCBjaGVja2luZyB0aGUgc3RhdGVcbiAqIG9mIEdpdCBhbmQgR2l0SHViIENMSSwgdXBkYXRpbmcgdmVyc2lvbiBudW1iZXJzIGluIGZpbGVzLCBhbmQgcGVyZm9ybWluZ1xuICogR2l0IG9wZXJhdGlvbnMgc3VjaCBhcyB0YWdnaW5nIGFuZCBwdXNoaW5nLlxuICpcbiAqIFRoZSBtYWluIGZ1bmN0aW9uLCBgdXBkYXRlVmVyc2lvbmAsIGNvb3JkaW5hdGVzIHRoZXNlIHRhc2tzIHRvIGVuc3VyZSB0aGF0XG4gKiB2ZXJzaW9uIHVwZGF0ZXMgYXJlIGhhbmRsZWQgY29uc2lzdGVudGx5IGFuZCBjb3JyZWN0bHkuIEl0IGFsc28gaW50ZWdyYXRlc1xuICogd2l0aCBPYnNpZGlhbiBwbHVnaW5zLCBpZiBhcHBsaWNhYmxlLCBieSB1cGRhdGluZyByZWxldmFudCBmaWxlcyBhbmQgcmVsZWFzaW5nXG4gKiBuZXcgdmVyc2lvbnMgb24gR2l0SHViLlxuICovXG5cbmltcG9ydCBBZG1aaXAgZnJvbSAnYWRtLXppcCc7XG5cbmltcG9ydCB7IHRocm93RXhwcmVzc2lvbiB9IGZyb20gJy4uL0Vycm9yLnRzJztcbmltcG9ydCB7IE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzIH0gZnJvbSAnLi4vb2JzaWRpYW4vUGx1Z2luL09ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLnRzJztcbmltcG9ydCB7IGpvaW4gfSBmcm9tICcuLi9QYXRoLnRzJztcbmltcG9ydCB7IHJlcGxhY2VBbGwgfSBmcm9tICcuLi9TdHJpbmcudHMnO1xuaW1wb3J0IHsgcmVhZGRpclBvc2l4IH0gZnJvbSAnLi9Gcy50cyc7XG5pbXBvcnQgeyBlZGl0SnNvbiB9IGZyb20gJy4vSlNPTi50cyc7XG5pbXBvcnQge1xuICBjcCxcbiAgY3JlYXRlSW50ZXJmYWNlLFxuICBleGlzdHNTeW5jLFxuICByZWFkRmlsZSxcbiAgd3JpdGVGaWxlXG59IGZyb20gJy4vTm9kZU1vZHVsZXMudHMnO1xuaW1wb3J0IHtcbiAgZWRpdFBhY2thZ2VKc29uLFxuICBlZGl0UGFja2FnZUxvY2tKc29uLFxuICByZWFkUGFja2FnZUpzb25cbn0gZnJvbSAnLi9OcG0udHMnO1xuaW1wb3J0IHsgT2JzaWRpYW5EZXZVdGlsc1JlcG9QYXRocyB9IGZyb20gJy4vT2JzaWRpYW5EZXZVdGlsc1JlcG9QYXRocy50cyc7XG5pbXBvcnQge1xuICBleGVjRnJvbVJvb3QsXG4gIHJlc29sdmVQYXRoRnJvbVJvb3Rcbn0gZnJvbSAnLi9Sb290LnRzJztcblxuLyoqXG4gKiBFbnVtIHJlcHJlc2VudGluZyBkaWZmZXJlbnQgdHlwZXMgb2YgdmVyc2lvbiB1cGRhdGVzLlxuICovXG5leHBvcnQgZW51bSBWZXJzaW9uVXBkYXRlVHlwZSB7XG4gIEJldGEgPSAnYmV0YScsXG4gIEludmFsaWQgPSAnaW52YWxpZCcsXG4gIE1ham9yID0gJ21ham9yJyxcbiAgTWFudWFsID0gJ21hbnVhbCcsXG4gIE1pbm9yID0gJ21pbm9yJyxcbiAgUGF0Y2ggPSAncGF0Y2gnXG59XG5cbi8qKlxuICogVHlwZSByZXByZXNlbnRpbmcgdGhlIG1hbmlmZXN0IGZpbGUgZm9ybWF0IGZvciBPYnNpZGlhbiBwbHVnaW5zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1hbmlmZXN0IHtcbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIE9ic2lkaWFuIHZlcnNpb24gcmVxdWlyZWQgZm9yIHRoZSBwbHVnaW4uXG4gICAqL1xuICBtaW5BcHBWZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBwbHVnaW4uXG4gICAqL1xuICB2ZXJzaW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVHlwZSByZXByZXNlbnRpbmcgdGhlIHN0cnVjdHVyZSBvZiBPYnNpZGlhbiByZWxlYXNlcyBKU09OLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9ic2lkaWFuUmVsZWFzZXNKc29uIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBPYnNpZGlhbiByZWxlYXNlLlxuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBHaXQgdGFnIGZvciB0aGUgbmV3IHZlcnNpb24uXG4gKlxuICogQHBhcmFtIG5ld1ZlcnNpb24gLSBUaGUgbmV3IHZlcnNpb24gbnVtYmVyIHRvIHVzZSBmb3IgdGhlIHRhZy5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHRhZyBoYXMgYmVlbiBjcmVhdGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYWRkR2l0VGFnKG5ld1ZlcnNpb246IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBleGVjRnJvbVJvb3QoYGdpdCB0YWcgLWEgJHtuZXdWZXJzaW9ufSAtbSAke25ld1ZlcnNpb259IC0tZm9yY2VgLCB7IGlzUXVpZXQ6IHRydWUgfSk7XG59XG5cbi8qKlxuICogQWRkcyB1cGRhdGVkIGZpbGVzIHRvIHRoZSBHaXQgc3RhZ2luZyBhcmVhIGFuZCBjb21taXRzIHRoZW0gd2l0aCB0aGUgbmV3IHZlcnNpb24gbWVzc2FnZS5cbiAqXG4gKiBAcGFyYW0gbmV3VmVyc2lvbiAtIFRoZSBuZXcgdmVyc2lvbiBudW1iZXIgdXNlZCBhcyB0aGUgY29tbWl0IG1lc3NhZ2UuXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBmaWxlcyBoYXZlIGJlZW4gYWRkZWQgYW5kIGNvbW1pdHRlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFkZFVwZGF0ZWRGaWxlc1RvR2l0KG5ld1ZlcnNpb246IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBmaWxlcyA9IFtcbiAgICBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5NYW5pZmVzdEpzb24sXG4gICAgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuUGFja2FnZUpzb24sXG4gICAgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuUGFja2FnZUxvY2tKc29uLFxuICAgIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLlZlcnNpb25zSnNvbixcbiAgICBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5DaGFuZ2Vsb2dNZFxuICBdLmZpbHRlcigoZmlsZSkgPT4gZXhpc3RzU3luYyhyZXNvbHZlUGF0aEZyb21Sb290U2FmZShmaWxlKSkpO1xuICBhd2FpdCBleGVjRnJvbVJvb3QoWydnaXQnLCAnYWRkJywgLi4uZmlsZXNdLCB7IGlzUXVpZXQ6IHRydWUgfSk7XG4gIGF3YWl0IGV4ZWNGcm9tUm9vdChgZ2l0IGNvbW1pdCAtbSAke25ld1ZlcnNpb259IC0tYWxsb3ctZW1wdHlgLCB7IGlzUXVpZXQ6IHRydWUgfSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBHaXRIdWIgQ0xJIGlzIGluc3RhbGxlZCBvbiB0aGUgc3lzdGVtLlxuICpcbiAqIFRocm93cyBhbiBlcnJvciBpZiB0aGUgR2l0SHViIENMSSBpcyBub3QgaW5zdGFsbGVkLlxuICpcbiAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEdpdEh1YiBDTEkgaXMgbm90IGluc3RhbGxlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNoZWNrR2l0SHViQ2xpSW5zdGFsbGVkKCk6IFByb21pc2U8dm9pZD4ge1xuICB0cnkge1xuICAgIGF3YWl0IGV4ZWNGcm9tUm9vdCgnZ2ggLS12ZXJzaW9uJywgeyBpc1F1aWV0OiB0cnVlIH0pO1xuICB9IGNhdGNoIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0dpdEh1YiBDTEkgaXMgbm90IGluc3RhbGxlZC4gUGxlYXNlIGluc3RhbGwgaXQgZnJvbSBodHRwczovL2NsaS5naXRodWIuY29tLycpO1xuICB9XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIEdpdCBpcyBpbnN0YWxsZWQgb24gdGhlIHN5c3RlbS5cbiAqXG4gKiBUaHJvd3MgYW4gZXJyb3IgaWYgR2l0IGlzIG5vdCBpbnN0YWxsZWQuXG4gKlxuICogQHRocm93cyBFcnJvciBpZiBHaXQgaXMgbm90IGluc3RhbGxlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNoZWNrR2l0SW5zdGFsbGVkKCk6IFByb21pc2U8dm9pZD4ge1xuICB0cnkge1xuICAgIGF3YWl0IGV4ZWNGcm9tUm9vdCgnZ2l0IC0tdmVyc2lvbicsIHsgaXNRdWlldDogdHJ1ZSB9KTtcbiAgfSBjYXRjaCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdHaXQgaXMgbm90IGluc3RhbGxlZC4gUGxlYXNlIGluc3RhbGwgaXQgZnJvbSBodHRwczovL2dpdC1zY20uY29tLycpO1xuICB9XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBHaXQgcmVwb3NpdG9yeSBpcyBjbGVhbiwgbWVhbmluZyB0aGVyZSBhcmUgbm8gdW5jb21taXR0ZWQgY2hhbmdlcy5cbiAqXG4gKiBUaHJvd3MgYW4gZXJyb3IgaWYgdGhlIEdpdCByZXBvc2l0b3J5IGlzIG5vdCBjbGVhbi5cbiAqXG4gKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBHaXQgcmVwb3NpdG9yeSBpcyBub3QgY2xlYW4uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjaGVja0dpdFJlcG9DbGVhbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBzdGRvdXQgPSBhd2FpdCBleGVjRnJvbVJvb3QoJ2dpdCBzdGF0dXMgLS1wb3JjZWxhaW4gLS11bnRyYWNrZWQtZmlsZXM9YWxsJywgeyBpc1F1aWV0OiB0cnVlIH0pO1xuICAgIGlmIChzdGRvdXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigpO1xuICAgIH1cbiAgfSBjYXRjaCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdHaXQgcmVwb3NpdG9yeSBpcyBub3QgY2xlYW4uIFBsZWFzZSBjb21taXQgb3Igc3Rhc2ggeW91ciBjaGFuZ2VzIGJlZm9yZSByZWxlYXNpbmcgYSBuZXcgdmVyc2lvbi4nKTtcbiAgfVxufVxuXG4vKipcbiAqIENvcGllcyB0aGUgdXBkYXRlZCBtYW5pZmVzdCBmaWxlIHRvIHRoZSBkaXN0cmlidXRpb24gYnVpbGQgZGlyZWN0b3J5LlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGNvcHkgb3BlcmF0aW9uIGlzIGNvbXBsZXRlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29weVVwZGF0ZWRNYW5pZmVzdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgY3AocmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuTWFuaWZlc3RKc29uKSwgcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoam9pbihPYnNpZGlhblBsdWdpblJlcG9QYXRocy5EaXN0QnVpbGQsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1hbmlmZXN0SnNvbikpLCB7IGZvcmNlOiB0cnVlIH0pO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBhIG5ldyB2ZXJzaW9uIHN0cmluZyBiYXNlZCBvbiB0aGUgY3VycmVudCB2ZXJzaW9uIGFuZCB0aGUgc3BlY2lmaWVkIHVwZGF0ZSB0eXBlLlxuICpcbiAqIEBwYXJhbSB2ZXJzaW9uVXBkYXRlVHlwZSAtIFRoZSB0eXBlIG9mIHZlcnNpb24gdXBkYXRlIChtYWpvciwgbWlub3IsIHBhdGNoLCBiZXRhLCBvciBtYW51YWwpLlxuICogQHJldHVybnMgQSBgUHJvbWlzZWAgdGhhdCByZXNvbHZlcyB0byB0aGUgbmV3IHZlcnNpb24gc3RyaW5nLlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgY3VycmVudCB2ZXJzaW9uIGZvcm1hdCBpcyBpbnZhbGlkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0TmV3VmVyc2lvbih2ZXJzaW9uVXBkYXRlVHlwZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgdmVyc2lvblR5cGUgPSBnZXRWZXJzaW9uVXBkYXRlVHlwZSh2ZXJzaW9uVXBkYXRlVHlwZSk7XG4gIGlmICh2ZXJzaW9uVHlwZSA9PT0gVmVyc2lvblVwZGF0ZVR5cGUuTWFudWFsKSB7XG4gICAgcmV0dXJuIHZlcnNpb25VcGRhdGVUeXBlO1xuICB9XG5cbiAgY29uc3QgcGFja2FnZUpzb24gPSBhd2FpdCByZWFkUGFja2FnZUpzb24oKTtcbiAgY29uc3QgY3VycmVudFZlcnNpb24gPSBwYWNrYWdlSnNvbi52ZXJzaW9uID8/ICcnO1xuXG4gIGNvbnN0IG1hdGNoID0gL14oXFxkKylcXC4oXFxkKylcXC4oXFxkKykoLWJldGEuKFxcZCspKT8vLmV4ZWMoY3VycmVudFZlcnNpb24pO1xuICBpZiAoIW1hdGNoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGN1cnJlbnQgdmVyc2lvbiBmb3JtYXQ6ICR7Y3VycmVudFZlcnNpb259YCk7XG4gIH1cblxuICBsZXQgbWFqb3IgPSBOdW1iZXIobWF0Y2hbMV0pO1xuICBsZXQgbWlub3IgPSBOdW1iZXIobWF0Y2hbMl0pO1xuICBsZXQgcGF0Y2ggPSBOdW1iZXIobWF0Y2hbM10pO1xuICBsZXQgYmV0YSA9IG1hdGNoWzVdID8gTnVtYmVyKG1hdGNoWzVdKSA6IDA7XG5cbiAgc3dpdGNoICh2ZXJzaW9uVHlwZSkge1xuICAgIGNhc2UgVmVyc2lvblVwZGF0ZVR5cGUuQmV0YTpcbiAgICAgIGlmIChiZXRhID09PSAwKSB7XG4gICAgICAgIHBhdGNoKys7XG4gICAgICB9XG4gICAgICBiZXRhKys7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFZlcnNpb25VcGRhdGVUeXBlLk1ham9yOlxuICAgICAgbWFqb3IrKztcbiAgICAgIG1pbm9yID0gMDtcbiAgICAgIHBhdGNoID0gMDtcbiAgICAgIGJldGEgPSAwO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBWZXJzaW9uVXBkYXRlVHlwZS5NaW5vcjpcbiAgICAgIG1pbm9yKys7XG4gICAgICBwYXRjaCA9IDA7XG4gICAgICBiZXRhID0gMDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgVmVyc2lvblVwZGF0ZVR5cGUuUGF0Y2g6XG4gICAgICBwYXRjaCsrO1xuICAgICAgYmV0YSA9IDA7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIHJldHVybiBgJHttYWpvci50b1N0cmluZygpfS4ke21pbm9yLnRvU3RyaW5nKCl9LiR7cGF0Y2gudG9TdHJpbmcoKX0ke2JldGEgPiAwID8gYC1iZXRhLiR7YmV0YS50b1N0cmluZygpfWAgOiAnJ31gO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgcmVsZWFzZSBub3RlcyBmb3IgYSBzcGVjaWZpYyB2ZXJzaW9uIGZyb20gdGhlIGNoYW5nZWxvZy5cbiAqXG4gKiBAcGFyYW0gbmV3VmVyc2lvbiAtIFRoZSBuZXcgdmVyc2lvbiBudW1iZXIgZm9yIHdoaWNoIHRvIGdldCB0aGUgcmVsZWFzZSBub3Rlcy5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSByZWxlYXNlIG5vdGVzIGZvciB0aGUgc3BlY2lmaWVkIHZlcnNpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRSZWxlYXNlTm90ZXMobmV3VmVyc2lvbjogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgY2hhbmdlbG9nUGF0aCA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkNoYW5nZWxvZ01kKTtcbiAgY29uc3QgY29udGVudCA9IGF3YWl0IHJlYWRGaWxlKGNoYW5nZWxvZ1BhdGgsICd1dGYtOCcpO1xuICBjb25zdCBuZXdWZXJzaW9uRXNjYXBlZCA9IHJlcGxhY2VBbGwobmV3VmVyc2lvbiwgJy4nLCAnXFxcXC4nKTtcbiAgY29uc3QgbWF0Y2ggPSBuZXcgUmVnRXhwKGBcXG4jIyAke25ld1ZlcnNpb25Fc2NhcGVkfVxcblxcbigoLnxcXG4pKz8pXFxuXFxuIyNgKS5leGVjKGNvbnRlbnQpO1xuICBsZXQgcmVsZWFzZU5vdGVzID0gbWF0Y2g/LlsxXSA/IG1hdGNoWzFdICsgJ1xcblxcbicgOiAnJztcblxuICBjb25zdCB0YWdzID0gKGF3YWl0IGV4ZWNGcm9tUm9vdCgnZ2l0IHRhZyAtLXNvcnQ9LWNyZWF0b3JkYXRlJywgeyBpc1F1aWV0OiB0cnVlIH0pKS5zcGxpdCgvXFxyP1xcbi8pO1xuICBjb25zdCBwcmV2aW91c1ZlcnNpb24gPSB0YWdzWzFdO1xuICBsZXQgY2hhbmdlc1VybCA9ICcnO1xuXG4gIGNvbnN0IHJlcG9VcmwgPSBhd2FpdCBleGVjRnJvbVJvb3QoJ2doIHJlcG8gdmlldyAtLWpzb24gdXJsIC1xIC51cmwnLCB7IGlzUXVpZXQ6IHRydWUgfSk7XG5cbiAgaWYgKHByZXZpb3VzVmVyc2lvbikge1xuICAgIGNoYW5nZXNVcmwgPSBgJHtyZXBvVXJsfS9jb21wYXJlLyR7cHJldmlvdXNWZXJzaW9ufS4uLiR7bmV3VmVyc2lvbn1gO1xuICB9IGVsc2Uge1xuICAgIGNoYW5nZXNVcmwgPSBgJHtyZXBvVXJsfS9jb21taXRzLyR7bmV3VmVyc2lvbn1gO1xuICB9XG5cbiAgcmVsZWFzZU5vdGVzICs9IGAqKkZ1bGwgQ2hhbmdlbG9nKio6ICR7Y2hhbmdlc1VybH1gO1xuICByZXR1cm4gcmVsZWFzZU5vdGVzO1xufVxuXG4vKipcbiAqIERldGVybWluZXMgdGhlIHR5cGUgb2YgdmVyc2lvbiB1cGRhdGUgYmFzZWQgb24gdGhlIGlucHV0IHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gdmVyc2lvblVwZGF0ZVR5cGUgLSBUaGUgaW5wdXQgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdmVyc2lvbiB1cGRhdGUgdHlwZS5cbiAqIEByZXR1cm5zIFRoZSBjb3JyZXNwb25kaW5nIGBWZXJzaW9uVXBkYXRlVHlwZWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRWZXJzaW9uVXBkYXRlVHlwZSh2ZXJzaW9uVXBkYXRlVHlwZTogc3RyaW5nKTogVmVyc2lvblVwZGF0ZVR5cGUge1xuICBjb25zdCB2ZXJzaW9uVXBkYXRlVHlwZUVudW0gPSB2ZXJzaW9uVXBkYXRlVHlwZSBhcyBWZXJzaW9uVXBkYXRlVHlwZTtcbiAgc3dpdGNoICh2ZXJzaW9uVXBkYXRlVHlwZUVudW0pIHtcbiAgICBjYXNlIFZlcnNpb25VcGRhdGVUeXBlLkJldGE6XG4gICAgY2FzZSBWZXJzaW9uVXBkYXRlVHlwZS5NYWpvcjpcbiAgICBjYXNlIFZlcnNpb25VcGRhdGVUeXBlLk1pbm9yOlxuICAgIGNhc2UgVmVyc2lvblVwZGF0ZVR5cGUuUGF0Y2g6XG4gICAgICByZXR1cm4gdmVyc2lvblVwZGF0ZVR5cGVFbnVtO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIGlmICgvXlxcZCtcXC5cXGQrXFwuXFxkKygtW1xcd1xcZC4tXSspPyQvLnRlc3QodmVyc2lvblVwZGF0ZVR5cGUpKSB7XG4gICAgICAgIHJldHVybiBWZXJzaW9uVXBkYXRlVHlwZS5NYW51YWw7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBWZXJzaW9uVXBkYXRlVHlwZS5JbnZhbGlkO1xuICB9XG59XG5cbi8qKlxuICogUHVzaGVzIGNvbW1pdHMgYW5kIHRhZ3MgdG8gdGhlIHJlbW90ZSBHaXQgcmVwb3NpdG9yeS5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBwdXNoIG9wZXJhdGlvbiBpcyBjb21wbGV0ZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdpdFB1c2goKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IGV4ZWNGcm9tUm9vdCgnZ2l0IHB1c2ggLS1mb2xsb3ctdGFncyAtLWZvcmNlJywgeyBpc1F1aWV0OiB0cnVlIH0pO1xufVxuXG4vKipcbiAqIFB1Ymxpc2hlcyBhIEdpdEh1YiByZWxlYXNlIGZvciB0aGUgbmV3IHZlcnNpb24uXG4gKlxuICogSGFuZGxlcyB0aGUgY3JlYXRpb24gb2YgYSByZWxlYXNlIGFuZCB1cGxvYWRpbmcgZmlsZXMgZm9yIGVpdGhlciBhbiBPYnNpZGlhbiBwbHVnaW4gb3IgYW5vdGhlciBwcm9qZWN0LlxuICpcbiAqIEBwYXJhbSBuZXdWZXJzaW9uIC0gVGhlIG5ldyB2ZXJzaW9uIG51bWJlciBmb3IgdGhlIHJlbGVhc2UuXG4gKiBAcGFyYW0gaXNPYnNpZGlhblBsdWdpbiAtIEEgYm9vbGVhbiBpbmRpY2F0aW5nIGlmIHRoZSBwcm9qZWN0IGlzIGFuIE9ic2lkaWFuIHBsdWdpbi5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHJlbGVhc2UgaGFzIGJlZW4gcHVibGlzaGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHVibGlzaEdpdEh1YlJlbGVhc2UobmV3VmVyc2lvbjogc3RyaW5nLCBpc09ic2lkaWFuUGx1Z2luOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGxldCBmaWxlUGF0aHM6IHN0cmluZ1tdO1xuXG4gIGlmIChpc09ic2lkaWFuUGx1Z2luKSB7XG4gICAgY29uc3QgYnVpbGREaXIgPSByZXNvbHZlUGF0aEZyb21Sb290U2FmZShPYnNpZGlhblBsdWdpblJlcG9QYXRocy5EaXN0QnVpbGQpO1xuICAgIGNvbnN0IGZpbGVOYW1lcyA9IGF3YWl0IHJlYWRkaXJQb3NpeChidWlsZERpcik7XG4gICAgZmlsZVBhdGhzID0gZmlsZU5hbWVzLm1hcCgoZmlsZU5hbWUpID0+IGpvaW4oYnVpbGREaXIsIGZpbGVOYW1lKSk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgemlwID0gbmV3IEFkbVppcCgpO1xuICAgIHppcC5hZGRMb2NhbEZvbGRlcihyZXNvbHZlUGF0aEZyb21Sb290U2FmZShPYnNpZGlhbkRldlV0aWxzUmVwb1BhdGhzLkRpc3QpLCBPYnNpZGlhbkRldlV0aWxzUmVwb1BhdGhzLkRpc3QsIChmaWxlbmFtZSkgPT4gIWZpbGVuYW1lLmVuZHNXaXRoKCcuemlwJykpO1xuXG4gICAgY29uc3QgZmlsZXMgPSBbXG4gICAgICBPYnNpZGlhbkRldlV0aWxzUmVwb1BhdGhzLkNoYW5nZWxvZ01kLFxuICAgICAgT2JzaWRpYW5EZXZVdGlsc1JlcG9QYXRocy5MaWNlbnNlLFxuICAgICAgT2JzaWRpYW5EZXZVdGlsc1JlcG9QYXRocy5SZWFkbWVNZCxcbiAgICAgIE9ic2lkaWFuRGV2VXRpbHNSZXBvUGF0aHMuUGFja2FnZUpzb25cbiAgICBdO1xuXG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICB6aXAuYWRkTG9jYWxGaWxlKHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKGZpbGUpKTtcbiAgICB9XG5cbiAgICBjb25zdCBwYWNrYWdlSnNvbiA9IGF3YWl0IHJlYWRQYWNrYWdlSnNvbigpO1xuICAgIGNvbnN0IGRpc3RaaXBQYXRoID0gcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoam9pbihPYnNpZGlhbkRldlV0aWxzUmVwb1BhdGhzLkRpc3QsIGAke3BhY2thZ2VKc29uLm5hbWUgPz8gJyh1bmtub3duKSd9LSR7bmV3VmVyc2lvbn0uemlwYCkpO1xuICAgIHppcC53cml0ZVppcChkaXN0WmlwUGF0aCk7XG4gICAgZmlsZVBhdGhzID0gW2Rpc3RaaXBQYXRoXTtcbiAgfVxuXG4gIGF3YWl0IGV4ZWNGcm9tUm9vdChbJ2doJywgJ3JlbGVhc2UnLCAnY3JlYXRlJywgbmV3VmVyc2lvbiwgLi4uZmlsZVBhdGhzLCAnLS10aXRsZScsIGB2JHtuZXdWZXJzaW9ufWAsICctLW5vdGVzLWZpbGUnLCAnLSddLCB7XG4gICAgaXNRdWlldDogdHJ1ZSxcbiAgICBzdGRpbjogYXdhaXQgZ2V0UmVsZWFzZU5vdGVzKG5ld1ZlcnNpb24pXG4gIH0pO1xufVxuXG4vKipcbiAqIFVwZGF0ZXMgdGhlIGNoYW5nZWxvZyBmaWxlIHdpdGggbmV3IHZlcnNpb24gaW5mb3JtYXRpb24gYW5kIGNvbW1pdCBtZXNzYWdlcy5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIHJlYWRzIHRoZSBjdXJyZW50IGNoYW5nZWxvZywgYXBwZW5kcyBuZXcgZW50cmllcyBmb3IgdGhlIGxhdGVzdCB2ZXJzaW9uLFxuICogYW5kIHByb21wdHMgdGhlIHVzZXIgdG8gcmV2aWV3IHRoZSBjaGFuZ2VzLlxuICpcbiAqIEBwYXJhbSBuZXdWZXJzaW9uIC0gVGhlIG5ldyB2ZXJzaW9uIG51bWJlciB0byBiZSBhZGRlZCB0byB0aGUgY2hhbmdlbG9nLlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgY2hhbmdlbG9nIHVwZGF0ZSBpcyBjb21wbGV0ZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZUNoYW5nZWxvZyhuZXdWZXJzaW9uOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgY2hhbmdlbG9nUGF0aCA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkNoYW5nZWxvZ01kKTtcbiAgbGV0IHByZXZpb3VzQ2hhbmdlbG9nTGluZXM6IHN0cmluZ1tdO1xuICBpZiAoIWV4aXN0c1N5bmMoY2hhbmdlbG9nUGF0aCkpIHtcbiAgICBwcmV2aW91c0NoYW5nZWxvZ0xpbmVzID0gW107XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgY29udGVudCA9IGF3YWl0IHJlYWRGaWxlKGNoYW5nZWxvZ1BhdGgsICd1dGYtOCcpO1xuICAgIHByZXZpb3VzQ2hhbmdlbG9nTGluZXMgPSBjb250ZW50LnNwbGl0KCdcXG4nKS5zbGljZSgyKTtcbiAgICBpZiAocHJldmlvdXNDaGFuZ2Vsb2dMaW5lcy5hdCgtMSkgPT09ICcnKSB7XG4gICAgICBwcmV2aW91c0NoYW5nZWxvZ0xpbmVzLnBvcCgpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGxhc3RUYWcgPSByZXBsYWNlQWxsKHByZXZpb3VzQ2hhbmdlbG9nTGluZXNbMF0gPz8gJycsICcjIyAnLCAnJyk7XG4gIGNvbnN0IGNvbW1pdFJhbmdlID0gbGFzdFRhZyA/IGAke2xhc3RUYWd9Li5IRUFEYCA6ICdIRUFEJztcbiAgY29uc3QgY29tbWl0TWVzc2FnZXNTdHIgPSBhd2FpdCBleGVjRnJvbVJvb3QoYGdpdCBsb2cgJHtjb21taXRSYW5nZX0gLS1mb3JtYXQ9JUIgLS1maXJzdC1wYXJlbnQgLXpgLCB7IGlzUXVpZXQ6IHRydWUgfSk7XG4gIGNvbnN0IGNvbW1pdE1lc3NhZ2VzID0gY29tbWl0TWVzc2FnZXNTdHIuc3BsaXQoJ1xcMCcpLm1hcCh0b1NpbmdsZUxpbmUpO1xuXG4gIGxldCBuZXdDaGFuZ2VMb2cgPSBgIyBDSEFOR0VMT0dcXG5cXG4jIyAke25ld1ZlcnNpb259XFxuXFxuYDtcblxuICBmb3IgKGNvbnN0IG1lc3NhZ2Ugb2YgY29tbWl0TWVzc2FnZXMpIHtcbiAgICBuZXdDaGFuZ2VMb2cgKz0gYC0gJHttZXNzYWdlfVxcbmA7XG4gIH1cblxuICBpZiAocHJldmlvdXNDaGFuZ2Vsb2dMaW5lcy5sZW5ndGggPiAwKSB7XG4gICAgbmV3Q2hhbmdlTG9nICs9ICdcXG4nO1xuICAgIGZvciAoY29uc3QgbGluZSBvZiBwcmV2aW91c0NoYW5nZWxvZ0xpbmVzKSB7XG4gICAgICBuZXdDaGFuZ2VMb2cgKz0gYCR7bGluZX1cXG5gO1xuICAgIH1cbiAgfVxuXG4gIGF3YWl0IHdyaXRlRmlsZShjaGFuZ2Vsb2dQYXRoLCBuZXdDaGFuZ2VMb2csICd1dGYtOCcpO1xuXG4gIGF3YWl0IGNyZWF0ZUludGVyZmFjZShwcm9jZXNzLnN0ZGluLCBwcm9jZXNzLnN0ZG91dCkucXVlc3Rpb24oYFBsZWFzZSB1cGRhdGUgdGhlICR7T2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuQ2hhbmdlbG9nTWR9IGZpbGUuIFByZXNzIEVudGVyIHdoZW4geW91IGFyZSBkb25lLi4uYCk7XG59XG5cbi8qKlxuICogVXBkYXRlcyB0aGUgdmVyc2lvbiBvZiB0aGUgcHJvamVjdCBiYXNlZCBvbiB0aGUgc3BlY2lmaWVkIHVwZGF0ZSB0eXBlLlxuICpcbiAqIFRoaXMgZnVuY3Rpb24gcGVyZm9ybXMgYSBzZXJpZXMgb2YgdGFza3MgdG8gaGFuZGxlIHZlcnNpb24gdXBkYXRlczpcbiAqIDEuIFZhbGlkYXRlcyB0aGUgdmVyc2lvbiB1cGRhdGUgdHlwZS5cbiAqIDIuIENoZWNrcyBpZiBHaXQgYW5kIEdpdEh1YiBDTEkgYXJlIGluc3RhbGxlZC5cbiAqIDMuIFZlcmlmaWVzIHRoYXQgdGhlIEdpdCByZXBvc2l0b3J5IGlzIGNsZWFuLlxuICogNC4gUnVucyBzcGVsbGNoZWNrIGFuZCBsaW50aW5nLlxuICogNS4gQnVpbGRzIHRoZSBwcm9qZWN0LlxuICogNi4gVXBkYXRlcyB2ZXJzaW9uIGluIGZpbGVzIGFuZCBjaGFuZ2Vsb2cuXG4gKiA3LiBBZGRzIHVwZGF0ZWQgZmlsZXMgdG8gR2l0LCB0YWdzIHRoZSBjb21taXQsIGFuZCBwdXNoZXMgdG8gdGhlIHJlcG9zaXRvcnkuXG4gKiA4LiBJZiBhbiBPYnNpZGlhbiBwbHVnaW4sIGNvcGllcyB0aGUgdXBkYXRlZCBtYW5pZmVzdCBhbmQgcHVibGlzaGVzIGEgR2l0SHViIHJlbGVhc2UuXG4gKlxuICogQHBhcmFtIHZlcnNpb25VcGRhdGVUeXBlIC0gVGhlIHR5cGUgb2YgdmVyc2lvbiB1cGRhdGUgdG8gcGVyZm9ybSAobWFqb3IsIG1pbm9yLCBwYXRjaCwgYmV0YSwgb3IgeC55LnpbLWJldGE6dV0pLlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgdmVyc2lvbiB1cGRhdGUgaXMgY29tcGxldGUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB1cGRhdGVWZXJzaW9uKHZlcnNpb25VcGRhdGVUeXBlPzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmICghdmVyc2lvblVwZGF0ZVR5cGUpIHtcbiAgICBjb25zdCBucG1PbGRWZXJzaW9uID0gcHJvY2Vzcy5lbnZbJ25wbV9vbGRfdmVyc2lvbiddO1xuICAgIGNvbnN0IG5wbU5ld1ZlcnNpb24gPSBwcm9jZXNzLmVudlsnbnBtX25ld192ZXJzaW9uJ107XG5cbiAgICBpZiAobnBtT2xkVmVyc2lvbiAmJiBucG1OZXdWZXJzaW9uKSB7XG4gICAgICBhd2FpdCB1cGRhdGVWZXJzaW9uSW5GaWxlcyhucG1PbGRWZXJzaW9uLCBmYWxzZSk7XG4gICAgICBhd2FpdCB1cGRhdGVWZXJzaW9uKG5wbU5ld1ZlcnNpb24pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcignTm8gdmVyc2lvbiB1cGRhdGUgdHlwZSBwcm92aWRlZCcpO1xuICB9XG5cbiAgY29uc3QgaXNPYnNpZGlhblBsdWdpbiA9IGV4aXN0c1N5bmMocmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuTWFuaWZlc3RKc29uKSk7XG4gIHZhbGlkYXRlKHZlcnNpb25VcGRhdGVUeXBlKTtcbiAgYXdhaXQgY2hlY2tHaXRJbnN0YWxsZWQoKTtcbiAgYXdhaXQgY2hlY2tHaXRSZXBvQ2xlYW4oKTtcbiAgYXdhaXQgY2hlY2tHaXRIdWJDbGlJbnN0YWxsZWQoKTtcbiAgYXdhaXQgZXhlY0Zyb21Sb290KCducG0gcnVuIHNwZWxsY2hlY2snKTtcbiAgYXdhaXQgZXhlY0Zyb21Sb290KCducG0gcnVuIGJ1aWxkJyk7XG4gIGF3YWl0IGV4ZWNGcm9tUm9vdCgnbnBtIHJ1biBsaW50Jyk7XG5cbiAgY29uc3QgbmV3VmVyc2lvbiA9IGF3YWl0IGdldE5ld1ZlcnNpb24odmVyc2lvblVwZGF0ZVR5cGUpO1xuICBhd2FpdCB1cGRhdGVWZXJzaW9uSW5GaWxlcyhuZXdWZXJzaW9uLCBpc09ic2lkaWFuUGx1Z2luKTtcblxuICBpZiAoZ2V0VmVyc2lvblVwZGF0ZVR5cGUodmVyc2lvblVwZGF0ZVR5cGUpICE9PSBWZXJzaW9uVXBkYXRlVHlwZS5CZXRhKSB7XG4gICAgYXdhaXQgdXBkYXRlQ2hhbmdlbG9nKG5ld1ZlcnNpb24pO1xuICB9XG5cbiAgYXdhaXQgYWRkVXBkYXRlZEZpbGVzVG9HaXQobmV3VmVyc2lvbik7XG4gIGF3YWl0IGFkZEdpdFRhZyhuZXdWZXJzaW9uKTtcbiAgYXdhaXQgZ2l0UHVzaCgpO1xuICBpZiAoaXNPYnNpZGlhblBsdWdpbikge1xuICAgIGF3YWl0IGNvcHlVcGRhdGVkTWFuaWZlc3QoKTtcbiAgfVxuICBhd2FpdCBwdWJsaXNoR2l0SHViUmVsZWFzZShuZXdWZXJzaW9uLCBpc09ic2lkaWFuUGx1Z2luKTtcbn1cblxuLyoqXG4gKiBVcGRhdGVzIHRoZSB2ZXJzaW9uIGluIHZhcmlvdXMgZmlsZXMsIGluY2x1ZGluZyBgcGFja2FnZS5qc29uYCwgYHBhY2thZ2UtbG9jay5qc29uYCxcbiAqIGFuZCBPYnNpZGlhbiBwbHVnaW4gbWFuaWZlc3RzIGlmIGFwcGxpY2FibGUuXG4gKlxuICogQHBhcmFtIG5ld1ZlcnNpb24gLSBUaGUgbmV3IHZlcnNpb24gc3RyaW5nIHRvIHVwZGF0ZSBpbiB0aGUgZmlsZXMuXG4gKiBAcGFyYW0gaXNPYnNpZGlhblBsdWdpbiAtIFdoZXRoZXIgdGhlIHByb2plY3QgaXMgYW4gT2JzaWRpYW4gcGx1Z2luLlxuICogQHJldHVybnMgQSBgUHJvbWlzZWAgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSB1cGRhdGUgaXMgY29tcGxldGUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB1cGRhdGVWZXJzaW9uSW5GaWxlcyhuZXdWZXJzaW9uOiBzdHJpbmcsIGlzT2JzaWRpYW5QbHVnaW46IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgZWRpdFBhY2thZ2VKc29uKChwYWNrYWdlSnNvbikgPT4ge1xuICAgIHBhY2thZ2VKc29uLnZlcnNpb24gPSBuZXdWZXJzaW9uO1xuICB9KTtcblxuICBhd2FpdCBlZGl0UGFja2FnZUxvY2tKc29uKChwYWNrYWdlTG9ja0pzb24pID0+IHtcbiAgICBwYWNrYWdlTG9ja0pzb24udmVyc2lvbiA9IG5ld1ZlcnNpb247XG4gICAgY29uc3QgZGVmYXVsdFBhY2thZ2UgPSBwYWNrYWdlTG9ja0pzb24ucGFja2FnZXM/LlsnJ107XG4gICAgaWYgKGRlZmF1bHRQYWNrYWdlKSB7XG4gICAgICBkZWZhdWx0UGFja2FnZS52ZXJzaW9uID0gbmV3VmVyc2lvbjtcbiAgICB9XG4gIH0sIHsgc2hvdWxkU2tpcElmTWlzc2luZzogdHJ1ZSB9KTtcblxuICBpZiAoaXNPYnNpZGlhblBsdWdpbikge1xuICAgIGNvbnN0IGxhdGVzdE9ic2lkaWFuVmVyc2lvbiA9IGF3YWl0IGdldExhdGVzdE9ic2lkaWFuVmVyc2lvbigpO1xuXG4gICAgYXdhaXQgZWRpdEpzb248TWFuaWZlc3Q+KE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1hbmlmZXN0SnNvbiwgKG1hbmlmZXN0KSA9PiB7XG4gICAgICBtYW5pZmVzdC5taW5BcHBWZXJzaW9uID0gbGF0ZXN0T2JzaWRpYW5WZXJzaW9uO1xuICAgICAgbWFuaWZlc3QudmVyc2lvbiA9IG5ld1ZlcnNpb247XG4gICAgfSk7XG5cbiAgICBhd2FpdCBlZGl0SnNvbjxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PihPYnNpZGlhblBsdWdpblJlcG9QYXRocy5WZXJzaW9uc0pzb24sICh2ZXJzaW9ucykgPT4ge1xuICAgICAgdmVyc2lvbnNbbmV3VmVyc2lvbl0gPSBsYXRlc3RPYnNpZGlhblZlcnNpb247XG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgdGhlIHZlcnNpb24gdXBkYXRlIHR5cGUgdG8gZW5zdXJlIGl0IGlzIGVpdGhlciBhIHJlY29nbml6ZWQgdHlwZVxuICogb3IgYSB2YWxpZCBtYW51YWwgdmVyc2lvbiBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHZlcnNpb25VcGRhdGVUeXBlIC0gVGhlIHZlcnNpb24gdXBkYXRlIHR5cGUgdG8gdmFsaWRhdGUuXG4gKiBAdGhyb3dzIEVycm9yIGlmIHRoZSB2ZXJzaW9uIHVwZGF0ZSB0eXBlIGlzIGludmFsaWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZSh2ZXJzaW9uVXBkYXRlVHlwZTogc3RyaW5nKTogdm9pZCB7XG4gIGlmIChnZXRWZXJzaW9uVXBkYXRlVHlwZSh2ZXJzaW9uVXBkYXRlVHlwZSkgPT09IFZlcnNpb25VcGRhdGVUeXBlLkludmFsaWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdmVyc2lvbiB1cGRhdGUgdHlwZS4gUGxlYXNlIHVzZSBcXCdtYWpvclxcJywgXFwnbWlub3JcXCcsIFxcJ3BhdGNoXFwnLCBvciBcXCd4Lnkuelstc3VmZml4XVxcJyBmb3JtYXQuJyk7XG4gIH1cbn1cblxuLyoqXG4gKiBGZXRjaGVzIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBPYnNpZGlhbiBmcm9tIHRoZSBHaXRIdWIgcmVsZWFzZXMgQVBJLlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBPYnNpZGlhbi5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0TGF0ZXN0T2JzaWRpYW5WZXJzaW9uKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goJ2h0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvb2JzaWRpYW5tZC9vYnNpZGlhbi1yZWxlYXNlcy9yZWxlYXNlcy9sYXRlc3QnKTtcbiAgY29uc3Qgb2JzaWRpYW5SZWxlYXNlc0pzb24gPSBhd2FpdCByZXNwb25zZS5qc29uKCkgYXMgUGFydGlhbDxPYnNpZGlhblJlbGVhc2VzSnNvbj47XG4gIHJldHVybiBvYnNpZGlhblJlbGVhc2VzSnNvbi5uYW1lID8/IHRocm93RXhwcmVzc2lvbihuZXcgRXJyb3IoJ0NvdWxkIG5vdCBmaW5kIHRoZSBuYW1lIG9mIHRoZSBsYXRlc3QgT2JzaWRpYW4gcmVsZWFzZScpKTtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJlc29sdmVQYXRoRnJvbVJvb3QocGF0aCkgPz8gcGF0aDtcbn1cblxuZnVuY3Rpb24gdG9TaW5nbGVMaW5lKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgbGluZXMgPSBzdHIuc3BsaXQoL1xccj9cXG4vKS5maWx0ZXIoQm9vbGVhbik7XG4gIHJldHVybiBsaW5lcy5qb2luKCcgJyk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQW1CQSxxQkFBbUI7QUFFbkIsbUJBQWdDO0FBQ2hDLHFDQUF3QztBQUN4QyxrQkFBcUI7QUFDckIsb0JBQTJCO0FBQzNCLGdCQUE2QjtBQUM3QixrQkFBeUI7QUFDekIseUJBTU87QUFDUCxpQkFJTztBQUNQLHVDQUEwQztBQUMxQyxrQkFHTztBQTNDUCxJQUFJLFlBQVksV0FBVyxTQUFTLEtBQUs7QUFBQSxFQUN2QyxXQUFXO0FBQUEsRUFDWCxPQUFPLE1BQUk7QUFBQSxFQUNYLE9BQU8sQ0FBQztBQUFBLEVBQ1IsWUFBWTtBQUNkO0FBMkNPLElBQUssb0JBQUwsa0JBQUtBLHVCQUFMO0FBQ0wsRUFBQUEsbUJBQUEsVUFBTztBQUNQLEVBQUFBLG1CQUFBLGFBQVU7QUFDVixFQUFBQSxtQkFBQSxXQUFRO0FBQ1IsRUFBQUEsbUJBQUEsWUFBUztBQUNULEVBQUFBLG1CQUFBLFdBQVE7QUFDUixFQUFBQSxtQkFBQSxXQUFRO0FBTkUsU0FBQUE7QUFBQSxHQUFBO0FBd0NaLGVBQXNCLFVBQVUsWUFBbUM7QUFDakUsWUFBTSwwQkFBYSxjQUFjLFVBQVUsT0FBTyxVQUFVLFlB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V0FBUyxpQkFBaUI7QUFDMUIsUUFBTSxrQkFBa0I7QUFDeEIsUUFBTSxrQkFBa0I7QUFDeEIsUUFBTSx3QkFBd0I7QUFDOUIsWUFBTSwwQkFBYSxvQkFBb0I7QUFDdkMsWUFBTSwwQkFBYSxlQUFlO0FBQ2xDLFlBQU0sMEJBQWEsY0FBYztBQUVqQyxRQUFNLGFBQWEsTUFBTSxjQUFjLGlCQUFpQjtBQUN4RCxRQUFNLHFCQUFxQixZQUFZLGdCQUFnQjtBQUV2RCxNQUFJLHFCQUFxQixpQkFBaUIsTUFBTSxtQkFBd0I7QUFDdEUsVUFBTSxnQkFBZ0IsVUFBVTtBQUFBLEVBQ2xDO0FBRUEsUUFBTSxxQkFBcUIsVUFBVTtBQUNyQyxRQUFNLFVBQVUsVUFBVTtBQUMxQixRQUFNLFFBQVE7QUFDZCxNQUFJLGtCQUFrQjtBQUNwQixVQUFNLG9CQUFvQjtBQUFBLEVBQzVCO0FBQ0EsUUFBTSxxQkFBcUIsWUFBWSxnQkFBZ0I7QUFDekQ7QUFVQSxlQUFzQixxQkFBcUIsWUFBb0Isa0JBQTBDO0FBQ3ZHLFlBQU0sNEJBQWdCLENBQUMsZ0JBQWdCO0FBQ3JDLGdCQUFZLFVBQVU7QUFBQSxFQUN4QixDQUFDO0FBRUQsWUFBTSxnQ0FBb0IsQ0FBQyxvQkFBb0I7QUFDN0Msb0JBQWdCLFVBQVU7QUFDMUIsVUFBTSxpQkFBaUIsZ0JBQWdCLFdBQVcsRUFBRTtBQUNwRCxRQUFJLGdCQUFnQjtBQUNsQixxQkFBZSxVQUFVO0FBQUEsSUFDM0I7QUFBQSxFQUNGLEdBQUcsRUFBRSxxQkFBcUIsS0FBSyxDQUFDO0FBRWhDLE1BQUksa0JBQWtCO0FBQ3BCLFVBQU0sd0JBQXdCLE1BQU0seUJBQXlCO0FBRTdELGNBQU0sc0JBQW1CLHVEQUF3QixjQUFjLENBQUMsYUFBYTtBQUMzRSxlQUFTLGdCQUFnQjtBQUN6QixlQUFTLFVBQVU7QUFBQSxJQUNyQixDQUFDO0FBRUQsY0FBTSxzQkFBaUMsdURBQXdCLGNBQWMsQ0FBQyxhQUFhO0FBQ3pGLGVBQVMsVUFBVSxJQUFJO0FBQUEsSUFDekIsQ0FBQztBQUFBLEVBQ0g7QUFDRjtBQVNPLFNBQVMsU0FBUyxtQkFBaUM7QUFDeEQsTUFBSSxxQkFBcUIsaUJBQWlCLE1BQU0seUJBQTJCO0FBQ3pFLFVBQU0sSUFBSSxNQUFNLGdHQUF3RztBQUFBLEVBQzFIO0FBQ0Y7QUFPQSxlQUFlLDJCQUE0QztBQUN6RCxRQUFNLFdBQVcsTUFBTSxNQUFNLDJFQUEyRTtBQUN4RyxRQUFNLHVCQUF1QixNQUFNLFNBQVMsS0FBSztBQUNqRCxTQUFPLHFCQUFxQixZQUFRLDhCQUFnQixJQUFJLE1BQU0sd0RBQXdELENBQUM7QUFDekg7QUFFQSxTQUFTLHdCQUF3QixNQUFzQjtBQUNyRCxhQUFPLGlDQUFvQixJQUFJLEtBQUs7QUFDdEM7QUFFQSxTQUFTLGFBQWEsS0FBcUI7QUFDekMsUUFBTSxRQUFRLElBQUksTUFBTSxPQUFPLEVBQUUsT0FBTyxPQUFPO0FBQy9DLFNBQU8sTUFBTSxLQUFLLEdBQUc7QUFDdkI7IiwKICAibmFtZXMiOiBbIlZlcnNpb25VcGRhdGVUeXBlIiwgIkFkbVppcCJdCn0K
|
360
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3NjcmlwdHMvdmVyc2lvbi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsidmFyIF9fcHJvY2VzcyA9IGdsb2JhbFRoaXNbJ3Byb2Nlc3MnXSA/PyB7XG4gIFwiYnJvd3NlclwiOiB0cnVlLFxuICBcImN3ZFwiOiAoKT0+XCIvXCIsXG4gIFwiZW52XCI6IHt9LFxuICBcInBsYXRmb3JtXCI6IFwiYW5kcm9pZFwiXG59O1xuLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb24gdmVyc2lvblxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgZnVuY3Rpb25zIGZvciBtYW5hZ2luZyB2ZXJzaW9uIHVwZGF0ZXMgaW4gYSBwcm9qZWN0LlxuICogSXQgaW5jbHVkZXMgdGFza3Mgc3VjaCBhcyB2YWxpZGF0aW5nIHZlcnNpb24gdXBkYXRlIHR5cGVzLCBjaGVja2luZyB0aGUgc3RhdGVcbiAqIG9mIEdpdCBhbmQgR2l0SHViIENMSSwgdXBkYXRpbmcgdmVyc2lvbiBudW1iZXJzIGluIGZpbGVzLCBhbmQgcGVyZm9ybWluZ1xuICogR2l0IG9wZXJhdGlvbnMgc3VjaCBhcyB0YWdnaW5nIGFuZCBwdXNoaW5nLlxuICpcbiAqIFRoZSBtYWluIGZ1bmN0aW9uLCBgdXBkYXRlVmVyc2lvbmAsIGNvb3JkaW5hdGVzIHRoZXNlIHRhc2tzIHRvIGVuc3VyZSB0aGF0XG4gKiB2ZXJzaW9uIHVwZGF0ZXMgYXJlIGhhbmRsZWQgY29uc2lzdGVudGx5IGFuZCBjb3JyZWN0bHkuIEl0IGFsc28gaW50ZWdyYXRlc1xuICogd2l0aCBPYnNpZGlhbiBwbHVnaW5zLCBpZiBhcHBsaWNhYmxlLCBieSB1cGRhdGluZyByZWxldmFudCBmaWxlcyBhbmQgcmVsZWFzaW5nXG4gKiBuZXcgdmVyc2lvbnMgb24gR2l0SHViLlxuICovXG5cbmltcG9ydCBBZG1aaXAgZnJvbSAnYWRtLXppcCc7XG5cbmltcG9ydCB7IHRocm93RXhwcmVzc2lvbiB9IGZyb20gJy4uL0Vycm9yLnRzJztcbmltcG9ydCB7IE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzIH0gZnJvbSAnLi4vb2JzaWRpYW4vUGx1Z2luL09ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLnRzJztcbmltcG9ydCB7IGpvaW4gfSBmcm9tICcuLi9QYXRoLnRzJztcbmltcG9ydCB7IHJlcGxhY2VBbGwgfSBmcm9tICcuLi9TdHJpbmcudHMnO1xuaW1wb3J0IHsgcmVhZGRpclBvc2l4IH0gZnJvbSAnLi9Gcy50cyc7XG5pbXBvcnQgeyBlZGl0SnNvbiB9IGZyb20gJy4vSlNPTi50cyc7XG5pbXBvcnQge1xuICBjcCxcbiAgY3JlYXRlSW50ZXJmYWNlLFxuICBleGlzdHNTeW5jLFxuICByZWFkRmlsZSxcbiAgd3JpdGVGaWxlXG59IGZyb20gJy4vTm9kZU1vZHVsZXMudHMnO1xuaW1wb3J0IHtcbiAgZWRpdFBhY2thZ2VKc29uLFxuICBlZGl0UGFja2FnZUxvY2tKc29uLFxuICByZWFkUGFja2FnZUpzb25cbn0gZnJvbSAnLi9OcG0udHMnO1xuaW1wb3J0IHsgT2JzaWRpYW5EZXZVdGlsc1JlcG9QYXRocyB9IGZyb20gJy4vT2JzaWRpYW5EZXZVdGlsc1JlcG9QYXRocy50cyc7XG5pbXBvcnQge1xuICBleGVjRnJvbVJvb3QsXG4gIHJlc29sdmVQYXRoRnJvbVJvb3Rcbn0gZnJvbSAnLi9Sb290LnRzJztcblxuLyoqXG4gKiBFbnVtIHJlcHJlc2VudGluZyBkaWZmZXJlbnQgdHlwZXMgb2YgdmVyc2lvbiB1cGRhdGVzLlxuICovXG5leHBvcnQgZW51bSBWZXJzaW9uVXBkYXRlVHlwZSB7XG4gIEJldGEgPSAnYmV0YScsXG4gIEludmFsaWQgPSAnaW52YWxpZCcsXG4gIE1ham9yID0gJ21ham9yJyxcbiAgTWFudWFsID0gJ21hbnVhbCcsXG4gIE1pbm9yID0gJ21pbm9yJyxcbiAgUGF0Y2ggPSAncGF0Y2gnXG59XG5cbi8qKlxuICogVHlwZSByZXByZXNlbnRpbmcgdGhlIG1hbmlmZXN0IGZpbGUgZm9ybWF0IGZvciBPYnNpZGlhbiBwbHVnaW5zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1hbmlmZXN0IHtcbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIE9ic2lkaWFuIHZlcnNpb24gcmVxdWlyZWQgZm9yIHRoZSBwbHVnaW4uXG4gICAqL1xuICBtaW5BcHBWZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBwbHVnaW4uXG4gICAqL1xuICB2ZXJzaW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVHlwZSByZXByZXNlbnRpbmcgdGhlIHN0cnVjdHVyZSBvZiBPYnNpZGlhbiByZWxlYXNlcyBKU09OLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9ic2lkaWFuUmVsZWFzZXNKc29uIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBPYnNpZGlhbiByZWxlYXNlLlxuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBHaXQgdGFnIGZvciB0aGUgbmV3IHZlcnNpb24uXG4gKlxuICogQHBhcmFtIG5ld1ZlcnNpb24gLSBUaGUgbmV3IHZlcnNpb24gbnVtYmVyIHRvIHVzZSBmb3IgdGhlIHRhZy5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHRhZyBoYXMgYmVlbiBjcmVhdGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYWRkR2l0VGFnKG5ld1ZlcnNpb246IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBleGVjRnJvbVJvb3QoYGdpdCB0YWcgLWEgJHtuZXdWZXJzaW9ufSAtbSAke25ld1ZlcnNpb259IC0tZm9yY2VgLCB7IGlzUXVpZXQ6IHRydWUgfSk7XG59XG5cbi8qKlxuICogQWRkcyB1cGRhdGVkIGZpbGVzIHRvIHRoZSBHaXQgc3RhZ2luZyBhcmVhIGFuZCBjb21taXRzIHRoZW0gd2l0aCB0aGUgbmV3IHZlcnNpb24gbWVzc2FnZS5cbiAqXG4gKiBAcGFyYW0gbmV3VmVyc2lvbiAtIFRoZSBuZXcgdmVyc2lvbiBudW1iZXIgdXNlZCBhcyB0aGUgY29tbWl0IG1lc3NhZ2UuXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBmaWxlcyBoYXZlIGJlZW4gYWRkZWQgYW5kIGNvbW1pdHRlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFkZFVwZGF0ZWRGaWxlc1RvR2l0KG5ld1ZlcnNpb246IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBmaWxlcyA9IFtcbiAgICBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5NYW5pZmVzdEpzb24sXG4gICAgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuUGFja2FnZUpzb24sXG4gICAgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuUGFja2FnZUxvY2tKc29uLFxuICAgIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLlZlcnNpb25zSnNvbixcbiAgICBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5DaGFuZ2Vsb2dNZFxuICBdLmZpbHRlcigoZmlsZSkgPT4gZXhpc3RzU3luYyhyZXNvbHZlUGF0aEZyb21Sb290U2FmZShmaWxlKSkpO1xuICBhd2FpdCBleGVjRnJvbVJvb3QoWydnaXQnLCAnYWRkJywgLi4uZmlsZXNdLCB7IGlzUXVpZXQ6IHRydWUgfSk7XG4gIGF3YWl0IGV4ZWNGcm9tUm9vdChgZ2l0IGNvbW1pdCAtbSAke25ld1ZlcnNpb259IC0tYWxsb3ctZW1wdHlgLCB7IGlzUXVpZXQ6IHRydWUgfSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBHaXRIdWIgQ0xJIGlzIGluc3RhbGxlZCBvbiB0aGUgc3lzdGVtLlxuICpcbiAqIFRocm93cyBhbiBlcnJvciBpZiB0aGUgR2l0SHViIENMSSBpcyBub3QgaW5zdGFsbGVkLlxuICpcbiAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEdpdEh1YiBDTEkgaXMgbm90IGluc3RhbGxlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNoZWNrR2l0SHViQ2xpSW5zdGFsbGVkKCk6IFByb21pc2U8dm9pZD4ge1xuICB0cnkge1xuICAgIGF3YWl0IGV4ZWNGcm9tUm9vdCgnZ2ggLS12ZXJzaW9uJywgeyBpc1F1aWV0OiB0cnVlIH0pO1xuICB9IGNhdGNoIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0dpdEh1YiBDTEkgaXMgbm90IGluc3RhbGxlZC4gUGxlYXNlIGluc3RhbGwgaXQgZnJvbSBodHRwczovL2NsaS5naXRodWIuY29tLycpO1xuICB9XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIEdpdCBpcyBpbnN0YWxsZWQgb24gdGhlIHN5c3RlbS5cbiAqXG4gKiBUaHJvd3MgYW4gZXJyb3IgaWYgR2l0IGlzIG5vdCBpbnN0YWxsZWQuXG4gKlxuICogQHRocm93cyBFcnJvciBpZiBHaXQgaXMgbm90IGluc3RhbGxlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNoZWNrR2l0SW5zdGFsbGVkKCk6IFByb21pc2U8dm9pZD4ge1xuICB0cnkge1xuICAgIGF3YWl0IGV4ZWNGcm9tUm9vdCgnZ2l0IC0tdmVyc2lvbicsIHsgaXNRdWlldDogdHJ1ZSB9KTtcbiAgfSBjYXRjaCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdHaXQgaXMgbm90IGluc3RhbGxlZC4gUGxlYXNlIGluc3RhbGwgaXQgZnJvbSBodHRwczovL2dpdC1zY20uY29tLycpO1xuICB9XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBHaXQgcmVwb3NpdG9yeSBpcyBjbGVhbiwgbWVhbmluZyB0aGVyZSBhcmUgbm8gdW5jb21taXR0ZWQgY2hhbmdlcy5cbiAqXG4gKiBUaHJvd3MgYW4gZXJyb3IgaWYgdGhlIEdpdCByZXBvc2l0b3J5IGlzIG5vdCBjbGVhbi5cbiAqXG4gKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBHaXQgcmVwb3NpdG9yeSBpcyBub3QgY2xlYW4uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjaGVja0dpdFJlcG9DbGVhbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBzdGRvdXQgPSBhd2FpdCBleGVjRnJvbVJvb3QoJ2dpdCBzdGF0dXMgLS1wb3JjZWxhaW4gLS11bnRyYWNrZWQtZmlsZXM9YWxsJywgeyBpc1F1aWV0OiB0cnVlIH0pO1xuICAgIGlmIChzdGRvdXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigpO1xuICAgIH1cbiAgfSBjYXRjaCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdHaXQgcmVwb3NpdG9yeSBpcyBub3QgY2xlYW4uIFBsZWFzZSBjb21taXQgb3Igc3Rhc2ggeW91ciBjaGFuZ2VzIGJlZm9yZSByZWxlYXNpbmcgYSBuZXcgdmVyc2lvbi4nKTtcbiAgfVxufVxuXG4vKipcbiAqIENvcGllcyB0aGUgdXBkYXRlZCBtYW5pZmVzdCBmaWxlIHRvIHRoZSBkaXN0cmlidXRpb24gYnVpbGQgZGlyZWN0b3J5LlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGNvcHkgb3BlcmF0aW9uIGlzIGNvbXBsZXRlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29weVVwZGF0ZWRNYW5pZmVzdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgY3AocmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuTWFuaWZlc3RKc29uKSwgcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoam9pbihPYnNpZGlhblBsdWdpblJlcG9QYXRocy5EaXN0QnVpbGQsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1hbmlmZXN0SnNvbikpLCB7IGZvcmNlOiB0cnVlIH0pO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBhIG5ldyB2ZXJzaW9uIHN0cmluZyBiYXNlZCBvbiB0aGUgY3VycmVudCB2ZXJzaW9uIGFuZCB0aGUgc3BlY2lmaWVkIHVwZGF0ZSB0eXBlLlxuICpcbiAqIEBwYXJhbSB2ZXJzaW9uVXBkYXRlVHlwZSAtIFRoZSB0eXBlIG9mIHZlcnNpb24gdXBkYXRlIChtYWpvciwgbWlub3IsIHBhdGNoLCBiZXRhLCBvciBtYW51YWwpLlxuICogQHJldHVybnMgQSBgUHJvbWlzZWAgdGhhdCByZXNvbHZlcyB0byB0aGUgbmV3IHZlcnNpb24gc3RyaW5nLlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgY3VycmVudCB2ZXJzaW9uIGZvcm1hdCBpcyBpbnZhbGlkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0TmV3VmVyc2lvbih2ZXJzaW9uVXBkYXRlVHlwZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgdmVyc2lvblR5cGUgPSBnZXRWZXJzaW9uVXBkYXRlVHlwZSh2ZXJzaW9uVXBkYXRlVHlwZSk7XG4gIGlmICh2ZXJzaW9uVHlwZSA9PT0gVmVyc2lvblVwZGF0ZVR5cGUuTWFudWFsKSB7XG4gICAgcmV0dXJuIHZlcnNpb25VcGRhdGVUeXBlO1xuICB9XG5cbiAgY29uc3QgcGFja2FnZUpzb24gPSBhd2FpdCByZWFkUGFja2FnZUpzb24oKTtcbiAgY29uc3QgY3VycmVudFZlcnNpb24gPSBwYWNrYWdlSnNvbi52ZXJzaW9uID8/ICcnO1xuXG4gIGNvbnN0IG1hdGNoID0gL14oXFxkKylcXC4oXFxkKylcXC4oXFxkKykoLWJldGEuKFxcZCspKT8vLmV4ZWMoY3VycmVudFZlcnNpb24pO1xuICBpZiAoIW1hdGNoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGN1cnJlbnQgdmVyc2lvbiBmb3JtYXQ6ICR7Y3VycmVudFZlcnNpb259YCk7XG4gIH1cblxuICBsZXQgbWFqb3IgPSBOdW1iZXIobWF0Y2hbMV0pO1xuICBsZXQgbWlub3IgPSBOdW1iZXIobWF0Y2hbMl0pO1xuICBsZXQgcGF0Y2ggPSBOdW1iZXIobWF0Y2hbM10pO1xuICBsZXQgYmV0YSA9IG1hdGNoWzVdID8gTnVtYmVyKG1hdGNoWzVdKSA6IDA7XG5cbiAgc3dpdGNoICh2ZXJzaW9uVHlwZSkge1xuICAgIGNhc2UgVmVyc2lvblVwZGF0ZVR5cGUuQmV0YTpcbiAgICAgIGlmIChiZXRhID09PSAwKSB7XG4gICAgICAgIHBhdGNoKys7XG4gICAgICB9XG4gICAgICBiZXRhKys7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFZlcnNpb25VcGRhdGVUeXBlLk1ham9yOlxuICAgICAgbWFqb3IrKztcbiAgICAgIG1pbm9yID0gMDtcbiAgICAgIHBhdGNoID0gMDtcbiAgICAgIGJldGEgPSAwO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBWZXJzaW9uVXBkYXRlVHlwZS5NaW5vcjpcbiAgICAgIG1pbm9yKys7XG4gICAgICBwYXRjaCA9IDA7XG4gICAgICBiZXRhID0gMDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgVmVyc2lvblVwZGF0ZVR5cGUuUGF0Y2g6XG4gICAgICBwYXRjaCsrO1xuICAgICAgYmV0YSA9IDA7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIHJldHVybiBgJHttYWpvci50b1N0cmluZygpfS4ke21pbm9yLnRvU3RyaW5nKCl9LiR7cGF0Y2gudG9TdHJpbmcoKX0ke2JldGEgPiAwID8gYC1iZXRhLiR7YmV0YS50b1N0cmluZygpfWAgOiAnJ31gO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgcmVsZWFzZSBub3RlcyBmb3IgYSBzcGVjaWZpYyB2ZXJzaW9uIGZyb20gdGhlIGNoYW5nZWxvZy5cbiAqXG4gKiBAcGFyYW0gbmV3VmVyc2lvbiAtIFRoZSBuZXcgdmVyc2lvbiBudW1iZXIgZm9yIHdoaWNoIHRvIGdldCB0aGUgcmVsZWFzZSBub3Rlcy5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSByZWxlYXNlIG5vdGVzIGZvciB0aGUgc3BlY2lmaWVkIHZlcnNpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRSZWxlYXNlTm90ZXMobmV3VmVyc2lvbjogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgY2hhbmdlbG9nUGF0aCA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkNoYW5nZWxvZ01kKTtcbiAgY29uc3QgY29udGVudCA9IGF3YWl0IHJlYWRGaWxlKGNoYW5nZWxvZ1BhdGgsICd1dGYtOCcpO1xuICBjb25zdCBuZXdWZXJzaW9uRXNjYXBlZCA9IHJlcGxhY2VBbGwobmV3VmVyc2lvbiwgJy4nLCAnXFxcXC4nKTtcbiAgY29uc3QgbWF0Y2ggPSBuZXcgUmVnRXhwKGBcXG4jIyAke25ld1ZlcnNpb25Fc2NhcGVkfVxcblxcbigoLnxcXG4pKz8pXFxuXFxuIyNgKS5leGVjKGNvbnRlbnQpO1xuICBsZXQgcmVsZWFzZU5vdGVzID0gbWF0Y2g/LlsxXSA/IG1hdGNoWzFdICsgJ1xcblxcbicgOiAnJztcblxuICBjb25zdCB0YWdzID0gKGF3YWl0IGV4ZWNGcm9tUm9vdCgnZ2l0IHRhZyAtLXNvcnQ9LWNyZWF0b3JkYXRlJywgeyBpc1F1aWV0OiB0cnVlIH0pKS5zcGxpdCgvXFxyP1xcbi8pO1xuICBjb25zdCBwcmV2aW91c1ZlcnNpb24gPSB0YWdzWzFdO1xuICBsZXQgY2hhbmdlc1VybCA9ICcnO1xuXG4gIGNvbnN0IHJlcG9VcmwgPSBhd2FpdCBleGVjRnJvbVJvb3QoJ2doIHJlcG8gdmlldyAtLWpzb24gdXJsIC1xIC51cmwnLCB7IGlzUXVpZXQ6IHRydWUgfSk7XG5cbiAgaWYgKHByZXZpb3VzVmVyc2lvbikge1xuICAgIGNoYW5nZXNVcmwgPSBgJHtyZXBvVXJsfS9jb21wYXJlLyR7cHJldmlvdXNWZXJzaW9ufS4uLiR7bmV3VmVyc2lvbn1gO1xuICB9IGVsc2Uge1xuICAgIGNoYW5nZXNVcmwgPSBgJHtyZXBvVXJsfS9jb21taXRzLyR7bmV3VmVyc2lvbn1gO1xuICB9XG5cbiAgcmVsZWFzZU5vdGVzICs9IGAqKkZ1bGwgQ2hhbmdlbG9nKio6ICR7Y2hhbmdlc1VybH1gO1xuICByZXR1cm4gcmVsZWFzZU5vdGVzO1xufVxuXG4vKipcbiAqIERldGVybWluZXMgdGhlIHR5cGUgb2YgdmVyc2lvbiB1cGRhdGUgYmFzZWQgb24gdGhlIGlucHV0IHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gdmVyc2lvblVwZGF0ZVR5cGUgLSBUaGUgaW5wdXQgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdmVyc2lvbiB1cGRhdGUgdHlwZS5cbiAqIEByZXR1cm5zIFRoZSBjb3JyZXNwb25kaW5nIGBWZXJzaW9uVXBkYXRlVHlwZWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRWZXJzaW9uVXBkYXRlVHlwZSh2ZXJzaW9uVXBkYXRlVHlwZTogc3RyaW5nKTogVmVyc2lvblVwZGF0ZVR5cGUge1xuICBjb25zdCB2ZXJzaW9uVXBkYXRlVHlwZUVudW0gPSB2ZXJzaW9uVXBkYXRlVHlwZSBhcyBWZXJzaW9uVXBkYXRlVHlwZTtcbiAgc3dpdGNoICh2ZXJzaW9uVXBkYXRlVHlwZUVudW0pIHtcbiAgICBjYXNlIFZlcnNpb25VcGRhdGVUeXBlLkJldGE6XG4gICAgY2FzZSBWZXJzaW9uVXBkYXRlVHlwZS5NYWpvcjpcbiAgICBjYXNlIFZlcnNpb25VcGRhdGVUeXBlLk1pbm9yOlxuICAgIGNhc2UgVmVyc2lvblVwZGF0ZVR5cGUuUGF0Y2g6XG4gICAgICByZXR1cm4gdmVyc2lvblVwZGF0ZVR5cGVFbnVtO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIGlmICgvXlxcZCtcXC5cXGQrXFwuXFxkKygtW1xcd1xcZC4tXSspPyQvLnRlc3QodmVyc2lvblVwZGF0ZVR5cGUpKSB7XG4gICAgICAgIHJldHVybiBWZXJzaW9uVXBkYXRlVHlwZS5NYW51YWw7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBWZXJzaW9uVXBkYXRlVHlwZS5JbnZhbGlkO1xuICB9XG59XG5cbi8qKlxuICogUHVzaGVzIGNvbW1pdHMgYW5kIHRhZ3MgdG8gdGhlIHJlbW90ZSBHaXQgcmVwb3NpdG9yeS5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBwdXNoIG9wZXJhdGlvbiBpcyBjb21wbGV0ZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdpdFB1c2goKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IGV4ZWNGcm9tUm9vdCgnZ2l0IHB1c2ggLS1mb2xsb3ctdGFncyAtLWZvcmNlJywgeyBpc1F1aWV0OiB0cnVlIH0pO1xufVxuXG4vKipcbiAqIFB1Ymxpc2hlcyBhIEdpdEh1YiByZWxlYXNlIGZvciB0aGUgbmV3IHZlcnNpb24uXG4gKlxuICogSGFuZGxlcyB0aGUgY3JlYXRpb24gb2YgYSByZWxlYXNlIGFuZCB1cGxvYWRpbmcgZmlsZXMgZm9yIGVpdGhlciBhbiBPYnNpZGlhbiBwbHVnaW4gb3IgYW5vdGhlciBwcm9qZWN0LlxuICpcbiAqIEBwYXJhbSBuZXdWZXJzaW9uIC0gVGhlIG5ldyB2ZXJzaW9uIG51bWJlciBmb3IgdGhlIHJlbGVhc2UuXG4gKiBAcGFyYW0gaXNPYnNpZGlhblBsdWdpbiAtIEEgYm9vbGVhbiBpbmRpY2F0aW5nIGlmIHRoZSBwcm9qZWN0IGlzIGFuIE9ic2lkaWFuIHBsdWdpbi5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHJlbGVhc2UgaGFzIGJlZW4gcHVibGlzaGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHVibGlzaEdpdEh1YlJlbGVhc2UobmV3VmVyc2lvbjogc3RyaW5nLCBpc09ic2lkaWFuUGx1Z2luOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGxldCBmaWxlUGF0aHM6IHN0cmluZ1tdO1xuXG4gIGlmIChpc09ic2lkaWFuUGx1Z2luKSB7XG4gICAgY29uc3QgYnVpbGREaXIgPSByZXNvbHZlUGF0aEZyb21Sb290U2FmZShPYnNpZGlhblBsdWdpblJlcG9QYXRocy5EaXN0QnVpbGQpO1xuICAgIGNvbnN0IGZpbGVOYW1lcyA9IGF3YWl0IHJlYWRkaXJQb3NpeChidWlsZERpcik7XG4gICAgZmlsZVBhdGhzID0gZmlsZU5hbWVzLm1hcCgoZmlsZU5hbWUpID0+IGpvaW4oYnVpbGREaXIsIGZpbGVOYW1lKSk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgemlwID0gbmV3IEFkbVppcCgpO1xuICAgIHppcC5hZGRMb2NhbEZvbGRlcihyZXNvbHZlUGF0aEZyb21Sb290U2FmZShPYnNpZGlhbkRldlV0aWxzUmVwb1BhdGhzLkRpc3QpLCBPYnNpZGlhbkRldlV0aWxzUmVwb1BhdGhzLkRpc3QsIChmaWxlbmFtZSkgPT4gIWZpbGVuYW1lLmVuZHNXaXRoKCcuemlwJykpO1xuXG4gICAgY29uc3QgZmlsZXMgPSBbXG4gICAgICBPYnNpZGlhbkRldlV0aWxzUmVwb1BhdGhzLkNoYW5nZWxvZ01kLFxuICAgICAgT2JzaWRpYW5EZXZVdGlsc1JlcG9QYXRocy5MaWNlbnNlLFxuICAgICAgT2JzaWRpYW5EZXZVdGlsc1JlcG9QYXRocy5SZWFkbWVNZCxcbiAgICAgIE9ic2lkaWFuRGV2VXRpbHNSZXBvUGF0aHMuUGFja2FnZUpzb25cbiAgICBdO1xuXG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICB6aXAuYWRkTG9jYWxGaWxlKHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKGZpbGUpKTtcbiAgICB9XG5cbiAgICBjb25zdCBwYWNrYWdlSnNvbiA9IGF3YWl0IHJlYWRQYWNrYWdlSnNvbigpO1xuICAgIGNvbnN0IGRpc3RaaXBQYXRoID0gcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoam9pbihPYnNpZGlhbkRldlV0aWxzUmVwb1BhdGhzLkRpc3QsIGAke3BhY2thZ2VKc29uLm5hbWUgPz8gJyh1bmtub3duKSd9LSR7bmV3VmVyc2lvbn0uemlwYCkpO1xuICAgIHppcC53cml0ZVppcChkaXN0WmlwUGF0aCk7XG4gICAgZmlsZVBhdGhzID0gW2Rpc3RaaXBQYXRoXTtcbiAgfVxuXG4gIGF3YWl0IGV4ZWNGcm9tUm9vdChbJ2doJywgJ3JlbGVhc2UnLCAnY3JlYXRlJywgbmV3VmVyc2lvbiwgLi4uZmlsZVBhdGhzLCAnLS10aXRsZScsIGB2JHtuZXdWZXJzaW9ufWAsICctLW5vdGVzLWZpbGUnLCAnLSddLCB7XG4gICAgaXNRdWlldDogdHJ1ZSxcbiAgICBzdGRpbjogYXdhaXQgZ2V0UmVsZWFzZU5vdGVzKG5ld1ZlcnNpb24pXG4gIH0pO1xufVxuXG4vKipcbiAqIFVwZGF0ZXMgdGhlIGNoYW5nZWxvZyBmaWxlIHdpdGggbmV3IHZlcnNpb24gaW5mb3JtYXRpb24gYW5kIGNvbW1pdCBtZXNzYWdlcy5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIHJlYWRzIHRoZSBjdXJyZW50IGNoYW5nZWxvZywgYXBwZW5kcyBuZXcgZW50cmllcyBmb3IgdGhlIGxhdGVzdCB2ZXJzaW9uLFxuICogYW5kIHByb21wdHMgdGhlIHVzZXIgdG8gcmV2aWV3IHRoZSBjaGFuZ2VzLlxuICpcbiAqIEBwYXJhbSBuZXdWZXJzaW9uIC0gVGhlIG5ldyB2ZXJzaW9uIG51bWJlciB0byBiZSBhZGRlZCB0byB0aGUgY2hhbmdlbG9nLlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgY2hhbmdlbG9nIHVwZGF0ZSBpcyBjb21wbGV0ZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZUNoYW5nZWxvZyhuZXdWZXJzaW9uOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgY2hhbmdlbG9nUGF0aCA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkNoYW5nZWxvZ01kKTtcbiAgbGV0IHByZXZpb3VzQ2hhbmdlbG9nTGluZXM6IHN0cmluZ1tdO1xuICBpZiAoIWV4aXN0c1N5bmMoY2hhbmdlbG9nUGF0aCkpIHtcbiAgICBwcmV2aW91c0NoYW5nZWxvZ0xpbmVzID0gW107XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgY29udGVudCA9IGF3YWl0IHJlYWRGaWxlKGNoYW5nZWxvZ1BhdGgsICd1dGYtOCcpO1xuICAgIHByZXZpb3VzQ2hhbmdlbG9nTGluZXMgPSBjb250ZW50LnNwbGl0KCdcXG4nKS5zbGljZSgyKTtcbiAgICBpZiAocHJldmlvdXNDaGFuZ2Vsb2dMaW5lcy5hdCgtMSkgPT09ICcnKSB7XG4gICAgICBwcmV2aW91c0NoYW5nZWxvZ0xpbmVzLnBvcCgpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGxhc3RUYWcgPSByZXBsYWNlQWxsKHByZXZpb3VzQ2hhbmdlbG9nTGluZXNbMF0gPz8gJycsICcjIyAnLCAnJyk7XG4gIGNvbnN0IGNvbW1pdFJhbmdlID0gbGFzdFRhZyA/IGAke2xhc3RUYWd9Li5IRUFEYCA6ICdIRUFEJztcbiAgY29uc3QgY29tbWl0TWVzc2FnZXNTdHIgPSBhd2FpdCBleGVjRnJvbVJvb3QoYGdpdCBsb2cgJHtjb21taXRSYW5nZX0gLS1mb3JtYXQ9JUIgLS1maXJzdC1wYXJlbnQgLXpgLCB7IGlzUXVpZXQ6IHRydWUgfSk7XG4gIGNvbnN0IGNvbW1pdE1lc3NhZ2VzID0gY29tbWl0TWVzc2FnZXNTdHIuc3BsaXQoJ1xcMCcpLmZpbHRlcihCb29sZWFuKS5tYXAodG9TaW5nbGVMaW5lKTtcblxuICBsZXQgbmV3Q2hhbmdlTG9nID0gYCMgQ0hBTkdFTE9HXFxuXFxuIyMgJHtuZXdWZXJzaW9ufVxcblxcbmA7XG5cbiAgZm9yIChjb25zdCBtZXNzYWdlIG9mIGNvbW1pdE1lc3NhZ2VzKSB7XG4gICAgbmV3Q2hhbmdlTG9nICs9IGAtICR7bWVzc2FnZX1cXG5gO1xuICB9XG5cbiAgaWYgKHByZXZpb3VzQ2hhbmdlbG9nTGluZXMubGVuZ3RoID4gMCkge1xuICAgIG5ld0NoYW5nZUxvZyArPSAnXFxuJztcbiAgICBmb3IgKGNvbnN0IGxpbmUgb2YgcHJldmlvdXNDaGFuZ2Vsb2dMaW5lcykge1xuICAgICAgbmV3Q2hhbmdlTG9nICs9IGAke2xpbmV9XFxuYDtcbiAgICB9XG4gIH1cblxuICBhd2FpdCB3cml0ZUZpbGUoY2hhbmdlbG9nUGF0aCwgbmV3Q2hhbmdlTG9nLCAndXRmLTgnKTtcblxuICBhd2FpdCBjcmVhdGVJbnRlcmZhY2UocHJvY2Vzcy5zdGRpbiwgcHJvY2Vzcy5zdGRvdXQpLnF1ZXN0aW9uKGBQbGVhc2UgdXBkYXRlIHRoZSAke09ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkNoYW5nZWxvZ01kfSBmaWxlLiBQcmVzcyBFbnRlciB3aGVuIHlvdSBhcmUgZG9uZS4uLmApO1xufVxuXG4vKipcbiAqIFVwZGF0ZXMgdGhlIHZlcnNpb24gb2YgdGhlIHByb2plY3QgYmFzZWQgb24gdGhlIHNwZWNpZmllZCB1cGRhdGUgdHlwZS5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIHBlcmZvcm1zIGEgc2VyaWVzIG9mIHRhc2tzIHRvIGhhbmRsZSB2ZXJzaW9uIHVwZGF0ZXM6XG4gKiAxLiBWYWxpZGF0ZXMgdGhlIHZlcnNpb24gdXBkYXRlIHR5cGUuXG4gKiAyLiBDaGVja3MgaWYgR2l0IGFuZCBHaXRIdWIgQ0xJIGFyZSBpbnN0YWxsZWQuXG4gKiAzLiBWZXJpZmllcyB0aGF0IHRoZSBHaXQgcmVwb3NpdG9yeSBpcyBjbGVhbi5cbiAqIDQuIFJ1bnMgc3BlbGxjaGVjayBhbmQgbGludGluZy5cbiAqIDUuIEJ1aWxkcyB0aGUgcHJvamVjdC5cbiAqIDYuIFVwZGF0ZXMgdmVyc2lvbiBpbiBmaWxlcyBhbmQgY2hhbmdlbG9nLlxuICogNy4gQWRkcyB1cGRhdGVkIGZpbGVzIHRvIEdpdCwgdGFncyB0aGUgY29tbWl0LCBhbmQgcHVzaGVzIHRvIHRoZSByZXBvc2l0b3J5LlxuICogOC4gSWYgYW4gT2JzaWRpYW4gcGx1Z2luLCBjb3BpZXMgdGhlIHVwZGF0ZWQgbWFuaWZlc3QgYW5kIHB1Ymxpc2hlcyBhIEdpdEh1YiByZWxlYXNlLlxuICpcbiAqIEBwYXJhbSB2ZXJzaW9uVXBkYXRlVHlwZSAtIFRoZSB0eXBlIG9mIHZlcnNpb24gdXBkYXRlIHRvIHBlcmZvcm0gKG1ham9yLCBtaW5vciwgcGF0Y2gsIGJldGEsIG9yIHgueS56Wy1iZXRhOnVdKS5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHZlcnNpb24gdXBkYXRlIGlzIGNvbXBsZXRlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdXBkYXRlVmVyc2lvbih2ZXJzaW9uVXBkYXRlVHlwZT86IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoIXZlcnNpb25VcGRhdGVUeXBlKSB7XG4gICAgY29uc3QgbnBtT2xkVmVyc2lvbiA9IHByb2Nlc3MuZW52WyducG1fb2xkX3ZlcnNpb24nXTtcbiAgICBjb25zdCBucG1OZXdWZXJzaW9uID0gcHJvY2Vzcy5lbnZbJ25wbV9uZXdfdmVyc2lvbiddO1xuXG4gICAgaWYgKG5wbU9sZFZlcnNpb24gJiYgbnBtTmV3VmVyc2lvbikge1xuICAgICAgYXdhaXQgdXBkYXRlVmVyc2lvbkluRmlsZXMobnBtT2xkVmVyc2lvbiwgZmFsc2UpO1xuICAgICAgYXdhaXQgdXBkYXRlVmVyc2lvbihucG1OZXdWZXJzaW9uKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHZlcnNpb24gdXBkYXRlIHR5cGUgcHJvdmlkZWQnKTtcbiAgfVxuXG4gIGNvbnN0IGlzT2JzaWRpYW5QbHVnaW4gPSBleGlzdHNTeW5jKHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1hbmlmZXN0SnNvbikpO1xuICB2YWxpZGF0ZSh2ZXJzaW9uVXBkYXRlVHlwZSk7XG4gIGF3YWl0IGNoZWNrR2l0SW5zdGFsbGVkKCk7XG4gIGF3YWl0IGNoZWNrR2l0UmVwb0NsZWFuKCk7XG4gIGF3YWl0IGNoZWNrR2l0SHViQ2xpSW5zdGFsbGVkKCk7XG4gIGF3YWl0IGV4ZWNGcm9tUm9vdCgnbnBtIHJ1biBzcGVsbGNoZWNrJyk7XG4gIGF3YWl0IGV4ZWNGcm9tUm9vdCgnbnBtIHJ1biBidWlsZCcpO1xuICBhd2FpdCBleGVjRnJvbVJvb3QoJ25wbSBydW4gbGludCcpO1xuXG4gIGNvbnN0IG5ld1ZlcnNpb24gPSBhd2FpdCBnZXROZXdWZXJzaW9uKHZlcnNpb25VcGRhdGVUeXBlKTtcbiAgYXdhaXQgdXBkYXRlVmVyc2lvbkluRmlsZXMobmV3VmVyc2lvbiwgaXNPYnNpZGlhblBsdWdpbik7XG5cbiAgaWYgKGdldFZlcnNpb25VcGRhdGVUeXBlKHZlcnNpb25VcGRhdGVUeXBlKSAhPT0gVmVyc2lvblVwZGF0ZVR5cGUuQmV0YSkge1xuICAgIGF3YWl0IHVwZGF0ZUNoYW5nZWxvZyhuZXdWZXJzaW9uKTtcbiAgfVxuXG4gIGF3YWl0IGFkZFVwZGF0ZWRGaWxlc1RvR2l0KG5ld1ZlcnNpb24pO1xuICBhd2FpdCBhZGRHaXRUYWcobmV3VmVyc2lvbik7XG4gIGF3YWl0IGdpdFB1c2goKTtcbiAgaWYgKGlzT2JzaWRpYW5QbHVnaW4pIHtcbiAgICBhd2FpdCBjb3B5VXBkYXRlZE1hbmlmZXN0KCk7XG4gIH1cbiAgYXdhaXQgcHVibGlzaEdpdEh1YlJlbGVhc2UobmV3VmVyc2lvbiwgaXNPYnNpZGlhblBsdWdpbik7XG59XG5cbi8qKlxuICogVXBkYXRlcyB0aGUgdmVyc2lvbiBpbiB2YXJpb3VzIGZpbGVzLCBpbmNsdWRpbmcgYHBhY2thZ2UuanNvbmAsIGBwYWNrYWdlLWxvY2suanNvbmAsXG4gKiBhbmQgT2JzaWRpYW4gcGx1Z2luIG1hbmlmZXN0cyBpZiBhcHBsaWNhYmxlLlxuICpcbiAqIEBwYXJhbSBuZXdWZXJzaW9uIC0gVGhlIG5ldyB2ZXJzaW9uIHN0cmluZyB0byB1cGRhdGUgaW4gdGhlIGZpbGVzLlxuICogQHBhcmFtIGlzT2JzaWRpYW5QbHVnaW4gLSBXaGV0aGVyIHRoZSBwcm9qZWN0IGlzIGFuIE9ic2lkaWFuIHBsdWdpbi5cbiAqIEByZXR1cm5zIEEgYFByb21pc2VgIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgdXBkYXRlIGlzIGNvbXBsZXRlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdXBkYXRlVmVyc2lvbkluRmlsZXMobmV3VmVyc2lvbjogc3RyaW5nLCBpc09ic2lkaWFuUGx1Z2luOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IGVkaXRQYWNrYWdlSnNvbigocGFja2FnZUpzb24pID0+IHtcbiAgICBwYWNrYWdlSnNvbi52ZXJzaW9uID0gbmV3VmVyc2lvbjtcbiAgfSk7XG5cbiAgYXdhaXQgZWRpdFBhY2thZ2VMb2NrSnNvbigocGFja2FnZUxvY2tKc29uKSA9PiB7XG4gICAgcGFja2FnZUxvY2tKc29uLnZlcnNpb24gPSBuZXdWZXJzaW9uO1xuICAgIGNvbnN0IGRlZmF1bHRQYWNrYWdlID0gcGFja2FnZUxvY2tKc29uLnBhY2thZ2VzPy5bJyddO1xuICAgIGlmIChkZWZhdWx0UGFja2FnZSkge1xuICAgICAgZGVmYXVsdFBhY2thZ2UudmVyc2lvbiA9IG5ld1ZlcnNpb247XG4gICAgfVxuICB9LCB7IHNob3VsZFNraXBJZk1pc3Npbmc6IHRydWUgfSk7XG5cbiAgaWYgKGlzT2JzaWRpYW5QbHVnaW4pIHtcbiAgICBjb25zdCBsYXRlc3RPYnNpZGlhblZlcnNpb24gPSBhd2FpdCBnZXRMYXRlc3RPYnNpZGlhblZlcnNpb24oKTtcblxuICAgIGF3YWl0IGVkaXRKc29uPE1hbmlmZXN0PihPYnNpZGlhblBsdWdpblJlcG9QYXRocy5NYW5pZmVzdEpzb24sIChtYW5pZmVzdCkgPT4ge1xuICAgICAgbWFuaWZlc3QubWluQXBwVmVyc2lvbiA9IGxhdGVzdE9ic2lkaWFuVmVyc2lvbjtcbiAgICAgIG1hbmlmZXN0LnZlcnNpb24gPSBuZXdWZXJzaW9uO1xuICAgIH0pO1xuXG4gICAgYXdhaXQgZWRpdEpzb248UmVjb3JkPHN0cmluZywgc3RyaW5nPj4oT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuVmVyc2lvbnNKc29uLCAodmVyc2lvbnMpID0+IHtcbiAgICAgIHZlcnNpb25zW25ld1ZlcnNpb25dID0gbGF0ZXN0T2JzaWRpYW5WZXJzaW9uO1xuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIHRoZSB2ZXJzaW9uIHVwZGF0ZSB0eXBlIHRvIGVuc3VyZSBpdCBpcyBlaXRoZXIgYSByZWNvZ25pemVkIHR5cGVcbiAqIG9yIGEgdmFsaWQgbWFudWFsIHZlcnNpb24gc3RyaW5nLlxuICpcbiAqIEBwYXJhbSB2ZXJzaW9uVXBkYXRlVHlwZSAtIFRoZSB2ZXJzaW9uIHVwZGF0ZSB0eXBlIHRvIHZhbGlkYXRlLlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgdmVyc2lvbiB1cGRhdGUgdHlwZSBpcyBpbnZhbGlkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGUodmVyc2lvblVwZGF0ZVR5cGU6IHN0cmluZyk6IHZvaWQge1xuICBpZiAoZ2V0VmVyc2lvblVwZGF0ZVR5cGUodmVyc2lvblVwZGF0ZVR5cGUpID09PSBWZXJzaW9uVXBkYXRlVHlwZS5JbnZhbGlkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHZlcnNpb24gdXBkYXRlIHR5cGUuIFBsZWFzZSB1c2UgXFwnbWFqb3JcXCcsIFxcJ21pbm9yXFwnLCBcXCdwYXRjaFxcJywgb3IgXFwneC55LnpbLXN1ZmZpeF1cXCcgZm9ybWF0LicpO1xuICB9XG59XG5cbi8qKlxuICogRmV0Y2hlcyB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgT2JzaWRpYW4gZnJvbSB0aGUgR2l0SHViIHJlbGVhc2VzIEFQSS5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgT2JzaWRpYW4uXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldExhdGVzdE9ic2lkaWFuVmVyc2lvbigpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKCdodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL29ic2lkaWFubWQvb2JzaWRpYW4tcmVsZWFzZXMvcmVsZWFzZXMvbGF0ZXN0Jyk7XG4gIGNvbnN0IG9ic2lkaWFuUmVsZWFzZXNKc29uID0gYXdhaXQgcmVzcG9uc2UuanNvbigpIGFzIFBhcnRpYWw8T2JzaWRpYW5SZWxlYXNlc0pzb24+O1xuICByZXR1cm4gb2JzaWRpYW5SZWxlYXNlc0pzb24ubmFtZSA/PyB0aHJvd0V4cHJlc3Npb24obmV3IEVycm9yKCdDb3VsZCBub3QgZmluZCB0aGUgbmFtZSBvZiB0aGUgbGF0ZXN0IE9ic2lkaWFuIHJlbGVhc2UnKSk7XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiByZXNvbHZlUGF0aEZyb21Sb290KHBhdGgpID8/IHBhdGg7XG59XG5cbmZ1bmN0aW9uIHRvU2luZ2xlTGluZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGxpbmVzID0gc3RyLnNwbGl0KC9cXHI/XFxuLykuZmlsdGVyKEJvb2xlYW4pO1xuICByZXR1cm4gbGluZXMuam9pbignICcpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFtQkEscUJBQW1CO0FBRW5CLG1CQUFnQztBQUNoQyxxQ0FBd0M7QUFDeEMsa0JBQXFCO0FBQ3JCLG9CQUEyQjtBQUMzQixnQkFBNkI7QUFDN0Isa0JBQXlCO0FBQ3pCLHlCQU1PO0FBQ1AsaUJBSU87QUFDUCx1Q0FBMEM7QUFDMUMsa0JBR087QUEzQ1AsSUFBSSxZQUFZLFdBQVcsU0FBUyxLQUFLO0FBQUEsRUFDdkMsV0FBVztBQUFBLEVBQ1gsT0FBTyxNQUFJO0FBQUEsRUFDWCxPQUFPLENBQUM7QUFBQSxFQUNSLFlBQVk7QUFDZDtBQTJDTyxJQUFLLG9CQUFMLGtCQUFLQSx1QkFBTDtBQUNMLEVBQUFBLG1CQUFBLFVBQU87QUFDUCxFQUFBQSxtQkFBQSxhQUFVO0FBQ1YsRUFBQUEsbUJBQUEsV0FBUTtBQUNSLEVBQUFBLG1CQUFBLFlBQVM7QUFDVCxFQUFBQSxtQkFBQSxXQUFRO0FBQ1IsRUFBQUEsbUJBQUEsV0FBUTtBQU5FLFNBQUFBO0FBQUEsR0FBQTtBQXdDWixlQUFzQixVQUFVLFlBQW1DO0FBQ2pFLFlBQU0sMEJBQWEsY0FBYyxV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LElBQ3pCLENBQUM7QUFBQSxFQUNIO0FBQ0Y7QUFTTyxTQUFTLFNBQVMsbUJBQWlDO0FBQ3hELE1BQUkscUJBQXFCLGlCQUFpQixNQUFNLHlCQUEyQjtBQUN6RSxVQUFNLElBQUksTUFBTSxnR0FBd0c7QUFBQSxFQUMxSDtBQUNGO0FBT0EsZUFBZSwyQkFBNEM7QUFDekQsUUFBTSxXQUFXLE1BQU0sTUFBTSwyRUFBMkU7QUFDeEcsUUFBTSx1QkFBdUIsTUFBTSxTQUFTLEtBQUs7QUFDakQsU0FBTyxxQkFBcUIsWUFBUSw4QkFBZ0IsSUFBSSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3pIO0FBRUEsU0FBUyx3QkFBd0IsTUFBc0I7QUFDckQsYUFBTyxpQ0FBb0IsSUFBSSxLQUFLO0FBQ3RDO0FBRUEsU0FBUyxhQUFhLEtBQXFCO0FBQ3pDLFFBQU0sUUFBUSxJQUFJLE1BQU0sT0FBTyxFQUFFLE9BQU8sT0FBTztBQUMvQyxTQUFPLE1BQU0sS0FBSyxHQUFHO0FBQ3ZCOyIsCiAgIm5hbWVzIjogWyJWZXJzaW9uVXBkYXRlVHlwZSIsICJBZG1aaXAiXQp9Cg==
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "obsidian-dev-utils",
|
3
|
-
"version": "13.
|
3
|
+
"version": "13.4.0",
|
4
4
|
"description": "This is the collection of useful functions that you can use for your Obsidian plugin development",
|
5
5
|
"main": "./dist/lib/index.cjs",
|
6
6
|
"types": "./dist/lib/index.d.ts",
|
@@ -72,7 +72,7 @@
|
|
72
72
|
"monkey-around": "^3.0.0",
|
73
73
|
"npm-run-all": "^4.1.5",
|
74
74
|
"obsidian": "^1.7.2",
|
75
|
-
"obsidian-typings": "^2.14.
|
75
|
+
"obsidian-typings": "^2.14.3",
|
76
76
|
"path-browserify": "^1.0.1",
|
77
77
|
"preact": "^10.25.4",
|
78
78
|
"remark": "^15.0.1",
|