@fundamental-ngx/platform 0.43.42 → 0.43.44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/form/multi-combobox/commons/base-multi-combobox.mjs +14 -6
- package/esm2020/form/multi-combobox/multi-combobox/multi-combobox.component.mjs +11 -5
- package/esm2020/table/table.component.mjs +3 -3
- package/esm2020/table-helpers/directives/table-virtual-scroll.directive.mjs +13 -5
- package/esm2020/value-help-dialog/value-help-dialog/value-help-dialog.component.mjs +2 -1
- package/fesm2015/fundamental-ngx-platform-form.mjs +17 -8
- package/fesm2015/fundamental-ngx-platform-form.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-platform-table-helpers.mjs +12 -4
- package/fesm2015/fundamental-ngx-platform-table-helpers.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-platform-table.mjs +2 -2
- package/fesm2015/fundamental-ngx-platform-table.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-platform-value-help-dialog.mjs +1 -0
- package/fesm2015/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-form.mjs +17 -8
- package/fesm2020/fundamental-ngx-platform-form.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-table-helpers.mjs +12 -4
- package/fesm2020/fundamental-ngx-platform-table-helpers.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-table.mjs +2 -2
- package/fesm2020/fundamental-ngx-platform-table.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-value-help-dialog.mjs +1 -0
- package/fesm2020/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
- package/form/multi-combobox/commons/base-multi-combobox.d.ts +11 -5
- package/form/multi-combobox/multi-combobox/multi-combobox.component.d.ts +4 -2
- package/fundamental-ngx-platform-v0.43.44.tgz +0 -0
- package/package.json +4 -4
- package/schematics/ng-add/index.js +1 -1
- package/fundamental-ngx-platform-v0.43.42.tgz +0 -0
|
@@ -143,6 +143,12 @@ export class TableVirtualScrollDirective extends TableVirtualScroll {
|
|
|
143
143
|
/** @hidden */
|
|
144
144
|
ngOnDestroy() {
|
|
145
145
|
this._focusableGridSubscription?.unsubscribe();
|
|
146
|
+
if (this.scrollWholeRows) {
|
|
147
|
+
this._table.tableContainer.nativeElement.removeEventListener('wheel', this._wheelScrollListenerFunction, {
|
|
148
|
+
passive: false
|
|
149
|
+
});
|
|
150
|
+
this._table.tableScrollMockContainer.nativeElement.removeEventListener('scroll', this._mockScrollbarListenerFunction, { passive: false });
|
|
151
|
+
}
|
|
146
152
|
}
|
|
147
153
|
/** Sets table reference. */
|
|
148
154
|
setTable(table) {
|
|
@@ -171,7 +177,7 @@ export class TableVirtualScrollDirective extends TableVirtualScroll {
|
|
|
171
177
|
}
|
|
172
178
|
}
|
|
173
179
|
const totalNodeCount = this._table._tableRowsVisible.length;
|
|
174
|
-
let visibleNodeCount =
|
|
180
|
+
let visibleNodeCount = this._getNumberOfRowsToDisplay();
|
|
175
181
|
visibleNodeCount = Math.min(totalNodeCount - startNodeIndex, visibleNodeCount);
|
|
176
182
|
this.virtualScrollTotalHeight = totalNodeCount * this.rowHeight - visibleNodeCount * this.rowHeight;
|
|
177
183
|
this._setRows(startNodeIndex);
|
|
@@ -235,13 +241,15 @@ export class TableVirtualScrollDirective extends TableVirtualScroll {
|
|
|
235
241
|
const tableContainer = this._table.tableContainer.nativeElement;
|
|
236
242
|
let tableHeight = tableContainer.clientHeight;
|
|
237
243
|
tableHeight = tableHeight - tableContainer.querySelector('thead').clientHeight;
|
|
238
|
-
const numberOfRows = Math.floor(tableHeight /
|
|
244
|
+
const numberOfRows = Math.floor(tableHeight / this.rowHeight);
|
|
245
|
+
let retVal;
|
|
239
246
|
if (this._table._tableRowsVisible.length < numberOfRows) {
|
|
240
|
-
|
|
247
|
+
retVal = this._table._tableRowsVisible.length;
|
|
241
248
|
}
|
|
242
249
|
else {
|
|
243
|
-
|
|
250
|
+
retVal = numberOfRows;
|
|
244
251
|
}
|
|
252
|
+
return retVal;
|
|
245
253
|
}
|
|
246
254
|
/**
|
|
247
255
|
* @hidden
|
|
@@ -326,4 +334,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
326
334
|
type: HostListener,
|
|
327
335
|
args: ['keydown', ['$event']]
|
|
328
336
|
}] } });
|
|
329
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtdmlydHVhbC1zY3JvbGwuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL3RhYmxlLWhlbHBlcnMvZGlyZWN0aXZlcy90YWJsZS12aXJ0dWFsLXNjcm9sbC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBK0MsTUFBTSxlQUFlLENBQUM7QUFDcEgsT0FBTyxFQUFFLGdCQUFnQixFQUF5QixPQUFPLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDOUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQy9DLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBRTNGLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQWM5RCxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsa0JBQWtCO0lBWm5FOztRQWFJOztXQUVHO1FBRUgsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFtQnRCLHdFQUF3RTtRQUV4RSxnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQU1qQjs7O1dBR0c7UUFFSCxjQUFT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dmUsIEhvc3RMaXN0ZW5lciwgaW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGVzdHJveWVkU2VydmljZSwgRm9jdXNhYmxlSXRlbVBvc2l0aW9uLCBLZXlVdGlsIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlNb2RlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NvbnRlbnQtZGVuc2l0eSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZpbHRlciwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBGRFBfVEFCTEVfVklSVFVBTF9TQ1JPTExfRElSRUNUSVZFLCBST1dfSEVJR0hUIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFRhYmxlVmlydHVhbFNjcm9sbCB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyBUYWJsZVNjcm9sbERpc3BhdGNoZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdGFibGUtc2Nyb2xsLWRpc3BhdGNoZXIuc2VydmljZSc7XG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gJy4uL3RhYmxlJztcbmltcG9ydCB7IERPV05fQVJST1csIFVQX0FSUk9XIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IFRhYmxlUm93U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3RhYmxlLXJvdy5zZXJ2aWNlJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5cbkBEaXJlY3RpdmUoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdmZHAtdGFibGVbdmlydHVhbFNjcm9sbF0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIERlc3Ryb3llZFNlcnZpY2UsXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZEUF9UQUJMRV9WSVJUVUFMX1NDUk9MTF9ESVJFQ1RJVkUsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogVGFibGVWaXJ0dWFsU2Nyb2xsRGlyZWN0aXZlXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlVmlydHVhbFNjcm9sbERpcmVjdGl2ZSBleHRlbmRzIFRhYmxlVmlydHVhbFNjcm9sbCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAgIC8qKiBXaGV0aGVyIHRvIHNob3cgb25seSB2aXNpYmxlIHJvd3MgaW4gbWF0dGVyIG9mIHBlcmZvcm1hbmNlXG4gICAgICogZmFsc2UgYnkgZGVmYXVsdCwgd2hlbiB0cnVlIHNldHRpbmcgYm9keUhlaWdodCBhbmQgcm93SGVpZ2h0IGlzIHJlcXVpcmVkLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgdmlydHVhbFNjcm9sbCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBzY3JvbGwgd2hvbGUgcm93cyByYXRoZXIgdGhhbiBwaXhlbCBieSBwaXhlbCB3aGVuIHRoZSB1c2VyIHBlcmZvcm1zIGEgc2Nyb2xsLlxuICAgICAqIFRoaXMgZ2l2ZXMgZ3JlYXRlciBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMgYnV0IGFsc28gbGVuZHMgdG8gc29tZSBwb3RlbnRpYWxseSB1bmRlc2lyYWJsZSBVWCBjaGFuZ2VzLlxuICAgICAqIEEgXCJyb3dIZWlnaHRcIiBtdXN0IGJlIHByb3ZpZGVkIHdoZW4gdXNpbmcgdGhpcyBmZWF0dXJlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHNjcm9sbFdob2xlUm93cyh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9zY3JvbGxXaG9sZVJvd3MgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgICAgICBpZiAodGhpcy5fc2Nyb2xsV2hvbGVSb3dzKSB7XG4gICAgICAgICAgICB0aGlzLnZpcnR1YWxTY3JvbGwgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IHNjcm9sbFdob2xlUm93cygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Njcm9sbFdob2xlUm93cztcbiAgICB9XG5cbiAgICAvKiogQ2FjaGUgc2l6ZSBmb3IgdGhlIHZpcnR1YWxTY3JvbGwsIGRlZmF1bHQgaXMgNDAgaW4gZWFjaCBkaXJlY3Rpb24gKi9cbiAgICBASW5wdXQoKVxuICAgIHJlbmRlckFoZWFkID0gNDA7XG5cbiAgICAvKiogQm9keSBoZWlnaHQuICovXG4gICAgQElucHV0KClcbiAgICBib2R5SGVpZ2h0OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBIZWlnaHQgb2YgdGhlIHJvdywgcmVxdWlyZWQgZm9yIHRoZSB2aXJ0dWFsU2Nyb2xsLFxuICAgICAqIGRlZmF1bHQgaXMgNDRweCBpbiBjb3p5LCAzMnB4IGluIGNvbXBhY3QgYW5kIDI0cHggaW4gY29uZGVuc2VkIChzZXQgYXV0b21hdGljYWxseSlcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHJvd0hlaWdodCA9IFJPV19IRUlHSFQuZ2V0KENvbnRlbnREZW5zaXR5TW9kZS5DT1pZKSE7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHZpcnR1YWxTY3JvbGxUb3RhbEhlaWdodCA9IDA7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHZpcnR1YWxTY3JvbGxUcmFuc2Zvcm0kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF90YWJsZTogVGFibGU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3ZpcnR1YWxTY3JvbGxDYWNoZSA9IHsgc3RhcnROb2RlSW5kZXg6IC0xLCB2aXNpYmxlTm9kZUNvdW50OiAtMSwgdG90YWxOb2RlQ291bnQ6IC0xIH07XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3RhYmxlU2Nyb2xsRGlzcGF0Y2hlciA9IGluamVjdChUYWJsZVNjcm9sbERpc3BhdGNoZXJTZXJ2aWNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfdGFibGVSb3dTZXJ2aWNlID0gaW5qZWN0KFRhYmxlUm93U2VydmljZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kkID0gaW5qZWN0KERlc3Ryb3llZFNlcnZpY2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF93aGVlbFRpbWVvdXQ6IGFueTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2Nyb2xsTW9ja1RpbWVvdXQ6IGFueTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGFzdE1vY2tTY3JvbGxQb3NpdGlvbiA9IDA7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2ZvY3VzYWJsZUdyaWRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZm9jdXNlZENlbGw6IEZvY3VzYWJsZUl0ZW1Qb3NpdGlvbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcHJldmlvdXNTdGFydE5vZGVJbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Njcm9sbFdob2xlUm93cyA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgICBfa2V5ZG93bkhhbmRsZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc2Nyb2xsV2hvbGVSb3dzKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fZm9jdXNlZENlbGw/LnJvd0luZGV4ID09PSAwICYmIEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBVUF9BUlJPVykpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fdGFibGUudGFibGVDb250YWluZXIubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCd0cicpWzFdLmFyaWFSb3dJbmRleCAhPT0gJzAnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNlbGxUb0ZvY3VzID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sSW5kZXg6IHRoaXMuX2ZvY3VzZWRDZWxsLmNvbEluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgcm93SW5kZXg6IDFcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGFibGUuX2ZvY3VzYWJsZUdyaWQuZm9jdXNDZWxsKGNlbGxUb0ZvY3VzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5fc2Nyb2xsUm93KC0xKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgdGhpcy5fZm9jdXNlZENlbGw/LnJvd0luZGV4ID09PSB0aGlzLl9nZXROdW1iZXJPZlJvd3NUb0Rpc3BsYXkoKSAmJlxuICAgICAgICAgICAgICAgIEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBET1dOX0FSUk9XKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2Nyb2xsUm93KDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc2Nyb2xsV2hvbGVSb3dzICYmICF0aGlzLnZpcnR1YWxTY3JvbGwpIHtcbiAgICAgICAgICAgIHRoaXMudmlydHVhbFNjcm9sbCA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl90YWJsZS50YWJsZVNjcm9sbGFibGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy52aXJ0dWFsU2Nyb2xsICYmIChjaGFuZ2VzWydyb3dIZWlnaHQnXSB8fCBjaGFuZ2VzWyd2aXJ0dWFsU2Nyb2xsJ10gfHwgY2hhbmdlc1sncmVuZGVyQWhlYWQnXSkpIHtcbiAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlVmlydHVhbFNjcm9sbFJvd3MoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2ZvY3VzYWJsZUdyaWRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqIFNldHMgdGFibGUgcmVmZXJlbmNlLiAqL1xuICAgIHNldFRhYmxlKHRhYmxlOiBUYWJsZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl90YWJsZSA9IHRhYmxlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gZGV0ZXJtaW5lcyBob3cgbWFueSByb3dzIGNhbiBiZSBkaXNwbGF5ZWQgaW4gdGhlIHRhYmxlLCBhbmQgc2V0cyB0aGUgcm93cyBpbiB0aGUgdGFibGUgYmFzZWQgb24gdGhlXG4gICAgICogc3RhcnQgbm9kZSBpbmRleCwgd2hpY2ggbWF5IGNvbWUgZnJvbSB0aGUgdGFibGUgc3RhdGVcbiAgICAgKi9cbiAgICBjYWxjdWxhdGVWaXJ0dWFsU2Nyb2xsUm93cygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc2Nyb2xsV2hvbGVSb3dzKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2ZvY3VzYWJsZUdyaWRTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9mb2N1c2FibGVHcmlkU3Vic2NyaXB0aW9uID0gdGhpcy5fdGFibGUuX2ZvY3VzYWJsZUdyaWQuaXRlbUZvY3VzZWQuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9mb2N1c2VkQ2VsbCA9IGV2ZW50O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLnZpcnR1YWxTY3JvbGwgfHwgIXRoaXMuYm9keUhlaWdodCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHN0YXJ0Tm9kZUluZGV4ID0gMDtcbiAgICAgICAgICAgIGNvbnN0IHNjcm9sbFRvcCA9IHRoaXMuX3RhYmxlLmdldFRhYmxlU3RhdGUoKS5zY3JvbGxUb3BQb3NpdGlvbjtcbiAgICAgICAgICAgIGlmIChzY3JvbGxUb3AgIT09IDApIHtcbiAgICAgICAgICAgICAgICBzdGFydE5vZGVJbmRleCA9IE1hdGguZmxvb3Ioc2Nyb2xsVG9wIC8gdGhpcy5yb3dIZWlnaHQpO1xuICAgICAgICAgICAgICAgIGlmIChzdGFydE5vZGVJbmRleCA+IHRoaXMuX3RhYmxlLl90YWJsZVJvd3NWaXNpYmxlLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBzdGFydE5vZGVJbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB0b3RhbE5vZGVDb3VudCA9IHRoaXMuX3RhYmxlLl90YWJsZVJvd3NWaXNpYmxlLmxlbmd0aDtcbiAgICAgICAgICAgIGxldCB2aXNpYmxlTm9kZUNvdW50ID0gTWF0aC5mbG9vcih0aGlzLl90YWJsZS50YWJsZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodCAvIHRoaXMucm93SGVpZ2h0KTtcbiAgICAgICAgICAgIHZpc2libGVOb2RlQ291bnQgPSBNYXRoLm1pbih0b3RhbE5vZGVDb3VudCAtIHN0YXJ0Tm9kZUluZGV4LCB2aXNpYmxlTm9kZUNvdW50KTtcbiAgICAgICAgICAgIHRoaXMudmlydHVhbFNjcm9sbFRvdGFsSGVpZ2h0ID0gdG90YWxOb2RlQ291bnQgKiB0aGlzLnJvd0hlaWdodCAtIHZpc2libGVOb2RlQ291bnQgKiB0aGlzLnJvd0hlaWdodDtcblxuICAgICAgICAgICAgdGhpcy5fc2V0Um93cyhzdGFydE5vZGVJbmRleCk7XG4gICAgICAgICAgICBjb25zdCBzY3JvbGxNb2NrQ29udGFpbmVyID0gdGhpcy5fdGFibGUudGFibGVTY3JvbGxNb2NrQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICBzY3JvbGxNb2NrQ29udGFpbmVyLnN0eWxlLm1heEhlaWdodCA9IHRoaXMuYm9keUhlaWdodDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghdGhpcy52aXJ0dWFsU2Nyb2xsIHx8ICF0aGlzLmJvZHlIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHJvd0hlaWdodCA9IHRoaXMucm93SGVpZ2h0ICsgMTtcblxuICAgICAgICAgICAgY29uc3Qgcm93c1Zpc2libGUgPSB0aGlzLl90YWJsZS5fdGFibGVSb3dzVmlzaWJsZTtcbiAgICAgICAgICAgIGNvbnN0IHJvd3NJblZpZXdQb3J0ID0gdGhpcy5fdGFibGUuZ2V0Um93c0luVmlld3BvcnQoKTtcbiAgICAgICAgICAgIGNvbnN0IHRvdGFsTm9kZUNvdW50ID0gcm93c1Zpc2libGUubGVuZ3RoO1xuICAgICAgICAgICAgY29uc3Qgc2Nyb2xsVG9wID0gdGhpcy5fdGFibGUudGFibGVTY3JvbGxhYmxlLmdldFNjcm9sbFRvcCgpO1xuXG4gICAgICAgICAgICBsZXQgc3RhcnROb2RlSW5kZXggPSBNYXRoLmZsb29yKHNjcm9sbFRvcCAvIHJvd0hlaWdodCkgLSB0aGlzLnJlbmRlckFoZWFkO1xuICAgICAgICAgICAgc3RhcnROb2RlSW5kZXggPSBNYXRoLm1heCgwLCBzdGFydE5vZGVJbmRleCk7XG5cbiAgICAgICAgICAgIGxldCB2aXNpYmxlTm9kZUNvdW50ID1cbiAgICAgICAgICAgICAgICBNYXRoLmNlaWwodGhpcy5fdGFibGUudGFibGVDb250YWluZXIubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQgLyByb3dIZWlnaHQpICsgMiAqIHRoaXMucmVuZGVyQWhlYWQ7XG4gICAgICAgICAgICB2aXNpYmxlTm9kZUNvdW50ID0gTWF0aC5taW4odG90YWxOb2RlQ291bnQgLSBzdGFydE5vZGVJbmRleCwgdmlzaWJsZU5vZGVDb3VudCk7XG5cbiAgICAgICAgICAgIHRoaXMudmlydHVhbFNjcm9sbFRyYW5zZm9ybSQubmV4dChzdGFydE5vZGVJbmRleCAqIHJvd0hlaWdodCk7XG5cbiAgICAgICAgICAgIC8vIFNpbXBsZSBjYWNoaW5nIHRvIGF2b2lkIHVubmVjZXNzYXJ5IHJlLXJlbmRlcmluZ3NcbiAgICAgICAgICAgIGNvbnN0IGlzQ2FjaGVkID1cbiAgICAgICAgICAgICAgICBzdGFydE5vZGVJbmRleCA9PT0gdGhpcy5fdmlydHVhbFNjcm9sbENhY2hlLnN0YXJ0Tm9kZUluZGV4ICYmXG4gICAgICAgICAgICAgICAgdmlzaWJsZU5vZGVDb3VudCA9PT0gdGhpcy5fdmlydHVhbFNjcm9sbENhY2hlLnZpc2libGVOb2RlQ291bnQgJiZcbiAgICAgICAgICAgICAgICB0b3RhbE5vZGVDb3VudCA9PT0gdGhpcy5fdmlydHVhbFNjcm9sbENhY2hlLnRvdGFsTm9kZUNvdW50ICYmXG4gICAgICAgICAgICAgICAgLy8gT24gcm93cyBjaGFuZ2UsIGV2ZW4gaWYgdGhlIHRvdGFsIG51bWJlciBvZiByb3dzIGlzIHRoZSBzYW1lLCB0aGUgcm93IG9iamVjdCB3aWxsIGJlIGRpZmZlcmVudFxuICAgICAgICAgICAgICAgIHN0YXJ0Tm9kZUluZGV4ID09PSByb3dzSW5WaWV3UG9ydFswXTtcblxuICAgICAgICAgICAgaWYgKGlzQ2FjaGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl92aXJ0dWFsU2Nyb2xsQ2FjaGUgPSB7IHN0YXJ0Tm9kZUluZGV4LCB2aXNpYmxlTm9kZUNvdW50LCB0b3RhbE5vZGVDb3VudCB9O1xuICAgICAgICAgICAgdGhpcy52aXJ0dWFsU2Nyb2xsVG90YWxIZWlnaHQgPSB0b3RhbE5vZGVDb3VudCAqIHJvd0hlaWdodCAtIHZpc2libGVOb2RlQ291bnQgKiByb3dIZWlnaHQ7XG4gICAgICAgICAgICB0aGlzLl90YWJsZS5zZXRSb3dzSW5WaWV3cG9ydChcbiAgICAgICAgICAgICAgICBzdGFydE5vZGVJbmRleCxcbiAgICAgICAgICAgICAgICByb3dzVmlzaWJsZS5zbGljZShzdGFydE5vZGVJbmRleCwgc3RhcnROb2RlSW5kZXggKyB2aXNpYmxlTm9kZUNvdW50KS5sZW5ndGhcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogSW5pdGlhbGlzZXMgc2Nyb2xsIGxpc3RlbmVycy5cbiAgICAgKi9cbiAgICBsaXN0ZW5PblZpcnR1YWxTY3JvbGwoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNjcm9sbFdob2xlUm93cykge1xuICAgICAgICAgICAgdGhpcy5fdGFibGUudGFibGVDb250YWluZXIubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCd3aGVlbCcsIHRoaXMuX3doZWVsU2Nyb2xsTGlzdGVuZXJGdW5jdGlvbiwge1xuICAgICAgICAgICAgICAgIHBhc3NpdmU6IGZhbHNlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuX3RhYmxlLnRhYmxlU2Nyb2xsTW9ja0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgICAgICAgJ3Njcm9sbCcsXG4gICAgICAgICAgICAgICAgdGhpcy5fbW9ja1Njcm9sbGJhckxpc3RlbmVyRnVuY3Rpb24sXG4gICAgICAgICAgICAgICAgeyBwYXNzaXZlOiBmYWxzZSB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fdGFibGVTY3JvbGxEaXNwYXRjaGVyXG4gICAgICAgICAgICAgICAgLnZlcnRpY2FsbHlTY3JvbGxlZCgpXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLnZpcnR1YWxTY3JvbGwgJiYgISF0aGlzLmJvZHlIZWlnaHQpLFxuICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHNjcm9sbGFibGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVWaXJ0dWFsU2Nyb2xsUm93cygpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl90YWJsZS5zZXRUYWJsZVN0YXRlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuX3RhYmxlLmdldFRhYmxlU3RhdGUoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbFRvcFBvc2l0aW9uOiBzY3JvbGxhYmxlLmdldFNjcm9sbFRvcCgpXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXROdW1iZXJPZlJvd3NUb0Rpc3BsYXkoKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgdGFibGVDb250YWluZXIgPSB0aGlzLl90YWJsZS50YWJsZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50O1xuICAgICAgICBsZXQgdGFibGVIZWlnaHQgPSB0YWJsZUNvbnRhaW5lci5jbGllbnRIZWlnaHQ7XG4gICAgICAgIHRhYmxlSGVpZ2h0ID0gdGFibGVIZWlnaHQgLSB0YWJsZUNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCd0aGVhZCcpLmNsaWVudEhlaWdodDtcbiAgICAgICAgY29uc3QgbnVtYmVyT2ZSb3dzID0gTWF0aC5mbG9vcih0YWJsZUhlaWdodCAvICh0aGlzLnJvd0hlaWdodCArIDIpKTtcbiAgICAgICAgaWYgKHRoaXMuX3RhYmxlLl90YWJsZVJvd3NWaXNpYmxlLmxlbmd0aCA8IG51bWJlck9mUm93cykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlLl90YWJsZVJvd3NWaXNpYmxlLmxlbmd0aDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXJPZlJvd3M7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB0aGUgdXNlciBwZXJmb3JtcyBhIHdoZWVsIGV2ZW50LiBJdCBkZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IHRoZSB1c2VyIGhhcyBzY3JvbGxlZFxuICAgICAqIHVwIG9yIGRvd24gdXNpbmcgdGhlIGV2ZW50J3MgZGVsdGFYIHByb3BlcnR5LCBhbmQgc2Nyb2xscyB0aGUgdGFibGUgYnkgb25lIHJvdy5cbiAgICAgKi9cbiAgICBwcml2YXRlIF93aGVlbFNjcm9sbExpc3RlbmVyRnVuY3Rpb24gPSAoZXZlbnQ6IFdoZWVsRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgICAgaWYgKE1hdGguYWJzKGV2ZW50LmRlbHRhWCkgPCBNYXRoLmFicyhldmVudC5kZWx0YVkpKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBpZiAodGhpcy5fd2hlZWxUaW1lb3V0KSB7XG4gICAgICAgICAgICAgICAgd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX3doZWVsVGltZW91dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBkZWx0YVkgPSBldmVudC5kZWx0YVk7XG4gICAgICAgICAgICBpZiAoZGVsdGFZKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fd2hlZWxUaW1lb3V0ID0gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3Njcm9sbFJvdyhkZWx0YVkgPiAwID8gMSA6IC0xKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB0aGUgbW9jayBzY3JvbGxiYXIgKHdoZW4gdXNpbmcgJ3Njcm9sbFdob2xlUm93cycpIGlzIG1vdmVkLiBJdCBkZXRlcm1pbmVzIGlmIHRoZVxuICAgICAqIHNjcm9sbCB3YXMgdXAgb3IgZG93biBieSBjb21wYXJpbmcgdGhlIGN1cnJlbnQgc2Nyb2xsIHRvcCB0byB0aGUgcHJldmlvdXMgc2Nyb2xsIHRvcCBhbmQgc2Nyb2xscyByb3dzIGFjY29yZGluZ2x5LlxuICAgICAqL1xuICAgIHByaXZhdGUgX21vY2tTY3JvbGxiYXJMaXN0ZW5lckZ1bmN0aW9uID0gKGV2ZW50OiBFdmVudCk6IHZvaWQgPT4ge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgaWYgKHRoaXMuX3Njcm9sbE1vY2tUaW1lb3V0KSB7XG4gICAgICAgICAgICB3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fc2Nyb2xsTW9ja1RpbWVvdXQpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRhYmxlU2Nyb2xsTW9ja0NvbnRhaW5lciA9IHRoaXMuX3RhYmxlLnRhYmxlU2Nyb2xsTW9ja0NvbnRhaW5lci5uYXRpdmVFbGVtZW50O1xuICAgICAgICBsZXQgZGVsdGFZID0gdGFibGVTY3JvbGxNb2NrQ29udGFpbmVyLnNjcm9sbFRvcCAtIHRoaXMuX2xhc3RNb2NrU2Nyb2xsUG9zaXRpb247XG4gICAgICAgIGRlbHRhWSA9IE1hdGguY2VpbChkZWx0YVkgLyB0aGlzLnJvd0hlaWdodCk7XG4gICAgICAgIHRoaXMuX3Njcm9sbE1vY2tUaW1lb3V0ID0gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9zY3JvbGxSb3coZGVsdGFZLCB0cnVlKTtcbiAgICAgICAgICAgIHRoaXMuX2xhc3RNb2NrU2Nyb2xsUG9zaXRpb24gPSB0YWJsZVNjcm9sbE1vY2tDb250YWluZXIuc2Nyb2xsVG9wO1xuICAgICAgICAgICAgaWYgKHRhYmxlU2Nyb2xsTW9ja0NvbnRhaW5lci5zY3JvbGxUb3AgPT09IDApIHtcbiAgICAgICAgICAgICAgICAvLyBBbHdheXMgZGlzcGxheSB0aGUgZmlyc3Qgcm93IG9mIHRoZSB0YWJsZSB3aGVuIHRoZSB1c2VyIHNjcm9sbHMgYWxsIHRoZSB3YXkgdG8gdGhlIHRvcFxuICAgICAgICAgICAgICAgIHRoaXMuX3NldFJvd3MoMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdGFibGVTY3JvbGxNb2NrQ29udGFpbmVyLnNjcm9sbFRvcCArIHRhYmxlU2Nyb2xsTW9ja0NvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQgPT09XG4gICAgICAgICAgICAgICAgdGFibGVTY3JvbGxNb2NrQ29udGFpbmVyLnNjcm9sbEhlaWdodFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgLy8gQWx3YXlzIGRpc3BsYXkgdGhlIGxhc3Qgcm93cyBvZiB0aGUgdGFibGUgd2hlbiB0aGUgdXNlciBzY3JvbGxzIGFsbCB0aGUgd2F5IHRvIHRoZSBib3R0b21cbiAgICAgICAgICAgICAgICBjb25zdCBzdGFydGluZ05vZGVJbmRleCA9IHRoaXMuX3RhYmxlLl90YWJsZVJvd3NWaXNpYmxlLmxlbmd0aCAtIHRoaXMuX2dldE51bWJlck9mUm93c1RvRGlzcGxheSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3NldFJvd3Moc3RhcnRpbmdOb2RlSW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFRoaXMgZnVuY3Rpb24sIHVzZWQgb25seSB3aGVuICdzY3JvbGxXaG9sZVJvd3MnIGlzIHRydXRoeSwgY2FsY3VsYXRlcyB3aGF0IHNob3VsZCBiZSB0aGUgbmV3IHN0YXJ0aW5nIG5vZGUsIGJhc2VkXG4gICAgICogb2ZmIHRoZSBwcmV2aW91cyBzdGFydGluZyBub2RlIGFuZCB0aGUgcHJvdmlkZWQgJ2NvdW50JyBwYXJhbWV0ZXIuIEZvciBleGFtcGxlIGlmIHRoZSBwcmV2aW91cyBzdGFydCBub2RlIHdhcyAxMFxuICAgICAqIGFuZCB0aGUgY291bnQgcGFyYW1ldGVyIGlzIC0yLCB0aGUgbmV3IHN0YXJ0aW5nIG5vZGUgd2lsbCBiZSA4LiBUaGlzIGZ1bmN0aW9uIGFsc28gcHJvZ3JhbW1hdGljYWxseSBtb3ZlcyB0aGVcbiAgICAgKiBtb2NrIHNjcm9sbGJhci5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9zY3JvbGxSb3coY291bnQ6IG51bWJlciwgZnJvbU1vY2tTY3JvbGxiYXJMaXN0ZW5lciA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIGxldCBzdGFydGluZ05vZGUgPSAwO1xuICAgICAgICBpZiAodGhpcy5fcHJldmlvdXNTdGFydE5vZGVJbmRleCAhPT0gbnVsbCAmJiB0aGlzLl9wcmV2aW91c1N0YXJ0Tm9kZUluZGV4ID49IDApIHtcbiAgICAgICAgICAgIHN0YXJ0aW5nTm9kZSA9IHRoaXMuX3ByZXZpb3VzU3RhcnROb2RlSW5kZXg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgc3RhcnRpbmdOb2RlICsgY291bnQgKyB0aGlzLl9nZXROdW1iZXJPZlJvd3NUb0Rpc3BsYXkoKSA8PSB0aGlzLl90YWJsZS5fdGFibGVSb3dzVmlzaWJsZS5sZW5ndGggfHxcbiAgICAgICAgICAgIGNvdW50IDwgMFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHN0YXJ0aW5nTm9kZSA9IE1hdGguY2VpbChzdGFydGluZ05vZGUgKyBjb3VudCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXJ0aW5nTm9kZSA8IDApIHtcbiAgICAgICAgICAgIHN0YXJ0aW5nTm9kZSA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgLy8gVGhpcyBuZXh0ICdpZicgc3RhdGVtZW50IGlzIGZvciB0cmlnZ2VyaW5nIG5ldyBwYWdlIGxvYWRzIHdoZW4gJ3BhZ2VTY3JvbGxpbmcnIGlzIHRydWVcbiAgICAgICAgaWYgKGNvdW50ID4gMCAmJiBzdGFydGluZ05vZGUgPT09IHRoaXMuX3ByZXZpb3VzU3RhcnROb2RlSW5kZXggJiYgdGhpcy5fdGFibGUucGFnZVNjcm9sbGluZykge1xuICAgICAgICAgICAgdGhpcy5fdGFibGUuX29uU3B5SW50ZXJzZWN0KHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3NldFJvd3Moc3RhcnRpbmdOb2RlKTtcbiAgICAgICAgY29uc3QgdGFibGVTY3JvbGxNb2NrQ29udGFpbmVyID0gdGhpcy5fdGFibGUudGFibGVTY3JvbGxNb2NrQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlmICghZnJvbU1vY2tTY3JvbGxiYXJMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGFibGVTY3JvbGxNb2NrQ29udGFpbmVyLnNjcm9sbEJ5KHsgdG9wOiBjb3VudCAqIHRoaXMucm93SGVpZ2h0IH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2xhc3RNb2NrU2Nyb2xsUG9zaXRpb24gPSB0YWJsZVNjcm9sbE1vY2tDb250YWluZXIuc2Nyb2xsVG9wO1xuICAgICAgICBpZiAodGhpcy5fdGFibGUucGFnZVNjcm9sbGluZykge1xuICAgICAgICAgICAgdGhpcy5fdGFibGUudGFibGVTY3JvbGxlZC5lbWl0KHRoaXMuX2xhc3RNb2NrU2Nyb2xsUG9zaXRpb24pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFRoaXMgZnVuY3Rpb24gc2V0cyByb3dzIGluIHRoZSB0YWJsZSdzIHZpZXdwb3J0IGRlcGVuZGluZyBvbiB0aGUgcHJvdmlkZWQgc3RhcnRpbmcgbm9kZS4gSXQgYWxzbyBzZXRzIHRoZSB0YWJsZVxuICAgICAqIHN0YXRlLlxuICAgICAqL1xuICAgIHByaXZhdGUgX3NldFJvd3Moc3RhcnRpbmdOb2RlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGFibGUuc2V0Um93c0luVmlld3BvcnQoc3RhcnRpbmdOb2RlLCB0aGlzLl9nZXROdW1iZXJPZlJvd3NUb0Rpc3BsYXkoKSk7XG4gICAgICAgIHRoaXMuX3ByZXZpb3VzU3RhcnROb2RlSW5kZXggPSBzdGFydGluZ05vZGU7XG4gICAgICAgIHRoaXMuX3RhYmxlLnNldFRhYmxlU3RhdGUoe1xuICAgICAgICAgICAgLi4udGhpcy5fdGFibGUuZ2V0VGFibGVTdGF0ZSgpLFxuICAgICAgICAgICAgc2Nyb2xsVG9wUG9zaXRpb246IHRoaXMucm93SGVpZ2h0ICogc3RhcnRpbmdOb2RlXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
|
|
337
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtdmlydHVhbC1zY3JvbGwuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL3RhYmxlLWhlbHBlcnMvZGlyZWN0aXZlcy90YWJsZS12aXJ0dWFsLXNjcm9sbC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBK0MsTUFBTSxlQUFlLENBQUM7QUFDcEgsT0FBTyxFQUFFLGdCQUFnQixFQUF5QixPQUFPLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDOUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQy9DLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBRTNGLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQWM5RCxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsa0JBQWtCO0lBWm5FOztRQWFJOztXQUVHO1FBRUgsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFtQnRCLHdFQUF3RTtRQUV4RSxnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQU1qQjs7O1dBR0c7UUFFSCxjQUFTLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUUsQ0FBQztRQUVyRCxjQUFjO1FBQ2QsNkJBQXdCLEdBQUcsQ0FBQyxDQUFDO1FBRTdCLGNBQWM7UUFDZCw0QkFBdUIsR0FBRyxJQUFJLGVBQWUsQ0FBUyxDQUFDLENBQUMsQ0FBQztRQUt6RCxjQUFjO1FBQ04sd0JBQW1CLEdBQUcsRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFL0YsY0FBYztRQUNHLDJCQUFzQixHQUFHLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBRS9FLGNBQWM7UUFDRyxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFNUQsY0FBYztRQUNHLGNBQVMsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQVF0RCxjQUFjO1FBQ04sNEJBQXVCLEdBQUcsQ0FBQyxDQUFDO1FBUXBDLGNBQWM7UUFDTiw0QkFBdUIsR0FBa0IsSUFBSSxDQUFDO1FBRXRELGNBQWM7UUFDTixxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFxTGpDOzs7O1dBSUc7UUFDSyxpQ0FBNEIsR0FBRyxDQUFDLEtBQWlCLEVBQVEsRUFBRTtZQUMvRCxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUNqRCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3ZCLEtBQUssQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO2dCQUNqQyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7b0JBQ3BCLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7aUJBQ25EO2dCQUNELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7Z0JBQzVCLElBQUksTUFBTSxFQUFFO29CQUNSLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsRUFBRTt3QkFDbkQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3pDLENBQUMsQ0FBQyxDQUFDO2lCQUNOO2FBQ0o7UUFDTCxDQUFDLENBQUM7UUFFRjs7OztXQUlHO1FBQ0ssbUNBQThCLEdBQUcsQ0FBQyxLQUFZLEVBQVEsRUFBRTtZQUM1RCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsS0FBSyxDQUFDLHdCQUF3QixFQUFFLENBQUM7WUFDakMsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7Z0JBQ3pCLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQzthQUN4RDtZQUNELE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxhQUFhLENBQUM7WUFDcEYsSUFBSSxNQUFNLEdBQUcsd0JBQXdCLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztZQUMvRSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsR0FBRyxFQUFFO2dCQUN4RCxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLHVCQUF1QixHQUFHLHdCQUF3QixDQUFDLFNBQVMsQ0FBQztnQkFDbEUsSUFBSSx3QkFBd0IsQ0FBQyxTQUFTLEtBQUssQ0FBQyxFQUFFO29CQUMxQyx5RkFBeUY7b0JBQ3pGLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ3BCO2dCQUNELElBQ0ksd0JBQXdCLENBQUMsU0FBUyxHQUFHLHdCQUF3QixDQUFDLHFCQUFxQixFQUFFLENBQUMsTUFBTTtvQkFDNUYsd0JBQXdCLENBQUMsWUFBWSxFQUN2QztvQkFDRSw0RkFBNEY7b0JBQzVGLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7b0JBQ2xHLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQztpQkFDcEM7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQztLQW1ETDtJQW5XRzs7OztPQUlHO0lBQ0gsSUFDSSxlQUFlLENBQUMsS0FBYztRQUM5QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckQsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDdkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7U0FDN0I7SUFDTCxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2YsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDakMsQ0FBQztJQTJERCxjQUFjO0lBRWQsZUFBZSxDQUFDLEtBQW9CO1FBQ2hDLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN0QixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsUUFBUSxLQUFLLENBQUMsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsRUFBRTtnQkFDekUsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxLQUFLLEdBQUcsRUFBRTtvQkFDekYsTUFBTSxXQUFXLEdBQUc7d0JBQ2hCLFFBQVEsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVE7d0JBQ3BDLFFBQVEsRUFBRSxDQUFDO3FCQUNkLENBQUM7b0JBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2lCQUNyRDtnQkFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDdkI7aUJBQU0sSUFDSCxJQUFJLENBQUMsWUFBWSxFQUFFLFFBQVEsS0FBSyxJQUFJLENBQUMseUJBQXlCLEVBQUU7Z0JBQ2hFLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxFQUN0QztnQkFDRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3RCO1NBQ0o7SUFDTCxDQUFDO0lBRUQsY0FBYztJQUNkLFFBQVE7UUFDSixJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQzdDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1NBQzdCO0lBQ0wsQ0FBQztJQUVELGNBQWM7SUFDZCxXQUFXLENBQUMsT0FBc0I7UUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFO1lBQzlCLE9BQU87U0FDVjtRQUNELElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxPQUFPLENBQUMsZUFBZSxDQUFDLElBQUksT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUU7WUFDcEcsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7U0FDckM7SUFDTCxDQUFDO0lBRUQsY0FBYztJQUNkLFdBQVc7UUFDUCxJQUFJLENBQUMsMEJBQTBCLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDL0MsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLDRCQUE0QixFQUFFO2dCQUNyRyxPQUFPLEVBQUUsS0FBSzthQUNqQixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLHdCQUF3QixDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FDbEUsUUFBUSxFQUNSLElBQUksQ0FBQyw4QkFBOEIsRUFDbkMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQ3JCLENBQUM7U0FDTDtJQUNMLENBQUM7SUFFRCw0QkFBNEI7SUFDNUIsUUFBUSxDQUFDLEtBQVk7UUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDeEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILDBCQUEwQjtRQUN0QixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQywwQkFBMEIsRUFBRTtnQkFDbEMsSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtvQkFDekYsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7Z0JBQzlCLENBQUMsQ0FBQyxDQUFDO2FBQ047WUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ3pDLE9BQU87YUFDVjtZQUVELElBQUksY0FBYyxHQUFHLENBQUMsQ0FBQztZQUN2QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDLGlCQUFpQixDQUFDO1lBQ2hFLElBQUksU0FBUyxLQUFLLENBQUMsRUFBRTtnQkFDakIsY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDeEQsSUFBSSxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUU7b0JBQ3ZELGNBQWMsR0FBRyxDQUFDLENBQUM7aUJBQ3RCO2FBQ0o7WUFFRCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQztZQUM1RCxJQUFJLGdCQUFnQixHQUFHLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1lBQ3hELGdCQUFnQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxHQUFHLGNBQWMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1lBQy9FLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxjQUFjLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBRXBHLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDOUIsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLHdCQUF3QixDQUFDLGFBQWEsQ0FBQztZQUMvRSxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7U0FDekQ7YUFBTTtZQUNILElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDekMsT0FBTzthQUNWO1lBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7WUFFckMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztZQUNsRCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDdkQsTUFBTSxjQUFjLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQztZQUMxQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUU3RCxJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQzFFLGNBQWMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQztZQUU3QyxJQUFJLGdCQUFnQixHQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7WUFDeEcsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEdBQUcsY0FBYyxFQUFFLGdCQUFnQixDQUFDLENBQUM7WUFFL0UsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxjQUFjLEdBQUcsU0FBUyxDQUFDLENBQUM7WUFFOUQsb0RBQW9EO1lBQ3BELE1BQU0sUUFBUSxHQUNWLGNBQWMsS0FBSyxJQUFJLENBQUMsbUJBQW1CLENBQUMsY0FBYztnQkFDMUQsZ0JBQWdCLEtBQUssSUFBSSxDQUFDLG1CQUFtQixDQUFDLGdCQUFnQjtnQkFDOUQsY0FBYyxLQUFLLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjO2dCQUMxRCxpR0FBaUc7Z0JBQ2pHLGNBQWMsS0FBSyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFekMsSUFBSSxRQUFRLEVBQUU7Z0JBQ1YsT0FBTzthQUNWO1lBRUQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxDQUFDO1lBQ2hGLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxjQUFjLEdBQUcsU0FBUyxHQUFHLGdCQUFnQixHQUFHLFNBQVMsQ0FBQztZQUMxRixJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUN6QixjQUFjLEVBQ2QsV0FBVyxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsY0FBYyxHQUFHLGdCQUFnQixDQUFDLENBQUMsTUFBTSxDQUM5RSxDQUFDO1NBQ0w7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gscUJBQXFCO1FBQ2pCLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN0QixJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyw0QkFBNEIsRUFBRTtnQkFDbEcsT0FBTyxFQUFFLEtBQUs7YUFDakIsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQy9ELFFBQVEsRUFDUixJQUFJLENBQUMsOEJBQThCLEVBQ25DLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUNyQixDQUFDO1NBQ0w7YUFBTTtZQUNILElBQUksQ0FBQyxzQkFBc0I7aUJBQ3RCLGtCQUFrQixFQUFFO2lCQUNwQixJQUFJLENBQ0QsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFDckQsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FDNUI7aUJBQ0EsU0FBUyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO2dCQUNsQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQztvQkFDdEIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRTtvQkFDOUIsaUJBQWlCLEVBQUUsVUFBVSxDQUFDLFlBQVksRUFBRTtpQkFDL0MsQ0FBQyxDQUFDO1lBQ1AsQ0FBQyxDQUFDLENBQUM7U0FDVjtJQUNMLENBQUM7SUFFRCxjQUFjO0lBQ04seUJBQXlCO1FBQzdCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQztRQUNoRSxJQUFJLFdBQVcsR0FBRyxjQUFjLENBQUMsWUFBWSxDQUFDO1FBQzlDLFdBQVcsR0FBRyxXQUFXLEdBQUcsY0FBYyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUM7UUFDL0UsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlELElBQUksTUFBYyxDQUFDO1FBQ25CLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsWUFBWSxFQUFFO1lBQ3JELE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQztTQUNqRDthQUFNO1lBQ0gsTUFBTSxHQUFHLFlBQVksQ0FBQztTQUN6QjtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUF1REQ7Ozs7OztPQU1HO0lBQ0ssVUFBVSxDQUFDLEtBQWEsRUFBRSx5QkFBeUIsR0FBRyxLQUFLO1FBQy9ELElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQztRQUNyQixJQUFJLElBQUksQ0FBQyx1QkFBdUIsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLHVCQUF1QixJQUFJLENBQUMsRUFBRTtZQUM1RSxZQUFZLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDO1NBQy9DO1FBQ0QsSUFDSSxZQUFZLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsTUFBTTtZQUMvRixLQUFLLEdBQUcsQ0FBQyxFQUNYO1lBQ0UsWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxDQUFDO1NBQ2xEO1FBQ0QsSUFBSSxZQUFZLEdBQUcsQ0FBQyxFQUFFO1lBQ2xCLFlBQVksR0FBRyxDQUFDLENBQUM7U0FDcEI7UUFDRCx5RkFBeUY7UUFDekYsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLFlBQVksS0FBSyxJQUFJLENBQUMsdUJBQXVCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUU7WUFDekYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDckM7UUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzVCLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxhQUFhLENBQUM7UUFDcEYsSUFBSSxDQUFDLHlCQUF5QixFQUFFO1lBQzVCLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxFQUFFLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7U0FDdEU7UUFDRCxJQUFJLENBQUMsdUJBQXVCLEdBQUcsd0JBQXdCLENBQUMsU0FBUyxDQUFDO1FBQ2xFLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUU7WUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1NBQ2hFO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxRQUFRLENBQUMsWUFBb0I7UUFDakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUMsQ0FBQztRQUM5RSxJQUFJLENBQUMsdUJBQXVCLEdBQUcsWUFBWSxDQUFDO1FBQzVDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDO1lBQ3RCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUU7WUFDOUIsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxZQUFZO1NBQ25ELENBQUMsQ0FBQztJQUNQLENBQUM7O3dIQXpXUSwyQkFBMkI7NEdBQTNCLDJCQUEyQixvU0FSekI7UUFDUCxnQkFBZ0I7UUFDaEI7WUFDSSxPQUFPLEVBQUUsa0NBQWtDO1lBQzNDLFdBQVcsRUFBRSwyQkFBMkI7U0FDM0M7S0FDSjsyRkFFUSwyQkFBMkI7a0JBWnZDLFNBQVM7bUJBQUM7b0JBQ1AsOERBQThEO29CQUM5RCxRQUFRLEVBQUUsMEJBQTBCO29CQUNwQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFO3dCQUNQLGdCQUFnQjt3QkFDaEI7NEJBQ0ksT0FBTyxFQUFFLGtDQUFrQzs0QkFDM0MsV0FBVyw2QkFBNkI7eUJBQzNDO3FCQUNKO2lCQUNKOzhCQU1HLGFBQWE7c0JBRFosS0FBSztnQkFTRixlQUFlO3NCQURsQixLQUFLO2dCQWNOLFdBQVc7c0JBRFYsS0FBSztnQkFLTixVQUFVO3NCQURULEtBQUs7Z0JBUU4sU0FBUztzQkFEUixLQUFLO2dCQStDTixlQUFlO3NCQURkLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0TGlzdGVuZXIsIGluamVjdCwgSW5wdXQsIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERlc3Ryb3llZFNlcnZpY2UsIEZvY3VzYWJsZUl0ZW1Qb3NpdGlvbiwgS2V5VXRpbCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5TW9kZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jb250ZW50LWRlbnNpdHknO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmaWx0ZXIsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRkRQX1RBQkxFX1ZJUlRVQUxfU0NST0xMX0RJUkVDVElWRSwgUk9XX0hFSUdIVCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBUYWJsZVZpcnR1YWxTY3JvbGwgfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgVGFibGVTY3JvbGxEaXNwYXRjaGVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3RhYmxlLXNjcm9sbC1kaXNwYXRjaGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFibGUgfSBmcm9tICcuLi90YWJsZSc7XG5pbXBvcnQgeyBET1dOX0FSUk9XLCBVUF9BUlJPVyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQgeyBUYWJsZVJvd1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy90YWJsZS1yb3cuc2VydmljZSc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuXG5ARGlyZWN0aXZlKHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAnZmRwLXRhYmxlW3ZpcnR1YWxTY3JvbGxdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBEZXN0cm95ZWRTZXJ2aWNlLFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGRFBfVEFCTEVfVklSVFVBTF9TQ1JPTExfRElSRUNUSVZFLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IFRhYmxlVmlydHVhbFNjcm9sbERpcmVjdGl2ZVxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZVZpcnR1YWxTY3JvbGxEaXJlY3RpdmUgZXh0ZW5kcyBUYWJsZVZpcnR1YWxTY3JvbGwgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICAvKiogV2hldGhlciB0byBzaG93IG9ubHkgdmlzaWJsZSByb3dzIGluIG1hdHRlciBvZiBwZXJmb3JtYW5jZVxuICAgICAqIGZhbHNlIGJ5IGRlZmF1bHQsIHdoZW4gdHJ1ZSBzZXR0aW5nIGJvZHlIZWlnaHQgYW5kIHJvd0hlaWdodCBpcyByZXF1aXJlZC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHZpcnR1YWxTY3JvbGwgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gc2Nyb2xsIHdob2xlIHJvd3MgcmF0aGVyIHRoYW4gcGl4ZWwgYnkgcGl4ZWwgd2hlbiB0aGUgdXNlciBwZXJmb3JtcyBhIHNjcm9sbC5cbiAgICAgKiBUaGlzIGdpdmVzIGdyZWF0ZXIgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnRzIGJ1dCBhbHNvIGxlbmRzIHRvIHNvbWUgcG90ZW50aWFsbHkgdW5kZXNpcmFibGUgVVggY2hhbmdlcy5cbiAgICAgKiBBIFwicm93SGVpZ2h0XCIgbXVzdCBiZSBwcm92aWRlZCB3aGVuIHVzaW5nIHRoaXMgZmVhdHVyZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzY3JvbGxXaG9sZVJvd3ModmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fc2Nyb2xsV2hvbGVSb3dzID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICAgICAgaWYgKHRoaXMuX3Njcm9sbFdob2xlUm93cykge1xuICAgICAgICAgICAgdGhpcy52aXJ0dWFsU2Nyb2xsID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBzY3JvbGxXaG9sZVJvd3MoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zY3JvbGxXaG9sZVJvd3M7XG4gICAgfVxuXG4gICAgLyoqIENhY2hlIHNpemUgZm9yIHRoZSB2aXJ0dWFsU2Nyb2xsLCBkZWZhdWx0IGlzIDQwIGluIGVhY2ggZGlyZWN0aW9uICovXG4gICAgQElucHV0KClcbiAgICByZW5kZXJBaGVhZCA9IDQwO1xuXG4gICAgLyoqIEJvZHkgaGVpZ2h0LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYm9keUhlaWdodDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogSGVpZ2h0IG9mIHRoZSByb3csIHJlcXVpcmVkIGZvciB0aGUgdmlydHVhbFNjcm9sbCxcbiAgICAgKiBkZWZhdWx0IGlzIDQ0cHggaW4gY296eSwgMzJweCBpbiBjb21wYWN0IGFuZCAyNHB4IGluIGNvbmRlbnNlZCAoc2V0IGF1dG9tYXRpY2FsbHkpXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICByb3dIZWlnaHQgPSBST1dfSEVJR0hULmdldChDb250ZW50RGVuc2l0eU1vZGUuQ09aWSkhO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB2aXJ0dWFsU2Nyb2xsVG90YWxIZWlnaHQgPSAwO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB2aXJ0dWFsU2Nyb2xsVHJhbnNmb3JtJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdGFibGU6IFRhYmxlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF92aXJ0dWFsU2Nyb2xsQ2FjaGUgPSB7IHN0YXJ0Tm9kZUluZGV4OiAtMSwgdmlzaWJsZU5vZGVDb3VudDogLTEsIHRvdGFsTm9kZUNvdW50OiAtMSB9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF90YWJsZVNjcm9sbERpc3BhdGNoZXIgPSBpbmplY3QoVGFibGVTY3JvbGxEaXNwYXRjaGVyU2VydmljZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3RhYmxlUm93U2VydmljZSA9IGluamVjdChUYWJsZVJvd1NlcnZpY2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95JCA9IGluamVjdChEZXN0cm95ZWRTZXJ2aWNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfd2hlZWxUaW1lb3V0OiBhbnk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Njcm9sbE1vY2tUaW1lb3V0OiBhbnk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xhc3RNb2NrU2Nyb2xsUG9zaXRpb24gPSAwO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9mb2N1c2FibGVHcmlkU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2ZvY3VzZWRDZWxsOiBGb2N1c2FibGVJdGVtUG9zaXRpb247XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3ByZXZpb3VzU3RhcnROb2RlSW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zY3JvbGxXaG9sZVJvd3MgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gICAgX2tleWRvd25IYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNjcm9sbFdob2xlUm93cykge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2ZvY3VzZWRDZWxsPy5yb3dJbmRleCA9PT0gMCAmJiBLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgVVBfQVJST1cpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX3RhYmxlLnRhYmxlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgndHInKVsxXS5hcmlhUm93SW5kZXggIT09ICcwJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjZWxsVG9Gb2N1cyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbEluZGV4OiB0aGlzLl9mb2N1c2VkQ2VsbC5jb2xJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd0luZGV4OiAxXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3RhYmxlLl9mb2N1c2FibGVHcmlkLmZvY3VzQ2VsbChjZWxsVG9Gb2N1cyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuX3Njcm9sbFJvdygtMSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIHRoaXMuX2ZvY3VzZWRDZWxsPy5yb3dJbmRleCA9PT0gdGhpcy5fZ2V0TnVtYmVyT2ZSb3dzVG9EaXNwbGF5KCkgJiZcbiAgICAgICAgICAgICAgICBLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgRE9XTl9BUlJPVylcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3Njcm9sbFJvdygxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNjcm9sbFdob2xlUm93cyAmJiAhdGhpcy52aXJ0dWFsU2Nyb2xsKSB7XG4gICAgICAgICAgICB0aGlzLnZpcnR1YWxTY3JvbGwgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fdGFibGUudGFibGVTY3JvbGxhYmxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudmlydHVhbFNjcm9sbCAmJiAoY2hhbmdlc1sncm93SGVpZ2h0J10gfHwgY2hhbmdlc1sndmlydHVhbFNjcm9sbCddIHx8IGNoYW5nZXNbJ3JlbmRlckFoZWFkJ10pKSB7XG4gICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZVZpcnR1YWxTY3JvbGxSb3dzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9mb2N1c2FibGVHcmlkU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICBpZiAodGhpcy5zY3JvbGxXaG9sZVJvd3MpIHtcbiAgICAgICAgICAgIHRoaXMuX3RhYmxlLnRhYmxlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignd2hlZWwnLCB0aGlzLl93aGVlbFNjcm9sbExpc3RlbmVyRnVuY3Rpb24sIHtcbiAgICAgICAgICAgICAgICBwYXNzaXZlOiBmYWxzZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLl90YWJsZS50YWJsZVNjcm9sbE1vY2tDb250YWluZXIubmF0aXZlRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFxuICAgICAgICAgICAgICAgICdzY3JvbGwnLFxuICAgICAgICAgICAgICAgIHRoaXMuX21vY2tTY3JvbGxiYXJMaXN0ZW5lckZ1bmN0aW9uLFxuICAgICAgICAgICAgICAgIHsgcGFzc2l2ZTogZmFsc2UgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBTZXRzIHRhYmxlIHJlZmVyZW5jZS4gKi9cbiAgICBzZXRUYWJsZSh0YWJsZTogVGFibGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGFibGUgPSB0YWJsZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGRldGVybWluZXMgaG93IG1hbnkgcm93cyBjYW4gYmUgZGlzcGxheWVkIGluIHRoZSB0YWJsZSwgYW5kIHNldHMgdGhlIHJvd3MgaW4gdGhlIHRhYmxlIGJhc2VkIG9uIHRoZVxuICAgICAqIHN0YXJ0IG5vZGUgaW5kZXgsIHdoaWNoIG1heSBjb21lIGZyb20gdGhlIHRhYmxlIHN0YXRlXG4gICAgICovXG4gICAgY2FsY3VsYXRlVmlydHVhbFNjcm9sbFJvd3MoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNjcm9sbFdob2xlUm93cykge1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9mb2N1c2FibGVHcmlkU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZm9jdXNhYmxlR3JpZFN1YnNjcmlwdGlvbiA9IHRoaXMuX3RhYmxlLl9mb2N1c2FibGVHcmlkLml0ZW1Gb2N1c2VkLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZm9jdXNlZENlbGwgPSBldmVudDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy52aXJ0dWFsU2Nyb2xsIHx8ICF0aGlzLmJvZHlIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBzdGFydE5vZGVJbmRleCA9IDA7XG4gICAgICAgICAgICBjb25zdCBzY3JvbGxUb3AgPSB0aGlzLl90YWJsZS5nZXRUYWJsZVN0YXRlKCkuc2Nyb2xsVG9wUG9zaXRpb247XG4gICAgICAgICAgICBpZiAoc2Nyb2xsVG9wICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgc3RhcnROb2RlSW5kZXggPSBNYXRoLmZsb29yKHNjcm9sbFRvcCAvIHRoaXMucm93SGVpZ2h0KTtcbiAgICAgICAgICAgICAgICBpZiAoc3RhcnROb2RlSW5kZXggPiB0aGlzLl90YWJsZS5fdGFibGVSb3dzVmlzaWJsZS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhcnROb2RlSW5kZXggPSAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgdG90YWxOb2RlQ291bnQgPSB0aGlzLl90YWJsZS5fdGFibGVSb3dzVmlzaWJsZS5sZW5ndGg7XG4gICAgICAgICAgICBsZXQgdmlzaWJsZU5vZGVDb3VudCA9IHRoaXMuX2dldE51bWJlck9mUm93c1RvRGlzcGxheSgpO1xuICAgICAgICAgICAgdmlzaWJsZU5vZGVDb3VudCA9IE1hdGgubWluKHRvdGFsTm9kZUNvdW50IC0gc3RhcnROb2RlSW5kZXgsIHZpc2libGVOb2RlQ291bnQpO1xuICAgICAgICAgICAgdGhpcy52aXJ0dWFsU2Nyb2xsVG90YWxIZWlnaHQgPSB0b3RhbE5vZGVDb3VudCAqIHRoaXMucm93SGVpZ2h0IC0gdmlzaWJsZU5vZGVDb3VudCAqIHRoaXMucm93SGVpZ2h0O1xuXG4gICAgICAgICAgICB0aGlzLl9zZXRSb3dzKHN0YXJ0Tm9kZUluZGV4KTtcbiAgICAgICAgICAgIGNvbnN0IHNjcm9sbE1vY2tDb250YWluZXIgPSB0aGlzLl90YWJsZS50YWJsZVNjcm9sbE1vY2tDb250YWluZXIubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICAgIHNjcm9sbE1vY2tDb250YWluZXIuc3R5bGUubWF4SGVpZ2h0ID0gdGhpcy5ib2R5SGVpZ2h0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCF0aGlzLnZpcnR1YWxTY3JvbGwgfHwgIXRoaXMuYm9keUhlaWdodCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgcm93SGVpZ2h0ID0gdGhpcy5yb3dIZWlnaHQgKyAxO1xuXG4gICAgICAgICAgICBjb25zdCByb3dzVmlzaWJsZSA9IHRoaXMuX3RhYmxlLl90YWJsZVJvd3NWaXNpYmxlO1xuICAgICAgICAgICAgY29uc3Qgcm93c0luVmlld1BvcnQgPSB0aGlzLl90YWJsZS5nZXRSb3dzSW5WaWV3cG9ydCgpO1xuICAgICAgICAgICAgY29uc3QgdG90YWxOb2RlQ291bnQgPSByb3dzVmlzaWJsZS5sZW5ndGg7XG4gICAgICAgICAgICBjb25zdCBzY3JvbGxUb3AgPSB0aGlzLl90YWJsZS50YWJsZVNjcm9sbGFibGUuZ2V0U2Nyb2xsVG9wKCk7XG5cbiAgICAgICAgICAgIGxldCBzdGFydE5vZGVJbmRleCA9IE1hdGguZmxvb3Ioc2Nyb2xsVG9wIC8gcm93SGVpZ2h0KSAtIHRoaXMucmVuZGVyQWhlYWQ7XG4gICAgICAgICAgICBzdGFydE5vZGVJbmRleCA9IE1hdGgubWF4KDAsIHN0YXJ0Tm9kZUluZGV4KTtcblxuICAgICAgICAgICAgbGV0IHZpc2libGVOb2RlQ291bnQgPVxuICAgICAgICAgICAgICAgIE1hdGguY2VpbCh0aGlzLl90YWJsZS50YWJsZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodCAvIHJvd0hlaWdodCkgKyAyICogdGhpcy5yZW5kZXJBaGVhZDtcbiAgICAgICAgICAgIHZpc2libGVOb2RlQ291bnQgPSBNYXRoLm1pbih0b3RhbE5vZGVDb3VudCAtIHN0YXJ0Tm9kZUluZGV4LCB2aXNpYmxlTm9kZUNvdW50KTtcblxuICAgICAgICAgICAgdGhpcy52aXJ0dWFsU2Nyb2xsVHJhbnNmb3JtJC5uZXh0KHN0YXJ0Tm9kZUluZGV4ICogcm93SGVpZ2h0KTtcblxuICAgICAgICAgICAgLy8gU2ltcGxlIGNhY2hpbmcgdG8gYXZvaWQgdW5uZWNlc3NhcnkgcmUtcmVuZGVyaW5nc1xuICAgICAgICAgICAgY29uc3QgaXNDYWNoZWQgPVxuICAgICAgICAgICAgICAgIHN0YXJ0Tm9kZUluZGV4ID09PSB0aGlzLl92aXJ0dWFsU2Nyb2xsQ2FjaGUuc3RhcnROb2RlSW5kZXggJiZcbiAgICAgICAgICAgICAgICB2aXNpYmxlTm9kZUNvdW50ID09PSB0aGlzLl92aXJ0dWFsU2Nyb2xsQ2FjaGUudmlzaWJsZU5vZGVDb3VudCAmJlxuICAgICAgICAgICAgICAgIHRvdGFsTm9kZUNvdW50ID09PSB0aGlzLl92aXJ0dWFsU2Nyb2xsQ2FjaGUudG90YWxOb2RlQ291bnQgJiZcbiAgICAgICAgICAgICAgICAvLyBPbiByb3dzIGNoYW5nZSwgZXZlbiBpZiB0aGUgdG90YWwgbnVtYmVyIG9mIHJvd3MgaXMgdGhlIHNhbWUsIHRoZSByb3cgb2JqZWN0IHdpbGwgYmUgZGlmZmVyZW50XG4gICAgICAgICAgICAgICAgc3RhcnROb2RlSW5kZXggPT09IHJvd3NJblZpZXdQb3J0WzBdO1xuXG4gICAgICAgICAgICBpZiAoaXNDYWNoZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX3ZpcnR1YWxTY3JvbGxDYWNoZSA9IHsgc3RhcnROb2RlSW5kZXgsIHZpc2libGVOb2RlQ291bnQsIHRvdGFsTm9kZUNvdW50IH07XG4gICAgICAgICAgICB0aGlzLnZpcnR1YWxTY3JvbGxUb3RhbEhlaWdodCA9IHRvdGFsTm9kZUNvdW50ICogcm93SGVpZ2h0IC0gdmlzaWJsZU5vZGVDb3VudCAqIHJvd0hlaWdodDtcbiAgICAgICAgICAgIHRoaXMuX3RhYmxlLnNldFJvd3NJblZpZXdwb3J0KFxuICAgICAgICAgICAgICAgIHN0YXJ0Tm9kZUluZGV4LFxuICAgICAgICAgICAgICAgIHJvd3NWaXNpYmxlLnNsaWNlKHN0YXJ0Tm9kZUluZGV4LCBzdGFydE5vZGVJbmRleCArIHZpc2libGVOb2RlQ291bnQpLmxlbmd0aFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBJbml0aWFsaXNlcyBzY3JvbGwgbGlzdGVuZXJzLlxuICAgICAqL1xuICAgIGxpc3Rlbk9uVmlydHVhbFNjcm9sbCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc2Nyb2xsV2hvbGVSb3dzKSB7XG4gICAgICAgICAgICB0aGlzLl90YWJsZS50YWJsZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3doZWVsJywgdGhpcy5fd2hlZWxTY3JvbGxMaXN0ZW5lckZ1bmN0aW9uLCB7XG4gICAgICAgICAgICAgICAgcGFzc2l2ZTogZmFsc2VcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5fdGFibGUudGFibGVTY3JvbGxNb2NrQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgICAgICAgICAnc2Nyb2xsJyxcbiAgICAgICAgICAgICAgICB0aGlzLl9tb2NrU2Nyb2xsYmFyTGlzdGVuZXJGdW5jdGlvbixcbiAgICAgICAgICAgICAgICB7IHBhc3NpdmU6IGZhbHNlIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl90YWJsZVNjcm9sbERpc3BhdGNoZXJcbiAgICAgICAgICAgICAgICAudmVydGljYWxseVNjcm9sbGVkKClcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMudmlydHVhbFNjcm9sbCAmJiAhIXRoaXMuYm9keUhlaWdodCksXG4gICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoc2Nyb2xsYWJsZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZVZpcnR1YWxTY3JvbGxSb3dzKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3RhYmxlLnNldFRhYmxlU3RhdGUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5fdGFibGUuZ2V0VGFibGVTdGF0ZSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG9wUG9zaXRpb246IHNjcm9sbGFibGUuZ2V0U2Nyb2xsVG9wKClcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldE51bWJlck9mUm93c1RvRGlzcGxheSgpOiBudW1iZXIge1xuICAgICAgICBjb25zdCB0YWJsZUNvbnRhaW5lciA9IHRoaXMuX3RhYmxlLnRhYmxlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGxldCB0YWJsZUhlaWdodCA9IHRhYmxlQ29udGFpbmVyLmNsaWVudEhlaWdodDtcbiAgICAgICAgdGFibGVIZWlnaHQgPSB0YWJsZUhlaWdodCAtIHRhYmxlQ29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ3RoZWFkJykuY2xpZW50SGVpZ2h0O1xuICAgICAgICBjb25zdCBudW1iZXJPZlJvd3MgPSBNYXRoLmZsb29yKHRhYmxlSGVpZ2h0IC8gdGhpcy5yb3dIZWlnaHQpO1xuICAgICAgICBsZXQgcmV0VmFsOiBudW1iZXI7XG4gICAgICAgIGlmICh0aGlzLl90YWJsZS5fdGFibGVSb3dzVmlzaWJsZS5sZW5ndGggPCBudW1iZXJPZlJvd3MpIHtcbiAgICAgICAgICAgIHJldFZhbCA9IHRoaXMuX3RhYmxlLl90YWJsZVJvd3NWaXNpYmxlLmxlbmd0aDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldFZhbCA9IG51bWJlck9mUm93cztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmV0VmFsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHRoZSB1c2VyIHBlcmZvcm1zIGEgd2hlZWwgZXZlbnQuIEl0IGRldGVybWluZXMgd2hldGhlciBvciBub3QgdGhlIHVzZXIgaGFzIHNjcm9sbGVkXG4gICAgICogdXAgb3IgZG93biB1c2luZyB0aGUgZXZlbnQncyBkZWx0YVggcHJvcGVydHksIGFuZCBzY3JvbGxzIHRoZSB0YWJsZSBieSBvbmUgcm93LlxuICAgICAqL1xuICAgIHByaXZhdGUgX3doZWVsU2Nyb2xsTGlzdGVuZXJGdW5jdGlvbiA9IChldmVudDogV2hlZWxFdmVudCk6IHZvaWQgPT4ge1xuICAgICAgICBpZiAoTWF0aC5hYnMoZXZlbnQuZGVsdGFYKSA8IE1hdGguYWJzKGV2ZW50LmRlbHRhWSkpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGlmICh0aGlzLl93aGVlbFRpbWVvdXQpIHtcbiAgICAgICAgICAgICAgICB3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fd2hlZWxUaW1lb3V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGRlbHRhWSA9IGV2ZW50LmRlbHRhWTtcbiAgICAgICAgICAgIGlmIChkZWx0YVkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl93aGVlbFRpbWVvdXQgPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2Nyb2xsUm93KGRlbHRhWSA+IDAgPyAxIDogLTEpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHRoZSBtb2NrIHNjcm9sbGJhciAod2hlbiB1c2luZyAnc2Nyb2xsV2hvbGVSb3dzJykgaXMgbW92ZWQuIEl0IGRldGVybWluZXMgaWYgdGhlXG4gICAgICogc2Nyb2xsIHdhcyB1cCBvciBkb3duIGJ5IGNvbXBhcmluZyB0aGUgY3VycmVudCBzY3JvbGwgdG9wIHRvIHRoZSBwcmV2aW91cyBzY3JvbGwgdG9wIGFuZCBzY3JvbGxzIHJvd3MgYWNjb3JkaW5nbHkuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfbW9ja1Njcm9sbGJhckxpc3RlbmVyRnVuY3Rpb24gPSAoZXZlbnQ6IEV2ZW50KTogdm9pZCA9PiB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICBpZiAodGhpcy5fc2Nyb2xsTW9ja1RpbWVvdXQpIHtcbiAgICAgICAgICAgIHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9zY3JvbGxNb2NrVGltZW91dCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdGFibGVTY3JvbGxNb2NrQ29udGFpbmVyID0gdGhpcy5fdGFibGUudGFibGVTY3JvbGxNb2NrQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGxldCBkZWx0YVkgPSB0YWJsZVNjcm9sbE1vY2tDb250YWluZXIuc2Nyb2xsVG9wIC0gdGhpcy5fbGFzdE1vY2tTY3JvbGxQb3NpdGlvbjtcbiAgICAgICAgZGVsdGFZID0gTWF0aC5jZWlsKGRlbHRhWSAvIHRoaXMucm93SGVpZ2h0KTtcbiAgICAgICAgdGhpcy5fc2Nyb2xsTW9ja1RpbWVvdXQgPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3Njcm9sbFJvdyhkZWx0YVksIHRydWUpO1xuICAgICAgICAgICAgdGhpcy5fbGFzdE1vY2tTY3JvbGxQb3NpdGlvbiA9IHRhYmxlU2Nyb2xsTW9ja0NvbnRhaW5lci5zY3JvbGxUb3A7XG4gICAgICAgICAgICBpZiAodGFibGVTY3JvbGxNb2NrQ29udGFpbmVyLnNjcm9sbFRvcCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIC8vIEFsd2F5cyBkaXNwbGF5IHRoZSBmaXJzdCByb3cgb2YgdGhlIHRhYmxlIHdoZW4gdGhlIHVzZXIgc2Nyb2xscyBhbGwgdGhlIHdheSB0byB0aGUgdG9wXG4gICAgICAgICAgICAgICAgdGhpcy5fc2V0Um93cygwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB0YWJsZVNjcm9sbE1vY2tDb250YWluZXIuc2Nyb2xsVG9wICsgdGFibGVTY3JvbGxNb2NrQ29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCA9PT1cbiAgICAgICAgICAgICAgICB0YWJsZVNjcm9sbE1vY2tDb250YWluZXIuc2Nyb2xsSGVpZ2h0XG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAvLyBBbHdheXMgZGlzcGxheSB0aGUgbGFzdCByb3dzIG9mIHRoZSB0YWJsZSB3aGVuIHRoZSB1c2VyIHNjcm9sbHMgYWxsIHRoZSB3YXkgdG8gdGhlIGJvdHRvbVxuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0aW5nTm9kZUluZGV4ID0gdGhpcy5fdGFibGUuX3RhYmxlUm93c1Zpc2libGUubGVuZ3RoIC0gdGhpcy5fZ2V0TnVtYmVyT2ZSb3dzVG9EaXNwbGF5KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2V0Um93cyhzdGFydGluZ05vZGVJbmRleCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogVGhpcyBmdW5jdGlvbiwgdXNlZCBvbmx5IHdoZW4gJ3Njcm9sbFdob2xlUm93cycgaXMgdHJ1dGh5LCBjYWxjdWxhdGVzIHdoYXQgc2hvdWxkIGJlIHRoZSBuZXcgc3RhcnRpbmcgbm9kZSwgYmFzZWRcbiAgICAgKiBvZmYgdGhlIHByZXZpb3VzIHN0YXJ0aW5nIG5vZGUgYW5kIHRoZSBwcm92aWRlZCAnY291bnQnIHBhcmFtZXRlci4gRm9yIGV4YW1wbGUgaWYgdGhlIHByZXZpb3VzIHN0YXJ0IG5vZGUgd2FzIDEwXG4gICAgICogYW5kIHRoZSBjb3VudCBwYXJhbWV0ZXIgaXMgLTIsIHRoZSBuZXcgc3RhcnRpbmcgbm9kZSB3aWxsIGJlIDguIFRoaXMgZnVuY3Rpb24gYWxzbyBwcm9ncmFtbWF0aWNhbGx5IG1vdmVzIHRoZVxuICAgICAqIG1vY2sgc2Nyb2xsYmFyLlxuICAgICAqL1xuICAgIHByaXZhdGUgX3Njcm9sbFJvdyhjb3VudDogbnVtYmVyLCBmcm9tTW9ja1Njcm9sbGJhckxpc3RlbmVyID0gZmFsc2UpOiB2b2lkIHtcbiAgICAgICAgbGV0IHN0YXJ0aW5nTm9kZSA9IDA7XG4gICAgICAgIGlmICh0aGlzLl9wcmV2aW91c1N0YXJ0Tm9kZUluZGV4ICE9PSBudWxsICYmIHRoaXMuX3ByZXZpb3VzU3RhcnROb2RlSW5kZXggPj0gMCkge1xuICAgICAgICAgICAgc3RhcnRpbmdOb2RlID0gdGhpcy5fcHJldmlvdXNTdGFydE5vZGVJbmRleDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBzdGFydGluZ05vZGUgKyBjb3VudCArIHRoaXMuX2dldE51bWJlck9mUm93c1RvRGlzcGxheSgpIDw9IHRoaXMuX3RhYmxlLl90YWJsZVJvd3NWaXNpYmxlLmxlbmd0aCB8fFxuICAgICAgICAgICAgY291bnQgPCAwXG4gICAgICAgICkge1xuICAgICAgICAgICAgc3RhcnRpbmdOb2RlID0gTWF0aC5jZWlsKHN0YXJ0aW5nTm9kZSArIGNvdW50KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhcnRpbmdOb2RlIDwgMCkge1xuICAgICAgICAgICAgc3RhcnRpbmdOb2RlID0gMDtcbiAgICAgICAgfVxuICAgICAgICAvLyBUaGlzIG5leHQgJ2lmJyBzdGF0ZW1lbnQgaXMgZm9yIHRyaWdnZXJpbmcgbmV3IHBhZ2UgbG9hZHMgd2hlbiAncGFnZVNjcm9sbGluZycgaXMgdHJ1ZVxuICAgICAgICBpZiAoY291bnQgPiAwICYmIHN0YXJ0aW5nTm9kZSA9PT0gdGhpcy5fcHJldmlvdXNTdGFydE5vZGVJbmRleCAmJiB0aGlzLl90YWJsZS5wYWdlU2Nyb2xsaW5nKSB7XG4gICAgICAgICAgICB0aGlzLl90YWJsZS5fb25TcHlJbnRlcnNlY3QodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc2V0Um93cyhzdGFydGluZ05vZGUpO1xuICAgICAgICBjb25zdCB0YWJsZVNjcm9sbE1vY2tDb250YWluZXIgPSB0aGlzLl90YWJsZS50YWJsZVNjcm9sbE1vY2tDb250YWluZXIubmF0aXZlRWxlbWVudDtcbiAgICAgICAgaWYgKCFmcm9tTW9ja1Njcm9sbGJhckxpc3RlbmVyKSB7XG4gICAgICAgICAgICB0YWJsZVNjcm9sbE1vY2tDb250YWluZXIuc2Nyb2xsQnkoeyB0b3A6IGNvdW50ICogdGhpcy5yb3dIZWlnaHQgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbGFzdE1vY2tTY3JvbGxQb3NpdGlvbiA9IHRhYmxlU2Nyb2xsTW9ja0NvbnRhaW5lci5zY3JvbGxUb3A7XG4gICAgICAgIGlmICh0aGlzLl90YWJsZS5wYWdlU2Nyb2xsaW5nKSB7XG4gICAgICAgICAgICB0aGlzLl90YWJsZS50YWJsZVNjcm9sbGVkLmVtaXQodGhpcy5fbGFzdE1vY2tTY3JvbGxQb3NpdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogVGhpcyBmdW5jdGlvbiBzZXRzIHJvd3MgaW4gdGhlIHRhYmxlJ3Mgdmlld3BvcnQgZGVwZW5kaW5nIG9uIHRoZSBwcm92aWRlZCBzdGFydGluZyBub2RlLiBJdCBhbHNvIHNldHMgdGhlIHRhYmxlXG4gICAgICogc3RhdGUuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfc2V0Um93cyhzdGFydGluZ05vZGU6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLl90YWJsZS5zZXRSb3dzSW5WaWV3cG9ydChzdGFydGluZ05vZGUsIHRoaXMuX2dldE51bWJlck9mUm93c1RvRGlzcGxheSgpKTtcbiAgICAgICAgdGhpcy5fcHJldmlvdXNTdGFydE5vZGVJbmRleCA9IHN0YXJ0aW5nTm9kZTtcbiAgICAgICAgdGhpcy5fdGFibGUuc2V0VGFibGVTdGF0ZSh7XG4gICAgICAgICAgICAuLi50aGlzLl90YWJsZS5nZXRUYWJsZVN0YXRlKCksXG4gICAgICAgICAgICBzY3JvbGxUb3BQb3NpdGlvbjogdGhpcy5yb3dIZWlnaHQgKiBzdGFydGluZ05vZGVcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|
|
@@ -475,6 +475,7 @@ export class PlatformValueHelpDialogComponent extends VhdComponent {
|
|
|
475
475
|
this._destroyed.next();
|
|
476
476
|
this._destroyed.complete();
|
|
477
477
|
this._resetSourceStream();
|
|
478
|
+
this._mainSearch = '';
|
|
478
479
|
this.activeDialog = undefined;
|
|
479
480
|
}
|
|
480
481
|
/** @hidden */
|
|
@@ -616,4 +617,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
616
617
|
type: ViewChild,
|
|
617
618
|
args: ['container', { read: TemplateRef }]
|
|
618
619
|
}] } });
|
|
619
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUtaGVscC1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL3ZhbHVlLWhlbHAtZGlhbG9nL3ZhbHVlLWhlbHAtZGlhbG9nL3ZhbHVlLWhlbHAtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi92YWx1ZS1oZWxwLWRpYWxvZy92YWx1ZS1oZWxwLWRpYWxvZy92YWx1ZS1oZWxwLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFHTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFFVCxXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5RCxPQUFPLEVBQUUsWUFBWSxFQUFhLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDaEUsT0FBTyxFQUNILDhCQUE4QixFQUU5QixtQ0FBbUMsRUFHbkMsd0JBQXdCLEVBQ3hCLHdCQUF3QixFQUV4QixNQUFNLEVBR1QsTUFBTSxXQUFXLENBQUM7QUFDbkIsT0FBTyxFQUFFLFlB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c0JBRHJCLEtBQUs7Z0JBS04sT0FBTztzQkFETixLQUFLO2dCQVFOLGNBQWM7c0JBRGIsS0FBSztnQkFLTixjQUFjO3NCQURiLEtBQUs7Z0JBT04sb0JBQW9CO3NCQURuQixLQUFLO2dCQXFCTixXQUFXO3NCQURWLE1BQU07Z0JBS0csZUFBZTtzQkFBeEIsTUFBTTtnQkFJRyxjQUFjO3NCQUF2QixNQUFNO2dCQUlQLE9BQU87c0JBRE4sZUFBZTt1QkFBQyxrQkFBa0I7Z0JBS25DLFNBQVM7c0JBRFIsZUFBZTt1QkFBQywyQkFBMkI7Z0JBSzVDLGVBQWU7c0JBRGQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZyAqL1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzT2JzZXJ2YWJsZSwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCB0YWtlLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRGlhbG9nQ29uZmlnLCBEaWFsb2dSZWYsIERpYWxvZ1NlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGlhbG9nJztcbmltcG9ydCB7IFJ0bFNlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBpc0RhdGFTb3VyY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NoYXJlZCc7XG5pbXBvcnQge1xuICAgIEFycmF5VmFsdWVIZWxwRGlhbG9nRGF0YVNvdXJjZSxcbiAgICBCYXNlRW50aXR5LFxuICAgIE9ic2VydmFibGVWYWx1ZUhlbHBEaWFsb2dEYXRhU291cmNlLFxuICAgIFZhbHVlSGVscERpYWxvZ0RhdGFTb3VyY2UsXG4gICAgVmRoVGFibGVTZWxlY3Rpb24sXG4gICAgVmhkRGVmaW5lRXhjbHVkZVN0cmF0ZWd5LFxuICAgIFZoZERlZmluZUluY2x1ZGVTdHJhdGVneSxcbiAgICBWaGRGaWx0ZXIsXG4gICAgVmhkVGFiLFxuICAgIFZoZFZhbHVlLFxuICAgIFZoZFZhbHVlQ2hhbmdlRXZlbnRcbn0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IFZoZENvbXBvbmVudCB9IGZyb20gJy4uL21vZGVscy92aGQtY29tcG9uZW50Lm1vZGVsJztcbmltcG9ydCB7IGRlZmF1bHRDb25kaXRpb25EaXNwbGF5Rm4gfSBmcm9tICcuLi9jb25zdGFucy9jb25kaXRpb24tZGlzcGxheS5mdW5jdGlvbic7XG5pbXBvcnQgeyBWaGRGaWx0ZXJDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL3ZhbHVlLWhlbHAtZGlhbG9nLWZpbHRlci92YWx1ZS1oZWxwLWRpYWxvZy1maWx0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFZhbHVlSGVscENvbHVtbkRlZkRpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvdmFsdWUtaGVscC1jb2x1bW4tZGVmLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5leHBvcnQgdHlwZSBGZHBWYWx1ZUhlbHBEaWFsb2dEYXRhU291cmNlPFQ+ID1cbiAgICB8IFZhbHVlSGVscERpYWxvZ0RhdGFTb3VyY2U8VD5cbiAgICB8IEFycmF5VmFsdWVIZWxwRGlhbG9nRGF0YVNvdXJjZTxUPlxuICAgIHwgT2JzZXJ2YWJsZVZhbHVlSGVscERpYWxvZ0RhdGFTb3VyY2U8VD47XG5cbmxldCB2aGlVbmlxdWVJZCA9IDA7XG5sZXQgdmhkSGVhZGVyVW5pcXVlSWQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC12YWx1ZS1oZWxwLWRpYWxvZycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3ZhbHVlLWhlbHAtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi92YWx1ZS1oZWxwLWRpYWxvZy5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFZoZENvbXBvbmVudCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBQbGF0Zm9ybVZhbHVlSGVscERpYWxvZ0NvbXBvbmVudFxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBQbGF0Zm9ybVZhbHVlSGVscERpYWxvZ0NvbXBvbmVudDxUID0gYW55PiBleHRlbmRzIFZoZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICAvKiogSWQgb2YgdGhlIHBvcG92ZXIgKi9cbiAgICBASW5wdXQoKVxuICAgIGlkOiBzdHJpbmcgPSAnZmRwLXZoZC0nICsgdmhpVW5pcXVlSWQrKztcblxuICAgIC8qKiBJbml0aWFsIHN0YXRlIG9mIFZhbHVlIGhlbHAgZGlhbG9nICovXG4gICAgQElucHV0KClcbiAgICB2YWx1ZTogVmhkVmFsdWU8VD4gPSB7XG4gICAgICAgIHNlbGVjdGVkOiBbXSxcbiAgICAgICAgY29uZGl0aW9uczogW11cbiAgICB9O1xuXG4gICAgLyoqIERpYWxvZyB0aXRsZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlhbG9nVGl0bGU6IHN0cmluZztcblxuICAgIC8qKiBTZWxlY3QgZnJvbSBsaXN0IHRhYiBhY3RpdmF0aW9uICovXG4gICAgQElucHV0KClcbiAgICBpbml0aWFsVGFiID0gVmhkVGFiLnNlbGVjdEZyb21MaXN0O1xuXG4gICAgLyoqIFZpc2libGUgdGFicyAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGFiczogJ2JvdGgnIHwgJ3NlbGVjdCcgfCAnZGVmaW5lJyA9ICdib3RoJztcblxuICAgIC8qKiBJbml0aWFsIGV4cGFuZCBzdGF0ZSBmb3IgYWR2YW5jZWQgc2VhcmNoIHBhbmVsICovXG4gICAgQElucHV0KClcbiAgICBpc09wZW5BZHZhbmNlZCA9IGZhbHNlO1xuXG4gICAgLyoqIERhdGEgc291cmNlICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZGF0YVNvdXJjZSh2YWx1ZTogRmRwVmFsdWVIZWxwRGlhbG9nRGF0YVNvdXJjZTxhbnk+IHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0YVNvdXJjZSA9IHRoaXMudG9EYXRhU3RyZWFtKHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgZGF0YVNvdXJjZSgpOiBGZHBWYWx1ZUhlbHBEaWFsb2dEYXRhU291cmNlPGFueT4gfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YVNvdXJjZTtcbiAgICB9XG5cbiAgICAvKiogRGlhbG9nJ3MgY3VzdG9tIGNvbmZpZyAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlhbG9nQ29uZmlnOiBEaWFsb2dDb25maWcgPSB7fTtcblxuICAgIC8qKiBVbmlxdWUga2V5IGZyb20gdGhlIHNvdXJjZSBmaWVsZCBuYW1lcy4gUmVxdWlyZWQgZmllbGQuICovXG4gICAgQElucHV0KClcbiAgICB1bmlxdWVLZXk6IHN0cmluZztcblxuICAgIC8qKiBJZCBhdHRyaWJ1dGUgZm9yIGRpYWxvZyB0aXRsZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgaGVhZGVySWQgPSBgZmQtdmhkLWhlYWRlci1pZC0ke3ZoZEhlYWRlclVuaXF1ZUlkKyt9YDtcblxuICAgIC8qKiBGaWVsZCBuYW1lIGZvciBkZWZhdWx0IHJlbmRlciBmcm9tIGRhdGEuXG4gICAgICogUmVxdWlyZWQgZmllbGQgaWYgdG9rZW5pemVyRm4gaXMgbm90IGV4aXN0LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgdG9rZW5WaWV3RmllbGQ6IHN0cmluZztcblxuICAgIC8qKiBUb2tlbml6ZXIgZnVuY3Rpb24gZm9yIGN1c3RvbSB0b2tlbiByZW5kZXIsIGl0IGhhcyBoaWdoZXIgcHJpbyB0aGF0IGB0b2tlblZpZXdGaWVsZGAuXG4gICAgICogUmVxdWlyZWQgZmllbGQgaWYgdG9rZW5WaWV3RmllbGQgaXMgbm90IGV4aXN0LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgdG9rZW5pemVyRm46IChpdGVtOiBUKSA9PiBzdHJpbmc7XG5cbiAgICAvKiogV2hldGhlciB0aGUgdmFsdWUgaGVscCBkaWFsb2cgc2hvdWxkIGJlIHZpZXcgaW4gbW9iaWxlIG1vZGUgKi9cbiAgICBASW5wdXQoKVxuICAgIG1vYmlsZSA9IGZhbHNlO1xuXG4gICAgLyoqIEl0IHNob3VsZCBiZSBhYmxlIGlmIHlvdSB1c2UgbXVsdGlwbGUgc2VsZWN0aW9uICovXG4gICAgQElucHV0KClcbiAgICBmb3JtYXRUb2tlbjogKHZhbHVlOiBWaGRWYWx1ZUNoYW5nZUV2ZW50PFQ+KSA9PiB2b2lkO1xuXG4gICAgLyoqIFRva2VuaXplciBmdW5jdGlvbiBmb3IgY29uZGl0aW9uJ3MgdG9rZW4gcmVuZGVyICovXG4gICAgQElucHV0KClcbiAgICBjb25kaXRpb25EaXNwbGF5Rm4gPSBkZWZhdWx0Q29uZGl0aW9uRGlzcGxheUZuO1xuXG4gICAgLyoqIFZhbGlkYXRvciBmdW5jdGlvbi4gQ2FsbGVkIHdoZW4gdXNlciBzdWJtaXRzIFZIRCBkaWFsb2cuICovXG4gICAgQElucHV0KClcbiAgICB0b2tlblZhbGlkYXRvcjogKCh2YWx1ZTogVmhkVmFsdWVDaGFuZ2VFdmVudDxhbnk+KSA9PiBPYnNlcnZhYmxlPGJvb2xlYW4+IHwgYm9vbGVhbikgfCB1bmRlZmluZWQ7XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgaTE4biBjYXBhYmlsaXRpZXMgaW5zdGVhZFxuICAgICAqIFNlbGVjdCBmcm9tIGxpc3QgdGFiJ3MgYW5kIFNlYXJjaCB0YWJsZSBzZXR0aW5nc1xuICAgICAqICovXG4gICAgQElucHV0KClcbiAgICBzZWxlY3RUYWJUaXRsZTogc3RyaW5nO1xuXG4gICAgLyoqIFNlbGVjdGlvbiBtb2RlIGZvciBzZWFyY2ggdGFibGUgKi9cbiAgICBASW5wdXQoKVxuICAgIHNlYXJjaFNlbGVjdGlvbjogVmRoVGFibGVTZWxlY3Rpb24gPSAnbXVsdGknO1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGkxOG4gY2FwYWJpbGl0aWVzIGluc3RlYWRcbiAgICAgKiBUZXh0IGRpc3BsYXllZCB3aGVuIHRhYmxlIGhhcyBubyBpdGVtcy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNlYXJjaFRhYmxlRW1wdHlNZXNzYWdlOiBzdHJpbmc7XG5cbiAgICAvKiogSXRlbXMgcGVyIHBhZ2UgZm9yIHBhZ2luYXRpb24gYmVsb3cgc2VhcmNoIHRhYmxlICovXG4gICAgQElucHV0KClcbiAgICBzZWFyY2hUYWJsZVBhZ2VTaXplID0gMjA7XG5cbiAgICAvKiogQ291bnQgb2YgZGVmYXVsdCBtb2JpbGUgaGVhZGVyIGZyb20gc2VhcmNoIHRhYmxlICovXG4gICAgQElucHV0KClcbiAgICBzZWFyY2hUYWJsZU1vYmlsZUhlYWRlcnMgPSAyO1xuXG4gICAgLyoqIE1heCBzaG93biBpbml0aWFsIGZpbHRlcnMgb24gb3Blbi4gRGVza3RvcCBvbmx5ICovXG4gICAgQElucHV0KClcbiAgICBtYXhTaG93bkluaXRpYWxGaWx0ZXJzID0gNDtcblxuICAgIC8qKiBMb2FkaW5nIHN0YXRlICovXG4gICAgQElucHV0KClcbiAgICBsb2FkaW5nOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGkxOG4gY2FwYWJpbGl0aWVzIGluc3RlYWRcbiAgICAgKiBEZWZpbmUgY29uZGl0aW9ucyB0YWIncyBzZXR0aW5nc1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGVmaW5lVGFiVGl0bGU6IHN0cmluZztcblxuICAgIC8qKiBXaGV0aGVyIHRvIGFsbG93IHVzZXJzIHRvIHNlbGVjdCBhbGwgdGFibGUgZW50cmllcyB3aXRoIG9uZSBjaGVja2JveC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFsbG93U2VsZWN0QWxsID0gdHJ1ZTtcblxuICAgIC8qKiBDdXN0b20gc3RyYXRlZ2llcyBsYWJlbHNcbiAgICAgKiBBbGxvd2VkIGtleXM6IGNvbnRhaW5zLCBlcXVhbFRvLCBiZXR3ZWVuLCBzdGFydHNXaXRoLCBlbmRzV2l0aCwgbGVzc1RoYW4sIGxlc3NUaGFuRXF1YWwsIGdyZWF0ZXJUaGFuLCBncmVhdGVyVGhhbkVxdWFsLCBlbXB0eVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGVmaW5lU3RyYXRlZ3lMYWJlbHM6IHtcbiAgICAgICAgW2tleSBpbiBrZXlvZiAodHlwZW9mIFZoZERlZmluZUluY2x1ZGVTdHJhdGVneSB8IHR5cGVvZiBWaGREZWZpbmVFeGNsdWRlU3RyYXRlZ3kpXT86IHN0cmluZztcbiAgICB9ID0ge1xuICAgICAgICBjb250YWluczogJ2NvbnRhaW5zJyxcbiAgICAgICAgZXF1YWxUbzogJ2VxdWFsIHRvJyxcbiAgICAgICAgYmV0d2VlbjogJ2JldHdlZW4nLFxuICAgICAgICBzdGFydHNXaXRoOiAnc3RhcnRzIHdpdGgnLFxuICAgICAgICBlbmRzV2l0aDogJ2VuZHMgd2l0aCcsXG4gICAgICAgIGxlc3NUaGFuOiAnbGVzcyB0aGFuJyxcbiAgICAgICAgbGVzc1RoYW5FcXVhbDogJ2xlc3MgdGhhbiBvciBlcXVhbCB0bycsXG4gICAgICAgIGdyZWF0ZXJUaGFuOiAnZ3JlYXRlciB0aGFuJyxcbiAgICAgICAgZ3JlYXRlclRoYW5FcXVhbDogJ2dyZWF0ZXIgdGhhbiBvciBlcXVhbCB0bycsXG4gICAgICAgIGVtcHR5OiAnZW1wdHknLFxuICAgICAgICBub3RfZXF1YWxUbzogJ25vdCBlcXVhbCB0bycsXG4gICAgICAgIG5vdF9lbXB0eTogJ25vdCBlbXB0eSdcbiAgICB9O1xuXG4gICAgLyoqIERpYWxvZyBvdXRwdXRzICovXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBmaWx0ZXJzL3Rva2VucyB3ZXJlIGNoYW5nZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFZoZFZhbHVlQ2hhbmdlRXZlbnQ8VD4+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIGRhdGEgbG9hZGluZyBpcyBzdGFydGVkLiAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIEBPdXRwdXQoKSBvbkRhdGFSZXF1ZXN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIGRhdGEgbG9hZGluZyBpcyBmaW5pc2hlZC4gKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXhcbiAgICBAT3V0cHV0KCkgb25EYXRhUmVjZWl2ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiBGaXRsZXJzIGZvciBzZWFyY2ggdGFibGUgYW5kIGRlZmluY2UgY29uZGl0aW9ucyAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oVmhkRmlsdGVyQ29tcG9uZW50KVxuICAgIGZpbHRlcnM6IFF1ZXJ5TGlzdDxWaGRGaWx0ZXJDb21wb25lbnQ+O1xuXG4gICAgLyoqIENvbHVtbiBkZWZpbml0aW9ucy4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKFZhbHVlSGVscENvbHVtbkRlZkRpcmVjdGl2ZSlcbiAgICBjb2x1bW5EZWY6IFF1ZXJ5TGlzdDxWYWx1ZUhlbHBDb2x1bW5EZWZEaXJlY3RpdmU+O1xuXG4gICAgLyoqIEBoaWRkZW4gSW50ZXJuYWwgY29udGFpbmVyIGZvciBkaWFsb2cgKi9cbiAgICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gICAgZGlhbG9nQ29udGFpbmVyOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBhY3RpdmVEaWFsb2c/OiBEaWFsb2dSZWY7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90YWJUeXBlcyA9IFZoZFRhYjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2hhc0FkdmFuY2VkID0gdHJ1ZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2hhc0RlZmluZUZpbHRlcnMgPSB0cnVlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZGlzcGxheWVkRmlsdGVyczogVmhkRmlsdGVyW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2Rpc3BsYXllZERhdGE6IFRbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfbWFpblNlYXJjaCA9ICcnO1xuXG4gICAgLyoqIGhhbmRsZXMgcnRsIHNlcnZpY2VcbiAgICAgKiBAaGlkZGVuICovXG4gICAgX2RpciA9ICdsdHInO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kZXN0cm95ZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kYXRhU291cmNlOiBGZHBWYWx1ZUhlbHBEaWFsb2dEYXRhU291cmNlPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICAvKiogQGhpZGRlbiBmb3IgZGF0YSBzb3VyY2UgaGFuZGxpbmcgKi9cbiAgICBwcml2YXRlIF9kc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbDtcblxuICAgIC8qKiBAaGlkZGVuIFByZXZpb3VzIHN0YXRlICovXG4gICAgcHJpdmF0ZSBfcHJldlN0YXRlOiBWaGRWYWx1ZTxUPiA9IHtcbiAgICAgICAgc2VsZWN0ZWQ6IFtdLFxuICAgICAgICBjb25kaXRpb25zOiBbXVxuICAgIH07XG4gICAgLyoqIEBoaWRkZW4gQ3VycmVudCBkYXRhIGZvciBsb2NhbCBtYW51cHVsYXRpb24gKi9cbiAgICBwcml2YXRlIF9jdXJyZW50VmFsdWU6IFZoZFZhbHVlPFQ+ID0ge1xuICAgICAgICBzZWxlY3RlZDogW10sXG4gICAgICAgIGNvbmRpdGlvbnM6IFtdXG4gICAgfTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2VsZWN0ZWRUYWI6IFZoZFRhYiB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzaG93bkZpbHRlckNvdW50ID0gSW5maW5pdHk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBsb2FkaW5nU3RhdGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRpbmcgPz8gdGhpcy5faW50ZXJuYWxMb2FkaW5nU3RhdGU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBUbyBkaWZmZXJlbnRpYXRlIGJldHdlZW4gZmlyc3QgbG9hZGluZyB3aGVuIHNrZWxldG9ucyBiZSBzaG93biBhbmQgc3Vic2VxdWVudCBsb2FkaW5ncyB3aGVuIGJ1c3kgaW5kaWNhdG9yIGJlIHNob3duXG4gICAgICovXG4gICAgX2ZpcnN0TG9hZGluZ0RvbmUgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaW50ZXJuYWxMb2FkaW5nU3RhdGUgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfb25EZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9kaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IF9ydGxTZXJ2aWNlOiBSdGxTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIC8qKiBEZWZhdWx0IGRpc3BsYXkgZnVuY3Rpb24gZm9yIGRlZmluZSBjb25kaXRpb25zICovXG4gICAgICAgIGlmICghdGhpcy5jb25kaXRpb25EaXNwbGF5Rm4gfHwgdHlwZW9mIHRoaXMuY29uZGl0aW9uRGlzcGxheUZuICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbkRpc3BsYXlGbiA9IGRlZmF1bHRDb25kaXRpb25EaXNwbGF5Rm47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBpc01vYmlsZUFkdmFuY2VkU2VhcmNoQWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5tb2JpbGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlzT3BlbkFkdmFuY2VkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBoYXNTZWxlY3RlZFRhYigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRUYWIgIT0gbnVsbCAmJiB0aGlzLnNlbGVjdGVkVGFiIGluIFZoZFRhYjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBzaG93U2VsZWN0aW9uVGFiKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy50YWJzICE9PSAnZGVmaW5lJztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBzaG93RGVmaW5lVGFiKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy50YWJzICE9PSAnc2VsZWN0JztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBpc1NlbGVjdGlvblRhYigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRUYWIgPT09IFZoZFRhYi5zZWxlY3RGcm9tTGlzdCB8fCB0aGlzLnNlbGVjdGVkVGFiID09PSBWaGRUYWIuYWR2YW5jZWRTZWFyY2g7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgc2VsZWN0ZWRJdGVtcygpOiBUW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudFZhbHVlLnNlbGVjdGVkIHx8IFtdO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGNvbmRpdGlvbkl0ZW1zKCk6IEJhc2VFbnRpdHlbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW50VmFsdWUuY29uZGl0aW9ucyB8fCBbXTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCB2YWxpZENvbmRpdGlvbnMoKTogQmFzZUVudGl0eVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldFZhbGlkQ29uZGl0aW9uKHRoaXMuY29uZGl0aW9uSXRlbXMpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGhhc1NlbGVjdGVkQW5kQ29uZGl0aW9ucygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIEJvb2xlYW4odGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCArIHRoaXMudmFsaWRDb25kaXRpb25zLmxlbmd0aCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgaXNTaG93QWxsRmlsdGVycygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVycy5sZW5ndGggPiB0aGlzLm1heFNob3duSW5pdGlhbEZpbHRlcnMgJiYgdGhpcy5zaG93bkZpbHRlckNvdW50ID4gdGhpcy5tYXhTaG93bkluaXRpYWxGaWx0ZXJzO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGlzT3BlbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5hY3RpdmVEaWFsb2c7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgaWYgKCdkYXRhU291cmNlJyBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZURTKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9yZXNldFN0YXRlKCk7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQubmV4dCgpO1xuICAgIH1cblxuICAgIC8qKiBPcGVuIGRpYWxvZyAqL1xuICAgIG9wZW4oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkT3B0aW9ucygpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BsZWFzZSBjaGVjayByZXF1aXJlZCBmaWVsZHMnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zYXZlUHJldmlvdXNTdGF0ZSgpO1xuICAgICAgICB0aGlzLl91cGRhdGVGaWx0ZXJzKCk7XG4gICAgICAgIHRoaXMuX2luaXRpYWxpemVEUygpO1xuICAgICAgICB0aGlzLl9pbml0aWFsaXplVGFiKCk7XG4gICAgICAgIGlmICghdGhpcy5kaWFsb2dDb25maWcuYXJpYUxhYmVsbGVkQnkpIHtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nQ29uZmlnLmFyaWFMYWJlbGxlZEJ5ID0gdGhpcy5oZWFkZXJJZDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFjdGl2ZURpYWxvZyA9IHRoaXMuX2RpYWxvZ1NlcnZpY2Uub3Blbih0aGlzLmRpYWxvZ0NvbnRhaW5lciwge1xuICAgICAgICAgICAgYmFja2Ryb3BDbGlja0Nsb3NlYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgICAgICAgIHZlcnRpY2FsUGFkZGluZzogZmFsc2UsXG4gICAgICAgICAgICBlc2NLZXlDbG9zZWFibGU6IGZhbHNlLFxuICAgICAgICAgICAgZGlhbG9nUGFuZWxDbGFzczogYGZkcC12YWx1ZS1oZWxwLWRpYWxvZyAke3RoaXMubW9iaWxlID8gJ2ZkcC12YWx1ZS1oZWxwLWRpYWxvZy1tb2JpbGUnIDogJyd9YCxcbiAgICAgICAgICAgIC4uLnRoaXMuZGlhbG9nQ29uZmlnLFxuXG4gICAgICAgICAgICBmdWxsU2NyZWVuOiB0aGlzLm1vYmlsZSxcbiAgICAgICAgICAgIG1heFdpZHRoOiB0aGlzLm1vYmlsZSA/IHVuZGVmaW5lZCA6ICc5MiUnLFxuICAgICAgICAgICAgd2lkdGg6IHRoaXMubW9iaWxlID8gdW5kZWZpbmVkIDogJzEwODBweCcsXG4gICAgICAgICAgICBoZWlnaHQ6IHRoaXMubW9iaWxlID8gdW5kZWZpbmVkIDogJzk4JSdcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2xpc3RlbkRpYWxvZ0V2ZW50cygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRvZ2dsZSBhZHZhbmNlZCBzZWFyY2ggcGFuZWxcbiAgICAgKi9cbiAgICB0b2dnbGVBZHZhbmNlZFNlYXJjaChzdGF0ZT86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKHR5cGVvZiBzdGF0ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuQWR2YW5jZWQgPSBzdGF0ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuQWR2YW5jZWQgPSAhdGhpcy5pc09wZW5BZHZhbmNlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm1vYmlsZSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRhYiA9IHRoaXMuaXNPcGVuQWR2YW5jZWQgPyBWaGRUYWIuYWR2YW5jZWRTZWFyY2ggOiBWaGRUYWIuc2VsZWN0RnJvbUxpc3Q7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbGVhciBhbGwgc2VsZWN0ZWQgaXRlbXNcbiAgICAgKi9cbiAgICBjbGVhclNlbGVjdGVkQW5kQ29uZGl0aW9uSXRlbXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRWYWx1ZS5zZWxlY3RlZCA9IFtdO1xuICAgICAgICB0aGlzLl9jdXJyZW50VmFsdWUuY29uZGl0aW9ucyA9IFtdO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogU2VhcmNoIGJ5IG9ubHkgdGhlIHNlYXJjaCB0ZXJtLiAqL1xuICAgIHNlYXJjaCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWx0ZXIodHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VhcmNoIGJ5IGFsbCBmaWxsZWQgZmlsdGVycywgaW5jbHVkaW5nIHRoZSBzZWFyY2ggdGVybS5cbiAgICAgKi9cbiAgICBmaWx0ZXIob25seVNlYXJjaCA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG5vbkVtcHR5RmlsdGVycyA9IG5ldyBNYXAoKTtcblxuICAgICAgICBpZiAoIW9ubHlTZWFyY2gpIHtcbiAgICAgICAgICAgIHRoaXMuX2Rpc3BsYXllZEZpbHRlcnNcbiAgICAgICAgICAgICAgICAuZmlsdGVyKCh7IHZhbHVlIH0pID0+XG4gICAgICAgICAgICAgICAgICAgICEhdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlLnRyaW0oKS5sZW5ndGggOiB2YWx1ZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5mb3JFYWNoKChlKSA9PiBub25FbXB0eUZpbHRlcnMuc2V0KGUua2V5LCBlLnZhbHVlKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fbWFpblNlYXJjaC5sZW5ndGgpIHtcbiAgICAgICAgICAgIG5vbkVtcHR5RmlsdGVycy5zZXQoJyonLCB0aGlzLl9tYWluU2VhcmNoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRhdGFTb3VyY2U/Lm1hdGNoKG5vbkVtcHR5RmlsdGVycyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXBwbHkgc2VhcmNoIGZyb20gYWR2YW5jZWQgZmlsdGVycyB2aWV3LCB1c2luZyB3aGVuIG1vYmlsZSB2aWV3IGlzIGFjdGl2ZVxuICAgICAqL1xuICAgIHNlYXJjaEFkdmFuY2VkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZpbHRlcigpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkVGFiID0gVmhkVGFiLnNlbGVjdEZyb21MaXN0O1xuICAgICAgICB0aGlzLmlzT3BlbkFkdmFuY2VkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqIFJlbW92ZSBpdGVtIGZyb20gc2VsZWN0ZWQgYXJyYXkgKi9cbiAgICByZW1vdmVTZWxlY3RlZChpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRWYWx1ZS5zZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIoKF8sIGkpID0+IGkgIT09IGluZGV4KTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlIGNvbmRpdGlvbiBpdGVtXG4gICAgICovXG4gICAgcmVtb3ZlQ29uZGl0aW9uKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY3VycmVudFZhbHVlLmNvbmRpdGlvbnMgPSB0aGlzLmNvbmRpdGlvbkl0ZW1zLmZpbHRlcigoXywgaSkgPT4gaSAhPT0gaW5kZXgpO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTd2l0Y2ggdGFiIGJ5IHR5cGVcbiAgICAgKi9cbiAgICBzd2l0Y2hUYWIodHlwZTogVmhkVGFiIHwgbnVsbCA9IG51bGwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRhYiA9IHR5cGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2UgZGlhbG9nIHdpdGggdmFsdWU7XG4gICAgICovXG4gICAgc3VjY2VzcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmFjdGl2ZURpYWxvZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHZhbHVlOiBWaGRWYWx1ZUNoYW5nZUV2ZW50ID0ge1xuICAgICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWRJdGVtcyxcbiAgICAgICAgICAgIGNvbmRpdGlvbnM6IHRoaXMudmFsaWRDb25kaXRpb25zXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5faW50ZXJuYWxMb2FkaW5nU3RhdGUgPSB0cnVlO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHRoaXMuX2dldFZhbGlkYXRvckZ1bmN0aW9uKHZhbHVlKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faW50ZXJuYWxMb2FkaW5nU3RhdGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGZpbHRlcigocikgPT4gciksXG4gICAgICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmZvcm1hdFRva2VuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybWF0VG9rZW4odmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZURpYWxvZz8uY2xvc2UodmFsdWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGlkZSBhZHZhbmNlZCBzZWFyY2ggb24gbW9iaWxlIHZpZXcgYW5kIGlmIGl0J3Mgb3BlbmVkXG4gICAgICogQ2xvc2UgZGlhbG9nIHdpdGggbnVsbCB2YWx1ZTtcbiAgICAgKi9cbiAgICBkaXNtaXNzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tb2JpbGUgJiYgdGhpcy5pc09wZW5BZHZhbmNlZCkge1xuICAgICAgICAgICAgdGhpcy5pc09wZW5BZHZhbmNlZCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5zd2l0Y2hUYWIoVmhkVGFiLnNlbGVjdEZyb21MaXN0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRWYWx1ZSA9IHRoaXMuX3ByZXZTdGF0ZTtcbiAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZURpYWxvZykge1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlRGlhbG9nLmNsb3NlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90cmFja0J5U2VsZWN0ZWRGbihfaW5kZXg6IG51bWJlciwgaXRlbTogVCk6IG51bWJlciB8IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBpdGVtICYmIGl0ZW1bdGhpcy51bmlxdWVLZXldO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RyYWNrQnlGaWx0ZXJGbihfaW5kZXg6IG51bWJlciwgaXRlbTogVmhkRmlsdGVyKTogbnVtYmVyIHwgc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0gJiYgaXRlbS5rZXk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdHJhY2tCeUNvbmRpdGlvbkZuKF9pbmRleDogbnVtYmVyLCBpdGVtOiBCYXNlRW50aXR5KTogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0gPyBpdGVtLnZhbHVlICsgaXRlbS52YWx1ZVRvICsgaXRlbS5zdHJhdGVneSArIGl0ZW0ua2V5IDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25TZWxlY3QoJGV2ZW50OiBUW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY3VycmVudFZhbHVlLnNlbGVjdGVkID0gJGV2ZW50O1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoU2VsZWN0aW9uID09PSAnb25jZScpIHtcbiAgICAgICAgICAgIHRoaXMuc3VjY2VzcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvbkNvbmRpdGlvbkNoYW5nZSgkZXZlbnQ6IEJhc2VFbnRpdHlbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jdXJyZW50VmFsdWUuY29uZGl0aW9ucyA9ICRldmVudDtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB0b2dnbGVTaG93bkZpbHRlcnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2hvd25GaWx0ZXJDb3VudCA9XG4gICAgICAgICAgICB0aGlzLm1heFNob3duSW5pdGlhbEZpbHRlcnMgPT09IHRoaXMuc2hvd25GaWx0ZXJDb3VudCA/IEluZmluaXR5IDogdGhpcy5tYXhTaG93bkluaXRpYWxGaWx0ZXJzO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaW5pdFNob3duRmlsdGVycygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zaG93bkZpbHRlckNvdW50ID0gdGhpcy5tYXhTaG93bkluaXRpYWxGaWx0ZXJzIHx8IEluZmluaXR5O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0VmFsaWRDb25kaXRpb24oaXRlbXM6IEJhc2VFbnRpdHlbXSA9IFtdKTogQmFzZUVudGl0eVtdIHtcbiAgICAgICAgcmV0dXJuIGl0ZW1zLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGl0ZW0uc3RyYXRlZ3kgPT09IFZoZERlZmluZUluY2x1ZGVTdHJhdGVneS5lbXB0eSB8fFxuICAgICAgICAgICAgICAgIGl0ZW0uc3RyYXRlZ3kgPT09IFZoZERlZmluZUV4Y2x1ZGVTdHJhdGVneS5ub3RfZW1wdHlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGl0ZW0uc3RyYXRlZ3kgPT09IFZoZERlZmluZUluY2x1ZGVTdHJhdGVneS5iZXR3ZWVuKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEJvb2xlYW4oaXRlbS52YWx1ZS5sZW5ndGggJiYgaXRlbS52YWx1ZVRvLmxlbmd0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWl0ZW0udmFsaWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gQm9vbGVhbihpdGVtLnZhbHVlLmxlbmd0aCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaW5pdGlhbGl6ZURTKGRzOiBGZHBWYWx1ZUhlbHBEaWFsb2dEYXRhU291cmNlPGFueT4gfCB1bmRlZmluZWQgPSB0aGlzLmRhdGFTb3VyY2UpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVzZXRTb3VyY2VTdHJlYW0oKTtcblxuICAgICAgICBpZiAodGhpcy5zaG93U2VsZWN0aW9uVGFiKSB7XG4gICAgICAgICAgICB0aGlzLl9kc1N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgICAgICAgICAgdGhpcy5fZHNTdWJzY3JpcHRpb24uYWRkKFxuICAgICAgICAgICAgICAgIGRzPy5vbkRhdGFSZXF1ZXN0ZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbnRlcm5hbExvYWRpbmdTdGF0ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25EYXRhUmVxdWVzdGVkLmVtaXQoKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgdGhpcy5fZHNTdWJzY3JpcHRpb24uYWRkKFxuICAgICAgICAgICAgICAgIGRzPy5vbkRhdGFSZWNlaXZlZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2ludGVybmFsTG9hZGluZ1N0YXRlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2ZpcnN0TG9hZGluZ0RvbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uRGF0YVJlY2VpdmVkLmVtaXQoKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgY29uc3QgZHNTdWIgPSB0aGlzLm9wZW5EYXRhU3RyZWFtKClcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Rpc3BsYXllZERhdGEgPSBkYXRhLnNsaWNlKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLl9kc1N1YnNjcmlwdGlvbi5hZGQoZHNTdWIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gU2F2ZSBwcmV2aW91cyBzdGF0ZSAqL1xuICAgIHByaXZhdGUgX3NhdmVQcmV2aW91c1N0YXRlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGNsb25lRGVlcCh0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy5fY3VycmVudFZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuX3ByZXZTdGF0ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaW5pdGlhbGl6ZVRhYigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubW9iaWxlKSB7XG4gICAgICAgICAgICB0aGlzLmlzT3BlbkFkdmFuY2VkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuc2hvd1NlbGVjdGlvblRhYiAmJiB0aGlzLnNob3dEZWZpbmVUYWIpIHtcbiAgICAgICAgICAgIHRoaXMuc3dpdGNoVGFiKHRoaXMubW9iaWxlID8gdW5kZWZpbmVkIDogdGhpcy5pbml0aWFsVGFiKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNob3dTZWxlY3Rpb25UYWIpIHtcbiAgICAgICAgICAgIHRoaXMuc3dpdGNoVGFiKFZoZFRhYi5zZWxlY3RGcm9tTGlzdCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zaG93RGVmaW5lVGFiKSB7XG4gICAgICAgICAgICB0aGlzLnN3aXRjaFRhYihWaGRUYWIuZGVmaW5lQ29uZGl0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faW5pdFNob3duRmlsdGVycygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuRGlhbG9nRXZlbnRzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuYWN0aXZlRGlhbG9nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hY3RpdmVEaWFsb2cuYWZ0ZXJDbG9zZWQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX3Jlc2V0U3RhdGUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZmlsdGVycy5jaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVGaWx0ZXJzKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLl9ydGxTZXJ2aWNlKSB7XG4gICAgICAgICAgICB0aGlzLl9kaXIgPSB0aGlzLl9ydGxTZXJ2aWNlLnJ0bC5nZXRWYWx1ZSgpID8gJ3J0bCcgOiAnbHRyJztcbiAgICAgICAgICAgIHRoaXMuX3J0bFNlcnZpY2UucnRsLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgoaXNSdGw6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9kaXIgPSBpc1J0bCA/ICdydGwnIDogJ2x0cic7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVzZXRTdGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZGVzdHJveWVkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fZGVzdHJveWVkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuX3Jlc2V0U291cmNlU3RyZWFtKCk7XG4gICAgICAgIHRoaXMuYWN0aXZlRGlhbG9nID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdXBkYXRlRmlsdGVycygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZGlzcGxheWVkRmlsdGVycyA9IHRoaXMuZmlsdGVycy5tYXAoKGUpID0+ICh7XG4gICAgICAgICAgICAuLi5lLFxuICAgICAgICAgICAgbGFiZWw6IGUubGFiZWwgfHwgZS5rZXlcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIHRoaXMuX2hhc0FkdmFuY2VkID0gdGhpcy5fZGlzcGxheWVkRmlsdGVycy5zb21lKChlOiBWaGRGaWx0ZXIpID0+ICEhZS5hZHZhbmNlZCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIG9wZW5EYXRhU3RyZWFtKCk6IE9ic2VydmFibGU8VFtdPiB7XG4gICAgICAgIGlmICh0aGlzLl9kYXRhU291cmNlKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhU291cmNlLm1hdGNoKCk7XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9kYXRhU291cmNlLm9wZW4oKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFtkYXRhU291cmNlXSBzb3VyY2UgZGlkIG5vdCBtYXRjaCBhbiBhcnJheSwgT2JzZXJ2YWJsZSwgb3IgRGF0YVNvdXJjZWApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSB0b0RhdGFTdHJlYW0oZHM6IEZkcFZhbHVlSGVscERpYWxvZ0RhdGFTb3VyY2U8VD4pOiBGZHBWYWx1ZUhlbHBEaWFsb2dEYXRhU291cmNlPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKGlzRGF0YVNvdXJjZShkcykpIHtcbiAgICAgICAgICAgIHJldHVybiBkcyBhcyBWYWx1ZUhlbHBEaWFsb2dEYXRhU291cmNlPFQ+O1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoZHMpKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEFycmF5VmFsdWVIZWxwRGlhbG9nRGF0YVNvdXJjZTxUPihkcyk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNPYnNlcnZhYmxlKGRzKSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlVmFsdWVIZWxwRGlhbG9nRGF0YVNvdXJjZTxUPihkcyBhcyBPYnNlcnZhYmxlPFRbXT4pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Jlc2V0U291cmNlU3RyZWFtKCk6IHZvaWQge1xuICAgICAgICBpZiAoaXNEYXRhU291cmNlKHRoaXMuZGF0YVNvdXJjZSkpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9kc1N1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5fZHNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIHRoaXMuX2RzU3Vic2NyaXB0aW9uID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBpc1ZhbGlkT3B0aW9ucygpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMuc2hvd1NlbGVjdGlvblRhYikge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAhIXRoaXMuZGF0YVNvdXJjZSAmJlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0aGlzLnVuaXF1ZUtleSA9PT0gJ3N0cmluZycgJiZcbiAgICAgICAgICAgICAgICAodHlwZW9mIHRoaXMudG9rZW5WaWV3RmllbGQgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB0aGlzLnRva2VuaXplckZuID09PSAnZnVuY3Rpb24nKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldFZhbGlkYXRvckZ1bmN0aW9uKHZhbHVlOiBWaGRWYWx1ZUNoYW5nZUV2ZW50KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRvciA9IHR5cGVvZiB0aGlzLnRva2VuVmFsaWRhdG9yID09PSAnZnVuY3Rpb24nID8gdGhpcy50b2tlblZhbGlkYXRvcih2YWx1ZSkgOiBvZih0cnVlKTtcblxuICAgICAgICByZXR1cm4gaXNPYnNlcnZhYmxlKHZhbGlkYXRvcikgPyB2YWxpZGF0b3IgOiBvZih2YWxpZGF0b3IpO1xuICAgIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSBsZXQtZGlhbG9nIGxldC1kaWFsb2dDb25maWc9XCJkaWFsb2dDb25maWdcIiAjY29udGFpbmVyPlxuICAgIDxmZC1kaWFsb2cgW2RpYWxvZ0NvbmZpZ109XCJkaWFsb2dDb25maWdcIiBbZGlhbG9nUmVmXT1cImRpYWxvZ1wiPlxuICAgICAgICA8ZmQtZGlhbG9nLWhlYWRlciBbZGlyXT1cIl9kaXJcIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBmZGtUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtb2JpbGUgPyBtb2JpbGVEaWFsb2dUaXRsZSA6IGRlc2t0b3BEaWFsb2dUaXRsZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9mZC1kaWFsb2ctaGVhZGVyPlxuICAgICAgICA8ZmQtZGlhbG9nLWJvZHkgW2Rpcl09XCJfZGlyXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW1vYmlsZVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhZHZhbmNlZFNlYXJjaENvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPGRpdiBmZC1zY3JvbGxiYXIgW292ZXJyaWRlVGFiaW5kZXhdPVwiZmFsc2VcIiBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19fY29udGVudC1ob2xkZXJcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9iaWxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhZHZhbmNlZFNlYXJjaENvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZFRhYiA9PT0gX3RhYlR5cGVzLnNlbGVjdEZyb21MaXN0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZWxlY3Rpb25Db250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRUYWIgPT09IF90YWJUeXBlcy5kZWZpbmVDb25kaXRpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkZWZpbmVDb25kaXRpb25zQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZmQtZGlhbG9nLWJvZHk+XG4gICAgICAgIDxmZC1kaWFsb2ctZm9vdGVyIFtkaXJdPVwiX2RpclwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGZka1RlbXBsYXRlPVwiZm9vdGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19fcm93IGZkcC12YWx1ZS1oZWxwLWRpYWxvZ19fc2VsZWN0aW9uLXJvd1wiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3BsYXRmb3JtVkhELnNlbGVjdGVkQW5kQ29uZGl0aW9uTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFpc01vYmlsZUFkdmFuY2VkU2VhcmNoQWN0aXZlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxoNSBmZC10aXRsZSBjbGFzcz1cInNlbGVjdGVkLWFuZC1jb25kaXRpb24tdGl0bGVcIiBbaWRdPVwiaWQgKyAnLXNlbGVjdGVkLWl0ZW0nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGFzU2VsZWN0ZWRBbmRDb25kaXRpb25zOyBlbHNlIG5vSXRlbXNQYW5lbFRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtVkhELnNlbGVjdGVkQW5kQ29uZGl0aW9uTGFiZWwnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe3sgc2VsZWN0ZWRJdGVtcy5sZW5ndGggKyB2YWxpZENvbmRpdGlvbnMubGVuZ3RoIH19KVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvaDU+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19fdG9rZW5zLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmZHAtdmFsdWUtaGVscC1kaWFsb2dfX3Rva2Vuc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gU2VsZWN0ZWQgaXRlbXMgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLXRva2VuaXplcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLXRva2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkT3ZlcmZsb3dQcmlvcml0eT1cImhpZ2hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZHAtdmFsdWUtaGVscC1kaWFsb2dfX3NlbGVjdGlvbi10b2tlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DbG9zZUNsaWNrKT1cInJlbW92ZVNlbGVjdGVkKHNlbGVjdGVkSW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpdGVtIG9mIHNlbGVjdGVkSXRlbXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggYXMgc2VsZWN0ZWRJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFja0J5OiBfdHJhY2tCeVNlbGVjdGVkRm5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgISF0b2tlbml6ZXJGbiA/IChpdGVtIHwgZGlzcGxheUZuUGlwZSA6IHRva2VuaXplckZuKSA6IGl0ZW1bdG9rZW5WaWV3RmllbGRdIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmQtdG9rZW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC10b2tlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZE92ZXJmbG93UHJpb3JpdHk9XCJoaWdoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmRwLXZhbHVlLWhlbHAtZGlhbG9nX19zZWxlY3Rpb24tdG9rZW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2xvc2VDbGljayk9XCJyZW1vdmVDb25kaXRpb24oY29uZGl0aW9uSW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpdGVtIG9mIHZhbGlkQ29uZGl0aW9ucztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCBhcyBjb25kaXRpb25JbmRleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFja0J5OiBfdHJhY2tCeUNvbmRpdGlvbkZuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29uZGl0aW9uVmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGl0ZW06IGl0ZW0gfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmQtdG9rZW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmZC1mb3JtLWNvbnRyb2wgZmQtdG9rZW5pemVyLWlucHV0IFtkaXNhYmxlZF09XCIhaGFzU2VsZWN0ZWRBbmRDb25kaXRpb25zXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLXRva2VuaXplcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGVhclNlbGVjdGVkQW5kQ29uZGl0aW9uSXRlbXMoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZHAtdmFsdWUtaGVscC1kaWFsb2dfX3Rva2Vucy1jbGVhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFoYXNTZWxlY3RlZEFuZENvbmRpdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ3BsYXRmb3JtVkhELmZvb3RlckNsZWFyU2VsZWN0ZWRUaXRsZScgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGg9XCJkZWNsaW5lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidwbGF0Zm9ybVZIRC5mb290ZXJDbGVhclNlbGVjdGVkQXJpYUxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19fYWN0aW9ucy1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWdvLWFkdmFuY2VkXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtVkhELnNlYXJjaEJ1dHRvbkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cImVtcGhhc2l6ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJtb2JpbGUgJiYgaXNPcGVuQWR2YW5jZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlYXJjaEFkdmFuY2VkKClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1zdWNjZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nU3RhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybVZIRC5zdWNjZXNzQnV0dG9uTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkVGFiICE9PSBfdGFiVHlwZXMuYWR2YW5jZWRTZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInN1Y2Nlc3MoKVwiXG4gICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWRpc21pc3MtZGlhbG9nXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC1kaWFsb2ctZGVjaXNpdmUtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtVkhELmNhbmNlbEJ1dHRvbkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkaXNtaXNzKClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2ZkLWRpYWxvZy1mb290ZXI+XG4gICAgPC9mZC1kaWFsb2c+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI25vSXRlbXNQYW5lbFRpdGxlPlxuICAgIHt7ICdwbGF0Zm9ybVZIRC5zZWxlY3RlZEVtcHR5TGFiZWwnIHwgZmRUcmFuc2xhdGUgfX1cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYWR2YW5jZWRTZWFyY2hDb250ZW50PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1NlbGVjdGlvblRhYlwiPlxuICAgICAgICA8Zm9ybSBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19fcm93IGZkcC12YWx1ZS1oZWxwLWRpYWxvZ19fYWR2YW5jZWQtc2VhcmNoXCIgW2lkXT1cIidhZHZhbmNlZC1zZWFyY2gtJyArIGlkXCI+XG4gICAgICAgICAgICA8ZmQtbGF5b3V0LWdyaWQgKm5nSWY9XCIhbW9iaWxlIHx8IChtb2JpbGUgJiYgIWlzT3BlbkFkdmFuY2VkKVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgZmRMYXlvdXRHcmlkUm93PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFtmZExheW91dEdyaWRDb2xdPVwiMTJcIiBbY29sTWRdPVwiMTJcIiBbY29sTGddPVwibW9iaWxlID8gMTIgOiA2XCIgW2NvbFhsXT1cIm1vYmlsZSA/IDEyIDogNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGZkcC1zZWFyY2gtZmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3BsYXRmb3JtVkhELnNlYXJjaFBsYWNlaG9sZGVyJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VhcmNoU3VibWl0KT1cInNlYXJjaCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5wdXRDaGFuZ2UpPVwiX21haW5TZWFyY2ggPSAkZXZlbnQudGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9mZHAtc2VhcmNoLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBbZmRMYXlvdXRHcmlkQ29sXT1cIjEyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xNZF09XCIxMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY29sTGddPVwibW9iaWxlID8gMTIgOiA2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xYbF09XCJtb2JpbGUgPyAxMiA6IDZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJfaGFzQWR2YW5jZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZHAtdmFsdWUtaGVscC1kaWFsb2dfX2FkdmFuY2VkLWFjdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZmQtdG9vbGJhciBbY2xlYXJCb3JkZXJdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC10b29sYmFyLXNwYWNlcj48L2ZkLXRvb2xiYXItc3BhY2VyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiX2hhc0FkdmFuY2VkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vYmlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ3BsYXRmb3JtVkhELnNlYXJjaEFkdmFuY2VkU2VhcmNoTGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpc09wZW5BZHZhbmNlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ3BsYXRmb3JtVkhELnNlYXJjaEhpZGVBZHZhbmNlZFNlYXJjaExhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ3BsYXRmb3JtVkhELnNlYXJjaFNob3dBZHZhbmNlZFNlYXJjaExhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB8IGZkVHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVBZHZhbmNlZFNlYXJjaCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtVkhELnNlYXJjaEJ1dHRvbkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1WSEQuc2VhcmNoQnV0dG9uTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZmlsdGVyKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZmQtdG9vbGJhcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2ZkLWxheW91dC1ncmlkPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIFtpZF09XCInYWR2YW5jZWQtc2VhcmNoLWNvbnRlbnQtJyArIGlkXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImlzT3BlbkFkdmFuY2VkICYmIF9oYXNBZHZhbmNlZFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmZHAtdmFsdWUtaGVscC1kaWFsb2dfX2FkdmFuY2VkLWZpbHRlcnNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxmZC1idXN5LWluZGljYXRvciBbbG9hZGluZ109XCJsb2FkaW5nU3RhdGUgJiYgX2ZpcnN0TG9hZGluZ0RvbmVcIiBbYmxvY2tdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZmQtbGF5b3V0LWdyaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiX2ZpcnN0TG9hZGluZ0RvbmU7IGVsc2UgZmlsdGVyc0xvYWRpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZkcC12YWx1ZS1oZWxwLWRpYWxvZ19fd2l0aC10b2dnbGUtYWxsXT1cImZpbHRlcnMubGVuZ3RoID4gbWF4U2hvd25Jbml0aWFsRmlsdGVyc1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZmRMYXlvdXRHcmlkUm93PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZmlsdGVyIG9mIF9kaXNwbGF5ZWRGaWx0ZXJzIHwgc2xpY2UgOiAwIDogc2hvd25GaWx0ZXJDb3VudCArIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFja0J5OiBfdHJhY2tCeUZpbHRlckZuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLmFkdmFuY2VkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtmZExheW91dEdyaWRDb2xdPVwiMTJcIiBbY29sTWRdPVwiMTJcIiBbY29sTGddPVwiNlwiIFtjb2xYbF09XCIzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZmQtZm9ybS1ncm91cF9faGVhZGVyXCIgZmQtZm9ybS1sYWJlbCBbZm9yXT1cIidpbnB1dCcgKyBmaWx0ZXIua2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7IGZpbHRlci5sYWJlbCB9fTo8L2xhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXIuZmlsdGVyRGVmXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZmlsdGVyLmZpbHRlckRlZi50ZW1wbGF0ZVJlZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGZpbHRlciB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFmaWx0ZXIuZmlsdGVyRGVmXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWx0ZXIudmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtZm9ybS1jb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCInc2VhcmNoLWJ5LScgKyBmaWx0ZXIubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cIidpbnB1dCcgKyBmaWx0ZXIua2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sR3Jvd1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmRMYXlvdXRHcmlkQ29sXT1cIjEyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbE1kXT1cIjEyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbExnXT1cIjZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sWGxdPVwiM1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZmlsdGVycy5sZW5ndGggPiBtYXhTaG93bkluaXRpYWxGaWx0ZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZHAtdmFsdWUtaGVscC1kaWFsb2dfX3RvZ2dsZS1maWx0ZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNob3duRmlsdGVycygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXNTaG93QWxsRmlsdGVyc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdwbGF0Zm9ybVZIRC5zZWFyY2hIaWRlQWxsQWR2YW5jZWRTZWFyY2hMYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAncGxhdGZvcm1WSEQuc2VhcmNoU2hvd0FsbEFkdmFuY2VkU2VhcmNoTGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB8IGZkVHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9mZC1sYXlvdXQtZ3JpZD5cblxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2ZpbHRlcnNMb2FkaW5nPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGZkLXNrZWxldG9uIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjEwMHB4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZzpyZWN0IHg9XCIwXCIgeT1cIjBcIiByeD1cIjRcIiB3aWR0aD1cIjE1JVwiIGhlaWdodD1cIjhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmc6cmVjdCB4PVwiMFwiIHk9XCIyMFwiIHJ4PVwiNFwiIHdpZHRoPVwiMjUlXCIgaGVpZ2h0PVwiMTZcIiAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZzpyZWN0IHg9XCIzNSVcIiB5PVwiMFwiIHJ4PVwiNFwiIHdpZHRoPVwiMTUlXCIgaGVpZ2h0PVwiOFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZzpyZWN0IHg9XCIzNSVcIiB5PVwiMjBcIiByeD1cIjRcIiB3aWR0aD1cIjI1JVwiIGhlaWdodD1cIjE2XCIgLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmc6cmVjdCB4PVwiMFwiIHk9XCI2MFwiIHJ4PVwiNFwiIHdpZHRoPVwiMTUlXCIgaGVpZ2h0PVwiOFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZzpyZWN0IHg9XCIwXCIgeT1cIjgwXCIgcng9XCI0XCIgd2lkdGg9XCIyNSVcIiBoZWlnaHQ9XCIxNlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLXNrZWxldG9uPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvZmQtYnVzeS1pbmRpY2F0b3I+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9mb3JtPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzZWxlY3Rpb25Db250ZW50PlxuICAgIDxmZC1idXN5LWluZGljYXRvclxuICAgICAgICBbbG9hZGluZ109XCJsb2FkaW5nU3RhdGUgJiYgX2ZpcnN0TG9hZGluZ0RvbmVcIlxuICAgICAgICBbYmxvY2tdPVwidHJ1ZVwiXG4gICAgICAgIGNsYXNzPVwiZmRwLXZhbHVlLWhlbHAtZGlhbG9nX190YWJsZS1idXN5LWluZGljYXRvclwiXG4gICAgPlxuICAgICAgICA8ZmRwLXNlbGVjdC10YWJcbiAgICAgICAgICAgIFtzZWxlY3RlZF09XCJzZWxlY3RlZEl0ZW1zXCJcbiAgICAgICAgICAgIFtsb2FkaW5nXT1cImxvYWRpbmdTdGF0ZSAmJiAhX2ZpcnN0TG9hZGluZ0RvbmVcIlxuICAgICAgICAgICAgW3VpZF09XCJpZFwiXG4gICAgICAgICAgICBbZGlzcGxheWVkRGF0YV09XCJfZGlzcGxheWVkRGF0YVwiXG4gICAgICAgICAgICBbdGFiVGl0bGVdPVwic2VsZWN0VGFiVGl0bGUgfHwgKCdwbGF0Zm9ybVZIRC5zZWxlY3RUYWJUaXRsZScgfCBmZFRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgW21vYmlsZV09XCJtb2JpbGVcIlxuICAgICAgICAgICAgW3NlbGVjdGlvbl09XCJzZWFyY2hTZWxlY3Rpb25cIlxuICAgICAgICAgICAgW2VtcHR5VGFibGVNZXNzYWdlXT1cInNlYXJjaFRhYmxlRW1wdHlNZXNzYWdlIHx8ICgncGxhdGZvcm1WSEQuc2VhcmNoVGFibGVFbXB0eU1lc3NhZ2UnIHwgZmRUcmFuc2xhdGUpXCJcbiAgICAgICAgICAgIFt1bmlxdWVLZXldPVwidW5pcXVlS2V5XCJcbiAgICAgICAgICAgIFtwYWdlU2l6ZV09XCJzZWFyY2hUYWJsZVBhZ2VTaXplXCJcbiAgICAgICAgICAgIFtkZWZhdWx0TW9iaWxlSGVhZGVyc109XCJzZWFyY2hUYWJsZU1vYmlsZUhlYWRlcnNcIlxuICAgICAgICAgICAgW2ZpbHRlcnNdPVwiX2Rpc3BsYXllZEZpbHRlcnNcIlxuICAgICAgICAgICAgW2FsbG93U2VsZWN0QWxsXT1cImFsbG93U2VsZWN0QWxsXCJcbiAgICAgICAgICAgIChzZWxlY3QpPVwib25TZWxlY3QoJGV2ZW50KVwiXG4gICAgICAgID48L2ZkcC1zZWxlY3QtdGFiPlxuICAgIDwvZmQtYnVzeS1pbmRpY2F0b3I+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2RlZmluZUNvbmRpdGlvbnNDb250ZW50PlxuICAgIDxkaXYgZmQtc2Nyb2xsYmFyIFtvdmVycmlkZVRhYmluZGV4XT1cImZhbHNlXCI+XG4gICAgICAgIDxmZHAtZGVmaW5lLXRhYlxuICAgICAgICAgICAgW3N0cmF0ZWd5TGFiZWxzXT1cImRlZmluZVN0cmF0ZWd5TGFiZWxzXCJcbiAgICAgICAgICAgIFtjb25kaXRpb25zXT1cImNvbmRpdGlvbkl0ZW1zXCJcbiAgICAgICAgICAgIFt1aWRdPVwiaWRcIlxuICAgICAgICAgICAgW3RhYlRpdGxlXT1cImRlZmluZVRhYlRpdGxlIHx8ICgncGxhdGZvcm1WSEQuZGVmaW5lVGFiVGl0bGUnIHwgZmRUcmFuc2xhdGUpXCJcbiAgICAgICAgICAgIFttb2JpbGVdPVwibW9iaWxlXCJcbiAgICAgICAgICAgIChjb25kaXRpb25DaGFuZ2UpPVwib25Db25kaXRpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgID48L2ZkcC1kZWZpbmUtdGFiPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNkaWFsb2dUaXRsZVRleHQ+XG4gICAgPGg1IFthdHRyLmlkXT1cImhlYWRlcklkXCIgZmQtdGl0bGU+e3sgZGlhbG9nVGl0bGUgfX08L2g1PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN0YWJMaW5rIGxldC10aXRsZT1cInRpdGxlXCIgbGV0LXR5cGU9XCJ0eXBlXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkVGFiID09PSB0eXBlICYmIHNob3dTZWxlY3Rpb25UYWIgJiYgc2hvd0RlZmluZVRhYlwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgIGdseXBoPVwibmF2aWdhdGlvbi1sZWZ0LWFycm93XCJcbiAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgIChjbGljayk9XCJzd2l0Y2hUYWIoKVwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiJ3BsYXRmb3JtVkhELnNlbGVjdE1vYmlsZVRhYkJhY2tCdG5UaXRsZScgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgPGg1IGZkLXRpdGxlPnt7IHRpdGxlIH19PC9oNT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRUYWIgIT09IHR5cGVcIj5cbiAgICAgICAgPGFcbiAgICAgICAgICAgIGZkLWxpc3QtbGlua1xuICAgICAgICAgICAgKGNsaWNrKT1cInN3aXRjaFRhYih0eXBlKVwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiJ3BsYXRmb3JtVkhELnNlbGVjdE1vYmlsZVRhYkJ0bk9wZW5EaWFsb2dMYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGU+e3sgdGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8aSBmZC1saXN0LWljb24gZ2x5cGg9XCJuYXZpZ2F0aW9uLXJpZ2h0LWFycm93XCI+PC9pPlxuICAgICAgICA8L2E+XG4gICAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2FkdmFuY2VkSGVhZGVyPlxuICAgIDxidXR0b24gZmQtYnV0dG9uIGdseXBoPVwibmF2aWdhdGlvbi1sZWZ0LWFycm93XCIgZmRUeXBlPVwidHJhbnNwYXJlbnRcIiAoY2xpY2spPVwidG9nZ2xlQWR2YW5jZWRTZWFyY2goKVwiPjwvYnV0dG9uPlxuICAgIDxoNSBmZC10aXRsZT57eyAncGxhdGZvcm1WSEQuc2VhcmNoQWR2YW5jZWRTZWFyY2hMYWJlbCcgfCBmZFRyYW5zbGF0ZSB9fTwvaDU+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2Rlc2t0b3BEaWFsb2dUaXRsZT5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGlhbG9nVGl0bGVUZXh0XCI+PC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRlc2t0b3BUYWJzXCI+PC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI21vYmlsZURpYWxvZ1RpdGxlPlxuICAgIDxkaXYgY2xhc3M9XCJmZHAtdmFsdWUtaGVscC1kaWFsb2dfX21vYmlsZS10aXRsZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGFzU2VsZWN0ZWRUYWI7IGVsc2UgZGlhbG9nVGl0bGVUZXh0XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2VsZWN0ZWRUYWJIZWFkZXJcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1vYmlsZVRhYnNcIj48L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGVza3RvcFRhYnM+XG4gICAgPG5hdiBmZC10YWItbmF2IGNsYXNzPVwiZmRwLXZhbHVlLWhlbHAtZGlhbG9nX190YWJzXCIgKm5nSWY9XCJzaG93U2VsZWN0aW9uVGFiICYmIHNob3dEZWZpbmVUYWJcIj5cbiAgICAgICAgPGRpdiBmZC10YWItaXRlbSAoY2xpY2spPVwic3dpdGNoVGFiKF90YWJUeXBlcy5zZWxlY3RGcm9tTGlzdClcIiAqbmdJZj1cInNob3dTZWxlY3Rpb25UYWJcIj5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgZmQtdGFiLWxpbmtcbiAgICAgICAgICAgICAgICBbYWN0aXZlXT1cInNlbGVjdGVkVGFiID09PSBfdGFiVHlwZXMuc2VsZWN0RnJvbUxpc3RcIlxuICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCJzZWxlY3RlZFRhYiA9PT0gX3RhYlR5cGVzLnNlbGVjdEZyb21MaXN0ID8gJzAnIDogJy0xJ1wiXG4gICAgICAgICAgICAgICAgPjxzcGFuIGZkLXRhYi10YWc+e3sgc2VsZWN0VGFiVGl0bGUgfHwgKCdwbGF0Zm9ybVZIRC5zZWxlY3RUYWJUaXRsZScgfCBmZFRyYW5zbGF0ZSkgfX08L3NwYW4+PC9hXG4gICAgICAgICAgICA+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGZkLXRhYi1pdGVtIChjbGljayk9XCJzd2l0Y2hUYWIoX3RhYlR5cGVzLmRlZmluZUNvbmRpdGlvbnMpXCIgKm5nSWY9XCJzaG93RGVmaW5lVGFiXCI+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIGZkLXRhYi1saW5rXG4gICAgICAgICAgICAgICAgW2FjdGl2ZV09XCJzZWxlY3RlZFRhYiA9PT0gX3RhYlR5cGVzLmRlZmluZUNvbmRpdGlvbnNcIlxuICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCJzZWxlY3RlZFRhYiA9PT0gX3RhYlR5cGVzLmRlZmluZUNvbmRpdGlvbnMgPyAnMCcgOiAnLTEnXCJcbiAgICAgICAgICAgICAgICA+PHNwYW4gZmQtdGFiLXRhZz57eyBkZWZpbmVUYWJUaXRsZSB8fCAoJ3BsYXRmb3JtVkhELmRlZmluZVRhYlRpdGxlJyB8IGZkVHJhbnNsYXRlKSB9fTwvc3Bhbj48L2FcbiAgICAgICAgICAgID5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uYXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI21vYmlsZVRhYnM+XG4gICAgPGRpdiAqbmdJZj1cIiFoYXNTZWxlY3RlZFRhYiAmJiBzaG93U2VsZWN0aW9uVGFiICYmIHNob3dEZWZpbmVUYWJcIj5cbiAgICAgICAgPGRpdiBmZC1iYXIgW2luUGFnZV09XCJ0cnVlXCIgKm5nSWY9XCJzaG93U2VsZWN0aW9uVGFiXCI+XG4gICAgICAgICAgICA8ZGl2IGZkLWJhci1sZWZ0PlxuICAgICAgICAgICAgICAgIDxmZC1iYXItZWxlbWVudD5cbiAgICAgICAgICAgICAgICAgICAge3sgc2VsZWN0VGFiVGl0bGUgfHwgKCdwbGF0Zm9ybVZIRC5zZWxlY3RUYWJUaXRsZScgfCBmZFRyYW5zbGF0ZSkgfX1cbiAgICAgICAgICAgICAgICA8L2ZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGZkLWJhci1yaWdodD5cbiAgICAgICAgICAgICAgICA8ZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxmZC1idXR0b24tYmFyXG4gICAgICAgICAgICAgICAgICAgICAgICBnbHlwaD1cIm5hdmlnYXRpb24tcmlnaHQtYXJyb3dcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInN3aXRjaFRhYihfdGFiVHlwZXMuc2VsZWN0RnJvbUxpc3QpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGxhdGZvcm1WSEQuc2VsZWN0TW9iaWxlVGFiVGl0bGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZmRUcmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogeyB0aXRsZTogc2VsZWN0VGFiVGl0bGUgfHwgKCdwbGF0Zm9ybVZIRC5zZWxlY3RUYWJUaXRsZScgfCBmZFRyYW5zbGF0ZSkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgICAgICAgICA8L2ZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGZkLWJhciBbaW5QYWdlXT1cInRydWVcIiAqbmdJZj1cInNob3dEZWZpbmVUYWJcIj5cbiAgICAgICAgICAgIDxkaXYgZmQtYmFyLWxlZnQ+XG4gICAgICAgICAgICAgICAgPGZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgICAgICAgICB7eyBkZWZpbmVUYWJUaXRsZSB8fCAoJ3BsYXRmb3JtVkhELmRlZmluZVRhYlRpdGxlJyB8IGZkVHJhbnNsYXRlKSB9fVxuICAgICAgICAgICAgICAgIDwvZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgZmQtYmFyLXJpZ2h0PlxuICAgICAgICAgICAgICAgIDxmZC1iYXItZWxlbWVudD5cbiAgICAgICAgICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGdseXBoPVwibmF2aWdhdGlvbi1yaWdodC1hcnJvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BsYXRmb3JtVkhELnNlbGVjdE1vYmlsZVRhYlRpdGxlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZkVHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHsgdGl0bGU6IGRlZmluZVRhYlRpdGxlIHx8ICgncGxhdGZvcm1WSEQuZGVmaW5lVGFiVGl0bGUnIHwgZmRUcmFuc2xhdGUpIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic3dpdGNoVGFiKF90YWJUeXBlcy5kZWZpbmVDb25kaXRpb25zKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9mZC1idXR0b24tYmFyPlxuICAgICAgICAgICAgICAgIDwvZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3NlbGVjdGVkVGFiSGVhZGVyPlxuICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInNlbGVjdGVkVGFiXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIl90YWJUeXBlcy5zZWxlY3RGcm9tTGlzdFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgIHRhYkxpbms7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBzZWxlY3RUYWJUaXRsZSB8fCAoJ3BsYXRmb3JtVkhELnNlbGVjdFRhYlRpdGxlJyB8IGZkVHJhbnNsYXRlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IHNlbGVjdGVkVGFiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiX3RhYlR5cGVzLmFkdmFuY2VkU2VhcmNoXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYWR2YW5jZWRIZWFkZXJcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIl90YWJUeXBlcy5kZWZpbmVDb25kaXRpb25zXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgdGFiTGluaztcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGRlZmluZVRhYlRpdGxlIHx8ICgncGxhdGZvcm1WSEQuZGVmaW5lVGFiVGl0bGUnIHwgZmRUcmFuc2xhdGUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogc2VsZWN0ZWRUYWJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNjb25kaXRpb25WYWx1ZSBsZXQtaXRlbT1cIml0ZW1cIj5cbiAgICA8c3BhbiAqbmdJZj1cIml0ZW0uc3RyYXRlZ3kgIT09ICdlbXB0eScgJiYgaXRlbS5zdHJhdGVneSAhPT0gJ25vdF9lbXB0eSc7IGVsc2UgZW1wdHlDb25kaXRpb25cIj5cbiAgICAgICAge3sgaXRlbSB8IGRpc3BsYXlGblBpcGUgOiBjb25kaXRpb25EaXNwbGF5Rm4gOiBfZGlzcGxheWVkRmlsdGVycyB9fVxuICAgIDwvc3Bhbj5cbiAgICA8bmctdGVtcGxhdGUgI2VtcHR5Q29uZGl0aW9uPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5zdHJhdGVneSA9PT0gJ25vdF9lbXB0eSc7IGVsc2UgZW1wdHlDb25kaXRpb25UZXh0XCI+XG4gICAgICAgICAgICAhKDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlbXB0eUNvbmRpdGlvblRleHRcIj48L25nLWNvbnRhaW5lcj4pXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2VtcHR5Q29uZGl0aW9uVGV4dD4gJmx0O3t7ICdwbGF0Zm9ybVZIRC5zZWxlY3RNb2JpbGVDb25kaXRpb25FbXB0eScgfCBmZFRyYW5zbGF0ZSB9fSZndDsgPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
620
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUtaGVscC1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL3ZhbHVlLWhlbHAtZGlhbG9nL3ZhbHVlLWhlbHAtZGlhbG9nL3ZhbHVlLWhlbHAtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi92YWx1ZS1oZWxwLWRpYWxvZy92YWx1ZS1oZWxwLWRpYWxvZy92YWx1ZS1oZWxwLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFHTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFFVCxXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5RCxPQUFPLEVBQUUsWUFBWSxFQUFhLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDaEUsT0FBTyxFQUNILDhCQUE4QixFQUU5QixtQ0FBbUMsRUFHbkMsd0JBQXdCLEVBQ3hCLHdCQUF3QixFQUV4QixNQUFNLEVBR1QsTUFBTSxXQUFXLENBQUM7QUFDbkIsT0FBTyxFQUFFLFlB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QUtOLHdCQUF3QjtzQkFEdkIsS0FBSztnQkFLTixzQkFBc0I7c0JBRHJCLEtBQUs7Z0JBS04sT0FBTztzQkFETixLQUFLO2dCQVFOLGNBQWM7c0JBRGIsS0FBSztnQkFLTixjQUFjO3NCQURiLEtBQUs7Z0JBT04sb0JBQW9CO3NCQURuQixLQUFLO2dCQXFCTixXQUFXO3NCQURWLE1BQU07Z0JBS0csZUFBZTtzQkFBeEIsTUFBTTtnQkFJRyxjQUFjO3NCQUF2QixNQUFNO2dCQUlQLE9BQU87c0JBRE4sZUFBZTt1QkFBQyxrQkFBa0I7Z0JBS25DLFNBQVM7c0JBRFIsZUFBZTt1QkFBQywyQkFBMkI7Z0JBSzVDLGVBQWU7c0JBRGQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZyAqL1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzT2JzZXJ2YWJsZSwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCB0YWtlLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRGlhbG9nQ29uZmlnLCBEaWFsb2dSZWYsIERpYWxvZ1NlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGlhbG9nJztcbmltcG9ydCB7IFJ0bFNlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBpc0RhdGFTb3VyY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NoYXJlZCc7XG5pbXBvcnQge1xuICAgIEFycmF5VmFsdWVIZWxwRGlhbG9nRGF0YVNvdXJjZSxcbiAgICBCYXNlRW50aXR5LFxuICAgIE9ic2VydmFibGVWYWx1ZUhlbHBEaWFsb2dEYXRhU291cmNlLFxuICAgIFZhbHVlSGVscERpYWxvZ0RhdGFTb3VyY2UsXG4gICAgVmRoVGFibGVTZWxlY3Rpb24sXG4gICAgVmhkRGVmaW5lRXhjbHVkZVN0cmF0ZWd5LFxuICAgIFZoZERlZmluZUluY2x1ZGVTdHJhdGVneSxcbiAgICBWaGRGaWx0ZXIsXG4gICAgVmhkVGFiLFxuICAgIFZoZFZhbHVlLFxuICAgIFZoZFZhbHVlQ2hhbmdlRXZlbnRcbn0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IFZoZENvbXBvbmVudCB9IGZyb20gJy4uL21vZGVscy92aGQtY29tcG9uZW50Lm1vZGVsJztcbmltcG9ydCB7IGRlZmF1bHRDb25kaXRpb25EaXNwbGF5Rm4gfSBmcm9tICcuLi9jb25zdGFucy9jb25kaXRpb24tZGlzcGxheS5mdW5jdGlvbic7XG5pbXBvcnQgeyBWaGRGaWx0ZXJDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL3ZhbHVlLWhlbHAtZGlhbG9nLWZpbHRlci92YWx1ZS1oZWxwLWRpYWxvZy1maWx0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFZhbHVlSGVscENvbHVtbkRlZkRpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvdmFsdWUtaGVscC1jb2x1bW4tZGVmLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5leHBvcnQgdHlwZSBGZHBWYWx1ZUhlbHBEaWFsb2dEYXRhU291cmNlPFQ+ID1cbiAgICB8IFZhbHVlSGVscERpYWxvZ0RhdGFTb3VyY2U8VD5cbiAgICB8IEFycmF5VmFsdWVIZWxwRGlhbG9nRGF0YVNvdXJjZTxUPlxuICAgIHwgT2JzZXJ2YWJsZVZhbHVlSGVscERpYWxvZ0RhdGFTb3VyY2U8VD47XG5cbmxldCB2aGlVbmlxdWVJZCA9IDA7XG5sZXQgdmhkSGVhZGVyVW5pcXVlSWQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC12YWx1ZS1oZWxwLWRpYWxvZycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3ZhbHVlLWhlbHAtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi92YWx1ZS1oZWxwLWRpYWxvZy5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFZoZENvbXBvbmVudCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBQbGF0Zm9ybVZhbHVlSGVscERpYWxvZ0NvbXBvbmVudFxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBQbGF0Zm9ybVZhbHVlSGVscERpYWxvZ0NvbXBvbmVudDxUID0gYW55PiBleHRlbmRzIFZoZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICAvKiogSWQgb2YgdGhlIHBvcG92ZXIgKi9cbiAgICBASW5wdXQoKVxuICAgIGlkOiBzdHJpbmcgPSAnZmRwLXZoZC0nICsgdmhpVW5pcXVlSWQrKztcblxuICAgIC8qKiBJbml0aWFsIHN0YXRlIG9mIFZhbHVlIGhlbHAgZGlhbG9nICovXG4gICAgQElucHV0KClcbiAgICB2YWx1ZTogVmhkVmFsdWU8VD4gPSB7XG4gICAgICAgIHNlbGVjdGVkOiBbXSxcbiAgICAgICAgY29uZGl0aW9uczogW11cbiAgICB9O1xuXG4gICAgLyoqIERpYWxvZyB0aXRsZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlhbG9nVGl0bGU6IHN0cmluZztcblxuICAgIC8qKiBTZWxlY3QgZnJvbSBsaXN0IHRhYiBhY3RpdmF0aW9uICovXG4gICAgQElucHV0KClcbiAgICBpbml0aWFsVGFiID0gVmhkVGFiLnNlbGVjdEZyb21MaXN0O1xuXG4gICAgLyoqIFZpc2libGUgdGFicyAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGFiczogJ2JvdGgnIHwgJ3NlbGVjdCcgfCAnZGVmaW5lJyA9ICdib3RoJztcblxuICAgIC8qKiBJbml0aWFsIGV4cGFuZCBzdGF0ZSBmb3IgYWR2YW5jZWQgc2VhcmNoIHBhbmVsICovXG4gICAgQElucHV0KClcbiAgICBpc09wZW5BZHZhbmNlZCA9IGZhbHNlO1xuXG4gICAgLyoqIERhdGEgc291cmNlICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZGF0YVNvdXJjZSh2YWx1ZTogRmRwVmFsdWVIZWxwRGlhbG9nRGF0YVNvdXJjZTxhbnk+IHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0YVNvdXJjZSA9IHRoaXMudG9EYXRhU3RyZWFtKHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgZGF0YVNvdXJjZSgpOiBGZHBWYWx1ZUhlbHBEaWFsb2dEYXRhU291cmNlPGFueT4gfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YVNvdXJjZTtcbiAgICB9XG5cbiAgICAvKiogRGlhbG9nJ3MgY3VzdG9tIGNvbmZpZyAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlhbG9nQ29uZmlnOiBEaWFsb2dDb25maWcgPSB7fTtcblxuICAgIC8qKiBVbmlxdWUga2V5IGZyb20gdGhlIHNvdXJjZSBmaWVsZCBuYW1lcy4gUmVxdWlyZWQgZmllbGQuICovXG4gICAgQElucHV0KClcbiAgICB1bmlxdWVLZXk6IHN0cmluZztcblxuICAgIC8qKiBJZCBhdHRyaWJ1dGUgZm9yIGRpYWxvZyB0aXRsZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgaGVhZGVySWQgPSBgZmQtdmhkLWhlYWRlci1pZC0ke3ZoZEhlYWRlclVuaXF1ZUlkKyt9YDtcblxuICAgIC8qKiBGaWVsZCBuYW1lIGZvciBkZWZhdWx0IHJlbmRlciBmcm9tIGRhdGEuXG4gICAgICogUmVxdWlyZWQgZmllbGQgaWYgdG9rZW5pemVyRm4gaXMgbm90IGV4aXN0LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgdG9rZW5WaWV3RmllbGQ6IHN0cmluZztcblxuICAgIC8qKiBUb2tlbml6ZXIgZnVuY3Rpb24gZm9yIGN1c3RvbSB0b2tlbiByZW5kZXIsIGl0IGhhcyBoaWdoZXIgcHJpbyB0aGF0IGB0b2tlblZpZXdGaWVsZGAuXG4gICAgICogUmVxdWlyZWQgZmllbGQgaWYgdG9rZW5WaWV3RmllbGQgaXMgbm90IGV4aXN0LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgdG9rZW5pemVyRm46IChpdGVtOiBUKSA9PiBzdHJpbmc7XG5cbiAgICAvKiogV2hldGhlciB0aGUgdmFsdWUgaGVscCBkaWFsb2cgc2hvdWxkIGJlIHZpZXcgaW4gbW9iaWxlIG1vZGUgKi9cbiAgICBASW5wdXQoKVxuICAgIG1vYmlsZSA9IGZhbHNlO1xuXG4gICAgLyoqIEl0IHNob3VsZCBiZSBhYmxlIGlmIHlvdSB1c2UgbXVsdGlwbGUgc2VsZWN0aW9uICovXG4gICAgQElucHV0KClcbiAgICBmb3JtYXRUb2tlbjogKHZhbHVlOiBWaGRWYWx1ZUNoYW5nZUV2ZW50PFQ+KSA9PiB2b2lkO1xuXG4gICAgLyoqIFRva2VuaXplciBmdW5jdGlvbiBmb3IgY29uZGl0aW9uJ3MgdG9rZW4gcmVuZGVyICovXG4gICAgQElucHV0KClcbiAgICBjb25kaXRpb25EaXNwbGF5Rm4gPSBkZWZhdWx0Q29uZGl0aW9uRGlzcGxheUZuO1xuXG4gICAgLyoqIFZhbGlkYXRvciBmdW5jdGlvbi4gQ2FsbGVkIHdoZW4gdXNlciBzdWJtaXRzIFZIRCBkaWFsb2cuICovXG4gICAgQElucHV0KClcbiAgICB0b2tlblZhbGlkYXRvcjogKCh2YWx1ZTogVmhkVmFsdWVDaGFuZ2VFdmVudDxhbnk+KSA9PiBPYnNlcnZhYmxlPGJvb2xlYW4+IHwgYm9vbGVhbikgfCB1bmRlZmluZWQ7XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgaTE4biBjYXBhYmlsaXRpZXMgaW5zdGVhZFxuICAgICAqIFNlbGVjdCBmcm9tIGxpc3QgdGFiJ3MgYW5kIFNlYXJjaCB0YWJsZSBzZXR0aW5nc1xuICAgICAqICovXG4gICAgQElucHV0KClcbiAgICBzZWxlY3RUYWJUaXRsZTogc3RyaW5nO1xuXG4gICAgLyoqIFNlbGVjdGlvbiBtb2RlIGZvciBzZWFyY2ggdGFibGUgKi9cbiAgICBASW5wdXQoKVxuICAgIHNlYXJjaFNlbGVjdGlvbjogVmRoVGFibGVTZWxlY3Rpb24gPSAnbXVsdGknO1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGkxOG4gY2FwYWJpbGl0aWVzIGluc3RlYWRcbiAgICAgKiBUZXh0IGRpc3BsYXllZCB3aGVuIHRhYmxlIGhhcyBubyBpdGVtcy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNlYXJjaFRhYmxlRW1wdHlNZXNzYWdlOiBzdHJpbmc7XG5cbiAgICAvKiogSXRlbXMgcGVyIHBhZ2UgZm9yIHBhZ2luYXRpb24gYmVsb3cgc2VhcmNoIHRhYmxlICovXG4gICAgQElucHV0KClcbiAgICBzZWFyY2hUYWJsZVBhZ2VTaXplID0gMjA7XG5cbiAgICAvKiogQ291bnQgb2YgZGVmYXVsdCBtb2JpbGUgaGVhZGVyIGZyb20gc2VhcmNoIHRhYmxlICovXG4gICAgQElucHV0KClcbiAgICBzZWFyY2hUYWJsZU1vYmlsZUhlYWRlcnMgPSAyO1xuXG4gICAgLyoqIE1heCBzaG93biBpbml0aWFsIGZpbHRlcnMgb24gb3Blbi4gRGVza3RvcCBvbmx5ICovXG4gICAgQElucHV0KClcbiAgICBtYXhTaG93bkluaXRpYWxGaWx0ZXJzID0gNDtcblxuICAgIC8qKiBMb2FkaW5nIHN0YXRlICovXG4gICAgQElucHV0KClcbiAgICBsb2FkaW5nOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGkxOG4gY2FwYWJpbGl0aWVzIGluc3RlYWRcbiAgICAgKiBEZWZpbmUgY29uZGl0aW9ucyB0YWIncyBzZXR0aW5nc1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGVmaW5lVGFiVGl0bGU6IHN0cmluZztcblxuICAgIC8qKiBXaGV0aGVyIHRvIGFsbG93IHVzZXJzIHRvIHNlbGVjdCBhbGwgdGFibGUgZW50cmllcyB3aXRoIG9uZSBjaGVja2JveC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFsbG93U2VsZWN0QWxsID0gdHJ1ZTtcblxuICAgIC8qKiBDdXN0b20gc3RyYXRlZ2llcyBsYWJlbHNcbiAgICAgKiBBbGxvd2VkIGtleXM6IGNvbnRhaW5zLCBlcXVhbFRvLCBiZXR3ZWVuLCBzdGFydHNXaXRoLCBlbmRzV2l0aCwgbGVzc1RoYW4sIGxlc3NUaGFuRXF1YWwsIGdyZWF0ZXJUaGFuLCBncmVhdGVyVGhhbkVxdWFsLCBlbXB0eVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGVmaW5lU3RyYXRlZ3lMYWJlbHM6IHtcbiAgICAgICAgW2tleSBpbiBrZXlvZiAodHlwZW9mIFZoZERlZmluZUluY2x1ZGVTdHJhdGVneSB8IHR5cGVvZiBWaGREZWZpbmVFeGNsdWRlU3RyYXRlZ3kpXT86IHN0cmluZztcbiAgICB9ID0ge1xuICAgICAgICBjb250YWluczogJ2NvbnRhaW5zJyxcbiAgICAgICAgZXF1YWxUbzogJ2VxdWFsIHRvJyxcbiAgICAgICAgYmV0d2VlbjogJ2JldHdlZW4nLFxuICAgICAgICBzdGFydHNXaXRoOiAnc3RhcnRzIHdpdGgnLFxuICAgICAgICBlbmRzV2l0aDogJ2VuZHMgd2l0aCcsXG4gICAgICAgIGxlc3NUaGFuOiAnbGVzcyB0aGFuJyxcbiAgICAgICAgbGVzc1RoYW5FcXVhbDogJ2xlc3MgdGhhbiBvciBlcXVhbCB0bycsXG4gICAgICAgIGdyZWF0ZXJUaGFuOiAnZ3JlYXRlciB0aGFuJyxcbiAgICAgICAgZ3JlYXRlclRoYW5FcXVhbDogJ2dyZWF0ZXIgdGhhbiBvciBlcXVhbCB0bycsXG4gICAgICAgIGVtcHR5OiAnZW1wdHknLFxuICAgICAgICBub3RfZXF1YWxUbzogJ25vdCBlcXVhbCB0bycsXG4gICAgICAgIG5vdF9lbXB0eTogJ25vdCBlbXB0eSdcbiAgICB9O1xuXG4gICAgLyoqIERpYWxvZyBvdXRwdXRzICovXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBmaWx0ZXJzL3Rva2VucyB3ZXJlIGNoYW5nZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFZoZFZhbHVlQ2hhbmdlRXZlbnQ8VD4+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIGRhdGEgbG9hZGluZyBpcyBzdGFydGVkLiAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIEBPdXRwdXQoKSBvbkRhdGFSZXF1ZXN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIGRhdGEgbG9hZGluZyBpcyBmaW5pc2hlZC4gKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXhcbiAgICBAT3V0cHV0KCkgb25EYXRhUmVjZWl2ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiBGaXRsZXJzIGZvciBzZWFyY2ggdGFibGUgYW5kIGRlZmluY2UgY29uZGl0aW9ucyAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oVmhkRmlsdGVyQ29tcG9uZW50KVxuICAgIGZpbHRlcnM6IFF1ZXJ5TGlzdDxWaGRGaWx0ZXJDb21wb25lbnQ+O1xuXG4gICAgLyoqIENvbHVtbiBkZWZpbml0aW9ucy4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKFZhbHVlSGVscENvbHVtbkRlZkRpcmVjdGl2ZSlcbiAgICBjb2x1bW5EZWY6IFF1ZXJ5TGlzdDxWYWx1ZUhlbHBDb2x1bW5EZWZEaXJlY3RpdmU+O1xuXG4gICAgLyoqIEBoaWRkZW4gSW50ZXJuYWwgY29udGFpbmVyIGZvciBkaWFsb2cgKi9cbiAgICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gICAgZGlhbG9nQ29udGFpbmVyOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBhY3RpdmVEaWFsb2c/OiBEaWFsb2dSZWY7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90YWJUeXBlcyA9IFZoZFRhYjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2hhc0FkdmFuY2VkID0gdHJ1ZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2hhc0RlZmluZUZpbHRlcnMgPSB0cnVlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZGlzcGxheWVkRmlsdGVyczogVmhkRmlsdGVyW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2Rpc3BsYXllZERhdGE6IFRbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfbWFpblNlYXJjaCA9ICcnO1xuXG4gICAgLyoqIGhhbmRsZXMgcnRsIHNlcnZpY2VcbiAgICAgKiBAaGlkZGVuICovXG4gICAgX2RpciA9ICdsdHInO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kZXN0cm95ZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kYXRhU291cmNlOiBGZHBWYWx1ZUhlbHBEaWFsb2dEYXRhU291cmNlPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICAvKiogQGhpZGRlbiBmb3IgZGF0YSBzb3VyY2UgaGFuZGxpbmcgKi9cbiAgICBwcml2YXRlIF9kc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbDtcblxuICAgIC8qKiBAaGlkZGVuIFByZXZpb3VzIHN0YXRlICovXG4gICAgcHJpdmF0ZSBfcHJldlN0YXRlOiBWaGRWYWx1ZTxUPiA9IHtcbiAgICAgICAgc2VsZWN0ZWQ6IFtdLFxuICAgICAgICBjb25kaXRpb25zOiBbXVxuICAgIH07XG4gICAgLyoqIEBoaWRkZW4gQ3VycmVudCBkYXRhIGZvciBsb2NhbCBtYW51cHVsYXRpb24gKi9cbiAgICBwcml2YXRlIF9jdXJyZW50VmFsdWU6IFZoZFZhbHVlPFQ+ID0ge1xuICAgICAgICBzZWxlY3RlZDogW10sXG4gICAgICAgIGNvbmRpdGlvbnM6IFtdXG4gICAgfTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2VsZWN0ZWRUYWI6IFZoZFRhYiB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzaG93bkZpbHRlckNvdW50ID0gSW5maW5pdHk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBsb2FkaW5nU3RhdGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRpbmcgPz8gdGhpcy5faW50ZXJuYWxMb2FkaW5nU3RhdGU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBUbyBkaWZmZXJlbnRpYXRlIGJldHdlZW4gZmlyc3QgbG9hZGluZyB3aGVuIHNrZWxldG9ucyBiZSBzaG93biBhbmQgc3Vic2VxdWVudCBsb2FkaW5ncyB3aGVuIGJ1c3kgaW5kaWNhdG9yIGJlIHNob3duXG4gICAgICovXG4gICAgX2ZpcnN0TG9hZGluZ0RvbmUgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaW50ZXJuYWxMb2FkaW5nU3RhdGUgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfb25EZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9kaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IF9ydGxTZXJ2aWNlOiBSdGxTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIC8qKiBEZWZhdWx0IGRpc3BsYXkgZnVuY3Rpb24gZm9yIGRlZmluZSBjb25kaXRpb25zICovXG4gICAgICAgIGlmICghdGhpcy5jb25kaXRpb25EaXNwbGF5Rm4gfHwgdHlwZW9mIHRoaXMuY29uZGl0aW9uRGlzcGxheUZuICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbkRpc3BsYXlGbiA9IGRlZmF1bHRDb25kaXRpb25EaXNwbGF5Rm47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBpc01vYmlsZUFkdmFuY2VkU2VhcmNoQWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5tb2JpbGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlzT3BlbkFkdmFuY2VkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBoYXNTZWxlY3RlZFRhYigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRUYWIgIT0gbnVsbCAmJiB0aGlzLnNlbGVjdGVkVGFiIGluIFZoZFRhYjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBzaG93U2VsZWN0aW9uVGFiKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy50YWJzICE9PSAnZGVmaW5lJztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBzaG93RGVmaW5lVGFiKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy50YWJzICE9PSAnc2VsZWN0JztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBpc1NlbGVjdGlvblRhYigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRUYWIgPT09IFZoZFRhYi5zZWxlY3RGcm9tTGlzdCB8fCB0aGlzLnNlbGVjdGVkVGFiID09PSBWaGRUYWIuYWR2YW5jZWRTZWFyY2g7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgc2VsZWN0ZWRJdGVtcygpOiBUW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudFZhbHVlLnNlbGVjdGVkIHx8IFtdO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGNvbmRpdGlvbkl0ZW1zKCk6IEJhc2VFbnRpdHlbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW50VmFsdWUuY29uZGl0aW9ucyB8fCBbXTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCB2YWxpZENvbmRpdGlvbnMoKTogQmFzZUVudGl0eVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldFZhbGlkQ29uZGl0aW9uKHRoaXMuY29uZGl0aW9uSXRlbXMpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGhhc1NlbGVjdGVkQW5kQ29uZGl0aW9ucygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIEJvb2xlYW4odGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCArIHRoaXMudmFsaWRDb25kaXRpb25zLmxlbmd0aCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgaXNTaG93QWxsRmlsdGVycygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVycy5sZW5ndGggPiB0aGlzLm1heFNob3duSW5pdGlhbEZpbHRlcnMgJiYgdGhpcy5zaG93bkZpbHRlckNvdW50ID4gdGhpcy5tYXhTaG93bkluaXRpYWxGaWx0ZXJzO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGlzT3BlbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5hY3RpdmVEaWFsb2c7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgaWYgKCdkYXRhU291cmNlJyBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZURTKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9yZXNldFN0YXRlKCk7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQubmV4dCgpO1xuICAgIH1cblxuICAgIC8qKiBPcGVuIGRpYWxvZyAqL1xuICAgIG9wZW4oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkT3B0aW9ucygpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BsZWFzZSBjaGVjayByZXF1aXJlZCBmaWVsZHMnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zYXZlUHJldmlvdXNTdGF0ZSgpO1xuICAgICAgICB0aGlzLl91cGRhdGVGaWx0ZXJzKCk7XG4gICAgICAgIHRoaXMuX2luaXRpYWxpemVEUygpO1xuICAgICAgICB0aGlzLl9pbml0aWFsaXplVGFiKCk7XG4gICAgICAgIGlmICghdGhpcy5kaWFsb2dDb25maWcuYXJpYUxhYmVsbGVkQnkpIHtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nQ29uZmlnLmFyaWFMYWJlbGxlZEJ5ID0gdGhpcy5oZWFkZXJJZDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFjdGl2ZURpYWxvZyA9IHRoaXMuX2RpYWxvZ1NlcnZpY2Uub3Blbih0aGlzLmRpYWxvZ0NvbnRhaW5lciwge1xuICAgICAgICAgICAgYmFja2Ryb3BDbGlja0Nsb3NlYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgICAgICAgIHZlcnRpY2FsUGFkZGluZzogZmFsc2UsXG4gICAgICAgICAgICBlc2NLZXlDbG9zZWFibGU6IGZhbHNlLFxuICAgICAgICAgICAgZGlhbG9nUGFuZWxDbGFzczogYGZkcC12YWx1ZS1oZWxwLWRpYWxvZyAke3RoaXMubW9iaWxlID8gJ2ZkcC12YWx1ZS1oZWxwLWRpYWxvZy1tb2JpbGUnIDogJyd9YCxcbiAgICAgICAgICAgIC4uLnRoaXMuZGlhbG9nQ29uZmlnLFxuXG4gICAgICAgICAgICBmdWxsU2NyZWVuOiB0aGlzLm1vYmlsZSxcbiAgICAgICAgICAgIG1heFdpZHRoOiB0aGlzLm1vYmlsZSA/IHVuZGVmaW5lZCA6ICc5MiUnLFxuICAgICAgICAgICAgd2lkdGg6IHRoaXMubW9iaWxlID8gdW5kZWZpbmVkIDogJzEwODBweCcsXG4gICAgICAgICAgICBoZWlnaHQ6IHRoaXMubW9iaWxlID8gdW5kZWZpbmVkIDogJzk4JSdcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2xpc3RlbkRpYWxvZ0V2ZW50cygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRvZ2dsZSBhZHZhbmNlZCBzZWFyY2ggcGFuZWxcbiAgICAgKi9cbiAgICB0b2dnbGVBZHZhbmNlZFNlYXJjaChzdGF0ZT86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKHR5cGVvZiBzdGF0ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuQWR2YW5jZWQgPSBzdGF0ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuQWR2YW5jZWQgPSAhdGhpcy5pc09wZW5BZHZhbmNlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm1vYmlsZSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRhYiA9IHRoaXMuaXNPcGVuQWR2YW5jZWQgPyBWaGRUYWIuYWR2YW5jZWRTZWFyY2ggOiBWaGRUYWIuc2VsZWN0RnJvbUxpc3Q7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbGVhciBhbGwgc2VsZWN0ZWQgaXRlbXNcbiAgICAgKi9cbiAgICBjbGVhclNlbGVjdGVkQW5kQ29uZGl0aW9uSXRlbXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRWYWx1ZS5zZWxlY3RlZCA9IFtdO1xuICAgICAgICB0aGlzLl9jdXJyZW50VmFsdWUuY29uZGl0aW9ucyA9IFtdO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogU2VhcmNoIGJ5IG9ubHkgdGhlIHNlYXJjaCB0ZXJtLiAqL1xuICAgIHNlYXJjaCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWx0ZXIodHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VhcmNoIGJ5IGFsbCBmaWxsZWQgZmlsdGVycywgaW5jbHVkaW5nIHRoZSBzZWFyY2ggdGVybS5cbiAgICAgKi9cbiAgICBmaWx0ZXIob25seVNlYXJjaCA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG5vbkVtcHR5RmlsdGVycyA9IG5ldyBNYXAoKTtcblxuICAgICAgICBpZiAoIW9ubHlTZWFyY2gpIHtcbiAgICAgICAgICAgIHRoaXMuX2Rpc3BsYXllZEZpbHRlcnNcbiAgICAgICAgICAgICAgICAuZmlsdGVyKCh7IHZhbHVlIH0pID0+XG4gICAgICAgICAgICAgICAgICAgICEhdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlLnRyaW0oKS5sZW5ndGggOiB2YWx1ZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5mb3JFYWNoKChlKSA9PiBub25FbXB0eUZpbHRlcnMuc2V0KGUua2V5LCBlLnZhbHVlKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fbWFpblNlYXJjaC5sZW5ndGgpIHtcbiAgICAgICAgICAgIG5vbkVtcHR5RmlsdGVycy5zZXQoJyonLCB0aGlzLl9tYWluU2VhcmNoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRhdGFTb3VyY2U/Lm1hdGNoKG5vbkVtcHR5RmlsdGVycyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXBwbHkgc2VhcmNoIGZyb20gYWR2YW5jZWQgZmlsdGVycyB2aWV3LCB1c2luZyB3aGVuIG1vYmlsZSB2aWV3IGlzIGFjdGl2ZVxuICAgICAqL1xuICAgIHNlYXJjaEFkdmFuY2VkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZpbHRlcigpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkVGFiID0gVmhkVGFiLnNlbGVjdEZyb21MaXN0O1xuICAgICAgICB0aGlzLmlzT3BlbkFkdmFuY2VkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqIFJlbW92ZSBpdGVtIGZyb20gc2VsZWN0ZWQgYXJyYXkgKi9cbiAgICByZW1vdmVTZWxlY3RlZChpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRWYWx1ZS5zZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIoKF8sIGkpID0+IGkgIT09IGluZGV4KTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlIGNvbmRpdGlvbiBpdGVtXG4gICAgICovXG4gICAgcmVtb3ZlQ29uZGl0aW9uKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY3VycmVudFZhbHVlLmNvbmRpdGlvbnMgPSB0aGlzLmNvbmRpdGlvbkl0ZW1zLmZpbHRlcigoXywgaSkgPT4gaSAhPT0gaW5kZXgpO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTd2l0Y2ggdGFiIGJ5IHR5cGVcbiAgICAgKi9cbiAgICBzd2l0Y2hUYWIodHlwZTogVmhkVGFiIHwgbnVsbCA9IG51bGwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRhYiA9IHR5cGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2UgZGlhbG9nIHdpdGggdmFsdWU7XG4gICAgICovXG4gICAgc3VjY2VzcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmFjdGl2ZURpYWxvZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHZhbHVlOiBWaGRWYWx1ZUNoYW5nZUV2ZW50ID0ge1xuICAgICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWRJdGVtcyxcbiAgICAgICAgICAgIGNvbmRpdGlvbnM6IHRoaXMudmFsaWRDb25kaXRpb25zXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5faW50ZXJuYWxMb2FkaW5nU3RhdGUgPSB0cnVlO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHRoaXMuX2dldFZhbGlkYXRvckZ1bmN0aW9uKHZhbHVlKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faW50ZXJuYWxMb2FkaW5nU3RhdGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGZpbHRlcigocikgPT4gciksXG4gICAgICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmZvcm1hdFRva2VuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybWF0VG9rZW4odmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZURpYWxvZz8uY2xvc2UodmFsdWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGlkZSBhZHZhbmNlZCBzZWFyY2ggb24gbW9iaWxlIHZpZXcgYW5kIGlmIGl0J3Mgb3BlbmVkXG4gICAgICogQ2xvc2UgZGlhbG9nIHdpdGggbnVsbCB2YWx1ZTtcbiAgICAgKi9cbiAgICBkaXNtaXNzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tb2JpbGUgJiYgdGhpcy5pc09wZW5BZHZhbmNlZCkge1xuICAgICAgICAgICAgdGhpcy5pc09wZW5BZHZhbmNlZCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5zd2l0Y2hUYWIoVmhkVGFiLnNlbGVjdEZyb21MaXN0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRWYWx1ZSA9IHRoaXMuX3ByZXZTdGF0ZTtcbiAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZURpYWxvZykge1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlRGlhbG9nLmNsb3NlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90cmFja0J5U2VsZWN0ZWRGbihfaW5kZXg6IG51bWJlciwgaXRlbTogVCk6IG51bWJlciB8IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBpdGVtICYmIGl0ZW1bdGhpcy51bmlxdWVLZXldO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RyYWNrQnlGaWx0ZXJGbihfaW5kZXg6IG51bWJlciwgaXRlbTogVmhkRmlsdGVyKTogbnVtYmVyIHwgc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0gJiYgaXRlbS5rZXk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdHJhY2tCeUNvbmRpdGlvbkZuKF9pbmRleDogbnVtYmVyLCBpdGVtOiBCYXNlRW50aXR5KTogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0gPyBpdGVtLnZhbHVlICsgaXRlbS52YWx1ZVRvICsgaXRlbS5zdHJhdGVneSArIGl0ZW0ua2V5IDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25TZWxlY3QoJGV2ZW50OiBUW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY3VycmVudFZhbHVlLnNlbGVjdGVkID0gJGV2ZW50O1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoU2VsZWN0aW9uID09PSAnb25jZScpIHtcbiAgICAgICAgICAgIHRoaXMuc3VjY2VzcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvbkNvbmRpdGlvbkNoYW5nZSgkZXZlbnQ6IEJhc2VFbnRpdHlbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jdXJyZW50VmFsdWUuY29uZGl0aW9ucyA9ICRldmVudDtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB0b2dnbGVTaG93bkZpbHRlcnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2hvd25GaWx0ZXJDb3VudCA9XG4gICAgICAgICAgICB0aGlzLm1heFNob3duSW5pdGlhbEZpbHRlcnMgPT09IHRoaXMuc2hvd25GaWx0ZXJDb3VudCA/IEluZmluaXR5IDogdGhpcy5tYXhTaG93bkluaXRpYWxGaWx0ZXJzO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaW5pdFNob3duRmlsdGVycygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zaG93bkZpbHRlckNvdW50ID0gdGhpcy5tYXhTaG93bkluaXRpYWxGaWx0ZXJzIHx8IEluZmluaXR5O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0VmFsaWRDb25kaXRpb24oaXRlbXM6IEJhc2VFbnRpdHlbXSA9IFtdKTogQmFzZUVudGl0eVtdIHtcbiAgICAgICAgcmV0dXJuIGl0ZW1zLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGl0ZW0uc3RyYXRlZ3kgPT09IFZoZERlZmluZUluY2x1ZGVTdHJhdGVneS5lbXB0eSB8fFxuICAgICAgICAgICAgICAgIGl0ZW0uc3RyYXRlZ3kgPT09IFZoZERlZmluZUV4Y2x1ZGVTdHJhdGVneS5ub3RfZW1wdHlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGl0ZW0uc3RyYXRlZ3kgPT09IFZoZERlZmluZUluY2x1ZGVTdHJhdGVneS5iZXR3ZWVuKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEJvb2xlYW4oaXRlbS52YWx1ZS5sZW5ndGggJiYgaXRlbS52YWx1ZVRvLmxlbmd0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWl0ZW0udmFsaWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gQm9vbGVhbihpdGVtLnZhbHVlLmxlbmd0aCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaW5pdGlhbGl6ZURTKGRzOiBGZHBWYWx1ZUhlbHBEaWFsb2dEYXRhU291cmNlPGFueT4gfCB1bmRlZmluZWQgPSB0aGlzLmRhdGFTb3VyY2UpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVzZXRTb3VyY2VTdHJlYW0oKTtcblxuICAgICAgICBpZiAodGhpcy5zaG93U2VsZWN0aW9uVGFiKSB7XG4gICAgICAgICAgICB0aGlzLl9kc1N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgICAgICAgICAgdGhpcy5fZHNTdWJzY3JpcHRpb24uYWRkKFxuICAgICAgICAgICAgICAgIGRzPy5vbkRhdGFSZXF1ZXN0ZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbnRlcm5hbExvYWRpbmdTdGF0ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25EYXRhUmVxdWVzdGVkLmVtaXQoKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgdGhpcy5fZHNTdWJzY3JpcHRpb24uYWRkKFxuICAgICAgICAgICAgICAgIGRzPy5vbkRhdGFSZWNlaXZlZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2ludGVybmFsTG9hZGluZ1N0YXRlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2ZpcnN0TG9hZGluZ0RvbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uRGF0YVJlY2VpdmVkLmVtaXQoKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgY29uc3QgZHNTdWIgPSB0aGlzLm9wZW5EYXRhU3RyZWFtKClcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Rpc3BsYXllZERhdGEgPSBkYXRhLnNsaWNlKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLl9kc1N1YnNjcmlwdGlvbi5hZGQoZHNTdWIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gU2F2ZSBwcmV2aW91cyBzdGF0ZSAqL1xuICAgIHByaXZhdGUgX3NhdmVQcmV2aW91c1N0YXRlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGNsb25lRGVlcCh0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy5fY3VycmVudFZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuX3ByZXZTdGF0ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaW5pdGlhbGl6ZVRhYigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubW9iaWxlKSB7XG4gICAgICAgICAgICB0aGlzLmlzT3BlbkFkdmFuY2VkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuc2hvd1NlbGVjdGlvblRhYiAmJiB0aGlzLnNob3dEZWZpbmVUYWIpIHtcbiAgICAgICAgICAgIHRoaXMuc3dpdGNoVGFiKHRoaXMubW9iaWxlID8gdW5kZWZpbmVkIDogdGhpcy5pbml0aWFsVGFiKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNob3dTZWxlY3Rpb25UYWIpIHtcbiAgICAgICAgICAgIHRoaXMuc3dpdGNoVGFiKFZoZFRhYi5zZWxlY3RGcm9tTGlzdCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zaG93RGVmaW5lVGFiKSB7XG4gICAgICAgICAgICB0aGlzLnN3aXRjaFRhYihWaGRUYWIuZGVmaW5lQ29uZGl0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faW5pdFNob3duRmlsdGVycygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuRGlhbG9nRXZlbnRzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuYWN0aXZlRGlhbG9nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hY3RpdmVEaWFsb2cuYWZ0ZXJDbG9zZWQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX3Jlc2V0U3RhdGUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZmlsdGVycy5jaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVGaWx0ZXJzKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLl9ydGxTZXJ2aWNlKSB7XG4gICAgICAgICAgICB0aGlzLl9kaXIgPSB0aGlzLl9ydGxTZXJ2aWNlLnJ0bC5nZXRWYWx1ZSgpID8gJ3J0bCcgOiAnbHRyJztcbiAgICAgICAgICAgIHRoaXMuX3J0bFNlcnZpY2UucnRsLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgoaXNSdGw6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9kaXIgPSBpc1J0bCA/ICdydGwnIDogJ2x0cic7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVzZXRTdGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZGVzdHJveWVkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fZGVzdHJveWVkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuX3Jlc2V0U291cmNlU3RyZWFtKCk7XG4gICAgICAgIHRoaXMuX21haW5TZWFyY2ggPSAnJztcbiAgICAgICAgdGhpcy5hY3RpdmVEaWFsb2cgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF91cGRhdGVGaWx0ZXJzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kaXNwbGF5ZWRGaWx0ZXJzID0gdGhpcy5maWx0ZXJzLm1hcCgoZSkgPT4gKHtcbiAgICAgICAgICAgIC4uLmUsXG4gICAgICAgICAgICBsYWJlbDogZS5sYWJlbCB8fCBlLmtleVxuICAgICAgICB9KSk7XG5cbiAgICAgICAgdGhpcy5faGFzQWR2YW5jZWQgPSB0aGlzLl9kaXNwbGF5ZWRGaWx0ZXJzLnNvbWUoKGU6IFZoZEZpbHRlcikgPT4gISFlLmFkdmFuY2VkKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgb3BlbkRhdGFTdHJlYW0oKTogT2JzZXJ2YWJsZTxUW10+IHtcbiAgICAgICAgaWYgKHRoaXMuX2RhdGFTb3VyY2UpIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGFTb3VyY2UubWF0Y2goKTtcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFTb3VyY2Uub3BlbigpO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgW2RhdGFTb3VyY2VdIHNvdXJjZSBkaWQgbm90IG1hdGNoIGFuIGFycmF5LCBPYnNlcnZhYmxlLCBvciBEYXRhU291cmNlYCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHRvRGF0YVN0cmVhbShkczogRmRwVmFsdWVIZWxwRGlhbG9nRGF0YVNvdXJjZTxUPik6IEZkcFZhbHVlSGVscERpYWxvZ0RhdGFTb3VyY2U8VD4gfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoaXNEYXRhU291cmNlKGRzKSkge1xuICAgICAgICAgICAgcmV0dXJuIGRzIGFzIFZhbHVlSGVscERpYWxvZ0RhdGFTb3VyY2U8VD47XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShkcykpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgQXJyYXlWYWx1ZUhlbHBEaWFsb2dEYXRhU291cmNlPFQ+KGRzKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc09ic2VydmFibGUoZHMpKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGVWYWx1ZUhlbHBEaWFsb2dEYXRhU291cmNlPFQ+KGRzIGFzIE9ic2VydmFibGU8VFtdPik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVzZXRTb3VyY2VTdHJlYW0oKTogdm9pZCB7XG4gICAgICAgIGlmIChpc0RhdGFTb3VyY2UodGhpcy5kYXRhU291cmNlKSkge1xuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX2RzU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLl9kc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGhpcy5fZHNTdWJzY3JpcHRpb24gPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIGlzVmFsaWRPcHRpb25zKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5zaG93U2VsZWN0aW9uVGFiKSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICEhdGhpcy5kYXRhU291cmNlICYmXG4gICAgICAgICAgICAgICAgdHlwZW9mIHRoaXMudW5pcXVlS2V5ID09PSAnc3RyaW5nJyAmJlxuICAgICAgICAgICAgICAgICh0eXBlb2YgdGhpcy50b2tlblZpZXdGaWVsZCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHRoaXMudG9rZW5pemVyRm4gPT09ICdmdW5jdGlvbicpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0VmFsaWRhdG9yRnVuY3Rpb24odmFsdWU6IFZoZFZhbHVlQ2hhbmdlRXZlbnQpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgY29uc3QgdmFsaWRhdG9yID0gdHlwZW9mIHRoaXMudG9rZW5WYWxpZGF0b3IgPT09ICdmdW5jdGlvbicgPyB0aGlzLnRva2VuVmFsaWRhdG9yKHZhbHVlKSA6IG9mKHRydWUpO1xuXG4gICAgICAgIHJldHVybiBpc09ic2VydmFibGUodmFsaWRhdG9yKSA/IHZhbGlkYXRvciA6IG9mKHZhbGlkYXRvcik7XG4gICAgfVxufVxuIiwiPG5nLXRlbXBsYXRlIGxldC1kaWFsb2cgbGV0LWRpYWxvZ0NvbmZpZz1cImRpYWxvZ0NvbmZpZ1wiICNjb250YWluZXI+XG4gICAgPGZkLWRpYWxvZyBbZGlhbG9nQ29uZmlnXT1cImRpYWxvZ0NvbmZpZ1wiIFtkaWFsb2dSZWZdPVwiZGlhbG9nXCI+XG4gICAgICAgIDxmZC1kaWFsb2ctaGVhZGVyIFtkaXJdPVwiX2RpclwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGZka1RlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1vYmlsZSA/IG1vYmlsZURpYWxvZ1RpdGxlIDogZGVza3RvcERpYWxvZ1RpdGxlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2ZkLWRpYWxvZy1oZWFkZXI+XG4gICAgICAgIDxmZC1kaWFsb2ctYm9keSBbZGlyXT1cIl9kaXJcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbW9iaWxlXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFkdmFuY2VkU2VhcmNoQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8ZGl2IGZkLXNjcm9sbGJhciBbb3ZlcnJpZGVUYWJpbmRleF09XCJmYWxzZVwiIGNsYXNzPVwiZmRwLXZhbHVlLWhlbHAtZGlhbG9nX19jb250ZW50LWhvbGRlclwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtb2JpbGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFkdmFuY2VkU2VhcmNoQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkVGFiID09PSBfdGFiVHlwZXMuc2VsZWN0RnJvbUxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNlbGVjdGlvbkNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZFRhYiA9PT0gX3RhYlR5cGVzLmRlZmluZUNvbmRpdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRlZmluZUNvbmRpdGlvbnNDb250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9mZC1kaWFsb2ctYm9keT5cbiAgICAgICAgPGZkLWRpYWxvZy1mb290ZXIgW2Rpcl09XCJfZGlyXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgZmRrVGVtcGxhdGU9XCJmb290ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmRwLXZhbHVlLWhlbHAtZGlhbG9nX19yb3cgZmRwLXZhbHVlLWhlbHAtZGlhbG9nX19zZWxlY3Rpb24tcm93XCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIncGxhdGZvcm1WSEQuc2VsZWN0ZWRBbmRDb25kaXRpb25MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWlzTW9iaWxlQWR2YW5jZWRTZWFyY2hBY3RpdmVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGg1IGZkLXRpdGxlIGNsYXNzPVwic2VsZWN0ZWQtYW5kLWNvbmRpdGlvbi10aXRsZVwiIFtpZF09XCJpZCArICctc2VsZWN0ZWQtaXRlbSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNTZWxlY3RlZEFuZENvbmRpdGlvbnM7IGVsc2Ugbm9JdGVtc1BhbmVsVGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1WSEQuc2VsZWN0ZWRBbmRDb25kaXRpb25MYWJlbCcgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7eyBzZWxlY3RlZEl0ZW1zLmxlbmd0aCArIHZhbGlkQ29uZGl0aW9ucy5sZW5ndGggfX0pXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9oNT5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmRwLXZhbHVlLWhlbHAtZGlhbG9nX190b2tlbnMtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19fdG9rZW5zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTZWxlY3RlZCBpdGVtcyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtdG9rZW5pemVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtdG9rZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRPdmVyZmxvd1ByaW9yaXR5PVwiaGlnaFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19fc2VsZWN0aW9uLXRva2VuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNsb3NlQ2xpY2spPVwicmVtb3ZlU2VsZWN0ZWQoc2VsZWN0ZWRJbmRleClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW0gb2Ygc2VsZWN0ZWRJdGVtcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCBhcyBzZWxlY3RlZEluZGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IF90cmFja0J5U2VsZWN0ZWRGblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID57eyAhIXRva2VuaXplckZuID8gKGl0ZW0gfCBkaXNwbGF5Rm5QaXBlIDogdG9rZW5pemVyRm4pIDogaXRlbVt0b2tlblZpZXdGaWVsZF0gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mZC10b2tlbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLXRva2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkT3ZlcmZsb3dQcmlvcml0eT1cImhpZ2hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZHAtdmFsdWUtaGVscC1kaWFsb2dfX3NlbGVjdGlvbi10b2tlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DbG9zZUNsaWNrKT1cInJlbW92ZUNvbmRpdGlvbihjb25kaXRpb25JbmRleClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW0gb2YgdmFsaWRDb25kaXRpb25zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4IGFzIGNvbmRpdGlvbkluZGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IF90cmFja0J5Q29uZGl0aW9uRm5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb25kaXRpb25WYWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgaXRlbTogaXRlbSB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mZC10b2tlbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZkLWZvcm0tY29udHJvbCBmZC10b2tlbml6ZXItaW5wdXQgW2Rpc2FibGVkXT1cIiFoYXNTZWxlY3RlZEFuZENvbmRpdGlvbnNcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmQtdG9rZW5pemVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyU2VsZWN0ZWRBbmRDb25kaXRpb25JdGVtcygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19fdG9rZW5zLWNsZWFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWhhc1NlbGVjdGVkQW5kQ29uZGl0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCIncGxhdGZvcm1WSEQuZm9vdGVyQ2xlYXJTZWxlY3RlZFRpdGxlJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaD1cImRlY2xpbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3BsYXRmb3JtVkhELmZvb3RlckNsZWFyU2VsZWN0ZWRBcmlhTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmRwLXZhbHVlLWhlbHAtZGlhbG9nX19hY3Rpb25zLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ28tYWR2YW5jZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1WSEQuc2VhcmNoQnV0dG9uTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm1vYmlsZSAmJiBpc09wZW5BZHZhbmNlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VhcmNoQWR2YW5jZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXN1Y2Nlc1xuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRpbmdTdGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtVkhELnN1Y2Nlc3NCdXR0b25MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJlbXBoYXNpemVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2VsZWN0ZWRUYWIgIT09IF90YWJUeXBlcy5hZHZhbmNlZFNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic3VjY2VzcygpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZGlzbWlzcy1kaWFsb2dcbiAgICAgICAgICAgICAgICAgICAgICAgIGZkLWRpYWxvZy1kZWNpc2l2ZS1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1WSEQuY2FuY2VsQnV0dG9uTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRpc21pc3MoKVwiXG4gICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZmQtZGlhbG9nLWZvb3Rlcj5cbiAgICA8L2ZkLWRpYWxvZz5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbm9JdGVtc1BhbmVsVGl0bGU+XG4gICAge3sgJ3BsYXRmb3JtVkhELnNlbGVjdGVkRW1wdHlMYWJlbCcgfCBmZFRyYW5zbGF0ZSB9fVxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNhZHZhbmNlZFNlYXJjaENvbnRlbnQ+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzU2VsZWN0aW9uVGFiXCI+XG4gICAgICAgIDxmb3JtIGNsYXNzPVwiZmRwLXZhbHVlLWhlbHAtZGlhbG9nX19yb3cgZmRwLXZhbHVlLWhlbHAtZGlhbG9nX19hZHZhbmNlZC1zZWFyY2hcIiBbaWRdPVwiJ2FkdmFuY2VkLXNlYXJjaC0nICsgaWRcIj5cbiAgICAgICAgICAgIDxmZC1sYXlvdXQtZ3JpZCAqbmdJZj1cIiFtb2JpbGUgfHwgKG1vYmlsZSAmJiAhaXNPcGVuQWR2YW5jZWQpXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBmZExheW91dEdyaWRSb3c+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW2ZkTGF5b3V0R3JpZENvbF09XCIxMlwiIFtjb2xNZF09XCIxMlwiIFtjb2xMZ109XCJtb2JpbGUgPyAxMiA6IDZcIiBbY29sWGxdPVwibW9iaWxlID8gMTIgOiA2XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZmRwLXNlYXJjaC1maWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCIncGxhdGZvcm1WSEQuc2VhcmNoUGxhY2Vob2xkZXInIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWFyY2hTdWJtaXQpPVwic2VhcmNoKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnB1dENoYW5nZSk9XCJfbWFpblNlYXJjaCA9ICRldmVudC50ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2ZkcC1zZWFyY2gtZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmZExheW91dEdyaWRDb2xdPVwiMTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbE1kXT1cIjEyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xMZ109XCJtb2JpbGUgPyAxMiA6IDZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbFhsXT1cIm1vYmlsZSA/IDEyIDogNlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIl9oYXNBZHZhbmNlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19fYWR2YW5jZWQtYWN0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxmZC10b29sYmFyIFtjbGVhckJvcmRlcl09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLXRvb2xiYXItc3BhY2VyPjwvZmQtdG9vbGJhci1zcGFjZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJfaGFzQWR2YW5jZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9iaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAncGxhdGZvcm1WSEQuc2VhcmNoQWR2YW5jZWRTZWFyY2hMYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlzT3BlbkFkdmFuY2VkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAncGxhdGZvcm1WSEQuc2VhcmNoSGlkZUFkdmFuY2VkU2VhcmNoTGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAncGxhdGZvcm1WSEQuc2VhcmNoU2hvd0FkdmFuY2VkU2VhcmNoTGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHwgZmRUcmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFkdmFuY2VkU2VhcmNoKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1WSEQuc2VhcmNoQnV0dG9uTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJlbXBoYXNpemVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybVZIRC5zZWFyY2hCdXR0b25MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJmaWx0ZXIoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9mZC10b29sYmFyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZmQtbGF5b3V0LWdyaWQ+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgW2lkXT1cIidhZHZhbmNlZC1zZWFyY2gtY29udGVudC0nICsgaWRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNPcGVuQWR2YW5jZWQgJiYgX2hhc0FkdmFuY2VkXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19fYWR2YW5jZWQtZmlsdGVyc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGZkLWJ1c3ktaW5kaWNhdG9yIFtsb2FkaW5nXT1cImxvYWRpbmdTdGF0ZSAmJiBfZmlyc3RMb2FkaW5nRG9uZVwiIFtibG9ja109XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxmZC1sYXlvdXQtZ3JpZFxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJfZmlyc3RMb2FkaW5nRG9uZTsgZWxzZSBmaWx0ZXJzTG9hZGluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmRwLXZhbHVlLWhlbHAtZGlhbG9nX193aXRoLXRvZ2dsZS1hbGxdPVwiZmlsdGVycy5sZW5ndGggPiBtYXhTaG93bkluaXRpYWxGaWx0ZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBmZExheW91dEdyaWRSb3c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWx0ZXIgb2YgX2Rpc3BsYXllZEZpbHRlcnMgfCBzbGljZSA6IDAgOiBzaG93bkZpbHRlckNvdW50ICsgMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IF90cmFja0J5RmlsdGVyRm5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXIuYWR2YW5jZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2ZkTGF5b3V0R3JpZENvbF09XCIxMlwiIFtjb2xNZF09XCIxMlwiIFtjb2xMZ109XCI2XCIgW2NvbFhsXT1cIjNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmZC1mb3JtLWdyb3VwX19oZWFkZXJcIiBmZC1mb3JtLWxhYmVsIFtmb3JdPVwiJ2lucHV0JyArIGZpbHRlci5rZXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgZmlsdGVyLmxhYmVsIH19OjwvbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci5maWx0ZXJEZWZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJmaWx0ZXIuZmlsdGVyRGVmLnRlbXBsYXRlUmVmXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogZmlsdGVyIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZpbHRlci5maWx0ZXJEZWZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpbHRlci52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1mb3JtLWNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cIidzZWFyY2gtYnktJyArIGZpbHRlci5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiJ2lucHV0JyArIGZpbHRlci5rZXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xHcm93XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmZExheW91dEdyaWRDb2xdPVwiMTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sTWRdPVwiMTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sTGddPVwiNlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xYbF09XCIzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmaWx0ZXJzLmxlbmd0aCA+IG1heFNob3duSW5pdGlhbEZpbHRlcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19fdG9nZ2xlLWZpbHRlcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU2hvd25GaWx0ZXJzKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpc1Nob3dBbGxGaWx0ZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ3BsYXRmb3JtVkhELnNlYXJjaEhpZGVBbGxBZHZhbmNlZFNlYXJjaExhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdwbGF0Zm9ybVZIRC5zZWFyY2hTaG93QWxsQWR2YW5jZWRTZWFyY2hMYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHwgZmRUcmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2ZkLWxheW91dC1ncmlkPlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZmlsdGVyc0xvYWRpbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZmQtc2tlbGV0b24gd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiMTAwcHhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnOnJlY3QgeD1cIjBcIiB5PVwiMFwiIHJ4PVwiNFwiIHdpZHRoPVwiMTUlXCIgaGVpZ2h0PVwiOFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZzpyZWN0IHg9XCIwXCIgeT1cIjIwXCIgcng9XCI0XCIgd2lkdGg9XCIyNSVcIiBoZWlnaHQ9XCIxNlwiIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnOnJlY3QgeD1cIjM1JVwiIHk9XCIwXCIgcng9XCI0XCIgd2lkdGg9XCIxNSVcIiBoZWlnaHQ9XCI4XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnOnJlY3QgeD1cIjM1JVwiIHk9XCIyMFwiIHJ4PVwiNFwiIHdpZHRoPVwiMjUlXCIgaGVpZ2h0PVwiMTZcIiAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZzpyZWN0IHg9XCIwXCIgeT1cIjYwXCIgcng9XCI0XCIgd2lkdGg9XCIxNSVcIiBoZWlnaHQ9XCI4XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnOnJlY3QgeD1cIjBcIiB5PVwiODBcIiByeD1cIjRcIiB3aWR0aD1cIjI1JVwiIGhlaWdodD1cIjE2XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZmQtc2tlbGV0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9mZC1idXN5LWluZGljYXRvcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Zvcm0+XG4gICAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3NlbGVjdGlvbkNvbnRlbnQ+XG4gICAgPGZkLWJ1c3ktaW5kaWNhdG9yXG4gICAgICAgIFtsb2FkaW5nXT1cImxvYWRpbmdTdGF0ZSAmJiBfZmlyc3RMb2FkaW5nRG9uZVwiXG4gICAgICAgIFtibG9ja109XCJ0cnVlXCJcbiAgICAgICAgY2xhc3M9XCJmZHAtdmFsdWUtaGVscC1kaWFsb2dfX3RhYmxlLWJ1c3ktaW5kaWNhdG9yXCJcbiAgICA+XG4gICAgICAgIDxmZHAtc2VsZWN0LXRhYlxuICAgICAgICAgICAgW3NlbGVjdGVkXT1cInNlbGVjdGVkSXRlbXNcIlxuICAgICAgICAgICAgW2xvYWRpbmddPVwibG9hZGluZ1N0YXRlICYmICFfZmlyc3RMb2FkaW5nRG9uZVwiXG4gICAgICAgICAgICBbdWlkXT1cImlkXCJcbiAgICAgICAgICAgIFtkaXNwbGF5ZWREYXRhXT1cIl9kaXNwbGF5ZWREYXRhXCJcbiAgICAgICAgICAgIFt0YWJUaXRsZV09XCJzZWxlY3RUYWJUaXRsZSB8fCAoJ3BsYXRmb3JtVkhELnNlbGVjdFRhYlRpdGxlJyB8IGZkVHJhbnNsYXRlKVwiXG4gICAgICAgICAgICBbbW9iaWxlXT1cIm1vYmlsZVwiXG4gICAgICAgICAgICBbc2VsZWN0aW9uXT1cInNlYXJjaFNlbGVjdGlvblwiXG4gICAgICAgICAgICBbZW1wdHlUYWJsZU1lc3NhZ2VdPVwic2VhcmNoVGFibGVFbXB0eU1lc3NhZ2UgfHwgKCdwbGF0Zm9ybVZIRC5zZWFyY2hUYWJsZUVtcHR5TWVzc2FnZScgfCBmZFRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgW3VuaXF1ZUtleV09XCJ1bmlxdWVLZXlcIlxuICAgICAgICAgICAgW3BhZ2VTaXplXT1cInNlYXJjaFRhYmxlUGFnZVNpemVcIlxuICAgICAgICAgICAgW2RlZmF1bHRNb2JpbGVIZWFkZXJzXT1cInNlYXJjaFRhYmxlTW9iaWxlSGVhZGVyc1wiXG4gICAgICAgICAgICBbZmlsdGVyc109XCJfZGlzcGxheWVkRmlsdGVyc1wiXG4gICAgICAgICAgICBbYWxsb3dTZWxlY3RBbGxdPVwiYWxsb3dTZWxlY3RBbGxcIlxuICAgICAgICAgICAgKHNlbGVjdCk9XCJvblNlbGVjdCgkZXZlbnQpXCJcbiAgICAgICAgPjwvZmRwLXNlbGVjdC10YWI+XG4gICAgPC9mZC1idXN5LWluZGljYXRvcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmaW5lQ29uZGl0aW9uc0NvbnRlbnQ+XG4gICAgPGRpdiBmZC1zY3JvbGxiYXIgW292ZXJyaWRlVGFiaW5kZXhdPVwiZmFsc2VcIj5cbiAgICAgICAgPGZkcC1kZWZpbmUtdGFiXG4gICAgICAgICAgICBbc3RyYXRlZ3lMYWJlbHNdPVwiZGVmaW5lU3RyYXRlZ3lMYWJlbHNcIlxuICAgICAgICAgICAgW2NvbmRpdGlvbnNdPVwiY29uZGl0aW9uSXRlbXNcIlxuICAgICAgICAgICAgW3VpZF09XCJpZFwiXG4gICAgICAgICAgICBbdGFiVGl0bGVdPVwiZGVmaW5lVGFiVGl0bGUgfHwgKCdwbGF0Zm9ybVZIRC5kZWZpbmVUYWJUaXRsZScgfCBmZFRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgW21vYmlsZV09XCJtb2JpbGVcIlxuICAgICAgICAgICAgKGNvbmRpdGlvbkNoYW5nZSk9XCJvbkNvbmRpdGlvbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgPjwvZmRwLWRlZmluZS10YWI+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2RpYWxvZ1RpdGxlVGV4dD5cbiAgICA8aDUgW2F0dHIuaWRdPVwiaGVhZGVySWRcIiBmZC10aXRsZT57eyBkaWFsb2dUaXRsZSB9fTwvaDU+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3RhYkxpbmsgbGV0LXRpdGxlPVwidGl0bGVcIiBsZXQtdHlwZT1cInR5cGVcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRUYWIgPT09IHR5cGUgJiYgc2hvd1NlbGVjdGlvblRhYiAmJiBzaG93RGVmaW5lVGFiXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgZ2x5cGg9XCJuYXZpZ2F0aW9uLWxlZnQtYXJyb3dcIlxuICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInN3aXRjaFRhYigpXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCIncGxhdGZvcm1WSEQuc2VsZWN0TW9iaWxlVGFiQmFja0J0blRpdGxlJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICA8aDUgZmQtdGl0bGU+e3sgdGl0bGUgfX08L2g1PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZFRhYiAhPT0gdHlwZVwiPlxuICAgICAgICA8YVxuICAgICAgICAgICAgZmQtbGlzdC1saW5rXG4gICAgICAgICAgICAoY2xpY2spPVwic3dpdGNoVGFiKHR5cGUpXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCIncGxhdGZvcm1WSEQuc2VsZWN0TW9iaWxlVGFiQnRuT3BlbkRpYWxvZ0xhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gZmQtbGlzdC10aXRsZT57eyB0aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxpIGZkLWxpc3QtaWNvbiBnbHlwaD1cIm5hdmlnYXRpb24tcmlnaHQtYXJyb3dcIj48L2k+XG4gICAgICAgIDwvYT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYWR2YW5jZWRIZWFkZXI+XG4gICAgPGJ1dHRvbiBmZC1idXR0b24gZ2x5cGg9XCJuYXZpZ2F0aW9uLWxlZnQtYXJyb3dcIiBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiIChjbGljayk9XCJ0b2dnbGVBZHZhbmNlZFNlYXJjaCgpXCI+PC9idXR0b24+XG4gICAgPGg1IGZkLXRpdGxlPnt7ICdwbGF0Zm9ybVZIRC5zZWFyY2hBZHZhbmNlZFNlYXJjaExhYmVsJyB8IGZkVHJhbnNsYXRlIH19PC9oNT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGVza3RvcERpYWxvZ1RpdGxlPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkaWFsb2dUaXRsZVRleHRcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGVza3RvcFRhYnNcIj48L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbW9iaWxlRGlhbG9nVGl0bGU+XG4gICAgPGRpdiBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19fbW9iaWxlLXRpdGxlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNTZWxlY3RlZFRhYjsgZWxzZSBkaWFsb2dUaXRsZVRleHRcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZWxlY3RlZFRhYkhlYWRlclwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibW9iaWxlVGFic1wiPjwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNkZXNrdG9wVGFicz5cbiAgICA8bmF2IGZkLXRhYi1uYXYgY2xhc3M9XCJmZHAtdmFsdWUtaGVscC1kaWFsb2dfX3RhYnNcIiAqbmdJZj1cInNob3dTZWxlY3Rpb25UYWIgJiYgc2hvd0RlZmluZVRhYlwiPlxuICAgICAgICA8ZGl2IGZkLXRhYi1pdGVtIChjbGljayk9XCJzd2l0Y2hUYWIoX3RhYlR5cGVzLnNlbGVjdEZyb21MaXN0KVwiICpuZ0lmPVwic2hvd1NlbGVjdGlvblRhYlwiPlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICBmZC10YWItbGlua1xuICAgICAgICAgICAgICAgIFthY3RpdmVdPVwic2VsZWN0ZWRUYWIgPT09IF90YWJUeXBlcy5zZWxlY3RGcm9tTGlzdFwiXG4gICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cInNlbGVjdGVkVGFiID09PSBfdGFiVHlwZXMuc2VsZWN0RnJvbUxpc3QgPyAnMCcgOiAnLTEnXCJcbiAgICAgICAgICAgICAgICA+PHNwYW4gZmQtdGFiLXRhZz57eyBzZWxlY3RUYWJUaXRsZSB8fCAoJ3BsYXRmb3JtVkhELnNlbGVjdFRhYlRpdGxlJyB8IGZkVHJhbnNsYXRlKSB9fTwvc3Bhbj48L2FcbiAgICAgICAgICAgID5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgZmQtdGFiLWl0ZW0gKGNsaWNrKT1cInN3aXRjaFRhYihfdGFiVHlwZXMuZGVmaW5lQ29uZGl0aW9ucylcIiAqbmdJZj1cInNob3dEZWZpbmVUYWJcIj5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgZmQtdGFiLWxpbmtcbiAgICAgICAgICAgICAgICBbYWN0aXZlXT1cInNlbGVjdGVkVGFiID09PSBfdGFiVHlwZXMuZGVmaW5lQ29uZGl0aW9uc1wiXG4gICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cInNlbGVjdGVkVGFiID09PSBfdGFiVHlwZXMuZGVmaW5lQ29uZGl0aW9ucyA/ICcwJyA6ICctMSdcIlxuICAgICAgICAgICAgICAgID48c3BhbiBmZC10YWItdGFnPnt7IGRlZmluZVRhYlRpdGxlIHx8ICgncGxhdGZvcm1WSEQuZGVmaW5lVGFiVGl0bGUnIHwgZmRUcmFuc2xhdGUpIH19PC9zcGFuPjwvYVxuICAgICAgICAgICAgPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25hdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbW9iaWxlVGFicz5cbiAgICA8ZGl2ICpuZ0lmPVwiIWhhc1NlbGVjdGVkVGFiICYmIHNob3dTZWxlY3Rpb25UYWIgJiYgc2hvd0RlZmluZVRhYlwiPlxuICAgICAgICA8ZGl2IGZkLWJhciBbaW5QYWdlXT1cInRydWVcIiAqbmdJZj1cInNob3dTZWxlY3Rpb25UYWJcIj5cbiAgICAgICAgICAgIDxkaXYgZmQtYmFyLWxlZnQ+XG4gICAgICAgICAgICAgICAgPGZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgICAgICAgICB7eyBzZWxlY3RUYWJUaXRsZSB8fCAoJ3BsYXRmb3JtVkhELnNlbGVjdFRhYlRpdGxlJyB8IGZkVHJhbnNsYXRlKSB9fVxuICAgICAgICAgICAgICAgIDwvZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgZmQtYmFyLXJpZ2h0PlxuICAgICAgICAgICAgICAgIDxmZC1iYXItZWxlbWVudD5cbiAgICAgICAgICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGdseXBoPVwibmF2aWdhdGlvbi1yaWdodC1hcnJvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic3dpdGNoVGFiKF90YWJUeXBlcy5zZWxlY3RGcm9tTGlzdClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwbGF0Zm9ybVZIRC5zZWxlY3RNb2JpbGVUYWJUaXRsZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7IHRpdGxlOiBzZWxlY3RUYWJUaXRsZSB8fCAoJ3BsYXRmb3JtVkhELnNlbGVjdFRhYlRpdGxlJyB8IGZkVHJhbnNsYXRlKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+PC9mZC1idXR0b24tYmFyPlxuICAgICAgICAgICAgICAgIDwvZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgZmQtYmFyIFtpblBhZ2VdPVwidHJ1ZVwiICpuZ0lmPVwic2hvd0RlZmluZVRhYlwiPlxuICAgICAgICAgICAgPGRpdiBmZC1iYXItbGVmdD5cbiAgICAgICAgICAgICAgICA8ZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICAgICAgICAgIHt7IGRlZmluZVRhYlRpdGxlIHx8ICgncGxhdGZvcm1WSEQuZGVmaW5lVGFiVGl0bGUnIHwgZmRUcmFuc2xhdGUpIH19XG4gICAgICAgICAgICAgICAgPC9mZC1iYXItZWxlbWVudD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBmZC1iYXItcmlnaHQ+XG4gICAgICAgICAgICAgICAgPGZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGg9XCJuYXZpZ2F0aW9uLXJpZ2h0LWFycm93XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGxhdGZvcm1WSEQuc2VsZWN0TW9iaWxlVGFiVGl0bGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZmRUcmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogeyB0aXRsZTogZGVmaW5lVGFiVGl0bGUgfHwgKCdwbGF0Zm9ybVZIRC5kZWZpbmVUYWJUaXRsZScgfCBmZFRyYW5zbGF0ZSkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzd2l0Y2hUYWIoX3RhYlR5cGVzLmRlZmluZUNvbmRpdGlvbnMpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8L2ZkLWJ1dHRvbi1iYXI+XG4gICAgICAgICAgICAgICAgPC9mZC1iYXItZWxlbWVudD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc2VsZWN0ZWRUYWJIZWFkZXI+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwic2VsZWN0ZWRUYWJcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiX3RhYlR5cGVzLnNlbGVjdEZyb21MaXN0XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgdGFiTGluaztcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHNlbGVjdFRhYlRpdGxlIHx8ICgncGxhdGZvcm1WSEQuc2VsZWN0VGFiVGl0bGUnIHwgZmRUcmFuc2xhdGUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogc2VsZWN0ZWRUYWJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJfdGFiVHlwZXMuYWR2YW5jZWRTZWFyY2hcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhZHZhbmNlZEhlYWRlclwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiX3RhYlR5cGVzLmRlZmluZUNvbmRpdGlvbnNcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICB0YWJMaW5rO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogZGVmaW5lVGFiVGl0bGUgfHwgKCdwbGF0Zm9ybVZIRC5kZWZpbmVUYWJUaXRsZScgfCBmZFRyYW5zbGF0ZSksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBzZWxlY3RlZFRhYlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NvbmRpdGlvblZhbHVlIGxldC1pdGVtPVwiaXRlbVwiPlxuICAgIDxzcGFuICpuZ0lmPVwiaXRlbS5zdHJhdGVneSAhPT0gJ2VtcHR5JyAmJiBpdGVtLnN0cmF0ZWd5ICE9PSAnbm90X2VtcHR5JzsgZWxzZSBlbXB0eUNvbmRpdGlvblwiPlxuICAgICAgICB7eyBpdGVtIHwgZGlzcGxheUZuUGlwZSA6IGNvbmRpdGlvbkRpc3BsYXlGbiA6IF9kaXNwbGF5ZWRGaWx0ZXJzIH19XG4gICAgPC9zcGFuPlxuICAgIDxuZy10ZW1wbGF0ZSAjZW1wdHlDb25kaXRpb24+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLnN0cmF0ZWd5ID09PSAnbm90X2VtcHR5JzsgZWxzZSBlbXB0eUNvbmRpdGlvblRleHRcIj5cbiAgICAgICAgICAgICEoPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVtcHR5Q29uZGl0aW9uVGV4dFwiPjwvbmctY29udGFpbmVyPilcbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZW1wdHlDb25kaXRpb25UZXh0PiAmbHQ7e3sgJ3BsYXRmb3JtVkhELnNlbGVjdE1vYmlsZUNvbmRpdGlvbkVtcHR5JyB8IGZkVHJhbnNsYXRlIH19Jmd0OyA8L25nLXRlbXBsYXRlPlxuIl19
|