vcomply-workflow-engine 6.1.45 → 6.1.46
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/esm2022/lib/sharedComponents/frequency/frequency.service.mjs +3 -3
- package/esm2022/lib/sharedComponents/risk-classification/risk-classification.component.mjs +1 -1
- package/esm2022/lib/workflow-compliance/workflow-compliance.component.mjs +6 -5
- package/fesm2022/vcomply-workflow-engine.mjs +7 -6
- package/fesm2022/vcomply-workflow-engine.mjs.map +1 -1
- package/lib/workflow-risk/workflow-risk.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -665,7 +665,6 @@ export class FrequencyService {
|
|
|
665
665
|
weekDays.push(0);
|
|
666
666
|
}
|
|
667
667
|
}
|
|
668
|
-
console.log(weekDays, 'weekDays', weekDays.join(''));
|
|
669
668
|
return weekDays.join('');
|
|
670
669
|
}
|
|
671
670
|
else if (frequency?.selectedMonth?.length > 0) {
|
|
@@ -697,6 +696,7 @@ export class FrequencyService {
|
|
|
697
696
|
};
|
|
698
697
|
}
|
|
699
698
|
createFrequencyPattern(frequency) {
|
|
699
|
+
console.log(frequency, 'frequency');
|
|
700
700
|
let pattern = '';
|
|
701
701
|
let selectedDay = frequency.day;
|
|
702
702
|
switch (frequency.type) {
|
|
@@ -742,7 +742,7 @@ export class FrequencyService {
|
|
|
742
742
|
pattern = `8~${randomIndex + 1}~${randomIndex}~${frequency.random.occurrence}`;
|
|
743
743
|
break;
|
|
744
744
|
default:
|
|
745
|
-
pattern = `5~${frequency.
|
|
745
|
+
pattern = `5~${frequency.random.occurrence}~0~0`;
|
|
746
746
|
}
|
|
747
747
|
return pattern;
|
|
748
748
|
}
|
|
@@ -843,4 +843,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
843
843
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.AuthService }, { type: i3.GrcService }, { type: i4.Configurations, decorators: [{
|
|
844
844
|
type: Optional
|
|
845
845
|
}] }]; } });
|
|
846
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlcXVlbmN5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2ZyZXF1ZW5jeS9mcmVxdWVuY3kuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQWMsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFHLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3hDLE9BQU8sTUFBTSxNQUFNLGVBQWUsQ0FBQztBQUNuQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFOUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXBELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7OztBQUluRCxNQUFNLE9BQU8sZ0JBQWdCO0lBcUUzQixZQUNVLElBQWdCLEVBQ2hCLFdBQXdCLEVBQ3hCLFVBQXNCLEVBQ2xCLE1BQXVCO1FBSDNCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQXZFekIsZUFBVSxHQUFrQjtZQUNqQyxTQUFTO1lBQ1QsVUFBVTtZQUNWLE9BQU87WUFDUCxPQUFPO1lBQ1AsS0FBSztZQUNMLE1BQU07WUFDTixNQUFNO1lBQ04sUUFBUTtZQUNSLFdBQVc7WUFDWCxTQUFTO1lBQ1QsVUFBVTtZQUNWLFVBQVU7U0FDWCxDQUFDO1FBRUssWUFBTyxHQUFrQjtZQUM5QixRQUFRO1lBQ1IsU0FBUztZQUNULFdBQVc7WUFDWCxVQUFVO1lBQ1YsUUFB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QUFPLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLEtBQUssYUFBYSxDQUFDLEVBQUUsS0FBSyxDQUFDO0lBQ2hGLENBQUM7K0dBMzJCWSxnQkFBZ0I7bUhBQWhCLGdCQUFnQixjQUZmLE1BQU07OzRGQUVQLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQTBFSSxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgIHJldHJ5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbnMgfSBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9ucyc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uL3dvcmtmbG93LXNlcnZpY2VzL2F1dGguc2VydmljZSc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC9tb21lbnQnO1xuaW1wb3J0IHsgREVGQVVMVF9USU1FIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL3RpbWUuY29uc3RhbnRzJztcbmltcG9ydCB7IEZyZXF1ZW5jeU9iamVjdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZnJlcXVlbmN5LmludGVyZmFjZSc7XG5pbXBvcnQgeyBBUEkgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvYXBpLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBHcmNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vd29ya2Zsb3cvc2hhcmVkL3NlcnZpY2VzL2dyYy5zZXJ2aWNlJztcbmltcG9ydCBkYXlqcyBmcm9tICdkYXlqcyc7XG5pbXBvcnQgeyBNT05USF9OQU1FUyB9IGZyb20gJy4vZnJlcXVlbmN5LmNvbnN0YW50JztcbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBGcmVxdWVuY3lTZXJ2aWNlIHtcbiAgcHVibGljIG1vbnRoQXJyYXk6IEFycmF5PHN0cmluZz4gPSBbXG4gICAgJ0phbnVhcnknLFxuICAgICdGZWJydWFyeScsXG4gICAgJ01hcmNoJyxcbiAgICAnQXByaWwnLFxuICAgICdNYXknLFxuICAgICdKdW5lJyxcbiAgICAnSnVseScsXG4gICAgJ0F1Z3VzdCcsXG4gICAgJ1NlcHRlbWJlcicsXG4gICAgJ09jdG9iZXInLFxuICAgICdOb3ZlbWJlcicsXG4gICAgJ0RlY2VtYmVyJyxcbiAgXTtcblxuICBwdWJsaWMgZGF5TmFtZTogQXJyYXk8c3RyaW5nPiA9IFtcbiAgICAnTW9uZGF5JyxcbiAgICAnVHVlc2RheScsXG4gICAgJ1dlZG5lc2RheScsXG4gICAgJ1RodXJzZGF5JyxcbiAgICAnRnJpZGF5JyxcbiAgICAnU2F0dXJkYXknLFxuICAgICdTdW5kYXknLFxuICBdOyAvLyBmdWxsIGRheSBuYW1lXG5cbiAgcHVibGljIHF1YXJ0ZXJseU1vbnRoOiBBcnJheTxzdHJpbmc+ID0gW1xuICAgICdKYW51YXJ5LCBBcHJpbCwgSnVseSwgT2N0b2JlcicsXG4gICAgJ0ZlYnJ1YXJ5LCBNYXksIEF1Z3VzdCwgTm92ZW1iZXInLFxuICAgICdNYXJjaCwgSnVuZSwgU2VwdGVtYmVyLCBEZWNlbWJlcicsXG4gIF07XG5cbiAgcHVibGljIGRhdGVDb25maWcgPSB7XG4gICAgZm9ybWF0OiAnREQgTU0gWVlZWScsXG4gICAgc2hvd0dvVG9DdXJyZW50OiBmYWxzZSxcbiAgfTtcblxuICBwdWJsaWMgZnJlcXVlbmN5SW5mbyA9IHtcbiAgICBwbGFjZWhvbGRlcjogJycsXG4gICAgcGF0dGVybjogJycsXG4gICAgY2FzZTogJycsXG4gICAgZmFpbGVkQWZ0ZXI6IDAsXG4gICAgd2luZG93OiAwLFxuICAgIHRpbWVJbjEyaHI6ICcnLFxuICAgIHRpbWVJbjI0SHI6ICcnLFxuICAgIGxpZmVjeWNsZURldGFpbHM6ICcwMDAwLTAwLTAwfn4wJyxcbiAgICBzdGFydEZyb206IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApLFxuICAgIHJlcG9ydElkOiAwLFxuICAgIGZhaWxlZF90aW1lX3V0YzogTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCksXG4gICAgY29udGludW91c19mYWlsZWRfZGF5czogMCxcbiAgICBkYXRlT2ZNb2RpZmllZDogMCxcbiAgICBzdGFydERhdGU6ICcnLFxuICB9O1xuXG4gIHB1YmxpYyBmcmVxdWVuY3lEZXRhaWxzOiBvYmplY3QgPSB7XG4gICAgcGF0dGVybjogJycsXG4gICAgbm90aWZpY2F0aW9uUGVuZGluZzogMCxcbiAgICBkYXRlT2ZNb2RpZmllZDogMCxcbiAgICBkZWFjdGl2YXRpb25WYWx1ZTogMCxcbiAgICBzZWxlY3RlZFJlcG9ydDogMCxcbiAgICBsaWZlY3ljbGU6ICcwMDAwLTAwLTAwfn4wJyxcbiAgICBzdGFydERhdGU6IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKSxcbiAgICBzdGFydE9uVGhlRGF5OiBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCksXG4gICAgd2luZG93OiAwLFxuICAgIGZhaWxlZDogMCxcbiAgICB0aW1lOiBERUZBVUxUX1RJTUUsXG4gIH07XG5cbiAgcHJpdmF0ZSBlbnYhOiBhbnk7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICBwcml2YXRlIGdyY1NlcnZpY2U6IEdyY1NlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgY29uZmlnPzogQ29uZmlndXJhdGlvbnNcbiAgKSB7XG4gICAgaWYgKGNvbmZpZykge1xuICAgICAgdGhpcy5lbnYgPSBjb25maWcuZW52Q29uZmlnO1xuICAgIH1cbiAgfVxuXG4gIHRpbWVGcm9tMTJoVG8yNGgodmFsdWU6IHN0cmluZykge1xuICAgIGlmICh2YWx1ZSAhPSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHRpbWVfYXJyID0gdmFsdWUuc3BsaXQoJyAnKTtcbiAgICAgIGNvbnN0IG1lcmlkaWFuID0gdGltZV9hcnJbMV07XG4gICAgICBjb25zdCBocl9taW4gPSB0aW1lX2FyclswXS5zcGxpdCgnOicpLm1hcChOdW1iZXIpO1xuICAgICAgY29uc3QgaHIgPSBocl9taW5bMF07XG4gICAgICBjb25zdCBtaW4gPSBocl9taW5bMV07XG5cbiAgICAgIGxldCByZXR1cm5fdGltZSA9ICcnO1xuXG4gICAgICBpZiAobWVyaWRpYW4/LnRvTG93ZXJDYXNlKCkgPT0gJ3BtJykge1xuICAgICAgICBpZiAoaHIgPT0gMTIpIHtcbiAgICAgICAgICByZXR1cm5fdGltZSA9IDEyICsgJzonICsgbWluICsgJzowMCc7XG4gICAgICAgIH0gZWxzZSBpZiAoaHIgPCAxMikge1xuICAgICAgICAgIHJldHVybl90aW1lID0gK2hyICsgMTIgKyAnOicgKyBtaW4gKyAnOjAwJztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGhyID09IDEyKSB7XG4gICAgICAgICAgcmV0dXJuX3RpbWUgPSAnMDA6JyArIG1pbiArICc6MDAnO1xuICAgICAgICB9IGVsc2UgaWYgKGhyIDwgMTIpIHtcbiAgICAgICAgICByZXR1cm5fdGltZSA9IGhyICsgJzonICsgbWluICsgJzowMCc7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJldHVybl90aW1lO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG5cbiAgdGltZUluMTIodmFsdWU6IGFueSkge1xuICAgIGlmICh2YWx1ZSAhPSB1bmRlZmluZWQpIHtcbiAgICAgIGxldCBocjtcbiAgICAgIGxldCBtaW47XG4gICAgICBsZXQgbWVyaWRpYW47XG4gICAgICBpZiAodmFsdWUuc3BsaXQoJzonKVswXSA+PSAxMikge1xuICAgICAgICBociA9IHZhbHVlLnNwbGl0KCc6JylbMF0gPT09ICcxMicgPyAxMiA6IHZhbHVlLnNwbGl0KCc6JylbMF0gLSAxMjtcbiAgICAgICAgbWluID0gdmFsdWUuc3BsaXQoJzonKVsxXTtcbiAgICAgICAgaWYgKG1pbi5sZW5ndGggPCAyKSB7XG4gICAgICAgICAgbWluID0gJzAnICsgbWluO1xuICAgICAgICB9XG4gICAgICAgIG1lcmlkaWFuID0gJ3BtJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhyID0gdmFsdWUuc3BsaXQoJzonKVswXSA9PSAnMDAnID8gMTIgOiB2YWx1ZS5zcGxpdCgnOicpWzBdO1xuICAgICAgICBtaW4gPSB2YWx1ZS5zcGxpdCgnOicpWzFdO1xuICAgICAgICBpZiAobWluLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgICBtaW4gPSAnMCcgKyBtaW47XG4gICAgICAgIH1cbiAgICAgICAgbWVyaWRpYW4gPSAnYW0nO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGhyICsgJzonICsgbWluICsgJyAnICsgbWVyaWRpYW47XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cblxuICBmcmFtZXdvcmtTdGFydERhdGUocm93OiBhbnkpIHtcbiAgICBsZXQgY2FsY3VsYXRlZERheTogbnVtYmVyID0gMDtcbiAgICBjb25zdCBzdGFydERhdGUgPSBuZXcgRGF0ZShwYXJzZUludChyb3cuc3RhcnRfZGF0ZSkgKiAxMDAwKS5nZXREYXkoKTtcbiAgICBjb25zdCBnZXREYXRlID0gbmV3IERhdGUocGFyc2VJbnQocm93LnN0YXJ0X2RhdGUpICogMTAwMCkuZ2V0RGF0ZSgpO1xuICAgIGNvbnN0IGN1cnJlbnREYXRlID0gbmV3IERhdGUoKS5nZXREYXkoKTtcbiAgICBjb25zdCBzdGFydE1vbnRoID0gbmV3IERhdGUocGFyc2VJbnQocm93LnN0YXJ0X2RhdGUpICogMTAwMCkuZ2V0TW9udGgoKTtcblxuICAgIGlmIChcbiAgICAgIHBhcnNlSW50KHJvdy5zdGFydF9kYXRlKSA8IERhdGUubm93KCkgLyAxMDAwICYmXG4gICAgICAocm93LmZyZXF1ZW5jeV90ZW1wbGF0ZSA9PT0gJ2V2ZXJ5IHdlZWsnIHx8XG4gICAgICAgIHJvdy5mcmVxdWVuY3lfdGVtcGxhdGUgPT09ICdldmVyeSAyIHdlZWtzJyB8fFxuICAgICAgICByb3cuZnJlcXVlbmN5X3RlbXBsYXRlID09PSAnZXZlcnkgMyB3ZWVrcycpXG4gICAgKSB7XG4gICAgICBsZXQgZGF5c1RvQmVBZGRlZCA9IDA7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDc7IGkrKykge1xuICAgICAgICBpZiAoKGN1cnJlbnREYXRlICsgaSkgJSA3ID09PSBzdGFydERhdGUpIHtcbiAgICAgICAgICBkYXlzVG9CZUFkZGVkID0gaTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29uc3QgdGltZXN0YW1wVG9CZUFkZGVkID0gZGF5c1RvQmVBZGRlZCAqIDI0ICogNjAgKiA2MCAqIDEwMDA7XG4gICAgICBjYWxjdWxhdGVkRGF5ID0gbmV3IERhdGUoXG4gICAgICAgIG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgdGltZXN0YW1wVG9CZUFkZGVkXG4gICAgICApLmdldFRpbWUoKTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgcGFyc2VJbnQocm93LnN0YXJ0X2RhdGUpIDwgRGF0ZS5ub3coKSAvIDEwMDAgJiZcbiAgICAgICEoXG4gICAgICAgIHJvdy5mcmVxdWVuY3lfdGVtcGxhdGUgPT09ICdldmVyeSB3ZWVrJyB8fFxuICAgICAgICByb3cuZnJlcXVlbmN5X3RlbXBsYXRlID09PSAnZXZlcnkgMiB3ZWVrcycgfHxcbiAgICAgICAgcm93LmZyZXF1ZW5jeV90ZW1wbGF0ZSA9PT0gJ2V2ZXJ5IDMgd2Vla3MnXG4gICAgICApICYmXG4gICAgICByb3cuZnJlcXVlbmN5X3RlbXBsYXRlICE9PSAnZXZlcnkgZGF5J1xuICAgICkge1xuICAgICAgY29uc3QgbW9tZW50VW5peCA9IG1vbWVudChcbiAgICAgICAgZ2V0RGF0ZSArXG4gICAgICAgICAgJy0nICtcbiAgICAgICAgICAobmV3IERhdGUoKS5nZXRNb250aCgpICsgMSkgK1xuICAgICAgICAgICctJyArXG4gICAgICAgICAgbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpICtcbiAgICAgICAgICAnIDAwOjAwJyxcbiAgICAgICAgJ0RELU1NLVlZWVkgSEg6bW0nXG4gICAgICApLnVuaXgoKTtcbiAgICAgIGNhbGN1bGF0ZWREYXkgPSBtb21lbnRVbml4ICogMTAwMDtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgcm93LmZyZXF1ZW5jeV90ZW1wbGF0ZSA9PT0gJ2V2ZXJ5IGRheScgJiZcbiAgICAgIHBhcnNlSW50KHJvdy5zdGFydF9kYXRlKSA8IERhdGUubm93KCkgLyAxMDAwXG4gICAgKSB7XG4gICAgICBjYWxjdWxhdGVkRGF5ID0gRGF0ZS5ub3coKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FsY3VsYXRlZERheSA9IHBhcnNlSW50KHJvdy5zdGFydF9kYXRlKSAqIDEwMDA7XG4gICAgfVxuICAgIHJldHVybiBjYWxjdWxhdGVkRGF5IC8gMTAwMDtcbiAgfVxuXG4gIGZyYW1ld29ya0ZyZXF1ZW5jeShmcmVxdWVuY3k6IGFueSwgc3RhcnRfZGF0ZTogYW55KSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG5ldyBEYXRlKHN0YXJ0X2RhdGUgKiAxMDAwKTtcbiAgICAgIGNvbnN0IGZpcnN0SGFsZk1vbnRoID0gWycxJywgJzInLCAnMycsICc0JywgJzUnLCAnNiddO1xuICAgICAgY29uc3Qgc2Vjb25kSGFsZk1vbnRoID0gWyc3JywgJzgnLCAnOScsICcxMCcsICcxMScsICcxMiddO1xuICAgICAgY29uc3QgZ2V0RGF5RGF0YSA9IHN0YXJ0RGF0ZS5nZXREYXkoKSA9PT0gMCA/IDcgOiBzdGFydERhdGUuZ2V0RGF5KCk7XG4gICAgICBjb25zdCBtb250aCA9IHN0YXJ0RGF0ZS5nZXRNb250aCgpO1xuICAgICAgbGV0IHF1YXJ0ZXJQYXR0ZXJuID0gJ34xLDQsNywxMH4wJztcbiAgICAgIHN3aXRjaCAobW9udGgpIHtcbiAgICAgICAgY2FzZSAwOlxuICAgICAgICBjYXNlIDM6XG4gICAgICAgIGNhc2UgNjpcbiAgICAgICAgY2FzZSA5OlxuICAgICAgICAgIHF1YXJ0ZXJQYXR0ZXJuID0gJ34xLDQsNywxMH4wJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICBjYXNlIDQ6XG4gICAgICAgIGNhc2UgNzpcbiAgICAgICAgY2FzZSAxMDpcbiAgICAgICAgICBxdWFydGVyUGF0dGVybiA9ICd+Miw1LDgsMTF+MCc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgY2FzZSA1OlxuICAgICAgICBjYXNlIDg6XG4gICAgICAgIGNhc2UgMTE6XG4gICAgICAgICAgcXVhcnRlclBhdHRlcm4gPSAnfjMsNiw5LDEyfjAnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgLy8gXTtcbiAgICAgIGxldCBmcmVxdWVuY3lfcGF0dGVybjtcblxuICAgICAgZnJlcXVlbmN5ID0gZnJlcXVlbmN5LnRvTG93ZXJDYXNlKCk7XG4gICAgICBsZXQgY29udGludW91c19mYWlsZWRfZGF5cyA9IDA7XG4gICAgICAvLyBAID0+IGRheSAoMSB0byA3KVxuICAgICAgLy8gIyA9PiBtb250aCAoMSB0byAxMilcbiAgICAgIC8vID8gPT4gbW9udGggJSAyID09IDAgPyBcIjIsNCw2LDgsMTAsMTJcIiA6IFwiMSwzLDUsNyw5LDExXCJcblxuICAgICAgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IHdlZWsnKSB7XG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID0gJzJ+JyArIGdldERheURhdGEgKyAnfjB+MSc7XG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxMDtcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnb25lIHRpbWUnKSB7XG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID1cbiAgICAgICAgICAnMH4nICtcbiAgICAgICAgICBzdGFydERhdGUuZ2V0RnVsbFllYXIoKSArXG4gICAgICAgICAgJ34nICtcbiAgICAgICAgICAoc3RhcnREYXRlLmdldE1vbnRoKCkgKyAxKSArXG4gICAgICAgICAgJ34nICtcbiAgICAgICAgICBzdGFydERhdGUuZ2V0RGF0ZSgpO1xuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSBkYXknKSB7XG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID0gJzF+MH4wfjEnO1xuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTU7XG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IGFsdGVybmF0ZSBkYXknKSB7XG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID0gJzF+MH4wfjInO1xuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTU7XG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IDEwIGRheXMnKSB7XG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID0gJzF+MH4wfjEwJztcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDE1O1xuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSAyIHdlZWtzJykge1xuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9ICcyficgKyBnZXREYXlEYXRhICsgJ34wfjInO1xuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTA7XG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IGZvcnRuaWdodCcpIHtcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPSAnMX4nICsgZ2V0RGF5RGF0YSArICd+MH4xNCc7XG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxNTtcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgMyB3ZWVrcycpIHtcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPSAnMn4nICsgZ2V0RGF5RGF0YSArICd+MH4zJztcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDEwO1xuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSBtb250aCcpIHtcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPVxuICAgICAgICAgICczficgKyBzdGFydERhdGUuZ2V0RGF0ZSgpICsgJ34xLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMn4wJztcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDEwO1xuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSA0NSBkYXlzJykge1xuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9ICcxfjB+MH40NSc7XG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxNTtcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgYWx0ZXJuYXRlIG1vbnRoJykge1xuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9XG4gICAgICAgICAgJzN+JyArXG4gICAgICAgICAgc3RhcnREYXRlLmdldERhdGUoKSArXG4gICAgICAgICAgJ34nICtcbiAgICAgICAgICAoKHN0YXJ0RGF0ZS5nZXRNb250aCgpICsgMSkgJSAyID09IDBcbiAgICAgICAgICAgID8gJzIsNCw2LDgsMTAsMTInXG4gICAgICAgICAgICA6ICcxLDMsNSw3LDksMTEnKSArXG4gICAgICAgICAgJ34wJztcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDEwO1xuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSBxdWFydGVyJykge1xuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9ICc3ficgKyBzdGFydERhdGUuZ2V0RGF0ZSgpICsgcXVhcnRlclBhdHRlcm47XG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IDEyMCBkYXlzJykge1xuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9ICcxfjB+MH4xMjAnO1xuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdoYWxmIHllYXJseScpIHtcbiAgICAgICAgY29uc3QgaW5kZXgxID0gZmlyc3RIYWxmTW9udGguaW5kZXhPZihcbiAgICAgICAgICAoc3RhcnREYXRlLmdldE1vbnRoKCkgKyAxKS50b1N0cmluZygpXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGluZGV4MiA9IHNlY29uZEhhbGZNb250aC5pbmRleE9mKFxuICAgICAgICAgIChzdGFydERhdGUuZ2V0TW9udGgoKSArIDEpLnRvU3RyaW5nKClcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgcGF0dGVybiA9XG4gICAgICAgICAgaW5kZXgxID4gLTFcbiAgICAgICAgICAgID8gJ34nICtcbiAgICAgICAgICAgICAgZmlyc3RIYWxmTW9udGhbaW5kZXgxXSArXG4gICAgICAgICAgICAgICcsJyArXG4gICAgICAgICAgICAgIHNlY29uZEhhbGZNb250aFtpbmRleDFdICtcbiAgICAgICAgICAgICAgJ34wJ1xuICAgICAgICAgICAgOiAnficgK1xuICAgICAgICAgICAgICBmaXJzdEhhbGZNb250aFtpbmRleDJdICtcbiAgICAgICAgICAgICAgJywnICtcbiAgICAgICAgICAgICAgc2Vjb25kSGFsZk1vbnRoW2luZGV4Ml0gK1xuICAgICAgICAgICAgICAnfjAnO1xuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9ICczficgKyBzdGFydERhdGUuZ2V0RGF0ZSgpICsgcGF0dGVybjtcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDEwO1xuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICd5ZWFybHknKSB7XG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID1cbiAgICAgICAgICAnNH4nICsgc3RhcnREYXRlLmdldERhdGUoKSArICd+JyArIChzdGFydERhdGUuZ2V0TW9udGgoKSArIDEpICsgJ34xJztcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgMiB5ZWFycycpIHtcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPVxuICAgICAgICAgICc0ficgKyBzdGFydERhdGUuZ2V0RGF0ZSgpICsgJ34nICsgKHN0YXJ0RGF0ZS5nZXRNb250aCgpICsgMSkgKyAnfjInO1xuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSAzIHllYXJzJykge1xuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9XG4gICAgICAgICAgJzR+JyArIHN0YXJ0RGF0ZS5nZXREYXRlKCkgKyAnficgKyAoc3RhcnREYXRlLmdldE1vbnRoKCkgKyAxKSArICd+Myc7XG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IDQgeWVhcnMnKSB7XG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID1cbiAgICAgICAgICAnNH4nICsgc3RhcnREYXRlLmdldERhdGUoKSArICd+JyArIChzdGFydERhdGUuZ2V0TW9udGgoKSArIDEpICsgJ340JztcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgNSB5ZWFycycpIHtcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPVxuICAgICAgICAgICc0ficgKyBzdGFydERhdGUuZ2V0RGF0ZSgpICsgJ34nICsgKHN0YXJ0RGF0ZS5nZXRNb250aCgpICsgMSkgKyAnfjUnO1xuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSAxMCB5ZWFycycpIHtcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPVxuICAgICAgICAgICc0ficgKyBzdGFydERhdGUuZ2V0RGF0ZSgpICsgJ34nICsgKHN0YXJ0RGF0ZS5nZXRNb250aCgpICsgMSkgKyAnfjEwJztcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAndG8gYmUgZGVjaWRlZCBsYXRlcicpIHtcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPSAnJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID0gJyc7XG4gICAgICB9XG4gICAgICAvLyB0aGlzLmVkaXREYXRhLmZyZXF1ZW5jeV9kZXRhaWxzID0gZnJlcXVlbmN5X3BhdHRlcm47XG5cbiAgICAgIHJldHVybiB7IGZyZXF1ZW5jeV9wYXR0ZXJuLCBjb250aW51b3VzX2ZhaWxlZF9kYXlzIH07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgIHJldHVybiB7IGZyZXF1ZW5jeV9wYXR0ZXJuOiAnJywgY29udGludW91c19mYWlsZWRfZGF5czogMCB9O1xuICAgIH1cbiAgfVxuXG4gIHNob3J0SGFuZF9mcmVxQ2FsKGZyZXF1ZW5jeTogYW55LCBkYXk6IGFueSwgbW9udGg6IGFueSwgeWVhcj86IGFueSkge1xuICAgIGNvbnN0IG1vbnRoTmFtZXMgPSBNT05USF9OQU1FUztcbiAgICBsZXQgZnJlcXVlbmN5X2RldGFpbHM7XG4gICAgbGV0IGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAwO1xuICAgIGNvbnN0IGRhdGVfdmFsdWUgPSBuZXcgRGF0ZSgpO1xuXG4gICAgZGF0ZV92YWx1ZS5zZXRNb250aChcbiAgICAgIHR5cGVvZiBtb250aCAhPT0gJ251bWJlcidcbiAgICAgICAgPyBtb250aE5hbWVzLmZpbHRlcigoeCkgPT4geC5tb250aCA9PT0gbW9udGg/LnN1YnN0cmluZygwLCAzKSlbMF1cbiAgICAgICAgICAgID8udmFsdWUgLSAxXG4gICAgICAgIDogbW9udGhcbiAgICApO1xuICAgIGlmICgheWVhcikge1xuICAgICAgZGF0ZV92YWx1ZS5zZXRGdWxsWWVhcigyMCArIG1vbnRoLnNwbGl0KFwiJ1wiKVsxXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRhdGVfdmFsdWUuc2V0RnVsbFllYXIoeWVhcik7XG4gICAgfVxuICAgIGRhdGVfdmFsdWUuc2V0RGF0ZShkYXkpO1xuICAgIGxldCBxdWFydGVyUGF0dGVybiA9ICd+MSw0LDcsMTB+MCc7XG4gICAgY29uc3QgZmlyc3RIYWxmTW9udGggPSBbJzEnLCAnMicsICczJywgJzQnLCAnNScsICc2J107XG4gICAgY29uc3Qgc2Vjb25kSGFsZk1vbnRoID0gWyc3JywgJzgnLCAnOScsICcxMCcsICcxMScsICcxMiddO1xuICAgIGZyZXF1ZW5jeSA9IGZyZXF1ZW5jeS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgc3dpdGNoIChkYXRlX3ZhbHVlLmdldE1vbnRoKCkpIHtcbiAgICAgIGNhc2UgMDpcbiAgICAgIGNhc2UgMzpcbiAgICAgIGNhc2UgNjpcbiAgICAgIGNhc2UgOTpcbiAgICAgICAgcXVhcnRlclBhdHRlcm4gPSAnfjEsNCw3LDEwfjAnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTpcbiAgICAgIGNhc2UgNDpcbiAgICAgIGNhc2UgNzpcbiAgICAgIGNhc2UgMTA6XG4gICAgICAgIHF1YXJ0ZXJQYXR0ZXJuID0gJ34yLDUsOCwxMX4wJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI6XG4gICAgICBjYXNlIDU6XG4gICAgICBjYXNlIDg6XG4gICAgICBjYXNlIDExOlxuICAgICAgICBxdWFydGVyUGF0dGVybiA9ICd+Myw2LDksMTJ+MCc7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjb25zdCBnZXREYXkgPSBkYXRlX3ZhbHVlLmdldERheSgpID09PSAwID8gNyA6IGRhdGVfdmFsdWUuZ2V0RGF5KCk7XG4gICAgc3dpdGNoIChmcmVxdWVuY3kpIHtcbiAgICAgIGNhc2UgJ2V2ZXJ5IHdlZWsnOlxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9ICcyficgKyBnZXREYXkgKyAnfjB+MSc7XG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxMDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdvbmUgdGltZSc6XG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID1cbiAgICAgICAgICAnMH4nICtcbiAgICAgICAgICAnJyArXG4gICAgICAgICAgZGF0ZV92YWx1ZS5nZXRGdWxsWWVhcigpICtcbiAgICAgICAgICAnficgK1xuICAgICAgICAgIChkYXRlX3ZhbHVlLmdldE1vbnRoKCkgKyAxKSArXG4gICAgICAgICAgJ34nICtcbiAgICAgICAgICBkYXRlX3ZhbHVlLmdldERhdGUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdldmVyeSBkYXknOlxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9ICcxfjB+MH4xJztcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDE1O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2V2ZXJ5IGFsdGVybmF0ZSBkYXknOlxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9ICcxfjB+MH4yJztcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDE1O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2V2ZXJ5IDEwIGRheXMnOlxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9ICcxfjB+MH4xMCc7XG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxNTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdldmVyeSAyIHdlZWtzJzpcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPSAnMn4nICsgZ2V0RGF5ICsgJ34wfjInO1xuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZXZlcnkgZm9ydG5pZ2h0JzpcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPSAnMX4nICsgZ2V0RGF5ICsgJ34wfjE0JztcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDE1O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2V2ZXJ5IDMgd2Vla3MnOlxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9ICcyficgKyBnZXREYXkgKyAnfjB+Myc7XG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxMDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdldmVyeSBtb250aCc6XG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID1cbiAgICAgICAgICAnM34nICsgZGF0ZV92YWx1ZS5nZXREYXRlKCkgKyAnfjEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyfjAnO1xuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZXZlcnkgNDUgZGF5cyc6XG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID0gJzF+MH4wfjQ1JztcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDE1O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2V2ZXJ5IGFsdGVybmF0ZSBtb250aCc6XG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID1cbiAgICAgICAgICAnM34nICtcbiAgICAgICAgICBkYXRlX3ZhbHVlLmdldERhdGUoKSArXG4gICAgICAgICAgJ34nICtcbiAgICAgICAgICAoKGRhdGVfdmFsdWUuZ2V0TW9udGgoKSArIDEpICUgMiA9PT0gMFxuICAgICAgICAgICAgPyAnMiw0LDYsOCwxMCwxMidcbiAgICAgICAgICAgIDogJzEsMyw1LDcsOSwxMScpICtcbiAgICAgICAgICAnfjAnO1xuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZXZlcnkgcXVhcnRlcic6XG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID0gJzd+JyArIGRhdGVfdmFsdWUuZ2V0RGF0ZSgpICsgcXVhcnRlclBhdHRlcm47XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZXZlcnkgMTIwIGRheXMnOlxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9ICcxfjB+MH4xMjAnO1xuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnaGFsZiB5ZWFybHknOlxuICAgICAgICBjb25zdCBpbmRleDEgPSBmaXJzdEhhbGZNb250aC5pbmRleE9mKFxuICAgICAgICAgIChkYXRlX3ZhbHVlLmdldE1vbnRoKCkgKyAxKS50b1N0cmluZygpXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGluZGV4MiA9IHNlY29uZEhhbGZNb250aC5pbmRleE9mKFxuICAgICAgICAgIChkYXRlX3ZhbHVlLmdldE1vbnRoKCkgKyAxKS50b1N0cmluZygpXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHBhdHRlcm4gPVxuICAgICAgICAgIGluZGV4MSA+IC0xXG4gICAgICAgICAgICA/ICd+JyArXG4gICAgICAgICAgICAgIGZpcnN0SGFsZk1vbnRoW2luZGV4MV0gK1xuICAgICAgICAgICAgICAnLCcgK1xuICAgICAgICAgICAgICBzZWNvbmRIYWxmTW9udGhbaW5kZXgxXSArXG4gICAgICAgICAgICAgICd+MCdcbiAgICAgICAgICAgIDogJ34nICtcbiAgICAgICAgICAgICAgZmlyc3RIYWxmTW9udGhbaW5kZXgyXSArXG4gICAgICAgICAgICAgICcsJyArXG4gICAgICAgICAgICAgIHNlY29uZEhhbGZNb250aFtpbmRleDJdICtcbiAgICAgICAgICAgICAgJ34wJztcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPSAnM34nICsgZGF0ZV92YWx1ZS5nZXREYXRlKCkgKyBwYXR0ZXJuO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2FubnVhbCc6XG4gICAgICBjYXNlICd5ZWFybHknOlxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9XG4gICAgICAgICAgJzR+JyArXG4gICAgICAgICAgZGF0ZV92YWx1ZS5nZXREYXRlKCkgK1xuICAgICAgICAgICd+JyArXG4gICAgICAgICAgKGRhdGVfdmFsdWUuZ2V0TW9udGgoKSArIDEpICtcbiAgICAgICAgICAnfjEnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2V2ZXJ5IDIgeWVhcnMnOlxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9XG4gICAgICAgICAgJzR+JyArXG4gICAgICAgICAgZGF0ZV92YWx1ZS5nZXREYXRlKCkgK1xuICAgICAgICAgICd+JyArXG4gICAgICAgICAgKGRhdGVfdmFsdWUuZ2V0TW9udGgoKSArIDEpICtcbiAgICAgICAgICAnfjInO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2V2ZXJ5IDMgeWVhcnMnOlxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9XG4gICAgICAgICAgJzR+JyArXG4gICAgICAgICAgZGF0ZV92YWx1ZS5nZXREYXRlKCkgK1xuICAgICAgICAgICd+JyArXG4gICAgICAgICAgKGRhdGVfdmFsdWUuZ2V0TW9udGgoKSArIDEpICtcbiAgICAgICAgICAnfjMnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2V2ZXJ5IDQgeWVhcnMnOlxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9XG4gICAgICAgICAgJzR+JyArXG4gICAgICAgICAgZGF0ZV92YWx1ZS5nZXREYXRlKCkgK1xuICAgICAgICAgICd+JyArXG4gICAgICAgICAgKGRhdGVfdmFsdWUuZ2V0TW9udGgoKSArIDEpICtcbiAgICAgICAgICAnfjQnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2V2ZXJ5IDUgeWVhcnMnOlxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9XG4gICAgICAgICAgJzR+JyArXG4gICAgICAgICAgZGF0ZV92YWx1ZS5nZXREYXRlKCkgK1xuICAgICAgICAgICd+JyArXG4gICAgICAgICAgKGRhdGVfdmFsdWUuZ2V0TW9udGgoKSArIDEpICtcbiAgICAgICAgICAnfjUnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2V2ZXJ5IDEwIHllYXJzJzpcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPVxuICAgICAgICAgICc0ficgK1xuICAgICAgICAgIGRhdGVfdmFsdWUuZ2V0RGF0ZSgpICtcbiAgICAgICAgICAnficgK1xuICAgICAgICAgIChkYXRlX3ZhbHVlLmdldE1vbnRoKCkgKyAxKSArXG4gICAgICAgICAgJ34xMCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnb25nb2luZyc6XG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID0gJzEwfjB+MH4wJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0byBiZSBkZWNpZGVkIGxhdGVyJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID0gJzV+MH4wfjAnO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgcGF0dGVybjogZnJlcXVlbmN5X2RldGFpbHMsXG4gICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzOiBjb250aW51b3VzX2ZhaWxlZF9kYXlzLFxuICAgIH07XG4gIH1cblxuICBnZXRPbkNvbXBsZXRpb25PZlJlc3BvbnNpYmlsaXR5KCkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxhbnlbXT4odGhpcy5lbnYuY29tcGxpYW5jZUdldCArICdyZXBvcnRzL29uQ29tcGxldGlvbk9mUmVwb3J0cycsIHtcbiAgICAgICAgaGVhZGVycyxcbiAgICAgIH0pXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cblxuICBjaGFuZ2VUaW1lWm9uZShkYXRlOiBhbnkpIHtcbiAgICBpZiAodHlwZW9mIGRhdGUgPT09ICdudW1iZXInKSB7XG4gICAgICBkYXRlID0gbmV3IERhdGUoZGF0ZSk7XG4gICAgfVxuICAgIGNvbnN0IGludkRhdGUgPSBuZXcgRGF0ZShcbiAgICAgIGRhdGUudG9Mb2NhbGVTdHJpbmcoJ2VuLVVTJywge1xuICAgICAgICB0aW1lWm9uZTogdGhpcy5hdXRoU2VydmljZT8udXNlckRldGFpbHM/LnRpbWV6b25lLFxuICAgICAgfSlcbiAgICApO1xuICAgIHJldHVybiBpbnZEYXRlO1xuICB9XG5cbiAgZ2V0UmVzcG9uc2liaWxpdHlMaXN0KHBheWxvYWQ6IGFueSkge1xuICAgIGNvbnN0IGxpbWl0ID0gMTAwO1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKSxcbiAgICApXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxhbnk+KFxuICAgICAgICBgJHt0aGlzLmVudi5jb21wbGlhbmNlR2V0fXNhaWxzUmVzcG9uc2liaWxpdGllc0xpc3QmcGFnZT0ke3BheWxvYWQ/LnBhZ2VOb30mbGltaXQ9JHtsaW1pdH0ke3BheWxvYWQ/LnNlYXJjaFRleHQgPyBgJmZpbHRlckRhdGFbc2VhcmNoVGVybV09JHtwYXlsb2FkPy5zZWFyY2hUZXh0fWAgOiAnJ30mYml6Q3ljbGVSZXF1aXJlZD0wJmluY2x1ZGU9YXNzaWduZWVzJmdyb3VwPWFsbGAsXG4gICAgICAgIHsgaGVhZGVycyB9XG4gICAgICApXG4gICAgICAucGlwZShyZXRyeSgxKSk7XG4gIH1cblxuICBnZXRSZXNwb25zaWJpbGl0aWVzQ291bnQocGF5bG9hZDogYW55KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdDxhbnk+KFxuICAgICAgICB0aGlzLmVudi5yZXNwb25zaWJpbGl0eVBvc3QgKyAnbWFuYWdlX3Jlc3BvbnNpYmlsaXRpZXNfcmVwb3J0c19jb3VudCcsXG4gICAgICAgIHBheWxvYWQsXG4gICAgICAgIHsgaGVhZGVycyB9XG4gICAgICApXG4gICAgICAucGlwZShyZXRyeSgxKSk7XG4gIH1cblxuICBnZXRBbGxSZXNwb25zaWJpbGl0aWVzKHBhZ2VObzogbnVtYmVyLCBwYXlsb2FkOiBhbnkpIHtcbiAgICBjb25zdCBidXNpbmVzc0N5Y2xlID0gdGhpcy5ncmNTZXJ2aWNlLmdldEJ1c2luZXNzQ3ljbGUoKTtcbiAgICBjb25zdCBmb3JtYXR0ZWRDeWNsZSA9IGJ1c2luZXNzQ3ljbGUuc2VsZWN0ZWRfY3ljbGVcbiAgICAgID8gZGF5anMoYnVzaW5lc3NDeWNsZS5zZWxlY3RlZF9jeWNsZS5zcGxpdCgnLScpWzBdKS5mb3JtYXQoJ1lZWVktTU0tREQnKSArIFxuICAgICAgICAnOicgKyBcbiAgICAgICAgZGF5anMoYnVzaW5lc3NDeWNsZS5zZWxlY3RlZF9jeWNsZS5zcGxpdCgnLScpWzFdKS5mb3JtYXQoJ1lZWVktTU0tREQnKVxuICAgICAgOiAnJztcbiAgICBcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKClcbiAgICAgIC5zZXQoJ3Rva2VuJywgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKSlcbiAgICAgIC5zZXQoJ2Jpel9jeWNsZScsIGZvcm1hdHRlZEN5Y2xlKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnlbXT4oXG4gICAgICB0aGlzLmVudi5jb21wbGlhbmNlR2V0ICsgQVBJLnJlc3BvbnNpYmlsaXR5TGlzdCArIGAmcGFnZT0ke3BhZ2VOb30mbGltaXQ9MTAke3BheWxvYWQ/LnNlYXJjaFRleHQgPyBgJmZpbHRlckRhdGFbc2VhcmNoVGVybV09JHtwYXlsb2FkPy5zZWFyY2hUZXh0fWAgOiAnJ31gICxcbiAgICAgIHsgaGVhZGVycyB9XG4gICAgKTtcbiAgfVxuXG4gIGZvcm1hdERhdGUoKSB7XG4gICAgY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IGRheSA9IFN0cmluZyhjdXJyZW50RGF0ZT8uZ2V0RGF0ZSgpKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgIGNvbnN0IG1vbnRoID0gU3RyaW5nKGN1cnJlbnREYXRlPy5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICBjb25zdCB5ZWFyID0gY3VycmVudERhdGU/LmdldEZ1bGxZZWFyKCk7XG4gICAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9IGAke2RheX0tJHttb250aH0tJHt5ZWFyfWA7XG4gICAgcmV0dXJuIGZvcm1hdHRlZERhdGU7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIGZyZXF1ZW5jeSBjb25maWd1cmF0aW9uIG9iamVjdCBpbnRvIGEgc3RhbmRhcmRpemVkIEZyZXF1ZW5jeU9iamVjdCBmb3JtYXQuXG4gICAqIFxuICAgKiBAcGFyYW0gZnJlcXVlbmN5IC0gVGhlIGlucHV0IGZyZXF1ZW5jeSBjb25maWd1cmF0aW9uIG9iamVjdCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAgICogLSBjYXNlOiBUaGUgdHlwZSBvZiBmcmVxdWVuY3kgKCdvbmVfdGltZScgfCAnZGFpbHknIHwgJ3dlZWtseScgfCAnbW9udGhseScgfCAncXVhcnRlcmx5JyB8ICdzZW1lc3RlcicgfCAneWVhcmx5JyB8ICdyYW5kb20nIHwgJ29uZ29pbmcnIHwgJ29uX2NvbXBsZXRpb25fb2YnIHwgJ2JpYW5udWFsbHknKVxuICAgKiAtIHdpbmRvdzogTnVtYmVyIG9mIGRheXMgYmVmb3JlIHRoZSB0YXNrIGNhbiBiZSBzdGFydGVkXG4gICAqIC0gZmFpbGVkQWZ0ZXI6IE51bWJlciBvZiBkYXlzIGFmdGVyIHdoaWNoIHRoZSB0YXNrIGlzIGNvbnNpZGVyZWQgZmFpbGVkXG4gICAqIC0gY29udGludW91c19mYWlsZWRfZGF5czogTnVtYmVyIG9mIGRheXMgYWZ0ZXIgd2hpY2ggdGhlIHRhc2sgaXMgYXV0by1kZWFjdGl2YXRlZFxuICAgKiAtIGRheTogVGhlIGRheSBvZiBvY2N1cnJlbmNlXG4gICAqIC0gdGltZUluMjRIcjogVGltZSBpbiAyNC1ob3VyIGZvcm1hdFxuICAgKiAtIGV2ZXJ5OiBGcmVxdWVuY3kgaW50ZXJ2YWxcbiAgICogLSBzZWxlY3RlZERheTogQXJyYXkgb2Ygc2VsZWN0ZWQgZGF5cyBmb3Igd2Vla2x5IGZyZXF1ZW5jeSAoMS03IHJlcHJlc2VudGluZyBNb25kYXktU3VuZGF5KVxuICAgKiAtIHNlbGVjdGVkTW9udGg6IEFycmF5IG9mIHNlbGVjdGVkIG1vbnRocyAoMC0xMSByZXByZXNlbnRpbmcgSmFudWFyeS1EZWNlbWJlcilcbiAgICogLSBzdGFydEZyb206IFVuaXggdGltZXN0YW1wIGZvciB0aGUgc3RhcnQgZGF0ZVxuICAgKiAtIGxpZmVjeWNsZURldGFpbHM6IFN0cmluZyBpbiBmb3JtYXQgXCJZWVlZLU1NLUREfn5OXCIgd2hlcmUgTiBpcyB0aGUgbnVtYmVyIG9mIG9jY3VycmVuY2VzXG4gICAqIC0gcmFuZG9tVHlwZVNlbGVjdGVkOiBJbmRleCBmb3IgcmFuZG9tIGZyZXF1ZW5jeSB0eXBlICgwOiB3ZWVrbHksIDE6IG1vbnRobHksIDI6IHF1YXJ0ZXJseSwgMzogeWVhcmx5KVxuICAgKiAtIHJhbmRvbUluc3RhbmNlczogTnVtYmVyIG9mIHJhbmRvbSBvY2N1cnJlbmNlc1xuICAgKiAtIHNlbGVjdGVkVHlwZTogTnVtYmVyIG9mIHJlbWluZGVycyBmb3Igb25nb2luZyBmcmVxdWVuY3lcbiAgICogLSBzZWxlY3RlZE9uZ29pbmdUeXBlOiBJbmRleCBmb3Igb25nb2luZyBmcmVxdWVuY3kgdHlwZSAoMTogd2VlaywgMjogbW9udGgsIDM6IHF1YXJ0ZXIsIDQ6IHNlbWVzdGVyLCA1OiB5ZWFyKVxuICAgKiBcbiAgICogQHJldHVybnMgQSBGcmVxdWVuY3lPYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZTpcbiAgICogLSB0eXBlOiBGcmVxdWVuY3kgdHlwZVxuICAgKiAtIHN0YXJ0QmVmb3JlOiBEYXlzIGJlZm9yZSB0YXNrIGNhbiBzdGFydFxuICAgKiAtIGVuZEFmdGVyOiBEYXlzIGFmdGVyIHdoaWNoIHRhc2sgZmFpbHNcbiAgICogLSBhdXRvRGVhY3RpdmF0ZTogRGF5cyBhZnRlciB3aGljaCB0YXNrIGlzIGRlYWN0aXZhdGVkXG4gICAqIC0gZGF5OiBEYXkgb2Ygb2NjdXJyZW5jZVxuICAgKiAtIHRpbWU6IFRpbWUgaW4gMjQtaG91ciBmb3JtYXRcbiAgICogLSByZXBlYXRPcHRpb25zOiB7XG4gICAqICAgICBldmVyeTogbnVtYmVyLFxuICAgKiAgICAgcmVwZWF0T246IHN0cmluZyAoYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIHNlbGVjdGVkIGRheXMvbW9udGhzKSxcbiAgICogICAgIGxpZmVjeWNsZToge1xuICAgKiAgICAgICBzdGFydEZyb206IHN0cmluZyAoWVlZWS1NTS1ERCksXG4gICAqICAgICAgIGVuZEJ5Pzogc3RyaW5nIChZWVlZLU1NLUREKSxcbiAgICogICAgICAgZW5kQWZ0ZXI/OiBudW1iZXJcbiAgICogICAgIH1cbiAgICogICB9XG4gICAqIC0gcmFuZG9tPzogeyB0eXBlOiBzdHJpbmcsIG9jY3VycmVuY2U6IG51bWJlciB9XG4gICAqIC0gb25Db21wbGV0ZToge31cbiAgICogLSBvbkdvaW5nOiB7IHJlbWluZGVyczogbnVtYmVyLCBzdGFydE9mOiAnd2VlaycgfCAnbW9udGgnIHwgJ3F1YXJ0ZXInIHwgJ3NlbWVzdGVyJyB8ICd5ZWFyJyB9XG4gICAqIFxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IGZyZXF1ZW5jeSA9IHtcbiAgICogICBjYXNlOiAnd2Vla2x5JyxcbiAgICogICB3aW5kb3c6IDIsXG4gICAqICAgZmFpbGVkQWZ0ZXI6IDEsXG4gICAqICAgY29udGludW91c19mYWlsZWRfZGF5czogMyxcbiAgICogICBkYXk6IDEsXG4gICAqICAgdGltZUluMjRIcjogJzA5OjAwOjAwJyxcbiAgICogICBldmVyeTogMSxcbiAgICogICBzZWxlY3RlZERheTogWzEsIDMsIDVdLCAvLyBNb25kYXksIFdlZG5lc2RheSwgRnJpZGF5XG4gICAqICAgc3RhcnRGcm9tOiAxNjc4OTAwMDAwLFxuICAgKiAgIGxpZmVjeWNsZURldGFpbHM6ICcyMDI0LTEyLTMxfn4xMCdcbiAgICogfTtcbiAgICogY29uc3QgcmVzdWx0ID0gc2V0RnJlcXVlbmN5T2JqZWN0KGZyZXF1ZW5jeSk7XG4gICAqIGBgYFxuICAgKi9cbiAgc2V0RnJlcXVlbmN5T2JqZWN0KGZyZXF1ZW5jeTogYW55KTogRnJlcXVlbmN5T2JqZWN0IHwgbnVsbCB7XG4gICAgY29uc29sZS5sb2coZnJlcXVlbmN5LCBcImZyZXF1ZW5jeVwiKTtcbiAgICBjb25zdCByZXBlYXRPcHRpb25zID0gdGhpcy5yZXBlYXRPcHRpb25zKGZyZXF1ZW5jeSk7XG4gICAgY29uc3QgbGlmZWN5Y2xlRGV0YWlscyA9IGZyZXF1ZW5jeS5saWZlY3ljbGVEZXRhaWxzLnNwbGl0KCd+ficpO1xuICAgIGNvbnN0IGZyZXF1ZW5jeU9iamVjdDogRnJlcXVlbmN5T2JqZWN0ID0ge1xuICAgICAgdHlwZTogZnJlcXVlbmN5LmNhc2UsXG4gICAgICBzdGFydEJlZm9yZTogZnJlcXVlbmN5LndpbmRvdyxcbiAgICAgIGVuZEFmdGVyOiBmcmVxdWVuY3kuZmFpbGVkQWZ0ZXIsXG4gICAgICBhdXRvRGVhY3RpdmF0ZTogZnJlcXVlbmN5LmNvbnRpbnVvdXNfZmFpbGVkX2RheXMsXG4gICAgICBkYXk6IGZyZXF1ZW5jeS5kYXksIFxuICAgICAgdGltZTogZnJlcXVlbmN5LnRpbWVJbjI0SHIsXG4gICAgICByZXBlYXRPcHRpb25zOiB7XG4gICAgICAgIGV2ZXJ5OiBmcmVxdWVuY3kuZXZlcnksXG4gICAgICAgIHJlcGVhdE9uOiByZXBlYXRPcHRpb25zLFxuICAgICAgICBsaWZlY3ljbGU6IHtcbiAgICAgICAgICBzdGFydEZyb206IG1vbWVudChmcmVxdWVuY3kuc3RhcnRGcm9tICogMTAwMCkuZm9ybWF0KCdZWVlZLU1NLUREJyksXG4gICAgICAgICAgZW5kQnk6bGlmZWN5Y2xlRGV0YWlsc1swXSAhPT0gJzAwMDAtMDAtMDAnID8gbW9tZW50KGxpZmVjeWNsZURldGFpbHNbMF0gLCAnREQtTU1NTS1ZWVlZJykuZm9ybWF0KCdZWVlZLU1NLUREJykgOiB1bmRlZmluZWQsXG4gICAgICAgICAgZW5kQWZ0ZXI6IFxuICAgICAgICAgICAgICAgIGZyZXF1ZW5jeS5jYXNlID09PSAnb25lX3RpbWUnXG4gICAgICAgICAgICAgICAgICAgID8gMVxuICAgICAgICAgICAgICAgICAgICA6IGxpZmVjeWNsZURldGFpbHNbMV0gIT09ICcwJ1xuICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KGxpZmVjeWNsZURldGFpbHNbMV0pXG4gICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgcmFuZG9tOiB0aGlzLmdldFJhbmRvbUZyZXF1ZW5jeShmcmVxdWVuY3kpLFxuICAgICAgb25Db21wbGV0ZTogZnJlcXVlbmN5LmNhc2UgPT09ICdvbl9jb21wbGV0ZScgPyBmcmVxdWVuY3kub25Db21wbGV0aW9uIDoge30sXG4gICAgICBvbkdvaW5nOiB0aGlzLmdldE9uZ29pbmcoZnJlcXVlbmN5KSxcbiAgICB9ICBcbiAgICByZXR1cm4gZnJlcXVlbmN5T2JqZWN0O1xuICB9IFxuXG4gIHJlcGVhdE9wdGlvbnMoZnJlcXVlbmN5OiBhbnkpOiBzdHJpbmcge1xuICAgaWYoZnJlcXVlbmN5Py5zZWxlY3RlZERheT8ubGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IHdlZWtEYXlzID0gW107XG4gICAgIGZvcihsZXQgaSA9IDA7IGkgPCA3OyBpICsrKSB7XG4gICAgICBpZihmcmVxdWVuY3kuc2VsZWN0ZWREYXkuaW5jbHVkZXMoaSArIDEpKSB7XG4gICAgICAgIHdlZWtEYXlzLnB1c2goMSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3ZWVrRGF5cy5wdXNoKDApO1xuICAgICAgfVxuICAgICB9XG4gICAgIGNvbnNvbGUubG9nKHdlZWtEYXlzLCAnd2Vla0RheXMnLCB3ZWVrRGF5cy5qb2luKCcnKSk7XG4gICAgIHJldHVybiB3ZWVrRGF5cy5qb2luKCcnKTtcbiAgIH0gZWxzZSBpZihmcmVxdWVuY3k/LnNlbGVjdGVkTW9udGg/Lmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCBtb250aHMgPSBbIF07XG4gICAgZm9yKGxldCBpID0gMDsgaSA8IDEyOyBpICsrKSB7XG4gICAgICBpZihmcmVxdWVuY3k/LnNlbGVjdGVkTW9udGg/LmluY2x1ZGVzKGkpKSB7XG4gICAgICAgIG1vbnRocy5wdXNoKDEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbW9udGhzLnB1c2goMCk7XG4gICAgICB9XG4gICB9XG4gICByZXR1cm4gbW9udGhzLmpvaW4oJycpO1xuICAgfSBlbHNlIHtcbiAgICByZXR1cm4gJyc7XG4gICB9XG4gIH1cblxuICBnZXRPbmdvaW5nKGZyZXF1ZW5jeTogYW55KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlbWluZGVyczogZnJlcXVlbmN5Py5zZWxlY3RlZFR5cGUsXG4gICAgICBzdGFydE9mOiBmcmVxdWVuY3k/LnNlbGVjdGVkVHlwZSA/ICBbJ3dlZWsnLCdtb250aCcgLCdxdWFydGVyJyAsJ3NlbWVzdGVyJyAsJ3llYXInXVtmcmVxdWVuY3k/LnNlbGVjdGVkT25nb2luZ1R5cGUgLSAxXSA6ICcnXG4gICAgfVxuICB9XG4gIGdldFJhbmRvbUZyZXF1ZW5jeShmcmVxdWVuY3k6IGFueSkge1xuICAgIHJldHVybiB7XG4gICAgIHR5cGU6IFsnd2Vla2x5JywgJ21vbnRobHknLCAncXVhcnRlcmx5JywgJ3llYXJseSddW2ZyZXF1ZW5jeT8ucmFuZG9tVHlwZVNlbGVjdGVkXSxcbiAgICAgb2NjdXJyZW5jZTogZnJlcXVlbmN5Py5yYW5kb21JbnN0YW5jZXNcbiAgICB9XG4gIH1cblxuICBjcmVhdGVGcmVxdWVuY3lQYXR0ZXJuKGZyZXF1ZW5jeTogYW55KSB7XG4gICAgbGV0IHBhdHRlcm4gPSAnJztcbiAgICBsZXQgc2VsZWN0ZWREYXkgPSBmcmVxdWVuY3kuZGF5XG4gICAgc3dpdGNoIChmcmVxdWVuY3kudHlwZSkge1xuXG4gICAgICBjYXNlICdvbmVfdGltZSc6XG4gICAgICAgIGxldCBkYXRlX3ZhbHVlID0gZnJlcXVlbmN5LnJlcGVhdE9wdGlvbnM/LmxpZmVjeWNsZT8uc3RhcnRGcm9tPy5zcGxpdCgnLScpO1xuXG4gICAgICAgIHBhdHRlcm4gPVxuICAgICAgICAgICcwficgK1xuICAgICAgICAgICcnICtcbiAgICAgICAgICBkYXRlX3ZhbHVlWzBdICtcbiAgICAgICAgICAnficgK1xuICAgICAgICAgIChkYXRlX3ZhbHVlWzFdKSArXG4gICAgICAgICAgJ34nICtcbiAgICAgICAgICBkYXRlX3ZhbHVlWzJdO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2RhaWx5JzpcbiAgICAgICAgcGF0dGVybiA9IGAxfjB+MH4ke2ZyZXF1ZW5jeS5yZXBlYXRPcHRpb25zPy5ldmVyeX1gO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3dlZWtseSc6XG4gICAgICAgIHBhdHRlcm4gPSBgMn4ke3RoaXMuZ2V0RGF5KGZyZXF1ZW5jeS5yZXBlYXRPcHRpb25zPy5yZXBlYXRPbil9fjB+JHtmcmVxdWVuY3kucmVwZWF0T3B0aW9ucz8uZXZlcnl9YDtcbiAgICAgICAgYnJlYWs7ICAgXG4gICAgICBjYXNlICdtb250aGx5JzpcbiAgICAgICAgcGF0dGVybiA9XG4gICAgICAgICAgYDN+JHtzZWxlY3RlZERheX1+JHt0aGlzLmdldE1vbnRoKGZyZXF1ZW5jeS5yZXBlYXRPcHRpb25zPy5yZXBlYXRPbil9fjBgO1xuICAgICAgICBicmVhaztcbiAgICAgXG4gICAgICBjYXNlICdxdWFydGVybHknOlxuICAgICAgICBwYXR0ZXJuID0gYDd+JHtzZWxlY3RlZERheX1+JHt0aGlzLmdldE1vbnRoKGZyZXF1ZW5jeS5yZXBlYXRPcHRpb25zPy5yZXBlYXRPbil9fjBgO1xuICAgICAgICBicmVhaztcbiAgICAgXG4gICAgIGNhc2UgJ3NlbWVzdGVyJzpcbiAgICAgIHBhdHRlcm4gPSBgOX4ke3NlbGVjdGVkRGF5fX4ke3RoaXMuZ2V0TW9udGgoZnJlcXVlbmN5LnJlcGVhdE9wdGlvbnM/LnJlcGVhdE9uKX1+MGA7XG4gICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3llYXJseSc6XG4gICAgICAgIHBhdHRlcm4gPVxuICAgICAgICAgIGA0fiR7c2VsZWN0ZWREYXl9fiR7dGhpcy5nZXRNb250aChmcmVxdWVuY3kucmVwZWF0T3B0aW9ucz8ucmVwZWF0T24pfX4xYDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdvbmdvaW5nJzpcbiAgICAgICAgY29uc3QgdHlwZSA9IFsnd2VlaycsICdtb250aCcsICdxdWFydGVyJywgJ3NlbWVzdGVyJywgJ3llYXInXTtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0eXBlLmluZGV4T2YoZnJlcXVlbmN5Lm9uR29pbmc/LnN0YXJ0T2YpO1xuICAgICAgICBwYXR0ZXJuID0gYDEwfiR7ZnJlcXVlbmN5Lm9uR29pbmc/LnJlbWluZGVyc31+JHtpbmRleH1+MGA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncmFuZG9tJzogXG4gICAgICBsZXQgcmFuZG9tVHlwZSA9IFsnd2Vla2x5JywgJ21vbnRobHknLCAncXVhcnRlcmx5JywgJ3llYXJseSddO1xuICAgICAgbGV0IHJhbmRvbUluZGV4ID0gcmFuZG9tVHlwZS5pbmRleE9mKGZyZXF1ZW5jeS5yYW5kb20udHlwZSk7XG4gICAgICBwYXR0ZXJuID0gYDh+JHtyYW5kb21JbmRleCArIDF9fiR7cmFuZG9tSW5kZXh9fiR7ZnJlcXVlbmN5LnJhbmRvbS5vY2N1cnJlbmNlfWA7XG4gICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHBhdHRlcm4gPSBgNX4ke2ZyZXF1ZW5jeS5yYW5kb21JbnN0YW5jZXN9fjB+MGA7XG4gICAgfVxuICAgIHJldHVybiBwYXR0ZXJuO1xuICB9XG5cbiAgZ2V0RGF5KHJlcGVhdE9wdGlvbnM6IHN0cmluZykge1xuICAgIGNvbnN0IGRheSA9IHJlcGVhdE9wdGlvbnMuc3BsaXQoJycpLm1hcChOdW1iZXIpO1xuICAgIGNvbnN0IGRheU5hbWUgPSBbXTtcbiAgICBmb3IobGV0IGkgPSAwOyBpIDwgNzsgaSArKykge1xuICAgICAgaWYoZGF5W2ldID09PSAxKSB7XG4gICAgICAgIGRheU5hbWUucHVzaChpICsgMSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBkYXlOYW1lLmpvaW4oJywnKTtcbiAgfVxuXG4gIGdldE1vbnRoKHJlcGVhdE9wdGlvbnM6IHN0cmluZykge1xuICAgICAgY29uc3QgbW9udGggPSByZXBlYXRPcHRpb25zLnNwbGl0KCcnKS5tYXAoTnVtYmVyKTtcbiAgICAgIGNvbnN0IG1vbnRoTmFtZSA9IFtdO1xuICAgICAgZm9yKGxldCBpID0gMDsgaSA8IDEyOyBpICsrKSB7XG4gICAgICAgIGlmKG1vbnRoW2ldID09PSAxKSB7XG4gICAgICAgICAgbW9udGhOYW1lLnB1c2goaSArIDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbW9udGhOYW1lLmpvaW4oJywnKTtcbiAgfVxuICAgIFxuICAgIGdldExpZmVjeWNsZVBhdHRlcm4gKGZyZXF1ZW5jeTogYW55KSB7XG4gICAgICBsZXQgcGF0dGVybiA9IFwiMDAwMC0wMC0wMH5+MFwiO1xuICAgICAgaWYoIWZyZXF1ZW5jeT8ucmVwZWF0T3B0aW9ucz8ubGlmZWN5Y2xlPy5lbmRCeSAmJiAhZnJlcXVlbmN5Py5yZXBlYXRPcHRpb25zPy5saWZlY3ljbGU/LmVuZEFmdGVyKSB7XG4gICAgICAgIHJldHVybiAge1xuICAgICAgICAgIHN0YXJ0RnJvbTogbmV3IERhdGUoZnJlcXVlbmN5Py5yZXBlYXRPcHRpb25zPy5saWZlY3ljbGU/LnN0YXJ0RnJvbSkuZ2V0VGltZSgpIC8gMTAwMCxcbiAgICAgICAgICAgcGF0dGVyblxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYoZnJlcXVlbmN5Py5yZXBlYXRPcHRpb25zPy5saWZlY3ljbGU/LmVuZEJ5KSB7XG4gICAgICAgIHJldHVybiAge1xuICAgICAgICAgIHN0YXJ0RnJvbTogbmV3IERhdGUoZnJlcXVlbmN5Py5yZXBlYXRPcHRpb25zPy5saWZlY3ljbGU/LnN0YXJ0RnJvbSkuZ2V0VGltZSgpIC8gMTAwMCxcbiAgICAgICAgICAgcGF0dGVybjogdGhpcy5mb3JtYXREYXRlU3RyaW5nKGZyZXF1ZW5jeT8ucmVwZWF0T3B0aW9ucz8ubGlmZWN5Y2xlPy5lbmRCeSlcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmKGZyZXF1ZW5jeT8ucmVwZWF0T3B0aW9ucz8ubGlmZWN5Y2xlPy5lbmRBZnRlcikge1xuICAgICAgICByZXR1cm4gIHtcbiAgICAgICAgICBzdGFydEZyb206IG5ldyBEYXRlKGZyZXF1ZW5jeT8ucmVwZWF0T3B0aW9ucz8ubGlmZWN5Y2xlPy5zdGFydEZyb20pLmdldFRpbWUoKSAvIDEwMDAsXG4gICAgICAgICAgIHBhdHRlcm46IFwiMDAwMC0wMC0wMH5+XCIgKyBmcmVxdWVuY3k/LnJlcGVhdE9wdGlvbnM/LmxpZmVjeWNsZT8uZW5kQWZ0ZXJcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3RhcnRGcm9tOiBuZXcgRGF0ZShmcmVxdWVuY3k/LnJlcGVhdE9wdGlvbnM/LmxpZmVjeWNsZT8uc3RhcnRGcm9tKS5nZXRUaW1lKCkgLyAxMDAwLFxuICAgICAgICBwYXR0ZXJuOiBcIjAwMDAtMDAtMDB+fjBcIlxuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICogQ29udmVydHMgYSBkYXRlIHN0cmluZyBpbiBcIllZWVktTU0tRERcIiBmb3JtYXQgdG8gXCJERC1Nb250aC1ZWVlZfn4wXCIuXG4gKiBcbiAqIEBwYXJhbSB7c3RyaW5nfSBkYXRlU3RyaW5nIC0gVGhlIGlucHV0IGRhdGUgc3RyaW5nIGluIFwiWVlZWS1NTS1ERFwiIGZvcm1hdC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIGZvcm1hdHRlZCBkYXRlIHN0cmluZyBpbiBcIkRELU1vbnRoLVlZWVl+fjBcIiBmb3JtYXQuXG4gKiBcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBmb3JtYXREYXRlU3RyaW5nKFwiMjAyNS0wMy0yN1wiKTsgLy8gUmV0dXJucyBcIjI3LU1hcmNoLTIwMjV+fjBcIlxuICogYGBgXG4gKi9cbiBmb3JtYXREYXRlU3RyaW5nKGRhdGVTdHJpbmc6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShkYXRlU3RyaW5nKTtcbiAgXG4gIGNvbnN0IGRheSA9IGRhdGUuZ2V0RGF0ZSgpO1xuICBjb25zdCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICBcbiAgY29uc3QgbW9udGhOYW1lcyA9IFtcbiAgICAgIFwiSmFudWFyeVwiLCBcIkZlYnJ1YXJ5XCIsIFwiTWFyY2hcIiwgXCJBcHJpbFwiLCBcIk1heVwiLCBcIkp1bmVcIixcbiAgICAgIFwiSnVseVwiLCBcIkF1Z3VzdFwiLCBcIlNlcHRlbWJlclwiLCBcIk9jdG9iZXJcIiwgXCJOb3ZlbWJlclwiLCBcIkRlY2VtYmVyXCJcbiAgXTtcbiAgY29uc3QgbW9udGggPSBtb250aE5hbWVzW2RhdGUuZ2V0TW9udGgoKV07XG5cbiAgcmV0dXJuIGAke2RheX0tJHttb250aH0tJHt5ZWFyfX5+MGA7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBuYW1lIG9mIGEgbW9udGggYmFzZWQgb24gaXRzIG51bWVyaWNhbCB2YWx1ZS5cbiAqIFxuICogQHBhcmFtIHtudW1iZXJ9IG1vbnRoIC0gVGhlIG1vbnRoIG51bWJlciAoMS0xMikgd2hlcmU6XG4gKiAgIDEgPSBKYW51YXJ5XG4gKiAgIDIgPSBGZWJydWFyeVxuICogICAuLi5cbiAqICAgMTIgPSBEZWNlbWJlclxuICogXG4gKiBAcmV0dXJucyB7c3RyaW5nIHwgdW5kZWZpbmVkfSBUaGUgbmFtZSBvZiB0aGUgbW9udGggKGUuZy4sIFwiSkFOXCIsIFwiRkVCXCIsIGV0Yy4pIG9yIHVuZGVmaW5lZCBpZiB0aGUgbW9udGggbnVtYmVyIGlzIGludmFsaWRcbiAqIFxuICogQGV4YW1wbGVcbiAqIGdldE1vbnRoTmFtZSgxKSAgLy8gUmV0dXJuczogXCJKYW5cIlxuICogZ2V0TW9udGhOYW1lKDEyKSAvLyBSZXR1cm5zOiBcIkRlY1wiXG4gKiBnZXRNb250aE5hbWUoMTMpIC8vIFJldHVybnM6IHVuZGVmaW5lZFxuICovXG5wdWJsaWMgZ2V0TW9udGhOYW1lKHNlbGVjdGVkTW9udGg6IG51bWJlcikgeyAgXG4gIHJldHVybiBNT05USF9OQU1FUy5maW5kKChtb250aDogYW55KSA9PiBtb250aC52YWx1ZSA9PT0gc2VsZWN0ZWRNb250aCk/Lm1vbnRoO1xufVxuXG59XG4iXX0=
|
|
846
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlcXVlbmN5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2ZyZXF1ZW5jeS9mcmVxdWVuY3kuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQWMsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFHLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3hDLE9BQU8sTUFBTSxNQUFNLGVBQWUsQ0FBQztBQUNuQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFOUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXBELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7OztBQUluRCxNQUFNLE9BQU8sZ0JBQWdCO0lBcUUzQixZQUNVLElBQWdCLEVBQ2hCLFdBQXdCLEVBQ3hCLFVBQXNCLEVBQ2xCLE1BQXVCO1FBSDNCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQXZFekIsZUFBVSxHQUFrQjtZQUNqQyxTQUFTO1lBQ1QsVUFBVTtZQUNWLE9BQU87WUFDUCxPQUFPO1lBQ1AsS0FBSztZQUNMLE1BQU07WUFDTixNQUFNO1lBQ04sUUFBUTtZQUNSLFdBQVc7WUFDWCxTQUFTO1lBQ1QsVUFBVTtZQUNWLFVBQVU7U0FDWCxDQUFDO1FBRUssWUFBTyxHQUFrQjtZQUM5QixRQUFRO1lBQ1IsU0FBUztZQUNULFdBQVc7WUFDWCxVQUFVO1lBQ1YsUUFB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QUFDLEtBQVUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssS0FBSyxhQUFhLENBQUMsRUFBRSxLQUFLLENBQUM7SUFDaEYsQ0FBQzsrR0EzMkJZLGdCQUFnQjttSEFBaEIsZ0JBQWdCLGNBRmYsTUFBTTs7NEZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBMEVJLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyAgcmV0cnkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9ucyB9IGZyb20gJy4uLy4uL2NvbmZpZ3VyYXRpb25zJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vd29ya2Zsb3ctc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50L21vbWVudCc7XG5pbXBvcnQgeyBERUZBVUxUX1RJTUUgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvdGltZS5jb25zdGFudHMnO1xuaW1wb3J0IHsgRnJlcXVlbmN5T2JqZWN0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9mcmVxdWVuY3kuaW50ZXJmYWNlJztcbmltcG9ydCB7IEFQSSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9hcGkuY29uc3RhbnRzJztcbmltcG9ydCB7IEdyY1NlcnZpY2UgfSBmcm9tICcuLi8uLi93b3JrZmxvdy9zaGFyZWQvc2VydmljZXMvZ3JjLnNlcnZpY2UnO1xuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcbmltcG9ydCB7IE1PTlRIX05BTUVTIH0gZnJvbSAnLi9mcmVxdWVuY3kuY29uc3RhbnQnO1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEZyZXF1ZW5jeVNlcnZpY2Uge1xuICBwdWJsaWMgbW9udGhBcnJheTogQXJyYXk8c3RyaW5nPiA9IFtcbiAgICAnSmFudWFyeScsXG4gICAgJ0ZlYnJ1YXJ5JyxcbiAgICAnTWFyY2gnLFxuICAgICdBcHJpbCcsXG4gICAgJ01heScsXG4gICAgJ0p1bmUnLFxuICAgICdKdWx5JyxcbiAgICAnQXVndXN0JyxcbiAgICAnU2VwdGVtYmVyJyxcbiAgICAnT2N0b2JlcicsXG4gICAgJ05vdmVtYmVyJyxcbiAgICAnRGVjZW1iZXInLFxuICBdO1xuXG4gIHB1YmxpYyBkYXlOYW1lOiBBcnJheTxzdHJpbmc+ID0gW1xuICAgICdNb25kYXknLFxuICAgICdUdWVzZGF5JyxcbiAgICAnV2VkbmVzZGF5JyxcbiAgICAnVGh1cnNkYXknLFxuICAgICdGcmlkYXknLFxuICAgICdTYXR1cmRheScsXG4gICAgJ1N1bmRheScsXG4gIF07IC8vIGZ1bGwgZGF5IG5hbWVcblxuICBwdWJsaWMgcXVhcnRlcmx5TW9udGg6IEFycmF5PHN0cmluZz4gPSBbXG4gICAgJ0phbnVhcnksIEFwcmlsLCBKdWx5LCBPY3RvYmVyJyxcbiAgICAnRmVicnVhcnksIE1heSwgQXVndXN0LCBOb3ZlbWJlcicsXG4gICAgJ01hcmNoLCBKdW5lLCBTZXB0ZW1iZXIsIERlY2VtYmVyJyxcbiAgXTtcblxuICBwdWJsaWMgZGF0ZUNvbmZpZyA9IHtcbiAgICBmb3JtYXQ6ICdERCBNTSBZWVlZJyxcbiAgICBzaG93R29Ub0N1cnJlbnQ6IGZhbHNlLFxuICB9O1xuXG4gIHB1YmxpYyBmcmVxdWVuY3lJbmZvID0ge1xuICAgIHBsYWNlaG9sZGVyOiAnJyxcbiAgICBwYXR0ZXJuOiAnJyxcbiAgICBjYXNlOiAnJyxcbiAgICBmYWlsZWRBZnRlcjogMCxcbiAgICB3aW5kb3c6IDAsXG4gICAgdGltZUluMTJocjogJycsXG4gICAgdGltZUluMjRIcjogJycsXG4gICAgbGlmZWN5Y2xlRGV0YWlsczogJzAwMDAtMDAtMDB+fjAnLFxuICAgIHN0YXJ0RnJvbTogTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCksXG4gICAgcmVwb3J0SWQ6IDAsXG4gICAgZmFpbGVkX3RpbWVfdXRjOiBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKSxcbiAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzOiAwLFxuICAgIGRhdGVPZk1vZGlmaWVkOiAwLFxuICAgIHN0YXJ0RGF0ZTogJycsXG4gIH07XG5cbiAgcHVibGljIGZyZXF1ZW5jeURldGFpbHM6IG9iamVjdCA9IHtcbiAgICBwYXR0ZXJuOiAnJyxcbiAgICBub3RpZmljYXRpb25QZW5kaW5nOiAwLFxuICAgIGRhdGVPZk1vZGlmaWVkOiAwLFxuICAgIGRlYWN0aXZhdGlvblZhbHVlOiAwLFxuICAgIHNlbGVjdGVkUmVwb3J0OiAwLFxuICAgIGxpZmVjeWNsZTogJzAwMDAtMDAtMDB+fjAnLFxuICAgIHN0YXJ0RGF0ZTogTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApLFxuICAgIHN0YXJ0T25UaGVEYXk6IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKSxcbiAgICB3aW5kb3c6IDAsXG4gICAgZmFpbGVkOiAwLFxuICAgIHRpbWU6IERFRkFVTFRfVElNRSxcbiAgfTtcblxuICBwcml2YXRlIGVudiE6IGFueTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgIHByaXZhdGUgZ3JjU2VydmljZTogR3JjU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBjb25maWc/OiBDb25maWd1cmF0aW9uc1xuICApIHtcbiAgICBpZiAoY29uZmlnKSB7XG4gICAgICB0aGlzLmVudiA9IGNvbmZpZy5lbnZDb25maWc7XG4gICAgfVxuICB9XG5cbiAgdGltZUZyb20xMmhUbzI0aCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHZhbHVlICE9IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgdGltZV9hcnIgPSB2YWx1ZS5zcGxpdCgnICcpO1xuICAgICAgY29uc3QgbWVyaWRpYW4gPSB0aW1lX2FyclsxXTtcbiAgICAgIGNvbnN0IGhyX21pbiA9IHRpbWVfYXJyWzBdLnNwbGl0KCc6JykubWFwKE51bWJlcik7XG4gICAgICBjb25zdCBociA9IGhyX21pblswXTtcbiAgICAgIGNvbnN0IG1pbiA9IGhyX21pblsxXTtcblxuICAgICAgbGV0IHJldHVybl90aW1lID0gJyc7XG5cbiAgICAgIGlmIChtZXJpZGlhbj8udG9Mb3dlckNhc2UoKSA9PSAncG0nKSB7XG4gICAgICAgIGlmIChociA9PSAxMikge1xuICAgICAgICAgIHJldHVybl90aW1lID0gMTIgKyAnOicgKyBtaW4gKyAnOjAwJztcbiAgICAgICAgfSBlbHNlIGlmIChociA8IDEyKSB7XG4gICAgICAgICAgcmV0dXJuX3RpbWUgPSAraHIgKyAxMiArICc6JyArIG1pbiArICc6MDAnO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoaHIgPT0gMTIpIHtcbiAgICAgICAgICByZXR1cm5fdGltZSA9ICcwMDonICsgbWluICsgJzowMCc7XG4gICAgICAgIH0gZWxzZSBpZiAoaHIgPCAxMikge1xuICAgICAgICAgIHJldHVybl90aW1lID0gaHIgKyAnOicgKyBtaW4gKyAnOjAwJztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmV0dXJuX3RpbWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cblxuICB0aW1lSW4xMih2YWx1ZTogYW55KSB7XG4gICAgaWYgKHZhbHVlICE9IHVuZGVmaW5lZCkge1xuICAgICAgbGV0IGhyO1xuICAgICAgbGV0IG1pbjtcbiAgICAgIGxldCBtZXJpZGlhbjtcbiAgICAgIGlmICh2YWx1ZS5zcGxpdCgnOicpWzBdID49IDEyKSB7XG4gICAgICAgIGhyID0gdmFsdWUuc3BsaXQoJzonKVswXSA9PT0gJzEyJyA/IDEyIDogdmFsdWUuc3BsaXQoJzonKVswXSAtIDEyO1xuICAgICAgICBtaW4gPSB2YWx1ZS5zcGxpdCgnOicpWzFdO1xuICAgICAgICBpZiAobWluLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgICBtaW4gPSAnMCcgKyBtaW47XG4gICAgICAgIH1cbiAgICAgICAgbWVyaWRpYW4gPSAncG0nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaHIgPSB2YWx1ZS5zcGxpdCgnOicpWzBdID09ICcwMCcgPyAxMiA6IHZhbHVlLnNwbGl0KCc6JylbMF07XG4gICAgICAgIG1pbiA9IHZhbHVlLnNwbGl0KCc6JylbMV07XG4gICAgICAgIGlmIChtaW4ubGVuZ3RoIDwgMikge1xuICAgICAgICAgIG1pbiA9ICcwJyArIG1pbjtcbiAgICAgICAgfVxuICAgICAgICBtZXJpZGlhbiA9ICdhbSc7XG4gICAgICB9XG4gICAgICByZXR1cm4gaHIgKyAnOicgKyBtaW4gKyAnICcgKyBtZXJpZGlhbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfVxuXG4gIGZyYW1ld29ya1N0YXJ0RGF0ZShyb3c6IGFueSkge1xuICAgIGxldCBjYWxjdWxhdGVkRGF5OiBudW1iZXIgPSAwO1xuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG5ldyBEYXRlKHBhcnNlSW50KHJvdy5zdGFydF9kYXRlKSAqIDEwMDApLmdldERheSgpO1xuICAgIGNvbnN0IGdldERhdGUgPSBuZXcgRGF0ZShwYXJzZUludChyb3cuc3RhcnRfZGF0ZSkgKiAxMDAwKS5nZXREYXRlKCk7XG4gICAgY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpLmdldERheSgpO1xuICAgIGNvbnN0IHN0YXJ0TW9udGggPSBuZXcgRGF0ZShwYXJzZUludChyb3cuc3RhcnRfZGF0ZSkgKiAxMDAwKS5nZXRNb250aCgpO1xuXG4gICAgaWYgKFxuICAgICAgcGFyc2VJbnQocm93LnN0YXJ0X2RhdGUpIDwgRGF0ZS5ub3coKSAvIDEwMDAgJiZcbiAgICAgIChyb3cuZnJlcXVlbmN5X3RlbXBsYXRlID09PSAnZXZlcnkgd2VlaycgfHxcbiAgICAgICAgcm93LmZyZXF1ZW5jeV90ZW1wbGF0ZSA9PT0gJ2V2ZXJ5IDIgd2Vla3MnIHx8XG4gICAgICAgIHJvdy5mcmVxdWVuY3lfdGVtcGxhdGUgPT09ICdldmVyeSAzIHdlZWtzJylcbiAgICApIHtcbiAgICAgIGxldCBkYXlzVG9CZUFkZGVkID0gMDtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNzsgaSsrKSB7XG4gICAgICAgIGlmICgoY3VycmVudERhdGUgKyBpKSAlIDcgPT09IHN0YXJ0RGF0ZSkge1xuICAgICAgICAgIGRheXNUb0JlQWRkZWQgPSBpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zdCB0aW1lc3RhbXBUb0JlQWRkZWQgPSBkYXlzVG9CZUFkZGVkICogMjQgKiA2MCAqIDYwICogMTAwMDtcbiAgICAgIGNhbGN1bGF0ZWREYXkgPSBuZXcgRGF0ZShcbiAgICAgICAgbmV3IERhdGUoKS5nZXRUaW1lKCkgKyB0aW1lc3RhbXBUb0JlQWRkZWRcbiAgICAgICkuZ2V0VGltZSgpO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBwYXJzZUludChyb3cuc3RhcnRfZGF0ZSkgPCBEYXRlLm5vdygpIC8gMTAwMCAmJlxuICAgICAgIShcbiAgICAgICAgcm93LmZyZXF1ZW5jeV90ZW1wbGF0ZSA9PT0gJ2V2ZXJ5IHdlZWsnIHx8XG4gICAgICAgIHJvdy5mcmVxdWVuY3lfdGVtcGxhdGUgPT09ICdldmVyeSAyIHdlZWtzJyB8fFxuICAgICAgICByb3cuZnJlcXVlbmN5X3RlbXBsYXRlID09PSAnZXZlcnkgMyB3ZWVrcydcbiAgICAgICkgJiZcbiAgICAgIHJvdy5mcmVxdWVuY3lfdGVtcGxhdGUgIT09ICdldmVyeSBkYXknXG4gICAgKSB7XG4gICAgICBjb25zdCBtb21lbnRVbml4ID0gbW9tZW50KFxuICAgICAgICBnZXREYXRlICtcbiAgICAgICAgICAnLScgK1xuICAgICAgICAgIChuZXcgRGF0ZSgpLmdldE1vbnRoKCkgKyAxKSArXG4gICAgICAgICAgJy0nICtcbiAgICAgICAgICBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkgK1xuICAgICAgICAgICcgMDA6MDAnLFxuICAgICAgICAnREQtTU0tWVlZWSBISDptbSdcbiAgICAgICkudW5peCgpO1xuICAgICAgY2FsY3VsYXRlZERheSA9IG1vbWVudFVuaXggKiAxMDAwO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICByb3cuZnJlcXVlbmN5X3RlbXBsYXRlID09PSAnZXZlcnkgZGF5JyAmJlxuICAgICAgcGFyc2VJbnQocm93LnN0YXJ0X2RhdGUpIDwgRGF0ZS5ub3coKSAvIDEwMDBcbiAgICApIHtcbiAgICAgIGNhbGN1bGF0ZWREYXkgPSBEYXRlLm5vdygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYWxjdWxhdGVkRGF5ID0gcGFyc2VJbnQocm93LnN0YXJ0X2RhdGUpICogMTAwMDtcbiAgICB9XG4gICAgcmV0dXJuIGNhbGN1bGF0ZWREYXkgLyAxMDAwO1xuICB9XG5cbiAgZnJhbWV3b3JrRnJlcXVlbmN5KGZyZXF1ZW5jeTogYW55LCBzdGFydF9kYXRlOiBhbnkpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc3RhcnREYXRlID0gbmV3IERhdGUoc3RhcnRfZGF0ZSAqIDEwMDApO1xuICAgICAgY29uc3QgZmlyc3RIYWxmTW9udGggPSBbJzEnLCAnMicsICczJywgJzQnLCAnNScsICc2J107XG4gICAgICBjb25zdCBzZWNvbmRIYWxmTW9udGggPSBbJzcnLCAnOCcsICc5JywgJzEwJywgJzExJywgJzEyJ107XG4gICAgICBjb25zdCBnZXREYXlEYXRhID0gc3RhcnREYXRlLmdldERheSgpID09PSAwID8gNyA6IHN0YXJ0RGF0ZS5nZXREYXkoKTtcbiAgICAgIGNvbnN0IG1vbnRoID0gc3RhcnREYXRlLmdldE1vbnRoKCk7XG4gICAgICBsZXQgcXVhcnRlclBhdHRlcm4gPSAnfjEsNCw3LDEwfjAnO1xuICAgICAgc3dpdGNoIChtb250aCkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgY2FzZSA2OlxuICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgcXVhcnRlclBhdHRlcm4gPSAnfjEsNCw3LDEwfjAnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgY2FzZSA3OlxuICAgICAgICBjYXNlIDEwOlxuICAgICAgICAgIHF1YXJ0ZXJQYXR0ZXJuID0gJ34yLDUsOCwxMX4wJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICBjYXNlIDU6XG4gICAgICAgIGNhc2UgODpcbiAgICAgICAgY2FzZSAxMTpcbiAgICAgICAgICBxdWFydGVyUGF0dGVybiA9ICd+Myw2LDksMTJ+MCc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICAvLyBdO1xuICAgICAgbGV0IGZyZXF1ZW5jeV9wYXR0ZXJuO1xuXG4gICAgICBmcmVxdWVuY3kgPSBmcmVxdWVuY3kudG9Mb3dlckNhc2UoKTtcbiAgICAgIGxldCBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMDtcbiAgICAgIC8vIEAgPT4gZGF5ICgxIHRvIDcpXG4gICAgICAvLyAjID0+IG1vbnRoICgxIHRvIDEyKVxuICAgICAgLy8gPyA9PiBtb250aCAlIDIgPT0gMCA/IFwiMiw0LDYsOCwxMCwxMlwiIDogXCIxLDMsNSw3LDksMTFcIlxuXG4gICAgICBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgd2VlaycpIHtcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPSAnMn4nICsgZ2V0RGF5RGF0YSArICd+MH4xJztcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDEwO1xuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdvbmUgdGltZScpIHtcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPVxuICAgICAgICAgICcwficgK1xuICAgICAgICAgIHN0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpICtcbiAgICAgICAgICAnficgK1xuICAgICAgICAgIChzdGFydERhdGUuZ2V0TW9udGgoKSArIDEpICtcbiAgICAgICAgICAnficgK1xuICAgICAgICAgIHN0YXJ0RGF0ZS5nZXREYXRlKCk7XG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IGRheScpIHtcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPSAnMX4wfjB+MSc7XG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxNTtcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgYWx0ZXJuYXRlIGRheScpIHtcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPSAnMX4wfjB+Mic7XG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxNTtcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgMTAgZGF5cycpIHtcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPSAnMX4wfjB+MTAnO1xuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTU7XG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IDIgd2Vla3MnKSB7XG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID0gJzJ+JyArIGdldERheURhdGEgKyAnfjB+Mic7XG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxMDtcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgZm9ydG5pZ2h0Jykge1xuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9ICcxficgKyBnZXREYXlEYXRhICsgJ34wfjE0JztcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDE1O1xuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSAzIHdlZWtzJykge1xuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9ICcyficgKyBnZXREYXlEYXRhICsgJ34wfjMnO1xuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTA7XG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IG1vbnRoJykge1xuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9XG4gICAgICAgICAgJzN+JyArIHN0YXJ0RGF0ZS5nZXREYXRlKCkgKyAnfjEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyfjAnO1xuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTA7XG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IDQ1IGRheXMnKSB7XG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID0gJzF+MH4wfjQ1JztcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDE1O1xuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSBhbHRlcm5hdGUgbW9udGgnKSB7XG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID1cbiAgICAgICAgICAnM34nICtcbiAgICAgICAgICBzdGFydERhdGUuZ2V0RGF0ZSgpICtcbiAgICAgICAgICAnficgK1xuICAgICAgICAgICgoc3RhcnREYXRlLmdldE1vbnRoKCkgKyAxKSAlIDIgPT0gMFxuICAgICAgICAgICAgPyAnMiw0LDYsOCwxMCwxMidcbiAgICAgICAgICAgIDogJzEsMyw1LDcsOSwxMScpICtcbiAgICAgICAgICAnfjAnO1xuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTA7XG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IHF1YXJ0ZXInKSB7XG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID0gJzd+JyArIHN0YXJ0RGF0ZS5nZXREYXRlKCkgKyBxdWFydGVyUGF0dGVybjtcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgMTIwIGRheXMnKSB7XG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID0gJzF+MH4wfjEyMCc7XG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2hhbGYgeWVhcmx5Jykge1xuICAgICAgICBjb25zdCBpbmRleDEgPSBmaXJzdEhhbGZNb250aC5pbmRleE9mKFxuICAgICAgICAgIChzdGFydERhdGUuZ2V0TW9udGgoKSArIDEpLnRvU3RyaW5nKClcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgaW5kZXgyID0gc2Vjb25kSGFsZk1vbnRoLmluZGV4T2YoXG4gICAgICAgICAgKHN0YXJ0RGF0ZS5nZXRNb250aCgpICsgMSkudG9TdHJpbmcoKVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBwYXR0ZXJuID1cbiAgICAgICAgICBpbmRleDEgPiAtMVxuICAgICAgICAgICAgPyAnficgK1xuICAgICAgICAgICAgICBmaXJzdEhhbGZNb250aFtpbmRleDFdICtcbiAgICAgICAgICAgICAgJywnICtcbiAgICAgICAgICAgICAgc2Vjb25kSGFsZk1vbnRoW2luZGV4MV0gK1xuICAgICAgICAgICAgICAnfjAnXG4gICAgICAgICAgICA6ICd+JyArXG4gICAgICAgICAgICAgIGZpcnN0SGFsZk1vbnRoW2luZGV4Ml0gK1xuICAgICAgICAgICAgICAnLCcgK1xuICAgICAgICAgICAgICBzZWNvbmRIYWxmTW9udGhbaW5kZXgyXSArXG4gICAgICAgICAgICAgICd+MCc7XG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID0gJzN+JyArIHN0YXJ0RGF0ZS5nZXREYXRlKCkgKyBwYXR0ZXJuO1xuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTA7XG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ3llYXJseScpIHtcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPVxuICAgICAgICAgICc0ficgKyBzdGFydERhdGUuZ2V0RGF0ZSgpICsgJ34nICsgKHN0YXJ0RGF0ZS5nZXRNb250aCgpICsgMSkgKyAnfjEnO1xuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSAyIHllYXJzJykge1xuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9XG4gICAgICAgICAgJzR+JyArIHN0YXJ0RGF0ZS5nZXREYXRlKCkgKyAnficgKyAoc3RhcnREYXRlLmdldE1vbnRoKCkgKyAxKSArICd+Mic7XG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IDMgeWVhcnMnKSB7XG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID1cbiAgICAgICAgICAnNH4nICsgc3RhcnREYXRlLmdldERhdGUoKSArICd+JyArIChzdGFydERhdGUuZ2V0TW9udGgoKSArIDEpICsgJ34zJztcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgNCB5ZWFycycpIHtcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPVxuICAgICAgICAgICc0ficgKyBzdGFydERhdGUuZ2V0RGF0ZSgpICsgJ34nICsgKHN0YXJ0RGF0ZS5nZXRNb250aCgpICsgMSkgKyAnfjQnO1xuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSA1IHllYXJzJykge1xuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9XG4gICAgICAgICAgJzR+JyArIHN0YXJ0RGF0ZS5nZXREYXRlKCkgKyAnficgKyAoc3RhcnREYXRlLmdldE1vbnRoKCkgKyAxKSArICd+NSc7XG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IDEwIHllYXJzJykge1xuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9XG4gICAgICAgICAgJzR+JyArIHN0YXJ0RGF0ZS5nZXREYXRlKCkgKyAnficgKyAoc3RhcnREYXRlLmdldE1vbnRoKCkgKyAxKSArICd+MTAnO1xuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICd0byBiZSBkZWNpZGVkIGxhdGVyJykge1xuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9ICcnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPSAnJztcbiAgICAgIH1cbiAgICAgIC8vIHRoaXMuZWRpdERhdGEuZnJlcXVlbmN5X2RldGFpbHMgPSBmcmVxdWVuY3lfcGF0dGVybjtcblxuICAgICAgcmV0dXJuIHsgZnJlcXVlbmN5X3BhdHRlcm4sIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgfTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgcmV0dXJuIHsgZnJlcXVlbmN5X3BhdHRlcm46ICcnLCBjb250aW51b3VzX2ZhaWxlZF9kYXlzOiAwIH07XG4gICAgfVxuICB9XG5cbiAgc2hvcnRIYW5kX2ZyZXFDYWwoZnJlcXVlbmN5OiBhbnksIGRheTogYW55LCBtb250aDogYW55LCB5ZWFyPzogYW55KSB7XG4gICAgY29uc3QgbW9udGhOYW1lcyA9IE1PTlRIX05BTUVTO1xuICAgIGxldCBmcmVxdWVuY3lfZGV0YWlscztcbiAgICBsZXQgY29udGludW91c19mYWlsZWRfZGF5cyA9IDA7XG4gICAgY29uc3QgZGF0ZV92YWx1ZSA9IG5ldyBEYXRlKCk7XG5cbiAgICBkYXRlX3ZhbHVlLnNldE1vbnRoKFxuICAgICAgdHlwZW9mIG1vbnRoICE9PSAnbnVtYmVyJ1xuICAgICAgICA/IG1vbnRoTmFtZXMuZmlsdGVyKCh4KSA9PiB4Lm1vbnRoID09PSBtb250aD8uc3Vic3RyaW5nKDAsIDMpKVswXVxuICAgICAgICAgICAgPy52YWx1ZSAtIDFcbiAgICAgICAgOiBtb250aFxuICAgICk7XG4gICAgaWYgKCF5ZWFyKSB7XG4gICAgICBkYXRlX3ZhbHVlLnNldEZ1bGxZZWFyKDIwICsgbW9udGguc3BsaXQoXCInXCIpWzFdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGF0ZV92YWx1ZS5zZXRGdWxsWWVhcih5ZWFyKTtcbiAgICB9XG4gICAgZGF0ZV92YWx1ZS5zZXREYXRlKGRheSk7XG4gICAgbGV0IHF1YXJ0ZXJQYXR0ZXJuID0gJ34xLDQsNywxMH4wJztcbiAgICBjb25zdCBmaXJzdEhhbGZNb250aCA9IFsnMScsICcyJywgJzMnLCAnNCcsICc1JywgJzYnXTtcbiAgICBjb25zdCBzZWNvbmRIYWxmTW9udGggPSBbJzcnLCAnOCcsICc5JywgJzEwJywgJzExJywgJzEyJ107XG4gICAgZnJlcXVlbmN5ID0gZnJlcXVlbmN5LnRvTG93ZXJDYXNlKCk7XG5cbiAgICBzd2l0Y2ggKGRhdGVfdmFsdWUuZ2V0TW9udGgoKSkge1xuICAgICAgY2FzZSAwOlxuICAgICAgY2FzZSAzOlxuICAgICAgY2FzZSA2OlxuICAgICAgY2FzZSA5OlxuICAgICAgICBxdWFydGVyUGF0dGVybiA9ICd+MSw0LDcsMTB+MCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxOlxuICAgICAgY2FzZSA0OlxuICAgICAgY2FzZSA3OlxuICAgICAgY2FzZSAxMDpcbiAgICAgICAgcXVhcnRlclBhdHRlcm4gPSAnfjIsNSw4LDExfjAnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjpcbiAgICAgIGNhc2UgNTpcbiAgICAgIGNhc2UgODpcbiAgICAgIGNhc2UgMTE6XG4gICAgICAgIHF1YXJ0ZXJQYXR0ZXJuID0gJ34zLDYsOSwxMn4wJztcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNvbnN0IGdldERheSA9IGRhdGVfdmFsdWUuZ2V0RGF5KCkgPT09IDAgPyA3IDogZGF0ZV92YWx1ZS5nZXREYXkoKTtcbiAgICBzd2l0Y2ggKGZyZXF1ZW5jeSkge1xuICAgICAgY2FzZSAnZXZlcnkgd2Vlayc6XG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID0gJzJ+JyArIGdldERheSArICd+MH4xJztcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDEwO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ29uZSB0aW1lJzpcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPVxuICAgICAgICAgICcwficgK1xuICAgICAgICAgICcnICtcbiAgICAgICAgICBkYXRlX3ZhbHVlLmdldEZ1bGxZZWFyKCkgK1xuICAgICAgICAgICd+JyArXG4gICAgICAgICAgKGRhdGVfdmFsdWUuZ2V0TW9udGgoKSArIDEpICtcbiAgICAgICAgICAnficgK1xuICAgICAgICAgIGRhdGVfdmFsdWUuZ2V0RGF0ZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2V2ZXJ5IGRheSc6XG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID0gJzF+MH4wfjEnO1xuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZXZlcnkgYWx0ZXJuYXRlIGRheSc6XG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID0gJzF+MH4wfjInO1xuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZXZlcnkgMTAgZGF5cyc6XG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID0gJzF+MH4wfjEwJztcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDE1O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2V2ZXJ5IDIgd2Vla3MnOlxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9ICcyficgKyBnZXREYXkgKyAnfjB+Mic7XG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxMDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdldmVyeSBmb3J0bmlnaHQnOlxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9ICcxficgKyBnZXREYXkgKyAnfjB+MTQnO1xuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZXZlcnkgMyB3ZWVrcyc6XG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID0gJzJ+JyArIGdldERheSArICd+MH4zJztcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDEwO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2V2ZXJ5IG1vbnRoJzpcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPVxuICAgICAgICAgICczficgKyBkYXRlX3ZhbHVlLmdldERhdGUoKSArICd+MSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTJ+MCc7XG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxMDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdldmVyeSA0NSBkYXlzJzpcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPSAnMX4wfjB+NDUnO1xuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZXZlcnkgYWx0ZXJuYXRlIG1vbnRoJzpcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPVxuICAgICAgICAgICczficgK1xuICAgICAgICAgIGRhdGVfdmFsdWUuZ2V0RGF0ZSgpICtcbiAgICAgICAgICAnficgK1xuICAgICAgICAgICgoZGF0ZV92YWx1ZS5nZXRNb250aCgpICsgMSkgJSAyID09PSAwXG4gICAgICAgICAgICA/ICcyLDQsNiw4LDEwLDEyJ1xuICAgICAgICAgICAgOiAnMSwzLDUsNyw5LDExJykgK1xuICAgICAgICAgICd+MCc7XG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxMDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdldmVyeSBxdWFydGVyJzpcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPSAnN34nICsgZGF0ZV92YWx1ZS5nZXREYXRlKCkgKyBxdWFydGVyUGF0dGVybjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdldmVyeSAxMjAgZGF5cyc6XG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID0gJzF+MH4wfjEyMCc7XG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxNTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdoYWxmIHllYXJseSc6XG4gICAgICAgIGNvbnN0IGluZGV4MSA9IGZpcnN0SGFsZk1vbnRoLmluZGV4T2YoXG4gICAgICAgICAgKGRhdGVfdmFsdWUuZ2V0TW9udGgoKSArIDEpLnRvU3RyaW5nKClcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgaW5kZXgyID0gc2Vjb25kSGFsZk1vbnRoLmluZGV4T2YoXG4gICAgICAgICAgKGRhdGVfdmFsdWUuZ2V0TW9udGgoKSArIDEpLnRvU3RyaW5nKClcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgcGF0dGVybiA9XG4gICAgICAgICAgaW5kZXgxID4gLTFcbiAgICAgICAgICAgID8gJ34nICtcbiAgICAgICAgICAgICAgZmlyc3RIYWxmTW9udGhbaW5kZXgxXSArXG4gICAgICAgICAgICAgICcsJyArXG4gICAgICAgICAgICAgIHNlY29uZEhhbGZNb250aFtpbmRleDFdICtcbiAgICAgICAgICAgICAgJ34wJ1xuICAgICAgICAgICAgOiAnficgK1xuICAgICAgICAgICAgICBmaXJzdEhhbGZNb250aFtpbmRleDJdICtcbiAgICAgICAgICAgICAgJywnICtcbiAgICAgICAgICAgICAgc2Vjb25kSGFsZk1vbnRoW2luZGV4Ml0gK1xuICAgICAgICAgICAgICAnfjAnO1xuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9ICczficgKyBkYXRlX3ZhbHVlLmdldERhdGUoKSArIHBhdHRlcm47XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYW5udWFsJzpcbiAgICAgIGNhc2UgJ3llYXJseSc6XG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID1cbiAgICAgICAgICAnNH4nICtcbiAgICAgICAgICBkYXRlX3ZhbHVlLmdldERhdGUoKSArXG4gICAgICAgICAgJ34nICtcbiAgICAgICAgICAoZGF0ZV92YWx1ZS5nZXRNb250aCgpICsgMSkgK1xuICAgICAgICAgICd+MSc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZXZlcnkgMiB5ZWFycyc6XG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID1cbiAgICAgICAgICAnNH4nICtcbiAgICAgICAgICBkYXRlX3ZhbHVlLmdldERhdGUoKSArXG4gICAgICAgICAgJ34nICtcbiAgICAgICAgICAoZGF0ZV92YWx1ZS5nZXRNb250aCgpICsgMSkgK1xuICAgICAgICAgICd+Mic7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZXZlcnkgMyB5ZWFycyc6XG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID1cbiAgICAgICAgICAnNH4nICtcbiAgICAgICAgICBkYXRlX3ZhbHVlLmdldERhdGUoKSArXG4gICAgICAgICAgJ34nICtcbiAgICAgICAgICAoZGF0ZV92YWx1ZS5nZXRNb250aCgpICsgMSkgK1xuICAgICAgICAgICd+Myc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZXZlcnkgNCB5ZWFycyc6XG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID1cbiAgICAgICAgICAnNH4nICtcbiAgICAgICAgICBkYXRlX3ZhbHVlLmdldERhdGUoKSArXG4gICAgICAgICAgJ34nICtcbiAgICAgICAgICAoZGF0ZV92YWx1ZS5nZXRNb250aCgpICsgMSkgK1xuICAgICAgICAgICd+NCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZXZlcnkgNSB5ZWFycyc6XG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID1cbiAgICAgICAgICAnNH4nICtcbiAgICAgICAgICBkYXRlX3ZhbHVlLmdldERhdGUoKSArXG4gICAgICAgICAgJ34nICtcbiAgICAgICAgICAoZGF0ZV92YWx1ZS5nZXRNb250aCgpICsgMSkgK1xuICAgICAgICAgICd+NSc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZXZlcnkgMTAgeWVhcnMnOlxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9XG4gICAgICAgICAgJzR+JyArXG4gICAgICAgICAgZGF0ZV92YWx1ZS5nZXREYXRlKCkgK1xuICAgICAgICAgICd+JyArXG4gICAgICAgICAgKGRhdGVfdmFsdWUuZ2V0TW9udGgoKSArIDEpICtcbiAgICAgICAgICAnfjEwJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdvbmdvaW5nJzpcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPSAnMTB+MH4wfjAnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RvIGJlIGRlY2lkZWQgbGF0ZXInOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPSAnNX4wfjB+MCc7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBwYXR0ZXJuOiBmcmVxdWVuY3lfZGV0YWlscyxcbiAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IGNvbnRpbnVvdXNfZmFpbGVkX2RheXMsXG4gICAgfTtcbiAgfVxuXG4gIGdldE9uQ29tcGxldGlvbk9mUmVzcG9uc2liaWxpdHkoKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PGFueVtdPih0aGlzLmVudi5jb21wbGlhbmNlR2V0ICsgJ3JlcG9ydHMvb25Db21wbGV0aW9uT2ZSZXBvcnRzJywge1xuICAgICAgICBoZWFkZXJzLFxuICAgICAgfSlcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuXG4gIGNoYW5nZVRpbWVab25lKGRhdGU6IGFueSkge1xuICAgIGlmICh0eXBlb2YgZGF0ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIGRhdGUgPSBuZXcgRGF0ZShkYXRlKTtcbiAgICB9XG4gICAgY29uc3QgaW52RGF0ZSA9IG5ldyBEYXRlKFxuICAgICAgZGF0ZS50b0xvY2FsZVN0cmluZygnZW4tVVMnLCB7XG4gICAgICAgIHRpbWVab25lOiB0aGlzLmF1dGhTZXJ2aWNlPy51c2VyRGV0YWlscz8udGltZXpvbmUsXG4gICAgICB9KVxuICAgICk7XG4gICAgcmV0dXJuIGludkRhdGU7XG4gIH1cblxuICBnZXRSZXNwb25zaWJpbGl0eUxpc3QocGF5bG9hZDogYW55KSB7XG4gICAgY29uc3QgbGltaXQgPSAxMDA7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpLFxuICAgIClcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PGFueT4oXG4gICAgICAgIGAke3RoaXMuZW52LmNvbXBsaWFuY2VHZXR9c2FpbHNSZXNwb25zaWJpbGl0aWVzTGlzdCZwYWdlPSR7cGF5bG9hZD8ucGFnZU5vfSZsaW1pdD0ke2xpbWl0fSR7cGF5bG9hZD8uc2VhcmNoVGV4dCA/IGAmZmlsdGVyRGF0YVtzZWFyY2hUZXJtXT0ke3BheWxvYWQ/LnNlYXJjaFRleHR9YCA6ICcnfSZiaXpDeWNsZVJlcXVpcmVkPTAmaW5jbHVkZT1hc3NpZ25lZXMmZ3JvdXA9YWxsYCxcbiAgICAgICAgeyBoZWFkZXJzIH1cbiAgICAgIClcbiAgICAgIC5waXBlKHJldHJ5KDEpKTtcbiAgfVxuXG4gIGdldFJlc3BvbnNpYmlsaXRpZXNDb3VudChwYXlsb2FkOiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0PGFueT4oXG4gICAgICAgIHRoaXMuZW52LnJlc3BvbnNpYmlsaXR5UG9zdCArICdtYW5hZ2VfcmVzcG9uc2liaWxpdGllc19yZXBvcnRzX2NvdW50JyxcbiAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgeyBoZWFkZXJzIH1cbiAgICAgIClcbiAgICAgIC5waXBlKHJldHJ5KDEpKTtcbiAgfVxuXG4gIGdldEFsbFJlc3BvbnNpYmlsaXRpZXMocGFnZU5vOiBudW1iZXIsIHBheWxvYWQ6IGFueSkge1xuICAgIGNvbnN0IGJ1c2luZXNzQ3ljbGUgPSB0aGlzLmdyY1NlcnZpY2UuZ2V0QnVzaW5lc3NDeWNsZSgpO1xuICAgIGNvbnN0IGZvcm1hdHRlZEN5Y2xlID0gYnVzaW5lc3NDeWNsZS5zZWxlY3RlZF9jeWNsZVxuICAgICAgPyBkYXlqcyhidXNpbmVzc0N5Y2xlLnNlbGVjdGVkX2N5Y2xlLnNwbGl0KCctJylbMF0pLmZvcm1hdCgnWVlZWS1NTS1ERCcpICsgXG4gICAgICAgICc6JyArIFxuICAgICAgICBkYXlqcyhidXNpbmVzc0N5Y2xlLnNlbGVjdGVkX2N5Y2xlLnNwbGl0KCctJylbMV0pLmZvcm1hdCgnWVlZWS1NTS1ERCcpXG4gICAgICA6ICcnO1xuICAgIFxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKVxuICAgICAgLnNldCgndG9rZW4nLCB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpKVxuICAgICAgLnNldCgnYml6X2N5Y2xlJywgZm9ybWF0dGVkQ3ljbGUpO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueVtdPihcbiAgICAgIHRoaXMuZW52LmNvbXBsaWFuY2VHZXQgKyBBUEkucmVzcG9uc2liaWxpdHlMaXN0ICsgYCZwYWdlPSR7cGFnZU5vfSZsaW1pdD0xMCR7cGF5bG9hZD8uc2VhcmNoVGV4dCA/IGAmZmlsdGVyRGF0YVtzZWFyY2hUZXJtXT0ke3BheWxvYWQ/LnNlYXJjaFRleHR9YCA6ICcnfWAgLFxuICAgICAgeyBoZWFkZXJzIH1cbiAgICApO1xuICB9XG5cbiAgZm9ybWF0RGF0ZSgpIHtcbiAgICBjb25zdCBjdXJyZW50RGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgZGF5ID0gU3RyaW5nKGN1cnJlbnREYXRlPy5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgY29uc3QgbW9udGggPSBTdHJpbmcoY3VycmVudERhdGU/LmdldE1vbnRoKCkgKyAxKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgIGNvbnN0IHllYXIgPSBjdXJyZW50RGF0ZT8uZ2V0RnVsbFllYXIoKTtcbiAgICBjb25zdCBmb3JtYXR0ZWREYXRlID0gYCR7ZGF5fS0ke21vbnRofS0ke3llYXJ9YDtcbiAgICByZXR1cm4gZm9ybWF0dGVkRGF0ZTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIENvbnZlcnRzIGEgZnJlcXVlbmN5IGNvbmZpZ3VyYXRpb24gb2JqZWN0IGludG8gYSBzdGFuZGFyZGl6ZWQgRnJlcXVlbmN5T2JqZWN0IGZvcm1hdC5cbiAgICogXG4gICAqIEBwYXJhbSBmcmVxdWVuY3kgLSBUaGUgaW5wdXQgZnJlcXVlbmN5IGNvbmZpZ3VyYXRpb24gb2JqZWN0IHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICAgKiAtIGNhc2U6IFRoZSB0eXBlIG9mIGZyZXF1ZW5jeSAoJ29uZV90aW1lJyB8ICdkYWlseScgfCAnd2Vla2x5JyB8ICdtb250aGx5JyB8ICdxdWFydGVybHknIHwgJ3NlbWVzdGVyJyB8ICd5ZWFybHknIHwgJ3JhbmRvbScgfCAnb25nb2luZycgfCAnb25fY29tcGxldGlvbl9vZicgfCAnYmlhbm51YWxseScpXG4gICAqIC0gd2luZG93OiBOdW1iZXIgb2YgZGF5cyBiZWZvcmUgdGhlIHRhc2sgY2FuIGJlIHN0YXJ0ZWRcbiAgICogLSBmYWlsZWRBZnRlcjogTnVtYmVyIG9mIGRheXMgYWZ0ZXIgd2hpY2ggdGhlIHRhc2sgaXMgY29uc2lkZXJlZCBmYWlsZWRcbiAgICogLSBjb250aW51b3VzX2ZhaWxlZF9kYXlzOiBOdW1iZXIgb2YgZGF5cyBhZnRlciB3aGljaCB0aGUgdGFzayBpcyBhdXRvLWRlYWN0aXZhdGVkXG4gICAqIC0gZGF5OiBUaGUgZGF5IG9mIG9jY3VycmVuY2VcbiAgICogLSB0aW1lSW4yNEhyOiBUaW1lIGluIDI0LWhvdXIgZm9ybWF0XG4gICAqIC0gZXZlcnk6IEZyZXF1ZW5jeSBpbnRlcnZhbFxuICAgKiAtIHNlbGVjdGVkRGF5OiBBcnJheSBvZiBzZWxlY3RlZCBkYXlzIGZvciB3ZWVrbHkgZnJlcXVlbmN5ICgxLTcgcmVwcmVzZW50aW5nIE1vbmRheS1TdW5kYXkpXG4gICAqIC0gc2VsZWN0ZWRNb250aDogQXJyYXkgb2Ygc2VsZWN0ZWQgbW9udGhzICgwLTExIHJlcHJlc2VudGluZyBKYW51YXJ5LURlY2VtYmVyKVxuICAgKiAtIHN0YXJ0RnJvbTogVW5peCB0aW1lc3RhbXAgZm9yIHRoZSBzdGFydCBkYXRlXG4gICAqIC0gbGlmZWN5Y2xlRGV0YWlsczogU3RyaW5nIGluIGZvcm1hdCBcIllZWVktTU0tRER+fk5cIiB3aGVyZSBOIGlzIHRoZSBudW1iZXIgb2Ygb2NjdXJyZW5jZXNcbiAgICogLSByYW5kb21UeXBlU2VsZWN0ZWQ6IEluZGV4IGZvciByYW5kb20gZnJlcXVlbmN5IHR5cGUgKDA6IHdlZWtseSwgMTogbW9udGhseSwgMjogcXVhcnRlcmx5LCAzOiB5ZWFybHkpXG4gICAqIC0gcmFuZG9tSW5zdGFuY2VzOiBOdW1iZXIgb2YgcmFuZG9tIG9jY3VycmVuY2VzXG4gICAqIC0gc2VsZWN0ZWRUeXBlOiBOdW1iZXIgb2YgcmVtaW5kZXJzIGZvciBvbmdvaW5nIGZyZXF1ZW5jeVxuICAgKiAtIHNlbGVjdGVkT25nb2luZ1R5cGU6IEluZGV4IGZvciBvbmdvaW5nIGZyZXF1ZW5jeSB0eXBlICgxOiB3ZWVrLCAyOiBtb250aCwgMzogcXVhcnRlciwgNDogc2VtZXN0ZXIsIDU6IHllYXIpXG4gICAqIFxuICAgKiBAcmV0dXJucyBBIEZyZXF1ZW5jeU9iamVjdCB3aXRoIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlOlxuICAgKiAtIHR5cGU6IEZyZXF1ZW5jeSB0eXBlXG4gICAqIC0gc3RhcnRCZWZvcmU6IERheXMgYmVmb3JlIHRhc2sgY2FuIHN0YXJ0XG4gICAqIC0gZW5kQWZ0ZXI6IERheXMgYWZ0ZXIgd2hpY2ggdGFzayBmYWlsc1xuICAgKiAtIGF1dG9EZWFjdGl2YXRlOiBEYXlzIGFmdGVyIHdoaWNoIHRhc2sgaXMgZGVhY3RpdmF0ZWRcbiAgICogLSBkYXk6IERheSBvZiBvY2N1cnJlbmNlXG4gICAqIC0gdGltZTogVGltZSBpbiAyNC1ob3VyIGZvcm1hdFxuICAgKiAtIHJlcGVhdE9wdGlvbnM6IHtcbiAgICogICAgIGV2ZXJ5OiBudW1iZXIsXG4gICAqICAgICByZXBlYXRPbjogc3RyaW5nIChiaW5hcnkgcmVwcmVzZW50YXRpb24gb2Ygc2VsZWN0ZWQgZGF5cy9tb250aHMpLFxuICAgKiAgICAgbGlmZWN5Y2xlOiB7XG4gICAqICAgICAgIHN0YXJ0RnJvbTogc3RyaW5nIChZWVlZLU1NLUREKSxcbiAgICogICAgICAgZW5kQnk/OiBzdHJpbmcgKFlZWVktTU0tREQpLFxuICAgKiAgICAgICBlbmRBZnRlcj86IG51bWJlclxuICAgKiAgICAgfVxuICAgKiAgIH1cbiAgICogLSByYW5kb20/OiB7IHR5cGU6IHN0cmluZywgb2NjdXJyZW5jZTogbnVtYmVyIH1cbiAgICogLSBvbkNvbXBsZXRlOiB7fVxuICAgKiAtIG9uR29pbmc6IHsgcmVtaW5kZXJzOiBudW1iZXIsIHN0YXJ0T2Y6ICd3ZWVrJyB8ICdtb250aCcgfCAncXVhcnRlcicgfCAnc2VtZXN0ZXInIHwgJ3llYXInIH1cbiAgICogXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgZnJlcXVlbmN5ID0ge1xuICAgKiAgIGNhc2U6ICd3ZWVrbHknLFxuICAgKiAgIHdpbmRvdzogMixcbiAgICogICBmYWlsZWRBZnRlcjogMSxcbiAgICogICBjb250aW51b3VzX2ZhaWxlZF9kYXlzOiAzLFxuICAgKiAgIGRheTogMSxcbiAgICogICB0aW1lSW4yNEhyOiAnMDk6MDA6MDAnLFxuICAgKiAgIGV2ZXJ5OiAxLFxuICAgKiAgIHNlbGVjdGVkRGF5OiBbMSwgMywgNV0sIC8vIE1vbmRheSwgV2VkbmVzZGF5LCBGcmlkYXlcbiAgICogICBzdGFydEZyb206IDE2Nzg5MDAwMDAsXG4gICAqICAgbGlmZWN5Y2xlRGV0YWlsczogJzIwMjQtMTItMzF+fjEwJ1xuICAgKiB9O1xuICAgKiBjb25zdCByZXN1bHQgPSBzZXRGcmVxdWVuY3lPYmplY3QoZnJlcXVlbmN5KTtcbiAgICogYGBgXG4gICAqL1xuICBzZXRGcmVxdWVuY3lPYmplY3QoZnJlcXVlbmN5OiBhbnkpOiBGcmVxdWVuY3lPYmplY3QgfCBudWxsIHtcbiAgICBjb25zb2xlLmxvZyhmcmVxdWVuY3ksIFwiZnJlcXVlbmN5XCIpO1xuICAgIGNvbnN0IHJlcGVhdE9wdGlvbnMgPSB0aGlzLnJlcGVhdE9wdGlvbnMoZnJlcXVlbmN5KTtcbiAgICBjb25zdCBsaWZlY3ljbGVEZXRhaWxzID0gZnJlcXVlbmN5LmxpZmVjeWNsZURldGFpbHMuc3BsaXQoJ35+Jyk7XG4gICAgY29uc3QgZnJlcXVlbmN5T2JqZWN0OiBGcmVxdWVuY3lPYmplY3QgPSB7XG4gICAgICB0eXBlOiBmcmVxdWVuY3kuY2FzZSxcbiAgICAgIHN0YXJ0QmVmb3JlOiBmcmVxdWVuY3kud2luZG93LFxuICAgICAgZW5kQWZ0ZXI6IGZyZXF1ZW5jeS5mYWlsZWRBZnRlcixcbiAgICAgIGF1dG9EZWFjdGl2YXRlOiBmcmVxdWVuY3kuY29udGludW91c19mYWlsZWRfZGF5cyxcbiAgICAgIGRheTogZnJlcXVlbmN5LmRheSwgXG4gICAgICB0aW1lOiBmcmVxdWVuY3kudGltZUluMjRIcixcbiAgICAgIHJlcGVhdE9wdGlvbnM6IHtcbiAgICAgICAgZXZlcnk6IGZyZXF1ZW5jeS5ldmVyeSxcbiAgICAgICAgcmVwZWF0T246IHJlcGVhdE9wdGlvbnMsXG4gICAgICAgIGxpZmVjeWNsZToge1xuICAgICAgICAgIHN0YXJ0RnJvbTogbW9tZW50KGZyZXF1ZW5jeS5zdGFydEZyb20gKiAxMDAwKS5mb3JtYXQoJ1lZWVktTU0tREQnKSxcbiAgICAgICAgICBlbmRCeTpsaWZlY3ljbGVEZXRhaWxzWzBdICE9PSAnMDAwMC0wMC0wMCcgPyBtb21lbnQobGlmZWN5Y2xlRGV0YWlsc1swXSAsICdERC1NTU1NLVlZWVknKS5mb3JtYXQoJ1lZWVktTU0tREQnKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBlbmRBZnRlcjogXG4gICAgICAgICAgICAgICAgZnJlcXVlbmN5LmNhc2UgPT09ICdvbmVfdGltZSdcbiAgICAgICAgICAgICAgICAgICAgPyAxXG4gICAgICAgICAgICAgICAgICAgIDogbGlmZWN5Y2xlRGV0YWlsc1sxXSAhPT0gJzAnXG4gICAgICAgICAgICAgICAgICAgID8gcGFyc2VJbnQobGlmZWN5Y2xlRGV0YWlsc1sxXSlcbiAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICByYW5kb206IHRoaXMuZ2V0UmFuZG9tRnJlcXVlbmN5KGZyZXF1ZW5jeSksXG4gICAgICBvbkNvbXBsZXRlOiBmcmVxdWVuY3kuY2FzZSA9PT0gJ29uX2NvbXBsZXRlJyA/IGZyZXF1ZW5jeS5vbkNvbXBsZXRpb24gOiB7fSxcbiAgICAgIG9uR29pbmc6IHRoaXMuZ2V0T25nb2luZyhmcmVxdWVuY3kpLFxuICAgIH0gIFxuICAgIHJldHVybiBmcmVxdWVuY3lPYmplY3Q7XG4gIH0gXG5cbiAgcmVwZWF0T3B0aW9ucyhmcmVxdWVuY3k6IGFueSk6IHN0cmluZyB7XG4gICBpZihmcmVxdWVuY3k/LnNlbGVjdGVkRGF5Py5sZW5ndGggPiAwKSB7XG4gICAgY29uc3Qgd2Vla0RheXMgPSBbXTtcbiAgICAgZm9yKGxldCBpID0gMDsgaSA8IDc7IGkgKyspIHtcbiAgICAgIGlmKGZyZXF1ZW5jeS5zZWxlY3RlZERheS5pbmNsdWRlcyhpICsgMSkpIHtcbiAgICAgICAgd2Vla0RheXMucHVzaCgxKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdlZWtEYXlzLnB1c2goMCk7XG4gICAgICB9XG4gICAgIH1cbiAgICAgcmV0dXJuIHdlZWtEYXlzLmpvaW4oJycpO1xuICAgfSBlbHNlIGlmKGZyZXF1ZW5jeT8uc2VsZWN0ZWRNb250aD8ubGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IG1vbnRocyA9IFsgXTtcbiAgICBmb3IobGV0IGkgPSAwOyBpIDwgMTI7IGkgKyspIHtcbiAgICAgIGlmKGZyZXF1ZW5jeT8uc2VsZWN0ZWRNb250aD8uaW5jbHVkZXMoaSkpIHtcbiAgICAgICAgbW9udGhzLnB1c2goMSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtb250aHMucHVzaCgwKTtcbiAgICAgIH1cbiAgIH1cbiAgIHJldHVybiBtb250aHMuam9pbignJyk7XG4gICB9IGVsc2Uge1xuICAgIHJldHVybiAnJztcbiAgIH1cbiAgfVxuXG4gIGdldE9uZ29pbmcoZnJlcXVlbmN5OiBhbnkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcmVtaW5kZXJzOiBmcmVxdWVuY3k/LnNlbGVjdGVkVHlwZSxcbiAgICAgIHN0YXJ0T2Y6IGZyZXF1ZW5jeT8uc2VsZWN0ZWRUeXBlID8gIFsnd2VlaycsJ21vbnRoJyAsJ3F1YXJ0ZXInICwnc2VtZXN0ZXInICwneWVhciddW2ZyZXF1ZW5jeT8uc2VsZWN0ZWRPbmdvaW5nVHlwZSAtIDFdIDogJydcbiAgICB9XG4gIH1cbiAgZ2V0UmFuZG9tRnJlcXVlbmN5KGZyZXF1ZW5jeTogYW55KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgdHlwZTogWyd3ZWVrbHknLCAnbW9udGhseScsICdxdWFydGVybHknLCAneWVhcmx5J11bZnJlcXVlbmN5Py5yYW5kb21UeXBlU2VsZWN0ZWRdLFxuICAgICBvY2N1cnJlbmNlOiBmcmVxdWVuY3k/LnJhbmRvbUluc3RhbmNlc1xuICAgIH1cbiAgfVxuXG4gIGNyZWF0ZUZyZXF1ZW5jeVBhdHRlcm4oZnJlcXVlbmN5OiBhbnkpIHtcbiAgICBjb25zb2xlLmxvZyhmcmVxdWVuY3ksICdmcmVxdWVuY3knKTtcbiAgICBsZXQgcGF0dGVybiA9ICcnO1xuICAgIGxldCBzZWxlY3RlZERheSA9IGZyZXF1ZW5jeS5kYXlcbiAgICBzd2l0Y2ggKGZyZXF1ZW5jeS50eXBlKSB7XG5cbiAgICAgIGNhc2UgJ29uZV90aW1lJzpcbiAgICAgICAgbGV0IGRhdGVfdmFsdWUgPSBmcmVxdWVuY3kucmVwZWF0T3B0aW9ucz8ubGlmZWN5Y2xlPy5zdGFydEZyb20/LnNwbGl0KCctJyk7XG5cbiAgICAgICAgcGF0dGVybiA9XG4gICAgICAgICAgJzB+JyArXG4gICAgICAgICAgJycgK1xuICAgICAgICAgIGRhdGVfdmFsdWVbMF0gK1xuICAgICAgICAgICd+JyArXG4gICAgICAgICAgKGRhdGVfdmFsdWVbMV0pICtcbiAgICAgICAgICAnficgK1xuICAgICAgICAgIGRhdGVfdmFsdWVbMl07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZGFpbHknOlxuICAgICAgICBwYXR0ZXJuID0gYDF+MH4wfiR7ZnJlcXVlbmN5LnJlcGVhdE9wdGlvbnM/LmV2ZXJ5fWA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnd2Vla2x5JzpcbiAgICAgICAgcGF0dGVybiA9IGAyfiR7dGhpcy5nZXREYXkoZnJlcXVlbmN5LnJlcGVhdE9wdGlvbnM/LnJlcGVhdE9uKX1+MH4ke2ZyZXF1ZW5jeS5yZXBlYXRPcHRpb25zPy5ldmVyeX1gO1xuICAgICAgICBicmVhazsgICBcbiAgICAgIGNhc2UgJ21vbnRobHknOlxuICAgICAgICBwYXR0ZXJuID1cbiAgICAgICAgICBgM34ke3NlbGVjdGVkRGF5fX4ke3RoaXMuZ2V0TW9udGgoZnJlcXVlbmN5LnJlcGVhdE9wdGlvbnM/LnJlcGVhdE9uKX1+MGA7XG4gICAgICAgIGJyZWFrO1xuICAgICBcbiAgICAgIGNhc2UgJ3F1YXJ0ZXJseSc6XG4gICAgICAgIHBhdHRlcm4gPSBgN34ke3NlbGVjdGVkRGF5fX4ke3RoaXMuZ2V0TW9udGgoZnJlcXVlbmN5LnJlcGVhdE9wdGlvbnM/LnJlcGVhdE9uKX1+MGA7XG4gICAgICAgIGJyZWFrO1xuICAgICBcbiAgICAgY2FzZSAnc2VtZXN0ZXInOlxuICAgICAgcGF0dGVybiA9IGA5fiR7c2VsZWN0ZWREYXl9fiR7dGhpcy5nZXRNb250aChmcmVxdWVuY3kucmVwZWF0T3B0aW9ucz8ucmVwZWF0T24pfX4wYDtcbiAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAneWVhcmx5JzpcbiAgICAgICAgcGF0dGVybiA9XG4gICAgICAgICAgYDR+JHtzZWxlY3RlZERheX1+JHt0aGlzLmdldE1vbnRoKGZyZXF1ZW5jeS5yZXBlYXRPcHRpb25zPy5yZXBlYXRPbil9fjFgO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ29uZ29pbmcnOlxuICAgICAgICBjb25zdCB0eXBlID0gWyd3ZWVrJywgJ21vbnRoJywgJ3F1YXJ0ZXInLCAnc2VtZXN0ZXInLCAneWVhciddO1xuICAgICAgICBjb25zdCBpbmRleCA9IHR5cGUuaW5kZXhPZihmcmVxdWVuY3kub25Hb2luZz8uc3RhcnRPZik7XG4gICAgICAgIHBhdHRlcm4gPSBgMTB+JHtmcmVxdWVuY3kub25Hb2luZz8ucmVtaW5kZXJzfX4ke2luZGV4fX4wYDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyYW5kb20nOiBcbiAgICAgIGxldCByYW5kb21UeXBlID0gWyd3ZWVrbHknLCAnbW9udGhseScsICdxdWFydGVybHknLCAneWVhcmx5J107XG4gICAgICBsZXQgcmFuZG9tSW5kZXggPSByYW5kb21UeXBlLmluZGV4T2YoZnJlcXVlbmN5LnJhbmRvbS50eXBlKTtcbiAgICAgIHBhdHRlcm4gPSBgOH4ke3JhbmRvbUluZGV4ICsgMX1+JHtyYW5kb21JbmRleH1+JHtmcmVxdWVuY3kucmFuZG9tLm9jY3VycmVuY2V9YDtcbiAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcGF0dGVybiA9IGA1fiR7ZnJlcXVlbmN5LnJhbmRvbS5vY2N1cnJlbmNlfX4wfjBgO1xuICAgIH1cbiAgICByZXR1cm4gcGF0dGVybjtcbiAgfVxuXG4gIGdldERheShyZXBlYXRPcHRpb25zOiBzdHJpbmcpIHtcbiAgICBjb25zdCBkYXkgPSByZXBlYXRPcHRpb25zLnNwbGl0KCcnKS5tYXAoTnVtYmVyKTtcbiAgICBjb25zdCBkYXlOYW1lID0gW107XG4gICAgZm9yKGxldCBpID0gMDsgaSA8IDc7IGkgKyspIHtcbiAgICAgIGlmKGRheVtpXSA9PT0gMSkge1xuICAgICAgICBkYXlOYW1lLnB1c2goaSArIDEpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGF5TmFtZS5qb2luKCcsJyk7XG4gIH1cblxuICBnZXRNb250aChyZXBlYXRPcHRpb25zOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IG1vbnRoID0gcmVwZWF0T3B0aW9ucy5zcGxpdCgnJykubWFwKE51bWJlcik7XG4gICAgICBjb25zdCBtb250aE5hbWUgPSBbXTtcbiAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCAxMjsgaSArKykge1xuICAgICAgICBpZihtb250aFtpXSA9PT0gMSkge1xuICAgICAgICAgIG1vbnRoTmFtZS5wdXNoKGkgKyAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG1vbnRoTmFtZS5qb2luKCcsJyk7XG4gIH1cbiAgICBcbiAgICBnZXRMaWZlY3ljbGVQYXR0ZXJuIChmcmVxdWVuY3k6IGFueSkge1xuICAgICAgbGV0IHBhdHRlcm4gPSBcIjAwMDAtMDAtMDB+fjBcIjtcbiAgICAgIGlmKCFmcmVxdWVuY3k/LnJlcGVhdE9wdGlvbnM/LmxpZmVjeWNsZT8uZW5kQnkgJiYgIWZyZXF1ZW5jeT8ucmVwZWF0T3B0aW9ucz8ubGlmZWN5Y2xlPy5lbmRBZnRlcikge1xuICAgICAgICByZXR1cm4gIHtcbiAgICAgICAgICBzdGFydEZyb206IG5ldyBEYXRlKGZyZXF1ZW5jeT8ucmVwZWF0T3B0aW9ucz8ubGlmZWN5Y2xlPy5zdGFydEZyb20pLmdldFRpbWUoKSAvIDEwMDAsXG4gICAgICAgICAgIHBhdHRlcm5cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmKGZyZXF1ZW5jeT8ucmVwZWF0T3B0aW9ucz8ubGlmZWN5Y2xlPy5lbmRCeSkge1xuICAgICAgICByZXR1cm4gIHtcbiAgICAgICAgICBzdGFydEZyb206IG5ldyBEYXRlKGZyZXF1ZW5jeT8ucmVwZWF0T3B0aW9ucz8ubGlmZWN5Y2xlPy5zdGFydEZyb20pLmdldFRpbWUoKSAvIDEwMDAsXG4gICAgICAgICAgIHBhdHRlcm46IHRoaXMuZm9ybWF0RGF0ZVN0cmluZyhmcmVxdWVuY3k/LnJlcGVhdE9wdGlvbnM/LmxpZmVjeWNsZT8uZW5kQnkpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZihmcmVxdWVuY3k/LnJlcGVhdE9wdGlvbnM/LmxpZmVjeWNsZT8uZW5kQWZ0ZXIpIHtcbiAgICAgICAgcmV0dXJuICB7XG4gICAgICAgICAgc3RhcnRGcm9tOiBuZXcgRGF0ZShmcmVxdWVuY3k/LnJlcGVhdE9wdGlvbnM/LmxpZmVjeWNsZT8uc3RhcnRGcm9tKS5nZXRUaW1lKCkgLyAxMDAwLFxuICAgICAgICAgICBwYXR0ZXJuOiBcIjAwMDAtMDAtMDB+flwiICsgZnJlcXVlbmN5Py5yZXBlYXRPcHRpb25zPy5saWZlY3ljbGU/LmVuZEFmdGVyXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN0YXJ0RnJvbTogbmV3IERhdGUoZnJlcXVlbmN5Py5yZXBlYXRPcHRpb25zPy5saWZlY3ljbGU/LnN0YXJ0RnJvbSkuZ2V0VGltZSgpIC8gMTAwMCxcbiAgICAgICAgcGF0dGVybjogXCIwMDAwLTAwLTAwfn4wXCJcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAqIENvbnZlcnRzIGEgZGF0ZSBzdHJpbmcgaW4gXCJZWVlZLU1NLUREXCIgZm9ybWF0IHRvIFwiREQtTW9udGgtWVlZWX5+MFwiLlxuICogXG4gKiBAcGFyYW0ge3N0cmluZ30gZGF0ZVN0cmluZyAtIFRoZSBpbnB1dCBkYXRlIHN0cmluZyBpbiBcIllZWVktTU0tRERcIiBmb3JtYXQuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSAtIFRoZSBmb3JtYXR0ZWQgZGF0ZSBzdHJpbmcgaW4gXCJERC1Nb250aC1ZWVlZfn4wXCIgZm9ybWF0LlxuICogXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogZm9ybWF0RGF0ZVN0cmluZyhcIjIwMjUtMDMtMjdcIik7IC8vIFJldHVybnMgXCIyNy1NYXJjaC0yMDI1fn4wXCJcbiAqIGBgYFxuICovXG4gZm9ybWF0RGF0ZVN0cmluZyhkYXRlU3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBkYXRlID0gbmV3IERhdGUoZGF0ZVN0cmluZyk7XG4gIFxuICBjb25zdCBkYXkgPSBkYXRlLmdldERhdGUoKTtcbiAgY29uc3QgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgXG4gIGNvbnN0IG1vbnRoTmFtZXMgPSBbXG4gICAgICBcIkphbnVhcnlcIiwgXCJGZWJydWFyeVwiLCBcIk1hcmNoXCIsIFwiQXByaWxcIiwgXCJNYXlcIiwgXCJKdW5lXCIsXG4gICAgICBcIkp1bHlcIiwgXCJBdWd1c3RcIiwgXCJTZXB0ZW1iZXJcIiwgXCJPY3RvYmVyXCIsIFwiTm92ZW1iZXJcIiwgXCJEZWNlbWJlclwiXG4gIF07XG4gIGNvbnN0IG1vbnRoID0gbW9udGhOYW1lc1tkYXRlLmdldE1vbnRoKCldO1xuXG4gIHJldHVybiBgJHtkYXl9LSR7bW9udGh9LSR7eWVhcn1+fjBgO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgbmFtZSBvZiBhIG1vbnRoIGJhc2VkIG9uIGl0cyBudW1lcmljYWwgdmFsdWUuXG4gKiBcbiAqIEBwYXJhbSB7bnVtYmVyfSBtb250aCAtIFRoZSBtb250aCBudW1iZXIgKDEtMTIpIHdoZXJlOlxuICogICAxID0gSmFudWFyeVxuICogICAyID0gRmVicnVhcnlcbiAqICAgLi4uXG4gKiAgIDEyID0gRGVjZW1iZXJcbiAqIFxuICogQHJldHVybnMge3N0cmluZyB8IHVuZGVmaW5lZH0gVGhlIG5hbWUgb2YgdGhlIG1vbnRoIChlLmcuLCBcIkpBTlwiLCBcIkZFQlwiLCBldGMuKSBvciB1bmRlZmluZWQgaWYgdGhlIG1vbnRoIG51bWJlciBpcyBpbnZhbGlkXG4gKiBcbiAqIEBleGFtcGxlXG4gKiBnZXRNb250aE5hbWUoMSkgIC8vIFJldHVybnM6IFwiSmFuXCJcbiAqIGdldE1vbnRoTmFtZSgxMikgLy8gUmV0dXJuczogXCJEZWNcIlxuICogZ2V0TW9udGhOYW1lKDEzKSAvLyBSZXR1cm5zOiB1bmRlZmluZWRcbiAqL1xucHVibGljIGdldE1vbnRoTmFtZShzZWxlY3RlZE1vbnRoOiBudW1iZXIpIHsgIFxuICByZXR1cm4gTU9OVEhfTkFNRVMuZmluZCgobW9udGg6IGFueSkgPT4gbW9udGgudmFsdWUgPT09IHNlbGVjdGVkTW9udGgpPy5tb250aDtcbn1cblxufVxuIl19
|
|
@@ -99,4 +99,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
99
99
|
}], closeList: [{
|
|
100
100
|
type: Output
|
|
101
101
|
}] } });
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmlzay1jbGFzc2lmaWNhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL3Jpc2stY2xhc3NpZmljYXRpb24vcmlzay1jbGFzc2lmaWNhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL3Jpc2stY2xhc3NpZmljYXRpb24vcmlzay1jbGFzc2lmaWNhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7O0FBTy9FLE1BQU0sT0FBTywyQkFBMkI7SUFDdEM7UUFDQSxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBRVAsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDOUIsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDekMsdUJBQWtCLEdBQUc7WUFDbkIsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtZQUN2QyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO1lBQ2xELEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUU7WUFDcEQsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtTQUMxQyxDQUFDO1FBQ0Ysc0JBQWlCLEdBQUc7WUFDbEIsRUFB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QUFDLGdCQUFnQjtZQUNoQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1NBQ25FLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4QixDQUFDOytHQXBGVSwyQkFBMkI7bUdBQTNCLDJCQUEyQiw0S0NSeEMscXBJQTZFQTs7NEZEckVhLDJCQUEyQjtrQkFMdkMsU0FBUzsrQkFDRSx5QkFBeUI7MEVBTzFCLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtcmlzay1jbGFzc2lmaWNhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9yaXNrLWNsYXNzaWZpY2F0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmlzay1jbGFzc2lmaWNhdGlvbi5jb21wb25lbnQubGVzcycsICcuLi8uLi9mb3Jtcy5sZXNzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFJpc2tDbGFzc2lmaWNhdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGNvbnN0cnVjdG9yKCkge31cbiAgYW5pbWF0aW9uID0gdHJ1ZTtcbiAgQElucHV0KCkgY3VycmVudFJpc2tWYWx1ZTogYW55O1xuICBAT3V0cHV0KCkgc2F2ZUxpc3QgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBjbG9zZUxpc3QgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHJpc2tDbGFzc2lmaWNhdGlvbiA9IFtcbiAgICB7IG5hbWU6ICdMb3cnLCB2YWx1ZTogMSwgY2xhc3M6ICdsb3cnIH0sXG4gICAgeyBuYW1lOiAnTG93LU1lZGl1bScsIHZhbHVlOiAyLCBjbGFzczogJ2xvdy1tZWQnIH0sXG4gICAgeyBuYW1lOiAnTWVkaXVtLUhpZ2gnLCB2YWx1ZTogMywgY2xhc3M6ICdtZWQtaGlnaCcgfSxcbiAgICB7IG5hbWU6ICdIaWdoJywgdmFsdWU6IDQsIGNsYXNzOiAnaGlnaCcgfSxcbiAgXTtcbiAgcmlza0ludGVuc2l0eUxpc3QgPSBbXG4gICAgeyBuYW1lOiAnTm90IEFwcGxpY2FibGUnLCB2YWx1ZTogJzAnIH0sXG4gICAgeyBuYW1lOiAnTG93JywgdmFsdWU6ICcxJyB9LFxuICAgIHsgbmFtZTogJ01lZGl1bScsIHZhbHVlOiAnMicgfSxcbiAgICB7IG5hbWU6ICdIaWdoJywgdmFsdWU6ICczJyB9LFxuICBdO1xuICBpZGVudGlmaWNhdGlvbkxpc3QgPSBbXG4gICAgeyBuYW1lOiAnRWFzeSB0byBJZGVudGlmeScsIHZhbHVlOiAnMScgfSxcbiAgICB7IG5hbWU6ICdJbnRlcm1lZGlhdGUnLCB2YWx1ZTogJzInIH0sXG4gICAgeyBuYW1lOiAnRGlmZmljdWx0JywgdmFsdWU6ICczJyB9LFxuICBdO1xuICBzZWxlY3RlZFZhbHVlcyA9IHtcbiAgICBlbnZUaHJlYXQ6ICcwJyxcbiAgICByZWdUaHJlYXQ6ICcwJyxcbiAgICBtYWNoaW5lVGhyZWF0OiAnMCcsXG4gICAgbGlmZVRocmVhdDogJzAnLFxuICAgIHByb2JhYmlsaXR5OiAnMScsXG4gICAgaWRlbnRpZmljYXRpb246ICcxJyxcbiAgfTtcbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmFuaW1hdGlvbiA9IGZhbHNlO1xuICAgIH0sIDUwMCk7XG4gIH1cbiAgZ2VuZXJhdGVSaXNrQ2xhc3MoKSB7XG4gICAgdGhpcy5jdXJyZW50Umlza1ZhbHVlID0gdGhpcy5jYWxjdWxhdGVSaXNrQ2xhc3MoXG4gICAgICB0aGlzLmdldEFycmF5RnJvbU9iamVjdCh0aGlzLnNlbGVjdGVkVmFsdWVzKVxuICAgICk7XG4gIH1cbiAgZ2V0QXJyYXlGcm9tT2JqZWN0KG9iamVjdDogb2JqZWN0KSB7XG4gICAgY29uc3QgcmlzayA9IFtdO1xuICAgIGZvciAoY29uc3QgdmFsdWUgb2YgT2JqZWN0LnZhbHVlcyhvYmplY3QpKSB7XG4gICAgICByaXNrLnB1c2gocGFyc2VJbnQodmFsdWUsIDEwKSk7XG4gICAgfVxuICAgIHJldHVybiByaXNrO1xuICB9XG4gIGNhbGN1bGF0ZVJpc2tDbGFzcyhyaXNrTWF0cmljZXM6IG51bWJlcltdKTogbnVtYmVyIHtcbiAgICBpZiAocmlza01hdHJpY2VzLmxlbmd0aCAhPT0gNikge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgICBjb25zdCBpbXBhY3QgPVxuICAgICAgcmlza01hdHJpY2VzWzBdICogMSArXG4gICAgICByaXNrTWF0cmljZXNbMV0gKiAyICtcbiAgICAgIHJpc2tNYXRyaWNlc1syXSAqIDIgK1xuICAgICAgcmlza01hdHJpY2VzWzNdICogMzsgLy8gdG90YWwgaW1wYWN0XG4gICAgY29uc3QgcmlzayA9IGltcGFjdCAqIHJpc2tNYXRyaWNlc1s0XSArIGltcGFjdCAqIHJpc2tNYXRyaWNlc1s1XTtcbiAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICAgIGNhc2UgcmlzayA8PSA5OiB7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfVxuICAgICAgY2FzZSByaXNrID49IDEwICYmIHJpc2sgPD0gMjM6IHtcbiAgICAgICAgcmV0dXJuIDI7XG4gICAgICB9XG4gICAgICBjYXNlIHJpc2sgPj0gMjQgJiYgcmlzayA8PSAzOToge1xuICAgICAgICByZXR1cm4gMztcbiAgICAgIH1cbiAgICAgIGNhc2UgcmlzayA+PSA0MCAmJiByaXNrIDw9IDE0NDoge1xuICAgICAgICByZXR1cm4gNDtcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIHNhdmUoKSB7XG4gICAgdGhpcy5zYXZlTGlzdC5lbWl0KHtcbiAgICAgIHJpc2tDbGFzczogdGhpcy5jdXJyZW50Umlza1ZhbHVlLFxuICAgICAgcmlza01hdHJpeDogdGhpcy5nZXRBcnJheUZyb21PYmplY3QodGhpcy5zZWxlY3RlZFZhbHVlcykuam9pbignLCcpLFxuICAgIH0pO1xuICB9XG4gIGNsb3NlKCkge1xuICAgIHRoaXMuY2xvc2VMaXN0LmVtaXQoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInJpc2stY2xhc3NpZmljYXRpb25cIiBbY2xhc3MuYW5pbWF0ZV09XCJhbmltYXRpb25cIj5cbiAgICA8ZGl2IGNsYXNzPVwicmlzay1jbGFzc2lmaWNhdGlvbi1oZWFkIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuIHZ4LXBsLTQgdngtcHItNFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTQgdngtZnctNTAwIHZ4LWxhYmVsLXR4dFwiPlJpc2sgQ2FsY3VsYXRvcjwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cInJpc2stY2xhc3NpZmljYXRpb24tYm9keVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicmlzay1jbGFzc2lmaWNhdGlvbi1ib2R5LWlubmVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmlzay1jbGFzc2lmaWNhdGlvbi1zd2l0Y2hcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgICpuZ0Zvcj1cImxldCBpZENsYXNzIG9mIHJpc2tDbGFzc2lmaWNhdGlvblwiIFtuZ0NsYXNzXT1cIltpZENsYXNzLmNsYXNzXVwiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZGlzYWJsZWQgdHlwZT1cInJhZGlvXCIgW2NoZWNrZWRdPVwiaWRDbGFzcy52YWx1ZSA9PT0gY3VycmVudFJpc2tWYWx1ZVwiIG5hbWU9XCJjbGFzc2lmaWNhdGlvbi1yaXNrXCIgW3ZhbHVlXT1cImlkQ2xhc3MudmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tpZENsYXNzPy5uYW1lfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5USFJFQVQgVE8gRU5WSVJPTk1FTlQ8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGNzLXNlbGVjdCBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVmFsdWVzLmVudlRocmVhdFwiICh2YWx1ZUNoYW5nZWQpPVwiZ2VuZXJhdGVSaXNrQ2xhc3MoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjcy1vcHRpb24gKm5nRm9yPVwibGV0IGxpc3Qgb2Ygcmlza0ludGVuc2l0eUxpc3RcIiBbdmFsdWVdPVwibGlzdC52YWx1ZVwiID57e2xpc3QubmFtZX19PC9jcy1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2NzLXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+UkVHVUxBVE9SWSBUSFJFQVQ8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGNzLXNlbGVjdCBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVmFsdWVzLnJlZ1RocmVhdFwiICh2YWx1ZUNoYW5nZWQpPVwiZ2VuZXJhdGVSaXNrQ2xhc3MoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjcy1vcHRpb24gW3ZhbHVlXT1cImxpc3QudmFsdWVcIiAqbmdGb3I9XCJsZXQgbGlzdCBvZiByaXNrSW50ZW5zaXR5TGlzdFwiPnt7bGlzdC5uYW1lfX08L2NzLW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvY3Mtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPlRIUkVBVCBUTyBNQUNISU5FPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxjcy1zZWxlY3QgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFZhbHVlcy5tYWNoaW5lVGhyZWF0XCIgKHZhbHVlQ2hhbmdlZCk9XCJnZW5lcmF0ZVJpc2tDbGFzcygpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNzLW9wdGlvbiBbdmFsdWVdPVwibGlzdC52YWx1ZVwiICpuZ0Zvcj1cImxldCBsaXN0IG9mIHJpc2tJbnRlbnNpdHlMaXN0XCI+e3tsaXN0Lm5hbWV9fTwvY3Mtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9jcy1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5USFJFQVQgVE8gTE9TUyBPRiBMSUZFPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxjcy1zZWxlY3QgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFZhbHVlcy5saWZlVGhyZWF0XCIgKHZhbHVlQ2hhbmdlZCk9XCJnZW5lcmF0ZVJpc2tDbGFzcygpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNzLW9wdGlvbiBbdmFsdWVdPVwibGlzdC52YWx1ZVwiICpuZ0Zvcj1cImxldCBsaXN0IG9mIHJpc2tJbnRlbnNpdHlMaXN0XCI+e3tsaXN0Lm5hbWV9fTwvY3Mtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9jcy1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPlBST0JBQklMSVRZPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxjcy1zZWxlY3QgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFZhbHVlcy5wcm9iYWJpbGl0eVwiICh2YWx1ZUNoYW5nZWQpPVwiZ2VuZXJhdGVSaXNrQ2xhc3MoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjcy1vcHRpb24gIFt2YWx1ZV09XCJsaXN0LnZhbHVlXCIgKm5nRm9yPVwibGV0IGxpc3Qgb2Ygcmlza0ludGVuc2l0eUxpc3R8c2xpY2U6MVwiPnt7bGlzdC5uYW1lfX08L2NzLW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvY3Mtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCIgPklERU5USUZJQ0FUSU9OPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxjcy1zZWxlY3QgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFZhbHVlcy5pZGVudGlmaWNhdGlvblwiICh2YWx1ZUNoYW5nZWQpPVwiZ2VuZXJhdGVSaXNrQ2xhc3MoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjcy1vcHRpb24gW3ZhbHVlXT1cImxpc3QudmFsdWVcIiAqbmdGb3I9XCJsZXQgbGlzdCBvZiBpZGVudGlmaWNhdGlvbkxpc3RcIj57e2xpc3QubmFtZX19PC9jcy1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2NzLXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwicmlzay1jbGFzc2lmaWNhdGlvbi1mb290ZXJcIj5cbiAgICAgICAgPGFwcC1mbG9hdGluZy1iYXIgKGNsb3NlTGlzdCk9XCJjbG9zZSgpXCIgICAoY2xvc2VFdmVudCk9XCJzYXZlKClcIj48L2FwcC1mbG9hdGluZy1iYXI+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmlzay1jbGFzc2lmaWNhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL3Jpc2stY2xhc3NpZmljYXRpb24vcmlzay1jbGFzc2lmaWNhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL3Jpc2stY2xhc3NpZmljYXRpb24vcmlzay1jbGFzc2lmaWNhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7O0FBTy9FLE1BQU0sT0FBTywyQkFBMkI7SUFDdEM7UUFDQSxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBRVAsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDOUIsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDekMsdUJBQWtCLEdBQUc7WUFDbkIsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtZQUN2QyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO1lBQ2xELEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUU7WUFDcEQsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtTQUMxQyxDQUFDO1FBQ0Ysc0JBQWlCLEdBQUc7WUFDbEIsRUFB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QUFDLGdCQUFnQjtZQUNoQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1NBQ25FLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4QixDQUFDOytHQXJGVSwyQkFBMkI7bUdBQTNCLDJCQUEyQiw0S0NSeEMscXBJQTZFQTs7NEZEckVhLDJCQUEyQjtrQkFMdkMsU0FBUzsrQkFDRSx5QkFBeUI7MEVBTzFCLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtcmlzay1jbGFzc2lmaWNhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9yaXNrLWNsYXNzaWZpY2F0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmlzay1jbGFzc2lmaWNhdGlvbi5jb21wb25lbnQubGVzcycsICcuLi8uLi9mb3Jtcy5sZXNzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFJpc2tDbGFzc2lmaWNhdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGNvbnN0cnVjdG9yKCkge31cbiAgYW5pbWF0aW9uID0gdHJ1ZTtcbiAgQElucHV0KCkgY3VycmVudFJpc2tWYWx1ZTogYW55O1xuICBAT3V0cHV0KCkgc2F2ZUxpc3QgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBjbG9zZUxpc3QgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHJpc2tDbGFzc2lmaWNhdGlvbiA9IFtcbiAgICB7IG5hbWU6ICdMb3cnLCB2YWx1ZTogMSwgY2xhc3M6ICdsb3cnIH0sXG4gICAgeyBuYW1lOiAnTG93LU1lZGl1bScsIHZhbHVlOiAyLCBjbGFzczogJ2xvdy1tZWQnIH0sXG4gICAgeyBuYW1lOiAnTWVkaXVtLUhpZ2gnLCB2YWx1ZTogMywgY2xhc3M6ICdtZWQtaGlnaCcgfSxcbiAgICB7IG5hbWU6ICdIaWdoJywgdmFsdWU6IDQsIGNsYXNzOiAnaGlnaCcgfSxcbiAgXTtcbiAgcmlza0ludGVuc2l0eUxpc3QgPSBbXG4gICAgeyBuYW1lOiAnTm90IEFwcGxpY2FibGUnLCB2YWx1ZTogJzAnIH0sXG4gICAgeyBuYW1lOiAnTG93JywgdmFsdWU6ICcxJyB9LFxuICAgIHsgbmFtZTogJ01lZGl1bScsIHZhbHVlOiAnMicgfSxcbiAgICB7IG5hbWU6ICdIaWdoJywgdmFsdWU6ICczJyB9LFxuICBdO1xuICBpZGVudGlmaWNhdGlvbkxpc3QgPSBbXG4gICAgeyBuYW1lOiAnRWFzeSB0byBJZGVudGlmeScsIHZhbHVlOiAnMScgfSxcbiAgICB7IG5hbWU6ICdJbnRlcm1lZGlhdGUnLCB2YWx1ZTogJzInIH0sXG4gICAgeyBuYW1lOiAnRGlmZmljdWx0JywgdmFsdWU6ICczJyB9LFxuICBdO1xuICBzZWxlY3RlZFZhbHVlcyA9IHtcbiAgICBlbnZUaHJlYXQ6ICcwJyxcbiAgICByZWdUaHJlYXQ6ICcwJyxcbiAgICBtYWNoaW5lVGhyZWF0OiAnMCcsXG4gICAgbGlmZVRocmVhdDogJzAnLFxuICAgIHByb2JhYmlsaXR5OiAnMScsXG4gICAgaWRlbnRpZmljYXRpb246ICcxJyxcbiAgfTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuYW5pbWF0aW9uID0gZmFsc2U7XG4gICAgfSwgNTAwKTtcbiAgfVxuICBnZW5lcmF0ZVJpc2tDbGFzcygpIHtcbiAgICB0aGlzLmN1cnJlbnRSaXNrVmFsdWUgPSB0aGlzLmNhbGN1bGF0ZVJpc2tDbGFzcyhcbiAgICAgIHRoaXMuZ2V0QXJyYXlGcm9tT2JqZWN0KHRoaXMuc2VsZWN0ZWRWYWx1ZXMpXG4gICAgKTtcbiAgfVxuICBnZXRBcnJheUZyb21PYmplY3Qob2JqZWN0OiBvYmplY3QpIHtcbiAgICBjb25zdCByaXNrID0gW107XG4gICAgZm9yIChjb25zdCB2YWx1ZSBvZiBPYmplY3QudmFsdWVzKG9iamVjdCkpIHtcbiAgICAgIHJpc2sucHVzaChwYXJzZUludCh2YWx1ZSwgMTApKTtcbiAgICB9XG4gICAgcmV0dXJuIHJpc2s7XG4gIH1cbiAgY2FsY3VsYXRlUmlza0NsYXNzKHJpc2tNYXRyaWNlczogbnVtYmVyW10pOiBudW1iZXIge1xuICAgIGlmIChyaXNrTWF0cmljZXMubGVuZ3RoICE9PSA2KSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuICAgIGNvbnN0IGltcGFjdCA9XG4gICAgICByaXNrTWF0cmljZXNbMF0gKiAxICtcbiAgICAgIHJpc2tNYXRyaWNlc1sxXSAqIDIgK1xuICAgICAgcmlza01hdHJpY2VzWzJdICogMiArXG4gICAgICByaXNrTWF0cmljZXNbM10gKiAzOyAvLyB0b3RhbCBpbXBhY3RcbiAgICBjb25zdCByaXNrID0gaW1wYWN0ICogcmlza01hdHJpY2VzWzRdICsgaW1wYWN0ICogcmlza01hdHJpY2VzWzVdO1xuICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgICAgY2FzZSByaXNrIDw9IDk6IHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9XG4gICAgICBjYXNlIHJpc2sgPj0gMTAgJiYgcmlzayA8PSAyMzoge1xuICAgICAgICByZXR1cm4gMjtcbiAgICAgIH1cbiAgICAgIGNhc2UgcmlzayA+PSAyNCAmJiByaXNrIDw9IDM5OiB7XG4gICAgICAgIHJldHVybiAzO1xuICAgICAgfVxuICAgICAgY2FzZSByaXNrID49IDQwICYmIHJpc2sgPD0gMTQ0OiB7XG4gICAgICAgIHJldHVybiA0O1xuICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICB9XG5cbiAgc2F2ZSgpIHtcbiAgICB0aGlzLnNhdmVMaXN0LmVtaXQoe1xuICAgICAgcmlza0NsYXNzOiB0aGlzLmN1cnJlbnRSaXNrVmFsdWUsXG4gICAgICByaXNrTWF0cml4OiB0aGlzLmdldEFycmF5RnJvbU9iamVjdCh0aGlzLnNlbGVjdGVkVmFsdWVzKS5qb2luKCcsJyksXG4gICAgfSk7XG4gIH1cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5jbG9zZUxpc3QuZW1pdCgpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicmlzay1jbGFzc2lmaWNhdGlvblwiIFtjbGFzcy5hbmltYXRlXT1cImFuaW1hdGlvblwiPlxuICAgIDxkaXYgY2xhc3M9XCJyaXNrLWNsYXNzaWZpY2F0aW9uLWhlYWQgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW4gdngtcGwtNCB2eC1wci00XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xNCB2eC1mdy01MDAgdngtbGFiZWwtdHh0XCI+UmlzayBDYWxjdWxhdG9yPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwicmlzay1jbGFzc2lmaWNhdGlvbi1ib2R5XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyaXNrLWNsYXNzaWZpY2F0aW9uLWJvZHktaW5uZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaXNrLWNsYXNzaWZpY2F0aW9uLXN3aXRjaFwiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCAgKm5nRm9yPVwibGV0IGlkQ2xhc3Mgb2Ygcmlza0NsYXNzaWZpY2F0aW9uXCIgW25nQ2xhc3NdPVwiW2lkQ2xhc3MuY2xhc3NdXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBkaXNhYmxlZCB0eXBlPVwicmFkaW9cIiBbY2hlY2tlZF09XCJpZENsYXNzLnZhbHVlID09PSBjdXJyZW50Umlza1ZhbHVlXCIgbmFtZT1cImNsYXNzaWZpY2F0aW9uLXJpc2tcIiBbdmFsdWVdPVwiaWRDbGFzcy52YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e2lkQ2xhc3M/Lm5hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCIgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPlRIUkVBVCBUTyBFTlZJUk9OTUVOVDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Y3Mtc2VsZWN0IFsobmdNb2RlbCldPVwic2VsZWN0ZWRWYWx1ZXMuZW52VGhyZWF0XCIgKHZhbHVlQ2hhbmdlZCk9XCJnZW5lcmF0ZVJpc2tDbGFzcygpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNzLW9wdGlvbiAqbmdGb3I9XCJsZXQgbGlzdCBvZiByaXNrSW50ZW5zaXR5TGlzdFwiIFt2YWx1ZV09XCJsaXN0LnZhbHVlXCIgPnt7bGlzdC5uYW1lfX08L2NzLW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvY3Mtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5SRUdVTEFUT1JZIFRIUkVBVDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Y3Mtc2VsZWN0IFsobmdNb2RlbCldPVwic2VsZWN0ZWRWYWx1ZXMucmVnVGhyZWF0XCIgKHZhbHVlQ2hhbmdlZCk9XCJnZW5lcmF0ZVJpc2tDbGFzcygpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNzLW9wdGlvbiBbdmFsdWVdPVwibGlzdC52YWx1ZVwiICpuZ0Zvcj1cImxldCBsaXN0IG9mIHJpc2tJbnRlbnNpdHlMaXN0XCI+e3tsaXN0Lm5hbWV9fTwvY3Mtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9jcy1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+VEhSRUFUIFRPIE1BQ0hJTkU8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGNzLXNlbGVjdCBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVmFsdWVzLm1hY2hpbmVUaHJlYXRcIiAodmFsdWVDaGFuZ2VkKT1cImdlbmVyYXRlUmlza0NsYXNzKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y3Mtb3B0aW9uIFt2YWx1ZV09XCJsaXN0LnZhbHVlXCIgKm5nRm9yPVwibGV0IGxpc3Qgb2Ygcmlza0ludGVuc2l0eUxpc3RcIj57e2xpc3QubmFtZX19PC9jcy1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2NzLXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPlRIUkVBVCBUTyBMT1NTIE9GIExJRkU8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGNzLXNlbGVjdCBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVmFsdWVzLmxpZmVUaHJlYXRcIiAodmFsdWVDaGFuZ2VkKT1cImdlbmVyYXRlUmlza0NsYXNzKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y3Mtb3B0aW9uIFt2YWx1ZV09XCJsaXN0LnZhbHVlXCIgKm5nRm9yPVwibGV0IGxpc3Qgb2Ygcmlza0ludGVuc2l0eUxpc3RcIj57e2xpc3QubmFtZX19PC9jcy1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2NzLXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+UFJPQkFCSUxJVFk8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGNzLXNlbGVjdCBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVmFsdWVzLnByb2JhYmlsaXR5XCIgKHZhbHVlQ2hhbmdlZCk9XCJnZW5lcmF0ZVJpc2tDbGFzcygpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNzLW9wdGlvbiAgW3ZhbHVlXT1cImxpc3QudmFsdWVcIiAqbmdGb3I9XCJsZXQgbGlzdCBvZiByaXNrSW50ZW5zaXR5TGlzdHxzbGljZToxXCI+e3tsaXN0Lm5hbWV9fTwvY3Mtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9jcy1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIiA+SURFTlRJRklDQVRJT048L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGNzLXNlbGVjdCBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVmFsdWVzLmlkZW50aWZpY2F0aW9uXCIgKHZhbHVlQ2hhbmdlZCk9XCJnZW5lcmF0ZVJpc2tDbGFzcygpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNzLW9wdGlvbiBbdmFsdWVdPVwibGlzdC52YWx1ZVwiICpuZ0Zvcj1cImxldCBsaXN0IG9mIGlkZW50aWZpY2F0aW9uTGlzdFwiPnt7bGlzdC5uYW1lfX08L2NzLW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvY3Mtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJyaXNrLWNsYXNzaWZpY2F0aW9uLWZvb3RlclwiPlxuICAgICAgICA8YXBwLWZsb2F0aW5nLWJhciAoY2xvc2VMaXN0KT1cImNsb3NlKClcIiAgIChjbG9zZUV2ZW50KT1cInNhdmUoKVwiPjwvYXBwLWZsb2F0aW5nLWJhcj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
|