@oneteme/jquery-organizer 0.0.1 → 0.0.3

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.
@@ -0,0 +1,37 @@
1
+ export var SyntheticItemKeys;
2
+ (function (SyntheticItemKeys) {
3
+ SyntheticItemKeys["EMPTY"] = "__empty__";
4
+ SyntheticItemKeys["SYNTHETIC_MARKER"] = "__synthetic__";
5
+ })(SyntheticItemKeys || (SyntheticItemKeys = {}));
6
+ export var SlicePanelI18nKeys;
7
+ (function (SlicePanelI18nKeys) {
8
+ SlicePanelI18nKeys["EXPAND_FILTER"] = "expandFilterTitle";
9
+ SlicePanelI18nKeys["COLLAPSE_FILTER"] = "collapseFilterTitle";
10
+ SlicePanelI18nKeys["FILTER_PANEL_TITLE_SINGLE"] = "filterPanelTitleSingle";
11
+ SlicePanelI18nKeys["FILTER_PANEL_TITLE_PLURAL"] = "filterPanelTitlePlural";
12
+ SlicePanelI18nKeys["FILTER_BLOCK_DEFAULT_TITLE"] = "filterBlockDefaultTitle";
13
+ SlicePanelI18nKeys["FILTER_EMPTY_STATE"] = "filterEmptyState";
14
+ })(SlicePanelI18nKeys || (SlicePanelI18nKeys = {}));
15
+ export var OrganizerButtonEventType;
16
+ (function (OrganizerButtonEventType) {
17
+ OrganizerButtonEventType["FIELD_TOGGLED"] = "fieldToggled";
18
+ OrganizerButtonEventType["X_SELECTED"] = "xSelected";
19
+ OrganizerButtonEventType["Y_SELECTED"] = "ySelected";
20
+ OrganizerButtonEventType["GROUP_BY_SELECTED"] = "groupBySelected";
21
+ OrganizerButtonEventType["TEMPLATE_SELECTED"] = "templateSelected";
22
+ OrganizerButtonEventType["SLICE_SELECTED"] = "sliceSelected";
23
+ OrganizerButtonEventType["VIEW_SWITCHED"] = "viewSwitched";
24
+ })(OrganizerButtonEventType || (OrganizerButtonEventType = {}));
25
+ export function getGroupItems(config) {
26
+ return config?.groups?.items ?? [];
27
+ }
28
+ export function getIndicatorItems(config) {
29
+ return config?.indicators?.items ?? [];
30
+ }
31
+ export function getFilterItems(config) {
32
+ return config?.filters?.items ?? [];
33
+ }
34
+ export function getStackItems(indicator) {
35
+ return indicator?.extra?.stacks?.items ?? [];
36
+ }
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pemVyLWNoYXJ0LWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29uZXRlbWUvanF1ZXJ5LW9yZ2FuaXplci9zcmMvbGliL21vZGVscy9vcmdhbml6ZXItY2hhcnQtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNBLE1BQU0sQ0FBTixJQUFZLGlCQUdYO0FBSEQsV0FBWSxpQkFBaUI7SUFDM0Isd0NBQW1CLENBQUE7SUFDbkIsdURBQWtDLENBQUE7QUFDcEMsQ0FBQyxFQUhXLGlCQUFpQixLQUFqQixpQkFBaUIsUUFHNUI7QUFFRCxNQUFNLENBQU4sSUFBWSxrQkFPWDtBQVBELFdBQVksa0JBQWtCO0lBQzVCLHlEQUFtQyxDQUFBO0lBQ25DLDZEQUF1QyxDQUFBO0lBQ3ZDLDBFQUFvRCxDQUFBO0lBQ3BELDBFQUFvRCxDQUFBO0lBQ3BELDRFQUFzRCxDQUFBO0lBQ3RELDZEQUF1QyxDQUFBO0FBQ3pDLENBQUMsRUFQVyxrQkFBa0IsS0FBbEIsa0JBQWtCLFFBTzdCO0FBRUQsTUFBTSxDQUFOLElBQVksd0JBUVg7QUFSRCxXQUFZLHdCQUF3QjtJQUNsQywwREFBOEIsQ0FBQTtJQUM5QixvREFBd0IsQ0FBQTtJQUN4QixvREFBd0IsQ0FBQTtJQUN4QixpRUFBcUMsQ0FBQTtJQUNyQyxrRUFBc0MsQ0FBQTtJQUN0Qyw0REFBZ0MsQ0FBQTtJQUNoQywwREFBOEIsQ0FBQTtBQUNoQyxDQUFDLEVBUlcsd0JBQXdCLEtBQXhCLHdCQUF3QixRQVFuQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsTUFBK0M7SUFDM0UsT0FBTyxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUM7QUFDckMsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxNQUErQztJQUMvRSxPQUFPLE1BQU0sRUFBRSxVQUFVLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQztBQUN6QyxDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxNQUErQztJQUM1RSxPQUFPLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQztBQUN0QyxDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxTQUF5QztJQUNyRSxPQUFPLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUM7QUFDL0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9yZ2FuaXplckNoYXJ0SXRlbSwgT3JnYW5pemVyQ2hhcnRTZWN0aW9uIH0gZnJvbSAnLi9vcmdhbml6ZXItY2hhcnQtYWRhcHRlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3JnYW5pemVyQ2hhcnRDb25maWcge1xuICBncm91cHM/OiBPcmdhbml6ZXJDaGFydFNlY3Rpb247XG4gIGluZGljYXRvcnM/OiBPcmdhbml6ZXJDaGFydFNlY3Rpb247XG4gIGZpbHRlcnM/OiBPcmdhbml6ZXJDaGFydFNlY3Rpb247XG4gIHRlbXBsYXRlcz86IGFueVtdOyAvLyBUT0RPOiB0eXBlciBjb3JyZWN0ZW1lbnQgbGVzIHRlbXBsYXRlc1xufVxuXG5leHBvcnQgZW51bSBTeW50aGV0aWNJdGVtS2V5cyB7XG4gIEVNUFRZID0gJ19fZW1wdHlfXycsXG4gIFNZTlRIRVRJQ19NQVJLRVIgPSAnX19zeW50aGV0aWNfXydcbn1cblxuZXhwb3J0IGVudW0gU2xpY2VQYW5lbEkxOG5LZXlzIHtcbiAgRVhQQU5EX0ZJTFRFUiA9ICdleHBhbmRGaWx0ZXJUaXRsZScsXG4gIENPTExBUFNFX0ZJTFRFUiA9ICdjb2xsYXBzZUZpbHRlclRpdGxlJyxcbiAgRklMVEVSX1BBTkVMX1RJVExFX1NJTkdMRSA9ICdmaWx0ZXJQYW5lbFRpdGxlU2luZ2xlJyxcbiAgRklMVEVSX1BBTkVMX1RJVExFX1BMVVJBTCA9ICdmaWx0ZXJQYW5lbFRpdGxlUGx1cmFsJyxcbiAgRklMVEVSX0JMT0NLX0RFRkFVTFRfVElUTEUgPSAnZmlsdGVyQmxvY2tEZWZhdWx0VGl0bGUnLFxuICBGSUxURVJfRU1QVFlfU1RBVEUgPSAnZmlsdGVyRW1wdHlTdGF0ZSdcbn1cblxuZXhwb3J0IGVudW0gT3JnYW5pemVyQnV0dG9uRXZlbnRUeXBlIHtcbiAgRklFTERfVE9HR0xFRCA9ICdmaWVsZFRvZ2dsZWQnLFxuICBYX1NFTEVDVEVEID0gJ3hTZWxlY3RlZCcsXG4gIFlfU0VMRUNURUQgPSAneVNlbGVjdGVkJyxcbiAgR1JPVVBfQllfU0VMRUNURUQgPSAnZ3JvdXBCeVNlbGVjdGVkJyxcbiAgVEVNUExBVEVfU0VMRUNURUQgPSAndGVtcGxhdGVTZWxlY3RlZCcsXG4gIFNMSUNFX1NFTEVDVEVEID0gJ3NsaWNlU2VsZWN0ZWQnLFxuICBWSUVXX1NXSVRDSEVEID0gJ3ZpZXdTd2l0Y2hlZCdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEdyb3VwSXRlbXMoY29uZmlnOiBPcmdhbml6ZXJDaGFydENvbmZpZyB8IG51bGwgfCB1bmRlZmluZWQpOiBPcmdhbml6ZXJDaGFydEl0ZW1bXSB7XG4gIHJldHVybiBjb25maWc/Lmdyb3Vwcz8uaXRlbXMgPz8gW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbmRpY2F0b3JJdGVtcyhjb25maWc6IE9yZ2FuaXplckNoYXJ0Q29uZmlnIHwgbnVsbCB8IHVuZGVmaW5lZCk6IE9yZ2FuaXplckNoYXJ0SXRlbVtdIHtcbiAgcmV0dXJuIGNvbmZpZz8uaW5kaWNhdG9ycz8uaXRlbXMgPz8gW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWx0ZXJJdGVtcyhjb25maWc6IE9yZ2FuaXplckNoYXJ0Q29uZmlnIHwgbnVsbCB8IHVuZGVmaW5lZCk6IE9yZ2FuaXplckNoYXJ0SXRlbVtdIHtcbiAgcmV0dXJuIGNvbmZpZz8uZmlsdGVycz8uaXRlbXMgPz8gW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGFja0l0ZW1zKGluZGljYXRvcjogT3JnYW5pemVyQ2hhcnRJdGVtIHwgdW5kZWZpbmVkKTogT3JnYW5pemVyQ2hhcnRJdGVtW10ge1xuICByZXR1cm4gaW5kaWNhdG9yPy5leHRyYT8uc3RhY2tzPy5pdGVtcyA/PyBbXTtcbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pemVyLWNvbmZpZy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmV0ZW1lL2pxdWVyeS1vcmdhbml6ZXIvc3JjL2xpYi9tb2RlbHMvb3JnYW5pemVyLWNvbmZpZy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNsaWNlQ29uZmlnIH0gZnJvbSAnLi4vc2xpY2UtcGFuZWwvc2xpY2UtcGFuZWwubW9kZWwnO1xuaW1wb3J0IHsgVW5pdENvbmZpZyB9IGZyb20gJ0BvbmV0ZW1lL2pxdWVyeS1jb3JlJztcblxuZXhwb3J0IHR5cGUgRmllbGRTdGF0ZSA9ICdyZWFkeScgfCAnbG9hZGluZycgfCAnZXJyb3InO1xuZXhwb3J0IGludGVyZmFjZSBPcmdhbml6ZXJWaWV3RmllbGQge1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBpY29uPzogc3RyaW5nO1xuICB2aXNpYmxlPzogYm9vbGVhbjtcbiAgc3RhdGU/OiBGaWVsZFN0YXRlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9yZ2FuaXplclhGaWVsZCB7XG4gIGlkOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcmdhbml6ZXJZQWdncmVnYXRlIHtcbiAgaWQ6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcmdhbml6ZXJZRmllbGQge1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBhZ2dyZWdhdGVzPzogT3JnYW5pemVyWUFnZ3JlZ2F0ZVtdO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3JnYW5pemVyVmlld0dyb3VwIHtcbiAgaWQ6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgaWNvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcmdhbml6ZXJWaWV3U2xpY2Uge1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBpY29uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9yZ2FuaXplclRlbXBsYXRlIHtcbiAgaWQ6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgaWNvbj86IHN0cmluZztcbiAgeEZpZWxkPzogc3RyaW5nO1xuICB5RmllbGQ/OiBzdHJpbmc7XG4gIHlBZ2dyZWdhdGU/OiBzdHJpbmc7XG4gIGdyb3VwQnk/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3JnYW5pemVyQ29uZmlnIHtcbiAgZmllbGRzPzogT3JnYW5pemVyVmlld0ZpZWxkW107XG4gIHhGaWVsZHM/OiBPcmdhbml6ZXJYRmllbGRbXTtcbiAgeUZpZWxkcz86IE9yZ2FuaXplcllGaWVsZFtdO1xuICBncm91cHM/OiBPcmdhbml6ZXJWaWV3R3JvdXBbXTtcbiAgc2xpY2VzPzogT3JnYW5pemVyVmlld1NsaWNlW107XG4gIHRlbXBsYXRlcz86IE9yZ2FuaXplclRlbXBsYXRlW107XG5cbiAgb25GZXRjaEZpZWxkRGF0YT86IChmaWVsZElkOiBzdHJpbmcpID0+IFByb21pc2U8c3RyaW5nW10gfCBSZWNvcmQ8c3RyaW5nLCBhbnk+W10+O1xuICBvbkZldGNoU2xpY2VEYXRhPzogKGZpbHRlcktleTogc3RyaW5nKSA9PiBPYnNlcnZhYmxlPGFueVtdPiB8IFByb21pc2U8YW55W10+O1xuICBvblNsaWNlQ2xpY2s/OiAoKSA9PiB2b2lkO1xuXG4gIHNob3dFeHBvcnQ/OiBib29sZWFuO1xuICBvbkV4cG9ydD86ICgpID0+IHZvaWQ7XG4gIG9uRXhwb3J0VmlzdWFsPzogKCkgPT4gdm9pZDtcbiAgb25FeHBvcnREYXRhPzogKCkgPT4gdm9pZDtcblxuICBzaG93UHJlZmVyZW5jZXM/OiBib29sZWFuO1xuICBoYXNTYXZlZFByZWZlcmVuY2VzPzogYm9vbGVhbjtcbiAgb25QcmVmZXJlbmNlc0VkaXQ/OiAoKSA9PiB2b2lkO1xuICBvblByZWZlcmVuY2VzU2F2ZT86ICgpID0+IHZvaWQ7XG4gIG9uUHJlZmVyZW5jZXNDbGVhcj86ICgpID0+IHZvaWQ7XG5cbiAgc2hvd1Jlc2V0PzogYm9vbGVhbjtcbiAgbWVudVBvc2l0aW9uPzogJ2Fib3ZlJyB8ICdiZWxvdyc7XG4gIG1lbnVDbGFzcz86IHN0cmluZztcbiAgYnV0dG9uTGFiZWw/OiBzdHJpbmc7XG4gIGJ1dHRvbkljb24/OiBzdHJpbmc7XG4gIHNob3dCdXR0b25JY29uPzogYm9vbGVhbjtcblxuICBzd2l0Y2hWaWV3Pzoge1xuICAgIGN1cnJlbnRWaWV3OiAnY2hhcnQnIHwgJ3RhYmxlJztcbiAgICBvblN3aXRjaDogKG5ld1ZpZXc6ICdjaGFydCcgfCAndGFibGUnKSA9PiB2b2lkO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9yZ2FuaXplclNsaWNlU3RhdGUge1xuICBzbGljZUNvbmZpZ3M6IFNsaWNlQ29uZmlnPGFueT5bXTtcbiAgdGFza3M6IGFueVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9yZ2FuaXplclN0YXRlIHtcbiAgdmlld01vZGU/OiAnY2hhcnQnIHwgJ3RhYmxlJztcblxuICB2aXNpYmxlRmllbGRzPzogc3RyaW5nW107XG5cbiAgc2VsZWN0ZWRYPzogc3RyaW5nO1xuICBzZWxlY3RlZFk/OiBzdHJpbmc7XG4gIHNlbGVjdGVkWUFnZ3JlZ2F0ZT86IHN0cmluZztcblxuICBzZWxlY3RlZEdyb3VwQnk/OiBzdHJpbmc7XG4gIHNlbGVjdGVkU2xpY2VzPzogc3RyaW5nW107XG4gIHNlbGVjdGVkVGVtcGxhdGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3JnYW5pemVyQnV0dG9uRXZlbnQge1xuICB0eXBlOiAnZmllbGRUb2dnbGVkJyB8ICd4U2VsZWN0ZWQnIHwgJ3lTZWxlY3RlZCcgfCAnZ3JvdXBCeVNlbGVjdGVkJyB8ICd0ZW1wbGF0ZVNlbGVjdGVkJyB8ICdzbGljZVNlbGVjdGVkJyB8ICdyZXNldCcgfCAndmlld1N3aXRjaGVkJztcbiAgc3RhdGU6IE9yZ2FuaXplclN0YXRlO1xuICBzb3VyY2U/OiAndXNlcicgfCAnYXBpJztcbiAgcmVzb2x2ZWRZVW5pdD86IHN0cmluZyB8IFVuaXRDb25maWc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3JnYW5pemVyVW5pZmllZFN0YXRlIHtcbiAgdmlld01vZGU6ICdjaGFydCcgfCAndGFibGUnO1xuICBkaW1lbnNpb24/OiBzdHJpbmc7XG4gIG1ldHJpYz86IHN0cmluZztcbiAgbWV0cmljQWdncmVnYXRlPzogc3RyaW5nO1xuICBicmVha2Rvd24/OiBzdHJpbmc7XG4gIGZpbHRlcnM/OiBzdHJpbmdbXTtcbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pemVyLWNvbmZpZy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmV0ZW1lL2pxdWVyeS1vcmdhbml6ZXIvc3JjL2xpYi9tb2RlbHMvb3JnYW5pemVyLWNvbmZpZy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNsaWNlQ29uZmlnIH0gZnJvbSAnLi4vc2xpY2UtcGFuZWwvc2xpY2UtcGFuZWwubW9kZWwnO1xuaW1wb3J0IHsgVW5pdENvbmZpZyB9IGZyb20gJ0BvbmV0ZW1lL2pxdWVyeS1jb3JlJztcblxuZXhwb3J0IHR5cGUgRmllbGRTdGF0ZSA9ICdyZWFkeScgfCAnbG9hZGluZycgfCAnZXJyb3InO1xuZXhwb3J0IGludGVyZmFjZSBPcmdhbml6ZXJWaWV3RmllbGQge1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBpY29uPzogc3RyaW5nO1xuICB2aXNpYmxlPzogYm9vbGVhbjtcbiAgc3RhdGU/OiBGaWVsZFN0YXRlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9yZ2FuaXplclhGaWVsZCB7XG4gIGlkOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcmdhbml6ZXJZQWdncmVnYXRlIHtcbiAgaWQ6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcmdhbml6ZXJZRmllbGQge1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBhZ2dyZWdhdGVzPzogT3JnYW5pemVyWUFnZ3JlZ2F0ZVtdO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3JnYW5pemVyVmlld0dyb3VwIHtcbiAgaWQ6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgaWNvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcmdhbml6ZXJWaWV3U2xpY2Uge1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBpY29uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9yZ2FuaXplclRlbXBsYXRlIHtcbiAgaWQ6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgaWNvbj86IHN0cmluZztcbiAgeEZpZWxkPzogc3RyaW5nO1xuICB5RmllbGQ/OiBzdHJpbmc7XG4gIHlBZ2dyZWdhdGU/OiBzdHJpbmc7XG4gIGdyb3VwQnk/OiBzdHJpbmc7XG4gIHNlbGVjdGVkU2xpY2VzPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3JnYW5pemVyQ29uZmlnIHtcbiAgZmllbGRzPzogT3JnYW5pemVyVmlld0ZpZWxkW107XG4gIHhGaWVsZHM/OiBPcmdhbml6ZXJYRmllbGRbXTtcbiAgeUZpZWxkcz86IE9yZ2FuaXplcllGaWVsZFtdO1xuICBncm91cHM/OiBPcmdhbml6ZXJWaWV3R3JvdXBbXTtcbiAgc2xpY2VzPzogT3JnYW5pemVyVmlld1NsaWNlW107XG4gIHRlbXBsYXRlcz86IE9yZ2FuaXplclRlbXBsYXRlW107XG5cbiAgb25GZXRjaEZpZWxkRGF0YT86IChmaWVsZElkOiBzdHJpbmcpID0+IFByb21pc2U8c3RyaW5nW10gfCBSZWNvcmQ8c3RyaW5nLCBhbnk+W10+O1xuICBvbkZldGNoU2xpY2VEYXRhPzogKGZpbHRlcktleTogc3RyaW5nKSA9PiBPYnNlcnZhYmxlPGFueVtdPiB8IFByb21pc2U8YW55W10+O1xuICBvblNsaWNlQ2xpY2s/OiAoKSA9PiB2b2lkO1xuXG4gIHNob3dFeHBvcnQ/OiBib29sZWFuO1xuICBvbkV4cG9ydD86ICgpID0+IHZvaWQ7XG4gIG9uRXhwb3J0VmlzdWFsPzogKCkgPT4gdm9pZDtcbiAgb25FeHBvcnREYXRhPzogKCkgPT4gdm9pZDtcblxuICBzaG93UHJlZmVyZW5jZXM/OiBib29sZWFuO1xuICBoYXNTYXZlZFByZWZlcmVuY2VzPzogYm9vbGVhbjtcbiAgb25QcmVmZXJlbmNlc0VkaXQ/OiAoKSA9PiB2b2lkO1xuICBvblByZWZlcmVuY2VzU2F2ZT86ICgpID0+IHZvaWQ7XG4gIG9uUHJlZmVyZW5jZXNDbGVhcj86ICgpID0+IHZvaWQ7XG5cbiAgc2hvd1Jlc2V0PzogYm9vbGVhbjtcbiAgbWVudVBvc2l0aW9uPzogJ2Fib3ZlJyB8ICdiZWxvdyc7XG4gIG1lbnVDbGFzcz86IHN0cmluZztcbiAgYnV0dG9uTGFiZWw/OiBzdHJpbmc7XG4gIGJ1dHRvbkljb24/OiBzdHJpbmc7XG4gIHNob3dCdXR0b25JY29uPzogYm9vbGVhbjtcblxuICBzd2l0Y2hWaWV3Pzoge1xuICAgIGN1cnJlbnRWaWV3OiAnY2hhcnQnIHwgJ3RhYmxlJztcbiAgICBvblN3aXRjaDogKG5ld1ZpZXc6ICdjaGFydCcgfCAndGFibGUnKSA9PiB2b2lkO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9yZ2FuaXplclNsaWNlU3RhdGUge1xuICBzbGljZUNvbmZpZ3M6IFNsaWNlQ29uZmlnPGFueT5bXTtcbiAgdGFza3M6IGFueVtdO1xuICBmaWx0ZXJBcHBsaWVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcmdhbml6ZXJTdGF0ZSB7XG4gIHZpZXdNb2RlPzogJ2NoYXJ0JyB8ICd0YWJsZSc7XG5cbiAgdmlzaWJsZUZpZWxkcz86IHN0cmluZ1tdO1xuXG4gIHNlbGVjdGVkWD86IHN0cmluZztcbiAgc2VsZWN0ZWRZPzogc3RyaW5nO1xuICBzZWxlY3RlZFlBZ2dyZWdhdGU/OiBzdHJpbmc7XG5cbiAgc2VsZWN0ZWRHcm91cEJ5Pzogc3RyaW5nO1xuICBzZWxlY3RlZFNsaWNlcz86IHN0cmluZ1tdO1xuICBzZWxlY3RlZFRlbXBsYXRlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9yZ2FuaXplckJ1dHRvbkV2ZW50IHtcbiAgdHlwZTogJ2ZpZWxkVG9nZ2xlZCcgfCAneFNlbGVjdGVkJyB8ICd5U2VsZWN0ZWQnIHwgJ2dyb3VwQnlTZWxlY3RlZCcgfCAndGVtcGxhdGVTZWxlY3RlZCcgfCAnc2xpY2VTZWxlY3RlZCcgfCAncmVzZXQnIHwgJ3ZpZXdTd2l0Y2hlZCc7XG4gIHN0YXRlOiBPcmdhbml6ZXJTdGF0ZTtcbiAgc291cmNlPzogJ3VzZXInIHwgJ2FwaSc7XG4gIHJlc29sdmVkWVVuaXQ/OiBzdHJpbmcgfCBVbml0Q29uZmlnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9yZ2FuaXplclVuaWZpZWRTdGF0ZSB7XG4gIHZpZXdNb2RlOiAnY2hhcnQnIHwgJ3RhYmxlJztcbiAgZGltZW5zaW9uPzogc3RyaW5nO1xuICBtZXRyaWM/OiBzdHJpbmc7XG4gIG1ldHJpY0FnZ3JlZ2F0ZT86IHN0cmluZztcbiAgYnJlYWtkb3duPzogc3RyaW5nO1xuICBmaWx0ZXJzPzogc3RyaW5nW107XG59XG4iXX0=
@@ -23,4 +23,120 @@ export function buildYFields(indicators) {
23
23
  export function resolveYKey(selectedY, selectedYAggregate) {
24
24
  return selectedYAggregate ?? selectedY;
25
25
  }
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pemVyLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25ldGVtZS9qcXVlcnktb3JnYW5pemVyL3NyYy9saWIvbW9kZWxzL29yZ2FuaXplci11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxNQUFNLFVBQVUsWUFBWSxDQUFDLFVBQWlDO0lBQzVELE1BQU0sT0FBTyxHQUFhLEVBQUUsQ0FBQztJQUM3QixNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBMkIsQ0FBQztJQUUvQyxLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVUsRUFBRTtRQUNsQyxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDO1FBQ2pDLElBQUksUUFBUSxFQUFFO1lBQ1osSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ3RCLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3ZCLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2FBQ3RFO1lBQ0QsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNqQyxJQUFJLE1BQU0sRUFBRSxVQUFVLEVBQUU7Z0JBQ3RCLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO2FBQ3RFO1NBQ0Y7YUFBTTtZQUNMLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzNCLEdBQUcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxTQUFTLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUNyRTtLQUNGO0lBRUQsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBd0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvRSxDQUFDO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FDekIsU0FBNkIsRUFDN0Isa0JBQXNDO0lBRXRDLE9BQU8sa0JBQWtCLElBQUksU0FBUyxDQUFDO0FBQ3pDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcmdhbml6ZXJZRmllbGQgfSBmcm9tICcuL29yZ2FuaXplci1jb25maWcuaW50ZXJmYWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBPcmdhbml6ZXJZSW5kaWNhdG9yIHtcbiAgaWQ6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgZ3JvdXA/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFlGaWVsZHMoaW5kaWNhdG9yczogT3JnYW5pemVyWUluZGljYXRvcltdKTogT3JnYW5pemVyWUZpZWxkW10ge1xuICBjb25zdCBvcmRlcmVkOiBzdHJpbmdbXSA9IFtdO1xuICBjb25zdCBtYXAgPSBuZXcgTWFwPHN0cmluZywgT3JnYW5pemVyWUZpZWxkPigpO1xuXG4gIGZvciAoY29uc3QgaW5kaWNhdG9yIG9mIGluZGljYXRvcnMpIHtcbiAgICBjb25zdCBncm91cEtleSA9IGluZGljYXRvci5ncm91cDtcbiAgICBpZiAoZ3JvdXBLZXkpIHtcbiAgICAgIGlmICghbWFwLmhhcyhncm91cEtleSkpIHtcbiAgICAgICAgb3JkZXJlZC5wdXNoKGdyb3VwS2V5KTtcbiAgICAgICAgbWFwLnNldChncm91cEtleSwgeyBpZDogZ3JvdXBLZXksIGxhYmVsOiBncm91cEtleSwgYWdncmVnYXRlczogW10gfSk7XG4gICAgICB9XG4gICAgICBjb25zdCBwYXJlbnQgPSBtYXAuZ2V0KGdyb3VwS2V5KTtcbiAgICAgIGlmIChwYXJlbnQ/LmFnZ3JlZ2F0ZXMpIHtcbiAgICAgICAgcGFyZW50LmFnZ3JlZ2F0ZXMucHVzaCh7IGlkOiBpbmRpY2F0b3IuaWQsIGxhYmVsOiBpbmRpY2F0b3IubGFiZWwgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG9yZGVyZWQucHVzaChpbmRpY2F0b3IuaWQpO1xuICAgICAgbWFwLnNldChpbmRpY2F0b3IuaWQsIHsgaWQ6IGluZGljYXRvci5pZCwgbGFiZWw6IGluZGljYXRvci5sYWJlbCB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gb3JkZXJlZC5tYXAoayA9PiBtYXAuZ2V0KGspKS5maWx0ZXIoKGYpOiBmIGlzIE9yZ2FuaXplcllGaWVsZCA9PiAhIWYpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVlLZXkoXG4gIHNlbGVjdGVkWTogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBzZWxlY3RlZFlBZ2dyZWdhdGU6IHN0cmluZyB8IHVuZGVmaW5lZFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHNlbGVjdGVkWUFnZ3JlZ2F0ZSA/PyBzZWxlY3RlZFk7XG59XG4iXX0=
26
+ export function normalizeOrganizerState(state, config) {
27
+ const base = state || {};
28
+ const normalizedY = normalizeYSelection(base.selectedY, base.selectedYAggregate, config.yFields);
29
+ const selectedX = hasOption(config.xFields, base.selectedX) ? base.selectedX : undefined;
30
+ const selectedGroupBy = hasOption(config.groups, base.selectedGroupBy) ? base.selectedGroupBy : undefined;
31
+ const selectedSlices = (base.selectedSlices || []).filter(sliceId => hasOption(config.slices, sliceId));
32
+ const normalized = {
33
+ ...base,
34
+ selectedX,
35
+ selectedY: normalizedY.selectedY,
36
+ selectedYAggregate: normalizedY.selectedYAggregate,
37
+ selectedGroupBy,
38
+ selectedSlices,
39
+ };
40
+ return {
41
+ ...normalized,
42
+ selectedTemplate: resolveMatchingTemplateId(config.templates, normalized, config)
43
+ };
44
+ }
45
+ export function normalizeTemplateToState(template, currentState, config) {
46
+ const base = normalizeOrganizerState(currentState, config);
47
+ const normalizedY = normalizeYSelection(template.yField, template.yAggregate, config.yFields, base);
48
+ const nextState = {
49
+ viewMode: base.viewMode,
50
+ visibleFields: base.visibleFields,
51
+ selectedX: hasOption(config.xFields, template.xField) ? template.xField : base.selectedX,
52
+ selectedY: normalizedY.selectedY,
53
+ selectedYAggregate: normalizedY.selectedYAggregate,
54
+ selectedGroupBy: hasOption(config.groups, template.groupBy) ? template.groupBy : base.selectedGroupBy,
55
+ selectedSlices: (template.selectedSlices || []).filter(sliceId => hasOption(config.slices, sliceId)),
56
+ };
57
+ const resolvedTemplateId = resolveMatchingTemplateId(config.templates, nextState, config);
58
+ return {
59
+ ...nextState,
60
+ selectedTemplate: resolvedTemplateId ?? template.id
61
+ };
62
+ }
63
+ export function resolveMatchingTemplateId(templates, state, config) {
64
+ if (!templates?.length)
65
+ return undefined;
66
+ const normalizedState = normalizeStateWithoutTemplate(state, config);
67
+ return templates.find(template => {
68
+ const templateState = normalizeStateWithoutTemplate(normalizeTemplateToComparableState(template, normalizedState, config), config);
69
+ return sameOrganizerState(templateState, normalizedState);
70
+ })?.id;
71
+ }
72
+ function normalizeStateCore(selectedX, selectedY, selectedYAggregate, selectedGroupBy, selectedSlices, config, originalState) {
73
+ const normalizedY = normalizeYSelection(selectedY, selectedYAggregate, config.yFields, originalState);
74
+ return {
75
+ selectedX: hasOption(config.xFields, selectedX) ? selectedX : undefined,
76
+ selectedY: normalizedY.selectedY,
77
+ selectedYAggregate: normalizedY.selectedYAggregate,
78
+ selectedGroupBy: hasOption(config.groups, selectedGroupBy) ? selectedGroupBy : undefined,
79
+ selectedSlices: (selectedSlices || []).filter(sliceId => hasOption(config.slices, sliceId)),
80
+ };
81
+ }
82
+ function normalizeTemplateToComparableState(template, baseState, config) {
83
+ return normalizeStateCore(template.xField, template.yField, template.yAggregate, template.groupBy, template.selectedSlices, config, baseState);
84
+ }
85
+ function normalizeStateWithoutTemplate(state, config) {
86
+ const base = state || {};
87
+ return normalizeStateCore(base.selectedX, base.selectedY, base.selectedYAggregate, base.selectedGroupBy, base.selectedSlices, config, base);
88
+ }
89
+ function normalizeYSelection(selectedY, selectedYAggregate, yFields, fallbackState) {
90
+ if (!selectedY) {
91
+ return {
92
+ selectedY: fallbackState?.selectedY,
93
+ selectedYAggregate: fallbackState?.selectedYAggregate,
94
+ };
95
+ }
96
+ const directField = yFields?.find(field => field.id === selectedY);
97
+ if (directField) {
98
+ if (!directField.aggregates?.length) {
99
+ return { selectedY: directField.id, selectedYAggregate: undefined };
100
+ }
101
+ const matchedAggregate = selectedYAggregate
102
+ ? directField.aggregates.find(aggregate => aggregate.id === selectedYAggregate)
103
+ : undefined;
104
+ const fallbackAggregate = fallbackState?.selectedY === directField.id
105
+ ? directField.aggregates.find(aggregate => aggregate.id === fallbackState.selectedYAggregate)
106
+ : undefined;
107
+ const resolvedAggregate = matchedAggregate ?? fallbackAggregate ?? directField.aggregates[0];
108
+ return {
109
+ selectedY: directField.id,
110
+ selectedYAggregate: resolvedAggregate?.id,
111
+ };
112
+ }
113
+ const aggregateParent = yFields?.find(field => field.aggregates?.some(aggregate => aggregate.id === selectedY));
114
+ if (aggregateParent) {
115
+ return {
116
+ selectedY: aggregateParent.id,
117
+ selectedYAggregate: selectedY,
118
+ };
119
+ }
120
+ return {
121
+ selectedY: fallbackState?.selectedY,
122
+ selectedYAggregate: fallbackState?.selectedYAggregate,
123
+ };
124
+ }
125
+ function sameOrganizerState(left, right) {
126
+ return left.selectedX === right.selectedX
127
+ && left.selectedY === right.selectedY
128
+ && left.selectedYAggregate === right.selectedYAggregate
129
+ && left.selectedGroupBy === right.selectedGroupBy
130
+ && sameSlices(left.selectedSlices || [], right.selectedSlices || []);
131
+ }
132
+ function sameSlices(left, right) {
133
+ if (left.length !== right.length)
134
+ return false;
135
+ const sortedLeft = [...left].sort((a, b) => a.localeCompare(b));
136
+ const sortedRight = [...right].sort((a, b) => a.localeCompare(b));
137
+ return sortedLeft.every((value, index) => value === sortedRight[index]);
138
+ }
139
+ function hasOption(items, id) {
140
+ return !!id && !!items?.some(item => item.id === id);
141
+ }
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pemVyLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25ldGVtZS9qcXVlcnktb3JnYW5pemVyL3NyYy9saWIvbW9kZWxzL29yZ2FuaXplci11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxNQUFNLFVBQVUsWUFBWSxDQUFDLFVBQWlDO0lBQzVELE1BQU0sT0FBTyxHQUFhLEVBQUUsQ0FBQztJQUM3QixNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBMkIsQ0FBQztJQUUvQyxLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVUsRUFBRTtRQUNsQyxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDO1FBQ2pDLElBQUksUUFBUSxFQUFFO1lBQ1osSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ3RCLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3ZCLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2FBQ3RFO1lBQ0QsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNqQyxJQUFJLE1BQU0sRUFBRSxVQUFVLEVBQUU7Z0JBQ3RCLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO2FBQ3RFO1NBQ0Y7YUFBTTtZQUNMLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzNCLEdBQUcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFB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SUFDaEUsTUFBTSxXQUFXLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRSxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEtBQUssV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDMUUsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFDLEtBQXdDLEVBQUUsRUFBc0I7SUFDakYsT0FBTyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUN2RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3JnYW5pemVyQ29uZmlnLCBPcmdhbml6ZXJTdGF0ZSwgT3JnYW5pemVyVGVtcGxhdGUsIE9yZ2FuaXplcllGaWVsZCB9IGZyb20gJy4vb3JnYW5pemVyLWNvbmZpZy5pbnRlcmZhY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9yZ2FuaXplcllJbmRpY2F0b3Ige1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBncm91cD86IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkWUZpZWxkcyhpbmRpY2F0b3JzOiBPcmdhbml6ZXJZSW5kaWNhdG9yW10pOiBPcmdhbml6ZXJZRmllbGRbXSB7XG4gIGNvbnN0IG9yZGVyZWQ6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0IG1hcCA9IG5ldyBNYXA8c3RyaW5nLCBPcmdhbml6ZXJZRmllbGQ+KCk7XG5cbiAgZm9yIChjb25zdCBpbmRpY2F0b3Igb2YgaW5kaWNhdG9ycykge1xuICAgIGNvbnN0IGdyb3VwS2V5ID0gaW5kaWNhdG9yLmdyb3VwO1xuICAgIGlmIChncm91cEtleSkge1xuICAgICAgaWYgKCFtYXAuaGFzKGdyb3VwS2V5KSkge1xuICAgICAgICBvcmRlcmVkLnB1c2goZ3JvdXBLZXkpO1xuICAgICAgICBtYXAuc2V0KGdyb3VwS2V5LCB7IGlkOiBncm91cEtleSwgbGFiZWw6IGdyb3VwS2V5LCBhZ2dyZWdhdGVzOiBbXSB9KTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBhcmVudCA9IG1hcC5nZXQoZ3JvdXBLZXkpO1xuICAgICAgaWYgKHBhcmVudD8uYWdncmVnYXRlcykge1xuICAgICAgICBwYXJlbnQuYWdncmVnYXRlcy5wdXNoKHsgaWQ6IGluZGljYXRvci5pZCwgbGFiZWw6IGluZGljYXRvci5sYWJlbCB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgb3JkZXJlZC5wdXNoKGluZGljYXRvci5pZCk7XG4gICAgICBtYXAuc2V0KGluZGljYXRvci5pZCwgeyBpZDogaW5kaWNhdG9yLmlkLCBsYWJlbDogaW5kaWNhdG9yLmxhYmVsIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvcmRlcmVkLm1hcChrID0+IG1hcC5nZXQoaykpLmZpbHRlcigoZik6IGYgaXMgT3JnYW5pemVyWUZpZWxkID0+ICEhZik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlWUtleShcbiAgc2VsZWN0ZWRZOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIHNlbGVjdGVkWUFnZ3JlZ2F0ZTogc3RyaW5nIHwgdW5kZWZpbmVkXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gc2VsZWN0ZWRZQWdncmVnYXRlID8/IHNlbGVjdGVkWTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZU9yZ2FuaXplclN0YXRlKFxuICBzdGF0ZTogT3JnYW5pemVyU3RhdGUgfCB1bmRlZmluZWQsXG4gIGNvbmZpZzogUGljazxPcmdhbml6ZXJDb25maWcsICd4RmllbGRzJyB8ICd5RmllbGRzJyB8ICdncm91cHMnIHwgJ3NsaWNlcycgfCAndGVtcGxhdGVzJz5cbik6IE9yZ2FuaXplclN0YXRlIHtcbiAgY29uc3QgYmFzZSA9IHN0YXRlIHx8IHt9O1xuICBjb25zdCBub3JtYWxpemVkWSA9IG5vcm1hbGl6ZVlTZWxlY3Rpb24oYmFzZS5zZWxlY3RlZFksIGJhc2Uuc2VsZWN0ZWRZQWdncmVnYXRlLCBjb25maWcueUZpZWxkcyk7XG4gIGNvbnN0IHNlbGVjdGVkWCA9IGhhc09wdGlvbihjb25maWcueEZpZWxkcywgYmFzZS5zZWxlY3RlZFgpID8gYmFzZS5zZWxlY3RlZFggOiB1bmRlZmluZWQ7XG4gIGNvbnN0IHNlbGVjdGVkR3JvdXBCeSA9IGhhc09wdGlvbihjb25maWcuZ3JvdXBzLCBiYXNlLnNlbGVjdGVkR3JvdXBCeSkgPyBiYXNlLnNlbGVjdGVkR3JvdXBCeSA6IHVuZGVmaW5lZDtcbiAgY29uc3Qgc2VsZWN0ZWRTbGljZXMgPSAoYmFzZS5zZWxlY3RlZFNsaWNlcyB8fCBbXSkuZmlsdGVyKHNsaWNlSWQgPT4gaGFzT3B0aW9uKGNvbmZpZy5zbGljZXMsIHNsaWNlSWQpKTtcblxuICBjb25zdCBub3JtYWxpemVkOiBPcmdhbml6ZXJTdGF0ZSA9IHtcbiAgICAuLi5iYXNlLFxuICAgIHNlbGVjdGVkWCxcbiAgICBzZWxlY3RlZFk6IG5vcm1hbGl6ZWRZLnNlbGVjdGVkWSxcbiAgICBzZWxlY3RlZFlBZ2dyZWdhdGU6IG5vcm1hbGl6ZWRZLnNlbGVjdGVkWUFnZ3JlZ2F0ZSxcbiAgICBzZWxlY3RlZEdyb3VwQnksXG4gICAgc2VsZWN0ZWRTbGljZXMsXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5ub3JtYWxpemVkLFxuICAgIHNlbGVjdGVkVGVtcGxhdGU6IHJlc29sdmVNYXRjaGluZ1RlbXBsYXRlSWQoY29uZmlnLnRlbXBsYXRlcywgbm9ybWFsaXplZCwgY29uZmlnKVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplVGVtcGxhdGVUb1N0YXRlKFxuICB0ZW1wbGF0ZTogT3JnYW5pemVyVGVtcGxhdGUsXG4gIGN1cnJlbnRTdGF0ZTogT3JnYW5pemVyU3RhdGUgfCB1bmRlZmluZWQsXG4gIGNvbmZpZzogUGljazxPcmdhbml6ZXJDb25maWcsICd4RmllbGRzJyB8ICd5RmllbGRzJyB8ICdncm91cHMnIHwgJ3NsaWNlcycgfCAndGVtcGxhdGVzJz5cbik6IE9yZ2FuaXplclN0YXRlIHtcbiAgY29uc3QgYmFzZSA9IG5vcm1hbGl6ZU9yZ2FuaXplclN0YXRlKGN1cnJlbnRTdGF0ZSwgY29uZmlnKTtcbiAgY29uc3Qgbm9ybWFsaXplZFkgPSBub3JtYWxpemVZU2VsZWN0aW9uKHRlbXBsYXRlLnlGaWVsZCwgdGVtcGxhdGUueUFnZ3JlZ2F0ZSwgY29uZmlnLnlGaWVsZHMsIGJhc2UpO1xuXG4gIGNvbnN0IG5leHRTdGF0ZTogT3JnYW5pemVyU3RhdGUgPSB7XG4gICAgdmlld01vZGU6IGJhc2Uudmlld01vZGUsXG4gICAgdmlzaWJsZUZpZWxkczogYmFzZS52aXNpYmxlRmllbGRzLFxuICAgIHNlbGVjdGVkWDogaGFzT3B0aW9uKGNvbmZpZy54RmllbGRzLCB0ZW1wbGF0ZS54RmllbGQpID8gdGVtcGxhdGUueEZpZWxkIDogYmFzZS5zZWxlY3RlZFgsXG4gICAgc2VsZWN0ZWRZOiBub3JtYWxpemVkWS5zZWxlY3RlZFksXG4gICAgc2VsZWN0ZWRZQWdncmVnYXRlOiBub3JtYWxpemVkWS5zZWxlY3RlZFlBZ2dyZWdhdGUsXG4gICAgc2VsZWN0ZWRHcm91cEJ5OiBoYXNPcHRpb24oY29uZmlnLmdyb3VwcywgdGVtcGxhdGUuZ3JvdXBCeSkgPyB0ZW1wbGF0ZS5ncm91cEJ5IDogYmFzZS5zZWxlY3RlZEdyb3VwQnksXG4gICAgc2VsZWN0ZWRTbGljZXM6ICh0ZW1wbGF0ZS5zZWxlY3RlZFNsaWNlcyB8fCBbXSkuZmlsdGVyKHNsaWNlSWQgPT4gaGFzT3B0aW9uKGNvbmZpZy5zbGljZXMsIHNsaWNlSWQpKSxcbiAgfTtcblxuICBjb25zdCByZXNvbHZlZFRlbXBsYXRlSWQgPSByZXNvbHZlTWF0Y2hpbmdUZW1wbGF0ZUlkKGNvbmZpZy50ZW1wbGF0ZXMsIG5leHRTdGF0ZSwgY29uZmlnKTtcbiAgcmV0dXJuIHtcbiAgICAuLi5uZXh0U3RhdGUsXG4gICAgc2VsZWN0ZWRUZW1wbGF0ZTogcmVzb2x2ZWRUZW1wbGF0ZUlkID8/IHRlbXBsYXRlLmlkXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlTWF0Y2hpbmdUZW1wbGF0ZUlkKFxuICB0ZW1wbGF0ZXM6IE9yZ2FuaXplclRlbXBsYXRlW10gfCB1bmRlZmluZWQsXG4gIHN0YXRlOiBPcmdhbml6ZXJTdGF0ZSB8IHVuZGVmaW5lZCxcbiAgY29uZmlnOiBQaWNrPE9yZ2FuaXplckNvbmZpZywgJ3hGaWVsZHMnIHwgJ3lGaWVsZHMnIHwgJ2dyb3VwcycgfCAnc2xpY2VzJyB8ICd0ZW1wbGF0ZXMnPlxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCF0ZW1wbGF0ZXM/Lmxlbmd0aCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICBjb25zdCBub3JtYWxpemVkU3RhdGUgPSBub3JtYWxpemVTdGF0ZVdpdGhvdXRUZW1wbGF0ZShzdGF0ZSwgY29uZmlnKTtcbiAgcmV0dXJuIHRlbXBsYXRlcy5maW5kKHRlbXBsYXRlID0+IHtcbiAgICBjb25zdCB0ZW1wbGF0ZVN0YXRlID0gbm9ybWFsaXplU3RhdGVXaXRob3V0VGVtcGxhdGUoXG4gICAgICBub3JtYWxpemVUZW1wbGF0ZVRvQ29tcGFyYWJsZVN0YXRlKHRlbXBsYXRlLCBub3JtYWxpemVkU3RhdGUsIGNvbmZpZyksXG4gICAgICBjb25maWdcbiAgICApO1xuICAgIHJldHVybiBzYW1lT3JnYW5pemVyU3RhdGUodGVtcGxhdGVTdGF0ZSwgbm9ybWFsaXplZFN0YXRlKTtcbiAgfSk/LmlkO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVTdGF0ZUNvcmUoXG4gIHNlbGVjdGVkWDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBzZWxlY3RlZFk6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgc2VsZWN0ZWRZQWdncmVnYXRlOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIHNlbGVjdGVkR3JvdXBCeTogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBzZWxlY3RlZFNsaWNlczogc3RyaW5nW10gfCB1bmRlZmluZWQsXG4gIGNvbmZpZzogUGljazxPcmdhbml6ZXJDb25maWcsICd4RmllbGRzJyB8ICd5RmllbGRzJyB8ICdncm91cHMnIHwgJ3NsaWNlcyc+LFxuICBvcmlnaW5hbFN0YXRlPzogT3JnYW5pemVyU3RhdGVcbik6IE9yZ2FuaXplclN0YXRlIHtcbiAgY29uc3Qgbm9ybWFsaXplZFkgPSBub3JtYWxpemVZU2VsZWN0aW9uKHNlbGVjdGVkWSwgc2VsZWN0ZWRZQWdncmVnYXRlLCBjb25maWcueUZpZWxkcywgb3JpZ2luYWxTdGF0ZSk7XG4gIHJldHVybiB7XG4gICAgc2VsZWN0ZWRYOiBoYXNPcHRpb24oY29uZmlnLnhGaWVsZHMsIHNlbGVjdGVkWCkgPyBzZWxlY3RlZFggOiB1bmRlZmluZWQsXG4gICAgc2VsZWN0ZWRZOiBub3JtYWxpemVkWS5zZWxlY3RlZFksXG4gICAgc2VsZWN0ZWRZQWdncmVnYXRlOiBub3JtYWxpemVkWS5zZWxlY3RlZFlBZ2dyZWdhdGUsXG4gICAgc2VsZWN0ZWRHcm91cEJ5OiBoYXNPcHRpb24oY29uZmlnLmdyb3Vwcywgc2VsZWN0ZWRHcm91cEJ5KSA/IHNlbGVjdGVkR3JvdXBCeSA6IHVuZGVmaW5lZCxcbiAgICBzZWxlY3RlZFNsaWNlczogKHNlbGVjdGVkU2xpY2VzIHx8IFtdKS5maWx0ZXIoc2xpY2VJZCA9PiBoYXNPcHRpb24oY29uZmlnLnNsaWNlcywgc2xpY2VJZCkpLFxuICB9O1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVUZW1wbGF0ZVRvQ29tcGFyYWJsZVN0YXRlKFxuICB0ZW1wbGF0ZTogT3JnYW5pemVyVGVtcGxhdGUsXG4gIGJhc2VTdGF0ZTogT3JnYW5pemVyU3RhdGUsXG4gIGNvbmZpZzogUGljazxPcmdhbml6ZXJDb25maWcsICd4RmllbGRzJyB8ICd5RmllbGRzJyB8ICdncm91cHMnIHwgJ3NsaWNlcycgfCAndGVtcGxhdGVzJz5cbik6IE9yZ2FuaXplclN0YXRlIHtcbiAgcmV0dXJuIG5vcm1hbGl6ZVN0YXRlQ29yZShcbiAgICB0ZW1wbGF0ZS54RmllbGQsXG4gICAgdGVtcGxhdGUueUZpZWxkLFxuICAgIHRlbXBsYXRlLnlBZ2dyZWdhdGUsXG4gICAgdGVtcGxhdGUuZ3JvdXBCeSxcbiAgICB0ZW1wbGF0ZS5zZWxlY3RlZFNsaWNlcyxcbiAgICBjb25maWcsXG4gICAgYmFzZVN0YXRlXG4gICk7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVN0YXRlV2l0aG91dFRlbXBsYXRlKFxuICBzdGF0ZTogT3JnYW5pemVyU3RhdGUgfCB1bmRlZmluZWQsXG4gIGNvbmZpZzogUGljazxPcmdhbml6ZXJDb25maWcsICd4RmllbGRzJyB8ICd5RmllbGRzJyB8ICdncm91cHMnIHwgJ3NsaWNlcycgfCAndGVtcGxhdGVzJz5cbik6IE9yZ2FuaXplclN0YXRlIHtcbiAgY29uc3QgYmFzZSA9IHN0YXRlIHx8IHt9O1xuICByZXR1cm4gbm9ybWFsaXplU3RhdGVDb3JlKFxuICAgIGJhc2Uuc2VsZWN0ZWRYLFxuICAgIGJhc2Uuc2VsZWN0ZWRZLFxuICAgIGJhc2Uuc2VsZWN0ZWRZQWdncmVnYXRlLFxuICAgIGJhc2Uuc2VsZWN0ZWRHcm91cEJ5LFxuICAgIGJhc2Uuc2VsZWN0ZWRTbGljZXMsXG4gICAgY29uZmlnLFxuICAgIGJhc2VcbiAgKTtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplWVNlbGVjdGlvbihcbiAgc2VsZWN0ZWRZOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIHNlbGVjdGVkWUFnZ3JlZ2F0ZTogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICB5RmllbGRzOiBPcmdhbml6ZXJZRmllbGRbXSB8IHVuZGVmaW5lZCxcbiAgZmFsbGJhY2tTdGF0ZT86IE9yZ2FuaXplclN0YXRlXG4pOiBQaWNrPE9yZ2FuaXplclN0YXRlLCAnc2VsZWN0ZWRZJyB8ICdzZWxlY3RlZFlBZ2dyZWdhdGUnPiB7XG4gIGlmICghc2VsZWN0ZWRZKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNlbGVjdGVkWTogZmFsbGJhY2tTdGF0ZT8uc2VsZWN0ZWRZLFxuICAgICAgc2VsZWN0ZWRZQWdncmVnYXRlOiBmYWxsYmFja1N0YXRlPy5zZWxlY3RlZFlBZ2dyZWdhdGUsXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IGRpcmVjdEZpZWxkID0geUZpZWxkcz8uZmluZChmaWVsZCA9PiBmaWVsZC5pZCA9PT0gc2VsZWN0ZWRZKTtcbiAgaWYgKGRpcmVjdEZpZWxkKSB7XG4gICAgaWYgKCFkaXJlY3RGaWVsZC5hZ2dyZWdhdGVzPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB7IHNlbGVjdGVkWTogZGlyZWN0RmllbGQuaWQsIHNlbGVjdGVkWUFnZ3JlZ2F0ZTogdW5kZWZpbmVkIH07XG4gICAgfVxuXG4gICAgY29uc3QgbWF0Y2hlZEFnZ3JlZ2F0ZSA9IHNlbGVjdGVkWUFnZ3JlZ2F0ZVxuICAgICAgPyBkaXJlY3RGaWVsZC5hZ2dyZWdhdGVzLmZpbmQoYWdncmVnYXRlID0+IGFnZ3JlZ2F0ZS5pZCA9PT0gc2VsZWN0ZWRZQWdncmVnYXRlKVxuICAgICAgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgZmFsbGJhY2tBZ2dyZWdhdGUgPSBmYWxsYmFja1N0YXRlPy5zZWxlY3RlZFkgPT09IGRpcmVjdEZpZWxkLmlkXG4gICAgICA/IGRpcmVjdEZpZWxkLmFnZ3JlZ2F0ZXMuZmluZChhZ2dyZWdhdGUgPT4gYWdncmVnYXRlLmlkID09PSBmYWxsYmFja1N0YXRlLnNlbGVjdGVkWUFnZ3JlZ2F0ZSlcbiAgICAgIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IHJlc29sdmVkQWdncmVnYXRlID0gbWF0Y2hlZEFnZ3JlZ2F0ZSA/PyBmYWxsYmFja0FnZ3JlZ2F0ZSA/PyBkaXJlY3RGaWVsZC5hZ2dyZWdhdGVzWzBdO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNlbGVjdGVkWTogZGlyZWN0RmllbGQuaWQsXG4gICAgICBzZWxlY3RlZFlBZ2dyZWdhdGU6IHJlc29sdmVkQWdncmVnYXRlPy5pZCxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgYWdncmVnYXRlUGFyZW50ID0geUZpZWxkcz8uZmluZChmaWVsZCA9PiBmaWVsZC5hZ2dyZWdhdGVzPy5zb21lKGFnZ3JlZ2F0ZSA9PiBhZ2dyZWdhdGUuaWQgPT09IHNlbGVjdGVkWSkpO1xuICBpZiAoYWdncmVnYXRlUGFyZW50KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNlbGVjdGVkWTogYWdncmVnYXRlUGFyZW50LmlkLFxuICAgICAgc2VsZWN0ZWRZQWdncmVnYXRlOiBzZWxlY3RlZFksXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc2VsZWN0ZWRZOiBmYWxsYmFja1N0YXRlPy5zZWxlY3RlZFksXG4gICAgc2VsZWN0ZWRZQWdncmVnYXRlOiBmYWxsYmFja1N0YXRlPy5zZWxlY3RlZFlBZ2dyZWdhdGUsXG4gIH07XG59XG5cbmZ1bmN0aW9uIHNhbWVPcmdhbml6ZXJTdGF0ZShsZWZ0OiBPcmdhbml6ZXJTdGF0ZSwgcmlnaHQ6IE9yZ2FuaXplclN0YXRlKTogYm9vbGVhbiB7XG4gIHJldHVybiBsZWZ0LnNlbGVjdGVkWCA9PT0gcmlnaHQuc2VsZWN0ZWRYXG4gICAgJiYgbGVmdC5zZWxlY3RlZFkgPT09IHJpZ2h0LnNlbGVjdGVkWVxuICAgICYmIGxlZnQuc2VsZWN0ZWRZQWdncmVnYXRlID09PSByaWdodC5zZWxlY3RlZFlBZ2dyZWdhdGVcbiAgICAmJiBsZWZ0LnNlbGVjdGVkR3JvdXBCeSA9PT0gcmlnaHQuc2VsZWN0ZWRHcm91cEJ5XG4gICAgJiYgc2FtZVNsaWNlcyhsZWZ0LnNlbGVjdGVkU2xpY2VzIHx8IFtdLCByaWdodC5zZWxlY3RlZFNsaWNlcyB8fCBbXSk7XG59XG5cbmZ1bmN0aW9uIHNhbWVTbGljZXMobGVmdDogc3RyaW5nW10sIHJpZ2h0OiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICBpZiAobGVmdC5sZW5ndGggIT09IHJpZ2h0Lmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICBjb25zdCBzb3J0ZWRMZWZ0ID0gWy4uLmxlZnRdLnNvcnQoKGEsIGIpID0+IGEubG9jYWxlQ29tcGFyZShiKSk7XG4gIGNvbnN0IHNvcnRlZFJpZ2h0ID0gWy4uLnJpZ2h0XS5zb3J0KChhLCBiKSA9PiBhLmxvY2FsZUNvbXBhcmUoYikpO1xuICByZXR1cm4gc29ydGVkTGVmdC5ldmVyeSgodmFsdWUsIGluZGV4KSA9PiB2YWx1ZSA9PT0gc29ydGVkUmlnaHRbaW5kZXhdKTtcbn1cblxuZnVuY3Rpb24gaGFzT3B0aW9uKGl0ZW1zOiBBcnJheTx7IGlkOiBzdHJpbmcgfT4gfCB1bmRlZmluZWQsIGlkOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgcmV0dXJuICEhaWQgJiYgISFpdGVtcz8uc29tZShpdGVtID0+IGl0ZW0uaWQgPT09IGlkKTtcbn1cbiJdfQ==