@sumaris-net/ngx-components 2.3.6 → 2.3.7-rc1

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.
@@ -87,7 +87,7 @@ export function toDateISOString(value) {
87
87
  if (!date)
88
88
  return undefined;
89
89
  return DateUtils.isNoTime(date)
90
- ? date.toISOString(true /* important ! */).substr(0, 10)
90
+ ? date.toISOString(true /* important ! */).substring(0, 10)
91
91
  : date.toISOString();
92
92
  }
93
93
  export function fromDateISOString(value) {
@@ -137,4 +137,4 @@ export function toDuration(value, unit) {
137
137
  }
138
138
  return duration;
139
139
  }
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9kYXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVksUUFBUSxFQUFzQixNQUFNLFFBQVEsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdELE9BQU8sS0FBSyxjQUFjLE1BQU0sUUFBUSxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxnQkFBZ0IsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBRXpDLCtFQUErRTtBQUMvRSxNQUFNLE1BQU0sR0FBRyxjQUFjLENBQXdCLGNBQWMsQ0FBQyxDQUFDO0FBQ3JFLE1BQU0sUUFBUSxHQUFHLGNBQWMsQ0FBMEIsZ0JBQWdCLENBQUMsQ0FBQztBQUUzRSxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxHQUFHLENBQUM7QUFDdkMsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsR0FBRyxDQUFDO0FBQzFDLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLFlBQVksQ0FBQztBQUVwRCxNQUFNLE9BQU8sU0FBUztJQVNwQixNQUFNLENBQUMsR0FBRyxDQUFDLEtBQWEsRUFBRSxLQUFhO1FBQ3JDLE9BQU8sS0FBSyxJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUMxRSxDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFhLEVBQUUsS0FBYTtRQUNyQyxPQUFPLEtBQUssSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FB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QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHVyYXRpb24sIGlzTW9tZW50LCBNb21lbnQsIHVuaXRPZlRpbWUgfSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgREFURV9JU09fUEFUVEVSTiwgREFURV9QQVRURVJOIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0ICogYXMgbW9tZW50SW1wb3J0ZWQgZnJvbSAnbW9tZW50JztcbmltcG9ydCAqIGFzIG1vbWVudFRaSW1wb3J0ZWQgZnJvbSAnbW9tZW50LXRpbWV6b25lJztcbmltcG9ydCB7dW53cmFwRVNNb2R1bGV9IGZyb20gJy4vbW9kdWxlcyc7XG5cbi8vIC8vIFdvcmthcm91bmQgZm9yIGlzc3VlIGh0dHBzOi8vZ2l0aHViLmNvbS9uZy1wYWNrYWdyL25nLXBhY2thZ3IvaXNzdWVzLzIyMTVcbmNvbnN0IG1vbWVudCA9IHVud3JhcEVTTW9kdWxlPHR5cGVvZiBtb21lbnRJbXBvcnRlZD4obW9tZW50SW1wb3J0ZWQpO1xuY29uc3QgbW9tZW50VFogPSB1bndyYXBFU01vZHVsZTx0eXBlb2YgbW9tZW50VFpJbXBvcnRlZD4obW9tZW50VFpJbXBvcnRlZCk7XG5cbmV4cG9ydCBjb25zdCBEQVRFX1VOSVhfVElNRVNUQU1QID0gJ1gnO1xuZXhwb3J0IGNvbnN0IERBVEVfVU5JWF9NU19USU1FU1RBTVAgPSAneCc7XG5leHBvcnQgY29uc3QgTU9NRU5UX05PX1RJTUVfUFJPUEVSVFkgPSAnX2hhc05vVGltZSc7XG5cbmV4cG9ydCBjbGFzcyBEYXRlVXRpbHMge1xuXG4gIHN0YXRpYyBtb21lbnQgPSBtb21lbnQ7XG4gIHN0YXRpYyBtb21lbnRUWiA9IG1vbWVudFRaO1xuXG4gIHN0YXRpYyB0b0RhdGVJU09TdHJpbmcgPSB0b0RhdGVJU09TdHJpbmc7XG4gIHN0YXRpYyBmcm9tRGF0ZUlTT1N0cmluZyA9IGZyb21EYXRlSVNPU3RyaW5nO1xuICBzdGF0aWMgdG9EdXJhdGlvbiA9IHRvRHVyYXRpb247XG5cbiAgc3RhdGljIG1pbihkYXRlMTogTW9tZW50LCBkYXRlMjogTW9tZW50KTogTW9tZW50IHtcbiAgICByZXR1cm4gZGF0ZTEgJiYgKCFkYXRlMiB8fCBkYXRlMS5pc1NhbWVPckJlZm9yZShkYXRlMikpID8gZGF0ZTEgOiBkYXRlMjtcbiAgfVxuXG4gIHN0YXRpYyBtYXgoZGF0ZTE6IE1vbWVudCwgZGF0ZTI6IE1vbWVudCk6IE1vbWVudCB7XG4gICAgcmV0dXJuIGRhdGUxICYmICghZGF0ZTIgfHwgZGF0ZTEuaXNTYW1lT3JBZnRlcihkYXRlMikpID8gZGF0ZTEgOiBkYXRlMjtcbiAgfVxuXG4gIHN0YXRpYyBlcXVhbHMoZGF0ZTE6IE1vbWVudCB8IHN0cmluZywgZGF0ZTI6IE1vbWVudCB8IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBEYXRlVXRpbHMuaXNTYW1lKGRhdGUxLCBkYXRlMik7XG4gIH1cblxuICBzdGF0aWMgaXNTYW1lKGRhdGUxOiBNb21lbnQgfCBzdHJpbmcsIGRhdGUyOiBNb21lbnQgfCBzdHJpbmcsIGdyYW51bGFyaXR5PzogdW5pdE9mVGltZS5TdGFydE9mKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZDEgPSBmcm9tRGF0ZUlTT1N0cmluZyhkYXRlMSk7XG4gICAgY29uc3QgZDIgPSBmcm9tRGF0ZUlTT1N0cmluZyhkYXRlMik7XG4gICAgcmV0dXJuICghZDEgJiYgIWQyKSB8fCAoZDEgJiYgZDEuaXNTYW1lKGQyLCBncmFudWxhcml0eSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGNvcHkgb2YgYSBkYXRlLCB3aXRob3V0IHRpbWUgZmllbGRzIChhbHdheXMgcmV0dXJuIGEgbmV3IE1vbWVudCBvYmplY3QsIG9yIHVuZGVmaW5lZCkuXG4gICAqIFNhbWUgaW1wbGVtZW50YXRpb24gYXMgdGhlIEphdmEgY2xhc3MgRGF0ZXMucmVzZXRUaW1lKCkgKHNlZSBhbnkgU1VNQVJpUyBsaWtlIFBvZClcbiAgICogQHBhcmFtIHZhbHVlXG4gICAqIEBwYXJhbSB0aW1lem9uZSBhIHRpbWV6b25lIChzZWUgaHR0cHM6Ly9tb21lbnRqcy5jb20vdGltZXpvbmUvKVxuICAgKiBAcGFyYW0ga2VlcExvY2FsVGltZSBpZiB0cnVlLCBvbmx5IHRoZSB0aW1lem9uZSAoYW5kIG9mZnNldCkgaXMgdXBkYXRlZCwga2VlcGluZyB0aGUgbG9jYWwgdGltZSBzYW1lLiBDb25zZXF1ZW50bHksIGl0IHdpbGwgbm93IHBvaW50IHRvIGEgZGlmZmVyZW50IHBvaW50IGluIHRpbWUgaWYgdGhlIG9mZnNldCBoYXMgY2hhbmdlZC5cbiAgICovXG4gIHN0YXRpYyByZXNldFRpbWUodmFsdWU6IE1vbWVudHxzdHJpbmcsIHRpbWV6b25lPzogc3RyaW5nLCBrZWVwTG9jYWxUaW1lPzogYm9vbGVhbik6IE1vbWVudCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjb25zdCBkYXRlID0gZnJvbURhdGVJU09TdHJpbmcodmFsdWUpO1xuICAgIC8vIE5vIHRpbWV6b25lXG4gICAgaWYgKCF0aW1lem9uZSkge1xuICAgICAgcmV0dXJuIGRhdGUuY2xvbmUoKS5zdGFydE9mKCdkYXknKTtcbiAgICB9XG4gICAgLy8gVXNlIHRpbWV6b25lXG4gICAgcmV0dXJuIGRhdGUuY2xvbmUoKSAvLyBjbG9uZSB0aGUgb3JpZ2luYWwgZGF0ZVxuICAgICAgLnR6KHRpbWV6b25lLCBrZWVwTG9jYWxUaW1lKVxuICAgICAgLnN0YXJ0T2YoJ2RheScpO1xuICB9XG5cbiAgc3RhdGljIG1hcmtOb1RpbWUodmFsdWU6IE1vbWVudCk6IE1vbWVudCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB2YWx1ZVtNT01FTlRfTk9fVElNRV9QUk9QRVJUWV0gPSB0cnVlO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHN0YXRpYyBpc05vVGltZSh2YWx1ZTogTW9tZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHZhbHVlPy5bTU9NRU5UX05PX1RJTUVfUFJPUEVSVFldID09PSB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRlc3QgaWYgYSBkYXRlIGlzIG9uIHRoZSBnaXZlbiBkYXkgb2Ygd2Vla1xuICAgKiBAcGFyYW0gZGF0ZVxuICAgKiBAcGFyYW0gd2Vla2RheVxuICAgKiBAcGFyYW0gdGltZXpvbmVcbiAgICovXG4gIHN0YXRpYyBpc0F0RGF5KGRhdGU6IHN0cmluZ3xNb21lbnQsIHdlZWtkYXk6IG51bWJlciwgdGltZXpvbmU/OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBsZXQgbW9tZW50RGF0ZSA9IGRhdGUgJiYgZnJvbURhdGVJU09TdHJpbmcoZGF0ZSk7XG4gICAgaWYgKCFtb21lbnREYXRlKSByZXR1cm4gbnVsbDtcbiAgICBpZiAodGltZXpvbmUpIG1vbWVudERhdGUgPSBtb21lbnREYXRlLmNsb25lKCkudHoodGltZXpvbmUpLnN0YXJ0T2YoJ2RheScpO1xuICAgIHJldHVybiBtb21lbnREYXRlLmRheSgpID09PSB3ZWVrZGF5O1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b0RhdGVJU09TdHJpbmcodmFsdWU6IGFueSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICghdmFsdWUpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgLy8gQWxyZWFkeSBhIHZhbGlkIElTTyBkYXRlIHRpbWUgc3RyaW5nICh3aXRob3V0IHRpbWV6b25lKTogdXNlIGl0XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnXG4gICAgJiYgdmFsdWUuaW5kZXhPZignKycpID09PSAtMVxuICAgICYmIHZhbHVlLmxhc3RJbmRleE9mKCdaJykgPT09IHZhbHVlLmxlbmd0aCAtIDEpIHtcblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICAvLyBNYWtlIHN1cmUgdG8gaGF2ZSBhIE1vbWVudCBvYmplY3RcbiAgY29uc3QgZGF0ZSA9IGZyb21EYXRlSVNPU3RyaW5nKHZhbHVlKTtcbiAgaWYgKCFkYXRlKSByZXR1cm4gdW5kZWZpbmVkO1xuICByZXR1cm4gRGF0ZVV0aWxzLmlzTm9UaW1lKGRhdGUpXG4gICAgPyBkYXRlLnRvSVNPU3RyaW5nKHRydWUgLyogaW1wb3J0YW50ICEgKi8pLnN1YnN0cigwLCAxMClcbiAgICA6IGRhdGUudG9JU09TdHJpbmcoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21EYXRlSVNPU3RyaW5nKHZhbHVlOiBhbnkpOiBNb21lbnQgfCB1bmRlZmluZWQge1xuICAvLyBBbHJlYWR5IGEgbW9tZW50IG9iamVjdDogdXNlIGl0XG4gIGlmICghdmFsdWUgfHwgaXNNb21lbnQodmFsdWUpKSByZXR1cm4gdmFsdWU7XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUubGVuZ3RoID09PSAxMCkge1xuICAgIC8vIFBhcnNlIHRoZSBpbnB1dCB2YWx1ZSwgYXMgYSBkYXRlIG9ubHlcbiAgICBjb25zdCBkYXRlT25seTogTW9tZW50ID0gRGF0ZVV0aWxzLm1vbWVudCh2YWx1ZSwgREFURV9QQVRURVJOKTtcbiAgICBpZiAoZGF0ZU9ubHkuaXNWYWxpZCgpKSByZXR1cm4gRGF0ZVV0aWxzLm1hcmtOb1RpbWUoZGF0ZU9ubHkpO1xuICB9XG5cbiAgLy8gUGFyc2UgdGhlIGlucHV0IHZhbHVlLCBhcyBhIElTTyBkYXRlIHRpbWVcbiAgY29uc3QgZGF0ZTogTW9tZW50ID0gRGF0ZVV0aWxzLm1vbWVudCh2YWx1ZSwgREFURV9JU09fUEFUVEVSTik7XG4gIGlmIChkYXRlLmlzVmFsaWQoKSkgcmV0dXJuIGRhdGU7XG5cbiAgLy8gTm90IHZhbGlkOiB0cnlpbmcgdG8gY29udmVydCBmcm9tIHVuaXggdGltZXN0YW1wXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgY29uc29sZS53YXJuKCdXcm9uZyBkYXRlIGZvcm1hdCAtIFRyeWluZyB0byBjb252ZXJ0IGZyb20gbG9jYWwgdGltZTogJyArIHZhbHVlKTtcbiAgICBpZiAodmFsdWUubGVuZ3RoID09PSAxMCkge1xuICAgICAgcmV0dXJuIERhdGVVdGlscy5tb21lbnQodmFsdWUsIERBVEVfVU5JWF9USU1FU1RBTVApO1xuICAgIH1cbiAgICBlbHNlIGlmICh2YWx1ZS5sZW5ndGggPT09IDEzKSB7XG4gICAgICByZXR1cm4gRGF0ZVV0aWxzLm1vbWVudCh2YWx1ZSwgREFURV9VTklYX01TX1RJTUVTVEFNUCk7XG4gICAgfVxuICB9XG5cbiAgY29uc29sZS53YXJuKCdVbmFibGUgdG8gcGFyc2UgZGF0ZTogJyArIHZhbHVlKTtcbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21Vbml4VGltZXN0YW1wKHRpbWVJblNlYzogbnVtYmVyKSB7XG4gIHJldHVybiBEYXRlVXRpbHMubW9tZW50KHRpbWVJblNlYywgREFURV9VTklYX1RJTUVTVEFNUCk7XG59XG5leHBvcnQgZnVuY3Rpb24gZnJvbVVuaXhNc1RpbWVzdGFtcCh0aW1lSW5NczogbnVtYmVyKSB7XG4gIHJldHVybiBEYXRlVXRpbHMubW9tZW50KHRpbWVJbk1zLCBEQVRFX1VOSVhfTVNfVElNRVNUQU1QKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvRHVyYXRpb24odmFsdWU6IG51bWJlciwgdW5pdD86IG1vbWVudC51bml0T2ZUaW1lLkR1cmF0aW9uQ29uc3RydWN0b3IpOiBEdXJhdGlvbiB7XG4gIGlmICghdmFsdWUpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgY29uc3QgZHVyYXRpb24gPSBEYXRlVXRpbHMubW9tZW50LmR1cmF0aW9uKHZhbHVlLCB1bml0KTtcblxuICAvLyBmaXggOTkwKyBtc1xuICBpZiAoZHVyYXRpb24ubWlsbGlzZWNvbmRzKCkgPj0gOTkwKSB7XG4gICAgZHVyYXRpb24uYWRkKDEwMDAgLSBkdXJhdGlvbi5taWxsaXNlY29uZHMoKSwgJ21zJyk7XG4gIH1cbiAgLy8gZml4IDU5IHNcbiAgaWYgKGR1cmF0aW9uLnNlY29uZHMoKSA+PSA1OSkge1xuICAgIGR1cmF0aW9uLmFkZCg2MCAtIGR1cmF0aW9uLnNlY29uZHMoKSwgJ3MnKTtcbiAgfVxuXG4gIHJldHVybiBkdXJhdGlvbjtcbn1cbiJdfQ==
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9kYXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVksUUFBUSxFQUFzQixNQUFNLFFBQVEsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdELE9BQU8sS0FBSyxjQUFjLE1BQU0sUUFBUSxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxnQkFBZ0IsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBRXpDLCtFQUErRTtBQUMvRSxNQUFNLE1BQU0sR0FBRyxjQUFjLENBQXdCLGNBQWMsQ0FBQyxDQUFDO0FBQ3JFLE1BQU0sUUFBUSxHQUFHLGNBQWMsQ0FBMEIsZ0JBQWdCLENBQUMsQ0FBQztBQUUzRSxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxHQUFHLENBQUM7QUFDdkMsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsR0FBRyxDQUFDO0FBQzFDLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLFlBQVksQ0FBQztBQUVwRCxNQUFNLE9BQU8sU0FBUztJQVNwQixNQUFNLENBQUMsR0FBRyxDQUFDLEtBQWEsRUFBRSxLQUFhO1FBQ3JDLE9BQU8sS0FBSyxJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUMxRSxDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFhLEVBQUUsS0FBYTtRQUNyQyxPQUFPLEtBQUssSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FB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QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHVyYXRpb24sIGlzTW9tZW50LCBNb21lbnQsIHVuaXRPZlRpbWUgfSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgREFURV9JU09fUEFUVEVSTiwgREFURV9QQVRURVJOIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0ICogYXMgbW9tZW50SW1wb3J0ZWQgZnJvbSAnbW9tZW50JztcbmltcG9ydCAqIGFzIG1vbWVudFRaSW1wb3J0ZWQgZnJvbSAnbW9tZW50LXRpbWV6b25lJztcbmltcG9ydCB7dW53cmFwRVNNb2R1bGV9IGZyb20gJy4vbW9kdWxlcyc7XG5cbi8vIC8vIFdvcmthcm91bmQgZm9yIGlzc3VlIGh0dHBzOi8vZ2l0aHViLmNvbS9uZy1wYWNrYWdyL25nLXBhY2thZ3IvaXNzdWVzLzIyMTVcbmNvbnN0IG1vbWVudCA9IHVud3JhcEVTTW9kdWxlPHR5cGVvZiBtb21lbnRJbXBvcnRlZD4obW9tZW50SW1wb3J0ZWQpO1xuY29uc3QgbW9tZW50VFogPSB1bndyYXBFU01vZHVsZTx0eXBlb2YgbW9tZW50VFpJbXBvcnRlZD4obW9tZW50VFpJbXBvcnRlZCk7XG5cbmV4cG9ydCBjb25zdCBEQVRFX1VOSVhfVElNRVNUQU1QID0gJ1gnO1xuZXhwb3J0IGNvbnN0IERBVEVfVU5JWF9NU19USU1FU1RBTVAgPSAneCc7XG5leHBvcnQgY29uc3QgTU9NRU5UX05PX1RJTUVfUFJPUEVSVFkgPSAnX2hhc05vVGltZSc7XG5cbmV4cG9ydCBjbGFzcyBEYXRlVXRpbHMge1xuXG4gIHN0YXRpYyBtb21lbnQgPSBtb21lbnQ7XG4gIHN0YXRpYyBtb21lbnRUWiA9IG1vbWVudFRaO1xuXG4gIHN0YXRpYyB0b0RhdGVJU09TdHJpbmcgPSB0b0RhdGVJU09TdHJpbmc7XG4gIHN0YXRpYyBmcm9tRGF0ZUlTT1N0cmluZyA9IGZyb21EYXRlSVNPU3RyaW5nO1xuICBzdGF0aWMgdG9EdXJhdGlvbiA9IHRvRHVyYXRpb247XG5cbiAgc3RhdGljIG1pbihkYXRlMTogTW9tZW50LCBkYXRlMjogTW9tZW50KTogTW9tZW50IHtcbiAgICByZXR1cm4gZGF0ZTEgJiYgKCFkYXRlMiB8fCBkYXRlMS5pc1NhbWVPckJlZm9yZShkYXRlMikpID8gZGF0ZTEgOiBkYXRlMjtcbiAgfVxuXG4gIHN0YXRpYyBtYXgoZGF0ZTE6IE1vbWVudCwgZGF0ZTI6IE1vbWVudCk6IE1vbWVudCB7XG4gICAgcmV0dXJuIGRhdGUxICYmICghZGF0ZTIgfHwgZGF0ZTEuaXNTYW1lT3JBZnRlcihkYXRlMikpID8gZGF0ZTEgOiBkYXRlMjtcbiAgfVxuXG4gIHN0YXRpYyBlcXVhbHMoZGF0ZTE6IE1vbWVudCB8IHN0cmluZywgZGF0ZTI6IE1vbWVudCB8IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBEYXRlVXRpbHMuaXNTYW1lKGRhdGUxLCBkYXRlMik7XG4gIH1cblxuICBzdGF0aWMgaXNTYW1lKGRhdGUxOiBNb21lbnQgfCBzdHJpbmcsIGRhdGUyOiBNb21lbnQgfCBzdHJpbmcsIGdyYW51bGFyaXR5PzogdW5pdE9mVGltZS5TdGFydE9mKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZDEgPSBmcm9tRGF0ZUlTT1N0cmluZyhkYXRlMSk7XG4gICAgY29uc3QgZDIgPSBmcm9tRGF0ZUlTT1N0cmluZyhkYXRlMik7XG4gICAgcmV0dXJuICghZDEgJiYgIWQyKSB8fCAoZDEgJiYgZDEuaXNTYW1lKGQyLCBncmFudWxhcml0eSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGNvcHkgb2YgYSBkYXRlLCB3aXRob3V0IHRpbWUgZmllbGRzIChhbHdheXMgcmV0dXJuIGEgbmV3IE1vbWVudCBvYmplY3QsIG9yIHVuZGVmaW5lZCkuXG4gICAqIFNhbWUgaW1wbGVtZW50YXRpb24gYXMgdGhlIEphdmEgY2xhc3MgRGF0ZXMucmVzZXRUaW1lKCkgKHNlZSBhbnkgU1VNQVJpUyBsaWtlIFBvZClcbiAgICogQHBhcmFtIHZhbHVlXG4gICAqIEBwYXJhbSB0aW1lem9uZSBhIHRpbWV6b25lIChzZWUgaHR0cHM6Ly9tb21lbnRqcy5jb20vdGltZXpvbmUvKVxuICAgKiBAcGFyYW0ga2VlcExvY2FsVGltZSBpZiB0cnVlLCBvbmx5IHRoZSB0aW1lem9uZSAoYW5kIG9mZnNldCkgaXMgdXBkYXRlZCwga2VlcGluZyB0aGUgbG9jYWwgdGltZSBzYW1lLiBDb25zZXF1ZW50bHksIGl0IHdpbGwgbm93IHBvaW50IHRvIGEgZGlmZmVyZW50IHBvaW50IGluIHRpbWUgaWYgdGhlIG9mZnNldCBoYXMgY2hhbmdlZC5cbiAgICovXG4gIHN0YXRpYyByZXNldFRpbWUodmFsdWU6IE1vbWVudHxzdHJpbmcsIHRpbWV6b25lPzogc3RyaW5nLCBrZWVwTG9jYWxUaW1lPzogYm9vbGVhbik6IE1vbWVudCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjb25zdCBkYXRlID0gZnJvbURhdGVJU09TdHJpbmcodmFsdWUpO1xuICAgIC8vIE5vIHRpbWV6b25lXG4gICAgaWYgKCF0aW1lem9uZSkge1xuICAgICAgcmV0dXJuIGRhdGUuY2xvbmUoKS5zdGFydE9mKCdkYXknKTtcbiAgICB9XG4gICAgLy8gVXNlIHRpbWV6b25lXG4gICAgcmV0dXJuIGRhdGUuY2xvbmUoKSAvLyBjbG9uZSB0aGUgb3JpZ2luYWwgZGF0ZVxuICAgICAgLnR6KHRpbWV6b25lLCBrZWVwTG9jYWxUaW1lKVxuICAgICAgLnN0YXJ0T2YoJ2RheScpO1xuICB9XG5cbiAgc3RhdGljIG1hcmtOb1RpbWUodmFsdWU6IE1vbWVudCk6IE1vbWVudCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB2YWx1ZVtNT01FTlRfTk9fVElNRV9QUk9QRVJUWV0gPSB0cnVlO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHN0YXRpYyBpc05vVGltZSh2YWx1ZTogTW9tZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHZhbHVlPy5bTU9NRU5UX05PX1RJTUVfUFJPUEVSVFldID09PSB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRlc3QgaWYgYSBkYXRlIGlzIG9uIHRoZSBnaXZlbiBkYXkgb2Ygd2Vla1xuICAgKiBAcGFyYW0gZGF0ZVxuICAgKiBAcGFyYW0gd2Vla2RheVxuICAgKiBAcGFyYW0gdGltZXpvbmVcbiAgICovXG4gIHN0YXRpYyBpc0F0RGF5KGRhdGU6IHN0cmluZ3xNb21lbnQsIHdlZWtkYXk6IG51bWJlciwgdGltZXpvbmU/OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBsZXQgbW9tZW50RGF0ZSA9IGRhdGUgJiYgZnJvbURhdGVJU09TdHJpbmcoZGF0ZSk7XG4gICAgaWYgKCFtb21lbnREYXRlKSByZXR1cm4gbnVsbDtcbiAgICBpZiAodGltZXpvbmUpIG1vbWVudERhdGUgPSBtb21lbnREYXRlLmNsb25lKCkudHoodGltZXpvbmUpLnN0YXJ0T2YoJ2RheScpO1xuICAgIHJldHVybiBtb21lbnREYXRlLmRheSgpID09PSB3ZWVrZGF5O1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b0RhdGVJU09TdHJpbmcodmFsdWU6IGFueSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICghdmFsdWUpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgLy8gQWxyZWFkeSBhIHZhbGlkIElTTyBkYXRlIHRpbWUgc3RyaW5nICh3aXRob3V0IHRpbWV6b25lKTogdXNlIGl0XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnXG4gICAgJiYgdmFsdWUuaW5kZXhPZignKycpID09PSAtMVxuICAgICYmIHZhbHVlLmxhc3RJbmRleE9mKCdaJykgPT09IHZhbHVlLmxlbmd0aCAtIDEpIHtcblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICAvLyBNYWtlIHN1cmUgdG8gaGF2ZSBhIE1vbWVudCBvYmplY3RcbiAgY29uc3QgZGF0ZSA9IGZyb21EYXRlSVNPU3RyaW5nKHZhbHVlKTtcbiAgaWYgKCFkYXRlKSByZXR1cm4gdW5kZWZpbmVkO1xuICByZXR1cm4gRGF0ZVV0aWxzLmlzTm9UaW1lKGRhdGUpXG4gICAgPyBkYXRlLnRvSVNPU3RyaW5nKHRydWUgLyogaW1wb3J0YW50ICEgKi8pLnN1YnN0cmluZygwLCAxMClcbiAgICA6IGRhdGUudG9JU09TdHJpbmcoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21EYXRlSVNPU3RyaW5nKHZhbHVlOiBhbnkpOiBNb21lbnQgfCB1bmRlZmluZWQge1xuICAvLyBBbHJlYWR5IGEgbW9tZW50IG9iamVjdDogdXNlIGl0XG4gIGlmICghdmFsdWUgfHwgaXNNb21lbnQodmFsdWUpKSByZXR1cm4gdmFsdWU7XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUubGVuZ3RoID09PSAxMCkge1xuICAgIC8vIFBhcnNlIHRoZSBpbnB1dCB2YWx1ZSwgYXMgYSBkYXRlIG9ubHlcbiAgICBjb25zdCBkYXRlT25seTogTW9tZW50ID0gRGF0ZVV0aWxzLm1vbWVudCh2YWx1ZSwgREFURV9QQVRURVJOKTtcbiAgICBpZiAoZGF0ZU9ubHkuaXNWYWxpZCgpKSByZXR1cm4gRGF0ZVV0aWxzLm1hcmtOb1RpbWUoZGF0ZU9ubHkpO1xuICB9XG5cbiAgLy8gUGFyc2UgdGhlIGlucHV0IHZhbHVlLCBhcyBhIElTTyBkYXRlIHRpbWVcbiAgY29uc3QgZGF0ZTogTW9tZW50ID0gRGF0ZVV0aWxzLm1vbWVudCh2YWx1ZSwgREFURV9JU09fUEFUVEVSTik7XG4gIGlmIChkYXRlLmlzVmFsaWQoKSkgcmV0dXJuIGRhdGU7XG5cbiAgLy8gTm90IHZhbGlkOiB0cnlpbmcgdG8gY29udmVydCBmcm9tIHVuaXggdGltZXN0YW1wXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgY29uc29sZS53YXJuKCdXcm9uZyBkYXRlIGZvcm1hdCAtIFRyeWluZyB0byBjb252ZXJ0IGZyb20gbG9jYWwgdGltZTogJyArIHZhbHVlKTtcbiAgICBpZiAodmFsdWUubGVuZ3RoID09PSAxMCkge1xuICAgICAgcmV0dXJuIERhdGVVdGlscy5tb21lbnQodmFsdWUsIERBVEVfVU5JWF9USU1FU1RBTVApO1xuICAgIH1cbiAgICBlbHNlIGlmICh2YWx1ZS5sZW5ndGggPT09IDEzKSB7XG4gICAgICByZXR1cm4gRGF0ZVV0aWxzLm1vbWVudCh2YWx1ZSwgREFURV9VTklYX01TX1RJTUVTVEFNUCk7XG4gICAgfVxuICB9XG5cbiAgY29uc29sZS53YXJuKCdVbmFibGUgdG8gcGFyc2UgZGF0ZTogJyArIHZhbHVlKTtcbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21Vbml4VGltZXN0YW1wKHRpbWVJblNlYzogbnVtYmVyKSB7XG4gIHJldHVybiBEYXRlVXRpbHMubW9tZW50KHRpbWVJblNlYywgREFURV9VTklYX1RJTUVTVEFNUCk7XG59XG5leHBvcnQgZnVuY3Rpb24gZnJvbVVuaXhNc1RpbWVzdGFtcCh0aW1lSW5NczogbnVtYmVyKSB7XG4gIHJldHVybiBEYXRlVXRpbHMubW9tZW50KHRpbWVJbk1zLCBEQVRFX1VOSVhfTVNfVElNRVNUQU1QKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvRHVyYXRpb24odmFsdWU6IG51bWJlciwgdW5pdD86IG1vbWVudC51bml0T2ZUaW1lLkR1cmF0aW9uQ29uc3RydWN0b3IpOiBEdXJhdGlvbiB7XG4gIGlmICghdmFsdWUpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgY29uc3QgZHVyYXRpb24gPSBEYXRlVXRpbHMubW9tZW50LmR1cmF0aW9uKHZhbHVlLCB1bml0KTtcblxuICAvLyBmaXggOTkwKyBtc1xuICBpZiAoZHVyYXRpb24ubWlsbGlzZWNvbmRzKCkgPj0gOTkwKSB7XG4gICAgZHVyYXRpb24uYWRkKDEwMDAgLSBkdXJhdGlvbi5taWxsaXNlY29uZHMoKSwgJ21zJyk7XG4gIH1cbiAgLy8gZml4IDU5IHNcbiAgaWYgKGR1cmF0aW9uLnNlY29uZHMoKSA+PSA1OSkge1xuICAgIGR1cmF0aW9uLmFkZCg2MCAtIGR1cmF0aW9uLnNlY29uZHMoKSwgJ3MnKTtcbiAgfVxuXG4gIHJldHVybiBkdXJhdGlvbjtcbn1cbiJdfQ==
@@ -129,8 +129,7 @@ export class MatDate {
129
129
  // DEBUG
130
130
  //console.debug("[mat-date] writeValue() with:", value);
131
131
  // Convert into date
132
- // Important: do a clone()
133
- let date = isMoment(value) ? value.clone() : fromDateISOString(value);
132
+ let date = isMoment(value) ? value : fromDateISOString(value);
134
133
  if (!date || !date.isValid()) {
135
134
  this.textControl.patchValue(null, { emitEvent: false });
136
135
  if (this.formControl.value) {
@@ -140,10 +139,12 @@ export class MatDate {
140
139
  }
141
140
  else {
142
141
  // Move to the expected TZ (keeping local hour - e.g. midnight)
143
- date = (this.timezone && date.tz(this.timezone) || date)
142
+ const day = (this.timezone && date.tz(this.timezone) || date)
143
+ // Important: clone, because startOf will update the existing date
144
+ .clone()
144
145
  // Reset hour
145
146
  .startOf('day');
146
- const dayStr = this.dateAdapter.format(date, this.datePattern);
147
+ const dayStr = this.dateAdapter.format(day, this.datePattern);
147
148
  if (this.textControl.value !== dayStr) {
148
149
  // Update day control
149
150
  this.textControl.patchValue(dayStr, { emitEvent: false });
@@ -384,4 +385,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
384
385
  type: ViewChild,
385
386
  args: ['matInput', { static: false }]
386
387
  }] } });
387
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwuZGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2RhdGV0aW1lL21hdGVyaWFsLmRhdGUudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9kYXRldGltZS9tYXRlcmlhbC5kYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsVUFBVSxFQUNWLEtBQUssRUFHTCxRQUFRLEVBR1IsU0FBUyxFQUVWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBMkMsaUJBQWlCLEVBQTBDLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRS9JLE9BQU8sRUFBQyxRQUFRLEVBQVMsTUFBTSxRQUFRLENBQUM7QUFDeEMsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFlLFdBQVcsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUN2RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBR2xDLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQzFFLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHekMs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Q0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVPLFlBQVk7UUFDbEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6QixDQUFDOztxR0FqWVUsT0FBTzt5RkFBUCxPQUFPLHFkQUxQO1FBQ1Qsc0JBQXNCO0tBQ3ZCLDROQ2hESCw0cUpBa0hBOzRGRC9EYSxPQUFPO2tCQVRuQixTQUFTOytCQUNFLGdCQUFnQixhQUdmO3dCQUNULHNCQUFzQjtxQkFDdkIsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU07OzBCQW1FNUMsUUFBUTs0Q0FuREYsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVPLFFBQVE7c0JBQXBCLEtBQUs7Z0JBU08sUUFBUTtzQkFBcEIsS0FBSztnQkFtQm1CLFVBQVU7c0JBQWxDLFNBQVM7dUJBQUMsWUFBWTtnQkFDaUIsU0FBUztzQkFBaEQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIGZvcndhcmRSZWYsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFByb3ZpZGVyLFxuICBRdWVyeUxpc3QsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NoaWxkcmVuXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUdyb3VwRGlyZWN0aXZlLCBOR19WQUxVRV9BQ0NFU1NPUiwgVW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge2lzTW9tZW50LCBNb21lbnR9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQge0RFRkFVTFRfUExBQ0VIT0xERVJfQ0hBUn0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7U2hhcmVkVmFsaWRhdG9yc30gZnJvbSAnLi4vLi4vdmFsaWRhdG9yL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHtpc0JsYW5rU3RyaW5nLCBpc05pbCwgaXNOb3ROaWwsIGlzTm90TmlsQm9vbGVhbiwgaXNOb3ROaWxPckJsYW5rfSBmcm9tICcuLi8uLi9mdW5jdGlvbnMnO1xuaW1wb3J0IHtmaWx0ZXJ9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7SW5wdXRFbGVtZW50LCBzZXRUYWJJbmRleH0gZnJvbSAnLi4vLi4vaW5wdXRzJztcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7RmxvYXRMYWJlbFR5cGUsIE1hdEZvcm1GaWVsZEFwcGVhcmFuY2V9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHtEYXRlRmlsdGVyRm4sIE1hdERhdGVwaWNrZXIsIE1hdERhdGVwaWNrZXJJbnB1dEV2ZW50fSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcbmltcG9ydCB7aXNGb2N1c2FibGVFbGVtZW50fSBmcm9tICcuLi8uLi9mb2N1c2FibGUnO1xuaW1wb3J0IHtEYXRlVXRpbHMsIGZyb21EYXRlSVNPU3RyaW5nLCB0b0RhdGVJU09TdHJpbmd9IGZyb20gJy4uLy4uL2RhdGVzJztcbmltcG9ydCB7aXNNb2JpbGV9IGZyb20gJy4uLy4uL3BsYXRmb3Jtcyc7XG5pbXBvcnQge01vbWVudERhdGVBZGFwdGVyfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC1tb21lbnQtYWRhcHRlcic7XG5cbmNvbnN0IERFRkFVTFRfVkFMVUVfQUNDRVNTT1I6IFByb3ZpZGVyID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTWF0RGF0ZSksXG4gIG11bHRpOiB0cnVlXG59O1xuXG5jb25zdCBURVhUX01BU0sgPSBbL1xcZC8sIC9cXGQvLCAnLycsIC9cXGQvLCAvXFxkLywgJy8nLCAvXFxkLywgL1xcZC8sIC9cXGQvLCAvXFxkL107XG5cbmNvbnN0IG5vb3AgPSAoKSA9PiB7fTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWF0LWRhdGUtZmllbGQnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWF0ZXJpYWwuZGF0ZS5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWF0ZXJpYWwuZGF0ZS5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIERFRkFVTFRfVkFMVUVfQUNDRVNTT1IsXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE1hdERhdGUgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIElucHV0RWxlbWVudCB7XG4gIHByaXZhdGUgX29uQ2hhbmdlQ2FsbGJhY2s6IChfOiBhbnkpID0+IHZvaWQgPSBub29wO1xuICBwcml2YXRlIF9vblRvdWNoZWRDYWxsYmFjazogKCkgPT4gdm9pZCA9IG5vb3A7XG4gIHByaXZhdGUgX3N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgcHJpdmF0ZSBfd3JpdGluZyA9IHRydWU7XG4gIHByaXZhdGUgX2Rpc2FibGluZyA9IGZhbHNlO1xuICBwcml2YXRlIF90YWJpbmRleDogbnVtYmVyO1xuICBwcml2YXRlIF9yZWFkb25seSA9IGZhbHNlO1xuXG4gIHRleHRDb250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gIGRhdGVQYXR0ZXJuOiBzdHJpbmc7XG4gIGxvY2FsZTogc3RyaW5nO1xuICByZWFkb25seSBtYXNrID0gVEVYVF9NQVNLO1xuXG4gIEBJbnB1dCgpIG1vYmlsZTogYm9vbGVhbjtcbiAgQElucHV0KCkgZm9ybUNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbDtcbiAgQElucHV0KCkgZm9ybUNvbnRyb2xOYW1lOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGZsb2F0TGFiZWw6IEZsb2F0TGFiZWxUeXBlID0gJ2F1dG8nO1xuICBASW5wdXQoKSBhcHBlYXJhbmNlOiBNYXRGb3JtRmllbGRBcHBlYXJhbmNlO1xuICBASW5wdXQoKSByZXF1aXJlZDogYm9vbGVhbjtcbiAgQElucHV0KCkgY29tcGFjdCA9IGZhbHNlO1xuICBASW5wdXQoKSBwbGFjZWhvbGRlckNoYXI6IHN0cmluZyA9IERFRkFVTFRfUExBQ0VIT0xERVJfQ0hBUjtcbiAgQElucHV0KCkgYXV0b2ZvY3VzID0gZmFsc2U7XG4gIEBJbnB1dCgpIHN0YXJ0RGF0ZTogTW9tZW50IHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIGNsZWFyYWJsZSA9IGZhbHNlO1xuICBASW5wdXQoKSB0aW1lem9uZTogc3RyaW5nID0gbnVsbDtcbiAgQElucHV0KCkgZGF0ZVBpY2tlckZpbHRlcjogRGF0ZUZpbHRlckZuPE1vbWVudD47XG5cbiAgQElucHV0KCkgc2V0IHJlYWRvbmx5KHZhbHVlOiBib29sZWFuKXtcbiAgICB0aGlzLl9yZWFkb25seSA9IHZhbHVlO1xuICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBnZXQgcmVhZG9ubHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRvbmx5O1xuICB9XG5cbiAgQElucHV0KCkgc2V0IHRhYmluZGV4KHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5fdGFiaW5kZXggIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLl90YWJpbmRleCA9IHZhbHVlO1xuICAgICAgaWYgKCF0aGlzLl93cml0aW5nKSB0aGlzLnVwZGF0ZVRhYkluZGV4KCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHRhYmluZGV4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3RhYmluZGV4O1xuICB9XG5cbiAgZ2V0IHZhbHVlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUNvbnRyb2wudmFsdWU7XG4gIH1cblxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUNvbnRyb2wuZGlzYWJsZWQ7XG4gIH1cblxuICBAVmlld0NoaWxkKCdkYXRlUGlja2VyJykgZGF0ZVBpY2tlciE6IE1hdERhdGVwaWNrZXI8TW9tZW50PjtcbiAgQFZpZXdDaGlsZCgnbWF0SW5wdXQnLCB7c3RhdGljOiBmYWxzZX0pIF9tYXRJbnB1dDogRWxlbWVudFJlZjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGRhdGVBZGFwdGVyOiBNb21lbnREYXRlQWRhcHRlcixcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBmb3JtR3JvdXBEaXI6IEZvcm1Hcm91cERpcmVjdGl2ZSxcbiAgKSB7XG4gICAgdGhpcy5sb2NhbGUgPSAodHJhbnNsYXRlLmN1cnJlbnRMYW5nIHx8IHRyYW5zbGF0ZS5kZWZhdWx0TGFuZykuc3Vic3RyaW5nKDAsIDIpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5mb3JtQ29udHJvbCA9IHRoaXMuZm9ybUNvbnRyb2wgfHwgdGhpcy5mb3JtQ29udHJvbE5hbWUgJiYgdGhpcy5mb3JtR3JvdXBEaXIgJiYgdGhpcy5mb3JtR3JvdXBEaXIuZm9ybS5nZXQodGhpcy5mb3JtQ29udHJvbE5hbWUpIGFzIFVudHlwZWRGb3JtQ29udHJvbDtcbiAgICBpZiAoIXRoaXMuZm9ybUNvbnRyb2wpIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBtYW5kYXRvcnkgYXR0cmlidXRlIFxcJ2Zvcm1Db250cm9sXFwnIG9yIFxcJ2Zvcm1Db250cm9sTmFtZVxcJyBpbiA8bWF0LWRhdGUtZmllbGQ+LicpO1xuXG4gICAgdGhpcy5tb2JpbGUgPSBpc05vdE5pbCh0aGlzLm1vYmlsZSkgPyB0aGlzLm1vYmlsZSA6IGlzTW9iaWxlKHdpbmRvdyk7XG5cbiAgICB0aGlzLnJlcXVpcmVkID0gaXNOb3ROaWxCb29sZWFuKHRoaXMucmVxdWlyZWQpID8gdGhpcy5yZXF1aXJlZCA6ICh0aGlzLmZvcm1Db250cm9sLnZhbGlkYXRvciA9PT0gVmFsaWRhdG9ycy5yZXF1aXJlZCB8fCBpc0JsYW5rU3RyaW5nKHRoaXMucmVxdWlyZWQpKTtcblxuICAgIC8vIEFkZCAndmFsaWREYXRlJyB2YWxpZGF0b3IgKHdoZW4gZXhpc3RpbmcgdmFsaWRhdG9yIGFyZSBudWxsIG9yIHJlcXVpcmVkLCB0byBiZSBzdXJlIHRvIGtlZXAgaXQpXG4gICAgaWYgKCF0aGlzLmZvcm1Db250cm9sLnZhbGlkYXRvciB8fCB0aGlzLmZvcm1Db250cm9sLnZhbGlkYXRvciA9PT0gVmFsaWRhdG9ycy5yZXF1aXJlZCkge1xuICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHRoaXMucmVxdWlyZWQgPyBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgU2hhcmVkVmFsaWRhdG9ycy52YWxpZERhdGVdIDogU2hhcmVkVmFsaWRhdG9ycy52YWxpZERhdGUpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsaWRhdG9ycyh0aGlzLnJlcXVpcmVkID8gW3RoaXMuZm9ybUNvbnRyb2wudmFsaWRhdG9yLCBWYWxpZGF0b3JzLnJlcXVpcmVkLCBTaGFyZWRWYWxpZGF0b3JzLnZhbGlkRGF0ZV0gOlxuICAgICAgICBbdGhpcy5mb3JtQ29udHJvbC52YWxpZGF0b3IsIFNoYXJlZFZhbGlkYXRvcnMudmFsaWREYXRlXSk7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIHRoZSB0ZXh0IGNvbnRyb2xcbiAgICB0aGlzLnRleHRDb250cm9sID0gdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKG51bGwsXG4gICAgICAvLyBJbXBvcnRhbnQ6IHNob3VsZCBjb3B5IGVycm9ycyBmcm9tIHRoZSBtb2RlbCBmb3JtQ29udHJvbFxuICAgICAgKCkgPT4gdGhpcy5mb3JtQ29udHJvbC5lcnJvcnNcbiAgICApO1xuXG4gICAgLy8gR2V0IHBhdHRlcm5zIHRvIGRpc3BsYXkgZGF0ZVxuICAgIHRoaXMudXBkYXRlUGF0dGVybih0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdDT01NT04uREFURV9QQVRURVJOJykpO1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQoXG4gICAgICB0aGlzLnRyYW5zbGF0ZS5nZXQoJ0NPTU1PTi5EQVRFX1BBVFRFUk4nKVxuICAgICAgICAuc3Vic2NyaWJlKChwYXR0ZXJuKSA9PiB0aGlzLnVwZGF0ZVBhdHRlcm4ocGF0dGVybikpXG4gICAgKTtcblxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQoXG4gICAgICB0aGlzLnRleHRDb250cm9sLnZhbHVlQ2hhbmdlc1xuICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB0aGlzLm9uRm9ybUNoYW5nZSh2YWx1ZSkpKTtcblxuICAgIC8vIExpc3RlbiBzdGF0dXMgY2hhbmdlcyAod2hlbiBkb25lIG91dHNpZGUgdGhlIGNvbXBvbmVudCAgLSBlLmcuIHdoZW4gc2V0RXJyb3JzKCkgaXMgY2FsbGluZyBvbiB0aGUgZm9ybUNvbnRyb2wpXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc3RhdHVzQ2hhbmdlc1xuICAgICAgICAucGlwZShcbiAgICAgICAgICBmaWx0ZXIoKF8pID0+ICF0aGlzLnJlYWRvbmx5ICYmICF0aGlzLl93cml0aW5nICYmICF0aGlzLl9kaXNhYmxpbmcpIC8vIFNraXBcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnRleHRDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVudDogZmFsc2V9KTtcbiAgICAgICAgICBpZiAodGhpcy5mb3JtQ29udHJvbC50b3VjaGVkICYmICF0aGlzLnRleHRDb250cm9sLnRvdWNoZWQpIHtcbiAgICAgICAgICAgIHRoaXMudGV4dENvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KVxuICAgICk7XG5cblxuICAgIHRoaXMuX3dyaXRpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLnVwZGF0ZVRhYkluZGV4KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLl93cml0aW5nKSByZXR1cm47IC8vIFNraXBcbiAgICB0aGlzLl93cml0aW5nID0gdHJ1ZTtcblxuICAgIC8vIERFQlVHXG4gICAgLy9jb25zb2xlLmRlYnVnKFwiW21hdC1kYXRlXSB3cml0ZVZhbHVlKCkgd2l0aDpcIiwgdmFsdWUpO1xuXG4gICAgLy8gQ29udmVydCBpbnRvIGRhdGVcbiAgICAvLyBJbXBvcnRhbnQ6IGRvIGEgY2xvbmUoKVxuICAgIGxldCBkYXRlID0gaXNNb21lbnQodmFsdWUpID8gdmFsdWUuY2xvbmUoKSA6IGZyb21EYXRlSVNPU3RyaW5nKHZhbHVlKTtcblxuICAgIGlmICghZGF0ZSB8fCAhZGF0ZS5pc1ZhbGlkKCkpIHtcbiAgICAgIHRoaXMudGV4dENvbnRyb2wucGF0Y2hWYWx1ZShudWxsLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgICAgaWYgKHRoaXMuZm9ybUNvbnRyb2wudmFsdWUpIHtcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5wYXRjaFZhbHVlKG51bGwsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgICAgIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2sobnVsbCk7XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgLy8gTW92ZSB0byB0aGUgZXhwZWN0ZWQgVFogKGtlZXBpbmcgbG9jYWwgaG91ciAtIGUuZy4gbWlkbmlnaHQpXG4gICAgICBkYXRlID0gKHRoaXMudGltZXpvbmUgJiYgZGF0ZS50eih0aGlzLnRpbWV6b25lKSB8fCBkYXRlKVxuICAgICAgICAvLyBSZXNldCBob3VyXG4gICAgICAgIC5zdGFydE9mKCdkYXknKTtcbiAgICAgIGNvbnN0IGRheVN0ciA9IHRoaXMuZGF0ZUFkYXB0ZXIuZm9ybWF0KGRhdGUsIHRoaXMuZGF0ZVBhdHRlcm4pO1xuXG4gICAgICBpZiAodGhpcy50ZXh0Q29udHJvbC52YWx1ZSAhPT0gZGF5U3RyKSB7XG4gICAgICAgIC8vIFVwZGF0ZSBkYXkgY29udHJvbFxuICAgICAgICB0aGlzLnRleHRDb250cm9sLnBhdGNoVmFsdWUoZGF5U3RyLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX3dyaXRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fb25DaGFuZ2VDYWxsYmFjayA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX29uVG91Y2hlZENhbGxiYWNrID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZGlzYWJsaW5nKSByZXR1cm47XG5cbiAgICB0aGlzLl9kaXNhYmxpbmcgPSB0cnVlO1xuICAgIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICB0aGlzLnRleHRDb250cm9sLmRpc2FibGUoe2VtaXRFdmVudDogZmFsc2V9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50ZXh0Q29udHJvbC5lbmFibGUoe2VtaXRFdmVudDogZmFsc2V9KTtcbiAgICB9XG4gICAgdGhpcy5fZGlzYWJsaW5nID0gZmFsc2U7XG5cbiAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgb3BlbkRhdGVQaWNrZXIoKSB7XG4gICAgaWYgKCF0aGlzLmRhdGVQaWNrZXIpIHJldHVybjtcblxuICAgIGlmICghdGhpcy5kYXRlUGlja2VyLm9wZW5lZCkge1xuICAgICAgLy8gREVCVUdcbiAgICAgIC8vY29uc29sZS5kZWJ1ZygnW21hdC1kYXRlXSBPcGVuaW5nIGRhdGUgcGlja2VyLi4uJyk7XG5cbiAgICAgIHRoaXMuZGF0ZVBpY2tlci5vcGVuKCk7XG4gICAgfVxuICB9XG5cblxuICBmb2N1cygpIHtcbiAgICBpZiAoIXRoaXMuX21hdElucHV0KSByZXR1cm47XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmIChpc0ZvY3VzYWJsZUVsZW1lbnQodGhpcy5fbWF0SW5wdXQubmF0aXZlRWxlbWVudCkpIHtcbiAgICAgICAgdGhpcy5fbWF0SW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgY2xlYXIoKSB7XG4gICAgdGhpcy50ZXh0Q29udHJvbC5wYXRjaFZhbHVlKG51bGwsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZShudWxsLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2sobnVsbCk7XG4gICAgdGhpcy5tYXJrQXNUb3VjaGVkKCk7XG4gICAgdGhpcy5tYXJrQXNEaXJ0eSgpO1xuICB9XG5cbiAgLyogLS0gcHJvdGVjdGVkIG1ldGhvZHMgLS0gKi9cblxuICBwcm90ZWN0ZWQgX29uRGF0ZVBpY2tlckNoYW5nZShldmVudDogTWF0RGF0ZXBpY2tlcklucHV0RXZlbnQ8TW9tZW50Pik6IHZvaWQge1xuICAgIC8vIE1ha2Ugc3VyZSBldmVudCBpcyB2YWxpZFxuICAgIGlmICghZXZlbnQgfHwgKGV2ZW50LnZhbHVlICE9PSBudWxsICYmICFpc01vbWVudChldmVudC52YWx1ZSkpKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ0ludmFsaWQgTWF0RGF0ZXBpY2tlciBldmVudC4gU2tpcHBpbmcnLCBldmVudCk7XG4gICAgICByZXR1cm47IC8vIFNraXBcbiAgICB9XG5cbiAgICBsZXQgdmFsdWUgPSBldmVudC52YWx1ZTtcblxuICAgIC8vIE5vIHZhbHVlLCBidXQgbW9iaWxlIG1vZGU6IHVzZSB0aGUgY3VycmVudCBkYXRlXG4gICAgaWYgKCF2YWx1ZSAmJiB0aGlzLm1vYmlsZSkge1xuICAgICAgdGhpcy5fd3JpdGluZyA9IHRydWU7XG4gICAgICB2YWx1ZSA9IERhdGVVdGlscy5yZXNldFRpbWUoRGF0ZVV0aWxzLm1vbWVudCgpLmxvY2FsZSh0aGlzLmxvY2FsZSksIHRoaXMudGltZXpvbmUpO1xuICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZSwge2VtaXRFdmVudDogZmFsc2V9KTtcbiAgICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgICB0aGlzLl93cml0aW5nID0gZmFsc2U7XG4gICAgfVxuXG4gICAgbGV0IGRhdGUgPSB2YWx1ZT8ubG9jYWxlKHRoaXMubG9jYWxlKSAvLyBzZXQgYXMgdGltZSBhcyBsb2NhbGUgdGltZVxuICAgICAgLm1pbnV0ZSgwKS5zZWNvbmRzKDApLm1pbGxpc2Vjb25kKDApIC8vIFJlc2V0IGhvdXJcbiAgICAgIC51dGModHJ1ZSk7XG5cbiAgICBjb25zdCBkYXRlU3RyID0gZGF0ZSAmJiB0aGlzLmRhdGVBZGFwdGVyLmZvcm1hdChkYXRlLCB0aGlzLmRhdGVQYXR0ZXJuKSB8fCBudWxsO1xuXG4gICAgaWYgKHRoaXMudGV4dENvbnRyb2wudmFsdWUgIT09IGRhdGVTdHIpIHtcbiAgICAgIC8vIERFQlVHXG4gICAgICAvL2NvbnNvbGUuZGVidWcoXCJbbWF0LWRhdGVdIG9uRGF0ZVBpY2tlckNoYW5nZSgpIG5ldyB2YWx1ZTpcIiwgZGF0ZVN0cik7XG5cbiAgICAgIHRoaXMudGV4dENvbnRyb2wuc2V0VmFsdWUoZGF0ZVN0ciwge1xuICAgICAgICBlbWl0RXZlbnQ6IHRydWUgLy8gV2lsbCBjYWxsIG9uRm9ybUNoYW5nZVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIF9vcGVuRGF0ZVBpY2tlcklmTW9iaWxlKGV2ZW50OiBFdmVudCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICghdGhpcy5tb2JpbGVcbiAgICAgIHx8IGV2ZW50Py5kZWZhdWx0UHJldmVudGVkXG4gICAgICB8fCB0aGlzLmRhdGVQaWNrZXI/Lm9wZW5lZFxuICAgICAgfHwgdGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xuXG4gICAgLy9jb25zb2xlLmRlYnVnKCdbbWF0LWRhdGVdIFByZXBhcmluZyB0byBvcGVuIGRhdGUgcGlja2VyLi4uICcpO1xuXG4gICAgdGhpcy5fcHJldmVudEV2ZW50KGV2ZW50KTtcblxuICAgIC8vIE9wZW4gdGhlIHBpY2tlclxuICAgIHRoaXMub3BlbkRhdGVQaWNrZXIoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfY2hlY2tJZlRvdWNoZWQob3B0cz86IHtlbWl0RXZlbnQ/OiBib29sZWFufSkge1xuICAgIGlmICh0aGlzLnRleHRDb250cm9sLnRvdWNoZWQpIHtcbiAgICAgIHRoaXMuX29uVG91Y2hlZENhbGxiYWNrKCk7XG5cbiAgICAgIGlmICghb3B0cyB8fCBvcHRzLmVtaXRFdmVudCAhPT0gZmFsc2UpIHtcbiAgICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgX3ByZXZlbnRFdmVudChldmVudDogRXZlbnQpIHtcbiAgICBpZiAoIWV2ZW50KSByZXR1cm47XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAoZXZlbnQuc3RvcFByb3BhZ2F0aW9uKSBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAoZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKSBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIC8qIC0tIHByaXZhdGUgbWV0aG9kIC0tICovXG5cbiAgcHJpdmF0ZSB1cGRhdGVQYXR0ZXJuKHBhdHRlcm46IHN0cmluZykge1xuICAgIHBhdHRlcm4gPSBwYXR0ZXJuICE9PSAnQ09NTU9OLkRBVEVfUEFUVEVSTicgPyBwYXR0ZXJuIDogJ0wnO1xuICAgIGlmICh0aGlzLmRhdGVQYXR0ZXJuICE9PSBwYXR0ZXJuKSB7XG4gICAgICB0aGlzLmRhdGVQYXR0ZXJuID0gcGF0dGVybjtcbiAgICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvbkZvcm1DaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLl93cml0aW5nKSByZXR1cm47IC8vIFNraXAgaWYgY2FsbCBieSBzZWxmXG4gICAgdGhpcy5fd3JpdGluZyA9IHRydWU7XG5cbiAgICAvLyBERUJVR1xuICAgIC8vY29uc29sZS5kZWJ1ZyhgW21hdC1kYXRlLXRpbWVdIG9uRm9ybUNoYW5nZSgpIGZyb20gZXZlbnQ6ICR7ZXZlbnR9IC0gY29udHJvbHMgdmFsdWVzOiBgLCBbZGF5U3RyLCB0aW1lXSk7XG5cbiAgICAvKmlmICh0aGlzLmRheUNvbnRyb2wuaW52YWxpZCkge1xuICAgICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNQZW5kaW5nKHtvbmx5U2VsZjogdHJ1ZX0pO1xuICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRFcnJvcnMoe1xuICAgICAgICAuLi50aGlzLmZvcm1Db250cm9sLmVycm9ycyxcbiAgICAgICAgLi4udGhpcy5kYXlDb250cm9sLmVycm9yc1xuICAgICAgfSk7XG4gICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc0RpcnR5KCk7XG4gICAgICB0aGlzLl93cml0aW5nID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfSovXG5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIC8vIE1ha2UgdG8gcmVtb3ZlIHBsYWNlaG9sZGVyIGNoYXJzXG4gICAgICB3aGlsZSAodmFsdWUgJiYgdmFsdWUuaW5kZXhPZih0aGlzLnBsYWNlaG9sZGVyQ2hhcikgIT09IC0xKSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSh0aGlzLnBsYWNlaG9sZGVyQ2hhciwgJycpO1xuICAgICAgfVxuXG4gICAgICAvLyBGb3JjZSAnMCcgZm9yIGVtcHR5IG1vbnRoIChvdGhlcndpc2UgbW9tZW50IHdpbGwgdXNlIHRoZSBjdXJyZW50IG1vbnRoKVxuICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCcvLycsICcvMC8nKVxuICAgICAgICAvLyBGb3JjZSAnMCcgZm9yIGVtcHR5IHllYXIgKG90aGVyd2lzZSBtb21lbnQgd2lsbCB1c2UgdGhlIGN1cnJlbnQgeWVhcilcbiAgICAgICAgLnJlcGxhY2UoL1xcLyQvLCAnLzAnKTtcbiAgICB9XG5cbiAgICAvLyBQYXJzZSBkYXRlIChzdHJpY3QgPSBmYWxzZSlcbiAgICBsZXQgZGF0ZTogTW9tZW50ID0gaXNOb3ROaWxPckJsYW5rKHZhbHVlKSAmJiB0aGlzLmRhdGVBZGFwdGVyLnBhcnNlKHZhbHVlLCB0aGlzLmRhdGVQYXR0ZXJuKSB8fCBudWxsO1xuXG4gICAgLy8gTW92ZSB0byB0aGUgZXhwZWN0ZWQgVFosIGFuZCBrZWVwIHRoZSBsb2NhbCBob3VyICg9IG1pZG5pZ2h0KSB0byBoYXZlIG1pZG5pZ2h0IGF0IGxvY2FsIHRpbWVcbiAgICBkYXRlID0gZGF0ZSAmJiAodGhpcy50aW1lem9uZSA/IGRhdGUudHoodGhpcy50aW1lem9uZSwgdHJ1ZSkgOiBkYXRlKSB8fCBudWxsO1xuXG4gICAgZGF0ZSA9IGRhdGUgJiYgZGF0ZVxuICAgICAgLnN0YXJ0T2YoJ2RheScpIC8vIFJlc2V0IGhvdXJcbiAgICAgIC51dGMoKSAvLyBDb252ZXJ0IHRvIFVUQyAoYXZvaWQgVFogb2Zmc2V0IGluIGZpbmFsIHN0cmluZylcbiAgICAgIHx8IG51bGw7XG5cbiAgICAvLyBDb252ZXJ0IHRvIG1vZGVsIHZhbHVlIChJU08gZGF0ZSBzdHJpbmcpXG4gICAgLy8gSU1QT1JUQU5UOiBJZiBkYXRlIGlzIGludmFsaWQsIHRoZW4ga2VlcCB0aGUgaW52YWxpZCBzdHJpbmcgdmFsdWVcbiAgICAvLyB0byBhbGxvdyBTaGFyZWRWYWxpZGF0b3JzLnZhbGlkRGF0ZSgpIHRvIHJhaXNlIGFuIGVycm9yXG4gICAgY29uc3QgZm9ybUNvbnRyb2xWYWx1ZSA9IGRhdGUgJiYgZGF0ZS5pc1ZhbGlkKCkgPyB0b0RhdGVJU09TdHJpbmcoZGF0ZSkgOiAodmFsdWUgfHwgbnVsbCk7XG5cbiAgICBpZiAodGhpcy5mb3JtQ29udHJvbC52YWx1ZSAhPT0gZm9ybUNvbnRyb2xWYWx1ZSkge1xuXG4gICAgICAvLyBERUJVR1xuICAgICAgLy9jb25zb2xlLmRlYnVnKCdbbWF0LWRhdGVdIEVtaXQgbmV3IHZhbHVlOiAnICsgZGF0ZVN0cik7XG5cbiAgICAgIC8vIEFwcGx5IHRvIGZvcm0gY29udHJvbC4gPT4gV2lsbCBjYWxsIHdyaXRlVmFsdWUoKVxuICAgICAgLy8gTk9UIE5FRUQsIGJlY2F1c2UgYSBmb3JtQ29udHJvbCBzaG91bGQgTk9UIGJlIHVzZWQgYnkgbXVsdGlwbGUgZmllbGRzXG4gICAgICAvL3RoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUoZGF0ZVN0ciwge2VtaXRFdmVudDogZmFsc2V9KVxuXG4gICAgICAvLyBDaGFuZ2VzIGNvbWVzIGZyb20gaW5zaWRlIGZ1bmN0aW9uOiB1c2UgdGhlIGNhbGxiYWNrXG4gICAgICB0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKGZvcm1Db250cm9sVmFsdWUpO1xuXG4gICAgICAvLyBDaGVjayBpZiBuZWVkIHRvIHVwZGF0ZSBjb250cm9sc1xuICAgICAgdGhpcy5fY2hlY2tJZlRvdWNoZWQoKTtcbiAgICB9XG5cbiAgICAvLyBGb3JjZSB0aGUgZGF5IGNvbnRyb2wgdG8gdXBkYXRlIGl0cyB2YWxpZGl0eSAoc2FtZSBlcnJvcnMgYXMgZm9ybUNvbnRyb2wgLSBzZWUgbmdPbkluaXQoKSlcbiAgICB0aGlzLnRleHRDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcblxuICAgIHRoaXMuX3dyaXRpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlVGFiSW5kZXgoKSB7XG4gICAgaWYgKGlzTmlsKHRoaXMuX3RhYmluZGV4KSB8fCB0aGlzLl90YWJpbmRleCA9PT0gLTEpIHJldHVybjsgLy8gc2tpcFxuXG4gICAgLy8gRm9jdXMgdG8gaW5wdXRcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHNldFRhYkluZGV4KHRoaXMuX21hdElucHV0LCB0aGlzLl90YWJpbmRleCk7XG4gICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXJrQXNUb3VjaGVkKG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFufSkge1xuICAgIHRoaXMudGV4dENvbnRyb2wubWFya0FzVG91Y2hlZChvcHRzKTtcbiAgICB0aGlzLl9vblRvdWNoZWRDYWxsYmFjaygpO1xuICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIG1hcmtBc0RpcnR5KG9wdHM/OiBhbnkpIHtcbiAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc0RpcnR5KG9wdHMpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXJrRm9yQ2hlY2soKSB7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxufVxuXG4iLCI8IS0tIHJlYWRvbmx5IC0tPlxuPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwicmVhZG9ubHk7IGVsc2Ugd3JpdGFibGVcIlxuICAgICAgICAgICAgICAgIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWxcIlxuICAgICAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0LWZvcm0tZmllbGQtZGlzYWJsZWRcIj5cblxuICA8ZGl2IG1hdFByZWZpeD5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWF0UHJlZml4VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbiAgPGlucHV0IG1hdElucHV0IGhpZGRlbiB0eXBlPVwidGV4dFwiXG4gICAgICAgICByZWFkb25seVxuICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiPlxuICA8aW9uLXRleHQ+e3tmb3JtQ29udHJvbC52YWx1ZXxkYXRlRm9ybWF0OiB7cGF0dGVybjogZGF0ZVBhdHRlcm59IH19PC9pb24tdGV4dD5cbjwvbWF0LWZvcm0tZmllbGQ+XG5cbjwhLS0gd3JpdGFibGUgLS0+XG48bmctdGVtcGxhdGUgI3dyaXRhYmxlPlxuXG4gIDxtYXQtZm9ybS1maWVsZCBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsXCJcbiAgICAgICAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIj5cblxuICAgIDxtYXQtbGFiZWw+e3twbGFjZWhvbGRlcn19PC9tYXQtbGFiZWw+XG5cbiAgICA8ZGl2IG1hdFByZWZpeD5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtYXRQcmVmaXhUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBEZXNrdG9wIC0tPlxuICAgIDxpbnB1dCBtYXRJbnB1dCAjbWF0SW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIlxuICAgICAgICAgICBjbGFzcz1cIm1hdC1pbnB1dC1lbGVtZW50XCJcbiAgICAgICAgICAgKm5nSWY9XCIhbW9iaWxlXCJcbiAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInRleHRDb250cm9sXCJcbiAgICAgICAgICAgW3RleHRNYXNrXT1cInttYXNrOiBtYXNrLCBrZWVwQ2hhclBvc2l0aW9uczogdHJ1ZSwgcGxhY2Vob2xkZXJDaGFyOiBwbGFjZWhvbGRlckNoYXJ9XCJcbiAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidDT01NT04uREFURV9QTEFDRUhPTERFUid8dHJhbnNsYXRlXCJcbiAgICAgICAgICAgKGJsdXIpPVwiX2NoZWNrSWZUb3VjaGVkKClcIlxuICAgICAgICAgICAoa2V5dXAuYXJyb3dEb3duKT1cIm9wZW5EYXRlUGlja2VyKClcIlxuICAgICAgICAgICAoa2V5dXAuZXNjYXBlKT1cIl9wcmV2ZW50RXZlbnQoJGV2ZW50KVwiXG4gICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgICAgIFt0YWJpbmRleF09XCJ0YWJpbmRleFwiXG4gICAgICAgICAgIFthcHBBdXRvZm9jdXNdPVwiYXV0b2ZvY3VzXCI+XG4gICAgPGlucHV0ICNtYXRJbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwibWF0LWlucHV0LWVsZW1lbnRcIlxuICAgICAgICAgICAqbmdJZj1cIm1vYmlsZVwiXG4gICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJ0ZXh0Q29udHJvbFwiXG4gICAgICAgICAgIChmb2N1cyk9XCJfb3BlbkRhdGVQaWNrZXJJZk1vYmlsZSgkZXZlbnQpXCJcbiAgICAgICAgICAgKGNsaWNrKT1cIl9vcGVuRGF0ZVBpY2tlcklmTW9iaWxlKCRldmVudClcIlxuICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICAgICBbdGFiaW5kZXhdPVwidGFiaW5kZXhcIlxuICAgICAgICAgICByZWFkb25seT5cblxuICAgIDwhLS0gSGlkZSB0aGUgZmluYWwgKGhpZGRlbikgaW5wdXQgLS0+XG4gICAgPGlucHV0IG1hdElucHV0ICNtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIiBoaWRkZW5cbiAgICAgICAgICAgW21hdERhdGVwaWNrZXJdPVwiZGF0ZVBpY2tlclwiXG4gICAgICAgICAgIFttYXREYXRlcGlja2VyRmlsdGVyXT1cImRhdGVQaWNrZXJGaWx0ZXJcIlxuICAgICAgICAgICAoZGF0ZUNoYW5nZSk9XCJfb25EYXRlUGlja2VyQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICByZWFkb25seT5cblxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiB0YWJpbmRleD1cIi0xXCIgbWF0U3VmZml4XG4gICAgICAgICAgICAoY2xpY2spPVwib3BlbkRhdGVQaWNrZXIoKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cbiAgICAgIDxtYXQtaWNvbj57e21vYmlsZT8nZGF0ZV9yYW5nZSc6J2tleWJvYXJkX2Fycm93X2Rvd24nfX08L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPG1hdC1kYXRlcGlja2VyICNkYXRlUGlja2VyXG4gICAgICAgICAgICAgICAgICAgIFt0b3VjaFVpXT1cIm1vYmlsZVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIFtzdGFydEF0XT1cInN0YXJ0RGF0ZVwiPlxuICAgICAgPCEtLSBEYXRlIHBpY2tlciBidXR0b25zIC0tPlxuICAgICAgPG1hdC1kYXRlcGlja2VyLWFjdGlvbnMgKm5nSWY9XCJtb2JpbGVcIj5cbiAgICAgICAgPGlvbi1idXR0b24gZmlsbD1cImNsZWFyXCIgY29sb3I9XCJkYXJrXCIgbWF0RGF0ZXBpY2tlckNhbmNlbD5cbiAgICAgICAgICA8aW9uLWxhYmVsIHRyYW5zbGF0ZT5DT01NT04uQlROX0NBTkNFTDwvaW9uLWxhYmVsPlxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJzb2xpZFwiIGNvbG9yPVwidGVydGlhcnlcIiBtYXREYXRlcGlja2VyQXBwbHk+XG4gICAgICAgICAgPGlvbi1sYWJlbCB0cmFuc2xhdGU+Q09NTU9OLkJUTl9WQUxJREFURTwvaW9uLWxhYmVsPlxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L21hdC1kYXRlcGlja2VyLWFjdGlvbnM+XG4gICAgPC9tYXQtZGF0ZXBpY2tlcj5cbiAgICA8YnV0dG9uIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b24gdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICpuZ0lmPVwiY2xlYXJhYmxlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJjbGVhcigpXCJcbiAgICAgICAgICAgIFtoaWRkZW5dPVwiZGlzYWJsZWQgfHwgIWZvcm1Db250cm9sLnZhbHVlXCI+XG4gICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPCEtLSBlcnJvcnMgLS0+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm1Db250cm9sLnRvdWNoZWQgJiYgZm9ybUNvbnRyb2wuZXJyb3JzfG1hcEtleXN8YXJyYXlGaXJzdDsgbGV0IGVycm9yS2V5XCIgW25nU3dpdGNoXT1cImVycm9yS2V5XCI+XG4gICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3JlcXVpcmVkJ1wiIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9SRVFVSVJFRDwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCIndmFsaWREYXRlJ1wiIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9OT1RfVkFMSURfREFURTwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInZGF0ZUlzQWZ0ZXInXCI+e3snRVJST1IuRklFTERfTk9UX1ZBTElEX0RBVEVfQUZURVInIHwgdHJhbnNsYXRlOiBmb3JtQ29udHJvbC5lcnJvcnMuZGF0ZUlzQWZ0ZXIgfX08L3NwYW4+XG4gICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGVJc0JlZm9yZSdcIj57eydFUlJPUi5GSUVMRF9OT1RfVkFMSURfREFURV9CRUZPUkUnIHwgdHJhbnNsYXRlOiBmb3JtQ29udHJvbC5lcnJvcnMuZGF0ZUlzQmVmb3JlIH19PC9zcGFuPlxuICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidkYXRlUmFuZ2UnXCIgdHJhbnNsYXRlPkVSUk9SLkZJRUxEX05PVF9WQUxJRF9EQVRFX1JBTkdFPC9zcGFuPlxuICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidkYXRlTWF4RHVyYXRpb24nXCIgdHJhbnNsYXRlPkVSUk9SLkZJRUxEX05PVF9WQUxJRF9EQVRFX01BWF9EVVJBVElPTjwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInZGF0ZU1pbkR1cmF0aW9uJ1wiIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9OT1RfVkFMSURfREFURV9NSU5fRFVSQVRJT048L3NwYW4+XG4gICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ21zZydcIj57eyhmb3JtQ29udHJvbC5lcnJvcnMubXNnPy5rZXkgfHwgZm9ybUNvbnRyb2wuZXJyb3JzLm1zZykgfCB0cmFuc2xhdGU6IGZvcm1Db250cm9sLmVycm9ycy5tc2c/LnBhcmFtc319PC9zcGFuPlxuICAgIDwvbWF0LWVycm9yPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIm1hdC1lcnJvclwiPjwvbmctY29udGVudD5cblxuICAgIDwhLS0gbWF0IGhpbnQgLS0+XG4gICAgPGRpdiBjbGFzcz1cIm1hdC1mb3JtLWZpZWxkLWhpbnQtd3JhcHBlclwiIFtjbGFzcy5jZGstdmlzdWFsbHktaGlkZGVuXT1cImZvcm1Db250cm9sLmludmFsaWRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYXQtZm9ybS1maWVsZC1oaW50LXNwYWNlclwiPjwvZGl2PlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwibWF0LWhpbnRcIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG5cblxuXG48L25nLXRlbXBsYXRlPlxuXG5cbjxuZy10ZW1wbGF0ZSAjbWF0UHJlZml4VGVtcGxhdGU+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIlttYXRQcmVmaXhdXCI+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
388
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwuZGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2RhdGV0aW1lL21hdGVyaWFsLmRhdGUudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9kYXRldGltZS9tYXRlcmlhbC5kYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsVUFBVSxFQUNWLEtBQUssRUFHTCxRQUFRLEVBR1IsU0FBUyxFQUVWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBMkMsaUJBQWlCLEVBQTBDLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRS9JLE9BQU8sRUFBQyxRQUFRLEVBQVMsTUFBTSxRQUFRLENBQUM7QUFDeEMsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFlLFdBQVcsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUN2RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBR2xDLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQzFFLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHekMs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QyxXQUFXLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTyxZQUFZO1FBQ2xCLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDekIsQ0FBQzs7cUdBbFlVLE9BQU87eUZBQVAsT0FBTyxxZEFMUDtRQUNULHNCQUFzQjtLQUN2Qiw0TkNoREgsNHFKQWtIQTs0RkQvRGEsT0FBTztrQkFUbkIsU0FBUzsrQkFDRSxnQkFBZ0IsYUFHZjt3QkFDVCxzQkFBc0I7cUJBQ3ZCLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNOzswQkFtRTVDLFFBQVE7NENBbkRGLE1BQU07c0JBQWQsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFFTyxRQUFRO3NCQUFwQixLQUFLO2dCQVNPLFFBQVE7c0JBQXBCLEtBQUs7Z0JBbUJtQixVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBQ2lCLFNBQVM7c0JBQWhELFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBQcm92aWRlcixcbiAgUXVlcnlMaXN0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDaGlsZHJlblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Hcm91cERpcmVjdGl2ZSwgTkdfVkFMVUVfQUNDRVNTT1IsIFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Db250cm9sLCBWYWxpZGF0b3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtpc01vbWVudCwgTW9tZW50fSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHtERUZBVUxUX1BMQUNFSE9MREVSX0NIQVJ9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQge1NoYXJlZFZhbGlkYXRvcnN9IGZyb20gJy4uLy4uL3ZhbGlkYXRvci92YWxpZGF0b3JzJztcbmltcG9ydCB7aXNCbGFua1N0cmluZywgaXNOaWwsIGlzTm90TmlsLCBpc05vdE5pbEJvb2xlYW4sIGlzTm90TmlsT3JCbGFua30gZnJvbSAnLi4vLi4vZnVuY3Rpb25zJztcbmltcG9ydCB7ZmlsdGVyfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0lucHV0RWxlbWVudCwgc2V0VGFiSW5kZXh9IGZyb20gJy4uLy4uL2lucHV0cyc7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0Zsb2F0TGFiZWxUeXBlLCBNYXRGb3JtRmllbGRBcHBlYXJhbmNlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7RGF0ZUZpbHRlckZuLCBNYXREYXRlcGlja2VyLCBNYXREYXRlcGlja2VySW5wdXRFdmVudH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XG5pbXBvcnQge2lzRm9jdXNhYmxlRWxlbWVudH0gZnJvbSAnLi4vLi4vZm9jdXNhYmxlJztcbmltcG9ydCB7RGF0ZVV0aWxzLCBmcm9tRGF0ZUlTT1N0cmluZywgdG9EYXRlSVNPU3RyaW5nfSBmcm9tICcuLi8uLi9kYXRlcyc7XG5pbXBvcnQge2lzTW9iaWxlfSBmcm9tICcuLi8uLi9wbGF0Zm9ybXMnO1xuaW1wb3J0IHtNb21lbnREYXRlQWRhcHRlcn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwtbW9tZW50LWFkYXB0ZXInO1xuXG5jb25zdCBERUZBVUxUX1ZBTFVFX0FDQ0VTU09SOiBQcm92aWRlciA9IHtcbiAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE1hdERhdGUpLFxuICBtdWx0aTogdHJ1ZVxufTtcblxuY29uc3QgVEVYVF9NQVNLID0gWy9cXGQvLCAvXFxkLywgJy8nLCAvXFxkLywgL1xcZC8sICcvJywgL1xcZC8sIC9cXGQvLCAvXFxkLywgL1xcZC9dO1xuXG5jb25zdCBub29wID0gKCkgPT4ge307XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21hdC1kYXRlLWZpZWxkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21hdGVyaWFsLmRhdGUuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21hdGVyaWFsLmRhdGUuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICBERUZBVUxUX1ZBTFVFX0FDQ0VTU09SLFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBNYXREYXRlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBJbnB1dEVsZW1lbnQge1xuICBwcml2YXRlIF9vbkNoYW5nZUNhbGxiYWNrOiAoXzogYW55KSA9PiB2b2lkID0gbm9vcDtcbiAgcHJpdmF0ZSBfb25Ub3VjaGVkQ2FsbGJhY2s6ICgpID0+IHZvaWQgPSBub29wO1xuICBwcml2YXRlIF9zdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByaXZhdGUgX3dyaXRpbmcgPSB0cnVlO1xuICBwcml2YXRlIF9kaXNhYmxpbmcgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfdGFiaW5kZXg6IG51bWJlcjtcbiAgcHJpdmF0ZSBfcmVhZG9ubHkgPSBmYWxzZTtcblxuICB0ZXh0Q29udHJvbDogVW50eXBlZEZvcm1Db250cm9sO1xuICBkYXRlUGF0dGVybjogc3RyaW5nO1xuICBsb2NhbGU6IHN0cmluZztcbiAgcmVhZG9ubHkgbWFzayA9IFRFWFRfTUFTSztcblxuICBASW5wdXQoKSBtb2JpbGU6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGZvcm1Db250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gIEBJbnB1dCgpIGZvcm1Db250cm9sTmFtZTogc3RyaW5nO1xuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xuICBASW5wdXQoKSBmbG9hdExhYmVsOiBGbG9hdExhYmVsVHlwZSA9ICdhdXRvJztcbiAgQElucHV0KCkgYXBwZWFyYW5jZTogTWF0Rm9ybUZpZWxkQXBwZWFyYW5jZTtcbiAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGNvbXBhY3QgPSBmYWxzZTtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXJDaGFyOiBzdHJpbmcgPSBERUZBVUxUX1BMQUNFSE9MREVSX0NIQVI7XG4gIEBJbnB1dCgpIGF1dG9mb2N1cyA9IGZhbHNlO1xuICBASW5wdXQoKSBzdGFydERhdGU6IE1vbWVudCB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBjbGVhcmFibGUgPSBmYWxzZTtcbiAgQElucHV0KCkgdGltZXpvbmU6IHN0cmluZyA9IG51bGw7XG4gIEBJbnB1dCgpIGRhdGVQaWNrZXJGaWx0ZXI6IERhdGVGaWx0ZXJGbjxNb21lbnQ+O1xuXG4gIEBJbnB1dCgpIHNldCByZWFkb25seSh2YWx1ZTogYm9vbGVhbil7XG4gICAgdGhpcy5fcmVhZG9ubHkgPSB2YWx1ZTtcbiAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgZ2V0IHJlYWRvbmx5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkb25seTtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCB0YWJpbmRleCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuX3RhYmluZGV4ICE9PSB2YWx1ZSkge1xuICAgICAgdGhpcy5fdGFiaW5kZXggPSB2YWx1ZTtcbiAgICAgIGlmICghdGhpcy5fd3JpdGluZykgdGhpcy51cGRhdGVUYWJJbmRleCgpO1xuICAgIH1cbiAgfVxuXG4gIGdldCB0YWJpbmRleCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl90YWJpbmRleDtcbiAgfVxuXG4gIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmZvcm1Db250cm9sLnZhbHVlO1xuICB9XG5cbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZvcm1Db250cm9sLmRpc2FibGVkO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgnZGF0ZVBpY2tlcicpIGRhdGVQaWNrZXIhOiBNYXREYXRlcGlja2VyPE1vbWVudD47XG4gIEBWaWV3Q2hpbGQoJ21hdElucHV0Jywge3N0YXRpYzogZmFsc2V9KSBfbWF0SW5wdXQ6IEVsZW1lbnRSZWY7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkYXRlQWRhcHRlcjogTW9tZW50RGF0ZUFkYXB0ZXIsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgZm9ybUdyb3VwRGlyOiBGb3JtR3JvdXBEaXJlY3RpdmUsXG4gICkge1xuICAgIHRoaXMubG9jYWxlID0gKHRyYW5zbGF0ZS5jdXJyZW50TGFuZyB8fCB0cmFuc2xhdGUuZGVmYXVsdExhbmcpLnN1YnN0cmluZygwLCAyKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZm9ybUNvbnRyb2wgPSB0aGlzLmZvcm1Db250cm9sIHx8IHRoaXMuZm9ybUNvbnRyb2xOYW1lICYmIHRoaXMuZm9ybUdyb3VwRGlyICYmIHRoaXMuZm9ybUdyb3VwRGlyLmZvcm0uZ2V0KHRoaXMuZm9ybUNvbnRyb2xOYW1lKSBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gICAgaWYgKCF0aGlzLmZvcm1Db250cm9sKSB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgbWFuZGF0b3J5IGF0dHJpYnV0ZSBcXCdmb3JtQ29udHJvbFxcJyBvciBcXCdmb3JtQ29udHJvbE5hbWVcXCcgaW4gPG1hdC1kYXRlLWZpZWxkPi4nKTtcblxuICAgIHRoaXMubW9iaWxlID0gaXNOb3ROaWwodGhpcy5tb2JpbGUpID8gdGhpcy5tb2JpbGUgOiBpc01vYmlsZSh3aW5kb3cpO1xuXG4gICAgdGhpcy5yZXF1aXJlZCA9IGlzTm90TmlsQm9vbGVhbih0aGlzLnJlcXVpcmVkKSA/IHRoaXMucmVxdWlyZWQgOiAodGhpcy5mb3JtQ29udHJvbC52YWxpZGF0b3IgPT09IFZhbGlkYXRvcnMucmVxdWlyZWQgfHwgaXNCbGFua1N0cmluZyh0aGlzLnJlcXVpcmVkKSk7XG5cbiAgICAvLyBBZGQgJ3ZhbGlkRGF0ZScgdmFsaWRhdG9yICh3aGVuIGV4aXN0aW5nIHZhbGlkYXRvciBhcmUgbnVsbCBvciByZXF1aXJlZCwgdG8gYmUgc3VyZSB0byBrZWVwIGl0KVxuICAgIGlmICghdGhpcy5mb3JtQ29udHJvbC52YWxpZGF0b3IgfHwgdGhpcy5mb3JtQ29udHJvbC52YWxpZGF0b3IgPT09IFZhbGlkYXRvcnMucmVxdWlyZWQpIHtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsaWRhdG9ycyh0aGlzLnJlcXVpcmVkID8gW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFNoYXJlZFZhbGlkYXRvcnMudmFsaWREYXRlXSA6IFNoYXJlZFZhbGlkYXRvcnMudmFsaWREYXRlKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbGlkYXRvcnModGhpcy5yZXF1aXJlZCA/IFt0aGlzLmZvcm1Db250cm9sLnZhbGlkYXRvciwgVmFsaWRhdG9ycy5yZXF1aXJlZCwgU2hhcmVkVmFsaWRhdG9ycy52YWxpZERhdGVdIDpcbiAgICAgICAgW3RoaXMuZm9ybUNvbnRyb2wudmFsaWRhdG9yLCBTaGFyZWRWYWxpZGF0b3JzLnZhbGlkRGF0ZV0pO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSB0aGUgdGV4dCBjb250cm9sXG4gICAgdGhpcy50ZXh0Q29udHJvbCA9IHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbChudWxsLFxuICAgICAgLy8gSW1wb3J0YW50OiBzaG91bGQgY29weSBlcnJvcnMgZnJvbSB0aGUgbW9kZWwgZm9ybUNvbnRyb2xcbiAgICAgICgpID0+IHRoaXMuZm9ybUNvbnRyb2wuZXJyb3JzXG4gICAgKTtcblxuICAgIC8vIEdldCBwYXR0ZXJucyB0byBkaXNwbGF5IGRhdGVcbiAgICB0aGlzLnVwZGF0ZVBhdHRlcm4odGhpcy50cmFuc2xhdGUuaW5zdGFudCgnQ09NTU9OLkRBVEVfUEFUVEVSTicpKTtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy50cmFuc2xhdGUuZ2V0KCdDT01NT04uREFURV9QQVRURVJOJylcbiAgICAgICAgLnN1YnNjcmliZSgocGF0dGVybikgPT4gdGhpcy51cGRhdGVQYXR0ZXJuKHBhdHRlcm4pKVxuICAgICk7XG5cbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy50ZXh0Q29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4gdGhpcy5vbkZvcm1DaGFuZ2UodmFsdWUpKSk7XG5cbiAgICAvLyBMaXN0ZW4gc3RhdHVzIGNoYW5nZXMgKHdoZW4gZG9uZSBvdXRzaWRlIHRoZSBjb21wb25lbnQgIC0gZS5nLiB3aGVuIHNldEVycm9ycygpIGlzIGNhbGxpbmcgb24gdGhlIGZvcm1Db250cm9sKVxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQoXG4gICAgICB0aGlzLmZvcm1Db250cm9sLnN0YXR1c0NoYW5nZXNcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZmlsdGVyKChfKSA9PiAhdGhpcy5yZWFkb25seSAmJiAhdGhpcy5fd3JpdGluZyAmJiAhdGhpcy5fZGlzYWJsaW5nKSAvLyBTa2lwXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy50ZXh0Q29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgICAgICAgaWYgKHRoaXMuZm9ybUNvbnRyb2wudG91Y2hlZCAmJiAhdGhpcy50ZXh0Q29udHJvbC50b3VjaGVkKSB7XG4gICAgICAgICAgICB0aGlzLnRleHRDb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSlcbiAgICApO1xuXG5cbiAgICB0aGlzLl93cml0aW5nID0gZmFsc2U7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy51cGRhdGVUYWJJbmRleCgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fd3JpdGluZykgcmV0dXJuOyAvLyBTa2lwXG4gICAgdGhpcy5fd3JpdGluZyA9IHRydWU7XG5cbiAgICAvLyBERUJVR1xuICAgIC8vY29uc29sZS5kZWJ1ZyhcIlttYXQtZGF0ZV0gd3JpdGVWYWx1ZSgpIHdpdGg6XCIsIHZhbHVlKTtcblxuICAgIC8vIENvbnZlcnQgaW50byBkYXRlXG4gICAgbGV0IGRhdGUgPSBpc01vbWVudCh2YWx1ZSkgPyB2YWx1ZSA6IGZyb21EYXRlSVNPU3RyaW5nKHZhbHVlKTtcblxuICAgIGlmICghZGF0ZSB8fCAhZGF0ZS5pc1ZhbGlkKCkpIHtcbiAgICAgIHRoaXMudGV4dENvbnRyb2wucGF0Y2hWYWx1ZShudWxsLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgICAgaWYgKHRoaXMuZm9ybUNvbnRyb2wudmFsdWUpIHtcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5wYXRjaFZhbHVlKG51bGwsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgICAgIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2sobnVsbCk7XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgLy8gTW92ZSB0byB0aGUgZXhwZWN0ZWQgVFogKGtlZXBpbmcgbG9jYWwgaG91ciAtIGUuZy4gbWlkbmlnaHQpXG4gICAgICBjb25zdCBkYXkgPSAodGhpcy50aW1lem9uZSAmJiBkYXRlLnR6KHRoaXMudGltZXpvbmUpIHx8IGRhdGUpXG4gICAgICAgIC8vIEltcG9ydGFudDogY2xvbmUsIGJlY2F1c2Ugc3RhcnRPZiB3aWxsIHVwZGF0ZSB0aGUgZXhpc3RpbmcgZGF0ZVxuICAgICAgICAuY2xvbmUoKVxuICAgICAgICAvLyBSZXNldCBob3VyXG4gICAgICAgIC5zdGFydE9mKCdkYXknKTtcbiAgICAgIGNvbnN0IGRheVN0ciA9IHRoaXMuZGF0ZUFkYXB0ZXIuZm9ybWF0KGRheSwgdGhpcy5kYXRlUGF0dGVybik7XG5cbiAgICAgIGlmICh0aGlzLnRleHRDb250cm9sLnZhbHVlICE9PSBkYXlTdHIpIHtcbiAgICAgICAgLy8gVXBkYXRlIGRheSBjb250cm9sXG4gICAgICAgIHRoaXMudGV4dENvbnRyb2wucGF0Y2hWYWx1ZShkYXlTdHIsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fd3JpdGluZyA9IGZhbHNlO1xuICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vbkNoYW5nZUNhbGxiYWNrID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fb25Ub3VjaGVkQ2FsbGJhY2sgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLl9kaXNhYmxpbmcpIHJldHVybjtcblxuICAgIHRoaXMuX2Rpc2FibGluZyA9IHRydWU7XG4gICAgaWYgKGlzRGlzYWJsZWQpIHtcbiAgICAgIHRoaXMudGV4dENvbnRyb2wuZGlzYWJsZSh7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRleHRDb250cm9sLmVuYWJsZSh7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgIH1cbiAgICB0aGlzLl9kaXNhYmxpbmcgPSBmYWxzZTtcblxuICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBvcGVuRGF0ZVBpY2tlcigpIHtcbiAgICBpZiAoIXRoaXMuZGF0ZVBpY2tlcikgcmV0dXJuO1xuXG4gICAgaWYgKCF0aGlzLmRhdGVQaWNrZXIub3BlbmVkKSB7XG4gICAgICAvLyBERUJVR1xuICAgICAgLy9jb25zb2xlLmRlYnVnKCdbbWF0LWRhdGVdIE9wZW5pbmcgZGF0ZSBwaWNrZXIuLi4nKTtcblxuICAgICAgdGhpcy5kYXRlUGlja2VyLm9wZW4oKTtcbiAgICB9XG4gIH1cblxuXG4gIGZvY3VzKCkge1xuICAgIGlmICghdGhpcy5fbWF0SW5wdXQpIHJldHVybjtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKGlzRm9jdXNhYmxlRWxlbWVudCh0aGlzLl9tYXRJbnB1dC5uYXRpdmVFbGVtZW50KSkge1xuICAgICAgICB0aGlzLl9tYXRJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjbGVhcigpIHtcbiAgICB0aGlzLnRleHRDb250cm9sLnBhdGNoVmFsdWUobnVsbCwge2VtaXRFdmVudDogZmFsc2V9KTtcbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKG51bGwsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgdGhpcy5fb25DaGFuZ2VDYWxsYmFjayhudWxsKTtcbiAgICB0aGlzLm1hcmtBc1RvdWNoZWQoKTtcbiAgICB0aGlzLm1hcmtBc0RpcnR5KCk7XG4gIH1cblxuICAvKiAtLSBwcm90ZWN0ZWQgbWV0aG9kcyAtLSAqL1xuXG4gIHByb3RlY3RlZCBfb25EYXRlUGlja2VyQ2hhbmdlKGV2ZW50OiBNYXREYXRlcGlja2VySW5wdXRFdmVudDxNb21lbnQ+KTogdm9pZCB7XG4gICAgLy8gTWFrZSBzdXJlIGV2ZW50IGlzIHZhbGlkXG4gICAgaWYgKCFldmVudCB8fCAoZXZlbnQudmFsdWUgIT09IG51bGwgJiYgIWlzTW9tZW50KGV2ZW50LnZhbHVlKSkpIHtcbiAgICAgIGNvbnNvbGUud2FybignSW52YWxpZCBNYXREYXRlcGlja2VyIGV2ZW50LiBTa2lwcGluZycsIGV2ZW50KTtcbiAgICAgIHJldHVybjsgLy8gU2tpcFxuICAgIH1cblxuICAgIGxldCB2YWx1ZSA9IGV2ZW50LnZhbHVlO1xuXG4gICAgLy8gTm8gdmFsdWUsIGJ1dCBtb2JpbGUgbW9kZTogdXNlIHRoZSBjdXJyZW50IGRhdGVcbiAgICBpZiAoIXZhbHVlICYmIHRoaXMubW9iaWxlKSB7XG4gICAgICB0aGlzLl93cml0aW5nID0gdHJ1ZTtcbiAgICAgIHZhbHVlID0gRGF0ZVV0aWxzLnJlc2V0VGltZShEYXRlVXRpbHMubW9tZW50KCkubG9jYWxlKHRoaXMubG9jYWxlKSwgdGhpcy50aW1lem9uZSk7XG4gICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHZhbHVlLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIHRoaXMuX3dyaXRpbmcgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBsZXQgZGF0ZSA9IHZhbHVlPy5sb2NhbGUodGhpcy5sb2NhbGUpIC8vIHNldCBhcyB0aW1lIGFzIGxvY2FsZSB0aW1lXG4gICAgICAubWludXRlKDApLnNlY29uZHMoMCkubWlsbGlzZWNvbmQoMCkgLy8gUmVzZXQgaG91clxuICAgICAgLnV0Yyh0cnVlKTtcblxuICAgIGNvbnN0IGRhdGVTdHIgPSBkYXRlICYmIHRoaXMuZGF0ZUFkYXB0ZXIuZm9ybWF0KGRhdGUsIHRoaXMuZGF0ZVBhdHRlcm4pIHx8IG51bGw7XG5cbiAgICBpZiAodGhpcy50ZXh0Q29udHJvbC52YWx1ZSAhPT0gZGF0ZVN0cikge1xuICAgICAgLy8gREVCVUdcbiAgICAgIC8vY29uc29sZS5kZWJ1ZyhcIlttYXQtZGF0ZV0gb25EYXRlUGlja2VyQ2hhbmdlKCkgbmV3IHZhbHVlOlwiLCBkYXRlU3RyKTtcblxuICAgICAgdGhpcy50ZXh0Q29udHJvbC5zZXRWYWx1ZShkYXRlU3RyLCB7XG4gICAgICAgIGVtaXRFdmVudDogdHJ1ZSAvLyBXaWxsIGNhbGwgb25Gb3JtQ2hhbmdlXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgX29wZW5EYXRlUGlja2VySWZNb2JpbGUoZXZlbnQ6IEV2ZW50KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKCF0aGlzLm1vYmlsZVxuICAgICAgfHwgZXZlbnQ/LmRlZmF1bHRQcmV2ZW50ZWRcbiAgICAgIHx8IHRoaXMuZGF0ZVBpY2tlcj8ub3BlbmVkXG4gICAgICB8fCB0aGlzLmRpc2FibGVkKSByZXR1cm47XG5cbiAgICAvL2NvbnNvbGUuZGVidWcoJ1ttYXQtZGF0ZV0gUHJlcGFyaW5nIHRvIG9wZW4gZGF0ZSBwaWNrZXIuLi4gJyk7XG5cbiAgICB0aGlzLl9wcmV2ZW50RXZlbnQoZXZlbnQpO1xuXG4gICAgLy8gT3BlbiB0aGUgcGlja2VyXG4gICAgdGhpcy5vcGVuRGF0ZVBpY2tlcigpO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9jaGVja0lmVG91Y2hlZChvcHRzPzoge2VtaXRFdmVudD86IGJvb2xlYW59KSB7XG4gICAgaWYgKHRoaXMudGV4dENvbnRyb2wudG91Y2hlZCkge1xuICAgICAgdGhpcy5fb25Ub3VjaGVkQ2FsbGJhY2soKTtcblxuICAgICAgaWYgKCFvcHRzIHx8IG9wdHMuZW1pdEV2ZW50ICE9PSBmYWxzZSkge1xuICAgICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBfcHJldmVudEV2ZW50KGV2ZW50OiBFdmVudCkge1xuICAgIGlmICghZXZlbnQpIHJldHVybjtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmIChldmVudC5zdG9wUHJvcGFnYXRpb24pIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGlmIChldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24pIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgLyogLS0gcHJpdmF0ZSBtZXRob2QgLS0gKi9cblxuICBwcml2YXRlIHVwZGF0ZVBhdHRlcm4ocGF0dGVybjogc3RyaW5nKSB7XG4gICAgcGF0dGVybiA9IHBhdHRlcm4gIT09ICdDT01NT04uREFURV9QQVRURVJOJyA/IHBhdHRlcm4gOiAnTCc7XG4gICAgaWYgKHRoaXMuZGF0ZVBhdHRlcm4gIT09IHBhdHRlcm4pIHtcbiAgICAgIHRoaXMuZGF0ZVBhdHRlcm4gPSBwYXR0ZXJuO1xuICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG9uRm9ybUNoYW5nZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3dyaXRpbmcpIHJldHVybjsgLy8gU2tpcCBpZiBjYWxsIGJ5IHNlbGZcbiAgICB0aGlzLl93cml0aW5nID0gdHJ1ZTtcblxuICAgIC8vIERFQlVHXG4gICAgLy9jb25zb2xlLmRlYnVnKGBbbWF0LWRhdGUtdGltZV0gb25Gb3JtQ2hhbmdlKCkgZnJvbSBldmVudDogJHtldmVudH0gLSBjb250cm9scyB2YWx1ZXM6IGAsIFtkYXlTdHIsIHRpbWVdKTtcblxuICAgIC8qaWYgKHRoaXMuZGF5Q29udHJvbC5pbnZhbGlkKSB7XG4gICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1BlbmRpbmcoe29ubHlTZWxmOiB0cnVlfSk7XG4gICAgICB0aGlzLmZvcm1Db250cm9sLnNldEVycm9ycyh7XG4gICAgICAgIC4uLnRoaXMuZm9ybUNvbnRyb2wuZXJyb3JzLFxuICAgICAgICAuLi50aGlzLmRheUNvbnRyb2wuZXJyb3JzXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzRGlydHkoKTtcbiAgICAgIHRoaXMuX3dyaXRpbmcgPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9Ki9cblxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgLy8gTWFrZSB0byByZW1vdmUgcGxhY2Vob2xkZXIgY2hhcnNcbiAgICAgIHdoaWxlICh2YWx1ZSAmJiB2YWx1ZS5pbmRleE9mKHRoaXMucGxhY2Vob2xkZXJDaGFyKSAhPT0gLTEpIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKHRoaXMucGxhY2Vob2xkZXJDaGFyLCAnJyk7XG4gICAgICB9XG5cbiAgICAgIC8vIEZvcmNlICcwJyBmb3IgZW1wdHkgbW9udGggKG90aGVyd2lzZSBtb21lbnQgd2lsbCB1c2UgdGhlIGN1cnJlbnQgbW9udGgpXG4gICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoJy8vJywgJy8wLycpXG4gICAgICAgIC8vIEZvcmNlICcwJyBmb3IgZW1wdHkgeWVhciAob3RoZXJ3aXNlIG1vbWVudCB3aWxsIHVzZSB0aGUgY3VycmVudCB5ZWFyKVxuICAgICAgICAucmVwbGFjZSgvXFwvJC8sICcvMCcpO1xuICAgIH1cblxuICAgIC8vIFBhcnNlIGRhdGUgKHN0cmljdCA9IGZhbHNlKVxuICAgIGxldCBkYXRlOiBNb21lbnQgPSBpc05vdE5pbE9yQmxhbmsodmFsdWUpICYmIHRoaXMuZGF0ZUFkYXB0ZXIucGFyc2UodmFsdWUsIHRoaXMuZGF0ZVBhdHRlcm4pIHx8IG51bGw7XG5cbiAgICAvLyBNb3ZlIHRvIHRoZSBleHBlY3RlZCBUWiwgYW5kIGtlZXAgdGhlIGxvY2FsIGhvdXIgKD0gbWlkbmlnaHQpIHRvIGhhdmUgbWlkbmlnaHQgYXQgbG9jYWwgdGltZVxuICAgIGRhdGUgPSBkYXRlICYmICh0aGlzLnRpbWV6b25lID8gZGF0ZS50eih0aGlzLnRpbWV6b25lLCB0cnVlKSA6IGRhdGUpIHx8IG51bGw7XG5cbiAgICBkYXRlID0gZGF0ZSAmJiBkYXRlXG4gICAgICAuc3RhcnRPZignZGF5JykgLy8gUmVzZXQgaG91clxuICAgICAgLnV0YygpIC8vIENvbnZlcnQgdG8gVVRDIChhdm9pZCBUWiBvZmZzZXQgaW4gZmluYWwgc3RyaW5nKVxuICAgICAgfHwgbnVsbDtcblxuICAgIC8vIENvbnZlcnQgdG8gbW9kZWwgdmFsdWUgKElTTyBkYXRlIHN0cmluZylcbiAgICAvLyBJTVBPUlRBTlQ6IElmIGRhdGUgaXMgaW52YWxpZCwgdGhlbiBrZWVwIHRoZSBpbnZhbGlkIHN0cmluZyB2YWx1ZVxuICAgIC8vIHRvIGFsbG93IFNoYXJlZFZhbGlkYXRvcnMudmFsaWREYXRlKCkgdG8gcmFpc2UgYW4gZXJyb3JcbiAgICBjb25zdCBmb3JtQ29udHJvbFZhbHVlID0gZGF0ZSAmJiBkYXRlLmlzVmFsaWQoKSA/IHRvRGF0ZUlTT1N0cmluZyhkYXRlKSA6ICh2YWx1ZSB8fCBudWxsKTtcblxuICAgIGlmICh0aGlzLmZvcm1Db250cm9sLnZhbHVlICE9PSBmb3JtQ29udHJvbFZhbHVlKSB7XG5cbiAgICAgIC8vIERFQlVHXG4gICAgICAvL2NvbnNvbGUuZGVidWcoJ1ttYXQtZGF0ZV0gRW1pdCBuZXcgdmFsdWU6ICcgKyBkYXRlU3RyKTtcblxuICAgICAgLy8gQXBwbHkgdG8gZm9ybSBjb250cm9sLiA9PiBXaWxsIGNhbGwgd3JpdGVWYWx1ZSgpXG4gICAgICAvLyBOT1QgTkVFRCwgYmVjYXVzZSBhIGZvcm1Db250cm9sIHNob3VsZCBOT1QgYmUgdXNlZCBieSBtdWx0aXBsZSBmaWVsZHNcbiAgICAgIC8vdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZShkYXRlU3RyLCB7ZW1pdEV2ZW50OiBmYWxzZX0pXG5cbiAgICAgIC8vIENoYW5nZXMgY29tZXMgZnJvbSBpbnNpZGUgZnVuY3Rpb246IHVzZSB0aGUgY2FsbGJhY2tcbiAgICAgIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soZm9ybUNvbnRyb2xWYWx1ZSk7XG5cbiAgICAgIC8vIENoZWNrIGlmIG5lZWQgdG8gdXBkYXRlIGNvbnRyb2xzXG4gICAgICB0aGlzLl9jaGVja0lmVG91Y2hlZCgpO1xuICAgIH1cblxuICAgIC8vIEZvcmNlIHRoZSBkYXkgY29udHJvbCB0byB1cGRhdGUgaXRzIHZhbGlkaXR5IChzYW1lIGVycm9ycyBhcyBmb3JtQ29udHJvbCAtIHNlZSBuZ09uSW5pdCgpKVxuICAgIHRoaXMudGV4dENvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuXG4gICAgdGhpcy5fd3JpdGluZyA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVUYWJJbmRleCgpIHtcbiAgICBpZiAoaXNOaWwodGhpcy5fdGFiaW5kZXgpIHx8IHRoaXMuX3RhYmluZGV4ID09PSAtMSkgcmV0dXJuOyAvLyBza2lwXG5cbiAgICAvLyBGb2N1cyB0byBpbnB1dFxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgc2V0VGFiSW5kZXgodGhpcy5fbWF0SW5wdXQsIHRoaXMuX3RhYmluZGV4KTtcbiAgICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG1hcmtBc1RvdWNoZWQob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW59KSB7XG4gICAgdGhpcy50ZXh0Q29udHJvbC5tYXJrQXNUb3VjaGVkKG9wdHMpO1xuICAgIHRoaXMuX29uVG91Y2hlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFya0FzRGlydHkob3B0cz86IGFueSkge1xuICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzRGlydHkob3B0cyk7XG4gIH1cblxuICBwcml2YXRlIG1hcmtGb3JDaGVjaygpIHtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG59XG5cbiIsIjwhLS0gcmVhZG9ubHkgLS0+XG48bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJyZWFkb25seTsgZWxzZSB3cml0YWJsZVwiXG4gICAgICAgICAgICAgICAgW2Zsb2F0TGFiZWxdPVwiZmxvYXRMYWJlbFwiXG4gICAgICAgICAgICAgICAgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtYXQtZm9ybS1maWVsZC1kaXNhYmxlZFwiPlxuXG4gIDxkaXYgbWF0UHJlZml4PlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtYXRQcmVmaXhUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cblxuICA8aW5wdXQgbWF0SW5wdXQgaGlkZGVuIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCI+XG4gIDxpb24tdGV4dD57e2Zvcm1Db250cm9sLnZhbHVlfGRhdGVGb3JtYXQ6IHtwYXR0ZXJuOiBkYXRlUGF0dGVybn0gfX08L2lvbi10ZXh0PlxuPC9tYXQtZm9ybS1maWVsZD5cblxuPCEtLSB3cml0YWJsZSAtLT5cbjxuZy10ZW1wbGF0ZSAjd3JpdGFibGU+XG5cbiAgPG1hdC1mb3JtLWZpZWxkIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWxcIlxuICAgICAgICAgICAgICAgICAgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZVwiPlxuXG4gICAgPG1hdC1sYWJlbD57e3BsYWNlaG9sZGVyfX08L21hdC1sYWJlbD5cblxuICAgIDxkaXYgbWF0UHJlZml4PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1hdFByZWZpeFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIERlc2t0b3AgLS0+XG4gICAgPGlucHV0IG1hdElucHV0ICNtYXRJbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgIGNsYXNzPVwibWF0LWlucHV0LWVsZW1lbnRcIlxuICAgICAgICAgICAqbmdJZj1cIiFtb2JpbGVcIlxuICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwidGV4dENvbnRyb2xcIlxuICAgICAgICAgICBbdGV4dE1hc2tdPVwie21hc2s6IG1hc2ssIGtlZXBDaGFyUG9zaXRpb25zOiB0cnVlLCBwbGFjZWhvbGRlckNoYXI6IHBsYWNlaG9sZGVyQ2hhcn1cIlxuICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0NPTU1PTi5EQVRFX1BMQUNFSE9MREVSJ3x0cmFuc2xhdGVcIlxuICAgICAgICAgICAoYmx1cik9XCJfY2hlY2tJZlRvdWNoZWQoKVwiXG4gICAgICAgICAgIChrZXl1cC5hcnJvd0Rvd24pPVwib3BlbkRhdGVQaWNrZXIoKVwiXG4gICAgICAgICAgIChrZXl1cC5lc2NhcGUpPVwiX3ByZXZlbnRFdmVudCgkZXZlbnQpXCJcbiAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgW3RhYmluZGV4XT1cInRhYmluZGV4XCJcbiAgICAgICAgICAgW2FwcEF1dG9mb2N1c109XCJhdXRvZm9jdXNcIj5cbiAgICA8aW5wdXQgI21hdElucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJtYXQtaW5wdXQtZWxlbWVudFwiXG4gICAgICAgICAgICpuZ0lmPVwibW9iaWxlXCJcbiAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInRleHRDb250cm9sXCJcbiAgICAgICAgICAgKGZvY3VzKT1cIl9vcGVuRGF0ZVBpY2tlcklmTW9iaWxlKCRldmVudClcIlxuICAgICAgICAgICAoY2xpY2spPVwiX29wZW5EYXRlUGlja2VySWZNb2JpbGUoJGV2ZW50KVwiXG4gICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgICAgIFt0YWJpbmRleF09XCJ0YWJpbmRleFwiXG4gICAgICAgICAgIHJlYWRvbmx5PlxuXG4gICAgPCEtLSBIaWRlIHRoZSBmaW5hbCAoaGlkZGVuKSBpbnB1dCAtLT5cbiAgICA8aW5wdXQgbWF0SW5wdXQgI21hdElucHV0IFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiIGhpZGRlblxuICAgICAgICAgICBbbWF0RGF0ZXBpY2tlcl09XCJkYXRlUGlja2VyXCJcbiAgICAgICAgICAgW21hdERhdGVwaWNrZXJGaWx0ZXJdPVwiZGF0ZVBpY2tlckZpbHRlclwiXG4gICAgICAgICAgIChkYXRlQ2hhbmdlKT1cIl9vbkRhdGVQaWNrZXJDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgIHJlYWRvbmx5PlxuXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIHRhYmluZGV4PVwiLTFcIiBtYXRTdWZmaXhcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuRGF0ZVBpY2tlcigpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuICAgICAgPG1hdC1pY29uPnt7bW9iaWxlPydkYXRlX3JhbmdlJzona2V5Ym9hcmRfYXJyb3dfZG93bid9fTwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG5cbiAgICA8bWF0LWRhdGVwaWNrZXIgI2RhdGVQaWNrZXJcbiAgICAgICAgICAgICAgICAgICAgW3RvdWNoVWldPVwibW9iaWxlXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0YXJ0QXRdPVwic3RhcnREYXRlXCI+XG4gICAgICA8IS0tIERhdGUgcGlja2VyIGJ1dHRvbnMgLS0+XG4gICAgICA8bWF0LWRhdGVwaWNrZXItYWN0aW9ucyAqbmdJZj1cIm1vYmlsZVwiPlxuICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwiY2xlYXJcIiBjb2xvcj1cImRhcmtcIiBtYXREYXRlcGlja2VyQ2FuY2VsPlxuICAgICAgICAgIDxpb24tbGFiZWwgdHJhbnNsYXRlPkNPTU1PTi5CVE5fQ0FOQ0VMPC9pb24tbGFiZWw+XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPGlvbi1idXR0b24gZmlsbD1cInNvbGlkXCIgY29sb3I9XCJ0ZXJ0aWFyeVwiIG1hdERhdGVwaWNrZXJBcHBseT5cbiAgICAgICAgICA8aW9uLWxhYmVsIHRyYW5zbGF0ZT5DT01NT04uQlROX1ZBTElEQVRFPC9pb24tbGFiZWw+XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvbWF0LWRhdGVwaWNrZXItYWN0aW9ucz5cbiAgICA8L21hdC1kYXRlcGlja2VyPlxuICAgIDxidXR0b24gbWF0U3VmZml4IG1hdC1pY29uLWJ1dHRvbiB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKm5nSWY9XCJjbGVhcmFibGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyKClcIlxuICAgICAgICAgICAgW2hpZGRlbl09XCJkaXNhYmxlZCB8fCAhZm9ybUNvbnRyb2wudmFsdWVcIj5cbiAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG5cbiAgICA8IS0tIGVycm9ycyAtLT5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybUNvbnRyb2wudG91Y2hlZCAmJiBmb3JtQ29udHJvbC5lcnJvcnN8bWFwS2V5c3xhcnJheUZpcnN0OyBsZXQgZXJyb3JLZXlcIiBbbmdTd2l0Y2hdPVwiZXJyb3JLZXlcIj5cbiAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCIncmVxdWlyZWQnXCIgdHJhbnNsYXRlPkVSUk9SLkZJRUxEX1JFUVVJUkVEPC9zcGFuPlxuICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIid2YWxpZERhdGUnXCIgdHJhbnNsYXRlPkVSUk9SLkZJRUxEX05PVF9WQUxJRF9EQVRFPC9zcGFuPlxuICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidkYXRlSXNBZnRlcidcIj57eydFUlJPUi5GSUVMRF9OT1RfVkFMSURfREFURV9BRlRFUicgfCB0cmFuc2xhdGU6IGZvcm1Db250cm9sLmVycm9ycy5kYXRlSXNBZnRlciB9fTwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInZGF0ZUlzQmVmb3JlJ1wiPnt7J0VSUk9SLkZJRUxEX05PVF9WQUxJRF9EQVRFX0JFRk9SRScgfCB0cmFuc2xhdGU6IGZvcm1Db250cm9sLmVycm9ycy5kYXRlSXNCZWZvcmUgfX08L3NwYW4+XG4gICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGVSYW5nZSdcIiB0cmFuc2xhdGU+RVJST1IuRklFTERfTk9UX1ZBTElEX0RBVEVfUkFOR0U8L3NwYW4+XG4gICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGVNYXhEdXJhdGlvbidcIiB0cmFuc2xhdGU+RVJST1IuRklFTERfTk9UX1ZBTElEX0RBVEVfTUFYX0RVUkFUSU9OPC9zcGFuPlxuICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidkYXRlTWluRHVyYXRpb24nXCIgdHJhbnNsYXRlPkVSUk9SLkZJRUxEX05PVF9WQUxJRF9EQVRFX01JTl9EVVJBVElPTjwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInbXNnJ1wiPnt7KGZvcm1Db250cm9sLmVycm9ycy5tc2c/LmtleSB8fCBmb3JtQ29udHJvbC5lcnJvcnMubXNnKSB8IHRyYW5zbGF0ZTogZm9ybUNvbnRyb2wuZXJyb3JzLm1zZz8ucGFyYW1zfX08L3NwYW4+XG4gICAgPC9tYXQtZXJyb3I+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwibWF0LWVycm9yXCI+PC9uZy1jb250ZW50PlxuXG4gICAgPCEtLSBtYXQgaGludCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibWF0LWZvcm0tZmllbGQtaGludC13cmFwcGVyXCIgW2NsYXNzLmNkay12aXN1YWxseS1oaWRkZW5dPVwiZm9ybUNvbnRyb2wuaW52YWxpZFwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1hdC1mb3JtLWZpZWxkLWhpbnQtc3BhY2VyXCI+PC9kaXY+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJtYXQtaGludFwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9tYXQtZm9ybS1maWVsZD5cblxuXG5cbjwvbmctdGVtcGxhdGU+XG5cblxuPG5nLXRlbXBsYXRlICNtYXRQcmVmaXhUZW1wbGF0ZT5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdFByZWZpeF1cIj48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPlxuIl19