@1money/component-ui 0.0.47 → 0.0.48
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/components/Table/core/useTableColumns.d.ts +1 -1
- package/es/components/Table/core/useTableColumns.js +13 -3
- package/es/components/Table/core/useTableExpand.d.ts +3 -1
- package/es/components/Table/core/useTableExpand.js +30 -5
- package/es/components/Table/core/useTableSetup.js +23 -3
- package/es/components/Table/features/ExpandTrigger.js +9 -2
- package/es/components/Table/interface.d.ts +4 -3
- package/es/components/Table/internal/kernel/FixedHolder/index.js +1 -2
- package/es/components/Table/internal/kernel/Table.d.ts +1 -1
- package/es/components/Table/internal/kernel/Table.js +2 -8
- package/es/components/Table/internal/kernel/VirtualTable/BodyGrid.js +1 -2
- package/es/components/Table/internal/kernel/VirtualTable/index.js +1 -2
- package/es/components/Table/internal/kernel/constant.d.ts +1 -1
- package/es/components/Table/internal/kernel/constant.js +1 -1
- package/es/components/Table/internal/kernel/hooks/useExpand.js +1 -2
- package/es/components/Table/internal/kernel/utils/offsetUtil.js +1 -2
- package/es/components/VirtualList/ScrollBar.js +1 -2
- package/es/index.css +1 -1
- package/lib/components/Table/core/useTableColumns.d.ts +1 -1
- package/lib/components/Table/core/useTableColumns.js +13 -3
- package/lib/components/Table/core/useTableExpand.d.ts +3 -1
- package/lib/components/Table/core/useTableExpand.js +30 -5
- package/lib/components/Table/core/useTableSetup.js +23 -3
- package/lib/components/Table/features/ExpandTrigger.js +9 -2
- package/lib/components/Table/interface.d.ts +4 -3
- package/lib/components/Table/internal/kernel/FixedHolder/index.js +1 -2
- package/lib/components/Table/internal/kernel/Table.d.ts +1 -1
- package/lib/components/Table/internal/kernel/Table.js +2 -8
- package/lib/components/Table/internal/kernel/VirtualTable/BodyGrid.js +1 -2
- package/lib/components/Table/internal/kernel/VirtualTable/index.js +1 -2
- package/lib/components/Table/internal/kernel/constant.d.ts +1 -1
- package/lib/components/Table/internal/kernel/constant.js +1 -1
- package/lib/components/Table/internal/kernel/hooks/useExpand.js +1 -2
- package/lib/components/Table/internal/kernel/utils/offsetUtil.js +1 -2
- package/lib/components/VirtualList/ScrollBar.js +1 -2
- package/lib/index.css +1 -1
- package/package.json +1 -1
- package/scripts/mcp-server/examples.generated.json +12 -0
- package/scripts/mcp-server/index.generated.json +8 -0
|
@@ -30,7 +30,7 @@ import { FooterComponents } from './Footer';
|
|
|
30
30
|
import type { ColumnsType, ColumnType, DefaultRecordType, Direction, ExpandableConfig, GetComponentProps, GetRowKey, LegacyExpandableProps, PanelRender, Reference, RowClassName, TableComponents, TableLayout, TableSticky } from './interface';
|
|
31
31
|
import Column from './sugar/Column';
|
|
32
32
|
import ColumnGroup from './sugar/ColumnGroup';
|
|
33
|
-
export declare const DEFAULT_PREFIX = "
|
|
33
|
+
export declare const DEFAULT_PREFIX = "om-table";
|
|
34
34
|
export type SemanticName = 'section' | 'title' | 'footer' | 'content';
|
|
35
35
|
export type ComponentsSemantic = 'wrapper' | 'cell' | 'row';
|
|
36
36
|
export interface TableProps<RecordType = DefaultRecordType> extends Omit<LegacyExpandableProps<RecordType>, 'showExpandColumn'> {
|
|
@@ -32,7 +32,7 @@ import { getColumnsKey, validateValue, validNumberValue } from './utils/valueUti
|
|
|
32
32
|
import { getDOM } from '../../../ResizeObserver/utils/reactUtil';
|
|
33
33
|
import isEqual from './selector-context/isEqual';
|
|
34
34
|
import { useLayoutEffect } from '@1money/hooks';
|
|
35
|
-
export var DEFAULT_PREFIX = '
|
|
35
|
+
export var DEFAULT_PREFIX = 'om-table';
|
|
36
36
|
// Used for conditions cache
|
|
37
37
|
var EMPTY_DATA = [];
|
|
38
38
|
// Used for customize scroll
|
|
@@ -132,7 +132,6 @@ var Table = function Table(tableProps, ref) {
|
|
|
132
132
|
columnTitle: expandableConfig.columnTitle,
|
|
133
133
|
expandedKeys: mergedExpandedKeys,
|
|
134
134
|
getRowKey: getRowKey,
|
|
135
|
-
// https://github.com/ant-design/ant-design/issues/23894
|
|
136
135
|
onTriggerExpand: onTriggerExpand,
|
|
137
136
|
expandIcon: mergedExpandIcon,
|
|
138
137
|
expandIconColumnIndex: expandableConfig.expandIconColumnIndex,
|
|
@@ -253,8 +252,6 @@ var Table = function Table(tableProps, ref) {
|
|
|
253
252
|
overflowX: 'auto'
|
|
254
253
|
};
|
|
255
254
|
// When no vertical scrollbar, should hide it
|
|
256
|
-
// https://github.com/ant-design/ant-design/pull/20705
|
|
257
|
-
// https://github.com/ant-design/ant-design/issues/21879
|
|
258
255
|
if (!fixHeader) {
|
|
259
256
|
scrollYStyle = {
|
|
260
257
|
overflowY: 'hidden'
|
|
@@ -288,7 +285,6 @@ var Table = function Table(tableProps, ref) {
|
|
|
288
285
|
} else if (target.scrollLeft !== scrollLeft) {
|
|
289
286
|
target.scrollLeft = scrollLeft;
|
|
290
287
|
// Delay to force scroll position if not sync
|
|
291
|
-
// ref: https://github.com/ant-design/ant-design/issues/37179
|
|
292
288
|
if (target.scrollLeft !== scrollLeft) {
|
|
293
289
|
setTimeout(function () {
|
|
294
290
|
target.scrollLeft = scrollLeft;
|
|
@@ -362,7 +358,6 @@ var Table = function Table(tableProps, ref) {
|
|
|
362
358
|
setComponentWidth(mergedWidth);
|
|
363
359
|
}
|
|
364
360
|
};
|
|
365
|
-
// fix https://github.com/ant-design/ant-design/issues/49279
|
|
366
361
|
useLayoutEffect(function () {
|
|
367
362
|
if (horizonScroll) {
|
|
368
363
|
onFullTableResize();
|
|
@@ -423,7 +418,6 @@ var Table = function Table(tableProps, ref) {
|
|
|
423
418
|
if (tableLayout) {
|
|
424
419
|
return tableLayout;
|
|
425
420
|
}
|
|
426
|
-
// https://github.com/ant-design/ant-design/issues/25227
|
|
427
421
|
// When scroll.x is max-content, no need to fix table layout
|
|
428
422
|
// it's width should stretch out to fit content
|
|
429
423
|
if (fixColumn) {
|
|
@@ -689,4 +683,4 @@ ImmutableTable.Column = Column;
|
|
|
689
683
|
ImmutableTable.ColumnGroup = ColumnGroup;
|
|
690
684
|
ImmutableTable.Summary = FooterComponents;
|
|
691
685
|
export default ImmutableTable;
|
|
692
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvaW50ZXJuYWwva2VybmVsL1RhYmxlLmpzIiwiY29tcG9uZW50cy9UYWJsZS9pbnRlcm5hbC9zcmMvY29tcG9uZW50cy9UYWJsZS9pbnRlcm5hbC9rZXJuZWwvVGFibGUudHN4Il0sIm5hbWVzIjpbImpzeCIsIl9qc3giLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsImpzeHMiLCJfanN4cyIsImNsc3giLCJSZXNpemVPYnNlcnZlciIsImdldFRhcmdldFNjcm9sbEJhclNpemUiLCJ1c2VFdmVudENhbGxiYWNrIiwidXNlRXZlbnQiLCJwaWNrQXR0cnMiLCJnZXRWYWx1ZSIsIndhcm5pbmciLCJSZWFjdCIsIkJvZHkiLCJDb2xHcm91cCIsIkVYUEFORF9DT0xVTU4iLCJJTlRFUk5BTF9IT09LUyIsIlRhYmxlQ29udGV4dCIsIm1ha2VJbW11dGFibGUiLCJGaXhlZEhvbGRlciIsIkZvb3RlciIsIkZvb3RlckNvbXBvbmVudHMiLCJTdW1tYXJ5IiwiSGVhZGVyIiwidXNlQ29sdW1ucyIsInVzZUV4cGFuZCIsInVzZUZpeGVkSW5mbyIsInVzZVRpbWVvdXRMb2NrIiwidXNlSG92ZXIiLCJ1c2VTdGlja3kiLCJ1c2VTdGlja3lPZmZzZXRzIiwiUGFuZWwiLCJTdGlja3lTY3JvbGxCYXIiLCJDb2x1bW4iLCJDb2x1bW5Hcm91cCIsImdldENvbHVtbnNLZXkiLCJ2YWxpZGF0ZVZhbHVlIiwidmFsaWROdW1iZXJWYWx1ZSIsImdldERPTSIsImlzRXF1YWwiLCJ1c2VMYXlvdXRFZmZlY3QiLCJERUZBVUxUX1BSRUZJWCIsIkVNUFRZX0RBVEEiLCJFTVBUWV9TQ1JPTExfVEFSR0VUIiwiZGVmYXVsdEVtcHR5IiwiVGFibGUiLCJ0YWJsZVByb3BzIiwicmVmIiwiX2Nsc3giLCJfYSIsIl9iIiwicHJvcHMiLCJPYmplY3QiLCJhc3NpZ24iLCJyb3dLZXkiLCJwcmVmaXhDbHMiLCJlbXB0eVRleHQiLCJjbGFzc05hbWUiLCJyb3dDbGFzc05hbWUiLCJzdHlsZSIsImNsYXNzTmFtZXMiLCJzdHlsZXMiLCJkYXRhIiwic2Nyb2xsIiwidGFibGVMYXlvdXQiLCJkaXJlY3Rpb24iLCJ0aXRsZSIsImZvb3RlciIsInN1bW1hcnkiLCJjYXB0aW9uIiwiaWQiLCJzaG93SGVhZGVyIiwiY29tcG9uZW50cyIsIm9uUm93Iiwib25IZWFkZXJSb3ciLCJtZWFzdXJlUm93UmVuZGVyIiwib25TY3JvbGwiLCJpbnRlcm5hbEhvb2tzIiwidHJhbnNmb3JtQ29sdW1ucyIsImludGVybmFsUmVmcyIsInRhaWxvciIsImdldENvbnRhaW5lcldpZHRoIiwic3RpY2t5IiwiX3Byb3BzJHJvd0hvdmVyYWJsZSIsInJvd0hvdmVyYWJsZSIsIm1lcmdlZERhdGEiLCJoYXNEYXRhIiwibGVuZ3RoIiwidXNlSW50ZXJuYWxIb29rcyIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsImZvckVhY2giLCJuYW1lIiwidW5kZWZpbmVkIiwiY29uY2F0IiwiZ2V0Q29tcG9uZW50IiwidXNlQ2FsbGJhY2siLCJwYXRoIiwiZGVmYXVsdENvbXBvbmVudCIsImdldFJvd0tleSIsInVzZU1lbW8iLCJyZWNvcmQiLCJrZXkiLCJjdXN0b21pemVTY3JvbGxCb2R5IiwiX3VzZUhvdmVyIiwiX3VzZUhvdmVyMiIsIl9zbGljZWRUb0FycmF5Iiwic3RhcnRSb3ciLCJlbmRSb3ciLCJvbkhvdmVyIiwiX3VzZUV4cGFuZCIsIl91c2VFeHBhbmQyIiwiZXhwYW5kYWJsZUNvbmZpZyIsImV4cGFuZGFibGVUeXBlIiwibWVyZ2VkRXhwYW5kZWRLZXlzIiwibWVyZ2VkRXhwYW5kSWNvbiIsIm1lcmdlZENoaWxkcmVuQ29sdW1uTmFtZSIsIm9uVHJpZ2dlckV4cGFuZCIsInNjcm9sbFgiLCJ4IiwiX1JlYWN0JHVzZVN0YXRlIiwidXNlU3RhdGUiLCJfUmVhY3QkdXNlU3RhdGUyIiwiY29tcG9uZW50V2lkdGgiLCJzZXRDb21wb25lbnRXaWR0aCIsIl91c2VDb2x1bW5zIiwiZXhwYW5kYWJsZSIsImV4cGFuZGVkUm93UmVuZGVyIiwiY29sdW1uVGl0bGUiLCJleHBhbmRlZEtleXMiLCJleHBhbmRJY29uIiwiZXhwYW5kSWNvbkNvbHVtbkluZGV4Iiwic2Nyb2xsV2lkdGgiLCJjbGllbnRXaWR0aCIsIl91c2VDb2x1bW5zMiIsImNvbHVtbnMiLCJmbGF0dGVuQ29sdW1ucyIsImZsYXR0ZW5TY3JvbGxYIiwibWVyZ2VkU2Nyb2xsWCIsImNvbHVtbkNvbnRleHQiLCJmdWxsVGFibGVSZWYiLCJ1c2VSZWYiLCJzY3JvbGxIZWFkZXJSZWYiLCJzY3JvbGxCb2R5UmVmIiwic2Nyb2xsQm9keUNvbnRhaW5lclJlZiIsInVzZUltcGVyYXRpdmVIYW5kbGUiLCJuYXRpdmVFbGVtZW50IiwiY3VycmVudCIsInNjcm9sbFRvIiwiY29uZmlnIiwiSFRNTEVsZW1lbnQiLCJpbmRleCIsInRvcCIsIm9mZnNldCIsIm1lcmdlZEtleSIsInRhcmdldEVsZW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwic2Nyb2xsSW50b1ZpZXciLCJlbGVtZW50VG9wIiwib2Zmc2V0VG9wIiwic2Nyb2xsU3VtbWFyeVJlZiIsIl9SZWFjdCR1c2VTdGF0ZTMiLCJfUmVhY3QkdXNlU3RhdGU0Iiwic2hhZG93U3RhcnQiLCJzZXRTaGFkb3dTdGFydCIsIl9SZWFjdCR1c2VTdGF0ZTUiLCJfUmVhY3QkdXNlU3RhdGU2Iiwic2hhZG93RW5kIiwic2V0U2hhZG93RW5kIiwiX1JlYWN0JHVzZVN0YXRlNyIsIk1hcCIsIl9SZWFjdCR1c2VTdGF0ZTgiLCJjb2xzV2lkdGhzIiwidXBkYXRlQ29sc1dpZHRocyIsImNvbHNLZXlzIiwicHVyZUNvbFdpZHRocyIsIm1hcCIsImNvbHVtbktleSIsImdldCIsImNvbFdpZHRocyIsImpvaW4iLCJzdGlja3lPZmZzZXRzIiwiZml4SGVhZGVyIiwieSIsImhvcml6b25TY3JvbGwiLCJCb29sZWFuIiwiZml4ZWQiLCJmaXhDb2x1bW4iLCJzb21lIiwiX3JlZiIsInN0aWNreVJlZiIsIl91c2VTdGlja3kiLCJpc1N0aWNreSIsIm9mZnNldEhlYWRlciIsIm9mZnNldFN1bW1hcnkiLCJvZmZzZXRTY3JvbGwiLCJzdGlja3lDbGFzc05hbWUiLCJjb250YWluZXIiLCJzdW1tYXJ5Tm9kZSIsImZpeEZvb3RlciIsImlzVmFsaWRFbGVtZW50IiwidHlwZSIsInNjcm9sbFhTdHlsZSIsInNjcm9sbFlTdHlsZSIsInNjcm9sbFRhYmxlU3R5bGUiLCJvdmVyZmxvd1kiLCJtYXhIZWlnaHQiLCJvdmVyZmxvd1giLCJ3aWR0aCIsIm1pbldpZHRoIiwib25Db2x1bW5SZXNpemUiLCJ3aWR0aHMiLCJuZXdXaWR0aHMiLCJzZXQiLCJfdXNlVGltZW91dExvY2siLCJfdXNlVGltZW91dExvY2syIiwic2V0U2Nyb2xsVGFyZ2V0IiwiZ2V0U2Nyb2xsVGFyZ2V0IiwiZm9yY2VTY3JvbGwiLCJzY3JvbGxMZWZ0IiwidGFyZ2V0Iiwic2V0VGltZW91dCIsIl9SZWFjdCR1c2VTdGF0ZTkiLCJfUmVhY3QkdXNlU3RhdGUxMCIsInNjcm9sbEluZm8iLCJzZXRTY3JvbGxJbmZvIiwib25JbnRlcm5hbFNjcm9sbCIsIl9yZWYyIiwiY3VycmVudFRhcmdldCIsIm1lcmdlZFNjcm9sbExlZnQiLCJjb21wYXJlVGFyZ2V0Iiwic2V0U2Nyb2xsTGVmdCIsIm1lYXN1cmVUYXJnZXQiLCJhYnNTY3JvbGxTdGFydCIsIk1hdGgiLCJhYnMiLCJvcmkiLCJuZXh0U2Nyb2xsSW5mbyIsIm9uQm9keVNjcm9sbCIsImUiLCJ0cmlnZ2VyT25TY3JvbGwiLCJvbkZ1bGxUYWJsZVJlc2l6ZSIsIm9mZnNldFdpZHRoIiwiX2MiLCJjaGVja1Njcm9sbEJhclZpc2libGUiLCJtZXJnZWRXaWR0aCIsIm1vdW50ZWQiLCJ1c2VFZmZlY3QiLCJfUmVhY3QkdXNlU3RhdGUxMSIsIl9SZWFjdCR1c2VTdGF0ZTEyIiwic2Nyb2xsYmFyU2l6ZSIsInNldFNjcm9sbGJhclNpemUiLCJFbGVtZW50IiwiYm9keSIsInJlbmRlckZpeGVkSGVhZGVyVGFibGUiLCJmaXhlZEhvbGRlclBhc3NQcm9wcyIsImNoaWxkcmVuIiwicmVuZGVyRml4ZWRGb290ZXJUYWJsZSIsIlRhYmxlQ29tcG9uZW50IiwibWVyZ2VkVGFibGVMYXlvdXQiLCJfcmVmMyIsImVsbGlwc2lzIiwiZ3JvdXBUYWJsZU5vZGUiLCJoZWFkZXJQcm9wcyIsImNvbHVtQ291bnQiLCJlbXB0eU5vZGUiLCJib2R5VGFibGUiLCJtZWFzdXJlQ29sdW1uV2lkdGgiLCJib2R5Q29sR3JvdXAiLCJfcmVmNCIsImNhcHRpb25FbGVtZW50IiwiZGF0YVByb3BzIiwiYXJpYVByb3BzIiwiYXJpYSIsImJvZHlDb250ZW50IiwiX3JlZjUiLCJjb2xXaWR0aCIsIk51bWJlciIsImlzTmFOIiwiZml4ZWRIb2xkZXJQcm9wcyIsIm5vRGF0YSIsIm1heENvbnRlbnRTY3JvbGwiLCJzdGlja3lUb3BPZmZzZXQiLCJjb2xHcm91cCIsInN0aWNreUJvdHRvbU9mZnNldCIsImNvbnRlbnQiLCJ0YWJsZVN0eWxlIiwiZnVsbFRhYmxlIiwiX2RlZmluZVByb3BlcnR5Iiwic2VjdGlvbiIsIm9uUmVzaXplIiwiX3JlZjYiLCJmaXhlZEluZm9MaXN0IiwiVGFibGVDb250ZXh0VmFsdWUiLCJleHBhbmRlZFJvd0NsYXNzTmFtZSIsImV4cGFuZFJvd0J5Q2xpY2siLCJleHBhbmRlZFJvd09mZnNldCIsImluZGVudFNpemUiLCJhbGxDb2x1bW5zRml4ZWRMZWZ0IiwiZXZlcnkiLCJjb2wiLCJob3ZlclN0YXJ0Um93IiwiaG92ZXJFbmRSb3ciLCJyb3dFeHBhbmRhYmxlIiwiY2hpbGRyZW5Db2x1bW5OYW1lIiwiUHJvdmlkZXIiLCJ2YWx1ZSIsIlJlZlRhYmxlIiwiZm9yd2FyZFJlZiIsImRpc3BsYXlOYW1lIiwiZ2VuVGFibGUiLCJzaG91bGRUcmlnZ2VyUmVuZGVyIiwiSW1tdXRhYmxlVGFibGUiXSwibWFwcGluZ3MiOiI7O0FBQUEsU0FBU0EsR0FBRyxJQUFJQyxJQUFJLEVBQUVDLFFBQVEsSUFBSUMsU0FBUyxFQUFFQyxJQUFJLElBQUlDLEtBQUssUUFBUSxtQkFB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LElBQUk0QyxPQUFPLENBQUNDLEdBQUcsQ0FBQ0MsUUFBUSxLQUFLLFlBQVksRUFBRTtFQUN6Q3lOLFFBQVEsQ0FBQ0UsV0FBVyxHQUFHLE9BQU87QUFDaEM7QUFFQSxPQUFPLElBQU1DLFFBQVEsR0FBRyxTQUFYQSxRQUFRQSxDQUFJQyxtQkFBdUQsRUFBSTtFQUNsRixPQUFPdFMsYUFBYSxDQUFDa1MsUUFBUSxFQUFFSSxtQkFBbUIsQ0FBQztBQUNyRCxDQUFDO0FBRUQsSUFBTUMsY0FBYyxHQUFHRixRQUFRLENBQUEsQ0FBRTtBQVVoQ0UsY0FBcUMsQ0FBQzFTLGFBQWEsR0FBR0EsYUFBYTtBQUVuRTBTLGNBQXFDLENBQUN6UyxjQUFjLEdBQUdBLGNBQWM7QUFFckV5UyxjQUFxQyxDQUFDeFIsTUFBTSxHQUFHQSxNQUFNO0FBRXJEd1IsY0FBcUMsQ0FBQ3ZSLFdBQVcsR0FBR0EsV0FBVztBQUUvRHVSLGNBQXFDLENBQUNuUyxPQUFPLEdBQUdELGdCQUFnQjtBQUVqRSxlQUFlb1MsY0FBb0MiLCJmaWxlIjoiY29tcG9uZW50cy9UYWJsZS9pbnRlcm5hbC9rZXJuZWwvVGFibGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCwgRnJhZ21lbnQgYXMgX0ZyYWdtZW50LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBjbHN4IH0gZnJvbSAnY2xzeCc7XG5pbXBvcnQgUmVzaXplT2JzZXJ2ZXIgZnJvbSAnLi4vLi4vLi4vUmVzaXplT2JzZXJ2ZXInO1xuaW1wb3J0IHsgZ2V0VGFyZ2V0U2Nyb2xsQmFyU2l6ZSB9IGZyb20gJy4vdXRpbHMvZ2V0U2Nyb2xsQmFyU2l6ZSc7XG5pbXBvcnQgeyB1c2VFdmVudENhbGxiYWNrIGFzIHVzZUV2ZW50IH0gZnJvbSAnQDFtb25leS9ob29rcyc7XG5pbXBvcnQgcGlja0F0dHJzIGZyb20gJy4vdXRpbHMvcGlja0F0dHJzJztcbmltcG9ydCBnZXRWYWx1ZSBmcm9tICcuL3V0aWxzL2dldCc7XG5pbXBvcnQgd2FybmluZyBmcm9tICcuL3V0aWxzL3dhcm5pbmcnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IEJvZHkgZnJvbSAnLi9Cb2R5JztcbmltcG9ydCBDb2xHcm91cCBmcm9tICcuL0NvbEdyb3VwJztcbmltcG9ydCB7IEVYUEFORF9DT0xVTU4sIElOVEVSTkFMX0hPT0tTIH0gZnJvbSAnLi9jb25zdGFudCc7XG5pbXBvcnQgVGFibGVDb250ZXh0LCB7IG1ha2VJbW11dGFibGUgfSBmcm9tICcuL2NvbnRleHQvVGFibGVDb250ZXh0JztcbmltcG9ydCBGaXhlZEhvbGRlciBmcm9tICcuL0ZpeGVkSG9sZGVyJztcbmltcG9ydCBGb290ZXIsIHsgRm9vdGVyQ29tcG9uZW50cyB9IGZyb20gJy4vRm9vdGVyJztcbmltcG9ydCBTdW1tYXJ5IGZyb20gJy4vRm9vdGVyL1N1bW1hcnknO1xuaW1wb3J0IEhlYWRlciBmcm9tICcuL0hlYWRlci9IZWFkZXInO1xuaW1wb3J0IHVzZUNvbHVtbnMgZnJvbSAnLi9ob29rcy91c2VDb2x1bW5zJztcbmltcG9ydCB1c2VFeHBhbmQgZnJvbSAnLi9ob29rcy91c2VFeHBhbmQnO1xuaW1wb3J0IHVzZUZpeGVkSW5mbyBmcm9tICcuL2hvb2tzL3VzZUZpeGVkSW5mbyc7XG5pbXBvcnQgeyB1c2VUaW1lb3V0TG9jayB9IGZyb20gJy4vaG9va3MvdXNlRnJhbWUnO1xuaW1wb3J0IHVzZUhvdmVyIGZyb20gJy4vaG9va3MvdXNlSG92ZXInO1xuaW1wb3J0IHVzZVN0aWNreSBmcm9tICcuL2hvb2tzL3VzZVN0aWNreSc7XG5pbXBvcnQgdXNlU3RpY2t5T2Zmc2V0cyBmcm9tICcuL2hvb2tzL3VzZVN0aWNreU9mZnNldHMnO1xuaW1wb3J0IFBhbmVsIGZyb20gJy4vUGFuZWwnO1xuaW1wb3J0IFN0aWNreVNjcm9sbEJhciBmcm9tICcuL3N0aWNreVNjcm9sbEJhcic7XG5pbXBvcnQgQ29sdW1uIGZyb20gJy4vc3VnYXIvQ29sdW1uJztcbmltcG9ydCBDb2x1bW5Hcm91cCBmcm9tICcuL3N1Z2FyL0NvbHVtbkdyb3VwJztcbmltcG9ydCB7IGdldENvbHVtbnNLZXksIHZhbGlkYXRlVmFsdWUsIHZhbGlkTnVtYmVyVmFsdWUgfSBmcm9tICcuL3V0aWxzL3ZhbHVlVXRpbCc7XG5pbXBvcnQgeyBnZXRET00gfSBmcm9tICcuLi8uLi8uLi9SZXNpemVPYnNlcnZlci91dGlscy9yZWFjdFV0aWwnO1xuaW1wb3J0IGlzRXF1YWwgZnJvbSAnLi9zZWxlY3Rvci1jb250ZXh0L2lzRXF1YWwnO1xuaW1wb3J0IHsgdXNlTGF5b3V0RWZmZWN0IH0gZnJvbSAnQDFtb25leS9ob29rcyc7XG5leHBvcnQgY29uc3QgREVGQVVMVF9QUkVGSVggPSAncmMtdGFibGUnO1xuLy8gVXNlZCBmb3IgY29uZGl0aW9ucyBjYWNoZVxuY29uc3QgRU1QVFlfREFUQSA9IFtdO1xuLy8gVXNlZCBmb3IgY3VzdG9taXplIHNjcm9sbFxuY29uc3QgRU1QVFlfU0NST0xMX1RBUkdFVCA9IHt9O1xuZnVuY3Rpb24gZGVmYXVsdEVtcHR5KCkge1xuICAgIHJldHVybiAnTm8gRGF0YSc7XG59XG5jb25zdCBUYWJsZSA9ICh0YWJsZVByb3BzLCByZWYpID0+IHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIGNvbnN0IHByb3BzID0gT2JqZWN0LmFzc2lnbih7IHJvd0tleTogJ2tleScsIHByZWZpeENsczogREVGQVVMVF9QUkVGSVgsIGVtcHR5VGV4dDogZGVmYXVsdEVtcHR5IH0sIHRhYmxlUHJvcHMpO1xuICAgIGNvbnN0IHsgcHJlZml4Q2xzLCBjbGFzc05hbWUsIHJvd0NsYXNzTmFtZSwgc3R5bGUsIGNsYXNzTmFtZXMsIHN0eWxlcywgZGF0YSwgcm93S2V5LCBzY3JvbGwsIHRhYmxlTGF5b3V0LCBkaXJlY3Rpb24sIFxuICAgIC8vIEFkZGl0aW9uYWwgUGFydFxuICAgIHRpdGxlLCBmb290ZXIsIHN1bW1hcnksIGNhcHRpb24sIFxuICAgIC8vIEN1c3RvbWl6ZVxuICAgIGlkLCBzaG93SGVhZGVyLCBjb21wb25lbnRzLCBlbXB0eVRleHQsIG9uUm93LCBvbkhlYWRlclJvdywgXG4gICAgLy8gTWVhc3VyZSBSb3dcbiAgICBtZWFzdXJlUm93UmVuZGVyLCBcbiAgICAvLyBFdmVudHNcbiAgICBvblNjcm9sbCwgXG4gICAgLy8gSW50ZXJuYWxcbiAgICBpbnRlcm5hbEhvb2tzLCB0cmFuc2Zvcm1Db2x1bW5zLCBpbnRlcm5hbFJlZnMsIHRhaWxvciwgZ2V0Q29udGFpbmVyV2lkdGgsIHN0aWNreSwgcm93SG92ZXJhYmxlID0gdHJ1ZSwgfSA9IHByb3BzO1xuICAgIGNvbnN0IG1lcmdlZERhdGEgPSBkYXRhIHx8IEVNUFRZX0RBVEE7XG4gICAgY29uc3QgaGFzRGF0YSA9ICEhbWVyZ2VkRGF0YS5sZW5ndGg7XG4gICAgY29uc3QgdXNlSW50ZXJuYWxIb29rcyA9IGludGVybmFsSG9va3MgPT09IElOVEVSTkFMX0hPT0tTO1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PSBXYXJuaW5nID09PT09PT09PT09PT09PT09PT09PT1cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBbXG4gICAgICAgICAgICAnb25Sb3dDbGljaycsXG4gICAgICAgICAgICAnb25Sb3dEb3VibGVDbGljaycsXG4gICAgICAgICAgICAnb25Sb3dDb250ZXh0TWVudScsXG4gICAgICAgICAgICAnb25Sb3dNb3VzZUVudGVyJyxcbiAgICAgICAgICAgICdvblJvd01vdXNlTGVhdmUnLFxuICAgICAgICBdLmZvckVhY2gobmFtZSA9PiB7XG4gICAgICAgICAgICB3YXJuaW5nKHByb3BzW25hbWVdID09PSB1bmRlZmluZWQsIGBcXGAke25hbWV9XFxgIGlzIHJlbW92ZWQsIHBsZWFzZSB1c2UgXFxgb25Sb3dcXGAgaW5zdGVhZC5gKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHdhcm5pbmcoISgnZ2V0Qm9keVdyYXBwZXInIGluIHByb3BzKSwgJ2BnZXRCb2R5V3JhcHBlcmAgaXMgZGVwcmVjYXRlZCwgcGxlYXNlIHVzZSBjdXN0b20gYGNvbXBvbmVudHNgIGluc3RlYWQuJyk7XG4gICAgfVxuICAgIC8vID09PT09PT09PT09PT09PT09PT09IEN1c3RvbWl6ZSA9PT09PT09PT09PT09PT09PT09PT1cbiAgICBjb25zdCBnZXRDb21wb25lbnQgPSBSZWFjdC51c2VDYWxsYmFjaygocGF0aCwgZGVmYXVsdENvbXBvbmVudCkgPT4gZ2V0VmFsdWUoY29tcG9uZW50cywgcGF0aCkgfHwgZGVmYXVsdENvbXBvbmVudCwgW2NvbXBvbmVudHNdKTtcbiAgICBjb25zdCBnZXRSb3dLZXkgPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiByb3dLZXkgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybiByb3dLZXk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChyZWNvcmQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IHJlY29yZCAmJiByZWNvcmRbcm93S2V5XTtcbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgd2FybmluZyhrZXkgIT09IHVuZGVmaW5lZCwgJ0VhY2ggcmVjb3JkIGluIHRhYmxlIHNob3VsZCBoYXZlIGEgdW5pcXVlIGBrZXlgIHByb3AsIG9yIHNldCBgcm93S2V5YCB0byBhbiB1bmlxdWUgcHJpbWFyeSBrZXkuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ga2V5O1xuICAgICAgICB9O1xuICAgIH0sIFtyb3dLZXldKTtcbiAgICBjb25zdCBjdXN0b21pemVTY3JvbGxCb2R5ID0gZ2V0Q29tcG9uZW50KFsnYm9keSddKTtcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09IEhvdmVyID09PT09PT09PT09PT09PT09PT09PT09XG4gICAgY29uc3QgW3N0YXJ0Um93LCBlbmRSb3csIG9uSG92ZXJdID0gdXNlSG92ZXIoKTtcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09IEV4cGFuZCA9PT09PT09PT09PT09PT09PT09PT09XG4gICAgY29uc3QgW2V4cGFuZGFibGVDb25maWcsIGV4cGFuZGFibGVUeXBlLCBtZXJnZWRFeHBhbmRlZEtleXMsIG1lcmdlZEV4cGFuZEljb24sIG1lcmdlZENoaWxkcmVuQ29sdW1uTmFtZSwgb25UcmlnZ2VyRXhwYW5kLF0gPSB1c2VFeHBhbmQocHJvcHMsIG1lcmdlZERhdGEsIGdldFJvd0tleSk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PSBDb2x1bW4gPT09PT09PT09PT09PT09PT09PT09PVxuICAgIGNvbnN0IHNjcm9sbFggPSBzY3JvbGwgPT09IG51bGwgfHwgc2Nyb2xsID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzY3JvbGwueDtcbiAgICBjb25zdCBbY29tcG9uZW50V2lkdGgsIHNldENvbXBvbmVudFdpZHRoXSA9IFJlYWN0LnVzZVN0YXRlKDApO1xuICAgIGNvbnN0IFtjb2x1bW5zLCBmbGF0dGVuQ29sdW1ucywgZmxhdHRlblNjcm9sbFhdID0gdXNlQ29sdW1ucyhPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgcHJvcHMpLCBleHBhbmRhYmxlQ29uZmlnKSwgeyBleHBhbmRhYmxlOiAhIWV4cGFuZGFibGVDb25maWcuZXhwYW5kZWRSb3dSZW5kZXIsIGNvbHVtblRpdGxlOiBleHBhbmRhYmxlQ29uZmlnLmNvbHVtblRpdGxlLCBleHBhbmRlZEtleXM6IG1lcmdlZEV4cGFuZGVkS2V5cywgZ2V0Um93S2V5LFxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYW50LWRlc2lnbi9hbnQtZGVzaWduL2lzc3Vlcy8yMzg5NFxuICAgICAgICBvblRyaWdnZXJFeHBhbmQsIGV4cGFuZEljb246IG1lcmdlZEV4cGFuZEljb24sIGV4cGFuZEljb25Db2x1bW5JbmRleDogZXhwYW5kYWJsZUNvbmZpZy5leHBhbmRJY29uQ29sdW1uSW5kZXgsIGRpcmVjdGlvbiwgc2Nyb2xsV2lkdGg6IHVzZUludGVybmFsSG9va3MgJiYgdGFpbG9yICYmIHR5cGVvZiBzY3JvbGxYID09PSAnbnVtYmVyJyA/IHNjcm9sbFggOiBudWxsLCBjbGllbnRXaWR0aDogY29tcG9uZW50V2lkdGggfSksIHVzZUludGVybmFsSG9va3MgPyB0cmFuc2Zvcm1Db2x1bW5zIDogbnVsbCk7XG4gICAgY29uc3QgbWVyZ2VkU2Nyb2xsWCA9IGZsYXR0ZW5TY3JvbGxYICE9PSBudWxsICYmIGZsYXR0ZW5TY3JvbGxYICE9PSB2b2lkIDAgPyBmbGF0dGVuU2Nyb2xsWCA6IHNjcm9sbFg7XG4gICAgY29uc3QgY29sdW1uQ29udGV4dCA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHsgY29sdW1ucywgZmxhdHRlbkNvbHVtbnMgfSksIFtjb2x1bW5zLCBmbGF0dGVuQ29sdW1uc10pO1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09IFJlZnMgPT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBjb25zdCBmdWxsVGFibGVSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgY29uc3Qgc2Nyb2xsSGVhZGVyUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHNjcm9sbEJvZHlSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgY29uc3Qgc2Nyb2xsQm9keUNvbnRhaW5lclJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICBSZWFjdC51c2VJbXBlcmF0aXZlSGFuZGxlKHJlZiwgKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmF0aXZlRWxlbWVudDogZnVsbFRhYmxlUmVmLmN1cnJlbnQsXG4gICAgICAgICAgICBzY3JvbGxUbzogY29uZmlnID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgICAgIGlmIChzY3JvbGxCb2R5UmVmLmN1cnJlbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBOYXRpdmUgc2Nyb2xsXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgaW5kZXgsIHRvcCwga2V5LCBvZmZzZXQgfSA9IGNvbmZpZztcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbGlkTnVtYmVyVmFsdWUodG9wKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW4gdG9wIG1vZGUsIG9mZnNldCBpcyBpZ25vcmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAoX2EgPSBzY3JvbGxCb2R5UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zY3JvbGxUbyh7IHRvcCB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1lcmdlZEtleSA9IGtleSAhPT0gbnVsbCAmJiBrZXkgIT09IHZvaWQgMCA/IGtleSA6IGdldFJvd0tleShtZXJnZWREYXRhW2luZGV4XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRFbGVtZW50ID0gc2Nyb2xsQm9keVJlZi5jdXJyZW50LnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLXJvdy1rZXk9XCIke21lcmdlZEtleX1cIl1gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvZmZzZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm8gb2Zmc2V0LCB1c2Ugc2Nyb2xsSW50b1ZpZXcgZm9yIGRlZmF1bHQgYmVoYXZpb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0RWxlbWVudC5zY3JvbGxJbnRvVmlldygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2l0aCBvZmZzZXQsIHVzZSBlbGVtZW50J3Mgb2Zmc2V0VG9wICsgb2Zmc2V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRUb3AgPSB0YXJnZXRFbGVtZW50Lm9mZnNldFRvcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsQm9keVJlZi5jdXJyZW50LnNjcm9sbFRvKHsgdG9wOiBlbGVtZW50VG9wICsgb2Zmc2V0IH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmICgoX2IgPSBzY3JvbGxCb2R5UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5zY3JvbGxUbykge1xuICAgICAgICAgICAgICAgICAgICAvLyBQYXNzIHRvIHByb3h5XG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbEJvZHlSZWYuY3VycmVudC5zY3JvbGxUbyhjb25maWcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfSk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PSBTY3JvbGwgPT09PT09PT09PT09PT09PT09PT09PVxuICAgIGNvbnN0IHNjcm9sbFN1bW1hcnlSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgY29uc3QgW3NoYWRvd1N0YXJ0LCBzZXRTaGFkb3dTdGFydF0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW3NoYWRvd0VuZCwgc2V0U2hhZG93RW5kXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbY29sc1dpZHRocywgdXBkYXRlQ29sc1dpZHRoc10gPSBSZWFjdC51c2VTdGF0ZShuZXcgTWFwKCkpO1xuICAgIC8vIENvbnZlcnQgbWFwIHRvIG51bWJlciB3aWR0aFxuICAgIGNvbnN0IGNvbHNLZXlzID0gZ2V0Q29sdW1uc0tleShmbGF0dGVuQ29sdW1ucyk7XG4gICAgY29uc3QgcHVyZUNvbFdpZHRocyA9IGNvbHNLZXlzLm1hcChjb2x1bW5LZXkgPT4gY29sc1dpZHRocy5nZXQoY29sdW1uS2V5KSk7XG4gICAgY29uc3QgY29sV2lkdGhzID0gUmVhY3QudXNlTWVtbygoKSA9PiBwdXJlQ29sV2lkdGhzLCBbcHVyZUNvbFdpZHRocy5qb2luKCdfJyldKTtcbiAgICBjb25zdCBzdGlja3lPZmZzZXRzID0gdXNlU3RpY2t5T2Zmc2V0cyhjb2xXaWR0aHMsIGZsYXR0ZW5Db2x1bW5zKTtcbiAgICBjb25zdCBmaXhIZWFkZXIgPSBzY3JvbGwgJiYgdmFsaWRhdGVWYWx1ZShzY3JvbGwueSk7XG4gICAgY29uc3QgaG9yaXpvblNjcm9sbCA9IChzY3JvbGwgJiYgdmFsaWRhdGVWYWx1ZShtZXJnZWRTY3JvbGxYKSkgfHwgQm9vbGVhbihleHBhbmRhYmxlQ29uZmlnLmZpeGVkKTtcbiAgICBjb25zdCBmaXhDb2x1bW4gPSBob3Jpem9uU2Nyb2xsICYmIGZsYXR0ZW5Db2x1bW5zLnNvbWUoKHsgZml4ZWQgfSkgPT4gZml4ZWQpO1xuICAgIC8vIFN0aWNreVxuICAgIGNvbnN0IHN0aWNreVJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICBjb25zdCB7IGlzU3RpY2t5LCBvZmZzZXRIZWFkZXIsIG9mZnNldFN1bW1hcnksIG9mZnNldFNjcm9sbCwgc3RpY2t5Q2xhc3NOYW1lLCBjb250YWluZXIgfSA9IHVzZVN0aWNreShzdGlja3ksIHByZWZpeENscyk7XG4gICAgLy8gRm9vdGVyIChGaXggZm9vdGVyIG11c3QgZml4ZWQgaGVhZGVyKVxuICAgIGNvbnN0IHN1bW1hcnlOb2RlID0gUmVhY3QudXNlTWVtbygoKSA9PiBzdW1tYXJ5ID09PSBudWxsIHx8IHN1bW1hcnkgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN1bW1hcnkobWVyZ2VkRGF0YSksIFtzdW1tYXJ5LCBtZXJnZWREYXRhXSk7XG4gICAgY29uc3QgZml4Rm9vdGVyID0gKGZpeEhlYWRlciB8fCBpc1N0aWNreSkgJiZcbiAgICAgICAgUmVhY3QuaXNWYWxpZEVsZW1lbnQoc3VtbWFyeU5vZGUpICYmXG4gICAgICAgIHN1bW1hcnlOb2RlLnR5cGUgPT09IFN1bW1hcnkgJiZcbiAgICAgICAgc3VtbWFyeU5vZGUucHJvcHMuZml4ZWQ7XG4gICAgLy8gU2Nyb2xsXG4gICAgbGV0IHNjcm9sbFhTdHlsZTtcbiAgICBsZXQgc2Nyb2xsWVN0eWxlO1xuICAgIGxldCBzY3JvbGxUYWJsZVN0eWxlO1xuICAgIGlmIChmaXhIZWFkZXIpIHtcbiAgICAgICAgc2Nyb2xsWVN0eWxlID0ge1xuICAgICAgICAgICAgb3ZlcmZsb3dZOiBoYXNEYXRhID8gJ3Njcm9sbCcgOiAnYXV0bycsXG4gICAgICAgICAgICBtYXhIZWlnaHQ6IHNjcm9sbC55LFxuICAgICAgICB9O1xuICAgIH1cbiAgICBpZiAoaG9yaXpvblNjcm9sbCkge1xuICAgICAgICBzY3JvbGxYU3R5bGUgPSB7IG92ZXJmbG93WDogJ2F1dG8nIH07XG4gICAgICAgIC8vIFdoZW4gbm8gdmVydGljYWwgc2Nyb2xsYmFyLCBzaG91bGQgaGlkZSBpdFxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYW50LWRlc2lnbi9hbnQtZGVzaWduL3B1bGwvMjA3MDVcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FudC1kZXNpZ24vYW50LWRlc2lnbi9pc3N1ZXMvMjE4NzlcbiAgICAgICAgaWYgKCFmaXhIZWFkZXIpIHtcbiAgICAgICAgICAgIHNjcm9sbFlTdHlsZSA9IHsgb3ZlcmZsb3dZOiAnaGlkZGVuJyB9O1xuICAgICAgICB9XG4gICAgICAgIHNjcm9sbFRhYmxlU3R5bGUgPSB7XG4gICAgICAgICAgICB3aWR0aDogbWVyZ2VkU2Nyb2xsWCA9PT0gdHJ1ZSA/ICdhdXRvJyA6IG1lcmdlZFNjcm9sbFgsXG4gICAgICAgICAgICBtaW5XaWR0aDogJzEwMCUnLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBjb25zdCBvbkNvbHVtblJlc2l6ZSA9IFJlYWN0LnVzZUNhbGxiYWNrKChjb2x1bW5LZXksIHdpZHRoKSA9PiB7XG4gICAgICAgIHVwZGF0ZUNvbHNXaWR0aHMod2lkdGhzID0+IHtcbiAgICAgICAgICAgIGlmICh3aWR0aHMuZ2V0KGNvbHVtbktleSkgIT09IHdpZHRoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3V2lkdGhzID0gbmV3IE1hcCh3aWR0aHMpO1xuICAgICAgICAgICAgICAgIG5ld1dpZHRocy5zZXQoY29sdW1uS2V5LCB3aWR0aCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ld1dpZHRocztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB3aWR0aHM7XG4gICAgICAgIH0pO1xuICAgIH0sIFtdKTtcbiAgICBjb25zdCBbc2V0U2Nyb2xsVGFyZ2V0LCBnZXRTY3JvbGxUYXJnZXRdID0gdXNlVGltZW91dExvY2sobnVsbCk7XG4gICAgZnVuY3Rpb24gZm9yY2VTY3JvbGwoc2Nyb2xsTGVmdCwgdGFyZ2V0KSB7XG4gICAgICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB0YXJnZXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHRhcmdldChzY3JvbGxMZWZ0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0YXJnZXQuc2Nyb2xsTGVmdCAhPT0gc2Nyb2xsTGVmdCkge1xuICAgICAgICAgICAgdGFyZ2V0LnNjcm9sbExlZnQgPSBzY3JvbGxMZWZ0O1xuICAgICAgICAgICAgLy8gRGVsYXkgdG8gZm9yY2Ugc2Nyb2xsIHBvc2l0aW9uIGlmIG5vdCBzeW5jXG4gICAgICAgICAgICAvLyByZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbnQtZGVzaWduL2FudC1kZXNpZ24vaXNzdWVzLzM3MTc5XG4gICAgICAgICAgICBpZiAodGFyZ2V0LnNjcm9sbExlZnQgIT09IHNjcm9sbExlZnQpIHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnNjcm9sbExlZnQgPSBzY3JvbGxMZWZ0O1xuICAgICAgICAgICAgICAgIH0sIDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IFtzY3JvbGxJbmZvLCBzZXRTY3JvbGxJbmZvXSA9IFJlYWN0LnVzZVN0YXRlKFswLCAwXSk7XG4gICAgY29uc3Qgb25JbnRlcm5hbFNjcm9sbCA9IHVzZUV2ZW50KCh7IGN1cnJlbnRUYXJnZXQsIHNjcm9sbExlZnQgfSkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IG1lcmdlZFNjcm9sbExlZnQgPSB0eXBlb2Ygc2Nyb2xsTGVmdCA9PT0gJ251bWJlcicgPyBzY3JvbGxMZWZ0IDogY3VycmVudFRhcmdldC5zY3JvbGxMZWZ0O1xuICAgICAgICBjb25zdCBjb21wYXJlVGFyZ2V0ID0gY3VycmVudFRhcmdldCB8fCBFTVBUWV9TQ1JPTExfVEFSR0VUO1xuICAgICAgICBpZiAoIWdldFNjcm9sbFRhcmdldCgpIHx8IGdldFNjcm9sbFRhcmdldCgpID09PSBjb21wYXJlVGFyZ2V0KSB7XG4gICAgICAgICAgICBzZXRTY3JvbGxUYXJnZXQoY29tcGFyZVRhcmdldCk7XG4gICAgICAgICAgICBmb3JjZVNjcm9sbChtZXJnZWRTY3JvbGxMZWZ0LCBzY3JvbGxIZWFkZXJSZWYuY3VycmVudCk7XG4gICAgICAgICAgICBmb3JjZVNjcm9sbChtZXJnZWRTY3JvbGxMZWZ0LCBzY3JvbGxCb2R5UmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgZm9yY2VTY3JvbGwobWVyZ2VkU2Nyb2xsTGVmdCwgc2Nyb2xsU3VtbWFyeVJlZi5jdXJyZW50KTtcbiAgICAgICAgICAgIGZvcmNlU2Nyb2xsKG1lcmdlZFNjcm9sbExlZnQsIChfYSA9IHN0aWNreVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc2V0U2Nyb2xsTGVmdCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbWVhc3VyZVRhcmdldCA9IGN1cnJlbnRUYXJnZXQgfHwgc2Nyb2xsSGVhZGVyUmVmLmN1cnJlbnQ7XG4gICAgICAgIGlmIChtZWFzdXJlVGFyZ2V0KSB7XG4gICAgICAgICAgICBjb25zdCBzY3JvbGxXaWR0aCA9IFxuICAgICAgICAgICAgLy8gU2hvdWxkIHVzZSBtZXJnZWRTY3JvbGxYIGluIHZpcnR1YWwgdGFibGUodXNlSW50ZXJuYWxIb29rcyAmJiB0YWlsb3IgPT09IHRydWUpXG4gICAgICAgICAgICB1c2VJbnRlcm5hbEhvb2tzICYmIHRhaWxvciAmJiB0eXBlb2YgbWVyZ2VkU2Nyb2xsWCA9PT0gJ251bWJlcidcbiAgICAgICAgICAgICAgICA/IG1lcmdlZFNjcm9sbFhcbiAgICAgICAgICAgICAgICA6IG1lYXN1cmVUYXJnZXQuc2Nyb2xsV2lkdGg7XG4gICAgICAgICAgICBjb25zdCBjbGllbnRXaWR0aCA9IG1lYXN1cmVUYXJnZXQuY2xpZW50V2lkdGg7XG4gICAgICAgICAgICBjb25zdCBhYnNTY3JvbGxTdGFydCA9IE1hdGguYWJzKG1lcmdlZFNjcm9sbExlZnQpO1xuICAgICAgICAgICAgc2V0U2Nyb2xsSW5mbyhvcmkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5leHRTY3JvbGxJbmZvID0gW2Fic1Njcm9sbFN0YXJ0LCBzY3JvbGxXaWR0aCAtIGNsaWVudFdpZHRoXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNFcXVhbChvcmksIG5leHRTY3JvbGxJbmZvKSA/IG9yaSA6IG5leHRTY3JvbGxJbmZvO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBUaGVyZSBpcyBubyBzcGFjZSB0byBzY3JvbGxcbiAgICAgICAgICAgIGlmIChzY3JvbGxXaWR0aCA9PT0gY2xpZW50V2lkdGgpIHtcbiAgICAgICAgICAgICAgICBzZXRTaGFkb3dTdGFydChmYWxzZSk7XG4gICAgICAgICAgICAgICAgc2V0U2hhZG93RW5kKGZhbHNlKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXRTaGFkb3dTdGFydChhYnNTY3JvbGxTdGFydCA+IDApO1xuICAgICAgICAgICAgc2V0U2hhZG93RW5kKGFic1Njcm9sbFN0YXJ0IDwgc2Nyb2xsV2lkdGggLSBjbGllbnRXaWR0aCAtIDEpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3Qgb25Cb2R5U2Nyb2xsID0gdXNlRXZlbnQoKGUpID0+IHtcbiAgICAgICAgb25JbnRlcm5hbFNjcm9sbChlKTtcbiAgICAgICAgb25TY3JvbGwgPT09IG51bGwgfHwgb25TY3JvbGwgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uU2Nyb2xsKGUpO1xuICAgIH0pO1xuICAgIGNvbnN0IHRyaWdnZXJPblNjcm9sbCA9ICgpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoaG9yaXpvblNjcm9sbCAmJiBzY3JvbGxCb2R5UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIG9uSW50ZXJuYWxTY3JvbGwoe1xuICAgICAgICAgICAgICAgIGN1cnJlbnRUYXJnZXQ6IGdldERPTShzY3JvbGxCb2R5UmVmLmN1cnJlbnQpLFxuICAgICAgICAgICAgICAgIHNjcm9sbExlZnQ6IChfYSA9IHNjcm9sbEJvZHlSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnNjcm9sbExlZnQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHNldFNoYWRvd1N0YXJ0KGZhbHNlKTtcbiAgICAgICAgICAgIHNldFNoYWRvd0VuZChmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IG9uRnVsbFRhYmxlUmVzaXplID0gKG9mZnNldFdpZHRoKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICAoX2EgPSBzdGlja3lSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNoZWNrU2Nyb2xsQmFyVmlzaWJsZSgpO1xuICAgICAgICBsZXQgbWVyZ2VkV2lkdGggPSAoX2MgPSBvZmZzZXRXaWR0aCAhPT0gbnVsbCAmJiBvZmZzZXRXaWR0aCAhPT0gdm9pZCAwID8gb2Zmc2V0V2lkdGggOiAoX2IgPSBmdWxsVGFibGVSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLm9mZnNldFdpZHRoKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAwO1xuICAgICAgICBpZiAodXNlSW50ZXJuYWxIb29rcyAmJiBnZXRDb250YWluZXJXaWR0aCAmJiBmdWxsVGFibGVSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgbWVyZ2VkV2lkdGggPSBnZXRDb250YWluZXJXaWR0aChmdWxsVGFibGVSZWYuY3VycmVudCwgbWVyZ2VkV2lkdGgpIHx8IG1lcmdlZFdpZHRoO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtZXJnZWRXaWR0aCAhPT0gY29tcG9uZW50V2lkdGgpIHtcbiAgICAgICAgICAgIHRyaWdnZXJPblNjcm9sbCgpO1xuICAgICAgICAgICAgc2V0Q29tcG9uZW50V2lkdGgobWVyZ2VkV2lkdGgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvLyBmaXggaHR0cHM6Ly9naXRodWIuY29tL2FudC1kZXNpZ24vYW50LWRlc2lnbi9pc3N1ZXMvNDkyNzlcbiAgICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoaG9yaXpvblNjcm9sbCkge1xuICAgICAgICAgICAgb25GdWxsVGFibGVSZXNpemUoKTtcbiAgICAgICAgfVxuICAgIH0sIFtob3Jpem9uU2Nyb2xsXSk7XG4gICAgLy8gU3luYyBzY3JvbGwgYmFyIHdoZW4gaW5pdCBvciBgaG9yaXpvblNjcm9sbGAsIGBkYXRhYCBhbmQgYGNvbHVtbnMubGVuZ3RoYCBjaGFuZ2VkXG4gICAgY29uc3QgbW91bnRlZCA9IFJlYWN0LnVzZVJlZihmYWxzZSk7XG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgLy8gb25GdWxsVGFibGVSZXNpemUgd2lsbCBiZSB0cmlnZ2VyIG9uY2Ugd2hlbiBSZXNpemVPYnNlcnZlciBpcyBtb3VudGVkXG4gICAgICAgIC8vIFRoaXMgd2lsbCByZWR1Y2Ugb25lIGR1cGxpY2F0ZWQgdHJpZ2dlck9uU2Nyb2xsIHRpbWVcbiAgICAgICAgaWYgKG1vdW50ZWQuY3VycmVudCkge1xuICAgICAgICAgICAgdHJpZ2dlck9uU2Nyb2xsKCk7XG4gICAgICAgIH1cbiAgICB9LCBbaG9yaXpvblNjcm9sbCwgZGF0YSwgY29sdW1ucy5sZW5ndGhdKTtcbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBtb3VudGVkLmN1cnJlbnQgPSB0cnVlO1xuICAgIH0sIFtdKTtcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT0gRWZmZWN0cyA9PT09PT09PT09PT09PT09PT09PT09XG4gICAgY29uc3QgW3Njcm9sbGJhclNpemUsIHNldFNjcm9sbGJhclNpemVdID0gUmVhY3QudXNlU3RhdGUoMCk7XG4gICAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKCF0YWlsb3IgfHwgIXVzZUludGVybmFsSG9va3MpIHtcbiAgICAgICAgICAgIGlmIChzY3JvbGxCb2R5UmVmLmN1cnJlbnQgaW5zdGFuY2VvZiBFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgc2V0U2Nyb2xsYmFyU2l6ZShnZXRUYXJnZXRTY3JvbGxCYXJTaXplKHNjcm9sbEJvZHlSZWYuY3VycmVudCkud2lkdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc2V0U2Nyb2xsYmFyU2l6ZShnZXRUYXJnZXRTY3JvbGxCYXJTaXplKHNjcm9sbEJvZHlDb250YWluZXJSZWYuY3VycmVudCkud2lkdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwgW10pO1xuICAgIC8vID09PT09PT09PT09PT09PT09PSBJTlRFUk5BTCBIT09LUyA9PT09PT09PT09PT09PT09PT1cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAodXNlSW50ZXJuYWxIb29rcyAmJiBpbnRlcm5hbFJlZnMpIHtcbiAgICAgICAgICAgIGludGVybmFsUmVmcy5ib2R5LmN1cnJlbnQgPSBzY3JvbGxCb2R5UmVmLmN1cnJlbnQ7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyA9PSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT1cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09IFJlbmRlcjogRnVuYyA9PT09PT09PT09PT09PT09PT09XG4gICAgY29uc3QgcmVuZGVyRml4ZWRIZWFkZXJUYWJsZSA9IFJlYWN0LnVzZUNhbGxiYWNrKGZpeGVkSG9sZGVyUGFzc1Byb3BzID0+IChfanN4cyhfRnJhZ21lbnQsIHsgY2hpbGRyZW46IFtfanN4KEhlYWRlciwgT2JqZWN0LmFzc2lnbih7fSwgZml4ZWRIb2xkZXJQYXNzUHJvcHMpKSwgZml4Rm9vdGVyID09PSAndG9wJyAmJiBfanN4KEZvb3RlciwgT2JqZWN0LmFzc2lnbih7fSwgZml4ZWRIb2xkZXJQYXNzUHJvcHMsIHsgY2hpbGRyZW46IHN1bW1hcnlOb2RlIH0pKV0gfSkpLCBbZml4Rm9vdGVyLCBzdW1tYXJ5Tm9kZV0pO1xuICAgIGNvbnN0IHJlbmRlckZpeGVkRm9vdGVyVGFibGUgPSBSZWFjdC51c2VDYWxsYmFjayhmaXhlZEhvbGRlclBhc3NQcm9wcyA9PiBfanN4KEZvb3RlciwgT2JqZWN0LmFzc2lnbih7fSwgZml4ZWRIb2xkZXJQYXNzUHJvcHMsIHsgY2hpbGRyZW46IHN1bW1hcnlOb2RlIH0pKSwgW3N1bW1hcnlOb2RlXSk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PSBSZW5kZXI6IE5vZGUgPT09PT09PT09PT09PT09PT09PVxuICAgIGNvbnN0IFRhYmxlQ29tcG9uZW50ID0gZ2V0Q29tcG9uZW50KFsndGFibGUnXSwgJ3RhYmxlJyk7XG4gICAgLy8gVGFibGUgbGF5b3V0XG4gICAgY29uc3QgbWVyZ2VkVGFibGVMYXlvdXQgPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICAgICAgaWYgKHRhYmxlTGF5b3V0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGFibGVMYXlvdXQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FudC1kZXNpZ24vYW50LWRlc2lnbi9pc3N1ZXMvMjUyMjdcbiAgICAgICAgLy8gV2hlbiBzY3JvbGwueCBpcyBtYXgtY29udGVudCwgbm8gbmVlZCB0byBmaXggdGFibGUgbGF5b3V0XG4gICAgICAgIC8vIGl0J3Mgd2lkdGggc2hvdWxkIHN0cmV0Y2ggb3V0IHRvIGZpdCBjb250ZW50XG4gICAgICAgIGlmIChmaXhDb2x1bW4pIHtcbiAgICAgICAgICAgIHJldHVybiBtZXJnZWRTY3JvbGxYID09PSAnbWF4LWNvbnRlbnQnID8gJ2F1dG8nIDogJ2ZpeGVkJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoZml4SGVhZGVyIHx8IGlzU3RpY2t5IHx8IGZsYXR0ZW5Db2x1bW5zLnNvbWUoKHsgZWxsaXBzaXMgfSkgPT4gZWxsaXBzaXMpKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2ZpeGVkJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJ2F1dG8nO1xuICAgIH0sIFtmaXhIZWFkZXIsIGZpeENvbHVtbiwgZmxhdHRlbkNvbHVtbnMsIHRhYmxlTGF5b3V0LCBpc1N0aWNreV0pO1xuICAgIGxldCBncm91cFRhYmxlTm9kZTtcbiAgICAvLyBIZWFkZXIgcHJvcHNcbiAgICBjb25zdCBoZWFkZXJQcm9wcyA9IHtcbiAgICAgICAgY29sV2lkdGhzLFxuICAgICAgICBjb2x1bUNvdW50OiBmbGF0dGVuQ29sdW1ucy5sZW5ndGgsXG4gICAgICAgIHN0aWNreU9mZnNldHMsXG4gICAgICAgIG9uSGVhZGVyUm93LFxuICAgICAgICBmaXhIZWFkZXIsXG4gICAgICAgIHNjcm9sbCxcbiAgICB9O1xuICAgIC8vIEVtcHR5XG4gICAgY29uc3QgZW1wdHlOb2RlID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGlmIChoYXNEYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIGVtcHR5VGV4dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIGVtcHR5VGV4dCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlbXB0eVRleHQ7XG4gICAgfSwgW2hhc0RhdGEsIGVtcHR5VGV4dF0pO1xuICAgIC8vIEJvZHlcbiAgICBjb25zdCBib2R5VGFibGUgPSAoX2pzeChCb2R5LCB7IGRhdGE6IG1lcmdlZERhdGEsIG1lYXN1cmVDb2x1bW5XaWR0aDogZml4SGVhZGVyIHx8IGhvcml6b25TY3JvbGwgfHwgaXNTdGlja3kgfSkpO1xuICAgIGNvbnN0IGJvZHlDb2xHcm91cCA9IChfanN4KENvbEdyb3VwLCB7IGNvbFdpZHRoczogZmxhdHRlbkNvbHVtbnMubWFwKCh7IHdpZHRoIH0pID0+IHdpZHRoKSwgY29sdW1uczogZmxhdHRlbkNvbHVtbnMgfSkpO1xuICAgIGNvbnN0IGNhcHRpb25FbGVtZW50ID0gY2FwdGlvbiAhPT0gbnVsbCAmJiBjYXB0aW9uICE9PSB1bmRlZmluZWQgPyAoX2pzeChcImNhcHRpb25cIiwgeyBjbGFzc05hbWU6IGAke3ByZWZpeENsc30tY2FwdGlvbmAsIGNoaWxkcmVuOiBjYXB0aW9uIH0pKSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBkYXRhUHJvcHMgPSBwaWNrQXR0cnMocHJvcHMsIHsgZGF0YTogdHJ1ZSB9KTtcbiAgICBjb25zdCBhcmlhUHJvcHMgPSBwaWNrQXR0cnMocHJvcHMsIHsgYXJpYTogdHJ1ZSB9KTtcbiAgICBpZiAoZml4SGVhZGVyIHx8IGlzU3RpY2t5KSB7XG4gICAgICAgIC8vID4+Pj4+PiBGaXhlZCBIZWFkZXJcbiAgICAgICAgbGV0IGJvZHlDb250ZW50O1xuICAgICAgICBpZiAodHlwZW9mIGN1c3RvbWl6ZVNjcm9sbEJvZHkgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGJvZHlDb250ZW50ID0gY3VzdG9taXplU2Nyb2xsQm9keShtZXJnZWREYXRhLCB7XG4gICAgICAgICAgICAgICAgc2Nyb2xsYmFyU2l6ZSxcbiAgICAgICAgICAgICAgICByZWY6IHNjcm9sbEJvZHlSZWYsXG4gICAgICAgICAgICAgICAgb25TY3JvbGw6IG9uSW50ZXJuYWxTY3JvbGwsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGhlYWRlclByb3BzLmNvbFdpZHRocyA9IGZsYXR0ZW5Db2x1bW5zLm1hcCgoeyB3aWR0aCB9LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbFdpZHRoID0gaW5kZXggPT09IGZsYXR0ZW5Db2x1bW5zLmxlbmd0aCAtIDEgPyB3aWR0aCAtIHNjcm9sbGJhclNpemUgOiB3aWR0aDtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNvbFdpZHRoID09PSAnbnVtYmVyJyAmJiAhTnVtYmVyLmlzTmFOKGNvbFdpZHRoKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29sV2lkdGg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIHdhcm5pbmcocHJvcHMuY29sdW1ucy5sZW5ndGggPT09IDAsICdXaGVuIHVzZSBgY29tcG9uZW50cy5ib2R5YCB3aXRoIHJlbmRlciBwcm9wcy4gRWFjaCBjb2x1bW4gc2hvdWxkIGhhdmUgYSBmaXhlZCBgd2lkdGhgIHZhbHVlLicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgYm9keUNvbnRlbnQgPSAoX2pzeChcImRpdlwiLCB7IHN0eWxlOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHNjcm9sbFhTdHlsZSksIHNjcm9sbFlTdHlsZSksIG9uU2Nyb2xsOiBvbkJvZHlTY3JvbGwsIHJlZjogc2Nyb2xsQm9keVJlZiwgY2xhc3NOYW1lOiBgJHtwcmVmaXhDbHN9LWJvZHlgLCBjaGlsZHJlbjogX2pzeHMoVGFibGVDb21wb25lbnQsIE9iamVjdC5hc3NpZ24oeyBzdHlsZTogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBzY3JvbGxUYWJsZVN0eWxlKSwgeyB0YWJsZUxheW91dDogbWVyZ2VkVGFibGVMYXlvdXQgfSkgfSwgYXJpYVByb3BzLCB7IGNoaWxkcmVuOiBbY2FwdGlvbkVsZW1lbnQsIGJvZHlDb2xHcm91cCwgYm9keVRhYmxlLCAhZml4Rm9vdGVyICYmIHN1bW1hcnlOb2RlICYmIChfanN4KEZvb3RlciwgeyBzdGlja3lPZmZzZXRzOiBzdGlja3lPZmZzZXRzLCBmbGF0dGVuQ29sdW1uczogZmxhdHRlbkNvbHVtbnMsIGNoaWxkcmVuOiBzdW1tYXJ5Tm9kZSB9KSldIH0pKSB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRml4ZWQgaG9sZGVyIHNoYXJlIHRoZSBwcm9wc1xuICAgICAgICBjb25zdCBmaXhlZEhvbGRlclByb3BzID0gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oeyBub0RhdGE6ICFtZXJnZWREYXRhLmxlbmd0aCwgbWF4Q29udGVudFNjcm9sbDogaG9yaXpvblNjcm9sbCAmJiBtZXJnZWRTY3JvbGxYID09PSAnbWF4LWNvbnRlbnQnIH0sIGhlYWRlclByb3BzKSwgY29sdW1uQ29udGV4dCksIHsgZGlyZWN0aW9uLFxuICAgICAgICAgICAgc3RpY2t5Q2xhc3NOYW1lLCBzY3JvbGxYOiBtZXJnZWRTY3JvbGxYLCB0YWJsZUxheW91dDogbWVyZ2VkVGFibGVMYXlvdXQsIG9uU2Nyb2xsOiBvbkludGVybmFsU2Nyb2xsIH0pO1xuICAgICAgICBncm91cFRhYmxlTm9kZSA9IChfanN4cyhfRnJhZ21lbnQsIHsgY2hpbGRyZW46IFtzaG93SGVhZGVyICE9PSBmYWxzZSAmJiAoX2pzeChGaXhlZEhvbGRlciwgT2JqZWN0LmFzc2lnbih7fSwgZml4ZWRIb2xkZXJQcm9wcywgeyBzdGlja3lUb3BPZmZzZXQ6IG9mZnNldEhlYWRlciwgY2xhc3NOYW1lOiBgJHtwcmVmaXhDbHN9LWhlYWRlcmAsIHJlZjogc2Nyb2xsSGVhZGVyUmVmLCBjb2xHcm91cDogYm9keUNvbEdyb3VwLCBjaGlsZHJlbjogcmVuZGVyRml4ZWRIZWFkZXJUYWJsZSB9KSkpLCBib2R5Q29udGVudCwgZml4Rm9vdGVyICYmIGZpeEZvb3RlciAhPT0gJ3RvcCcgJiYgKF9qc3goRml4ZWRIb2xkZXIsIE9iamVjdC5hc3NpZ24oe30sIGZpeGVkSG9sZGVyUHJvcHMsIHsgc3RpY2t5Qm90dG9tT2Zmc2V0OiBvZmZzZXRTdW1tYXJ5LCBjbGFzc05hbWU6IGAke3ByZWZpeENsc30tc3VtbWFyeWAsIHJlZjogc2Nyb2xsU3VtbWFyeVJlZiwgY29sR3JvdXA6IGJvZHlDb2xHcm91cCwgY2hpbGRyZW46IHJlbmRlckZpeGVkRm9vdGVyVGFibGUgfSkpKSwgaXNTdGlja3kgJiYgc2Nyb2xsQm9keVJlZi5jdXJyZW50ICYmIHNjcm9sbEJvZHlSZWYuY3VycmVudCBpbnN0YW5jZW9mIEVsZW1lbnQgJiYgKF9qc3goU3RpY2t5U2Nyb2xsQmFyLCB7IHJlZjogc3RpY2t5UmVmLCBvZmZzZXRTY3JvbGw6IG9mZnNldFNjcm9sbCwgc2Nyb2xsQm9keVJlZjogc2Nyb2xsQm9keVJlZiwgb25TY3JvbGw6IG9uSW50ZXJuYWxTY3JvbGwsIGNvbnRhaW5lcjogY29udGFpbmVyLCBkaXJlY3Rpb246IGRpcmVjdGlvbiB9KSldIH0pKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIC8vID4+Pj4+PiBVbmlxdWUgdGFibGVcbiAgICAgICAgZ3JvdXBUYWJsZU5vZGUgPSAoX2pzeChcImRpdlwiLCB7IHN0eWxlOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgc2Nyb2xsWFN0eWxlKSwgc2Nyb2xsWVN0eWxlKSwgc3R5bGVzID09PSBudWxsIHx8IHN0eWxlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3R5bGVzLmNvbnRlbnQpLCBjbGFzc05hbWU6IGNsc3goYCR7cHJlZml4Q2xzfS1jb250ZW50YCwgY2xhc3NOYW1lcyA9PT0gbnVsbCB8fCBjbGFzc05hbWVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjbGFzc05hbWVzLmNvbnRlbnQpLCBvblNjcm9sbDogb25JbnRlcm5hbFNjcm9sbCwgcmVmOiBzY3JvbGxCb2R5UmVmLCBjaGlsZHJlbjogX2pzeHMoVGFibGVDb21wb25lbnQsIE9iamVjdC5hc3NpZ24oeyBzdHlsZTogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBzY3JvbGxUYWJsZVN0eWxlKSwgeyB0YWJsZUxheW91dDogbWVyZ2VkVGFibGVMYXlvdXQgfSkgfSwgYXJpYVByb3BzLCB7IGNoaWxkcmVuOiBbY2FwdGlvbkVsZW1lbnQsIGJvZHlDb2xHcm91cCwgc2hvd0hlYWRlciAhPT0gZmFsc2UgJiYgX2pzeChIZWFkZXIsIE9iamVjdC5hc3NpZ24oe30sIGhlYWRlclByb3BzLCBjb2x1bW5Db250ZXh0KSksIGJvZHlUYWJsZSwgc3VtbWFyeU5vZGUgJiYgKF9qc3goRm9vdGVyLCB7IHN0aWNreU9mZnNldHM6IHN0aWNreU9mZnNldHMsIGZsYXR0ZW5Db2x1bW5zOiBmbGF0dGVuQ29sdW1ucywgY2hpbGRyZW46IHN1bW1hcnlOb2RlIH0pKV0gfSkpIH0pKTtcbiAgICB9XG4gICAgY29uc3QgdGFibGVTdHlsZSA9IE9iamVjdC5hc3NpZ24oe30sIHN0eWxlKTtcbiAgICAvLyBBZGQgY3NzIHZhciBmb3Igc3RpY2t5IGhlYWRlciBgekluZGV4YCBjYWxjXG4gICAgaWYgKGlzU3RpY2t5KSB7XG4gICAgICAgIHRhYmxlU3R5bGVbJy0tY29sdW1ucy1jb3VudCddID0gZmxhdHRlbkNvbHVtbnMubGVuZ3RoO1xuICAgIH1cbiAgICBsZXQgZnVsbFRhYmxlID0gKF9qc3hzKFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oeyBjbGFzc05hbWU6IGNsc3gocHJlZml4Q2xzLCBjbGFzc05hbWUsIHtcbiAgICAgICAgICAgIFtgJHtwcmVmaXhDbHN9LXJ0bGBdOiBkaXJlY3Rpb24gPT09ICdydGwnLFxuICAgICAgICAgICAgW2Ake3ByZWZpeENsc30tZml4LXN0YXJ0LXNoYWRvd2BdOiBob3Jpem9uU2Nyb2xsLFxuICAgICAgICAgICAgW2Ake3ByZWZpeENsc30tZml4LWVuZC1zaGFkb3dgXTogaG9yaXpvblNjcm9sbCxcbiAgICAgICAgICAgIFtgJHtwcmVmaXhDbHN9LWZpeC1zdGFydC1zaGFkb3ctc2hvd2BdOiBob3Jpem9uU2Nyb2xsICYmIHNoYWRvd1N0YXJ0LFxuICAgICAgICAgICAgW2Ake3ByZWZpeENsc30tZml4LWVuZC1zaGFkb3ctc2hvd2BdOiBob3Jpem9uU2Nyb2xsICYmIHNoYWRvd0VuZCxcbiAgICAgICAgICAgIFtgJHtwcmVmaXhDbHN9LWxheW91dC1maXhlZGBdOiB0YWJsZUxheW91dCA9PT0gJ2ZpeGVkJyxcbiAgICAgICAgICAgIFtgJHtwcmVmaXhDbHN9LWZpeGVkLWhlYWRlcmBdOiBmaXhIZWFkZXIsXG4gICAgICAgICAgICAvKiogTm8gdXNlZCBidXQgZm9yIGNvbXBhdGlibGUgKi9cbiAgICAgICAgICAgIFtgJHtwcmVmaXhDbHN9LWZpeGVkLWNvbHVtbmBdOiBmaXhDb2x1bW4sXG4gICAgICAgICAgICBbYCR7cHJlZml4Q2xzfS1zY3JvbGwtaG9yaXpvbnRhbGBdOiBob3Jpem9uU2Nyb2xsLFxuICAgICAgICAgICAgW2Ake3ByZWZpeENsc30taGFzLWZpeC1zdGFydGBdOiAoX2EgPSBmbGF0dGVuQ29sdW1uc1swXSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZpeGVkLFxuICAgICAgICAgICAgW2Ake3ByZWZpeENsc30taGFzLWZpeC1lbmRgXTogKChfYiA9IGZsYXR0ZW5Db2x1bW5zW2ZsYXR0ZW5Db2x1bW5zLmxlbmd0aCAtIDFdKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuZml4ZWQpID09PSAnZW5kJyxcbiAgICAgICAgfSksIHN0eWxlOiB0YWJsZVN0eWxlLCBpZDogaWQsIHJlZjogZnVsbFRhYmxlUmVmIH0sIGRhdGFQcm9wcywgeyBjaGlsZHJlbjogW3RpdGxlICYmIChfanN4KFBhbmVsLCB7IGNsYXNzTmFtZTogY2xzeChgJHtwcmVmaXhDbHN9LXRpdGxlYCwgY2xhc3NOYW1lcyA9PT0gbnVsbCB8fCBjbGFzc05hbWVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjbGFzc05hbWVzLnRpdGxlKSwgc3R5bGU6IHN0eWxlcyA9PT0gbnVsbCB8fCBzdHlsZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0eWxlcy50aXRsZSwgY2hpbGRyZW46IHRpdGxlKG1lcmdlZERhdGEpIH0pKSwgX2pzeChcImRpdlwiLCB7IHJlZjogc2Nyb2xsQm9keUNvbnRhaW5lclJlZiwgY2xhc3NOYW1lOiBjbHN4KGAke3ByZWZpeENsc30tY29udGFpbmVyYCwgY2xhc3NOYW1lcyA9PT0gbnVsbCB8fCBjbGFzc05hbWVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjbGFzc05hbWVzLnNlY3Rpb24pLCBzdHlsZTogc3R5bGVzID09PSBudWxsIHx8IHN0eWxlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3R5bGVzLnNlY3Rpb24sIGNoaWxkcmVuOiBncm91cFRhYmxlTm9kZSB9KSwgZm9vdGVyICYmIChfanN4KFBhbmVsLCB7IGNsYXNzTmFtZTogY2xzeChgJHtwcmVmaXhDbHN9LWZvb3RlcmAsIGNsYXNzTmFtZXMgPT09IG51bGwgfHwgY2xhc3NOYW1lcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY2xhc3NOYW1lcy5mb290ZXIpLCBzdHlsZTogc3R5bGVzID09PSBudWxsIHx8IHN0eWxlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3R5bGVzLmZvb3RlciwgY2hpbGRyZW46IGZvb3RlcihtZXJnZWREYXRhKSB9KSldIH0pKSk7XG4gICAgaWYgKGhvcml6b25TY3JvbGwpIHtcbiAgICAgICAgZnVsbFRhYmxlID0gKF9qc3goUmVzaXplT2JzZXJ2ZXIsIHsgb25SZXNpemU6ICh7IG9mZnNldFdpZHRoIH0pID0+IG9uRnVsbFRhYmxlUmVzaXplKG9mZnNldFdpZHRoKSwgY2hpbGRyZW46IGZ1bGxUYWJsZSB9KSk7XG4gICAgfVxuICAgIGNvbnN0IGZpeGVkSW5mb0xpc3QgPSB1c2VGaXhlZEluZm8oZmxhdHRlbkNvbHVtbnMsIHN0aWNreU9mZnNldHMpO1xuICAgIGNvbnN0IFRhYmxlQ29udGV4dFZhbHVlID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgICAgICAvLyBTY3JvbGxcbiAgICAgICAgc2Nyb2xsWDogbWVyZ2VkU2Nyb2xsWCxcbiAgICAgICAgc2Nyb2xsSW5mbyxcbiAgICAgICAgY2xhc3NOYW1lcyxcbiAgICAgICAgc3R5bGVzLFxuICAgICAgICAvLyBUYWJsZVxuICAgICAgICBwcmVmaXhDbHMsXG4gICAgICAgIGdldENvbXBvbmVudCxcbiAgICAgICAgc2Nyb2xsYmFyU2l6ZSxcbiAgICAgICAgZGlyZWN0aW9uLFxuICAgICAgICBmaXhlZEluZm9MaXN0LFxuICAgICAgICBpc1N0aWNreSxcbiAgICAgICAgY29tcG9uZW50V2lkdGgsXG4gICAgICAgIGZpeEhlYWRlcixcbiAgICAgICAgZml4Q29sdW1uLFxuICAgICAgICBob3Jpem9uU2Nyb2xsLFxuICAgICAgICAvLyBCb2R5XG4gICAgICAgIHRhYmxlTGF5b3V0OiBtZXJnZWRUYWJsZUxheW91dCxcbiAgICAgICAgcm93Q2xhc3NOYW1lLFxuICAgICAgICBleHBhbmRlZFJvd0NsYXNzTmFtZTogZXhwYW5kYWJsZUNvbmZpZy5leHBhbmRlZFJvd0NsYXNzTmFtZSxcbiAgICAgICAgZXhwYW5kSWNvbjogbWVyZ2VkRXhwYW5kSWNvbixcbiAgICAgICAgZXhwYW5kYWJsZVR5cGUsXG4gICAgICAgIGV4cGFuZFJvd0J5Q2xpY2s6IGV4cGFuZGFibGVDb25maWcuZXhwYW5kUm93QnlDbGljayxcbiAgICAgICAgZXhwYW5kZWRSb3dSZW5kZXI6IGV4cGFuZGFibGVDb25maWcuZXhwYW5kZWRSb3dSZW5kZXIsXG4gICAgICAgIGV4cGFuZGVkUm93T2Zmc2V0OiBleHBhbmRhYmxlQ29uZmlnLmV4cGFuZGVkUm93T2Zmc2V0LFxuICAgICAgICBvblRyaWdnZXJFeHBhbmQsXG4gICAgICAgIGV4cGFuZEljb25Db2x1bW5JbmRleDogZXhwYW5kYWJsZUNvbmZpZy5leHBhbmRJY29uQ29sdW1uSW5kZXgsXG4gICAgICAgIGluZGVudFNpemU6IGV4cGFuZGFibGVDb25maWcuaW5kZW50U2l6ZSxcbiAgICAgICAgYWxsQ29sdW1uc0ZpeGVkTGVmdDogZmxhdHRlbkNvbHVtbnMuZXZlcnkoY29sID0+IGNvbC5maXhlZCA9PT0gJ3N0YXJ0JyksXG4gICAgICAgIGVtcHR5Tm9kZSxcbiAgICAgICAgLy8gQ29sdW1uXG4gICAgICAgIGNvbHVtbnMsXG4gICAgICAgIGZsYXR0ZW5Db2x1bW5zLFxuICAgICAgICBvbkNvbHVtblJlc2l6ZSxcbiAgICAgICAgY29sV2lkdGhzLFxuICAgICAgICAvLyBSb3dcbiAgICAgICAgaG92ZXJTdGFydFJvdzogc3RhcnRSb3csXG4gICAgICAgIGhvdmVyRW5kUm93OiBlbmRSb3csXG4gICAgICAgIG9uSG92ZXIsXG4gICAgICAgIHJvd0V4cGFuZGFibGU6IGV4cGFuZGFibGVDb25maWcucm93RXhwYW5kYWJsZSxcbiAgICAgICAgb25Sb3csXG4gICAgICAgIGdldFJvd0tleSxcbiAgICAgICAgZXhwYW5kZWRLZXlzOiBtZXJnZWRFeHBhbmRlZEtleXMsXG4gICAgICAgIGNoaWxkcmVuQ29sdW1uTmFtZTogbWVyZ2VkQ2hpbGRyZW5Db2x1bW5OYW1lLFxuICAgICAgICByb3dIb3ZlcmFibGUsXG4gICAgICAgIC8vIE1lYXN1cmUgUm93XG4gICAgICAgIG1lYXN1cmVSb3dSZW5kZXIsXG4gICAgfSksIFtcbiAgICAgICAgLy8gU2Nyb2xsXG4gICAgICAgIG1lcmdlZFNjcm9sbFgsXG4gICAgICAgIHNjcm9sbEluZm8sXG4gICAgICAgIGNsYXNzTmFtZXMsXG4gICAgICAgIHN0eWxlcyxcbiAgICAgICAgLy8gVGFibGVcbiAgICAgICAgcHJlZml4Q2xzLFxuICAgICAgICBnZXRDb21wb25lbnQsXG4gICAgICAgIHNjcm9sbGJhclNpemUsXG4gICAgICAgIGRpcmVjdGlvbixcbiAgICAgICAgZml4ZWRJbmZvTGlzdCxcbiAgICAgICAgaXNTdGlja3ksXG4gICAgICAgIGNvbXBvbmVudFdpZHRoLFxuICAgICAgICBmaXhIZWFkZXIsXG4gICAgICAgIGZpeENvbHVtbixcbiAgICAgICAgaG9yaXpvblNjcm9sbCxcbiAgICAgICAgLy8gQm9keVxuICAgICAgICBtZXJnZWRUYWJsZUxheW91dCxcbiAgICAgICAgcm93Q2xhc3NOYW1lLFxuICAgICAgICBleHBhbmRhYmxlQ29uZmlnLmV4cGFuZGVkUm93Q2xhc3NOYW1lLFxuICAgICAgICBtZXJnZWRFeHBhbmRJY29uLFxuICAgICAgICBleHBhbmRhYmxlVHlwZSxcbiAgICAgICAgZXhwYW5kYWJsZUNvbmZpZy5leHBhbmRSb3dCeUNsaWNrLFxuICAgICAgICBleHBhbmRhYmxlQ29uZmlnLmV4cGFuZGVkUm93UmVuZGVyLFxuICAgICAgICBleHBhbmRhYmxlQ29uZmlnLmV4cGFuZGVkUm93T2Zmc2V0LFxuICAgICAgICBvblRyaWdnZXJFeHBhbmQsXG4gICAgICAgIGV4cGFuZGFibGVDb25maWcuZXhwYW5kSWNvbkNvbHVtbkluZGV4LFxuICAgICAgICBleHBhbmRhYmxlQ29uZmlnLmluZGVudFNpemUsXG4gICAgICAgIGVtcHR5Tm9kZSxcbiAgICAgICAgLy8gQ29sdW1uXG4gICAgICAgIGNvbHVtbnMsXG4gICAgICAgIGZsYXR0ZW5Db2x1bW5zLFxuICAgICAgICBvbkNvbHVtblJlc2l6ZSxcbiAgICAgICAgY29sV2lkdGhzLFxuICAgICAgICAvLyBSb3dcbiAgICAgICAgc3RhcnRSb3csXG4gICAgICAgIGVuZFJvdyxcbiAgICAgICAgb25Ib3ZlcixcbiAgICAgICAgZXhwYW5kYWJsZUNvbmZpZy5yb3dFeHBhbmRhYmxlLFxuICAgICAgICBvblJvdyxcbiAgICAgICAgZ2V0Um93S2V5LFxuICAgICAgICBtZXJnZWRFeHBhbmRlZEtleXMsXG4gICAgICAgIG1lcmdlZENoaWxkcmVuQ29sdW1uTmFtZSxcbiAgICAgICAgcm93SG92ZXJhYmxlLFxuICAgICAgICBtZWFzdXJlUm93UmVuZGVyLFxuICAgIF0pO1xuICAgIHJldHVybiBfanN4KFRhYmxlQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogVGFibGVDb250ZXh0VmFsdWUsIGNoaWxkcmVuOiBmdWxsVGFibGUgfSk7XG59O1xuY29uc3QgUmVmVGFibGUgPSBSZWFjdC5mb3J3YXJkUmVmKFRhYmxlKTtcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgUmVmVGFibGUuZGlzcGxheU5hbWUgPSAnVGFibGUnO1xufVxuZXhwb3J0IGNvbnN0IGdlblRhYmxlID0gKHNob3VsZFRyaWdnZXJSZW5kZXIpID0+IHtcbiAgICByZXR1cm4gbWFrZUltbXV0YWJsZShSZWZUYWJsZSwgc2hvdWxkVHJpZ2dlclJlbmRlcik7XG59O1xuY29uc3QgSW1tdXRhYmxlVGFibGUgPSBnZW5UYWJsZSgpO1xuSW1tdXRhYmxlVGFibGUuRVhQQU5EX0NPTFVNTiA9IEVYUEFORF9DT0xVTU47XG5JbW11dGFibGVUYWJsZS5JTlRFUk5BTF9IT09LUyA9IElOVEVSTkFMX0hPT0tTO1xuSW1tdXRhYmxlVGFibGUuQ29sdW1uID0gQ29sdW1uO1xuSW1tdXRhYmxlVGFibGUuQ29sdW1uR3JvdXAgPSBDb2x1bW5Hcm91cDtcbkltbXV0YWJsZVRhYmxlLlN1bW1hcnkgPSBGb290ZXJDb21wb25lbnRzO1xuZXhwb3J0IGRlZmF1bHQgSW1tdXRhYmxlVGFibGU7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|
|
686
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvaW50ZXJuYWwva2VybmVsL1RhYmxlLmpzIiwiY29tcG9uZW50cy9UYWJsZS9pbnRlcm5hbC9zcmMvY29tcG9uZW50cy9UYWJsZS9pbnRlcm5hbC9rZXJuZWwvVGFibGUudHN4Il0sIm5hbWVzIjpbImpzeCIsIl9qc3giLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsImpzeHMiLCJfanN4cyIsImNsc3giLCJSZXNpemVPYnNlcnZlciIsImdldFRhcmdldFNjcm9sbEJhclNpemUiLCJ1c2VFdmVudENhbGxiYWNrIiwidXNlRXZlbnQiLCJwaWNrQXR0cnMiLCJnZXRWYWx1ZSIsIndhcm5pbmciLCJSZWFjdCIsIkJvZHkiLCJDb2xHcm91cCIsIkVYUEFORF9DT0xVTU4iLCJJTlRFUk5BTF9IT09LUyIsIlRhYmxlQ29udGV4dCIsIm1ha2VJbW11dGFibGUiLCJGaXhlZEhvbGRlciIsIkZvb3RlciIsIkZvb3RlckNvbXBvbmVudHMiLCJTdW1tYXJ5IiwiSGVhZGVyIiwidXNlQ29sdW1ucyIsInVzZUV4cGFuZCIsInVzZUZpeGVkSW5mbyIsInVzZVRpbWVvdXRMb2NrIiwidXNlSG92ZXIiLCJ1c2VTdGlja3kiLCJ1c2VTdGlja3lPZmZzZXRzIiwiUGFuZWwiLCJTdGlja3lTY3JvbGxCYXIiLCJDb2x1bW4iLCJDb2x1bW5Hcm91cCIsImdldENvbHVtbnNLZXkiLCJ2YWxpZGF0ZVZhbHVlIiwidmFsaWROdW1iZXJWYWx1ZSIsImdldERPTSIsImlzRXF1YWwiLCJ1c2VMYXlvdXRFZmZlY3QiLCJERUZBVUxUX1BSRUZJWCIsIkVNUFRZX0RBVEEiLCJFTVBUWV9TQ1JPTExfVEFSR0VUIiwiZGVmYXVsdEVtcHR5IiwiVGFibGUiLCJ0YWJsZVByb3BzIiwicmVmIiwiX2Nsc3giLCJfYSIsIl9iIiwicHJvcHMiLCJPYmplY3QiLCJhc3NpZ24iLCJyb3dLZXkiLCJwcmVmaXhDbHMiLCJlbXB0eVRleHQiLCJjbGFzc05hbWUiLCJyb3dDbGFzc05hbWUiLCJzdHlsZSIsImNsYXNzTmFtZXMiLCJzdHlsZXMiLCJkYXRhIiwic2Nyb2xsIiwidGFibGVMYXlvdXQiLCJkaXJlY3Rpb24iLCJ0aXRsZSIsImZvb3RlciIsInN1bW1hcnkiLCJjYXB0aW9uIiwiaWQiLCJzaG93SGVhZGVyIiwiY29tcG9uZW50cyIsIm9uUm93Iiwib25IZWFkZXJSb3ciLCJtZWFzdXJlUm93UmVuZGVyIiwib25TY3JvbGwiLCJpbnRlcm5hbEhvb2tzIiwidHJhbnNmb3JtQ29sdW1ucyIsImludGVybmFsUmVmcyIsInRhaWxvciIsImdldENvbnRhaW5lcldpZHRoIiwic3RpY2t5IiwiX3Byb3BzJHJvd0hvdmVyYWJsZSIsInJvd0hvdmVyYWJsZSIsIm1lcmdlZERhdGEiLCJoYXNEYXRhIiwibGVuZ3RoIiwidXNlSW50ZXJuYWxIb29rcyIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsImZvckVhY2giLCJuYW1lIiwidW5kZWZpbmVkIiwiY29uY2F0IiwiZ2V0Q29tcG9uZW50IiwidXNlQ2FsbGJhY2siLCJwYXRoIiwiZGVmYXVsdENvbXBvbmVudCIsImdldFJvd0tleSIsInVzZU1lbW8iLCJyZWNvcmQiLCJrZXkiLCJjdXN0b21pemVTY3JvbGxCb2R5IiwiX3VzZUhvdmVyIiwiX3VzZUhvdmVyMiIsIl9zbGljZWRUb0FycmF5Iiwic3RhcnRSb3ciLCJlbmRSb3ciLCJvbkhvdmVyIiwiX3VzZUV4cGFuZCIsIl91c2VFeHBhbmQyIiwiZXhwYW5kYWJsZUNvbmZpZyIsImV4cGFuZGFibGVUeXBlIiwibWVyZ2VkRXhwYW5kZWRLZXlzIiwibWVyZ2VkRXhwYW5kSWNvbiIsIm1lcmdlZENoaWxkcmVuQ29sdW1uTmFtZSIsIm9uVHJpZ2dlckV4cGFuZCIsInNjcm9sbFgiLCJ4IiwiX1JlYWN0JHVzZVN0YXRlIiwidXNlU3RhdGUiLCJfUmVhY3QkdXNlU3RhdGUyIiwiY29tcG9uZW50V2lkdGgiLCJzZXRDb21wb25lbnRXaWR0aCIsIl91c2VDb2x1bW5zIiwiZXhwYW5kYWJsZSIsImV4cGFuZGVkUm93UmVuZGVyIiwiY29sdW1uVGl0bGUiLCJleHBhbmRlZEtleXMiLCJleHBhbmRJY29uIiwiZXhwYW5kSWNvbkNvbHVtbkluZGV4Iiwic2Nyb2xsV2lkdGgiLCJjbGllbnRXaWR0aCIsIl91c2VDb2x1bW5zMiIsImNvbHVtbnMiLCJmbGF0dGVuQ29sdW1ucyIsImZsYXR0ZW5TY3JvbGxYIiwibWVyZ2VkU2Nyb2xsWCIsImNvbHVtbkNvbnRleHQiLCJmdWxsVGFibGVSZWYiLCJ1c2VSZWYiLCJzY3JvbGxIZWFkZXJSZWYiLCJzY3JvbGxCb2R5UmVmIiwic2Nyb2xsQm9keUNvbnRhaW5lclJlZiIsInVzZUltcGVyYXRpdmVIYW5kbGUiLCJuYXRpdmVFbGVtZW50IiwiY3VycmVudCIsInNjcm9sbFRvIiwiY29uZmlnIiwiSFRNTEVsZW1lbnQiLCJpbmRleCIsInRvcCIsIm9mZnNldCIsIm1lcmdlZEtleSIsInRhcmdldEVsZW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwic2Nyb2xsSW50b1ZpZXciLCJlbGVtZW50VG9wIiwib2Zmc2V0VG9wIiwic2Nyb2xsU3VtbWFyeVJlZiIsIl9SZWFjdCR1c2VTdGF0ZTMiLCJfUmVhY3QkdXNlU3RhdGU0Iiwic2hhZG93U3RhcnQiLCJzZXRTaGFkb3dTdGFydCIsIl9SZWFjdCR1c2VTdGF0ZTUiLCJfUmVhY3QkdXNlU3RhdGU2Iiwic2hhZG93RW5kIiwic2V0U2hhZG93RW5kIiwiX1JlYWN0JHVzZVN0YXRlNyIsIk1hcCIsIl9SZWFjdCR1c2VTdGF0ZTgiLCJjb2xzV2lkdGhzIiwidXBkYXRlQ29sc1dpZHRocyIsImNvbHNLZXlzIiwicHVyZUNvbFdpZHRocyIsIm1hcCIsImNvbHVtbktleSIsImdldCIsImNvbFdpZHRocyIsImpvaW4iLCJzdGlja3lPZmZzZXRzIiwiZml4SGVhZGVyIiwieSIsImhvcml6b25TY3JvbGwiLCJCb29sZWFuIiwiZml4ZWQiLCJmaXhDb2x1bW4iLCJzb21lIiwiX3JlZiIsInN0aWNreVJlZiIsIl91c2VTdGlja3kiLCJpc1N0aWNreSIsIm9mZnNldEhlYWRlciIsIm9mZnNldFN1bW1hcnkiLCJvZmZzZXRTY3JvbGwiLCJzdGlja3lDbGFzc05hbWUiLCJjb250YWluZXIiLCJzdW1tYXJ5Tm9kZSIsImZpeEZvb3RlciIsImlzVmFsaWRFbGVtZW50IiwidHlwZSIsInNjcm9sbFhTdHlsZSIsInNjcm9sbFlTdHlsZSIsInNjcm9sbFRhYmxlU3R5bGUiLCJvdmVyZmxvd1kiLCJtYXhIZWlnaHQiLCJvdmVyZmxvd1giLCJ3aWR0aCIsIm1pbldpZHRoIiwib25Db2x1bW5SZXNpemUiLCJ3aWR0aHMiLCJuZXdXaWR0aHMiLCJzZXQiLCJfdXNlVGltZW91dExvY2siLCJfdXNlVGltZW91dExvY2syIiwic2V0U2Nyb2xsVGFyZ2V0IiwiZ2V0U2Nyb2xsVGFyZ2V0IiwiZm9yY2VTY3JvbGwiLCJzY3JvbGxMZWZ0IiwidGFyZ2V0Iiwic2V0VGltZW91dCIsIl9SZWFjdCR1c2VTdGF0ZTkiLCJfUmVhY3QkdXNlU3RhdGUxMCIsInNjcm9sbEluZm8iLCJzZXRTY3JvbGxJbmZvIiwib25JbnRlcm5hbFNjcm9sbCIsIl9yZWYyIiwiY3VycmVudFRhcmdldCIsIm1lcmdlZFNjcm9sbExlZnQiLCJjb21wYXJlVGFyZ2V0Iiwic2V0U2Nyb2xsTGVmdCIsIm1lYXN1cmVUYXJnZXQiLCJhYnNTY3JvbGxTdGFydCIsIk1hdGgiLCJhYnMiLCJvcmkiLCJuZXh0U2Nyb2xsSW5mbyIsIm9uQm9keVNjcm9sbCIsImUiLCJ0cmlnZ2VyT25TY3JvbGwiLCJvbkZ1bGxUYWJsZVJlc2l6ZSIsIm9mZnNldFdpZHRoIiwiX2MiLCJjaGVja1Njcm9sbEJhclZpc2libGUiLCJtZXJnZWRXaWR0aCIsIm1vdW50ZWQiLCJ1c2VFZmZlY3QiLCJfUmVhY3QkdXNlU3RhdGUxMSIsIl9SZWFjdCR1c2VTdGF0ZTEyIiwic2Nyb2xsYmFyU2l6ZSIsInNldFNjcm9sbGJhclNpemUiLCJFbGVtZW50IiwiYm9keSIsInJlbmRlckZpeGVkSGVhZGVyVGFibGUiLCJmaXhlZEhvbGRlclBhc3NQcm9wcyIsImNoaWxkcmVuIiwicmVuZGVyRml4ZWRGb290ZXJUYWJsZSIsIlRhYmxlQ29tcG9uZW50IiwibWVyZ2VkVGFibGVMYXlvdXQiLCJfcmVmMyIsImVsbGlwc2lzIiwiZ3JvdXBUYWJsZU5vZGUiLCJoZWFkZXJQcm9wcyIsImNvbHVtQ291bnQiLCJlbXB0eU5vZGUiLCJib2R5VGFibGUiLCJtZWFzdXJlQ29sdW1uV2lkdGgiLCJib2R5Q29sR3JvdXAiLCJfcmVmNCIsImNhcHRpb25FbGVtZW50IiwiZGF0YVByb3BzIiwiYXJpYVByb3BzIiwiYXJpYSIsImJvZHlDb250ZW50IiwiX3JlZjUiLCJjb2xXaWR0aCIsIk51bWJlciIsImlzTmFOIiwiZml4ZWRIb2xkZXJQcm9wcyIsIm5vRGF0YSIsIm1heENvbnRlbnRTY3JvbGwiLCJzdGlja3lUb3BPZmZzZXQiLCJjb2xHcm91cCIsInN0aWNreUJvdHRvbU9mZnNldCIsImNvbnRlbnQiLCJ0YWJsZVN0eWxlIiwiZnVsbFRhYmxlIiwiX2RlZmluZVByb3BlcnR5Iiwic2VjdGlvbiIsIm9uUmVzaXplIiwiX3JlZjYiLCJmaXhlZEluZm9MaXN0IiwiVGFibGVDb250ZXh0VmFsdWUiLCJleHBhbmRlZFJvd0NsYXNzTmFtZSIsImV4cGFuZFJvd0J5Q2xpY2siLCJleHBhbmRlZFJvd09mZnNldCIsImluZGVudFNpemUiLCJhbGxDb2x1bW5zRml4ZWRMZWZ0IiwiZXZlcnkiLCJjb2wiLCJob3ZlclN0YXJ0Um93IiwiaG92ZXJFbmRSb3ciLCJyb3dFeHBhbmRhYmxlIiwiY2hpbGRyZW5Db2x1bW5OYW1lIiwiUHJvdmlkZXIiLCJ2YWx1ZSIsIlJlZlRhYmxlIiwiZm9yd2FyZFJlZiIsImRpc3BsYXlOYW1lIiwiZ2VuVGFibGUiLCJzaG91bGRUcmlnZ2VyUmVuZGVyIiwiSW1tdXRhYmxlVGFibGUiXSwibWFwcGluZ3MiOiI7O0FBQUEsU0FBU0EsR0FBRyxJQUFJQyxJQUFJLEVBQUVDLFFBQVEsSUFBSUMsU0FBUyxFQUFFQyxJQUFJLElBQUlDLEtBQUssUUFBUSxtQkFB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UUFBUSxLQUFLLFlBQVksRUFBRTtFQUN6Q3lOLFFBQVEsQ0FBQ0UsV0FBVyxHQUFHLE9BQU87QUFDaEM7QUFFQSxPQUFPLElBQU1DLFFBQVEsR0FBRyxTQUFYQSxRQUFRQSxDQUFJQyxtQkFBdUQsRUFBSTtFQUNsRixPQUFPdFMsYUFBYSxDQUFDa1MsUUFBUSxFQUFFSSxtQkFBbUIsQ0FBQztBQUNyRCxDQUFDO0FBRUQsSUFBTUMsY0FBYyxHQUFHRixRQUFRLENBQUEsQ0FBRTtBQVVoQ0UsY0FBcUMsQ0FBQzFTLGFBQWEsR0FBR0EsYUFBYTtBQUVuRTBTLGNBQXFDLENBQUN6UyxjQUFjLEdBQUdBLGNBQWM7QUFFckV5UyxjQUFxQyxDQUFDeFIsTUFBTSxHQUFHQSxNQUFNO0FBRXJEd1IsY0FBcUMsQ0FBQ3ZSLFdBQVcsR0FBR0EsV0FBVztBQUUvRHVSLGNBQXFDLENBQUNuUyxPQUFPLEdBQUdELGdCQUFnQjtBQUVqRSxlQUFlb1MsY0FBb0MiLCJmaWxlIjoiY29tcG9uZW50cy9UYWJsZS9pbnRlcm5hbC9rZXJuZWwvVGFibGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCwgRnJhZ21lbnQgYXMgX0ZyYWdtZW50LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBjbHN4IH0gZnJvbSAnY2xzeCc7XG5pbXBvcnQgUmVzaXplT2JzZXJ2ZXIgZnJvbSAnLi4vLi4vLi4vUmVzaXplT2JzZXJ2ZXInO1xuaW1wb3J0IHsgZ2V0VGFyZ2V0U2Nyb2xsQmFyU2l6ZSB9IGZyb20gJy4vdXRpbHMvZ2V0U2Nyb2xsQmFyU2l6ZSc7XG5pbXBvcnQgeyB1c2VFdmVudENhbGxiYWNrIGFzIHVzZUV2ZW50IH0gZnJvbSAnQDFtb25leS9ob29rcyc7XG5pbXBvcnQgcGlja0F0dHJzIGZyb20gJy4vdXRpbHMvcGlja0F0dHJzJztcbmltcG9ydCBnZXRWYWx1ZSBmcm9tICcuL3V0aWxzL2dldCc7XG5pbXBvcnQgd2FybmluZyBmcm9tICcuL3V0aWxzL3dhcm5pbmcnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IEJvZHkgZnJvbSAnLi9Cb2R5JztcbmltcG9ydCBDb2xHcm91cCBmcm9tICcuL0NvbEdyb3VwJztcbmltcG9ydCB7IEVYUEFORF9DT0xVTU4sIElOVEVSTkFMX0hPT0tTIH0gZnJvbSAnLi9jb25zdGFudCc7XG5pbXBvcnQgVGFibGVDb250ZXh0LCB7IG1ha2VJbW11dGFibGUgfSBmcm9tICcuL2NvbnRleHQvVGFibGVDb250ZXh0JztcbmltcG9ydCBGaXhlZEhvbGRlciBmcm9tICcuL0ZpeGVkSG9sZGVyJztcbmltcG9ydCBGb290ZXIsIHsgRm9vdGVyQ29tcG9uZW50cyB9IGZyb20gJy4vRm9vdGVyJztcbmltcG9ydCBTdW1tYXJ5IGZyb20gJy4vRm9vdGVyL1N1bW1hcnknO1xuaW1wb3J0IEhlYWRlciBmcm9tICcuL0hlYWRlci9IZWFkZXInO1xuaW1wb3J0IHVzZUNvbHVtbnMgZnJvbSAnLi9ob29rcy91c2VDb2x1bW5zJztcbmltcG9ydCB1c2VFeHBhbmQgZnJvbSAnLi9ob29rcy91c2VFeHBhbmQnO1xuaW1wb3J0IHVzZUZpeGVkSW5mbyBmcm9tICcuL2hvb2tzL3VzZUZpeGVkSW5mbyc7XG5pbXBvcnQgeyB1c2VUaW1lb3V0TG9jayB9IGZyb20gJy4vaG9va3MvdXNlRnJhbWUnO1xuaW1wb3J0IHVzZUhvdmVyIGZyb20gJy4vaG9va3MvdXNlSG92ZXInO1xuaW1wb3J0IHVzZVN0aWNreSBmcm9tICcuL2hvb2tzL3VzZVN0aWNreSc7XG5pbXBvcnQgdXNlU3RpY2t5T2Zmc2V0cyBmcm9tICcuL2hvb2tzL3VzZVN0aWNreU9mZnNldHMnO1xuaW1wb3J0IFBhbmVsIGZyb20gJy4vUGFuZWwnO1xuaW1wb3J0IFN0aWNreVNjcm9sbEJhciBmcm9tICcuL3N0aWNreVNjcm9sbEJhcic7XG5pbXBvcnQgQ29sdW1uIGZyb20gJy4vc3VnYXIvQ29sdW1uJztcbmltcG9ydCBDb2x1bW5Hcm91cCBmcm9tICcuL3N1Z2FyL0NvbHVtbkdyb3VwJztcbmltcG9ydCB7IGdldENvbHVtbnNLZXksIHZhbGlkYXRlVmFsdWUsIHZhbGlkTnVtYmVyVmFsdWUgfSBmcm9tICcuL3V0aWxzL3ZhbHVlVXRpbCc7XG5pbXBvcnQgeyBnZXRET00gfSBmcm9tICcuLi8uLi8uLi9SZXNpemVPYnNlcnZlci91dGlscy9yZWFjdFV0aWwnO1xuaW1wb3J0IGlzRXF1YWwgZnJvbSAnLi9zZWxlY3Rvci1jb250ZXh0L2lzRXF1YWwnO1xuaW1wb3J0IHsgdXNlTGF5b3V0RWZmZWN0IH0gZnJvbSAnQDFtb25leS9ob29rcyc7XG5leHBvcnQgY29uc3QgREVGQVVMVF9QUkVGSVggPSAnb20tdGFibGUnO1xuLy8gVXNlZCBmb3IgY29uZGl0aW9ucyBjYWNoZVxuY29uc3QgRU1QVFlfREFUQSA9IFtdO1xuLy8gVXNlZCBmb3IgY3VzdG9taXplIHNjcm9sbFxuY29uc3QgRU1QVFlfU0NST0xMX1RBUkdFVCA9IHt9O1xuZnVuY3Rpb24gZGVmYXVsdEVtcHR5KCkge1xuICAgIHJldHVybiAnTm8gRGF0YSc7XG59XG5jb25zdCBUYWJsZSA9ICh0YWJsZVByb3BzLCByZWYpID0+IHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIGNvbnN0IHByb3BzID0gT2JqZWN0LmFzc2lnbih7IHJvd0tleTogJ2tleScsIHByZWZpeENsczogREVGQVVMVF9QUkVGSVgsIGVtcHR5VGV4dDogZGVmYXVsdEVtcHR5IH0sIHRhYmxlUHJvcHMpO1xuICAgIGNvbnN0IHsgcHJlZml4Q2xzLCBjbGFzc05hbWUsIHJvd0NsYXNzTmFtZSwgc3R5bGUsIGNsYXNzTmFtZXMsIHN0eWxlcywgZGF0YSwgcm93S2V5LCBzY3JvbGwsIHRhYmxlTGF5b3V0LCBkaXJlY3Rpb24sIFxuICAgIC8vIEFkZGl0aW9uYWwgUGFydFxuICAgIHRpdGxlLCBmb290ZXIsIHN1bW1hcnksIGNhcHRpb24sIFxuICAgIC8vIEN1c3RvbWl6ZVxuICAgIGlkLCBzaG93SGVhZGVyLCBjb21wb25lbnRzLCBlbXB0eVRleHQsIG9uUm93LCBvbkhlYWRlclJvdywgXG4gICAgLy8gTWVhc3VyZSBSb3dcbiAgICBtZWFzdXJlUm93UmVuZGVyLCBcbiAgICAvLyBFdmVudHNcbiAgICBvblNjcm9sbCwgXG4gICAgLy8gSW50ZXJuYWxcbiAgICBpbnRlcm5hbEhvb2tzLCB0cmFuc2Zvcm1Db2x1bW5zLCBpbnRlcm5hbFJlZnMsIHRhaWxvciwgZ2V0Q29udGFpbmVyV2lkdGgsIHN0aWNreSwgcm93SG92ZXJhYmxlID0gdHJ1ZSwgfSA9IHByb3BzO1xuICAgIGNvbnN0IG1lcmdlZERhdGEgPSBkYXRhIHx8IEVNUFRZX0RBVEE7XG4gICAgY29uc3QgaGFzRGF0YSA9ICEhbWVyZ2VkRGF0YS5sZW5ndGg7XG4gICAgY29uc3QgdXNlSW50ZXJuYWxIb29rcyA9IGludGVybmFsSG9va3MgPT09IElOVEVSTkFMX0hPT0tTO1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PSBXYXJuaW5nID09PT09PT09PT09PT09PT09PT09PT1cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBbXG4gICAgICAgICAgICAnb25Sb3dDbGljaycsXG4gICAgICAgICAgICAnb25Sb3dEb3VibGVDbGljaycsXG4gICAgICAgICAgICAnb25Sb3dDb250ZXh0TWVudScsXG4gICAgICAgICAgICAnb25Sb3dNb3VzZUVudGVyJyxcbiAgICAgICAgICAgICdvblJvd01vdXNlTGVhdmUnLFxuICAgICAgICBdLmZvckVhY2gobmFtZSA9PiB7XG4gICAgICAgICAgICB3YXJuaW5nKHByb3BzW25hbWVdID09PSB1bmRlZmluZWQsIGBcXGAke25hbWV9XFxgIGlzIHJlbW92ZWQsIHBsZWFzZSB1c2UgXFxgb25Sb3dcXGAgaW5zdGVhZC5gKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHdhcm5pbmcoISgnZ2V0Qm9keVdyYXBwZXInIGluIHByb3BzKSwgJ2BnZXRCb2R5V3JhcHBlcmAgaXMgZGVwcmVjYXRlZCwgcGxlYXNlIHVzZSBjdXN0b20gYGNvbXBvbmVudHNgIGluc3RlYWQuJyk7XG4gICAgfVxuICAgIC8vID09PT09PT09PT09PT09PT09PT09IEN1c3RvbWl6ZSA9PT09PT09PT09PT09PT09PT09PT1cbiAgICBjb25zdCBnZXRDb21wb25lbnQgPSBSZWFjdC51c2VDYWxsYmFjaygocGF0aCwgZGVmYXVsdENvbXBvbmVudCkgPT4gZ2V0VmFsdWUoY29tcG9uZW50cywgcGF0aCkgfHwgZGVmYXVsdENvbXBvbmVudCwgW2NvbXBvbmVudHNdKTtcbiAgICBjb25zdCBnZXRSb3dLZXkgPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiByb3dLZXkgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybiByb3dLZXk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChyZWNvcmQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IHJlY29yZCAmJiByZWNvcmRbcm93S2V5XTtcbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgd2FybmluZyhrZXkgIT09IHVuZGVmaW5lZCwgJ0VhY2ggcmVjb3JkIGluIHRhYmxlIHNob3VsZCBoYXZlIGEgdW5pcXVlIGBrZXlgIHByb3AsIG9yIHNldCBgcm93S2V5YCB0byBhbiB1bmlxdWUgcHJpbWFyeSBrZXkuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ga2V5O1xuICAgICAgICB9O1xuICAgIH0sIFtyb3dLZXldKTtcbiAgICBjb25zdCBjdXN0b21pemVTY3JvbGxCb2R5ID0gZ2V0Q29tcG9uZW50KFsnYm9keSddKTtcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09IEhvdmVyID09PT09PT09PT09PT09PT09PT09PT09XG4gICAgY29uc3QgW3N0YXJ0Um93LCBlbmRSb3csIG9uSG92ZXJdID0gdXNlSG92ZXIoKTtcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09IEV4cGFuZCA9PT09PT09PT09PT09PT09PT09PT09XG4gICAgY29uc3QgW2V4cGFuZGFibGVDb25maWcsIGV4cGFuZGFibGVUeXBlLCBtZXJnZWRFeHBhbmRlZEtleXMsIG1lcmdlZEV4cGFuZEljb24sIG1lcmdlZENoaWxkcmVuQ29sdW1uTmFtZSwgb25UcmlnZ2VyRXhwYW5kLF0gPSB1c2VFeHBhbmQocHJvcHMsIG1lcmdlZERhdGEsIGdldFJvd0tleSk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PSBDb2x1bW4gPT09PT09PT09PT09PT09PT09PT09PVxuICAgIGNvbnN0IHNjcm9sbFggPSBzY3JvbGwgPT09IG51bGwgfHwgc2Nyb2xsID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzY3JvbGwueDtcbiAgICBjb25zdCBbY29tcG9uZW50V2lkdGgsIHNldENvbXBvbmVudFdpZHRoXSA9IFJlYWN0LnVzZVN0YXRlKDApO1xuICAgIGNvbnN0IFtjb2x1bW5zLCBmbGF0dGVuQ29sdW1ucywgZmxhdHRlblNjcm9sbFhdID0gdXNlQ29sdW1ucyhPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgcHJvcHMpLCBleHBhbmRhYmxlQ29uZmlnKSwgeyBleHBhbmRhYmxlOiAhIWV4cGFuZGFibGVDb25maWcuZXhwYW5kZWRSb3dSZW5kZXIsIGNvbHVtblRpdGxlOiBleHBhbmRhYmxlQ29uZmlnLmNvbHVtblRpdGxlLCBleHBhbmRlZEtleXM6IG1lcmdlZEV4cGFuZGVkS2V5cywgZ2V0Um93S2V5LFxuICAgICAgICBvblRyaWdnZXJFeHBhbmQsIGV4cGFuZEljb246IG1lcmdlZEV4cGFuZEljb24sIGV4cGFuZEljb25Db2x1bW5JbmRleDogZXhwYW5kYWJsZUNvbmZpZy5leHBhbmRJY29uQ29sdW1uSW5kZXgsIGRpcmVjdGlvbiwgc2Nyb2xsV2lkdGg6IHVzZUludGVybmFsSG9va3MgJiYgdGFpbG9yICYmIHR5cGVvZiBzY3JvbGxYID09PSAnbnVtYmVyJyA/IHNjcm9sbFggOiBudWxsLCBjbGllbnRXaWR0aDogY29tcG9uZW50V2lkdGggfSksIHVzZUludGVybmFsSG9va3MgPyB0cmFuc2Zvcm1Db2x1bW5zIDogbnVsbCk7XG4gICAgY29uc3QgbWVyZ2VkU2Nyb2xsWCA9IGZsYXR0ZW5TY3JvbGxYICE9PSBudWxsICYmIGZsYXR0ZW5TY3JvbGxYICE9PSB2b2lkIDAgPyBmbGF0dGVuU2Nyb2xsWCA6IHNjcm9sbFg7XG4gICAgY29uc3QgY29sdW1uQ29udGV4dCA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHsgY29sdW1ucywgZmxhdHRlbkNvbHVtbnMgfSksIFtjb2x1bW5zLCBmbGF0dGVuQ29sdW1uc10pO1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09IFJlZnMgPT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBjb25zdCBmdWxsVGFibGVSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgY29uc3Qgc2Nyb2xsSGVhZGVyUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHNjcm9sbEJvZHlSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgY29uc3Qgc2Nyb2xsQm9keUNvbnRhaW5lclJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICBSZWFjdC51c2VJbXBlcmF0aXZlSGFuZGxlKHJlZiwgKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmF0aXZlRWxlbWVudDogZnVsbFRhYmxlUmVmLmN1cnJlbnQsXG4gICAgICAgICAgICBzY3JvbGxUbzogY29uZmlnID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgICAgIGlmIChzY3JvbGxCb2R5UmVmLmN1cnJlbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBOYXRpdmUgc2Nyb2xsXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgaW5kZXgsIHRvcCwga2V5LCBvZmZzZXQgfSA9IGNvbmZpZztcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbGlkTnVtYmVyVmFsdWUodG9wKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW4gdG9wIG1vZGUsIG9mZnNldCBpcyBpZ25vcmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAoX2EgPSBzY3JvbGxCb2R5UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zY3JvbGxUbyh7IHRvcCB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1lcmdlZEtleSA9IGtleSAhPT0gbnVsbCAmJiBrZXkgIT09IHZvaWQgMCA/IGtleSA6IGdldFJvd0tleShtZXJnZWREYXRhW2luZGV4XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRFbGVtZW50ID0gc2Nyb2xsQm9keVJlZi5jdXJyZW50LnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLXJvdy1rZXk9XCIke21lcmdlZEtleX1cIl1gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvZmZzZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm8gb2Zmc2V0LCB1c2Ugc2Nyb2xsSW50b1ZpZXcgZm9yIGRlZmF1bHQgYmVoYXZpb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0RWxlbWVudC5zY3JvbGxJbnRvVmlldygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2l0aCBvZmZzZXQsIHVzZSBlbGVtZW50J3Mgb2Zmc2V0VG9wICsgb2Zmc2V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRUb3AgPSB0YXJnZXRFbGVtZW50Lm9mZnNldFRvcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsQm9keVJlZi5jdXJyZW50LnNjcm9sbFRvKHsgdG9wOiBlbGVtZW50VG9wICsgb2Zmc2V0IH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmICgoX2IgPSBzY3JvbGxCb2R5UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5zY3JvbGxUbykge1xuICAgICAgICAgICAgICAgICAgICAvLyBQYXNzIHRvIHByb3h5XG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbEJvZHlSZWYuY3VycmVudC5zY3JvbGxUbyhjb25maWcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfSk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PSBTY3JvbGwgPT09PT09PT09PT09PT09PT09PT09PVxuICAgIGNvbnN0IHNjcm9sbFN1bW1hcnlSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgY29uc3QgW3NoYWRvd1N0YXJ0LCBzZXRTaGFkb3dTdGFydF0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW3NoYWRvd0VuZCwgc2V0U2hhZG93RW5kXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbY29sc1dpZHRocywgdXBkYXRlQ29sc1dpZHRoc10gPSBSZWFjdC51c2VTdGF0ZShuZXcgTWFwKCkpO1xuICAgIC8vIENvbnZlcnQgbWFwIHRvIG51bWJlciB3aWR0aFxuICAgIGNvbnN0IGNvbHNLZXlzID0gZ2V0Q29sdW1uc0tleShmbGF0dGVuQ29sdW1ucyk7XG4gICAgY29uc3QgcHVyZUNvbFdpZHRocyA9IGNvbHNLZXlzLm1hcChjb2x1bW5LZXkgPT4gY29sc1dpZHRocy5nZXQoY29sdW1uS2V5KSk7XG4gICAgY29uc3QgY29sV2lkdGhzID0gUmVhY3QudXNlTWVtbygoKSA9PiBwdXJlQ29sV2lkdGhzLCBbcHVyZUNvbFdpZHRocy5qb2luKCdfJyldKTtcbiAgICBjb25zdCBzdGlja3lPZmZzZXRzID0gdXNlU3RpY2t5T2Zmc2V0cyhjb2xXaWR0aHMsIGZsYXR0ZW5Db2x1bW5zKTtcbiAgICBjb25zdCBmaXhIZWFkZXIgPSBzY3JvbGwgJiYgdmFsaWRhdGVWYWx1ZShzY3JvbGwueSk7XG4gICAgY29uc3QgaG9yaXpvblNjcm9sbCA9IChzY3JvbGwgJiYgdmFsaWRhdGVWYWx1ZShtZXJnZWRTY3JvbGxYKSkgfHwgQm9vbGVhbihleHBhbmRhYmxlQ29uZmlnLmZpeGVkKTtcbiAgICBjb25zdCBmaXhDb2x1bW4gPSBob3Jpem9uU2Nyb2xsICYmIGZsYXR0ZW5Db2x1bW5zLnNvbWUoKHsgZml4ZWQgfSkgPT4gZml4ZWQpO1xuICAgIC8vIFN0aWNreVxuICAgIGNvbnN0IHN0aWNreVJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICBjb25zdCB7IGlzU3RpY2t5LCBvZmZzZXRIZWFkZXIsIG9mZnNldFN1bW1hcnksIG9mZnNldFNjcm9sbCwgc3RpY2t5Q2xhc3NOYW1lLCBjb250YWluZXIgfSA9IHVzZVN0aWNreShzdGlja3ksIHByZWZpeENscyk7XG4gICAgLy8gRm9vdGVyIChGaXggZm9vdGVyIG11c3QgZml4ZWQgaGVhZGVyKVxuICAgIGNvbnN0IHN1bW1hcnlOb2RlID0gUmVhY3QudXNlTWVtbygoKSA9PiBzdW1tYXJ5ID09PSBudWxsIHx8IHN1bW1hcnkgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN1bW1hcnkobWVyZ2VkRGF0YSksIFtzdW1tYXJ5LCBtZXJnZWREYXRhXSk7XG4gICAgY29uc3QgZml4Rm9vdGVyID0gKGZpeEhlYWRlciB8fCBpc1N0aWNreSkgJiZcbiAgICAgICAgUmVhY3QuaXNWYWxpZEVsZW1lbnQoc3VtbWFyeU5vZGUpICYmXG4gICAgICAgIHN1bW1hcnlOb2RlLnR5cGUgPT09IFN1bW1hcnkgJiZcbiAgICAgICAgc3VtbWFyeU5vZGUucHJvcHMuZml4ZWQ7XG4gICAgLy8gU2Nyb2xsXG4gICAgbGV0IHNjcm9sbFhTdHlsZTtcbiAgICBsZXQgc2Nyb2xsWVN0eWxlO1xuICAgIGxldCBzY3JvbGxUYWJsZVN0eWxlO1xuICAgIGlmIChmaXhIZWFkZXIpIHtcbiAgICAgICAgc2Nyb2xsWVN0eWxlID0ge1xuICAgICAgICAgICAgb3ZlcmZsb3dZOiBoYXNEYXRhID8gJ3Njcm9sbCcgOiAnYXV0bycsXG4gICAgICAgICAgICBtYXhIZWlnaHQ6IHNjcm9sbC55LFxuICAgICAgICB9O1xuICAgIH1cbiAgICBpZiAoaG9yaXpvblNjcm9sbCkge1xuICAgICAgICBzY3JvbGxYU3R5bGUgPSB7IG92ZXJmbG93WDogJ2F1dG8nIH07XG4gICAgICAgIC8vIFdoZW4gbm8gdmVydGljYWwgc2Nyb2xsYmFyLCBzaG91bGQgaGlkZSBpdFxuICAgICAgICBpZiAoIWZpeEhlYWRlcikge1xuICAgICAgICAgICAgc2Nyb2xsWVN0eWxlID0geyBvdmVyZmxvd1k6ICdoaWRkZW4nIH07XG4gICAgICAgIH1cbiAgICAgICAgc2Nyb2xsVGFibGVTdHlsZSA9IHtcbiAgICAgICAgICAgIHdpZHRoOiBtZXJnZWRTY3JvbGxYID09PSB0cnVlID8gJ2F1dG8nIDogbWVyZ2VkU2Nyb2xsWCxcbiAgICAgICAgICAgIG1pbldpZHRoOiAnMTAwJScsXG4gICAgICAgIH07XG4gICAgfVxuICAgIGNvbnN0IG9uQ29sdW1uUmVzaXplID0gUmVhY3QudXNlQ2FsbGJhY2soKGNvbHVtbktleSwgd2lkdGgpID0+IHtcbiAgICAgICAgdXBkYXRlQ29sc1dpZHRocyh3aWR0aHMgPT4ge1xuICAgICAgICAgICAgaWYgKHdpZHRocy5nZXQoY29sdW1uS2V5KSAhPT0gd2lkdGgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdXaWR0aHMgPSBuZXcgTWFwKHdpZHRocyk7XG4gICAgICAgICAgICAgICAgbmV3V2lkdGhzLnNldChjb2x1bW5LZXksIHdpZHRoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3V2lkdGhzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHdpZHRocztcbiAgICAgICAgfSk7XG4gICAgfSwgW10pO1xuICAgIGNvbnN0IFtzZXRTY3JvbGxUYXJnZXQsIGdldFNjcm9sbFRhcmdldF0gPSB1c2VUaW1lb3V0TG9jayhudWxsKTtcbiAgICBmdW5jdGlvbiBmb3JjZVNjcm9sbChzY3JvbGxMZWZ0LCB0YXJnZXQpIHtcbiAgICAgICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHRhcmdldCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdGFyZ2V0KHNjcm9sbExlZnQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRhcmdldC5zY3JvbGxMZWZ0ICE9PSBzY3JvbGxMZWZ0KSB7XG4gICAgICAgICAgICB0YXJnZXQuc2Nyb2xsTGVmdCA9IHNjcm9sbExlZnQ7XG4gICAgICAgICAgICAvLyBEZWxheSB0byBmb3JjZSBzY3JvbGwgcG9zaXRpb24gaWYgbm90IHN5bmNcbiAgICAgICAgICAgIGlmICh0YXJnZXQuc2Nyb2xsTGVmdCAhPT0gc2Nyb2xsTGVmdCkge1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc2Nyb2xsTGVmdCA9IHNjcm9sbExlZnQ7XG4gICAgICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgW3Njcm9sbEluZm8sIHNldFNjcm9sbEluZm9dID0gUmVhY3QudXNlU3RhdGUoWzAsIDBdKTtcbiAgICBjb25zdCBvbkludGVybmFsU2Nyb2xsID0gdXNlRXZlbnQoKHsgY3VycmVudFRhcmdldCwgc2Nyb2xsTGVmdCB9KSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgY29uc3QgbWVyZ2VkU2Nyb2xsTGVmdCA9IHR5cGVvZiBzY3JvbGxMZWZ0ID09PSAnbnVtYmVyJyA/IHNjcm9sbExlZnQgOiBjdXJyZW50VGFyZ2V0LnNjcm9sbExlZnQ7XG4gICAgICAgIGNvbnN0IGNvbXBhcmVUYXJnZXQgPSBjdXJyZW50VGFyZ2V0IHx8IEVNUFRZX1NDUk9MTF9UQVJHRVQ7XG4gICAgICAgIGlmICghZ2V0U2Nyb2xsVGFyZ2V0KCkgfHwgZ2V0U2Nyb2xsVGFyZ2V0KCkgPT09IGNvbXBhcmVUYXJnZXQpIHtcbiAgICAgICAgICAgIHNldFNjcm9sbFRhcmdldChjb21wYXJlVGFyZ2V0KTtcbiAgICAgICAgICAgIGZvcmNlU2Nyb2xsKG1lcmdlZFNjcm9sbExlZnQsIHNjcm9sbEhlYWRlclJlZi5jdXJyZW50KTtcbiAgICAgICAgICAgIGZvcmNlU2Nyb2xsKG1lcmdlZFNjcm9sbExlZnQsIHNjcm9sbEJvZHlSZWYuY3VycmVudCk7XG4gICAgICAgICAgICBmb3JjZVNjcm9sbChtZXJnZWRTY3JvbGxMZWZ0LCBzY3JvbGxTdW1tYXJ5UmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgZm9yY2VTY3JvbGwobWVyZ2VkU2Nyb2xsTGVmdCwgKF9hID0gc3RpY2t5UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zZXRTY3JvbGxMZWZ0KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtZWFzdXJlVGFyZ2V0ID0gY3VycmVudFRhcmdldCB8fCBzY3JvbGxIZWFkZXJSZWYuY3VycmVudDtcbiAgICAgICAgaWYgKG1lYXN1cmVUYXJnZXQpIHtcbiAgICAgICAgICAgIGNvbnN0IHNjcm9sbFdpZHRoID0gXG4gICAgICAgICAgICAvLyBTaG91bGQgdXNlIG1lcmdlZFNjcm9sbFggaW4gdmlydHVhbCB0YWJsZSh1c2VJbnRlcm5hbEhvb2tzICYmIHRhaWxvciA9PT0gdHJ1ZSlcbiAgICAgICAgICAgIHVzZUludGVybmFsSG9va3MgJiYgdGFpbG9yICYmIHR5cGVvZiBtZXJnZWRTY3JvbGxYID09PSAnbnVtYmVyJ1xuICAgICAgICAgICAgICAgID8gbWVyZ2VkU2Nyb2xsWFxuICAgICAgICAgICAgICAgIDogbWVhc3VyZVRhcmdldC5zY3JvbGxXaWR0aDtcbiAgICAgICAgICAgIGNvbnN0IGNsaWVudFdpZHRoID0gbWVhc3VyZVRhcmdldC5jbGllbnRXaWR0aDtcbiAgICAgICAgICAgIGNvbnN0IGFic1Njcm9sbFN0YXJ0ID0gTWF0aC5hYnMobWVyZ2VkU2Nyb2xsTGVmdCk7XG4gICAgICAgICAgICBzZXRTY3JvbGxJbmZvKG9yaSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dFNjcm9sbEluZm8gPSBbYWJzU2Nyb2xsU3RhcnQsIHNjcm9sbFdpZHRoIC0gY2xpZW50V2lkdGhdO1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0VxdWFsKG9yaSwgbmV4dFNjcm9sbEluZm8pID8gb3JpIDogbmV4dFNjcm9sbEluZm87XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIFRoZXJlIGlzIG5vIHNwYWNlIHRvIHNjcm9sbFxuICAgICAgICAgICAgaWYgKHNjcm9sbFdpZHRoID09PSBjbGllbnRXaWR0aCkge1xuICAgICAgICAgICAgICAgIHNldFNoYWRvd1N0YXJ0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICBzZXRTaGFkb3dFbmQoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldFNoYWRvd1N0YXJ0KGFic1Njcm9sbFN0YXJ0ID4gMCk7XG4gICAgICAgICAgICBzZXRTaGFkb3dFbmQoYWJzU2Nyb2xsU3RhcnQgPCBzY3JvbGxXaWR0aCAtIGNsaWVudFdpZHRoIC0gMSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBvbkJvZHlTY3JvbGwgPSB1c2VFdmVudCgoZSkgPT4ge1xuICAgICAgICBvbkludGVybmFsU2Nyb2xsKGUpO1xuICAgICAgICBvblNjcm9sbCA9PT0gbnVsbCB8fCBvblNjcm9sbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25TY3JvbGwoZSk7XG4gICAgfSk7XG4gICAgY29uc3QgdHJpZ2dlck9uU2Nyb2xsID0gKCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmIChob3Jpem9uU2Nyb2xsICYmIHNjcm9sbEJvZHlSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgb25JbnRlcm5hbFNjcm9sbCh7XG4gICAgICAgICAgICAgICAgY3VycmVudFRhcmdldDogZ2V0RE9NKHNjcm9sbEJvZHlSZWYuY3VycmVudCksXG4gICAgICAgICAgICAgICAgc2Nyb2xsTGVmdDogKF9hID0gc2Nyb2xsQm9keVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc2Nyb2xsTGVmdCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc2V0U2hhZG93U3RhcnQoZmFsc2UpO1xuICAgICAgICAgICAgc2V0U2hhZG93RW5kKGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgY29uc3Qgb25GdWxsVGFibGVSZXNpemUgPSAob2Zmc2V0V2lkdGgpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgIChfYSA9IHN0aWNreVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2hlY2tTY3JvbGxCYXJWaXNpYmxlKCk7XG4gICAgICAgIGxldCBtZXJnZWRXaWR0aCA9IChfYyA9IG9mZnNldFdpZHRoICE9PSBudWxsICYmIG9mZnNldFdpZHRoICE9PSB2b2lkIDAgPyBvZmZzZXRXaWR0aCA6IChfYiA9IGZ1bGxUYWJsZVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Iub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IDA7XG4gICAgICAgIGlmICh1c2VJbnRlcm5hbEhvb2tzICYmIGdldENvbnRhaW5lcldpZHRoICYmIGZ1bGxUYWJsZVJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBtZXJnZWRXaWR0aCA9IGdldENvbnRhaW5lcldpZHRoKGZ1bGxUYWJsZVJlZi5jdXJyZW50LCBtZXJnZWRXaWR0aCkgfHwgbWVyZ2VkV2lkdGg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1lcmdlZFdpZHRoICE9PSBjb21wb25lbnRXaWR0aCkge1xuICAgICAgICAgICAgdHJpZ2dlck9uU2Nyb2xsKCk7XG4gICAgICAgICAgICBzZXRDb21wb25lbnRXaWR0aChtZXJnZWRXaWR0aCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChob3Jpem9uU2Nyb2xsKSB7XG4gICAgICAgICAgICBvbkZ1bGxUYWJsZVJlc2l6ZSgpO1xuICAgICAgICB9XG4gICAgfSwgW2hvcml6b25TY3JvbGxdKTtcbiAgICAvLyBTeW5jIHNjcm9sbCBiYXIgd2hlbiBpbml0IG9yIGBob3Jpem9uU2Nyb2xsYCwgYGRhdGFgIGFuZCBgY29sdW1ucy5sZW5ndGhgIGNoYW5nZWRcbiAgICBjb25zdCBtb3VudGVkID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICAvLyBvbkZ1bGxUYWJsZVJlc2l6ZSB3aWxsIGJlIHRyaWdnZXIgb25jZSB3aGVuIFJlc2l6ZU9ic2VydmVyIGlzIG1vdW50ZWRcbiAgICAgICAgLy8gVGhpcyB3aWxsIHJlZHVjZSBvbmUgZHVwbGljYXRlZCB0cmlnZ2VyT25TY3JvbGwgdGltZVxuICAgICAgICBpZiAobW91bnRlZC5jdXJyZW50KSB7XG4gICAgICAgICAgICB0cmlnZ2VyT25TY3JvbGwoKTtcbiAgICAgICAgfVxuICAgIH0sIFtob3Jpem9uU2Nyb2xsLCBkYXRhLCBjb2x1bW5zLmxlbmd0aF0pO1xuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIG1vdW50ZWQuY3VycmVudCA9IHRydWU7XG4gICAgfSwgW10pO1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PSBFZmZlY3RzID09PT09PT09PT09PT09PT09PT09PT1cbiAgICBjb25zdCBbc2Nyb2xsYmFyU2l6ZSwgc2V0U2Nyb2xsYmFyU2l6ZV0gPSBSZWFjdC51c2VTdGF0ZSgwKTtcbiAgICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoIXRhaWxvciB8fCAhdXNlSW50ZXJuYWxIb29rcykge1xuICAgICAgICAgICAgaWYgKHNjcm9sbEJvZHlSZWYuY3VycmVudCBpbnN0YW5jZW9mIEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBzZXRTY3JvbGxiYXJTaXplKGdldFRhcmdldFNjcm9sbEJhclNpemUoc2Nyb2xsQm9keVJlZi5jdXJyZW50KS53aWR0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzZXRTY3JvbGxiYXJTaXplKGdldFRhcmdldFNjcm9sbEJhclNpemUoc2Nyb2xsQm9keUNvbnRhaW5lclJlZi5jdXJyZW50KS53aWR0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LCBbXSk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09IElOVEVSTkFMIEhPT0tTID09PT09PT09PT09PT09PT09PVxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmICh1c2VJbnRlcm5hbEhvb2tzICYmIGludGVybmFsUmVmcykge1xuICAgICAgICAgICAgaW50ZXJuYWxSZWZzLmJvZHkuY3VycmVudCA9IHNjcm9sbEJvZHlSZWYuY3VycmVudDtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vID09ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PVxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vID09PT09PT09PT09PT09PT09PT0gUmVuZGVyOiBGdW5jID09PT09PT09PT09PT09PT09PT1cbiAgICBjb25zdCByZW5kZXJGaXhlZEhlYWRlclRhYmxlID0gUmVhY3QudXNlQ2FsbGJhY2soZml4ZWRIb2xkZXJQYXNzUHJvcHMgPT4gKF9qc3hzKF9GcmFnbWVudCwgeyBjaGlsZHJlbjogW19qc3goSGVhZGVyLCBPYmplY3QuYXNzaWduKHt9LCBmaXhlZEhvbGRlclBhc3NQcm9wcykpLCBmaXhGb290ZXIgPT09ICd0b3AnICYmIF9qc3goRm9vdGVyLCBPYmplY3QuYXNzaWduKHt9LCBmaXhlZEhvbGRlclBhc3NQcm9wcywgeyBjaGlsZHJlbjogc3VtbWFyeU5vZGUgfSkpXSB9KSksIFtmaXhGb290ZXIsIHN1bW1hcnlOb2RlXSk7XG4gICAgY29uc3QgcmVuZGVyRml4ZWRGb290ZXJUYWJsZSA9IFJlYWN0LnVzZUNhbGxiYWNrKGZpeGVkSG9sZGVyUGFzc1Byb3BzID0+IF9qc3goRm9vdGVyLCBPYmplY3QuYXNzaWduKHt9LCBmaXhlZEhvbGRlclBhc3NQcm9wcywgeyBjaGlsZHJlbjogc3VtbWFyeU5vZGUgfSkpLCBbc3VtbWFyeU5vZGVdKTtcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09IFJlbmRlcjogTm9kZSA9PT09PT09PT09PT09PT09PT09XG4gICAgY29uc3QgVGFibGVDb21wb25lbnQgPSBnZXRDb21wb25lbnQoWyd0YWJsZSddLCAndGFibGUnKTtcbiAgICAvLyBUYWJsZSBsYXlvdXRcbiAgICBjb25zdCBtZXJnZWRUYWJsZUxheW91dCA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBpZiAodGFibGVMYXlvdXQpIHtcbiAgICAgICAgICAgIHJldHVybiB0YWJsZUxheW91dDtcbiAgICAgICAgfVxuICAgICAgICAvLyBXaGVuIHNjcm9sbC54IGlzIG1heC1jb250ZW50LCBubyBuZWVkIHRvIGZpeCB0YWJsZSBsYXlvdXRcbiAgICAgICAgLy8gaXQncyB3aWR0aCBzaG91bGQgc3RyZXRjaCBvdXQgdG8gZml0IGNvbnRlbnRcbiAgICAgICAgaWYgKGZpeENvbHVtbikge1xuICAgICAgICAgICAgcmV0dXJuIG1lcmdlZFNjcm9sbFggPT09ICdtYXgtY29udGVudCcgPyAnYXV0bycgOiAnZml4ZWQnO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmaXhIZWFkZXIgfHwgaXNTdGlja3kgfHwgZmxhdHRlbkNvbHVtbnMuc29tZSgoeyBlbGxpcHNpcyB9KSA9PiBlbGxpcHNpcykpIHtcbiAgICAgICAgICAgIHJldHVybiAnZml4ZWQnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnYXV0byc7XG4gICAgfSwgW2ZpeEhlYWRlciwgZml4Q29sdW1uLCBmbGF0dGVuQ29sdW1ucywgdGFibGVMYXlvdXQsIGlzU3RpY2t5XSk7XG4gICAgbGV0IGdyb3VwVGFibGVOb2RlO1xuICAgIC8vIEhlYWRlciBwcm9wc1xuICAgIGNvbnN0IGhlYWRlclByb3BzID0ge1xuICAgICAgICBjb2xXaWR0aHMsXG4gICAgICAgIGNvbHVtQ291bnQ6IGZsYXR0ZW5Db2x1bW5zLmxlbmd0aCxcbiAgICAgICAgc3RpY2t5T2Zmc2V0cyxcbiAgICAgICAgb25IZWFkZXJSb3csXG4gICAgICAgIGZpeEhlYWRlcixcbiAgICAgICAgc2Nyb2xsLFxuICAgIH07XG4gICAgLy8gRW1wdHlcbiAgICBjb25zdCBlbXB0eU5vZGUgPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICAgICAgaWYgKGhhc0RhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgZW1wdHlUZXh0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZXR1cm4gZW1wdHlUZXh0KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVtcHR5VGV4dDtcbiAgICB9LCBbaGFzRGF0YSwgZW1wdHlUZXh0XSk7XG4gICAgLy8gQm9keVxuICAgIGNvbnN0IGJvZHlUYWJsZSA9IChfanN4KEJvZHksIHsgZGF0YTogbWVyZ2VkRGF0YSwgbWVhc3VyZUNvbHVtbldpZHRoOiBmaXhIZWFkZXIgfHwgaG9yaXpvblNjcm9sbCB8fCBpc1N0aWNreSB9KSk7XG4gICAgY29uc3QgYm9keUNvbEdyb3VwID0gKF9qc3goQ29sR3JvdXAsIHsgY29sV2lkdGhzOiBmbGF0dGVuQ29sdW1ucy5tYXAoKHsgd2lkdGggfSkgPT4gd2lkdGgpLCBjb2x1bW5zOiBmbGF0dGVuQ29sdW1ucyB9KSk7XG4gICAgY29uc3QgY2FwdGlvbkVsZW1lbnQgPSBjYXB0aW9uICE9PSBudWxsICYmIGNhcHRpb24gIT09IHVuZGVmaW5lZCA/IChfanN4KFwiY2FwdGlvblwiLCB7IGNsYXNzTmFtZTogYCR7cHJlZml4Q2xzfS1jYXB0aW9uYCwgY2hpbGRyZW46IGNhcHRpb24gfSkpIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IGRhdGFQcm9wcyA9IHBpY2tBdHRycyhwcm9wcywgeyBkYXRhOiB0cnVlIH0pO1xuICAgIGNvbnN0IGFyaWFQcm9wcyA9IHBpY2tBdHRycyhwcm9wcywgeyBhcmlhOiB0cnVlIH0pO1xuICAgIGlmIChmaXhIZWFkZXIgfHwgaXNTdGlja3kpIHtcbiAgICAgICAgLy8gPj4+Pj4+IEZpeGVkIEhlYWRlclxuICAgICAgICBsZXQgYm9keUNvbnRlbnQ7XG4gICAgICAgIGlmICh0eXBlb2YgY3VzdG9taXplU2Nyb2xsQm9keSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgYm9keUNvbnRlbnQgPSBjdXN0b21pemVTY3JvbGxCb2R5KG1lcmdlZERhdGEsIHtcbiAgICAgICAgICAgICAgICBzY3JvbGxiYXJTaXplLFxuICAgICAgICAgICAgICAgIHJlZjogc2Nyb2xsQm9keVJlZixcbiAgICAgICAgICAgICAgICBvblNjcm9sbDogb25JbnRlcm5hbFNjcm9sbCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaGVhZGVyUHJvcHMuY29sV2lkdGhzID0gZmxhdHRlbkNvbHVtbnMubWFwKCh7IHdpZHRoIH0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29sV2lkdGggPSBpbmRleCA9PT0gZmxhdHRlbkNvbHVtbnMubGVuZ3RoIC0gMSA/IHdpZHRoIC0gc2Nyb2xsYmFyU2l6ZSA6IHdpZHRoO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY29sV2lkdGggPT09ICdudW1iZXInICYmICFOdW1iZXIuaXNOYU4oY29sV2lkdGgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb2xXaWR0aDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgd2FybmluZyhwcm9wcy5jb2x1bW5zLmxlbmd0aCA9PT0gMCwgJ1doZW4gdXNlIGBjb21wb25lbnRzLmJvZHlgIHdpdGggcmVuZGVyIHByb3BzLiBFYWNoIGNvbHVtbiBzaG91bGQgaGF2ZSBhIGZpeGVkIGB3aWR0aGAgdmFsdWUuJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBib2R5Q29udGVudCA9IChfanN4KFwiZGl2XCIsIHsgc3R5bGU6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgc2Nyb2xsWFN0eWxlKSwgc2Nyb2xsWVN0eWxlKSwgb25TY3JvbGw6IG9uQm9keVNjcm9sbCwgcmVmOiBzY3JvbGxCb2R5UmVmLCBjbGFzc05hbWU6IGAke3ByZWZpeENsc30tYm9keWAsIGNoaWxkcmVuOiBfanN4cyhUYWJsZUNvbXBvbmVudCwgT2JqZWN0LmFzc2lnbih7IHN0eWxlOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHNjcm9sbFRhYmxlU3R5bGUpLCB7IHRhYmxlTGF5b3V0OiBtZXJnZWRUYWJsZUxheW91dCB9KSB9LCBhcmlhUHJvcHMsIHsgY2hpbGRyZW46IFtjYXB0aW9uRWxlbWVudCwgYm9keUNvbEdyb3VwLCBib2R5VGFibGUsICFmaXhGb290ZXIgJiYgc3VtbWFyeU5vZGUgJiYgKF9qc3goRm9vdGVyLCB7IHN0aWNreU9mZnNldHM6IHN0aWNreU9mZnNldHMsIGZsYXR0ZW5Db2x1bW5zOiBmbGF0dGVuQ29sdW1ucywgY2hpbGRyZW46IHN1bW1hcnlOb2RlIH0pKV0gfSkpIH0pKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBGaXhlZCBob2xkZXIgc2hhcmUgdGhlIHByb3BzXG4gICAgICAgIGNvbnN0IGZpeGVkSG9sZGVyUHJvcHMgPSBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7IG5vRGF0YTogIW1lcmdlZERhdGEubGVuZ3RoLCBtYXhDb250ZW50U2Nyb2xsOiBob3Jpem9uU2Nyb2xsICYmIG1lcmdlZFNjcm9sbFggPT09ICdtYXgtY29udGVudCcgfSwgaGVhZGVyUHJvcHMpLCBjb2x1bW5Db250ZXh0KSwgeyBkaXJlY3Rpb24sXG4gICAgICAgICAgICBzdGlja3lDbGFzc05hbWUsIHNjcm9sbFg6IG1lcmdlZFNjcm9sbFgsIHRhYmxlTGF5b3V0OiBtZXJnZWRUYWJsZUxheW91dCwgb25TY3JvbGw6IG9uSW50ZXJuYWxTY3JvbGwgfSk7XG4gICAgICAgIGdyb3VwVGFibGVOb2RlID0gKF9qc3hzKF9GcmFnbWVudCwgeyBjaGlsZHJlbjogW3Nob3dIZWFkZXIgIT09IGZhbHNlICYmIChfanN4KEZpeGVkSG9sZGVyLCBPYmplY3QuYXNzaWduKHt9LCBmaXhlZEhvbGRlclByb3BzLCB7IHN0aWNreVRvcE9mZnNldDogb2Zmc2V0SGVhZGVyLCBjbGFzc05hbWU6IGAke3ByZWZpeENsc30taGVhZGVyYCwgcmVmOiBzY3JvbGxIZWFkZXJSZWYsIGNvbEdyb3VwOiBib2R5Q29sR3JvdXAsIGNoaWxkcmVuOiByZW5kZXJGaXhlZEhlYWRlclRhYmxlIH0pKSksIGJvZHlDb250ZW50LCBmaXhGb290ZXIgJiYgZml4Rm9vdGVyICE9PSAndG9wJyAmJiAoX2pzeChGaXhlZEhvbGRlciwgT2JqZWN0LmFzc2lnbih7fSwgZml4ZWRIb2xkZXJQcm9wcywgeyBzdGlja3lCb3R0b21PZmZzZXQ6IG9mZnNldFN1bW1hcnksIGNsYXNzTmFtZTogYCR7cHJlZml4Q2xzfS1zdW1tYXJ5YCwgcmVmOiBzY3JvbGxTdW1tYXJ5UmVmLCBjb2xHcm91cDogYm9keUNvbEdyb3VwLCBjaGlsZHJlbjogcmVuZGVyRml4ZWRGb290ZXJUYWJsZSB9KSkpLCBpc1N0aWNreSAmJiBzY3JvbGxCb2R5UmVmLmN1cnJlbnQgJiYgc2Nyb2xsQm9keVJlZi5jdXJyZW50IGluc3RhbmNlb2YgRWxlbWVudCAmJiAoX2pzeChTdGlja3lTY3JvbGxCYXIsIHsgcmVmOiBzdGlja3lSZWYsIG9mZnNldFNjcm9sbDogb2Zmc2V0U2Nyb2xsLCBzY3JvbGxCb2R5UmVmOiBzY3JvbGxCb2R5UmVmLCBvblNjcm9sbDogb25JbnRlcm5hbFNjcm9sbCwgY29udGFpbmVyOiBjb250YWluZXIsIGRpcmVjdGlvbjogZGlyZWN0aW9uIH0pKV0gfSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgLy8gPj4+Pj4+IFVuaXF1ZSB0YWJsZVxuICAgICAgICBncm91cFRhYmxlTm9kZSA9IChfanN4KFwiZGl2XCIsIHsgc3R5bGU6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBzY3JvbGxYU3R5bGUpLCBzY3JvbGxZU3R5bGUpLCBzdHlsZXMgPT09IG51bGwgfHwgc3R5bGVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdHlsZXMuY29udGVudCksIGNsYXNzTmFtZTogY2xzeChgJHtwcmVmaXhDbHN9LWNvbnRlbnRgLCBjbGFzc05hbWVzID09PSBudWxsIHx8IGNsYXNzTmFtZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNsYXNzTmFtZXMuY29udGVudCksIG9uU2Nyb2xsOiBvbkludGVybmFsU2Nyb2xsLCByZWY6IHNjcm9sbEJvZHlSZWYsIGNoaWxkcmVuOiBfanN4cyhUYWJsZUNvbXBvbmVudCwgT2JqZWN0LmFzc2lnbih7IHN0eWxlOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHNjcm9sbFRhYmxlU3R5bGUpLCB7IHRhYmxlTGF5b3V0OiBtZXJnZWRUYWJsZUxheW91dCB9KSB9LCBhcmlhUHJvcHMsIHsgY2hpbGRyZW46IFtjYXB0aW9uRWxlbWVudCwgYm9keUNvbEdyb3VwLCBzaG93SGVhZGVyICE9PSBmYWxzZSAmJiBfanN4KEhlYWRlciwgT2JqZWN0LmFzc2lnbih7fSwgaGVhZGVyUHJvcHMsIGNvbHVtbkNvbnRleHQpKSwgYm9keVRhYmxlLCBzdW1tYXJ5Tm9kZSAmJiAoX2pzeChGb290ZXIsIHsgc3RpY2t5T2Zmc2V0czogc3RpY2t5T2Zmc2V0cywgZmxhdHRlbkNvbHVtbnM6IGZsYXR0ZW5Db2x1bW5zLCBjaGlsZHJlbjogc3VtbWFyeU5vZGUgfSkpXSB9KSkgfSkpO1xuICAgIH1cbiAgICBjb25zdCB0YWJsZVN0eWxlID0gT2JqZWN0LmFzc2lnbih7fSwgc3R5bGUpO1xuICAgIC8vIEFkZCBjc3MgdmFyIGZvciBzdGlja3kgaGVhZGVyIGB6SW5kZXhgIGNhbGNcbiAgICBpZiAoaXNTdGlja3kpIHtcbiAgICAgICAgdGFibGVTdHlsZVsnLS1jb2x1bW5zLWNvdW50J10gPSBmbGF0dGVuQ29sdW1ucy5sZW5ndGg7XG4gICAgfVxuICAgIGxldCBmdWxsVGFibGUgPSAoX2pzeHMoXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7IGNsYXNzTmFtZTogY2xzeChwcmVmaXhDbHMsIGNsYXNzTmFtZSwge1xuICAgICAgICAgICAgW2Ake3ByZWZpeENsc30tcnRsYF06IGRpcmVjdGlvbiA9PT0gJ3J0bCcsXG4gICAgICAgICAgICBbYCR7cHJlZml4Q2xzfS1maXgtc3RhcnQtc2hhZG93YF06IGhvcml6b25TY3JvbGwsXG4gICAgICAgICAgICBbYCR7cHJlZml4Q2xzfS1maXgtZW5kLXNoYWRvd2BdOiBob3Jpem9uU2Nyb2xsLFxuICAgICAgICAgICAgW2Ake3ByZWZpeENsc30tZml4LXN0YXJ0LXNoYWRvdy1zaG93YF06IGhvcml6b25TY3JvbGwgJiYgc2hhZG93U3RhcnQsXG4gICAgICAgICAgICBbYCR7cHJlZml4Q2xzfS1maXgtZW5kLXNoYWRvdy1zaG93YF06IGhvcml6b25TY3JvbGwgJiYgc2hhZG93RW5kLFxuICAgICAgICAgICAgW2Ake3ByZWZpeENsc30tbGF5b3V0LWZpeGVkYF06IHRhYmxlTGF5b3V0ID09PSAnZml4ZWQnLFxuICAgICAgICAgICAgW2Ake3ByZWZpeENsc30tZml4ZWQtaGVhZGVyYF06IGZpeEhlYWRlcixcbiAgICAgICAgICAgIC8qKiBObyB1c2VkIGJ1dCBmb3IgY29tcGF0aWJsZSAqL1xuICAgICAgICAgICAgW2Ake3ByZWZpeENsc30tZml4ZWQtY29sdW1uYF06IGZpeENvbHVtbixcbiAgICAgICAgICAgIFtgJHtwcmVmaXhDbHN9LXNjcm9sbC1ob3Jpem9udGFsYF06IGhvcml6b25TY3JvbGwsXG4gICAgICAgICAgICBbYCR7cHJlZml4Q2xzfS1oYXMtZml4LXN0YXJ0YF06IChfYSA9IGZsYXR0ZW5Db2x1bW5zWzBdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZml4ZWQsXG4gICAgICAgICAgICBbYCR7cHJlZml4Q2xzfS1oYXMtZml4LWVuZGBdOiAoKF9iID0gZmxhdHRlbkNvbHVtbnNbZmxhdHRlbkNvbHVtbnMubGVuZ3RoIC0gMV0pID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5maXhlZCkgPT09ICdlbmQnLFxuICAgICAgICB9KSwgc3R5bGU6IHRhYmxlU3R5bGUsIGlkOiBpZCwgcmVmOiBmdWxsVGFibGVSZWYgfSwgZGF0YVByb3BzLCB7IGNoaWxkcmVuOiBbdGl0bGUgJiYgKF9qc3goUGFuZWwsIHsgY2xhc3NOYW1lOiBjbHN4KGAke3ByZWZpeENsc30tdGl0bGVgLCBjbGFzc05hbWVzID09PSBudWxsIHx8IGNsYXNzTmFtZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNsYXNzTmFtZXMudGl0bGUpLCBzdHlsZTogc3R5bGVzID09PSBudWxsIHx8IHN0eWxlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3R5bGVzLnRpdGxlLCBjaGlsZHJlbjogdGl0bGUobWVyZ2VkRGF0YSkgfSkpLCBfanN4KFwiZGl2XCIsIHsgcmVmOiBzY3JvbGxCb2R5Q29udGFpbmVyUmVmLCBjbGFzc05hbWU6IGNsc3goYCR7cHJlZml4Q2xzfS1jb250YWluZXJgLCBjbGFzc05hbWVzID09PSBudWxsIHx8IGNsYXNzTmFtZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNsYXNzTmFtZXMuc2VjdGlvbiksIHN0eWxlOiBzdHlsZXMgPT09IG51bGwgfHwgc3R5bGVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdHlsZXMuc2VjdGlvbiwgY2hpbGRyZW46IGdyb3VwVGFibGVOb2RlIH0pLCBmb290ZXIgJiYgKF9qc3goUGFuZWwsIHsgY2xhc3NOYW1lOiBjbHN4KGAke3ByZWZpeENsc30tZm9vdGVyYCwgY2xhc3NOYW1lcyA9PT0gbnVsbCB8fCBjbGFzc05hbWVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjbGFzc05hbWVzLmZvb3RlciksIHN0eWxlOiBzdHlsZXMgPT09IG51bGwgfHwgc3R5bGVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdHlsZXMuZm9vdGVyLCBjaGlsZHJlbjogZm9vdGVyKG1lcmdlZERhdGEpIH0pKV0gfSkpKTtcbiAgICBpZiAoaG9yaXpvblNjcm9sbCkge1xuICAgICAgICBmdWxsVGFibGUgPSAoX2pzeChSZXNpemVPYnNlcnZlciwgeyBvblJlc2l6ZTogKHsgb2Zmc2V0V2lkdGggfSkgPT4gb25GdWxsVGFibGVSZXNpemUob2Zmc2V0V2lkdGgpLCBjaGlsZHJlbjogZnVsbFRhYmxlIH0pKTtcbiAgICB9XG4gICAgY29uc3QgZml4ZWRJbmZvTGlzdCA9IHVzZUZpeGVkSW5mbyhmbGF0dGVuQ29sdW1ucywgc3RpY2t5T2Zmc2V0cyk7XG4gICAgY29uc3QgVGFibGVDb250ZXh0VmFsdWUgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgICAgIC8vIFNjcm9sbFxuICAgICAgICBzY3JvbGxYOiBtZXJnZWRTY3JvbGxYLFxuICAgICAgICBzY3JvbGxJbmZvLFxuICAgICAgICBjbGFzc05hbWVzLFxuICAgICAgICBzdHlsZXMsXG4gICAgICAgIC8vIFRhYmxlXG4gICAgICAgIHByZWZpeENscyxcbiAgICAgICAgZ2V0Q29tcG9uZW50LFxuICAgICAgICBzY3JvbGxiYXJTaXplLFxuICAgICAgICBkaXJlY3Rpb24sXG4gICAgICAgIGZpeGVkSW5mb0xpc3QsXG4gICAgICAgIGlzU3RpY2t5LFxuICAgICAgICBjb21wb25lbnRXaWR0aCxcbiAgICAgICAgZml4SGVhZGVyLFxuICAgICAgICBmaXhDb2x1bW4sXG4gICAgICAgIGhvcml6b25TY3JvbGwsXG4gICAgICAgIC8vIEJvZHlcbiAgICAgICAgdGFibGVMYXlvdXQ6IG1lcmdlZFRhYmxlTGF5b3V0LFxuICAgICAgICByb3dDbGFzc05hbWUsXG4gICAgICAgIGV4cGFuZGVkUm93Q2xhc3NOYW1lOiBleHBhbmRhYmxlQ29uZmlnLmV4cGFuZGVkUm93Q2xhc3NOYW1lLFxuICAgICAgICBleHBhbmRJY29uOiBtZXJnZWRFeHBhbmRJY29uLFxuICAgICAgICBleHBhbmRhYmxlVHlwZSxcbiAgICAgICAgZXhwYW5kUm93QnlDbGljazogZXhwYW5kYWJsZUNvbmZpZy5leHBhbmRSb3dCeUNsaWNrLFxuICAgICAgICBleHBhbmRlZFJvd1JlbmRlcjogZXhwYW5kYWJsZUNvbmZpZy5leHBhbmRlZFJvd1JlbmRlcixcbiAgICAgICAgZXhwYW5kZWRSb3dPZmZzZXQ6IGV4cGFuZGFibGVDb25maWcuZXhwYW5kZWRSb3dPZmZzZXQsXG4gICAgICAgIG9uVHJpZ2dlckV4cGFuZCxcbiAgICAgICAgZXhwYW5kSWNvbkNvbHVtbkluZGV4OiBleHBhbmRhYmxlQ29uZmlnLmV4cGFuZEljb25Db2x1bW5JbmRleCxcbiAgICAgICAgaW5kZW50U2l6ZTogZXhwYW5kYWJsZUNvbmZpZy5pbmRlbnRTaXplLFxuICAgICAgICBhbGxDb2x1bW5zRml4ZWRMZWZ0OiBmbGF0dGVuQ29sdW1ucy5ldmVyeShjb2wgPT4gY29sLmZpeGVkID09PSAnc3RhcnQnKSxcbiAgICAgICAgZW1wdHlOb2RlLFxuICAgICAgICAvLyBDb2x1bW5cbiAgICAgICAgY29sdW1ucyxcbiAgICAgICAgZmxhdHRlbkNvbHVtbnMsXG4gICAgICAgIG9uQ29sdW1uUmVzaXplLFxuICAgICAgICBjb2xXaWR0aHMsXG4gICAgICAgIC8vIFJvd1xuICAgICAgICBob3ZlclN0YXJ0Um93OiBzdGFydFJvdyxcbiAgICAgICAgaG92ZXJFbmRSb3c6IGVuZFJvdyxcbiAgICAgICAgb25Ib3ZlcixcbiAgICAgICAgcm93RXhwYW5kYWJsZTogZXhwYW5kYWJsZUNvbmZpZy5yb3dFeHBhbmRhYmxlLFxuICAgICAgICBvblJvdyxcbiAgICAgICAgZ2V0Um93S2V5LFxuICAgICAgICBleHBhbmRlZEtleXM6IG1lcmdlZEV4cGFuZGVkS2V5cyxcbiAgICAgICAgY2hpbGRyZW5Db2x1bW5OYW1lOiBtZXJnZWRDaGlsZHJlbkNvbHVtbk5hbWUsXG4gICAgICAgIHJvd0hvdmVyYWJsZSxcbiAgICAgICAgLy8gTWVhc3VyZSBSb3dcbiAgICAgICAgbWVhc3VyZVJvd1JlbmRlcixcbiAgICB9KSwgW1xuICAgICAgICAvLyBTY3JvbGxcbiAgICAgICAgbWVyZ2VkU2Nyb2xsWCxcbiAgICAgICAgc2Nyb2xsSW5mbyxcbiAgICAgICAgY2xhc3NOYW1lcyxcbiAgICAgICAgc3R5bGVzLFxuICAgICAgICAvLyBUYWJsZVxuICAgICAgICBwcmVmaXhDbHMsXG4gICAgICAgIGdldENvbXBvbmVudCxcbiAgICAgICAgc2Nyb2xsYmFyU2l6ZSxcbiAgICAgICAgZGlyZWN0aW9uLFxuICAgICAgICBmaXhlZEluZm9MaXN0LFxuICAgICAgICBpc1N0aWNreSxcbiAgICAgICAgY29tcG9uZW50V2lkdGgsXG4gICAgICAgIGZpeEhlYWRlcixcbiAgICAgICAgZml4Q29sdW1uLFxuICAgICAgICBob3Jpem9uU2Nyb2xsLFxuICAgICAgICAvLyBCb2R5XG4gICAgICAgIG1lcmdlZFRhYmxlTGF5b3V0LFxuICAgICAgICByb3dDbGFzc05hbWUsXG4gICAgICAgIGV4cGFuZGFibGVDb25maWcuZXhwYW5kZWRSb3dDbGFzc05hbWUsXG4gICAgICAgIG1lcmdlZEV4cGFuZEljb24sXG4gICAgICAgIGV4cGFuZGFibGVUeXBlLFxuICAgICAgICBleHBhbmRhYmxlQ29uZmlnLmV4cGFuZFJvd0J5Q2xpY2ssXG4gICAgICAgIGV4cGFuZGFibGVDb25maWcuZXhwYW5kZWRSb3dSZW5kZXIsXG4gICAgICAgIGV4cGFuZGFibGVDb25maWcuZXhwYW5kZWRSb3dPZmZzZXQsXG4gICAgICAgIG9uVHJpZ2dlckV4cGFuZCxcbiAgICAgICAgZXhwYW5kYWJsZUNvbmZpZy5leHBhbmRJY29uQ29sdW1uSW5kZXgsXG4gICAgICAgIGV4cGFuZGFibGVDb25maWcuaW5kZW50U2l6ZSxcbiAgICAgICAgZW1wdHlOb2RlLFxuICAgICAgICAvLyBDb2x1bW5cbiAgICAgICAgY29sdW1ucyxcbiAgICAgICAgZmxhdHRlbkNvbHVtbnMsXG4gICAgICAgIG9uQ29sdW1uUmVzaXplLFxuICAgICAgICBjb2xXaWR0aHMsXG4gICAgICAgIC8vIFJvd1xuICAgICAgICBzdGFydFJvdyxcbiAgICAgICAgZW5kUm93LFxuICAgICAgICBvbkhvdmVyLFxuICAgICAgICBleHBhbmRhYmxlQ29uZmlnLnJvd0V4cGFuZGFibGUsXG4gICAgICAgIG9uUm93LFxuICAgICAgICBnZXRSb3dLZXksXG4gICAgICAgIG1lcmdlZEV4cGFuZGVkS2V5cyxcbiAgICAgICAgbWVyZ2VkQ2hpbGRyZW5Db2x1bW5OYW1lLFxuICAgICAgICByb3dIb3ZlcmFibGUsXG4gICAgICAgIG1lYXN1cmVSb3dSZW5kZXIsXG4gICAgXSk7XG4gICAgcmV0dXJuIF9qc3goVGFibGVDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBUYWJsZUNvbnRleHRWYWx1ZSwgY2hpbGRyZW46IGZ1bGxUYWJsZSB9KTtcbn07XG5jb25zdCBSZWZUYWJsZSA9IFJlYWN0LmZvcndhcmRSZWYoVGFibGUpO1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBSZWZUYWJsZS5kaXNwbGF5TmFtZSA9ICdUYWJsZSc7XG59XG5leHBvcnQgY29uc3QgZ2VuVGFibGUgPSAoc2hvdWxkVHJpZ2dlclJlbmRlcikgPT4ge1xuICAgIHJldHVybiBtYWtlSW1tdXRhYmxlKFJlZlRhYmxlLCBzaG91bGRUcmlnZ2VyUmVuZGVyKTtcbn07XG5jb25zdCBJbW11dGFibGVUYWJsZSA9IGdlblRhYmxlKCk7XG5JbW11dGFibGVUYWJsZS5FWFBBTkRfQ09MVU1OID0gRVhQQU5EX0NPTFVNTjtcbkltbXV0YWJsZVRhYmxlLklOVEVSTkFMX0hPT0tTID0gSU5URVJOQUxfSE9PS1M7XG5JbW11dGFibGVUYWJsZS5Db2x1bW4gPSBDb2x1bW47XG5JbW11dGFibGVUYWJsZS5Db2x1bW5Hcm91cCA9IENvbHVtbkdyb3VwO1xuSW1tdXRhYmxlVGFibGUuU3VtbWFyeSA9IEZvb3RlckNvbXBvbmVudHM7XG5leHBvcnQgZGVmYXVsdCBJbW11dGFibGVUYWJsZTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
@@ -96,7 +96,6 @@ var Grid = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
96
96
|
});
|
|
97
97
|
}
|
|
98
98
|
});
|
|
99
|
-
// https://github.com/ant-design/ant-design/issues/54734
|
|
100
99
|
Object.defineProperty(obj, 'scrollTop', {
|
|
101
100
|
get: function get() {
|
|
102
101
|
var _a;
|
|
@@ -284,4 +283,4 @@ if (process.env.NODE_ENV !== 'production') {
|
|
|
284
283
|
ResponseGrid.displayName = 'ResponseGrid';
|
|
285
284
|
}
|
|
286
285
|
export default ResponseGrid;
|
|
287
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvaW50ZXJuYWwva2VybmVsL1ZpcnR1YWxUYWJsZS9Cb2R5R3JpZC5qcyIsImNvbXBvbmVudHMvVGFibGUvaW50ZXJuYWwva2VybmVsL3NyYy9jb21wb25lbnRzL1RhYmxlL2ludGVybmFsL2tlcm5lbC9WaXJ0dWFsVGFibGUvQm9keUdyaWQudHN4Il0sIm5hbWVzIjpbIl9fcmVzdCIsInMiLCJlIiwidCIsInAiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpbmRleE9mIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiaSIsImxlbmd0aCIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwianN4IiwiX2pzeCIsInVzZUNvbnRleHQiLCJWaXJ0dWFsTGlzdCIsIlJlYWN0IiwiVGFibGVDb250ZXh0IiwicmVzcG9uc2VJbW11dGFibGUiLCJ1c2VGbGF0dGVuUmVjb3JkcyIsIkJvZHlMaW5lIiwiR3JpZENvbnRleHQiLCJTdGF0aWNDb250ZXh0IiwiR3JpZCIsImZvcndhcmRSZWYiLCJwcm9wcyIsInJlZiIsImRhdGEiLCJvblNjcm9sbCIsIl91c2VDb250ZXh0IiwiZmxhdHRlbkNvbHVtbnMiLCJvbkNvbHVtblJlc2l6ZSIsImdldFJvd0tleSIsImV4cGFuZGVkS2V5cyIsInByZWZpeENscyIsImNoaWxkcmVuQ29sdW1uTmFtZSIsInNjcm9sbFgiLCJkaXJlY3Rpb24iLCJfdXNlQ29udGV4dDIiLCJzdGlja3kiLCJzY3JvbGxZIiwibGlzdEl0ZW1IZWlnaHQiLCJnZXRDb21wb25lbnQiLCJvblRhYmxlUHJvcFNjcm9sbCIsImxpc3RSZWYiLCJ1c2VSZWYiLCJmbGF0dGVuRGF0YSIsImNvbHVtbnNXaWR0aCIsInVzZU1lbW8iLCJ0b3RhbCIsIm1hcCIsIl9yZWYiLCJ3aWR0aCIsIm1pbldpZHRoIiwia2V5IiwiZmluYWxXaWR0aCIsIk1hdGgiLCJtYXgiLCJjb2x1bW5zT2Zmc2V0IiwiY29sV2lkdGgiLCJ1c2VFZmZlY3QiLCJmb3JFYWNoIiwiX3JlZjIiLCJfcmVmMyIsIl9zbGljZWRUb0FycmF5IiwidXNlSW1wZXJhdGl2ZUhhbmRsZSIsIl9hIiwib2JqIiwic2Nyb2xsVG8iLCJjb25maWciLCJfYiIsIm9mZnNldCIsInJlc3RDb25maWciLCJjdXJyZW50IiwiYXNzaWduIiwiYWxpZ24iLCJuYXRpdmVFbGVtZW50IiwiZGVmaW5lUHJvcGVydHkiLCJnZXQiLCJnZXRTY3JvbGxJbmZvIiwieCIsInNldCIsInZhbHVlIiwibGVmdCIsInkiLCJ0b3AiLCJnZXRSb3dTcGFuIiwiY29sdW1uIiwiaW5kZXgiLCJyZWNvcmQiLCJvbkNlbGwiLCJjZWxsUHJvcHMiLCJyb3dTcGFuIiwiZXh0cmFSZW5kZXIiLCJpbmZvIiwic3RhcnQiLCJlbmQiLCJnZXRTaXplIiwib2Zmc2V0WSIsImZpcnN0Um93U3BhbkNvbHVtbnMiLCJmaWx0ZXIiLCJzdGFydEluZGV4IiwiX2xvb3AiLCJsYXN0Um93U3BhbkNvbHVtbnMiLCJlbmRJbmRleCIsIl9sb29wMiIsIl9pIiwic3BhbkxpbmVzIiwiX2xvb3AzIiwiX2kyIiwiaXRlbSIsInNvbWUiLCJwdXNoIiwibm9kZXMiLCJyb3dLZXkiLCJnZXRIZWlnaHQiLCJlbmRJdGVtSW5kZXgiLCJlbmRJdGVtIiwic2FmZUVuZEluZGV4IiwibWluIiwic2FmZUVuZEl0ZW0iLCJlbmRJdGVtS2V5Iiwic2l6ZUluZm8iLCJib3R0b20iLCJzdHlsZSIsImV4dHJhIiwiZ3JpZENvbnRleHQiLCJ0YmxQcmVmaXhDbHMiLCJjb25jYXQiLCJ3cmFwcGVyQ29tcG9uZW50IiwiaG9yaXpvbnRhbFNjcm9sbEJhclN0eWxlIiwicG9zaXRpb24iLCJfdHlwZW9mIiwib2Zmc2V0U2Nyb2xsIiwiUHJvdmlkZXIiLCJjaGlsZHJlbiIsImZ1bGxIZWlnaHQiLCJzdHlsZXMiLCJob3Jpem9udGFsU2Nyb2xsQmFyIiwiY2xhc3NOYW1lIiwiaGVpZ2h0IiwiaXRlbUhlaWdodCIsIml0ZW1LZXkiLCJjb21wb25lbnQiLCJzY3JvbGxXaWR0aCIsIm9uVmlydHVhbFNjcm9sbCIsIl9yZWY0IiwiY3VycmVudFRhcmdldCIsInNjcm9sbExlZnQiLCJpdGVtUHJvcHMiLCJSZXNwb25zZUdyaWQiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJkaXNwbGF5TmFtZSJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxJQUFJQSxNQUFNLEdBQUksSUFBSSxJQUFJLElBQUksQ0FBQ0EsTUFBTSxJQUFLLFVBQVVDLENBQUMsRUFBRUMsQ0FBQyxFQUFFO0VBQ2xELElBQUlDLENBQUMsR0FBRyxDQUFDLENBQUM7RUFDVixLQUFLLElBQUlDLENBQUMsSUFBSUgsQ0FBQyxFQUFFLElBQUlJLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDQyxjQUFjLENBQUNDLElBQUksQ0FBQ1AsQ0FBQyxFQUFFRyxDQUFDLENBQUMsSUFBSUYsQ0FBQyxDQUFDTyxPQUFPLENBQUNMLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFDL0VELENBQUMsQ0FBQ0MsQ0FBQyxDQUFDLEdBQUdILENBQUMsQ0FBQ0csQ0FBQyxDQUFDO0VBQ2YsSUFBSUgsQ0FBQyxJQUFJLElBQUksSUFBSSxPQUFPSSxNQUFNLENBQUNLLHFCQUFxQixLQUFLLFVBQVUsRUFDL0QsS0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxFQUFFUCxDQUFDLEdBQUdDLE1BQU0sQ0FBQ0sscUJBQXFCLENBQUNULENBQUMsQ0FBQyxFQUFFVSxDQUFDLEdBQUdQLENBQUMsQ0FBQ1EsTUFBTSxFQUFFRCxDQUFDLEVBQUUsRUFBRTtJQUNwRSxJQUFJVCxDQUFDLENBQUNPLE9BQU8sQ0FBQ0wsQ0FBQyxDQUFDTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSU4sTUFBTSxDQUFDQyxTQUFTLENBQUNPLG9CQUFvQixDQUFDTCxJQUFJLENBQUNQLENBQUMsRUFBRUcsQ0FBQyxDQUFDTyxDQUFDLENBQUMsQ0FBQyxFQUMxRVIsQ0FBQyxDQUFDQyxDQUFDLENBQUNPLENBQUMsQ0FBQyxDQUFDLEdBQUdWLENBQUMsQ0FBQ0cs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UUFBQSxFQUV2QixTQUZ1QkEsUUFBQUEsQ0FFdEJ6QixJQUFJLEVBQUV0QixLQUFLLEVBQUU2RCxTQUFTLEVBQUk7UUFDMUIsSUFBTW5DLE1BQU0sR0FBR2xGLFNBQVMsQ0FBQzhFLElBQUksQ0FBQ3JCLE1BQU0sRUFBRUQsS0FBSyxDQUFDO1FBQzVDLE9BQU8zRSxJQUFBLENBQUNPLFFBQVEsRUFBQTtVQUFDTyxJQUFJLEVBQUVtRixJQUFJO1VBQUVJLE1BQU0sRUFBRUEsTUFBTTtVQUFFMUIsS0FBSyxFQUFFQSxLQUFLO1VBQUVvQyxLQUFLLEVBQUV5QixTQUFTLENBQUN6QjtRQUFLLENBQUEsQ0FBSTtNQUN2RjtJQUFDLENBQUE7RUFDVyxDQUFBLENBQ087QUFFM0IsQ0FBQyxDQUFDO0FBRUYsSUFBTTBCLFlBQVksR0FBR3BJLGlCQUFpQixDQUFDSyxJQUFJLENBQUM7QUFFNUMsSUFBSWdJLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDQyxRQUFRLEtBQUssWUFBWSxFQUFFO0VBQ3pDSCxZQUFZLENBQUNJLFdBQVcsR0FBRyxjQUFjO0FBQzNDO0FBRUEsZUFBZUosWUFBWSIsImZpbGUiOiJjb21wb25lbnRzL1RhYmxlL2ludGVybmFsL2tlcm5lbC9WaXJ0dWFsVGFibGUvQm9keUdyaWQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuLy8gQHRzLW5vY2hlY2tcbmltcG9ydCB7IHVzZUNvbnRleHQgfSBmcm9tICcuLi9zZWxlY3Rvci1jb250ZXh0JztcbmltcG9ydCBWaXJ0dWFsTGlzdCBmcm9tICcuLi8uLi8uLi8uLi9WaXJ0dWFsTGlzdCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgVGFibGVDb250ZXh0LCB7IHJlc3BvbnNlSW1tdXRhYmxlIH0gZnJvbSAnLi4vY29udGV4dC9UYWJsZUNvbnRleHQnO1xuaW1wb3J0IHVzZUZsYXR0ZW5SZWNvcmRzIGZyb20gJy4uL2hvb2tzL3VzZUZsYXR0ZW5SZWNvcmRzJztcbmltcG9ydCBCb2R5TGluZSBmcm9tICcuL0JvZHlMaW5lJztcbmltcG9ydCB7IEdyaWRDb250ZXh0LCBTdGF0aWNDb250ZXh0IH0gZnJvbSAnLi9jb250ZXh0JztcbmNvbnN0IEdyaWQgPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgcmVmKSA9PiB7XG4gICAgY29uc3QgeyBkYXRhLCBvblNjcm9sbCB9ID0gcHJvcHM7XG4gICAgY29uc3QgeyBmbGF0dGVuQ29sdW1ucywgb25Db2x1bW5SZXNpemUsIGdldFJvd0tleSwgZXhwYW5kZWRLZXlzLCBwcmVmaXhDbHMsIGNoaWxkcmVuQ29sdW1uTmFtZSwgc2Nyb2xsWCwgZGlyZWN0aW9uLCB9ID0gdXNlQ29udGV4dChUYWJsZUNvbnRleHQsIFtcbiAgICAgICAgJ2ZsYXR0ZW5Db2x1bW5zJyxcbiAgICAgICAgJ29uQ29sdW1uUmVzaXplJyxcbiAgICAgICAgJ2dldFJvd0tleScsXG4gICAgICAgICdwcmVmaXhDbHMnLFxuICAgICAgICAnZXhwYW5kZWRLZXlzJyxcbiAgICAgICAgJ2NoaWxkcmVuQ29sdW1uTmFtZScsXG4gICAgICAgICdzY3JvbGxYJyxcbiAgICAgICAgJ2RpcmVjdGlvbicsXG4gICAgXSk7XG4gICAgY29uc3QgeyBzdGlja3ksIHNjcm9sbFksIGxpc3RJdGVtSGVpZ2h0LCBnZXRDb21wb25lbnQsIG9uU2Nyb2xsOiBvblRhYmxlUHJvcFNjcm9sbCwgfSA9IHVzZUNvbnRleHQoU3RhdGljQ29udGV4dCk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09IFJlZiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgY29uc3QgbGlzdFJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT0gRGF0YSA9PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBjb25zdCBmbGF0dGVuRGF0YSA9IHVzZUZsYXR0ZW5SZWNvcmRzKGRhdGEsIGNoaWxkcmVuQ29sdW1uTmFtZSwgZXhwYW5kZWRLZXlzLCBnZXRSb3dLZXkpO1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09IENvbHVtbiA9PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIGNvbnN0IGNvbHVtbnNXaWR0aCA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBsZXQgdG90YWwgPSAwO1xuICAgICAgICByZXR1cm4gZmxhdHRlbkNvbHVtbnMubWFwKCh7IHdpZHRoLCBtaW5XaWR0aCwga2V5IH0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZpbmFsV2lkdGggPSBNYXRoLm1heCh3aWR0aCB8fCAwLCBtaW5XaWR0aCB8fCAwKTtcbiAgICAgICAgICAgIHRvdGFsICs9IGZpbmFsV2lkdGg7XG4gICAgICAgICAgICByZXR1cm4gW2tleSwgZmluYWxXaWR0aCwgdG90YWxdO1xuICAgICAgICB9KTtcbiAgICB9LCBbZmxhdHRlbkNvbHVtbnNdKTtcbiAgICBjb25zdCBjb2x1bW5zT2Zmc2V0ID0gUmVhY3QudXNlTWVtbygoKSA9PiBjb2x1bW5zV2lkdGgubWFwKGNvbFdpZHRoID0+IGNvbFdpZHRoWzJdKSwgW2NvbHVtbnNXaWR0aF0pO1xuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGNvbHVtbnNXaWR0aC5mb3JFYWNoKChba2V5LCB3aWR0aF0pID0+IHtcbiAgICAgICAgICAgIG9uQ29sdW1uUmVzaXplKGtleSwgd2lkdGgpO1xuICAgICAgICB9KTtcbiAgICB9LCBbY29sdW1uc1dpZHRoXSk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09IFJlZiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgUmVhY3QudXNlSW1wZXJhdGl2ZUhhbmRsZShyZWYsICgpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBvYmogPSB7XG4gICAgICAgICAgICBzY3JvbGxUbzogKGNvbmZpZykgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBvZmZzZXQgfSA9IGNvbmZpZywgcmVzdENvbmZpZyA9IF9fcmVzdChjb25maWcsIFtcIm9mZnNldFwiXSk7XG4gICAgICAgICAgICAgICAgLy8gSWYgb2Zmc2V0IGlzIHByb3ZpZGVkLCBmb3JjZSBhbGlnbiB0byAndG9wJyBmb3IgY29uc2lzdGVudCBiZWhhdmlvclxuICAgICAgICAgICAgICAgIGlmIChvZmZzZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgKF9hID0gbGlzdFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc2Nyb2xsVG8oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCByZXN0Q29uZmlnKSwgeyBvZmZzZXQsIGFsaWduOiAndG9wJyB9KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAoX2IgPSBsaXN0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5zY3JvbGxUbyhjb25maWcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuYXRpdmVFbGVtZW50OiAoX2EgPSBsaXN0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5uYXRpdmVFbGVtZW50LFxuICAgICAgICB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCAnc2Nyb2xsTGVmdCcsIHtcbiAgICAgICAgICAgIGdldDogKCkgPT4geyB2YXIgX2E7IHJldHVybiAoKF9hID0gbGlzdFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZ2V0U2Nyb2xsSW5mbygpLngpIHx8IDA7IH0sXG4gICAgICAgICAgICBzZXQ6ICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICAoX2EgPSBsaXN0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zY3JvbGxUbyh7XG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IHZhbHVlLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbnQtZGVzaWduL2FudC1kZXNpZ24vaXNzdWVzLzU0NzM0XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosICdzY3JvbGxUb3AnLCB7XG4gICAgICAgICAgICBnZXQ6ICgpID0+IHsgdmFyIF9hOyByZXR1cm4gKChfYSA9IGxpc3RSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmdldFNjcm9sbEluZm8oKS55KSB8fCAwOyB9LFxuICAgICAgICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgKF9hID0gbGlzdFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc2Nyb2xsVG8oe1xuICAgICAgICAgICAgICAgICAgICB0b3A6IHZhbHVlLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgfSk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT0gQ29sL1JvdyBTcGFuID09PT09PT09PT09PT09PT09PT09PT09XG4gICAgY29uc3QgZ2V0Um93U3BhbiA9IChjb2x1bW4sIGluZGV4KSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIGNvbnN0IHJlY29yZCA9IChfYSA9IGZsYXR0ZW5EYXRhW2luZGV4XSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnJlY29yZDtcbiAgICAgICAgY29uc3QgeyBvbkNlbGwgfSA9IGNvbHVtbjtcbiAgICAgICAgaWYgKG9uQ2VsbCkge1xuICAgICAgICAgICAgY29uc3QgY2VsbFByb3BzID0gb25DZWxsKHJlY29yZCwgaW5kZXgpO1xuICAgICAgICAgICAgcmV0dXJuIChfYiA9IGNlbGxQcm9wcyA9PT0gbnVsbCB8fCBjZWxsUHJvcHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNlbGxQcm9wcy5yb3dTcGFuKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAxO1xuICAgIH07XG4gICAgY29uc3QgZXh0cmFSZW5kZXIgPSBpbmZvID0+IHtcbiAgICAgICAgY29uc3QgeyBzdGFydCwgZW5kLCBnZXRTaXplLCBvZmZzZXRZIH0gPSBpbmZvO1xuICAgICAgICAvLyBEbyBub3RoaW5nIGlmIG5vIGRhdGFcbiAgICAgICAgaWYgKGVuZCA8IDApIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIC8vIEZpbmQgZmlyc3Qgcm93U3BhbiBjb2x1bW5cbiAgICAgICAgbGV0IGZpcnN0Um93U3BhbkNvbHVtbnMgPSBmbGF0dGVuQ29sdW1ucy5maWx0ZXIoXG4gICAgICAgIC8vIHJvd1NwYW4gaXMgMFxuICAgICAgICBjb2x1bW4gPT4gZ2V0Um93U3Bhbihjb2x1bW4sIHN0YXJ0KSA9PT0gMCk7XG4gICAgICAgIGxldCBzdGFydEluZGV4ID0gc3RhcnQ7XG4gICAgICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA+PSAwOyBpIC09IDEpIHtcbiAgICAgICAgICAgIGZpcnN0Um93U3BhbkNvbHVtbnMgPSBmaXJzdFJvd1NwYW5Db2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gZ2V0Um93U3Bhbihjb2x1bW4sIGkpID09PSAwKTtcbiAgICAgICAgICAgIGlmICghZmlyc3RSb3dTcGFuQ29sdW1ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBzdGFydEluZGV4ID0gaTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBGaW5kIGxhc3Qgcm93U3BhbiBjb2x1bW5cbiAgICAgICAgbGV0IGxhc3RSb3dTcGFuQ29sdW1ucyA9IGZsYXR0ZW5Db2x1bW5zLmZpbHRlcihcbiAgICAgICAgLy8gcm93U3BhbiBpcyBub3QgMVxuICAgICAgICBjb2x1bW4gPT4gZ2V0Um93U3Bhbihjb2x1bW4sIGVuZCkgIT09IDEpO1xuICAgICAgICBsZXQgZW5kSW5kZXggPSBlbmQ7XG4gICAgICAgIGZvciAobGV0IGkgPSBlbmQ7IGkgPCBmbGF0dGVuRGF0YS5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgbGFzdFJvd1NwYW5Db2x1bW5zID0gbGFzdFJvd1NwYW5Db2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gZ2V0Um93U3Bhbihjb2x1bW4sIGkpICE9PSAxKTtcbiAgICAgICAgICAgIGlmICghbGFzdFJvd1NwYW5Db2x1bW5zLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGVuZEluZGV4ID0gTWF0aC5tYXgoaSAtIDEsIGVuZCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gQ29sbGVjdCB0aGUgbGluZSB3aG8gaGFzIHJvd1NwYW5cbiAgICAgICAgY29uc3Qgc3BhbkxpbmVzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSBzdGFydEluZGV4OyBpIDw9IGVuZEluZGV4OyBpICs9IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBmbGF0dGVuRGF0YVtpXTtcbiAgICAgICAgICAgIC8vIFRoaXMgY29kZSB3aWxsIG5ldmVyIHJlYWNoLCBqdXN0IGluY2FzZVxuICAgICAgICAgICAgaWYgKCFpdGVtKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZmxhdHRlbkNvbHVtbnMuc29tZShjb2x1bW4gPT4gZ2V0Um93U3Bhbihjb2x1bW4sIGkpID4gMSkpIHtcbiAgICAgICAgICAgICAgICBzcGFuTGluZXMucHVzaChpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBQYXRjaCBleHRyYSBsaW5lIG9uIHRoZSBwYWdlXG4gICAgICAgIGNvbnN0IG5vZGVzID0gc3BhbkxpbmVzLm1hcChpbmRleCA9PiB7XG4gICAgICAgICAgICBjb25zdCBpdGVtID0gZmxhdHRlbkRhdGFbaW5kZXhdO1xuICAgICAgICAgICAgY29uc3Qgcm93S2V5ID0gZ2V0Um93S2V5KGl0ZW0ucmVjb3JkLCBpbmRleCk7XG4gICAgICAgICAgICBjb25zdCBnZXRIZWlnaHQgPSAocm93U3BhbikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVuZEl0ZW1JbmRleCA9IGluZGV4ICsgcm93U3BhbiAtIDE7XG4gICAgICAgICAgICAgICAgY29uc3QgZW5kSXRlbSA9IGZsYXR0ZW5EYXRhW2VuZEl0ZW1JbmRleF07XG4gICAgICAgICAgICAgICAgaWYgKCFlbmRJdGVtIHx8ICFlbmRJdGVtLnJlY29yZCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBjbGFtcCDliLDlvZPliY3lj6/nlKjnmoTmnIDlkI7kuIDooYzvvIzmiJbpgIDljJbkuLrpu5jorqTpq5jluqZcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2FmZUVuZEluZGV4ID0gTWF0aC5taW4oZW5kSXRlbUluZGV4LCBmbGF0dGVuRGF0YS5sZW5ndGggLSAxKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2FmZUVuZEl0ZW0gPSBmbGF0dGVuRGF0YVtzYWZlRW5kSW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlbmRJdGVtS2V5ID0gZ2V0Um93S2V5KHNhZmVFbmRJdGVtLnJlY29yZCwgc2FmZUVuZEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2l6ZUluZm8gPSBnZXRTaXplKHJvd0tleSwgZW5kSXRlbUtleSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzaXplSW5mby5ib3R0b20gLSBzaXplSW5mby50b3A7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGVuZEl0ZW1LZXkgPSBnZXRSb3dLZXkoZW5kSXRlbS5yZWNvcmQsIGVuZEl0ZW1JbmRleCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2l6ZUluZm8gPSBnZXRTaXplKHJvd0tleSwgZW5kSXRlbUtleSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNpemVJbmZvLmJvdHRvbSAtIHNpemVJbmZvLnRvcDtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCBzaXplSW5mbyA9IGdldFNpemUocm93S2V5KTtcbiAgICAgICAgICAgIHJldHVybiAoX2pzeChCb2R5TGluZSwgeyBkYXRhOiBpdGVtLCByb3dLZXk6IHJvd0tleSwgaW5kZXg6IGluZGV4LCBzdHlsZToge1xuICAgICAgICAgICAgICAgICAgICB0b3A6IC1vZmZzZXRZICsgc2l6ZUluZm8udG9wLFxuICAgICAgICAgICAgICAgIH0sIGV4dHJhOiB0cnVlLCBnZXRIZWlnaHQ6IGdldEhlaWdodCB9LCBpbmRleCkpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG5vZGVzO1xuICAgIH07XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PSBDb250ZXh0ID09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgY29uc3QgZ3JpZENvbnRleHQgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7IGNvbHVtbnNPZmZzZXQgfSksIFtjb2x1bW5zT2Zmc2V0XSk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT0gUmVuZGVyID09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgY29uc3QgdGJsUHJlZml4Q2xzID0gYCR7cHJlZml4Q2xzfS10Ym9keWA7XG4gICAgLy8gZGVmYXVsdCAnZGl2JyBpbiBWaXJ0dWFsTGlzdFxuICAgIGNvbnN0IHdyYXBwZXJDb21wb25lbnQgPSBnZXRDb21wb25lbnQoWydib2R5JywgJ3dyYXBwZXInXSk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT0gU3RpY2t5IFNjcm9sbCBCYXIgPT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBjb25zdCBob3Jpem9udGFsU2Nyb2xsQmFyU3R5bGUgPSB7fTtcbiAgICBpZiAoc3RpY2t5KSB7XG4gICAgICAgIGhvcml6b250YWxTY3JvbGxCYXJTdHlsZS5wb3NpdGlvbiA9ICdzdGlja3knO1xuICAgICAgICBob3Jpem9udGFsU2Nyb2xsQmFyU3R5bGUuYm90dG9tID0gMDtcbiAgICAgICAgaWYgKHR5cGVvZiBzdGlja3kgPT09ICdvYmplY3QnICYmIHN0aWNreS5vZmZzZXRTY3JvbGwpIHtcbiAgICAgICAgICAgIGhvcml6b250YWxTY3JvbGxCYXJTdHlsZS5ib3R0b20gPSBzdGlja3kub2Zmc2V0U2Nyb2xsO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiAoX2pzeChHcmlkQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogZ3JpZENvbnRleHQsIGNoaWxkcmVuOiBfanN4KFZpcnR1YWxMaXN0LCB7IGZ1bGxIZWlnaHQ6IGZhbHNlLCByZWY6IGxpc3RSZWYsIHByZWZpeENsczogYCR7dGJsUHJlZml4Q2xzfS12aXJ0dWFsYCwgc3R5bGVzOiB7IGhvcml6b250YWxTY3JvbGxCYXI6IGhvcml6b250YWxTY3JvbGxCYXJTdHlsZSB9LCBjbGFzc05hbWU6IHRibFByZWZpeENscywgaGVpZ2h0OiBzY3JvbGxZLCBpdGVtSGVpZ2h0OiBsaXN0SXRlbUhlaWdodCB8fCAyNCwgZGF0YTogZmxhdHRlbkRhdGEsIGl0ZW1LZXk6IGl0ZW0gPT4gZ2V0Um93S2V5KGl0ZW0ucmVjb3JkKSwgY29tcG9uZW50OiB3cmFwcGVyQ29tcG9uZW50LCBzY3JvbGxXaWR0aDogc2Nyb2xsWCwgZGlyZWN0aW9uOiBkaXJlY3Rpb24sIG9uVmlydHVhbFNjcm9sbDogKHsgeCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIG9uU2Nyb2xsKHtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFRhcmdldDogKF9hID0gbGlzdFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsTGVmdDogeCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sIG9uU2Nyb2xsOiBvblRhYmxlUHJvcFNjcm9sbCwgZXh0cmFSZW5kZXI6IGV4dHJhUmVuZGVyLCBjaGlsZHJlbjogKGl0ZW0sIGluZGV4LCBpdGVtUHJvcHMpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByb3dLZXkgPSBnZXRSb3dLZXkoaXRlbS5yZWNvcmQsIGluZGV4KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gX2pzeChCb2R5TGluZSwgeyBkYXRhOiBpdGVtLCByb3dLZXk6IHJvd0tleSwgaW5kZXg6IGluZGV4LCBzdHlsZTogaXRlbVByb3BzLnN0eWxlIH0pO1xuICAgICAgICAgICAgfSB9KSB9KSk7XG59KTtcbmNvbnN0IFJlc3BvbnNlR3JpZCA9IHJlc3BvbnNlSW1tdXRhYmxlKEdyaWQpO1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBSZXNwb25zZUdyaWQuZGlzcGxheU5hbWUgPSAnUmVzcG9uc2VHcmlkJztcbn1cbmV4cG9ydCBkZWZhdWx0IFJlc3BvbnNlR3JpZDsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
286
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvaW50ZXJuYWwva2VybmVsL1ZpcnR1YWxUYWJsZS9Cb2R5R3JpZC5qcyIsImNvbXBvbmVudHMvVGFibGUvaW50ZXJuYWwva2VybmVsL3NyYy9jb21wb25lbnRzL1RhYmxlL2ludGVybmFsL2tlcm5lbC9WaXJ0dWFsVGFibGUvQm9keUdyaWQudHN4Il0sIm5hbWVzIjpbIl9fcmVzdCIsInMiLCJlIiwidCIsInAiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpbmRleE9mIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiaSIsImxlbmd0aCIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwianN4IiwiX2pzeCIsInVzZUNvbnRleHQiLCJWaXJ0dWFsTGlzdCIsIlJlYWN0IiwiVGFibGVDb250ZXh0IiwicmVzcG9uc2VJbW11dGFibGUiLCJ1c2VGbGF0dGVuUmVjb3JkcyIsIkJvZHlMaW5lIiwiR3JpZENvbnRleHQiLCJTdGF0aWNDb250ZXh0IiwiR3JpZCIsImZvcndhcmRSZWYiLCJwcm9wcyIsInJlZiIsImRhdGEiLCJvblNjcm9sbCIsIl91c2VDb250ZXh0IiwiZmxhdHRlbkNvbHVtbnMiLCJvbkNvbHVtblJlc2l6ZSIsImdldFJvd0tleSIsImV4cGFuZGVkS2V5cyIsInByZWZpeENscyIsImNoaWxkcmVuQ29sdW1uTmFtZSIsInNjcm9sbFgiLCJkaXJlY3Rpb24iLCJfdXNlQ29udGV4dDIiLCJzdGlja3kiLCJzY3JvbGxZIiwibGlzdEl0ZW1IZWlnaHQiLCJnZXRDb21wb25lbnQiLCJvblRhYmxlUHJvcFNjcm9sbCIsImxpc3RSZWYiLCJ1c2VSZWYiLCJmbGF0dGVuRGF0YSIsImNvbHVtbnNXaWR0aCIsInVzZU1lbW8iLCJ0b3RhbCIsIm1hcCIsIl9yZWYiLCJ3aWR0aCIsIm1pbldpZHRoIiwia2V5IiwiZmluYWxXaWR0aCIsIk1hdGgiLCJtYXgiLCJjb2x1bW5zT2Zmc2V0IiwiY29sV2lkdGgiLCJ1c2VFZmZlY3QiLCJmb3JFYWNoIiwiX3JlZjIiLCJfcmVmMyIsIl9zbGljZWRUb0FycmF5IiwidXNlSW1wZXJhdGl2ZUhhbmRsZSIsIl9hIiwib2JqIiwic2Nyb2xsVG8iLCJjb25maWciLCJfYiIsIm9mZnNldCIsInJlc3RDb25maWciLCJjdXJyZW50IiwiYXNzaWduIiwiYWxpZ24iLCJuYXRpdmVFbGVtZW50IiwiZGVmaW5lUHJvcGVydHkiLCJnZXQiLCJnZXRTY3JvbGxJbmZvIiwieCIsInNldCIsInZhbHVlIiwibGVmdCIsInkiLCJ0b3AiLCJnZXRSb3dTcGFuIiwiY29sdW1uIiwiaW5kZXgiLCJyZWNvcmQiLCJvbkNlbGwiLCJjZWxsUHJvcHMiLCJyb3dTcGFuIiwiZXh0cmFSZW5kZXIiLCJpbmZvIiwic3RhcnQiLCJlbmQiLCJnZXRTaXplIiwib2Zmc2V0WSIsImZpcnN0Um93U3BhbkNvbHVtbnMiLCJmaWx0ZXIiLCJzdGFydEluZGV4IiwiX2xvb3AiLCJsYXN0Um93U3BhbkNvbHVtbnMiLCJlbmRJbmRleCIsIl9sb29wMiIsIl9pIiwic3BhbkxpbmVzIiwiX2xvb3AzIiwiX2kyIiwiaXRlbSIsInNvbWUiLCJwdXNoIiwibm9kZXMiLCJyb3dLZXkiLCJnZXRIZWlnaHQiLCJlbmRJdGVtSW5kZXgiLCJlbmRJdGVtIiwic2FmZUVuZEluZGV4IiwibWluIiwic2FmZUVuZEl0ZW0iLCJlbmRJdGVtS2V5Iiwic2l6ZUluZm8iLCJib3R0b20iLCJzdHlsZSIsImV4dHJhIiwiZ3JpZENvbnRleHQiLCJ0YmxQcmVmaXhDbHMiLCJjb25jYXQiLCJ3cmFwcGVyQ29tcG9uZW50IiwiaG9yaXpvbnRhbFNjcm9sbEJhclN0eWxlIiwicG9zaXRpb24iLCJfdHlwZW9mIiwib2Zmc2V0U2Nyb2xsIiwiUHJvdmlkZXIiLCJjaGlsZHJlbiIsImZ1bGxIZWlnaHQiLCJzdHlsZXMiLCJob3Jpem9udGFsU2Nyb2xsQmFyIiwiY2xhc3NOYW1lIiwiaGVpZ2h0IiwiaXRlbUhlaWdodCIsIml0ZW1LZXkiLCJjb21wb25lbnQiLCJzY3JvbGxXaWR0aCIsIm9uVmlydHVhbFNjcm9sbCIsIl9yZWY0IiwiY3VycmVudFRhcmdldCIsInNjcm9sbExlZnQiLCJpdGVtUHJvcHMiLCJSZXNwb25zZUdyaWQiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJkaXNwbGF5TmFtZSJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxJQUFJQSxNQUFNLEdBQUksSUFBSSxJQUFJLElBQUksQ0FBQ0EsTUFBTSxJQUFLLFVBQVVDLENBQUMsRUFBRUMsQ0FBQyxFQUFFO0VBQ2xELElBQUlDLENBQUMsR0FBRyxDQUFDLENBQUM7RUFDVixLQUFLLElBQUlDLENBQUMsSUFBSUgsQ0FBQyxFQUFFLElBQUlJLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDQyxjQUFjLENBQUNDLElBQUksQ0FBQ1AsQ0FBQyxFQUFFRyxDQUFDLENBQUMsSUFBSUYsQ0FBQyxDQUFDTyxPQUFPLENBQUNMLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFDL0VELENBQUMsQ0FBQ0MsQ0FBQyxDQUFDLEdBQUdILENBQUMsQ0FBQ0csQ0FBQyxDQUFDO0VBQ2YsSUFBSUgsQ0FBQyxJQUFJLElBQUksSUFBSSxPQUFPSSxNQUFNLENBQUNLLHFCQUFxQixLQUFLLFVBQVUsRUFDL0QsS0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxFQUFFUCxDQUFDLEdBQUdDLE1BQU0sQ0FBQ0sscUJBQXFCLENBQUNULENBQUMsQ0FBQyxFQUFFVSxDQUFDLEdBQUdQLENBQUMsQ0FBQ1EsTUFBTSxFQUFFRCxDQUFDLEVBQUUsRUFBRTtJQUNwRSxJQUFJVCxDQUFDLENBQUNPLE9BQU8sQ0FBQ0wsQ0FBQyxDQUFDTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSU4sTUFBTSxDQUFDQyxTQUFTLENBQUNPLG9CQUFvQixDQUFDTCxJQUFJLENBQUNQLENBQUMsRUFBRUcsQ0FBQyxDQUFDTyxDQUFDLENBQUMsQ0FBQyxFQUMxRVIsQ0FBQyxDQUFDQyxDQUFDLENBQUNPLENBQUMsQ0FBQyxDQUFDLEdBQUdWLENBQUMsQ0FBQ0cs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RUFFdkIsU0FGdUJBLFFBQUFBLENBRXRCekIsSUFBSSxFQUFFdEIsS0FBSyxFQUFFNkQsU0FBUyxFQUFJO1FBQzFCLElBQU1uQyxNQUFNLEdBQUdsRixTQUFTLENBQUM4RSxJQUFJLENBQUNyQixNQUFNLEVBQUVELEtBQUssQ0FBQztRQUM1QyxPQUFPM0UsSUFBQSxDQUFDTyxRQUFRLEVBQUE7VUFBQ08sSUFBSSxFQUFFbUYsSUFBSTtVQUFFSSxNQUFNLEVBQUVBLE1BQU07VUFBRTFCLEtBQUssRUFBRUEsS0FBSztVQUFFb0MsS0FBSyxFQUFFeUIsU0FBUyxDQUFDekI7UUFBSyxDQUFBLENBQUk7TUFDdkY7SUFBQyxDQUFBO0VBQ1csQ0FBQSxDQUNPO0FBRTNCLENBQUMsQ0FBQztBQUVGLElBQU0wQixZQUFZLEdBQUdwSSxpQkFBaUIsQ0FBQ0ssSUFBSSxDQUFDO0FBRTVDLElBQUlnSSxPQUFPLENBQUNDLEdBQUcsQ0FBQ0MsUUFBUSxLQUFLLFlBQVksRUFBRTtFQUN6Q0gsWUFBWSxDQUFDSSxXQUFXLEdBQUcsY0FBYztBQUMzQztBQUVBLGVBQWVKLFlBQVkiLCJmaWxlIjoiY29tcG9uZW50cy9UYWJsZS9pbnRlcm5hbC9rZXJuZWwvVmlydHVhbFRhYmxlL0JvZHlHcmlkLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbi8vIEB0cy1ub2NoZWNrXG5pbXBvcnQgeyB1c2VDb250ZXh0IH0gZnJvbSAnLi4vc2VsZWN0b3ItY29udGV4dCc7XG5pbXBvcnQgVmlydHVhbExpc3QgZnJvbSAnLi4vLi4vLi4vLi4vVmlydHVhbExpc3QnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFRhYmxlQ29udGV4dCwgeyByZXNwb25zZUltbXV0YWJsZSB9IGZyb20gJy4uL2NvbnRleHQvVGFibGVDb250ZXh0JztcbmltcG9ydCB1c2VGbGF0dGVuUmVjb3JkcyBmcm9tICcuLi9ob29rcy91c2VGbGF0dGVuUmVjb3Jkcyc7XG5pbXBvcnQgQm9keUxpbmUgZnJvbSAnLi9Cb2R5TGluZSc7XG5pbXBvcnQgeyBHcmlkQ29udGV4dCwgU3RhdGljQ29udGV4dCB9IGZyb20gJy4vY29udGV4dCc7XG5jb25zdCBHcmlkID0gUmVhY3QuZm9yd2FyZFJlZigocHJvcHMsIHJlZikgPT4ge1xuICAgIGNvbnN0IHsgZGF0YSwgb25TY3JvbGwgfSA9IHByb3BzO1xuICAgIGNvbnN0IHsgZmxhdHRlbkNvbHVtbnMsIG9uQ29sdW1uUmVzaXplLCBnZXRSb3dLZXksIGV4cGFuZGVkS2V5cywgcHJlZml4Q2xzLCBjaGlsZHJlbkNvbHVtbk5hbWUsIHNjcm9sbFgsIGRpcmVjdGlvbiwgfSA9IHVzZUNvbnRleHQoVGFibGVDb250ZXh0LCBbXG4gICAgICAgICdmbGF0dGVuQ29sdW1ucycsXG4gICAgICAgICdvbkNvbHVtblJlc2l6ZScsXG4gICAgICAgICdnZXRSb3dLZXknLFxuICAgICAgICAncHJlZml4Q2xzJyxcbiAgICAgICAgJ2V4cGFuZGVkS2V5cycsXG4gICAgICAgICdjaGlsZHJlbkNvbHVtbk5hbWUnLFxuICAgICAgICAnc2Nyb2xsWCcsXG4gICAgICAgICdkaXJlY3Rpb24nLFxuICAgIF0pO1xuICAgIGNvbnN0IHsgc3RpY2t5LCBzY3JvbGxZLCBsaXN0SXRlbUhlaWdodCwgZ2V0Q29tcG9uZW50LCBvblNjcm9sbDogb25UYWJsZVByb3BTY3JvbGwsIH0gPSB1c2VDb250ZXh0KFN0YXRpY0NvbnRleHQpO1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PSBSZWYgPT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIGNvbnN0IGxpc3RSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09IERhdGEgPT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgY29uc3QgZmxhdHRlbkRhdGEgPSB1c2VGbGF0dGVuUmVjb3JkcyhkYXRhLCBjaGlsZHJlbkNvbHVtbk5hbWUsIGV4cGFuZGVkS2V5cywgZ2V0Um93S2V5KTtcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PSBDb2x1bW4gPT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBjb25zdCBjb2x1bW5zV2lkdGggPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICAgICAgbGV0IHRvdGFsID0gMDtcbiAgICAgICAgcmV0dXJuIGZsYXR0ZW5Db2x1bW5zLm1hcCgoeyB3aWR0aCwgbWluV2lkdGgsIGtleSB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaW5hbFdpZHRoID0gTWF0aC5tYXgod2lkdGggfHwgMCwgbWluV2lkdGggfHwgMCk7XG4gICAgICAgICAgICB0b3RhbCArPSBmaW5hbFdpZHRoO1xuICAgICAgICAgICAgcmV0dXJuIFtrZXksIGZpbmFsV2lkdGgsIHRvdGFsXTtcbiAgICAgICAgfSk7XG4gICAgfSwgW2ZsYXR0ZW5Db2x1bW5zXSk7XG4gICAgY29uc3QgY29sdW1uc09mZnNldCA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gY29sdW1uc1dpZHRoLm1hcChjb2xXaWR0aCA9PiBjb2xXaWR0aFsyXSksIFtjb2x1bW5zV2lkdGhdKTtcbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBjb2x1bW5zV2lkdGguZm9yRWFjaCgoW2tleSwgd2lkdGhdKSA9PiB7XG4gICAgICAgICAgICBvbkNvbHVtblJlc2l6ZShrZXksIHdpZHRoKTtcbiAgICAgICAgfSk7XG4gICAgfSwgW2NvbHVtbnNXaWR0aF0pO1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PSBSZWYgPT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIFJlYWN0LnVzZUltcGVyYXRpdmVIYW5kbGUocmVmLCAoKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgY29uc3Qgb2JqID0ge1xuICAgICAgICAgICAgc2Nyb2xsVG86IChjb25maWcpID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgb2Zmc2V0IH0gPSBjb25maWcsIHJlc3RDb25maWcgPSBfX3Jlc3QoY29uZmlnLCBbXCJvZmZzZXRcIl0pO1xuICAgICAgICAgICAgICAgIC8vIElmIG9mZnNldCBpcyBwcm92aWRlZCwgZm9yY2UgYWxpZ24gdG8gJ3RvcCcgZm9yIGNvbnNpc3RlbnQgYmVoYXZpb3JcbiAgICAgICAgICAgICAgICBpZiAob2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIChfYSA9IGxpc3RSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnNjcm9sbFRvKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgcmVzdENvbmZpZyksIHsgb2Zmc2V0LCBhbGlnbjogJ3RvcCcgfSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgKF9iID0gbGlzdFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Iuc2Nyb2xsVG8oY29uZmlnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmF0aXZlRWxlbWVudDogKF9hID0gbGlzdFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubmF0aXZlRWxlbWVudCxcbiAgICAgICAgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwgJ3Njcm9sbExlZnQnLCB7XG4gICAgICAgICAgICBnZXQ6ICgpID0+IHsgdmFyIF9hOyByZXR1cm4gKChfYSA9IGxpc3RSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmdldFNjcm9sbEluZm8oKS54KSB8fCAwOyB9LFxuICAgICAgICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgKF9hID0gbGlzdFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc2Nyb2xsVG8oe1xuICAgICAgICAgICAgICAgICAgICBsZWZ0OiB2YWx1ZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCAnc2Nyb2xsVG9wJywge1xuICAgICAgICAgICAgZ2V0OiAoKSA9PiB7IHZhciBfYTsgcmV0dXJuICgoX2EgPSBsaXN0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5nZXRTY3JvbGxJbmZvKCkueSkgfHwgMDsgfSxcbiAgICAgICAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIChfYSA9IGxpc3RSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnNjcm9sbFRvKHtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiB2YWx1ZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gb2JqO1xuICAgIH0pO1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09IENvbC9Sb3cgU3BhbiA9PT09PT09PT09PT09PT09PT09PT09PVxuICAgIGNvbnN0IGdldFJvd1NwYW4gPSAoY29sdW1uLCBpbmRleCkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICBjb25zdCByZWNvcmQgPSAoX2EgPSBmbGF0dGVuRGF0YVtpbmRleF0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5yZWNvcmQ7XG4gICAgICAgIGNvbnN0IHsgb25DZWxsIH0gPSBjb2x1bW47XG4gICAgICAgIGlmIChvbkNlbGwpIHtcbiAgICAgICAgICAgIGNvbnN0IGNlbGxQcm9wcyA9IG9uQ2VsbChyZWNvcmQsIGluZGV4KTtcbiAgICAgICAgICAgIHJldHVybiAoX2IgPSBjZWxsUHJvcHMgPT09IG51bGwgfHwgY2VsbFByb3BzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjZWxsUHJvcHMucm93U3BhbikgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gMTtcbiAgICB9O1xuICAgIGNvbnN0IGV4dHJhUmVuZGVyID0gaW5mbyA9PiB7XG4gICAgICAgIGNvbnN0IHsgc3RhcnQsIGVuZCwgZ2V0U2l6ZSwgb2Zmc2V0WSB9ID0gaW5mbztcbiAgICAgICAgLy8gRG8gbm90aGluZyBpZiBubyBkYXRhXG4gICAgICAgIGlmIChlbmQgPCAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICAvLyBGaW5kIGZpcnN0IHJvd1NwYW4gY29sdW1uXG4gICAgICAgIGxldCBmaXJzdFJvd1NwYW5Db2x1bW5zID0gZmxhdHRlbkNvbHVtbnMuZmlsdGVyKFxuICAgICAgICAvLyByb3dTcGFuIGlzIDBcbiAgICAgICAgY29sdW1uID0+IGdldFJvd1NwYW4oY29sdW1uLCBzdGFydCkgPT09IDApO1xuICAgICAgICBsZXQgc3RhcnRJbmRleCA9IHN0YXJ0O1xuICAgICAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPj0gMDsgaSAtPSAxKSB7XG4gICAgICAgICAgICBmaXJzdFJvd1NwYW5Db2x1bW5zID0gZmlyc3RSb3dTcGFuQ29sdW1ucy5maWx0ZXIoY29sdW1uID0+IGdldFJvd1NwYW4oY29sdW1uLCBpKSA9PT0gMCk7XG4gICAgICAgICAgICBpZiAoIWZpcnN0Um93U3BhbkNvbHVtbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgc3RhcnRJbmRleCA9IGk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gRmluZCBsYXN0IHJvd1NwYW4gY29sdW1uXG4gICAgICAgIGxldCBsYXN0Um93U3BhbkNvbHVtbnMgPSBmbGF0dGVuQ29sdW1ucy5maWx0ZXIoXG4gICAgICAgIC8vIHJvd1NwYW4gaXMgbm90IDFcbiAgICAgICAgY29sdW1uID0+IGdldFJvd1NwYW4oY29sdW1uLCBlbmQpICE9PSAxKTtcbiAgICAgICAgbGV0IGVuZEluZGV4ID0gZW5kO1xuICAgICAgICBmb3IgKGxldCBpID0gZW5kOyBpIDwgZmxhdHRlbkRhdGEubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICAgIGxhc3RSb3dTcGFuQ29sdW1ucyA9IGxhc3RSb3dTcGFuQ29sdW1ucy5maWx0ZXIoY29sdW1uID0+IGdldFJvd1NwYW4oY29sdW1uLCBpKSAhPT0gMSk7XG4gICAgICAgICAgICBpZiAoIWxhc3RSb3dTcGFuQ29sdW1ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBlbmRJbmRleCA9IE1hdGgubWF4KGkgLSAxLCBlbmQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIENvbGxlY3QgdGhlIGxpbmUgd2hvIGhhcyByb3dTcGFuXG4gICAgICAgIGNvbnN0IHNwYW5MaW5lcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gc3RhcnRJbmRleDsgaSA8PSBlbmRJbmRleDsgaSArPSAxKSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtID0gZmxhdHRlbkRhdGFbaV07XG4gICAgICAgICAgICAvLyBUaGlzIGNvZGUgd2lsbCBuZXZlciByZWFjaCwganVzdCBpbmNhc2VcbiAgICAgICAgICAgIGlmICghaXRlbSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGZsYXR0ZW5Db2x1bW5zLnNvbWUoY29sdW1uID0+IGdldFJvd1NwYW4oY29sdW1uLCBpKSA+IDEpKSB7XG4gICAgICAgICAgICAgICAgc3BhbkxpbmVzLnB1c2goaSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gUGF0Y2ggZXh0cmEgbGluZSBvbiB0aGUgcGFnZVxuICAgICAgICBjb25zdCBub2RlcyA9IHNwYW5MaW5lcy5tYXAoaW5kZXggPT4ge1xuICAgICAgICAgICAgY29uc3QgaXRlbSA9IGZsYXR0ZW5EYXRhW2luZGV4XTtcbiAgICAgICAgICAgIGNvbnN0IHJvd0tleSA9IGdldFJvd0tleShpdGVtLnJlY29yZCwgaW5kZXgpO1xuICAgICAgICAgICAgY29uc3QgZ2V0SGVpZ2h0ID0gKHJvd1NwYW4pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbmRJdGVtSW5kZXggPSBpbmRleCArIHJvd1NwYW4gLSAxO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVuZEl0ZW0gPSBmbGF0dGVuRGF0YVtlbmRJdGVtSW5kZXhdO1xuICAgICAgICAgICAgICAgIGlmICghZW5kSXRlbSB8fCAhZW5kSXRlbS5yZWNvcmQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gY2xhbXAg5Yiw5b2T5YmN5Y+v55So55qE5pyA5ZCO5LiA6KGM77yM5oiW6YCA5YyW5Li66buY6K6k6auY5bqmXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNhZmVFbmRJbmRleCA9IE1hdGgubWluKGVuZEl0ZW1JbmRleCwgZmxhdHRlbkRhdGEubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNhZmVFbmRJdGVtID0gZmxhdHRlbkRhdGFbc2FmZUVuZEluZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZW5kSXRlbUtleSA9IGdldFJvd0tleShzYWZlRW5kSXRlbS5yZWNvcmQsIHNhZmVFbmRJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNpemVJbmZvID0gZ2V0U2l6ZShyb3dLZXksIGVuZEl0ZW1LZXkpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZUluZm8uYm90dG9tIC0gc2l6ZUluZm8udG9wO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBlbmRJdGVtS2V5ID0gZ2V0Um93S2V5KGVuZEl0ZW0ucmVjb3JkLCBlbmRJdGVtSW5kZXgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNpemVJbmZvID0gZ2V0U2l6ZShyb3dLZXksIGVuZEl0ZW1LZXkpO1xuICAgICAgICAgICAgICAgIHJldHVybiBzaXplSW5mby5ib3R0b20gLSBzaXplSW5mby50b3A7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3Qgc2l6ZUluZm8gPSBnZXRTaXplKHJvd0tleSk7XG4gICAgICAgICAgICByZXR1cm4gKF9qc3goQm9keUxpbmUsIHsgZGF0YTogaXRlbSwgcm93S2V5OiByb3dLZXksIGluZGV4OiBpbmRleCwgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiAtb2Zmc2V0WSArIHNpemVJbmZvLnRvcCxcbiAgICAgICAgICAgICAgICB9LCBleHRyYTogdHJ1ZSwgZ2V0SGVpZ2h0OiBnZXRIZWlnaHQgfSwgaW5kZXgpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBub2RlcztcbiAgICB9O1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT0gQ29udGV4dCA9PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIGNvbnN0IGdyaWRDb250ZXh0ID0gUmVhY3QudXNlTWVtbygoKSA9PiAoeyBjb2x1bW5zT2Zmc2V0IH0pLCBbY29sdW1uc09mZnNldF0pO1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09IFJlbmRlciA9PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIGNvbnN0IHRibFByZWZpeENscyA9IGAke3ByZWZpeENsc30tdGJvZHlgO1xuICAgIC8vIGRlZmF1bHQgJ2RpdicgaW4gVmlydHVhbExpc3RcbiAgICBjb25zdCB3cmFwcGVyQ29tcG9uZW50ID0gZ2V0Q29tcG9uZW50KFsnYm9keScsICd3cmFwcGVyJ10pO1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09IFN0aWNreSBTY3JvbGwgQmFyID09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgY29uc3QgaG9yaXpvbnRhbFNjcm9sbEJhclN0eWxlID0ge307XG4gICAgaWYgKHN0aWNreSkge1xuICAgICAgICBob3Jpem9udGFsU2Nyb2xsQmFyU3R5bGUucG9zaXRpb24gPSAnc3RpY2t5JztcbiAgICAgICAgaG9yaXpvbnRhbFNjcm9sbEJhclN0eWxlLmJvdHRvbSA9IDA7XG4gICAgICAgIGlmICh0eXBlb2Ygc3RpY2t5ID09PSAnb2JqZWN0JyAmJiBzdGlja3kub2Zmc2V0U2Nyb2xsKSB7XG4gICAgICAgICAgICBob3Jpem9udGFsU2Nyb2xsQmFyU3R5bGUuYm90dG9tID0gc3RpY2t5Lm9mZnNldFNjcm9sbDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gKF9qc3goR3JpZENvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IGdyaWRDb250ZXh0LCBjaGlsZHJlbjogX2pzeChWaXJ0dWFsTGlzdCwgeyBmdWxsSGVpZ2h0OiBmYWxzZSwgcmVmOiBsaXN0UmVmLCBwcmVmaXhDbHM6IGAke3RibFByZWZpeENsc30tdmlydHVhbGAsIHN0eWxlczogeyBob3Jpem9udGFsU2Nyb2xsQmFyOiBob3Jpem9udGFsU2Nyb2xsQmFyU3R5bGUgfSwgY2xhc3NOYW1lOiB0YmxQcmVmaXhDbHMsIGhlaWdodDogc2Nyb2xsWSwgaXRlbUhlaWdodDogbGlzdEl0ZW1IZWlnaHQgfHwgMjQsIGRhdGE6IGZsYXR0ZW5EYXRhLCBpdGVtS2V5OiBpdGVtID0+IGdldFJvd0tleShpdGVtLnJlY29yZCksIGNvbXBvbmVudDogd3JhcHBlckNvbXBvbmVudCwgc2Nyb2xsV2lkdGg6IHNjcm9sbFgsIGRpcmVjdGlvbjogZGlyZWN0aW9uLCBvblZpcnR1YWxTY3JvbGw6ICh7IHggfSkgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICBvblNjcm9sbCh7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRUYXJnZXQ6IChfYSA9IGxpc3RSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbExlZnQ6IHgsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LCBvblNjcm9sbDogb25UYWJsZVByb3BTY3JvbGwsIGV4dHJhUmVuZGVyOiBleHRyYVJlbmRlciwgY2hpbGRyZW46IChpdGVtLCBpbmRleCwgaXRlbVByb3BzKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgcm93S2V5ID0gZ2V0Um93S2V5KGl0ZW0ucmVjb3JkLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9qc3goQm9keUxpbmUsIHsgZGF0YTogaXRlbSwgcm93S2V5OiByb3dLZXksIGluZGV4OiBpbmRleCwgc3R5bGU6IGl0ZW1Qcm9wcy5zdHlsZSB9KTtcbiAgICAgICAgICAgIH0gfSkgfSkpO1xufSk7XG5jb25zdCBSZXNwb25zZUdyaWQgPSByZXNwb25zZUltbXV0YWJsZShHcmlkKTtcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgUmVzcG9uc2VHcmlkLmRpc3BsYXlOYW1lID0gJ1Jlc3BvbnNlR3JpZCc7XG59XG5leHBvcnQgZGVmYXVsdCBSZXNwb25zZUdyaWQ7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|