@wavemaker/app-ng-runtime 11.6.0-next.26277 → 11.6.0-next.26282
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.
- app-ng-runtime/components/chart/bundles/index.umd.js +1 -1
- app-ng-runtime/components/chart/esm2020/chart.utils.mjs +2 -2
- app-ng-runtime/components/chart/fesm2015/index.mjs +1 -1
- app-ng-runtime/components/chart/fesm2015/index.mjs.map +1 -1
- app-ng-runtime/components/chart/fesm2020/index.mjs +1 -1
- app-ng-runtime/components/chart/fesm2020/index.mjs.map +1 -1
- app-ng-runtime/components/navigation/popover/bundles/index.umd.js +2 -2
- app-ng-runtime/components/navigation/popover/esm2020/popover.component.mjs +3 -3
- app-ng-runtime/components/navigation/popover/fesm2015/index.mjs +2 -2
- app-ng-runtime/components/navigation/popover/fesm2015/index.mjs.map +1 -1
- app-ng-runtime/components/navigation/popover/fesm2020/index.mjs +2 -2
- app-ng-runtime/components/navigation/popover/fesm2020/index.mjs.map +1 -1
- app-ng-runtime/package.json +1 -1
- app-ng-runtime/scripts/@wavemaker/nvd3/build/nv.d3.min.js +1 -1
- app-ng-runtime/variables/bundles/index.umd.js +13 -7
- app-ng-runtime/variables/esm2020/util/variable/variables.utils.mjs +14 -8
- app-ng-runtime/variables/fesm2015/index.mjs +13 -7
- app-ng-runtime/variables/fesm2015/index.mjs.map +1 -1
- app-ng-runtime/variables/fesm2020/index.mjs +13 -7
- app-ng-runtime/variables/fesm2020/index.mjs.map +1 -1
- app-ng-runtime/variables/util/variable/variables.utils.d.ts +1 -1
|
@@ -493,7 +493,7 @@
|
|
|
493
493
|
// Convert value to a string if it's a number
|
|
494
494
|
const stringValue = typeof value === 'number' ? value.toString() : value;
|
|
495
495
|
// Remove trailing zeros
|
|
496
|
-
return stringValue.replace(/\.0
|
|
496
|
+
return stringValue.replace(/\.0+([A-Za-z]*)$/, '$1').replace(/\.([1-9]+)0+([A-Za-z]*)$/, '.$1$2');
|
|
497
497
|
};
|
|
498
498
|
// Formats the given value according to number format
|
|
499
499
|
const getNumberFormatedData = (numberFormat, d) => {
|
|
@@ -400,7 +400,7 @@ const removeTrailingZeros = value => {
|
|
|
400
400
|
// Convert value to a string if it's a number
|
|
401
401
|
const stringValue = typeof value === 'number' ? value.toString() : value;
|
|
402
402
|
// Remove trailing zeros
|
|
403
|
-
return stringValue.replace(/\.0
|
|
403
|
+
return stringValue.replace(/\.0+([A-Za-z]*)$/, '$1').replace(/\.([1-9]+)0+([A-Za-z]*)$/, '.$1$2');
|
|
404
404
|
};
|
|
405
405
|
// Formats the given value according to number format
|
|
406
406
|
export const getNumberFormatedData = (numberFormat, d) => {
|
|
@@ -716,4 +716,4 @@ export const postPlotChartProcess = (widgetContext, isPreview) => {
|
|
|
716
716
|
};
|
|
717
717
|
// @ts-ignore
|
|
718
718
|
export const getDateList = () => dateList;
|
|
719
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvY2hhcnQvc3JjL2NoYXJ0LnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBSXpELE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxFQUNwRyxTQUFTLEdBQUcsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0FBRXpGLE1BQU0sUUFBUSxHQUFHLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLENBQUMsRUFDdkQsTUFBTSxHQUFHO0lBQ0wsYUFBYSxFQUFFO1FBQ1gsTUFBTSxFQUFFLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQztRQUNwTyxPQUFPLEVBQUU7WUFDTCxpQkFBaUIsRUFBRSxTQUFTO1lBQzVCLFdBQVcsRUFBRSxTQUFTO1NBQ3pCO0tBQ0o7SUFDRCxXQUFXLEVBQUU7UUFDVCxNQUFNLEVBQUUsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFF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QUFVLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxhQUFhLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFO1FBQzlGLElBQUcsYUFBYSxDQUFDLFVBQVUsS0FBSyxPQUFPLEVBQUU7WUFDckMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNqQztLQUNKO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDO0FBRUYsYUFBYTtBQUNiLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsYUFBYSxFQUFFLFNBQVUsRUFBRSxFQUFFO0lBQzlELE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDO0lBQ2hELG1GQUFtRjtJQUNuRixJQUFJLGVBQWUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDdEMsZ0JBQWdCLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNsRCxlQUFlLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQztLQUNyRDtJQUNELDBEQUEwRDtJQUMxRCxrQ0FBa0M7SUFDbEMseUVBQXlFO0lBQ3pFLElBQUk7QUFDUixDQUFDLENBQUM7QUFFRixhQUFhO0FBQ2IsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzRW1wdHlPYmplY3QsIHByZXR0aWZ5TGFiZWxzIH0gZnJvbSAnQHdtL2NvcmUnO1xuXG5kZWNsYXJlIGNvbnN0IF8sICQsIGQzLCBudiwgbW9tZW50O1xuXG5leHBvcnQgY29uc3QgY2hhcnRUeXBlcyA9IFsnQ29sdW1uJywgJ0xpbmUnLCAnQXJlYScsICdDdW11bGF0aXZlIExpbmUnLCAnQmFyJywgJ1BpZScsICdEb251dCcsICdCdWJibGUnXSxcbiAgICBhbGxTaGFwZXMgPSBbJ2NpcmNsZScsICdzcXVhcmUnLCAnZGlhbW9uZCcsICdjcm9zcycsICd0cmlhbmdsZS11cCcsICd0cmlhbmdsZS1kb3duJ107XG5cbmNvbnN0IGRhdGVMaXN0ID0gWycwMS8wMS8yMDAxJywgJzAxLzAxLzIwMDInLCAnMDEvMDEvMjAwMyddLFxuICAgIHRoZW1lcyA9IHtcbiAgICAgICAgJ1RlcnJlc3RyaWFsJzoge1xuICAgICAgICAgICAgY29sb3JzOiBbJyMxZjc3YjQnLCAnI2FlYzdlOCcsICcjZmY3ZjBlJywgJyNmZmJiNzgnLCAnIzJjYTAyYycsICcjOThkZjhhJywgJyNkNjI3MjgnLCAnI2ZmOTg5NicsICcjOTQ2N2JkJywgJyNjNWIwZDUnLCAnIzhjNTY0YicsICcjYzQ5Yzk0JywgJyNlMzc3YzInLCAnI2Y3YjZkMicsICcjN2Y3ZjdmJywgJyNjN2M3YzcnLCAnI2JjYmQyMicsICcjZGJkYjhkJywgJyMxN2JlY2YnLCAnIzllZGFlNSddLFxuICAgICAgICAgICAgdG9vbHRpcDoge1xuICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kQ29sb3InOiAnI2RlN2QyOCcsXG4gICAgICAgICAgICAgICAgJ3RleHRDb2xvcic6ICcjRkZGRkZGJ1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAnQW5uYWJlbGxlJzoge1xuICAgICAgICAgICAgY29sb3JzOiBbJyMzOTNiNzknLCAnIzUyNTRhMycsICcjNmI2ZWNmJywgJyM5YzllZGUnLCAnIzYzNzkzOScsICcjOGNhMjUyJywgJyNiNWNmNmInLCAnI2NlZGI5YycsICcjOGM2ZDMxJywgJyNiZDllMzknLCAnI2U3YmE1MicsICcjZTdjYjk0JywgJyM4NDNjMzknLCAnI2FkNDk0YScsICcjZDY2MTZiJywgJyNlNzk2OWMnLCAnIzdiNDE3MycsICcjYTU1MTk0JywgJyNjZTZkYmQnLCAnI2RlOWVkNiddLFxuICAgICAgICAgICAgdG9vbHRpcDoge1xuICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kQ29sb3InOiAnIzJlMzA2ZicsXG4gICAgICAgICAgICAgICAgJ3RleHRDb2xvcic6ICcjRkZGRkZGJ1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAnQXp1cmUnOiB7XG4gICAgICAgICAgICBjb2xvcnM6IFsnIzMxODJiZCcsICcjNmJhZWQ2JywgJyM5ZWNhZTEnLCAnI2M2ZGJlZicsICcjZTY1NTBkJywgJyNmZDhkM2MnLCAnI2ZkYWU2YicsICcjZmRkMGEyJywgJyMzMWEzNTQnLCAnIzc0YzQ3NicsICcjYTFkOTliJywgJyNjN2U5YzAnLCAnIzc1NmJiMScsICcjOWU5YWM4JywgJyNiY2JkZGMnLCAnI2RhZGFlYicsICcjNjM2MzYzJywgJyM5Njk2OTYnLCAnI2JkYmRiZCcsICcjZDlkOWQ5J10sXG4gICAgICAgICAgICB0b29sdGlwOiB7XG4gICAgICAgICAgICAgICAgJ2JhY2tncm91bmRDb2xvcic6ICcjMzE4MmJkJyxcbiAgICAgICAgICAgICAgICAndGV4dENvbG9yJzogJyNGRkZGRkYnXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgICdSZXRybyc6IHtcbiAgICAgICAgICAgIGNvbG9yczogWycjMGNhN2ExJywgJyNmZmE2MTUnLCAnIzMzNDk1NycsICcjYWNjNWMyJywgJyM5ODhmOTAnLCAnIzhhY2NjOScsICcjNTE1MTUxJywgJyNmMjc4NjEnLCAnIzM2YzlmZCcsICcjNzk0NjY4JywgJyMwZjcwOWQnLCAnIzBkMjczOCcsICcjNDRiZTc4JywgJyM0YTE4MzknLCAnIzZhMzkzZicsICcjNTU3ZDhiJywgJyM2YzMzMWMnLCAnIzFjMWMxYycsICcjODYxNTAwJywgJyMwOTU2MmEnXSxcbiAgICAgICAgICAgIHRvb2x0aXA6IHtcbiAgICAgICAgICAgICAgICAnYmFja2dyb3VuZENvbG9yJzogJyM4MDUxM2EnLFxuICAgICAgICAgICAgICAgICd0ZXh0Q29sb3InOiAnI0ZGRkZGRidcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgJ01lbGxvdyc6IHtcbiAgICAgICAgICAgIGNvbG9yczogWycjZjBkY2JmJywgJyM4OGM4NzcnLCAnI2FlYjkxOCcsICcjMmUyYzIzJywgJyNkZGRkZDInLCAnI2RmZTk1NicsICcjNGM5NjNiJywgJyM1ZDM4MDEnLCAnI2UxZWVjMycsICcjY2Q4NDcyJywgJyNmY2ZhYjMnLCAnIzlhNDYzNScsICcjOTI5NWFkJywgJyMyZTNmMTInLCAnIzU2NTY3NycsICcjNTU3ZDhiJywgJyM0ZjRkMDInLCAnIzBjMGMxYicsICcjODMzMzI0JywgJyMyNDEyMGUnXSxcbiAgICAgICAgICAgIHRvb2x0aXA6IHtcbiAgICAgICAgICAgICAgICAnYmFja2dyb3VuZENvbG9yJzogJyM3YzllNzMnLFxuICAgICAgICAgICAgICAgICd0ZXh0Q29sb3InOiAnI0ZGRkZGRidcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgJ09yaWVudCc6IHtcbiAgICAgICAgICAgIGNvbG9yczogWycjYTgwMDAwJywgJyNjYzZjM2MnLCAnI2YwZTQwMCcsICcjMDAwMDg0JywgJyNmY2NjNmMnLCAnIzAwOWM2YycsICcjY2MzMDljJywgJyM3OGNjMDAnLCAnI2ZjODRlNCcsICcjNDhlNGZjJywgJyM0ODc4ZDgnLCAnIzE4NmMwYycsICcjNjA2MDYwJywgJyNhOGE4YTgnLCAnIzAwMDAwMCcsICcjZDdkN2Q3JywgJyM3NWEwNmUnLCAnIzE5MGQwYicsICcjODg4ODg4JywgJyM2OTRiODQnXSxcbiAgICAgICAgICAgIHRvb2x0aXA6IHtcbiAgICAgICAgICAgICAgICAnYmFja2dyb3VuZENvbG9yJzogJyNjMTQyNDInLFxuICAgICAgICAgICAgICAgICd0ZXh0Q29sb3InOiAnI0ZGRkZGRidcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgJ0dyYXlTY2FsZSc6IHtcbiAgICAgICAgICAgIGNvbG9yczogWycjMTQxNDE0JywgJyMzNTM1MzUnLCAnIzViNWI1YicsICcjODQ4NDg0JywgJyNhOGE4YTgnLCAnI2MzYzNjMycsICcjZTBlMGUwJywgJyNjOGM4YzgnLCAnI2E1YTVhNScsICcjODc4Nzg3JywgJyM2NTY1NjUnLCAnIzRlNGU0ZScsICcjMzAzMDMwJywgJyMxYzFjMWMnLCAnIzRmNGY0ZicsICcjM2IzYjNiJywgJyM3NTc1NzUnLCAnIzYwNjA2MCcsICcjODY4Njg2JywgJyNjMWMxYzEnXSxcbiAgICAgICAgICAgIHRvb2x0aXA6IHtcbiAgICAgICAgICAgICAgICAnYmFja2dyb3VuZENvbG9yJzogJyM1NzU3NTcnLFxuICAgICAgICAgICAgICAgICd0ZXh0Q29sb3InOiAnI0ZGRkZGRidcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgJ0ZseWVyJzoge1xuICAgICAgICAgICAgY29sb3JzOiBbJyMzZjQ1NGMnLCAnIzVhNjQ2ZScsICcjODQ4Nzc4JywgJyNjZWRlZGYnLCAnIzc0YzRkZCcsICcjMDk0NmVkJywgJyMzODBiYjEnLCAnIzAwMGZmMCcsICcjZjU0YTIzJywgJyMxZGIyNjInLCAnI2JjYTNhYScsICcjZmZhNTAwJywgJyNhODZiMzInLCAnIzYzYTE4YycsICcjNTY3OTVlJywgJyM5MzQzNDMnLCAnI2I3NWY1ZicsICcjNzUyZDJkJywgJyM0ZTExMTEnLCAnIzkyMDYwNiddLFxuICAgICAgICAgICAgdG9vbHRpcDoge1xuICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kQ29sb3InOiAnIzQ3NjM3YycsXG4gICAgICAgICAgICAgICAgJ3RleHRDb2xvcic6ICcjRkZGRkZGJ1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAnTHVtaW5vc2l0eSc6IHtcbiAgICAgICAgICAgIGNvbG9yczogWycjRkZGRkZGJywgJyNlNGU0ZTQnLCAnIzAwYmNkNCcsICcjZjBkZDJmJywgJyMwMGFhYmYnLCAnIzAxODM3NicsICcjZTkxZTYzJywgJyMzOWU1ZDQnLCAnI2ZmNmQ2ZCcsICcjMDBmZjc2JywgJyNmZjk4MDAnLCAnIzk2OTY5NicsICcjZmY0MjAwJywgJyNlMDAwMDAnLCAnIzk1Y2JlNScsICcjNTMzMWZmJywgJyNmZmY0YTcnLCAnI2U3YTgwMCcsICcjMDA2MWU0JywgJyNkNWU3ZmYnXSxcbiAgICAgICAgICAgIHRvb2x0aXA6IHtcbiAgICAgICAgICAgICAgICAnYmFja2dyb3VuZENvbG9yJzogJyM0NzYzN2MnLFxuICAgICAgICAgICAgICAgICd0ZXh0Q29sb3InOiAnI0ZGRkZGRidcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAgYmFzaWNQcm9wZXJ0aWVzID0gWyd4YXhpc2xhYmVsJywgJ3lheGlzbGFiZWwnLCAneHVuaXRzJywgJ3l1bml0cycsICd4bnVtYmVyZm9ybWF0JywgJ3hkYXRlZm9ybWF0JywgJ3ludW1iZXJmb3JtYXQnLFxuICAgICAgICAnc2hvd3ZhbHVlcycsICdzaG93bGFiZWxzJywgJ3ZpZXd0eXBlJywgJ2FyZWF2aWV3dHlwZScsICdzdGFnZ2VybGFiZWxzJywgJ3JlZHVjZXh0aWNrcycsICdvZmZzZXR0b3AnLCAnb2Zmc2V0Ym90dG9tJywgJ29mZnNldHJpZ2h0JywgJ29mZnNldGxlZnQnLFxuICAgICAgICAnYmFyc3BhY2luZycsICd4YXhpc2xhYmVsZGlzdGFuY2UnLCAneWF4aXNsYWJlbGRpc3RhbmNlJywgJ3RoZW1lJywgJ2xhYmVsdHlwZScsICdkb251dHJhdGlvJywgJ3Nob3dsYWJlbHNvdXRzaWRlJywgJ3Nob3d4ZGlzdGFuY2UnLCAnc2hvd3lkaXN0YW5jZScsICdzaGFwZScsICdub2RhdGFtZXNzYWdlJywgJ2NhcHRpb25zJywgJ3Nob3d4YXhpcycsICdzaG93eWF4aXMnLFxuICAgICAgICAnY2VudGVybGFiZWwnLCAnY3VzdG9tY29sb3JzJywgJ3Nob3dsZWdlbmQnLCAnbGVnZW5kdHlwZScsICd4ZG9tYWluJywgJ3lkb21haW4nLCAndG9vbHRpcHMnLCAnbGluZXRoaWNrbmVzcycsICdoaWdobGlnaHRwb2ludHMnLCAnaW50ZXJwb2xhdGlvbicsICdsYWJlbHRocmVzaG9sZCddLFxuICAgIGJhclNwYWNpbmdNYXAgPSB7XG4gICAgICAgICdzbWFsbCcgOiAwLjMsXG4gICAgICAgICdtZWRpdW0nIDogMC41LFxuICAgICAgICAnbGFyZ2UnIDogMC44XG4gICAgfSxcbiAgICBkb251dFJhdGlvTWFwID0ge1xuICAgICAgICAnc21hbGwnIDogMC4zLFxuICAgICAgICAnbWVkaXVtJyA6IDAuNixcbiAgICAgICAgJ2xhcmdlJyA6IDAuN1xuICAgIH0sXG4gICAgYmFyU3BhY2luZ01hcEludmVydCA9IF8uaW52ZXJ0KGJhclNwYWNpbmdNYXApLFxuICAgIGRvbnV0UmF0aW9NYXBJbnZlcnQgPSBfLmludmVydChkb251dFJhdGlvTWFwKSxcbiAgICB0aWNrZm9ybWF0cyA9IHtcbiAgICAgICAgJ1Rob3VzYW5kJzoge1xuICAgICAgICAgICAgJ3ByZWZpeCc6ICdLJyxcbiAgICAgICAgICAgICdkaXZpZGVyJzogMTAwMFxuICAgICAgICB9LFxuICAgICAgICAnTWlsbGlvbicgOiB7XG4gICAgICAgICAgICAncHJlZml4JzogJ00nLFxuICAgICAgICAgICAgJ2RpdmlkZXInOiAxMDAwMDAwXG4gICAgICAgIH0sXG4gICAgICAgICdCaWxsaW9uJyA6IHtcbiAgICAgICAgICAgICdwcmVmaXgnOiAnQicsXG4gICAgICAgICAgICAnZGl2aWRlcic6IDEwMDAwMDAwMDBcbiAgICAgICAgfVxuICAgIH0sXG4gICAgY2hhcnRJZCA9ICcjcHJldmlldy1jaGFydCcsXG4gICAgZGF0YVR5cGVKU09OID0gWydDb2x1bW4nLCAnTGluZScsICdQaWUnLCAnQmFyJywgJ0RvbnV0JywgJ0J1YmJsZSddLCAgICAvLyBDaGFydHMgdGhhdCBzdXBwb3J0cyB0aGUgZGF0YSB0byBiZSBKU09OO1xuICAgIGxpbmVUeXBlQ2hhcnRzID0gWydMaW5lJywgJ0FyZWEnLCAnQ3VtdWxhdGl2ZSBMaW5lJ10sICAgLy8gQ2hhcnRzIHRoYXQgZG9lcyBub3Qgc3VwcG9ydHMgdGhlIHN0cmluZyB0eXBlIG9mIGRhdGEgaW4gdGhlIHhheGlzIGluIHRoZSBudmQzO1xuICAgIGRhdGFUeXBlQXJyYXkgPSBbJ0N1bXVsYXRpdmUgTGluZScsICdBcmVhJ10sICAgICAvLyBDaGFydHMgdGhhdCBzdXBwb3J0cyB0aGUgZGF0YSB0byBiZSBBcnJheVxuICAgIFNBTVBMRV9EQVRBID0ge1xuICAgICAgICAnZ3JvdXAxJyA6ICdFdXJvcGUnLFxuICAgICAgICAnZ3JvdXAyJyA6ICdBc2lhJyxcbiAgICAgICAgJ2dyb3VwMycgOiAnQW1lcmljYScsXG4gICAgICAgICdncm91cDQnIDogJ0F1c3RyYWxpYSdcbiAgICB9O1xuXG4vLyByZXR1cm5zIHRydWUgaWYgY2hhcnQgdHlwZSBpcyBwaWVcbmV4cG9ydCBjb25zdCBpc1BpZUNoYXJ0ID0gdHlwZSA9PiB0eXBlID09PSAnUGllJztcblxuLy8gcmV0dXJucyB0cnVlIGlmIGNoYXJ0IHR5cGUgaXMgbGluZVxuZXhwb3J0IGNvbnN0IGlzTGluZUNoYXJ0ID0gdHlwZSA9PiB0eXBlID09PSAnTGluZSc7XG5cbi8vIHJldHVybnMgdHJ1ZSBpZiBjaGFydCB0eXBlIGlzIGJhclxuZXhwb3J0IGNvbnN0IGlzQmFyQ2hhcnQgPSB0eXBlID0+IHR5cGUgPT09ICdCYXInO1xuXG4vLyByZXR1cm5zIHRydWUgaWYgY2hhcnQgdHlwZSBpcyBkb251dFxuZXhwb3J0IGNvbnN0IGlzRG9udXRDaGFydCA9IHR5cGUgPT4gdHlwZSA9PT0gJ0RvbnV0JztcblxuLy8gcmV0dXJucyB0cnVlIGlmIGNoYXJ0IHR5cGUgaXMgYnViYmxlXG5leHBvcnQgY29uc3QgaXNCdWJibGVDaGFydCA9IHR5cGUgPT4gdHlwZSA9PT0gJ0J1YmJsZSc7XG5cbi8vIHJldHVybnMgdHJ1ZSBpZiBjaGFydCB0eXBlIGlzIGNvbHVtblxuZXhwb3J0IGNvbnN0IGlzQ29sdW1uQ2hhcnQgPSB0eXBlID0+IHR5cGUgPT09ICdDb2x1bW4nO1xuXG4vLyByZXR1cm5zIHRydWUgaWYgY2hhcnQgdHlwZSBpcyBhcmVhXG5leHBvcnQgY29uc3QgaXNBcmVhQ2hhcnQgPSB0eXBlID0+IHR5cGUgPT09ICdBcmVhJztcblxuLy8gcmV0dXJucyB0cnVlIGlmIGNoYXJ0IHR5cGUgaXMgYXJlYVxuZXhwb3J0IGNvbnN0IGlzUGllVHlwZSA9IHR5cGUgPT4gaXNQaWVDaGFydCh0eXBlKSB8fCBpc0RvbnV0Q2hhcnQodHlwZSk7XG5cbi8vIFRoZSBmb3JtYXQgb2YgY2hhcnQgZGF0YSBpcyBhcnJheSBvZiBqc29uIG9iamVjdHMgaW4gY2FzZSBvZiB0aGUgZm9sbG93aW5nIHR5cGVzIG9mIGNoYXJ0XG5leHBvcnQgY29uc3QgaXNDaGFydERhdGFKU09OID0gdHlwZSA9PiBfLmluY2x1ZGVzKGRhdGFUeXBlSlNPTiwgdHlwZSkgfHwgIV8uaW5jbHVkZXMoY2hhcnRUeXBlcywgdHlwZSk7XG5cbi8vIFRoZSBmb3JtYXQgb2YgY2hhcnQgZGF0YSBpcyBhcnJheSBvZiBvYmplY3RzIGluIGNhc2Ugb2YgdGhlIGZvbGxvd2luZyB0eXBlcyBvZiBjaGFydFxuZXhwb3J0IGNvbnN0IGlzQ2hhcnREYXRhQXJyYXkgPSB0eXBlID0+IF8uaW5jbHVkZXMoZGF0YVR5cGVBcnJheSwgdHlwZSk7XG5cbi8vIHJldHVybnMgdHJ1ZSBpcyB0aGUgY2hhcnQgdHlwZSBpcyAnbGluZScsICdhcmVhJyBvciAnY3VtdWxhdGl2ZSBsaW5lJyBlbHNlIGZhbHNlXG5leHBvcnQgY29uc3QgaXNMaW5lVHlwZUNoYXJ0ID0gdHlwZSA9PiBfLmluY2x1ZGVzKGxpbmVUeXBlQ2hhcnRzLCB0eXBlKTtcblxuLy8gWC9ZIERvbWFpbiBwcm9wZXJ0aWVzIGFyZSBzdXBwb3J0ZWQgb25seSBmb3IgQ29sdW1uIGFuZCBBcmVhIGNoYXJ0c1xuZXhwb3J0IGNvbnN0IGlzQXhpc0RvbWFpblN1cHBvcnRlZCA9IHR5cGUgPT4gaXNDb2x1bW5DaGFydCh0eXBlKSB8fCBpc0FyZWFDaGFydCh0eXBlKTtcblxuLy8gUmV0dXJucyBiYXIgc3BhY2luZyB2YWx1ZVxuZXhwb3J0IGNvbnN0IGdldEJhclNwYWNpbmdWYWx1ZSA9ICh2YWx1ZSwgcHJvcCkgPT4ge1xuICAgIGlmIChwcm9wID09PSAndmFsdWUnKSB7XG4gICAgICAgIHJldHVybiBiYXJTcGFjaW5nTWFwW3ZhbHVlXTtcbiAgICB9XG4gICAgaWYgKHByb3AgPT09ICdrZXknKSB7XG4gICAgICAgIHJldHVybiBiYXJTcGFjaW5nTWFwSW52ZXJ0W3ZhbHVlXTtcbiAgICB9XG59O1xuXG4vLyBSZXR1cm5zIHJhZGl1cyB2YWx1ZVxuZXhwb3J0IGNvbnN0IGdldFJhZGl1c1ZhbHVlID0gKHZhbHVlLCBwcm9wKSA9PiB7XG4gICAgaWYgKHByb3AgPT09ICd2YWx1ZScpIHtcbiAgICAgICAgcmV0dXJuIGRvbnV0UmF0aW9NYXBbdmFsdWVdO1xuICAgIH1cbiAgICBpZiAocHJvcCA9PT0gJ2tleScpIHtcbiAgICAgICAgcmV0dXJuIGRvbnV0UmF0aW9NYXBJbnZlcnRbdmFsdWVdO1xuICAgIH1cbn07XG5cbi8vIFJldHVybnMgbGFiZWxzIGNvbmZpZ1xuZXhwb3J0IGNvbnN0IGdldExhYmVsVmFsdWVzID0gKHNob3dsYWJlbHMsIHNob3dsYWJlbHNvdXRzaWRlLCBwcm9wKSA9PiB7XG4gICAgY29uc3QgbGFiZWxzQ29uZmlnOiBhbnkgPSB7fTtcbiAgICBzd2l0Y2ggKHNob3dsYWJlbHMpIHtcbiAgICAgICAgY2FzZSAnaGlkZSc6XG4gICAgICAgICAgICBsYWJlbHNDb25maWcuc2hvd2xhYmVscyA9IGZhbHNlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2luc2lkZSc6XG4gICAgICAgICAgICBsYWJlbHNDb25maWcuc2hvd2xhYmVscyA9IHRydWU7XG4gICAgICAgICAgICBsYWJlbHNDb25maWcuc2hvd2xhYmVsc291dHNpZGUgPSBmYWxzZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdvdXRzaWRlJzpcbiAgICAgICAgICAgIGxhYmVsc0NvbmZpZy5zaG93bGFiZWxzID0gdHJ1ZTtcbiAgICAgICAgICAgIGxhYmVsc0NvbmZpZy5zaG93bGFiZWxzb3V0c2lkZSA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIGxhYmVsc0NvbmZpZztcbn07XG5cbi8vIENvbnN0cnVjdCB0aGUgc2FtcGxlIGRhdGFcbmV4cG9ydCBjb25zdCBjb25zdHJ1Y3RTYW1wbGVEYXRhID0gKGRhdGFUeXBlLCB5YXhpc0xlbmd0aCwgc2hhcGUpID0+IHtcbiAgICBsZXQgZmlyc3Rfc2VyaWVzID0gW10sXG4gICAgICAgIHNlY29uZF9zZXJpZXMgPSBbXSxcbiAgICAgICAgdGhpcmRfc2VyaWVzID0gW10sXG4gICAgICAgIGZpcnN0X3Nlcmllc19hcnJheSA9IFtdLFxuICAgICAgICBzZWNvbmRfc2VyaWVzX2FycmF5ID0gW10sXG4gICAgICAgIHRoaXJkX3Nlcmllc19hcnJheSA9IFtdLFxuICAgICAgICBmaXJzdF9zZXJpZXNfYnViYmxlID0gW10sXG4gICAgICAgIHNlY29uZF9zZXJpZXNfYnViYmxlID0gW10sXG4gICAgICAgIHRoaXJkX3Nlcmllc19idWJibGUgPSBbXSxcbiAgICAgICAgZGF0YSA9IFtdO1xuICAgIHN3aXRjaCAoZGF0YVR5cGUpIHtcbiAgICAgICAgY2FzZSAnanNvbkZvcm1hdCc6XG4gICAgICAgICAgICBmaXJzdF9zZXJpZXMgPSBbXG4gICAgICAgICAgICAgICAgeyd4JzogJzAxLzAxLzIwMDEnLCAneSc6IDQwMDAwMDB9LFxuICAgICAgICAgICAgICAgIHsneCc6ICcwMS8wMS8yMDAyJywgJ3knOiAxMDAwMDAwfSxcbiAgICAgICAgICAgICAgICB7J3gnOiAnMDEvMDEvMjAwMycsICd5JzogNTAwMDAwMH1cbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBzZWNvbmRfc2VyaWVzID0gW1xuICAgICAgICAgICAgICAgIHsneCc6ICcwMS8wMS8yMDAxJywgJ3knOiAzMDAwMDAwfSxcbiAgICAgICAgICAgICAgICB7J3gnOiAnMDEvMDEvMjAwMicsICd5JzogNDAwMDAwMH0sXG4gICAgICAgICAgICAgICAgeyd4JzogJzAxLzAxLzIwMDMnLCAneSc6IDcwMDAwMDB9XG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgdGhpcmRfc2VyaWVzID0gW1xuICAgICAgICAgICAgICAgIHsneCc6ICcwMS8wMS8yMDAxJywgJ3knOiAyMDAwMDAwfSxcbiAgICAgICAgICAgICAgICB7J3gnOiAnMDEvMDEvMjAwMicsICd5JzogODAwMDAwMH0sXG4gICAgICAgICAgICAgICAgeyd4JzogJzAxLzAxLzIwMDMnLCAneSc6IDYwMDAwMDB9XG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgZGF0YVswXSA9IHtcbiAgICAgICAgICAgICAgICB2YWx1ZXM6IGZpcnN0X3NlcmllcyxcbiAgICAgICAgICAgICAgICBrZXk6IFNBTVBMRV9EQVRBLmdyb3VwMVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmICh5YXhpc0xlbmd0aCA+PSAyKSB7XG4gICAgICAgICAgICAgICAgZGF0YVsxXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBzZWNvbmRfc2VyaWVzLFxuICAgICAgICAgICAgICAgICAgICBrZXk6IFNBTVBMRV9EQVRBLmdyb3VwMlxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoeWF4aXNMZW5ndGggPj0gMykge1xuICAgICAgICAgICAgICAgIGRhdGFbMl0gPSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlczogdGhpcmRfc2VyaWVzLFxuICAgICAgICAgICAgICAgICAgICBrZXk6IFNBTVBMRV9EQVRBLmdyb3VwM1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbGluZUNoYXJ0Rm9ybWF0JzpcbiAgICAgICAgICAgIGZpcnN0X3NlcmllcyA9IFtcbiAgICAgICAgICAgICAgICB7J3gnOiAxLCAneSc6IDQwMDAwMDB9LFxuICAgICAgICAgICAgICAgIHsneCc6IDIsICd5JzogMTAwMDAwMH0sXG4gICAgICAgICAgICAgICAgeyd4JzogMywgJ3knOiA1MDAwMDAwfVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIHNlY29uZF9zZXJpZXMgPSBbXG4gICAgICAgICAgICAgICAgeyd4JzogMSwgJ3knOiAzMDAwMDAwfSxcbiAgICAgICAgICAgICAgICB7J3gnOiAyLCAneSc6IDQwMDAwMDB9LFxuICAgICAgICAgICAgICAgIHsneCc6IDMsICd5JzogNzAwMDAwMH1cbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICB0aGlyZF9zZXJpZXMgPSBbXG4gICAgICAgICAgICAgICAgeyd4JzogMSwgJ3knOiAyMDAwMDAwfSxcbiAgICAgICAgICAgICAgICB7J3gnOiAyLCAneSc6IDgwMDAwMDB9LFxuICAgICAgICAgICAgICAgIHsneCc6IDMsICd5JzogNjAwMDAwMH1cbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBkYXRhWzBdID0ge1xuICAgICAgICAgICAgICAgIHZhbHVlczogZmlyc3Rfc2VyaWVzLFxuICAgICAgICAgICAgICAgIGtleTogU0FNUExFX0RBVEEuZ3JvdXAxXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKHlheGlzTGVuZ3RoID49IDIpIHtcbiAgICAgICAgICAgICAgICBkYXRhWzFdID0ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IHNlY29uZF9zZXJpZXMsXG4gICAgICAgICAgICAgICAgICAgIGtleTogU0FNUExFX0RBVEEuZ3JvdXAyXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh5YXhpc0xlbmd0aCA+PSAzKSB7XG4gICAgICAgICAgICAgICAgZGF0YVsyXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiB0aGlyZF9zZXJpZXMsXG4gICAgICAgICAgICAgICAgICAgIGtleTogU0FNUExFX0RBVEEuZ3JvdXAzXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdhcnJheUZvcm1hdCc6XG4gICAgICAgICAgICBmaXJzdF9zZXJpZXNfYXJyYXkgPSBbXG4gICAgICAgICAgICAgICAgWzEsIDQwMDAwMDBdLFxuICAgICAgICAgICAgICAgIFsyLCAxMDAwMDAwXSxcbiAgICAgICAgICAgICAgICBbMywgNTAwMDAwMF1cbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBzZWNvbmRfc2VyaWVzX2FycmF5ID0gW1xuICAgICAgICAgICAgICAgIFsxLCAzMDAwMDAwXSxcbiAgICAgICAgICAgICAgICBbMiwgNDAwMDAwMF0sXG4gICAgICAgICAgICAgICAgWzMsIDcwMDAwMDBdXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgdGhpcmRfc2VyaWVzX2FycmF5ID0gW1xuICAgICAgICAgICAgICAgIFsxLCAyMDAwMDAwXSxcbiAgICAgICAgICAgICAgICBbMiwgODAwMDAwMF0sXG4gICAgICAgICAgICAgICAgWzMsIDYwMDAwMDBdXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgZGF0YVswXSA9IHtcbiAgICAgICAgICAgICAgICB2YWx1ZXM6IGZpcnN0X3Nlcmllc19hcnJheSxcbiAgICAgICAgICAgICAgICBrZXk6IFNBTVBMRV9EQVRBLmdyb3VwMVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmICh5YXhpc0xlbmd0aCA+PSAyKSB7XG4gICAgICAgICAgICAgICAgZGF0YVsxXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBzZWNvbmRfc2VyaWVzX2FycmF5LFxuICAgICAgICAgICAgICAgICAgICBrZXk6IFNBTVBMRV9EQVRBLmdyb3VwMlxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoeWF4aXNMZW5ndGggPj0gMykge1xuICAgICAgICAgICAgICAgIGRhdGFbMl0gPSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlczogdGhpcmRfc2VyaWVzX2FycmF5LFxuICAgICAgICAgICAgICAgICAgICBrZXk6IFNBTVBMRV9EQVRBLmdyb3VwM1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnYnViYmxlRm9ybWF0JzpcbiAgICAgICAgICAgIHNoYXBlID0gc2hhcGUgPT09ICdyYW5kb20nID8gIGFsbFNoYXBlc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBhbGxTaGFwZXMubGVuZ3RoKV0gOiBzaGFwZTtcbiAgICAgICAgICAgIGZpcnN0X3Nlcmllc19idWJibGUgPSBbXG4gICAgICAgICAgICAgICAgeyd4JzogODAuNjYsICd5JzogMzM3Mzk5MDAsICAnc2l6ZSc6IDc4LCAnc2hhcGUnOiBzaGFwZX0sXG4gICAgICAgICAgICAgICAgeyd4JzogNzkuODQsICd5JzogODE5MDIzMDAsICAnc2l6ZSc6IDkwLCAnc2hhcGUnOiBzaGFwZX0sXG4gICAgICAgICAgICAgICAgeyd4JzogNzguNiwgICd5JzogNTUyMzEwMCwgICAnc2l6ZSc6IDQ1LCAnc2hhcGUnOiBzaGFwZX1cbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBzZWNvbmRfc2VyaWVzX2J1YmJsZSA9IFtcbiAgICAgICAgICAgICAgICB7J3gnOiA3Mi43MywgJ3knOiA3OTcxNjIwMCwgICdzaXplJzogOTgsICdzaGFwZSc6IHNoYXBlfSxcbiAgICAgICAgICAgICAgICB7J3gnOiA4MC4wNSwgJ3knOiA2MTgwMTYwMCwgICdzaXplJzogMjAsICdzaGFwZSc6IHNoYXBlfSxcbiAgICAgICAgICAgICAgICB7J3gnOiA3Mi40OSwgJ3knOiA3MzEzNzIwMCwgICdzaXplJzogMzQsICdzaGFwZSc6IHNoYXBlfVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIHRoaXJkX3Nlcmllc19idWJibGUgPSBbXG4gICAgICAgICAgICAgICAgeyd4JzogNjguMDksICd5JzogMzM3Mzk5MDAsICAnc2l6ZSc6IDQ1LCAnc2hhcGUnOiBzaGFwZX0sXG4gICAgICAgICAgICAgICAgeyd4JzogODEuNTUsICd5JzogNzQ4NTYwMCwgICAnc2l6ZSc6IDc4LCAnc2hhcGUnOiBzaGFwZX0sXG4gICAgICAgICAgICAgICAgeyd4JzogNjguNjAsICd5JzogMTQxODUwMDAwLCAnc2l6ZSc6IDU2LCAnc2hhcGUnOiBzaGFwZX1cbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBkYXRhWzBdID0ge1xuICAgICAgICAgICAgICAgIHZhbHVlczogZmlyc3Rfc2VyaWVzX2J1YmJsZSxcbiAgICAgICAgICAgICAgICBrZXk6IFNBTVBMRV9EQVRBLmdyb3VwMVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmICh5YXhpc0xlbmd0aCA+PSAyKSB7XG4gICAgICAgICAgICAgICAgZGF0YVsxXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBzZWNvbmRfc2VyaWVzX2J1YmJsZSxcbiAgICAgICAgICAgICAgICAgICAga2V5OiBTQU1QTEVfREFUQS5ncm91cDJcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHlheGlzTGVuZ3RoID49IDMpIHtcbiAgICAgICAgICAgICAgICBkYXRhWzJdID0ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IHRoaXJkX3Nlcmllc19idWJibGUsXG4gICAgICAgICAgICAgICAgICAgIGtleTogU0FNUExFX0RBVEEuZ3JvdXAzXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdwaWVDaGFydEZvcm1hdCc6XG4gICAgICAgICAgICBkYXRhID0gW1xuICAgICAgICAgICAgICAgIHsneCc6IFNBTVBMRV9EQVRBLmdyb3VwMSwgJ3knOiAxMDAwMDAwfSxcbiAgICAgICAgICAgICAgICB7J3gnOiBTQU1QTEVfREFUQS5ncm91cDIsICd5JzogMjAwMDAwMH0sXG4gICAgICAgICAgICAgICAgeyd4JzogU0FNUExFX0RBVEEuZ3JvdXAzLCAneSc6IDMwMDAwMDB9LFxuICAgICAgICAgICAgICAgIHsneCc6IFNBTVBMRV9EQVRBLmdyb3VwNCwgJ3knOiA0MDAwMDAwfVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXREYXRhVHlwZSA9IHdpZGdldENvbnRleHQgPT4ge1xuICAgIGNvbnN0IHR5cGUgPSB3aWRnZXRDb250ZXh0LnR5cGU7XG4gICAgaWYgKGlzTGluZUNoYXJ0KHR5cGUpKSB7XG4gICAgICAgIHJldHVybiAnbGluZUNoYXJ0Rm9ybWF0JztcbiAgICB9XG4gICAgaWYgKGlzUGllVHlwZSh0eXBlKSkge1xuICAgICAgICByZXR1cm4gJ3BpZUNoYXJ0Rm9ybWF0JztcbiAgICB9XG4gICAgaWYgKGlzQnViYmxlQ2hhcnQodHlwZSkpIHtcbiAgICAgICAgcmV0dXJuICdidWJibGVGb3JtYXQnO1xuICAgIH1cbiAgICByZXR1cm4gaXNDaGFydERhdGFKU09OKHR5cGUpID8gJ2pzb25Gb3JtYXQnIDogJ2FycmF5Rm9ybWF0Jztcbn07XG5cbi8vIFNhbXBsZSBkYXRhIHRvIHBvcHVsYXRlIHdoZW4gbm8gZGF0YSBpcyBib3VuZFxuZXhwb3J0IGNvbnN0IGdldFNhbXBsZURhdGEgPSB3aWRnZXRDb250ZXh0ID0+IGNvbnN0cnVjdFNhbXBsZURhdGEoZ2V0RGF0YVR5cGUod2lkZ2V0Q29udGV4dCksIF8uc3BsaXQod2lkZ2V0Q29udGV4dC55YXhpc2RhdGFrZXksICcsJykubGVuZ3RoLCB3aWRnZXRDb250ZXh0LnNoYXBlKTtcblxuLy8gQ2hlY2sgd2hldGhlciBYL1kgRG9tYWluIHdhcyBzZXQgdG8gTWluIGFuZCBpcyBzdXBwb3J0ZWQgZm9yIHRoZSBwcmVzZW50IGNoYXJ0XG5leHBvcnQgY29uc3QgaXNBeGlzRG9tYWluVmFsaWQgPSAod2lkZ2V0Q29udGV4dCwgYXhpcykgPT4ge1xuICAgIGlmICh3aWRnZXRDb250ZXh0W2F4aXMgKyAnZG9tYWluJ10gPT09ICdNaW4nICYmIChpc0F4aXNEb21haW5TdXBwb3J0ZWQod2lkZ2V0Q29udGV4dC50eXBlKSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn07XG5cbi8vIENoZWNrIHdoZXRoZXIgbWluIGFuZCBtYXggdmFsdWVzIGFyZSBmaW5pdGUgb3Igbm90XG5leHBvcnQgY29uc3QgYXJlTWluTWF4VmFsdWVzVmFsaWQgPSB2YWx1ZXMgPT4ge1xuICAgIGlmIChfLmlzRmluaXRlKHZhbHVlcy5taW4pICYmIF8uaXNGaW5pdGUodmFsdWVzLm1heCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRZU2NhbGVNaW5WYWx1ZSA9IHZhbHVlID0+IHtcbiAgICBjb25zdCBfbWluID0gTWF0aC5mbG9vcih2YWx1ZSk7XG4gICAgLyogSWYgdGhlIG51bWJlciBoYXMgYSkgZGVjaW1hbCBwYXJ0IHJldHVybmluZyBmbG9vciB2YWx1ZSAtIDAuMVxuICAgICBiKSBubyBkZWNpbWFsIHBhcnQgcmV0dXJuaW5nIGZsb29yIHZhbHVlIC0gMSAqL1xuICAgIHJldHVybiBNYXRoLmFicyh2YWx1ZSkgLSBfbWluID4gMCA/IHZhbHVlIC0gMC4xIDogX21pbiAtIDE7XG59O1xuXG4vLyBDaG9vc2VzIHRoZSBkYXRhIHBvaW50cyBvZiBsaW5lL2N1bXVsYXRpdmUgbGluZS9hcmVhIGNoYXJ0IGFuZCBoaWdobGlnaHRzIHRoZW1cbmV4cG9ydCBjb25zdCBoaWdobGlnaHRQb2ludHMgPSAoaWQsIGhpZ2hsaWdodHBvaW50cykgPT4ge1xuICAgIGNvbnN0IGNoYXJ0U3ZnID0gaWQgPyBkMy5zZWxlY3QoJyN3bUNoYXJ0JyArIGlkICsgJyBzdmcnKSA6IGQzLnNlbGVjdChjaGFydElkICsgJyBzdmcnKTtcbiAgICBpZiAoaGlnaGxpZ2h0cG9pbnRzKSB7XG4gICAgICAgIGNoYXJ0U3ZnLnNlbGVjdEFsbCgnLm52LXBvaW50JylcbiAgICAgICAgICAgIC5zdHlsZSgnc3Ryb2tlLXdpZHRoJywgJzZweCcpXG4gICAgICAgICAgICAuc3R5bGUoJ2ZpbGwtb3BhY2l0eScsICcwLjk1JylcbiAgICAgICAgICAgIC5zdHlsZSgnc3Ryb2tlLW9wYWNpdHknLCAnMC45NScpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNoYXJ0U3ZnLnNlbGVjdEFsbCgnLm52LXBvaW50JylcbiAgICAgICAgICAgIC5zdHlsZSgnc3Ryb2tlLXdpZHRoJywgJzBweCcpXG4gICAgICAgICAgICAuc3R5bGUoJ2ZpbGwtb3BhY2l0eScsICcwJyk7XG4gICAgfVxufTtcblxuLy8gQ2hvb3NlcyB0aGUgbGluZSBvZiBsaW5lL2N1bXVsYXRpdmUgbGluZSBhbmQgaW5jcmVhc2VzIHRoZSB0aGlja25lc3Mgb2YgaXRcbmV4cG9ydCBjb25zdCBzZXRMaW5lVGhpY2tuZXNzID0gKGlkLCB0aGlja25lc3MpID0+IHtcbiAgICBjb25zdCBjaGFydFN2ZyA9IGlkID8gZDMuc2VsZWN0KCcjd21DaGFydCcgKyBpZCArICcgc3ZnJykgOiBkMy5zZWxlY3QoY2hhcnRJZCArICcgc3ZnJyk7XG4gICAgdGhpY2tuZXNzID0gdGhpY2tuZXNzIHx8IDEuNTtcblxuICAgIGNvbnN0IGxpbmVzID0gY2hhcnRTdmcuc2VsZWN0QWxsKCcubnYtbGluZScpO1xuXG4gICAgaWYgKGxpbmVzLnNpemUoKSAhPT0gMCkge1xuICAgICAgICBsaW5lcy5zdHlsZSgnc3Ryb2tlLXdpZHRoJywgdGhpY2tuZXNzKTtcbiAgICB9XG59O1xuXG4vLyBDb25zdHJ1Y3RpbmcgYSBjb21tb24ga2V5IHZhbHVlIG1hcCBmb3IgcHJldmlldyBhbmQgY2FudmFzIG1vZGVcbmV4cG9ydCBjb25zdCBpbml0UHJvcGVydGllcyA9ICh3aWRnZXRDb250ZXh0LCBwcm9wZXJ0eVZhbHVlTWFwKSA9PiB7XG4gICAgaWYgKCFwcm9wZXJ0eVZhbHVlTWFwIHx8IGlzRW1wdHlPYmplY3QocHJvcGVydHlWYWx1ZU1hcCkpIHtcbiAgICAgICAgcHJvcGVydHlWYWx1ZU1hcCA9IHt9O1xuICAgIH1cbiAgICBfLmZvckVhY2goYmFzaWNQcm9wZXJ0aWVzLCBwcm9wID0+IHtcbiAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQocHJvcGVydHlWYWx1ZU1hcFtwcm9wXSkpIHtcbiAgICAgICAgICAgIHByb3BlcnR5VmFsdWVNYXBbcHJvcF0gPSB3aWRnZXRDb250ZXh0W3Byb3BdO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcHJvcGVydHlWYWx1ZU1hcDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXROdW1iZXJWYWx1ZSA9ICh2YWx1ZSwgY2FsbGJhY2spID0+IHtcbiAgICByZXR1cm4gaXNOYU4ocGFyc2VJbnQodmFsdWUsIDEwKSkgPyBjYWxsYmFjayh2YWx1ZSwgJ3ZhbHVlJykgOiB2YWx1ZTtcbn07XG5cbi8vIEZvcm1hdHMgdGhlIGdpdmVuIHZhbHVlIGFjY29yZGluZyB0byBkYXRlIGZvcm1hdFxuZXhwb3J0IGNvbnN0IGdldERhdGVGb3JtYXRlZERhdGEgPSAoZGF0ZUZvcm1hdCwgZCkgPT4ge1xuICAgIGRhdGVGb3JtYXQgPSBkYXRlRm9ybWF0IHx8ICcleCc7XG4gICAgLyoqXG4gICAgICogaWYgZGF0ZSB2YWx1ZSBpcyBzdHJpbmcgXCIyMC0wNS0yMDE5XCIgdGhlbiBuZXcgRGF0ZSh2YWx1ZSkgcmV0dXJuIDIwTWF5MjAxOSB3aXRoIGN1cnJlbnQgdGltZSBpbiBJbmRpYSxcbiAgICAgKiB3aGVyZWFzIHRoaXMgd2lsbCByZXR1cm4gMTlNYXkyMDE5IHdpdGggdGltZSBsYWdnaW5nIGZvciBmZXcgaG91cnMuXG4gICAgICogVGhpcyBpcyBiZWNhdXNlIGl0IHJldHVybnMgVVRDIHRpbWUgaS5lLiBDb29yZGluYXRlZCBVbml2ZXJzYWwgVGltZSAoVVRDKS5cbiAgICAgKiBUbyBjcmVhdGUgZGF0ZSBpbiBsb2NhbCB0aW1lIHVzZSBtb21lbnRcbiAgICAgKi9cbiAgICBpZihkYXRlRm9ybWF0ID09ICclYycpIHtcbiAgICAgICAgZGF0ZUZvcm1hdCA9ICclYSAlYiAlZSAlWCAlWSc7XG4gICAgfVxuICAgIHJldHVybiBkMy50aW1lRm9ybWF0KGRhdGVGb3JtYXQpKG5ldyBEYXRlKG1vbWVudChtb21lbnQoZCkuZm9ybWF0KCkpLnZhbHVlT2YoKSkpO1xufTtcbmNvbnN0IHJlbW92ZVRyYWlsaW5nWmVyb3MgPSB2YWx1ZSA9PiB7XG4gICAgaWYoIXZhbHVlKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgLy8gQ29udmVydCB2YWx1ZSB0byBhIHN0cmluZyBpZiBpdCdzIGEgbnVtYmVyXG4gICAgY29uc3Qgc3RyaW5nVmFsdWUgPSB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInID8gdmFsdWUudG9TdHJpbmcoKSA6IHZhbHVlO1xuXG4gICAgLy8gUmVtb3ZlIHRyYWlsaW5nIHplcm9zXG4gICAgcmV0dXJuIHN0cmluZ1ZhbHVlLnJlcGxhY2UoL1xcLjArJC8sIFwiXCIpLnJlcGxhY2UoL1xcLjArJSQvLCBcIiVcIik7XG59O1xuXG4vLyBGb3JtYXRzIHRoZSBnaXZlbiB2YWx1ZSBhY2NvcmRpbmcgdG8gbnVtYmVyIGZvcm1hdFxuZXhwb3J0IGNvbnN0IGdldE51bWJlckZvcm1hdGVkRGF0YSA9IChudW1iZXJGb3JtYXQsIGQpID0+IHtcbiAgICBsZXQgZm9ybWF0dGVkRGF0YSxcbiAgICAgICAgZGl2aWRlcixcbiAgICAgICAgcHJlZml4O1xuICAgIC8vIGZvcm1hdHRpbmcgdGhlIGRhdGEgYmFzZWQgb24gbnVtYmVyIGZvcm1hdCBzZWxlY3RlZFxuICAgIGlmIChudW1iZXJGb3JtYXQpIHtcbiAgICAgICAgbGV0IG51bWJlckZvcm1hdHRlcjtcbiAgICAgICAgaWYobnVtYmVyRm9ybWF0ID09ICdUaG91c2FuZCcgfHwgbnVtYmVyRm9ybWF0ID09ICdNaWxsaW9uJyB8fCBudW1iZXJGb3JtYXQgPT0gJ0JpbGxpb24nKSB7XG4gICAgICAgICAgICBudW1iZXJGb3JtYXR0ZXIgPSBkMy5mb3JtYXQoJywuMnMnKTtcbiAgICAgICAgfSBlbHNlIGlmKG51bWJlckZvcm1hdCA9PSAnJScpIHtcbiAgICAgICAgICAgIG51bWJlckZvcm1hdHRlciA9IGQzLmZvcm1hdCgnLjIlJyk7XG4gICAgICAgIH1lbHNlIGlmKG51bWJlckZvcm1hdCA9PSAnLmYnKSB7XG4gICAgICAgICAgICBudW1iZXJGb3JtYXR0ZXIgPSBkMy5mb3JtYXQoJy4yZicpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbnVtYmVyRm9ybWF0dGVyID0gZDMuZm9ybWF0KG51bWJlckZvcm1hdCk7XG4gICAgICAgIH1cbiAgICAgICAgZm9ybWF0dGVkRGF0YSA9IG51bWJlckZvcm1hdHRlcihkKTtcblxuXG4gICAgICAgIC8vIEdldHRpbmcgdGhlIHJlc3BlY3RpdmUgZGl2aWRlclsxMDAwLDEwMDAwMDAsMTAwMDAwMDAwMF0gYmFzZWQgb24gdGhlIG51bWJlciBmb3JtYXQgY2hvb3NlblxuICAgICAgICBkaXZpZGVyID0gKHRpY2tmb3JtYXRzW251bWJlckZvcm1hdF0gJiYgdGlja2Zvcm1hdHNbbnVtYmVyRm9ybWF0XS5kaXZpZGVyKSB8fCAwO1xuICAgICAgICBwcmVmaXggPSB0aWNrZm9ybWF0c1tudW1iZXJGb3JtYXRdICYmIHRpY2tmb3JtYXRzW251bWJlckZvcm1hdF0ucHJlZml4O1xuICAgICAgICBpZiAocHJlZml4ICYmIGRpdmlkZXIgIT09IDApIHtcbiAgICAgICAgICAgIGZvcm1hdHRlZERhdGEgPSBkMy5mb3JtYXQoJy4yZicpKGQgLyBkaXZpZGVyKSArIHByZWZpeDtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEF1dG8gZm9ybWF0dGluZyB0aGUgZGF0YSB3aGVuIG5vIGZvcm1hdGluZyBvcHRpb24gaXMgY2hvc2VuXG4gICAgICAgIGZvcm1hdHRlZERhdGEgPSBkID49IDEwMDAgPyBkMy5mb3JtYXQoJy4xcycpKGQpIDogZDtcbiAgICB9XG4gICAgZm9ybWF0dGVkRGF0YSA9IHJlbW92ZVRyYWlsaW5nWmVyb3MoZm9ybWF0dGVkRGF0YSk7XG4gICAgcmV0dXJuIGZvcm1hdHRlZERhdGE7XG59O1xuXG4vLyBTZXQgdGhlIHZpc2liaWxpdHkgcHJvcGVydHkgb2YgdGhlIGNoYXJ0IHgseSBheGlzIGR1ZSB0byBhIGJ1ZyBpbiB0aGUgbnZkM1xuZXhwb3J0IGNvbnN0IHRvZ2dsZUF4aXNTaG93ID0gKHByb3BlcnR5LCB2YWx1ZSkgPT4ge1xuICAgIGNvbnN0ICR4QXhpcyA9IGQzLnNlbGVjdChjaGFydElkICsgJyBnLm52LWF4aXMubnYteCcpLFxuICAgICAgICAkeUF4aXMgPSBkMy5zZWxlY3QoY2hhcnRJZCArICcgZy5udi1heGlzLm52LXknKTtcbiAgICBpZiAocHJvcGVydHkgPT09ICdzaG93eGF4aXMnKSB7XG4gICAgICAgICR4QXhpcy5zdHlsZSgndmlzaWJpbGl0eScsIHZhbHVlID8gJ3Zpc2libGUnIDogJ2hpZGRlbicpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgICR5QXhpcy5zdHlsZSgndmlzaWJpbGl0eScsIHZhbHVlID8gJ3Zpc2libGUnIDogJ2hpZGRlbicpO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBtb2RpZnlMZWdlbmRQb3NpdGlvbiA9ICh3aWRnZXRDb250ZXh0LCBwb3NpdGlvbiwgaWQpID0+IHtcbiAgICBjb25zdCBzaG93TGVnZW5kID0gaXNTaG93TGVnZW5kKHdpZGdldENvbnRleHQuc2hvd2xlZ2VuZCksXG4gICAgICAgIGNoYXJ0X0lkID0gaWQgPyAnI3dtQ2hhcnQnICsgaWQgOiBjaGFydElkLFxuICAgICAgICBsZWdlbmRXcmFwID0gZDMuc2VsZWN0KGNoYXJ0X0lkICsgJyAubnYtbGVnZW5kV3JhcCcpLFxuICAgICAgICBsZWdlbmRQYWRkaW5nID0gNTtcbiAgICAvLyBSZXR1cm4gd2hlbiBzaG93bGVnZW5kIGlzIGZhbHNlXG4gICAgaWYgKCFzaG93TGVnZW5kIHx8ICFsZWdlbmRXcmFwWydfZ3JvdXBzJ11bMF1bMF0pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAocG9zaXRpb24gPT09ICdib3R0b20nKSB7XG4gICAgICAgIGNvbnN0IGxlZ2VuZFdyYXBIZWlnaHQgPSBsZWdlbmRXcmFwWydfZ3JvdXBzJ11bMF1bMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0LFxuICAgICAgICAgICAgd3JhcCA9IGQzLnNlbGVjdChjaGFydF9JZCArICcgLm52LXdyYXAnKSxcbiAgICAgICAgICAgIHdyYXBUcmFuc2Zvcm0gPSAod3JhcCAmJiB3cmFwLmF0dHIoJ3RyYW5zZm9ybScpKSA/IHdyYXAuYXR0cigndHJhbnNmb3JtJykucmVwbGFjZSgvLCAvZywgJywnKSA6ICcnLFxuICAgICAgICAgICAgY29vcmRpbmF0ZXMgPSAvdHJhbnNsYXRlXFwoXFxzKihbXlxccywpXSspWyAsXShbXlxccywpXSspLy5leGVjKHdyYXBUcmFuc2Zvcm0pLFxuICAgICAgICAgICAgZ2V0Q2hhcnRIZWlnaHQgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGNoYXJ0SGVpZ2h0ID0gJChjaGFydF9JZCArICcgc3ZnPi5udmQzLm52LXdyYXAnKVswXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7XG4gICAgICAgICAgICAgICAgaWYgKGNoYXJ0SGVpZ2h0ID09PSAwKSB7IC8vIGZpeCBmb3IgSUVcbiAgICAgICAgICAgICAgICAgICAgY2hhcnRIZWlnaHQgPSAoJChjaGFydF9JZCArICcgc3ZnJylbMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0IC0gKGxlZ2VuZFdyYXBIZWlnaHQgKyAxNSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gY2hhcnRIZWlnaHQ7XG4gICAgICAgICAgICB9O1xuICAgICAgICBsZWdlbmRXcmFwLmF0dHIoJ3RyYW5zZm9ybScsICd0cmFuc2xhdGUoMCAsICcgKyAoZ2V0Q2hhcnRIZWlnaHQoKSAtIGxlZ2VuZFdyYXBIZWlnaHQgLSBsZWdlbmRQYWRkaW5nKSArICcpJyk7XG4gICAgICAgIGlmIChjb29yZGluYXRlcykge1xuICAgICAgICAgICAgd3JhcC5hdHRyKCd0cmFuc2Zvcm0nLCAndHJhbnNsYXRlKCcgKyBjb29yZGluYXRlc1sxXSArICcsJyArIGxlZ2VuZFBhZGRpbmcgKyAnKScpO1xuICAgICAgICB9XG4gICAgfVxufTtcblxuLy8gUmV0dXJucyB2YWx1ZSBpZiBsZWdlbmQgbmVlZCB0byBzaG93biBvciBub3RcbmV4cG9ydCBjb25zdCBpc1Nob3dMZWdlbmQgPSB2YWx1ZSA9PiB7XG4gICAgLy8gT2xkIHByb2plY3RzIHdpbGwgaGF2ZSBlaXRoZXIgdHJ1ZSBvciBmYWxzZVxuICAgIGlmICh2YWx1ZSA9PT0gJ2ZhbHNlJyB8fCB2YWx1ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAodmFsdWUgPT09ICd0cnVlJyB8fCB2YWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgLy8gTmV3IHByb2plY3RzIHdpbGwgaGF2ZSBlaXRoZXIgJ0hpZGUgTGVnZW5kJywgJ1Nob3cgVG9wJywgJ1Nob3cgQm90dG9tJ1xuICAgIHJldHVybiB2YWx1ZSA9PT0gJ2hpZGUnID8gZmFsc2UgOiB0cnVlO1xufTtcblxuLyoqXG4gKiBDdXN0b21pc2UgdGhlIHRvb2x0aXAgZm9yIGRvbnV0ICYgcGllIGNoYXJ0cyBhbmQgYWxzbyBmb3IgY2hhcnRzIGhhdmluZyBvbmx5IG9uZSB2YWx1ZSBhdHRhY2hlZCB0byB5YXhpc1xuICogQHBhcmFtIGtleVxuICogQHBhcmFtIGxhYmVsXG4gKi9cbmV4cG9ydCBjb25zdCBjdXN0b21pc2VUb29sdGlwID0gKGNoYXJ0LCBwcm9wZXJ0eVZhbHVlTWFwLCB3aWRnZXRDb250ZXh0LCBsYWJlbD8pID0+IHtcbiAgICBjaGFydC50b29sdGlwLmNvbnRlbnRHZW5lcmF0b3Ioa2V5ID0+IHtcbiAgICAgICAgbGV0IHhWYWx1ZSA9IGtleS5kYXRhLngsIHlWYWx1ZTtcbiAgICAgICAgeVZhbHVlID0gZ2V0TnVtYmVyRm9ybWF0ZWREYXRhKHByb3BlcnR5VmFsdWVNYXAueW51bWJlcmZvcm1hdCwga2V5LmRhdGEueSk7XG4gICAgICAgIGlmIChpc1BpZVR5cGUod2lkZ2V0Q29udGV4dC50eXBlKSkge1xuICAgICAgICAgICAgbGFiZWwgPSBrZXkuZGF0YS54O1xuICAgICAgICAgICAgeFZhbHVlID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICc8dGFibGU+JyArXG4gICAgICAgICAgICAnPHRib2R5PicgK1xuICAgICAgICAgICAgJzx0ciBjbGFzcz1cInZhbHVlXCI+PGI+JyArIHhWYWx1ZSArXG4gICAgICAgICAgICAnPC9iPjwvdHI+JyArXG4gICAgICAgICAgICAnPHRyPicgK1xuICAgICAgICAgICAgJzx0ZCBjbGFzcz1cImxlZ2VuZC1jb2xvci1ndWlkZVwiPjxkaXYgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOicgKyBrZXkuY29sb3IgKyAnO1wiPjwvZGl2PjwvdGQ+JyArXG4gICAgICAgICAgICAnPHRkIGNsYXNzPVwia2V5XCI+JyArIGxhYmVsICsgJzwvdGQ+JyArXG4gICAgICAgICAgICAnPHRkIGNsYXNzPVwidmFsdWVcIj4nICsgeVZhbHVlICsgJzwvdGQ+JyArXG4gICAgICAgICAgICAnPC90cj4nICtcbiAgICAgICAgICAgICc8L3Rib2R5PicgK1xuICAgICAgICAgICAgJzwvdGFibGU+JztcbiAgICB9KTtcbn07XG5cbi8vIGludGlhbGl6ZXMgdGhlIGNoYXJ0IG9iZWpjdFxuZXhwb3J0IGNvbnN0IGluaXRDaGFydCA9ICh3aWRnZXRDb250ZXh0LCB4RG9tYWluVmFsdWVzLCB5RG9tYWluVmFsdWVzLCBwcm9wZXJ0eVZhbHVlTWFwLCBpc1ByZXZpZXcpID0+IHtcbiAgICBwcm9wZXJ0eVZhbHVlTWFwID0gIGluaXRQcm9wZXJ0aWVzKHdpZGdldENvbnRleHQsIHByb3BlcnR5VmFsdWVNYXApO1xuICAgIGxldCBjaGFydCwgY29sb3JzID0gW10sIHhheGlzbGFiZWwsIHlheGlzbGFiZWwsIGxhYmVsQ29uZmlnLCByYWRpdXMsIGJhclNwYWNpbmcsXG4gICAgICAgIHNob3dMZWdlbmQsIHhBeGlzVmFsdWUsIGhhc011bHRpcGxlWVZhbHVlcztcbiAgICBjb25zdCB4VmFsdWU6IGFueSA9IHt9LCB5VmFsdWU6IGFueSA9IHt9O1xuICAgIHN3aXRjaCAod2lkZ2V0Q29udGV4dC50eXBlKSB7XG4gICAgICAgIGNhc2UgJ0NvbHVtbic6XG4gICAgICAgICAgICBiYXJTcGFjaW5nID0gZ2V0TnVtYmVyVmFsdWUocHJvcGVydHlWYWx1ZU1hcC5iYXJzcGFjaW5nLCBnZXRCYXJTcGFjaW5nVmFsdWUpIHx8IGJhclNwYWNpbmdNYXAubWVkaXVtO1xuICAgICAgICAgICAgY2hhcnQgPSBudi5tb2RlbHMubXVsdGlCYXJDaGFydCgpXG4gICAgICAgICAgICAgICAgLngoZCA9PiBkLngpXG4gICAgICAgICAgICAgICAgLnkoZCA9PiBkLnkpXG4gICAgICAgICAgICAgICAgLnJlZHVjZVhUaWNrcyhwcm9wZXJ0eVZhbHVlTWFwLnJlZHVjZXh0aWNrcylcbiAgICAgICAgICAgICAgICAucm90YXRlTGFiZWxzKDApXG4gICAgICAgICAgICAgICAgLnNob3dDb250cm9scyhmYWxzZSlcbiAgICAgICAgICAgICAgICAuc3RhY2tlZChwcm9wZXJ0eVZhbHVlTWFwLnZpZXd0eXBlID09PSAnU3RhY2tlZCcgPyAgdHJ1ZSA6IGZhbHNlKVxuICAgICAgICAgICAgICAgIC5ncm91cFNwYWNpbmcoYmFyU3BhY2luZyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnQ3VtdWxhdGl2ZSBMaW5lJzpcbiAgICAgICAgICAgIGNoYXJ0ID0gbnYubW9kZWxzLmN1bXVsYXRpdmVMaW5lQ2hhcnQoKVxuICAgICAgICAgICAgICAgIC54KGQgPT4gZFswXSlcbiAgICAgICAgICAgICAgICAueShkID0+IGRbMV0pXG4gICAgICAgICAgICAgICAgLnNob3dDb250cm9scyhmYWxzZSlcbiAgICAgICAgICAgICAgICAudXNlSW50ZXJhY3RpdmVHdWlkZWxpbmUocHJvcGVydHlWYWx1ZU1hcC50b29sdGlwcylcbiAgICAgICAgICAgICAgICAuaW50ZXJwb2xhdGUocHJvcGVydHlWYWx1ZU1hcC5pbnRlcnBvbGF0aW9uKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdMaW5lJzpcbiAgICAgICAgICAgIGNoYXJ0ID0gbnYubW9kZWxzLmxpbmVDaGFydCgpXG4gICAgICAgICAgICAgICAgLnVzZUludGVyYWN0aXZlR3VpZGVsaW5lKHByb3BlcnR5VmFsdWVNYXAudG9vbHRpcHMpXG4gICAgICAgICAgICAgICAgLmludGVycG9sYXRlKHByb3BlcnR5VmFsdWVNYXAuaW50ZXJwb2xhdGlvbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnQXJlYSc6XG4gICAgICAgICAgICBjaGFydCA9IG52Lm1vZGVscy5zdGFja2VkQXJlYUNoYXJ0KClcbiAgICAgICAgICAgICAgICAueChkID0+IGQueClcbiAgICAgICAgICAgICAgICAueShkID0+IGQueSlcbiAgICAgICAgICAgICAgICAuY2xpcEVkZ2UodHJ1ZSlcbiAgICAgICAgICAgICAgICAuc2hvd0NvbnRyb2xzKGZhbHNlKVxuICAgICAgICAgICAgICAgIC5zdHlsZShwcm9wZXJ0eVZhbHVlTWFwLmFyZWF2aWV3dHlwZSlcbiAgICAgICAgICAgICAgICAudXNlSW50ZXJhY3RpdmVHdWlkZWxpbmUocHJvcGVydHlWYWx1ZU1hcC50b29sdGlwcylcbiAgICAgICAgICAgICAgICAuaW50ZXJwb2xhdGUocHJvcGVydHlWYWx1ZU1hcC5pbnRlcnBvbGF0aW9uKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdCYXInOlxuICAgICAgICAgICAgYmFyU3BhY2luZyA9IGdldE51bWJlclZhbHVlKHByb3BlcnR5VmFsdWVNYXAuYmFyc3BhY2luZywgZ2V0QmFyU3BhY2luZ1ZhbHVlKSB8fCBiYXJTcGFjaW5nTWFwLm1lZGl1bTtcbiAgICAgICAgICAgIGNoYXJ0ID0gbnYubW9kZWxzLm11bHRpQmFySG9yaXpvbnRhbENoYXJ0KClcbiAgICAgICAgICAgICAgICAueChkID0+IGQueClcbiAgICAgICAgICAgICAgICAueShkID0+IGQueSlcbiAgICAgICAgICAgICAgICAuc2hvd0NvbnRyb2xzKGZhbHNlKVxuICAgICAgICAgICAgICAgIC5zdGFja2VkKHByb3BlcnR5VmFsdWVNYXAudmlld3R5cGUgPT09ICdTdGFja2VkJyA/ICB0cnVlIDogZmFsc2UpXG4gICAgICAgICAgICAgICAgLnNob3dWYWx1ZXMocHJvcGVydHlWYWx1ZU1hcC5zaG93dmFsdWVzKVxuICAgICAgICAgICAgICAgIC5ncm91cFNwYWNpbmcoYmFyU3BhY2luZyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnUGllJzpcbiAgICAgICAgY2FzZSAnRG9udXQnOlxuICAgICAgICAgICAgbGFiZWxDb25maWcgPSBnZXRMYWJlbFZhbHVlcyhwcm9wZXJ0eVZhbHVlTWFwLnNob3dsYWJlbHMsIHByb3BlcnR5VmFsdWVNYXAuc2hvd2xhYmVsc291dHNpZGUsICd2YWx1ZScpO1xuICAgICAgICAgICAgcmFkaXVzID0gZ2V0TnVtYmVyVmFsdWUocHJvcGVydHlWYWx1ZU1hcC5kb251dHJhdGlvLCBnZXRSYWRpdXNWYWx1ZSkgfHwgZG9udXRSYXRpb01hcC5tZWRpdW07XG4gICAgICAgICAgICBjaGFydCA9IG52Lm1vZGVscy5waWVDaGFydCgpXG4gICAgICAgICAgICAgICAgLngoZCA9PiBkLngpXG4gICAgICAgICAgICAgICAgLnkoZCA9PiBkLnkpXG4gICAgICAgICAgICAgICAgLnNob3dMYWJlbHMobGFiZWxDb25maWcuc2hvd2xhYmVscylcbiAgICAgICAgICAgICAgICAubGFiZWxUeXBlKHByb3BlcnR5VmFsdWVNYXAubGFiZWx0eXBlKVxuICAgICAgICAgICAgICAgIC52YWx1ZUZvcm1hdChkMy5mb3JtYXQoJyUnKSlcbiAgICAgICAgICAgICAgICAudGl0bGUocHJvcGVydHlWYWx1ZU1hcC5jZW50ZXJsYWJlbClcbiAgICAgICAgICAgICAgICAubGFiZWxUaHJlc2hvbGQocHJvcGVydHlWYWx1ZU1hcC5sYWJlbHRocmVzaG9sZCB8fCAwLjAxKVxuICAgICAgICAgICAgICAgIC5sYWJlbHNPdXRzaWRlKGxhYmVsQ29uZmlnLnNob3dsYWJlbHNvdXRzaWRlKTtcbiAgICAgICAgICAgIGlmIChpc0RvbnV0Q2hhcnQod2lkZ2V0Q29udGV4dC50eXBlKSkge1xuICAgICAgICAgICAgICAgIGNoYXJ0LmRvbnV0KHRydWUpXG4gICAgICAgICAgICAgICAgICAgIC5kb251dFJhdGlvKHJhZGl1cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocHJvcGVydHlWYWx1ZU1hcC5sYWJlbHR5cGUgPT09ICdrZXktdmFsdWUnKSB7XG4gICAgICAgICAgICAgICAgY2hhcnQubGFiZWxUeXBlKGQgPT4gZC5kYXRhLnggKyAnICcgKyBkLmRhdGEueSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnQnViYmxlJzpcbiAgICAgICAgICAgIGNoYXJ0ID0gbnYubW9kZWxzLnNjYXR0ZXJDaGFydCgpXG4gICAgICAgICAgICAgICAgLngoZCA9PiBkLngpXG4gICAgICAgICAgICAgICAgLnkoZCA9PiBkLnkpXG4gICAgICAgICAgICAgICAgLnNob3dEaXN0WChwcm9wZXJ0eVZhbHVlTWFwLnNob3d4ZGlzdGFuY2UpXG4gICAgICAgICAgICAgICAgLnNob3dEaXN0WShwcm9wZXJ0eVZhbHVlTWFwLnNob3d5ZGlzdGFuY2UpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKHhEb21haW5WYWx1ZXMpIHtcbiAgICAgICAgeFZhbHVlLm1pbiA9IHhEb21haW5WYWx1ZXMubWluLnggfHwgeERvbWFpblZhbHVlcy5taW5bMF07XG4gICAgICAgIHhWYWx1ZS5tYXggPSB4RG9tYWluVmFsdWVzLm1heC54IHx8IHhEb21haW5WYWx1ZXMubWF4WzBdO1xuICAgICAgICAvLyBJZiB0aGUgdmFsdWVzIG9uIHRoZSB4IGF4aXMgYXJlIHN0cmluZyB0aGVuIG1pbiBtYXggdmFsdWVzIGdpdmVzIEluZmluaXR5XG4gICAgICAgIGlmIChhcmVNaW5NYXhWYWx1ZXNWYWxpZCh4VmFsdWUpKSB7XG4gICAgICAgICAgICAvLyBSZWR1Y2luZyB0aGUgbWluIHZhbHVlIHRvIDAuMSBzbyB0aGUgbWluIHZhbHVlIGlzIG5vdCBtaXNzZWQgb3V0XG4gICAgICAgICAgICB4VmFsdWUubWluID0gZ2V0WVNjYWxlTWluVmFsdWUoeFZhbHVlLm1pbik7XG4gICAgICAgICAgICBjaGFydC54RG9tYWluKFt4VmFsdWUubWluLCB4VmFsdWUubWF4XSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoeURvbWFpblZhbHVlcykge1xuICAgICAgICAvLyBSZWR1Y2luZyB0aGUgbWluIHZhbHVlIHRvIDEgc28gdGhlIG1pbiB2YWx1ZSBpcyBub3QgbWlzc2VkIG91dFxuICAgICAgICB5VmFsdWUubWluID0geURvbWFpblZhbHVlcy5taW4ueSB8fCB5RG9tYWluVmFsdWVzLm1pblsxXTtcbiAgICAgICAgeVZhbHVlLm1heCA9IHlEb21haW5WYWx1ZXMubWF4LnkgfHwgeURvbWFpblZhbHVlcy5tYXhbMV07XG4gICAgICAgIC8vIElmIHRoZSB2YWx1ZXMgb24gdGhlIHkgYXhpcyBhcmUgc3RyaW5nIG9yIGludmFsaWQgdGhlbiBtaW4gbWF4IHZhbHVlcyBnaXZlcyBJbmZpbml0eVxuICAgICAgICBpZiAoYXJlTWluTWF4VmFsdWVzVmFsaWQoeVZhbHVlKSkge1xuICAgICAgICAgICAgLy8gUmVkdWNpbmcgdGhlIG1pbiB2YWx1ZSB0byAxIHNvIHRoZSBtaW4gdmFsdWUgaXMgbm90IG1pc3NlZCBvdXRcbiAgICAgICAgICAgIHlWYWx1ZS5taW4gPSBnZXRZU2NhbGVNaW5WYWx1ZSh5VmFsdWUubWluKTtcbiAgICAgICAgICAgIGNoYXJ0LnlEb21haW4oW3lWYWx1ZS5taW4sIHlWYWx1ZS5tYXhdKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNldHRpbmcgdGhlIGxlZ2VuZCB0eXBlIGNob29zZW4gYnkgdXNlciBvciBkZWZhdWx0IGl0IHdpbGwgYmUgZnVyaW91c1xuICAgIGNoYXJ0LmxlZ2VuZC52ZXJzKChwcm9wZXJ0eVZhbHVlTWFwLmxlZ2VuZHR5cGUgJiYgcHJvcGVydHlWYWx1ZU1hcC5sZWdlbmR0eXBlLnRvTG93ZXJDYXNlKCkpIHx8ICdmdXJpb3VzJyk7XG5cbiAgICBpZiAoIV8uaW5jbHVkZXMoY2hhcnRUeXBlcywgd2lkZ2V0Q29udGV4dC50eXBlKSkge1xuICAgICAgICBjaGFydCA9IG52Lm1vZGVscy5tdWx0aUJhckNoYXJ0KClcbiAgICAgICAgICAgIC54KGQgPT4gZC54KVxuICAgICAgICAgICAgLnkoZCA9PiBkLnkpO1xuICAgIH1cblxuXG4gICAgaWYgKGlzUGllVHlwZSh3aWRnZXRDb250ZXh0LnR5cGUpKSB7XG4gICAgICAgIC8vIEluIGNhc2Ugb2YgcGllL2RvbnV0IGNoYXJ0IGZvcm1hdHRpbmcgdGhlIHZhbHVlcyBvZiBpdFxuICAgICAgICBpZiAocHJvcGVydHlWYWx1ZU1hcC5sYWJlbHR5cGUgPT09ICdwZXJjZW50Jykge1xuICAgICAgICAgICAgY2hhcnQudmFsdWVGb3JtYXQoZDMuZm9ybWF0KCclJykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2hhcnQudmFsdWVGb3JtYXQoZCA9PiBnZXROdW1iZXJGb3JtYXRlZERhdGEocHJvcGVydHlWYWx1ZU1hcC55bnVtYmVyZm9ybWF0LCBkKSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gQ3VzdG9taXppbmcgdGhlIHRvb2x0aXBzIGluIGNhc2Ugb2YgdGhlIHBpZSBhbmQgZG9udXQgd2hlbiBsYWJlbFR5cGUgaXMgdmFsdWVcbiAgICAgICAgY3VzdG9taXNlVG9vbHRpcChjaGFydCwgcHJvcGVydHlWYWx1ZU1hcCwgd2lkZ2V0Q29udGV4dCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBjaGFydC5zaG93WEF4aXMocHJvcGVydHlWYWx1ZU1hcC5zaG93eGF4aXMpXG4gICAgICAgICAgICAuc2hvd1lBeGlzKHByb3BlcnR5VmFsdWVNYXAuc2hvd3lheGlzKTtcbiAgICAgICAgY2hhcnQubGVnZW5kUG9zaXRpb24ocHJvcGVydHlWYWx1ZU1hcC5zaG93bGVnZW5kKTtcblxuICAgICAgICAvLyBTZXR0aW5nIHRoZSBsYWJlbHMgaWYgdGhleSBhcmUgc3BlY2lmaWVkIGV4cGxpY2l0bHkgb3IgdGFraW5nIHRoZSBheGlza2V5cyBjaG9zZW5cbiAgICAgICAgeGF4aXNsYWJlbCA9IHByb3BlcnR5VmFsdWVNYXAueGF4aXNsYWJlbCB8fCBwcmV0dGlmeUxhYmVscyh3aWRnZXRDb250ZXh0LnhheGlzZGF0YWtleSkgfHwgJ3ggY2FwdGlvbic7XG4gICAgICAgIHlheGlzbGFiZWwgPSBwcm9wZXJ0eVZhbHVlTWFwLnlheGlzbGFiZWwgfHwgcHJldHRpZnlMYWJlbHMod2lkZ2V0Q29udGV4dC55YXhpc2RhdGFrZXkpIHx8ICd5IGNhcHRpb24nO1xuXG4gICAgICAgIC8vIENoZWNraW5nIGlmIHkgYXhpcyBoYXMgbXVsdGlwbGUgdmFsdWVzXG4gICAgICAgIGlmICh3aWRnZXRDb250ZXh0LnlheGlzZGF0YWtleSAmJiB3aWRnZXRDb250ZXh0LnlheGlzZGF0YWtleS5zcGxpdCgnLCcpLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGhhc011bHRpcGxlWVZhbHVlcyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gQ3VzdG9taXppbmcgdGhlIHRvb2x0aXAgdG8gc2hvdyB5YXhpc2xhYmVsLCBvbmx5IGlmIHRoZSB5IGF4aXMgY29udGFpbnMgb25lIHZhbHVlXG4gICAgICAgIGlmICghaGFzTXVsdGlwbGVZVmFsdWVzICYmICFpc0J1YmJsZUNoYXJ0KHdpZGdldENvbnRleHQudHlwZSkpIHtcbiAgICAgICAgICAgIGN1c3RvbWlzZVRvb2x0aXAoY2hhcnQsIHByb3BlcnR5VmFsdWVNYXAsIHdpZGdldENvbnRleHQsIHlheGlzbGFiZWwpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQWRkaW5nIHRoZSB1bml0cyB0byB0aGUgY2FwdGlvbnMgaWYgdGhleSBhcmUgc3BlY2lmaWVkXG4gICAgICAgIHhheGlzbGFiZWwgKz0gcHJvcGVydHlWYWx1ZU1hcC54dW5pdHMgPyAnKCcgKyBwcm9wZXJ0eVZhbHVlTWFwLnh1bml0cyArICcpJyA6ICcnO1xuICAgICAgICB5YXhpc2xhYmVsICs9IHByb3BlcnR5VmFsdWVNYXAueXVuaXRzID8gJygnICsgcHJvcGVydHlWYWx1ZU1hcC55dW5pdHMgKyAnKScgOiAnJztcblxuICAgICAgICBjaGFydC54QXhpc1xuICAgICAgICAgICAgLmF4aXNMYWJlbCh4YXhpc2xhYmVsKVxuICAgICAgICAgICAgLmF4aXNMYWJlbERpc3RhbmNlKHByb3BlcnR5VmFsdWVNYXAueGF4aXNsYWJlbGRpc3RhbmNlKVxuICAgICAgICAgICAgLnN0YWdnZXJMYWJlbHMocHJvcGVydHlWYWx1ZU1hcC5zdGFnZ2VybGFiZWxzKTtcblxuICAgICAgICAvLyBJZiBkYXRlIGZvcm1hdCBzZXQgZm9ybWF0IGJhc2VkIGRhdGUgZm9ybWF0XG4gICAgICAgIGlmIChwcm9wZXJ0eVZhbHVlTWFwLnhkYXRlZm9ybWF0IHx8IChpc1ByZXZpZXcgJiYgIWlzQnViYmxlQ2hhcnQod2lkZ2V0Q29udGV4dC50eXBlKSkpIHtcbiAgICAgICAgICAgIGlmIChpc0xpbmVUeXBlQ2hhcnQod2lkZ2V0Q29udGV4dC50eXBlKSkge1xuICAgICAgICAgICAgICAgIGNoYXJ0LnhBeGlzLnRpY2tGb3JtYXQoZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGdldCB0aGUgYWN0dWFsIHZhbHVlXG4gICAgICAgICAgICAgICAgICAgIHhBeGlzVmFsdWUgPSBpc1ByZXZpZXcgPyBkYXRlTGlzdFtkIC0gMV0gOiB3aWRnZXRDb250ZXh0LnhEYXRhS2V5QXJyW2RdO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0RGF0ZUZvcm1hdGVkRGF0YShwcm9wZXJ0eVZhbHVlTWFwLnhkYXRlZm9ybWF0LCB4QXhpc1ZhbHVlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY2hhcnQueEF4aXMudGlja0Zvcm1hdChkID0+IGdldERhdGVGb3JtYXRlZERhdGEocHJvcGVydHlWYWx1ZU1hcC54ZGF0ZWZvcm1hdCwgZCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnR5VmFsdWVNYXAueG51bWJlcmZvcm1hdCkge1xuICAgICAgICAgICAgY2hhcnQueEF4aXMudGlja0Zvcm1hdChkID0+IGdldE51bWJlckZvcm1hdGVkRGF0YShwcm9wZXJ0eVZhbHVlTWFwLnhudW1iZXJmb3JtYXQsIGQpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChpc0xpbmVUeXBlQ2hhcnQod2lkZ2V0Q29udGV4dC50eXBlKSkge1xuICAgICAgICAgICAgICAgIC8vIGdldCB0aGUgYWN0dWFsIHZhbHVlXG4gICAgICAgICAgICAgICAgY2hhcnQueEF4aXMudGlja0Zvcm1hdChkID0+IHdpZGdldENvbnRleHQueERhdGFLZXlBcnJbZF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNoYXJ0LnlBeGlzXG4gICAgICAgICAgICAuYXhpc0xhYmVsKHlheGlzbGFiZWwpXG4gICAgICAgICAgICAuYXhpc0xhYmVsRGlzdGFuY2UocHJvcGVydHlWYWx1ZU1hcC55YXhpc2xhYmVsZGlzdGFuY2UpXG4gICAgICAgICAgICAuc3RhZ2dlckxhYmVscyhwcm9wZXJ0eVZhbHVlTWFwLnN0YWdnZXJsYWJlbHMpXG4gICAgICAgICAgICAudGlja0Zvcm1hdChkID0+IGdldE51bWJlckZvcm1hdGVkRGF0YShwcm9wZXJ0eVZhbHVlTWFwLnludW1iZXJmb3JtYXQsIGQpKTtcbiAgICAgICAgaWYgKGlzQmFyQ2hhcnQod2lkZ2V0Q29udGV4dC50eXBlKSkge1xuICAgICAgICAgICAgY2hhcnQudmFsdWVGb3JtYXQoZCA9PiBnZXROdW1iZXJGb3JtYXRlZERhdGEocHJvcGVydHlWYWx1ZU1hcC55bnVtYmVyZm9ybWF0LCBkKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTdXBwb3J0IGZvciBjdXN0b20gY29sb3JzIGlmIHVzZXIgZ2l2ZXMgZGlyZWN0IHN0cmluZyBvZiBjb2xvcnMgaW4gdGV4dCBib3hcbiAgICBpZiAoXy5pc1N0cmluZyhwcm9wZXJ0eVZhbHVlTWFwLmN1c3RvbWNvbG9ycykgJiYgcHJvcGVydHlWYWx1ZU1hcC5jdXN0b21jb2xvcnMpIHtcbiAgICAgICAgY29sb3JzID0gXy5zcGxpdChwcm9wZXJ0eVZhbHVlTWFwLmN1c3RvbWNvbG9ycywgJywnKTtcbiAgICB9XG4gICAgaWYgKF8uaXNBcnJheShwcm9wZXJ0eVZhbHVlTWFwLmN1c3RvbWNvbG9ycykpIHtcbiAgICAgICAgY29sb3JzID0gcHJvcGVydHlWYWx1ZU1hcC5jdXN0b21jb2xvcnM7XG4gICAgfVxuXG4gICAgc2hvd0xlZ2VuZCA9IGlzU2hvd0xlZ2VuZChwcm9wZXJ0eVZhbHVlTWFwLnNob3dsZWdlbmQpO1xuICAgIGNoYXJ0LnNob3dMZWdlbmQoc2hvd0xlZ2VuZClcbiAgICAgICAgLm1hcmdpbih7dG9wOiBwcm9wZXJ0eVZhbHVlTWFwLm9mZnNldHRvcCwgcmlnaHQ6IHByb3BlcnR5VmFsdWVNYXAub2Zmc2V0cmlnaHQsIGJvdHRvbTogcHJvcGVydHlWYWx1ZU1hcC5vZmZzZXRib3R0b20sIGxlZnQ6IHByb3BlcnR5VmFsdWVNYXAub2Zmc2V0bGVmdH0pXG4gICAgICAgIC5jb2xvcihjb2xvcnMubGVuZ3RoID8gY29sb3JzIDogdGhlbWVzW3Byb3BlcnR5VmFsdWVNYXAudGhlbWVdLmNvbG9ycyk7XG5cbiAgICBjaGFydC50b29sdGlwLmVuYWJsZWQocHJvcGVydHlWYWx1ZU1hcC50b29sdGlwcyk7XG4gICAgd2lkZ2V0Q29udGV4dC5tZXNzYWdlID0gcHJvcGVydHlWYWx1ZU1hcC5ub2RhdGFtZXNzYWdlIHx8ICdObyBkYXRhIGZvdW5kJztcbiAgICAvLyBzZXR0aW5nIHRoZSBubyBkYXRhIG1lc3NhZ2VcbiAgICBjaGFydC5ub0RhdGEod2lkZ2V0Q29udGV4dC5tZXNzYWdlKTtcblxuICAgIGlmIChpc0xpbmVUeXBlQ2hhcnQod2lkZ2V0Q29udGV4dC50eXBlKSAmJiB3aWRnZXRDb250ZXh0LmhpZ2hsaWdodHBvaW50cykge1xuICAgICAgICBjaGFydC5kaXNwYXRjaC5vbignc3RhdGVDaGFuZ2UnLCAoKSA9PiB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHBvc3RQbG90Q2hhcnRQcm9jZXNzKHdpZGdldENvbnRleHQpLCAxMDApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAod2lkZ2V0Q29udGV4dC5zaG93bGVnZW5kICYmICh3aWRnZXRDb250ZXh0LnR5cGUgPT09ICdEb251dCcgfHwgd2lkZ2V0Q29udGV4dC50eXBlID09PSAnUGllJykpIHtcbiAgICAgICAgaWYod2lkZ2V0Q29udGV4dC5zaG93bGVnZW5kID09PSAncmlnaHQnKSB7XG4gICAgICAgICAgICBjaGFydC5sZWdlbmRQb3NpdGlvbigncmlnaHQnKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY2hhcnQ7XG59O1xuXG4vLyBAdHMtaWdub3JlXG5leHBvcnQgY29uc3QgcG9zdFBsb3RDaGFydFByb2Nlc3MgPSAod2lkZ2V0Q29udGV4dCwgaXNQcmV2aWV3PykgPT4ge1xuICAgIGNvbnN0IGlkID0gaXNQcmV2aWV3ID8gbnVsbCA6IHdpZGdldENvbnRleHQuJGlkO1xuICAgIC8vIElmIHVzZXIgc2V0cyB0byBoaWdobGlnaHQgdGhlIGRhdGEgcG9pbnRzIGFuZCBpbmNyZWFzZSB0aGUgdGhpY2tuZXNzIG9mIHRoZSBsaW5lXG4gICAgaWYgKGlzTGluZVR5cGVDaGFydCh3aWRnZXRDb250ZXh0LnR5cGUpKSB7XG4gICAgICAgc2V0TGluZVRoaWNrbmVzcyhpZCwgd2lkZ2V0Q29udGV4dC5saW5ldGhpY2tuZXNzKTtcbiAgICAgICBoaWdobGlnaHRQb2ludHMoaWQsIHdpZGdldENvbnRleHQuaGlnaGxpZ2h0cG9pbnRzKTtcbiAgICB9XG4gICAgLy8gTW9kaWZ5aW5nIHRoZSBsZWdlbmQgcG9zaXRpb24gb25seSB3aGVuIGxlZ2VuZCBpcyBzaG93blxuICAgIC8vIGlmICh3aWRnZXRDb250ZXh0LnNob3dsZWdlbmQpIHtcbiAgICAvLyAgICAgbW9kaWZ5TGVnZW5kUG9zaXRpb24od2lkZ2V0Q29udGV4dCwgd2lkZ2V0Q29udGV4dC5zaG93bGVnZW5kLCBpZCk7XG4gICAgLy8gfVxufTtcblxuLy8gQHRzLWlnbm9yZVxuZXhwb3J0IGNvbnN0IGdldERhdGVMaXN0ID0gKCkgPT4gZGF0ZUxpc3Q7XG5cbiJdfQ==
|
|
719
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvY2hhcnQvc3JjL2NoYXJ0LnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBSXpELE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxFQUNwRyxTQUFTLEdBQUcsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0FBRXpGLE1BQU0sUUFBUSxHQUFHLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLENBQUMsRUFDdkQsTUFBTSxHQUFHO0lBQ0wsYUFBYSxFQUFFO1FBQ1gsTUFBTSxFQUFFLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQztRQUNwTyxPQUFPLEVBQUU7WUFDTCxpQkFBaUIsRUFBRSxTQUFTO1lBQzVCLFdBQVcsRUFBRSxTQUFTO1NBQ3pCO0tBQ0o7SUFDRCxXQUFXLEVBQUU7UUFDVCxNQUFNLEVBQUUsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDO1FBQ3BPLE9BQU8sRUFBRTtZQUNMLGlCQUFpQixFQUFFLFNBQVM7WUFDNUIsV0FBVyxFQUFFLFNBQVM7U0FDekI7S0FDSjtJQUNELE9BQU8sRUFBRTtRQUNMLE1BQU0sRUFBRSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUM7UUFDcE8sT0FBTyxFQUFFO1lBQ0wsaUJBQWlCLEVBQUUsU0FBUztZQUM1QixXQUFXLEVBQUUsU0FBUztTQUN6QjtLQUNKO0lBQ0QsT0FBTyxFQUFFO1FBQ0wsTUFBTSxFQUFFLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQztRQUNwTyxPQUFPLEVBQUU7WUFDTCxpQkFBaUIsRUFBRSxTQUFTO1lBQzVCLFdBQVcsRUFBRSxTQUFTO1NBQ3pCO0tBQ0o7SUFDRCxRQUFRLEVBQUU7UUFDTixNQUFNLEVBQUUsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDO1FBQ3BPLE9BQU8sRUFBRTtZQUNMLGlCQUFpQixFQUFFLFNBQVM7WUFDNUIsV0FBVyxFQUFFLFNBQVM7U0FDekI7S0FDSjtJQUNELFFBQVEsRUFBRTtRQUNOLE1BQU0sRUFBRSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUM7UUFDcE8sT0FBTyxFQUFFO1lBQ0wsaUJBQWlCLEVBQUUsU0FBUztZQUM1QixXQUFXLEVBQUUsU0FBUztTQUN6QjtLQUNKO0lBQ0QsV0FBVyxFQUFFO1FBQ1QsTUFBTSxFQUFFLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQztRQUNwTyxPQUFPLEVBQUU7WUFDTCxpQkFBaUIsRUFBRSxTQUFTO1lBQzVCLFdBQVcsRUFBRSxTQUFTO1NBQ3pCO0tBQ0o7SUFDRCxPQUFPLEVBQUU7UUFDTCxNQUFNLEVBQUUsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDO1FBQ3BPLE9BQU8sRUFBRTtZQUNMLGlCQUFpQixFQUFFLFNBQVM7WUFDNUIsV0FBVyxFQUFFLFNBQVM7U0FDekI7S0FDSjtJQUNELFlBQVksRUFBRTtRQUNWLE1BQU0sRUFBRSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUM7UUFDcE8sT0FBTyxFQUFFO1lBQ0wsaUJBQWlCLEVBQUUsU0FBUztZQUM1QixXQUFXLEVBQUUsU0FBUztTQUN6QjtLQUNKO0NBQ0osRUFDRCxlQUFlLEdBQUcsQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxlQUFlO0lBQzlHLFlBQVksRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLFlBQVk7SUFDakosWUFBWSxFQUFFLG9CQUFvQixFQUFFLG9CQUFvQixFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLG1CQUFtQixFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFdBQVc7SUFDbk4sYUFBYSxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLENBQUMsRUFDdkssYUFBYSxHQUFHO0lBQ1osT0FBTyxFQUFHLEdBQUc7SUFDYixRQUFRLEVBQUcsR0FBRztJQUNkLE9BQU8sRUFBRyxHQUFHO0NBQ2hCLEVBQ0QsYUFBYSxHQUFHO0lBQ1osT0FBTyxFQUFHLEdBQUc7SUFDYixRQUFRLEVBQUcsR0FBRztJQUNkLE9BQU8sRUFBRyxHQUFHO0NBQ2hCLEVBQ0QsbUJBQW1CLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFDN0MsbUJBQW1CLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFDN0MsV0FBVyxHQUFHO0lBQ1YsVUFBVSxFQUFFO1FBQ1IsUUFBUSxFQUFFLEdBQUc7UUFDYixTQUFTLEVBQUUsSUFBSTtLQUNsQjtJQUNELFNBQVMsRUFBRztRQUNSLFFBQVEsRUFBRSxHQUFHO1FBQ2IsU0FBUyxFQUFFLE9BQU87S0FDckI7SUFDRCxTQUFTLEVBQUc7UUFDUixRQUFRLEVBQUUsR0FBRztRQUNiLFNBQVMsRUFBRSxVQUFVO0tBQ3hCO0NBQ0osRUFDRCxPQUFPLEdBQUcsZ0JBQWdCLEVBQzFCLFlBQVksR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLEVBQUssNENBQTRDO0FBQ25ILGNBQWMsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsaUJBQWlCLENBQUMsRUFBSSxrRkFBa0Y7QUFDMUksYUFBYSxHQUFHLENBQUMsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLEVBQU0sNENBQTRDO0FBQzdGLFdBQVcsR0FBRztJQUNWLFFBQVEsRUFBRyxRQUFRO0lBQ25CLFFBQVEsRUFBRyxNQUFNO0lBQ2pCLFFBQVEsRUFBRyxTQUFTO0lBQ3BCLFFBQVEsRUFBRyxXQUFXO0NBQ3pCLENBQUM7QUFFTixvQ0FBb0M7QUFDcEMsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQztBQUVqRCxxQ0FBcUM7QUFDckMsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQztBQUVuRCxvQ0FBb0M7QUFDcEMsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQztBQUVqRCxzQ0FBc0M7QUFDdEMsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQztBQUVyRCx1Q0FBdUM7QUFDdkMsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQztBQUV2RCx1Q0FBdUM7QUFDdkMsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQztBQUV2RCxxQ0FBcUM7QUFDckMsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQztBQUVuRCxxQ0FBcUM7QUFDckMsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUV4RSw0RkFBNEY7QUFDNUYsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUV2Ryx1RkFBdUY7QUFDdkYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUV4RSxtRkFBbUY7QUFDbkYsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFFeEUsc0VBQXNFO0FBQ3RFLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUV0Riw0QkFBNEI7QUFDNUIsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUU7SUFDOUMsSUFBSSxJQUFJLEtBQUssT0FBTyxFQUFFO1FBQ2xCLE9BQU8sYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQy9CO0lBQ0QsSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFO1FBQ2hCLE9BQU8sbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDckM7QUFDTCxDQUFDLENBQUM7QUFFRix1QkFBdUI7QUFDdkIsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFO0lBQzFDLElBQUksSUFBSSxLQUFLLE9BQU8sRUFBRTtRQUNsQixPQUFPLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUMvQjtJQUNELElBQUksSUFBSSxLQUFLLEtBQUssRUFBRTtRQUNoQixPQUFPLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ3JDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsd0JBQXdCO0FBQ3hCLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsRUFBRTtJQUNsRSxNQUFNLFlBQVksR0FBUSxFQUFFLENBQUM7SUFDN0IsUUFBUSxVQUFVLEVBQUU7UUFDaEIsS0FBSyxNQUFNO1lBQ1AsWUFBWSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7WUFDaEMsTUFBTTtRQUNWLEtBQUssUUFBUTtZQUNULFlBQVksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQy9CLFlBQVksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7WUFDdkMsTUFBTTtRQUNWLEtBQUssU0FBUztZQUNWLFlBQVksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQy9CLFlBQVksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7WUFDdEMsTUFBTTtLQUNiO0lBQ0QsT0FBTyxZQUFZLENBQUM7QUFDeEIsQ0FBQyxDQUFDO0FBRUYsNEJBQTRCO0FBQzVCLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsRUFBRTtJQUNoRSxJQUFJLFlBQVksR0FBRyxFQUFFLEVBQ2pCLGFBQWEsR0FBRyxFQUFFLEVBQ2xCLFlBQVksR0FBRyxFQUFFLEVBQ2pCLGtCQUFrQixHQUFHLEVBQUUsRUFDdkIsbUJBQW1CLEdBQUcsRUFBRSxFQUN4QixrQkFBa0IsR0FBRyxFQUFFLEVBQ3ZCLG1CQUFtQixHQUFHLEVBQUUsRUFDeEIsb0JBQW9CLEdBQUcsRUFBRSxFQUN6QixtQkFBbUIsR0FBRyxFQUFFLEVBQ3hCLElBQUksR0FBRyxFQUFFLENBQUM7SUFDZCxRQUFRLFFBQVEsRUFBRTtRQUNkLEtBQUssWUFBWTtZQUNiLFlBQVksR0FBRztnQkFDWCxFQUFDLEdBQUcsRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBQztnQkFDakMsRUFBQyxHQUFHLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUM7Z0JBQ2pDLEVBQUMsR0FBRyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFDO2FBQ3BDLENBQUM7WUFDRixhQUFhLEdBQUc7Z0JBQ1osRUFBQyxHQUFHLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUM7Z0JBQ2pDLEVBQUMsR0FBRyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFDO2dCQUNqQyxFQUFDLEdBQUcsRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBQzthQUNwQyxDQUFDO1lBQ0YsWUFBWSxHQUFHO2dCQUNYLEVBQUMsR0FBRyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFDO2dCQUNqQyxFQUFDLEdBQUcsRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBQztnQkFDakMsRUFBQyxHQUFHLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUM7YUFDcEMsQ0FBQztZQUNGLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRztnQkFDTixNQUFNLEVBQUUsWUFBWTtnQkFDcEIsR0FBRyxFQUFFLFdBQVcsQ0FBQyxNQUFNO2FBQzFCLENBQUM7WUFDRixJQUFJLFdBQVcsSUFBSSxDQUFDLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRztvQkFDTixNQUFNLEVBQUUsYUFBYTtvQkFDckIsR0FBRyxFQUFFLFdBQVcsQ0FBQyxNQUFNO2lCQUMxQixDQUFDO2FBQ0w7WUFDRCxJQUFJLFdBQVcsSUFBSSxDQUFDLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRztvQkFDTixNQUFNLEVBQUUsWUFBWTtvQkFDcEIsR0FBRyxFQUFFLFdBQVcsQ0FBQyxNQUFNO2lCQUMxQixDQUFDO2FBQ0w7WUFDRCxNQUFNO1FBQ1YsS0FBSyxpQkFBaUI7WUFDbEIsWUFBWSxHQUFHO2dCQUNYLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFDO2dCQUN0QixFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBQztnQkFDdEIsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUM7YUFDekIsQ0FBQztZQUNGLGFBQWEsR0FBRztnQkFDWixFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBQztnQkFDdEIsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUM7Z0JBQ3RCLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFDO2FBQ3pCLENBQUM7WUFDRixZQUFZLEdBQUc7Z0JBQ1gsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUM7Z0JBQ3RCLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFDO2dCQUN0QixFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBQzthQUN6QixDQUFDO1lBQ0YsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHO2dCQUNOLE1BQU0sRUFBRSxZQUFZO2dCQUNwQixHQUFHLEVBQUUsV0FBVyxDQUFDLE1BQU07YUFDMUIsQ0FBQztZQUNGLElBQUksV0FBVyxJQUFJLENBQUMsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHO29CQUNOLE1BQU0sRUFBRSxhQUFhO29CQUNyQixHQUFHLEVBQUUsV0FBVyxDQUFDLE1BQU07aUJBQzFCLENBQUM7YUFDTDtZQUNELElBQUksV0FBVyxJQUFJLENBQUMsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHO29CQUNOLE1BQU0sRUFBRSxZQUFZO29CQUNwQixHQUFHLEVBQUUsV0FBVyxDQUFDLE1BQU07aUJBQzFCLENBQUM7YUFDTDtZQUNELE1BQU07UUFDVixLQUFLLGFBQWE7WUFDZCxrQkFBa0IsR0FBRztnQkFDakIsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDO2dCQUNaLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQztnQkFDWixDQUFDLENBQUMsRUFBRSxPQUFPLENBQUM7YUFDZixDQUFDO1lBQ0YsbUJBQW1CLEdBQUc7Z0JBQ2xCLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQztnQkFDWixDQUFDLENBQUMsRUFBRSxPQUFPLENBQUM7Z0JBQ1osQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDO2FBQ2YsQ0FBQztZQUNGLGtCQUFrQixHQUFHO2dCQUNqQixDQUFDLENBQUMsRUFBRSxPQUFPLENBQUM7Z0JBQ1osQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDO2dCQUNaLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQzthQUNmLENBQUM7WUFDRixJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUc7Z0JBQ04sTUFBTSxFQUFFLGtCQUFrQjtnQkFDMUIsR0FBRyxFQUFFLFdBQVcsQ0FBQyxNQUFNO2FBQzFCLENBQUM7WUFDRixJQUFJLFdBQVcsSUFBSSxDQUFDLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRztvQkFDTixNQUFNLEVBQUUsbUJBQW1CO29CQUMzQixHQUFHLEVBQUUsV0FBVyxDQUFDLE1BQU07aUJBQzFCLENBQUM7YUFDTDtZQUNELElBQUksV0FBVyxJQUFJLENBQUMsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHO29CQUNOLE1BQU0sRUFBRSxrQkFBa0I7b0JBQzFCLEdBQUcsRUFBRSxXQUFXLENBQUMsTUFBTTtpQkFDMUIsQ0FBQzthQUNMO1lBQ0QsTUFBTTtRQUNWLEtBQUssY0FBYztZQUNmLEtBQUssR0FBRyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBRSxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUM5RixtQkFBbUIsR0FBRztnQkFDbEIsRUFBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFDO2dCQUN4RCxFQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUM7Z0JBQ3hELEVBQUMsR0FBRyxFQUFFLElBQUksRUFBRyxHQUFHLEVBQUUsT0FBTyxFQUFJLE1BQU0sRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBQzthQUMzRCxDQUFDO1lBQ0Ysb0JBQW9CLEdBQUc7Z0JBQ25CLEVBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBQztnQkFDeEQsRUFBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFDO2dCQUN4RCxFQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUM7YUFDM0QsQ0FBQztZQUNGLG1CQUFtQixHQUFHO2dCQUNsQixFQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUM7Z0JBQ3hELEVBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFJLE1BQU0sRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBQztnQkFDeEQsRUFBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFDO2FBQzNELENBQUM7WUFDRixJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUc7Z0JBQ04sTUFBTSxFQUFFLG1CQUFtQjtnQkFDM0IsR0FBRyxFQUFFLFdBQVcsQ0FBQyxNQUFNO2FBQzFCLENBQUM7WUFDRixJQUFJLFdBQVcsSUFBSSxDQUFDLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRztvQkFDTixNQUFNLEVBQUUsb0JBQW9CO29CQUM1QixHQUFHLEVBQUUsV0FBVyxDQUFDLE1BQU07aUJBQzFCLENBQUM7YUFDTDtZQUNELElBQUksV0FBVyxJQUFJLENBQUMsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHO29CQUNOLE1BQU0sRUFBRSxtQkFBbUI7b0JBQzNCLEdBQUcsRUFBRSxXQUFXLENBQUMsTUFBTTtpQkFDMUIsQ0FBQzthQUNMO1lBQ0QsTUFBTTtRQUNWLEtBQUssZ0JBQWdCO1lBQ2pCLElBQUksR0FBRztnQkFDSCxFQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUM7Z0JBQ3ZDLEVBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBQztnQkFDdkMsRUFBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFDO2dCQUN2QyxFQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUM7YUFDMUMsQ0FBQztZQUNGLE1BQU07S0FDYjtJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUMsRUFBRTtJQUN2QyxNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDO0lBQ2hDLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ25CLE9BQU8saUJBQWlCLENBQUM7S0FDNUI7SUFDRCxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUNqQixPQUFPLGdCQUFnQixDQUFDO0tBQzNCO0lBQ0QsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDckIsT0FBTyxjQUFjLENBQUM7S0FDekI7SUFDRCxPQUFPLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUM7QUFDaEUsQ0FBQyxDQUFDO0FBRUYsZ0RBQWdEO0FBQ2hELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUMsRUFBRSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUVwSyxpRkFBaUY7QUFDakYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxhQUFhLEVBQUUsSUFBSSxFQUFFLEVBQUU7SUFDckQsSUFBSSxhQUFhLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLHFCQUFxQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO1FBQ3pGLE9BQU8sSUFBSSxDQUFDO0tBQ2Y7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDLENBQUM7QUFFRixxREFBcUQ7QUFDckQsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxDQUFDLEVBQUU7SUFDekMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUNsRCxPQUFPLElBQUksQ0FBQztLQUNmO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDLEVBQUU7SUFDckMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQjtvREFDZ0Q7SUFDaEQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7QUFDL0QsQ0FBQyxDQUFDO0FBRUYsaUZBQWlGO0FBQ2pGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLEVBQUUsRUFBRSxlQUFlLEVBQUUsRUFBRTtJQUNuRCxNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLENBQUM7SUFDeEYsSUFBSSxlQUFlLEVBQUU7UUFDakIsUUFBUSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUM7YUFDMUIsS0FBSyxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUM7YUFDNUIsS0FBSyxDQUFDLGNBQWMsRUFBRSxNQUFNLENBQUM7YUFDN0IsS0FBSyxDQUFDLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQ3hDO1NBQU07UUFDSCxRQUFRLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQzthQUMxQixLQUFLLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQzthQUM1QixLQUFLLENBQUMsY0FBYyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQ25DO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsNkVBQTZFO0FBQzdFLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFO0lBQzlDLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsQ0FBQztJQUN4RixTQUFTLEdBQUcsU0FBUyxJQUFJLEdBQUcsQ0FBQztJQUU3QixNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRTdDLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRTtRQUNwQixLQUFLLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxTQUFTLENBQUMsQ0FBQztLQUMxQztBQUNMLENBQUMsQ0FBQztBQUVGLGtFQUFrRTtBQUNsRSxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRTtJQUM5RCxJQUFJLENBQUMsZ0JBQWdCLElBQUksYUFBYSxDQUFDLGdCQUFnQixDQUFDLEVBQUU7UUFDdEQsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO0tBQ3pCO0lBQ0QsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLEVBQUU7UUFDOUIsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUU7WUFDdkMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2hEO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLGdCQUFnQixDQUFDO0FBQzVCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRTtJQUM5QyxPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUN6RSxDQUFDLENBQUM7QUFFRixtREFBbUQ7QUFDbkQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDakQsVUFBVSxHQUFHLFVBQVUsSUFBSSxJQUFJLENBQUM7SUFDaEM7Ozs7O09BS0c7SUFDSCxJQUFHLFVBQVUsSUFBSSxJQUFJLEVBQUU7UUFDbkIsVUFBVSxHQUFHLGdCQUFnQixDQUFDO0tBQ2pDO0lBQ0QsT0FBTyxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDckYsQ0FBQyxDQUFDO0FBQ0YsTUFBTSxtQkFBbUIsR0FBRyxLQUFLLENBQUMsRUFBRTtJQUNoQyxJQUFHLENBQUMsS0FBSyxFQUFFO1FBQ1AsT0FBTyxLQUFLLENBQUM7S0FDaEI7SUFDRCw2Q0FBNkM7SUFDN0MsTUFBTSxXQUFXLEdBQUcsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUV6RSx3QkFBd0I7SUFDeEIsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQywwQkFBMEIsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUN0RyxDQUFDLENBQUM7QUFFRixxREFBcUQ7QUFDckQsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDckQsSUFBSSxhQUFhLEVBQ2IsT0FBTyxFQUNQLE1BQU0sQ0FBQztJQUNYLHNEQUFzRDtJQUN0RCxJQUFJLFlBQVksRUFBRTtRQUNkLElBQUksZUFBZSxDQUFDO1FBQ3BCLElBQUcsWUFBWSxJQUFJLFVBQVUsSUFBSSxZQUFZLElBQUksU0FBUyxJQUFJLFlBQVksSUFBSSxTQUFTLEVBQUU7WUFDckYsZUFBZSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDdkM7YUFBTSxJQUFHLFlBQVksSUFBSSxHQUFHLEVBQUU7WUFDM0IsZUFBZSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDdEM7YUFBSyxJQUFHLFlBQVksSUFBSSxJQUFJLEVBQUU7WUFDM0IsZUFBZSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDdEM7YUFBTTtZQUNILGVBQWUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQzdDO1FBQ0QsYUFBYSxHQUFHLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUduQyw2RkFBNkY7UUFDN0YsT0FBTyxHQUFHLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxJQUFJLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEYsTUFBTSxHQUFHLFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQ3ZFLElBQUksTUFBTSxJQUFJLE9BQU8sS0FBSyxDQUFDLEVBQUU7WUFDekIsYUFBYSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxHQUFHLE1BQU0sQ0FBQztTQUMxRDtLQUNKO1NBQU07UUFDSCw4REFBOEQ7UUFDOUQsYUFBYSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN2RDtJQUNELGFBQWEsR0FBRyxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNuRCxPQUFPLGFBQWEsQ0FBQztBQUN6QixDQUFDLENBQUM7QUFFRiw2RUFBNkU7QUFDN0UsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFFO0lBQzlDLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxHQUFHLGlCQUFpQixDQUFDLEVBQ2pELE1BQU0sR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3BELElBQUksUUFBUSxLQUFLLFdBQVcsRUFBRTtRQUMxQixNQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDNUQ7U0FBTTtRQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUM1RDtBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsYUFBYSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRTtJQUNoRSxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxFQUNyRCxRQUFRLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQ3pDLFVBQVUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQyxFQUNwRCxhQUFhLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLGtDQUFrQztJQUNsQyxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQzdDLE9BQU87S0FDVjtJQUNELElBQUksUUFBUSxLQUFLLFFBQVEsRUFBRTtRQUN2QixNQUFNLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLE1BQU0sRUFDL0UsSUFBSSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxFQUN4QyxhQUFhLEdBQUcsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFDbEcsV0FBVyxHQUFHLHdDQUF3QyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFDMUUsY0FBYyxHQUFHLEdBQUcsRUFBRTtZQUNsQixJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUMsUUFBUSxHQUFHLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxNQUFNLENBQUM7WUFDdkYsSUFBSSxXQUFXLEtBQUssQ0FBQyxFQUFFLEVBQUUsYUFBYTtnQkFDbEMsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDcEc7WUFDRCxPQUFPLFdBQVcsQ0FBQztRQUN2QixDQUFDLENBQUM7UUFDTixVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxnQkFBZ0IsR0FBRyxDQUFDLGNBQWMsRUFBRSxHQUFHLGdCQUFnQixHQUFHLGFBQWEsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQzdHLElBQUksV0FBVyxFQUFFO1lBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsWUFBWSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsYUFBYSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1NBQ3JGO0tBQ0o7QUFDTCxDQUFDLENBQUM7QUFFRiwrQ0FBK0M7QUFDL0MsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxFQUFFO0lBQ2hDLDhDQUE4QztJQUM5QyxJQUFJLEtBQUssS0FBSyxPQUFPLElBQUksS0FBSyxLQUFLLEtBQUssRUFBRTtRQUN0QyxPQUFPLEtBQUssQ0FBQztLQUNoQjtJQUNELElBQUksS0FBSyxLQUFLLE1BQU0sSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFO1FBQ3BDLE9BQU8sSUFBSSxDQUFDO0tBQ2Y7SUFDRCx5RUFBeUU7SUFDekUsT0FBTyxLQUFLLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUMzQyxDQUFDLENBQUM7QUFFRjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLEtBQU0sRUFBRSxFQUFFO0lBQy9FLEtBQUssQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDakMsSUFBSSxNQUFNLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDO1FBQ2hDLE1BQU0sR0FBRyxxQkFBcUIsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzRSxJQUFJLFNBQVMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDL0IsS0FBSyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ25CLE1BQU0sR0FBRyxFQUFFLENBQUM7U0FDZjtRQUNELE9BQU8sU0FBUztZQUNaLFNBQVM7WUFDVCx1QkFBdUIsR0FBRyxNQUFNO1lBQ2hDLFdBQVc7WUFDWCxNQUFNO1lBQ04sOERBQThELEdBQUcsR0FBRyxDQUFDLEtBQUssR0FBRyxnQkFBZ0I7WUFDN0Ysa0JBQWtCLEdBQUcsS0FBSyxHQUFHLE9BQU87WUFDcEMsb0JBQW9CLEdBQUcsTUFBTSxHQUFHLE9BQU87WUFDdkMsT0FBTztZQUNQLFVBQVU7WUFDVixVQUFVLENBQUM7SUFDbkIsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUM7QUFFRiw4QkFBOEI7QUFDOUIsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsYUFBYSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLEVBQUU7SUFDbEcsZ0JBQWdCLEdBQUksY0FBYyxDQUFDLGFBQWEsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3BFLElBQUksS0FBSyxFQUFFLE1BQU0sR0FBRyxFQUFFLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFDM0UsVUFBVSxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsQ0FBQztJQUMvQyxNQUFNLE1BQU0sR0FBUSxFQUFFLEVBQUUsTUFBTSxHQUFRLEVBQUUsQ0FBQztJQUN6QyxRQUFRLGFBQWEsQ0FBQyxJQUFJLEVBQUU7UUFDeEIsS0FBSyxRQUFRO1lBQ1QsVUFBVSxHQUFHLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxhQUFhLENBQUMsTUFBTSxDQUFDO1lBQ3JHLEtBQUssR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRTtpQkFDNUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDWCxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNYLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUM7aUJBQzNDLFlBQVksQ0FBQyxDQUFDLENBQUM7aUJBQ2YsWUFBWSxDQUFDLEtBQUssQ0FBQztpQkFDbkIsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO2lCQUNoRSxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDOUIsTUFBTTtRQUNWLEtBQUssaUJBQWlCO1lBQ2xCLEtBQUssR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLG1CQUFtQixFQUFFO2lCQUNsQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ1osQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNaLFlBQVksQ0FBQyxLQUFLLENBQUM7aUJBQ25CLHVCQUF1QixDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQztpQkFDbEQsV0FBVyxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ2pELE1BQU07UUFDVixLQUFLLE1BQU07WUFDUCxLQUFLLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUU7aUJBQ3hCLHVCQUF1QixDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQztpQkFDbEQsV0FBVyxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ2pELE1BQU07UUFDVixLQUFLLE1BQU07WUFDUCxLQUFLLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRTtpQkFDL0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDWCxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNYLFFBQVEsQ0FBQyxJQUFJLENBQUM7aUJBQ2QsWUFBWSxDQUFDLEtBQUssQ0FBQztpQkFDbkIsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQztpQkFDcEMsdUJBQXVCLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDO2lCQUNsRCxXQUFXLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDakQsTUFBTTtRQUNWLEtBQUssS0FBSztZQUNOLFVBQVUsR0FBRyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLGtCQUFrQixDQUFDLElBQUksYUFBYSxDQUFDLE1BQU0sQ0FBQztZQUNyRyxLQUFLLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyx1QkFBdUIsRUFBRTtpQkFDdEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDWCxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNYLFlBQVksQ0FBQyxLQUFLLENBQUM7aUJBQ25CLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztpQkFDaEUsVUFBVSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQztpQkFDdkMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzlCLE1BQU07UUFDVixLQUFLLEtBQUssQ0FBQztRQUNYLEtBQUssT0FBTztZQUNSLFdBQVcsR0FBRyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLGdCQUFnQixDQUFDLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZHLE1BQU0sR0FBRyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLGNBQWMsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUM7WUFDN0YsS0FBSyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFO2lCQUN2QixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNYLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ1gsVUFBVSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUM7aUJBQ2xDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUM7aUJBQ3JDLFdBQVcsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUMzQixLQUFLLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDO2lCQUNuQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQztpQkFDdkQsYUFBYSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQ2xELElBQUksWUFBWSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDbEMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7cUJBQ1osVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQzNCO1lBQ0QsSUFBSSxnQkFBZ0IsQ0FBQyxTQUFTLEtBQUssV0FBVyxFQUFFO2dCQUM1QyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDbkQ7WUFDRCxNQUFNO1FBQ1YsS0FBSyxRQUFRO1lBQ1QsS0FBSyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFO2lCQUMzQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNYLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ1gsU0FBUyxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQztpQkFDekMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQy9DLE1BQU07S0FDYjtJQUVELElBQUksYUFBYSxFQUFFO1FBQ2YsTUFBTSxDQUFDLEdBQUcsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sQ0FBQyxHQUFHLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6RCw0RUFBNEU7UUFDNUUsSUFBSSxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUM5QixtRUFBbUU7WUFDbkUsTUFBTSxDQUFDLEdBQUcsR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDM0MsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDM0M7S0FDSjtJQUVELElBQUksYUFBYSxFQUFFO1FBQ2YsaUVBQWlFO1FBQ2pFLE1BQU0sQ0FBQyxHQUFHLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6RCxNQUFNLENBQUMsR0FBRyxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekQsdUZBQXVGO1FBQ3ZGLElBQUksb0JBQW9CLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDOUIsaUVBQWlFO1lBQ2pFLE1BQU0sQ0FBQyxHQUFHLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzNDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQzNDO0tBQ0o7SUFFRCx3RUFBd0U7SUFDeEUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLElBQUksZ0JBQWdCLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksU0FBUyxDQUFDLENBQUM7SUFFM0csSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUM3QyxLQUFLLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUU7YUFDNUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNYLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNwQjtJQUdELElBQUksU0FBUyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUMvQix5REFBeUQ7UUFDekQsSUFBSSxnQkFBZ0IsQ0FBQyxTQUFTLEtBQUssU0FBUyxFQUFFO1lBQzFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ3JDO2FBQU07WUFDSCxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMscUJBQXFCLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDcEY7UUFDRCxnRkFBZ0Y7UUFDaEYsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsQ0FBQyxDQUFDO0tBQzVEO1NBQ0k7UUFDRCxLQUFLLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQzthQUN0QyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDM0MsS0FBSyxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVsRCxvRkFBb0Y7UUFDcEYsVUFBVSxHQUFHLGdCQUFnQixDQUFDLFVBQVUsSUFBSSxjQUFjLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxJQUFJLFdBQVcsQ0FBQztRQUN0RyxVQUFVLEdBQUcsZ0JBQWdCLENBQUMsVUFBVSxJQUFJLGNBQWMsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLElBQUksV0FBVyxDQUFDO1FBRXRHLHlDQUF5QztRQUN6QyxJQUFJLGFBQWEsQ0FBQyxZQUFZLElBQUksYUFBYSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNoRixrQkFBa0IsR0FBRyxJQUFJLENBQUM7U0FDN0I7UUFDRCxvRkFBb0Y7UUFDcEYsSUFBSSxDQUFDLGtCQUFrQixJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUMzRCxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1NBQ3hFO1FBRUQseURBQXlEO1FBQ3pELFVBQVUsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDakYsVUFBVSxJQUFJLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVqRixLQUFLLENBQUMsS0FBSzthQUNOLFNBQVMsQ0FBQyxVQUFVLENBQUM7YUFDckIsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUM7YUFDdEQsYUFBYSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRW5ELDhDQUE4QztRQUM5QyxJQUFJLGdCQUFnQixDQUFDLFdBQVcsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUNuRixJQUFJLGVBQWUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3JDLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUN2Qix1QkFBdUI7b0JBQ3ZCLFVBQVUsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3hFLE9BQU8sbUJBQW1CLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDO2dCQUN6RSxDQUFDLENBQUMsQ0FBQzthQUNOO2lCQUFNO2dCQUNILEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsbUJBQW1CLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDckY7U0FDSjthQUFNLElBQUksZ0JBQWdCLENBQUMsYUFBYSxFQUFFO1lBQ3ZDLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMscUJBQXFCLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDekY7YUFBTTtZQUNILElBQUksZUFBZSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDckMsdUJBQXVCO2dCQUN2QixLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUM3RDtTQUNKO1FBQ0QsS0FBSyxDQUFDLEtBQUs7YUFDTixTQUFTLENBQUMsVUFBVSxDQUFDO2FBQ3JCLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDO2FBQ3RELGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUM7YUFDN0MsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMscUJBQXFCLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0UsSUFBSSxVQUFVLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2hDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNwRjtLQUNKO0lBRUQsOEVBQThFO0lBQzlFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUU7UUFDNUUsTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQ3hEO0lBQ0QsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxFQUFFO1FBQzFDLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUM7S0FDMUM7SUFFRCxVQUFVLEdBQUcsWUFBWSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3ZELEtBQUssQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDO1NBQ3ZCLE1BQU0sQ0FBQyxFQUFDLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUMsQ0FBQztTQUN4SixLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFM0UsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDakQsYUFBYSxDQUFDLE9BQU8sR0FBRyxnQkFBZ0IsQ0FBQyxhQUFhLElBQUksZUFBZSxDQUFDO0lBQzFFLDhCQUE4QjtJQUM5QixLQUFLLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUVwQyxJQUFJLGVBQWUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksYUFBYSxDQUFDLGVBQWUsRUFBRTtRQUN0RSxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsR0FBRyxFQUFFO1lBQ2xDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMvRCxDQUFDLENBQUMsQ0FBQztLQUNOO0lBRUQsSUFBSSxhQUFhLENBQUMsVUFBVSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksYUFBYSxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRTtRQUM5RixJQUFHLGFBQWEsQ0FBQyxVQUFVLEtBQUssT0FBTyxFQUFFO1lBQ3JDLEtBQUssQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDakM7S0FDSjtJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMsQ0FBQztBQUVGLGFBQWE7QUFDYixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLGFBQWEsRUFBRSxTQUFVLEVBQUUsRUFBRTtJQUM5RCxNQUFNLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQztJQUNoRCxtRkFBbUY7SUFDbkYsSUFBSSxlQUFlLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ3RDLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDbEQsZUFBZSxDQUFDLEVBQUUsRUFBRSxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUM7S0FDckQ7SUFDRCwwREFBMEQ7SUFDMUQsa0NBQWtDO0lBQ2xDLHlFQUF5RTtJQUN6RSxJQUFJO0FBQ1IsQ0FBQyxDQUFDO0FBRUYsYUFBYTtBQUNiLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0VtcHR5T2JqZWN0LCBwcmV0dGlmeUxhYmVscyB9IGZyb20gJ0B3bS9jb3JlJztcblxuZGVjbGFyZSBjb25zdCBfLCAkLCBkMywgbnYsIG1vbWVudDtcblxuZXhwb3J0IGNvbnN0IGNoYXJ0VHlwZXMgPSBbJ0NvbHVtbicsICdMaW5lJywgJ0FyZWEnLCAnQ3VtdWxhdGl2ZSBMaW5lJywgJ0JhcicsICdQaWUnLCAnRG9udXQnLCAnQnViYmxlJ10sXG4gICAgYWxsU2hhcGVzID0gWydjaXJjbGUnLCAnc3F1YXJlJywgJ2RpYW1vbmQnLCAnY3Jvc3MnLCAndHJpYW5nbGUtdXAnLCAndHJpYW5nbGUtZG93biddO1xuXG5jb25zdCBkYXRlTGlzdCA9IFsnMDEvMDEvMjAwMScsICcwMS8wMS8yMDAyJywgJzAxLzAxLzIwMDMnXSxcbiAgICB0aGVtZXMgPSB7XG4gICAgICAgICdUZXJyZXN0cmlhbCc6IHtcbiAgICAgICAgICAgIGNvbG9yczogWycjMWY3N2I0JywgJyNhZWM3ZTgnLCAnI2ZmN2YwZScsICcjZmZiYjc4JywgJyMyY2EwMmMnLCAnIzk4ZGY4YScsICcjZDYyNzI4JywgJyNmZjk4OTYnLCAnIzk0NjdiZCcsICcjYzViMGQ1JywgJyM4YzU2NGInLCAnI2M0OWM5NCcsICcjZTM3N2MyJywgJyNmN2I2ZDInLCAnIzdmN2Y3ZicsICcjYzdjN2M3JywgJyNiY2JkMjInLCAnI2RiZGI4ZCcsICcjMTdiZWNmJywgJyM5ZWRhZTUnXSxcbiAgICAgICAgICAgIHRvb2x0aXA6IHtcbiAgICAgICAgICAgICAgICAnYmFja2dyb3VuZENvbG9yJzogJyNkZTdkMjgnLFxuICAgICAgICAgICAgICAgICd0ZXh0Q29sb3InOiAnI0ZGRkZGRidcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgJ0FubmFiZWxsZSc6IHtcbiAgICAgICAgICAgIGNvbG9yczogWycjMzkzYjc5JywgJyM1MjU0YTMnLCAnIzZiNmVjZicsICcjOWM5ZWRlJywgJyM2Mzc5MzknLCAnIzhjYTI1MicsICcjYjVjZjZiJywgJyNjZWRiOWMnLCAnIzhjNmQzMScsICcjYmQ5ZTM5JywgJyNlN2JhNTInLCAnI2U3Y2I5NCcsICcjODQzYzM5JywgJyNhZDQ5NGEnLCAnI2Q2NjE2YicsICcjZTc5NjljJywgJyM3YjQxNzMnLCAnI2E1NTE5NCcsICcjY2U2ZGJkJywgJyNkZTllZDYnXSxcbiAgICAgICAgICAgIHRvb2x0aXA6IHtcbiAgICAgICAgICAgICAgICAnYmFja2dyb3VuZENvbG9yJzogJyMyZTMwNmYnLFxuICAgICAgICAgICAgICAgICd0ZXh0Q29sb3InOiAnI0ZGRkZGRidcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgJ0F6dXJlJzoge1xuICAgICAgICAgICAgY29sb3JzOiBbJyMzMTgyYmQnLCAnIzZiYWVkNicsICcjOWVjYWUxJywgJyNjNmRiZWYnLCAnI2U2NTUwZCcsICcjZmQ4ZDNjJywgJyNmZGFlNmInLCAnI2ZkZDBhMicsICcjMzFhMzU0JywgJyM3NGM0NzYnLCAnI2ExZDk5YicsICcjYzdlOWMwJywgJyM3NTZiYjEnLCAnIzllOWFjOCcsICcjYmNiZGRjJywgJyNkYWRhZWInLCAnIzYzNjM2MycsICcjOTY5Njk2JywgJyNiZGJkYmQnLCAnI2Q5ZDlkOSddLFxuICAgICAgICAgICAgdG9vbHRpcDoge1xuICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kQ29sb3InOiAnIzMxODJiZCcsXG4gICAgICAgICAgICAgICAgJ3RleHRDb2xvcic6ICcjRkZGRkZGJ1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAnUmV0cm8nOiB7XG4gICAgICAgICAgICBjb2xvcnM6IFsnIzBjYTdhMScsICcjZmZhNjE1JywgJyMzMzQ5NTcnLCAnI2FjYzVjMicsICcjOTg4ZjkwJywgJyM4YWNjYzknLCAnIzUxNTE1MScsICcjZjI3ODYxJywgJyMzNmM5ZmQnLCAnIzc5NDY2OCcsICcjMGY3MDlkJywgJyMwZDI3MzgnLCAnIzQ0YmU3OCcsICcjNGExODM5JywgJyM2YTM5M2YnLCAnIzU1N2Q4YicsICcjNmMzMzFjJywgJyMxYzFjMWMnLCAnIzg2MTUwMCcsICcjMDk1NjJhJ10sXG4gICAgICAgICAgICB0b29sdGlwOiB7XG4gICAgICAgICAgICAgICAgJ2JhY2tncm91bmRDb2xvcic6ICcjODA1MTNhJyxcbiAgICAgICAgICAgICAgICAndGV4dENvbG9yJzogJyNGRkZGRkYnXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgICdNZWxsb3cnOiB7XG4gICAgICAgICAgICBjb2xvcnM6IFsnI2YwZGNiZicsICcjODhjODc3JywgJyNhZWI5MTgnLCAnIzJlMmMyMycsICcjZGRkZGQyJywgJyNkZmU5NTYnLCAnIzRjOTYzYicsICcjNWQzODAxJywgJyNlMWVlYzMnLCAnI2NkODQ3MicsICcjZmNmYWIzJywgJyM5YTQ2MzUnLCAnIzkyOTVhZCcsICcjMmUzZjEyJywgJyM1NjU2NzcnLCAnIzU1N2Q4YicsICcjNGY0ZDAyJywgJyMwYzBjMWInLCAnIzgzMzMyNCcsICcjMjQxMjBlJ10sXG4gICAgICAgICAgICB0b29sdGlwOiB7XG4gICAgICAgICAgICAgICAgJ2JhY2tncm91bmRDb2xvcic6ICcjN2M5ZTczJyxcbiAgICAgICAgICAgICAgICAndGV4dENvbG9yJzogJyNGRkZGRkYnXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgICdPcmllbnQnOiB7XG4gICAgICAgICAgICBjb2xvcnM6IFsnI2E4MDAwMCcsICcjY2M2YzNjJywgJyNmMGU0MDAnLCAnIzAwMDA4NCcsICcjZmNjYzZjJywgJyMwMDljNmMnLCAnI2NjMzA5YycsICcjNzhjYzAwJywgJyNmYzg0ZTQnLCAnIzQ4ZTRmYycsICcjNDg3OGQ4JywgJyMxODZjMGMnLCAnIzYwNjA2MCcsICcjYThhOGE4JywgJyMwMDAwMDAnLCAnI2Q3ZDdkNycsICcjNzVhMDZlJywgJyMxOTBkMGInLCAnIzg4ODg4OCcsICcjNjk0Yjg0J10sXG4gICAgICAgICAgICB0b29sdGlwOiB7XG4gICAgICAgICAgICAgICAgJ2JhY2tncm91bmRDb2xvcic6ICcjYzE0MjQyJyxcbiAgICAgICAgICAgICAgICAndGV4dENvbG9yJzogJyNGRkZGRkYnXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgICdHcmF5U2NhbGUnOiB7XG4gICAgICAgICAgICBjb2xvcnM6IFsnIzE0MTQxNCcsICcjMzUzNTM1JywgJyM1YjViNWInLCAnIzg0ODQ4NCcsICcjYThhOGE4JywgJyNjM2MzYzMnLCAnI2UwZTBlMCcsICcjYzhjOGM4JywgJyNhNWE1YTUnLCAnIzg3ODc4NycsICcjNjU2NTY1JywgJyM0ZTRlNGUnLCAnIzMwMzAzMCcsICcjMWMxYzFjJywgJyM0ZjRmNGYnLCAnIzNiM2IzYicsICcjNzU3NTc1JywgJyM2MDYwNjAnLCAnIzg2ODY4NicsICcjYzFjMWMxJ10sXG4gICAgICAgICAgICB0b29sdGlwOiB7XG4gICAgICAgICAgICAgICAgJ2JhY2tncm91bmRDb2xvcic6ICcjNTc1NzU3JyxcbiAgICAgICAgICAgICAgICAndGV4dENvbG9yJzogJyNGRkZGRkYnXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgICdGbHllcic6IHtcbiAgICAgICAgICAgIGNvbG9yczogWycjM2Y0NTRjJywgJyM1YTY0NmUnLCAnIzg0ODc3OCcsICcjY2VkZWRmJywgJyM3NGM0ZGQnLCAnIzA5NDZlZCcsICcjMzgwYmIxJywgJyMwMDBmZjAnLCAnI2Y1NGEyMycsICcjMWRiMjYyJywgJyNiY2EzYWEnLCAnI2ZmYTUwMCcsICcjYTg2YjMyJywgJyM2M2ExOGMnLCAnIzU2Nzk1ZScsICcjOTM0MzQzJywgJyNiNzVmNWYnLCAnIzc1MmQyZCcsICcjNGUxMTExJywgJyM5MjA2MDYnXSxcbiAgICAgICAgICAgIHRvb2x0aXA6IHtcbiAgICAgICAgICAgICAgICAnYmFja2dyb3VuZENvbG9yJzogJyM0NzYzN2MnLFxuICAgICAgICAgICAgICAgICd0ZXh0Q29sb3InOiAnI0ZGRkZGRidcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgJ0x1bWlub3NpdHknOiB7XG4gICAgICAgICAgICBjb2xvcnM6IFsnI0ZGRkZGRicsICcjZTRlNGU0JywgJyMwMGJjZDQnLCAnI2YwZGQyZicsICcjMDBhYWJmJywgJyMwMTgzNzYnLCAnI2U5MWU2MycsICcjMzllNWQ0JywgJyNmZjZkNmQnLCAnIzAwZmY3NicsICcjZmY5ODAwJywgJyM5Njk2OTYnLCAnI2ZmNDIwMCcsICcjZTAwMDAwJywgJyM5NWNiZTUnLCAnIzUzMzFmZicsICcjZmZmNGE3JywgJyNlN2E4MDAnLCAnIzAwNjFlNCcsICcjZDVlN2ZmJ10sXG4gICAgICAgICAgICB0b29sdGlwOiB7XG4gICAgICAgICAgICAgICAgJ2JhY2tncm91bmRDb2xvcic6ICcjNDc2MzdjJyxcbiAgICAgICAgICAgICAgICAndGV4dENvbG9yJzogJyNGRkZGRkYnXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGJhc2ljUHJvcGVydGllcyA9IFsneGF4aXNsYWJlbCcsICd5YXhpc2xhYmVsJywgJ3h1bml0cycsICd5dW5pdHMnLCAneG51bWJlcmZvcm1hdCcsICd4ZGF0ZWZvcm1hdCcsICd5bnVtYmVyZm9ybWF0JyxcbiAgICAgICAgJ3Nob3d2YWx1ZXMnLCAnc2hvd2xhYmVscycsICd2aWV3dHlwZScsICdhcmVhdmlld3R5cGUnLCAnc3RhZ2dlcmxhYmVscycsICdyZWR1Y2V4dGlja3MnLCAnb2Zmc2V0dG9wJywgJ29mZnNldGJvdHRvbScsICdvZmZzZXRyaWdodCcsICdvZmZzZXRsZWZ0JyxcbiAgICAgICAgJ2JhcnNwYWNpbmcnLCAneGF4aXNsYWJlbGRpc3RhbmNlJywgJ3lheGlzbGFiZWxkaXN0YW5jZScsICd0aGVtZScsICdsYWJlbHR5cGUnLCAnZG9udXRyYXRpbycsICdzaG93bGFiZWxzb3V0c2lkZScsICdzaG93eGRpc3RhbmNlJywgJ3Nob3d5ZGlzdGFuY2UnLCAnc2hhcGUnLCAnbm9kYXRhbWVzc2FnZScsICdjYXB0aW9ucycsICdzaG93eGF4aXMnLCAnc2hvd3lheGlzJyxcbiAgICAgICAgJ2NlbnRlcmxhYmVsJywgJ2N1c3RvbWNvbG9ycycsICdzaG93bGVnZW5kJywgJ2xlZ2VuZHR5cGUnLCAneGRvbWFpbicsICd5ZG9tYWluJywgJ3Rvb2x0aXBzJywgJ2xpbmV0aGlja25lc3MnLCAnaGlnaGxpZ2h0cG9pbnRzJywgJ2ludGVycG9sYXRpb24nLCAnbGFiZWx0aHJlc2hvbGQnXSxcbiAgICBiYXJTcGFjaW5nTWFwID0ge1xuICAgICAgICAnc21hbGwnIDogMC4zLFxuICAgICAgICAnbWVkaXVtJyA6IDAuNSxcbiAgICAgICAgJ2xhcmdlJyA6IDAuOFxuICAgIH0sXG4gICAgZG9udXRSYXRpb01hcCA9IHtcbiAgICAgICAgJ3NtYWxsJyA6IDAuMyxcbiAgICAgICAgJ21lZGl1bScgOiAwLjYsXG4gICAgICAgICdsYXJnZScgOiAwLjdcbiAgICB9LFxuICAgIGJhclNwYWNpbmdNYXBJbnZlcnQgPSBfLmludmVydChiYXJTcGFjaW5nTWFwKSxcbiAgICBkb251dFJhdGlvTWFwSW52ZXJ0ID0gXy5pbnZlcnQoZG9udXRSYXRpb01hcCksXG4gICAgdGlja2Zvcm1hdHMgPSB7XG4gICAgICAgICdUaG91c2FuZCc6IHtcbiAgICAgICAgICAgICdwcmVmaXgnOiAnSycsXG4gICAgICAgICAgICAnZGl2aWRlcic6IDEwMDBcbiAgICAgICAgfSxcbiAgICAgICAgJ01pbGxpb24nIDoge1xuICAgICAgICAgICAgJ3ByZWZpeCc6ICdNJyxcbiAgICAgICAgICAgICdkaXZpZGVyJzogMTAwMDAwMFxuICAgICAgICB9LFxuICAgICAgICAnQmlsbGlvbicgOiB7XG4gICAgICAgICAgICAncHJlZml4JzogJ0InLFxuICAgICAgICAgICAgJ2RpdmlkZXInOiAxMDAwMDAwMDAwXG4gICAgICAgIH1cbiAgICB9LFxuICAgIGNoYXJ0SWQgPSAnI3ByZXZpZXctY2hhcnQnLFxuICAgIGRhdGFUeXBlSlNPTiA9IFsnQ29sdW1uJywgJ0xpbmUnLCAnUGllJywgJ0JhcicsICdEb251dCcsICdCdWJibGUnXSwgICAgLy8gQ2hhcnRzIHRoYXQgc3VwcG9ydHMgdGhlIGRhdGEgdG8gYmUgSlNPTjtcbiAgICBsaW5lVHlwZUNoYXJ0cyA9IFsnTGluZScsICdBcmVhJywgJ0N1bXVsYXRpdmUgTGluZSddLCAgIC8vIENoYXJ0cyB0aGF0IGRvZXMgbm90IHN1cHBvcnRzIHRoZSBzdHJpbmcgdHlwZSBvZiBkYXRhIGluIHRoZSB4YXhpcyBpbiB0aGUgbnZkMztcbiAgICBkYXRhVHlwZUFycmF5ID0gWydDdW11bGF0aXZlIExpbmUnLCAnQXJlYSddLCAgICAgLy8gQ2hhcnRzIHRoYXQgc3VwcG9ydHMgdGhlIGRhdGEgdG8gYmUgQXJyYXlcbiAgICBTQU1QTEVfREFUQSA9IHtcbiAgICAgICAgJ2dyb3VwMScgOiAnRXVyb3BlJyxcbiAgICAgICAgJ2dyb3VwMicgOiAnQXNpYScsXG4gICAgICAgICdncm91cDMnIDogJ0FtZXJpY2EnLFxuICAgICAgICAnZ3JvdXA0JyA6ICdBdXN0cmFsaWEnXG4gICAgfTtcblxuLy8gcmV0dXJucyB0cnVlIGlmIGNoYXJ0IHR5cGUgaXMgcGllXG5leHBvcnQgY29uc3QgaXNQaWVDaGFydCA9IHR5cGUgPT4gdHlwZSA9PT0gJ1BpZSc7XG5cbi8vIHJldHVybnMgdHJ1ZSBpZiBjaGFydCB0eXBlIGlzIGxpbmVcbmV4cG9ydCBjb25zdCBpc0xpbmVDaGFydCA9IHR5cGUgPT4gdHlwZSA9PT0gJ0xpbmUnO1xuXG4vLyByZXR1cm5zIHRydWUgaWYgY2hhcnQgdHlwZSBpcyBiYXJcbmV4cG9ydCBjb25zdCBpc0JhckNoYXJ0ID0gdHlwZSA9PiB0eXBlID09PSAnQmFyJztcblxuLy8gcmV0dXJucyB0cnVlIGlmIGNoYXJ0IHR5cGUgaXMgZG9udXRcbmV4cG9ydCBjb25zdCBpc0RvbnV0Q2hhcnQgPSB0eXBlID0+IHR5cGUgPT09ICdEb251dCc7XG5cbi8vIHJldHVybnMgdHJ1ZSBpZiBjaGFydCB0eXBlIGlzIGJ1YmJsZVxuZXhwb3J0IGNvbnN0IGlzQnViYmxlQ2hhcnQgPSB0eXBlID0+IHR5cGUgPT09ICdCdWJibGUnO1xuXG4vLyByZXR1cm5zIHRydWUgaWYgY2hhcnQgdHlwZSBpcyBjb2x1bW5cbmV4cG9ydCBjb25zdCBpc0NvbHVtbkNoYXJ0ID0gdHlwZSA9PiB0eXBlID09PSAnQ29sdW1uJztcblxuLy8gcmV0dXJucyB0cnVlIGlmIGNoYXJ0IHR5cGUgaXMgYXJlYVxuZXhwb3J0IGNvbnN0IGlzQXJlYUNoYXJ0ID0gdHlwZSA9PiB0eXBlID09PSAnQXJlYSc7XG5cbi8vIHJldHVybnMgdHJ1ZSBpZiBjaGFydCB0eXBlIGlzIGFyZWFcbmV4cG9ydCBjb25zdCBpc1BpZVR5cGUgPSB0eXBlID0+IGlzUGllQ2hhcnQodHlwZSkgfHwgaXNEb251dENoYXJ0KHR5cGUpO1xuXG4vLyBUaGUgZm9ybWF0IG9mIGNoYXJ0IGRhdGEgaXMgYXJyYXkgb2YganNvbiBvYmplY3RzIGluIGNhc2Ugb2YgdGhlIGZvbGxvd2luZyB0eXBlcyBvZiBjaGFydFxuZXhwb3J0IGNvbnN0IGlzQ2hhcnREYXRhSlNPTiA9IHR5cGUgPT4gXy5pbmNsdWRlcyhkYXRhVHlwZUpTT04sIHR5cGUpIHx8ICFfLmluY2x1ZGVzKGNoYXJ0VHlwZXMsIHR5cGUpO1xuXG4vLyBUaGUgZm9ybWF0IG9mIGNoYXJ0IGRhdGEgaXMgYXJyYXkgb2Ygb2JqZWN0cyBpbiBjYXNlIG9mIHRoZSBmb2xsb3dpbmcgdHlwZXMgb2YgY2hhcnRcbmV4cG9ydCBjb25zdCBpc0NoYXJ0RGF0YUFycmF5ID0gdHlwZSA9PiBfLmluY2x1ZGVzKGRhdGFUeXBlQXJyYXksIHR5cGUpO1xuXG4vLyByZXR1cm5zIHRydWUgaXMgdGhlIGNoYXJ0IHR5cGUgaXMgJ2xpbmUnLCAnYXJlYScgb3IgJ2N1bXVsYXRpdmUgbGluZScgZWxzZSBmYWxzZVxuZXhwb3J0IGNvbnN0IGlzTGluZVR5cGVDaGFydCA9IHR5cGUgPT4gXy5pbmNsdWRlcyhsaW5lVHlwZUNoYXJ0cywgdHlwZSk7XG5cbi8vIFgvWSBEb21haW4gcHJvcGVydGllcyBhcmUgc3VwcG9ydGVkIG9ubHkgZm9yIENvbHVtbiBhbmQgQXJlYSBjaGFydHNcbmV4cG9ydCBjb25zdCBpc0F4aXNEb21haW5TdXBwb3J0ZWQgPSB0eXBlID0+IGlzQ29sdW1uQ2hhcnQodHlwZSkgfHwgaXNBcmVhQ2hhcnQodHlwZSk7XG5cbi8vIFJldHVybnMgYmFyIHNwYWNpbmcgdmFsdWVcbmV4cG9ydCBjb25zdCBnZXRCYXJTcGFjaW5nVmFsdWUgPSAodmFsdWUsIHByb3ApID0+IHtcbiAgICBpZiAocHJvcCA9PT0gJ3ZhbHVlJykge1xuICAgICAgICByZXR1cm4gYmFyU3BhY2luZ01hcFt2YWx1ZV07XG4gICAgfVxuICAgIGlmIChwcm9wID09PSAna2V5Jykge1xuICAgICAgICByZXR1cm4gYmFyU3BhY2luZ01hcEludmVydFt2YWx1ZV07XG4gICAgfVxufTtcblxuLy8gUmV0dXJucyByYWRpdXMgdmFsdWVcbmV4cG9ydCBjb25zdCBnZXRSYWRpdXNWYWx1ZSA9ICh2YWx1ZSwgcHJvcCkgPT4ge1xuICAgIGlmIChwcm9wID09PSAndmFsdWUnKSB7XG4gICAgICAgIHJldHVybiBkb251dFJhdGlvTWFwW3ZhbHVlXTtcbiAgICB9XG4gICAgaWYgKHByb3AgPT09ICdrZXknKSB7XG4gICAgICAgIHJldHVybiBkb251dFJhdGlvTWFwSW52ZXJ0W3ZhbHVlXTtcbiAgICB9XG59O1xuXG4vLyBSZXR1cm5zIGxhYmVscyBjb25maWdcbmV4cG9ydCBjb25zdCBnZXRMYWJlbFZhbHVlcyA9IChzaG93bGFiZWxzLCBzaG93bGFiZWxzb3V0c2lkZSwgcHJvcCkgPT4ge1xuICAgIGNvbnN0IGxhYmVsc0NvbmZpZzogYW55ID0ge307XG4gICAgc3dpdGNoIChzaG93bGFiZWxzKSB7XG4gICAgICAgIGNhc2UgJ2hpZGUnOlxuICAgICAgICAgICAgbGFiZWxzQ29uZmlnLnNob3dsYWJlbHMgPSBmYWxzZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdpbnNpZGUnOlxuICAgICAgICAgICAgbGFiZWxzQ29uZmlnLnNob3dsYWJlbHMgPSB0cnVlO1xuICAgICAgICAgICAgbGFiZWxzQ29uZmlnLnNob3dsYWJlbHNvdXRzaWRlID0gZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnb3V0c2lkZSc6XG4gICAgICAgICAgICBsYWJlbHNDb25maWcuc2hvd2xhYmVscyA9IHRydWU7XG4gICAgICAgICAgICBsYWJlbHNDb25maWcuc2hvd2xhYmVsc291dHNpZGUgPSB0cnVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiBsYWJlbHNDb25maWc7XG59O1xuXG4vLyBDb25zdHJ1Y3QgdGhlIHNhbXBsZSBkYXRhXG5leHBvcnQgY29uc3QgY29uc3RydWN0U2FtcGxlRGF0YSA9IChkYXRhVHlwZSwgeWF4aXNMZW5ndGgsIHNoYXBlKSA9PiB7XG4gICAgbGV0IGZpcnN0X3NlcmllcyA9IFtdLFxuICAgICAgICBzZWNvbmRfc2VyaWVzID0gW10sXG4gICAgICAgIHRoaXJkX3NlcmllcyA9IFtdLFxuICAgICAgICBmaXJzdF9zZXJpZXNfYXJyYXkgPSBbXSxcbiAgICAgICAgc2Vjb25kX3Nlcmllc19hcnJheSA9IFtdLFxuICAgICAgICB0aGlyZF9zZXJpZXNfYXJyYXkgPSBbXSxcbiAgICAgICAgZmlyc3Rfc2VyaWVzX2J1YmJsZSA9IFtdLFxuICAgICAgICBzZWNvbmRfc2VyaWVzX2J1YmJsZSA9IFtdLFxuICAgICAgICB0aGlyZF9zZXJpZXNfYnViYmxlID0gW10sXG4gICAgICAgIGRhdGEgPSBbXTtcbiAgICBzd2l0Y2ggKGRhdGFUeXBlKSB7XG4gICAgICAgIGNhc2UgJ2pzb25Gb3JtYXQnOlxuICAgICAgICAgICAgZmlyc3Rfc2VyaWVzID0gW1xuICAgICAgICAgICAgICAgIHsneCc6ICcwMS8wMS8yMDAxJywgJ3knOiA0MDAwMDAwfSxcbiAgICAgICAgICAgICAgICB7J3gnOiAnMDEvMDEvMjAwMicsICd5JzogMTAwMDAwMH0sXG4gICAgICAgICAgICAgICAgeyd4JzogJzAxLzAxLzIwMDMnLCAneSc6IDUwMDAwMDB9XG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgc2Vjb25kX3NlcmllcyA9IFtcbiAgICAgICAgICAgICAgICB7J3gnOiAnMDEvMDEvMjAwMScsICd5JzogMzAwMDAwMH0sXG4gICAgICAgICAgICAgICAgeyd4JzogJzAxLzAxLzIwMDInLCAneSc6IDQwMDAwMDB9LFxuICAgICAgICAgICAgICAgIHsneCc6ICcwMS8wMS8yMDAzJywgJ3knOiA3MDAwMDAwfVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIHRoaXJkX3NlcmllcyA9IFtcbiAgICAgICAgICAgICAgICB7J3gnOiAnMDEvMDEvMjAwMScsICd5JzogMjAwMDAwMH0sXG4gICAgICAgICAgICAgICAgeyd4JzogJzAxLzAxLzIwMDInLCAneSc6IDgwMDAwMDB9LFxuICAgICAgICAgICAgICAgIHsneCc6ICcwMS8wMS8yMDAzJywgJ3knOiA2MDAwMDAwfVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGRhdGFbMF0gPSB7XG4gICAgICAgICAgICAgICAgdmFsdWVzOiBmaXJzdF9zZXJpZXMsXG4gICAgICAgICAgICAgICAga2V5OiBTQU1QTEVfREFUQS5ncm91cDFcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAoeWF4aXNMZW5ndGggPj0gMikge1xuICAgICAgICAgICAgICAgIGRhdGFbMV0gPSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlczogc2Vjb25kX3NlcmllcyxcbiAgICAgICAgICAgICAgICAgICAga2V5OiBTQU1QTEVfREFUQS5ncm91cDJcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHlheGlzTGVuZ3RoID49IDMpIHtcbiAgICAgICAgICAgICAgICBkYXRhWzJdID0ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IHRoaXJkX3NlcmllcyxcbiAgICAgICAgICAgICAgICAgICAga2V5OiBTQU1QTEVfREFUQS5ncm91cDNcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2xpbmVDaGFydEZvcm1hdCc6XG4gICAgICAgICAgICBmaXJzdF9zZXJpZXMgPSBbXG4gICAgICAgICAgICAgICAgeyd4JzogMSwgJ3knOiA0MDAwMDAwfSxcbiAgICAgICAgICAgICAgICB7J3gnOiAyLCAneSc6IDEwMDAwMDB9LFxuICAgICAgICAgICAgICAgIHsneCc6IDMsICd5JzogNTAwMDAwMH1cbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBzZWNvbmRfc2VyaWVzID0gW1xuICAgICAgICAgICAgICAgIHsneCc6IDEsICd5JzogMzAwMDAwMH0sXG4gICAgICAgICAgICAgICAgeyd4JzogMiwgJ3knOiA0MDAwMDAwfSxcbiAgICAgICAgICAgICAgICB7J3gnOiAzLCAneSc6IDcwMDAwMDB9XG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgdGhpcmRfc2VyaWVzID0gW1xuICAgICAgICAgICAgICAgIHsneCc6IDEsICd5JzogMjAwMDAwMH0sXG4gICAgICAgICAgICAgICAgeyd4JzogMiwgJ3knOiA4MDAwMDAwfSxcbiAgICAgICAgICAgICAgICB7J3gnOiAzLCAneSc6IDYwMDAwMDB9XG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgZGF0YVswXSA9IHtcbiAgICAgICAgICAgICAgICB2YWx1ZXM6IGZpcnN0X3NlcmllcyxcbiAgICAgICAgICAgICAgICBrZXk6IFNBTVBMRV9EQVRBLmdyb3VwMVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmICh5YXhpc0xlbmd0aCA+PSAyKSB7XG4gICAgICAgICAgICAgICAgZGF0YVsxXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBzZWNvbmRfc2VyaWVzLFxuICAgICAgICAgICAgICAgICAgICBrZXk6IFNBTVBMRV9EQVRBLmdyb3VwMlxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoeWF4aXNMZW5ndGggPj0gMykge1xuICAgICAgICAgICAgICAgIGRhdGFbMl0gPSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlczogdGhpcmRfc2VyaWVzLFxuICAgICAgICAgICAgICAgICAgICBrZXk6IFNBTVBMRV9EQVRBLmdyb3VwM1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnYXJyYXlGb3JtYXQnOlxuICAgICAgICAgICAgZmlyc3Rfc2VyaWVzX2FycmF5ID0gW1xuICAgICAgICAgICAgICAgIFsxLCA0MDAwMDAwXSxcbiAgICAgICAgICAgICAgICBbMiwgMTAwMDAwMF0sXG4gICAgICAgICAgICAgICAgWzMsIDUwMDAwMDBdXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgc2Vjb25kX3Nlcmllc19hcnJheSA9IFtcbiAgICAgICAgICAgICAgICBbMSwgMzAwMDAwMF0sXG4gICAgICAgICAgICAgICAgWzIsIDQwMDAwMDBdLFxuICAgICAgICAgICAgICAgIFszLCA3MDAwMDAwXVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIHRoaXJkX3Nlcmllc19hcnJheSA9IFtcbiAgICAgICAgICAgICAgICBbMSwgMjAwMDAwMF0sXG4gICAgICAgICAgICAgICAgWzIsIDgwMDAwMDBdLFxuICAgICAgICAgICAgICAgIFszLCA2MDAwMDAwXVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGRhdGFbMF0gPSB7XG4gICAgICAgICAgICAgICAgdmFsdWVzOiBmaXJzdF9zZXJpZXNfYXJyYXksXG4gICAgICAgICAgICAgICAga2V5OiBTQU1QTEVfREFUQS5ncm91cDFcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAoeWF4aXNMZW5ndGggPj0gMikge1xuICAgICAgICAgICAgICAgIGRhdGFbMV0gPSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlczogc2Vjb25kX3Nlcmllc19hcnJheSxcbiAgICAgICAgICAgICAgICAgICAga2V5OiBTQU1QTEVfREFUQS5ncm91cDJcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHlheGlzTGVuZ3RoID49IDMpIHtcbiAgICAgICAgICAgICAgICBkYXRhWzJdID0ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IHRoaXJkX3Nlcmllc19hcnJheSxcbiAgICAgICAgICAgICAgICAgICAga2V5OiBTQU1QTEVfREFUQS5ncm91cDNcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2J1YmJsZUZvcm1hdCc6XG4gICAgICAgICAgICBzaGFwZSA9IHNoYXBlID09PSAncmFuZG9tJyA/ICBhbGxTaGFwZXNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogYWxsU2hhcGVzLmxlbmd0aCldIDogc2hhcGU7XG4gICAgICAgICAgICBmaXJzdF9zZXJpZXNfYnViYmxlID0gW1xuICAgICAgICAgICAgICAgIHsneCc6IDgwLjY2LCAneSc6IDMzNzM5OTAwLCAgJ3NpemUnOiA3OCwgJ3NoYXBlJzogc2hhcGV9LFxuICAgICAgICAgICAgICAgIHsneCc6IDc5Ljg0LCAneSc6IDgxOTAyMzAwLCAgJ3NpemUnOiA5MCwgJ3NoYXBlJzogc2hhcGV9LFxuICAgICAgICAgICAgICAgIHsneCc6IDc4LjYsICAneSc6IDU1MjMxMDAsICAgJ3NpemUnOiA0NSwgJ3NoYXBlJzogc2hhcGV9XG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgc2Vjb25kX3Nlcmllc19idWJibGUgPSBbXG4gICAgICAgICAgICAgICAgeyd4JzogNzIuNzMsICd5JzogNzk3MTYyMDAsICAnc2l6ZSc6IDk4LCAnc2hhcGUnOiBzaGFwZX0sXG4gICAgICAgICAgICAgICAgeyd4JzogODAuMDUsICd5JzogNjE4MDE2MDAsICAnc2l6ZSc6IDIwLCAnc2hhcGUnOiBzaGFwZX0sXG4gICAgICAgICAgICAgICAgeyd4JzogNzIuNDksICd5JzogNzMxMzcyMDAsICAnc2l6ZSc6IDM0LCAnc2hhcGUnOiBzaGFwZX1cbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICB0aGlyZF9zZXJpZXNfYnViYmxlID0gW1xuICAgICAgICAgICAgICAgIHsneCc6IDY4LjA5LCAneSc6IDMzNzM5OTAwLCAgJ3NpemUnOiA0NSwgJ3NoYXBlJzogc2hhcGV9LFxuICAgICAgICAgICAgICAgIHsneCc6IDgxLjU1LCAneSc6IDc0ODU2MDAsICAgJ3NpemUnOiA3OCwgJ3NoYXBlJzogc2hhcGV9LFxuICAgICAgICAgICAgICAgIHsneCc6IDY4LjYwLCAneSc6IDE0MTg1MDAwMCwgJ3NpemUnOiA1NiwgJ3NoYXBlJzogc2hhcGV9XG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgZGF0YVswXSA9IHtcbiAgICAgICAgICAgICAgICB2YWx1ZXM6IGZpcnN0X3Nlcmllc19idWJibGUsXG4gICAgICAgICAgICAgICAga2V5OiBTQU1QTEVfREFUQS5ncm91cDFcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAoeWF4aXNMZW5ndGggPj0gMikge1xuICAgICAgICAgICAgICAgIGRhdGFbMV0gPSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlczogc2Vjb25kX3Nlcmllc19idWJibGUsXG4gICAgICAgICAgICAgICAgICAgIGtleTogU0FNUExFX0RBVEEuZ3JvdXAyXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh5YXhpc0xlbmd0aCA+PSAzKSB7XG4gICAgICAgICAgICAgICAgZGF0YVsyXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiB0aGlyZF9zZXJpZXNfYnViYmxlLFxuICAgICAgICAgICAgICAgICAgICBrZXk6IFNBTVBMRV9EQVRBLmdyb3VwM1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncGllQ2hhcnRGb3JtYXQnOlxuICAgICAgICAgICAgZGF0YSA9IFtcbiAgICAgICAgICAgICAgICB7J3gnOiBTQU1QTEVfREFUQS5ncm91cDEsICd5JzogMTAwMDAwMH0sXG4gICAgICAgICAgICAgICAgeyd4JzogU0FNUExFX0RBVEEuZ3JvdXAyLCAneSc6IDIwMDAwMDB9LFxuICAgICAgICAgICAgICAgIHsneCc6IFNBTVBMRV9EQVRBLmdyb3VwMywgJ3knOiAzMDAwMDAwfSxcbiAgICAgICAgICAgICAgICB7J3gnOiBTQU1QTEVfREFUQS5ncm91cDQsICd5JzogNDAwMDAwMH1cbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIGRhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RGF0YVR5cGUgPSB3aWRnZXRDb250ZXh0ID0+IHtcbiAgICBjb25zdCB0eXBlID0gd2lkZ2V0Q29udGV4dC50eXBlO1xuICAgIGlmIChpc0xpbmVDaGFydCh0eXBlKSkge1xuICAgICAgICByZXR1cm4gJ2xpbmVDaGFydEZvcm1hdCc7XG4gICAgfVxuICAgIGlmIChpc1BpZVR5cGUodHlwZSkpIHtcbiAgICAgICAgcmV0dXJuICdwaWVDaGFydEZvcm1hdCc7XG4gICAgfVxuICAgIGlmIChpc0J1YmJsZUNoYXJ0KHR5cGUpKSB7XG4gICAgICAgIHJldHVybiAnYnViYmxlRm9ybWF0JztcbiAgICB9XG4gICAgcmV0dXJuIGlzQ2hhcnREYXRhSlNPTih0eXBlKSA/ICdqc29uRm9ybWF0JyA6ICdhcnJheUZvcm1hdCc7XG59O1xuXG4vLyBTYW1wbGUgZGF0YSB0byBwb3B1bGF0ZSB3aGVuIG5vIGRhdGEgaXMgYm91bmRcbmV4cG9ydCBjb25zdCBnZXRTYW1wbGVEYXRhID0gd2lkZ2V0Q29udGV4dCA9PiBjb25zdHJ1Y3RTYW1wbGVEYXRhKGdldERhdGFUeXBlKHdpZGdldENvbnRleHQpLCBfLnNwbGl0KHdpZGdldENvbnRleHQueWF4aXNkYXRha2V5LCAnLCcpLmxlbmd0aCwgd2lkZ2V0Q29udGV4dC5zaGFwZSk7XG5cbi8vIENoZWNrIHdoZXRoZXIgWC9ZIERvbWFpbiB3YXMgc2V0IHRvIE1pbiBhbmQgaXMgc3VwcG9ydGVkIGZvciB0aGUgcHJlc2VudCBjaGFydFxuZXhwb3J0IGNvbnN0IGlzQXhpc0RvbWFpblZhbGlkID0gKHdpZGdldENvbnRleHQsIGF4aXMpID0+IHtcbiAgICBpZiAod2lkZ2V0Q29udGV4dFtheGlzICsgJ2RvbWFpbiddID09PSAnTWluJyAmJiAoaXNBeGlzRG9tYWluU3VwcG9ydGVkKHdpZGdldENvbnRleHQudHlwZSkpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIG1pbiBhbmQgbWF4IHZhbHVlcyBhcmUgZmluaXRlIG9yIG5vdFxuZXhwb3J0IGNvbnN0IGFyZU1pbk1heFZhbHVlc1ZhbGlkID0gdmFsdWVzID0+IHtcbiAgICBpZiAoXy5pc0Zpbml0ZSh2YWx1ZXMubWluKSAmJiBfLmlzRmluaXRlKHZhbHVlcy5tYXgpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0WVNjYWxlTWluVmFsdWUgPSB2YWx1ZSA9PiB7XG4gICAgY29uc3QgX21pbiA9IE1hdGguZmxvb3IodmFsdWUpO1xuICAgIC8qIElmIHRoZSBudW1iZXIgaGFzIGEpIGRlY2ltYWwgcGFydCByZXR1cm5pbmcgZmxvb3IgdmFsdWUgLSAwLjFcbiAgICAgYikgbm8gZGVjaW1hbCBwYXJ0IHJldHVybmluZyBmbG9vciB2YWx1ZSAtIDEgKi9cbiAgICByZXR1cm4gTWF0aC5hYnModmFsdWUpIC0gX21pbiA+IDAgPyB2YWx1ZSAtIDAuMSA6IF9taW4gLSAxO1xufTtcblxuLy8gQ2hvb3NlcyB0aGUgZGF0YSBwb2ludHMgb2YgbGluZS9jdW11bGF0aXZlIGxpbmUvYXJlYSBjaGFydCBhbmQgaGlnaGxpZ2h0cyB0aGVtXG5leHBvcnQgY29uc3QgaGlnaGxpZ2h0UG9pbnRzID0gKGlkLCBoaWdobGlnaHRwb2ludHMpID0+IHtcbiAgICBjb25zdCBjaGFydFN2ZyA9IGlkID8gZDMuc2VsZWN0KCcjd21DaGFydCcgKyBpZCArICcgc3ZnJykgOiBkMy5zZWxlY3QoY2hhcnRJZCArICcgc3ZnJyk7XG4gICAgaWYgKGhpZ2hsaWdodHBvaW50cykge1xuICAgICAgICBjaGFydFN2Zy5zZWxlY3RBbGwoJy5udi1wb2ludCcpXG4gICAgICAgICAgICAuc3R5bGUoJ3N0cm9rZS13aWR0aCcsICc2cHgnKVxuICAgICAgICAgICAgLnN0eWxlKCdmaWxsLW9wYWNpdHknLCAnMC45NScpXG4gICAgICAgICAgICAuc3R5bGUoJ3N0cm9rZS1vcGFjaXR5JywgJzAuOTUnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjaGFydFN2Zy5zZWxlY3RBbGwoJy5udi1wb2ludCcpXG4gICAgICAgICAgICAuc3R5bGUoJ3N0cm9rZS13aWR0aCcsICcwcHgnKVxuICAgICAgICAgICAgLnN0eWxlKCdmaWxsLW9wYWNpdHknLCAnMCcpO1xuICAgIH1cbn07XG5cbi8vIENob29zZXMgdGhlIGxpbmUgb2YgbGluZS9jdW11bGF0aXZlIGxpbmUgYW5kIGluY3JlYXNlcyB0aGUgdGhpY2tuZXNzIG9mIGl0XG5leHBvcnQgY29uc3Qgc2V0TGluZVRoaWNrbmVzcyA9IChpZCwgdGhpY2tuZXNzKSA9PiB7XG4gICAgY29uc3QgY2hhcnRTdmcgPSBpZCA/IGQzLnNlbGVjdCgnI3dtQ2hhcnQnICsgaWQgKyAnIHN2ZycpIDogZDMuc2VsZWN0KGNoYXJ0SWQgKyAnIHN2ZycpO1xuICAgIHRoaWNrbmVzcyA9IHRoaWNrbmVzcyB8fCAxLjU7XG5cbiAgICBjb25zdCBsaW5lcyA9IGNoYXJ0U3ZnLnNlbGVjdEFsbCgnLm52LWxpbmUnKTtcblxuICAgIGlmIChsaW5lcy5zaXplKCkgIT09IDApIHtcbiAgICAgICAgbGluZXMuc3R5bGUoJ3N0cm9rZS13aWR0aCcsIHRoaWNrbmVzcyk7XG4gICAgfVxufTtcblxuLy8gQ29uc3RydWN0aW5nIGEgY29tbW9uIGtleSB2YWx1ZSBtYXAgZm9yIHByZXZpZXcgYW5kIGNhbnZhcyBtb2RlXG5leHBvcnQgY29uc3QgaW5pdFByb3BlcnRpZXMgPSAod2lkZ2V0Q29udGV4dCwgcHJvcGVydHlWYWx1ZU1hcCkgPT4ge1xuICAgIGlmICghcHJvcGVydHlWYWx1ZU1hcCB8fCBpc0VtcHR5T2JqZWN0KHByb3BlcnR5VmFsdWVNYXApKSB7XG4gICAgICAgIHByb3BlcnR5VmFsdWVNYXAgPSB7fTtcbiAgICB9XG4gICAgXy5mb3JFYWNoKGJhc2ljUHJvcGVydGllcywgcHJvcCA9PiB7XG4gICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHByb3BlcnR5VmFsdWVNYXBbcHJvcF0pKSB7XG4gICAgICAgICAgICBwcm9wZXJ0eVZhbHVlTWFwW3Byb3BdID0gd2lkZ2V0Q29udGV4dFtwcm9wXTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHByb3BlcnR5VmFsdWVNYXA7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TnVtYmVyVmFsdWUgPSAodmFsdWUsIGNhbGxiYWNrKSA9PiB7XG4gICAgcmV0dXJuIGlzTmFOKHBhcnNlSW50KHZhbHVlLCAxMCkpID8gY2FsbGJhY2sodmFsdWUsICd2YWx1ZScpIDogdmFsdWU7XG59O1xuXG4vLyBGb3JtYXRzIHRoZSBnaXZlbiB2YWx1ZSBhY2NvcmRpbmcgdG8gZGF0ZSBmb3JtYXRcbmV4cG9ydCBjb25zdCBnZXREYXRlRm9ybWF0ZWREYXRhID0gKGRhdGVGb3JtYXQsIGQpID0+IHtcbiAgICBkYXRlRm9ybWF0ID0gZGF0ZUZvcm1hdCB8fCAnJXgnO1xuICAgIC8qKlxuICAgICAqIGlmIGRhdGUgdmFsdWUgaXMgc3RyaW5nIFwiMjAtMDUtMjAxOVwiIHRoZW4gbmV3IERhdGUodmFsdWUpIHJldHVybiAyME1heTIwMTkgd2l0aCBjdXJyZW50IHRpbWUgaW4gSW5kaWEsXG4gICAgICogd2hlcmVhcyB0aGlzIHdpbGwgcmV0dXJuIDE5TWF5MjAxOSB3aXRoIHRpbWUgbGFnZ2luZyBmb3IgZmV3IGhvdXJzLlxuICAgICAqIFRoaXMgaXMgYmVjYXVzZSBpdCByZXR1cm5zIFVUQyB0aW1lIGkuZS4gQ29vcmRpbmF0ZWQgVW5pdmVyc2FsIFRpbWUgKFVUQykuXG4gICAgICogVG8gY3JlYXRlIGRhdGUgaW4gbG9jYWwgdGltZSB1c2UgbW9tZW50XG4gICAgICovXG4gICAgaWYoZGF0ZUZvcm1hdCA9PSAnJWMnKSB7XG4gICAgICAgIGRhdGVGb3JtYXQgPSAnJWEgJWIgJWUgJVggJVknO1xuICAgIH1cbiAgICByZXR1cm4gZDMudGltZUZvcm1hdChkYXRlRm9ybWF0KShuZXcgRGF0ZShtb21lbnQobW9tZW50KGQpLmZvcm1hdCgpKS52YWx1ZU9mKCkpKTtcbn07XG5jb25zdCByZW1vdmVUcmFpbGluZ1plcm9zID0gdmFsdWUgPT4ge1xuICAgIGlmKCF2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIC8vIENvbnZlcnQgdmFsdWUgdG8gYSBzdHJpbmcgaWYgaXQncyBhIG51bWJlclxuICAgIGNvbnN0IHN0cmluZ1ZhbHVlID0gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyA/IHZhbHVlLnRvU3RyaW5nKCkgOiB2YWx1ZTtcblxuICAgIC8vIFJlbW92ZSB0cmFpbGluZyB6ZXJvc1xuICAgIHJldHVybiBzdHJpbmdWYWx1ZS5yZXBsYWNlKC9cXC4wKyhbQS1aYS16XSopJC8sICckMScpLnJlcGxhY2UoL1xcLihbMS05XSspMCsoW0EtWmEtel0qKSQvLCAnLiQxJDInKTtcbn07XG5cbi8vIEZvcm1hdHMgdGhlIGdpdmVuIHZhbHVlIGFjY29yZGluZyB0byBudW1iZXIgZm9ybWF0XG5leHBvcnQgY29uc3QgZ2V0TnVtYmVyRm9ybWF0ZWREYXRhID0gKG51bWJlckZvcm1hdCwgZCkgPT4ge1xuICAgIGxldCBmb3JtYXR0ZWREYXRhLFxuICAgICAgICBkaXZpZGVyLFxuICAgICAgICBwcmVmaXg7XG4gICAgLy8gZm9ybWF0dGluZyB0aGUgZGF0YSBiYXNlZCBvbiBudW1iZXIgZm9ybWF0IHNlbGVjdGVkXG4gICAgaWYgKG51bWJlckZvcm1hdCkge1xuICAgICAgICBsZXQgbnVtYmVyRm9ybWF0dGVyO1xuICAgICAgICBpZihudW1iZXJGb3JtYXQgPT0gJ1Rob3VzYW5kJyB8fCBudW1iZXJGb3JtYXQgPT0gJ01pbGxpb24nIHx8IG51bWJlckZvcm1hdCA9PSAnQmlsbGlvbicpIHtcbiAgICAgICAgICAgIG51bWJlckZvcm1hdHRlciA9IGQzLmZvcm1hdCgnLC4ycycpO1xuICAgICAgICB9IGVsc2UgaWYobnVtYmVyRm9ybWF0ID09ICclJykge1xuICAgICAgICAgICAgbnVtYmVyRm9ybWF0dGVyID0gZDMuZm9ybWF0KCcuMiUnKTtcbiAgICAgICAgfWVsc2UgaWYobnVtYmVyRm9ybWF0ID09ICcuZicpIHtcbiAgICAgICAgICAgIG51bWJlckZvcm1hdHRlciA9IGQzLmZvcm1hdCgnLjJmJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBudW1iZXJGb3JtYXR0ZXIgPSBkMy5mb3JtYXQobnVtYmVyRm9ybWF0KTtcbiAgICAgICAgfVxuICAgICAgICBmb3JtYXR0ZWREYXRhID0gbnVtYmVyRm9ybWF0dGVyKGQpO1xuXG5cbiAgICAgICAgLy8gR2V0dGluZyB0aGUgcmVzcGVjdGl2ZSBkaXZpZGVyWzEwMDAsMTAwMDAwMCwxMDAwMDAwMDAwXSBiYXNlZCBvbiB0aGUgbnVtYmVyIGZvcm1hdCBjaG9vc2VuXG4gICAgICAgIGRpdmlkZXIgPSAodGlja2Zvcm1hdHNbbnVtYmVyRm9ybWF0XSAmJiB0aWNrZm9ybWF0c1tudW1iZXJGb3JtYXRdLmRpdmlkZXIpIHx8IDA7XG4gICAgICAgIHByZWZpeCA9IHRpY2tmb3JtYXRzW251bWJlckZvcm1hdF0gJiYgdGlja2Zvcm1hdHNbbnVtYmVyRm9ybWF0XS5wcmVmaXg7XG4gICAgICAgIGlmIChwcmVmaXggJiYgZGl2aWRlciAhPT0gMCkge1xuICAgICAgICAgICAgZm9ybWF0dGVkRGF0YSA9IGQzLmZvcm1hdCgnLjJmJykoZCAvIGRpdmlkZXIpICsgcHJlZml4O1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQXV0byBmb3JtYXR0aW5nIHRoZSBkYXRhIHdoZW4gbm8gZm9ybWF0aW5nIG9wdGlvbiBpcyBjaG9zZW5cbiAgICAgICAgZm9ybWF0dGVkRGF0YSA9IGQgPj0gMTAwMCA/IGQzLmZvcm1hdCgnLjFzJykoZCkgOiBkO1xuICAgIH1cbiAgICBmb3JtYXR0ZWREYXRhID0gcmVtb3ZlVHJhaWxpbmdaZXJvcyhmb3JtYXR0ZWREYXRhKTtcbiAgICByZXR1cm4gZm9ybWF0dGVkRGF0YTtcbn07XG5cbi8vIFNldCB0aGUgdmlzaWJpbGl0eSBwcm9wZXJ0eSBvZiB0aGUgY2hhcnQgeCx5IGF4aXMgZHVlIHRvIGEgYnVnIGluIHRoZSBudmQzXG5leHBvcnQgY29uc3QgdG9nZ2xlQXhpc1Nob3cgPSAocHJvcGVydHksIHZhbHVlKSA9PiB7XG4gICAgY29uc3QgJHhBeGlzID0gZDMuc2VsZWN0KGNoYXJ0SWQgKyAnIGcubnYtYXhpcy5udi14JyksXG4gICAgICAgICR5QXhpcyA9IGQzLnNlbGVjdChjaGFydElkICsgJyBnLm52LWF4aXMubnYteScpO1xuICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3Nob3d4YXhpcycpIHtcbiAgICAgICAgJHhBeGlzLnN0eWxlKCd2aXNpYmlsaXR5JywgdmFsdWUgPyAndmlzaWJsZScgOiAnaGlkZGVuJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgJHlBeGlzLnN0eWxlKCd2aXNpYmlsaXR5JywgdmFsdWUgPyAndmlzaWJsZScgOiAnaGlkZGVuJyk7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IG1vZGlmeUxlZ2VuZFBvc2l0aW9uID0gKHdpZGdldENvbnRleHQsIHBvc2l0aW9uLCBpZCkgPT4ge1xuICAgIGNvbnN0IHNob3dMZWdlbmQgPSBpc1Nob3dMZWdlbmQod2lkZ2V0Q29udGV4dC5zaG93bGVnZW5kKSxcbiAgICAgICAgY2hhcnRfSWQgPSBpZCA/ICcjd21DaGFydCcgKyBpZCA6IGNoYXJ0SWQsXG4gICAgICAgIGxlZ2VuZFdyYXAgPSBkMy5zZWxlY3QoY2hhcnRfSWQgKyAnIC5udi1sZWdlbmRXcmFwJyksXG4gICAgICAgIGxlZ2VuZFBhZGRpbmcgPSA1O1xuICAgIC8vIFJldHVybiB3aGVuIHNob3dsZWdlbmQgaXMgZmFsc2VcbiAgICBpZiAoIXNob3dMZWdlbmQgfHwgIWxlZ2VuZFdyYXBbJ19ncm91cHMnXVswXVswXSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChwb3NpdGlvbiA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgY29uc3QgbGVnZW5kV3JhcEhlaWdodCA9IGxlZ2VuZFdyYXBbJ19ncm91cHMnXVswXVswXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQsXG4gICAgICAgICAgICB3cmFwID0gZDMuc2VsZWN0KGNoYXJ0X0lkICsgJyAubnYtd3JhcCcpLFxuICAgICAgICAgICAgd3JhcFRyYW5zZm9ybSA9ICh3cmFwICYmIHdyYXAuYXR0cigndHJhbnNmb3JtJykpID8gd3JhcC5hdHRyKCd0cmFuc2Zvcm0nKS5yZXBsYWNlKC8sIC9nLCAnLCcpIDogJycsXG4gICAgICAgICAgICBjb29yZGluYXRlcyA9IC90cmFuc2xhdGVcXChcXHMqKFteXFxzLCldKylbICxdKFteXFxzLCldKykvLmV4ZWMod3JhcFRyYW5zZm9ybSksXG4gICAgICAgICAgICBnZXRDaGFydEhlaWdodCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgY2hhcnRIZWlnaHQgPSAkKGNoYXJ0X0lkICsgJyBzdmc+Lm52ZDMubnYtd3JhcCcpWzBdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcbiAgICAgICAgICAgICAgICBpZiAoY2hhcnRIZWlnaHQgPT09IDApIHsgLy8gZml4IGZvciBJRVxuICAgICAgICAgICAgICAgICAgICBjaGFydEhlaWdodCA9ICgkKGNoYXJ0X0lkICsgJyBzdmcnKVswXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQgLSAobGVnZW5kV3JhcEhlaWdodCArIDE1KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBjaGFydEhlaWdodDtcbiAgICAgICAgICAgIH07XG4gICAgICAgIGxlZ2VuZFdyYXAuYXR0cigndHJhbnNmb3JtJywgJ3RyYW5zbGF0ZSgwICwgJyArIChnZXRDaGFydEhlaWdodCgpIC0gbGVnZW5kV3JhcEhlaWdodCAtIGxlZ2VuZFBhZGRpbmcpICsgJyknKTtcbiAgICAgICAgaWYgKGNvb3JkaW5hdGVzKSB7XG4gICAgICAgICAgICB3cmFwLmF0dHIoJ3RyYW5zZm9ybScsICd0cmFuc2xhdGUoJyArIGNvb3JkaW5hdGVzWzFdICsgJywnICsgbGVnZW5kUGFkZGluZyArICcpJyk7XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG4vLyBSZXR1cm5zIHZhbHVlIGlmIGxlZ2VuZCBuZWVkIHRvIHNob3duIG9yIG5vdFxuZXhwb3J0IGNvbnN0IGlzU2hvd0xlZ2VuZCA9IHZhbHVlID0+IHtcbiAgICAvLyBPbGQgcHJvamVjdHMgd2lsbCBoYXZlIGVpdGhlciB0cnVlIG9yIGZhbHNlXG4gICAgaWYgKHZhbHVlID09PSAnZmFsc2UnIHx8IHZhbHVlID09PSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICh2YWx1ZSA9PT0gJ3RydWUnIHx8IHZhbHVlID09PSB0cnVlKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICAvLyBOZXcgcHJvamVjdHMgd2lsbCBoYXZlIGVpdGhlciAnSGlkZSBMZWdlbmQnLCAnU2hvdyBUb3AnLCAnU2hvdyBCb3R0b20nXG4gICAgcmV0dXJuIHZhbHVlID09PSAnaGlkZScgPyBmYWxzZSA6IHRydWU7XG59O1xuXG4vKipcbiAqIEN1c3RvbWlzZSB0aGUgdG9vbHRpcCBmb3IgZG9udXQgJiBwaWUgY2hhcnRzIGFuZCBhbHNvIGZvciBjaGFydHMgaGF2aW5nIG9ubHkgb25lIHZhbHVlIGF0dGFjaGVkIHRvIHlheGlzXG4gKiBAcGFyYW0ga2V5XG4gKiBAcGFyYW0gbGFiZWxcbiAqL1xuZXhwb3J0IGNvbnN0IGN1c3RvbWlzZVRvb2x0aXAgPSAoY2hhcnQsIHByb3BlcnR5VmFsdWVNYXAsIHdpZGdldENvbnRleHQsIGxhYmVsPykgPT4ge1xuICAgIGNoYXJ0LnRvb2x0aXAuY29udGVudEdlbmVyYXRvcihrZXkgPT4ge1xuICAgICAgICBsZXQgeFZhbHVlID0ga2V5LmRhdGEueCwgeVZhbHVlO1xuICAgICAgICB5VmFsdWUgPSBnZXROdW1iZXJGb3JtYXRlZERhdGEocHJvcGVydHlWYWx1ZU1hcC55bnVtYmVyZm9ybWF0LCBrZXkuZGF0YS55KTtcbiAgICAgICAgaWYgKGlzUGllVHlwZSh3aWRnZXRDb250ZXh0LnR5cGUpKSB7XG4gICAgICAgICAgICBsYWJlbCA9IGtleS5kYXRhLng7XG4gICAgICAgICAgICB4VmFsdWUgPSAnJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJzx0YWJsZT4nICtcbiAgICAgICAgICAgICc8dGJvZHk+JyArXG4gICAgICAgICAgICAnPHRyIGNsYXNzPVwidmFsdWVcIj48Yj4nICsgeFZhbHVlICtcbiAgICAgICAgICAgICc8L2I+PC90cj4nICtcbiAgICAgICAgICAgICc8dHI+JyArXG4gICAgICAgICAgICAnPHRkIGNsYXNzPVwibGVnZW5kLWNvbG9yLWd1aWRlXCI+PGRpdiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6JyArIGtleS5jb2xvciArICc7XCI+PC9kaXY+PC90ZD4nICtcbiAgICAgICAgICAgICc8dGQgY2xhc3M9XCJrZXlcIj4nICsgbGFiZWwgKyAnPC90ZD4nICtcbiAgICAgICAgICAgICc8dGQgY2xhc3M9XCJ2YWx1ZVwiPicgKyB5VmFsdWUgKyAnPC90ZD4nICtcbiAgICAgICAgICAgICc8L3RyPicgK1xuICAgICAgICAgICAgJzwvdGJvZHk+JyArXG4gICAgICAgICAgICAnPC90YWJsZT4nO1xuICAgIH0pO1xufTtcblxuLy8gaW50aWFsaXplcyB0aGUgY2hhcnQgb2JlamN0XG5leHBvcnQgY29uc3QgaW5pdENoYXJ0ID0gKHdpZGdldENvbnRleHQsIHhEb21haW5WYWx1ZXMsIHlEb21haW5WYWx1ZXMsIHByb3BlcnR5VmFsdWVNYXAsIGlzUHJldmlldykgPT4ge1xuICAgIHByb3BlcnR5VmFsdWVNYXAgPSAgaW5pdFByb3BlcnRpZXMod2lkZ2V0Q29udGV4dCwgcHJvcGVydHlWYWx1ZU1hcCk7XG4gICAgbGV0IGNoYXJ0LCBjb2xvcnMgPSBbXSwgeGF4aXNsYWJlbCwgeWF4aXNsYWJlbCwgbGFiZWxDb25maWcsIHJhZGl1cywgYmFyU3BhY2luZyxcbiAgICAgICAgc2hvd0xlZ2VuZCwgeEF4aXNWYWx1ZSwgaGFzTXVsdGlwbGVZVmFsdWVzO1xuICAgIGNvbnN0IHhWYWx1ZTogYW55ID0ge30sIHlWYWx1ZTogYW55ID0ge307XG4gICAgc3dpdGNoICh3aWRnZXRDb250ZXh0LnR5cGUpIHtcbiAgICAgICAgY2FzZSAnQ29sdW1uJzpcbiAgICAgICAgICAgIGJhclNwYWNpbmcgPSBnZXROdW1iZXJWYWx1ZShwcm9wZXJ0eVZhbHVlTWFwLmJhcnNwYWNpbmcsIGdldEJhclNwYWNpbmdWYWx1ZSkgfHwgYmFyU3BhY2luZ01hcC5tZWRpdW07XG4gICAgICAgICAgICBjaGFydCA9IG52Lm1vZGVscy5tdWx0aUJhckNoYXJ0KClcbiAgICAgICAgICAgICAgICAueChkID0+IGQueClcbiAgICAgICAgICAgICAgICAueShkID0+IGQueSlcbiAgICAgICAgICAgICAgICAucmVkdWNlWFRpY2tzKHByb3BlcnR5VmFsdWVNYXAucmVkdWNleHRpY2tzKVxuICAgICAgICAgICAgICAgIC5yb3RhdGVMYWJlbHMoMClcbiAgICAgICAgICAgICAgICAuc2hvd0NvbnRyb2xzKGZhbHNlKVxuICAgICAgICAgICAgICAgIC5zdGFja2VkKHByb3BlcnR5VmFsdWVNYXAudmlld3R5cGUgPT09ICdTdGFja2VkJyA/ICB0cnVlIDogZmFsc2UpXG4gICAgICAgICAgICAgICAgLmdyb3VwU3BhY2luZyhiYXJTcGFjaW5nKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdDdW11bGF0aXZlIExpbmUnOlxuICAgICAgICAgICAgY2hhcnQgPSBudi5tb2RlbHMuY3VtdWxhdGl2ZUxpbmVDaGFydCgpXG4gICAgICAgICAgICAgICAgLngoZCA9PiBkWzBdKVxuICAgICAgICAgICAgICAgIC55KGQgPT4gZFsxXSlcbiAgICAgICAgICAgICAgICAuc2hvd0NvbnRyb2xzKGZhbHNlKVxuICAgICAgICAgICAgICAgIC51c2VJbnRlcmFjdGl2ZUd1aWRlbGluZShwcm9wZXJ0eVZhbHVlTWFwLnRvb2x0aXBzKVxuICAgICAgICAgICAgICAgIC5pbnRlcnBvbGF0ZShwcm9wZXJ0eVZhbHVlTWFwLmludGVycG9sYXRpb24pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0xpbmUnOlxuICAgICAgICAgICAgY2hhcnQgPSBudi5tb2RlbHMubGluZUNoYXJ0KClcbiAgICAgICAgICAgICAgICAudXNlSW50ZXJhY3RpdmVHdWlkZWxpbmUocHJvcGVydHlWYWx1ZU1hcC50b29sdGlwcylcbiAgICAgICAgICAgICAgICAuaW50ZXJwb2xhdGUocHJvcGVydHlWYWx1ZU1hcC5pbnRlcnBvbGF0aW9uKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdBcmVhJzpcbiAgICAgICAgICAgIGNoYXJ0ID0gbnYubW9kZWxzLnN0YWNrZWRBcmVhQ2hhcnQoKVxuICAgICAgICAgICAgICAgIC54KGQgPT4gZC54KVxuICAgICAgICAgICAgICAgIC55KGQgPT4gZC55KVxuICAgICAgICAgICAgICAgIC5jbGlwRWRnZSh0cnVlKVxuICAgICAgICAgICAgICAgIC5zaG93Q29udHJvbHMoZmFsc2UpXG4gICAgICAgICAgICAgICAgLnN0eWxlKHByb3BlcnR5VmFsdWVNYXAuYXJlYXZpZXd0eXBlKVxuICAgICAgICAgICAgICAgIC51c2VJbnRlcmFjdGl2ZUd1aWRlbGluZShwcm9wZXJ0eVZhbHVlTWFwLnRvb2x0aXBzKVxuICAgICAgICAgICAgICAgIC5pbnRlcnBvbGF0ZShwcm9wZXJ0eVZhbHVlTWFwLmludGVycG9sYXRpb24pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0Jhcic6XG4gICAgICAgICAgICBiYXJTcGFjaW5nID0gZ2V0TnVtYmVyVmFsdWUocHJvcGVydHlWYWx1ZU1hcC5iYXJzcGFjaW5nLCBnZXRCYXJTcGFjaW5nVmFsdWUpIHx8IGJhclNwYWNpbmdNYXAubWVkaXVtO1xuICAgICAgICAgICAgY2hhcnQgPSBudi5tb2RlbHMubXVsdGlCYXJIb3Jpem9udGFsQ2hhcnQoKVxuICAgICAgICAgICAgICAgIC54KGQgPT4gZC54KVxuICAgICAgICAgICAgICAgIC55KGQgPT4gZC55KVxuICAgICAgICAgICAgICAgIC5zaG93Q29udHJvbHMoZmFsc2UpXG4gICAgICAgICAgICAgICAgLnN0YWNrZWQocHJvcGVydHlWYWx1ZU1hcC52aWV3dHlwZSA9PT0gJ1N0YWNrZWQnID8gIHRydWUgOiBmYWxzZSlcbiAgICAgICAgICAgICAgICAuc2hvd1ZhbHVlcyhwcm9wZXJ0eVZhbHVlTWFwLnNob3d2YWx1ZXMpXG4gICAgICAgICAgICAgICAgLmdyb3VwU3BhY2luZyhiYXJTcGFjaW5nKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdQaWUnOlxuICAgICAgICBjYXNlICdEb251dCc6XG4gICAgICAgICAgICBsYWJlbENvbmZpZyA9IGdldExhYmVsVmFsdWVzKHByb3BlcnR5VmFsdWVNYXAuc2hvd2xhYmVscywgcHJvcGVydHlWYWx1ZU1hcC5zaG93bGFiZWxzb3V0c2lkZSwgJ3ZhbHVlJyk7XG4gICAgICAgICAgICByYWRpdXMgPSBnZXROdW1iZXJWYWx1ZShwcm9wZXJ0eVZhbHVlTWFwLmRvbnV0cmF0aW8sIGdldFJhZGl1c1ZhbHVlKSB8fCBkb251dFJhdGlvTWFwLm1lZGl1bTtcbiAgICAgICAgICAgIGNoYXJ0ID0gbnYubW9kZWxzLnBpZUNoYXJ0KClcbiAgICAgICAgICAgICAgICAueChkID0+IGQueClcbiAgICAgICAgICAgICAgICAueShkID0+IGQueSlcbiAgICAgICAgICAgICAgICAuc2hvd0xhYmVscyhsYWJlbENvbmZpZy5zaG93bGFiZWxzKVxuICAgICAgICAgICAgICAgIC5sYWJlbFR5cGUocHJvcGVydHlWYWx1ZU1hcC5sYWJlbHR5cGUpXG4gICAgICAgICAgICAgICAgLnZhbHVlRm9ybWF0KGQzLmZvcm1hdCgnJScpKVxuICAgICAgICAgICAgICAgIC50aXRsZShwcm9wZXJ0eVZhbHVlTWFwLmNlbnRlcmxhYmVsKVxuICAgICAgICAgICAgICAgIC5sYWJlbFRocmVzaG9sZChwcm9wZXJ0eVZhbHVlTWFwLmxhYmVsdGhyZXNob2xkIHx8IDAuMDEpXG4gICAgICAgICAgICAgICAgLmxhYmVsc091dHNpZGUobGFiZWxDb25maWcuc2hvd2xhYmVsc291dHNpZGUpO1xuICAgICAgICAgICAgaWYgKGlzRG9udXRDaGFydCh3aWRnZXRDb250ZXh0LnR5cGUpKSB7XG4gICAgICAgICAgICAgICAgY2hhcnQuZG9udXQodHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgLmRvbnV0UmF0aW8ocmFkaXVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwcm9wZXJ0eVZhbHVlTWFwLmxhYmVsdHlwZSA9PT0gJ2tleS12YWx1ZScpIHtcbiAgICAgICAgICAgICAgICBjaGFydC5sYWJlbFR5cGUoZCA9PiBkLmRhdGEueCArICcgJyArIGQuZGF0YS55KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdCdWJibGUnOlxuICAgICAgICAgICAgY2hhcnQgPSBudi5tb2RlbHMuc2NhdHRlckNoYXJ0KClcbiAgICAgICAgICAgICAgICAueChkID0+IGQueClcbiAgICAgICAgICAgICAgICAueShkID0+IGQueSlcbiAgICAgICAgICAgICAgICAuc2hvd0Rpc3RYKHByb3BlcnR5VmFsdWVNYXAuc2hvd3hkaXN0YW5jZSlcbiAgICAgICAgICAgICAgICAuc2hvd0Rpc3RZKHByb3BlcnR5VmFsdWVNYXAuc2hvd3lkaXN0YW5jZSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoeERvbWFpblZhbHVlcykge1xuICAgICAgICB4VmFsdWUubWluID0geERvbWFpblZhbHVlcy5taW4ueCB8fCB4RG9tYWluVmFsdWVzLm1pblswXTtcbiAgICAgICAgeFZhbHVlLm1heCA9IHhEb21haW5WYWx1ZXMubWF4LnggfHwgeERvbWFpblZhbHVlcy5tYXhbMF07XG4gICAgICAgIC8vIElmIHRoZSB2YWx1ZXMgb24gdGhlIHggYXhpcyBhcmUgc3RyaW5nIHRoZW4gbWluIG1heCB2YWx1ZXMgZ2l2ZXMgSW5maW5pdHlcbiAgICAgICAgaWYgKGFyZU1pbk1heFZhbHVlc1ZhbGlkKHhWYWx1ZSkpIHtcbiAgICAgICAgICAgIC8vIFJlZHVjaW5nIHRoZSBtaW4gdmFsdWUgdG8gMC4xIHNvIHRoZSBtaW4gdmFsdWUgaXMgbm90IG1pc3NlZCBvdXRcbiAgICAgICAgICAgIHhWYWx1ZS5taW4gPSBnZXRZU2NhbGVNaW5WYWx1ZSh4VmFsdWUubWluKTtcbiAgICAgICAgICAgIGNoYXJ0LnhEb21haW4oW3hWYWx1ZS5taW4sIHhWYWx1ZS5tYXhdKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmICh5RG9tYWluVmFsdWVzKSB7XG4gICAgICAgIC8vIFJlZHVjaW5nIHRoZSBtaW4gdmFsdWUgdG8gMSBzbyB0aGUgbWluIHZhbHVlIGlzIG5vdCBtaXNzZWQgb3V0XG4gICAgICAgIHlWYWx1ZS5taW4gPSB5RG9tYWluVmFsdWVzLm1pbi55IHx8IHlEb21haW5WYWx1ZXMubWluWzFdO1xuICAgICAgICB5VmFsdWUubWF4ID0geURvbWFpblZhbHVlcy5tYXgueSB8fCB5RG9tYWluVmFsdWVzLm1heFsxXTtcbiAgICAgICAgLy8gSWYgdGhlIHZhbHVlcyBvbiB0aGUgeSBheGlzIGFyZSBzdHJpbmcgb3IgaW52YWxpZCB0aGVuIG1pbiBtYXggdmFsdWVzIGdpdmVzIEluZmluaXR5XG4gICAgICAgIGlmIChhcmVNaW5NYXhWYWx1ZXNWYWxpZCh5VmFsdWUpKSB7XG4gICAgICAgICAgICAvLyBSZWR1Y2luZyB0aGUgbWluIHZhbHVlIHRvIDEgc28gdGhlIG1pbiB2YWx1ZSBpcyBub3QgbWlzc2VkIG91dFxuICAgICAgICAgICAgeVZhbHVlLm1pbiA9IGdldFlTY2FsZU1pblZhbHVlKHlWYWx1ZS5taW4pO1xuICAgICAgICAgICAgY2hhcnQueURvbWFpbihbeVZhbHVlLm1pbiwgeVZhbHVlLm1heF0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2V0dGluZyB0aGUgbGVnZW5kIHR5cGUgY2hvb3NlbiBieSB1c2VyIG9yIGRlZmF1bHQgaXQgd2lsbCBiZSBmdXJpb3VzXG4gICAgY2hhcnQubGVnZW5kLnZlcnMoKHByb3BlcnR5VmFsdWVNYXAubGVnZW5kdHlwZSAmJiBwcm9wZXJ0eVZhbHVlTWFwLmxlZ2VuZHR5cGUudG9Mb3dlckNhc2UoKSkgfHwgJ2Z1cmlvdXMnKTtcblxuICAgIGlmICghXy5pbmNsdWRlcyhjaGFydFR5cGVzLCB3aWRnZXRDb250ZXh0LnR5cGUpKSB7XG4gICAgICAgIGNoYXJ0ID0gbnYubW9kZWxzLm11bHRpQmFyQ2hhcnQoKVxuICAgICAgICAgICAgLngoZCA9PiBkLngpXG4gICAgICAgICAgICAueShkID0+IGQueSk7XG4gICAgfVxuXG5cbiAgICBpZiAoaXNQaWVUeXBlKHdpZGdldENvbnRleHQudHlwZSkpIHtcbiAgICAgICAgLy8gSW4gY2FzZSBvZiBwaWUvZG9udXQgY2hhcnQgZm9ybWF0dGluZyB0aGUgdmFsdWVzIG9mIGl0XG4gICAgICAgIGlmIChwcm9wZXJ0eVZhbHVlTWFwLmxhYmVsdHlwZSA9PT0gJ3BlcmNlbnQnKSB7XG4gICAgICAgICAgICBjaGFydC52YWx1ZUZvcm1hdChkMy5mb3JtYXQoJyUnKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjaGFydC52YWx1ZUZvcm1hdChkID0+IGdldE51bWJlckZvcm1hdGVkRGF0YShwcm9wZXJ0eVZhbHVlTWFwLnludW1iZXJmb3JtYXQsIGQpKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBDdXN0b21pemluZyB0aGUgdG9vbHRpcHMgaW4gY2FzZSBvZiB0aGUgcGllIGFuZCBkb251dCB3aGVuIGxhYmVsVHlwZSBpcyB2YWx1ZVxuICAgICAgICBjdXN0b21pc2VUb29sdGlwKGNoYXJ0LCBwcm9wZXJ0eVZhbHVlTWFwLCB3aWRnZXRDb250ZXh0KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGNoYXJ0LnNob3dYQXhpcyhwcm9wZXJ0eVZhbHVlTWFwLnNob3d4YXhpcylcbiAgICAgICAgICAgIC5zaG93WUF4aXMocHJvcGVydHlWYWx1ZU1hcC5zaG93eWF4aXMpO1xuICAgICAgICBjaGFydC5sZWdlbmRQb3NpdGlvbihwcm9wZXJ0eVZhbHVlTWFwLnNob3dsZWdlbmQpO1xuXG4gICAgICAgIC8vIFNldHRpbmcgdGhlIGxhYmVscyBpZiB0aGV5IGFyZSBzcGVjaWZpZWQgZXhwbGljaXRseSBvciB0YWtpbmcgdGhlIGF4aXNrZXlzIGNob3NlblxuICAgICAgICB4YXhpc2xhYmVsID0gcHJvcGVydHlWYWx1ZU1hcC54YXhpc2xhYmVsIHx8IHByZXR0aWZ5TGFiZWxzKHdpZGdldENvbnRleHQueGF4aXNkYXRha2V5KSB8fCAneCBjYXB0aW9uJztcbiAgICAgICAgeWF4aXNsYWJlbCA9IHByb3BlcnR5VmFsdWVNYXAueWF4aXNsYWJlbCB8fCBwcmV0dGlmeUxhYmVscyh3aWRnZXRDb250ZXh0LnlheGlzZGF0YWtleSkgfHwgJ3kgY2FwdGlvbic7XG5cbiAgICAgICAgLy8gQ2hlY2tpbmcgaWYgeSBheGlzIGhhcyBtdWx0aXBsZSB2YWx1ZXNcbiAgICAgICAgaWYgKHdpZGdldENvbnRleHQueWF4aXNkYXRha2V5ICYmIHdpZGdldENvbnRleHQueWF4aXNkYXRha2V5LnNwbGl0KCcsJykubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgaGFzTXVsdGlwbGVZVmFsdWVzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBDdXN0b21pemluZyB0aGUgdG9vbHRpcCB0byBzaG93IHlheGlzbGFiZWwsIG9ubHkgaWYgdGhlIHkgYXhpcyBjb250YWlucyBvbmUgdmFsdWVcbiAgICAgICAgaWYgKCFoYXNNdWx0aXBsZVlWYWx1ZXMgJiYgIWlzQnViYmxlQ2hhcnQod2lkZ2V0Q29udGV4dC50eXBlKSkge1xuICAgICAgICAgICAgY3VzdG9taXNlVG9vbHRpcChjaGFydCwgcHJvcGVydHlWYWx1ZU1hcCwgd2lkZ2V0Q29udGV4dCwgeWF4aXNsYWJlbCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBZGRpbmcgdGhlIHVuaXRzIHRvIHRoZSBjYXB0aW9ucyBpZiB0aGV5IGFyZSBzcGVjaWZpZWRcbiAgICAgICAgeGF4aXNsYWJlbCArPSBwcm9wZXJ0eVZhbHVlTWFwLnh1bml0cyA/ICcoJyArIHByb3BlcnR5VmFsdWVNYXAueHVuaXRzICsgJyknIDogJyc7XG4gICAgICAgIHlheGlzbGFiZWwgKz0gcHJvcGVydHlWYWx1ZU1hcC55dW5pdHMgPyAnKCcgKyBwcm9wZXJ0eVZhbHVlTWFwLnl1bml0cyArICcpJyA6ICcnO1xuXG4gICAgICAgIGNoYXJ0LnhBeGlzXG4gICAgICAgICAgICAuYXhpc0xhYmVsKHhheGlzbGFiZWwpXG4gICAgICAgICAgICAuYXhpc0xhYmVsRGlzdGFuY2UocHJvcGVydHlWYWx1ZU1hcC54YXhpc2xhYmVsZGlzdGFuY2UpXG4gICAgICAgICAgICAuc3RhZ2dlckxhYmVscyhwcm9wZXJ0eVZhbHVlTWFwLnN0YWdnZXJsYWJlbHMpO1xuXG4gICAgICAgIC8vIElmIGRhdGUgZm9ybWF0IHNldCBmb3JtYXQgYmFzZWQgZGF0ZSBmb3JtYXRcbiAgICAgICAgaWYgKHByb3BlcnR5VmFsdWVNYXAueGRhdGVmb3JtYXQgfHwgKGlzUHJldmlldyAmJiAhaXNCdWJibGVDaGFydCh3aWRnZXRDb250ZXh0LnR5cGUpKSkge1xuICAgICAgICAgICAgaWYgKGlzTGluZVR5cGVDaGFydCh3aWRnZXRDb250ZXh0LnR5cGUpKSB7XG4gICAgICAgICAgICAgICAgY2hhcnQueEF4aXMudGlja0Zvcm1hdChkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZ2V0IHRoZSBhY3R1YWwgdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgeEF4aXNWYWx1ZSA9IGlzUHJldmlldyA/IGRhdGVMaXN0W2QgLSAxXSA6IHdpZGdldENvbnRleHQueERhdGFLZXlBcnJbZF07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXREYXRlRm9ybWF0ZWREYXRhKHByb3BlcnR5VmFsdWVNYXAueGRhdGVmb3JtYXQsIHhBeGlzVmFsdWUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjaGFydC54QXhpcy50aWNrRm9ybWF0KGQgPT4gZ2V0RGF0ZUZvcm1hdGVkRGF0YShwcm9wZXJ0eVZhbHVlTWFwLnhkYXRlZm9ybWF0LCBkKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAocHJvcGVydHlWYWx1ZU1hcC54bnVtYmVyZm9ybWF0KSB7XG4gICAgICAgICAgICBjaGFydC54QXhpcy50aWNrRm9ybWF0KGQgPT4gZ2V0TnVtYmVyRm9ybWF0ZWREYXRhKHByb3BlcnR5VmFsdWVNYXAueG51bWJlcmZvcm1hdCwgZCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGlzTGluZVR5cGVDaGFydCh3aWRnZXRDb250ZXh0LnR5cGUpKSB7XG4gICAgICAgICAgICAgICAgLy8gZ2V0IHRoZSBhY3R1YWwgdmFsdWVcbiAgICAgICAgICAgICAgICBjaGFydC54QXhpcy50aWNrRm9ybWF0KGQgPT4gd2lkZ2V0Q29udGV4dC54RGF0YUtleUFycltkXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2hhcnQueUF4aXNcbiAgICAgICAgICAgIC5heGlzTGFiZWwoeWF4aXNsYWJlbClcbiAgICAgICAgICAgIC5heGlzTGFiZWxEaXN0YW5jZShwcm9wZXJ0eVZhbHVlTWFwLnlheGlzbGFiZWxkaXN0YW5jZSlcbiAgICAgICAgICAgIC5zdGFnZ2VyTGFiZWxzKHByb3BlcnR5VmFsdWVNYXAuc3RhZ2dlcmxhYmVscylcbiAgICAgICAgICAgIC50aWNrRm9ybWF0KGQgPT4gZ2V0TnVtYmVyRm9ybWF0ZWREYXRhKHByb3BlcnR5VmFsdWVNYXAueW51bWJlcmZvcm1hdCwgZCkpO1xuICAgICAgICBpZiAoaXNCYXJDaGFydCh3aWRnZXRDb250ZXh0LnR5cGUpKSB7XG4gICAgICAgICAgICBjaGFydC52YWx1ZUZvcm1hdChkID0+IGdldE51bWJlckZvcm1hdGVkRGF0YShwcm9wZXJ0eVZhbHVlTWFwLnludW1iZXJmb3JtYXQsIGQpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFN1cHBvcnQgZm9yIGN1c3RvbSBjb2xvcnMgaWYgdXNlciBnaXZlcyBkaXJlY3Qgc3RyaW5nIG9mIGNvbG9ycyBpbiB0ZXh0IGJveFxuICAgIGlmIChfLmlzU3RyaW5nKHByb3BlcnR5VmFsdWVNYXAuY3VzdG9tY29sb3JzKSAmJiBwcm9wZXJ0eVZhbHVlTWFwLmN1c3RvbWNvbG9ycykge1xuICAgICAgICBjb2xvcnMgPSBfLnNwbGl0KHByb3BlcnR5VmFsdWVNYXAuY3VzdG9tY29sb3JzLCAnLCcpO1xuICAgIH1cbiAgICBpZiAoXy5pc0FycmF5KHByb3BlcnR5VmFsdWVNYXAuY3VzdG9tY29sb3JzKSkge1xuICAgICAgICBjb2xvcnMgPSBwcm9wZXJ0eVZhbHVlTWFwLmN1c3RvbWNvbG9ycztcbiAgICB9XG5cbiAgICBzaG93TGVnZW5kID0gaXNTaG93TGVnZW5kKHByb3BlcnR5VmFsdWVNYXAuc2hvd2xlZ2VuZCk7XG4gICAgY2hhcnQuc2hvd0xlZ2VuZChzaG93TGVnZW5kKVxuICAgICAgICAubWFyZ2luKHt0b3A6IHByb3BlcnR5VmFsdWVNYXAub2Zmc2V0dG9wLCByaWdodDogcHJvcGVydHlWYWx1ZU1hcC5vZmZzZXRyaWdodCwgYm90dG9tOiBwcm9wZXJ0eVZhbHVlTWFwLm9mZnNldGJvdHRvbSwgbGVmdDogcHJvcGVydHlWYWx1ZU1hcC5vZmZzZXRsZWZ0fSlcbiAgICAgICAgLmNvbG9yKGNvbG9ycy5sZW5ndGggPyBjb2xvcnMgOiB0aGVtZXNbcHJvcGVydHlWYWx1ZU1hcC50aGVtZV0uY29sb3JzKTtcblxuICAgIGNoYXJ0LnRvb2x0aXAuZW5hYmxlZChwcm9wZXJ0eVZhbHVlTWFwLnRvb2x0aXBzKTtcbiAgICB3aWRnZXRDb250ZXh0Lm1lc3NhZ2UgPSBwcm9wZXJ0eVZhbHVlTWFwLm5vZGF0YW1lc3NhZ2UgfHwgJ05vIGRhdGEgZm91bmQnO1xuICAgIC8vIHNldHRpbmcgdGhlIG5vIGRhdGEgbWVzc2FnZVxuICAgIGNoYXJ0Lm5vRGF0YSh3aWRnZXRDb250ZXh0Lm1lc3NhZ2UpO1xuXG4gICAgaWYgKGlzTGluZVR5cGVDaGFydCh3aWRnZXRDb250ZXh0LnR5cGUpICYmIHdpZGdldENvbnRleHQuaGlnaGxpZ2h0cG9pbnRzKSB7XG4gICAgICAgIGNoYXJ0LmRpc3BhdGNoLm9uKCdzdGF0ZUNoYW5nZScsICgpID0+IHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcG9zdFBsb3RDaGFydFByb2Nlc3Mod2lkZ2V0Q29udGV4dCksIDEwMCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh3aWRnZXRDb250ZXh0LnNob3dsZWdlbmQgJiYgKHdpZGdldENvbnRleHQudHlwZSA9PT0gJ0RvbnV0JyB8fCB3aWRnZXRDb250ZXh0LnR5cGUgPT09ICdQaWUnKSkge1xuICAgICAgICBpZih3aWRnZXRDb250ZXh0LnNob3dsZWdlbmQgPT09ICdyaWdodCcpIHtcbiAgICAgICAgICAgIGNoYXJ0LmxlZ2VuZFBvc2l0aW9uKCdyaWdodCcpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjaGFydDtcbn07XG5cbi8vIEB0cy1pZ25vcmVcbmV4cG9ydCBjb25zdCBwb3N0UGxvdENoYXJ0UHJvY2VzcyA9ICh3aWRnZXRDb250ZXh0LCBpc1ByZXZpZXc/KSA9PiB7XG4gICAgY29uc3QgaWQgPSBpc1ByZXZpZXcgPyBudWxsIDogd2lkZ2V0Q29udGV4dC4kaWQ7XG4gICAgLy8gSWYgdXNlciBzZXRzIHRvIGhpZ2hsaWdodCB0aGUgZGF0YSBwb2ludHMgYW5kIGluY3JlYXNlIHRoZSB0aGlja25lc3Mgb2YgdGhlIGxpbmVcbiAgICBpZiAoaXNMaW5lVHlwZUNoYXJ0KHdpZGdldENvbnRleHQudHlwZSkpIHtcbiAgICAgICBzZXRMaW5lVGhpY2tuZXNzKGlkLCB3aWRnZXRDb250ZXh0LmxpbmV0aGlja25lc3MpO1xuICAgICAgIGhpZ2hsaWdodFBvaW50cyhpZCwgd2lkZ2V0Q29udGV4dC5oaWdobGlnaHRwb2ludHMpO1xuICAgIH1cbiAgICAvLyBNb2RpZnlpbmcgdGhlIGxlZ2VuZCBwb3NpdGlvbiBvbmx5IHdoZW4gbGVnZW5kIGlzIHNob3duXG4gICAgLy8gaWYgKHdpZGdldENvbnRleHQuc2hvd2xlZ2VuZCkge1xuICAgIC8vICAgICBtb2RpZnlMZWdlbmRQb3NpdGlvbih3aWRnZXRDb250ZXh0LCB3aWRnZXRDb250ZXh0LnNob3dsZWdlbmQsIGlkKTtcbiAgICAvLyB9XG59O1xuXG4vLyBAdHMtaWdub3JlXG5leHBvcnQgY29uc3QgZ2V0RGF0ZUxpc3QgPSAoKSA9PiBkYXRlTGlzdDtcblxuIl19
|
|
@@ -475,7 +475,7 @@ const removeTrailingZeros = value => {
|
|
|
475
475
|
// Convert value to a string if it's a number
|
|
476
476
|
const stringValue = typeof value === 'number' ? value.toString() : value;
|
|
477
477
|
// Remove trailing zeros
|
|
478
|
-
return stringValue.replace(/\.0
|
|
478
|
+
return stringValue.replace(/\.0+([A-Za-z]*)$/, '$1').replace(/\.([1-9]+)0+([A-Za-z]*)$/, '.$1$2');
|
|
479
479
|
};
|
|
480
480
|
// Formats the given value according to number format
|
|
481
481
|
const getNumberFormatedData = (numberFormat, d) => {
|