@trudb/tru-common-lib 0.0.916 → 0.0.918

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.
@@ -45,11 +45,11 @@ export class TruDataChangeParser {
45
45
  }
46
46
  findEntityInCache = (change) => {
47
47
  var entityAccessor = this.dataContext.entityAccess();
48
- return entityAccessor.searchByRefCacheOnly(this.entity, parseInt(change.tableRef, 10), true);
48
+ return entityAccessor.searchByRefCacheOnly(this.types.getType(change.tableName), parseInt(change.tableRef, 10), true);
49
49
  };
50
50
  findEntityInGlobalCache = (change) => {
51
51
  var entityAccessor = this.globalDataContext.entityAccess();
52
- return entityAccessor.searchByRefCacheOnly(this.entity, parseInt(change.tableRef, 10), true);
52
+ return entityAccessor.searchByRefCacheOnly(this.types.getType(change.tableName), parseInt(change.tableRef, 10), true);
53
53
  };
54
54
  checkIfDateTime = (newValue, currentValue, typeName) => {
55
55
  if (typeName === 'date-time' || typeName === 'date') {
@@ -275,4 +275,4 @@ export class TruDataChangeParser {
275
275
  this.dataChanged(dataChangeArgs);
276
276
  };
277
277
  }
278
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWRhdGEtY2hhbmdlLXBhcnNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY2xhc3Nlcy90cnUtZGF0YS1jaGFuZ2UtcGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9CLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBS2pGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHaEQsTUFBTSxPQUFPLG1CQUFtQjtJQUN0QixhQUFhLENBQW9CO0lBQ2pDLFdBQVcsQ0FBaUI7SUFDNUIsTUFBTSxDQUFNO0lBQ1osU0FBUyxDQUFTO0lBQ2xCLFNBQVMsQ0FBMkI7SUFDcEMsZ0JBQWdCLENBQVk7SUFDNUIsY0FBYyxDQUFNO0lBQ3BCLGNBQWMsQ0FBSztJQUNuQixXQUFXLENBQWdCO0lBQzNCLFFBQVEsQ0FBZ0I7SUFDeEIsS0FBSyxDQUFxQjtJQUMxQixhQUFhLENBQXFDO0lBRWxELGlCQUFpQixDQUF3QjtJQUN6QyxlQUFlLEdBQXlCLEVBQUUsQ0FBQztJQUUzQyxZQUFZLEdBQTJCLElBQUksT0FBTyxFQUFpQixDQUFDO0lBRTVFLGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUFxQjtRQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsWUFDRSxVQUFlLEVBQ2YsYUFBZ0MsRUFDaEMsV0FBMkIsRUFDM0IsaUJBQXdDLEVBQ3hDLE1BQTRCLEVBQzVCLFNBQWlC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T0FBTyxDQUFDO1FBQzdDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDbkMsQ0FBQyxDQUFBO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnRcIjtcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IFRydUVudGl0eUJhc2UgfSBmcm9tIFwiLi4vYmFzZS1jbGFzc2VzL3RydS1lbnRpdHktYmFzZVwiO1xyXG5pbXBvcnQgeyBUcnVQcm9wZXJ0eUNvbmZpZ0Jhc2UgfSBmcm9tIFwiLi4vYmFzZS1jbGFzc2VzL3RydS1wcm9wZXJ0eS1jb25maWctYmFzZVwiO1xyXG5pbXBvcnQgeyBUcnVBcHBFbnZpcm9ubWVudCB9IGZyb20gXCIuLi9zZXJ2aWNlcy90cnUtYXBwLWVudmlyb25tZW50XCI7XHJcbmltcG9ydCB7IFRydURhdGFDb250ZXh0IH0gZnJvbSBcIi4uL3NlcnZpY2VzL3RydS1kYXRhLWNvbnRleHRcIjtcclxuaW1wb3J0IHsgVHJ1TW9kZWxQcm9wZXJ0eUxvb2t1cCB9IGZyb20gXCIuLi9zZXJ2aWNlcy90cnUtbW9kZWwtcHJvcGVydHktbG9va3VwXCI7XHJcbmltcG9ydCB7IFRydU1vZGVsVHlwZUxvb2t1cCB9IGZyb20gXCIuLi9zZXJ2aWNlcy90cnUtbW9kZWwtdHlwZS1sb29rdXBcIjtcclxuaW1wb3J0IHsgVHJ1RGF0YUNoYW5nZSB9IGZyb20gXCIuL3RydS1kYXRhLWNoYW5nZVwiO1xyXG5pbXBvcnQgeyBUcnVNZXJnZURhdGEgfSBmcm9tIFwiLi90cnUtbWVyZ2UtZGF0YVwiO1xyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBUcnVEYXRhQ2hhbmdlUGFyc2VyIHtcclxuICBwcml2YXRlIGFwcEVudmlvbm1lbnQ6IFRydUFwcEVudmlyb25tZW50O1xyXG4gIHByaXZhdGUgZGF0YUNvbnRleHQ6IFRydURhdGFDb250ZXh0O1xyXG4gIHByaXZhdGUgZW50aXR5OiBhbnk7XHJcbiAgcHJpdmF0ZSB0YWJsZU5hbWU6IHN0cmluZztcclxuICBwcml2YXRlIGFkZEVudGl0eTogKG5ld0VudGl0eTogYW55KSA9PiB2b2lkO1xyXG4gIHByaXZhdGUgZ2V0TGF0ZXN0UmVzdWx0czogKCkgPT4gYW55O1xyXG4gIHByaXZhdGUgZ2V0TGF0ZXN0UXVlcnk6IGFueTtcclxuICBwcml2YXRlIGNvbnRleHRGaWx0ZXJzOiBbXTtcclxuICBwcml2YXRlIGV4cGFuZFBhdGhzOiBBcnJheTxzdHJpbmc+O1xyXG4gIHByaXZhdGUgaXNMb2FkZWQ6ICgpID0+IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSB0eXBlczogVHJ1TW9kZWxUeXBlTG9va3VwO1xyXG4gIHByaXZhdGUgcHJvcGVydHlUeXBlczogTWFwPHN0cmluZywgVHJ1UHJvcGVydHlDb25maWdCYXNlPjtcclxuXHJcbiAgcHJpdmF0ZSBnbG9iYWxEYXRhQ29udGV4dDogVHJ1RGF0YUNvbnRleHQgfCBudWxsO1xyXG4gIHByaXZhdGUgd2FpdGluZ0VudGl0aWVzOiBBcnJheTxUcnVFbnRpdHlCYXNlPiA9IFtdO1xyXG5cclxuICBwcml2YXRlIGRhdGFDaGFuZ2VkJDogU3ViamVjdDxUcnVEYXRhQ2hhbmdlPiA9IG5ldyBTdWJqZWN0PFRydURhdGFDaGFuZ2U+KCk7XHJcblxyXG4gIG9uRGF0YUNoYW5nZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhQ2hhbmdlZCQ7XHJcbiAgfVxyXG5cclxuICBkYXRhQ2hhbmdlZChjaGFuZ2U6IFRydURhdGFDaGFuZ2UpIHtcclxuICAgIHRoaXMuZGF0YUNoYW5nZWQkLm5leHQoY2hhbmdlKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgY29ubmVjdGlvbjogYW55LFxyXG4gICAgYXBwRW52aXJvbWVudDogVHJ1QXBwRW52aXJvbm1lbnQsXHJcbiAgICBkYXRhQ29udGV4dDogVHJ1RGF0YUNvbnRleHQsXHJcbiAgICBnbG9iYWxEYXRhQ29udGV4dDogVHJ1RGF0YUNvbnRleHQgfCBudWxsLFxyXG4gICAgZW50aXR5OiB0eXBlb2YgVHJ1RW50aXR5QmFzZSxcclxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxyXG4gICAgYWRkRW50aXR5OiBhbnksXHJcbiAgICBnZXRMYXRlc3RSZXN1bHRzOiBhbnksXHJcbiAgICBnZXRMYXRlc3RRdWVyeTogYW55LFxyXG4gICAgY29udGV4dEZpbHRlcnM6IFtdLFxyXG4gICAgZXhwYW5kUGF0aHM6IEFycmF5PHN0cmluZz4sXHJcbiAgICBpc0xvYWRlZDogKCkgPT4gYm9vbGVhbixcclxuICAgIG1vZGVsVHlwZUxvb2t1cDogVHJ1TW9kZWxUeXBlTG9va3VwLFxyXG4gICAgbW9kZWxQcm9wZXJ0eUxvb2t1cDogVHJ1TW9kZWxQcm9wZXJ0eUxvb2t1cFxyXG4gICkge1xyXG4gICAgdGhpcy5hcHBFbnZpb25tZW50ID0gYXBwRW52aXJvbWVudDtcclxuICAgIHRoaXMuZGF0YUNvbnRleHQgPSBkYXRhQ29udGV4dDtcclxuICAgIHRoaXMuZ2xvYmFsRGF0YUNvbnRleHQgPSBnbG9iYWxEYXRhQ29udGV4dDtcclxuICAgIHRoaXMuZW50aXR5ID0gZW50aXR5O1xyXG4gICAgdGhpcy50YWJsZU5hbWUgPSB0YWJsZU5hbWU7XHJcbiAgICB0aGlzLmFkZEVudGl0eSA9IGFkZEVudGl0eTtcclxuICAgIHRoaXMuZ2V0TGF0ZXN0UmVzdWx0cyA9IGdldExhdGVzdFJlc3VsdHM7XHJcbiAgICB0aGlzLmdldExhdGVzdFF1ZXJ5ID0gZ2V0TGF0ZXN0UXVlcnk7XHJcbiAgICB0aGlzLmNvbnRleHRGaWx0ZXJzID0gY29udGV4dEZpbHRlcnM7XHJcbiAgICB0aGlzLmV4cGFuZFBhdGhzID0gZXhwYW5kUGF0aHM7XHJcbiAgICB0aGlzLmlzTG9hZGVkID0gaXNMb2FkZWQ7XHJcbiAgICB0aGlzLnR5cGVzID0gbW9kZWxUeXBlTG9va3VwOyBcclxuICAgIHRoaXMucHJvcGVydHlUeXBlcyA9IG1vZGVsUHJvcGVydHlMb29rdXAubG9va3VwO1xyXG5cclxuICAgIGNvbm5lY3Rpb24ub24oXCJjaGFuZ2VcIiwgKHBheWxvYWQ6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnVwZGF0ZShwYXlsb2FkKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaW5kRW50aXR5SW5DYWNoZSA9IChjaGFuZ2U6IGFueSkgPT4ge1xyXG4gICAgdmFyIGVudGl0eUFjY2Vzc29yID0gdGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKTtcclxuICAgIHJldHVybiBlbnRpdHlBY2Nlc3Nvci5zZWFyY2hCeVJlZkNhY2hlT25seSh0aGlzLmVudGl0eSwgcGFyc2VJbnQoY2hhbmdlLnRhYmxlUmVmLCAxMCksIHRydWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaW5kRW50aXR5SW5HbG9iYWxDYWNoZSA9IChjaGFuZ2U6IGFueSkgPT4ge1xyXG4gICAgdmFyIGVudGl0eUFjY2Vzc29yID0gdGhpcy5nbG9iYWxEYXRhQ29udGV4dCEuZW50aXR5QWNjZXNzKCk7XHJcbiAgICByZXR1cm4gZW50aXR5QWNjZXNzb3Iuc2VhcmNoQnlSZWZDYWNoZU9ubHkodGhpcy5lbnRpdHksIHBhcnNlSW50KGNoYW5nZS50YWJsZVJlZiwgMTApLCB0cnVlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tJZkRhdGVUaW1lID0gKG5ld1ZhbHVlOiBhbnksIGN1cnJlbnRWYWx1ZTogYW55LCB0eXBlTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PiB7XHJcbiAgICBpZiAodHlwZU5hbWUgPT09ICdkYXRlLXRpbWUnIHx8IHR5cGVOYW1lID09PSAnZGF0ZScpIHtcclxuICAgICAgaWYgKG1vbWVudChuZXdWYWx1ZSwgXCJZWVlZLU1NLUREIEhIOm1tOnNzLnNzc3Nzc3NcIiwgdHJ1ZSkuaXNWYWxpZCgpKVxyXG4gICAgICAgIHJldHVybiBtb21lbnQobW9tZW50LnV0YyhuZXdWYWx1ZSkudG9EYXRlKCkpLmZvcm1hdCgnTU0vREQvWVlZWSBoaDptbSBBJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3VmFsdWVcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFzUHJvcGVydHlBbHJlYWR5QmVlbk1vZGlmaWVkID0gKHByb3BlcnR5TmFtZTogc3RyaW5nLCBlbnRpdHk6IGFueSkgPT4ge1xyXG4gICAgcmV0dXJuIGVudGl0eS5lbnRpdHlBc3BlY3Qub3JpZ2luYWxWYWx1ZXMuaGFzT3duUHJvcGVydHkocHJvcGVydHlOYW1lKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwbHlQcm9wZXJ0eUNoYW5nZXMgPSAoY2hhbmdlOiBhbnksIGVudGl0eTogYW55KSA9PiB7XHJcbiAgICB2YXIgc3RhdGVCZWZvcmVQcm9wZXJ0eUNoYW5nZSA9IGVudGl0eS5lbnRpdHlBc3BlY3QuZW50aXR5U3RhdGU7XHJcbiAgICB2YXIgb3JpZ2luYWxWYWx1ZXMgPSBlbnRpdHkuZW50aXR5QXNwZWN0Lm9yaWdpbmFsVmFsdWVzO1xyXG5cclxuICAgIGVudGl0eVsnRGF0YV9Ob3RpZmljYXRpb24nXSA9IHRydWU7XHJcblxyXG4gICAgT2JqZWN0LmtleXMoY2hhbmdlLnByb3BlcnRpZXMpLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICB2YXIgZW50aXR5VHlwZSA9IHRoaXMucHJvcGVydHlUeXBlcy5nZXQoY2hhbmdlLnRhYmxlTmFtZSArICcuJyArIGtleSk7XHJcbiAgICAgIGlmICghZW50aXR5VHlwZSkge1xyXG4gICAgICAgIGVudGl0eVR5cGUgPSBuZXcgVHJ1UHJvcGVydHlDb25maWdCYXNlKCk7XHJcbiAgICAgICAgZW50aXR5VHlwZS50eXBlTmFtZSA9ICd0ZXh0LWJvdW5kZWQnO1xyXG4gICAgICB9XHJcbiAgICAgIHZhciBwcm9wZXJ0eU1vZGlmaWVkID0gdGhpcy5oYXNQcm9wZXJ0eUFscmVhZHlCZWVuTW9kaWZpZWQoa2V5LCBlbnRpdHkpXHJcbiAgICAgIGlmIChrZXkgPT09ICdVcGRhdGVkJyB8fCBrZXkgPT09ICdVcGRhdGVkUmVmJykge1xyXG4gICAgICAgIGVudGl0eVtrZXldID0gdGhpcy5jaGVja0lmRGF0ZVRpbWUoY2hhbmdlLnByb3BlcnRpZXNba2V5XSwgZW50aXR5W2tleV0sIGVudGl0eVR5cGUudHlwZU5hbWUpO1xyXG4gICAgICAgIGlmIChvcmlnaW5hbFZhbHVlcy5oYXNPd25Qcm9wZXJ0eShrZXkpKVxyXG4gICAgICAgICAgZGVsZXRlIG9yaWdpbmFsVmFsdWVzW2tleV07XHJcbiAgICAgIH0gZWxzZSBpZiAoZW50aXR5W2tleV0gIT09IHRoaXMuY2hlY2tJZkRhdGVUaW1lKGNoYW5nZS5wcm9wZXJ0aWVzW2tleV0sIGVudGl0eVtrZXldLCBlbnRpdHlUeXBlLnR5cGVOYW1lKSkge1xyXG4gICAgICAgIGlmICghcHJvcGVydHlNb2RpZmllZCkge1xyXG4gICAgICAgICAgZW50aXR5W2tleV0gPSB0aGlzLmNoZWNrSWZEYXRlVGltZShjaGFuZ2UucHJvcGVydGllc1trZXldLCBlbnRpdHlba2V5XSwgZW50aXR5VHlwZS50eXBlTmFtZSk7XHJcbiAgICAgICAgICBkZWxldGUgb3JpZ2luYWxWYWx1ZXNba2V5XTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5jaGVja0lmRGF0ZVRpbWUoY2hhbmdlLnByb3BlcnRpZXNba2V5XSwgZW50aXR5W2tleV0sIGVudGl0eVR5cGUudHlwZU5hbWUpO1xyXG4gICAgICAgICAgbGV0IG1vZGlmaWVkQnkgPSBjaGFuZ2UubW9kaWZpZWRCeTtcclxuICAgICAgICAgIGxldCBoaWQgPSBjaGFuZ2UucHJvcGVydGllc1trZXkgKyAnSElEJ107XHJcbiAgICAgICAgICBsZXQgbWVyZ2VEYXRhID0gbmV3IFRydU1lcmdlRGF0YSh2YWx1ZSwgbW9kaWZpZWRCeSwgaGlkKTtcclxuICAgICAgICAgIGVudGl0eS5NZXJnZV9EYXRhX1NldC5zZXQoa2V5LCBtZXJnZURhdGEpO1xyXG4gICAgICAgICAgZW50aXR5LmVudGl0eUFzcGVjdC52YWxpZGF0ZVByb3BlcnR5KGtleSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodHlwZW9mIChvcmlnaW5hbFZhbHVlc1trZXldKSAhPT0gJ3VuZGVmaW5lZCcpXHJcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlc1trZXldID0gdGhpcy5jaGVja0lmRGF0ZVRpbWUoY2hhbmdlLnByb3BlcnRpZXNba2V5XSwgZW50aXR5W2tleV0sIGVudGl0eVR5cGUudHlwZU5hbWUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChvcmlnaW5hbFZhbHVlcy5oYXNPd25Qcm9wZXJ0eShrZXkpKVxyXG4gICAgICAgICAgZGVsZXRlIG9yaWdpbmFsVmFsdWVzW2tleV07XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGVudGl0eVsncm93dmVyJ10gPSBjaGFuZ2Uucm93dmVyO1xyXG4gICAgZGVsZXRlIG9yaWdpbmFsVmFsdWVzWydyb3d2ZXInXTtcclxuXHJcbiAgICBpZiAoc3RhdGVCZWZvcmVQcm9wZXJ0eUNoYW5nZS5uYW1lICE9PSBcIk1vZGlmaWVkXCIgfHwgKE9iamVjdC5rZXlzKG9yaWdpbmFsVmFsdWVzKS5sZW5ndGggPT09IDAgJiYgb3JpZ2luYWxWYWx1ZXMuY29uc3RydWN0b3IgPT09IE9iamVjdCkpIHtcclxuICAgICAgaWYgKCFlbnRpdHkuZW50aXR5QXNwZWN0LmlzQmVpbmdTYXZlZCkge1xyXG4gICAgICAgIGVudGl0eS5lbnRpdHlBc3BlY3Quc2V0VW5jaGFuZ2VkKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy53YWl0aW5nRW50aXRpZXMucHVzaChlbnRpdHkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZGVsZXRlIGVudGl0eVsnRGF0YV9Ob3RpZmljYXRpb24nXTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0V2FpdGluZ0VudGl0aWVzVG9VbmNoYW5nZWQgPSAoKSA9PiB7XHJcbiAgICB0aGlzLndhaXRpbmdFbnRpdGllcy5mb3JFYWNoKChlbnRpdHk6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoZW50aXR5ICYmIGVudGl0eS5lbnRpdHlBc3BlY3QpXHJcbiAgICAgICAgZW50aXR5LmVudGl0eUFzcGVjdC5zZXRVbmNoYW5nZWQoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbnRpdHlGb3VuZEJ5UXVlcnkgPSAoY2hhbmdlOiBhbnkpID0+IHtcclxuICAgIHZhciBlbnRpdHlBY2Nlc3NvciA9IHRoaXMuZGF0YUNvbnRleHQuZW50aXR5QWNjZXNzKCk7XHJcbiAgICB2YXIgZW50aXRpZXMgPSBlbnRpdHlBY2Nlc3Nvci5zZWFyY2hCeVJlZkFycmF5Q2FjaGVPbmx5KHRoaXMuZW50aXR5LCB0aGlzLmdldExhdGVzdFF1ZXJ5KCksIFtjaGFuZ2UudGFibGVSZWZdKTtcclxuXHJcbiAgICBpZiAoZW50aXRpZXMgIT09IG51bGwgJiYgIWVudGl0aWVzLmxlbmd0aCkge1xyXG4gICAgICB2YXIgZW50aXR5QWNjZXNzb3IgPSB0aGlzLmdsb2JhbERhdGFDb250ZXh0IS5lbnRpdHlBY2Nlc3MoKTtcclxuICAgICAgZW50aXRpZXMgPSBlbnRpdHlBY2Nlc3Nvci5zZWFyY2hCeVJlZkFycmF5Q2FjaGVPbmx5KHRoaXMuZW50aXR5LCB0aGlzLmdldExhdGVzdFF1ZXJ5KCksIFtjaGFuZ2UudGFibGVSZWZdKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZW50aXRpZXMgPT09IG51bGwgPyAwIDogZW50aXRpZXMubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRFbnRpdHlGcm9tU2VydmVyID0gKGNoYW5nZTogYW55KSA9PiB7XHJcbiAgICB2YXIgZW50aXR5QWNjZXNzb3IgPSB0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpO1xyXG4gICAgdmFyIGVudGl0aXkgPSBlbnRpdHlBY2Nlc3Nvci5zZWFyY2hCeVJlZldpdGhRdWVyeSh0aGlzLmVudGl0eSwgdGhpcy5nZXRMYXRlc3RRdWVyeSgpLCBjaGFuZ2UudGFibGVSZWYpO1xyXG4gICAgcmV0dXJuIGVudGl0aXk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEVudGl0eUZyb21SZXN1bHRzID0gKHJlc3VsdHM6IGFueSwgY2hhbmdlOiBhbnkpID0+IHtcclxuICAgIHJldHVybiByZXN1bHRzLmZpbHRlcigoZTogYW55KSA9PiB7IHJldHVybiBlLlJlZiA9PT0gY2hhbmdlLnRhYmxlUmVmIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc1NhdmluZyA9IGFzeW5jICgpID0+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIHZhciBpbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgICBpZiAoIXRoaXMuYXBwRW52aW9ubWVudC5pc1NhdmluZykge1xyXG4gICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XHJcbiAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCAxMDAwKVxyXG4gICAgfSlcclxuICB9O1xyXG5cclxuICBwcml2YXRlIHVwZGF0ZSA9IGFzeW5jIChwYXlsb2FkOiBhbnkpID0+IHtcclxuICAgIGF3YWl0IHRoaXMuaXNTYXZpbmcoKTtcclxuXHJcbiAgICB2YXIgcmVsb2FkUmVzdWx0cyA9IGZhbHNlO1xyXG4gICAgcGF5bG9hZC5jaGFuZ2VzLmZvckVhY2goYXN5bmMgKGNoYW5nZTogYW55KSA9PiB7XHJcbiAgICAgIHZhciBmb3VuZEVudGl0aWVzID0gW107XHJcbiAgICAgIHZhciBsb2NhbEVudGl0eSA9IHRoaXMuZmluZEVudGl0eUluQ2FjaGUoY2hhbmdlKTtcclxuICAgICAgdmFyIGdsb2JhbEVudGl0eSA9IHRoaXMuZmluZEVudGl0eUluR2xvYmFsQ2FjaGUoY2hhbmdlKTtcclxuICAgICAgaWYgKGxvY2FsRW50aXR5KVxyXG4gICAgICAgIGZvdW5kRW50aXRpZXMucHVzaChsb2NhbEVudGl0eSk7XHJcbiAgICAgIGlmIChnbG9iYWxFbnRpdHkpXHJcbiAgICAgICAgZm91bmRFbnRpdGllcy5wdXNoKGdsb2JhbEVudGl0eSk7XHJcblxyXG4gICAgICBpZiAoZm91bmRFbnRpdGllcy5sZW5ndGgpIHtcclxuICAgICAgICBmb3VuZEVudGl0aWVzLmZvckVhY2goYXN5bmMgKGVudGl0eTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoY2hhbmdlLnRhYmxlTmFtZSA9PT0gdGhpcy50YWJsZU5hbWUpIHtcclxuXHJcbiAgICAgICAgICAgIGlmIChjaGFuZ2UuY2hhbmdlT3BlcmF0aW9uID09PSAnVScpIHtcclxuICAgICAgICAgICAgICB0aGlzLmFwcGx5UHJvcGVydHlDaGFuZ2VzKGNoYW5nZSwgZW50aXR5KTtcclxuXHJcbiAgICAgICAgICAgICAgdmFyIHJlc3VsdHMgPSB0aGlzLmdldExhdGVzdFJlc3VsdHMoKTtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5lbnRpdHlGb3VuZEJ5UXVlcnkoY2hhbmdlKSkge1xyXG4gICAgICAgICAgICAgICAgdmFyIGVudGl0eUFscmVhZHlJblJlc3VsdHMgPSB0aGlzLmdldEVudGl0eUZyb21SZXN1bHRzKHJlc3VsdHMsIGNoYW5nZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWVudGl0eUFscmVhZHlJblJlc3VsdHMubGVuZ3RoICYmIHRoaXMuaXNMb2FkZWQoKSkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmFkZEVudGl0eShlbnRpdHkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmVsb2FkUmVzdWx0cyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHZhciBlbnRpdHlUb1JlbW92ZSA9IHRoaXMuZ2V0RW50aXR5RnJvbVJlc3VsdHMocmVzdWx0cywgY2hhbmdlKTtcclxuICAgICAgICAgICAgICAgIGlmIChlbnRpdHlUb1JlbW92ZS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgcmVzdWx0cy5zcGxpY2UocmVzdWx0cy5pbmRleE9mKGVudGl0eVRvUmVtb3ZlWzBdKSwgMSk7XHJcbiAgICAgICAgICAgICAgICAgIHJlbG9hZFJlc3VsdHMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmIChjaGFuZ2UuY2hhbmdlT3BlcmF0aW9uID09PSAnRCcpIHtcclxuICAgICAgICAgICAgICB2YXIgcmVzdWx0cyA9IHRoaXMuZ2V0TGF0ZXN0UmVzdWx0cygpO1xyXG4gICAgICAgICAgICAgIHZhciBlbnRpdHlUb0RlbGV0ZSA9IHRoaXMuZ2V0RW50aXR5RnJvbVJlc3VsdHMocmVzdWx0cywgY2hhbmdlKTtcclxuICAgICAgICAgICAgICBpZiAoZW50aXR5VG9EZWxldGUubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICBlbnRpdHlUb0RlbGV0ZVswXS5lbnRpdHlBc3BlY3Quc2V0RGV0YWNoZWQoKTtcclxuICAgICAgICAgICAgICAgIHJlc3VsdHMuc3BsaWNlKHJlc3VsdHMuaW5kZXhPZihlbnRpdHlUb0RlbGV0ZVswXSksIDEpO1xyXG4gICAgICAgICAgICAgICAgcmVsb2FkUmVzdWx0cyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNoYW5nZS5jaGFuZ2VPcGVyYXRpb24gPT09ICdJJykge1xyXG4gICAgICAgICAgICAgIHZhciByZXN1bHRzID0gdGhpcy5nZXRMYXRlc3RSZXN1bHRzKCk7XHJcbiAgICAgICAgICAgICAgdmFyIGVudGl0eUFscmVhZHlJblJlc3VsdHMgPSB0aGlzLmdldEVudGl0eUZyb21SZXN1bHRzKHJlc3VsdHMsIGNoYW5nZSk7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuZW50aXR5Rm91bmRCeVF1ZXJ5KGNoYW5nZSkgJiYgIWVudGl0eUFscmVhZHlJblJlc3VsdHMubGVuZ3RoICYmIHRoaXMuaXNMb2FkZWQoKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFsb2NhbEVudGl0eSkge1xyXG4gICAgICAgICAgICAgICAgICB2YXIgbmV3RW50aXR5ID0gdGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5hZGQodGhpcy5lbnRpdHksIHRoaXMuY29udGV4dEZpbHRlcnMpO1xyXG4gICAgICAgICAgICAgICAgICB0eXBlIE9iamVjdEtleSA9IGtleW9mIHR5cGVvZiBuZXdFbnRpdHk7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHBrZXlOYW1lID0gY2hhbmdlLnRhYmxlTmFtZSArICdSZWYnIGFzIE9iamVjdEtleTtcclxuICAgICAgICAgICAgICAgICAgbmV3RW50aXR5W3BrZXlOYW1lXSA9IGNoYW5nZS50YWJsZVJlZjtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5hcHBseVByb3BlcnR5Q2hhbmdlcyhjaGFuZ2UsIG5ld0VudGl0eSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0xvYWRlZCgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRFbnRpdHkobmV3RW50aXR5KTtcclxuICAgICAgICAgICAgICAgICAgICByZWxvYWRSZXN1bHRzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlbnRpdHkgPT09IGxvY2FsRW50aXR5KSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuYXBwbHlQcm9wZXJ0eUNoYW5nZXMoY2hhbmdlLCBlbnRpdHkpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmFkZEVudGl0eShlbnRpdHkpO1xyXG4gICAgICAgICAgICAgICAgICByZWxvYWRSZXN1bHRzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLmVudGl0eUZvdW5kQnlRdWVyeShjaGFuZ2UpICYmIGVudGl0eUFscmVhZHlJblJlc3VsdHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZW50aXR5VG9EZWxldGUgPSB0aGlzLmdldEVudGl0eUZyb21SZXN1bHRzKHJlc3VsdHMsIGNoYW5nZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZW50aXR5VG9EZWxldGUubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgIHJlc3VsdHMuc3BsaWNlKHJlc3VsdHMuaW5kZXhPZihlbnRpdHlBbHJlYWR5SW5SZXN1bHRzWzBdKSwgMSk7XHJcbiAgICAgICAgICAgICAgICAgIHJlbG9hZFJlc3VsdHMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWdsb2JhbEVudGl0eSkge1xyXG4gICAgICAgICAgICAgICAgdmFyIG5ld0VudGl0eSA9IHRoaXMuZ2xvYmFsRGF0YUNvbnRleHQhLmVudGl0eUFjY2VzcygpLmFkZCh0aGlzLmVudGl0eSwgdGhpcy5jb250ZXh0RmlsdGVycyk7XHJcbiAgICAgICAgICAgICAgICB0eXBlIE9iamVjdEtleSA9IGtleW9mIHR5cGVvZiBuZXdFbnRpdHk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwa2V5TmFtZSA9IGNoYW5nZS50YWJsZU5hbWUgKyAnUmVmJyBhcyBPYmplY3RLZXk7XHJcbiAgICAgICAgICAgICAgICBuZXdFbnRpdHlbcGtleU5hbWVdID0gY2hhbmdlLnRhYmxlUmVmO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hcHBseVByb3BlcnR5Q2hhbmdlcyhjaGFuZ2UsIG5ld0VudGl0eSk7XHJcblxyXG4gICAgICAgICAgICAgICAgcmVsb2FkUmVzdWx0cyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJlbG9hZFJlc3VsdHMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIGlmIChjaGFuZ2UuY2hhbmdlT3BlcmF0aW9uICE9PSAnRCcpIHtcclxuICAgICAgICAgICAgdGhpcy5hcHBseVByb3BlcnR5Q2hhbmdlcyhjaGFuZ2UsIGVudGl0eSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoY2hhbmdlLmNoYW5nZU9wZXJhdGlvbiA9PT0gJ1UnICYmIGNoYW5nZS50YWJsZU5hbWUgPT09IHRoaXMudGFibGVOYW1lKSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5nZXRFbnRpdHlGcm9tU2VydmVyKGNoYW5nZSkuc3Vic2NyaWJlKChlbnRpdHk6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGVudGl0eSkge1xyXG4gICAgICAgICAgICB0aGlzLmFwcGx5UHJvcGVydHlDaGFuZ2VzKGNoYW5nZSwgZW50aXR5KTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmVudGl0eUZvdW5kQnlRdWVyeShjaGFuZ2UpICYmIHRoaXMuaXNMb2FkZWQoKSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuYWRkRW50aXR5KG5ld0VudGl0eSk7XHJcbiAgICAgICAgICAgICAgcmVsb2FkUmVzdWx0cyA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoY2hhbmdlLmNoYW5nZU9wZXJhdGlvbiA9PT0gJ0knICYmIGNoYW5nZS50YWJsZU5hbWUgPT09IHRoaXMudGFibGVOYW1lKSB7XHJcbiAgICAgICAgICB2YXIgbmV3RW50aXR5ID0gdGhpcy5nbG9iYWxEYXRhQ29udGV4dCEuZW50aXR5QWNjZXNzKCkuYWRkKHRoaXMuZW50aXR5LCB0aGlzLmNvbnRleHRGaWx0ZXJzKTtcclxuICAgICAgICAgIHR5cGUgT2JqZWN0S2V5ID0ga2V5b2YgdHlwZW9mIG5ld0VudGl0eTtcclxuICAgICAgICAgIGNvbnN0IHBrZXlOYW1lMSA9IGNoYW5nZS50YWJsZU5hbWUgKyAnUmVmJyBhcyBPYmplY3RLZXk7XHJcbiAgICAgICAgICBuZXdFbnRpdHlbcGtleU5hbWUxXSA9IGNoYW5nZS50YWJsZVJlZjtcclxuICAgICAgICAgIHRoaXMuYXBwbHlQcm9wZXJ0eUNoYW5nZXMoY2hhbmdlLCBuZXdFbnRpdHkpO1xyXG5cclxuICAgICAgICAgIG5ld0VudGl0eSA9IHRoaXMuZGF0YUNvbnRleHQuZW50aXR5QWNjZXNzKCkuYWRkKHRoaXMuZW50aXR5LCB0aGlzLmNvbnRleHRGaWx0ZXJzKTtcclxuICAgICAgICAgIHR5cGUgT2JqZWN0S2V5MiA9IGtleW9mIHR5cGVvZiBuZXdFbnRpdHk7XHJcbiAgICAgICAgICBjb25zdCBwa2V5TmFtZTIgPSBjaGFuZ2UudGFibGVOYW1lICsgJ1JlZicgYXMgT2JqZWN0S2V5MjtcclxuICAgICAgICAgIG5ld0VudGl0eVtwa2V5TmFtZTJdID0gY2hhbmdlLnRhYmxlUmVmO1xyXG4gICAgICAgICAgdGhpcy5hcHBseVByb3BlcnR5Q2hhbmdlcyhjaGFuZ2UsIG5ld0VudGl0eSk7XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMuZW50aXR5Rm91bmRCeVF1ZXJ5KGNoYW5nZSkgJiYgdGhpcy5pc0xvYWRlZCgpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkRW50aXR5KG5ld0VudGl0eSk7XHJcbiAgICAgICAgICAgIHJlbG9hZFJlc3VsdHMgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAoY2hhbmdlLmNoYW5nZU9wZXJhdGlvbiA9PT0gJ0knKSB7XHJcbiAgICAgICAgICBsZXQgZW50aXR5VHlwZSA9IHRoaXMudHlwZXMuZ2V0VHlwZShjaGFuZ2UudGFibGVOYW1lKTtcclxuICAgICAgICAgIHZhciBuZXdFbnRpdHkgPSB0aGlzLmdsb2JhbERhdGFDb250ZXh0IS5lbnRpdHlBY2Nlc3MoKS5hZGQoZW50aXR5VHlwZSBhcyBhbnksIHRoaXMuY29udGV4dEZpbHRlcnMpO1xyXG4gICAgICAgICAgdHlwZSBPYmplY3RLZXkgPSBrZXlvZiB0eXBlb2YgbmV3RW50aXR5O1xyXG4gICAgICAgICAgY29uc3QgcGtleU5hbWUxID0gY2hhbmdlLnRhYmxlTmFtZSArICdSZWYnIGFzIE9iamVjdEtleTtcclxuICAgICAgICAgIG5ld0VudGl0eVtwa2V5TmFtZTFdID0gY2hhbmdlLnRhYmxlUmVmO1xyXG4gICAgICAgICAgdGhpcy5hcHBseVByb3BlcnR5Q2hhbmdlcyhjaGFuZ2UsIG5ld0VudGl0eSk7XHJcblxyXG4gICAgICAgICAgbmV3RW50aXR5ID0gdGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5hZGQoZW50aXR5VHlwZSBhcyBhbnksIHRoaXMuY29udGV4dEZpbHRlcnMpO1xyXG4gICAgICAgICAgdHlwZSBPYmplY3RLZXkyID0ga2V5b2YgdHlwZW9mIG5ld0VudGl0eTtcclxuICAgICAgICAgIGNvbnN0IHBrZXlOYW1lMiA9IGNoYW5nZS50YWJsZU5hbWUgKyAnUmVmJyBhcyBPYmplY3RLZXkyO1xyXG4gICAgICAgICAgbmV3RW50aXR5W3BrZXlOYW1lMl0gPSBjaGFuZ2UudGFibGVSZWY7XHJcbiAgICAgICAgICB0aGlzLmFwcGx5UHJvcGVydHlDaGFuZ2VzKGNoYW5nZSwgbmV3RW50aXR5KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLmV4cGFuZFBhdGhzICYmIHRoaXMuZXhwYW5kUGF0aHMubGVuZ3RoICYmIHRoaXMuZXhwYW5kUGF0aHMuaW5jbHVkZXMoJ28nICsgY2hhbmdlLnRhYmxlTmFtZSkpXHJcbiAgICAgICAgcmVsb2FkUmVzdWx0cyA9IHRydWU7XHJcbiAgICB9KTtcclxuXHJcbiAgICBsZXQgZGF0YUNoYW5nZUFyZ3MgPSBuZXcgVHJ1RGF0YUNoYW5nZSgpO1xyXG4gICAgZGF0YUNoYW5nZUFyZ3MuZGF0YUNoYW5nZXMgPSBwYXlsb2FkLmNoYW5nZXM7XHJcbiAgICBkYXRhQ2hhbmdlQXJncy5yZWxvYWQgPSByZWxvYWRSZXN1bHRzO1xyXG4gICAgdGhpcy5kYXRhQ2hhbmdlZChkYXRhQ2hhbmdlQXJncyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
278
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWRhdGEtY2hhbmdlLXBhcnNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY2xhc3Nlcy90cnUtZGF0YS1jaGFuZ2UtcGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9CLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBS2pGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHaEQsTUFBTSxPQUFPLG1CQUFtQjtJQUN0QixhQUFhLENBQW9CO0lBQ2pDLFdBQVcsQ0FBaUI7SUFDNUIsTUFBTSxDQUFNO0lBQ1osU0FBUyxDQUFTO0lBQ2xCLFNBQVMsQ0FBMkI7SUFDcEMsZ0JBQWdCLENBQVk7SUFDNUIsY0FBYyxDQUFNO0lBQ3BCLGNBQWMsQ0FBSztJQUNuQixXQUFXLENBQWdCO0lBQzNCLFFBQVEsQ0FBZ0I7SUFDeEIsS0FBSyxDQUFxQjtJQUMxQixhQUFhLENBQXFDO0lBRWxELGlCQUFpQixDQUF3QjtJQUN6QyxlQUFlLEdBQXlCLEVBQUUsQ0FBQztJQUUzQyxZQUFZLEdBQTJCLElBQUksT0FBTyxFQUFpQixDQUFDO0lBRTVFLGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUFxQjtRQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsWUFDRSxVQUFlLEVBQ2YsYUFBZ0MsRUFDaEMsV0FBMkIsRUFDM0IsaUJBQXdDLEVBQ3hDLE1BQTRCLEVBQzVCLFNBQWlC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QUFJLGNBQWMsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBQ3pDLGNBQWMsQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUM3QyxjQUFjLENBQUMsTUFBTSxHQUFHLGFBQWEsQ0FBQztRQUN0QyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ25DLENBQUMsQ0FBQTtDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50XCI7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBUcnVFbnRpdHlCYXNlIH0gZnJvbSBcIi4uL2Jhc2UtY2xhc3Nlcy90cnUtZW50aXR5LWJhc2VcIjtcclxuaW1wb3J0IHsgVHJ1UHJvcGVydHlDb25maWdCYXNlIH0gZnJvbSBcIi4uL2Jhc2UtY2xhc3Nlcy90cnUtcHJvcGVydHktY29uZmlnLWJhc2VcIjtcclxuaW1wb3J0IHsgVHJ1QXBwRW52aXJvbm1lbnQgfSBmcm9tIFwiLi4vc2VydmljZXMvdHJ1LWFwcC1lbnZpcm9ubWVudFwiO1xyXG5pbXBvcnQgeyBUcnVEYXRhQ29udGV4dCB9IGZyb20gXCIuLi9zZXJ2aWNlcy90cnUtZGF0YS1jb250ZXh0XCI7XHJcbmltcG9ydCB7IFRydU1vZGVsUHJvcGVydHlMb29rdXAgfSBmcm9tIFwiLi4vc2VydmljZXMvdHJ1LW1vZGVsLXByb3BlcnR5LWxvb2t1cFwiO1xyXG5pbXBvcnQgeyBUcnVNb2RlbFR5cGVMb29rdXAgfSBmcm9tIFwiLi4vc2VydmljZXMvdHJ1LW1vZGVsLXR5cGUtbG9va3VwXCI7XHJcbmltcG9ydCB7IFRydURhdGFDaGFuZ2UgfSBmcm9tIFwiLi90cnUtZGF0YS1jaGFuZ2VcIjtcclxuaW1wb3J0IHsgVHJ1TWVyZ2VEYXRhIH0gZnJvbSBcIi4vdHJ1LW1lcmdlLWRhdGFcIjtcclxuXHJcblxyXG5leHBvcnQgY2xhc3MgVHJ1RGF0YUNoYW5nZVBhcnNlciB7XHJcbiAgcHJpdmF0ZSBhcHBFbnZpb25tZW50OiBUcnVBcHBFbnZpcm9ubWVudDtcclxuICBwcml2YXRlIGRhdGFDb250ZXh0OiBUcnVEYXRhQ29udGV4dDtcclxuICBwcml2YXRlIGVudGl0eTogYW55O1xyXG4gIHByaXZhdGUgdGFibGVOYW1lOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBhZGRFbnRpdHk6IChuZXdFbnRpdHk6IGFueSkgPT4gdm9pZDtcclxuICBwcml2YXRlIGdldExhdGVzdFJlc3VsdHM6ICgpID0+IGFueTtcclxuICBwcml2YXRlIGdldExhdGVzdFF1ZXJ5OiBhbnk7XHJcbiAgcHJpdmF0ZSBjb250ZXh0RmlsdGVyczogW107XHJcbiAgcHJpdmF0ZSBleHBhbmRQYXRoczogQXJyYXk8c3RyaW5nPjtcclxuICBwcml2YXRlIGlzTG9hZGVkOiAoKSA9PiBib29sZWFuO1xyXG4gIHByaXZhdGUgdHlwZXM6IFRydU1vZGVsVHlwZUxvb2t1cDtcclxuICBwcml2YXRlIHByb3BlcnR5VHlwZXM6IE1hcDxzdHJpbmcsIFRydVByb3BlcnR5Q29uZmlnQmFzZT47XHJcblxyXG4gIHByaXZhdGUgZ2xvYmFsRGF0YUNvbnRleHQ6IFRydURhdGFDb250ZXh0IHwgbnVsbDtcclxuICBwcml2YXRlIHdhaXRpbmdFbnRpdGllczogQXJyYXk8VHJ1RW50aXR5QmFzZT4gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBkYXRhQ2hhbmdlZCQ6IFN1YmplY3Q8VHJ1RGF0YUNoYW5nZT4gPSBuZXcgU3ViamVjdDxUcnVEYXRhQ2hhbmdlPigpO1xyXG5cclxuICBvbkRhdGFDaGFuZ2VkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YUNoYW5nZWQkO1xyXG4gIH1cclxuXHJcbiAgZGF0YUNoYW5nZWQoY2hhbmdlOiBUcnVEYXRhQ2hhbmdlKSB7XHJcbiAgICB0aGlzLmRhdGFDaGFuZ2VkJC5uZXh0KGNoYW5nZSk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIGNvbm5lY3Rpb246IGFueSxcclxuICAgIGFwcEVudmlyb21lbnQ6IFRydUFwcEVudmlyb25tZW50LFxyXG4gICAgZGF0YUNvbnRleHQ6IFRydURhdGFDb250ZXh0LFxyXG4gICAgZ2xvYmFsRGF0YUNvbnRleHQ6IFRydURhdGFDb250ZXh0IHwgbnVsbCxcclxuICAgIGVudGl0eTogdHlwZW9mIFRydUVudGl0eUJhc2UsXHJcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcclxuICAgIGFkZEVudGl0eTogYW55LFxyXG4gICAgZ2V0TGF0ZXN0UmVzdWx0czogYW55LFxyXG4gICAgZ2V0TGF0ZXN0UXVlcnk6IGFueSxcclxuICAgIGNvbnRleHRGaWx0ZXJzOiBbXSxcclxuICAgIGV4cGFuZFBhdGhzOiBBcnJheTxzdHJpbmc+LFxyXG4gICAgaXNMb2FkZWQ6ICgpID0+IGJvb2xlYW4sXHJcbiAgICBtb2RlbFR5cGVMb29rdXA6IFRydU1vZGVsVHlwZUxvb2t1cCxcclxuICAgIG1vZGVsUHJvcGVydHlMb29rdXA6IFRydU1vZGVsUHJvcGVydHlMb29rdXBcclxuICApIHtcclxuICAgIHRoaXMuYXBwRW52aW9ubWVudCA9IGFwcEVudmlyb21lbnQ7XHJcbiAgICB0aGlzLmRhdGFDb250ZXh0ID0gZGF0YUNvbnRleHQ7XHJcbiAgICB0aGlzLmdsb2JhbERhdGFDb250ZXh0ID0gZ2xvYmFsRGF0YUNvbnRleHQ7XHJcbiAgICB0aGlzLmVudGl0eSA9IGVudGl0eTtcclxuICAgIHRoaXMudGFibGVOYW1lID0gdGFibGVOYW1lO1xyXG4gICAgdGhpcy5hZGRFbnRpdHkgPSBhZGRFbnRpdHk7XHJcbiAgICB0aGlzLmdldExhdGVzdFJlc3VsdHMgPSBnZXRMYXRlc3RSZXN1bHRzO1xyXG4gICAgdGhpcy5nZXRMYXRlc3RRdWVyeSA9IGdldExhdGVzdFF1ZXJ5O1xyXG4gICAgdGhpcy5jb250ZXh0RmlsdGVycyA9IGNvbnRleHRGaWx0ZXJzO1xyXG4gICAgdGhpcy5leHBhbmRQYXRocyA9IGV4cGFuZFBhdGhzO1xyXG4gICAgdGhpcy5pc0xvYWRlZCA9IGlzTG9hZGVkO1xyXG4gICAgdGhpcy50eXBlcyA9IG1vZGVsVHlwZUxvb2t1cDsgXHJcbiAgICB0aGlzLnByb3BlcnR5VHlwZXMgPSBtb2RlbFByb3BlcnR5TG9va3VwLmxvb2t1cDtcclxuXHJcbiAgICBjb25uZWN0aW9uLm9uKFwiY2hhbmdlXCIsIChwYXlsb2FkOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy51cGRhdGUocGF5bG9hZCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmluZEVudGl0eUluQ2FjaGUgPSAoY2hhbmdlOiBhbnkpID0+IHtcclxuICAgIHZhciBlbnRpdHlBY2Nlc3NvciA9IHRoaXMuZGF0YUNvbnRleHQuZW50aXR5QWNjZXNzKCk7XHJcbiAgICByZXR1cm4gZW50aXR5QWNjZXNzb3Iuc2VhcmNoQnlSZWZDYWNoZU9ubHkodGhpcy50eXBlcy5nZXRUeXBlKGNoYW5nZS50YWJsZU5hbWUpLCBwYXJzZUludChjaGFuZ2UudGFibGVSZWYsIDEwKSwgdHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbmRFbnRpdHlJbkdsb2JhbENhY2hlID0gKGNoYW5nZTogYW55KSA9PiB7XHJcbiAgICB2YXIgZW50aXR5QWNjZXNzb3IgPSB0aGlzLmdsb2JhbERhdGFDb250ZXh0IS5lbnRpdHlBY2Nlc3MoKTtcclxuICAgIHJldHVybiBlbnRpdHlBY2Nlc3Nvci5zZWFyY2hCeVJlZkNhY2hlT25seSh0aGlzLnR5cGVzLmdldFR5cGUoY2hhbmdlLnRhYmxlTmFtZSksIHBhcnNlSW50KGNoYW5nZS50YWJsZVJlZiwgMTApLCB0cnVlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tJZkRhdGVUaW1lID0gKG5ld1ZhbHVlOiBhbnksIGN1cnJlbnRWYWx1ZTogYW55LCB0eXBlTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PiB7XHJcbiAgICBpZiAodHlwZU5hbWUgPT09ICdkYXRlLXRpbWUnIHx8IHR5cGVOYW1lID09PSAnZGF0ZScpIHtcclxuICAgICAgaWYgKG1vbWVudChuZXdWYWx1ZSwgXCJZWVlZLU1NLUREIEhIOm1tOnNzLnNzc3Nzc3NcIiwgdHJ1ZSkuaXNWYWxpZCgpKVxyXG4gICAgICAgIHJldHVybiBtb21lbnQobW9tZW50LnV0YyhuZXdWYWx1ZSkudG9EYXRlKCkpLmZvcm1hdCgnTU0vREQvWVlZWSBoaDptbSBBJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3VmFsdWVcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFzUHJvcGVydHlBbHJlYWR5QmVlbk1vZGlmaWVkID0gKHByb3BlcnR5TmFtZTogc3RyaW5nLCBlbnRpdHk6IGFueSkgPT4ge1xyXG4gICAgcmV0dXJuIGVudGl0eS5lbnRpdHlBc3BlY3Qub3JpZ2luYWxWYWx1ZXMuaGFzT3duUHJvcGVydHkocHJvcGVydHlOYW1lKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwbHlQcm9wZXJ0eUNoYW5nZXMgPSAoY2hhbmdlOiBhbnksIGVudGl0eTogYW55KSA9PiB7XHJcbiAgICB2YXIgc3RhdGVCZWZvcmVQcm9wZXJ0eUNoYW5nZSA9IGVudGl0eS5lbnRpdHlBc3BlY3QuZW50aXR5U3RhdGU7XHJcbiAgICB2YXIgb3JpZ2luYWxWYWx1ZXMgPSBlbnRpdHkuZW50aXR5QXNwZWN0Lm9yaWdpbmFsVmFsdWVzO1xyXG5cclxuICAgIGVudGl0eVsnRGF0YV9Ob3RpZmljYXRpb24nXSA9IHRydWU7XHJcblxyXG4gICAgT2JqZWN0LmtleXMoY2hhbmdlLnByb3BlcnRpZXMpLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICB2YXIgZW50aXR5VHlwZSA9IHRoaXMucHJvcGVydHlUeXBlcy5nZXQoY2hhbmdlLnRhYmxlTmFtZSArICcuJyArIGtleSk7XHJcbiAgICAgIGlmICghZW50aXR5VHlwZSkge1xyXG4gICAgICAgIGVudGl0eVR5cGUgPSBuZXcgVHJ1UHJvcGVydHlDb25maWdCYXNlKCk7XHJcbiAgICAgICAgZW50aXR5VHlwZS50eXBlTmFtZSA9ICd0ZXh0LWJvdW5kZWQnO1xyXG4gICAgICB9XHJcbiAgICAgIHZhciBwcm9wZXJ0eU1vZGlmaWVkID0gdGhpcy5oYXNQcm9wZXJ0eUFscmVhZHlCZWVuTW9kaWZpZWQoa2V5LCBlbnRpdHkpXHJcbiAgICAgIGlmIChrZXkgPT09ICdVcGRhdGVkJyB8fCBrZXkgPT09ICdVcGRhdGVkUmVmJykge1xyXG4gICAgICAgIGVudGl0eVtrZXldID0gdGhpcy5jaGVja0lmRGF0ZVRpbWUoY2hhbmdlLnByb3BlcnRpZXNba2V5XSwgZW50aXR5W2tleV0sIGVudGl0eVR5cGUudHlwZU5hbWUpO1xyXG4gICAgICAgIGlmIChvcmlnaW5hbFZhbHVlcy5oYXNPd25Qcm9wZXJ0eShrZXkpKVxyXG4gICAgICAgICAgZGVsZXRlIG9yaWdpbmFsVmFsdWVzW2tleV07XHJcbiAgICAgIH0gZWxzZSBpZiAoZW50aXR5W2tleV0gIT09IHRoaXMuY2hlY2tJZkRhdGVUaW1lKGNoYW5nZS5wcm9wZXJ0aWVzW2tleV0sIGVudGl0eVtrZXldLCBlbnRpdHlUeXBlLnR5cGVOYW1lKSkge1xyXG4gICAgICAgIGlmICghcHJvcGVydHlNb2RpZmllZCkge1xyXG4gICAgICAgICAgZW50aXR5W2tleV0gPSB0aGlzLmNoZWNrSWZEYXRlVGltZShjaGFuZ2UucHJvcGVydGllc1trZXldLCBlbnRpdHlba2V5XSwgZW50aXR5VHlwZS50eXBlTmFtZSk7XHJcbiAgICAgICAgICBkZWxldGUgb3JpZ2luYWxWYWx1ZXNba2V5XTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5jaGVja0lmRGF0ZVRpbWUoY2hhbmdlLnByb3BlcnRpZXNba2V5XSwgZW50aXR5W2tleV0sIGVudGl0eVR5cGUudHlwZU5hbWUpO1xyXG4gICAgICAgICAgbGV0IG1vZGlmaWVkQnkgPSBjaGFuZ2UubW9kaWZpZWRCeTtcclxuICAgICAgICAgIGxldCBoaWQgPSBjaGFuZ2UucHJvcGVydGllc1trZXkgKyAnSElEJ107XHJcbiAgICAgICAgICBsZXQgbWVyZ2VEYXRhID0gbmV3IFRydU1lcmdlRGF0YSh2YWx1ZSwgbW9kaWZpZWRCeSwgaGlkKTtcclxuICAgICAgICAgIGVudGl0eS5NZXJnZV9EYXRhX1NldC5zZXQoa2V5LCBtZXJnZURhdGEpO1xyXG4gICAgICAgICAgZW50aXR5LmVudGl0eUFzcGVjdC52YWxpZGF0ZVByb3BlcnR5KGtleSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodHlwZW9mIChvcmlnaW5hbFZhbHVlc1trZXldKSAhPT0gJ3VuZGVmaW5lZCcpXHJcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlc1trZXldID0gdGhpcy5jaGVja0lmRGF0ZVRpbWUoY2hhbmdlLnByb3BlcnRpZXNba2V5XSwgZW50aXR5W2tleV0sIGVudGl0eVR5cGUudHlwZU5hbWUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChvcmlnaW5hbFZhbHVlcy5oYXNPd25Qcm9wZXJ0eShrZXkpKVxyXG4gICAgICAgICAgZGVsZXRlIG9yaWdpbmFsVmFsdWVzW2tleV07XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGVudGl0eVsncm93dmVyJ10gPSBjaGFuZ2Uucm93dmVyO1xyXG4gICAgZGVsZXRlIG9yaWdpbmFsVmFsdWVzWydyb3d2ZXInXTtcclxuXHJcbiAgICBpZiAoc3RhdGVCZWZvcmVQcm9wZXJ0eUNoYW5nZS5uYW1lICE9PSBcIk1vZGlmaWVkXCIgfHwgKE9iamVjdC5rZXlzKG9yaWdpbmFsVmFsdWVzKS5sZW5ndGggPT09IDAgJiYgb3JpZ2luYWxWYWx1ZXMuY29uc3RydWN0b3IgPT09IE9iamVjdCkpIHtcclxuICAgICAgaWYgKCFlbnRpdHkuZW50aXR5QXNwZWN0LmlzQmVpbmdTYXZlZCkge1xyXG4gICAgICAgIGVudGl0eS5lbnRpdHlBc3BlY3Quc2V0VW5jaGFuZ2VkKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy53YWl0aW5nRW50aXRpZXMucHVzaChlbnRpdHkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZGVsZXRlIGVudGl0eVsnRGF0YV9Ob3RpZmljYXRpb24nXTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0V2FpdGluZ0VudGl0aWVzVG9VbmNoYW5nZWQgPSAoKSA9PiB7XHJcbiAgICB0aGlzLndhaXRpbmdFbnRpdGllcy5mb3JFYWNoKChlbnRpdHk6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoZW50aXR5ICYmIGVudGl0eS5lbnRpdHlBc3BlY3QpXHJcbiAgICAgICAgZW50aXR5LmVudGl0eUFzcGVjdC5zZXRVbmNoYW5nZWQoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbnRpdHlGb3VuZEJ5UXVlcnkgPSAoY2hhbmdlOiBhbnkpID0+IHtcclxuICAgIHZhciBlbnRpdHlBY2Nlc3NvciA9IHRoaXMuZGF0YUNvbnRleHQuZW50aXR5QWNjZXNzKCk7XHJcbiAgICB2YXIgZW50aXRpZXMgPSBlbnRpdHlBY2Nlc3Nvci5zZWFyY2hCeVJlZkFycmF5Q2FjaGVPbmx5KHRoaXMuZW50aXR5LCB0aGlzLmdldExhdGVzdFF1ZXJ5KCksIFtjaGFuZ2UudGFibGVSZWZdKTtcclxuXHJcbiAgICBpZiAoZW50aXRpZXMgIT09IG51bGwgJiYgIWVudGl0aWVzLmxlbmd0aCkge1xyXG4gICAgICB2YXIgZW50aXR5QWNjZXNzb3IgPSB0aGlzLmdsb2JhbERhdGFDb250ZXh0IS5lbnRpdHlBY2Nlc3MoKTtcclxuICAgICAgZW50aXRpZXMgPSBlbnRpdHlBY2Nlc3Nvci5zZWFyY2hCeVJlZkFycmF5Q2FjaGVPbmx5KHRoaXMuZW50aXR5LCB0aGlzLmdldExhdGVzdFF1ZXJ5KCksIFtjaGFuZ2UudGFibGVSZWZdKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZW50aXRpZXMgPT09IG51bGwgPyAwIDogZW50aXRpZXMubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRFbnRpdHlGcm9tU2VydmVyID0gKGNoYW5nZTogYW55KSA9PiB7XHJcbiAgICB2YXIgZW50aXR5QWNjZXNzb3IgPSB0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpO1xyXG4gICAgdmFyIGVudGl0aXkgPSBlbnRpdHlBY2Nlc3Nvci5zZWFyY2hCeVJlZldpdGhRdWVyeSh0aGlzLmVudGl0eSwgdGhpcy5nZXRMYXRlc3RRdWVyeSgpLCBjaGFuZ2UudGFibGVSZWYpO1xyXG4gICAgcmV0dXJuIGVudGl0aXk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEVudGl0eUZyb21SZXN1bHRzID0gKHJlc3VsdHM6IGFueSwgY2hhbmdlOiBhbnkpID0+IHtcclxuICAgIHJldHVybiByZXN1bHRzLmZpbHRlcigoZTogYW55KSA9PiB7IHJldHVybiBlLlJlZiA9PT0gY2hhbmdlLnRhYmxlUmVmIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc1NhdmluZyA9IGFzeW5jICgpID0+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIHZhciBpbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgICBpZiAoIXRoaXMuYXBwRW52aW9ubWVudC5pc1NhdmluZykge1xyXG4gICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XHJcbiAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCAxMDAwKVxyXG4gICAgfSlcclxuICB9O1xyXG5cclxuICBwcml2YXRlIHVwZGF0ZSA9IGFzeW5jIChwYXlsb2FkOiBhbnkpID0+IHtcclxuICAgIGF3YWl0IHRoaXMuaXNTYXZpbmcoKTtcclxuXHJcbiAgICB2YXIgcmVsb2FkUmVzdWx0cyA9IGZhbHNlO1xyXG4gICAgcGF5bG9hZC5jaGFuZ2VzLmZvckVhY2goYXN5bmMgKGNoYW5nZTogYW55KSA9PiB7XHJcbiAgICAgIHZhciBmb3VuZEVudGl0aWVzID0gW107XHJcbiAgICAgIHZhciBsb2NhbEVudGl0eSA9IHRoaXMuZmluZEVudGl0eUluQ2FjaGUoY2hhbmdlKTtcclxuICAgICAgdmFyIGdsb2JhbEVudGl0eSA9IHRoaXMuZmluZEVudGl0eUluR2xvYmFsQ2FjaGUoY2hhbmdlKTtcclxuICAgICAgaWYgKGxvY2FsRW50aXR5KVxyXG4gICAgICAgIGZvdW5kRW50aXRpZXMucHVzaChsb2NhbEVudGl0eSk7XHJcbiAgICAgIGlmIChnbG9iYWxFbnRpdHkpXHJcbiAgICAgICAgZm91bmRFbnRpdGllcy5wdXNoKGdsb2JhbEVudGl0eSk7XHJcblxyXG4gICAgICBpZiAoZm91bmRFbnRpdGllcy5sZW5ndGgpIHtcclxuICAgICAgICBmb3VuZEVudGl0aWVzLmZvckVhY2goYXN5bmMgKGVudGl0eTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoY2hhbmdlLnRhYmxlTmFtZSA9PT0gdGhpcy50YWJsZU5hbWUpIHtcclxuXHJcbiAgICAgICAgICAgIGlmIChjaGFuZ2UuY2hhbmdlT3BlcmF0aW9uID09PSAnVScpIHtcclxuICAgICAgICAgICAgICB0aGlzLmFwcGx5UHJvcGVydHlDaGFuZ2VzKGNoYW5nZSwgZW50aXR5KTtcclxuXHJcbiAgICAgICAgICAgICAgdmFyIHJlc3VsdHMgPSB0aGlzLmdldExhdGVzdFJlc3VsdHMoKTtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5lbnRpdHlGb3VuZEJ5UXVlcnkoY2hhbmdlKSkge1xyXG4gICAgICAgICAgICAgICAgdmFyIGVudGl0eUFscmVhZHlJblJlc3VsdHMgPSB0aGlzLmdldEVudGl0eUZyb21SZXN1bHRzKHJlc3VsdHMsIGNoYW5nZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWVudGl0eUFscmVhZHlJblJlc3VsdHMubGVuZ3RoICYmIHRoaXMuaXNMb2FkZWQoKSkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmFkZEVudGl0eShlbnRpdHkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmVsb2FkUmVzdWx0cyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHZhciBlbnRpdHlUb1JlbW92ZSA9IHRoaXMuZ2V0RW50aXR5RnJvbVJlc3VsdHMocmVzdWx0cywgY2hhbmdlKTtcclxuICAgICAgICAgICAgICAgIGlmIChlbnRpdHlUb1JlbW92ZS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgcmVzdWx0cy5zcGxpY2UocmVzdWx0cy5pbmRleE9mKGVudGl0eVRvUmVtb3ZlWzBdKSwgMSk7XHJcbiAgICAgICAgICAgICAgICAgIHJlbG9hZFJlc3VsdHMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmIChjaGFuZ2UuY2hhbmdlT3BlcmF0aW9uID09PSAnRCcpIHtcclxuICAgICAgICAgICAgICB2YXIgcmVzdWx0cyA9IHRoaXMuZ2V0TGF0ZXN0UmVzdWx0cygpO1xyXG4gICAgICAgICAgICAgIHZhciBlbnRpdHlUb0RlbGV0ZSA9IHRoaXMuZ2V0RW50aXR5RnJvbVJlc3VsdHMocmVzdWx0cywgY2hhbmdlKTtcclxuICAgICAgICAgICAgICBpZiAoZW50aXR5VG9EZWxldGUubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICBlbnRpdHlUb0RlbGV0ZVswXS5lbnRpdHlBc3BlY3Quc2V0RGV0YWNoZWQoKTtcclxuICAgICAgICAgICAgICAgIHJlc3VsdHMuc3BsaWNlKHJlc3VsdHMuaW5kZXhPZihlbnRpdHlUb0RlbGV0ZVswXSksIDEpO1xyXG4gICAgICAgICAgICAgICAgcmVsb2FkUmVzdWx0cyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNoYW5nZS5jaGFuZ2VPcGVyYXRpb24gPT09ICdJJykge1xyXG4gICAgICAgICAgICAgIHZhciByZXN1bHRzID0gdGhpcy5nZXRMYXRlc3RSZXN1bHRzKCk7XHJcbiAgICAgICAgICAgICAgdmFyIGVudGl0eUFscmVhZHlJblJlc3VsdHMgPSB0aGlzLmdldEVudGl0eUZyb21SZXN1bHRzKHJlc3VsdHMsIGNoYW5nZSk7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuZW50aXR5Rm91bmRCeVF1ZXJ5KGNoYW5nZSkgJiYgIWVudGl0eUFscmVhZHlJblJlc3VsdHMubGVuZ3RoICYmIHRoaXMuaXNMb2FkZWQoKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFsb2NhbEVudGl0eSkge1xyXG4gICAgICAgICAgICAgICAgICB2YXIgbmV3RW50aXR5ID0gdGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5hZGQodGhpcy5lbnRpdHksIHRoaXMuY29udGV4dEZpbHRlcnMpO1xyXG4gICAgICAgICAgICAgICAgICB0eXBlIE9iamVjdEtleSA9IGtleW9mIHR5cGVvZiBuZXdFbnRpdHk7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHBrZXlOYW1lID0gY2hhbmdlLnRhYmxlTmFtZSArICdSZWYnIGFzIE9iamVjdEtleTtcclxuICAgICAgICAgICAgICAgICAgbmV3RW50aXR5W3BrZXlOYW1lXSA9IGNoYW5nZS50YWJsZVJlZjtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5hcHBseVByb3BlcnR5Q2hhbmdlcyhjaGFuZ2UsIG5ld0VudGl0eSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0xvYWRlZCgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRFbnRpdHkobmV3RW50aXR5KTtcclxuICAgICAgICAgICAgICAgICAgICByZWxvYWRSZXN1bHRzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlbnRpdHkgPT09IGxvY2FsRW50aXR5KSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuYXBwbHlQcm9wZXJ0eUNoYW5nZXMoY2hhbmdlLCBlbnRpdHkpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmFkZEVudGl0eShlbnRpdHkpO1xyXG4gICAgICAgICAgICAgICAgICByZWxvYWRSZXN1bHRzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLmVudGl0eUZvdW5kQnlRdWVyeShjaGFuZ2UpICYmIGVudGl0eUFscmVhZHlJblJlc3VsdHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZW50aXR5VG9EZWxldGUgPSB0aGlzLmdldEVudGl0eUZyb21SZXN1bHRzKHJlc3VsdHMsIGNoYW5nZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZW50aXR5VG9EZWxldGUubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgIHJlc3VsdHMuc3BsaWNlKHJlc3VsdHMuaW5kZXhPZihlbnRpdHlBbHJlYWR5SW5SZXN1bHRzWzBdKSwgMSk7XHJcbiAgICAgICAgICAgICAgICAgIHJlbG9hZFJlc3VsdHMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWdsb2JhbEVudGl0eSkge1xyXG4gICAgICAgICAgICAgICAgdmFyIG5ld0VudGl0eSA9IHRoaXMuZ2xvYmFsRGF0YUNvbnRleHQhLmVudGl0eUFjY2VzcygpLmFkZCh0aGlzLmVudGl0eSwgdGhpcy5jb250ZXh0RmlsdGVycyk7XHJcbiAgICAgICAgICAgICAgICB0eXBlIE9iamVjdEtleSA9IGtleW9mIHR5cGVvZiBuZXdFbnRpdHk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwa2V5TmFtZSA9IGNoYW5nZS50YWJsZU5hbWUgKyAnUmVmJyBhcyBPYmplY3RLZXk7XHJcbiAgICAgICAgICAgICAgICBuZXdFbnRpdHlbcGtleU5hbWVdID0gY2hhbmdlLnRhYmxlUmVmO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hcHBseVByb3BlcnR5Q2hhbmdlcyhjaGFuZ2UsIG5ld0VudGl0eSk7XHJcblxyXG4gICAgICAgICAgICAgICAgcmVsb2FkUmVzdWx0cyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJlbG9hZFJlc3VsdHMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIGlmIChjaGFuZ2UuY2hhbmdlT3BlcmF0aW9uICE9PSAnRCcpIHtcclxuICAgICAgICAgICAgdGhpcy5hcHBseVByb3BlcnR5Q2hhbmdlcyhjaGFuZ2UsIGVudGl0eSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoY2hhbmdlLmNoYW5nZU9wZXJhdGlvbiA9PT0gJ1UnICYmIGNoYW5nZS50YWJsZU5hbWUgPT09IHRoaXMudGFibGVOYW1lKSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5nZXRFbnRpdHlGcm9tU2VydmVyKGNoYW5nZSkuc3Vic2NyaWJlKChlbnRpdHk6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGVudGl0eSkge1xyXG4gICAgICAgICAgICB0aGlzLmFwcGx5UHJvcGVydHlDaGFuZ2VzKGNoYW5nZSwgZW50aXR5KTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmVudGl0eUZvdW5kQnlRdWVyeShjaGFuZ2UpICYmIHRoaXMuaXNMb2FkZWQoKSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuYWRkRW50aXR5KG5ld0VudGl0eSk7XHJcbiAgICAgICAgICAgICAgcmVsb2FkUmVzdWx0cyA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoY2hhbmdlLmNoYW5nZU9wZXJhdGlvbiA9PT0gJ0knICYmIGNoYW5nZS50YWJsZU5hbWUgPT09IHRoaXMudGFibGVOYW1lKSB7XHJcbiAgICAgICAgICB2YXIgbmV3RW50aXR5ID0gdGhpcy5nbG9iYWxEYXRhQ29udGV4dCEuZW50aXR5QWNjZXNzKCkuYWRkKHRoaXMuZW50aXR5LCB0aGlzLmNvbnRleHRGaWx0ZXJzKTtcclxuICAgICAgICAgIHR5cGUgT2JqZWN0S2V5ID0ga2V5b2YgdHlwZW9mIG5ld0VudGl0eTtcclxuICAgICAgICAgIGNvbnN0IHBrZXlOYW1lMSA9IGNoYW5nZS50YWJsZU5hbWUgKyAnUmVmJyBhcyBPYmplY3RLZXk7XHJcbiAgICAgICAgICBuZXdFbnRpdHlbcGtleU5hbWUxXSA9IGNoYW5nZS50YWJsZVJlZjtcclxuICAgICAgICAgIHRoaXMuYXBwbHlQcm9wZXJ0eUNoYW5nZXMoY2hhbmdlLCBuZXdFbnRpdHkpO1xyXG5cclxuICAgICAgICAgIG5ld0VudGl0eSA9IHRoaXMuZGF0YUNvbnRleHQuZW50aXR5QWNjZXNzKCkuYWRkKHRoaXMuZW50aXR5LCB0aGlzLmNvbnRleHRGaWx0ZXJzKTtcclxuICAgICAgICAgIHR5cGUgT2JqZWN0S2V5MiA9IGtleW9mIHR5cGVvZiBuZXdFbnRpdHk7XHJcbiAgICAgICAgICBjb25zdCBwa2V5TmFtZTIgPSBjaGFuZ2UudGFibGVOYW1lICsgJ1JlZicgYXMgT2JqZWN0S2V5MjtcclxuICAgICAgICAgIG5ld0VudGl0eVtwa2V5TmFtZTJdID0gY2hhbmdlLnRhYmxlUmVmO1xyXG4gICAgICAgICAgdGhpcy5hcHBseVByb3BlcnR5Q2hhbmdlcyhjaGFuZ2UsIG5ld0VudGl0eSk7XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMuZW50aXR5Rm91bmRCeVF1ZXJ5KGNoYW5nZSkgJiYgdGhpcy5pc0xvYWRlZCgpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkRW50aXR5KG5ld0VudGl0eSk7XHJcbiAgICAgICAgICAgIHJlbG9hZFJlc3VsdHMgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAoY2hhbmdlLmNoYW5nZU9wZXJhdGlvbiA9PT0gJ0knKSB7XHJcbiAgICAgICAgICBsZXQgZW50aXR5VHlwZSA9IHRoaXMudHlwZXMuZ2V0VHlwZShjaGFuZ2UudGFibGVOYW1lKTtcclxuICAgICAgICAgIHZhciBuZXdFbnRpdHkgPSB0aGlzLmdsb2JhbERhdGFDb250ZXh0IS5lbnRpdHlBY2Nlc3MoKS5hZGQoZW50aXR5VHlwZSBhcyBhbnksIHRoaXMuY29udGV4dEZpbHRlcnMpO1xyXG4gICAgICAgICAgdHlwZSBPYmplY3RLZXkgPSBrZXlvZiB0eXBlb2YgbmV3RW50aXR5O1xyXG4gICAgICAgICAgY29uc3QgcGtleU5hbWUxID0gY2hhbmdlLnRhYmxlTmFtZSArICdSZWYnIGFzIE9iamVjdEtleTtcclxuICAgICAgICAgIG5ld0VudGl0eVtwa2V5TmFtZTFdID0gY2hhbmdlLnRhYmxlUmVmO1xyXG4gICAgICAgICAgdGhpcy5hcHBseVByb3BlcnR5Q2hhbmdlcyhjaGFuZ2UsIG5ld0VudGl0eSk7XHJcblxyXG4gICAgICAgICAgbmV3RW50aXR5ID0gdGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5hZGQoZW50aXR5VHlwZSBhcyBhbnksIHRoaXMuY29udGV4dEZpbHRlcnMpO1xyXG4gICAgICAgICAgdHlwZSBPYmplY3RLZXkyID0ga2V5b2YgdHlwZW9mIG5ld0VudGl0eTtcclxuICAgICAgICAgIGNvbnN0IHBrZXlOYW1lMiA9IGNoYW5nZS50YWJsZU5hbWUgKyAnUmVmJyBhcyBPYmplY3RLZXkyO1xyXG4gICAgICAgICAgbmV3RW50aXR5W3BrZXlOYW1lMl0gPSBjaGFuZ2UudGFibGVSZWY7XHJcbiAgICAgICAgICB0aGlzLmFwcGx5UHJvcGVydHlDaGFuZ2VzKGNoYW5nZSwgbmV3RW50aXR5KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLmV4cGFuZFBhdGhzICYmIHRoaXMuZXhwYW5kUGF0aHMubGVuZ3RoICYmIHRoaXMuZXhwYW5kUGF0aHMuaW5jbHVkZXMoJ28nICsgY2hhbmdlLnRhYmxlTmFtZSkpXHJcbiAgICAgICAgcmVsb2FkUmVzdWx0cyA9IHRydWU7XHJcbiAgICB9KTtcclxuXHJcbiAgICBsZXQgZGF0YUNoYW5nZUFyZ3MgPSBuZXcgVHJ1RGF0YUNoYW5nZSgpO1xyXG4gICAgZGF0YUNoYW5nZUFyZ3MuZGF0YUNoYW5nZXMgPSBwYXlsb2FkLmNoYW5nZXM7XHJcbiAgICBkYXRhQ2hhbmdlQXJncy5yZWxvYWQgPSByZWxvYWRSZXN1bHRzO1xyXG4gICAgdGhpcy5kYXRhQ2hhbmdlZChkYXRhQ2hhbmdlQXJncyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -344,9 +344,11 @@ export class TruDataGrid {
344
344
  this.onSearch(this.config.resultConfig.setupQuery(this.entity));
345
345
  };
346
346
  this.dataContext.delete(entities, confirmMsg, onSuccess);
347
+ this.api.applyTransaction({ remove: selectedRows });
347
348
  }
348
349
  else {
349
350
  this.dataContext.delete(entities, confirmMsg);
351
+ this.api.applyTransaction({ remove: selectedRows });
350
352
  }
351
353
  }
352
354
  else {
@@ -399,4 +401,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImpor
399
401
  }], name: [{
400
402
  type: Input
401
403
  }] } });
402
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWRhdGEtZ3JpZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLWdyaWQvdHJ1LWRhdGEtZ3JpZC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLWdyaWQvdHJ1LWRhdGEtZ3JpZC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLGlCQUFpQixFQUF3RCxNQUFNLGVBQWUsQ0FBQztBQU1sSSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUvRCxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxLQUFLLENBQUMsTUFBTSxZQUFZLENBQUM7QUFJaEMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0VBQXdFLENBQUM7QUFDbkgsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0VBQXdFLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBV2xILE1BQU0sT0FBTyxXQUFXO0lBd0RaO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQTVERCxNQUFNLENBQXNCO0lBQzVCLE1BQU0sQ0FBTztJQUNiLElBQUksQ0FBTztJQUVwQixnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztJQUVwQyxVQUFVLEdBQVEsRUFBRSxDQUFDO0lBQ3JCLE9BQU8sR0FBUSxFQUFFLENBQUM7SUFDbEIsV0FBVyxHQUFlLEVBQUUsQ0FBQztJQUM3QixrQkFBa0IsQ0FBTTtJQUN4QixtQkFBbUIsR0FBZSxFQUFFLENBQUM7SUFDckMsMEJBQTBCLENBQU07SUFDaEMsUUFBUSxHQUFxQixnQkFBZ0IsQ0FBQyxNQUFNLENBQUE7SUFDcEQsZUFBZSxHQUFlLEVBQUUsQ0FBQztJQUNqQyxjQUFjLEdBQWUsRUFBRSxDQUFDO0lBQ2hDLGdCQUFnQixDQUFNO0lBQ3RCLGNBQWMsR0FBWSxLQUFLLENBQUM7SUFDaEMsV0FBVyxHQUFRO1FBQ2pCLFlBQVksRUFBRSxVQUFVO1FBQ3hCLFFBQVEsRUFBRSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUU7UUFDakMsdUJBQXVCLEVBQUUseUJBQXlCO1FBQ2xELDZCQUE2QixFQUFFO1lBQzdCLGNBQWMsRUFBRSxrQ0FBa0M7U0FDbkQ7UUFDRCxzQkFBc0IsRUFBRSx3QkFBd0I7UUFDaEQsNEJBQTRCLEVBQUU7WUFDNUIsaUJBQWlCLEVBQUUsR0FBRyxFQUFFO2dCQUV0QixJQUFJLElBQUksQ0FBQyxjQUFjO29CQUNyQixPQUFPLHdCQUF3QixDQUFBOztvQkFFL0IsT0FBTyxrQ0FBa0MsQ0FBQTtZQUM3QyxDQUFDO1NBQ0Y7UUFDRCxrQkFBa0IsRUFBRSxDQUFDLE1BQVcsRUFBRSxFQUFFLEdBQUcsQ0FBQztRQUN4QyxvQkFBb0IsRUFBRSxDQUFDLE1BQVcsRUFBRSxFQUFFO1lBQ3BDLDZEQUE2RDtZQUM3RCxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQztnQkFDdEIsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsUUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQzthQUN4QixDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0Qsa0JBQWtCLEVBQUUsQ0FBQyxNQUFXLEVBQUUsRUFBRTtRQUVwQyxDQUFDO1FBQ0QsV0FBVyxFQUFFLENBQUMsS0FBcUIsRUFBRSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUN2QixDQUFDO0tBQ0YsQ0FBQTtJQUNELHFCQUFxQixHQUE0QixJQUFJLENBQUM7SUFFOUMsR0FBRyxDQUFXO0lBQ2QsSUFBSSxHQUF3QixFQUFFLENBQUM7SUFFdkMsWUFDVSxXQUEyQixFQUMzQix1QkFBbUQsRUFDbkQsY0FBaUMsRUFDakMsc0JBQWlELEVBQ2pELGNBQWlDLEVBQ2pDLGFBQStCO1FBTC9CLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUMzQiw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQTRCO1FBQ25ELG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQTJCO1FBQ2pELG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyxrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7SUFDekMsQ0FBQztJQUVPLHVCQUF1QixHQUFHLENBQUMsTUFBVyxFQUFFLEVBQUU7UUFDaEQsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9ELE9BQU8sQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3pCLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUMsQ0FBQztJQUVNLGlCQUFpQixHQUFHLEdBQUcsRUFBRTtRQUMvQiwrRkFBK0Y7SUFDakcsQ0FBQyxDQUFBO0lBRU8sV0FBVyxHQUFHLEdBQUcsRUFBRTtRQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDbkUsSUFBSSxLQUFLLEVBQUUsVUFBVTtnQkFDbkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDckUsSUFBSSxLQUFLLEVBQUUsVUFBVSxFQUFFO2dCQUNyQixJQUFJLFlBQVksR0FBZSxFQUFFLENBQUM7Z0JBQ2xDLEtBQUssSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7b0JBQ2pELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDO3dCQUMvRSxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDdEM7Z0JBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO2dCQUNwRCxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQ3ZCO1FBRUgsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3JFLElBQUksS0FBSyxFQUFFLFVBQVUsSUFBSSxLQUFLLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO2dCQUNoRSxJQUFJLFlBQVksR0FBZSxFQUFFLENBQUM7Z0JBQ2xDLEtBQUssSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7b0JBQ2pELEtBQUssSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7d0JBQ25ELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7NEJBQy9DLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUN0QztpQkFDRjtnQkFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUM7Z0JBQ3BELElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDdkI7UUFDSCxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFlLEVBQUUsRUFBRTtZQUNoRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFSixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FDekMsSUFBSSxDQUFDLFdBQVcsRUFDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUNuQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUN4QyxJQUFJLENBQUMsU0FBUyxFQUNkLElBQUksQ0FBQyxVQUFVLEVBQ2YsR0FBRyxFQUFFLEdBQUcsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUEsQ0FBQyxDQUFDLEVBQ3RDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFDaEMsRUFBRSxFQUNGLEdBQUcsRUFBRSxHQUFHLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsVUFBeUIsRUFBRSxFQUFFO1lBQzlELElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUMsQ0FBQTtJQUVPLFVBQVUsR0FBRyxHQUFHLEVBQUU7UUFDeEIsSUFBSSxJQUFJLEdBQVEsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBWSxFQUFFLEVBQUU7WUFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLENBQUE7SUFFTyxZQUFZLEdBQUcsQ0FBQyxRQUFvQixFQUFFLEVBQUU7UUFDOUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN0RSxDQUFDLENBQUE7SUFFTyxzQkFBc0IsR0FBRyxDQUFDLGtCQUE4QixFQUFFLG9CQUFnQyxFQUFFLFVBQW1CLEVBQUUsRUFBRTtRQUN6SCxJQUFJLFVBQVU7WUFDWixJQUFJLENBQUMsT0FBTyxHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsa0JBQWtCLENBQUMsQ0FBQzs7WUFFeEYsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFFLElBQUksb0JBQW9CLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFBO1FBQzdFLElBQUksMkJBQTJCLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxVQUFVLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxHQUFHLEdBQUcsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BILElBQUksQ0FBQyxtQkFBbUIsR0FBRyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDL0QsT0FBTyxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssT0FBTyxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUE7SUFFTyxVQUFVLEdBQUcsR0FBRyxFQUFFO1FBQ3hCLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNyRCxJQUFJLENBQUMsTUFBTTtnQkFBRSxPQUFPO1lBQ3BCLElBQUksY0FBYyxDQUFDO1lBQ25CLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsVUFBVTtnQkFDckMsY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQzs7Z0JBRS9DLGNBQWMsR0FBRyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1lBRWxDLElBQUksUUFBUSxHQUFRLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQVksRUFBRSxLQUFhLEVBQUUsRUFBRTtnQkFDbkQsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN6QixDQUFDLENBQUMsQ0FBQztZQUNILElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsR0FBRyxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1SCxJQUFJLENBQUMsV0FBVztpQkFDYixZQUFZLEVBQUU7aUJBQ2QsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxjQUFjLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDaEgsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUE7SUFFTyx1QkFBdUIsR0FBRyxDQUFDLE1BQW1DLEVBQVcsRUFBRTtRQUNqRixJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxLQUFLLENBQUM7UUFDMUMsSUFBSSxXQUFXLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssV0FBVyxDQUFDO1FBQ25ELElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLFNBQVMsQ0FBQztRQUMvQyxJQUFJLFdBQVcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxXQUFXLENBQUM7UUFDbkQsSUFBSSxZQUFZLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssWUFBWSxDQUFDO1FBQ3JELElBQUksVUFBVSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQ3ZDLElBQUksUUFBUSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBRW5DLElBQUksV0FBVyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDOUMsSUFBSSxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUV2SCxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDNUIsSUFBSSxRQUFRLElBQUksQ0FBQyxVQUFVO2dCQUN6QixNQUFNLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO2lCQUN4QixJQUFJLFFBQVEsSUFBSSxVQUFVO2dCQUM3QixNQUFNLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLENBQUM7aUJBQzVCLElBQUksV0FBVztnQkFDbEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2lCQUM1QixJQUFJLFlBQVk7Z0JBQ25CLE1BQU0sQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN2QixPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsSUFBSSxVQUFVLElBQUksUUFBUSxJQUFJLENBQUMsV0FBVyxJQUFJLFNBQVMsQ0FBQyxFQUFFO1lBQ3hELE1BQU0sQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDL0IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDMUIsUUFBUSxFQUFFLFdBQVcsRUFBRSxRQUFrQjtnQkFDekMsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFnQjthQUN0QyxDQUFDLENBQUM7WUFDSCxPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDLENBQUM7SUFFTSxTQUFTLEdBQUcsQ0FBQyxTQUFjLEVBQUUsRUFBRTtRQUNyQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZixJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7WUFDOUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsQ0FBQztTQUNqRTtRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsRUFBRTtZQUN2RCxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7WUFDOUMsSUFBSSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQztZQUNyRSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNsRCxJQUFJLGdCQUFnQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUMsb0JBQW9CLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFBO1lBQ3hHLElBQUksZ0JBQWdCLEVBQUU7Z0JBQ3BCLElBQUksY0FBYyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDN0QsY0FBYyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDO2dCQUN4RyxjQUFjLENBQUMsT0FBTyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsQ0FBQztnQkFDN0UsNENBQTRDO2dCQUM1QyxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7b0JBQzVELE9BQU8sTUFBTSxDQUFDLGdCQUFnQixDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUM7Z0JBQ25HLENBQUMsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUM5QyxzQkFBc0I7Z0JBQ3RCLElBQUksQ0FBQywwQkFBMEIsR0FBRyxTQUFTLENBQUM7Z0JBQzVDLGtCQUFrQjtnQkFDbEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQzFDLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUNuRTtTQUNGO2FBQU07WUFDTCxJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDN0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLGNBQWMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ25FO0lBQ0gsQ0FBQyxDQUFBO0lBRUQsYUFBYSxHQUFXO1FBQ3RCLHFCQUFxQixFQUFFLElBQUksQ0FBQyx1QkFBdUI7S0FDcEQsQ0FBQztJQUVGLFdBQVcsR0FBRyxHQUFHLEVBQUU7UUFDakIsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxDQUFDLEdBQUcsRUFBRSxzQkFBc0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELE9BQU8sUUFBUSxHQUFHLEtBQUssQ0FBQztJQUMxQixDQUFDLENBQUE7SUFFRCxtQkFBbUIsR0FBRyxHQUFHLEVBQUU7UUFDekIsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsZUFBZSxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQzNDLE9BQU8sWUFBWSxHQUFHLEtBQUssQ0FBQztJQUM5QixDQUFDLENBQUE7SUFFRCxnQkFBZ0IsR0FBRyxDQUFDLElBQVMsRUFBRSxFQUFFO1FBQy9CLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxJQUFJLEVBQUU7WUFDekIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1NBQzlCO0lBQ0gsQ0FBQyxDQUFBO0lBRUQsbUJBQW1CLEdBQUcsQ0FBQyxVQUFlLEVBQUUsRUFBRTtRQUN4QyxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsU0FBUyxLQUFLLG9CQUFvQjtZQUN0RCxJQUFJLENBQUMsTUFBTSxDQUFDLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ25ELENBQUMsQ0FBQTtJQUVELGFBQWEsR0FBRyxDQUFDLEtBQVUsRUFBRSxFQUFFO1FBQzdCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSztZQUFFLE9BQU87UUFDekIsTUFBTSxHQUFHLEdBQUksS0FBSyxDQUFDLEtBQWtDLENBQUM7UUFDdEQsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRTtZQUN4QixHQUFHLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDckIsR0FBRyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxHQUFHLEVBQUUsZ0JBQWdCLENBQUM7Z0JBQ3pCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtnQkFDeEIsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFO2dCQUMvQixHQUFHLEVBQUUsR0FBRyxDQUFDLElBQUk7YUFDZCxDQUFDLENBQUM7U0FDSjtJQUNILENBQUMsQ0FBQTtJQUVELGFBQWEsQ0FBQyxLQUFVO1FBQ3RCLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO1lBQzlCLElBQUksQ0FBQyxXQUFXLENBQUMseUJBQXlCLEdBQUcsS0FBSyxDQUFDO1NBQ3BEO2FBQU07WUFDTCxJQUFJLENBQUMsV0FBVyxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQztZQUNsRCxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3hCO1FBQ0QsdURBQXVEO1FBQ3ZELG1DQUFtQztRQUNuQywyREFBMkQ7UUFDM0Qsc0JBQXNCO1FBQ3RCLGtEQUFrRDtRQUNsRCxPQUFPO1FBQ1AsVUFBVTtRQUNWLDJEQUEyRDtRQUMzRCxnRUFBZ0U7UUFDaEUsa0RBQWtEO1FBQ2xELFVBQVU7UUFDViwwQ0FBMEM7UUFDMUMsT0FBTztRQUNQLEdBQUc7UUFDSCxpREFBaUQ7SUFDbkQsQ0FBQztJQUVELFFBQVEsR0FBRyxDQUFDLFVBQWUsRUFBRSxFQUFFO1FBQzdCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQzNCLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBRTlCLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxPQUFPLEdBQUcsS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVILElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNmLElBQUksWUFBWSxFQUFFO1lBQ2hCLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxlQUFlLENBQ3hELElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFDbkMsVUFBVSxFQUNWLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFFckMsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLGdCQUFnQixDQUFDLGdCQUFnQjtnQkFDckQsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDLGtCQUFrQixDQUMzRCxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsRUFDN0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFBO1NBQzlFO2FBQU07WUFDTCxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUMsTUFBTSxDQUMvQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQ25DLFVBQVUsRUFDVixJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUU1QyxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssZ0JBQWdCLENBQUMsZ0JBQWdCO2dCQUNyRCxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUMsa0JBQWtCLENBQzNELElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLG9CQUFvQixFQUM3QyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUE7U0FDN0U7UUFFRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxDQUFDO1FBRW5DLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDeEIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxFQUFFO2dCQUNkLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUN6QixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssZ0JBQWdCLENBQUMsZ0JBQWdCO29CQUNyRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQzs7b0JBRTFELElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEMsQ0FBQztZQUNELFFBQVEsRUFBRSxHQUFHLEVBQUU7Z0JBQ2IsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLGdCQUFnQixDQUFDLE1BQU07b0JBQzNDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQzlFLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRTtvQkFDakQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2lCQUM5QjtZQUNILENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUE7SUFFRCwyQkFBMkIsR0FBRyxDQUFDLE1BQXdDLEVBQUUsRUFBRTtJQUUzRSxDQUFDLENBQUE7SUFFRCxNQUFNLEdBQUcsR0FBWSxFQUFFO1FBQ3JCLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxnQkFBZ0IsQ0FBQyxnQkFBZ0I7WUFDckQsT0FBTyxJQUFJLENBQUMsMEJBQTBCLEtBQUssU0FBUyxDQUFDO1FBQ3ZELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQyxDQUFBO0lBRUQsS0FBSyxHQUFHLEdBQVMsRUFBRTtRQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDM0YsQ0FBQyxDQUFBO0lBRUQsUUFBUSxHQUFHLEdBQVMsRUFBRTtRQUNwQixJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzlDLElBQUksWUFBWSxDQUFDLE1BQU0sRUFBRTtZQUN2QixJQUFJLFFBQVEsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLFVBQVUsR0FBUSxJQUFJLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdFLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsK0JBQStCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDL0ksSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLGdCQUFnQixDQUFDLGdCQUFnQixFQUFFO2dCQUN2RCxJQUFJLFNBQVMsR0FBRyxHQUFHLEVBQUU7b0JBQ25CLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUNsRSxDQUFDLENBQUE7Z0JBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQzthQUMxRDtpQkFBTTtnQkFDTCxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7YUFDL0M7U0FDRjthQUFNO1lBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1NBQ3ZFO0lBQ0gsQ0FBQyxDQUFBO0lBRUQsTUFBTSxHQUFHLEdBQVMsRUFBRTtRQUNsQixJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzlDLElBQUksWUFBWSxDQUFDLE1BQU07WUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzlDLENBQUMsQ0FBQTtJQUVELFFBQVEsR0FBRyxHQUFTLEVBQUU7UUFDcEIsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUM5QyxJQUFJLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUM7SUFDdEQsQ0FBQyxDQUFBO0lBRUQsUUFBUSxHQUFHLEdBQVMsRUFBRTtRQUNwQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQyxDQUFBO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQztRQUN0RCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQztJQUNwRCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxnQkFBZ0IsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxnQkFBZ0IsQ0FBQyxnQkFBZ0I7WUFDbEcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELGVBQWU7UUFDYiwyRkFBMkY7UUFDM0YsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMseUJBQXlCLENBQUM7WUFDcEYsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLGdCQUFnQixDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLGdCQUFnQixDQUFDLGdCQUFnQixFQUFFO2dCQUNwRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQzthQUNqRTtRQUNILENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUMxQyxDQUFDO3VHQXBhVSxXQUFXOzJGQUFYLFdBQVcsaU1DekJ4Qiw4MEZBOENBOzsyRkRyQmEsV0FBVztrQkFQdkIsU0FBUzsrQkFDRSxlQUFlLGlCQUdWLGlCQUFpQixDQUFDLElBQUksUUFDL0IsRUFBQyx1QkFBdUIsRUFBRSxNQUFNLEVBQUM7bVFBRzlCLE1BQU07c0JBQWQsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBTaW1wbGVDaGFuZ2VzLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUcnVBcHBFbnZpcm9ubWVudCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RydS1hcHAtZW52aXJvbm1lbnQnO1xyXG5pbXBvcnQgeyBUcnVTZWFyY2hWaWV3RXZlbnRIYW5kbGVyIH0gZnJvbSAnLi4vLi4vYmFzZS12aWV3cy9zZWFyY2gvc2VydmljZXMvdHJ1LXNlYXJjaC12aWV3LWV2ZW50LWhhbmRsZXInO1xyXG5pbXBvcnQgeyBUcnVEYXRhQ29udGV4dCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RydS1kYXRhLWNvbnRleHQnO1xyXG5pbXBvcnQgeyBUcnVVaU5vdGlmaWNhdGlvbiB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RydS11aS1ub3RpZmljYXRpb24nO1xyXG5pbXBvcnQgeyBJVHJ1RGF0YUdyaWRDb25maWcgfSBmcm9tICcuL2NsYXNzZXMvdHJ1LWRhdGEtZ3JpZC1jb25maWcnO1xyXG5pbXBvcnQgeyBUcnVEYXRhR3JpZFR5cGVzIH0gZnJvbSAnLi9lbnVtcy90cnUtZGF0YS1ncmlkLXR5cGVzJztcclxuaW1wb3J0IHsgSVRydVRvb2xiYXJEcm9wZG93bk9wdGlvbiB9IGZyb20gJy4uL3Rvb2xiYXIvY2xhc3Nlcy90cnUtdG9vbGJhci1kcm9wZG93bi1vcHRpb24nO1xyXG5pbXBvcnQgeyBmb3JrSm9pbiwgc2tpcCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCAqIGFzIF8gZnJvbSAndW5kZXJzY29yZSc7XHJcbmltcG9ydCB7IFRydVNlYXJjaFJlc3VsdFZpZXdNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LXNlYXJjaC1yZXN1bHQtdmlldy1tYW5hZ2VyJztcclxuaW1wb3J0IHsgVHJ1Q29ubmVjdGlvbkh1YiB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RydS1jb25uZWN0aW9uLWh1Yic7XHJcbmltcG9ydCB7IENvbERlZiwgQ29sdW1uLCBHcmlkQXBpLCBHcmlkUmVhZHlFdmVudCwgU3VwcHJlc3NLZXlib2FyZEV2ZW50UGFyYW1zIH0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xyXG5pbXBvcnQgeyBUcnVEYXRhR3JpZExvYWRpbmdPdmVybGF5IH0gZnJvbSAnLi9vdmVybGF5cy90cnUtZGF0YS1ncmlkLWxvYWRpbmctb3ZlcmxheS90cnUtZGF0YS1ncmlkLWxvYWRpbmctb3ZlcmxheSc7XHJcbmltcG9ydCB7IFRydURhdGFHcmlkTm9Sb3dzT3ZlcmxheSB9IGZyb20gJy4vb3ZlcmxheXMvdHJ1LWRhdGEtZ3JpZC1uby1yb3dzLW92ZXJsYXkvdHJ1LWRhdGEtZ3JpZC1uby1yb3dzLW92ZXJsYXknO1xyXG5pbXBvcnQgeyBFbnRpdHlBY3Rpb24sIEVudGl0eUNoYW5nZWRFdmVudEFyZ3MgfSBmcm9tICdicmVlemUtY2xpZW50JztcclxuaW1wb3J0IHsgVHJ1RGF0YUNoYW5nZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvdHJ1LWRhdGEtY2hhbmdlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndHJ1LWRhdGEtZ3JpZCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RydS1kYXRhLWdyaWQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdHJ1LWRhdGEtZ3JpZC5jc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGhvc3Q6IHsnW2NsYXNzLnRydS1kYXRhLWdyaWRdJzogJ3RydWUnfVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJ1RGF0YUdyaWQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQElucHV0KCkgY29uZmlnITogSVRydURhdGFHcmlkQ29uZmlnO1xyXG4gIEBJbnB1dCgpIGVudGl0eSE6IGFueTtcclxuICBASW5wdXQoKSBuYW1lITogYW55O1xyXG5cclxuICBUcnVEYXRhR3JpZFR5cGVzID0gVHJ1RGF0YUdyaWRUeXBlcztcclxuXHJcbiAgY29sdW1uRGVmczogYW55ID0gW107XHJcbiAgcm93RGF0YTogYW55ID0gW107XHJcbiAgdmlld0Nob2ljZXM6IEFycmF5PGFueT4gPSBbXTtcclxuICBzZWxlY3RlZFZpZXdDaG9pY2U6IGFueTtcclxuICB1bmFzc29jaWF0ZWRDaG9pY2VzOiBBcnJheTxhbnk+ID0gW107XHJcbiAgc2VsZWN0ZWRVbmFzc29jaWF0ZWRDaG9pY2U6IGFueTtcclxuICBncmlkVHlwZTogVHJ1RGF0YUdyaWRUeXBlcyA9IFRydURhdGFHcmlkVHlwZXMuU2VhcmNoXHJcbiAgdW5zYXZlZEVudGl0aWVzOiBBcnJheTxhbnk+ID0gW107XHJcbiAgbG9hZGVkRW50aXRpZXM6IEFycmF5PGFueT4gPSBbXTtcclxuICBsYXRlc3RTZXR1cFF1ZXJ5OiBhbnk7XHJcbiAgZmlyc3RTZWFyY2hSYW46IGJvb2xlYW4gPSBmYWxzZTtcclxuICBncmlkT3B0aW9uczogYW55ID0ge1xyXG4gICAgcm93U2VsZWN0aW9uOiAnbXVsdGlwbGUnLFxyXG4gICAgcm93U3R5bGU6IHsgYmFja2dyb3VuZDogJ3doaXRlJyB9LFxyXG4gICAgbG9hZGluZ092ZXJsYXlDb21wb25lbnQ6IFRydURhdGFHcmlkTG9hZGluZ092ZXJsYXksXHJcbiAgICBsb2FkaW5nT3ZlcmxheUNvbXBvbmVudFBhcmFtczoge1xyXG4gICAgICBsb2FkaW5nTWVzc2FnZTogJ1NlYXJjaGluZyAtIE9uZSBtb21lbnQgcGxlYXNlLi4uJyxcclxuICAgIH0sXHJcbiAgICBub1Jvd3NPdmVybGF5Q29tcG9uZW50OiBUcnVEYXRhR3JpZE5vUm93c092ZXJsYXksXHJcbiAgICBub1Jvd3NPdmVybGF5Q29tcG9uZW50UGFyYW1zOiB7XHJcbiAgICAgIG5vUm93c01lc3NhZ2VGdW5jOiAoKSA9PlxyXG4gICAgICB7XHJcbiAgICAgICAgaWYgKHRoaXMuZmlyc3RTZWFyY2hSYW4pXHJcbiAgICAgICAgICByZXR1cm4gJ1NvcnJ5IC0gbm8gcm93cyBmb3VuZCEnXHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgcmV0dXJuICdDbGljayBzZWFyY2ggdG8gZGlzcGxheSByZXN1bHRzLidcclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgICBvblNlbGVjdGlvbkNoYW5nZWQ6IChwYXJhbXM6IGFueSkgPT4geyB9LFxyXG4gICAgb25DZWxsRWRpdGluZ1N0b3BwZWQ6IChwYXJhbXM6IGFueSkgPT4ge1xyXG4gICAgICAvL3RoaXMuZ3JpZE9wdGlvbnMuYXBpLnJlZHJhd1Jvd3MoeyByb3dOb2RlczogcGFyYW1zLm5vZGUgfSk7XHJcbiAgICAgIHBhcmFtcy5hcGkucmVmcmVzaENlbGxzKHtcclxuICAgICAgICBmb3JjZTogdHJ1ZSxcclxuICAgICAgICByb3dOb2RlczogW3BhcmFtcy5ub2RlXVxyXG4gICAgICB9KTtcclxuICAgIH0sXHJcbiAgICBvbkNlbGxWYWx1ZUNoYW5nZWQ6IChwYXJhbXM6IGFueSkgPT4ge1xyXG5cclxuICAgIH0sXHJcbiAgICBvbkdyaWRSZWFkeTogKGV2ZW50OiBHcmlkUmVhZHlFdmVudCkgPT4ge1xyXG4gICAgICB0aGlzLmFwaSA9IGV2ZW50LmFwaTtcclxuICAgIH1cclxuICB9XHJcbiAgcGFyZW50VG9vbGJhclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHByaXZhdGUgYXBpITogR3JpZEFwaTtcclxuICBwcml2YXRlIHN1YnM6IEFycmF5PFN1YnNjcmlwdGlvbj4gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGRhdGFDb250ZXh0OiBUcnVEYXRhQ29udGV4dCxcclxuICAgIHByaXZhdGUgc2VhcmNoUmVzdWx0Vmlld01hbmFnZXI6IFRydVNlYXJjaFJlc3VsdFZpZXdNYW5hZ2VyLFxyXG4gICAgcHJpdmF0ZSBhcHBFbnZpcm9ubWVudDogVHJ1QXBwRW52aXJvbm1lbnQsXHJcbiAgICBwcml2YXRlIHNlYXJjaFZpZXdFdmVudEhhbmRsZXI6IFRydVNlYXJjaFZpZXdFdmVudEhhbmRsZXIsXHJcbiAgICBwcml2YXRlIHVpTm90aWZpY2F0aW9uOiBUcnVVaU5vdGlmaWNhdGlvbixcclxuICAgIHByaXZhdGUgY29ubmVjdGlvbkh1YjogVHJ1Q29ubmVjdGlvbkh1Yikge1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbmhhbmNlUm93RGF0YUZvckVudGl0eSA9IChlbnRpdHk6IGFueSkgPT4ge1xyXG4gICAgbGV0IHJvd0RhdGEgPSB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcucm93RGF0YUVuaGFuY2VyKGVudGl0eSk7XHJcbiAgICByb3dEYXRhLiRlbnRpdHkgPSBlbnRpdHk7XHJcbiAgICByZXR1cm4gcm93RGF0YTtcclxuICB9O1xyXG5cclxuICBwcml2YXRlIHNldE5vUm93c1RlbXBsYXRlID0gKCkgPT4ge1xyXG4gICAgLy90aGlzLm5vUm93c1RlbXBsYXRlID0gYDxzcGFuIHN0eWxlPVwiZm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6Ym9sZDtcIj5ObyBkYXRhIGZvdW5kLjwvc3Bhbj5gO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdWJzY3JpYmVUbyA9ICgpID0+IHtcclxuICAgIHRoaXMuc3Vicy5wdXNoKHRoaXMuYXBwRW52aXJvbm1lbnQub25TYXZlQ29tcGxldGUkLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgIGlmIChldmVudD8uc3VjY2Vzc2Z1bClcclxuICAgICAgICB0aGlzLmFwaS5yZWRyYXdSb3dzKCk7XHJcbiAgICB9KSk7XHJcbiAgICB0aGlzLnN1YnMucHVzaCh0aGlzLmFwcEVudmlyb25tZW50Lm9uUmV2ZXJ0Q29tcGxldGUkLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgIGlmIChldmVudD8uc3VjY2Vzc2Z1bCkge1xyXG4gICAgICAgIGxldCByb3dzVG9SZW1vdmU6IEFycmF5PGFueT4gPSBbXTtcclxuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5yb3dEYXRhLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5yb3dEYXRhW2ldLiRlbnRpdHlbdGhpcy5jb25maWcucmVzdWx0Q29uZmlnLmVudGl0eVR5cGUubmFtZSArICdSZWYnXSA8IDApXHJcbiAgICAgICAgICAgIHJvd3NUb1JlbW92ZS5wdXNoKHRoaXMucm93RGF0YVtpXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuYXBpLmFwcGx5VHJhbnNhY3Rpb24oeyByZW1vdmU6IHJvd3NUb1JlbW92ZSB9KTtcclxuICAgICAgICB0aGlzLmFwaS5yZWRyYXdSb3dzKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9KSk7XHJcbiAgICB0aGlzLnN1YnMucHVzaCh0aGlzLmFwcEVudmlyb25tZW50Lm9uRGVsZXRlQ29tcGxldGUkLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgIGlmIChldmVudD8uc3VjY2Vzc2Z1bCAmJiBldmVudC5lbnRpdGllcyAmJiBldmVudC5lbnRpdGllcy5sZW5ndGgpIHtcclxuICAgICAgICBsZXQgcm93c1RvUmVtb3ZlOiBBcnJheTxhbnk+ID0gW107XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMucm93RGF0YS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICAgICAgZm9yIChsZXQgaiA9IGV2ZW50LmVudGl0aWVzLmxlbmd0aCAtIDE7IGogPj0gMDsgai0tKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnJvd0RhdGFbaV0uJGVudGl0eSA9PT0gZXZlbnQuZW50aXRpZXNbal0pXHJcbiAgICAgICAgICAgICAgcm93c1RvUmVtb3ZlLnB1c2godGhpcy5yb3dEYXRhW2ldKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5hcGkuYXBwbHlUcmFuc2FjdGlvbih7IHJlbW92ZTogcm93c1RvUmVtb3ZlIH0pO1xyXG4gICAgICAgIHRoaXMuYXBpLnJlZHJhd1Jvd3MoKTtcclxuICAgICAgfVxyXG4gICAgfSkpO1xyXG4gICAgdGhpcy5zdWJzLnB1c2godGhpcy5zZWFyY2hWaWV3RXZlbnRIYW5kbGVyLm9uU2VhcmNoKCkucGlwZShza2lwKDEpKS5zdWJzY3JpYmUoKHNldHVwUXVlcnk6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLm9uU2VhcmNoKHNldHVwUXVlcnkpO1xyXG4gICAgfSkpO1xyXG5cclxuICAgIHRoaXMuc3Vicy5wdXNoKHRoaXMuY29ubmVjdGlvbkh1Yi5zdWJzY3JpYmUoXHJcbiAgICAgIHRoaXMuZGF0YUNvbnRleHQsXHJcbiAgICAgIHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5lbnRpdHlUeXBlLFxyXG4gICAgICB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZW50aXR5VHlwZS5uYW1lLFxyXG4gICAgICB0aGlzLmFkZEVudGl0eSxcclxuICAgICAgdGhpcy5nZXRSb3dEYXRhLFxyXG4gICAgICAoKSA9PiB7IHJldHVybiB0aGlzLmxhdGVzdFNldHVwUXVlcnkgfSxcclxuICAgICAgdGhpcy5jb25maWcucmVzdWx0Q29uZmlnLmV4cGFuZHMsXHJcbiAgICAgIFtdLFxyXG4gICAgICAoKSA9PiB7IHJldHVybiB0cnVlOyB9KS5zdWJzY3JpYmUoKGRhdGFDaGFuZ2U6IFRydURhdGFDaGFuZ2UpID0+IHtcclxuICAgICAgICB0aGlzLmFwaS5yZWZyZXNoQ2VsbHMoeyBmb3JjZTogdHJ1ZSB9KTtcclxuICAgIH0pKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Um93RGF0YSA9ICgpID0+IHtcclxuICAgIGxldCBkYXRhOiBhbnkgPSBbXTtcclxuICAgIHRoaXMuYXBpLmZvckVhY2hOb2RlKChyb3dOb2RlOiBhbnkpID0+IHtcclxuICAgICAgZGF0YS5wdXNoKHJvd05vZGUuZGF0YS4kZW50aXR5KTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGRhdGE7XHJcbiAgfSBcclxuXHJcbiAgcHJpdmF0ZSBsb2FkR3JpZERhdGEgPSAoZW50aXRpZXM6IEFycmF5PGFueT4pID0+IHtcclxuICAgIHRoaXMucm93RGF0YSA9IGVudGl0aWVzLm1hcCh0aGlzLmVuaGFuY2VSb3dEYXRhRm9yRW50aXR5LCBlbnRpdGllcyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvYWRNYW55VG9NYW55R3JpZERhdGEgPSAoYXNzb2NpYXRlZEVudGl0aWVzOiBBcnJheTxhbnk+LCBhc3NvY2lhdGFibGVFbnRpdGllczogQXJyYXk8YW55PiwgaW5pdGFsTG9hZDogYm9vbGVhbikgPT4ge1xyXG4gICAgaWYgKGluaXRhbExvYWQpXHJcbiAgICAgIHRoaXMucm93RGF0YSA9IGFzc29jaWF0ZWRFbnRpdGllcy5tYXAodGhpcy5lbmhhbmNlUm93RGF0YUZvckVudGl0eSwgYXNzb2NpYXRlZEVudGl0aWVzKTtcclxuICAgIGVsc2VcclxuICAgICAgYXNzb2NpYXRlZEVudGl0aWVzID0gdGhpcy5yb3dEYXRhLm1hcCgoZTogYW55KSA9PiB7IHJldHVybiBlLiRlbnRpdHkgfSk7XHJcbiAgICBsZXQgYXNzb2NpYXRhYmxlVHlwZU5hbWUgPSB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZW50aXR5TWFueVRvTWFueVR5cGUubmFtZVxyXG4gICAgbGV0IGFzc29jaWF0ZWRNYXBPZkFzc29jaWF0YWJsZSA9IF8ubWFwKGFzc29jaWF0ZWRFbnRpdGllcywgZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGVbJ28nICsgYXNzb2NpYXRhYmxlVHlwZU5hbWVdOyB9KTtcclxuICAgIHRoaXMudW5hc3NvY2lhdGVkQ2hvaWNlcyA9IGFzc29jaWF0YWJsZUVudGl0aWVzLmZpbHRlcihvYmplY3QxID0+IHtcclxuICAgICAgcmV0dXJuICFhc3NvY2lhdGVkTWFwT2ZBc3NvY2lhdGFibGUuc29tZShvYmplY3QyID0+IHsgcmV0dXJuIG9iamVjdDEudmFsdWUuJCA9PT0gb2JqZWN0Mlthc3NvY2lhdGFibGVUeXBlTmFtZSArICdSZWYnXTsgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXhwb3J0RGF0YSA9ICgpID0+IHtcclxuICAgIHRoaXMudWlOb3RpZmljYXRpb24uc2hvd0V4cG9ydERpYWxvZygpLnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICBpZiAoIXJlc3VsdCkgcmV0dXJuO1xyXG4gICAgICBsZXQgZXhwb3J0R3JpZFNwZWM7XHJcbiAgICAgIGlmICh0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZW50aXR5VHlwZSlcclxuICAgICAgICBleHBvcnRHcmlkU3BlYyA9IHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5uYW1lO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgZXhwb3J0R3JpZFNwZWMgPSAnJGN1c3RvbT0nICsgMTtcclxuXHJcbiAgICAgIGxldCByb3dOb2RlczogYW55ID0gW107XHJcbiAgICAgIHRoaXMuYXBpLmZvckVhY2hOb2RlKChyb3dOb2RlOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICByb3dOb2Rlcy5wdXNoKHJvd05vZGUpO1xyXG4gICAgICB9KTtcclxuICAgICAgbGV0IHJlZnMgPSBfLm1hcChyb3dOb2RlcywgKHJvd05vZGUpID0+IHsgcmV0dXJuIHJvd05vZGUuZGF0YS4kZW50aXR5W3RoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5lbnRpdHlUeXBlLm5hbWUgKyAnUmVmJ107IH0pO1xyXG4gICAgICB0aGlzLmRhdGFDb250ZXh0XHJcbiAgICAgICAgLmVudGl0eUFjY2VzcygpXHJcbiAgICAgICAgLmV4cG9ydCh0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZW50aXR5VHlwZSwgZXhwb3J0R3JpZFNwZWMsIHRoaXMubGF0ZXN0U2V0dXBRdWVyeSwgcmVmcy5qb2luKCcsJyksIHJlc3VsdCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25TdXBwcmVzc0tleWJvYXJkRXZlbnQgPSAocGFyYW1zOiBTdXBwcmVzc0tleWJvYXJkRXZlbnRQYXJhbXMpOiBib29sZWFuID0+IHtcclxuICAgIGxldCBpc1RhYktleSA9IHBhcmFtcy5ldmVudC5rZXkgPT09ICdUYWInO1xyXG4gICAgbGV0IGlzQXJyb3dEb3duID0gcGFyYW1zLmV2ZW50LmtleSA9PT0gJ0Fycm93RG93bic7XHJcbiAgICBsZXQgaXNBcnJvd1VwID0gcGFyYW1zLmV2ZW50LmtleSA9PT0gJ0Fycm93VXAnO1xyXG4gICAgbGV0IGlzQXJyb3dMZWZ0ID0gcGFyYW1zLmV2ZW50LmtleSA9PT0gJ0Fycm93TGVmdCc7XHJcbiAgICBsZXQgaXNBcnJvd1JpZ2h0ID0gcGFyYW1zLmV2ZW50LmtleSA9PT0gJ0Fycm93UmlnaHQnO1xyXG4gICAgbGV0IGlzU2hpZnRLZXkgPSBwYXJhbXMuZXZlbnQuc2hpZnRLZXk7XHJcbiAgICBsZXQgaXNBbHRLZXkgPSBwYXJhbXMuZXZlbnQuYWx0S2V5O1xyXG5cclxuICAgIGxldCBmb2N1c2VkQ2VsbCA9IHBhcmFtcy5hcGkuZ2V0Rm9jdXNlZENlbGwoKTtcclxuICAgIGxldCBoYXNDaG9pY2VzID0gcGFyYW1zLmRhdGFbcGFyYW1zLmNvbHVtbi5nZXRDb2xJZCgpXSAmJiBwYXJhbXMuZGF0YVtwYXJhbXMuY29sdW1uLmdldENvbElkKCldLmNob2ljZXMgPyB0cnVlIDogZmFsc2U7XHJcblxyXG4gICAgaWYgKHBhcmFtcy5jb2x1bW4uaXNQaW5uZWQoKSkge1xyXG4gICAgICBpZiAoaXNUYWJLZXkgJiYgIWlzU2hpZnRLZXkpXHJcbiAgICAgICAgcGFyYW1zLmFwaS50YWJUb05leHRDZWxsKCk7XHJcbiAgICAgIGVsc2UgaWYgKGlzVGFiS2V5ICYmIGlzU2hpZnRLZXkpXHJcbiAgICAgICAgcGFyYW1zLmFwaS50YWJUb1ByZXZpb3VzQ2VsbCgpO1xyXG4gICAgICBlbHNlIGlmIChpc0Fycm93TGVmdClcclxuICAgICAgICBwYXJhbXMuYXBpLnRhYlRvUHJldmlvdXNDZWxsKCk7XHJcbiAgICAgIGVsc2UgaWYgKGlzQXJyb3dSaWdodClcclxuICAgICAgICBwYXJhbXMuYXBpLnRhYlRvTmV4dENlbGwoKTtcclxuICAgICAgdGhpcy5hcGkuc3RvcEVkaXRpbmcoKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChoYXNDaG9pY2VzICYmIGlzQWx0S2V5ICYmIChpc0Fycm93RG93biB8fCBpc0Fycm93VXApKSB7XHJcbiAgICAgIHBhcmFtcy5ldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgcGFyYW1zLmFwaS5zdGFydEVkaXRpbmdDZWxsKHtcclxuICAgICAgICByb3dJbmRleDogZm9jdXNlZENlbGw/LnJvd0luZGV4IGFzIG51bWJlcixcclxuICAgICAgICBjb2xLZXk6IGZvY3VzZWRDZWxsPy5jb2x1bW4gYXMgQ29sdW1uLFxyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBhZGRFbnRpdHkgPSAobmV3RW50aXR5OiBhbnkpID0+IHtcclxuICAgIGlmICh0aGlzLmVudGl0eSkge1xyXG4gICAgICBsZXQgcGFyZW50TmFtZSA9IHRoaXMuZW50aXR5LmNvbnN0cnVjdG9yLm5hbWU7XHJcbiAgICAgIG5ld0VudGl0eVtwYXJlbnROYW1lICsgJ1JlZiddID0gdGhpcy5lbnRpdHlbcGFyZW50TmFtZSArICdSZWYnXTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmdyaWRUeXBlID09PSBUcnVEYXRhR3JpZFR5cGVzLkRldGFpbE1hbnlUb01hbnkpIHtcclxuICAgICAgbGV0IHBhcmVudE5hbWUgPSB0aGlzLmVudGl0eS5jb25zdHJ1Y3Rvci5uYW1lO1xyXG4gICAgICBsZXQgdW5hc3NvY2lhdGVkVHlwZSA9IHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5lbnRpdHlNYW55VG9NYW55VHlwZTtcclxuICAgICAgbGV0IHJlZiA9IHRoaXMuc2VsZWN0ZWRVbmFzc29jaWF0ZWRDaG9pY2UudmFsdWUuJDtcclxuICAgICAgbGV0IGNoaWxkVG9Bc3NvY2lhdGUgPSB0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpLnNlYXJjaEJ5UmVmQ2FjaGVPbmx5KHVuYXNzb2NpYXRlZFR5cGUsIHJlZiwgdHJ1ZSlcclxuICAgICAgaWYgKGNoaWxkVG9Bc3NvY2lhdGUpIHtcclxuICAgICAgICBsZXQgZW5oYW5jZWRFbnRpdHkgPSB0aGlzLmVuaGFuY2VSb3dEYXRhRm9yRW50aXR5KG5ld0VudGl0eSk7XHJcbiAgICAgICAgZW5oYW5jZWRFbnRpdHkuJGVudGl0eVt1bmFzc29jaWF0ZWRUeXBlLm5hbWUgKyAnUmVmJ10gPSBjaGlsZFRvQXNzb2NpYXRlW3VuYXNzb2NpYXRlZFR5cGUubmFtZSArICdSZWYnXTtcclxuICAgICAgICBlbmhhbmNlZEVudGl0eS4kZW50aXR5W3BhcmVudE5hbWUgKyAnUmVmJ10gPSB0aGlzLmVudGl0eVtwYXJlbnROYW1lICsgJ1JlZiddO1xyXG4gICAgICAgIC8vIHJlbW92ZSBpdGVtIGZyb20gdGhlIGFkZCBkcm9wZG93biBjb250cm9sXHJcbiAgICAgICAgbGV0IGl0ZW1JbmRleCA9IHRoaXMudW5hc3NvY2lhdGVkQ2hvaWNlcy5maW5kSW5kZXgoKGNob2ljZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIGNob2ljZVt1bmFzc29jaWF0ZWRUeXBlLm5hbWUgKyAnUmVmJ10gPT09IGNoaWxkVG9Bc3NvY2lhdGVbdW5hc3NvY2lhdGVkVHlwZS5uYW1lICsgJ1JlZiddO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMudW5hc3NvY2lhdGVkQ2hvaWNlcy5zcGxpY2UoaXRlbUluZGV4LCAxKTtcclxuICAgICAgICAvLyBjbGVhciBhZGQgc2VsZWN0aW9uXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFVuYXNzb2NpYXRlZENob2ljZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICAvLyBhZGQgcm93IHRvIGdyaWRcclxuICAgICAgICB0aGlzLnVuc2F2ZWRFbnRpdGllcy5wdXNoKGVuaGFuY2VkRW50aXR5KTtcclxuICAgICAgICB0aGlzLmFwaS5hcHBseVRyYW5zYWN0aW9uKHsgYWRkOiBbZW5oYW5jZWRFbnRpdHldLCBhZGRJbmRleDogMCB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IGVuaGFuY2VkRW50aXR5ID0gdGhpcy5lbmhhbmNlUm93RGF0YUZvckVudGl0eShuZXdFbnRpdHkpO1xyXG4gICAgICB0aGlzLnJvd0RhdGEudW5zaGlmdChlbmhhbmNlZEVudGl0eSk7XHJcbiAgICAgIHRoaXMuYXBpLmFwcGx5VHJhbnNhY3Rpb24oeyBhZGQ6IFtlbmhhbmNlZEVudGl0eV0sIGFkZEluZGV4OiAwIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZGVmYXVsdENvbERlZjogQ29sRGVmID0ge1xyXG4gICAgc3VwcHJlc3NLZXlib2FyZEV2ZW50OiB0aGlzLm9uU3VwcHJlc3NLZXlib2FyZEV2ZW50XHJcbiAgfTtcclxuXHJcbiAgZ2V0Um93Q291bnQgPSAoKSA9PiB7XHJcbiAgICBsZXQgY291bnQgPSAwO1xyXG4gICAgdGhpcy5hcGk/LmZvckVhY2hOb2RlQWZ0ZXJGaWx0ZXIoKCkgPT4gY291bnQrKyk7XHJcbiAgICByZXR1cm4gJ1Jvd3M6ICcgKyBjb3VudDtcclxuICB9XHJcblxyXG4gIGdldFNlbGVjdGVkUm93Q291bnQgPSAoKSA9PiB7XHJcbiAgICBsZXQgY291bnQgPSAwO1xyXG4gICAgY291bnQgPSB0aGlzLmFwaT8uZ2V0U2VsZWN0ZWRSb3dzKCkubGVuZ3RoO1xyXG4gICAgcmV0dXJuICdTZWxlY3RlZDogJyArIGNvdW50O1xyXG4gIH1cclxuXHJcbiAgb25Sb3dEYXRhQ2hhbmdlZCA9IChkYXRhOiBhbnkpID0+IHtcclxuICAgIGlmICh0aGlzLnJvd0RhdGEgPT09IG51bGwpIHtcclxuICAgICAgdGhpcy5zZXROb1Jvd3NUZW1wbGF0ZSgpO1xyXG4gICAgICB0aGlzLmFwaS5zaG93Tm9Sb3dzT3ZlcmxheSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DZWxsRG91YmxlQ2xpY2tlZCA9IChncmlkQ29uZmlnOiBhbnkpID0+IHtcclxuICAgIGlmIChncmlkQ29uZmlnLmNvbERlZi5jZWxsQ2xhc3MgPT09ICdhZy1way1hbGlnbmVkLWNlbGwnKVxyXG4gICAgICB0aGlzLmNvbmZpZy5yb3dIZWFkZXJEb3VibGVDbGlja2VkKGdyaWRDb25maWcpO1xyXG4gIH1cclxuXHJcbiAgb25DZWxsS2V5RG93biA9IChldmVudDogYW55KSA9PiB7XHJcbiAgICBpZiAoIWV2ZW50LmV2ZW50KSByZXR1cm47XHJcbiAgICBjb25zdCBrZXkgPSAoZXZlbnQuZXZlbnQgYXMgdW5rbm93bikgYXMgS2V5Ym9hcmRFdmVudDtcclxuICAgIGlmIChrZXkuY29kZSA9PT0gJ1NwYWNlJykge1xyXG4gICAgICBrZXkucHJldmVudERlZmF1bHQoKTtcclxuICAgICAga2V5LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICB0aGlzLmFwaT8uc3RhcnRFZGl0aW5nQ2VsbCh7XHJcbiAgICAgICAgcm93SW5kZXg6IGV2ZW50LnJvd0luZGV4LFxyXG4gICAgICAgIGNvbEtleTogZXZlbnQuY29sdW1uLmdldENvbElkKCksXHJcbiAgICAgICAga2V5OiBrZXkuY29kZVxyXG4gICAgICB9KTtcclxuICAgIH0gXHJcbiAgfVxyXG5cclxuICBvbkNlbGxGb2N1c2VkKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChldmVudC5jb2x1bW4uY29sRGVmLnBpbm5lZCkge1xyXG4gICAgICB0aGlzLmdyaWRPcHRpb25zLnN1cHByZXNzUm93Q2xpY2tTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuc3VwcHJlc3NSb3dDbGlja1NlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuYXBpLmRlc2VsZWN0QWxsKCk7XHJcbiAgICB9XHJcbiAgICAvL2xldCBjb2x1bW5EZWZzID0gdGhpcy5jb25maWcucmVzdWx0Q29uZmlnLmNvbHVtbkRlZnM7XHJcbiAgICAvL2lmIChldmVudC5jb2x1bW4uY29sRGVmLnBpbm5lZCkge1xyXG4gICAgLy8gIGNvbHVtbkRlZnMuZm9yRWFjaCgoY29sdW1uRGVmOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgIC8vICAgIGlmIChpbmRleCAhPT0gMClcclxuICAgIC8vICAgICAgY29sdW1uRGVmLmhlYWRlckNsYXNzID0gJ2FnLWNvbHVtbi1mb2N1cyc7XHJcbiAgICAvLyAgfSk7XHJcbiAgICAvL30gZWxzZSB7XHJcbiAgICAvLyAgY29sdW1uRGVmcy5mb3JFYWNoKChjb2x1bW5EZWY6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgLy8gICAgaWYgKGluZGV4ICE9PSAwICYmIGV2ZW50LmNvbHVtbi5jb2xJZCA9PT0gY29sdW1uRGVmLmZpZWxkKVxyXG4gICAgLy8gICAgICBjb2x1bW5EZWYuaGVhZGVyQ2xhc3MgPSAnYWctY29sdW1uLWZvY3VzJztcclxuICAgIC8vICAgIGVsc2VcclxuICAgIC8vICAgICAgY29sdW1uRGVmLmhlYWRlckNsYXNzID0gdW5kZWZpbmVkO1xyXG4gICAgLy8gIH0pO1xyXG4gICAgLy99XHJcbiAgICAvL3RoaXMuZ3JpZE9wdGlvbnMuYXBpLnNldENvbHVtbkRlZnMoY29sdW1uRGVmcyk7XHJcbiAgfVxyXG5cclxuICBvblNlYXJjaCA9IChzZXR1cFF1ZXJ5OiBhbnkpID0+IHtcclxuICAgIHRoaXMuZmlyc3RTZWFyY2hSYW4gPSB0cnVlO1xyXG4gICAgdGhpcy5hcGkuaGlkZU92ZXJsYXkoKTtcclxuICAgIHRoaXMuYXBpLnNob3dMb2FkaW5nT3ZlcmxheSgpO1xyXG5cclxuICAgIGxldCBlbnRpdHlMb2FkZWQgPSB0aGlzLmxvYWRlZEVudGl0aWVzLnNvbWUoKHJlZikgPT4geyByZXR1cm4gcmVmID09PSB0aGlzLmVudGl0eVt0aGlzLmVudGl0eS5jb25zdHJ1Y3Rvci5uYW1lICsgJ1JlZiddOyB9KTtcclxuICAgIGxldCBqb2lucyA9IFtdO1xyXG4gICAgaWYgKGVudGl0eUxvYWRlZCkge1xyXG4gICAgICBqb2lucy5wdXNoKHRoaXMuZGF0YUNvbnRleHQuZW50aXR5QWNjZXNzKCkuc2VhcmNoQ2FjaGVPbmx5KFxyXG4gICAgICAgIHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5lbnRpdHlUeXBlLFxyXG4gICAgICAgIHNldHVwUXVlcnksXHJcbiAgICAgICAgdGhpcy5jb25maWcucmVzdWx0Q29uZmlnLmV4cGFuZHMpKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmdyaWRUeXBlID09PSBUcnVEYXRhR3JpZFR5cGVzLkRldGFpbE1hbnlUb01hbnkpXHJcbiAgICAgICAgam9pbnMucHVzaCh0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpLnNlYXJjaFF1ZXJ5Q2hvaWNlcyhcclxuICAgICAgICAgIHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5lbnRpdHlNYW55VG9NYW55VHlwZSxcclxuICAgICAgICAgIHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5tYW55VG9NYW55U2V0dXBRdWVyeSh0aGlzLmVudGl0eSksIG51bGwsIGZhbHNlKSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGpvaW5zLnB1c2godGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5zZWFyY2goXHJcbiAgICAgICAgdGhpcy5jb25maWcucmVzdWx0Q29uZmlnLmVudGl0eVR5cGUsXHJcbiAgICAgICAgc2V0dXBRdWVyeSxcclxuICAgICAgICB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZXhwYW5kcywgZmFsc2UpKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmdyaWRUeXBlID09PSBUcnVEYXRhR3JpZFR5cGVzLkRldGFpbE1hbnlUb01hbnkpXHJcbiAgICAgICAgam9pbnMucHVzaCh0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpLnNlYXJjaFF1ZXJ5Q2hvaWNlcyhcclxuICAgICAgICAgIHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5lbnRpdHlNYW55VG9NYW55VHlwZSxcclxuICAgICAgICAgIHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5tYW55VG9NYW55U2V0dXBRdWVyeSh0aGlzLmVudGl0eSksIG51bGwsIHRydWUpKVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubGF0ZXN0U2V0dXBRdWVyeSA9IHNldHVwUXVlcnk7XHJcblxyXG4gICAgZm9ya0pvaW4oam9pbnMpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IHJlc3VsdHMgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0Tm9Sb3dzVGVtcGxhdGUoKTtcclxuICAgICAgICBpZiAodGhpcy5ncmlkVHlwZSA9PT0gVHJ1RGF0YUdyaWRUeXBlcy5EZXRhaWxNYW55VG9NYW55KVxyXG4gICAgICAgICAgdGhpcy5sb2FkTWFueVRvTWFueUdyaWREYXRhKHJlc3VsdHNbMF0sIHJlc3VsdHNbMV0sIHRydWUpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIHRoaXMubG9hZEdyaWREYXRhKHJlc3VsdHNbMF0pO1xyXG4gICAgICB9LFxyXG4gICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmdyaWRUeXBlICE9PSBUcnVEYXRhR3JpZFR5cGVzLlNlYXJjaClcclxuICAgICAgICAgIHRoaXMubG9hZGVkRW50aXRpZXMucHVzaCh0aGlzLmVudGl0eVt0aGlzLmVudGl0eS5jb25zdHJ1Y3Rvci5uYW1lICsgJ1JlZiddKTtcclxuICAgICAgICB0aGlzLmFwaS5oaWRlT3ZlcmxheSgpO1xyXG4gICAgICAgIGlmICh0aGlzLnJvd0RhdGEgPT09IG51bGwgfHwgIXRoaXMucm93RGF0YS5sZW5ndGgpIHtcclxuICAgICAgICAgIHRoaXMuYXBpLnNob3dOb1Jvd3NPdmVybGF5KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uVW5hc3NvY2lhdGVkQ2hvaWNlQ2hhbmdlZCA9IChvcHRpb246IElUcnVUb29sYmFyRHJvcGRvd25PcHRpb24gfCBudWxsKSA9PiB7XHJcblxyXG4gIH1cclxuXHJcbiAgY2FuQWRkID0gKCk6IGJvb2xlYW4gPT4ge1xyXG4gICAgaWYgKHRoaXMuZ3JpZFR5cGUgPT09IFRydURhdGFHcmlkVHlwZXMuRGV0YWlsTWFueVRvTWFueSlcclxuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRVbmFzc29jaWF0ZWRDaG9pY2UgIT09IHVuZGVmaW5lZDtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgb25BZGQgPSAoKTogdm9pZCA9PiB7XHJcbiAgICB0aGlzLmFkZEVudGl0eSh0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpLmFkZCh0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZW50aXR5VHlwZSkpO1xyXG4gIH1cclxuXHJcbiAgb25EZWxldGUgPSAoKTogdm9pZCA9PiB7XHJcbiAgICBsZXQgc2VsZWN0ZWRSb3dzID0gdGhpcy5hcGkuZ2V0U2VsZWN0ZWRSb3dzKCk7XHJcbiAgICBpZiAoc2VsZWN0ZWRSb3dzLmxlbmd0aCkge1xyXG4gICAgICBsZXQgZW50aXRpZXMgPSBzZWxlY3RlZFJvd3MubWFwKGZ1bmN0aW9uIChyb3c6IGFueSkgeyByZXR1cm4gcm93LiRlbnRpdHk7IH0pO1xyXG4gICAgICBsZXQgY29uZmlybU1zZyA9IHRoaXMuYXBwRW52aXJvbm1lbnQuZm9ybWF0RGVsZXRlQ29uZmlybWF0aW9uTWVzc2FnZSh0aGlzLmNvbmZpZy50YWJsZU5hbWUsIHRoaXMuY29uZmlnLnRhYmxlUGx1cmFsTGFiZWwsIHNlbGVjdGVkUm93cy5sZW5ndGgpO1xyXG4gICAgICBpZiAodGhpcy5ncmlkVHlwZSA9PT0gVHJ1RGF0YUdyaWRUeXBlcy5EZXRhaWxNYW55VG9NYW55KSB7XHJcbiAgICAgICAgbGV0IG9uU3VjY2VzcyA9ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMub25TZWFyY2godGhpcy5jb25maWcucmVzdWx0Q29uZmlnLnNldHVwUXVlcnkodGhpcy5lbnRpdHkpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kYXRhQ29udGV4dC5kZWxldGUoZW50aXRpZXMsIGNvbmZpcm1Nc2csIG9uU3VjY2Vzcyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5kYXRhQ29udGV4dC5kZWxldGUoZW50aXRpZXMsIGNvbmZpcm1Nc2cpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnVpTm90aWZpY2F0aW9uLndhcm5pbmcodGhpcy5hcHBFbnZpcm9ubWVudC5tc2dOb1JlY29yZHNTZWxlY3RlZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbktlZXAgPSAoKTogdm9pZCA9PiB7XHJcbiAgICBsZXQgc2VsZWN0ZWRSb3dzID0gdGhpcy5hcGkuZ2V0U2VsZWN0ZWRSb3dzKCk7XHJcbiAgICBpZiAoc2VsZWN0ZWRSb3dzLmxlbmd0aClcclxuICAgICAgdGhpcy5yb3dEYXRhID0gdGhpcy5hcGkuZ2V0U2VsZWN0ZWRSb3dzKCk7XHJcbiAgfVxyXG5cclxuICBvblJlbW92ZSA9ICgpOiB2b2lkID0+IHtcclxuICAgIGxldCBzZWxlY3RlZFJvd3MgPSB0aGlzLmFwaS5nZXRTZWxlY3RlZFJvd3MoKTtcclxuICAgIHRoaXMuYXBpLmFwcGx5VHJhbnNhY3Rpb24oeyByZW1vdmU6IHNlbGVjdGVkUm93cyB9KTtcclxuICB9XHJcblxyXG4gIG9uRXhwb3J0ID0gKCk6IHZvaWQgPT4ge1xyXG4gICAgdGhpcy5leHBvcnREYXRhKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaWJlVG8oKTtcclxuICAgIHRoaXMuY29sdW1uRGVmcyA9IHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5jb2x1bW5EZWZzO1xyXG4gICAgdGhpcy5ncmlkVHlwZSA9IHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5ncmlkVHlwZTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmdyaWRUeXBlID09PSBUcnVEYXRhR3JpZFR5cGVzLkRldGFpbCB8fCB0aGlzLmdyaWRUeXBlID09PSBUcnVEYXRhR3JpZFR5cGVzLkRldGFpbE1hbnlUb01hbnkpXHJcbiAgICAgIHRoaXMub25TZWFyY2godGhpcy5jb25maWcucmVzdWx0Q29uZmlnLnNldHVwUXVlcnkodGhpcy5lbnRpdHkpKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIC8vc2V0VGltZW91dCB0byBwcmV2ZW50OiBFUlJPUiBFcnJvcjogTkcwMTAwOiBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yLiBcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnBhcmVudFRvb2xiYXJUZW1wbGF0ZSA9IHRoaXMuc2VhcmNoUmVzdWx0Vmlld01hbmFnZXIuc2VhcmNoVmlld1Rvb2xiYXJUZW1wbGF0ZTtcclxuICAgICAgaWYgKHRoaXMuZ3JpZFR5cGUgPT09IFRydURhdGFHcmlkVHlwZXMuRGV0YWlsIHx8IHRoaXMuZ3JpZFR5cGUgPT09IFRydURhdGFHcmlkVHlwZXMuRGV0YWlsTWFueVRvTWFueSkge1xyXG4gICAgICAgIHRoaXMub25TZWFyY2godGhpcy5jb25maWcucmVzdWx0Q29uZmlnLnNldHVwUXVlcnkodGhpcy5lbnRpdHkpKTtcclxuICAgICAgfVxyXG4gICAgfSwgMCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vicy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdj5cclxuICA8ZGl2IGNsYXNzPVwidHJ1LWRhdGEtZ3JpZC10b29sYmFyLWNvbnRhaW5lclwiPlxyXG4gICAgPHRydS10b29sYmFyPlxyXG4gICAgICA8dHJ1LXRvb2xiYXItZHJvcGRvd24gW29wdGlvbnNdPVwidW5hc3NvY2lhdGVkQ2hvaWNlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKHNlbGVjdGVkT3B0aW9uKV09XCJzZWxlY3RlZFVuYXNzb2NpYXRlZENob2ljZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uVW5hc3NvY2lhdGVkQ2hvaWNlQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZ3JpZFR5cGUgPT0gVHJ1RGF0YUdyaWRUeXBlcy5EZXRhaWxNYW55VG9NYW55XCI+XHJcbiAgICAgIDwvdHJ1LXRvb2xiYXItZHJvcGRvd24+XHJcbiAgICAgIDx0cnUtdG9vbGJhci1idXR0b24gW2ljb25dPVwiJ3RydS10b29sYmFyLWFkZC1pY29uJ1wiIFt0b29sdGlwXT1cIidBZGQgLSBbQ3RybCArIEldJ1wiIFtkaXNhYmxlZF09XCIhY2FuQWRkKClcIiAob25DbGljayk9XCJvbkFkZCgpXCI+PC90cnUtdG9vbGJhci1idXR0b24+XHJcbiAgICAgIDx0cnUtdG9vbGJhci1idXR0b24gW2ljb25dPVwiJ3RydS10b29sYmFyLWRlbGV0ZS1pY29uJ1wiIFt0b29sdGlwXT1cIidEZWxldGUgLSBbQ3RybCArIERdJ1wiIChjbGljayk9XCJvbkRlbGV0ZSgpXCI+PC90cnUtdG9vbGJhci1idXR0b24+XHJcbiAgICAgIDx0cnUtdG9vbGJhci1idXR0b24gW2ljb25dPVwiJ3RydS10b29sYmFyLWtlZXAtaWNvbidcIiBbdG9vbHRpcF09XCInS2VlcCBzZWxlY3RlZCByZWNvcmRzIC0gW0N0cmwgKyBLXSdcIiAoY2xpY2spPVwib25LZWVwKClcIj48L3RydS10b29sYmFyLWJ1dHRvbj5cclxuICAgICAgPHRydS10b29sYmFyLWJ1dHRvbiBbaWNvbl09XCIndHJ1LXRvb2xiYXItcmVtb3ZlLWljb24nXCIgW3Rvb2x0aXBdPVwiJ1JlbW92ZSBzZWxlY3RlZCByZWNvcmRzIC0gW0N0cmwgKyBSXSdcIiAoY2xpY2spPVwib25SZW1vdmUoKVwiPjwvdHJ1LXRvb2xiYXItYnV0dG9uPlxyXG4gICAgICA8dHJ1LXRvb2xiYXItc2VwYXJhdG9yPjwvdHJ1LXRvb2xiYXItc2VwYXJhdG9yPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicGFyZW50VG9vbGJhclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDx0cnUtdG9vbGJhci1zZXBhcmF0b3IgKm5nSWY9XCJncmlkVHlwZSA9PSBUcnVEYXRhR3JpZFR5cGVzLlNlYXJjaFwiPjwvdHJ1LXRvb2xiYXItc2VwYXJhdG9yPlxyXG4gICAgICA8dHJ1LXRvb2xiYXItYnV0dG9uIFtpY29uXT1cIid0cnUtdG9vbGJhci1leHBvcnQtaWNvbidcIiBbdG9vbHRpcF09XCInRXhwb3J0J1wiIChjbGljayk9XCJvbkV4cG9ydCgpXCI+PC90cnUtdG9vbGJhci1idXR0b24+XHJcbiAgICA8L3RydS10b29sYmFyPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJ0cnUtZGF0YS1ncmlkLWNvbnRhaW5lclwiPlxyXG4gICAgPGFnLWdyaWQtYW5ndWxhciBjbGFzcz1cImFnLXRoZW1lLWFscGluZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtncmlkT3B0aW9uc109XCJncmlkT3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtyb3dEYXRhXT1cInJvd0RhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbY29sdW1uRGVmc109XCJjb2x1bW5EZWZzXCJcclxuICAgICAgICAgICAgICAgICAgICAgW2RlZmF1bHRDb2xEZWZdPVwiZGVmYXVsdENvbERlZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtoZWFkZXJIZWlnaHRdPVwiMjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbcm93SGVpZ2h0XT1cIjI1XCJcclxuICAgICAgICAgICAgICAgICAgICAgW3Jvd0J1ZmZlcl09XCI1MFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtlbnRlck5hdmlnYXRlc1ZlcnRpY2FsbHldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtlbnRlck5hdmlnYXRlc1ZlcnRpY2FsbHlBZnRlckVkaXRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtzdXBwcmVzc1Jvd0hvdmVySGlnaGxpZ2h0XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbc3RvcEVkaXRpbmdXaGVuQ2VsbHNMb3NlRm9jdXNdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAoY2VsbERvdWJsZUNsaWNrZWQpPVwib25DZWxsRG91YmxlQ2xpY2tlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgKGNlbGxLZXlEb3duKT1cIm9uQ2VsbEtleURvd24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIChjZWxsRm9jdXNlZCk9XCJvbkNlbGxGb2N1c2VkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAocm93RGF0YUNoYW5nZWQpPVwib25Sb3dEYXRhQ2hhbmdlZCgkZXZlbnQpXCI+XHJcbiAgICA8L2FnLWdyaWQtYW5ndWxhcj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwidHJ1LWRhdGEtZ3JpZC1zdGF0dXNiYXItY29udGFpbmVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidHJ1LWRhdGEtZ3JpZC1zdGF0dXNiYXItY29udGFpbmVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0cnUtZGF0YS1ncmlkLXN0YXR1c2Jhci12YWx1ZXMtY29udGFpbmVyXCI+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJ0cnUtZGF0YS1ncmlkLXN0YXR1c2Jhci12YWx1ZXMtdGV4dFwiPnt7Z2V0Um93Q291bnQoKX19PC9wPlxyXG4gICAgICAgIDxwIGNsYXNzPVwidHJ1LWRhdGEtZ3JpZC1zdGF0dXNiYXItdmFsdWVzLXRleHRcIj57e2dldFNlbGVjdGVkUm93Q291bnQoKX19PC9wPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
404
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWRhdGEtZ3JpZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLWdyaWQvdHJ1LWRhdGEtZ3JpZC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLWdyaWQvdHJ1LWRhdGEtZ3JpZC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLGlCQUFpQixFQUF3RCxNQUFNLGVBQWUsQ0FBQztBQU1sSSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUvRCxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxLQUFLLENBQUMsTUFBTSxZQUFZLENBQUM7QUFJaEMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0VBQXdFLENBQUM7QUFDbkgsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0VBQXdFLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBV2xILE1BQU0sT0FBTyxXQUFXO0lBd0RaO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQTVERCxNQUFNLENBQXNCO0lBQzVCLE1BQU0sQ0FBTztJQUNiLElBQUksQ0FBTztJQUVwQixnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztJQUVwQyxVQUFVLEdBQVEsRUFBRSxDQUFDO0lBQ3JCLE9BQU8sR0FBUSxFQUFFLENBQUM7SUFDbEIsV0FBVyxHQUFlLEVBQUUsQ0FBQztJQUM3QixrQkFBa0IsQ0FBTTtJQUN4QixtQkFBbUIsR0FBZSxFQUFFLENBQUM7SUFDckMsMEJBQTBCLENBQU07SUFDaEMsUUFBUSxHQUFxQixnQkFBZ0IsQ0FBQyxNQUFNLENBQUE7SUFDcEQsZUFBZSxHQUFlLEVB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LElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxnQkFBZ0IsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDcEcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7YUFDakU7UUFDSCxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQzt1R0F0YVUsV0FBVzsyRkFBWCxXQUFXLGlNQ3pCeEIsODBGQThDQTs7MkZEckJhLFdBQVc7a0JBUHZCLFNBQVM7K0JBQ0UsZUFBZSxpQkFHVixpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CLEVBQUMsdUJBQXVCLEVBQUUsTUFBTSxFQUFDO21RQUc5QixNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24sIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgU2ltcGxlQ2hhbmdlcywgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJ1QXBwRW52aXJvbm1lbnQgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtYXBwLWVudmlyb25tZW50JztcclxuaW1wb3J0IHsgVHJ1U2VhcmNoVmlld0V2ZW50SGFuZGxlciB9IGZyb20gJy4uLy4uL2Jhc2Utdmlld3Mvc2VhcmNoL3NlcnZpY2VzL3RydS1zZWFyY2gtdmlldy1ldmVudC1oYW5kbGVyJztcclxuaW1wb3J0IHsgVHJ1RGF0YUNvbnRleHQgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtZGF0YS1jb250ZXh0JztcclxuaW1wb3J0IHsgVHJ1VWlOb3RpZmljYXRpb24gfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtdWktbm90aWZpY2F0aW9uJztcclxuaW1wb3J0IHsgSVRydURhdGFHcmlkQ29uZmlnIH0gZnJvbSAnLi9jbGFzc2VzL3RydS1kYXRhLWdyaWQtY29uZmlnJztcclxuaW1wb3J0IHsgVHJ1RGF0YUdyaWRUeXBlcyB9IGZyb20gJy4vZW51bXMvdHJ1LWRhdGEtZ3JpZC10eXBlcyc7XHJcbmltcG9ydCB7IElUcnVUb29sYmFyRHJvcGRvd25PcHRpb24gfSBmcm9tICcuLi90b29sYmFyL2NsYXNzZXMvdHJ1LXRvb2xiYXItZHJvcGRvd24tb3B0aW9uJztcclxuaW1wb3J0IHsgZm9ya0pvaW4sIHNraXAsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgKiBhcyBfIGZyb20gJ3VuZGVyc2NvcmUnO1xyXG5pbXBvcnQgeyBUcnVTZWFyY2hSZXN1bHRWaWV3TWFuYWdlciB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RydS1zZWFyY2gtcmVzdWx0LXZpZXctbWFuYWdlcic7XHJcbmltcG9ydCB7IFRydUNvbm5lY3Rpb25IdWIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtY29ubmVjdGlvbi1odWInO1xyXG5pbXBvcnQgeyBDb2xEZWYsIENvbHVtbiwgR3JpZEFwaSwgR3JpZFJlYWR5RXZlbnQsIFN1cHByZXNzS2V5Ym9hcmRFdmVudFBhcmFtcyB9IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcclxuaW1wb3J0IHsgVHJ1RGF0YUdyaWRMb2FkaW5nT3ZlcmxheSB9IGZyb20gJy4vb3ZlcmxheXMvdHJ1LWRhdGEtZ3JpZC1sb2FkaW5nLW92ZXJsYXkvdHJ1LWRhdGEtZ3JpZC1sb2FkaW5nLW92ZXJsYXknO1xyXG5pbXBvcnQgeyBUcnVEYXRhR3JpZE5vUm93c092ZXJsYXkgfSBmcm9tICcuL292ZXJsYXlzL3RydS1kYXRhLWdyaWQtbm8tcm93cy1vdmVybGF5L3RydS1kYXRhLWdyaWQtbm8tcm93cy1vdmVybGF5JztcclxuaW1wb3J0IHsgRW50aXR5QWN0aW9uLCBFbnRpdHlDaGFuZ2VkRXZlbnRBcmdzIH0gZnJvbSAnYnJlZXplLWNsaWVudCc7XHJcbmltcG9ydCB7IFRydURhdGFDaGFuZ2UgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3RydS1kYXRhLWNoYW5nZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RydS1kYXRhLWdyaWQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90cnUtZGF0YS1ncmlkLmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RydS1kYXRhLWdyaWQuY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBob3N0OiB7J1tjbGFzcy50cnUtZGF0YS1ncmlkXSc6ICd0cnVlJ31cclxufSlcclxuZXhwb3J0IGNsYXNzIFRydURhdGFHcmlkIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xyXG4gIEBJbnB1dCgpIGNvbmZpZyE6IElUcnVEYXRhR3JpZENvbmZpZztcclxuICBASW5wdXQoKSBlbnRpdHkhOiBhbnk7XHJcbiAgQElucHV0KCkgbmFtZSE6IGFueTtcclxuXHJcbiAgVHJ1RGF0YUdyaWRUeXBlcyA9IFRydURhdGFHcmlkVHlwZXM7XHJcblxyXG4gIGNvbHVtbkRlZnM6IGFueSA9IFtdO1xyXG4gIHJvd0RhdGE6IGFueSA9IFtdO1xyXG4gIHZpZXdDaG9pY2VzOiBBcnJheTxhbnk+ID0gW107XHJcbiAgc2VsZWN0ZWRWaWV3Q2hvaWNlOiBhbnk7XHJcbiAgdW5hc3NvY2lhdGVkQ2hvaWNlczogQXJyYXk8YW55PiA9IFtdO1xyXG4gIHNlbGVjdGVkVW5hc3NvY2lhdGVkQ2hvaWNlOiBhbnk7XHJcbiAgZ3JpZFR5cGU6IFRydURhdGFHcmlkVHlwZXMgPSBUcnVEYXRhR3JpZFR5cGVzLlNlYXJjaFxyXG4gIHVuc2F2ZWRFbnRpdGllczogQXJyYXk8YW55PiA9IFtdO1xyXG4gIGxvYWRlZEVudGl0aWVzOiBBcnJheTxhbnk+ID0gW107XHJcbiAgbGF0ZXN0U2V0dXBRdWVyeTogYW55O1xyXG4gIGZpcnN0U2VhcmNoUmFuOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZ3JpZE9wdGlvbnM6IGFueSA9IHtcclxuICAgIHJvd1NlbGVjdGlvbjogJ211bHRpcGxlJyxcclxuICAgIHJvd1N0eWxlOiB7IGJhY2tncm91bmQ6ICd3aGl0ZScgfSxcclxuICAgIGxvYWRpbmdPdmVybGF5Q29tcG9uZW50OiBUcnVEYXRhR3JpZExvYWRpbmdPdmVybGF5LFxyXG4gICAgbG9hZGluZ092ZXJsYXlDb21wb25lbnRQYXJhbXM6IHtcclxuICAgICAgbG9hZGluZ01lc3NhZ2U6ICdTZWFyY2hpbmcgLSBPbmUgbW9tZW50IHBsZWFzZS4uLicsXHJcbiAgICB9LFxyXG4gICAgbm9Sb3dzT3ZlcmxheUNvbXBvbmVudDogVHJ1RGF0YUdyaWROb1Jvd3NPdmVybGF5LFxyXG4gICAgbm9Sb3dzT3ZlcmxheUNvbXBvbmVudFBhcmFtczoge1xyXG4gICAgICBub1Jvd3NNZXNzYWdlRnVuYzogKCkgPT5cclxuICAgICAge1xyXG4gICAgICAgIGlmICh0aGlzLmZpcnN0U2VhcmNoUmFuKVxyXG4gICAgICAgICAgcmV0dXJuICdTb3JyeSAtIG5vIHJvd3MgZm91bmQhJ1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIHJldHVybiAnQ2xpY2sgc2VhcmNoIHRvIGRpc3BsYXkgcmVzdWx0cy4nXHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gICAgb25TZWxlY3Rpb25DaGFuZ2VkOiAocGFyYW1zOiBhbnkpID0+IHsgfSxcclxuICAgIG9uQ2VsbEVkaXRpbmdTdG9wcGVkOiAocGFyYW1zOiBhbnkpID0+IHtcclxuICAgICAgLy90aGlzLmdyaWRPcHRpb25zLmFwaS5yZWRyYXdSb3dzKHsgcm93Tm9kZXM6IHBhcmFtcy5ub2RlIH0pO1xyXG4gICAgICBwYXJhbXMuYXBpLnJlZnJlc2hDZWxscyh7XHJcbiAgICAgICAgZm9yY2U6IHRydWUsXHJcbiAgICAgICAgcm93Tm9kZXM6IFtwYXJhbXMubm9kZV1cclxuICAgICAgfSk7XHJcbiAgICB9LFxyXG4gICAgb25DZWxsVmFsdWVDaGFuZ2VkOiAocGFyYW1zOiBhbnkpID0+IHtcclxuXHJcbiAgICB9LFxyXG4gICAgb25HcmlkUmVhZHk6IChldmVudDogR3JpZFJlYWR5RXZlbnQpID0+IHtcclxuICAgICAgdGhpcy5hcGkgPSBldmVudC5hcGk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHBhcmVudFRvb2xiYXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIGFwaSE6IEdyaWRBcGk7XHJcbiAgcHJpdmF0ZSBzdWJzOiBBcnJheTxTdWJzY3JpcHRpb24+ID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBkYXRhQ29udGV4dDogVHJ1RGF0YUNvbnRleHQsXHJcbiAgICBwcml2YXRlIHNlYXJjaFJlc3VsdFZpZXdNYW5hZ2VyOiBUcnVTZWFyY2hSZXN1bHRWaWV3TWFuYWdlcixcclxuICAgIHByaXZhdGUgYXBwRW52aXJvbm1lbnQ6IFRydUFwcEVudmlyb25tZW50LFxyXG4gICAgcHJpdmF0ZSBzZWFyY2hWaWV3RXZlbnRIYW5kbGVyOiBUcnVTZWFyY2hWaWV3RXZlbnRIYW5kbGVyLFxyXG4gICAgcHJpdmF0ZSB1aU5vdGlmaWNhdGlvbjogVHJ1VWlOb3RpZmljYXRpb24sXHJcbiAgICBwcml2YXRlIGNvbm5lY3Rpb25IdWI6IFRydUNvbm5lY3Rpb25IdWIpIHtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZW5oYW5jZVJvd0RhdGFGb3JFbnRpdHkgPSAoZW50aXR5OiBhbnkpID0+IHtcclxuICAgIGxldCByb3dEYXRhID0gdGhpcy5jb25maWcucmVzdWx0Q29uZmlnLnJvd0RhdGFFbmhhbmNlcihlbnRpdHkpO1xyXG4gICAgcm93RGF0YS4kZW50aXR5ID0gZW50aXR5O1xyXG4gICAgcmV0dXJuIHJvd0RhdGE7XHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBzZXROb1Jvd3NUZW1wbGF0ZSA9ICgpID0+IHtcclxuICAgIC8vdGhpcy5ub1Jvd3NUZW1wbGF0ZSA9IGA8c3BhbiBzdHlsZT1cImZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OmJvbGQ7XCI+Tm8gZGF0YSBmb3VuZC48L3NwYW4+YDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3Vic2NyaWJlVG8gPSAoKSA9PiB7XHJcbiAgICB0aGlzLnN1YnMucHVzaCh0aGlzLmFwcEVudmlyb25tZW50Lm9uU2F2ZUNvbXBsZXRlJC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xyXG4gICAgICBpZiAoZXZlbnQ/LnN1Y2Nlc3NmdWwpXHJcbiAgICAgICAgdGhpcy5hcGkucmVkcmF3Um93cygpO1xyXG4gICAgfSkpO1xyXG4gICAgdGhpcy5zdWJzLnB1c2godGhpcy5hcHBFbnZpcm9ubWVudC5vblJldmVydENvbXBsZXRlJC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xyXG4gICAgICBpZiAoZXZlbnQ/LnN1Y2Nlc3NmdWwpIHtcclxuICAgICAgICBsZXQgcm93c1RvUmVtb3ZlOiBBcnJheTxhbnk+ID0gW107XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMucm93RGF0YS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICAgICAgaWYgKHRoaXMucm93RGF0YVtpXS4kZW50aXR5W3RoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5lbnRpdHlUeXBlLm5hbWUgKyAnUmVmJ10gPCAwKVxyXG4gICAgICAgICAgICByb3dzVG9SZW1vdmUucHVzaCh0aGlzLnJvd0RhdGFbaV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmFwaS5hcHBseVRyYW5zYWN0aW9uKHsgcmVtb3ZlOiByb3dzVG9SZW1vdmUgfSk7XHJcbiAgICAgICAgdGhpcy5hcGkucmVkcmF3Um93cygpO1xyXG4gICAgICB9XHJcblxyXG4gICAgfSkpO1xyXG4gICAgdGhpcy5zdWJzLnB1c2godGhpcy5hcHBFbnZpcm9ubWVudC5vbkRlbGV0ZUNvbXBsZXRlJC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xyXG4gICAgICBpZiAoZXZlbnQ/LnN1Y2Nlc3NmdWwgJiYgZXZlbnQuZW50aXRpZXMgJiYgZXZlbnQuZW50aXRpZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgbGV0IHJvd3NUb1JlbW92ZTogQXJyYXk8YW55PiA9IFtdO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLnJvd0RhdGEubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgICAgIGZvciAobGV0IGogPSBldmVudC5lbnRpdGllcy5sZW5ndGggLSAxOyBqID49IDA7IGotLSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5yb3dEYXRhW2ldLiRlbnRpdHkgPT09IGV2ZW50LmVudGl0aWVzW2pdKVxyXG4gICAgICAgICAgICAgIHJvd3NUb1JlbW92ZS5wdXNoKHRoaXMucm93RGF0YVtpXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuYXBpLmFwcGx5VHJhbnNhY3Rpb24oeyByZW1vdmU6IHJvd3NUb1JlbW92ZSB9KTtcclxuICAgICAgICB0aGlzLmFwaS5yZWRyYXdSb3dzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pKTtcclxuICAgIHRoaXMuc3Vicy5wdXNoKHRoaXMuc2VhcmNoVmlld0V2ZW50SGFuZGxlci5vblNlYXJjaCgpLnBpcGUoc2tpcCgxKSkuc3Vic2NyaWJlKChzZXR1cFF1ZXJ5OiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5vblNlYXJjaChzZXR1cFF1ZXJ5KTtcclxuICAgIH0pKTtcclxuXHJcbiAgICB0aGlzLnN1YnMucHVzaCh0aGlzLmNvbm5lY3Rpb25IdWIuc3Vic2NyaWJlKFxyXG4gICAgICB0aGlzLmRhdGFDb250ZXh0LFxyXG4gICAgICB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZW50aXR5VHlwZSxcclxuICAgICAgdGhpcy5jb25maWcucmVzdWx0Q29uZmlnLmVudGl0eVR5cGUubmFtZSxcclxuICAgICAgdGhpcy5hZGRFbnRpdHksXHJcbiAgICAgIHRoaXMuZ2V0Um93RGF0YSxcclxuICAgICAgKCkgPT4geyByZXR1cm4gdGhpcy5sYXRlc3RTZXR1cFF1ZXJ5IH0sXHJcbiAgICAgIHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5leHBhbmRzLFxyXG4gICAgICBbXSxcclxuICAgICAgKCkgPT4geyByZXR1cm4gdHJ1ZTsgfSkuc3Vic2NyaWJlKChkYXRhQ2hhbmdlOiBUcnVEYXRhQ2hhbmdlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5hcGkucmVmcmVzaENlbGxzKHsgZm9yY2U6IHRydWUgfSk7XHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFJvd0RhdGEgPSAoKSA9PiB7XHJcbiAgICBsZXQgZGF0YTogYW55ID0gW107XHJcbiAgICB0aGlzLmFwaS5mb3JFYWNoTm9kZSgocm93Tm9kZTogYW55KSA9PiB7XHJcbiAgICAgIGRhdGEucHVzaChyb3dOb2RlLmRhdGEuJGVudGl0eSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBkYXRhO1xyXG4gIH0gXHJcblxyXG4gIHByaXZhdGUgbG9hZEdyaWREYXRhID0gKGVudGl0aWVzOiBBcnJheTxhbnk+KSA9PiB7XHJcbiAgICB0aGlzLnJvd0RhdGEgPSBlbnRpdGllcy5tYXAodGhpcy5lbmhhbmNlUm93RGF0YUZvckVudGl0eSwgZW50aXRpZXMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkTWFueVRvTWFueUdyaWREYXRhID0gKGFzc29jaWF0ZWRFbnRpdGllczogQXJyYXk8YW55PiwgYXNzb2NpYXRhYmxlRW50aXRpZXM6IEFycmF5PGFueT4sIGluaXRhbExvYWQ6IGJvb2xlYW4pID0+IHtcclxuICAgIGlmIChpbml0YWxMb2FkKVxyXG4gICAgICB0aGlzLnJvd0RhdGEgPSBhc3NvY2lhdGVkRW50aXRpZXMubWFwKHRoaXMuZW5oYW5jZVJvd0RhdGFGb3JFbnRpdHksIGFzc29jaWF0ZWRFbnRpdGllcyk7XHJcbiAgICBlbHNlXHJcbiAgICAgIGFzc29jaWF0ZWRFbnRpdGllcyA9IHRoaXMucm93RGF0YS5tYXAoKGU6IGFueSkgPT4geyByZXR1cm4gZS4kZW50aXR5IH0pO1xyXG4gICAgbGV0IGFzc29jaWF0YWJsZVR5cGVOYW1lID0gdGhpcy5jb25maWcucmVzdWx0Q29uZmlnLmVudGl0eU1hbnlUb01hbnlUeXBlLm5hbWVcclxuICAgIGxldCBhc3NvY2lhdGVkTWFwT2ZBc3NvY2lhdGFibGUgPSBfLm1hcChhc3NvY2lhdGVkRW50aXRpZXMsIGZ1bmN0aW9uIChlKSB7IHJldHVybiBlWydvJyArIGFzc29jaWF0YWJsZVR5cGVOYW1lXTsgfSk7XHJcbiAgICB0aGlzLnVuYXNzb2NpYXRlZENob2ljZXMgPSBhc3NvY2lhdGFibGVFbnRpdGllcy5maWx0ZXIob2JqZWN0MSA9PiB7XHJcbiAgICAgIHJldHVybiAhYXNzb2NpYXRlZE1hcE9mQXNzb2NpYXRhYmxlLnNvbWUob2JqZWN0MiA9PiB7IHJldHVybiBvYmplY3QxLnZhbHVlLiQgPT09IG9iamVjdDJbYXNzb2NpYXRhYmxlVHlwZU5hbWUgKyAnUmVmJ107IH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV4cG9ydERhdGEgPSAoKSA9PiB7XHJcbiAgICB0aGlzLnVpTm90aWZpY2F0aW9uLnNob3dFeHBvcnREaWFsb2coKS50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgaWYgKCFyZXN1bHQpIHJldHVybjtcclxuICAgICAgbGV0IGV4cG9ydEdyaWRTcGVjO1xyXG4gICAgICBpZiAodGhpcy5jb25maWcucmVzdWx0Q29uZmlnLmVudGl0eVR5cGUpXHJcbiAgICAgICAgZXhwb3J0R3JpZFNwZWMgPSB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcubmFtZTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIGV4cG9ydEdyaWRTcGVjID0gJyRjdXN0b209JyArIDE7XHJcblxyXG4gICAgICBsZXQgcm93Tm9kZXM6IGFueSA9IFtdO1xyXG4gICAgICB0aGlzLmFwaS5mb3JFYWNoTm9kZSgocm93Tm9kZTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgcm93Tm9kZXMucHVzaChyb3dOb2RlKTtcclxuICAgICAgfSk7XHJcbiAgICAgIGxldCByZWZzID0gXy5tYXAocm93Tm9kZXMsIChyb3dOb2RlKSA9PiB7IHJldHVybiByb3dOb2RlLmRhdGEuJGVudGl0eVt0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZW50aXR5VHlwZS5uYW1lICsgJ1JlZiddOyB9KTtcclxuICAgICAgdGhpcy5kYXRhQ29udGV4dFxyXG4gICAgICAgIC5lbnRpdHlBY2Nlc3MoKVxyXG4gICAgICAgIC5leHBvcnQodGhpcy5jb25maWcucmVzdWx0Q29uZmlnLmVudGl0eVR5cGUsIGV4cG9ydEdyaWRTcGVjLCB0aGlzLmxhdGVzdFNldHVwUXVlcnksIHJlZnMuam9pbignLCcpLCByZXN1bHQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uU3VwcHJlc3NLZXlib2FyZEV2ZW50ID0gKHBhcmFtczogU3VwcHJlc3NLZXlib2FyZEV2ZW50UGFyYW1zKTogYm9vbGVhbiA9PiB7XHJcbiAgICBsZXQgaXNUYWJLZXkgPSBwYXJhbXMuZXZlbnQua2V5ID09PSAnVGFiJztcclxuICAgIGxldCBpc0Fycm93RG93biA9IHBhcmFtcy5ldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nO1xyXG4gICAgbGV0IGlzQXJyb3dVcCA9IHBhcmFtcy5ldmVudC5rZXkgPT09ICdBcnJvd1VwJztcclxuICAgIGxldCBpc0Fycm93TGVmdCA9IHBhcmFtcy5ldmVudC5rZXkgPT09ICdBcnJvd0xlZnQnO1xyXG4gICAgbGV0IGlzQXJyb3dSaWdodCA9IHBhcmFtcy5ldmVudC5rZXkgPT09ICdBcnJvd1JpZ2h0JztcclxuICAgIGxldCBpc1NoaWZ0S2V5ID0gcGFyYW1zLmV2ZW50LnNoaWZ0S2V5O1xyXG4gICAgbGV0IGlzQWx0S2V5ID0gcGFyYW1zLmV2ZW50LmFsdEtleTtcclxuXHJcbiAgICBsZXQgZm9jdXNlZENlbGwgPSBwYXJhbXMuYXBpLmdldEZvY3VzZWRDZWxsKCk7XHJcbiAgICBsZXQgaGFzQ2hvaWNlcyA9IHBhcmFtcy5kYXRhW3BhcmFtcy5jb2x1bW4uZ2V0Q29sSWQoKV0gJiYgcGFyYW1zLmRhdGFbcGFyYW1zLmNvbHVtbi5nZXRDb2xJZCgpXS5jaG9pY2VzID8gdHJ1ZSA6IGZhbHNlO1xyXG5cclxuICAgIGlmIChwYXJhbXMuY29sdW1uLmlzUGlubmVkKCkpIHtcclxuICAgICAgaWYgKGlzVGFiS2V5ICYmICFpc1NoaWZ0S2V5KVxyXG4gICAgICAgIHBhcmFtcy5hcGkudGFiVG9OZXh0Q2VsbCgpO1xyXG4gICAgICBlbHNlIGlmIChpc1RhYktleSAmJiBpc1NoaWZ0S2V5KVxyXG4gICAgICAgIHBhcmFtcy5hcGkudGFiVG9QcmV2aW91c0NlbGwoKTtcclxuICAgICAgZWxzZSBpZiAoaXNBcnJvd0xlZnQpXHJcbiAgICAgICAgcGFyYW1zLmFwaS50YWJUb1ByZXZpb3VzQ2VsbCgpO1xyXG4gICAgICBlbHNlIGlmIChpc0Fycm93UmlnaHQpXHJcbiAgICAgICAgcGFyYW1zLmFwaS50YWJUb05leHRDZWxsKCk7XHJcbiAgICAgIHRoaXMuYXBpLnN0b3BFZGl0aW5nKCk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoaGFzQ2hvaWNlcyAmJiBpc0FsdEtleSAmJiAoaXNBcnJvd0Rvd24gfHwgaXNBcnJvd1VwKSkge1xyXG4gICAgICBwYXJhbXMuZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgIHBhcmFtcy5hcGkuc3RhcnRFZGl0aW5nQ2VsbCh7XHJcbiAgICAgICAgcm93SW5kZXg6IGZvY3VzZWRDZWxsPy5yb3dJbmRleCBhcyBudW1iZXIsXHJcbiAgICAgICAgY29sS2V5OiBmb2N1c2VkQ2VsbD8uY29sdW1uIGFzIENvbHVtbixcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgYWRkRW50aXR5ID0gKG5ld0VudGl0eTogYW55KSA9PiB7XHJcbiAgICBpZiAodGhpcy5lbnRpdHkpIHtcclxuICAgICAgbGV0IHBhcmVudE5hbWUgPSB0aGlzLmVudGl0eS5jb25zdHJ1Y3Rvci5uYW1lO1xyXG4gICAgICBuZXdFbnRpdHlbcGFyZW50TmFtZSArICdSZWYnXSA9IHRoaXMuZW50aXR5W3BhcmVudE5hbWUgKyAnUmVmJ107XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5ncmlkVHlwZSA9PT0gVHJ1RGF0YUdyaWRUeXBlcy5EZXRhaWxNYW55VG9NYW55KSB7XHJcbiAgICAgIGxldCBwYXJlbnROYW1lID0gdGhpcy5lbnRpdHkuY29uc3RydWN0b3IubmFtZTtcclxuICAgICAgbGV0IHVuYXNzb2NpYXRlZFR5cGUgPSB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZW50aXR5TWFueVRvTWFueVR5cGU7XHJcbiAgICAgIGxldCByZWYgPSB0aGlzLnNlbGVjdGVkVW5hc3NvY2lhdGVkQ2hvaWNlLnZhbHVlLiQ7XHJcbiAgICAgIGxldCBjaGlsZFRvQXNzb2NpYXRlID0gdGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5zZWFyY2hCeVJlZkNhY2hlT25seSh1bmFzc29jaWF0ZWRUeXBlLCByZWYsIHRydWUpXHJcbiAgICAgIGlmIChjaGlsZFRvQXNzb2NpYXRlKSB7XHJcbiAgICAgICAgbGV0IGVuaGFuY2VkRW50aXR5ID0gdGhpcy5lbmhhbmNlUm93RGF0YUZvckVudGl0eShuZXdFbnRpdHkpO1xyXG4gICAgICAgIGVuaGFuY2VkRW50aXR5LiRlbnRpdHlbdW5hc3NvY2lhdGVkVHlwZS5uYW1lICsgJ1JlZiddID0gY2hpbGRUb0Fzc29jaWF0ZVt1bmFzc29jaWF0ZWRUeXBlLm5hbWUgKyAnUmVmJ107XHJcbiAgICAgICAgZW5oYW5jZWRFbnRpdHkuJGVudGl0eVtwYXJlbnROYW1lICsgJ1JlZiddID0gdGhpcy5lbnRpdHlbcGFyZW50TmFtZSArICdSZWYnXTtcclxuICAgICAgICAvLyByZW1vdmUgaXRlbSBmcm9tIHRoZSBhZGQgZHJvcGRvd24gY29udHJvbFxyXG4gICAgICAgIGxldCBpdGVtSW5kZXggPSB0aGlzLnVuYXNzb2NpYXRlZENob2ljZXMuZmluZEluZGV4KChjaG9pY2UpID0+IHtcclxuICAgICAgICAgIHJldHVybiBjaG9pY2VbdW5hc3NvY2lhdGVkVHlwZS5uYW1lICsgJ1JlZiddID09PSBjaGlsZFRvQXNzb2NpYXRlW3VuYXNzb2NpYXRlZFR5cGUubmFtZSArICdSZWYnXTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnVuYXNzb2NpYXRlZENob2ljZXMuc3BsaWNlKGl0ZW1JbmRleCwgMSk7XHJcbiAgICAgICAgLy8gY2xlYXIgYWRkIHNlbGVjdGlvblxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRVbmFzc29jaWF0ZWRDaG9pY2UgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgLy8gYWRkIHJvdyB0byBncmlkXHJcbiAgICAgICAgdGhpcy51bnNhdmVkRW50aXRpZXMucHVzaChlbmhhbmNlZEVudGl0eSk7XHJcbiAgICAgICAgdGhpcy5hcGkuYXBwbHlUcmFuc2FjdGlvbih7IGFkZDogW2VuaGFuY2VkRW50aXR5XSwgYWRkSW5kZXg6IDAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBlbmhhbmNlZEVudGl0eSA9IHRoaXMuZW5oYW5jZVJvd0RhdGFGb3JFbnRpdHkobmV3RW50aXR5KTtcclxuICAgICAgdGhpcy5yb3dEYXRhLnVuc2hpZnQoZW5oYW5jZWRFbnRpdHkpO1xyXG4gICAgICB0aGlzLmFwaS5hcHBseVRyYW5zYWN0aW9uKHsgYWRkOiBbZW5oYW5jZWRFbnRpdHldLCBhZGRJbmRleDogMCB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRlZmF1bHRDb2xEZWY6IENvbERlZiA9IHtcclxuICAgIHN1cHByZXNzS2V5Ym9hcmRFdmVudDogdGhpcy5vblN1cHByZXNzS2V5Ym9hcmRFdmVudFxyXG4gIH07XHJcblxyXG4gIGdldFJvd0NvdW50ID0gKCkgPT4ge1xyXG4gICAgbGV0IGNvdW50ID0gMDtcclxuICAgIHRoaXMuYXBpPy5mb3JFYWNoTm9kZUFmdGVyRmlsdGVyKCgpID0+IGNvdW50KyspO1xyXG4gICAgcmV0dXJuICdSb3dzOiAnICsgY291bnQ7XHJcbiAgfVxyXG5cclxuICBnZXRTZWxlY3RlZFJvd0NvdW50ID0gKCkgPT4ge1xyXG4gICAgbGV0IGNvdW50ID0gMDtcclxuICAgIGNvdW50ID0gdGhpcy5hcGk/LmdldFNlbGVjdGVkUm93cygpLmxlbmd0aDtcclxuICAgIHJldHVybiAnU2VsZWN0ZWQ6ICcgKyBjb3VudDtcclxuICB9XHJcblxyXG4gIG9uUm93RGF0YUNoYW5nZWQgPSAoZGF0YTogYW55KSA9PiB7XHJcbiAgICBpZiAodGhpcy5yb3dEYXRhID09PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuc2V0Tm9Sb3dzVGVtcGxhdGUoKTtcclxuICAgICAgdGhpcy5hcGkuc2hvd05vUm93c092ZXJsYXkoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2VsbERvdWJsZUNsaWNrZWQgPSAoZ3JpZENvbmZpZzogYW55KSA9PiB7XHJcbiAgICBpZiAoZ3JpZENvbmZpZy5jb2xEZWYuY2VsbENsYXNzID09PSAnYWctcGstYWxpZ25lZC1jZWxsJylcclxuICAgICAgdGhpcy5jb25maWcucm93SGVhZGVyRG91YmxlQ2xpY2tlZChncmlkQ29uZmlnKTtcclxuICB9XHJcblxyXG4gIG9uQ2VsbEtleURvd24gPSAoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgaWYgKCFldmVudC5ldmVudCkgcmV0dXJuO1xyXG4gICAgY29uc3Qga2V5ID0gKGV2ZW50LmV2ZW50IGFzIHVua25vd24pIGFzIEtleWJvYXJkRXZlbnQ7XHJcbiAgICBpZiAoa2V5LmNvZGUgPT09ICdTcGFjZScpIHtcclxuICAgICAga2V5LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIGtleS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgdGhpcy5hcGk/LnN0YXJ0RWRpdGluZ0NlbGwoe1xyXG4gICAgICAgIHJvd0luZGV4OiBldmVudC5yb3dJbmRleCxcclxuICAgICAgICBjb2xLZXk6IGV2ZW50LmNvbHVtbi5nZXRDb2xJZCgpLFxyXG4gICAgICAgIGtleToga2V5LmNvZGVcclxuICAgICAgfSk7XHJcbiAgICB9IFxyXG4gIH1cclxuXHJcbiAgb25DZWxsRm9jdXNlZChldmVudDogYW55KSB7XHJcbiAgICBpZiAoZXZlbnQuY29sdW1uLmNvbERlZi5waW5uZWQpIHtcclxuICAgICAgdGhpcy5ncmlkT3B0aW9ucy5zdXBwcmVzc1Jvd0NsaWNrU2VsZWN0aW9uID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmdyaWRPcHRpb25zLnN1cHByZXNzUm93Q2xpY2tTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLmFwaS5kZXNlbGVjdEFsbCgpO1xyXG4gICAgfVxyXG4gICAgLy9sZXQgY29sdW1uRGVmcyA9IHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5jb2x1bW5EZWZzO1xyXG4gICAgLy9pZiAoZXZlbnQuY29sdW1uLmNvbERlZi5waW5uZWQpIHtcclxuICAgIC8vICBjb2x1bW5EZWZzLmZvckVhY2goKGNvbHVtbkRlZjogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAvLyAgICBpZiAoaW5kZXggIT09IDApXHJcbiAgICAvLyAgICAgIGNvbHVtbkRlZi5oZWFkZXJDbGFzcyA9ICdhZy1jb2x1bW4tZm9jdXMnO1xyXG4gICAgLy8gIH0pO1xyXG4gICAgLy99IGVsc2Uge1xyXG4gICAgLy8gIGNvbHVtbkRlZnMuZm9yRWFjaCgoY29sdW1uRGVmOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgIC8vICAgIGlmIChpbmRleCAhPT0gMCAmJiBldmVudC5jb2x1bW4uY29sSWQgPT09IGNvbHVtbkRlZi5maWVsZClcclxuICAgIC8vICAgICAgY29sdW1uRGVmLmhlYWRlckNsYXNzID0gJ2FnLWNvbHVtbi1mb2N1cyc7XHJcbiAgICAvLyAgICBlbHNlXHJcbiAgICAvLyAgICAgIGNvbHVtbkRlZi5oZWFkZXJDbGFzcyA9IHVuZGVmaW5lZDtcclxuICAgIC8vICB9KTtcclxuICAgIC8vfVxyXG4gICAgLy90aGlzLmdyaWRPcHRpb25zLmFwaS5zZXRDb2x1bW5EZWZzKGNvbHVtbkRlZnMpO1xyXG4gIH1cclxuXHJcbiAgb25TZWFyY2ggPSAoc2V0dXBRdWVyeTogYW55KSA9PiB7XHJcbiAgICB0aGlzLmZpcnN0U2VhcmNoUmFuID0gdHJ1ZTtcclxuICAgIHRoaXMuYXBpLmhpZGVPdmVybGF5KCk7XHJcbiAgICB0aGlzLmFwaS5zaG93TG9hZGluZ092ZXJsYXkoKTtcclxuXHJcbiAgICBsZXQgZW50aXR5TG9hZGVkID0gdGhpcy5sb2FkZWRFbnRpdGllcy5zb21lKChyZWYpID0+IHsgcmV0dXJuIHJlZiA9PT0gdGhpcy5lbnRpdHlbdGhpcy5lbnRpdHkuY29uc3RydWN0b3IubmFtZSArICdSZWYnXTsgfSk7XHJcbiAgICBsZXQgam9pbnMgPSBbXTtcclxuICAgIGlmIChlbnRpdHlMb2FkZWQpIHtcclxuICAgICAgam9pbnMucHVzaCh0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpLnNlYXJjaENhY2hlT25seShcclxuICAgICAgICB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZW50aXR5VHlwZSxcclxuICAgICAgICBzZXR1cFF1ZXJ5LFxyXG4gICAgICAgIHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5leHBhbmRzKSk7XHJcblxyXG4gICAgICBpZiAodGhpcy5ncmlkVHlwZSA9PT0gVHJ1RGF0YUdyaWRUeXBlcy5EZXRhaWxNYW55VG9NYW55KVxyXG4gICAgICAgIGpvaW5zLnB1c2godGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5zZWFyY2hRdWVyeUNob2ljZXMoXHJcbiAgICAgICAgICB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZW50aXR5TWFueVRvTWFueVR5cGUsXHJcbiAgICAgICAgICB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcubWFueVRvTWFueVNldHVwUXVlcnkodGhpcy5lbnRpdHkpLCBudWxsLCBmYWxzZSkpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBqb2lucy5wdXNoKHRoaXMuZGF0YUNvbnRleHQuZW50aXR5QWNjZXNzKCkuc2VhcmNoKFxyXG4gICAgICAgIHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5lbnRpdHlUeXBlLFxyXG4gICAgICAgIHNldHVwUXVlcnksXHJcbiAgICAgICAgdGhpcy5jb25maWcucmVzdWx0Q29uZmlnLmV4cGFuZHMsIGZhbHNlKSk7XHJcblxyXG4gICAgICBpZiAodGhpcy5ncmlkVHlwZSA9PT0gVHJ1RGF0YUdyaWRUeXBlcy5EZXRhaWxNYW55VG9NYW55KVxyXG4gICAgICAgIGpvaW5zLnB1c2godGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5zZWFyY2hRdWVyeUNob2ljZXMoXHJcbiAgICAgICAgICB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZW50aXR5TWFueVRvTWFueVR5cGUsXHJcbiAgICAgICAgICB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcubWFueVRvTWFueVNldHVwUXVlcnkodGhpcy5lbnRpdHkpLCBudWxsLCB0cnVlKSlcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmxhdGVzdFNldHVwUXVlcnkgPSBzZXR1cFF1ZXJ5O1xyXG5cclxuICAgIGZvcmtKb2luKGpvaW5zKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiByZXN1bHRzID0+IHtcclxuICAgICAgICB0aGlzLnNldE5vUm93c1RlbXBsYXRlKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuZ3JpZFR5cGUgPT09IFRydURhdGFHcmlkVHlwZXMuRGV0YWlsTWFueVRvTWFueSlcclxuICAgICAgICAgIHRoaXMubG9hZE1hbnlUb01hbnlHcmlkRGF0YShyZXN1bHRzWzBdLCByZXN1bHRzWzFdLCB0cnVlKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICB0aGlzLmxvYWRHcmlkRGF0YShyZXN1bHRzWzBdKTtcclxuICAgICAgfSxcclxuICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5ncmlkVHlwZSAhPT0gVHJ1RGF0YUdyaWRUeXBlcy5TZWFyY2gpXHJcbiAgICAgICAgICB0aGlzLmxvYWRlZEVudGl0aWVzLnB1c2godGhpcy5lbnRpdHlbdGhpcy5lbnRpdHkuY29uc3RydWN0b3IubmFtZSArICdSZWYnXSk7XHJcbiAgICAgICAgdGhpcy5hcGkuaGlkZU92ZXJsYXkoKTtcclxuICAgICAgICBpZiAodGhpcy5yb3dEYXRhID09PSBudWxsIHx8ICF0aGlzLnJvd0RhdGEubGVuZ3RoKSB7XHJcbiAgICAgICAgICB0aGlzLmFwaS5zaG93Tm9Sb3dzT3ZlcmxheSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblVuYXNzb2NpYXRlZENob2ljZUNoYW5nZWQgPSAob3B0aW9uOiBJVHJ1VG9vbGJhckRyb3Bkb3duT3B0aW9uIHwgbnVsbCkgPT4ge1xyXG5cclxuICB9XHJcblxyXG4gIGNhbkFkZCA9ICgpOiBib29sZWFuID0+IHtcclxuICAgIGlmICh0aGlzLmdyaWRUeXBlID09PSBUcnVEYXRhR3JpZFR5cGVzLkRldGFpbE1hbnlUb01hbnkpXHJcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkVW5hc3NvY2lhdGVkQ2hvaWNlICE9PSB1bmRlZmluZWQ7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG9uQWRkID0gKCk6IHZvaWQgPT4ge1xyXG4gICAgdGhpcy5hZGRFbnRpdHkodGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5hZGQodGhpcy5jb25maWcucmVzdWx0Q29uZmlnLmVudGl0eVR5cGUpKTtcclxuICB9XHJcblxyXG4gIG9uRGVsZXRlID0gKCk6IHZvaWQgPT4ge1xyXG4gICAgbGV0IHNlbGVjdGVkUm93cyA9IHRoaXMuYXBpLmdldFNlbGVjdGVkUm93cygpO1xyXG4gICAgaWYgKHNlbGVjdGVkUm93cy5sZW5ndGgpIHtcclxuICAgICAgbGV0IGVudGl0aWVzID0gc2VsZWN0ZWRSb3dzLm1hcChmdW5jdGlvbiAocm93OiBhbnkpIHsgcmV0dXJuIHJvdy4kZW50aXR5OyB9KTtcclxuICAgICAgbGV0IGNvbmZpcm1Nc2cgPSB0aGlzLmFwcEVudmlyb25tZW50LmZvcm1hdERlbGV0ZUNvbmZpcm1hdGlvbk1lc3NhZ2UodGhpcy5jb25maWcudGFibGVOYW1lLCB0aGlzLmNvbmZpZy50YWJsZVBsdXJhbExhYmVsLCBzZWxlY3RlZFJvd3MubGVuZ3RoKTtcclxuICAgICAgaWYgKHRoaXMuZ3JpZFR5cGUgPT09IFRydURhdGFHcmlkVHlwZXMuRGV0YWlsTWFueVRvTWFueSkge1xyXG4gICAgICAgIGxldCBvblN1Y2Nlc3MgPSAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9uU2VhcmNoKHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5zZXR1cFF1ZXJ5KHRoaXMuZW50aXR5KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZGF0YUNvbnRleHQuZGVsZXRlKGVudGl0aWVzLCBjb25maXJtTXNnLCBvblN1Y2Nlc3MpO1xyXG4gICAgICAgIHRoaXMuYXBpLmFwcGx5VHJhbnNhY3Rpb24oeyByZW1vdmU6IHNlbGVjdGVkUm93cyB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmRhdGFDb250ZXh0LmRlbGV0ZShlbnRpdGllcywgY29uZmlybU1zZyk7XHJcbiAgICAgICAgdGhpcy5hcGkuYXBwbHlUcmFuc2FjdGlvbih7IHJlbW92ZTogc2VsZWN0ZWRSb3dzIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnVpTm90aWZpY2F0aW9uLndhcm5pbmcodGhpcy5hcHBFbnZpcm9ubWVudC5tc2dOb1JlY29yZHNTZWxlY3RlZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbktlZXAgPSAoKTogdm9pZCA9PiB7XHJcbiAgICBsZXQgc2VsZWN0ZWRSb3dzID0gdGhpcy5hcGkuZ2V0U2VsZWN0ZWRSb3dzKCk7XHJcbiAgICBpZiAoc2VsZWN0ZWRSb3dzLmxlbmd0aClcclxuICAgICAgdGhpcy5yb3dEYXRhID0gdGhpcy5hcGkuZ2V0U2VsZWN0ZWRSb3dzKCk7XHJcbiAgfVxyXG5cclxuICBvblJlbW92ZSA9ICgpOiB2b2lkID0+IHtcclxuICAgIGxldCBzZWxlY3RlZFJvd3MgPSB0aGlzLmFwaS5nZXRTZWxlY3RlZFJvd3MoKTtcclxuICAgIHRoaXMuYXBpLmFwcGx5VHJhbnNhY3Rpb24oeyByZW1vdmU6IHNlbGVjdGVkUm93cyB9KTtcclxuICB9XHJcblxyXG4gIG9uRXhwb3J0ID0gKCk6IHZvaWQgPT4ge1xyXG4gICAgdGhpcy5leHBvcnREYXRhKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaWJlVG8oKTtcclxuICAgIHRoaXMuY29sdW1uRGVmcyA9IHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5jb2x1bW5EZWZzO1xyXG4gICAgdGhpcy5ncmlkVHlwZSA9IHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5ncmlkVHlwZTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmdyaWRUeXBlID09PSBUcnVEYXRhR3JpZFR5cGVzLkRldGFpbCB8fCB0aGlzLmdyaWRUeXBlID09PSBUcnVEYXRhR3JpZFR5cGVzLkRldGFpbE1hbnlUb01hbnkpXHJcbiAgICAgIHRoaXMub25TZWFyY2godGhpcy5jb25maWcucmVzdWx0Q29uZmlnLnNldHVwUXVlcnkodGhpcy5lbnRpdHkpKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIC8vc2V0VGltZW91dCB0byBwcmV2ZW50OiBFUlJPUiBFcnJvcjogTkcwMTAwOiBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yLiBcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnBhcmVudFRvb2xiYXJUZW1wbGF0ZSA9IHRoaXMuc2VhcmNoUmVzdWx0Vmlld01hbmFnZXIuc2VhcmNoVmlld1Rvb2xiYXJUZW1wbGF0ZTtcclxuICAgICAgaWYgKHRoaXMuZ3JpZFR5cGUgPT09IFRydURhdGFHcmlkVHlwZXMuRGV0YWlsIHx8IHRoaXMuZ3JpZFR5cGUgPT09IFRydURhdGFHcmlkVHlwZXMuRGV0YWlsTWFueVRvTWFueSkge1xyXG4gICAgICAgIHRoaXMub25TZWFyY2godGhpcy5jb25maWcucmVzdWx0Q29uZmlnLnNldHVwUXVlcnkodGhpcy5lbnRpdHkpKTtcclxuICAgICAgfVxyXG4gICAgfSwgMCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vicy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdj5cclxuICA8ZGl2IGNsYXNzPVwidHJ1LWRhdGEtZ3JpZC10b29sYmFyLWNvbnRhaW5lclwiPlxyXG4gICAgPHRydS10b29sYmFyPlxyXG4gICAgICA8dHJ1LXRvb2xiYXItZHJvcGRvd24gW29wdGlvbnNdPVwidW5hc3NvY2lhdGVkQ2hvaWNlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKHNlbGVjdGVkT3B0aW9uKV09XCJzZWxlY3RlZFVuYXNzb2NpYXRlZENob2ljZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uVW5hc3NvY2lhdGVkQ2hvaWNlQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZ3JpZFR5cGUgPT0gVHJ1RGF0YUdyaWRUeXBlcy5EZXRhaWxNYW55VG9NYW55XCI+XHJcbiAgICAgIDwvdHJ1LXRvb2xiYXItZHJvcGRvd24+XHJcbiAgICAgIDx0cnUtdG9vbGJhci1idXR0b24gW2ljb25dPVwiJ3RydS10b29sYmFyLWFkZC1pY29uJ1wiIFt0b29sdGlwXT1cIidBZGQgLSBbQ3RybCArIEldJ1wiIFtkaXNhYmxlZF09XCIhY2FuQWRkKClcIiAob25DbGljayk9XCJvbkFkZCgpXCI+PC90cnUtdG9vbGJhci1idXR0b24+XHJcbiAgICAgIDx0cnUtdG9vbGJhci1idXR0b24gW2ljb25dPVwiJ3RydS10b29sYmFyLWRlbGV0ZS1pY29uJ1wiIFt0b29sdGlwXT1cIidEZWxldGUgLSBbQ3RybCArIERdJ1wiIChjbGljayk9XCJvbkRlbGV0ZSgpXCI+PC90cnUtdG9vbGJhci1idXR0b24+XHJcbiAgICAgIDx0cnUtdG9vbGJhci1idXR0b24gW2ljb25dPVwiJ3RydS10b29sYmFyLWtlZXAtaWNvbidcIiBbdG9vbHRpcF09XCInS2VlcCBzZWxlY3RlZCByZWNvcmRzIC0gW0N0cmwgKyBLXSdcIiAoY2xpY2spPVwib25LZWVwKClcIj48L3RydS10b29sYmFyLWJ1dHRvbj5cclxuICAgICAgPHRydS10b29sYmFyLWJ1dHRvbiBbaWNvbl09XCIndHJ1LXRvb2xiYXItcmVtb3ZlLWljb24nXCIgW3Rvb2x0aXBdPVwiJ1JlbW92ZSBzZWxlY3RlZCByZWNvcmRzIC0gW0N0cmwgKyBSXSdcIiAoY2xpY2spPVwib25SZW1vdmUoKVwiPjwvdHJ1LXRvb2xiYXItYnV0dG9uPlxyXG4gICAgICA8dHJ1LXRvb2xiYXItc2VwYXJhdG9yPjwvdHJ1LXRvb2xiYXItc2VwYXJhdG9yPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicGFyZW50VG9vbGJhclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDx0cnUtdG9vbGJhci1zZXBhcmF0b3IgKm5nSWY9XCJncmlkVHlwZSA9PSBUcnVEYXRhR3JpZFR5cGVzLlNlYXJjaFwiPjwvdHJ1LXRvb2xiYXItc2VwYXJhdG9yPlxyXG4gICAgICA8dHJ1LXRvb2xiYXItYnV0dG9uIFtpY29uXT1cIid0cnUtdG9vbGJhci1leHBvcnQtaWNvbidcIiBbdG9vbHRpcF09XCInRXhwb3J0J1wiIChjbGljayk9XCJvbkV4cG9ydCgpXCI+PC90cnUtdG9vbGJhci1idXR0b24+XHJcbiAgICA8L3RydS10b29sYmFyPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJ0cnUtZGF0YS1ncmlkLWNvbnRhaW5lclwiPlxyXG4gICAgPGFnLWdyaWQtYW5ndWxhciBjbGFzcz1cImFnLXRoZW1lLWFscGluZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtncmlkT3B0aW9uc109XCJncmlkT3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtyb3dEYXRhXT1cInJvd0RhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbY29sdW1uRGVmc109XCJjb2x1bW5EZWZzXCJcclxuICAgICAgICAgICAgICAgICAgICAgW2RlZmF1bHRDb2xEZWZdPVwiZGVmYXVsdENvbERlZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtoZWFkZXJIZWlnaHRdPVwiMjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbcm93SGVpZ2h0XT1cIjI1XCJcclxuICAgICAgICAgICAgICAgICAgICAgW3Jvd0J1ZmZlcl09XCI1MFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtlbnRlck5hdmlnYXRlc1ZlcnRpY2FsbHldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtlbnRlck5hdmlnYXRlc1ZlcnRpY2FsbHlBZnRlckVkaXRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtzdXBwcmVzc1Jvd0hvdmVySGlnaGxpZ2h0XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbc3RvcEVkaXRpbmdXaGVuQ2VsbHNMb3NlRm9jdXNdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAoY2VsbERvdWJsZUNsaWNrZWQpPVwib25DZWxsRG91YmxlQ2xpY2tlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgKGNlbGxLZXlEb3duKT1cIm9uQ2VsbEtleURvd24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIChjZWxsRm9jdXNlZCk9XCJvbkNlbGxGb2N1c2VkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAocm93RGF0YUNoYW5nZWQpPVwib25Sb3dEYXRhQ2hhbmdlZCgkZXZlbnQpXCI+XHJcbiAgICA8L2FnLWdyaWQtYW5ndWxhcj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwidHJ1LWRhdGEtZ3JpZC1zdGF0dXNiYXItY29udGFpbmVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidHJ1LWRhdGEtZ3JpZC1zdGF0dXNiYXItY29udGFpbmVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0cnUtZGF0YS1ncmlkLXN0YXR1c2Jhci12YWx1ZXMtY29udGFpbmVyXCI+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJ0cnUtZGF0YS1ncmlkLXN0YXR1c2Jhci12YWx1ZXMtdGV4dFwiPnt7Z2V0Um93Q291bnQoKX19PC9wPlxyXG4gICAgICAgIDxwIGNsYXNzPVwidHJ1LWRhdGEtZ3JpZC1zdGF0dXNiYXItdmFsdWVzLXRleHRcIj57e2dldFNlbGVjdGVkUm93Q291bnQoKX19PC9wPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
@@ -2856,11 +2856,11 @@ class TruDataChangeParser {
2856
2856
  }
2857
2857
  findEntityInCache = (change) => {
2858
2858
  var entityAccessor = this.dataContext.entityAccess();
2859
- return entityAccessor.searchByRefCacheOnly(this.entity, parseInt(change.tableRef, 10), true);
2859
+ return entityAccessor.searchByRefCacheOnly(this.types.getType(change.tableName), parseInt(change.tableRef, 10), true);
2860
2860
  };
2861
2861
  findEntityInGlobalCache = (change) => {
2862
2862
  var entityAccessor = this.globalDataContext.entityAccess();
2863
- return entityAccessor.searchByRefCacheOnly(this.entity, parseInt(change.tableRef, 10), true);
2863
+ return entityAccessor.searchByRefCacheOnly(this.types.getType(change.tableName), parseInt(change.tableRef, 10), true);
2864
2864
  };
2865
2865
  checkIfDateTime = (newValue, currentValue, typeName) => {
2866
2866
  if (typeName === 'date-time' || typeName === 'date') {
@@ -3761,9 +3761,11 @@ class TruDataGrid {
3761
3761
  this.onSearch(this.config.resultConfig.setupQuery(this.entity));
3762
3762
  };
3763
3763
  this.dataContext.delete(entities, confirmMsg, onSuccess);
3764
+ this.api.applyTransaction({ remove: selectedRows });
3764
3765
  }
3765
3766
  else {
3766
3767
  this.dataContext.delete(entities, confirmMsg);
3768
+ this.api.applyTransaction({ remove: selectedRows });
3767
3769
  }
3768
3770
  }
3769
3771
  else {