@rivet-health/design-system 23.2.0 → 23.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/navigation/views/state.mjs +42 -9
- package/esm2020/lib/navigation/views/views/views.component.mjs +34 -10
- package/esm2020/lib/table/state.mjs +4 -2
- package/esm2020/lib/table/table-column-settings/table-column-settings-side-sheet.component.mjs +3 -3
- package/fesm2015/rivet-health-design-system.mjs +70 -15
- package/fesm2015/rivet-health-design-system.mjs.map +1 -1
- package/fesm2020/rivet-health-design-system.mjs +71 -13
- package/fesm2020/rivet-health-design-system.mjs.map +1 -1
- package/lib/navigation/views/state.d.ts +4 -0
- package/lib/navigation/views/views/views.component.d.ts +5 -0
- package/package.json +1 -1
|
@@ -30,11 +30,12 @@ export var RivViews;
|
|
|
30
30
|
const activeView = s.views.find(view => view.enabled && view.id === s.activeViewId);
|
|
31
31
|
const allViews = s.views.map((view, i) => ({
|
|
32
32
|
...view,
|
|
33
|
+
enabled: view.enabled || i === 0,
|
|
33
34
|
active: activeView ? activeView.id === view.id : i === 0,
|
|
34
35
|
default: view.id === s.defaultViewId,
|
|
35
36
|
system: i === 0,
|
|
36
37
|
}));
|
|
37
|
-
const allEnabledViews = allViews
|
|
38
|
+
const allEnabledViews = getEnabledViews(allViews);
|
|
38
39
|
const displayedViews = calculateDisplayedViews(allEnabledViews, calculateOverflowViewIndex(s), s.activeViewId);
|
|
39
40
|
const enabledViews = s.overflow.search
|
|
40
41
|
? searchViews(allEnabledViews, s.overflow.search, options?.fuseOptions)
|
|
@@ -71,11 +72,24 @@ export var RivViews;
|
|
|
71
72
|
return { actions, state };
|
|
72
73
|
}
|
|
73
74
|
RivViews.createManager = createManager;
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
75
|
+
function getEnabledViews(views) {
|
|
76
|
+
return views.filter((v, i) => v.enabled || i === 0);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Translates an index in the enabled views list to the corresponding index
|
|
80
|
+
* in the full views list. This is used to resolve UI indices (which only
|
|
81
|
+
* show enabled views) to state.views indices (which includes all views).
|
|
82
|
+
*/
|
|
83
|
+
function mapEnabledIndexToViewIndex(views, enabledIndex) {
|
|
84
|
+
const enabledViews = getEnabledViews(views);
|
|
85
|
+
const targetView = enabledViews[enabledIndex];
|
|
86
|
+
if (!targetView)
|
|
87
|
+
return enabledIndex;
|
|
88
|
+
const viewIndex = views.findIndex(view => view.id === targetView.id);
|
|
89
|
+
return viewIndex === -1 ? enabledIndex : viewIndex;
|
|
90
|
+
}
|
|
77
91
|
function calculateOverflowViewIndex(state) {
|
|
78
|
-
const enabledViews = state.views
|
|
92
|
+
const enabledViews = getEnabledViews(state.views);
|
|
79
93
|
// Tabs have a minimum width of 92px.
|
|
80
94
|
const possibleSlotCount = Math.floor(state.containerWidth / 92);
|
|
81
95
|
// The "all views" sidebar trigger takes up one slot.
|
|
@@ -118,13 +132,13 @@ export var RivViews;
|
|
|
118
132
|
}));
|
|
119
133
|
}
|
|
120
134
|
function getNextBestActiveView(state) {
|
|
121
|
-
const enabledViews = state.views
|
|
135
|
+
const enabledViews = getEnabledViews(state.views);
|
|
122
136
|
const currentActiveViewIndex = enabledViews.findIndex(view => view.id === state.activeViewId);
|
|
123
137
|
if (currentActiveViewIndex === -1)
|
|
124
|
-
return enabledViews[0]
|
|
138
|
+
return enabledViews[0].id;
|
|
125
139
|
return (enabledViews[currentActiveViewIndex + 1]?.id ??
|
|
126
140
|
enabledViews[currentActiveViewIndex - 1]?.id ??
|
|
127
|
-
|
|
141
|
+
enabledViews[0].id);
|
|
128
142
|
}
|
|
129
143
|
function deleteView(state, id) {
|
|
130
144
|
const activeViewId = state.activeViewId === id
|
|
@@ -166,6 +180,23 @@ export var RivViews;
|
|
|
166
180
|
else
|
|
167
181
|
return `No ${permission} views`;
|
|
168
182
|
}
|
|
183
|
+
function viewOrderChange(state, previousEnabledIndex, newEnabledIndex) {
|
|
184
|
+
if (previousEnabledIndex === 0 || newEnabledIndex === 0) {
|
|
185
|
+
return state; // Keep system view (index 0) in place
|
|
186
|
+
}
|
|
187
|
+
const actualPreviousIndex = mapEnabledIndexToViewIndex(state.views, previousEnabledIndex);
|
|
188
|
+
const actualNewIndex = mapEnabledIndexToViewIndex(state.views, newEnabledIndex);
|
|
189
|
+
const item = state.views[actualPreviousIndex];
|
|
190
|
+
const withoutItem = state.views.filter((_, i) => i !== actualPreviousIndex);
|
|
191
|
+
return {
|
|
192
|
+
...state,
|
|
193
|
+
views: [
|
|
194
|
+
...withoutItem.slice(0, actualNewIndex),
|
|
195
|
+
item,
|
|
196
|
+
...withoutItem.slice(actualNewIndex),
|
|
197
|
+
],
|
|
198
|
+
};
|
|
199
|
+
}
|
|
169
200
|
async function reduce(state, action, source, duplicate, copyLink) {
|
|
170
201
|
switch (action.type) {
|
|
171
202
|
case 'load':
|
|
@@ -238,6 +269,8 @@ export var RivViews;
|
|
|
238
269
|
case 'copyLinkToView':
|
|
239
270
|
await copyLink(action.view);
|
|
240
271
|
return state;
|
|
272
|
+
case 'viewOrderChange':
|
|
273
|
+
return viewOrderChange(state, action.previousEnabledIndex, action.newEnabledIndex);
|
|
241
274
|
case 'setAllViewsToggle':
|
|
242
275
|
return {
|
|
243
276
|
...state,
|
|
@@ -282,4 +315,4 @@ export var RivViews;
|
|
|
282
315
|
}
|
|
283
316
|
RivViews.getPermissionDescription = getPermissionDescription;
|
|
284
317
|
})(RivViews || (RivViews = {}));
|
|
285
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9uYXZpZ2F0aW9uL3ZpZXdzL3N0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBa0MsTUFBTSxTQUFTLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDOUMsT0FBTyxFQUNMLFdBQVcsRUFFWCxJQUFJLEVBQ0osR0FBRyxFQUNILFNBQVMsRUFFVCxhQUFhLEVBQ2IsU0FBUyxFQUNULE9BQU8sR0FDUixNQUFNLE1BQU0sQ0FBQztBQUlkLE1BQU0sS0FBVyxRQUFRLENBcWZ4QjtBQXJmRCxXQUFpQixRQUFRO0lBQ1Ysd0JBQWUsR0FBRyxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFVLENBQUM7SUErRnhFLFNBQWdCLGFBQWEsQ0FDM0IsTUFBaUIsRUFDakIsU0FBdUIsRUFDdkIsUUFBcUIsRUFDckIsT0FBMkI7UUFFM0IsTUFBTSxZQUFZLEdBQWlCO1lBQ2pDLEtBQUssRUFBRSxFQUFFO1lBQ1QsWUFBWSxFQUFFLElBQUk7WUFDbEIsYUFBYSxFQUFFLElBQUk7WUFDbkIsY0FBYyxFQUFFLENBQUM7WUFDakIsUUFBUSxFQUFFO2dCQUNSLE1BQU0sRUFBRSxFQUFFO2dCQUNWLFVBQVUsRUFBRSxLQUFLO2FBQ2xCO1lBQ0QsR0FBRyxFQUFFO2dCQUNILE1BQU0sRUFBRSxFQUFFO2dCQUNWLFdBQVcsRUFBRSxJQUFJO2dCQUNqQixVQUFVLEVBQUUsSUFBSTtnQkFDaEIsVUFBVSxFQUFFLElBQUk7YUFDakI7U0FDRixDQUFDO1FBRUYsTUFBTSxxQkFBcUIsR0FBaUIsWUFBWSxDQUN0RCxFQUFFLEVBQ0YsT0FBTyxFQUFFLFlBQVksRUFDckIsWUFBWSxDQUNiLENBQUM7UUFFRixNQUFNLE9BQU8sR0FBdUIsSUFBSSxPQUFPLEVBQUUs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SUFDZixlQUFlO0lBRWYsU0FBZ0Isa0JBQWtCLENBQUMsVUFBMEI7UUFDM0QsUUFBUSxVQUFVLEVBQUU7WUFDbEIsS0FBSyxTQUFTO2dCQUNaLE9BQU8sU0FBUyxDQUFDO1lBQ25CLEtBQUssUUFBUTtnQkFDWCxPQUFPLFFBQVEsQ0FBQztZQUNsQixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxRQUFRLENBQUM7U0FDbkI7SUFDSCxDQUFDO0lBVGUsMkJBQWtCLHFCQVNqQyxDQUFBO0lBRUQsU0FBZ0Isd0JBQXdCLENBQUMsVUFBMEI7UUFDakUsUUFBUSxVQUFVLEVBQUU7WUFDbEIsS0FBSyxTQUFTO2dCQUNaLE9BQU8scUJBQXFCLENBQUM7WUFDL0IsS0FBSyxRQUFRO2dCQUNYLE9BQU8sbUNBQW1DLENBQUM7WUFDN0MsS0FBSyxRQUFRO2dCQUNYLE9BQU8scUJBQXFCLENBQUM7U0FDaEM7SUFDSCxDQUFDO0lBVGUsaUNBQXdCLDJCQVN2QyxDQUFBO0FBQ0gsQ0FBQyxFQXJmZ0IsUUFBUSxLQUFSLFFBQVEsUUFxZnhCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEZ1c2UsIHsgRnVzZVJlc3VsdCwgSUZ1c2VPcHRpb25zIH0gZnJvbSAnZnVzZS5qcyc7XG5pbXBvcnQgeyBkZWZhdWx0c0RlZXAsIHNvcnRCeSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge1xuICBjb25uZWN0YWJsZSxcbiAgQ29ubmVjdGFibGUsXG4gIGZyb20sXG4gIG1hcCxcbiAgbWVyZ2VTY2FuLFxuICBPYnNlcnZhYmxlLFxuICBSZXBsYXlTdWJqZWN0LFxuICBzdGFydFdpdGgsXG4gIFN1YmplY3QsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGVlcFBhcnRpYWwgfSBmcm9tICd1dGlsaXR5LXR5cGVzJztcbmltcG9ydCB7IEhpZ2hsaWdodENvbXBvbmVudCB9IGZyb20gJy4uLy4uL3Zpc3VhbGl6YXRpb24vaGlnaGxpZ2h0L2hpZ2hsaWdodC5jb21wb25lbnQnO1xuXG5leHBvcnQgbmFtZXNwYWNlIFJpdlZpZXdzIHtcbiAgZXhwb3J0IGNvbnN0IFZpZXdQZXJtaXNzaW9ucyA9IFsncHJpdmF0ZScsICdwdWJsaWMnLCAnc2hhcmVkJ10gYXMgY29uc3Q7XG4gIGV4cG9ydCB0eXBlIFZpZXdQZXJtaXNzaW9uID0gKHR5cGVvZiBWaWV3UGVybWlzc2lvbnMpW251bWJlcl07XG5cbiAgZXhwb3J0IHR5cGUgVmlldyA9IHtcbiAgICBpZDogc3RyaW5nIHwgbnVtYmVyO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICBwZXJtaXNzaW9uOiBWaWV3UGVybWlzc2lvbjtcbiAgfTtcblxuICBleHBvcnQgdHlwZSBGdWxsVmlldzxWIGV4dGVuZHMgVmlldyA9IFZpZXc+ID0gViAmIHtcbiAgICBhY3RpdmU6IGJvb2xlYW47XG4gICAgZGVmYXVsdDogYm9vbGVhbjtcbiAgICBzeXN0ZW06IGJvb2xlYW47XG4gICAgdGl0bGVIaWdobGlnaHRJbmRpY2VzPzogSGlnaGxpZ2h0Q29tcG9uZW50LkhpZ2hsaWdodEluZGljZXNbXTtcbiAgfTtcblxuICAvLy8vLy8vLy8vL1xuICAvLyBTdGF0ZSAvL1xuICAvLy8vLy8vLy8vL1xuXG4gIGV4cG9ydCB0eXBlIENvcmVTdGF0ZTxWIGV4dGVuZHMgVmlldz4gPSB7XG4gICAgdmlld3M6IFZbXTtcbiAgICBhY3RpdmVWaWV3SWQ6IFZbJ2lkJ10gfCBudWxsO1xuICAgIGRlZmF1bHRWaWV3SWQ6IFZbJ2lkJ10gfCBudWxsO1xuICAgIGNvbnRhaW5lcldpZHRoOiBudW1iZXI7XG4gICAgb3ZlcmZsb3c6IHtcbiAgICAgIHNlYXJjaDogc3RyaW5nO1xuICAgICAgcGlja2VyT3BlbjogYm9vbGVhbjtcbiAgICB9O1xuICAgIGFsbDoge1xuICAgICAgc2VhcmNoOiBzdHJpbmc7XG4gICAgICBwcml2YXRlT3BlbjogYm9vbGVhbjtcbiAgICAgIHNoYXJlZE9wZW46IGJvb2xlYW47XG4gICAgICBwdWJsaWNPcGVuOiBib29sZWFuO1xuICAgIH07XG4gIH07XG5cbiAgZXhwb3J0IHR5cGUgRnVsbFN0YXRlPFYgZXh0ZW5kcyBWaWV3PiA9IENvcmVTdGF0ZTxWPiAmIHtcbiAgICBhbGxWaWV3czogRnVsbFZpZXc8Vj5bXTtcbiAgICBkaXNwbGF5ZWRWaWV3czogRnVsbFZpZXc8Vj5bXTtcbiAgICBlbmFibGVkVmlld3M6IEZ1bGxWaWV3PFY+W107XG4gICAgYWxsOiB7XG4gICAgICBwcml2YXRlVmlld3M6IEZ1bGxWaWV3PFY+W107XG4gICAgICBwcml2YXRlRW1wdHlTdGF0ZU1lc3NhZ2U6IHN0cmluZztcbiAgICAgIHNoYXJlZFZpZXdzOiBGdWxsVmlldzxWPltdO1xuICAgICAgc2hhcmVkRW1wdHlTdGF0ZU1lc3NhZ2U6IHN0cmluZztcbiAgICAgIHB1YmxpY1ZpZXdzOiBGdWxsVmlldzxWPltdO1xuICAgICAgcHVibGljRW1wdHlTdGF0ZU1lc3NhZ2U6IHN0cmluZztcbiAgICB9O1xuICB9O1xuXG4gIC8vLy8vLy8vLy8vLy9cbiAgLy8gQWN0aW9ucyAvL1xuICAvLy8vLy8vLy8vLy8vXG5cbiAgZXhwb3J0IHR5cGUgQWN0aW9uPFYgZXh0ZW5kcyBWaWV3PiA9XG4gICAgfCB7IHR5cGU6ICdsb2FkJyB9XG4gICAgfCB7IHR5cGU6ICdzZXRBY3RpdmVWaWV3JzsgaWQ6IFZbJ2lkJ10gfVxuICAgIHwgeyB0eXBlOiAnc2V0RGVmYXVsdFZpZXcnOyBpZDogVlsnaWQnXSB9XG4gICAgfCB7IHR5cGU6ICdzZXRFbmFibGVkJzsgaWQ6IFZbJ2lkJ107IGVuYWJsZWQ6IGJvb2xlYW4gfVxuICAgIHwgeyB0eXBlOiAnc2V0Q29udGFpbmVyV2lkdGgnOyB3aWR0aDogbnVtYmVyIH1cbiAgICB8IHsgdHlwZTogJ3NldE92ZXJmbG93UGlja2VyT3Blbic7IG9wZW46IGJvb2xlYW4gfVxuICAgIHwgeyB0eXBlOiAnc2V0T3ZlcmZsb3dTZWFyY2hRdWVyeSc7IHF1ZXJ5OiBzdHJpbmcgfVxuICAgIHwgeyB0eXBlOiAnc2V0QWxsVmlld3NTZWFyY2hRdWVyeSc7IHF1ZXJ5OiBzdHJpbmcgfVxuICAgIHwgeyB0eXBlOiAndXBkYXRlVmlldyc7IHZpZXc6IFYgfVxuICAgIHwgeyB0eXBlOiAnZGVsZXRlVmlldyc7IHZpZXc6IFYgfVxuICAgIHwgeyB0eXBlOiAnZHVwbGljYXRlVmlldyc7IHZpZXc6IFYgfVxuICAgIHwgeyB0eXBlOiAnY29weUxpbmtUb1ZpZXcnOyB2aWV3OiBWIH1cbiAgICB8IHsgdHlwZTogJ3NldEFsbFZpZXdzVG9nZ2xlJzsgcGVybWlzc2lvbjogVmlld1Blcm1pc3Npb247IG9wZW46IGJvb2xlYW4gfTtcblxuICAvLy8vLy8vLy8vLy9cbiAgLy8gU291cmNlIC8vXG4gIC8vLy8vLy8vLy8vL1xuXG4gIGV4cG9ydCB0eXBlIFNvdXJjZTxWIGV4dGVuZHMgVmlldz4gPSAoKSA9PiBWW10gfCBQcm9taXNlPFZbXT47XG4gIGV4cG9ydCB0eXBlIER1cGxpY2F0ZTxWIGV4dGVuZHMgVmlldz4gPSAoXG4gICAgdmlld1RvRHVwbGljYXRlOiBWLFxuICApID0+IFYgfCBQcm9taXNlPFY+O1xuICBleHBvcnQgdHlwZSBDb3B5TGluazxWIGV4dGVuZHMgVmlldz4gPSAodmlldzogVikgPT4gdm9pZCB8IFByb21pc2U8dm9pZD47XG5cbiAgLy8vLy8vLy8vLy8vL1xuICAvLyBNYW5hZ2VyIC8vXG4gIC8vLy8vLy8vLy8vLy9cblxuICBleHBvcnQgdHlwZSBNYW5hZ2VyPFYgZXh0ZW5kcyBWaWV3PiA9IHtcbiAgICBhY3Rpb25zOiBTdWJqZWN0PEFjdGlvbjxWPj47XG4gICAgc3RhdGU6IENvbm5lY3RhYmxlPEZ1bGxTdGF0ZTxWPj47XG4gIH07XG5cbiAgZXhwb3J0IHR5cGUgTWFuYWdlck9wdGlvbnM8ViBleHRlbmRzIFZpZXc+ID0ge1xuICAgIGluaXRpYWxTdGF0ZT86IERlZXBQYXJ0aWFsPENvcmVTdGF0ZTxWPj47XG4gICAgZnVzZU9wdGlvbnM/OiBJRnVzZU9wdGlvbnM8Vj47XG4gIH07XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1hbmFnZXI8ViBleHRlbmRzIFZpZXc+KFxuICAgIHNvdXJjZTogU291cmNlPFY+LFxuICAgIGR1cGxpY2F0ZTogRHVwbGljYXRlPFY+LFxuICAgIGNvcHlMaW5rOiBDb3B5TGluazxWPixcbiAgICBvcHRpb25zPzogTWFuYWdlck9wdGlvbnM8Vj4sXG4gICk6IE1hbmFnZXI8Vj4ge1xuICAgIGNvbnN0IGRlZmF1bHRTdGF0ZTogQ29yZVN0YXRlPFY+ID0ge1xuICAgICAgdmlld3M6IFtdLFxuICAgICAgYWN0aXZlVmlld0lkOiBudWxsLFxuICAgICAgZGVmYXVsdFZpZXdJZDogbnVsbCxcbiAgICAgIGNvbnRhaW5lcldpZHRoOiAwLFxuICAgICAgb3ZlcmZsb3c6IHtcbiAgICAgICAgc2VhcmNoOiAnJyxcbiAgICAgICAgcGlja2VyT3BlbjogZmFsc2UsXG4gICAgICB9LFxuICAgICAgYWxsOiB7XG4gICAgICAgIHNlYXJjaDogJycsXG4gICAgICAgIHByaXZhdGVPcGVuOiB0cnVlLFxuICAgICAgICBzaGFyZWRPcGVuOiB0cnVlLFxuICAgICAgICBwdWJsaWNPcGVuOiB0cnVlLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29uc3QgZGVmYXVsdGVkSW5pdGlhbFN0YXRlOiBDb3JlU3RhdGU8Vj4gPSBkZWZhdWx0c0RlZXAoXG4gICAgICB7fSxcbiAgICAgIG9wdGlvbnM/LmluaXRpYWxTdGF0ZSxcbiAgICAgIGRlZmF1bHRTdGF0ZSxcbiAgICApO1xuXG4gICAgY29uc3QgYWN0aW9uczogU3ViamVjdDxBY3Rpb248Vj4+ID0gbmV3IFN1YmplY3QoKTtcbiAgICBjb25zdCBjb3JlU3RhdGU6IE9ic2VydmFibGU8Q29yZVN0YXRlPFY+PiA9IGFjdGlvbnMucGlwZShcbiAgICAgIG1lcmdlU2NhbihcbiAgICAgICAgKHN0YXRlLCBhY3Rpb24pID0+XG4gICAgICAgICAgZnJvbShyZWR1Y2Uoc3RhdGUsIGFjdGlvbiwgc291cmNlLCBkdXBsaWNhdGUsIGNvcHlMaW5rKSksXG4gICAgICAgIGRlZmF1bHRlZEluaXRpYWxTdGF0ZSxcbiAgICAgICAgMSxcbiAgICAgICksXG4gICAgICBzdGFydFdpdGgoZGVmYXVsdGVkSW5pdGlhbFN0YXRlKSxcbiAgICApO1xuXG4gICAgY29uc3Qgc3RhdGU6IENvbm5lY3RhYmxlPEZ1bGxTdGF0ZTxWPj4gPSBjb25uZWN0YWJsZShcbiAgICAgIGNvcmVTdGF0ZS5waXBlKFxuICAgICAgICBtYXAocyA9PiB7XG4gICAgICAgICAgLy8gSWYgZm9yIHNvbWUgcmVhc29uIHRoZSBhY3RpdmUgdmlldyBpcyBub3QgY3VycmVudGx5IGVuYWJsZWQsIHdlJ2xsXG4gICAgICAgICAgLy8gZGVmYXVsdCB0byBtYWtpbmcgdGhlIGZpcnN0IHZpZXcgYWN0aXZlIGluc3RlYWQuXG4gICAgICAgICAgY29uc3QgYWN0aXZlVmlldzogViB8IHVuZGVmaW5lZCA9IHMudmlld3MuZmluZChcbiAgICAgICAgICAgIHZpZXcgPT4gdmlldy5lbmFibGVkICYmIHZpZXcuaWQgPT09IHMuYWN0aXZlVmlld0lkLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBjb25zdCBhbGxWaWV3czogRnVsbFZpZXc8Vj5bXSA9IHMudmlld3MubWFwKCh2aWV3LCBpKSA9PiAoe1xuICAgICAgICAgICAgLi4udmlldyxcbiAgICAgICAgICAgIGFjdGl2ZTogYWN0aXZlVmlldyA/IGFjdGl2ZVZpZXcuaWQgPT09IHZpZXcuaWQgOiBpID09PSAwLFxuICAgICAgICAgICAgZGVmYXVsdDogdmlldy5pZCA9PT0gcy5kZWZhdWx0Vmlld0lkLFxuICAgICAgICAgICAgc3lzdGVtOiBpID09PSAwLFxuICAgICAgICAgIH0pKTtcblxuICAgICAgICAgIGNvbnN0IGFsbEVuYWJsZWRWaWV3czogRnVsbFZpZXc8Vj5bXSA9IGFsbFZpZXdzLmZpbHRlcihcbiAgICAgICAgICAgIHZpZXcgPT4gdmlldy5lbmFibGVkLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBjb25zdCBkaXNwbGF5ZWRWaWV3cyA9IGNhbGN1bGF0ZURpc3BsYXllZFZpZXdzKFxuICAgICAgICAgICAgYWxsRW5hYmxlZFZpZXdzLFxuICAgICAgICAgICAgY2FsY3VsYXRlT3ZlcmZsb3dWaWV3SW5kZXgocyksXG4gICAgICAgICAgICBzLmFjdGl2ZVZpZXdJZCxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgY29uc3QgZW5hYmxlZFZpZXdzID0gcy5vdmVyZmxvdy5zZWFyY2hcbiAgICAgICAgICAgID8gc2VhcmNoVmlld3MoXG4gICAgICAgICAgICAgICAgYWxsRW5hYmxlZFZpZXdzLFxuICAgICAgICAgICAgICAgIHMub3ZlcmZsb3cuc2VhcmNoLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM/LmZ1c2VPcHRpb25zLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IGFsbEVuYWJsZWRWaWV3cztcblxuICAgICAgICAgIGNvbnN0IGFsbFZpZXdzRmlsdGVyZWQgPSBzLmFsbC5zZWFyY2hcbiAgICAgICAgICAgID8gc2VhcmNoVmlld3MoYWxsVmlld3MsIHMuYWxsLnNlYXJjaCwgb3B0aW9ucz8uZnVzZU9wdGlvbnMpXG4gICAgICAgICAgICA6IGFsbFZpZXdzO1xuXG4gICAgICAgICAgY29uc3Qgc2VhcmNoaW5nQWxsVmlld3MgPSAhIXMuYWxsLnNlYXJjaDtcblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5zLFxuICAgICAgICAgICAgYWxsVmlld3MsXG4gICAgICAgICAgICBkaXNwbGF5ZWRWaWV3cyxcbiAgICAgICAgICAgIGVuYWJsZWRWaWV3cyxcbiAgICAgICAgICAgIGFsbDoge1xuICAgICAgICAgICAgICAuLi5zLmFsbCxcbiAgICAgICAgICAgICAgcHJpdmF0ZU9wZW46IHNlYXJjaGluZ0FsbFZpZXdzIHx8IHMuYWxsLnByaXZhdGVPcGVuLFxuICAgICAgICAgICAgICBwcml2YXRlVmlld3M6IHZpZXdzQnlQZXJtaXNzaW9uKGFsbFZpZXdzRmlsdGVyZWQsICdwcml2YXRlJyksXG4gICAgICAgICAgICAgIHByaXZhdGVFbXB0eVN0YXRlTWVzc2FnZTogZ2V0RW1wdHlTdGF0ZU1lc3NhZ2UocywgJ3ByaXZhdGUnKSxcbiAgICAgICAgICAgICAgc2hhcmVkT3Blbjogc2VhcmNoaW5nQWxsVmlld3MgfHwgcy5hbGwuc2hhcmVkT3BlbixcbiAgICAgICAgICAgICAgc2hhcmVkVmlld3M6IHZpZXdzQnlQZXJtaXNzaW9uKGFsbFZpZXdzRmlsdGVyZWQsICdzaGFyZWQnKSxcbiAgICAgICAgICAgICAgc2hhcmVkRW1wdHlTdGF0ZU1lc3NhZ2U6IGdldEVtcHR5U3RhdGVNZXNzYWdlKHMsICdzaGFyZWQnKSxcbiAgICAgICAgICAgICAgcHVibGljT3Blbjogc2VhcmNoaW5nQWxsVmlld3MgfHwgcy5hbGwucHVibGljT3BlbixcbiAgICAgICAgICAgICAgcHVibGljVmlld3M6IHZpZXdzQnlQZXJtaXNzaW9uKGFsbFZpZXdzRmlsdGVyZWQsICdwdWJsaWMnKSxcbiAgICAgICAgICAgICAgcHVibGljRW1wdHlTdGF0ZU1lc3NhZ2U6IGdldEVtcHR5U3RhdGVNZXNzYWdlKHMsICdwdWJsaWMnKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfTtcbiAgICAgICAgfSksXG4gICAgICApLFxuICAgICAge1xuICAgICAgICBjb25uZWN0b3I6ICgpID0+IG5ldyBSZXBsYXlTdWJqZWN0KDEpLFxuICAgICAgICByZXNldE9uRGlzY29ubmVjdDogZmFsc2UsXG4gICAgICB9LFxuICAgICk7XG4gICAgc3RhdGUuY29ubmVjdCgpO1xuXG4gICAgLy8gTG9hZCB0aGUgdmlld3MgaW1tZWRpYXRlbHlcbiAgICBhY3Rpb25zLm5leHQoeyB0eXBlOiAnbG9hZCcgfSk7XG5cbiAgICByZXR1cm4geyBhY3Rpb25zLCBzdGF0ZSB9O1xuICB9XG5cbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAvLyBTdGF0ZSByZWR1Y2VyICh3aXRoIGhlbHBlcnMpIC8vXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICBmdW5jdGlvbiBjYWxjdWxhdGVPdmVyZmxvd1ZpZXdJbmRleDxWIGV4dGVuZHMgVmlldz4oXG4gICAgc3RhdGU6IENvcmVTdGF0ZTxWPixcbiAgKTogbnVtYmVyIHtcbiAgICBjb25zdCBlbmFibGVkVmlld3MgPSBzdGF0ZS52aWV3cy5maWx0ZXIodmlldyA9PiB2aWV3LmVuYWJsZWQpO1xuXG4gICAgLy8gVGFicyBoYXZlIGEgbWluaW11bSB3aWR0aCBvZiA5MnB4LlxuICAgIGNvbnN0IHBvc3NpYmxlU2xvdENvdW50ID0gTWF0aC5mbG9vcihzdGF0ZS5jb250YWluZXJXaWR0aCAvIDkyKTtcblxuICAgIC8vIFRoZSBcImFsbCB2aWV3c1wiIHNpZGViYXIgdHJpZ2dlciB0YWtlcyB1cCBvbmUgc2xvdC5cbiAgICBjb25zdCBhdmFpbGFibGVTbG90Q291bnQgPSBwb3NzaWJsZVNsb3RDb3VudCAtIDE7XG5cbiAgICAvLyBJZiB0aGVyZSBhcmUgdG9vIG1hbnkgdGFicywgdGhlIFwiTiBtb3JlXCIgdHJpZ2dlciB0YWtlcyB1cCBvbmUgc2xvdCBhcyB3ZWxsLlxuICAgIC8vIEJ1dCB3ZSB3YW50IHRvIGF2b2lkIHRoZSBcIjEgbW9yZVwiIGNhc2UsIHNvIHdlIG9ubHkgdXNlIGEgc2xvdCBmb3IgXCJOIG1vcmVcIiBpZiBOICE9IDEuXG4gICAgaWYgKGF2YWlsYWJsZVNsb3RDb3VudCA+PSBlbmFibGVkVmlld3MubGVuZ3RoKSByZXR1cm4gZW5hYmxlZFZpZXdzLmxlbmd0aDtcbiAgICBlbHNlIHJldHVybiBhdmFpbGFibGVTbG90Q291bnQgLSAxOyAvLyB0aGUgXCJOIG1vcmVcIiB1c2VzIHVwIGEgc2xvdC5cbiAgfVxuXG4gIGZ1bmN0aW9uIGNhbGN1bGF0ZURpc3BsYXllZFZpZXdzPFYgZXh0ZW5kcyBWaWV3PihcbiAgICBmdWxsVmlld3M6IEZ1bGxWaWV3PFY+W10sXG4gICAgb3ZlcmZsb3dWaWV3SW5kZXg6IG51bWJlcixcbiAgICBhY3RpdmVWaWV3SWQ6IENvcmVTdGF0ZTxWPlsnYWN0aXZlVmlld0lkJ10sXG4gICk6IEZ1bGxWaWV3PFY+W10ge1xuICAgIGNvbnN0IGRpc3BsYXllZFZpZXdzID0gZnVsbFZpZXdzLnNsaWNlKDAsIG92ZXJmbG93Vmlld0luZGV4KTtcblxuICAgIGNvbnN0IGFjdGl2ZVZpZXdJbkRpc3BsYXkgPSBkaXNwbGF5ZWRWaWV3cy5zb21lKFxuICAgICAgdmlldyA9PiB2aWV3LmlkID09PSBhY3RpdmVWaWV3SWQsXG4gICAgKTtcblxuICAgIGlmICghYWN0aXZlVmlld0luRGlzcGxheSAmJiBhY3RpdmVWaWV3SWQgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGFjdGl2ZVZpZXcgPSBmdWxsVmlld3MuZmluZCh2aWV3ID0+IHZpZXcuaWQgPT09IGFjdGl2ZVZpZXdJZCk7XG4gICAgICBpZiAoYWN0aXZlVmlldyAmJiBkaXNwbGF5ZWRWaWV3cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJldHVybiBbLi4uZGlzcGxheWVkVmlld3Muc2xpY2UoMCwgLTEpLCBhY3RpdmVWaWV3XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZGlzcGxheWVkVmlld3M7XG4gIH1cblxuICBmdW5jdGlvbiB2aWV3c0J5UGVybWlzc2lvbjxWIGV4dGVuZHMgVmlldz4oXG4gICAgdmlld3M6IEZ1bGxWaWV3PFY+W10sXG4gICAgcGVybWlzc2lvbjogVmlld1Blcm1pc3Npb24sXG4gICk6IEZ1bGxWaWV3PFY+W10ge1xuICAgIHJldHVybiBzb3J0QnkoXG4gICAgICB2aWV3cy5maWx0ZXIodmlldyA9PiB2aWV3LnBlcm1pc3Npb24gPT09IHBlcm1pc3Npb24pLFxuICAgICAgW3YgPT4gIXYuc3lzdGVtLCAndGl0bGUnXSxcbiAgICApO1xuICB9XG5cbiAgZnVuY3Rpb24gc2VhcmNoVmlld3M8ViBleHRlbmRzIFZpZXc+KFxuICAgIHZpZXdzOiBGdWxsVmlldzxWPltdLFxuICAgIHF1ZXJ5OiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IElGdXNlT3B0aW9uczxWPixcbiAgKTogRnVsbFZpZXc8Vj5bXSB7XG4gICAgY29uc3QgZnVzZSA9IG5ldyBGdXNlKHZpZXdzLCB7XG4gICAgICB0aHJlc2hvbGQ6IDAuMixcbiAgICAgIGtleXM6IFsndGl0bGUnXSxcbiAgICAgIGluY2x1ZGVNYXRjaGVzOiB0cnVlLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcblxuICAgIGNvbnN0IG1hdGNoZWRPcHRpb25zOiBGdXNlUmVzdWx0PEZ1bGxWaWV3PFY+PltdID0gZnVzZS5zZWFyY2gocXVlcnkpO1xuXG4gICAgcmV0dXJuIG1hdGNoZWRPcHRpb25zLm1hcChyZXN1bHQgPT4gKHtcbiAgICAgIC4uLnJlc3VsdC5pdGVtLFxuICAgICAgdGl0bGVIaWdobGlnaHRJbmRpY2VzOiBbXG4gICAgICAgIC4uLihyZXN1bHQubWF0Y2hlcz8uZmluZChtYXRjaCA9PiBtYXRjaC5rZXkgPT09ICd0aXRsZScpPy5pbmRpY2VzID8/XG4gICAgICAgICAgW10pLFxuICAgICAgXSxcbiAgICB9KSk7XG4gIH1cblxuICBmdW5jdGlvbiBnZXROZXh0QmVzdEFjdGl2ZVZpZXc8ViBleHRlbmRzIFZpZXc+KFxuICAgIHN0YXRlOiBDb3JlU3RhdGU8Vj4sXG4gICk6IFZbJ2lkJ10gfCBudWxsIHtcbiAgICBjb25zdCBlbmFibGVkVmlld3MgPSBzdGF0ZS52aWV3cy5maWx0ZXIodmlldyA9PiB2aWV3LmVuYWJsZWQpO1xuICAgIGNvbnN0IGN1cnJlbnRBY3RpdmVWaWV3SW5kZXggPSBlbmFibGVkVmlld3MuZmluZEluZGV4KFxuICAgICAgdmlldyA9PiB2aWV3LmlkID09PSBzdGF0ZS5hY3RpdmVWaWV3SWQsXG4gICAgKTtcblxuICAgIGlmIChjdXJyZW50QWN0aXZlVmlld0luZGV4ID09PSAtMSkgcmV0dXJuIGVuYWJsZWRWaWV3c1swXT8uaWQgPz8gbnVsbDtcbiAgICByZXR1cm4gKFxuICAgICAgZW5hYmxlZFZpZXdzW2N1cnJlbnRBY3RpdmVWaWV3SW5kZXggKyAxXT8uaWQgPz9cbiAgICAgIGVuYWJsZWRWaWV3c1tjdXJyZW50QWN0aXZlVmlld0luZGV4IC0gMV0/LmlkID8/XG4gICAgICBudWxsXG4gICAgKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRlbGV0ZVZpZXc8ViBleHRlbmRzIFZpZXc+KFxuICAgIHN0YXRlOiBDb3JlU3RhdGU8Vj4sXG4gICAgaWQ6IFZbJ2lkJ10sXG4gICk6IENvcmVTdGF0ZTxWPiB7XG4gICAgY29uc3QgYWN0aXZlVmlld0lkID1cbiAgICAgIHN0YXRlLmFjdGl2ZVZpZXdJZCA9PT0gaWRcbiAgICAgICAgPyBnZXROZXh0QmVzdEFjdGl2ZVZpZXcoc3RhdGUpXG4gICAgICAgIDogc3RhdGUuYWN0aXZlVmlld0lkO1xuICAgIGNvbnN0IHZpZXdzID0gc3RhdGUudmlld3MuZmlsdGVyKHZpZXcgPT4gdmlldy5pZCAhPT0gaWQpO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHZpZXdzLFxuICAgICAgYWN0aXZlVmlld0lkLFxuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiBzZXRFbmFibGVkPFYgZXh0ZW5kcyBWaWV3PihcbiAgICBzdGF0ZTogQ29yZVN0YXRlPFY+LFxuICAgIGlkOiBWWydpZCddLFxuICAgIGVuYWJsZWQ6IGJvb2xlYW4sXG4gICk6IENvcmVTdGF0ZTxWPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgdmlld3M6IHN0YXRlLnZpZXdzLm1hcCh2aWV3ID0+XG4gICAgICAgIHZpZXcuaWQgPT09IGlkID8geyAuLi52aWV3LCBlbmFibGVkIH0gOiB2aWV3LFxuICAgICAgKSxcbiAgICAgIGFjdGl2ZVZpZXdJZDpcbiAgICAgICAgIWVuYWJsZWQgJiYgc3RhdGUuYWN0aXZlVmlld0lkID09PSBpZFxuICAgICAgICAgID8gZ2V0TmV4dEJlc3RBY3RpdmVWaWV3KHN0YXRlKVxuICAgICAgICAgIDogc3RhdGUuYWN0aXZlVmlld0lkLFxuICAgIH07XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiB3aXRoRHVwbGljYXRlVmlldzxWIGV4dGVuZHMgVmlldz4oXG4gICAgdmlld3M6IFZbXSxcbiAgICB2aWV3VG9EdXBsaWNhdGU6IFYsXG4gICAgZHVwbGljYXRlOiBEdXBsaWNhdGU8Vj4sXG4gICk6IFByb21pc2U8VltdPiB7XG4gICAgY29uc3QgbmV3VmlldyA9IGF3YWl0IGR1cGxpY2F0ZSh2aWV3VG9EdXBsaWNhdGUpO1xuICAgIGNvbnN0IHNvdXJjZUluZGV4ID0gdmlld3MuZmluZEluZGV4KHZpZXcgPT4gdmlldy5pZCA9PT0gdmlld1RvRHVwbGljYXRlLmlkKTtcbiAgICBpZiAoc291cmNlSW5kZXggPT09IC0xKSB7XG4gICAgICByZXR1cm4gW25ld1ZpZXcsIC4uLnZpZXdzXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgLi4udmlld3Muc2xpY2UoMCwgc291cmNlSW5kZXggKyAxKSxcbiAgICAgICAgbmV3VmlldyxcbiAgICAgICAgLi4udmlld3Muc2xpY2Uoc291cmNlSW5kZXggKyAxKSxcbiAgICAgIF07XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZ2V0RW1wdHlTdGF0ZU1lc3NhZ2U8ViBleHRlbmRzIFZpZXc+KFxuICAgIHN0YXRlOiBDb3JlU3RhdGU8Vj4sXG4gICAgcGVybWlzc2lvbjogVmlld1Blcm1pc3Npb24sXG4gICk6IHN0cmluZyB7XG4gICAgaWYgKHN0YXRlLmFsbC5zZWFyY2gpXG4gICAgICByZXR1cm4gYE5vICR7cGVybWlzc2lvbn0gdmlld3MgbWF0Y2hpbmcgXCIke3N0YXRlLmFsbC5zZWFyY2h9XCJgO1xuICAgIGVsc2UgcmV0dXJuIGBObyAke3Blcm1pc3Npb259IHZpZXdzYDtcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHJlZHVjZTxWIGV4dGVuZHMgVmlldz4oXG4gICAgc3RhdGU6IENvcmVTdGF0ZTxWPixcbiAgICBhY3Rpb246IEFjdGlvbjxWPixcbiAgICBzb3VyY2U6IFNvdXJjZTxWPixcbiAgICBkdXBsaWNhdGU6IER1cGxpY2F0ZTxWPixcbiAgICBjb3B5TGluazogQ29weUxpbms8Vj4sXG4gICk6IFByb21pc2U8Q29yZVN0YXRlPFY+PiB7XG4gICAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICAgICAgY2FzZSAnbG9hZCc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgdmlld3M6IGF3YWl0IHNvdXJjZSgpLFxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICdzZXRBY3RpdmVWaWV3JzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBhY3RpdmVWaWV3SWQ6IGFjdGlvbi5pZCxcbiAgICAgICAgICB2aWV3czogc3RhdGUudmlld3MubWFwKHZpZXcgPT5cbiAgICAgICAgICAgIHZpZXcuaWQgPT09IGFjdGlvbi5pZCA/IHsgLi4udmlldywgZW5hYmxlZDogdHJ1ZSB9IDogdmlldyxcbiAgICAgICAgICApLFxuICAgICAgICAgIGFsbDoge1xuICAgICAgICAgICAgLi4uc3RhdGUuYWxsLFxuICAgICAgICAgICAgc2VhcmNoOiAnJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG92ZXJmbG93OiB7XG4gICAgICAgICAgICAuLi5zdGF0ZS5vdmVyZmxvdyxcbiAgICAgICAgICAgIHNlYXJjaDogJycsXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAnc2V0RGVmYXVsdFZpZXcnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIGRlZmF1bHRWaWV3SWQ6IGFjdGlvbi5pZCxcbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAnc2V0RW5hYmxlZCc6XG4gICAgICAgIHJldHVybiBzZXRFbmFibGVkKHN0YXRlLCBhY3Rpb24uaWQsIGFjdGlvbi5lbmFibGVkKTtcblxuICAgICAgY2FzZSAnc2V0Q29udGFpbmVyV2lkdGgnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIGNvbnRhaW5lcldpZHRoOiBhY3Rpb24ud2lkdGgsXG4gICAgICAgIH07XG5cbiAgICAgIGNhc2UgJ3NldE92ZXJmbG93UGlja2VyT3Blbic6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgb3ZlcmZsb3c6IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLm92ZXJmbG93LFxuICAgICAgICAgICAgcGlja2VyT3BlbjogYWN0aW9uLm9wZW4sXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAnc2V0T3ZlcmZsb3dTZWFyY2hRdWVyeSc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgb3ZlcmZsb3c6IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLm92ZXJmbG93LFxuICAgICAgICAgICAgc2VhcmNoOiBhY3Rpb24ucXVlcnksXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAnc2V0QWxsVmlld3NTZWFyY2hRdWVyeSc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgYWxsOiB7XG4gICAgICAgICAgICAuLi5zdGF0ZS5hbGwsXG4gICAgICAgICAgICBzZWFyY2g6IGFjdGlvbi5xdWVyeSxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICd1cGRhdGVWaWV3JzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICB2aWV3czogc3RhdGUudmlld3MubWFwKHZpZXcgPT5cbiAgICAgICAgICAgIHZpZXcuaWQgPT09IGFjdGlvbi52aWV3LmlkID8gYWN0aW9uLnZpZXcgOiB2aWV3LFxuICAgICAgICAgICksXG4gICAgICAgIH07XG5cbiAgICAgIGNhc2UgJ2RlbGV0ZVZpZXcnOlxuICAgICAgICByZXR1cm4gZGVsZXRlVmlldyhzdGF0ZSwgYWN0aW9uLnZpZXcuaWQpO1xuXG4gICAgICBjYXNlICdkdXBsaWNhdGVWaWV3JzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICB2aWV3czogYXdhaXQgd2l0aER1cGxpY2F0ZVZpZXcoc3RhdGUudmlld3MsIGFjdGlvbi52aWV3LCBkdXBsaWNhdGUpLFxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICdjb3B5TGlua1RvVmlldyc6XG4gICAgICAgIGF3YWl0IGNvcHlMaW5rKGFjdGlvbi52aWV3KTtcbiAgICAgICAgcmV0dXJuIHN0YXRlO1xuXG4gICAgICBjYXNlICdzZXRBbGxWaWV3c1RvZ2dsZSc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgYWxsOiB7XG4gICAgICAgICAgICAuLi5zdGF0ZS5hbGwsXG4gICAgICAgICAgICBwcml2YXRlT3BlbjpcbiAgICAgICAgICAgICAgYWN0aW9uLnBlcm1pc3Npb24gPT09ICdwcml2YXRlJ1xuICAgICAgICAgICAgICAgID8gYWN0aW9uLm9wZW5cbiAgICAgICAgICAgICAgICA6IHN0YXRlLmFsbC5wcml2YXRlT3BlbixcbiAgICAgICAgICAgIHNoYXJlZE9wZW46XG4gICAgICAgICAgICAgIGFjdGlvbi5wZXJtaXNzaW9uID09PSAnc2hhcmVkJ1xuICAgICAgICAgICAgICAgID8gYWN0aW9uLm9wZW5cbiAgICAgICAgICAgICAgICA6IHN0YXRlLmFsbC5zaGFyZWRPcGVuLFxuICAgICAgICAgICAgcHVibGljT3BlbjpcbiAgICAgICAgICAgICAgYWN0aW9uLnBlcm1pc3Npb24gPT09ICdwdWJsaWMnXG4gICAgICAgICAgICAgICAgPyBhY3Rpb24ub3BlblxuICAgICAgICAgICAgICAgIDogc3RhdGUuYWxsLnB1YmxpY09wZW4sXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG4gIH1cblxuICAvLy8vLy8vLy8vLy8vLy9cbiAgLy8gVXRpbGl0aWVzIC8vXG4gIC8vLy8vLy8vLy8vLy8vL1xuXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRQZXJtaXNzaW9uVGl0bGUocGVybWlzc2lvbjogVmlld1Blcm1pc3Npb24pOiBzdHJpbmcge1xuICAgIHN3aXRjaCAocGVybWlzc2lvbikge1xuICAgICAgY2FzZSAncHJpdmF0ZSc6XG4gICAgICAgIHJldHVybiAnUHJpdmF0ZSc7XG4gICAgICBjYXNlICdzaGFyZWQnOlxuICAgICAgICByZXR1cm4gJ1NoYXJlZCc7XG4gICAgICBjYXNlICdwdWJsaWMnOlxuICAgICAgICByZXR1cm4gJ1B1YmxpYyc7XG4gICAgfVxuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGdldFBlcm1pc3Npb25EZXNjcmlwdGlvbihwZXJtaXNzaW9uOiBWaWV3UGVybWlzc2lvbik6IHN0cmluZyB7XG4gICAgc3dpdGNoIChwZXJtaXNzaW9uKSB7XG4gICAgICBjYXNlICdwcml2YXRlJzpcbiAgICAgICAgcmV0dXJuICdPbmx5IHZpc2libGUgdG8geW91JztcbiAgICAgIGNhc2UgJ3NoYXJlZCc6XG4gICAgICAgIHJldHVybiAnT25seSB2aXNpYmxlIHRvIHRob3NlIHdpdGggYWNjZXNzJztcbiAgICAgIGNhc2UgJ3B1YmxpYyc6XG4gICAgICAgIHJldHVybiAnVmlzaWJsZSB0byBldmVyeW9uZSc7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
318
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9uYXZpZ2F0aW9uL3ZpZXdzL3N0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBa0MsTUFBTSxTQUFTLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDOUMsT0FBTyxFQUNMLFdBQVcsRUFFWCxJQUFJLEVBQ0osR0FBRyxFQUNILFNBQVMsRUFFVCxhQUFhLEVBQ2IsU0FBUyxFQUNULE9BQU8sR0FDUixNQUFNLE1BQU0sQ0FBQztBQUlkLE1BQU0sS0FBVyxRQUFRLENBc2pCeEI7QUF0akJELFdBQWlCLFFBQVE7SUFDVix3QkFBZSxHQUFHLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQVUsQ0FBQztJQW9HeEUsU0FBZ0IsYUFBYSxDQUMzQixNQUFpQixFQUNqQixTQUF1QixFQUN2QixRQUFxQixFQUNyQixPQUEyQjtRQUUzQixNQUFNLFlBQVksR0FBaUI7WUFDakMsS0FBSyxFQUFFLEVBQUU7WUFDVCxZQUFZLEVBQUUsSUFBSTtZQUNsQixhQUFhLEVBQUUsSUFBSTtZQUNuQixjQUFjLEVBQUUsQ0FBQztZQUNqQixRQUFRLEVBQUU7Z0JBQ1IsTUFBTSxFQUFFLEVBQUU7Z0JBQ1YsVUFBVSxFQUFFLEtBQUs7YUFDbEI7WUFDRCxHQUFHLEVBQUU7Z0JBQ0gsTUFBTSxFQUFFLEVBQUU7Z0JBQ1YsV0FBVyxFQUFFLElBQUk7Z0JBQ2pCLFVBQVUsRUFBRSxJQUFJO2dCQUNoQixVQUFVLEVBQUUsSUFBSTthQUNqQjtTQUNGLENBQUM7UUFFRixNQUFNLHFCQUFxQixHQUFpQixZQUFZLENBQ3RELEVBQUUsRUFDRixPQUFPLEVBQUUsWUFBWSxFQUNyQixZQUFZLENBQ2IsQ0FBQztRQUVGLE1BQU0sT0FBTyxHQUF1QixJQUFJLE9BQU8sRUFB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LENBQUMsVUFBVSxLQUFLLFFBQVE7NEJBQzVCLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSTs0QkFDYixDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVO3dCQUMxQixVQUFVLEVBQ1IsTUFBTSxDQUFDLFVBQVUsS0FBSyxRQUFROzRCQUM1QixDQUFDLENBQUMsTUFBTSxDQUFDLElBQUk7NEJBQ2IsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsVUFBVTtxQkFDM0I7aUJBQ0YsQ0FBQztTQUNMO0lBQ0gsQ0FBQztJQUVELGVBQWU7SUFDZixlQUFlO0lBQ2YsZUFBZTtJQUVmLFNBQWdCLGtCQUFrQixDQUFDLFVBQTBCO1FBQzNELFFBQVEsVUFBVSxFQUFFO1lBQ2xCLEtBQUssU0FBUztnQkFDWixPQUFPLFNBQVMsQ0FBQztZQUNuQixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxRQUFRLENBQUM7WUFDbEIsS0FBSyxRQUFRO2dCQUNYLE9BQU8sUUFBUSxDQUFDO1NBQ25CO0lBQ0gsQ0FBQztJQVRlLDJCQUFrQixxQkFTakMsQ0FBQTtJQUVELFNBQWdCLHdCQUF3QixDQUFDLFVBQTBCO1FBQ2pFLFFBQVEsVUFBVSxFQUFFO1lBQ2xCLEtBQUssU0FBUztnQkFDWixPQUFPLHFCQUFxQixDQUFDO1lBQy9CLEtBQUssUUFBUTtnQkFDWCxPQUFPLG1DQUFtQyxDQUFDO1lBQzdDLEtBQUssUUFBUTtnQkFDWCxPQUFPLHFCQUFxQixDQUFDO1NBQ2hDO0lBQ0gsQ0FBQztJQVRlLGlDQUF3QiwyQkFTdkMsQ0FBQTtBQUNILENBQUMsRUF0akJnQixRQUFRLEtBQVIsUUFBUSxRQXNqQnhCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEZ1c2UsIHsgRnVzZVJlc3VsdCwgSUZ1c2VPcHRpb25zIH0gZnJvbSAnZnVzZS5qcyc7XG5pbXBvcnQgeyBkZWZhdWx0c0RlZXAsIHNvcnRCeSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge1xuICBjb25uZWN0YWJsZSxcbiAgQ29ubmVjdGFibGUsXG4gIGZyb20sXG4gIG1hcCxcbiAgbWVyZ2VTY2FuLFxuICBPYnNlcnZhYmxlLFxuICBSZXBsYXlTdWJqZWN0LFxuICBzdGFydFdpdGgsXG4gIFN1YmplY3QsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGVlcFBhcnRpYWwgfSBmcm9tICd1dGlsaXR5LXR5cGVzJztcbmltcG9ydCB7IEhpZ2hsaWdodENvbXBvbmVudCB9IGZyb20gJy4uLy4uL3Zpc3VhbGl6YXRpb24vaGlnaGxpZ2h0L2hpZ2hsaWdodC5jb21wb25lbnQnO1xuXG5leHBvcnQgbmFtZXNwYWNlIFJpdlZpZXdzIHtcbiAgZXhwb3J0IGNvbnN0IFZpZXdQZXJtaXNzaW9ucyA9IFsncHJpdmF0ZScsICdwdWJsaWMnLCAnc2hhcmVkJ10gYXMgY29uc3Q7XG4gIGV4cG9ydCB0eXBlIFZpZXdQZXJtaXNzaW9uID0gKHR5cGVvZiBWaWV3UGVybWlzc2lvbnMpW251bWJlcl07XG5cbiAgZXhwb3J0IHR5cGUgVmlldyA9IHtcbiAgICBpZDogc3RyaW5nIHwgbnVtYmVyO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICBwZXJtaXNzaW9uOiBWaWV3UGVybWlzc2lvbjtcbiAgfTtcblxuICBleHBvcnQgdHlwZSBGdWxsVmlldzxWIGV4dGVuZHMgVmlldyA9IFZpZXc+ID0gViAmIHtcbiAgICBhY3RpdmU6IGJvb2xlYW47XG4gICAgZGVmYXVsdDogYm9vbGVhbjtcbiAgICBzeXN0ZW06IGJvb2xlYW47XG4gICAgdGl0bGVIaWdobGlnaHRJbmRpY2VzPzogSGlnaGxpZ2h0Q29tcG9uZW50LkhpZ2hsaWdodEluZGljZXNbXTtcbiAgfTtcblxuICAvLy8vLy8vLy8vL1xuICAvLyBTdGF0ZSAvL1xuICAvLy8vLy8vLy8vL1xuXG4gIGV4cG9ydCB0eXBlIENvcmVTdGF0ZTxWIGV4dGVuZHMgVmlldz4gPSB7XG4gICAgdmlld3M6IFZbXTtcbiAgICBhY3RpdmVWaWV3SWQ6IFZbJ2lkJ10gfCBudWxsO1xuICAgIGRlZmF1bHRWaWV3SWQ6IFZbJ2lkJ10gfCBudWxsO1xuICAgIGNvbnRhaW5lcldpZHRoOiBudW1iZXI7XG4gICAgb3ZlcmZsb3c6IHtcbiAgICAgIHNlYXJjaDogc3RyaW5nO1xuICAgICAgcGlja2VyT3BlbjogYm9vbGVhbjtcbiAgICB9O1xuICAgIGFsbDoge1xuICAgICAgc2VhcmNoOiBzdHJpbmc7XG4gICAgICBwcml2YXRlT3BlbjogYm9vbGVhbjtcbiAgICAgIHNoYXJlZE9wZW46IGJvb2xlYW47XG4gICAgICBwdWJsaWNPcGVuOiBib29sZWFuO1xuICAgIH07XG4gIH07XG5cbiAgZXhwb3J0IHR5cGUgRnVsbFN0YXRlPFYgZXh0ZW5kcyBWaWV3PiA9IENvcmVTdGF0ZTxWPiAmIHtcbiAgICBhbGxWaWV3czogRnVsbFZpZXc8Vj5bXTtcbiAgICBkaXNwbGF5ZWRWaWV3czogRnVsbFZpZXc8Vj5bXTtcbiAgICBlbmFibGVkVmlld3M6IEZ1bGxWaWV3PFY+W107XG4gICAgYWxsOiB7XG4gICAgICBwcml2YXRlVmlld3M6IEZ1bGxWaWV3PFY+W107XG4gICAgICBwcml2YXRlRW1wdHlTdGF0ZU1lc3NhZ2U6IHN0cmluZztcbiAgICAgIHNoYXJlZFZpZXdzOiBGdWxsVmlldzxWPltdO1xuICAgICAgc2hhcmVkRW1wdHlTdGF0ZU1lc3NhZ2U6IHN0cmluZztcbiAgICAgIHB1YmxpY1ZpZXdzOiBGdWxsVmlldzxWPltdO1xuICAgICAgcHVibGljRW1wdHlTdGF0ZU1lc3NhZ2U6IHN0cmluZztcbiAgICB9O1xuICB9O1xuXG4gIC8vLy8vLy8vLy8vLy9cbiAgLy8gQWN0aW9ucyAvL1xuICAvLy8vLy8vLy8vLy8vXG5cbiAgZXhwb3J0IHR5cGUgQWN0aW9uPFYgZXh0ZW5kcyBWaWV3PiA9XG4gICAgfCB7IHR5cGU6ICdsb2FkJyB9XG4gICAgfCB7IHR5cGU6ICdzZXRBY3RpdmVWaWV3JzsgaWQ6IFZbJ2lkJ10gfVxuICAgIHwgeyB0eXBlOiAnc2V0RGVmYXVsdFZpZXcnOyBpZDogVlsnaWQnXSB9XG4gICAgfCB7IHR5cGU6ICdzZXRFbmFibGVkJzsgaWQ6IFZbJ2lkJ107IGVuYWJsZWQ6IGJvb2xlYW4gfVxuICAgIHwgeyB0eXBlOiAnc2V0Q29udGFpbmVyV2lkdGgnOyB3aWR0aDogbnVtYmVyIH1cbiAgICB8IHsgdHlwZTogJ3NldE92ZXJmbG93UGlja2VyT3Blbic7IG9wZW46IGJvb2xlYW4gfVxuICAgIHwgeyB0eXBlOiAnc2V0T3ZlcmZsb3dTZWFyY2hRdWVyeSc7IHF1ZXJ5OiBzdHJpbmcgfVxuICAgIHwgeyB0eXBlOiAnc2V0QWxsVmlld3NTZWFyY2hRdWVyeSc7IHF1ZXJ5OiBzdHJpbmcgfVxuICAgIHwgeyB0eXBlOiAndXBkYXRlVmlldyc7IHZpZXc6IFYgfVxuICAgIHwgeyB0eXBlOiAnZGVsZXRlVmlldyc7IHZpZXc6IFYgfVxuICAgIHwgeyB0eXBlOiAnZHVwbGljYXRlVmlldyc7IHZpZXc6IFYgfVxuICAgIHwgeyB0eXBlOiAnY29weUxpbmtUb1ZpZXcnOyB2aWV3OiBWIH1cbiAgICB8IHtcbiAgICAgICAgdHlwZTogJ3ZpZXdPcmRlckNoYW5nZSc7XG4gICAgICAgIHByZXZpb3VzRW5hYmxlZEluZGV4OiBudW1iZXI7XG4gICAgICAgIG5ld0VuYWJsZWRJbmRleDogbnVtYmVyO1xuICAgICAgfVxuICAgIHwgeyB0eXBlOiAnc2V0QWxsVmlld3NUb2dnbGUnOyBwZXJtaXNzaW9uOiBWaWV3UGVybWlzc2lvbjsgb3BlbjogYm9vbGVhbiB9O1xuXG4gIC8vLy8vLy8vLy8vL1xuICAvLyBTb3VyY2UgLy9cbiAgLy8vLy8vLy8vLy8vXG5cbiAgZXhwb3J0IHR5cGUgU291cmNlPFYgZXh0ZW5kcyBWaWV3PiA9ICgpID0+IFZbXSB8IFByb21pc2U8VltdPjtcbiAgZXhwb3J0IHR5cGUgRHVwbGljYXRlPFYgZXh0ZW5kcyBWaWV3PiA9IChcbiAgICB2aWV3VG9EdXBsaWNhdGU6IFYsXG4gICkgPT4gViB8IFByb21pc2U8Vj47XG4gIGV4cG9ydCB0eXBlIENvcHlMaW5rPFYgZXh0ZW5kcyBWaWV3PiA9ICh2aWV3OiBWKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcblxuICAvLy8vLy8vLy8vLy8vXG4gIC8vIE1hbmFnZXIgLy9cbiAgLy8vLy8vLy8vLy8vL1xuXG4gIGV4cG9ydCB0eXBlIE1hbmFnZXI8ViBleHRlbmRzIFZpZXc+ID0ge1xuICAgIGFjdGlvbnM6IFN1YmplY3Q8QWN0aW9uPFY+PjtcbiAgICBzdGF0ZTogQ29ubmVjdGFibGU8RnVsbFN0YXRlPFY+PjtcbiAgfTtcblxuICBleHBvcnQgdHlwZSBNYW5hZ2VyT3B0aW9uczxWIGV4dGVuZHMgVmlldz4gPSB7XG4gICAgaW5pdGlhbFN0YXRlPzogRGVlcFBhcnRpYWw8Q29yZVN0YXRlPFY+PjtcbiAgICBmdXNlT3B0aW9ucz86IElGdXNlT3B0aW9uczxWPjtcbiAgfTtcblxuICBleHBvcnQgZnVuY3Rpb24gY3JlYXRlTWFuYWdlcjxWIGV4dGVuZHMgVmlldz4oXG4gICAgc291cmNlOiBTb3VyY2U8Vj4sXG4gICAgZHVwbGljYXRlOiBEdXBsaWNhdGU8Vj4sXG4gICAgY29weUxpbms6IENvcHlMaW5rPFY+LFxuICAgIG9wdGlvbnM/OiBNYW5hZ2VyT3B0aW9uczxWPixcbiAgKTogTWFuYWdlcjxWPiB7XG4gICAgY29uc3QgZGVmYXVsdFN0YXRlOiBDb3JlU3RhdGU8Vj4gPSB7XG4gICAgICB2aWV3czogW10sXG4gICAgICBhY3RpdmVWaWV3SWQ6IG51bGwsXG4gICAgICBkZWZhdWx0Vmlld0lkOiBudWxsLFxuICAgICAgY29udGFpbmVyV2lkdGg6IDAsXG4gICAgICBvdmVyZmxvdzoge1xuICAgICAgICBzZWFyY2g6ICcnLFxuICAgICAgICBwaWNrZXJPcGVuOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBhbGw6IHtcbiAgICAgICAgc2VhcmNoOiAnJyxcbiAgICAgICAgcHJpdmF0ZU9wZW46IHRydWUsXG4gICAgICAgIHNoYXJlZE9wZW46IHRydWUsXG4gICAgICAgIHB1YmxpY09wZW46IHRydWUsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb25zdCBkZWZhdWx0ZWRJbml0aWFsU3RhdGU6IENvcmVTdGF0ZTxWPiA9IGRlZmF1bHRzRGVlcChcbiAgICAgIHt9LFxuICAgICAgb3B0aW9ucz8uaW5pdGlhbFN0YXRlLFxuICAgICAgZGVmYXVsdFN0YXRlLFxuICAgICk7XG5cbiAgICBjb25zdCBhY3Rpb25zOiBTdWJqZWN0PEFjdGlvbjxWPj4gPSBuZXcgU3ViamVjdCgpO1xuICAgIGNvbnN0IGNvcmVTdGF0ZTogT2JzZXJ2YWJsZTxDb3JlU3RhdGU8Vj4+ID0gYWN0aW9ucy5waXBlKFxuICAgICAgbWVyZ2VTY2FuKFxuICAgICAgICAoc3RhdGUsIGFjdGlvbikgPT5cbiAgICAgICAgICBmcm9tKHJlZHVjZShzdGF0ZSwgYWN0aW9uLCBzb3VyY2UsIGR1cGxpY2F0ZSwgY29weUxpbmspKSxcbiAgICAgICAgZGVmYXVsdGVkSW5pdGlhbFN0YXRlLFxuICAgICAgICAxLFxuICAgICAgKSxcbiAgICAgIHN0YXJ0V2l0aChkZWZhdWx0ZWRJbml0aWFsU3RhdGUpLFxuICAgICk7XG5cbiAgICBjb25zdCBzdGF0ZTogQ29ubmVjdGFibGU8RnVsbFN0YXRlPFY+PiA9IGNvbm5lY3RhYmxlKFxuICAgICAgY29yZVN0YXRlLnBpcGUoXG4gICAgICAgIG1hcChzID0+IHtcbiAgICAgICAgICAvLyBJZiBmb3Igc29tZSByZWFzb24gdGhlIGFjdGl2ZSB2aWV3IGlzIG5vdCBjdXJyZW50bHkgZW5hYmxlZCwgd2UnbGxcbiAgICAgICAgICAvLyBkZWZhdWx0IHRvIG1ha2luZyB0aGUgZmlyc3QgdmlldyBhY3RpdmUgaW5zdGVhZC5cbiAgICAgICAgICBjb25zdCBhY3RpdmVWaWV3OiBWIHwgdW5kZWZpbmVkID0gcy52aWV3cy5maW5kKFxuICAgICAgICAgICAgdmlldyA9PiB2aWV3LmVuYWJsZWQgJiYgdmlldy5pZCA9PT0gcy5hY3RpdmVWaWV3SWQsXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGNvbnN0IGFsbFZpZXdzOiBGdWxsVmlldzxWPltdID0gcy52aWV3cy5tYXAoKHZpZXcsIGkpID0+ICh7XG4gICAgICAgICAgICAuLi52aWV3LFxuICAgICAgICAgICAgZW5hYmxlZDogdmlldy5lbmFibGVkIHx8IGkgPT09IDAsXG4gICAgICAgICAgICBhY3RpdmU6IGFjdGl2ZVZpZXcgPyBhY3RpdmVWaWV3LmlkID09PSB2aWV3LmlkIDogaSA9PT0gMCxcbiAgICAgICAgICAgIGRlZmF1bHQ6IHZpZXcuaWQgPT09IHMuZGVmYXVsdFZpZXdJZCxcbiAgICAgICAgICAgIHN5c3RlbTogaSA9PT0gMCxcbiAgICAgICAgICB9KSk7XG5cbiAgICAgICAgICBjb25zdCBhbGxFbmFibGVkVmlld3MgPSBnZXRFbmFibGVkVmlld3MoYWxsVmlld3MpO1xuXG4gICAgICAgICAgY29uc3QgZGlzcGxheWVkVmlld3MgPSBjYWxjdWxhdGVEaXNwbGF5ZWRWaWV3cyhcbiAgICAgICAgICAgIGFsbEVuYWJsZWRWaWV3cyxcbiAgICAgICAgICAgIGNhbGN1bGF0ZU92ZXJmbG93Vmlld0luZGV4KHMpLFxuICAgICAgICAgICAgcy5hY3RpdmVWaWV3SWQsXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGNvbnN0IGVuYWJsZWRWaWV3cyA9IHMub3ZlcmZsb3cuc2VhcmNoXG4gICAgICAgICAgICA/IHNlYXJjaFZpZXdzKFxuICAgICAgICAgICAgICAgIGFsbEVuYWJsZWRWaWV3cyxcbiAgICAgICAgICAgICAgICBzLm92ZXJmbG93LnNlYXJjaCxcbiAgICAgICAgICAgICAgICBvcHRpb25zPy5mdXNlT3B0aW9ucyxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBhbGxFbmFibGVkVmlld3M7XG5cbiAgICAgICAgICBjb25zdCBhbGxWaWV3c0ZpbHRlcmVkID0gcy5hbGwuc2VhcmNoXG4gICAgICAgICAgICA/IHNlYXJjaFZpZXdzKGFsbFZpZXdzLCBzLmFsbC5zZWFyY2gsIG9wdGlvbnM/LmZ1c2VPcHRpb25zKVxuICAgICAgICAgICAgOiBhbGxWaWV3cztcblxuICAgICAgICAgIGNvbnN0IHNlYXJjaGluZ0FsbFZpZXdzID0gISFzLmFsbC5zZWFyY2g7XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4ucyxcbiAgICAgICAgICAgIGFsbFZpZXdzLFxuICAgICAgICAgICAgZGlzcGxheWVkVmlld3MsXG4gICAgICAgICAgICBlbmFibGVkVmlld3MsXG4gICAgICAgICAgICBhbGw6IHtcbiAgICAgICAgICAgICAgLi4ucy5hbGwsXG4gICAgICAgICAgICAgIHByaXZhdGVPcGVuOiBzZWFyY2hpbmdBbGxWaWV3cyB8fCBzLmFsbC5wcml2YXRlT3BlbixcbiAgICAgICAgICAgICAgcHJpdmF0ZVZpZXdzOiB2aWV3c0J5UGVybWlzc2lvbihhbGxWaWV3c0ZpbHRlcmVkLCAncHJpdmF0ZScpLFxuICAgICAgICAgICAgICBwcml2YXRlRW1wdHlTdGF0ZU1lc3NhZ2U6IGdldEVtcHR5U3RhdGVNZXNzYWdlKHMsICdwcml2YXRlJyksXG4gICAgICAgICAgICAgIHNoYXJlZE9wZW46IHNlYXJjaGluZ0FsbFZpZXdzIHx8IHMuYWxsLnNoYXJlZE9wZW4sXG4gICAgICAgICAgICAgIHNoYXJlZFZpZXdzOiB2aWV3c0J5UGVybWlzc2lvbihhbGxWaWV3c0ZpbHRlcmVkLCAnc2hhcmVkJyksXG4gICAgICAgICAgICAgIHNoYXJlZEVtcHR5U3RhdGVNZXNzYWdlOiBnZXRFbXB0eVN0YXRlTWVzc2FnZShzLCAnc2hhcmVkJyksXG4gICAgICAgICAgICAgIHB1YmxpY09wZW46IHNlYXJjaGluZ0FsbFZpZXdzIHx8IHMuYWxsLnB1YmxpY09wZW4sXG4gICAgICAgICAgICAgIHB1YmxpY1ZpZXdzOiB2aWV3c0J5UGVybWlzc2lvbihhbGxWaWV3c0ZpbHRlcmVkLCAncHVibGljJyksXG4gICAgICAgICAgICAgIHB1YmxpY0VtcHR5U3RhdGVNZXNzYWdlOiBnZXRFbXB0eVN0YXRlTWVzc2FnZShzLCAncHVibGljJyksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH07XG4gICAgICAgIH0pLFxuICAgICAgKSxcbiAgICAgIHtcbiAgICAgICAgY29ubmVjdG9yOiAoKSA9PiBuZXcgUmVwbGF5U3ViamVjdCgxKSxcbiAgICAgICAgcmVzZXRPbkRpc2Nvbm5lY3Q6IGZhbHNlLFxuICAgICAgfSxcbiAgICApO1xuICAgIHN0YXRlLmNvbm5lY3QoKTtcblxuICAgIC8vIExvYWQgdGhlIHZpZXdzIGltbWVkaWF0ZWx5XG4gICAgYWN0aW9ucy5uZXh0KHsgdHlwZTogJ2xvYWQnIH0pO1xuXG4gICAgcmV0dXJuIHsgYWN0aW9ucywgc3RhdGUgfTtcbiAgfVxuXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy8gU3RhdGUgcmVkdWNlciAod2l0aCBoZWxwZXJzKSAvL1xuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgZnVuY3Rpb24gZ2V0RW5hYmxlZFZpZXdzPFYgZXh0ZW5kcyBWaWV3Pih2aWV3czogVltdKTogVltdO1xuICBmdW5jdGlvbiBnZXRFbmFibGVkVmlld3M8ViBleHRlbmRzIFZpZXc+KFxuICAgIHZpZXdzOiBGdWxsVmlldzxWPltdLFxuICApOiBGdWxsVmlldzxWPltdIHtcbiAgICByZXR1cm4gdmlld3MuZmlsdGVyKCh2LCBpKSA9PiB2LmVuYWJsZWQgfHwgaSA9PT0gMCk7XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNsYXRlcyBhbiBpbmRleCBpbiB0aGUgZW5hYmxlZCB2aWV3cyBsaXN0IHRvIHRoZSBjb3JyZXNwb25kaW5nIGluZGV4XG4gICAqIGluIHRoZSBmdWxsIHZpZXdzIGxpc3QuIFRoaXMgaXMgdXNlZCB0byByZXNvbHZlIFVJIGluZGljZXMgKHdoaWNoIG9ubHlcbiAgICogc2hvdyBlbmFibGVkIHZpZXdzKSB0byBzdGF0ZS52aWV3cyBpbmRpY2VzICh3aGljaCBpbmNsdWRlcyBhbGwgdmlld3MpLlxuICAgKi9cbiAgZnVuY3Rpb24gbWFwRW5hYmxlZEluZGV4VG9WaWV3SW5kZXg8ViBleHRlbmRzIFZpZXc+KFxuICAgIHZpZXdzOiBWW10sXG4gICAgZW5hYmxlZEluZGV4OiBudW1iZXIsXG4gICk6IG51bWJlciB7XG4gICAgY29uc3QgZW5hYmxlZFZpZXdzID0gZ2V0RW5hYmxlZFZpZXdzKHZpZXdzKTtcblxuICAgIGNvbnN0IHRhcmdldFZpZXcgPSBlbmFibGVkVmlld3NbZW5hYmxlZEluZGV4XTtcbiAgICBpZiAoIXRhcmdldFZpZXcpIHJldHVybiBlbmFibGVkSW5kZXg7XG5cbiAgICBjb25zdCB2aWV3SW5kZXggPSB2aWV3cy5maW5kSW5kZXgodmlldyA9PiB2aWV3LmlkID09PSB0YXJnZXRWaWV3LmlkKTtcbiAgICByZXR1cm4gdmlld0luZGV4ID09PSAtMSA/IGVuYWJsZWRJbmRleCA6IHZpZXdJbmRleDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNhbGN1bGF0ZU92ZXJmbG93Vmlld0luZGV4PFYgZXh0ZW5kcyBWaWV3PihcbiAgICBzdGF0ZTogQ29yZVN0YXRlPFY+LFxuICApOiBudW1iZXIge1xuICAgIGNvbnN0IGVuYWJsZWRWaWV3cyA9IGdldEVuYWJsZWRWaWV3cyhzdGF0ZS52aWV3cyk7XG5cbiAgICAvLyBUYWJzIGhhdmUgYSBtaW5pbXVtIHdpZHRoIG9mIDkycHguXG4gICAgY29uc3QgcG9zc2libGVTbG90Q291bnQgPSBNYXRoLmZsb29yKHN0YXRlLmNvbnRhaW5lcldpZHRoIC8gOTIpO1xuXG4gICAgLy8gVGhlIFwiYWxsIHZpZXdzXCIgc2lkZWJhciB0cmlnZ2VyIHRha2VzIHVwIG9uZSBzbG90LlxuICAgIGNvbnN0IGF2YWlsYWJsZVNsb3RDb3VudCA9IHBvc3NpYmxlU2xvdENvdW50IC0gMTtcblxuICAgIC8vIElmIHRoZXJlIGFyZSB0b28gbWFueSB0YWJzLCB0aGUgXCJOIG1vcmVcIiB0cmlnZ2VyIHRha2VzIHVwIG9uZSBzbG90IGFzIHdlbGwuXG4gICAgLy8gQnV0IHdlIHdhbnQgdG8gYXZvaWQgdGhlIFwiMSBtb3JlXCIgY2FzZSwgc28gd2Ugb25seSB1c2UgYSBzbG90IGZvciBcIk4gbW9yZVwiIGlmIE4gIT0gMS5cbiAgICBpZiAoYXZhaWxhYmxlU2xvdENvdW50ID49IGVuYWJsZWRWaWV3cy5sZW5ndGgpIHJldHVybiBlbmFibGVkVmlld3MubGVuZ3RoO1xuICAgIGVsc2UgcmV0dXJuIGF2YWlsYWJsZVNsb3RDb3VudCAtIDE7IC8vIHRoZSBcIk4gbW9yZVwiIHVzZXMgdXAgYSBzbG90LlxuICB9XG5cbiAgZnVuY3Rpb24gY2FsY3VsYXRlRGlzcGxheWVkVmlld3M8ViBleHRlbmRzIFZpZXc+KFxuICAgIGZ1bGxWaWV3czogRnVsbFZpZXc8Vj5bXSxcbiAgICBvdmVyZmxvd1ZpZXdJbmRleDogbnVtYmVyLFxuICAgIGFjdGl2ZVZpZXdJZDogQ29yZVN0YXRlPFY+WydhY3RpdmVWaWV3SWQnXSxcbiAgKTogRnVsbFZpZXc8Vj5bXSB7XG4gICAgY29uc3QgZGlzcGxheWVkVmlld3MgPSBmdWxsVmlld3Muc2xpY2UoMCwgb3ZlcmZsb3dWaWV3SW5kZXgpO1xuXG4gICAgY29uc3QgYWN0aXZlVmlld0luRGlzcGxheSA9IGRpc3BsYXllZFZpZXdzLnNvbWUoXG4gICAgICB2aWV3ID0+IHZpZXcuaWQgPT09IGFjdGl2ZVZpZXdJZCxcbiAgICApO1xuXG4gICAgaWYgKCFhY3RpdmVWaWV3SW5EaXNwbGF5ICYmIGFjdGl2ZVZpZXdJZCAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgYWN0aXZlVmlldyA9IGZ1bGxWaWV3cy5maW5kKHZpZXcgPT4gdmlldy5pZCA9PT0gYWN0aXZlVmlld0lkKTtcbiAgICAgIGlmIChhY3RpdmVWaWV3ICYmIGRpc3BsYXllZFZpZXdzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuIFsuLi5kaXNwbGF5ZWRWaWV3cy5zbGljZSgwLCAtMSksIGFjdGl2ZVZpZXddO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkaXNwbGF5ZWRWaWV3cztcbiAgfVxuXG4gIGZ1bmN0aW9uIHZpZXdzQnlQZXJtaXNzaW9uPFYgZXh0ZW5kcyBWaWV3PihcbiAgICB2aWV3czogRnVsbFZpZXc8Vj5bXSxcbiAgICBwZXJtaXNzaW9uOiBWaWV3UGVybWlzc2lvbixcbiAgKTogRnVsbFZpZXc8Vj5bXSB7XG4gICAgcmV0dXJuIHNvcnRCeShcbiAgICAgIHZpZXdzLmZpbHRlcih2aWV3ID0+IHZpZXcucGVybWlzc2lvbiA9PT0gcGVybWlzc2lvbiksXG4gICAgICBbdiA9PiAhdi5zeXN0ZW0sICd0aXRsZSddLFxuICAgICk7XG4gIH1cblxuICBmdW5jdGlvbiBzZWFyY2hWaWV3czxWIGV4dGVuZHMgVmlldz4oXG4gICAgdmlld3M6IEZ1bGxWaWV3PFY+W10sXG4gICAgcXVlcnk6IHN0cmluZyxcbiAgICBvcHRpb25zPzogSUZ1c2VPcHRpb25zPFY+LFxuICApOiBGdWxsVmlldzxWPltdIHtcbiAgICBjb25zdCBmdXNlID0gbmV3IEZ1c2Uodmlld3MsIHtcbiAgICAgIHRocmVzaG9sZDogMC4yLFxuICAgICAga2V5czogWyd0aXRsZSddLFxuICAgICAgaW5jbHVkZU1hdGNoZXM6IHRydWUsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuXG4gICAgY29uc3QgbWF0Y2hlZE9wdGlvbnM6IEZ1c2VSZXN1bHQ8RnVsbFZpZXc8Vj4+W10gPSBmdXNlLnNlYXJjaChxdWVyeSk7XG5cbiAgICByZXR1cm4gbWF0Y2hlZE9wdGlvbnMubWFwKHJlc3VsdCA9PiAoe1xuICAgICAgLi4ucmVzdWx0Lml0ZW0sXG4gICAgICB0aXRsZUhpZ2hsaWdodEluZGljZXM6IFtcbiAgICAgICAgLi4uKHJlc3VsdC5tYXRjaGVzPy5maW5kKG1hdGNoID0+IG1hdGNoLmtleSA9PT0gJ3RpdGxlJyk/LmluZGljZXMgPz9cbiAgICAgICAgICBbXSksXG4gICAgICBdLFxuICAgIH0pKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldE5leHRCZXN0QWN0aXZlVmlldzxWIGV4dGVuZHMgVmlldz4oc3RhdGU6IENvcmVTdGF0ZTxWPik6IFZbJ2lkJ10ge1xuICAgIGNvbnN0IGVuYWJsZWRWaWV3cyA9IGdldEVuYWJsZWRWaWV3cyhzdGF0ZS52aWV3cyk7XG4gICAgY29uc3QgY3VycmVudEFjdGl2ZVZpZXdJbmRleCA9IGVuYWJsZWRWaWV3cy5maW5kSW5kZXgoXG4gICAgICB2aWV3ID0+IHZpZXcuaWQgPT09IHN0YXRlLmFjdGl2ZVZpZXdJZCxcbiAgICApO1xuXG4gICAgaWYgKGN1cnJlbnRBY3RpdmVWaWV3SW5kZXggPT09IC0xKSByZXR1cm4gZW5hYmxlZFZpZXdzWzBdLmlkO1xuICAgIHJldHVybiAoXG4gICAgICBlbmFibGVkVmlld3NbY3VycmVudEFjdGl2ZVZpZXdJbmRleCArIDFdPy5pZCA/P1xuICAgICAgZW5hYmxlZFZpZXdzW2N1cnJlbnRBY3RpdmVWaWV3SW5kZXggLSAxXT8uaWQgPz9cbiAgICAgIGVuYWJsZWRWaWV3c1swXS5pZFxuICAgICk7XG4gIH1cblxuICBmdW5jdGlvbiBkZWxldGVWaWV3PFYgZXh0ZW5kcyBWaWV3PihcbiAgICBzdGF0ZTogQ29yZVN0YXRlPFY+LFxuICAgIGlkOiBWWydpZCddLFxuICApOiBDb3JlU3RhdGU8Vj4ge1xuICAgIGNvbnN0IGFjdGl2ZVZpZXdJZCA9XG4gICAgICBzdGF0ZS5hY3RpdmVWaWV3SWQgPT09IGlkXG4gICAgICAgID8gZ2V0TmV4dEJlc3RBY3RpdmVWaWV3KHN0YXRlKVxuICAgICAgICA6IHN0YXRlLmFjdGl2ZVZpZXdJZDtcbiAgICBjb25zdCB2aWV3cyA9IHN0YXRlLnZpZXdzLmZpbHRlcih2aWV3ID0+IHZpZXcuaWQgIT09IGlkKTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICB2aWV3cyxcbiAgICAgIGFjdGl2ZVZpZXdJZCxcbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gc2V0RW5hYmxlZDxWIGV4dGVuZHMgVmlldz4oXG4gICAgc3RhdGU6IENvcmVTdGF0ZTxWPixcbiAgICBpZDogVlsnaWQnXSxcbiAgICBlbmFibGVkOiBib29sZWFuLFxuICApOiBDb3JlU3RhdGU8Vj4ge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHZpZXdzOiBzdGF0ZS52aWV3cy5tYXAodmlldyA9PlxuICAgICAgICB2aWV3LmlkID09PSBpZCA/IHsgLi4udmlldywgZW5hYmxlZCB9IDogdmlldyxcbiAgICAgICksXG4gICAgICBhY3RpdmVWaWV3SWQ6XG4gICAgICAgICFlbmFibGVkICYmIHN0YXRlLmFjdGl2ZVZpZXdJZCA9PT0gaWRcbiAgICAgICAgICA/IGdldE5leHRCZXN0QWN0aXZlVmlldyhzdGF0ZSlcbiAgICAgICAgICA6IHN0YXRlLmFjdGl2ZVZpZXdJZCxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gd2l0aER1cGxpY2F0ZVZpZXc8ViBleHRlbmRzIFZpZXc+KFxuICAgIHZpZXdzOiBWW10sXG4gICAgdmlld1RvRHVwbGljYXRlOiBWLFxuICAgIGR1cGxpY2F0ZTogRHVwbGljYXRlPFY+LFxuICApOiBQcm9taXNlPFZbXT4ge1xuICAgIGNvbnN0IG5ld1ZpZXcgPSBhd2FpdCBkdXBsaWNhdGUodmlld1RvRHVwbGljYXRlKTtcbiAgICBjb25zdCBzb3VyY2VJbmRleCA9IHZpZXdzLmZpbmRJbmRleCh2aWV3ID0+IHZpZXcuaWQgPT09IHZpZXdUb0R1cGxpY2F0ZS5pZCk7XG4gICAgaWYgKHNvdXJjZUluZGV4ID09PSAtMSkge1xuICAgICAgcmV0dXJuIFtuZXdWaWV3LCAuLi52aWV3c107XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIC4uLnZpZXdzLnNsaWNlKDAsIHNvdXJjZUluZGV4ICsgMSksXG4gICAgICAgIG5ld1ZpZXcsXG4gICAgICAgIC4uLnZpZXdzLnNsaWNlKHNvdXJjZUluZGV4ICsgMSksXG4gICAgICBdO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEVtcHR5U3RhdGVNZXNzYWdlPFYgZXh0ZW5kcyBWaWV3PihcbiAgICBzdGF0ZTogQ29yZVN0YXRlPFY+LFxuICAgIHBlcm1pc3Npb246IFZpZXdQZXJtaXNzaW9uLFxuICApOiBzdHJpbmcge1xuICAgIGlmIChzdGF0ZS5hbGwuc2VhcmNoKVxuICAgICAgcmV0dXJuIGBObyAke3Blcm1pc3Npb259IHZpZXdzIG1hdGNoaW5nIFwiJHtzdGF0ZS5hbGwuc2VhcmNofVwiYDtcbiAgICBlbHNlIHJldHVybiBgTm8gJHtwZXJtaXNzaW9ufSB2aWV3c2A7XG4gIH1cblxuICBmdW5jdGlvbiB2aWV3T3JkZXJDaGFuZ2U8ViBleHRlbmRzIFZpZXc+KFxuICAgIHN0YXRlOiBDb3JlU3RhdGU8Vj4sXG4gICAgcHJldmlvdXNFbmFibGVkSW5kZXg6IG51bWJlcixcbiAgICBuZXdFbmFibGVkSW5kZXg6IG51bWJlcixcbiAgKTogQ29yZVN0YXRlPFY+IHtcbiAgICBpZiAocHJldmlvdXNFbmFibGVkSW5kZXggPT09IDAgfHwgbmV3RW5hYmxlZEluZGV4ID09PSAwKSB7XG4gICAgICByZXR1cm4gc3RhdGU7IC8vIEtlZXAgc3lzdGVtIHZpZXcgKGluZGV4IDApIGluIHBsYWNlXG4gICAgfVxuXG4gICAgY29uc3QgYWN0dWFsUHJldmlvdXNJbmRleCA9IG1hcEVuYWJsZWRJbmRleFRvVmlld0luZGV4KFxuICAgICAgc3RhdGUudmlld3MsXG4gICAgICBwcmV2aW91c0VuYWJsZWRJbmRleCxcbiAgICApO1xuICAgIGNvbnN0IGFjdHVhbE5ld0luZGV4ID0gbWFwRW5hYmxlZEluZGV4VG9WaWV3SW5kZXgoXG4gICAgICBzdGF0ZS52aWV3cyxcbiAgICAgIG5ld0VuYWJsZWRJbmRleCxcbiAgICApO1xuXG4gICAgY29uc3QgaXRlbSA9IHN0YXRlLnZpZXdzW2FjdHVhbFByZXZpb3VzSW5kZXhdO1xuICAgIGNvbnN0IHdpdGhvdXRJdGVtID0gc3RhdGUudmlld3MuZmlsdGVyKChfLCBpKSA9PiBpICE9PSBhY3R1YWxQcmV2aW91c0luZGV4KTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHZpZXdzOiBbXG4gICAgICAgIC4uLndpdGhvdXRJdGVtLnNsaWNlKDAsIGFjdHVhbE5ld0luZGV4KSxcbiAgICAgICAgaXRlbSxcbiAgICAgICAgLi4ud2l0aG91dEl0ZW0uc2xpY2UoYWN0dWFsTmV3SW5kZXgpLFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gcmVkdWNlPFYgZXh0ZW5kcyBWaWV3PihcbiAgICBzdGF0ZTogQ29yZVN0YXRlPFY+LFxuICAgIGFjdGlvbjogQWN0aW9uPFY+LFxuICAgIHNvdXJjZTogU291cmNlPFY+LFxuICAgIGR1cGxpY2F0ZTogRHVwbGljYXRlPFY+LFxuICAgIGNvcHlMaW5rOiBDb3B5TGluazxWPixcbiAgKTogUHJvbWlzZTxDb3JlU3RhdGU8Vj4+IHtcbiAgICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgICBjYXNlICdsb2FkJzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICB2aWV3czogYXdhaXQgc291cmNlKCksXG4gICAgICAgIH07XG5cbiAgICAgIGNhc2UgJ3NldEFjdGl2ZVZpZXcnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIGFjdGl2ZVZpZXdJZDogYWN0aW9uLmlkLFxuICAgICAgICAgIHZpZXdzOiBzdGF0ZS52aWV3cy5tYXAodmlldyA9PlxuICAgICAgICAgICAgdmlldy5pZCA9PT0gYWN0aW9uLmlkID8geyAuLi52aWV3LCBlbmFibGVkOiB0cnVlIH0gOiB2aWV3LFxuICAgICAgICAgICksXG4gICAgICAgICAgYWxsOiB7XG4gICAgICAgICAgICAuLi5zdGF0ZS5hbGwsXG4gICAgICAgICAgICBzZWFyY2g6ICcnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgb3ZlcmZsb3c6IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLm92ZXJmbG93LFxuICAgICAgICAgICAgc2VhcmNoOiAnJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICdzZXREZWZhdWx0Vmlldyc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgZGVmYXVsdFZpZXdJZDogYWN0aW9uLmlkLFxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICdzZXRFbmFibGVkJzpcbiAgICAgICAgcmV0dXJuIHNldEVuYWJsZWQoc3RhdGUsIGFjdGlvbi5pZCwgYWN0aW9uLmVuYWJsZWQpO1xuXG4gICAgICBjYXNlICdzZXRDb250YWluZXJXaWR0aCc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgY29udGFpbmVyV2lkdGg6IGFjdGlvbi53aWR0aCxcbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAnc2V0T3ZlcmZsb3dQaWNrZXJPcGVuJzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBvdmVyZmxvdzoge1xuICAgICAgICAgICAgLi4uc3RhdGUub3ZlcmZsb3csXG4gICAgICAgICAgICBwaWNrZXJPcGVuOiBhY3Rpb24ub3BlbixcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICdzZXRPdmVyZmxvd1NlYXJjaFF1ZXJ5JzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBvdmVyZmxvdzoge1xuICAgICAgICAgICAgLi4uc3RhdGUub3ZlcmZsb3csXG4gICAgICAgICAgICBzZWFyY2g6IGFjdGlvbi5xdWVyeSxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICdzZXRBbGxWaWV3c1NlYXJjaFF1ZXJ5JzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBhbGw6IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLmFsbCxcbiAgICAgICAgICAgIHNlYXJjaDogYWN0aW9uLnF1ZXJ5LFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG5cbiAgICAgIGNhc2UgJ3VwZGF0ZVZpZXcnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIHZpZXdzOiBzdGF0ZS52aWV3cy5tYXAodmlldyA9PlxuICAgICAgICAgICAgdmlldy5pZCA9PT0gYWN0aW9uLnZpZXcuaWQgPyBhY3Rpb24udmlldyA6IHZpZXcsXG4gICAgICAgICAgKSxcbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAnZGVsZXRlVmlldyc6XG4gICAgICAgIHJldHVybiBkZWxldGVWaWV3KHN0YXRlLCBhY3Rpb24udmlldy5pZCk7XG5cbiAgICAgIGNhc2UgJ2R1cGxpY2F0ZVZpZXcnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIHZpZXdzOiBhd2FpdCB3aXRoRHVwbGljYXRlVmlldyhzdGF0ZS52aWV3cywgYWN0aW9uLnZpZXcsIGR1cGxpY2F0ZSksXG4gICAgICAgIH07XG5cbiAgICAgIGNhc2UgJ2NvcHlMaW5rVG9WaWV3JzpcbiAgICAgICAgYXdhaXQgY29weUxpbmsoYWN0aW9uLnZpZXcpO1xuICAgICAgICByZXR1cm4gc3RhdGU7XG5cbiAgICAgIGNhc2UgJ3ZpZXdPcmRlckNoYW5nZSc6XG4gICAgICAgIHJldHVybiB2aWV3T3JkZXJDaGFuZ2UoXG4gICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgYWN0aW9uLnByZXZpb3VzRW5hYmxlZEluZGV4LFxuICAgICAgICAgIGFjdGlvbi5uZXdFbmFibGVkSW5kZXgsXG4gICAgICAgICk7XG5cbiAgICAgIGNhc2UgJ3NldEFsbFZpZXdzVG9nZ2xlJzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBhbGw6IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLmFsbCxcbiAgICAgICAgICAgIHByaXZhdGVPcGVuOlxuICAgICAgICAgICAgICBhY3Rpb24ucGVybWlzc2lvbiA9PT0gJ3ByaXZhdGUnXG4gICAgICAgICAgICAgICAgPyBhY3Rpb24ub3BlblxuICAgICAgICAgICAgICAgIDogc3RhdGUuYWxsLnByaXZhdGVPcGVuLFxuICAgICAgICAgICAgc2hhcmVkT3BlbjpcbiAgICAgICAgICAgICAgYWN0aW9uLnBlcm1pc3Npb24gPT09ICdzaGFyZWQnXG4gICAgICAgICAgICAgICAgPyBhY3Rpb24ub3BlblxuICAgICAgICAgICAgICAgIDogc3RhdGUuYWxsLnNoYXJlZE9wZW4sXG4gICAgICAgICAgICBwdWJsaWNPcGVuOlxuICAgICAgICAgICAgICBhY3Rpb24ucGVybWlzc2lvbiA9PT0gJ3B1YmxpYydcbiAgICAgICAgICAgICAgICA/IGFjdGlvbi5vcGVuXG4gICAgICAgICAgICAgICAgOiBzdGF0ZS5hbGwucHVibGljT3BlbixcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIC8vLy8vLy8vLy8vLy8vL1xuICAvLyBVdGlsaXRpZXMgLy9cbiAgLy8vLy8vLy8vLy8vLy8vXG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGdldFBlcm1pc3Npb25UaXRsZShwZXJtaXNzaW9uOiBWaWV3UGVybWlzc2lvbik6IHN0cmluZyB7XG4gICAgc3dpdGNoIChwZXJtaXNzaW9uKSB7XG4gICAgICBjYXNlICdwcml2YXRlJzpcbiAgICAgICAgcmV0dXJuICdQcml2YXRlJztcbiAgICAgIGNhc2UgJ3NoYXJlZCc6XG4gICAgICAgIHJldHVybiAnU2hhcmVkJztcbiAgICAgIGNhc2UgJ3B1YmxpYyc6XG4gICAgICAgIHJldHVybiAnUHVibGljJztcbiAgICB9XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gZ2V0UGVybWlzc2lvbkRlc2NyaXB0aW9uKHBlcm1pc3Npb246IFZpZXdQZXJtaXNzaW9uKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHBlcm1pc3Npb24pIHtcbiAgICAgIGNhc2UgJ3ByaXZhdGUnOlxuICAgICAgICByZXR1cm4gJ09ubHkgdmlzaWJsZSB0byB5b3UnO1xuICAgICAgY2FzZSAnc2hhcmVkJzpcbiAgICAgICAgcmV0dXJuICdPbmx5IHZpc2libGUgdG8gdGhvc2Ugd2l0aCBhY2Nlc3MnO1xuICAgICAgY2FzZSAncHVibGljJzpcbiAgICAgICAgcmV0dXJuICdWaXNpYmxlIHRvIGV2ZXJ5b25lJztcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -5,24 +5,48 @@ import * as i2 from "../all-views-modal/all-views-modal.component";
|
|
|
5
5
|
import * as i3 from "../../../input/button/button.component";
|
|
6
6
|
import * as i4 from "../../../modal/callout/callout.component";
|
|
7
7
|
import * as i5 from "../../../visualization/highlight/highlight.component";
|
|
8
|
-
import * as i6 from "../../../
|
|
9
|
-
import * as i7 from "../../../
|
|
10
|
-
import * as i8 from "../../../
|
|
11
|
-
import * as i9 from "../../../
|
|
12
|
-
import * as i10 from "
|
|
13
|
-
import * as i11 from "
|
|
14
|
-
import * as i12 from "../../../
|
|
8
|
+
import * as i6 from "../../../icon/icon.component";
|
|
9
|
+
import * as i7 from "../../../modal/overlay.directive";
|
|
10
|
+
import * as i8 from "../../../input/search/search.component";
|
|
11
|
+
import * as i9 from "../../../size/size.directive";
|
|
12
|
+
import * as i10 from "../../../format/truncate/truncate.component";
|
|
13
|
+
import * as i11 from "../view-menu/view-menu.component";
|
|
14
|
+
import * as i12 from "../../../visualization/zero-state/zero-state.component";
|
|
15
|
+
import * as i13 from "../../../format/pipes/number.pipe";
|
|
15
16
|
export class ViewsComponent {
|
|
16
17
|
constructor() {
|
|
17
18
|
this.sideSheetTopOffset = 0;
|
|
18
19
|
this.showAllViews = false;
|
|
20
|
+
this.draggedTabIndex = null;
|
|
21
|
+
this.draggedOverTabIndex = null;
|
|
22
|
+
}
|
|
23
|
+
dragStart(index) {
|
|
24
|
+
if (index > 0)
|
|
25
|
+
this.draggedTabIndex = index;
|
|
26
|
+
}
|
|
27
|
+
dragOver(index) {
|
|
28
|
+
if (index > 0)
|
|
29
|
+
this.draggedOverTabIndex = index;
|
|
30
|
+
else
|
|
31
|
+
this.draggedOverTabIndex = null;
|
|
32
|
+
}
|
|
33
|
+
drop(index) {
|
|
34
|
+
if (this.draggedTabIndex !== null) {
|
|
35
|
+
this.manager?.actions.next({
|
|
36
|
+
type: 'viewOrderChange',
|
|
37
|
+
previousEnabledIndex: this.draggedTabIndex,
|
|
38
|
+
newEnabledIndex: index,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
this.draggedTabIndex = null;
|
|
42
|
+
this.draggedOverTabIndex = null;
|
|
19
43
|
}
|
|
20
44
|
}
|
|
21
45
|
ViewsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ViewsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
22
|
-
ViewsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ViewsComponent, selector: "riv-views", inputs: { manager: "manager", sideSheetTopOffset: "sideSheetTopOffset" }, viewQueries: [{ propertyName: "overflowTrigger", first: true, predicate: ["overflowTrigger"], descendants: true, read: ElementRef }, { propertyName: "activeTab", first: true, predicate: ["activeTab"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div\n (rivClientSize)=\"\n manager?.actions?.next({ type: 'setContainerWidth', width: $event.width })\n \"\n class=\"container\"\n>\n <ng-container *ngIf=\"manager?.state | async; let s\">\n <ng-container *ngFor=\"let view of s.displayedViews\">\n <ng-container *ngIf=\"view.active; else inactiveTab\">\n <div #activeTab class=\"tab active\">\n <riv-view-menu [manager]=\"manager\" [view]=\"view\" class=\"active-menu\">\n <ng-template #menuTrigger>\n <button class=\"menu-trigger\" rivTruncate>\n {{ view.title }}\n </button>\n </ng-template>\n </riv-view-menu>\n </div>\n </ng-container>\n <ng-template #inactiveTab>\n <button\n class=\"tab\"\n (click)=\"\n manager?.actions?.next({ type: 'setActiveView', id: view.id })\n \"\n >\n <span rivTruncate>\n {{ view.title }}\n </span>\n </button>\n </ng-template>\n </ng-container>\n <button\n *ngIf=\"s.enabledViews.length - s.displayedViews.length; let count\"\n class=\"tab\"\n rivTruncate\n #overflowTrigger\n (click)=\"\n manager?.actions?.next({ type: 'setOverflowPickerOpen', open: true })\n \"\n >\n {{ count | rivNumber }} more\n </button>\n <ng-container *ngIf=\"s.overflow.pickerOpen\">\n <riv-callout\n *riv-overlay\n [anchor]=\"overflowTrigger?.nativeElement\"\n [isModal]=\"true\"\n [showCaret]=\"false\"\n [theme]=\"'light'\"\n [preferredPosition]=\"'bottom-left'\"\n (close)=\"\n manager?.actions?.next({ type: 'setOverflowPickerOpen', open: false })\n \"\n >\n <div class=\"overflow-callout\">\n <riv-search\n [value]=\"s.overflow.search\"\n (valueChange)=\"\n manager?.actions?.next({\n type: 'setOverflowSearchQuery',\n query: $event\n })\n \"\n ></riv-search>\n <div class=\"overflow-view-list\">\n <button\n *ngFor=\"let view of s.enabledViews\"\n class=\"overflow-view\"\n (click)=\"\n manager?.actions?.next({ type: 'setActiveView', id: view.id });\n manager?.actions?.next({\n type: 'setOverflowPickerOpen',\n open: false\n })\n \"\n >\n <div rivTruncate>\n <riv-highlight\n [indices]=\"view.titleHighlightIndices ?? []\"\n [text]=\"view.title\"\n ></riv-highlight>\n </div>\n <riv-view-menu [manager]=\"manager\" [view]=\"view\"></riv-view-menu>\n </button>\n <riv-zero-state\n *ngIf=\"!s.enabledViews.length\"\n [message]=\"'No matching views.'\"\n ></riv-zero-state>\n </div>\n </div>\n </riv-callout>\n </ng-container>\n <div class=\"all-views-button-container\">\n <button\n rivButton\n [variant]=\"'ghost'\"\n [size]=\"'medium'\"\n (click)=\"showAllViews = true\"\n >\n All views\n </button>\n </div>\n </ng-container>\n</div>\n\n<riv-all-views-modal\n *ngIf=\"showAllViews\"\n [manager]=\"manager\"\n [topOffset]=\"sideSheetTopOffset\"\n (close)=\"showAllViews = false\"\n></riv-all-views-modal>\n", styles: [".container{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,calc(var(--base-grid-size) * 81));justify-content:start;border-bottom:var(--border-width) solid var(--border-light)}.tab{background-color:var(--surface-light-1);border:var(--border-width) solid var(--border-light);border-bottom:none;border-top-left-radius:var(--border-radius-medium);border-top-right-radius:var(--border-radius-medium);padding:var(--size-small) var(--size-large);cursor:pointer;transition:background-color var(--long-transition);display:flex;justify-content:flex-start;align-items:center}.tab:not(:first-child){margin-left:calc(var(--border-width) * -1)}.tab.active{background-color:var(--surface-light-0);border-bottom:var(--border-width) solid var(--surface-light-0);margin-bottom:calc(var(--border-width) * -1);z-index:1}.active-menu,.menu-trigger{max-width:100%;cursor:pointer}.all-views-button-container{padding:var(--size-xxsmall)}.overflow-callout{padding:var(--size-large);display:flex;flex-direction:column;gap:var(--size-medium);height:calc(var(--base-grid-size) * 120);max-height:50vh;width:calc(var(--base-grid-size) * 75);max-width:50vw}.overflow-view-list{display:flex;flex-direction:column;gap:var(--size-small);flex-grow:1;overflow-y:auto}.overflow-view{display:flex;justify-content:space-between;align-items:center;cursor:pointer;padding-left:var(--size-small);border-radius:var(--border-radius-medium);transition:background-color var(--short-transition)}.overflow-view:hover{background-color:var(--surface-light-2)}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.AllViewsModalComponent, selector: "riv-all-views-modal", inputs: ["manager", "topOffset"], outputs: ["close"] }, { kind: "component", type: i3.ButtonComponent, selector: "[rivButton]", inputs: ["locked", "disabled", "loading", "full", "size", "variant", "icon", "iconPosition", "active"] }, { kind: "component", type: i4.CalloutComponent, selector: "riv-callout", inputs: ["anchor", "isModal", "preferredPosition", "allowedPositions", "fallbackDirection", "showCaret", "theme"], outputs: ["close"] }, { kind: "component", type: i5.HighlightComponent, selector: "riv-highlight", inputs: ["text", "indices"] }, { kind: "directive", type: i6.OverlayDirective, selector: "[riv-overlay]" }, { kind: "component", type: i7.SearchComponent, selector: "riv-search", inputs: ["placeholder", "name"] }, { kind: "directive", type: i8.SizeDirective, selector: "[rivClientSize]", outputs: ["rivClientSize"] }, { kind: "component", type: i9.TruncateComponent, selector: "[rivTruncate]", inputs: ["maxTooltipWidth"] }, { kind: "component", type: i10.ViewMenuComponent, selector: "riv-view-menu", inputs: ["manager", "view"] }, { kind: "component", type: i11.ZeroStateComponent, selector: "riv-zero-state", inputs: ["message"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i12.NumberPipe, name: "rivNumber" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
46
|
+
ViewsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ViewsComponent, selector: "riv-views", inputs: { manager: "manager", sideSheetTopOffset: "sideSheetTopOffset" }, viewQueries: [{ propertyName: "overflowTrigger", first: true, predicate: ["overflowTrigger"], descendants: true, read: ElementRef }, { propertyName: "activeTab", first: true, predicate: ["activeTab"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div\n (rivClientSize)=\"\n manager?.actions?.next({ type: 'setContainerWidth', width: $event.width })\n \"\n class=\"container\"\n>\n <ng-container *ngIf=\"manager?.state | async; let s\">\n <ng-container *ngFor=\"let view of s.displayedViews; let i = index\">\n <ng-container *ngIf=\"view.active; else inactiveTab\">\n <div\n #activeTab\n class=\"tab active\"\n [class.dragging]=\"draggedTabIndex === i\"\n [class.dragged-over-left]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex > i\n \"\n [class.dragged-over-right]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex < i\n \"\n [attr.draggable]=\"i > 0\"\n [attr.droppable]=\"i > 0\"\n (dragstart)=\"dragStart(i)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i)\"\n (drop)=\"drop(i)\"\n >\n <riv-icon\n class=\"tab-reorder\"\n [name]=\"'Reorder'\"\n [size]=\"16\"\n ></riv-icon>\n <div class=\"menu-wrapper\" rivTruncate>\n <riv-view-menu\n [manager]=\"manager\"\n [view]=\"view\"\n class=\"active-menu\"\n >\n <ng-template #menuTrigger>\n <button class=\"menu-trigger\" rivTruncate>\n {{ view.title }}\n </button>\n </ng-template>\n </riv-view-menu>\n </div>\n </div>\n </ng-container>\n <ng-template #inactiveTab>\n <button\n class=\"tab\"\n [class.dragging]=\"draggedTabIndex === i\"\n [class.dragged-over-left]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex > i\n \"\n [class.dragged-over-right]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex < i\n \"\n [attr.draggable]=\"i > 0\"\n [attr.droppable]=\"i > 0\"\n (dragstart)=\"dragStart(i)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i)\"\n (drop)=\"drop(i)\"\n (click)=\"\n manager?.actions?.next({ type: 'setActiveView', id: view.id })\n \"\n >\n <riv-icon\n class=\"tab-reorder\"\n [name]=\"'Reorder'\"\n [size]=\"16\"\n ></riv-icon>\n <span rivTruncate>\n {{ view.title }}\n </span>\n </button>\n </ng-template>\n </ng-container>\n <button\n *ngIf=\"s.enabledViews.length - s.displayedViews.length; let count\"\n class=\"tab overflow\"\n rivTruncate\n #overflowTrigger\n (click)=\"\n manager?.actions?.next({ type: 'setOverflowPickerOpen', open: true })\n \"\n >\n {{ count | rivNumber }} more\n </button>\n <ng-container *ngIf=\"s.overflow.pickerOpen\">\n <riv-callout\n *riv-overlay\n [anchor]=\"overflowTrigger?.nativeElement\"\n [isModal]=\"true\"\n [showCaret]=\"false\"\n [theme]=\"'light'\"\n [preferredPosition]=\"'bottom-left'\"\n (close)=\"\n manager?.actions?.next({ type: 'setOverflowPickerOpen', open: false })\n \"\n >\n <div class=\"overflow-callout\">\n <riv-search\n [value]=\"s.overflow.search\"\n (valueChange)=\"\n manager?.actions?.next({\n type: 'setOverflowSearchQuery',\n query: $event\n })\n \"\n ></riv-search>\n <div class=\"overflow-view-list\">\n <button\n *ngFor=\"let view of s.enabledViews; let i = index\"\n class=\"overflow-view\"\n [class.system]=\"view.system\"\n [class.dragging]=\"draggedTabIndex === i\"\n [class.dragged-over-top]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex > i\n \"\n [class.dragged-over-bottom]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex < i\n \"\n [attr.draggable]=\"i > 0\"\n [attr.droppable]=\"i > 0\"\n (dragstart)=\"dragStart(i)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i)\"\n (drop)=\"drop(i)\"\n (click)=\"\n manager?.actions?.next({ type: 'setActiveView', id: view.id });\n manager?.actions?.next({\n type: 'setOverflowPickerOpen',\n open: false\n })\n \"\n >\n <riv-icon\n *ngIf=\"i > 0\"\n class=\"overflow-reorder\"\n [name]=\"'Reorder'\"\n [size]=\"16\"\n ></riv-icon>\n <div class=\"overflow-title\" rivTruncate>\n <riv-highlight\n [indices]=\"view.titleHighlightIndices ?? []\"\n [text]=\"view.title\"\n ></riv-highlight>\n </div>\n <riv-view-menu [manager]=\"manager\" [view]=\"view\"></riv-view-menu>\n </button>\n <riv-zero-state\n *ngIf=\"!s.enabledViews.length\"\n [message]=\"'No matching views.'\"\n ></riv-zero-state>\n </div>\n </div>\n </riv-callout>\n </ng-container>\n <div class=\"all-views-button-container\">\n <button\n rivButton\n [variant]=\"'ghost'\"\n [size]=\"'medium'\"\n (click)=\"showAllViews = true\"\n >\n All views\n </button>\n </div>\n </ng-container>\n</div>\n\n<riv-all-views-modal\n *ngIf=\"showAllViews\"\n [manager]=\"manager\"\n [topOffset]=\"sideSheetTopOffset\"\n (close)=\"showAllViews = false\"\n></riv-all-views-modal>\n", styles: [".container{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,calc(var(--base-grid-size) * 81));justify-content:start;border-bottom:var(--border-width) solid var(--border-light)}.tab{background-color:var(--surface-light-1);border:var(--border-width) solid var(--border-light);border-bottom:none;border-top-left-radius:var(--border-radius-medium);border-top-right-radius:var(--border-radius-medium);padding:var(--size-small) var(--size-large) var(--size-small) 0;cursor:pointer;transition:background-color var(--long-transition);display:flex;justify-content:flex-start;align-items:center;position:relative}.tab:not(:first-child){margin-left:calc(var(--border-width) * -1)}.tab.active{background-color:var(--surface-light-0);border-bottom:var(--border-width) solid var(--surface-light-0);margin-bottom:calc(var(--border-width) * -1);z-index:1}.tab.dragging{cursor:grabbing}.tab.dragged-over-left:before,.tab.dragged-over-right:before{content:\"\";position:absolute;top:0;bottom:0;width:var(--size-xxsmall);background-color:var(--brand);box-shadow:0 0 var(--size-xxsmall) var(--brand)}.tab.dragged-over-left:before{left:0}.tab.dragged-over-right:before{right:0}.tab-reorder{color:var(--type-light-low-contrast);opacity:0;transition:opacity var(--short-transition);cursor:grab;margin:0 var(--size-xsmall)}.tab:hover .tab-reorder{opacity:1}.menu-wrapper{display:inline-flex}.active-menu,.menu-trigger{max-width:100%;cursor:pointer}.tab.overflow{padding-left:var(--size-large)}.all-views-button-container{padding:var(--size-xxsmall)}.overflow-callout{padding:var(--size-large);display:flex;flex-direction:column;gap:var(--size-medium);height:calc(var(--base-grid-size) * 120);max-height:50vh;width:calc(var(--base-grid-size) * 75);max-width:50vw}.overflow-view-list{display:flex;flex-direction:column;gap:var(--size-small);flex-grow:1;overflow-y:auto}.overflow-view{display:flex;align-items:center;gap:var(--size-small);cursor:pointer;border-radius:var(--border-radius-medium);transition:background-color var(--short-transition);position:relative}.overflow-view.system{padding-left:var(--size-small)}.overflow-view:hover{background-color:var(--surface-light-2)}.overflow-view.dragged-over-top:before,.overflow-view.dragged-over-bottom:before{content:\"\";position:absolute;left:0;right:0;height:var(--size-xxsmall);background-color:var(--brand);box-shadow:0 0 var(--size-xxsmall) var(--brand)}.overflow-view.dragged-over-top:before{top:0}.overflow-view.dragged-over-bottom:before{bottom:0}.overflow-reorder{color:var(--type-light-low-contrast);cursor:grab}.overflow-title{flex-grow:1;text-align:left}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.AllViewsModalComponent, selector: "riv-all-views-modal", inputs: ["manager", "topOffset"], outputs: ["close"] }, { kind: "component", type: i3.ButtonComponent, selector: "[rivButton]", inputs: ["locked", "disabled", "loading", "full", "size", "variant", "icon", "iconPosition", "active"] }, { kind: "component", type: i4.CalloutComponent, selector: "riv-callout", inputs: ["anchor", "isModal", "preferredPosition", "allowedPositions", "fallbackDirection", "showCaret", "theme"], outputs: ["close"] }, { kind: "component", type: i5.HighlightComponent, selector: "riv-highlight", inputs: ["text", "indices"] }, { kind: "component", type: i6.IconComponent, selector: "riv-icon", inputs: ["name", "size", "customSize", "strokeWidth"] }, { kind: "directive", type: i7.OverlayDirective, selector: "[riv-overlay]" }, { kind: "component", type: i8.SearchComponent, selector: "riv-search", inputs: ["placeholder", "name"] }, { kind: "directive", type: i9.SizeDirective, selector: "[rivClientSize]", outputs: ["rivClientSize"] }, { kind: "component", type: i10.TruncateComponent, selector: "[rivTruncate]", inputs: ["maxTooltipWidth"] }, { kind: "component", type: i11.ViewMenuComponent, selector: "riv-view-menu", inputs: ["manager", "view"] }, { kind: "component", type: i12.ZeroStateComponent, selector: "riv-zero-state", inputs: ["message"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i13.NumberPipe, name: "rivNumber" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
23
47
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ViewsComponent, decorators: [{
|
|
24
48
|
type: Component,
|
|
25
|
-
args: [{ selector: 'riv-views', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n (rivClientSize)=\"\n manager?.actions?.next({ type: 'setContainerWidth', width: $event.width })\n \"\n class=\"container\"\n>\n <ng-container *ngIf=\"manager?.state | async; let s\">\n <ng-container *ngFor=\"let view of s.displayedViews\">\n <ng-container *ngIf=\"view.active; else inactiveTab\">\n <div
|
|
49
|
+
args: [{ selector: 'riv-views', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n (rivClientSize)=\"\n manager?.actions?.next({ type: 'setContainerWidth', width: $event.width })\n \"\n class=\"container\"\n>\n <ng-container *ngIf=\"manager?.state | async; let s\">\n <ng-container *ngFor=\"let view of s.displayedViews; let i = index\">\n <ng-container *ngIf=\"view.active; else inactiveTab\">\n <div\n #activeTab\n class=\"tab active\"\n [class.dragging]=\"draggedTabIndex === i\"\n [class.dragged-over-left]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex > i\n \"\n [class.dragged-over-right]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex < i\n \"\n [attr.draggable]=\"i > 0\"\n [attr.droppable]=\"i > 0\"\n (dragstart)=\"dragStart(i)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i)\"\n (drop)=\"drop(i)\"\n >\n <riv-icon\n class=\"tab-reorder\"\n [name]=\"'Reorder'\"\n [size]=\"16\"\n ></riv-icon>\n <div class=\"menu-wrapper\" rivTruncate>\n <riv-view-menu\n [manager]=\"manager\"\n [view]=\"view\"\n class=\"active-menu\"\n >\n <ng-template #menuTrigger>\n <button class=\"menu-trigger\" rivTruncate>\n {{ view.title }}\n </button>\n </ng-template>\n </riv-view-menu>\n </div>\n </div>\n </ng-container>\n <ng-template #inactiveTab>\n <button\n class=\"tab\"\n [class.dragging]=\"draggedTabIndex === i\"\n [class.dragged-over-left]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex > i\n \"\n [class.dragged-over-right]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex < i\n \"\n [attr.draggable]=\"i > 0\"\n [attr.droppable]=\"i > 0\"\n (dragstart)=\"dragStart(i)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i)\"\n (drop)=\"drop(i)\"\n (click)=\"\n manager?.actions?.next({ type: 'setActiveView', id: view.id })\n \"\n >\n <riv-icon\n class=\"tab-reorder\"\n [name]=\"'Reorder'\"\n [size]=\"16\"\n ></riv-icon>\n <span rivTruncate>\n {{ view.title }}\n </span>\n </button>\n </ng-template>\n </ng-container>\n <button\n *ngIf=\"s.enabledViews.length - s.displayedViews.length; let count\"\n class=\"tab overflow\"\n rivTruncate\n #overflowTrigger\n (click)=\"\n manager?.actions?.next({ type: 'setOverflowPickerOpen', open: true })\n \"\n >\n {{ count | rivNumber }} more\n </button>\n <ng-container *ngIf=\"s.overflow.pickerOpen\">\n <riv-callout\n *riv-overlay\n [anchor]=\"overflowTrigger?.nativeElement\"\n [isModal]=\"true\"\n [showCaret]=\"false\"\n [theme]=\"'light'\"\n [preferredPosition]=\"'bottom-left'\"\n (close)=\"\n manager?.actions?.next({ type: 'setOverflowPickerOpen', open: false })\n \"\n >\n <div class=\"overflow-callout\">\n <riv-search\n [value]=\"s.overflow.search\"\n (valueChange)=\"\n manager?.actions?.next({\n type: 'setOverflowSearchQuery',\n query: $event\n })\n \"\n ></riv-search>\n <div class=\"overflow-view-list\">\n <button\n *ngFor=\"let view of s.enabledViews; let i = index\"\n class=\"overflow-view\"\n [class.system]=\"view.system\"\n [class.dragging]=\"draggedTabIndex === i\"\n [class.dragged-over-top]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex > i\n \"\n [class.dragged-over-bottom]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex < i\n \"\n [attr.draggable]=\"i > 0\"\n [attr.droppable]=\"i > 0\"\n (dragstart)=\"dragStart(i)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i)\"\n (drop)=\"drop(i)\"\n (click)=\"\n manager?.actions?.next({ type: 'setActiveView', id: view.id });\n manager?.actions?.next({\n type: 'setOverflowPickerOpen',\n open: false\n })\n \"\n >\n <riv-icon\n *ngIf=\"i > 0\"\n class=\"overflow-reorder\"\n [name]=\"'Reorder'\"\n [size]=\"16\"\n ></riv-icon>\n <div class=\"overflow-title\" rivTruncate>\n <riv-highlight\n [indices]=\"view.titleHighlightIndices ?? []\"\n [text]=\"view.title\"\n ></riv-highlight>\n </div>\n <riv-view-menu [manager]=\"manager\" [view]=\"view\"></riv-view-menu>\n </button>\n <riv-zero-state\n *ngIf=\"!s.enabledViews.length\"\n [message]=\"'No matching views.'\"\n ></riv-zero-state>\n </div>\n </div>\n </riv-callout>\n </ng-container>\n <div class=\"all-views-button-container\">\n <button\n rivButton\n [variant]=\"'ghost'\"\n [size]=\"'medium'\"\n (click)=\"showAllViews = true\"\n >\n All views\n </button>\n </div>\n </ng-container>\n</div>\n\n<riv-all-views-modal\n *ngIf=\"showAllViews\"\n [manager]=\"manager\"\n [topOffset]=\"sideSheetTopOffset\"\n (close)=\"showAllViews = false\"\n></riv-all-views-modal>\n", styles: [".container{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,calc(var(--base-grid-size) * 81));justify-content:start;border-bottom:var(--border-width) solid var(--border-light)}.tab{background-color:var(--surface-light-1);border:var(--border-width) solid var(--border-light);border-bottom:none;border-top-left-radius:var(--border-radius-medium);border-top-right-radius:var(--border-radius-medium);padding:var(--size-small) var(--size-large) var(--size-small) 0;cursor:pointer;transition:background-color var(--long-transition);display:flex;justify-content:flex-start;align-items:center;position:relative}.tab:not(:first-child){margin-left:calc(var(--border-width) * -1)}.tab.active{background-color:var(--surface-light-0);border-bottom:var(--border-width) solid var(--surface-light-0);margin-bottom:calc(var(--border-width) * -1);z-index:1}.tab.dragging{cursor:grabbing}.tab.dragged-over-left:before,.tab.dragged-over-right:before{content:\"\";position:absolute;top:0;bottom:0;width:var(--size-xxsmall);background-color:var(--brand);box-shadow:0 0 var(--size-xxsmall) var(--brand)}.tab.dragged-over-left:before{left:0}.tab.dragged-over-right:before{right:0}.tab-reorder{color:var(--type-light-low-contrast);opacity:0;transition:opacity var(--short-transition);cursor:grab;margin:0 var(--size-xsmall)}.tab:hover .tab-reorder{opacity:1}.menu-wrapper{display:inline-flex}.active-menu,.menu-trigger{max-width:100%;cursor:pointer}.tab.overflow{padding-left:var(--size-large)}.all-views-button-container{padding:var(--size-xxsmall)}.overflow-callout{padding:var(--size-large);display:flex;flex-direction:column;gap:var(--size-medium);height:calc(var(--base-grid-size) * 120);max-height:50vh;width:calc(var(--base-grid-size) * 75);max-width:50vw}.overflow-view-list{display:flex;flex-direction:column;gap:var(--size-small);flex-grow:1;overflow-y:auto}.overflow-view{display:flex;align-items:center;gap:var(--size-small);cursor:pointer;border-radius:var(--border-radius-medium);transition:background-color var(--short-transition);position:relative}.overflow-view.system{padding-left:var(--size-small)}.overflow-view:hover{background-color:var(--surface-light-2)}.overflow-view.dragged-over-top:before,.overflow-view.dragged-over-bottom:before{content:\"\";position:absolute;left:0;right:0;height:var(--size-xxsmall);background-color:var(--brand);box-shadow:0 0 var(--size-xxsmall) var(--brand)}.overflow-view.dragged-over-top:before{top:0}.overflow-view.dragged-over-bottom:before{bottom:0}.overflow-reorder{color:var(--type-light-low-contrast);cursor:grab}.overflow-title{flex-grow:1;text-align:left}\n"] }]
|
|
26
50
|
}], propDecorators: { manager: [{
|
|
27
51
|
type: Input
|
|
28
52
|
}], sideSheetTopOffset: [{
|
|
@@ -34,4 +58,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
34
58
|
type: ViewChild,
|
|
35
59
|
args: ['activeTab', { read: ElementRef }]
|
|
36
60
|
}] } });
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvbmF2aWdhdGlvbi92aWV3cy92aWV3cy92aWV3cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9uYXZpZ2F0aW9uL3ZpZXdzL3ZpZXdzL3ZpZXdzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBQ0wsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7Ozs7OztBQVN2QixNQUFNLE9BQU8sY0FBYztJQU4zQjtRQVdFLHVCQUFrQixHQUFXLENBQUMsQ0FBQztRQVF4QixpQkFBWSxHQUFZLEtBQUssQ0FBQztLQUN0Qzs7MkdBZFksY0FBYzsrRkFBZCxjQUFjLDBOQU9hLFVBQVUsaUdBR2hCLFVBQVUsNkJDekI1QywwOUdBZ0hBOzJGRGpHYSxjQUFjO2tCQU4xQixTQUFTOytCQUNFLFdBQVcsbUJBR0osdUJBQXVCLENBQUMsTUFBTTs4QkFJL0MsT0FBTztzQkFETixLQUFLO2dCQUlOLGtCQUFrQjtzQkFEakIsS0FBSztnQkFJTixlQUFlO3NCQURkLFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUlsRCxTQUFTO3NCQURSLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUml2Vmlld3MgfSBmcm9tICcuLi9zdGF0ZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Jpdi12aWV3cycsXG4gIHRlbXBsYXRlVXJsOiAnLi92aWV3cy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3ZpZXdzLmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFZpZXdzQ29tcG9uZW50PFYgZXh0ZW5kcyBSaXZWaWV3cy5WaWV3PiB7XG4gIEBJbnB1dCgpXG4gIG1hbmFnZXI/OiBSaXZWaWV3cy5NYW5hZ2VyPFY+O1xuXG4gIEBJbnB1dCgpXG4gIHNpZGVTaGVldFRvcE9mZnNldDogbnVtYmVyID0gMDtcblxuICBAVmlld0NoaWxkKCdvdmVyZmxvd1RyaWdnZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgb3ZlcmZsb3dUcmlnZ2VyPzogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKCdhY3RpdmVUYWInLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgYWN0aXZlVGFiPzogRWxlbWVudFJlZjtcblxuICBwdWJsaWMgc2hvd0FsbFZpZXdzOiBib29sZWFuID0gZmFsc2U7XG59XG4iLCI8ZGl2XG4gIChyaXZDbGllbnRTaXplKT1cIlxuICAgIG1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoeyB0eXBlOiAnc2V0Q29udGFpbmVyV2lkdGgnLCB3aWR0aDogJGV2ZW50LndpZHRoIH0pXG4gIFwiXG4gIGNsYXNzPVwiY29udGFpbmVyXCJcbj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1hbmFnZXI/LnN0YXRlIHwgYXN5bmM7IGxldCBzXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdmlldyBvZiBzLmRpc3BsYXllZFZpZXdzXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmlldy5hY3RpdmU7IGVsc2UgaW5hY3RpdmVUYWJcIj5cbiAgICAgICAgPGRpdiAjYWN0aXZlVGFiIGNsYXNzPVwidGFiIGFjdGl2ZVwiPlxuICAgICAgICAgIDxyaXYtdmlldy1tZW51IFttYW5hZ2VyXT1cIm1hbmFnZXJcIiBbdmlld109XCJ2aWV3XCIgY2xhc3M9XCJhY3RpdmUtbWVudVwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNtZW51VHJpZ2dlcj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1lbnUtdHJpZ2dlclwiIHJpdlRydW5jYXRlPlxuICAgICAgICAgICAgICAgIHt7IHZpZXcudGl0bGUgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvcml2LXZpZXctbWVudT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjaW5hY3RpdmVUYWI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cInRhYlwiXG4gICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgbWFuYWdlcj8uYWN0aW9ucz8ubmV4dCh7IHR5cGU6ICdzZXRBY3RpdmVWaWV3JywgaWQ6IHZpZXcuaWQgfSlcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW4gcml2VHJ1bmNhdGU+XG4gICAgICAgICAgICB7eyB2aWV3LnRpdGxlIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGJ1dHRvblxuICAgICAgKm5nSWY9XCJzLmVuYWJsZWRWaWV3cy5sZW5ndGggLSBzLmRpc3BsYXllZFZpZXdzLmxlbmd0aDsgbGV0IGNvdW50XCJcbiAgICAgIGNsYXNzPVwidGFiXCJcbiAgICAgIHJpdlRydW5jYXRlXG4gICAgICAjb3ZlcmZsb3dUcmlnZ2VyXG4gICAgICAoY2xpY2spPVwiXG4gICAgICAgIG1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoeyB0eXBlOiAnc2V0T3ZlcmZsb3dQaWNrZXJPcGVuJywgb3BlbjogdHJ1ZSB9KVxuICAgICAgXCJcbiAgICA+XG4gICAgICB7eyBjb3VudCB8IHJpdk51bWJlciB9fSBtb3JlXG4gICAgPC9idXR0b24+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInMub3ZlcmZsb3cucGlja2VyT3BlblwiPlxuICAgICAgPHJpdi1jYWxsb3V0XG4gICAgICAgICpyaXYtb3ZlcmxheVxuICAgICAgICBbYW5jaG9yXT1cIm92ZXJmbG93VHJpZ2dlcj8ubmF0aXZlRWxlbWVudFwiXG4gICAgICAgIFtpc01vZGFsXT1cInRydWVcIlxuICAgICAgICBbc2hvd0NhcmV0XT1cImZhbHNlXCJcbiAgICAgICAgW3RoZW1lXT1cIidsaWdodCdcIlxuICAgICAgICBbcHJlZmVycmVkUG9zaXRpb25dPVwiJ2JvdHRvbS1sZWZ0J1wiXG4gICAgICAgIChjbG9zZSk9XCJcbiAgICAgICAgICBtYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHsgdHlwZTogJ3NldE92ZXJmbG93UGlja2VyT3BlbicsIG9wZW46IGZhbHNlIH0pXG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJvdmVyZmxvdy1jYWxsb3V0XCI+XG4gICAgICAgICAgPHJpdi1zZWFyY2hcbiAgICAgICAgICAgIFt2YWx1ZV09XCJzLm92ZXJmbG93LnNlYXJjaFwiXG4gICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiXG4gICAgICAgICAgICAgIG1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoe1xuICAgICAgICAgICAgICAgIHR5cGU6ICdzZXRPdmVyZmxvd1NlYXJjaFF1ZXJ5JyxcbiAgICAgICAgICAgICAgICBxdWVyeTogJGV2ZW50XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID48L3Jpdi1zZWFyY2g+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJmbG93LXZpZXctbGlzdFwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgdmlldyBvZiBzLmVuYWJsZWRWaWV3c1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwib3ZlcmZsb3ctdmlld1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICBtYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHsgdHlwZTogJ3NldEFjdGl2ZVZpZXcnLCBpZDogdmlldy5pZCB9KTtcbiAgICAgICAgICAgICAgICBtYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdzZXRPdmVyZmxvd1BpY2tlck9wZW4nLFxuICAgICAgICAgICAgICAgICAgb3BlbjogZmFsc2VcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IHJpdlRydW5jYXRlPlxuICAgICAgICAgICAgICAgIDxyaXYtaGlnaGxpZ2h0XG4gICAgICAgICAgICAgICAgICBbaW5kaWNlc109XCJ2aWV3LnRpdGxlSGlnaGxpZ2h0SW5kaWNlcyA/PyBbXVwiXG4gICAgICAgICAgICAgICAgICBbdGV4dF09XCJ2aWV3LnRpdGxlXCJcbiAgICAgICAgICAgICAgICA+PC9yaXYtaGlnaGxpZ2h0PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPHJpdi12aWV3LW1lbnUgW21hbmFnZXJdPVwibWFuYWdlclwiIFt2aWV3XT1cInZpZXdcIj48L3Jpdi12aWV3LW1lbnU+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxyaXYtemVyby1zdGF0ZVxuICAgICAgICAgICAgICAqbmdJZj1cIiFzLmVuYWJsZWRWaWV3cy5sZW5ndGhcIlxuICAgICAgICAgICAgICBbbWVzc2FnZV09XCInTm8gbWF0Y2hpbmcgdmlld3MuJ1wiXG4gICAgICAgICAgICA+PC9yaXYtemVyby1zdGF0ZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3Jpdi1jYWxsb3V0PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxkaXYgY2xhc3M9XCJhbGwtdmlld3MtYnV0dG9uLWNvbnRhaW5lclwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICByaXZCdXR0b25cbiAgICAgICAgW3ZhcmlhbnRdPVwiJ2dob3N0J1wiXG4gICAgICAgIFtzaXplXT1cIidtZWRpdW0nXCJcbiAgICAgICAgKGNsaWNrKT1cInNob3dBbGxWaWV3cyA9IHRydWVcIlxuICAgICAgPlxuICAgICAgICBBbGwgdmlld3NcbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48cml2LWFsbC12aWV3cy1tb2RhbFxuICAqbmdJZj1cInNob3dBbGxWaWV3c1wiXG4gIFttYW5hZ2VyXT1cIm1hbmFnZXJcIlxuICBbdG9wT2Zmc2V0XT1cInNpZGVTaGVldFRvcE9mZnNldFwiXG4gIChjbG9zZSk9XCJzaG93QWxsVmlld3MgPSBmYWxzZVwiXG4+PC9yaXYtYWxsLXZpZXdzLW1vZGFsPlxuIl19
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvbmF2aWdhdGlvbi92aWV3cy92aWV3cy92aWV3cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9uYXZpZ2F0aW9uL3ZpZXdzL3ZpZXdzL3ZpZXdzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBQ0wsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFTdkIsTUFBTSxPQUFPLGNBQWM7SUFOM0I7UUFXRSx1QkFBa0IsR0FBVyxDQUFDLENBQUM7UUFReEIsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFFckMsb0JBQWUsR0FBa0IsSUFBSSxDQUFDO1FBQ3RDLHdCQUFtQixHQUFrQixJQUFJLENBQUM7S0F1QjNDO0lBckJDLFNBQVMsQ0FBQyxLQUFhO1FBQ3JCLElBQUksS0FBSyxHQUFHLENBQUM7WUFBRSxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUM5QyxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQWE7UUFDcEIsSUFBSSxLQUFLLEdBQUcsQ0FBQztZQUFFLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUM7O1lBQzNDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQUksQ0FBQyxLQUFhO1FBQ2hCLElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxJQUFJLEVBQUU7WUFDakMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUN6QixJQUFJLEVBQUUsaUJBQWlCO2dCQUN2QixvQkFBb0IsRUFBRSxJQUFJLENBQUMsZUFBZTtnQkFDMUMsZUFBZSxFQUFFLEtBQUs7YUFDdkIsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO0lBQ2xDLENBQUM7OzJHQXRDVSxjQUFjOytGQUFkLGNBQWMsME5BT2EsVUFBVSxpR0FHaEIsVUFBVSw2QkN6QjVDLHlzTUE2TEE7MkZEOUthLGNBQWM7a0JBTjFCLFNBQVM7K0JBQ0UsV0FBVyxtQkFHSix1QkFBdUIsQ0FBQyxNQUFNOzhCQUkvQyxPQUFPO3NCQUROLEtBQUs7Z0JBSU4sa0JBQWtCO3NCQURqQixLQUFLO2dCQUlOLGVBQWU7c0JBRGQsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBSWxELFNBQVM7c0JBRFIsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSaXZWaWV3cyB9IGZyb20gJy4uL3N0YXRlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncml2LXZpZXdzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ZpZXdzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdmlld3MuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgVmlld3NDb21wb25lbnQ8ViBleHRlbmRzIFJpdlZpZXdzLlZpZXc+IHtcbiAgQElucHV0KClcbiAgbWFuYWdlcj86IFJpdlZpZXdzLk1hbmFnZXI8Vj47XG5cbiAgQElucHV0KClcbiAgc2lkZVNoZWV0VG9wT2Zmc2V0OiBudW1iZXIgPSAwO1xuXG4gIEBWaWV3Q2hpbGQoJ292ZXJmbG93VHJpZ2dlcicsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBvdmVyZmxvd1RyaWdnZXI/OiBFbGVtZW50UmVmO1xuXG4gIEBWaWV3Q2hpbGQoJ2FjdGl2ZVRhYicsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBhY3RpdmVUYWI/OiBFbGVtZW50UmVmO1xuXG4gIHB1YmxpYyBzaG93QWxsVmlld3M6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBkcmFnZ2VkVGFiSW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBkcmFnZ2VkT3ZlclRhYkluZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICBkcmFnU3RhcnQoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmIChpbmRleCA+IDApIHRoaXMuZHJhZ2dlZFRhYkluZGV4ID0gaW5kZXg7XG4gIH1cblxuICBkcmFnT3ZlcihpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKGluZGV4ID4gMCkgdGhpcy5kcmFnZ2VkT3ZlclRhYkluZGV4ID0gaW5kZXg7XG4gICAgZWxzZSB0aGlzLmRyYWdnZWRPdmVyVGFiSW5kZXggPSBudWxsO1xuICB9XG5cbiAgZHJvcChpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZHJhZ2dlZFRhYkluZGV4ICE9PSBudWxsKSB7XG4gICAgICB0aGlzLm1hbmFnZXI/LmFjdGlvbnMubmV4dCh7XG4gICAgICAgIHR5cGU6ICd2aWV3T3JkZXJDaGFuZ2UnLFxuICAgICAgICBwcmV2aW91c0VuYWJsZWRJbmRleDogdGhpcy5kcmFnZ2VkVGFiSW5kZXgsXG4gICAgICAgIG5ld0VuYWJsZWRJbmRleDogaW5kZXgsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmRyYWdnZWRUYWJJbmRleCA9IG51bGw7XG4gICAgdGhpcy5kcmFnZ2VkT3ZlclRhYkluZGV4ID0gbnVsbDtcbiAgfVxufVxuIiwiPGRpdlxuICAocml2Q2xpZW50U2l6ZSk9XCJcbiAgICBtYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHsgdHlwZTogJ3NldENvbnRhaW5lcldpZHRoJywgd2lkdGg6ICRldmVudC53aWR0aCB9KVxuICBcIlxuICBjbGFzcz1cImNvbnRhaW5lclwiXG4+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJtYW5hZ2VyPy5zdGF0ZSB8IGFzeW5jOyBsZXQgc1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHZpZXcgb2Ygcy5kaXNwbGF5ZWRWaWV3czsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXcuYWN0aXZlOyBlbHNlIGluYWN0aXZlVGFiXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAjYWN0aXZlVGFiXG4gICAgICAgICAgY2xhc3M9XCJ0YWIgYWN0aXZlXCJcbiAgICAgICAgICBbY2xhc3MuZHJhZ2dpbmddPVwiZHJhZ2dlZFRhYkluZGV4ID09PSBpXCJcbiAgICAgICAgICBbY2xhc3MuZHJhZ2dlZC1vdmVyLWxlZnRdPVwiXG4gICAgICAgICAgICBkcmFnZ2VkT3ZlclRhYkluZGV4ID09PSBpICYmXG4gICAgICAgICAgICBkcmFnZ2VkVGFiSW5kZXggIT09IG51bGwgJiZcbiAgICAgICAgICAgIGRyYWdnZWRUYWJJbmRleCA+IGlcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtjbGFzcy5kcmFnZ2VkLW92ZXItcmlnaHRdPVwiXG4gICAgICAgICAgICBkcmFnZ2VkT3ZlclRhYkluZGV4ID09PSBpICYmXG4gICAgICAgICAgICBkcmFnZ2VkVGFiSW5kZXggIT09IG51bGwgJiZcbiAgICAgICAgICAgIGRyYWdnZWRUYWJJbmRleCA8IGlcbiAgICAgICAgICBcIlxuICAgICAgICAgIFthdHRyLmRyYWdnYWJsZV09XCJpID4gMFwiXG4gICAgICAgICAgW2F0dHIuZHJvcHBhYmxlXT1cImkgPiAwXCJcbiAgICAgICAgICAoZHJhZ3N0YXJ0KT1cImRyYWdTdGFydChpKVwiXG4gICAgICAgICAgKGRyYWdlbnRlcik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gICAgICAgICAgKGRyYWdvdmVyKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyBkcmFnT3ZlcihpKVwiXG4gICAgICAgICAgKGRyb3ApPVwiZHJvcChpKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8cml2LWljb25cbiAgICAgICAgICAgIGNsYXNzPVwidGFiLXJlb3JkZXJcIlxuICAgICAgICAgICAgW25hbWVdPVwiJ1Jlb3JkZXInXCJcbiAgICAgICAgICAgIFtzaXplXT1cIjE2XCJcbiAgICAgICAgICA+PC9yaXYtaWNvbj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVudS13cmFwcGVyXCIgcml2VHJ1bmNhdGU+XG4gICAgICAgICAgICA8cml2LXZpZXctbWVudVxuICAgICAgICAgICAgICBbbWFuYWdlcl09XCJtYW5hZ2VyXCJcbiAgICAgICAgICAgICAgW3ZpZXddPVwidmlld1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYWN0aXZlLW1lbnVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI21lbnVUcmlnZ2VyPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtZW51LXRyaWdnZXJcIiByaXZUcnVuY2F0ZT5cbiAgICAgICAgICAgICAgICAgIHt7IHZpZXcudGl0bGUgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvcml2LXZpZXctbWVudT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjaW5hY3RpdmVUYWI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cInRhYlwiXG4gICAgICAgICAgW2NsYXNzLmRyYWdnaW5nXT1cImRyYWdnZWRUYWJJbmRleCA9PT0gaVwiXG4gICAgICAgICAgW2NsYXNzLmRyYWdnZWQtb3Zlci1sZWZ0XT1cIlxuICAgICAgICAgICAgZHJhZ2dlZE92ZXJUYWJJbmRleCA9PT0gaSAmJlxuICAgICAgICAgICAgZHJhZ2dlZFRhYkluZGV4ICE9PSBudWxsICYmXG4gICAgICAgICAgICBkcmFnZ2VkVGFiSW5kZXggPiBpXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbY2xhc3MuZHJhZ2dlZC1vdmVyLXJpZ2h0XT1cIlxuICAgICAgICAgICAgZHJhZ2dlZE92ZXJUYWJJbmRleCA9PT0gaSAmJlxuICAgICAgICAgICAgZHJhZ2dlZFRhYkluZGV4ICE9PSBudWxsICYmXG4gICAgICAgICAgICBkcmFnZ2VkVGFiSW5kZXggPCBpXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbYXR0ci5kcmFnZ2FibGVdPVwiaSA+IDBcIlxuICAgICAgICAgIFthdHRyLmRyb3BwYWJsZV09XCJpID4gMFwiXG4gICAgICAgICAgKGRyYWdzdGFydCk9XCJkcmFnU3RhcnQoaSlcIlxuICAgICAgICAgIChkcmFnZW50ZXIpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgICAgIChkcmFnb3Zlcik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKTsgZHJhZ092ZXIoaSlcIlxuICAgICAgICAgIChkcm9wKT1cImRyb3AoaSlcIlxuICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgIG1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoeyB0eXBlOiAnc2V0QWN0aXZlVmlldycsIGlkOiB2aWV3LmlkIH0pXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxyaXYtaWNvblxuICAgICAgICAgICAgY2xhc3M9XCJ0YWItcmVvcmRlclwiXG4gICAgICAgICAgICBbbmFtZV09XCInUmVvcmRlcidcIlxuICAgICAgICAgICAgW3NpemVdPVwiMTZcIlxuICAgICAgICAgID48L3Jpdi1pY29uPlxuICAgICAgICAgIDxzcGFuIHJpdlRydW5jYXRlPlxuICAgICAgICAgICAge3sgdmlldy50aXRsZSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwicy5lbmFibGVkVmlld3MubGVuZ3RoIC0gcy5kaXNwbGF5ZWRWaWV3cy5sZW5ndGg7IGxldCBjb3VudFwiXG4gICAgICBjbGFzcz1cInRhYiBvdmVyZmxvd1wiXG4gICAgICByaXZUcnVuY2F0ZVxuICAgICAgI292ZXJmbG93VHJpZ2dlclxuICAgICAgKGNsaWNrKT1cIlxuICAgICAgICBtYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHsgdHlwZTogJ3NldE92ZXJmbG93UGlja2VyT3BlbicsIG9wZW46IHRydWUgfSlcbiAgICAgIFwiXG4gICAgPlxuICAgICAge3sgY291bnQgfCByaXZOdW1iZXIgfX0gbW9yZVxuICAgIDwvYnV0dG9uPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzLm92ZXJmbG93LnBpY2tlck9wZW5cIj5cbiAgICAgIDxyaXYtY2FsbG91dFxuICAgICAgICAqcml2LW92ZXJsYXlcbiAgICAgICAgW2FuY2hvcl09XCJvdmVyZmxvd1RyaWdnZXI/Lm5hdGl2ZUVsZW1lbnRcIlxuICAgICAgICBbaXNNb2RhbF09XCJ0cnVlXCJcbiAgICAgICAgW3Nob3dDYXJldF09XCJmYWxzZVwiXG4gICAgICAgIFt0aGVtZV09XCInbGlnaHQnXCJcbiAgICAgICAgW3ByZWZlcnJlZFBvc2l0aW9uXT1cIidib3R0b20tbGVmdCdcIlxuICAgICAgICAoY2xvc2UpPVwiXG4gICAgICAgICAgbWFuYWdlcj8uYWN0aW9ucz8ubmV4dCh7IHR5cGU6ICdzZXRPdmVyZmxvd1BpY2tlck9wZW4nLCBvcGVuOiBmYWxzZSB9KVxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcmZsb3ctY2FsbG91dFwiPlxuICAgICAgICAgIDxyaXYtc2VhcmNoXG4gICAgICAgICAgICBbdmFsdWVdPVwicy5vdmVyZmxvdy5zZWFyY2hcIlxuICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIlxuICAgICAgICAgICAgICBtYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnc2V0T3ZlcmZsb3dTZWFyY2hRdWVyeScsXG4gICAgICAgICAgICAgICAgcXVlcnk6ICRldmVudFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+PC9yaXYtc2VhcmNoPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdmVyZmxvdy12aWV3LWxpc3RcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHZpZXcgb2Ygcy5lbmFibGVkVmlld3M7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgICBjbGFzcz1cIm92ZXJmbG93LXZpZXdcIlxuICAgICAgICAgICAgICBbY2xhc3Muc3lzdGVtXT1cInZpZXcuc3lzdGVtXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmRyYWdnaW5nXT1cImRyYWdnZWRUYWJJbmRleCA9PT0gaVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5kcmFnZ2VkLW92ZXItdG9wXT1cIlxuICAgICAgICAgICAgICAgIGRyYWdnZWRPdmVyVGFiSW5kZXggPT09IGkgJiZcbiAgICAgICAgICAgICAgICBkcmFnZ2VkVGFiSW5kZXggIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICBkcmFnZ2VkVGFiSW5kZXggPiBpXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5kcmFnZ2VkLW92ZXItYm90dG9tXT1cIlxuICAgICAgICAgICAgICAgIGRyYWdnZWRPdmVyVGFiSW5kZXggPT09IGkgJiZcbiAgICAgICAgICAgICAgICBkcmFnZ2VkVGFiSW5kZXggIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICBkcmFnZ2VkVGFiSW5kZXggPCBpXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFthdHRyLmRyYWdnYWJsZV09XCJpID4gMFwiXG4gICAgICAgICAgICAgIFthdHRyLmRyb3BwYWJsZV09XCJpID4gMFwiXG4gICAgICAgICAgICAgIChkcmFnc3RhcnQpPVwiZHJhZ1N0YXJ0KGkpXCJcbiAgICAgICAgICAgICAgKGRyYWdlbnRlcik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gICAgICAgICAgICAgIChkcmFnb3Zlcik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKTsgZHJhZ092ZXIoaSlcIlxuICAgICAgICAgICAgICAoZHJvcCk9XCJkcm9wKGkpXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgIG1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoeyB0eXBlOiAnc2V0QWN0aXZlVmlldycsIGlkOiB2aWV3LmlkIH0pO1xuICAgICAgICAgICAgICAgIG1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoe1xuICAgICAgICAgICAgICAgICAgdHlwZTogJ3NldE92ZXJmbG93UGlja2VyT3BlbicsXG4gICAgICAgICAgICAgICAgICBvcGVuOiBmYWxzZVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxyaXYtaWNvblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaSA+IDBcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwib3ZlcmZsb3ctcmVvcmRlclwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwiJ1Jlb3JkZXInXCJcbiAgICAgICAgICAgICAgICBbc2l6ZV09XCIxNlwiXG4gICAgICAgICAgICAgID48L3Jpdi1pY29uPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcmZsb3ctdGl0bGVcIiByaXZUcnVuY2F0ZT5cbiAgICAgICAgICAgICAgICA8cml2LWhpZ2hsaWdodFxuICAgICAgICAgICAgICAgICAgW2luZGljZXNdPVwidmlldy50aXRsZUhpZ2hsaWdodEluZGljZXMgPz8gW11cIlxuICAgICAgICAgICAgICAgICAgW3RleHRdPVwidmlldy50aXRsZVwiXG4gICAgICAgICAgICAgICAgPjwvcml2LWhpZ2hsaWdodD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxyaXYtdmlldy1tZW51IFttYW5hZ2VyXT1cIm1hbmFnZXJcIiBbdmlld109XCJ2aWV3XCI+PC9yaXYtdmlldy1tZW51PlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8cml2LXplcm8tc3RhdGVcbiAgICAgICAgICAgICAgKm5nSWY9XCIhcy5lbmFibGVkVmlld3MubGVuZ3RoXCJcbiAgICAgICAgICAgICAgW21lc3NhZ2VdPVwiJ05vIG1hdGNoaW5nIHZpZXdzLidcIlxuICAgICAgICAgICAgPjwvcml2LXplcm8tc3RhdGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9yaXYtY2FsbG91dD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8ZGl2IGNsYXNzPVwiYWxsLXZpZXdzLWJ1dHRvbi1jb250YWluZXJcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgcml2QnV0dG9uXG4gICAgICAgIFt2YXJpYW50XT1cIidnaG9zdCdcIlxuICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXG4gICAgICAgIChjbGljayk9XCJzaG93QWxsVmlld3MgPSB0cnVlXCJcbiAgICAgID5cbiAgICAgICAgQWxsIHZpZXdzXG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPHJpdi1hbGwtdmlld3MtbW9kYWxcbiAgKm5nSWY9XCJzaG93QWxsVmlld3NcIlxuICBbbWFuYWdlcl09XCJtYW5hZ2VyXCJcbiAgW3RvcE9mZnNldF09XCJzaWRlU2hlZXRUb3BPZmZzZXRcIlxuICAoY2xvc2UpPVwic2hvd0FsbFZpZXdzID0gZmFsc2VcIlxuPjwvcml2LWFsbC12aWV3cy1tb2RhbD5cbiJdfQ==
|