@sapui5/sap.fe.templates 1.144.0 → 1.145.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/package.json +1 -1
- package/src/sap/fe/templates/.library +1 -1
- package/src/sap/fe/templates/AnalyticalListPage/manifest.json +1 -1
- package/src/sap/fe/templates/ListReport/ListReportController.controller.js +9 -34
- package/src/sap/fe/templates/ListReport/ListReportController.controller.ts +7 -32
- package/src/sap/fe/templates/ListReport/controls/MultipleModeControl.js +22 -19
- package/src/sap/fe/templates/ListReport/controls/MultipleModeControl.ts +23 -20
- package/src/sap/fe/templates/ListReport/manifest.json +1 -1
- package/src/sap/fe/templates/ListReport/overrides/ViewState.js +2 -3
- package/src/sap/fe/templates/ListReport/overrides/ViewState.ts +1 -2
- package/src/sap/fe/templates/ListReport/view/fragments/CollectionVisualization.fragment.xml +32 -0
- package/src/sap/fe/templates/ListReport/view/fragments/MacroChart.fragment.xml +1 -0
- package/src/sap/fe/templates/ListReport/view/fragments/Table.fragment.xml +3 -1
- package/src/sap/fe/templates/ObjectPage/ExtensionAPI.js +73 -2
- package/src/sap/fe/templates/ObjectPage/ExtensionAPI.ts +80 -0
- package/src/sap/fe/templates/ObjectPage/ObjectPage.view.xml +1 -0
- package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js +26 -30
- package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.ts +27 -38
- package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.js +2 -71
- package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.ts +0 -74
- package/src/sap/fe/templates/ObjectPage/card/actions/HeaderActions.js +6 -7
- package/src/sap/fe/templates/ObjectPage/card/actions/HeaderActions.ts +5 -6
- package/src/sap/fe/templates/ObjectPage/components/DraftToggle.js +75 -8
- package/src/sap/fe/templates/ObjectPage/components/DraftToggle.tsx +83 -13
- package/src/sap/fe/templates/ObjectPage/designtime/ObjectPage.designtime.helper.js +22 -3
- package/src/sap/fe/templates/ObjectPage/designtime/ObjectPage.designtime.helper.ts +30 -1
- package/src/sap/fe/templates/ObjectPage/designtime/ObjectPage.designtime.js +5 -2
- package/src/sap/fe/templates/ObjectPage/designtime/ObjectPage.designtime.ts +7 -0
- package/src/sap/fe/templates/ObjectPage/manifest.json +5 -5
- package/src/sap/fe/templates/ObjectPage/overrides/CollaborationManager.js +2 -1
- package/src/sap/fe/templates/ObjectPage/overrides/CollaborationManager.ts +1 -0
- package/src/sap/fe/templates/ObjectPage/view/fragments/ExpandedHeading.fragment.xml +45 -7
- package/src/sap/fe/templates/ObjectPage/view/fragments/HeaderContent.fragment.xml +8 -13
- package/src/sap/fe/templates/ObjectPage/view/fragments/Heading.fragment.xml +36 -6
- package/src/sap/fe/templates/ObjectPage/view/fragments/ObjectPageHeaderAddress.fragment.xml +1 -1
- package/src/sap/fe/templates/ObjectPage/view/fragments/ObjectPageHeaderContact.fragment.xml +1 -1
- package/src/sap/fe/templates/ObjectPage/view/fragments/ObjectPageHeaderForm.fragment.xml +0 -1
- package/src/sap/fe/templates/ObjectPage/view/fragments/SectionContent.fragment.xml +81 -38
- package/src/sap/fe/templates/ObjectPage/view/fragments/SectionCustomSection.fragment.xml +6 -1
- package/src/sap/fe/templates/ObjectPage/view/fragments/Table.fragment.xml +3 -1
- package/src/sap/fe/templates/library.js +1 -1
- package/src/sap/fe/templates/messagebundle.properties +18 -6
- package/src/sap/fe/templates/messagebundle_ar.properties +14 -0
- package/src/sap/fe/templates/messagebundle_bg.properties +14 -0
- package/src/sap/fe/templates/messagebundle_ca.properties +14 -0
- package/src/sap/fe/templates/messagebundle_cnr.properties +15 -1
- package/src/sap/fe/templates/messagebundle_cs.properties +14 -0
- package/src/sap/fe/templates/messagebundle_cy.properties +14 -0
- package/src/sap/fe/templates/messagebundle_da.properties +14 -0
- package/src/sap/fe/templates/messagebundle_de.properties +14 -0
- package/src/sap/fe/templates/messagebundle_el.properties +14 -0
- package/src/sap/fe/templates/messagebundle_en.properties +14 -0
- package/src/sap/fe/templates/messagebundle_en_GB.properties +14 -0
- package/src/sap/fe/templates/messagebundle_en_US_saprigi.properties +11 -3
- package/src/sap/fe/templates/messagebundle_es.properties +14 -0
- package/src/sap/fe/templates/messagebundle_es_MX.properties +14 -0
- package/src/sap/fe/templates/messagebundle_et.properties +14 -0
- package/src/sap/fe/templates/messagebundle_fi.properties +14 -0
- package/src/sap/fe/templates/messagebundle_fr.properties +14 -0
- package/src/sap/fe/templates/messagebundle_fr_CA.properties +14 -0
- package/src/sap/fe/templates/messagebundle_hi.properties +14 -0
- package/src/sap/fe/templates/messagebundle_hr.properties +14 -0
- package/src/sap/fe/templates/messagebundle_hu.properties +14 -0
- package/src/sap/fe/templates/messagebundle_id.properties +14 -0
- package/src/sap/fe/templates/messagebundle_it.properties +14 -0
- package/src/sap/fe/templates/messagebundle_iw.properties +15 -1
- package/src/sap/fe/templates/messagebundle_ja.properties +15 -1
- package/src/sap/fe/templates/messagebundle_kk.properties +14 -0
- package/src/sap/fe/templates/messagebundle_ko.properties +14 -0
- package/src/sap/fe/templates/messagebundle_lt.properties +16 -2
- package/src/sap/fe/templates/messagebundle_lv.properties +14 -0
- package/src/sap/fe/templates/messagebundle_mk.properties +14 -0
- package/src/sap/fe/templates/messagebundle_ms.properties +14 -0
- package/src/sap/fe/templates/messagebundle_nl.properties +14 -0
- package/src/sap/fe/templates/messagebundle_no.properties +14 -0
- package/src/sap/fe/templates/messagebundle_pl.properties +14 -0
- package/src/sap/fe/templates/messagebundle_pt.properties +14 -0
- package/src/sap/fe/templates/messagebundle_pt_PT.properties +14 -0
- package/src/sap/fe/templates/messagebundle_ro.properties +14 -0
- package/src/sap/fe/templates/messagebundle_ru.properties +14 -0
- package/src/sap/fe/templates/messagebundle_sh.properties +15 -1
- package/src/sap/fe/templates/messagebundle_sk.properties +14 -0
- package/src/sap/fe/templates/messagebundle_sl.properties +17 -3
- package/src/sap/fe/templates/messagebundle_sr.properties +15 -1
- package/src/sap/fe/templates/messagebundle_sv.properties +14 -0
- package/src/sap/fe/templates/messagebundle_th.properties +14 -0
- package/src/sap/fe/templates/messagebundle_tr.properties +14 -0
- package/src/sap/fe/templates/messagebundle_uk.properties +14 -0
- package/src/sap/fe/templates/messagebundle_vi.properties +16 -2
- package/src/sap/fe/templates/messagebundle_zh_CN.properties +14 -0
- package/src/sap/fe/templates/messagebundle_zh_TW.properties +14 -0
|
@@ -204,80 +204,6 @@ export const checkDraftState = function (entitySet: EntitySet): boolean {
|
|
|
204
204
|
}
|
|
205
205
|
};
|
|
206
206
|
|
|
207
|
-
/**
|
|
208
|
-
* Function to check if the entitySet is a draft root that supports collaboration.
|
|
209
|
-
* @param entitySet The current entity set.
|
|
210
|
-
* @returns Returns the Boolean value based on draft state
|
|
211
|
-
*/
|
|
212
|
-
export const checkCollaborationDraftRoot = function (entitySet: EntitySet): boolean {
|
|
213
|
-
if (entitySet.annotations?.Common?.DraftRoot?.ShareAction) {
|
|
214
|
-
return true;
|
|
215
|
-
} else {
|
|
216
|
-
return false;
|
|
217
|
-
}
|
|
218
|
-
};
|
|
219
|
-
|
|
220
|
-
/**
|
|
221
|
-
* Function to get the visibility for the SwitchToActive button in the object page or subobject page.
|
|
222
|
-
* @param entitySet The current entity set.
|
|
223
|
-
* @returns Returns expression binding or Boolean value based on the draft state
|
|
224
|
-
*/
|
|
225
|
-
export const getSwitchToActiveVisibility = function (entitySet: EntitySet): CompiledBindingToolkitExpression | boolean {
|
|
226
|
-
if (checkDraftState(entitySet)) {
|
|
227
|
-
if (checkCollaborationDraftRoot(entitySet)) {
|
|
228
|
-
return compileExpression(and(pathInModel("HasActiveEntity"), UI.IsEditable));
|
|
229
|
-
} else {
|
|
230
|
-
return compileExpression(
|
|
231
|
-
and(equal(pathInModel("DraftAdministrativeData/DraftIsCreatedByMe"), true), UI.IsEditable, not(UI.IsCreateMode))
|
|
232
|
-
);
|
|
233
|
-
}
|
|
234
|
-
} else {
|
|
235
|
-
return false;
|
|
236
|
-
}
|
|
237
|
-
};
|
|
238
|
-
|
|
239
|
-
/**
|
|
240
|
-
* Function to get the visibility for the SwitchToDraft button in the object page or subobject page.
|
|
241
|
-
* @param entitySet The current entity set.
|
|
242
|
-
* @returns Returns expression binding or Boolean value based on the draft state
|
|
243
|
-
*/
|
|
244
|
-
export const getSwitchToDraftVisibility = function (entitySet: EntitySet): CompiledBindingToolkitExpression | boolean {
|
|
245
|
-
if (checkDraftState(entitySet)) {
|
|
246
|
-
if (checkCollaborationDraftRoot(entitySet)) {
|
|
247
|
-
return compileExpression(and(pathInModel("HasDraftEntity"), not(UI.IsEditable)));
|
|
248
|
-
} else {
|
|
249
|
-
return compileExpression(
|
|
250
|
-
and(
|
|
251
|
-
equal(pathInModel("DraftAdministrativeData/DraftIsCreatedByMe"), true),
|
|
252
|
-
not(UI.IsEditable),
|
|
253
|
-
not(UI.IsCreateMode),
|
|
254
|
-
pathInModel("HasDraftEntity")
|
|
255
|
-
)
|
|
256
|
-
);
|
|
257
|
-
}
|
|
258
|
-
} else {
|
|
259
|
-
return false;
|
|
260
|
-
}
|
|
261
|
-
};
|
|
262
|
-
|
|
263
|
-
/**
|
|
264
|
-
* Function to get the visibility for the SwitchDraftAndActive button in the object page or subobject page.
|
|
265
|
-
* @param entitySet The current entity set.
|
|
266
|
-
* @returns Returns expression binding or Boolean value based on the draft state
|
|
267
|
-
*/
|
|
268
|
-
export const getSwitchDraftAndActiveVisibility = function (entitySet: EntitySet): CompiledBindingToolkitExpression | boolean {
|
|
269
|
-
if (checkDraftState(entitySet)) {
|
|
270
|
-
if (checkCollaborationDraftRoot(entitySet)) {
|
|
271
|
-
// somehow checking hasDraftEntity and hasActiveEntity does not work, so we check IsActiveEntity first
|
|
272
|
-
return compileExpression(ifElse(pathInModel("IsActiveEntity"), pathInModel("HasDraftEntity"), pathInModel("HasActiveEntity")));
|
|
273
|
-
} else {
|
|
274
|
-
return compileExpression(and(equal(pathInModel("DraftAdministrativeData/DraftIsCreatedByMe"), true), not(UI.IsCreateMode)));
|
|
275
|
-
}
|
|
276
|
-
} else {
|
|
277
|
-
return false;
|
|
278
|
-
}
|
|
279
|
-
};
|
|
280
|
-
|
|
281
207
|
/**
|
|
282
208
|
* Function to find an action from the array of header actions in the converter context.
|
|
283
209
|
* @param aConverterContextHeaderActions Array of 'header' actions on the object page.
|
|
@@ -9,7 +9,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/converters/helpers/ConfigurableObjec
|
|
|
9
9
|
var isVisible = UIFormatters.isVisible;
|
|
10
10
|
var getActionEnabledExpression = UIFormatters.getActionEnabledExpression;
|
|
11
11
|
var isMultiLineText = PropertyHelper.isMultiLineText;
|
|
12
|
-
var
|
|
12
|
+
var isRequiredExpression = FieldControlHelper.isRequiredExpression;
|
|
13
13
|
var getIsActionCriticalExpression = ActionHelper.getIsActionCriticalExpression;
|
|
14
14
|
var getStableIdPartFromDataField = StableIdHelper.getStableIdPartFromDataField;
|
|
15
15
|
var insertCustomElements = ConfigurableObject.insertCustomElements;
|
|
@@ -115,7 +115,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/converters/helpers/ConfigurableObjec
|
|
|
115
115
|
type: ACInput.Date,
|
|
116
116
|
id: parameter.name,
|
|
117
117
|
label: labelTerm?.toString() ?? parameter.name,
|
|
118
|
-
isRequired: this.getRequired(parameter
|
|
118
|
+
isRequired: this.getRequired(parameter) ?? undefined
|
|
119
119
|
};
|
|
120
120
|
elements.push(inputElement);
|
|
121
121
|
} else {
|
|
@@ -123,7 +123,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/converters/helpers/ConfigurableObjec
|
|
|
123
123
|
type: ACInput.Text,
|
|
124
124
|
id: parameter.name,
|
|
125
125
|
label: labelTerm?.toString() ?? parameter.name,
|
|
126
|
-
isRequired: this.getRequired(parameter
|
|
126
|
+
isRequired: this.getRequired(parameter) ?? undefined,
|
|
127
127
|
isMultiline: isMultiLineText(parameter) ?? undefined
|
|
128
128
|
};
|
|
129
129
|
elements.push(inputElement);
|
|
@@ -469,11 +469,10 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/converters/helpers/ConfigurableObjec
|
|
|
469
469
|
/**
|
|
470
470
|
* Check if parameter input is required for action execution.
|
|
471
471
|
* @param parameter Action parameter.
|
|
472
|
-
* @param actionTarget
|
|
473
472
|
* @returns Boolean
|
|
474
473
|
*/;
|
|
475
|
-
_proto.getRequired = function getRequired(parameter
|
|
476
|
-
const fieldControlExpression =
|
|
474
|
+
_proto.getRequired = function getRequired(parameter) {
|
|
475
|
+
const fieldControlExpression = isRequiredExpression(parameter);
|
|
477
476
|
return this.updatePathsAndGetCompiledExpression(fieldControlExpression);
|
|
478
477
|
};
|
|
479
478
|
return HeaderActions;
|
|
@@ -481,4 +480,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/converters/helpers/ConfigurableObjec
|
|
|
481
480
|
_exports = HeaderActions;
|
|
482
481
|
return _exports;
|
|
483
482
|
}, false);
|
|
484
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBQ1N0eWxlIiwiX2V4cG9ydHMiLCJBQ0FjdGlvbiIsIkFDSW5wdXQiLCJBQ1RJT05fT0siLCJIZWFkZXJBY3Rpb25zIiwiX0Jhc2VDYXJkQ29udGVudFByb3ZpIiwiY29udmVydGVkVHlwZXMiLCJjb25maWciLCJfdGhpcyIsImNhbGwiLCJhY3Rpb25zIiwiY29udGV4dEluZm8iLCJnZXRDYXJkQ29uZmlndXJhdGlvbkJ5S2V5IiwiY29udGV4dFBhdGgiLCJlbnRpdHlUeXBlIiwiZ2V0RW50aXR5VHlwZSIsIkxvZyIsImVycm9yIiwiX2Fzc2VydFRoaXNJbml0aWFsaXplZCIsImdldEFubm90YXRlZEhlYWRlckFjdGlvbnMiLCJsZW5ndGgiLCJjb25maWd1cmVkQWN0aW9ucyIsImdldENvbmZpZ3VyZWRBY3Rpb25zIiwicmVkdWNlIiwiZ2V0QWN0aW9uSW5BZGFwdGl2ZUNhcmRGb3JtYXQiLCJiaW5kIiwiZXJyIiwibWVzc2FnZSIsIkVycm9yIiwiU3RyaW5nIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJnZXRDYXJkQWN0aW9ucyIsImdldEFkYXB0aXZlQ2FyZEFjdGlvblR5cGUiLCJlZG1BY3Rpb24iLCJpc0JvdW5kIiwiaXNGdW5jdGlvbiIsInBhcmFtZXRlcnMiLCJuZWVkVXNlcklucHV0UGFyYW1ldGVycyIsIlNob3dDYXJkIiwiRXhlY3V0ZSIsImdldEFjdGlvbkNhcmRCb2R5V2l0aFBhcmFtZXRlckZpZWxkcyIsImFjdGlvblRhcmdldCIsImVsZW1lbnRzIiwicGFyYW1ldGVyIiwiaW5kZXgiLCJpbnB1dEVsZW1lbnQiLCJsYWJlbFRlcm0iLCJhbm5vdGF0aW9ucyIsIkNvbW1vbiIsIkxhYmVsIiwidHlwZSIsIkRhdGUiLCJpZCIsIm5hbWUiLCJsYWJlbCIsInRvU3RyaW5nIiwiaXNSZXF1aXJlZCIsImdldFJlcXVpcmVkIiwidW5kZWZpbmVkIiwicHVzaCIsIlRleHQiLCJpc011bHRpbGluZSIsImlzTXVsdGlMaW5lVGV4dCIsImdldEFjdGlvbldpdGhQYXJhbWV0ZXJzIiwiYWN0aW9uRGV0YWlscyIsImJvZHkiLCJ2ZXJiIiwidGl0bGUiLCJzdHlsZSIsImRhdGEiLCJhY3Rpb25XaXRoUGFyYW1ldGVycyIsIlBvc2l0aXZlIiwiY2FyZCIsImdldEFjdGlvbiIsImRhdGFGaWVsZEZvckFjdGlvbiIsIkFjdGlvblRhcmdldCIsImdldEFjdGlvbkRldGFpbHMiLCJhY3Rpb25UeXBlIiwicmV0QWN0aW9uIiwiZ2V0QWN0aW9uRGF0YSIsImJpbmRpbmdDb250ZXh0UGF0aCIsImJpbmRpbmdDb250ZXh0UGF0aFJlbGF0aXZlVG9TZXJ2aWNlIiwic3RhcnRzV2l0aCIsInN1YnN0cmluZyIsInNlcnZpY2VVUkkiLCJjb250ZXh0VVJMIiwiaXNDb25maXJtYXRpb25SZXF1aXJlZCIsImdldElzQ3JpdGljYWxGb3JBZGFwdGl2ZUNhcmRBY3Rpb24iLCJhY3Rpb25Ub1RyaWdnZXIiLCJBY3Rpb24iLCJyZXBsYWNlIiwiZ2V0QWN0aW9uU3R5bGUiLCJhZGFwdGl2ZUNhcmRBY3Rpb25zIiwiYWN0aW9uRWxlbWVudCIsImFjdGlvbiIsInRpdGxlT3ZlcnJpZGUiLCJpc0FjdGlvblZpc2libGUiLCJpc1Zpc2libGUiLCJnZXRWaXNpYmxlRm9yQWRhcHRpdmVDYXJkQWN0aW9uIiwiaXNFbmFibGVkIiwiZ2V0RW5hYmxlZEZvckFkYXB0aXZlQ2FyZEFjdGlvbiIsIndoZW5WYWx1ZSIsInRlc3QiLCJpc1N0YXRpY0FjdGlvbiIsImlzQ29weUFjdGlvbiIsInZpc3VhbFVwZGF0ZXMiLCIkd2hlbiIsImlkZW50aWZpY2F0aW9uQW5ub3RhdGlvbiIsIlVJIiwiSWRlbnRpZmljYXRpb24iLCJmaWx0ZXIiLCJkYXRhRmllbGQiLCIkVHlwZSIsIkRldGVybWluaW5nIiwiYW5ub3RhdGVkQWN0aW9ucyIsImFjdGlvbkNvbmZpZ3MiLCJhbm5vdGF0ZWRBY3Rpb25FbGVtZW50cyIsIm1hcCIsImtleSIsImdldFN0YWJsZUlkUGFydEZyb21EYXRhRmllbGQiLCJPYmplY3QiLCJrZXlzIiwiY3VzdG9tQ29uZmlnQWN0aW9uTmFtZXMiLCJjdXN0b21BY3Rpb25Db25maWdFbGVtZW50cyIsImN1c3RvbUFjdGlvbkVsZW1lbnRzIiwiY3VzdG9tQ29uZmlnQWN0aW9uS2V5IiwicmVsZXZhbnRBY3Rpb25FbGVtZW50IiwiZmluZCIsInBvc2l0aW9uIiwicGxhY2VtZW50IiwiUGxhY2VtZW50IiwiQWZ0ZXIiLCJhY3Rpb25PdmVyd3JpdGVDb25maWciLCJPdmVycmlkZVR5cGUiLCJvdmVyd3JpdGUiLCJpbnNlcnRDdXN0b21FbGVtZW50cyIsInZpc2liaWxpdHlFeHAiLCJ1cGRhdGVQYXRoc0FuZEdldENvbXBpbGVkRXhwcmVzc2lvbiIsIkRlZmF1bHQiLCJjcml0aWNhbGl0eSIsIkNyaXRpY2FsaXR5IiwiRGVzdHJ1Y3RpdmUiLCJpc0FjdGlvbkNyaXRpY2FsIiwiZ2V0SXNBY3Rpb25Dcml0aWNhbEV4cHJlc3Npb24iLCJlbmFibGVkRXhwcmVzc2lvbiIsImdldEFjdGlvbkVuYWJsZWRFeHByZXNzaW9uIiwiaXNDb2xsZWN0aW9uIiwiSXNDb3B5QWN0aW9uIiwidmFsdWVPZiIsImZpZWxkQ29udHJvbEV4cHJlc3Npb24iLCJpc0FjdGlvblBhcmFtZXRlclJlcXVpcmVkRXhwcmVzc2lvbiIsIkJhc2VDYXJkQ29udGVudFByb3ZpZGVyIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJIZWFkZXJBY3Rpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQWN0aW9uLCBBY3Rpb25QYXJhbWV0ZXIsIENvbnZlcnRlZE1ldGFkYXRhLCBFbnRpdHlUeXBlIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgeyBVSUFubm90YXRpb25UeXBlcywgdHlwZSBEYXRhRmllbGRGb3JBY3Rpb24gfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB7XG5cdE92ZXJyaWRlVHlwZSxcblx0UGxhY2VtZW50LFxuXHRpbnNlcnRDdXN0b21FbGVtZW50cyxcblx0dHlwZSBDb25maWd1cmFibGVPYmplY3RLZXksXG5cdHR5cGUgQ3VzdG9tRWxlbWVudCxcblx0dHlwZSBQb3NpdGlvbmFibGVcbn0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9Db25maWd1cmFibGVPYmplY3RcIjtcbmltcG9ydCB0eXBlIHsgQ29tcGlsZWRBZGFwdGl2ZUNhcmRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQWRhcHRpdmVDYXJkRXhwcmVzc2lvbkNvbXBpbGVyXCI7XG5pbXBvcnQgeyBnZXRTdGFibGVJZFBhcnRGcm9tRGF0YUZpZWxkIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCB7IGdldElzQWN0aW9uQ3JpdGljYWxFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvQWN0aW9uSGVscGVyXCI7XG5pbXBvcnQgeyBpc0FjdGlvblBhcmFtZXRlclJlcXVpcmVkRXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0ZpZWxkQ29udHJvbEhlbHBlclwiO1xuaW1wb3J0IHsgaXNNdWx0aUxpbmVUZXh0IH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvUHJvcGVydHlIZWxwZXJcIjtcbmltcG9ydCB7IGdldEFjdGlvbkVuYWJsZWRFeHByZXNzaW9uLCBpc1Zpc2libGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9VSUZvcm1hdHRlcnNcIjtcbmltcG9ydCBCYXNlQ2FyZENvbnRlbnRQcm92aWRlciwgeyB0eXBlIENhcmRDb25maWcgfSBmcm9tIFwic2FwL2ZlL3RlbXBsYXRlcy9PYmplY3RQYWdlL2NhcmQvQmFzZUNhcmRDb250ZW50UHJvdmlkZXJcIjtcbmltcG9ydCB0eXBlIHsgQWN0aW9uRGF0YSwgQ2FyZEVsZW1lbnQsIElBQ0FjdGlvbiwgSUlucHV0RGF0ZSwgSUlucHV0VGV4dCB9IGZyb20gXCJ0eXBlcy9hZGFwdGl2ZUNhcmRfdHlwZXNcIjtcblxuZXhwb3J0IHR5cGUgQWN0aW9uQ29uZmlnID0gUG9zaXRpb25hYmxlICYge1xuXHR0aXRsZT86IHN0cmluZztcblx0aXNWaXNpYmxlPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEN1c3RvbUFjdGlvbkNvbmZpZ3MgPSBSZWNvcmQ8Q29uZmlndXJhYmxlT2JqZWN0S2V5LCBBY3Rpb25Db25maWc+O1xuXG5leHBvcnQgdHlwZSBBY3Rpb25Db25maWd1cmFibGUgPSB7XG5cdGFjdGlvbnM/OiBDdXN0b21BY3Rpb25Db25maWdzO1xufTtcblxuZXhwb3J0IHR5cGUgSGVhZGVyQWN0aW9uc0NvbmZpZyA9IEFjdGlvbkNvbmZpZ3VyYWJsZSAmIENhcmRDb25maWc7XG5cbnR5cGUgQWN0aW9uQ29uZmlnRWxlbWVudCA9IFBvc2l0aW9uYWJsZSAmXG5cdEFjdGlvbkNvbmZpZyAmIHtcblx0XHRrZXk6IENvbmZpZ3VyYWJsZU9iamVjdEtleTtcblx0XHRhY3Rpb246IERhdGFGaWVsZEZvckFjdGlvbjtcblx0fTtcblxudHlwZSBJbnRlcm5hbEN1c3RvbUFjdGlvbkVsZW1lbnRzID0gUmVjb3JkPENvbmZpZ3VyYWJsZU9iamVjdEtleSwgQ3VzdG9tRWxlbWVudDxBY3Rpb25Db25maWdFbGVtZW50Pj47XG5cbmV4cG9ydCBlbnVtIEFDU3R5bGUge1xuXHREZWZhdWx0ID0gXCJkZWZhdWx0XCIsXG5cdFBvc2l0aXZlID0gXCJwb3NpdGl2ZVwiLFxuXHREZXN0cnVjdGl2ZSA9IFwiZGVzdHJ1Y3RpdmVcIlxufVxuXG5leHBvcnQgZW51bSBBQ0FjdGlvbiB7XG5cdEV4ZWN1dGUgPSBcIkFjdGlvbi5FeGVjdXRlXCIsXG5cdFNob3dDYXJkID0gXCJBY3Rpb24uU2hvd0NhcmRcIlxufVxuXG5leHBvcnQgZW51bSBBQ0lucHV0IHtcblx0VGV4dCA9IFwiSW5wdXQuVGV4dFwiLFxuXHRDaG9pY2VTZXQgPSBcIklucHV0LkNob2ljZVNldFwiLFxuXHREYXRlID0gXCJJbnB1dC5EYXRlXCJcbn1cblxuY29uc3QgQUNUSU9OX09LID0gXCJPS1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBIZWFkZXJBY3Rpb25zIGV4dGVuZHMgQmFzZUNhcmRDb250ZW50UHJvdmlkZXI8SGVhZGVyQWN0aW9uc0NvbmZpZz4ge1xuXHRwcml2YXRlIGFjdGlvbnM6IElBQ0FjdGlvbltdID0gW107XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgY2FyZCBhY3Rpb25zLlxuXHQgKiBAcmV0dXJucyBDYXJkIGFjdGlvbnMuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0Q2FyZEFjdGlvbnMoKTogSUFDQWN0aW9uW10ge1xuXHRcdHJldHVybiB0aGlzLmFjdGlvbnM7XG5cdH1cblxuXHRjb25zdHJ1Y3Rvcihjb252ZXJ0ZWRUeXBlczogQ29udmVydGVkTWV0YWRhdGEsIGNvbmZpZzogSGVhZGVyQWN0aW9uc0NvbmZpZykge1xuXHRcdHN1cGVyKGNvbnZlcnRlZFR5cGVzLCBjb25maWcpO1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBjb250ZXh0SW5mbyA9IHRoaXMuZ2V0Q2FyZENvbmZpZ3VyYXRpb25CeUtleShcImNvbnRleHRJbmZvXCIpO1xuXHRcdFx0Y29uc3QgeyBjb250ZXh0UGF0aCB9ID0gY29udGV4dEluZm87XG5cdFx0XHRjb25zdCBlbnRpdHlUeXBlID0gdGhpcy5nZXRFbnRpdHlUeXBlKCk7XG5cdFx0XHRpZiAoIWVudGl0eVR5cGUpIHtcblx0XHRcdFx0TG9nLmVycm9yKGBGRSA6IFY0IDogQWRhcHRpdmUgQ2FyZCBoZWFkZXIgYWN0aW9ucyA6IG5vIEVudGl0eVR5cGUgZm91bmQgYXQgY29udGV4dCBwYXRoOiAke2NvbnRleHRQYXRofWApO1xuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgYWN0aW9ucyA9IHRoaXMuZ2V0QW5ub3RhdGVkSGVhZGVyQWN0aW9ucyhlbnRpdHlUeXBlKTtcblx0XHRcdGlmIChhY3Rpb25zLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0Y29uc3QgY29uZmlndXJlZEFjdGlvbnMgPSB0aGlzLmdldENvbmZpZ3VyZWRBY3Rpb25zKGFjdGlvbnMpO1xuXHRcdFx0XHR0aGlzLmFjdGlvbnMgPSBjb25maWd1cmVkQWN0aW9ucy5yZWR1Y2UodGhpcy5nZXRBY3Rpb25JbkFkYXB0aXZlQ2FyZEZvcm1hdC5iaW5kKHRoaXMpLCBbXSBhcyBJQUNBY3Rpb25bXSk7XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZXJyOiB1bmtub3duKSB7XG5cdFx0XHRjb25zdCBtZXNzYWdlID0gZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IFN0cmluZyhlcnIpO1xuXHRcdFx0TG9nLmVycm9yKFwiRXJyb3Igd2hpbGUgY3JlYXRpbmcgdGhlIGNhcmQgZGVmaW50aW9uXCIsIG1lc3NhZ2UpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgYWN0aW9uIHR5cGUgYmFzZWQgb24gdGhlIG5lZWQgZm9yIHVzZXIgaW5wdXRzIGZvciBhY3Rpb24gcGFyYW1ldGVycy5cblx0ICogQHBhcmFtIGVkbUFjdGlvbiBDb252ZXJ0ZWQgbWV0YWRhdGEgYWN0aW9uLlxuXHQgKiBAcmV0dXJucyBBY3Rpb24gdHlwZSB0byB1c2Vcblx0ICovXG5cdHByaXZhdGUgZ2V0QWRhcHRpdmVDYXJkQWN0aW9uVHlwZShlZG1BY3Rpb246IEFjdGlvbik6IEFDQWN0aW9uIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCB7IGlzQm91bmQsIGlzRnVuY3Rpb24sIHBhcmFtZXRlcnMgfSA9IGVkbUFjdGlvbjtcblx0XHRpZiAoaXNGdW5jdGlvbikge1xuXHRcdFx0Ly8gZnVuY3Rpb25zIGFyZSBpZ25vcmVkXG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IG5lZWRVc2VySW5wdXRQYXJhbWV0ZXJzID0gcGFyYW1ldGVycy5sZW5ndGggPiAoaXNCb3VuZCA/IDEgOiAwKTtcblxuXHRcdHJldHVybiBuZWVkVXNlcklucHV0UGFyYW1ldGVycyA/IEFDQWN0aW9uLlNob3dDYXJkIDogQUNBY3Rpb24uRXhlY3V0ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgQWN0aW9uIHBhcmFtZXRlciBlbGVtZW50cyB0byBhZGQgdG8gdGhlIGFjdGlvbiBjYXJkIGJvZHkuXG5cdCAqIEBwYXJhbSBhY3Rpb25UYXJnZXQgQ29udmVydGVkIG1ldGFkYXRhIGFjdGlvbi5cblx0ICogQHJldHVybnMgSW5wdXQgZWxlbWVudHMgZm9yIGFjdGlvbiBwYXJhbWV0ZXJzXG5cdCAqL1xuXHRwcml2YXRlIGdldEFjdGlvbkNhcmRCb2R5V2l0aFBhcmFtZXRlckZpZWxkcyhhY3Rpb25UYXJnZXQ6IEFjdGlvbik6IENhcmRFbGVtZW50W10ge1xuXHRcdGNvbnN0IHsgaXNCb3VuZCB9ID0gYWN0aW9uVGFyZ2V0O1xuXHRcdHJldHVybiBhY3Rpb25UYXJnZXQucGFyYW1ldGVycy5yZWR1Y2UoKGVsZW1lbnRzLCBwYXJhbWV0ZXIsIGluZGV4KSA9PiB7XG5cdFx0XHRpZiAoaXNCb3VuZCAmJiBpbmRleCA9PT0gMCkge1xuXHRcdFx0XHRyZXR1cm4gZWxlbWVudHM7XG5cdFx0XHR9XG5cdFx0XHRsZXQgaW5wdXRFbGVtZW50OiBJSW5wdXRUZXh0IHwgSUlucHV0RGF0ZTtcblx0XHRcdGNvbnN0IGxhYmVsVGVybSA9IHBhcmFtZXRlci5hbm5vdGF0aW9ucy5Db21tb24/LkxhYmVsO1xuXHRcdFx0aWYgKHBhcmFtZXRlci50eXBlID09PSBcIkVkbS5EYXRlXCIgfHwgcGFyYW1ldGVyLnR5cGUgPT09IFwiRWRtLkRhdGVUaW1lT2Zmc2V0XCIgfHwgcGFyYW1ldGVyLnR5cGUgPT09IFwiRWRtLkRhdGVUaW1lXCIpIHtcblx0XHRcdFx0aW5wdXRFbGVtZW50ID0ge1xuXHRcdFx0XHRcdHR5cGU6IEFDSW5wdXQuRGF0ZSxcblx0XHRcdFx0XHRpZDogcGFyYW1ldGVyLm5hbWUsXG5cdFx0XHRcdFx0bGFiZWw6IGxhYmVsVGVybT8udG9TdHJpbmcoKSA/PyBwYXJhbWV0ZXIubmFtZSxcblx0XHRcdFx0XHRpc1JlcXVpcmVkOiB0aGlzLmdldFJlcXVpcmVkKHBhcmFtZXRlciwgYWN0aW9uVGFyZ2V0KSA/PyB1bmRlZmluZWRcblx0XHRcdFx0fTtcblx0XHRcdFx0ZWxlbWVudHMucHVzaChpbnB1dEVsZW1lbnQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aW5wdXRFbGVtZW50ID0ge1xuXHRcdFx0XHRcdHR5cGU6IEFDSW5wdXQuVGV4dCxcblx0XHRcdFx0XHRpZDogcGFyYW1ldGVyLm5hbWUsXG5cdFx0XHRcdFx0bGFiZWw6IGxhYmVsVGVybT8udG9TdHJpbmcoKSA/PyBwYXJhbWV0ZXIubmFtZSxcblx0XHRcdFx0XHRpc1JlcXVpcmVkOiB0aGlzLmdldFJlcXVpcmVkKHBhcmFtZXRlciwgYWN0aW9uVGFyZ2V0KSA/PyB1bmRlZmluZWQsXG5cdFx0XHRcdFx0aXNNdWx0aWxpbmU6IGlzTXVsdGlMaW5lVGV4dChwYXJhbWV0ZXIpID8/IHVuZGVmaW5lZFxuXHRcdFx0XHR9O1xuXHRcdFx0XHRlbGVtZW50cy5wdXNoKGlucHV0RWxlbWVudCk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZWxlbWVudHM7XG5cdFx0fSwgW10gYXMgQ2FyZEVsZW1lbnRbXSk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IGFjdGlvbiBvYmplY3Qgd2l0aCBwYXJhbWV0ZXIgZWxlbWVudHMuXG5cdCAqIEBwYXJhbSBhY3Rpb25UYXJnZXQgQ29udmVydGVkIG1ldGFkYXRhIGFjdGlvbi5cblx0ICogQHBhcmFtIGFjdGlvbkRldGFpbHMgQWN0aW9uIHByb3BlcnRpZXMuXG5cdCAqIEByZXR1cm5zIEFjdGlvbiBvYmplY3Qgd2l0aCBwYXJhbWV0ZXJzLlxuXHQgKi9cblx0cHJpdmF0ZSBnZXRBY3Rpb25XaXRoUGFyYW1ldGVycyhhY3Rpb25UYXJnZXQ6IEFjdGlvbiwgYWN0aW9uRGV0YWlsczogUGFydGlhbDxJQUNBY3Rpb24+KTogSUFDQWN0aW9uIHtcblx0XHRjb25zdCBib2R5ID0gdGhpcy5nZXRBY3Rpb25DYXJkQm9keVdpdGhQYXJhbWV0ZXJGaWVsZHMoYWN0aW9uVGFyZ2V0KTtcblx0XHRjb25zdCB7IHZlcmIsIHRpdGxlLCBzdHlsZSwgZGF0YSB9ID0gYWN0aW9uRGV0YWlscztcblx0XHRjb25zdCBhY3Rpb25XaXRoUGFyYW1ldGVyczogSUFDQWN0aW9uID0ge1xuXHRcdFx0dHlwZTogQUNBY3Rpb24uRXhlY3V0ZSxcblx0XHRcdHZlcmIsXG5cdFx0XHRkYXRhLFxuXHRcdFx0dGl0bGU6IEFDVElPTl9PSyxcblx0XHRcdHN0eWxlOiBBQ1N0eWxlLlBvc2l0aXZlXG5cdFx0fTtcblxuXHRcdHJldHVybiB7XG5cdFx0XHR0eXBlOiBBQ0FjdGlvbi5TaG93Q2FyZCxcblx0XHRcdHRpdGxlLFxuXHRcdFx0c3R5bGUsXG5cdFx0XHRjYXJkOiB7XG5cdFx0XHRcdHR5cGU6IFwiQWRhcHRpdmVDYXJkXCIsXG5cdFx0XHRcdGJvZHksXG5cdFx0XHRcdGFjdGlvbnM6IFthY3Rpb25XaXRoUGFyYW1ldGVyc11cblx0XHRcdH1cblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCBhY3Rpb24gZm9yIGFkYXB0aXZlIGNhcmQuXG5cdCAqIEBwYXJhbSBkYXRhRmllbGRGb3JBY3Rpb24gRGF0YUZpZWxkRm9yQWN0aW9uIGFubm90YXRpb25cblx0ICogQHJldHVybnMgQWN0aW9uIHRvIGFkZC5cblx0ICovXG5cdHByaXZhdGUgZ2V0QWN0aW9uKGRhdGFGaWVsZEZvckFjdGlvbjogRGF0YUZpZWxkRm9yQWN0aW9uKTogSUFDQWN0aW9uIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCB7IEFjdGlvblRhcmdldDogYWN0aW9uVGFyZ2V0IH0gPSBkYXRhRmllbGRGb3JBY3Rpb247XG5cblx0XHRjb25zdCBhY3Rpb25EZXRhaWxzID0gdGhpcy5nZXRBY3Rpb25EZXRhaWxzKGRhdGFGaWVsZEZvckFjdGlvbik7XG5cdFx0aWYgKCFhY3Rpb25UYXJnZXQgfHwgIWFjdGlvbkRldGFpbHMpIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXG5cdFx0Y29uc3QgYWN0aW9uVHlwZSA9IHRoaXMuZ2V0QWRhcHRpdmVDYXJkQWN0aW9uVHlwZShhY3Rpb25UYXJnZXQpO1xuXG5cdFx0bGV0IHJldEFjdGlvbjogSUFDQWN0aW9uIHwgdW5kZWZpbmVkO1xuXHRcdGlmIChhY3Rpb25UeXBlID09PSBBQ0FjdGlvbi5FeGVjdXRlKSB7XG5cdFx0XHQvLyBBY3Rpb25zIHdpdGhvdXQgcGFyYW1ldGVyc1xuXHRcdFx0cmV0QWN0aW9uID0geyB0eXBlOiBhY3Rpb25UeXBlLCAuLi5hY3Rpb25EZXRhaWxzIH07XG5cdFx0fSBlbHNlIGlmIChhY3Rpb25UeXBlID09PSBBQ0FjdGlvbi5TaG93Q2FyZCkge1xuXHRcdFx0Ly8gQWN0aW9uIHdpdGggcGFyYW1ldGVyc1xuXHRcdFx0cmV0QWN0aW9uID0gdGhpcy5nZXRBY3Rpb25XaXRoUGFyYW1ldGVycyhhY3Rpb25UYXJnZXQsIGFjdGlvbkRldGFpbHMpO1xuXHRcdH1cblx0XHRyZXR1cm4gcmV0QWN0aW9uO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCBkYXRhIHRoYXQgbmVlZHMgdG8gYmUgcGFydCBvZiBhY3Rpb24uXG5cdCAqIEBwYXJhbSBhY3Rpb25UYXJnZXQgQ29udmVydGVkIG1ldGFkYXRhIGFjdGlvbi5cblx0ICogQHJldHVybnMgQWN0aW9uIGRhdGEgdGhhdCBuZWVkcyB0byBiZSBwYXNzZWQgd2l0aCB0aGUgYWN0aW9uLlxuXHQgKi9cblx0cHJpdmF0ZSBnZXRBY3Rpb25EYXRhKGFjdGlvblRhcmdldDogQWN0aW9uKTogQWN0aW9uRGF0YSB7XG5cdFx0Y29uc3QgeyBpc0JvdW5kIH0gPSBhY3Rpb25UYXJnZXQ7XG5cdFx0Y29uc3QgY29udGV4dEluZm8gPSB0aGlzLmdldENhcmRDb25maWd1cmF0aW9uQnlLZXkoXCJjb250ZXh0SW5mb1wiKTtcblx0XHRjb25zdCB7IGJpbmRpbmdDb250ZXh0UGF0aCB9ID0gY29udGV4dEluZm87XG5cdFx0Y29uc3QgYmluZGluZ0NvbnRleHRQYXRoUmVsYXRpdmVUb1NlcnZpY2UgPSBiaW5kaW5nQ29udGV4dFBhdGguc3RhcnRzV2l0aChcIi9cIilcblx0XHRcdD8gYmluZGluZ0NvbnRleHRQYXRoLnN1YnN0cmluZygxKVxuXHRcdFx0OiBiaW5kaW5nQ29udGV4dFBhdGg7XG5cdFx0Y29uc3Qgc2VydmljZVVSSSA9IHRoaXMuZ2V0Q2FyZENvbmZpZ3VyYXRpb25CeUtleShcInNlcnZpY2VVUklcIik7XG5cdFx0Y29uc3QgY29udGV4dFVSTCA9IGAke3NlcnZpY2VVUkl9JHtiaW5kaW5nQ29udGV4dFBhdGhSZWxhdGl2ZVRvU2VydmljZX1gO1xuXHRcdHJldHVybiB7XG5cdFx0XHRjb250ZXh0VVJMLFxuXHRcdFx0c2VydmljZVVSSTogaXNCb3VuZCA/IHVuZGVmaW5lZCA6IHNlcnZpY2VVUkksXG5cdFx0XHRpc0NvbmZpcm1hdGlvblJlcXVpcmVkOiB0aGlzLmdldElzQ3JpdGljYWxGb3JBZGFwdGl2ZUNhcmRBY3Rpb24oYWN0aW9uVGFyZ2V0KSA/PyB1bmRlZmluZWRcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCBhY3Rpb24gZm9yIGFkYXB0aXZlIGNhcmQuXG5cdCAqIEBwYXJhbSBkYXRhRmllbGRGb3JBY3Rpb24gRGF0YUZpZWxkRm9yQWN0aW9uIGFubm90YXRpb25cblx0ICogQHJldHVybnMgQWN0aW9uIHRvIGFkZC5cblx0ICovXG5cdHByaXZhdGUgZ2V0QWN0aW9uRGV0YWlscyhkYXRhRmllbGRGb3JBY3Rpb246IERhdGFGaWVsZEZvckFjdGlvbik6IFBhcnRpYWw8SUFDQWN0aW9uPiB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgeyBBY3Rpb25UYXJnZXQ6IGFjdGlvblRhcmdldCB9ID0gZGF0YUZpZWxkRm9yQWN0aW9uO1xuXHRcdGlmICghYWN0aW9uVGFyZ2V0KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gVmVyYiBjcmVhdGlvbiBmb3IgYWN0aW9uczpcblx0XHQvL1xuXHRcdC8vIDEuIEJvdW5kIGFjdGlvbjpcblx0XHQvLyAgICBWZXJiIG5lZWRzIHRvIGJlIHJlbGF0aXZlIHRvIGNvbnRleHRVUkwuIGZvcm1hdDogJzxtZXRhZGF0YSBuYW1lc3BhY2U+LjxhY3Rpb24gbmFtZT4nXG5cdFx0Ly8gICAgRXhhbXBsZTpcblx0XHQvLyAgICAgICAgTWV0YWRhdGEgbmFtZXNwYWNlOiAnY29tLmNfc29tX3NkJ1xuXHRcdC8vICAgICAgICBBY3Rpb24gbmFtZTogJ2JvdW5kQWN0aW9uJ1xuXHRcdC8vICAgICAgICBWZXJiOiAnY29tLmNfc29tX3NkLmJvdW5kQWN0aW9uJ1xuXHRcdC8vICAgICAgICBDb250ZXh0VVJMOiAvU09NKDEpXG5cdFx0Ly8gICAgICAgIFVSTCB0byB0cmlnZ2VyIFBPU1QgY2FsbCh0aGlzIHdpbGwgYmUgY3JlYXRlZCBieSB0aGUgQk9ULCA8c2VydmljZVVSSSArIGNvbnRleHRVUkwgKyB2ZXJiPik6ICdodHRwczovLzxzZXJ2aWNlVVJJPi9TT00oJzEnKS9jb20uY19zb21fc2QuYm91bmRBY3Rpb24nXG5cdFx0Ly9cblx0XHQvLyAyLiBVbmJvdW5kIGFjdGlvbjpcblx0XHQvLyAgICBWZXJiIG5lZWRzIHRvIGJlIHJlbGF0aXZlIHRvIHNlcnZpY2VVUkkuIGZvcm1hdDogJzxhY3Rpb24gbmFtZT4nXG5cdFx0Ly8gICAgRXhhbXBsZTpcblx0XHQvLyAgICAgICAgQWN0aW9uIG5hbWU6ICd1bmJvdW5kQWN0aW9uJ1xuXHRcdC8vICAgICAgICBWZXJiOiAndW5ib3VuZEFjdGlvbidcblx0XHQvLyAgICAgICAgQ29udGV4dFVSTDogdW5kZWZpbmVkXG5cdFx0Ly8gICAgICAgIFVSTCB0byB0cmlnZ2VyIFBPU1QgY2FsbCh0aGlzIHdpbGwgYmUgY3JlYXRlZCBieSB0aGUgQk9ULCA8c2VydmljZVVSSSArIHZlcmI+KTogJ2h0dHBzOi8vPHNlcnZpY2VVUkk+L3VuYm91bmRBY3Rpb24nXG5cdFx0Y29uc3QgYWN0aW9uVG9UcmlnZ2VyID0gYWN0aW9uVGFyZ2V0LmlzQm91bmQgPyBkYXRhRmllbGRGb3JBY3Rpb24uQWN0aW9uLnRvU3RyaW5nKCkgOiBhY3Rpb25UYXJnZXQubmFtZSxcblx0XHRcdC8vIFdlIHJlbW92ZSB0aGUgb3ZlcmxvYWQgcGFydCBmcm9tIHRoZSBhY3Rpb24uIGxpa2UgJ2NvbS5jX3NvbV9zZC5ib3VuZEFjdGlvbihjb20uY19zb21fc2QucmV0dXJuVHlwZSknLCB3ZSBuZWVkIG9ubHkgJ2NvbS5jX3NvbV9zZC5ib3VuZEFjdGlvbicgYXMgdmVyYi5cblx0XHRcdHZlcmIgPSBhY3Rpb25Ub1RyaWdnZXIucmVwbGFjZSgvXFwoKC4qKVxcKSQvLCBcIlwiKSxcblx0XHRcdHRpdGxlID0gZGF0YUZpZWxkRm9yQWN0aW9uLkxhYmVsPy50b1N0cmluZygpID8/IGFjdGlvblRhcmdldC5uYW1lLFxuXHRcdFx0c3R5bGUgPSB0aGlzLmdldEFjdGlvblN0eWxlKGRhdGFGaWVsZEZvckFjdGlvbiksXG5cdFx0XHRkYXRhID0gdGhpcy5nZXRBY3Rpb25EYXRhKGFjdGlvblRhcmdldCk7XG5cblx0XHRyZXR1cm4geyB2ZXJiLCB0aXRsZSwgc3R5bGUsIGRhdGEgfTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYWN0aW9uIHNldHMgZm9yIGFkYXB0aXZlIGNhcmQuXG5cdCAqXG5cdCAqIEFzIG9mIG5vdywgb25seSBjb25zaWRlcmluZyAnQW5ub3RhdGVkIEFjdGlvbnMnLlxuXHQgKiBOb3Qgc3VwcG9ydGVkOlxuXHQgKiAxLiBTdGFuZGFyZCBhY3Rpb25zXG5cdCAqIDIuIE1hbmlmZXN0IGFjdGlvbnNcblx0ICpcblx0ICogUHJlc2VudGx5LCBvbmx5IGZpcnN0IHR3byBhY3Rpb25zIHNoYWxsIGJlIHBhc3NlZCB0byB0aGUgYWRhcHRpdmUgY2FyZC5cblx0ICpcblx0ICogVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCBieSBBcnJheS5yZWR1Y2UuXG5cdCAqIEBwYXJhbSBhZGFwdGl2ZUNhcmRBY3Rpb25zIEFjdGlvbnMgYXJyYXkgdG8gYmUgcmV0dXJuZWQuXG5cdCAqIEBwYXJhbSBhY3Rpb25FbGVtZW50IERhdGFGaWVsZEZvckFjdGlvbiB0aGF0IG5lZWRzIHRvIGJlIGNvbnZlcnRlZC5cblx0ICogQHJldHVybnMgQW4gQXJyYXkgb2YgQWN0aW9ucyB0aGF0IG5lZWQgdG8gYmUgY29uY2F0ZW5hdGVkIHRvIGNhcmQgYm9keS5cblx0ICovXG5cdHByaXZhdGUgZ2V0QWN0aW9uSW5BZGFwdGl2ZUNhcmRGb3JtYXQoYWRhcHRpdmVDYXJkQWN0aW9uczogSUFDQWN0aW9uW10sIGFjdGlvbkVsZW1lbnQ6IEFjdGlvbkNvbmZpZ0VsZW1lbnQpOiBJQUNBY3Rpb25bXSB7XG5cdFx0aWYgKGFkYXB0aXZlQ2FyZEFjdGlvbnMubGVuZ3RoID4gMSkge1xuXHRcdFx0Ly8gTm90ZTogV2Ugb25seSBleHBlY3QgZmlyc3QgMiBhY3Rpb25zIGluIE1TIHRlYW1zIGFkYXB0aXZlIGNhcmRzLiBUaGlzIG1pZ2h0IGNoYW5nZSBpbiB0aGUgZnV0dXJlLlxuXHRcdFx0cmV0dXJuIGFkYXB0aXZlQ2FyZEFjdGlvbnM7XG5cdFx0fVxuXG5cdFx0Y29uc3QgeyBhY3Rpb246IGRhdGFGaWVsZEZvckFjdGlvbiwgdGl0bGU6IHRpdGxlT3ZlcnJpZGUgfSA9IGFjdGlvbkVsZW1lbnQ7XG5cdFx0Y29uc3QgeyBBY3Rpb25UYXJnZXQ6IGFjdGlvblRhcmdldCB9ID0gZGF0YUZpZWxkRm9yQWN0aW9uO1xuXG5cdFx0Ly8gTm8gQWN0aW9uIGluIGNhc2U6XG5cdFx0Ly8gMS4gYWN0aW9uVGFyZ2V0IG5vdCBhdmFpbGFibGUuXG5cdFx0Ly8gMS4gc3RhdGljYWxseSBub3QgdmlzaWJsZS5cblx0XHQvLyAyLiBzdGF0aWNhbGx5IGRpc2FibGVkLlxuXHRcdC8vIDMuIGFjdGlvbiBpcyBzdGF0aWMgYWN0aW9uLlxuXHRcdGlmICghYWN0aW9uVGFyZ2V0KSB7XG5cdFx0XHRyZXR1cm4gYWRhcHRpdmVDYXJkQWN0aW9ucztcblx0XHR9XG5cblx0XHRjb25zdCBpc0FjdGlvblZpc2libGUgPSBhY3Rpb25FbGVtZW50LmlzVmlzaWJsZSA/PyB0aGlzLmdldFZpc2libGVGb3JBZGFwdGl2ZUNhcmRBY3Rpb24oZGF0YUZpZWxkRm9yQWN0aW9uKSA/PyB1bmRlZmluZWQ7XG5cdFx0Y29uc3QgaXNFbmFibGVkID0gdGhpcy5nZXRFbmFibGVkRm9yQWRhcHRpdmVDYXJkQWN0aW9uKGFjdGlvblRhcmdldCkgPz8gdW5kZWZpbmVkO1xuXG5cdFx0Ly8gTk9URTogJyR3aGVuJyBpcyB1c2VkIHRvIGNvbnRyb2wgdmlzaWJpbGl0eSBvZiBhY3Rpb25zLiBMb29rcyBsaWtlIHRoZSB2YWx1ZSBuZWVkcyB0byBhbHdheXMgYmUgYW4gZXhwcmVzc2lvbiBvZiBmb3JtYXQgJyR7PGV4cD59Jy5cblx0XHQvLyBTbywgZGlyZWN0IHN0cmluZ3MgbGlrZSAndHJ1ZScgYW5kICdmYWxzZScgd2hpY2ggYXJlIGV4cGVjdGVkIHRvIHdvcmsgZm9yIG5vcm1hbCBjYXJkIHByb3BlcnRpZXMgZG9uJ3Qgd29yayBmb3IgJHdoZW4uXG5cdFx0Ly8gV2Ugd291bGQgbmVlZCB0byBoYW5kbGUgc3VjaCBjYXNlcyBpbmRlcGVuZGVudGx5LlxuXHRcdGxldCB3aGVuVmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0XHRpZiAodHlwZW9mIGlzQWN0aW9uVmlzaWJsZSA9PT0gXCJib29sZWFuXCIgJiYgaXNBY3Rpb25WaXNpYmxlID09PSBmYWxzZSkge1xuXHRcdFx0cmV0dXJuIGFkYXB0aXZlQ2FyZEFjdGlvbnM7XG5cdFx0fSBlbHNlIGlmICh0eXBlb2YgaXNBY3Rpb25WaXNpYmxlID09PSBcInN0cmluZ1wiICYmIGlzQWN0aW9uVmlzaWJsZSAmJiAvXlxcJFxcey4qXFx9L2kudGVzdChpc0FjdGlvblZpc2libGUpKSB7XG5cdFx0XHQvLyB2aXNpYmxlIGlzIGFuIGV4cHJlc3Npb24gb2YgZm9ybWF0ICckezxleHA+fScuXG5cdFx0XHR3aGVuVmFsdWUgPSBpc0FjdGlvblZpc2libGU7XG5cdFx0fSBlbHNlIGlmIChpc0FjdGlvblZpc2libGUgPT09IFwidHJ1ZVwiKSB7XG5cdFx0XHQvLyBzdGF0aWNhbGx5IHZpc2libGVcblx0XHRcdHdoZW5WYWx1ZSA9IHVuZGVmaW5lZDtcblx0XHR9IGVsc2UgaWYgKGlzQWN0aW9uVmlzaWJsZSA9PT0gXCJmYWxzZVwiKSB7XG5cdFx0XHQvLyBzdGF0aWNhbGx5IG5vdCB2aXNpYmxlXG5cdFx0XHRyZXR1cm4gYWRhcHRpdmVDYXJkQWN0aW9ucztcblx0XHR9XG5cblx0XHRpZiAoaXNFbmFibGVkID09PSBcImZhbHNlXCIgfHwgdGhpcy5pc1N0YXRpY0FjdGlvbihhY3Rpb25UYXJnZXQpIHx8IHRoaXMuaXNDb3B5QWN0aW9uKGRhdGFGaWVsZEZvckFjdGlvbikpIHtcblx0XHRcdHJldHVybiBhZGFwdGl2ZUNhcmRBY3Rpb25zO1xuXHRcdH1cblxuXHRcdGNvbnN0IGFjdGlvbiA9IHRoaXMuZ2V0QWN0aW9uKGRhdGFGaWVsZEZvckFjdGlvbik7XG5cdFx0aWYgKGFjdGlvbikge1xuXHRcdFx0Y29uc3QgdmlzdWFsVXBkYXRlcyA9IHtcblx0XHRcdFx0aXNFbmFibGVkLFxuXHRcdFx0XHQkd2hlbjogd2hlblZhbHVlLFxuXHRcdFx0XHR0aXRsZTogdGl0bGVPdmVycmlkZSA/PyBhY3Rpb24udGl0bGVcblx0XHRcdH07XG5cdFx0XHRhZGFwdGl2ZUNhcmRBY3Rpb25zLnB1c2goeyAuLi5hY3Rpb24sIC4uLnZpc3VhbFVwZGF0ZXMgfSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGFkYXB0aXZlQ2FyZEFjdGlvbnM7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBEYXRhRmllbGRGb3JBY3Rpb25zIGZvciBhZGFwdGl2ZSBjYXJkLlxuXHQgKiBAcGFyYW0gZW50aXR5VHlwZSBFbnRpdHlUeXBlLlxuXHQgKiBAcmV0dXJucyBEYXRhRmllbGRGb3JBY3Rpb25zIHRoYXQgYXJlIGFwcGxpY2FibGUgdG8gYmUgc2hvd24gaW4gdGhlIGFkYXB0aXZlIGNhcmQuXG5cdCAqL1xuXHRwcml2YXRlIGdldEFubm90YXRlZEhlYWRlckFjdGlvbnMoZW50aXR5VHlwZTogRW50aXR5VHlwZSk6IERhdGFGaWVsZEZvckFjdGlvbltdIHtcblx0XHRjb25zdCBpZGVudGlmaWNhdGlvbkFubm90YXRpb24gPSBlbnRpdHlUeXBlLmFubm90YXRpb25zLlVJPy5JZGVudGlmaWNhdGlvbjtcblx0XHRyZXR1cm4gaWRlbnRpZmljYXRpb25Bbm5vdGF0aW9uXG5cdFx0XHQ/IChpZGVudGlmaWNhdGlvbkFubm90YXRpb24uZmlsdGVyKFxuXHRcdFx0XHRcdChkYXRhRmllbGQpID0+IGRhdGFGaWVsZC4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkRm9yQWN0aW9uICYmICFkYXRhRmllbGQuRGV0ZXJtaW5pbmdcblx0XHRcdCAgKSBhcyBEYXRhRmllbGRGb3JBY3Rpb25bXSlcblx0XHRcdDogW107XG5cdH1cblxuXHQvKipcblx0ICogR2V0IGNvbmZpZ3VyZWQgYWN0aW9ucy5cblx0ICogQHBhcmFtIGFubm90YXRlZEFjdGlvbnMgQW5ub3RhdGVkIGFjdGlvbnMgZnJvbSB0aGUgY29udmVydGVkIG1ldGFkYXRhLlxuXHQgKiBAcmV0dXJucyBBY3Rpb25Db25maWdFbGVtZW50cyB0byBjcmVhdGUgYWN0aW9ucyBmb3IgY2FyZCBkZWZpbml0aW9uLlxuXHQgKi9cblx0cHJpdmF0ZSBnZXRDb25maWd1cmVkQWN0aW9ucyhhbm5vdGF0ZWRBY3Rpb25zOiBEYXRhRmllbGRGb3JBY3Rpb25bXSk6IEFjdGlvbkNvbmZpZ0VsZW1lbnRbXSB7XG5cdFx0Ly8gQWN0aW9ucyBmcm9tIGFubm90YXRpb25zLlxuXHRcdGNvbnN0IGFjdGlvbkNvbmZpZ3MgPSB0aGlzLmdldENhcmRDb25maWd1cmF0aW9uQnlLZXkoXCJhY3Rpb25zXCIpO1xuXHRcdGNvbnN0IGFubm90YXRlZEFjdGlvbkVsZW1lbnRzID0gYW5ub3RhdGVkQWN0aW9ucy5tYXAoXG5cdFx0XHQoYWN0aW9uKSA9PiAoeyBrZXk6IGFjdGlvbiAmJiBnZXRTdGFibGVJZFBhcnRGcm9tRGF0YUZpZWxkKGFjdGlvbiksIGFjdGlvbiB9KSBhcyBBY3Rpb25Db25maWdFbGVtZW50XG5cdFx0KTtcblx0XHRpZiAoIWFjdGlvbkNvbmZpZ3MgfHwgT2JqZWN0LmtleXMoYWN0aW9uQ29uZmlncykubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRyZXR1cm4gYW5ub3RhdGVkQWN0aW9uRWxlbWVudHM7XG5cdFx0fVxuXG5cdFx0Ly8gQ3VzdG9tIEFjdGlvbiBjb25maWdzLlxuXHRcdGNvbnN0IGN1c3RvbUNvbmZpZ0FjdGlvbk5hbWVzID0gT2JqZWN0LmtleXMoYWN0aW9uQ29uZmlncyk7XG5cdFx0Y29uc3QgY3VzdG9tQWN0aW9uQ29uZmlnRWxlbWVudHMgPSBjdXN0b21Db25maWdBY3Rpb25OYW1lcy5yZWR1Y2UoKGN1c3RvbUFjdGlvbkVsZW1lbnRzLCBjdXN0b21Db25maWdBY3Rpb25LZXkpID0+IHtcblx0XHRcdGNvbnN0IHJlbGV2YW50QWN0aW9uRWxlbWVudCA9IGFubm90YXRlZEFjdGlvbkVsZW1lbnRzLmZpbmQoKGFjdGlvbkVsZW1lbnQpID0+IGFjdGlvbkVsZW1lbnQua2V5ID09PSBjdXN0b21Db25maWdBY3Rpb25LZXkpO1xuXG5cdFx0XHRpZiAocmVsZXZhbnRBY3Rpb25FbGVtZW50KSB7XG5cdFx0XHRcdGN1c3RvbUFjdGlvbkVsZW1lbnRzW2N1c3RvbUNvbmZpZ0FjdGlvbktleV0gPSB7XG5cdFx0XHRcdFx0a2V5OiBjdXN0b21Db25maWdBY3Rpb25LZXksXG5cdFx0XHRcdFx0YWN0aW9uOiByZWxldmFudEFjdGlvbkVsZW1lbnQuYWN0aW9uLFxuXHRcdFx0XHRcdHBvc2l0aW9uOiB7XG5cdFx0XHRcdFx0XHRwbGFjZW1lbnQ6IFBsYWNlbWVudC5BZnRlclxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0Li4uYWN0aW9uQ29uZmlnc1tjdXN0b21Db25maWdBY3Rpb25LZXldXG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBjdXN0b21BY3Rpb25FbGVtZW50cztcblx0XHR9LCB7fSBhcyBJbnRlcm5hbEN1c3RvbUFjdGlvbkVsZW1lbnRzKTtcblxuXHRcdC8vIEZpbmFsIGFjdGlvbiBlbGVtZW50c1xuXHRcdGNvbnN0IGFjdGlvbk92ZXJ3cml0ZUNvbmZpZyA9IHtcblx0XHRcdHRpdGxlOiBPdmVycmlkZVR5cGUub3ZlcndyaXRlLFxuXHRcdFx0cG9zaXRpb246IE92ZXJyaWRlVHlwZS5vdmVyd3JpdGUsXG5cdFx0XHRpc1Zpc2libGU6IE92ZXJyaWRlVHlwZS5vdmVyd3JpdGVcblx0XHR9O1xuXHRcdHJldHVybiBpbnNlcnRDdXN0b21FbGVtZW50cyhhbm5vdGF0ZWRBY3Rpb25FbGVtZW50cywgY3VzdG9tQWN0aW9uQ29uZmlnRWxlbWVudHMsIGFjdGlvbk92ZXJ3cml0ZUNvbmZpZyk7XG5cdH1cblxuXHQvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cdC8qIEZ1bmN0aW9ucyBmb3IgY3JlYXRpbmcgdGVtcGxhdGUgYmluZGluZ3MgYW5kIGdldHRpbmcgYWN0aW9uIHByb3BlcnRpZXMgKi9cblx0LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5cdC8qKlxuXHQgKiBHZXQgYWN0aW9uIHZpc2liaWxpdHkuXG5cdCAqIEBwYXJhbSBkYXRhRmllbGRGb3JBY3Rpb24gRGF0YUZpZWxkRm9yQWN0aW9uIGFubm90YXRpb25cblx0ICogQHJldHVybnMgQm9vbGVhblxuXHQgKi9cblx0cHJpdmF0ZSBnZXRWaXNpYmxlRm9yQWRhcHRpdmVDYXJkQWN0aW9uKGRhdGFGaWVsZEZvckFjdGlvbjogRGF0YUZpZWxkRm9yQWN0aW9uKTogQ29tcGlsZWRBZGFwdGl2ZUNhcmRFeHByZXNzaW9uIHtcblx0XHRjb25zdCB2aXNpYmlsaXR5RXhwID0gaXNWaXNpYmxlKGRhdGFGaWVsZEZvckFjdGlvbik7XG5cdFx0cmV0dXJuIHRoaXMudXBkYXRlUGF0aHNBbmRHZXRDb21waWxlZEV4cHJlc3Npb24odmlzaWJpbGl0eUV4cCk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IGFjdGlvbiBzdHlsZSBmb3IgdGhlIGFjdGlvbiBidXR0b24uXG5cdCAqIEBwYXJhbSBkYXRhRmllbGRGb3JBY3Rpb24gRGF0YUZpZWxkRm9yQWN0aW9uIGFubm90YXRpb25cblx0ICogQHJldHVybnMgU3R5bGUgb2YgdGhlIGFjdGlvbiBidXR0b25cblx0ICovXG5cdHByaXZhdGUgZ2V0QWN0aW9uU3R5bGUoZGF0YUZpZWxkRm9yQWN0aW9uOiBEYXRhRmllbGRGb3JBY3Rpb24pOiBBQ1N0eWxlIHtcblx0XHQvLyBUT0RPOiBjb21waWxlIHRvIGFkYXB0aXZlIGNhcmQgYmluZGluZyBzdHJpbmcgZm9yIGR5bmFtaWMgYW5ub3RhdGlvbi5cblx0XHRsZXQgc3R5bGUgPSBBQ1N0eWxlLkRlZmF1bHQ7XG5cdFx0Y29uc3QgY3JpdGljYWxpdHkgPSBkYXRhRmllbGRGb3JBY3Rpb24uQ3JpdGljYWxpdHk7XG5cdFx0aWYgKGNyaXRpY2FsaXR5ICYmIHR5cGVvZiBjcml0aWNhbGl0eSA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0c3dpdGNoIChjcml0aWNhbGl0eSkge1xuXHRcdFx0XHRjYXNlIFwiVUkuQ3JpdGljYWxpdHlUeXBlL1Bvc2l0aXZlXCI6XG5cdFx0XHRcdFx0c3R5bGUgPSBBQ1N0eWxlLlBvc2l0aXZlO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIFwiVUkuQ3JpdGljYWxpdHlUeXBlL05lZ2F0aXZlXCI6XG5cdFx0XHRcdFx0c3R5bGUgPSBBQ1N0eWxlLkRlc3RydWN0aXZlO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdHN0eWxlID0gQUNTdHlsZS5EZWZhdWx0O1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gc3R5bGU7XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2sgaWYgYWN0aW9uIGlzIGNyaXRpY2FsLlxuXHQgKiBAcGFyYW0gYWN0aW9uVGFyZ2V0IEFjdGlvbiBkZWZpbml0aW9uLlxuXHQgKiBAcmV0dXJucyBCb29sZWFuXG5cdCAqL1xuXHRwcml2YXRlIGdldElzQ3JpdGljYWxGb3JBZGFwdGl2ZUNhcmRBY3Rpb24oYWN0aW9uVGFyZ2V0OiBBY3Rpb24pOiBDb21waWxlZEFkYXB0aXZlQ2FyZEV4cHJlc3Npb24ge1xuXHRcdGNvbnN0IGlzQWN0aW9uQ3JpdGljYWwgPSBnZXRJc0FjdGlvbkNyaXRpY2FsRXhwcmVzc2lvbihhY3Rpb25UYXJnZXQsIHRoaXMuY29udmVydGVkVHlwZXMpO1xuXHRcdHJldHVybiB0aGlzLnVwZGF0ZVBhdGhzQW5kR2V0Q29tcGlsZWRFeHByZXNzaW9uKGlzQWN0aW9uQ3JpdGljYWwpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCBhY3Rpb24gZW5hYmxlbWVudC5cblx0ICogQHBhcmFtIGFjdGlvblRhcmdldCBBY3Rpb24gZGVmaW5pdGlvbi5cblx0ICogQHJldHVybnMgQm9vbGVhblxuXHQgKi9cblx0cHJpdmF0ZSBnZXRFbmFibGVkRm9yQWRhcHRpdmVDYXJkQWN0aW9uKGFjdGlvblRhcmdldDogQWN0aW9uKTogQ29tcGlsZWRBZGFwdGl2ZUNhcmRFeHByZXNzaW9uIHtcblx0XHRjb25zdCBlbmFibGVkRXhwcmVzc2lvbiA9IGdldEFjdGlvbkVuYWJsZWRFeHByZXNzaW9uKGFjdGlvblRhcmdldCwgdGhpcy5jb252ZXJ0ZWRUeXBlcyk7XG5cdFx0cmV0dXJuIHRoaXMudXBkYXRlUGF0aHNBbmRHZXRDb21waWxlZEV4cHJlc3Npb24oZW5hYmxlZEV4cHJlc3Npb24pO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrIGZvciBzdGF0aWMgYWN0aW9uLlxuXHQgKiBAcGFyYW0gYWN0aW9uVGFyZ2V0IEFjdGlvbiBkZWZpbml0aW9uLlxuXHQgKiBAcmV0dXJucyBCb29sZWFuLlxuXHQgKi9cblx0cHJpdmF0ZSBpc1N0YXRpY0FjdGlvbihhY3Rpb25UYXJnZXQ6IEFjdGlvbik6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IHsgaXNCb3VuZCwgcGFyYW1ldGVycyB9ID0gYWN0aW9uVGFyZ2V0O1xuXHRcdHJldHVybiBpc0JvdW5kICYmIHBhcmFtZXRlcnNbMF0gJiYgcGFyYW1ldGVyc1swXS5pc0NvbGxlY3Rpb247XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2sgZm9yIGNvcHkgYWN0aW9uLlxuXHQgKiBAcGFyYW0gZGF0YUZpZWxkIEFjdGlvbiBkZWZpbml0aW9uLlxuXHQgKiBAcmV0dXJucyBCb29sZWFuLlxuXHQgKi9cblx0cHJpdmF0ZSBpc0NvcHlBY3Rpb24oZGF0YUZpZWxkOiBEYXRhRmllbGRGb3JBY3Rpb24pOiBib29sZWFuIHtcblx0XHRyZXR1cm4gZGF0YUZpZWxkLmFubm90YXRpb25zPy5VST8uSXNDb3B5QWN0aW9uPy52YWx1ZU9mKCkgPT09IHRydWU7XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2sgaWYgcGFyYW1ldGVyIGlucHV0IGlzIHJlcXVpcmVkIGZvciBhY3Rpb24gZXhlY3V0aW9uLlxuXHQgKiBAcGFyYW0gcGFyYW1ldGVyIEFjdGlvbiBwYXJhbWV0ZXIuXG5cdCAqIEBwYXJhbSBhY3Rpb25UYXJnZXRcblx0ICogQHJldHVybnMgQm9vbGVhblxuXHQgKi9cblx0cHJpdmF0ZSBnZXRSZXF1aXJlZChwYXJhbWV0ZXI6IEFjdGlvblBhcmFtZXRlciwgYWN0aW9uVGFyZ2V0OiBBY3Rpb24pOiBDb21waWxlZEFkYXB0aXZlQ2FyZEV4cHJlc3Npb24ge1xuXHRcdGNvbnN0IGZpZWxkQ29udHJvbEV4cHJlc3Npb24gPSBpc0FjdGlvblBhcmFtZXRlclJlcXVpcmVkRXhwcmVzc2lvbihwYXJhbWV0ZXIsIGFjdGlvblRhcmdldCwgdGhpcy5jb252ZXJ0ZWRUeXBlcyk7XG5cdFx0cmV0dXJuIHRoaXMudXBkYXRlUGF0aHNBbmRHZXRDb21waWxlZEV4cHJlc3Npb24oZmllbGRDb250cm9sRXhwcmVzc2lvbik7XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUF5Q1lBLE9BQU8sMEJBQVBBLE9BQU87SUFBUEEsT0FBTztJQUFQQSxPQUFPO0lBQVBBLE9BQU87SUFBQSxPQUFQQSxPQUFPO0VBQUE7RUFBQUMsUUFBQSxDQUFBRCxPQUFBLEdBQUFBLE9BQUE7RUFBQSxJQU1QRSxRQUFRLDBCQUFSQSxRQUFRO0lBQVJBLFFBQVE7SUFBUkEsUUFBUTtJQUFBLE9BQVJBLFFBQVE7RUFBQTtFQUFBRCxRQUFBLENBQUFDLFFBQUEsR0FBQUEsUUFBQTtFQUFBLElBS1JDLE9BQU8sMEJBQVBBLE9BQU87SUFBUEEsT0FBTztJQUFQQSxPQUFPO0lBQVBBLE9BQU87SUFBQSxPQUFQQSxPQUFPO0VBQUE7RUFBQUYsUUFBQSxDQUFBRSxPQUFBLEdBQUFBLE9BQUE7RUFNbkIsTUFBTUMsU0FBUyxHQUFHLElBQUk7RUFBQyxJQUVGQyxhQUFhLDBCQUFBQyxxQkFBQTtJQVdqQyxTQUFBRCxjQUFZRSxjQUFpQyxFQUFFQyxNQUEyQixFQUFFO01BQUEsSUFBQUMsS0FBQTtNQUMzRUEsS0FBQSxHQUFBSCxxQkFBQSxDQUFBSSxJQUFBLE9BQU1ILGNBQWMsRUFBRUMsTUFBTSxDQUFDO01BQUNDLEtBQUEsQ0FYdkJFLE9BQU8sR0FBZ0IsRUFBRTtNQVloQyxJQUFJO1FBQ0gsTUFBTUMsV0FBVyxHQUFHSCxLQUFBLENBQUtJLHlCQUF5QixDQUFDLGFBQWEsQ0FBQztRQUNqRSxNQUFNO1VBQUVDO1FBQVksQ0FBQyxHQUFHRixXQUFXO1FBQ25DLE1BQU1HLFVBQVUsR0FBR04sS0FBQSxDQUFLTyxhQUFhLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUNELFVBQVUsRUFBRTtVQUNoQkUsR0FBRyxDQUFDQyxLQUFLLENBQUMsaUZBQWlGSixXQUFXLEVBQUUsQ0FBQztVQUN6RyxPQUFB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
|
|
483
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBQ1N0eWxlIiwiX2V4cG9ydHMiLCJBQ0FjdGlvbiIsIkFDSW5wdXQiLCJBQ1RJT05fT0siLCJIZWFkZXJBY3Rpb25zIiwiX0Jhc2VDYXJkQ29udGVudFByb3ZpIiwiY29udmVydGVkVHlwZXMiLCJjb25maWciLCJfdGhpcyIsImNhbGwiLCJhY3Rpb25zIiwiY29udGV4dEluZm8iLCJnZXRDYXJkQ29uZmlndXJhdGlvbkJ5S2V5IiwiY29udGV4dFBhdGgiLCJlbnRpdHlUeXBlIiwiZ2V0RW50aXR5VHlwZSIsIkxvZyIsImVycm9yIiwiX2Fzc2VydFRoaXNJbml0aWFsaXplZCIsImdldEFubm90YXRlZEhlYWRlckFjdGlvbnMiLCJsZW5ndGgiLCJjb25maWd1cmVkQWN0aW9ucyIsImdldENvbmZpZ3VyZWRBY3Rpb25zIiwicmVkdWNlIiwiZ2V0QWN0aW9uSW5BZGFwdGl2ZUNhcmRGb3JtYXQiLCJiaW5kIiwiZXJyIiwibWVzc2FnZSIsIkVycm9yIiwiU3RyaW5nIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJnZXRDYXJkQWN0aW9ucyIsImdldEFkYXB0aXZlQ2FyZEFjdGlvblR5cGUiLCJlZG1BY3Rpb24iLCJpc0JvdW5kIiwiaXNGdW5jdGlvbiIsInBhcmFtZXRlcnMiLCJuZWVkVXNlcklucHV0UGFyYW1ldGVycyIsIlNob3dDYXJkIiwiRXhlY3V0ZSIsImdldEFjdGlvbkNhcmRCb2R5V2l0aFBhcmFtZXRlckZpZWxkcyIsImFjdGlvblRhcmdldCIsImVsZW1lbnRzIiwicGFyYW1ldGVyIiwiaW5kZXgiLCJpbnB1dEVsZW1lbnQiLCJsYWJlbFRlcm0iLCJhbm5vdGF0aW9ucyIsIkNvbW1vbiIsIkxhYmVsIiwidHlwZSIsIkRhdGUiLCJpZCIsIm5hbWUiLCJsYWJlbCIsInRvU3RyaW5nIiwiaXNSZXF1aXJlZCIsImdldFJlcXVpcmVkIiwidW5kZWZpbmVkIiwicHVzaCIsIlRleHQiLCJpc011bHRpbGluZSIsImlzTXVsdGlMaW5lVGV4dCIsImdldEFjdGlvbldpdGhQYXJhbWV0ZXJzIiwiYWN0aW9uRGV0YWlscyIsImJvZHkiLCJ2ZXJiIiwidGl0bGUiLCJzdHlsZSIsImRhdGEiLCJhY3Rpb25XaXRoUGFyYW1ldGVycyIsIlBvc2l0aXZlIiwiY2FyZCIsImdldEFjdGlvbiIsImRhdGFGaWVsZEZvckFjdGlvbiIsIkFjdGlvblRhcmdldCIsImdldEFjdGlvbkRldGFpbHMiLCJhY3Rpb25UeXBlIiwicmV0QWN0aW9uIiwiZ2V0QWN0aW9uRGF0YSIsImJpbmRpbmdDb250ZXh0UGF0aCIsImJpbmRpbmdDb250ZXh0UGF0aFJlbGF0aXZlVG9TZXJ2aWNlIiwic3RhcnRzV2l0aCIsInN1YnN0cmluZyIsInNlcnZpY2VVUkkiLCJjb250ZXh0VVJMIiwiaXNDb25maXJtYXRpb25SZXF1aXJlZCIsImdldElzQ3JpdGljYWxGb3JBZGFwdGl2ZUNhcmRBY3Rpb24iLCJhY3Rpb25Ub1RyaWdnZXIiLCJBY3Rpb24iLCJyZXBsYWNlIiwiZ2V0QWN0aW9uU3R5bGUiLCJhZGFwdGl2ZUNhcmRBY3Rpb25zIiwiYWN0aW9uRWxlbWVudCIsImFjdGlvbiIsInRpdGxlT3ZlcnJpZGUiLCJpc0FjdGlvblZpc2libGUiLCJpc1Zpc2libGUiLCJnZXRWaXNpYmxlRm9yQWRhcHRpdmVDYXJkQWN0aW9uIiwiaXNFbmFibGVkIiwiZ2V0RW5hYmxlZEZvckFkYXB0aXZlQ2FyZEFjdGlvbiIsIndoZW5WYWx1ZSIsInRlc3QiLCJpc1N0YXRpY0FjdGlvbiIsImlzQ29weUFjdGlvbiIsInZpc3VhbFVwZGF0ZXMiLCIkd2hlbiIsImlkZW50aWZpY2F0aW9uQW5ub3RhdGlvbiIsIlVJIiwiSWRlbnRpZmljYXRpb24iLCJmaWx0ZXIiLCJkYXRhRmllbGQiLCIkVHlwZSIsIkRldGVybWluaW5nIiwiYW5ub3RhdGVkQWN0aW9ucyIsImFjdGlvbkNvbmZpZ3MiLCJhbm5vdGF0ZWRBY3Rpb25FbGVtZW50cyIsIm1hcCIsImtleSIsImdldFN0YWJsZUlkUGFydEZyb21EYXRhRmllbGQiLCJPYmplY3QiLCJrZXlzIiwiY3VzdG9tQ29uZmlnQWN0aW9uTmFtZXMiLCJjdXN0b21BY3Rpb25Db25maWdFbGVtZW50cyIsImN1c3RvbUFjdGlvbkVsZW1lbnRzIiwiY3VzdG9tQ29uZmlnQWN0aW9uS2V5IiwicmVsZXZhbnRBY3Rpb25FbGVtZW50IiwiZmluZCIsInBvc2l0aW9uIiwicGxhY2VtZW50IiwiUGxhY2VtZW50IiwiQWZ0ZXIiLCJhY3Rpb25PdmVyd3JpdGVDb25maWciLCJPdmVycmlkZVR5cGUiLCJvdmVyd3JpdGUiLCJpbnNlcnRDdXN0b21FbGVtZW50cyIsInZpc2liaWxpdHlFeHAiLCJ1cGRhdGVQYXRoc0FuZEdldENvbXBpbGVkRXhwcmVzc2lvbiIsIkRlZmF1bHQiLCJjcml0aWNhbGl0eSIsIkNyaXRpY2FsaXR5IiwiRGVzdHJ1Y3RpdmUiLCJpc0FjdGlvbkNyaXRpY2FsIiwiZ2V0SXNBY3Rpb25Dcml0aWNhbEV4cHJlc3Npb24iLCJlbmFibGVkRXhwcmVzc2lvbiIsImdldEFjdGlvbkVuYWJsZWRFeHByZXNzaW9uIiwiaXNDb2xsZWN0aW9uIiwiSXNDb3B5QWN0aW9uIiwidmFsdWVPZiIsImZpZWxkQ29udHJvbEV4cHJlc3Npb24iLCJpc1JlcXVpcmVkRXhwcmVzc2lvbiIsIkJhc2VDYXJkQ29udGVudFByb3ZpZGVyIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJIZWFkZXJBY3Rpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQWN0aW9uLCBBY3Rpb25QYXJhbWV0ZXIsIENvbnZlcnRlZE1ldGFkYXRhLCBFbnRpdHlUeXBlIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgeyBVSUFubm90YXRpb25UeXBlcywgdHlwZSBEYXRhRmllbGRGb3JBY3Rpb24gfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB7XG5cdE92ZXJyaWRlVHlwZSxcblx0UGxhY2VtZW50LFxuXHRpbnNlcnRDdXN0b21FbGVtZW50cyxcblx0dHlwZSBDb25maWd1cmFibGVPYmplY3RLZXksXG5cdHR5cGUgQ3VzdG9tRWxlbWVudCxcblx0dHlwZSBQb3NpdGlvbmFibGVcbn0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9Db25maWd1cmFibGVPYmplY3RcIjtcbmltcG9ydCB0eXBlIHsgQ29tcGlsZWRBZGFwdGl2ZUNhcmRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQWRhcHRpdmVDYXJkRXhwcmVzc2lvbkNvbXBpbGVyXCI7XG5pbXBvcnQgeyBnZXRTdGFibGVJZFBhcnRGcm9tRGF0YUZpZWxkIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCB7IGdldElzQWN0aW9uQ3JpdGljYWxFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvQWN0aW9uSGVscGVyXCI7XG5pbXBvcnQgeyBpc1JlcXVpcmVkRXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0ZpZWxkQ29udHJvbEhlbHBlclwiO1xuaW1wb3J0IHsgaXNNdWx0aUxpbmVUZXh0IH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvUHJvcGVydHlIZWxwZXJcIjtcbmltcG9ydCB7IGdldEFjdGlvbkVuYWJsZWRFeHByZXNzaW9uLCBpc1Zpc2libGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9VSUZvcm1hdHRlcnNcIjtcbmltcG9ydCBCYXNlQ2FyZENvbnRlbnRQcm92aWRlciwgeyB0eXBlIENhcmRDb25maWcgfSBmcm9tIFwic2FwL2ZlL3RlbXBsYXRlcy9PYmplY3RQYWdlL2NhcmQvQmFzZUNhcmRDb250ZW50UHJvdmlkZXJcIjtcbmltcG9ydCB0eXBlIHsgQWN0aW9uRGF0YSwgQ2FyZEVsZW1lbnQsIElBQ0FjdGlvbiwgSUlucHV0RGF0ZSwgSUlucHV0VGV4dCB9IGZyb20gXCJ0eXBlcy9hZGFwdGl2ZUNhcmRfdHlwZXNcIjtcblxuZXhwb3J0IHR5cGUgQWN0aW9uQ29uZmlnID0gUG9zaXRpb25hYmxlICYge1xuXHR0aXRsZT86IHN0cmluZztcblx0aXNWaXNpYmxlPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEN1c3RvbUFjdGlvbkNvbmZpZ3MgPSBSZWNvcmQ8Q29uZmlndXJhYmxlT2JqZWN0S2V5LCBBY3Rpb25Db25maWc+O1xuXG5leHBvcnQgdHlwZSBBY3Rpb25Db25maWd1cmFibGUgPSB7XG5cdGFjdGlvbnM/OiBDdXN0b21BY3Rpb25Db25maWdzO1xufTtcblxuZXhwb3J0IHR5cGUgSGVhZGVyQWN0aW9uc0NvbmZpZyA9IEFjdGlvbkNvbmZpZ3VyYWJsZSAmIENhcmRDb25maWc7XG5cbnR5cGUgQWN0aW9uQ29uZmlnRWxlbWVudCA9IFBvc2l0aW9uYWJsZSAmXG5cdEFjdGlvbkNvbmZpZyAmIHtcblx0XHRrZXk6IENvbmZpZ3VyYWJsZU9iamVjdEtleTtcblx0XHRhY3Rpb246IERhdGFGaWVsZEZvckFjdGlvbjtcblx0fTtcblxudHlwZSBJbnRlcm5hbEN1c3RvbUFjdGlvbkVsZW1lbnRzID0gUmVjb3JkPENvbmZpZ3VyYWJsZU9iamVjdEtleSwgQ3VzdG9tRWxlbWVudDxBY3Rpb25Db25maWdFbGVtZW50Pj47XG5cbmV4cG9ydCBlbnVtIEFDU3R5bGUge1xuXHREZWZhdWx0ID0gXCJkZWZhdWx0XCIsXG5cdFBvc2l0aXZlID0gXCJwb3NpdGl2ZVwiLFxuXHREZXN0cnVjdGl2ZSA9IFwiZGVzdHJ1Y3RpdmVcIlxufVxuXG5leHBvcnQgZW51bSBBQ0FjdGlvbiB7XG5cdEV4ZWN1dGUgPSBcIkFjdGlvbi5FeGVjdXRlXCIsXG5cdFNob3dDYXJkID0gXCJBY3Rpb24uU2hvd0NhcmRcIlxufVxuXG5leHBvcnQgZW51bSBBQ0lucHV0IHtcblx0VGV4dCA9IFwiSW5wdXQuVGV4dFwiLFxuXHRDaG9pY2VTZXQgPSBcIklucHV0LkNob2ljZVNldFwiLFxuXHREYXRlID0gXCJJbnB1dC5EYXRlXCJcbn1cblxuY29uc3QgQUNUSU9OX09LID0gXCJPS1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBIZWFkZXJBY3Rpb25zIGV4dGVuZHMgQmFzZUNhcmRDb250ZW50UHJvdmlkZXI8SGVhZGVyQWN0aW9uc0NvbmZpZz4ge1xuXHRwcml2YXRlIGFjdGlvbnM6IElBQ0FjdGlvbltdID0gW107XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgY2FyZCBhY3Rpb25zLlxuXHQgKiBAcmV0dXJucyBDYXJkIGFjdGlvbnMuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0Q2FyZEFjdGlvbnMoKTogSUFDQWN0aW9uW10ge1xuXHRcdHJldHVybiB0aGlzLmFjdGlvbnM7XG5cdH1cblxuXHRjb25zdHJ1Y3Rvcihjb252ZXJ0ZWRUeXBlczogQ29udmVydGVkTWV0YWRhdGEsIGNvbmZpZzogSGVhZGVyQWN0aW9uc0NvbmZpZykge1xuXHRcdHN1cGVyKGNvbnZlcnRlZFR5cGVzLCBjb25maWcpO1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBjb250ZXh0SW5mbyA9IHRoaXMuZ2V0Q2FyZENvbmZpZ3VyYXRpb25CeUtleShcImNvbnRleHRJbmZvXCIpO1xuXHRcdFx0Y29uc3QgeyBjb250ZXh0UGF0aCB9ID0gY29udGV4dEluZm87XG5cdFx0XHRjb25zdCBlbnRpdHlUeXBlID0gdGhpcy5nZXRFbnRpdHlUeXBlKCk7XG5cdFx0XHRpZiAoIWVudGl0eVR5cGUpIHtcblx0XHRcdFx0TG9nLmVycm9yKGBGRSA6IFY0IDogQWRhcHRpdmUgQ2FyZCBoZWFkZXIgYWN0aW9ucyA6IG5vIEVudGl0eVR5cGUgZm91bmQgYXQgY29udGV4dCBwYXRoOiAke2NvbnRleHRQYXRofWApO1xuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgYWN0aW9ucyA9IHRoaXMuZ2V0QW5ub3RhdGVkSGVhZGVyQWN0aW9ucyhlbnRpdHlUeXBlKTtcblx0XHRcdGlmIChhY3Rpb25zLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0Y29uc3QgY29uZmlndXJlZEFjdGlvbnMgPSB0aGlzLmdldENvbmZpZ3VyZWRBY3Rpb25zKGFjdGlvbnMpO1xuXHRcdFx0XHR0aGlzLmFjdGlvbnMgPSBjb25maWd1cmVkQWN0aW9ucy5yZWR1Y2UodGhpcy5nZXRBY3Rpb25JbkFkYXB0aXZlQ2FyZEZvcm1hdC5iaW5kKHRoaXMpLCBbXSBhcyBJQUNBY3Rpb25bXSk7XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZXJyOiB1bmtub3duKSB7XG5cdFx0XHRjb25zdCBtZXNzYWdlID0gZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IFN0cmluZyhlcnIpO1xuXHRcdFx0TG9nLmVycm9yKFwiRXJyb3Igd2hpbGUgY3JlYXRpbmcgdGhlIGNhcmQgZGVmaW50aW9uXCIsIG1lc3NhZ2UpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgYWN0aW9uIHR5cGUgYmFzZWQgb24gdGhlIG5lZWQgZm9yIHVzZXIgaW5wdXRzIGZvciBhY3Rpb24gcGFyYW1ldGVycy5cblx0ICogQHBhcmFtIGVkbUFjdGlvbiBDb252ZXJ0ZWQgbWV0YWRhdGEgYWN0aW9uLlxuXHQgKiBAcmV0dXJucyBBY3Rpb24gdHlwZSB0byB1c2Vcblx0ICovXG5cdHByaXZhdGUgZ2V0QWRhcHRpdmVDYXJkQWN0aW9uVHlwZShlZG1BY3Rpb246IEFjdGlvbik6IEFDQWN0aW9uIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCB7IGlzQm91bmQsIGlzRnVuY3Rpb24sIHBhcmFtZXRlcnMgfSA9IGVkbUFjdGlvbjtcblx0XHRpZiAoaXNGdW5jdGlvbikge1xuXHRcdFx0Ly8gZnVuY3Rpb25zIGFyZSBpZ25vcmVkXG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IG5lZWRVc2VySW5wdXRQYXJhbWV0ZXJzID0gcGFyYW1ldGVycy5sZW5ndGggPiAoaXNCb3VuZCA/IDEgOiAwKTtcblxuXHRcdHJldHVybiBuZWVkVXNlcklucHV0UGFyYW1ldGVycyA/IEFDQWN0aW9uLlNob3dDYXJkIDogQUNBY3Rpb24uRXhlY3V0ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgQWN0aW9uIHBhcmFtZXRlciBlbGVtZW50cyB0byBhZGQgdG8gdGhlIGFjdGlvbiBjYXJkIGJvZHkuXG5cdCAqIEBwYXJhbSBhY3Rpb25UYXJnZXQgQ29udmVydGVkIG1ldGFkYXRhIGFjdGlvbi5cblx0ICogQHJldHVybnMgSW5wdXQgZWxlbWVudHMgZm9yIGFjdGlvbiBwYXJhbWV0ZXJzXG5cdCAqL1xuXHRwcml2YXRlIGdldEFjdGlvbkNhcmRCb2R5V2l0aFBhcmFtZXRlckZpZWxkcyhhY3Rpb25UYXJnZXQ6IEFjdGlvbik6IENhcmRFbGVtZW50W10ge1xuXHRcdGNvbnN0IHsgaXNCb3VuZCB9ID0gYWN0aW9uVGFyZ2V0O1xuXHRcdHJldHVybiBhY3Rpb25UYXJnZXQucGFyYW1ldGVycy5yZWR1Y2UoKGVsZW1lbnRzLCBwYXJhbWV0ZXIsIGluZGV4KSA9PiB7XG5cdFx0XHRpZiAoaXNCb3VuZCAmJiBpbmRleCA9PT0gMCkge1xuXHRcdFx0XHRyZXR1cm4gZWxlbWVudHM7XG5cdFx0XHR9XG5cdFx0XHRsZXQgaW5wdXRFbGVtZW50OiBJSW5wdXRUZXh0IHwgSUlucHV0RGF0ZTtcblx0XHRcdGNvbnN0IGxhYmVsVGVybSA9IHBhcmFtZXRlci5hbm5vdGF0aW9ucy5Db21tb24/LkxhYmVsO1xuXHRcdFx0aWYgKHBhcmFtZXRlci50eXBlID09PSBcIkVkbS5EYXRlXCIgfHwgcGFyYW1ldGVyLnR5cGUgPT09IFwiRWRtLkRhdGVUaW1lT2Zmc2V0XCIgfHwgcGFyYW1ldGVyLnR5cGUgPT09IFwiRWRtLkRhdGVUaW1lXCIpIHtcblx0XHRcdFx0aW5wdXRFbGVtZW50ID0ge1xuXHRcdFx0XHRcdHR5cGU6IEFDSW5wdXQuRGF0ZSxcblx0XHRcdFx0XHRpZDogcGFyYW1ldGVyLm5hbWUsXG5cdFx0XHRcdFx0bGFiZWw6IGxhYmVsVGVybT8udG9TdHJpbmcoKSA/PyBwYXJhbWV0ZXIubmFtZSxcblx0XHRcdFx0XHRpc1JlcXVpcmVkOiB0aGlzLmdldFJlcXVpcmVkKHBhcmFtZXRlcikgPz8gdW5kZWZpbmVkXG5cdFx0XHRcdH07XG5cdFx0XHRcdGVsZW1lbnRzLnB1c2goaW5wdXRFbGVtZW50KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGlucHV0RWxlbWVudCA9IHtcblx0XHRcdFx0XHR0eXBlOiBBQ0lucHV0LlRleHQsXG5cdFx0XHRcdFx0aWQ6IHBhcmFtZXRlci5uYW1lLFxuXHRcdFx0XHRcdGxhYmVsOiBsYWJlbFRlcm0/LnRvU3RyaW5nKCkgPz8gcGFyYW1ldGVyLm5hbWUsXG5cdFx0XHRcdFx0aXNSZXF1aXJlZDogdGhpcy5nZXRSZXF1aXJlZChwYXJhbWV0ZXIpID8/IHVuZGVmaW5lZCxcblx0XHRcdFx0XHRpc011bHRpbGluZTogaXNNdWx0aUxpbmVUZXh0KHBhcmFtZXRlcikgPz8gdW5kZWZpbmVkXG5cdFx0XHRcdH07XG5cdFx0XHRcdGVsZW1lbnRzLnB1c2goaW5wdXRFbGVtZW50KTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBlbGVtZW50cztcblx0XHR9LCBbXSBhcyBDYXJkRWxlbWVudFtdKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgYWN0aW9uIG9iamVjdCB3aXRoIHBhcmFtZXRlciBlbGVtZW50cy5cblx0ICogQHBhcmFtIGFjdGlvblRhcmdldCBDb252ZXJ0ZWQgbWV0YWRhdGEgYWN0aW9uLlxuXHQgKiBAcGFyYW0gYWN0aW9uRGV0YWlscyBBY3Rpb24gcHJvcGVydGllcy5cblx0ICogQHJldHVybnMgQWN0aW9uIG9iamVjdCB3aXRoIHBhcmFtZXRlcnMuXG5cdCAqL1xuXHRwcml2YXRlIGdldEFjdGlvbldpdGhQYXJhbWV0ZXJzKGFjdGlvblRhcmdldDogQWN0aW9uLCBhY3Rpb25EZXRhaWxzOiBQYXJ0aWFsPElBQ0FjdGlvbj4pOiBJQUNBY3Rpb24ge1xuXHRcdGNvbnN0IGJvZHkgPSB0aGlzLmdldEFjdGlvbkNhcmRCb2R5V2l0aFBhcmFtZXRlckZpZWxkcyhhY3Rpb25UYXJnZXQpO1xuXHRcdGNvbnN0IHsgdmVyYiwgdGl0bGUsIHN0eWxlLCBkYXRhIH0gPSBhY3Rpb25EZXRhaWxzO1xuXHRcdGNvbnN0IGFjdGlvbldpdGhQYXJhbWV0ZXJzOiBJQUNBY3Rpb24gPSB7XG5cdFx0XHR0eXBlOiBBQ0FjdGlvbi5FeGVjdXRlLFxuXHRcdFx0dmVyYixcblx0XHRcdGRhdGEsXG5cdFx0XHR0aXRsZTogQUNUSU9OX09LLFxuXHRcdFx0c3R5bGU6IEFDU3R5bGUuUG9zaXRpdmVcblx0XHR9O1xuXG5cdFx0cmV0dXJuIHtcblx0XHRcdHR5cGU6IEFDQWN0aW9uLlNob3dDYXJkLFxuXHRcdFx0dGl0bGUsXG5cdFx0XHRzdHlsZSxcblx0XHRcdGNhcmQ6IHtcblx0XHRcdFx0dHlwZTogXCJBZGFwdGl2ZUNhcmRcIixcblx0XHRcdFx0Ym9keSxcblx0XHRcdFx0YWN0aW9uczogW2FjdGlvbldpdGhQYXJhbWV0ZXJzXVxuXHRcdFx0fVxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogR2V0IGFjdGlvbiBmb3IgYWRhcHRpdmUgY2FyZC5cblx0ICogQHBhcmFtIGRhdGFGaWVsZEZvckFjdGlvbiBEYXRhRmllbGRGb3JBY3Rpb24gYW5ub3RhdGlvblxuXHQgKiBAcmV0dXJucyBBY3Rpb24gdG8gYWRkLlxuXHQgKi9cblx0cHJpdmF0ZSBnZXRBY3Rpb24oZGF0YUZpZWxkRm9yQWN0aW9uOiBEYXRhRmllbGRGb3JBY3Rpb24pOiBJQUNBY3Rpb24gfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IHsgQWN0aW9uVGFyZ2V0OiBhY3Rpb25UYXJnZXQgfSA9IGRhdGFGaWVsZEZvckFjdGlvbjtcblxuXHRcdGNvbnN0IGFjdGlvbkRldGFpbHMgPSB0aGlzLmdldEFjdGlvbkRldGFpbHMoZGF0YUZpZWxkRm9yQWN0aW9uKTtcblx0XHRpZiAoIWFjdGlvblRhcmdldCB8fCAhYWN0aW9uRGV0YWlscykge1xuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9XG5cblx0XHRjb25zdCBhY3Rpb25UeXBlID0gdGhpcy5nZXRBZGFwdGl2ZUNhcmRBY3Rpb25UeXBlKGFjdGlvblRhcmdldCk7XG5cblx0XHRsZXQgcmV0QWN0aW9uOiBJQUNBY3Rpb24gfCB1bmRlZmluZWQ7XG5cdFx0aWYgKGFjdGlvblR5cGUgPT09IEFDQWN0aW9uLkV4ZWN1dGUpIHtcblx0XHRcdC8vIEFjdGlvbnMgd2l0aG91dCBwYXJhbWV0ZXJzXG5cdFx0XHRyZXRBY3Rpb24gPSB7IHR5cGU6IGFjdGlvblR5cGUsIC4uLmFjdGlvbkRldGFpbHMgfTtcblx0XHR9IGVsc2UgaWYgKGFjdGlvblR5cGUgPT09IEFDQWN0aW9uLlNob3dDYXJkKSB7XG5cdFx0XHQvLyBBY3Rpb24gd2l0aCBwYXJhbWV0ZXJzXG5cdFx0XHRyZXRBY3Rpb24gPSB0aGlzLmdldEFjdGlvbldpdGhQYXJhbWV0ZXJzKGFjdGlvblRhcmdldCwgYWN0aW9uRGV0YWlscyk7XG5cdFx0fVxuXHRcdHJldHVybiByZXRBY3Rpb247XG5cdH1cblxuXHQvKipcblx0ICogR2V0IGRhdGEgdGhhdCBuZWVkcyB0byBiZSBwYXJ0IG9mIGFjdGlvbi5cblx0ICogQHBhcmFtIGFjdGlvblRhcmdldCBDb252ZXJ0ZWQgbWV0YWRhdGEgYWN0aW9uLlxuXHQgKiBAcmV0dXJucyBBY3Rpb24gZGF0YSB0aGF0IG5lZWRzIHRvIGJlIHBhc3NlZCB3aXRoIHRoZSBhY3Rpb24uXG5cdCAqL1xuXHRwcml2YXRlIGdldEFjdGlvbkRhdGEoYWN0aW9uVGFyZ2V0OiBBY3Rpb24pOiBBY3Rpb25EYXRhIHtcblx0XHRjb25zdCB7IGlzQm91bmQgfSA9IGFjdGlvblRhcmdldDtcblx0XHRjb25zdCBjb250ZXh0SW5mbyA9IHRoaXMuZ2V0Q2FyZENvbmZpZ3VyYXRpb25CeUtleShcImNvbnRleHRJbmZvXCIpO1xuXHRcdGNvbnN0IHsgYmluZGluZ0NvbnRleHRQYXRoIH0gPSBjb250ZXh0SW5mbztcblx0XHRjb25zdCBiaW5kaW5nQ29udGV4dFBhdGhSZWxhdGl2ZVRvU2VydmljZSA9IGJpbmRpbmdDb250ZXh0UGF0aC5zdGFydHNXaXRoKFwiL1wiKVxuXHRcdFx0PyBiaW5kaW5nQ29udGV4dFBhdGguc3Vic3RyaW5nKDEpXG5cdFx0XHQ6IGJpbmRpbmdDb250ZXh0UGF0aDtcblx0XHRjb25zdCBzZXJ2aWNlVVJJID0gdGhpcy5nZXRDYXJkQ29uZmlndXJhdGlvbkJ5S2V5KFwic2VydmljZVVSSVwiKTtcblx0XHRjb25zdCBjb250ZXh0VVJMID0gYCR7c2VydmljZVVSSX0ke2JpbmRpbmdDb250ZXh0UGF0aFJlbGF0aXZlVG9TZXJ2aWNlfWA7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGNvbnRleHRVUkwsXG5cdFx0XHRzZXJ2aWNlVVJJOiBpc0JvdW5kID8gdW5kZWZpbmVkIDogc2VydmljZVVSSSxcblx0XHRcdGlzQ29uZmlybWF0aW9uUmVxdWlyZWQ6IHRoaXMuZ2V0SXNDcml0aWNhbEZvckFkYXB0aXZlQ2FyZEFjdGlvbihhY3Rpb25UYXJnZXQpID8/IHVuZGVmaW5lZFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogR2V0IGFjdGlvbiBmb3IgYWRhcHRpdmUgY2FyZC5cblx0ICogQHBhcmFtIGRhdGFGaWVsZEZvckFjdGlvbiBEYXRhRmllbGRGb3JBY3Rpb24gYW5ub3RhdGlvblxuXHQgKiBAcmV0dXJucyBBY3Rpb24gdG8gYWRkLlxuXHQgKi9cblx0cHJpdmF0ZSBnZXRBY3Rpb25EZXRhaWxzKGRhdGFGaWVsZEZvckFjdGlvbjogRGF0YUZpZWxkRm9yQWN0aW9uKTogUGFydGlhbDxJQUNBY3Rpb24+IHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCB7IEFjdGlvblRhcmdldDogYWN0aW9uVGFyZ2V0IH0gPSBkYXRhRmllbGRGb3JBY3Rpb247XG5cdFx0aWYgKCFhY3Rpb25UYXJnZXQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBWZXJiIGNyZWF0aW9uIGZvciBhY3Rpb25zOlxuXHRcdC8vXG5cdFx0Ly8gMS4gQm91bmQgYWN0aW9uOlxuXHRcdC8vICAgIFZlcmIgbmVlZHMgdG8gYmUgcmVsYXRpdmUgdG8gY29udGV4dFVSTC4gZm9ybWF0OiAnPG1ldGFkYXRhIG5hbWVzcGFjZT4uPGFjdGlvbiBuYW1lPidcblx0XHQvLyAgICBFeGFtcGxlOlxuXHRcdC8vICAgICAgICBNZXRhZGF0YSBuYW1lc3BhY2U6ICdjb20uY19zb21fc2QnXG5cdFx0Ly8gICAgICAgIEFjdGlvbiBuYW1lOiAnYm91bmRBY3Rpb24nXG5cdFx0Ly8gICAgICAgIFZlcmI6ICdjb20uY19zb21fc2QuYm91bmRBY3Rpb24nXG5cdFx0Ly8gICAgICAgIENvbnRleHRVUkw6IC9TT00oMSlcblx0XHQvLyAgICAgICAgVVJMIHRvIHRyaWdnZXIgUE9TVCBjYWxsKHRoaXMgd2lsbCBiZSBjcmVhdGVkIGJ5IHRoZSBCT1QsIDxzZXJ2aWNlVVJJICsgY29udGV4dFVSTCArIHZlcmI+KTogJ2h0dHBzOi8vPHNlcnZpY2VVUkk+L1NPTSgnMScpL2NvbS5jX3NvbV9zZC5ib3VuZEFjdGlvbidcblx0XHQvL1xuXHRcdC8vIDIuIFVuYm91bmQgYWN0aW9uOlxuXHRcdC8vICAgIFZlcmIgbmVlZHMgdG8gYmUgcmVsYXRpdmUgdG8gc2VydmljZVVSSS4gZm9ybWF0OiAnPGFjdGlvbiBuYW1lPidcblx0XHQvLyAgICBFeGFtcGxlOlxuXHRcdC8vICAgICAgICBBY3Rpb24gbmFtZTogJ3VuYm91bmRBY3Rpb24nXG5cdFx0Ly8gICAgICAgIFZlcmI6ICd1bmJvdW5kQWN0aW9uJ1xuXHRcdC8vICAgICAgICBDb250ZXh0VVJMOiB1bmRlZmluZWRcblx0XHQvLyAgICAgICAgVVJMIHRvIHRyaWdnZXIgUE9TVCBjYWxsKHRoaXMgd2lsbCBiZSBjcmVhdGVkIGJ5IHRoZSBCT1QsIDxzZXJ2aWNlVVJJICsgdmVyYj4pOiAnaHR0cHM6Ly88c2VydmljZVVSST4vdW5ib3VuZEFjdGlvbidcblx0XHRjb25zdCBhY3Rpb25Ub1RyaWdnZXIgPSBhY3Rpb25UYXJnZXQuaXNCb3VuZCA/IGRhdGFGaWVsZEZvckFjdGlvbi5BY3Rpb24udG9TdHJpbmcoKSA6IGFjdGlvblRhcmdldC5uYW1lLFxuXHRcdFx0Ly8gV2UgcmVtb3ZlIHRoZSBvdmVybG9hZCBwYXJ0IGZyb20gdGhlIGFjdGlvbi4gbGlrZSAnY29tLmNfc29tX3NkLmJvdW5kQWN0aW9uKGNvbS5jX3NvbV9zZC5yZXR1cm5UeXBlKScsIHdlIG5lZWQgb25seSAnY29tLmNfc29tX3NkLmJvdW5kQWN0aW9uJyBhcyB2ZXJiLlxuXHRcdFx0dmVyYiA9IGFjdGlvblRvVHJpZ2dlci5yZXBsYWNlKC9cXCgoLiopXFwpJC8sIFwiXCIpLFxuXHRcdFx0dGl0bGUgPSBkYXRhRmllbGRGb3JBY3Rpb24uTGFiZWw/LnRvU3RyaW5nKCkgPz8gYWN0aW9uVGFyZ2V0Lm5hbWUsXG5cdFx0XHRzdHlsZSA9IHRoaXMuZ2V0QWN0aW9uU3R5bGUoZGF0YUZpZWxkRm9yQWN0aW9uKSxcblx0XHRcdGRhdGEgPSB0aGlzLmdldEFjdGlvbkRhdGEoYWN0aW9uVGFyZ2V0KTtcblxuXHRcdHJldHVybiB7IHZlcmIsIHRpdGxlLCBzdHlsZSwgZGF0YSB9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyBhY3Rpb24gc2V0cyBmb3IgYWRhcHRpdmUgY2FyZC5cblx0ICpcblx0ICogQXMgb2Ygbm93LCBvbmx5IGNvbnNpZGVyaW5nICdBbm5vdGF0ZWQgQWN0aW9ucycuXG5cdCAqIE5vdCBzdXBwb3J0ZWQ6XG5cdCAqIDEuIFN0YW5kYXJkIGFjdGlvbnNcblx0ICogMi4gTWFuaWZlc3QgYWN0aW9uc1xuXHQgKlxuXHQgKiBQcmVzZW50bHksIG9ubHkgZmlyc3QgdHdvIGFjdGlvbnMgc2hhbGwgYmUgcGFzc2VkIHRvIHRoZSBhZGFwdGl2ZSBjYXJkLlxuXHQgKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIGJ5IEFycmF5LnJlZHVjZS5cblx0ICogQHBhcmFtIGFkYXB0aXZlQ2FyZEFjdGlvbnMgQWN0aW9ucyBhcnJheSB0byBiZSByZXR1cm5lZC5cblx0ICogQHBhcmFtIGFjdGlvbkVsZW1lbnQgRGF0YUZpZWxkRm9yQWN0aW9uIHRoYXQgbmVlZHMgdG8gYmUgY29udmVydGVkLlxuXHQgKiBAcmV0dXJucyBBbiBBcnJheSBvZiBBY3Rpb25zIHRoYXQgbmVlZCB0byBiZSBjb25jYXRlbmF0ZWQgdG8gY2FyZCBib2R5LlxuXHQgKi9cblx0cHJpdmF0ZSBnZXRBY3Rpb25JbkFkYXB0aXZlQ2FyZEZvcm1hdChhZGFwdGl2ZUNhcmRBY3Rpb25zOiBJQUNBY3Rpb25bXSwgYWN0aW9uRWxlbWVudDogQWN0aW9uQ29uZmlnRWxlbWVudCk6IElBQ0FjdGlvbltdIHtcblx0XHRpZiAoYWRhcHRpdmVDYXJkQWN0aW9ucy5sZW5ndGggPiAxKSB7XG5cdFx0XHQvLyBOb3RlOiBXZSBvbmx5IGV4cGVjdCBmaXJzdCAyIGFjdGlvbnMgaW4gTVMgdGVhbXMgYWRhcHRpdmUgY2FyZHMuIFRoaXMgbWlnaHQgY2hhbmdlIGluIHRoZSBmdXR1cmUuXG5cdFx0XHRyZXR1cm4gYWRhcHRpdmVDYXJkQWN0aW9ucztcblx0XHR9XG5cblx0XHRjb25zdCB7IGFjdGlvbjogZGF0YUZpZWxkRm9yQWN0aW9uLCB0aXRsZTogdGl0bGVPdmVycmlkZSB9ID0gYWN0aW9uRWxlbWVudDtcblx0XHRjb25zdCB7IEFjdGlvblRhcmdldDogYWN0aW9uVGFyZ2V0IH0gPSBkYXRhRmllbGRGb3JBY3Rpb247XG5cblx0XHQvLyBObyBBY3Rpb24gaW4gY2FzZTpcblx0XHQvLyAxLiBhY3Rpb25UYXJnZXQgbm90IGF2YWlsYWJsZS5cblx0XHQvLyAxLiBzdGF0aWNhbGx5IG5vdCB2aXNpYmxlLlxuXHRcdC8vIDIuIHN0YXRpY2FsbHkgZGlzYWJsZWQuXG5cdFx0Ly8gMy4gYWN0aW9uIGlzIHN0YXRpYyBhY3Rpb24uXG5cdFx0aWYgKCFhY3Rpb25UYXJnZXQpIHtcblx0XHRcdHJldHVybiBhZGFwdGl2ZUNhcmRBY3Rpb25zO1xuXHRcdH1cblxuXHRcdGNvbnN0IGlzQWN0aW9uVmlzaWJsZSA9IGFjdGlvbkVsZW1lbnQuaXNWaXNpYmxlID8/IHRoaXMuZ2V0VmlzaWJsZUZvckFkYXB0aXZlQ2FyZEFjdGlvbihkYXRhRmllbGRGb3JBY3Rpb24pID8/IHVuZGVmaW5lZDtcblx0XHRjb25zdCBpc0VuYWJsZWQgPSB0aGlzLmdldEVuYWJsZWRGb3JBZGFwdGl2ZUNhcmRBY3Rpb24oYWN0aW9uVGFyZ2V0KSA/PyB1bmRlZmluZWQ7XG5cblx0XHQvLyBOT1RFOiAnJHdoZW4nIGlzIHVzZWQgdG8gY29udHJvbCB2aXNpYmlsaXR5IG9mIGFjdGlvbnMuIExvb2tzIGxpa2UgdGhlIHZhbHVlIG5lZWRzIHRvIGFsd2F5cyBiZSBhbiBleHByZXNzaW9uIG9mIGZvcm1hdCAnJHs8ZXhwPn0nLlxuXHRcdC8vIFNvLCBkaXJlY3Qgc3RyaW5ncyBsaWtlICd0cnVlJyBhbmQgJ2ZhbHNlJyB3aGljaCBhcmUgZXhwZWN0ZWQgdG8gd29yayBmb3Igbm9ybWFsIGNhcmQgcHJvcGVydGllcyBkb24ndCB3b3JrIGZvciAkd2hlbi5cblx0XHQvLyBXZSB3b3VsZCBuZWVkIHRvIGhhbmRsZSBzdWNoIGNhc2VzIGluZGVwZW5kZW50bHkuXG5cdFx0bGV0IHdoZW5WYWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRcdGlmICh0eXBlb2YgaXNBY3Rpb25WaXNpYmxlID09PSBcImJvb2xlYW5cIiAmJiBpc0FjdGlvblZpc2libGUgPT09IGZhbHNlKSB7XG5cdFx0XHRyZXR1cm4gYWRhcHRpdmVDYXJkQWN0aW9ucztcblx0XHR9IGVsc2UgaWYgKHR5cGVvZiBpc0FjdGlvblZpc2libGUgPT09IFwic3RyaW5nXCIgJiYgaXNBY3Rpb25WaXNpYmxlICYmIC9eXFwkXFx7LipcXH0vaS50ZXN0KGlzQWN0aW9uVmlzaWJsZSkpIHtcblx0XHRcdC8vIHZpc2libGUgaXMgYW4gZXhwcmVzc2lvbiBvZiBmb3JtYXQgJyR7PGV4cD59Jy5cblx0XHRcdHdoZW5WYWx1ZSA9IGlzQWN0aW9uVmlzaWJsZTtcblx0XHR9IGVsc2UgaWYgKGlzQWN0aW9uVmlzaWJsZSA9PT0gXCJ0cnVlXCIpIHtcblx0XHRcdC8vIHN0YXRpY2FsbHkgdmlzaWJsZVxuXHRcdFx0d2hlblZhbHVlID0gdW5kZWZpbmVkO1xuXHRcdH0gZWxzZSBpZiAoaXNBY3Rpb25WaXNpYmxlID09PSBcImZhbHNlXCIpIHtcblx0XHRcdC8vIHN0YXRpY2FsbHkgbm90IHZpc2libGVcblx0XHRcdHJldHVybiBhZGFwdGl2ZUNhcmRBY3Rpb25zO1xuXHRcdH1cblxuXHRcdGlmIChpc0VuYWJsZWQgPT09IFwiZmFsc2VcIiB8fCB0aGlzLmlzU3RhdGljQWN0aW9uKGFjdGlvblRhcmdldCkgfHwgdGhpcy5pc0NvcHlBY3Rpb24oZGF0YUZpZWxkRm9yQWN0aW9uKSkge1xuXHRcdFx0cmV0dXJuIGFkYXB0aXZlQ2FyZEFjdGlvbnM7XG5cdFx0fVxuXG5cdFx0Y29uc3QgYWN0aW9uID0gdGhpcy5nZXRBY3Rpb24oZGF0YUZpZWxkRm9yQWN0aW9uKTtcblx0XHRpZiAoYWN0aW9uKSB7XG5cdFx0XHRjb25zdCB2aXN1YWxVcGRhdGVzID0ge1xuXHRcdFx0XHRpc0VuYWJsZWQsXG5cdFx0XHRcdCR3aGVuOiB3aGVuVmFsdWUsXG5cdFx0XHRcdHRpdGxlOiB0aXRsZU92ZXJyaWRlID8/IGFjdGlvbi50aXRsZVxuXHRcdFx0fTtcblx0XHRcdGFkYXB0aXZlQ2FyZEFjdGlvbnMucHVzaCh7IC4uLmFjdGlvbiwgLi4udmlzdWFsVXBkYXRlcyB9KTtcblx0XHR9XG5cblx0XHRyZXR1cm4gYWRhcHRpdmVDYXJkQWN0aW9ucztcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIERhdGFGaWVsZEZvckFjdGlvbnMgZm9yIGFkYXB0aXZlIGNhcmQuXG5cdCAqIEBwYXJhbSBlbnRpdHlUeXBlIEVudGl0eVR5cGUuXG5cdCAqIEByZXR1cm5zIERhdGFGaWVsZEZvckFjdGlvbnMgdGhhdCBhcmUgYXBwbGljYWJsZSB0byBiZSBzaG93biBpbiB0aGUgYWRhcHRpdmUgY2FyZC5cblx0ICovXG5cdHByaXZhdGUgZ2V0QW5ub3RhdGVkSGVhZGVyQWN0aW9ucyhlbnRpdHlUeXBlOiBFbnRpdHlUeXBlKTogRGF0YUZpZWxkRm9yQWN0aW9uW10ge1xuXHRcdGNvbnN0IGlkZW50aWZpY2F0aW9uQW5ub3RhdGlvbiA9IGVudGl0eVR5cGUuYW5ub3RhdGlvbnMuVUk/LklkZW50aWZpY2F0aW9uO1xuXHRcdHJldHVybiBpZGVudGlmaWNhdGlvbkFubm90YXRpb25cblx0XHRcdD8gKGlkZW50aWZpY2F0aW9uQW5ub3RhdGlvbi5maWx0ZXIoXG5cdFx0XHRcdFx0KGRhdGFGaWVsZCkgPT4gZGF0YUZpZWxkLiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRGb3JBY3Rpb24gJiYgIWRhdGFGaWVsZC5EZXRlcm1pbmluZ1xuXHRcdFx0ICApIGFzIERhdGFGaWVsZEZvckFjdGlvbltdKVxuXHRcdFx0OiBbXTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgY29uZmlndXJlZCBhY3Rpb25zLlxuXHQgKiBAcGFyYW0gYW5ub3RhdGVkQWN0aW9ucyBBbm5vdGF0ZWQgYWN0aW9ucyBmcm9tIHRoZSBjb252ZXJ0ZWQgbWV0YWRhdGEuXG5cdCAqIEByZXR1cm5zIEFjdGlvbkNvbmZpZ0VsZW1lbnRzIHRvIGNyZWF0ZSBhY3Rpb25zIGZvciBjYXJkIGRlZmluaXRpb24uXG5cdCAqL1xuXHRwcml2YXRlIGdldENvbmZpZ3VyZWRBY3Rpb25zKGFubm90YXRlZEFjdGlvbnM6IERhdGFGaWVsZEZvckFjdGlvbltdKTogQWN0aW9uQ29uZmlnRWxlbWVudFtdIHtcblx0XHQvLyBBY3Rpb25zIGZyb20gYW5ub3RhdGlvbnMuXG5cdFx0Y29uc3QgYWN0aW9uQ29uZmlncyA9IHRoaXMuZ2V0Q2FyZENvbmZpZ3VyYXRpb25CeUtleShcImFjdGlvbnNcIik7XG5cdFx0Y29uc3QgYW5ub3RhdGVkQWN0aW9uRWxlbWVudHMgPSBhbm5vdGF0ZWRBY3Rpb25zLm1hcChcblx0XHRcdChhY3Rpb24pID0+ICh7IGtleTogYWN0aW9uICYmIGdldFN0YWJsZUlkUGFydEZyb21EYXRhRmllbGQoYWN0aW9uKSwgYWN0aW9uIH0pIGFzIEFjdGlvbkNvbmZpZ0VsZW1lbnRcblx0XHQpO1xuXHRcdGlmICghYWN0aW9uQ29uZmlncyB8fCBPYmplY3Qua2V5cyhhY3Rpb25Db25maWdzKS5sZW5ndGggPT09IDApIHtcblx0XHRcdHJldHVybiBhbm5vdGF0ZWRBY3Rpb25FbGVtZW50cztcblx0XHR9XG5cblx0XHQvLyBDdXN0b20gQWN0aW9uIGNvbmZpZ3MuXG5cdFx0Y29uc3QgY3VzdG9tQ29uZmlnQWN0aW9uTmFtZXMgPSBPYmplY3Qua2V5cyhhY3Rpb25Db25maWdzKTtcblx0XHRjb25zdCBjdXN0b21BY3Rpb25Db25maWdFbGVtZW50cyA9IGN1c3RvbUNvbmZpZ0FjdGlvbk5hbWVzLnJlZHVjZSgoY3VzdG9tQWN0aW9uRWxlbWVudHMsIGN1c3RvbUNvbmZpZ0FjdGlvbktleSkgPT4ge1xuXHRcdFx0Y29uc3QgcmVsZXZhbnRBY3Rpb25FbGVtZW50ID0gYW5ub3RhdGVkQWN0aW9uRWxlbWVudHMuZmluZCgoYWN0aW9uRWxlbWVudCkgPT4gYWN0aW9uRWxlbWVudC5rZXkgPT09IGN1c3RvbUNvbmZpZ0FjdGlvbktleSk7XG5cblx0XHRcdGlmIChyZWxldmFudEFjdGlvbkVsZW1lbnQpIHtcblx0XHRcdFx0Y3VzdG9tQWN0aW9uRWxlbWVudHNbY3VzdG9tQ29uZmlnQWN0aW9uS2V5XSA9IHtcblx0XHRcdFx0XHRrZXk6IGN1c3RvbUNvbmZpZ0FjdGlvbktleSxcblx0XHRcdFx0XHRhY3Rpb246IHJlbGV2YW50QWN0aW9uRWxlbWVudC5hY3Rpb24sXG5cdFx0XHRcdFx0cG9zaXRpb246IHtcblx0XHRcdFx0XHRcdHBsYWNlbWVudDogUGxhY2VtZW50LkFmdGVyXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQuLi5hY3Rpb25Db25maWdzW2N1c3RvbUNvbmZpZ0FjdGlvbktleV1cblx0XHRcdFx0fTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGN1c3RvbUFjdGlvbkVsZW1lbnRzO1xuXHRcdH0sIHt9IGFzIEludGVybmFsQ3VzdG9tQWN0aW9uRWxlbWVudHMpO1xuXG5cdFx0Ly8gRmluYWwgYWN0aW9uIGVsZW1lbnRzXG5cdFx0Y29uc3QgYWN0aW9uT3ZlcndyaXRlQ29uZmlnID0ge1xuXHRcdFx0dGl0bGU6IE92ZXJyaWRlVHlwZS5vdmVyd3JpdGUsXG5cdFx0XHRwb3NpdGlvbjogT3ZlcnJpZGVUeXBlLm92ZXJ3cml0ZSxcblx0XHRcdGlzVmlzaWJsZTogT3ZlcnJpZGVUeXBlLm92ZXJ3cml0ZVxuXHRcdH07XG5cdFx0cmV0dXJuIGluc2VydEN1c3RvbUVsZW1lbnRzKGFubm90YXRlZEFjdGlvbkVsZW1lbnRzLCBjdXN0b21BY3Rpb25Db25maWdFbGVtZW50cywgYWN0aW9uT3ZlcndyaXRlQ29uZmlnKTtcblx0fVxuXG5cdC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblx0LyogRnVuY3Rpb25zIGZvciBjcmVhdGluZyB0ZW1wbGF0ZSBiaW5kaW5ncyBhbmQgZ2V0dGluZyBhY3Rpb24gcHJvcGVydGllcyAqL1xuXHQvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cblx0LyoqXG5cdCAqIEdldCBhY3Rpb24gdmlzaWJpbGl0eS5cblx0ICogQHBhcmFtIGRhdGFGaWVsZEZvckFjdGlvbiBEYXRhRmllbGRGb3JBY3Rpb24gYW5ub3RhdGlvblxuXHQgKiBAcmV0dXJucyBCb29sZWFuXG5cdCAqL1xuXHRwcml2YXRlIGdldFZpc2libGVGb3JBZGFwdGl2ZUNhcmRBY3Rpb24oZGF0YUZpZWxkRm9yQWN0aW9uOiBEYXRhRmllbGRGb3JBY3Rpb24pOiBDb21waWxlZEFkYXB0aXZlQ2FyZEV4cHJlc3Npb24ge1xuXHRcdGNvbnN0IHZpc2liaWxpdHlFeHAgPSBpc1Zpc2libGUoZGF0YUZpZWxkRm9yQWN0aW9uKTtcblx0XHRyZXR1cm4gdGhpcy51cGRhdGVQYXRoc0FuZEdldENvbXBpbGVkRXhwcmVzc2lvbih2aXNpYmlsaXR5RXhwKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgYWN0aW9uIHN0eWxlIGZvciB0aGUgYWN0aW9uIGJ1dHRvbi5cblx0ICogQHBhcmFtIGRhdGFGaWVsZEZvckFjdGlvbiBEYXRhRmllbGRGb3JBY3Rpb24gYW5ub3RhdGlvblxuXHQgKiBAcmV0dXJucyBTdHlsZSBvZiB0aGUgYWN0aW9uIGJ1dHRvblxuXHQgKi9cblx0cHJpdmF0ZSBnZXRBY3Rpb25TdHlsZShkYXRhRmllbGRGb3JBY3Rpb246IERhdGFGaWVsZEZvckFjdGlvbik6IEFDU3R5bGUge1xuXHRcdC8vIFRPRE86IGNvbXBpbGUgdG8gYWRhcHRpdmUgY2FyZCBiaW5kaW5nIHN0cmluZyBmb3IgZHluYW1pYyBhbm5vdGF0aW9uLlxuXHRcdGxldCBzdHlsZSA9IEFDU3R5bGUuRGVmYXVsdDtcblx0XHRjb25zdCBjcml0aWNhbGl0eSA9IGRhdGFGaWVsZEZvckFjdGlvbi5Dcml0aWNhbGl0eTtcblx0XHRpZiAoY3JpdGljYWxpdHkgJiYgdHlwZW9mIGNyaXRpY2FsaXR5ID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRzd2l0Y2ggKGNyaXRpY2FsaXR5KSB7XG5cdFx0XHRcdGNhc2UgXCJVSS5Dcml0aWNhbGl0eVR5cGUvUG9zaXRpdmVcIjpcblx0XHRcdFx0XHRzdHlsZSA9IEFDU3R5bGUuUG9zaXRpdmU7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgXCJVSS5Dcml0aWNhbGl0eVR5cGUvTmVnYXRpdmVcIjpcblx0XHRcdFx0XHRzdHlsZSA9IEFDU3R5bGUuRGVzdHJ1Y3RpdmU7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0c3R5bGUgPSBBQ1N0eWxlLkRlZmF1bHQ7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBzdHlsZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVjayBpZiBhY3Rpb24gaXMgY3JpdGljYWwuXG5cdCAqIEBwYXJhbSBhY3Rpb25UYXJnZXQgQWN0aW9uIGRlZmluaXRpb24uXG5cdCAqIEByZXR1cm5zIEJvb2xlYW5cblx0ICovXG5cdHByaXZhdGUgZ2V0SXNDcml0aWNhbEZvckFkYXB0aXZlQ2FyZEFjdGlvbihhY3Rpb25UYXJnZXQ6IEFjdGlvbik6IENvbXBpbGVkQWRhcHRpdmVDYXJkRXhwcmVzc2lvbiB7XG5cdFx0Y29uc3QgaXNBY3Rpb25Dcml0aWNhbCA9IGdldElzQWN0aW9uQ3JpdGljYWxFeHByZXNzaW9uKGFjdGlvblRhcmdldCwgdGhpcy5jb252ZXJ0ZWRUeXBlcyk7XG5cdFx0cmV0dXJuIHRoaXMudXBkYXRlUGF0aHNBbmRHZXRDb21waWxlZEV4cHJlc3Npb24oaXNBY3Rpb25Dcml0aWNhbCk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IGFjdGlvbiBlbmFibGVtZW50LlxuXHQgKiBAcGFyYW0gYWN0aW9uVGFyZ2V0IEFjdGlvbiBkZWZpbml0aW9uLlxuXHQgKiBAcmV0dXJucyBCb29sZWFuXG5cdCAqL1xuXHRwcml2YXRlIGdldEVuYWJsZWRGb3JBZGFwdGl2ZUNhcmRBY3Rpb24oYWN0aW9uVGFyZ2V0OiBBY3Rpb24pOiBDb21waWxlZEFkYXB0aXZlQ2FyZEV4cHJlc3Npb24ge1xuXHRcdGNvbnN0IGVuYWJsZWRFeHByZXNzaW9uID0gZ2V0QWN0aW9uRW5hYmxlZEV4cHJlc3Npb24oYWN0aW9uVGFyZ2V0LCB0aGlzLmNvbnZlcnRlZFR5cGVzKTtcblx0XHRyZXR1cm4gdGhpcy51cGRhdGVQYXRoc0FuZEdldENvbXBpbGVkRXhwcmVzc2lvbihlbmFibGVkRXhwcmVzc2lvbik7XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2sgZm9yIHN0YXRpYyBhY3Rpb24uXG5cdCAqIEBwYXJhbSBhY3Rpb25UYXJnZXQgQWN0aW9uIGRlZmluaXRpb24uXG5cdCAqIEByZXR1cm5zIEJvb2xlYW4uXG5cdCAqL1xuXHRwcml2YXRlIGlzU3RhdGljQWN0aW9uKGFjdGlvblRhcmdldDogQWN0aW9uKTogYm9vbGVhbiB7XG5cdFx0Y29uc3QgeyBpc0JvdW5kLCBwYXJhbWV0ZXJzIH0gPSBhY3Rpb25UYXJnZXQ7XG5cdFx0cmV0dXJuIGlzQm91bmQgJiYgcGFyYW1ldGVyc1swXSAmJiBwYXJhbWV0ZXJzWzBdLmlzQ29sbGVjdGlvbjtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVjayBmb3IgY29weSBhY3Rpb24uXG5cdCAqIEBwYXJhbSBkYXRhRmllbGQgQWN0aW9uIGRlZmluaXRpb24uXG5cdCAqIEByZXR1cm5zIEJvb2xlYW4uXG5cdCAqL1xuXHRwcml2YXRlIGlzQ29weUFjdGlvbihkYXRhRmllbGQ6IERhdGFGaWVsZEZvckFjdGlvbik6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBkYXRhRmllbGQuYW5ub3RhdGlvbnM/LlVJPy5Jc0NvcHlBY3Rpb24/LnZhbHVlT2YoKSA9PT0gdHJ1ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVjayBpZiBwYXJhbWV0ZXIgaW5wdXQgaXMgcmVxdWlyZWQgZm9yIGFjdGlvbiBleGVjdXRpb24uXG5cdCAqIEBwYXJhbSBwYXJhbWV0ZXIgQWN0aW9uIHBhcmFtZXRlci5cblx0ICogQHJldHVybnMgQm9vbGVhblxuXHQgKi9cblx0cHJpdmF0ZSBnZXRSZXF1aXJlZChwYXJhbWV0ZXI6IEFjdGlvblBhcmFtZXRlcik6IENvbXBpbGVkQWRhcHRpdmVDYXJkRXhwcmVzc2lvbiB7XG5cdFx0Y29uc3QgZmllbGRDb250cm9sRXhwcmVzc2lvbiA9IGlzUmVxdWlyZWRFeHByZXNzaW9uKHBhcmFtZXRlcik7XG5cdFx0cmV0dXJuIHRoaXMudXBkYXRlUGF0aHNBbmRHZXRDb21waWxlZEV4cHJlc3Npb24oZmllbGRDb250cm9sRXhwcmVzc2lvbik7XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUF5Q1lBLE9BQU8sMEJBQVBBLE9BQU87SUFBUEEsT0FBTztJQUFQQSxPQUFPO0lBQVBBLE9BQU87SUFBQSxPQUFQQSxPQUFPO0VBQUE7RUFBQUMsUUFBQSxDQUFBRCxPQUFBLEdBQUFBLE9BQUE7RUFBQSxJQU1QRSxRQUFRLDBCQUFSQSxRQUFRO0lBQVJBLFFBQVE7SUFBUkEsUUFBUTtJQUFBLE9BQVJBLFFBQVE7RUFBQTtFQUFBRCxRQUFBLENBQUFDLFFBQUEsR0FBQUEsUUFBQTtFQUFBLElBS1JDLE9BQU8sMEJBQVBBLE9BQU87SUFBUEEsT0FBTztJQUFQQSxPQUFPO0lBQVBBLE9BQU87SUFBQSxPQUFQQSxPQUFPO0VBQUE7RUFBQUYsUUFBQSxDQUFBRSxPQUFBLEdBQUFBLE9BQUE7RUFNbkIsTUFBTUMsU0FBUyxHQUFHLElBQUk7RUFBQyxJQUVGQyxhQUFhLDBCQUFBQyxxQkFBQTtJQVdqQyxTQUFBRCxjQUFZRSxjQUFpQyxFQUFFQyxNQUEyQixFQUFFO01BQUEsSUFBQUMsS0FBQTtNQUMzRUEsS0FBQSxHQUFBSCxxQkFBQSxDQUFBSSxJQUFBLE9BQU1ILGNBQWMsRUFBRUMsTUFBTSxDQUFDO01BQUNDLEtBQUEsQ0FYdkJFLE9BQU8sR0FBZ0IsRUFBRTtNQVloQyxJQUFJO1FBQ0gsTUFBTUMsV0FBVyxHQUFHSCxLQUFBLENBQUtJLHlCQUF5QixDQUFDLGFBQWEsQ0FBQztRQUNqRSxNQUFNO1VBQUVDO1FBQVksQ0FBQyxHQUFHRixXQUFXO1FBQ25DLE1BQU1HLFVBQVUsR0FBR04sS0FBQSxDQUFLTyxhQUFhLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUNELFVBQVUsRUFBRTtVQUNoQkUsR0FBRyxDQUFDQyxLQUFLLENBQUMsaUZBQWlGSixXQUFXLEVBQUUsQ0FBQztVQUN6RyxPQUFBTCxLQUFBLElBQUFVLHNCQUFBLENBQUFWLEtBQUE7UUFDRDtRQUVBLE1BQU1FLE9BQU8sR0FBR0YsS0FBQSxDQUFLVyx5QkFBeUIsQ0FBQ0wsVUFBVSxDQUFDO1FBQzFELElBQUlKLE9BQU8sQ0FBQ1UsTUFBTSxHQUFHLENBQUMsRUFBRTtVQUN2QixNQUFNQyxpQkFBaUIsR0FBR2IsS0FBQSxDQUFLYyxvQkFBb0IsQ0FBQ1osT0FBTyxDQUFDO1VBQzVERixLQUFBLENBQUtFLE9BQU8sR0FBR1csaUJBQWlCLENBQUNFLE1BQU0sQ0FBQ2YsS0FBQSxDQUFLZ0IsNkJBQTZCLENBQUNDLElBQUksQ0FBQWpCLEtBQUssQ0FBQyxFQUFFLEVBQWlCLENBQUM7UUFDMUc7TUFDRCxDQUFDLENBQUMsT0FBT2tCLEdBQVksRUFBRTtRQUN0QixNQUFNQyxPQUFPLEdBQUdELEdBQUcsWUFBWUUsS0FBSyxHQUFHRixHQUFHLENBQUNDLE9BQU8sR0FBR0UsTUFBTSxDQUFDSCxHQUFHLENBQUM7UUFDaEVWLEdBQUcsQ0FBQ0MsS0FBSyxDQUFDLHlDQUF5QyxFQUFFVSxPQUFPLENBQUM7TUFDOUQ7TUFDQSxPQUFBbkIsS0FBQSxJQUFBVSxzQkFBQSxDQUFBVixLQUFBO0lBQ0Q7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtJQUpDUixRQUFBLEdBQUFJLGFBQUE7SUFBQTBCLGNBQUEsQ0FBQTFCLGFBQUEsRUFBQUMscUJBQUE7SUFBQSxJQUFBMEIsTUFBQSxHQUFBM0IsYUFBQSxDQUFBNEIsU0FBQTtJQS9CQTtBQUNEO0FBQ0E7QUFDQTtJQUhDRCxNQUFBLENBSU9FLGNBQWMsR0FBckIsU0FBT0EsY0FBY0EsQ0FBQSxFQUFnQjtNQUNwQyxPQUFPLElBQUksQ0FBQ3ZCLE9BQU87SUFDcEIsQ0FBQztJQUFBcUIsTUFBQSxDQThCT0cseUJBQXlCLEdBQWpDLFNBQVFBLHlCQUF5QkEsQ0FBQ0MsU0FBaUIsRUFBd0I7TUFDMUUsTUFBTTtRQUFFQyxPQUFPO1FBQUVDLFVBQVU7UUFBRUM7TUFBVyxDQUFDLEdBQUdILFNBQVM7TUFDckQsSUFBSUUsVUFBVSxFQUFFO1FBQ2Y7UUFDQTtNQUNEO01BQ0EsTUFBTUUsdUJBQXVCLEdBQUdELFVBQVUsQ0FBQ2xCLE1BQU0sSUFBSWdCLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO01BRXJFLE9BQU9HLHVCQUF1QixHQUFHdEMsUUFBUSxDQUFDdUMsUUFBUSxHQUFHdkMsUUFBUSxDQUFDd0MsT0FBTztJQUN0RTs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBLE9BSkM7SUFBQVYsTUFBQSxDQUtRVyxvQ0FBb0MsR0FBNUMsU0FBUUEsb0NBQW9DQSxDQUFDQyxZQUFvQixFQUFpQjtNQUNqRixNQUFNO1FBQUVQO01BQVEsQ0FBQyxHQUFHTyxZQUFZO01BQ2hDLE9BQU9BLFlBQVksQ0FBQ0wsVUFBVSxDQUFDZixNQUFNLENBQUMsQ0FBQ3FCLFFBQVEsRUFBRUMsU0FBUyxFQUFFQyxLQUFLLEtBQUs7UUFDckUsSUFBSVYsT0FBTyxJQUFJVSxLQUFLLEtBQUssQ0FBQyxFQUFFO1VBQzNCLE9BQU9GLFFBQVE7UUFDaEI7UUFDQSxJQUFJRyxZQUFxQztRQUN6QyxNQUFNQyxTQUFTLEdBQUdILFNBQVMsQ0FBQ0ksV0FBVyxDQUFDQyxNQUFNLEVBQUVDLEtBQUs7UUFDckQsSUFBSU4sU0FBUyxDQUFDTyxJQUFJLEtBQUssVUFBVSxJQUFJUCxTQUFTLENBQUNPLElBQUksS0FBSyxvQkFBb0IsSUFBSVAsU0FBUyxDQUFDTyxJQUFJLEtBQUssY0FBYyxFQUFFO1VBQ2xITCxZQUFZLEdBQUc7WUFDZEssSUFBSSxFQUFFbEQsT0FBTyxDQUFDbUQsSUFBSTtZQUNsQkMsRUFBRSxFQUFFVCxTQUFTLENBQUNVLElBQUk7WUFDbEJDLEtBQUssRUFBRVIsU0FBUyxFQUFFUyxRQUFRLENBQUMsQ0FBQyxJQUFJWixTQUFTLENBQUNVLElBQUk7WUFDOUNHLFVBQVUsRUFBRSxJQUFJLENBQUNDLFdBQVcsQ0FBQ2QsU0FBUyxDQUFDLElBQUllO1VBQzVDLENBQUM7VUFDRGhCLFFBQVEsQ0FBQ2lCLElBQUksQ0FBQ2QsWUFBWSxDQUFDO1FBQzVCLENBQUMsTUFBTTtVQUNOQSxZQUFZLEdBQUc7WUFDZEssSUFBSSxFQUFFbEQsT0FBTyxDQUFDNEQsSUFBSTtZQUNsQlIsRUFBRSxFQUFFVCxTQUFTLENBQUNVLElBQUk7WUFDbEJDLEtBQUssRUFBRVIsU0FBUyxFQUFFUyxRQUFRLENBQUMsQ0FBQyxJQUFJWixTQUFTLENBQUNVLElBQUk7WUFDOUNHLFVBQVUsRUFBRSxJQUFJLENBQUNDLFdBQVcsQ0FBQ2QsU0FBUyxDQUFDLElBQUllLFNBQVM7WUFDcERHLFdBQVcsRUFBRUMsZUFBZSxDQUFDbkIsU0FBUyxDQUFDLElBQUllO1VBQzVDLENBQUM7VUFDRGhCLFFBQVEsQ0FBQ2lCLElBQUksQ0FBQ2QsWUFBWSxDQUFDO1FBQzVCO1FBQ0EsT0FBT0gsUUFBUTtNQUNoQixDQUFDLEVBQUUsRUFBbUIsQ0FBQztJQUN4Qjs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FMQztJQUFBYixNQUFBLENBTVFrQyx1QkFBdUIsR0FBL0IsU0FBUUEsdUJBQXVCQSxDQUFDdEIsWUFBb0IsRUFBRXVCLGFBQWlDLEVBQWE7TUFDbkcsTUFBTUMsSUFBSSxHQUFHLElBQUksQ0FBQ3pCLG9DQUFvQyxDQUFDQyxZQUFZLENBQUM7TUFDcEUsTUFBTTtRQUFFeUIsSUFBSTtRQUFFQyxLQUFLO1FBQUVDLEtBQUs7UUFBRUM7TUFBSyxDQUFDLEdBQUdMLGFBQWE7TUFDbEQsTUFBTU0sb0JBQStCLEdBQUc7UUFDdkNwQixJQUFJLEVBQUVuRCxRQUFRLENBQUN3QyxPQUFPO1FBQ3RCMkIsSUFBSTtRQUNKRyxJQUFJO1FBQ0pGLEtBQUssRUFBRWxFLFNBQVM7UUFDaEJtRSxLQUFLLEVBQUV2RSxPQUFPLENBQUMwRTtNQUNoQixDQUFDO01BRUQsT0FBTztRQUNOckIsSUFBSSxFQUFFbkQsUUFBUSxDQUFDdUMsUUFBUTtRQUN2QjZCLEtBQUs7UUFDTEMsS0FBSztRQUNMSSxJQUFJLEVBQUU7VUFDTHRCLElBQUksRUFBRSxjQUFjO1VBQ3BCZSxJQUFJO1VBQ0p6RCxPQUFPLEVBQUUsQ0FBQzhELG9CQUFvQjtRQUMvQjtNQUNELENBQUM7SUFDRjs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBLE9BSkM7SUFBQXpDLE1BQUEsQ0FLUTRDLFNBQVMsR0FBakIsU0FBUUEsU0FBU0EsQ0FBQ0Msa0JBQXNDLEVBQXlCO01BQ2hGLE1BQU07UUFBRUMsWUFBWSxFQUFFbEM7TUFBYSxDQUFDLEdBQUdpQyxrQkFBa0I7TUFFekQsTUFBTVYsYUFBYSxHQUFHLElBQUksQ0FBQ1ksZ0JBQWdCLENBQUNGLGtCQUFrQixDQUFDO01BQy9ELElBQUksQ0FBQ2pDLFlBQVksSUFBSSxDQUFDdUIsYUFBYSxFQUFFO1FBQ3BDLE9BQU9OLFNBQVM7TUFDakI7TUFFQSxNQUFNbUIsVUFBVSxHQUFHLElBQUksQ0FBQzdDLHlCQUF5QixDQUFDUyxZQUFZLENBQUM7TUFFL0QsSUFBSXFDLFNBQWdDO01BQ3BDLElBQUlELFVBQVUsS0FBSzlFLFFBQVEsQ0FBQ3dDLE9BQU8sRUFBRTtRQUNwQztRQUNBdUMsU0FBUyxHQUFHO1VBQUU1QixJQUFJLEVBQUUyQixVQUFVO1VBQUUsR0FBR2I7UUFBYyxDQUFDO01BQ25ELENBQUMsTUFBTSxJQUFJYSxVQUFVLEtBQUs5RSxRQUFRLENBQUN1QyxRQUFRLEVBQUU7UUFDNUM7UUFDQXdDLFNBQVMsR0FBRyxJQUFJLENBQUNmLHVCQUF1QixDQUFDdEIsWUFBWSxFQUFFdUIsYUFBYSxDQUFDO01BQ3RFO01BQ0EsT0FBT2MsU0FBUztJQUNqQjs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBLE9BSkM7SUFBQWpELE1BQUEsQ0FLUWtELGFBQWEsR0FBckIsU0FBUUEsYUFBYUEsQ0FBQ3RDLFlBQW9CLEVBQWM7TUFDdkQsTUFBTTtRQUFFUDtNQUFRLENBQUMsR0FBR08sWUFBWTtNQUNoQyxNQUFNaEMsV0FBVyxHQUFHLElBQUksQ0FBQ0MseUJBQXlCLENBQUMsYUFBYSxDQUFDO01BQ2pFLE1BQU07UUFBRXNFO01BQW1CLENBQUMsR0FBR3ZFLFdBQVc7TUFDMUMsTUFBTXdFLG1DQUFtQyxHQUFHRCxrQkFBa0IsQ0FBQ0UsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUMzRUYsa0JBQWtCLENBQUNHLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FDL0JILGtCQUFrQjtNQUNyQixNQUFNSSxVQUFVLEdBQUcsSUFBSSxDQUFDMUUseUJBQXlCLENBQUMsWUFBWSxDQUFDO01BQy9ELE1BQU0yRSxVQUFVLEdBQUcsR0FBR0QsVUFBVSxHQUFHSCxtQ0FBbUMsRUFBRTtNQUN4RSxPQUFPO1FBQ05JLFVBQVU7UUFDVkQsVUFBVSxFQUFFbEQsT0FBTyxHQUFHd0IsU0FBUyxHQUFHMEIsVUFBVTtRQUM1Q0Usc0JBQXNCLEVBQUUsSUFBSSxDQUFDQyxrQ0FBa0MsQ0FBQzlDLFlBQVksQ0FBQyxJQUFJaUI7TUFDbEYsQ0FBQztJQUNGOztJQUVBO0FBQ0Q7QUFDQTtBQUNBO0FBQ0EsT0FKQztJQUFBN0IsTUFBQSxDQUtRK0MsZ0JBQWdCLEdBQXhCLFNBQVFBLGdCQUFnQkEsQ0FBQ0Ysa0JBQXNDLEVBQWtDO01BQ2hHLE1BQU07UUFBRUMsWUFBWSxFQUFFbEM7TUFBYSxDQUFDLEdBQUdpQyxrQkFBa0I7TUFDekQsSUFBSSxDQUFDakMsWUFBWSxFQUFFO1FBQ2xCO01BQ0Q7O01BRUE7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0EsTUFBTStDLGVBQWUsR0FBRy9DLFlBQVksQ0FBQ1AsT0FBTyxHQUFHd0Msa0JBQWtCLENBQUNlLE1BQU0sQ0FBQ2xDLFFBQVEsQ0FBQyxDQUFDLEdBQUdkLFlBQVksQ0FBQ1ksSUFBSTtRQUN0RztRQUNBYSxJQUFJLEdBQUdzQixlQUFlLENBQUNFLE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1FBQy9DdkIsS0FBSyxHQUFHTyxrQkFBa0IsQ0FBQ3pCLEtBQUssRUFBRU0sUUFBUSxDQUFDLENBQUMsSUFBSWQsWUFBWSxDQUFDWSxJQUFJO1FBQ2pFZSxLQUFLLEdBQUcsSUFBSSxDQUFDdUIsY0FBYyxDQUFDakIsa0JBQWtCLENBQUM7UUFDL0NMLElBQUksR0FBRyxJQUFJLENBQUNVLGFBQWEsQ0FBQ3RDLFlBQVksQ0FBQztNQUV4QyxPQUFPO1FBQUV5QixJQUFJO1FBQUVDLEtBQUs7UUFBRUMsS0FBSztRQUFFQztNQUFLLENBQUM7SUFDcEM7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BZEM7SUFBQXhDLE1BQUEsQ0FlUVAsNkJBQTZCLEdBQXJDLFNBQVFBLDZCQUE2QkEsQ0FBQ3NFLG1CQUFnQyxFQUFFQyxhQUFrQyxFQUFlO01BQ3hILElBQUlELG1CQUFtQixDQUFDMUUsTUFBTSxHQUFHLENBQUMsRUFBRTtRQUNuQztRQUNBLE9BQU8wRSxtQkFBbUI7TUFDM0I7TUFFQSxNQUFNO1FBQUVFLE1BQU0sRUFBRXBCLGtCQUFrQjtRQUFFUCxLQUFLLEVBQUU0QjtNQUFjLENBQUMsR0FBR0YsYUFBYTtNQUMxRSxNQUFNO1FBQUVsQixZQUFZLEVBQUVsQztNQUFhLENBQUMsR0FBR2lDLGtCQUFrQjs7TUFFekQ7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBLElBQUksQ0FBQ2pDLFlBQVksRUFBRTtRQUNsQixPQUFPbUQsbUJBQW1CO01BQzNCO01BRUEsTUFBTUksZUFBZSxHQUFHSCxhQUFhLENBQUNJLFNBQVMsSUFBSSxJQUFJLENBQUNDLCtCQUErQixDQUFDeEIsa0JBQWtCLENBQUMsSUFBSWhCLFNBQVM7TUFDeEgsTUFBTXlDLFNBQVMsR0FBRyxJQUFJLENBQUNDLCtCQUErQixDQUFDM0QsWUFBWSxDQUFDLElBQUlpQixTQUFTOztNQUVqRjtNQUNBO01BQ0E7TUFDQSxJQUFJMkMsU0FBNkI7TUFDakMsSUFBSSxPQUFPTCxlQUFlLEtBQUssU0FBUyxJQUFJQSxlQUFlLEtBQUssS0FBSyxFQUFFO1FBQ3RFLE9BQU9KLG1CQUFtQjtNQUMzQixDQUFDLE1BQU0sSUFBSSxPQUFPSSxlQUFlLEtBQUssUUFBUSxJQUFJQSxlQUFlLElBQUksWUFBWSxDQUFDTSxJQUFJLENBQUNOLGVBQWUsQ0FBQyxFQUFFO1FBQ3hHO1FBQ0FLLFNBQVMsR0FBR0wsZUFBZTtNQUM1QixDQUFDLE1BQU0sSUFBSUEsZUFBZSxLQUFLLE1BQU0sRUFBRTtRQUN0QztRQUNBSyxTQUFTLEdBQUczQyxTQUFTO01BQ3RCLENBQUMsTUFBTSxJQUFJc0MsZUFBZSxLQUFLLE9BQU8sRUFBRTtRQUN2QztRQUNBLE9BQU9KLG1CQUFtQjtNQUMzQjtNQUVBLElBQUlPLFNBQVMsS0FBSyxPQUFPLElBQUksSUFBSSxDQUFDSSxjQUFjLENBQUM5RCxZQUFZLENBQUMsSUFBSSxJQUFJLENBQUMrRCxZQUFZLENBQUM5QixrQkFBa0IsQ0FBQyxFQUFFO1FBQ3hHLE9BQU9rQixtQkFBbUI7TUFDM0I7TUFFQSxNQUFNRSxNQUFNLEdBQUcsSUFBSSxDQUFDckIsU0FBUyxDQUFDQyxrQkFBa0IsQ0FBQztNQUNqRCxJQUFJb0IsTUFBTSxFQUFFO1FBQ1gsTUFBTVcsYUFBYSxHQUFHO1VBQ3JCTixTQUFTO1VBQ1RPLEtBQUssRUFBRUwsU0FBUztVQUNoQmxDLEtBQUssRUFBRTRCLGFBQWEsSUFBSUQsTUFBTSxDQUFDM0I7UUFDaEMsQ0FBQztRQUNEeUIsbUJBQW1CLENBQUNqQyxJQUFJLENBQUM7VUFBRSxHQUFHbUMsTUFBTTtVQUFFLEdBQUdXO1FBQWMsQ0FBQyxDQUFDO01BQzFEO01BRUEsT0FBT2IsbUJBQW1CO0lBQzNCOztJQUVBO0FBQ0Q7QUFDQTtBQUNBO0FBQ0EsT0FKQztJQUFBL0QsTUFBQSxDQUtRWix5QkFBeUIsR0FBakMsU0FBUUEseUJBQXlCQSxDQUFDTCxVQUFzQixFQUF3QjtNQUMvRSxNQUFNK0Ysd0JBQXdCLEdBQUcvRixVQUFVLENBQUNtQyxXQUFXLENBQUM2RCxFQUFFLEVBQUVDLGNBQWM7TUFDMUUsT0FBT0Ysd0JBQXdCLEdBQzNCQSx3QkFBd0IsQ0FBQ0csTUFBTSxDQUMvQkMsU0FBUyxJQUFLQSxTQUFTLENBQUNDLEtBQUssb0RBQXlDLElBQUksQ0FBQ0QsU0FBUyxDQUFDRSxXQUN0RixDQUFDLEdBQ0QsRUFBRTtJQUNOOztJQUVBO0FBQ0Q7QUFDQTtBQUNBO0FBQ0EsT0FKQztJQUFBcEYsTUFBQSxDQUtRVCxvQkFBb0IsR0FBNUIsU0FBUUEsb0JBQW9CQSxDQUFDOEYsZ0JBQXNDLEVBQXlCO01BQzNGO01BQ0EsTUFBTUMsYUFBYSxHQUFHLElBQUksQ0FBQ3pHLHlCQUF5QixDQUFDLFNBQVMsQ0FBQztNQUMvRCxNQUFNMEcsdUJBQXVCLEdBQUdGLGdCQUFnQixDQUFDRyxHQUFHLENBQ2xEdkIsTUFBTSxLQUFNO1FBQUV3QixHQUFHLEVBQUV4QixNQUFNLElBQUl5Qiw0QkFBNEIsQ0FBQ3pCLE1BQU0sQ0FBQztRQUFFQTtNQUFPLENBQUMsQ0FDN0UsQ0FBQztNQUNELElBQUksQ0FBQ3FCLGFBQWEsSUFBSUssTUFBTSxDQUFDQyxJQUFJLENBQUNOLGFBQWEsQ0FBQyxDQUFDakcsTUFBTSxLQUFLLENBQUMsRUFBRTtRQUM5RCxPQUFPa0csdUJBQXVCO01BQy9COztNQUVBO01BQ0EsTUFBTU0sdUJBQXVCLEdBQUdGLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDTixhQUFhLENBQUM7TUFDMUQsTUFBTVEsMEJBQTBCLEdBQUdELHVCQUF1QixDQUFDckcsTUFBTSxDQUFDLENBQUN1RyxvQkFBb0IsRUFBRUMscUJBQXFCLEtBQUs7UUFDbEgsTUFBTUMscUJBQXFCLEdBQUdWLHVCQUF1QixDQUFDVyxJQUFJLENBQUVsQyxhQUFhLElBQUtBLGFBQWEsQ0FBQ3lCLEdBQUcsS0FBS08scUJBQXFCLENBQUM7UUFFMUgsSUFBSUMscUJBQXFCLEVBQUU7VUFDMUJGLG9CQUFvQixDQUFDQyxxQkFBcUIsQ0FBQyxHQUFHO1lBQzdDUCxHQUFHLEVBQUVPLHFCQUFxQjtZQUMxQi9CLE1BQU0sRUFBRWdDLHFCQUFxQixDQUFDaEMsTUFBTTtZQUNwQ2tDLFFBQVEsRUFBRTtjQUNUQyxTQUFTLEVBQUVDLFNBQVMsQ0FBQ0M7WUFDdEIsQ0FBQztZQUNELEdBQUdoQixhQUFhLENBQUNVLHFCQUFxQjtVQUN2QyxDQUFDO1FBQ0Y7UUFFQSxPQUFPRCxvQkFBb0I7TUFDNUIsQ0FBQyxFQUFFLENBQUMsQ0FBaUMsQ0FBQzs7TUFFdEM7TUFDQSxNQUFNUSxxQkFBcUIsR0FBRztRQUM3QmpFLEtBQUssRUFBRWtFLFlBQVksQ0FBQ0MsU0FBUztRQUM3Qk4sUUFBUSxFQUFFSyxZQUFZLENBQUNDLFNBQVM7UUFDaENyQyxTQUFTLEVBQUVvQyxZQUFZLENBQUNDO01BQ3pCLENBQUM7TUFDRCxPQUFPQyxvQkFBb0IsQ0FBQ25CLHVCQUF1QixFQUFFTywwQkFBMEIsRUFBRVMscUJBQXFCLENBQUM7SUFDeEc7O0lBRUE7SUFDQTtJQUNBOztJQUVBO0FBQ0Q7QUFDQTtBQUNBO0FBQ0EsT0FKQztJQUFBdkcsTUFBQSxDQUtRcUUsK0JBQStCLEdBQXZDLFNBQVFBLCtCQUErQkEsQ0FBQ3hCLGtCQUFzQyxFQUFrQztNQUMvRyxNQUFNOEQsYUFBYSxHQUFHdkMsU0FBUyxDQUFDdkIsa0JBQWtCLENBQUM7TUFDbkQsT0FBTyxJQUFJLENBQUMrRCxtQ0FBbUMsQ0FBQ0QsYUFBYSxDQUFDO0lBQy9EOztJQUVBO0FBQ0Q7QUFDQTtBQUNBO0FBQ0EsT0FKQztJQUFBM0csTUFBQSxDQUtROEQsY0FBYyxHQUF0QixTQUFRQSxjQUFjQSxDQUFDakIsa0JBQXNDLEVBQVc7TUFDdkU7TUFDQSxJQUFJTixLQUFLLEdBQUd2RSxPQUFPLENBQUM2SSxPQUFPO01BQzNCLE1BQU1DLFdBQVcsR0FBR2pFLGtCQUFrQixDQUFDa0UsV0FBVztNQUNsRCxJQUFJRCxXQUFXLElBQUksT0FBT0EsV0FBVyxLQUFLLFFBQVEsRUFBRTtRQUNuRCxRQUFRQSxXQUFXO1VBQ2xCLEtBQUssNkJBQTZCO1lBQ2pDdkUsS0FBSyxHQUFHdkUsT0FBTyxDQUFDMEUsUUFBUTtZQUN4QjtVQUNELEtBQUssNkJBQTZCO1lBQ2pDSCxLQUFLLEdBQUd2RSxPQUFPLENBQUNnSixXQUFXO1lBQzNCO1VBQ0Q7WUFDQ3pFLEtBQUssR0FBR3ZFLE9BQU8sQ0FBQzZJLE9BQU87UUFDekI7TUFDRDtNQUNBLE9BQU90RSxLQUFLO0lBQ2I7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQSxPQUpDO0lBQUF2QyxNQUFBLENBS1EwRCxrQ0FBa0MsR0FBMUMsU0FBUUEsa0NBQWtDQSxDQUFDOUMsWUFBb0IsRUFBa0M7TUFDaEcsTUFBTXFHLGdCQUFnQixHQUFHQyw2QkFBNkIsQ0FBQ3RHLFlBQVksRUFBRSxJQUFJLENBQUNyQyxjQUFjLENBQUM7TUFDekYsT0FBTyxJQUFJLENBQUNxSSxtQ0FBbUMsQ0FBQ0ssZ0JBQWdCLENBQUM7SUFDbEU7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQSxPQUpDO0lBQUFqSCxNQUFBLENBS1F1RSwrQkFBK0IsR0FBdkMsU0FBUUEsK0JBQStCQSxDQUFDM0QsWUFBb0IsRUFBa0M7TUFDN0YsTUFBTXVHLGlCQUFpQixHQUFHQywwQkFBMEIsQ0FBQ3hHLFlBQVksRUFBRSxJQUFJLENBQUNyQyxjQUFjLENBQUM7TUFDdkYsT0FBTyxJQUFJLENBQUNxSSxtQ0FBbUMsQ0FBQ08saUJBQWlCLENBQUM7SUFDbkU7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQSxPQUpDO0lBQUFuSCxNQUFBLENBS1EwRSxjQUFjLEdBQXRCLFNBQVFBLGNBQWNBLENBQUM5RCxZQUFvQixFQUFXO01BQ3JELE1BQU07UUFBRVAsT0FBTztRQUFFRTtNQUFXLENBQUMsR0FBR0ssWUFBWTtNQUM1QyxPQUFPUCxPQUFPLElBQUlFLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSUEsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDOEcsWUFBWTtJQUM5RDs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBLE9BSkM7SUFBQXJILE1BQUEsQ0FLUTJFLFlBQVksR0FBcEIsU0FBUUEsWUFBWUEsQ0FBQ08sU0FBNkIsRUFBVztNQUM1RCxPQUFPQSxTQUFTLENBQUNoRSxXQUFXLEVBQUU2RCxFQUFFLEVBQUV1QyxZQUFZLEVBQUVDLE9BQU8sQ0FBQyxDQUFDLEtBQUssSUFBSTtJQUNuRTs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBLE9BSkM7SUFBQXZILE1BQUEsQ0FLUTRCLFdBQVcsR0FBbkIsU0FBUUEsV0FBV0EsQ0FBQ2QsU0FBMEIsRUFBa0M7TUFDL0UsTUFBTTBHLHNCQUFzQixHQUFHQyxvQkFBb0IsQ0FBQzNHLFNBQVMsQ0FBQztNQUM5RCxPQUFPLElBQUksQ0FBQzhGLG1DQUFtQyxDQUFDWSxzQkFBc0IsQ0FBQztJQUN4RSxDQUFDO0lBQUEsT0FBQW5KLGFBQUE7RUFBQSxFQTVaeUNxSix1QkFBdUI7RUFBQXpKLFFBQUEsR0FBQUksYUFBQTtFQUFBLE9BQUFKLFFBQUE7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
import type { CompiledAdaptiveCardExpression } from "sap/fe/core/helpers/AdaptiveCardExpressionCompiler";
|
|
13
13
|
import { getStableIdPartFromDataField } from "sap/fe/core/helpers/StableIdHelper";
|
|
14
14
|
import { getIsActionCriticalExpression } from "sap/fe/core/templating/ActionHelper";
|
|
15
|
-
import {
|
|
15
|
+
import { isRequiredExpression } from "sap/fe/core/templating/FieldControlHelper";
|
|
16
16
|
import { isMultiLineText } from "sap/fe/core/templating/PropertyHelper";
|
|
17
17
|
import { getActionEnabledExpression, isVisible } from "sap/fe/core/templating/UIFormatters";
|
|
18
18
|
import BaseCardContentProvider, { type CardConfig } from "sap/fe/templates/ObjectPage/card/BaseCardContentProvider";
|
|
@@ -126,7 +126,7 @@ export default class HeaderActions extends BaseCardContentProvider<HeaderActions
|
|
|
126
126
|
type: ACInput.Date,
|
|
127
127
|
id: parameter.name,
|
|
128
128
|
label: labelTerm?.toString() ?? parameter.name,
|
|
129
|
-
isRequired: this.getRequired(parameter
|
|
129
|
+
isRequired: this.getRequired(parameter) ?? undefined
|
|
130
130
|
};
|
|
131
131
|
elements.push(inputElement);
|
|
132
132
|
} else {
|
|
@@ -134,7 +134,7 @@ export default class HeaderActions extends BaseCardContentProvider<HeaderActions
|
|
|
134
134
|
type: ACInput.Text,
|
|
135
135
|
id: parameter.name,
|
|
136
136
|
label: labelTerm?.toString() ?? parameter.name,
|
|
137
|
-
isRequired: this.getRequired(parameter
|
|
137
|
+
isRequired: this.getRequired(parameter) ?? undefined,
|
|
138
138
|
isMultiline: isMultiLineText(parameter) ?? undefined
|
|
139
139
|
};
|
|
140
140
|
elements.push(inputElement);
|
|
@@ -465,11 +465,10 @@ export default class HeaderActions extends BaseCardContentProvider<HeaderActions
|
|
|
465
465
|
/**
|
|
466
466
|
* Check if parameter input is required for action execution.
|
|
467
467
|
* @param parameter Action parameter.
|
|
468
|
-
* @param actionTarget
|
|
469
468
|
* @returns Boolean
|
|
470
469
|
*/
|
|
471
|
-
private getRequired(parameter: ActionParameter
|
|
472
|
-
const fieldControlExpression =
|
|
470
|
+
private getRequired(parameter: ActionParameter): CompiledAdaptiveCardExpression {
|
|
471
|
+
const fieldControlExpression = isRequiredExpression(parameter);
|
|
473
472
|
return this.updatePathsAndGetCompiledExpression(fieldControlExpression);
|
|
474
473
|
}
|
|
475
474
|
}
|
|
@@ -2,23 +2,25 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2025 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUtils", "sap/fe/core/buildingBlocks/BuildingBlock", "sap/fe/core/controls/CommandExecution", "sap/fe/core/converters/MetaModelConverter", "sap/fe/core/helpers/BindingHelper", "sap/
|
|
5
|
+
sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUtils", "sap/fe/core/buildingBlocks/BuildingBlock", "sap/fe/core/controls/CommandExecution", "sap/fe/core/converters/MetaModelConverter", "sap/fe/core/helpers/BindingHelper", "sap/m/Button", "sap/m/List", "sap/m/ResponsivePopover", "sap/m/StandardListItem", "sap/ui/core/InvisibleText", "../ObjectPageTemplating", "sap/fe/base/jsx-runtime/jsx", "sap/fe/base/jsx-runtime/jsxs"], function (BindingToolkit, ClassSupport, CommonUtils, BuildingBlock, CommandExecution, MetaModelConverter, BindingHelper, Button, List, ResponsivePopover, StandardListItem, InvisibleText, ObjectPageTemplating, _jsx, _jsxs) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6;
|
|
9
9
|
var _exports = {};
|
|
10
|
-
var
|
|
11
|
-
var getSwitchToActiveVisibility = ObjectPageTemplating.getSwitchToActiveVisibility;
|
|
12
|
-
var getSwitchDraftAndActiveVisibility = ObjectPageTemplating.getSwitchDraftAndActiveVisibility;
|
|
10
|
+
var checkDraftState = ObjectPageTemplating.checkDraftState;
|
|
13
11
|
var UI = BindingHelper.UI;
|
|
14
12
|
var Entity = BindingHelper.Entity;
|
|
13
|
+
var Draft = BindingHelper.Draft;
|
|
15
14
|
var property = ClassSupport.property;
|
|
16
15
|
var implementInterface = ClassSupport.implementInterface;
|
|
17
16
|
var defineUI5Class = ClassSupport.defineUI5Class;
|
|
18
17
|
var defineReference = ClassSupport.defineReference;
|
|
19
18
|
var pathInModel = BindingToolkit.pathInModel;
|
|
19
|
+
var or = BindingToolkit.or;
|
|
20
20
|
var not = BindingToolkit.not;
|
|
21
21
|
var ifElse = BindingToolkit.ifElse;
|
|
22
|
+
var equal = BindingToolkit.equal;
|
|
23
|
+
var compileExpression = BindingToolkit.compileExpression;
|
|
22
24
|
var and = BindingToolkit.and;
|
|
23
25
|
function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }
|
|
24
26
|
function _inheritsLoose(t, o) { t.prototype = Object.create(o.prototype), t.prototype.constructor = t, _setPrototypeOf(t, o); }
|
|
@@ -108,6 +110,71 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
|
|
|
108
110
|
canOverflow: true
|
|
109
111
|
};
|
|
110
112
|
};
|
|
113
|
+
/**
|
|
114
|
+
* Function to check if the entitySet is a draft root that supports collaboration.
|
|
115
|
+
* @param entitySet The current entity set.
|
|
116
|
+
* @returns Returns the Boolean value based on draft state
|
|
117
|
+
*/
|
|
118
|
+
_proto.checkCollaborationDraftRoot = function checkCollaborationDraftRoot(entitySet) {
|
|
119
|
+
if (entitySet.annotations?.Common?.DraftRoot?.ShareAction) {
|
|
120
|
+
return true;
|
|
121
|
+
} else {
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Function to get the visibility for the SwitchToActive button in the object page or subobject page.
|
|
128
|
+
* @param entitySet The current entity set.
|
|
129
|
+
* @returns Returns expression binding or Boolean value based on the draft state
|
|
130
|
+
*/;
|
|
131
|
+
_proto.getSwitchToActiveVisibility = function getSwitchToActiveVisibility(entitySet) {
|
|
132
|
+
if (checkDraftState(entitySet)) {
|
|
133
|
+
if (this.checkCollaborationDraftRoot(entitySet)) {
|
|
134
|
+
return compileExpression(and(pathInModel("HasActiveEntity"), UI.IsEditable));
|
|
135
|
+
} else {
|
|
136
|
+
return compileExpression(and(Draft.IsCreatedByMe, UI.IsEditable, not(UI.IsCreateMode)));
|
|
137
|
+
}
|
|
138
|
+
} else {
|
|
139
|
+
return false;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Function to get the visibility for the SwitchToDraft button in the object page or subobject page.
|
|
145
|
+
* @param entitySet The current entity set.
|
|
146
|
+
* @returns Returns expression binding or Boolean value based on the draft state
|
|
147
|
+
*/;
|
|
148
|
+
_proto.getSwitchToDraftVisibility = function getSwitchToDraftVisibility(entitySet) {
|
|
149
|
+
if (checkDraftState(entitySet)) {
|
|
150
|
+
if (this.checkCollaborationDraftRoot(entitySet)) {
|
|
151
|
+
return compileExpression(and(pathInModel("HasDraftEntity"), not(UI.IsEditable)));
|
|
152
|
+
} else {
|
|
153
|
+
return compileExpression(and(Draft.IsCreatedByMe, not(UI.IsEditable), not(UI.IsCreateMode), pathInModel("HasDraftEntity")));
|
|
154
|
+
}
|
|
155
|
+
} else {
|
|
156
|
+
return false;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Function to get the visibility for the SwitchDraftAndActive button in the object page or subobject page.
|
|
162
|
+
* @param entitySet The current entity set.
|
|
163
|
+
* @returns Returns expression binding or Boolean value based on the draft state
|
|
164
|
+
*/;
|
|
165
|
+
_proto.getVisibility = function getVisibility(entitySet) {
|
|
166
|
+
if (checkDraftState(entitySet)) {
|
|
167
|
+
if (this.checkCollaborationDraftRoot(entitySet)) {
|
|
168
|
+
// On an active instance, we check if there's a draft. On a draft instance, we check if there's an active entity.
|
|
169
|
+
// We also check either that the draft is collaborative (access type 3) or that the draft was created by me (in case an exclusive draft was created before) --> for an exclusive draft not created by me, we don't show the toggle
|
|
170
|
+
return compileExpression(and(ifElse(pathInModel("IsActiveEntity"), equal(pathInModel("HasDraftEntity"), true), equal(pathInModel("HasActiveEntity"), true)), or(Draft.IsOfCollaborativeType, Draft.IsCreatedByMe)));
|
|
171
|
+
} else {
|
|
172
|
+
return compileExpression(and(Draft.IsCreatedByMe, not(UI.IsCreateMode)));
|
|
173
|
+
}
|
|
174
|
+
} else {
|
|
175
|
+
return false;
|
|
176
|
+
}
|
|
177
|
+
};
|
|
111
178
|
_proto.createPopover = function createPopover() {
|
|
112
179
|
const draftId = this.createId("DraftToggleItemDraft");
|
|
113
180
|
const activeId = this.createId("DraftToggleItemActive");
|
|
@@ -141,7 +208,7 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
|
|
|
141
208
|
const context = odataMetaModel?.createBindingContext(this.contextPath ?? contextPathToUse);
|
|
142
209
|
const entityset = MetaModelConverter.convertMetaModelContext(context);
|
|
143
210
|
const textValue = ifElse(and(not(UI.IsEditable), not(UI.IsCreateMode), Entity.HasDraft), pathInModel("C_COMMON_OBJECT_PAGE_SAVED_VERSION_BUT", "sap.fe.i18n"), pathInModel("C_COMMON_OBJECT_PAGE_DRAFT_BUT", "sap.fe.i18n"));
|
|
144
|
-
const visible =
|
|
211
|
+
const visible = this.getVisibility(entityset);
|
|
145
212
|
const controller = this._getOwner()?.getRootController();
|
|
146
213
|
const invisibleText = _jsx(InvisibleText, {
|
|
147
214
|
text: "{sap.fe.i18n>T_HEADER_DATAPOINT_TITLE_DRAFT_SWITCHER_ARIA_BUTTON}",
|
|
@@ -165,14 +232,14 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
|
|
|
165
232
|
execute: () => {
|
|
166
233
|
controller.editFlow.toggleDraftActive(controller.getView().getBindingContext());
|
|
167
234
|
},
|
|
168
|
-
visible: getSwitchToActiveVisibility(entityset)
|
|
235
|
+
visible: this.getSwitchToActiveVisibility(entityset)
|
|
169
236
|
}));
|
|
170
237
|
controller.getView().addDependent(_jsx(CommandExecution, {
|
|
171
238
|
command: "SwitchToDraftObject",
|
|
172
239
|
execute: () => {
|
|
173
240
|
controller.editFlow.toggleDraftActive(controller.getView().getBindingContext());
|
|
174
241
|
},
|
|
175
|
-
visible: getSwitchToDraftVisibility(entityset)
|
|
242
|
+
visible: this.getSwitchToDraftVisibility(entityset)
|
|
176
243
|
}));
|
|
177
244
|
return draftToggle;
|
|
178
245
|
};
|
|
@@ -213,4 +280,4 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
|
|
|
213
280
|
_exports = DraftToggle;
|
|
214
281
|
return _exports;
|
|
215
282
|
}, false);
|
|
216
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEcmFmdFRvZ2dsZSIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwiaW1wbGVtZW50SW50ZXJmYWNlIiwiX2RlYzMiLCJwcm9wZXJ0eSIsInR5cGUiLCJfZGVjNCIsIl9kZWM1IiwiX2RlYzYiLCJkZWZpbmVSZWZlcmVuY2UiLCJfZGVjNyIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQnVpbGRpbmdCbG9jayIsInByb3BzIiwib3RoZXJzIiwiX3RoaXMiLCJjYWxsIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsIl9kZXNjcmlwdG9yMiIsIlNXSVRDSF9UT19EUkFGVF9LRVkiLCJTV0lUQ0hfVE9fQUNUSVZFX0tFWSIsIl9kZXNjcmlwdG9yMyIsIl9kZXNjcmlwdG9yNCIsIl9kZXNjcmlwdG9yNSIsIl9kZXNjcmlwdG9yNiIsImluaXRpYWxTZWxlY3RlZEtleSIsIl9oaWRkZW5EcmFmdCIsImhhbmRsZVNlbGVjdGVkSXRlbUNoYW5nZSIsInNlbGVjdGVkSXRlbUtleSIsIl9jb250YWluaW5nVmlldyIsImdldENvbnRyb2xsZXIiLCJlZGl0RmxvdyIsInRvZ2dsZURyYWZ0QWN0aXZlIiwiZ2V0QmluZGluZ0NvbnRleHQiLCJwb3BvdmVyIiwiY2xvc2UiLCJvcGVuU3dpdGNoQWN0aXZlUG9wb3ZlciIsImV2ZW50Iiwic291cmNlQ29udHJvbCIsImdldFNvdXJjZSIsImNvbnRhaW5pbmdWaWV3IiwiQ29tbW9uVXRpbHMiLCJnZXRUYXJnZXRWaWV3IiwiZGVzdHJveSIsImNvbnRleHQiLCJpc0FjdGl2ZUVudGl0eSIsImdldE9iamVjdCIsIklzQWN0aXZlRW50aXR5IiwiY3JlYXRlUG9wb3ZlciIsImFkZERlcGVuZGVudCIsImF0dGFjaEV2ZW50T25jZSIsIm9wZW5CeSIsImF0dGFjaE1vZGVsQ29udGV4dENoYW5nZSIsImhhbmRsZVZpc2liaWxpdHkiLCJzZWxmIiwiY29udGVudCIsImdldEJpbmRpbmciLCJhdHRhY2hFdmVudCIsImxvY2FsRXZlbnQiLCJ2aXNpYmxlIiwiZ2V0RXh0ZXJuYWxWYWx1ZSIsImRldGFjaE1vZGVsQ29udGV4dENoYW5nZSIsIl9leHBvcnRzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJvbk1ldGFkYXRhQXZhaWxhYmxlIiwiY29udHJvbGxlciIsIl9nZXRPd25lciIsImdldFJvb3RDb250cm9sbGVyIiwiZ2V0QXBwQ29tcG9uZW50IiwiZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMiLCJnZXRDYXBhYmlsaXRpZXMiLCJIaWRkZW5EcmFmdCIsImVuYWJsZWQiLCJjcmVhdGVDb250ZW50IiwiZ2V0RW5hYmxlZCIsImdldFByb3BlcnR5IiwiZ2V0T3ZlcmZsb3dUb29sYmFyQ29uZmlnIiwiY2FuT3ZlcmZsb3ciLCJkcmFmdElkIiwiY3JlYXRlSWQiLCJhY3RpdmVJZCIsImlzRHJhZnRDdXJyZW50IiwiaW5pdGlhbEZvY3VzSWQiLCJfanN4IiwiUmVzcG9uc2l2ZVBvcG92ZXIiLCJzaG93SGVhZGVyIiwiY29udGVudFdpZHRoIiwidmVydGljYWxTY3JvbGxpbmciLCJjbGFzcyIsInBsYWNlbWVudCIsImluaXRpYWxGb2N1cyIsImNoaWxkcmVuIiwiX2pzeHMiLCJMaXN0IiwiU3RhbmRhcmRMaXN0SXRlbSIsImlkIiwidGl0bGUiLCJwcmVzcyIsImNvbnRleHRQYXRoVG9Vc2UiLCJwcmVwcm9jZXNzb3JDb250ZXh0IiwiZnVsbENvbnRleHRQYXRoIiwib2RhdGFNZXRhTW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsImNvbnRleHRQYXRoIiwiZW50aXR5c2V0IiwiTWV0YU1vZGVsQ29udmVydGVyIiwiY29udmVydE1ldGFNb2RlbENvbnRleHQiLCJ0ZXh0VmFsdWUiLCJpZkVsc2UiLCJhbmQiLCJub3QiLCJVSSIsIklzRWRpdGFibGUiLCJJc0NyZWF0ZU1vZGUiLCJFbnRpdHkiLCJIYXNEcmFmdCIsInBhdGhJbk1vZGVsIiwiZ2V0U3dpdGNoRHJhZnRBbmRBY3RpdmVWaXNpYmlsaXR5IiwiaW52aXNpYmxlVGV4dCIsIkludmlzaWJsZVRleHQiLCJ0ZXh0IiwidG9TdGF0aWMiLCJkcmFmdFRvZ2dsZSIsIkJ1dHRvbiIsImljb24iLCJpY29uRmlyc3QiLCJhcmlhRGVzY3JpYmVkQnkiLCJ1bmRlZmluZWQiLCJnZXRWaWV3IiwiQ29tbWFuZEV4ZWN1dGlvbiIsImNvbW1hbmQiLCJleGVjdXRlIiwiZ2V0U3dpdGNoVG9BY3RpdmVWaXNpYmlsaXR5IiwiZ2V0U3dpdGNoVG9EcmFmdFZpc2liaWxpdHkiLCJCdWlsZGluZ0Jsb2NrIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJEcmFmdFRvZ2dsZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBFbnRpdHlTZXQgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBhbmQsIGlmRWxzZSwgbm90LCBwYXRoSW5Nb2RlbCB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBkZWZpbmVSZWZlcmVuY2UsIGRlZmluZVVJNUNsYXNzLCBpbXBsZW1lbnRJbnRlcmZhY2UsIHByb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvanN4LXJ1bnRpbWUvanN4XCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCBCdWlsZGluZ0Jsb2NrIGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy9CdWlsZGluZ0Jsb2NrXCI7XG5pbXBvcnQgQ29tbWFuZEV4ZWN1dGlvbiBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbHMvQ29tbWFuZEV4ZWN1dGlvblwiO1xuaW1wb3J0IHR5cGUgeyBIaWRkZW5EcmFmdCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCAqIGFzIE1ldGFNb2RlbENvbnZlcnRlciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB7IEVudGl0eSwgVUkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nSGVscGVyXCI7XG5pbXBvcnQge1xuXHRnZXRTd2l0Y2hEcmFmdEFuZEFjdGl2ZVZpc2liaWxpdHksXG5cdGdldFN3aXRjaFRvQWN0aXZlVmlzaWJpbGl0eSxcblx0Z2V0U3dpdGNoVG9EcmFmdFZpc2liaWxpdHlcbn0gZnJvbSBcInNhcC9mZS90ZW1wbGF0ZXMvT2JqZWN0UGFnZS9PYmplY3RQYWdlVGVtcGxhdGluZ1wiO1xuaW1wb3J0IEJ1dHRvbiBmcm9tIFwic2FwL20vQnV0dG9uXCI7XG5pbXBvcnQgTGlzdCBmcm9tIFwic2FwL20vTGlzdFwiO1xuaW1wb3J0IFJlc3BvbnNpdmVQb3BvdmVyIGZyb20gXCJzYXAvbS9SZXNwb25zaXZlUG9wb3ZlclwiO1xuaW1wb3J0IFN0YW5kYXJkTGlzdEl0ZW0gZnJvbSBcInNhcC9tL1N0YW5kYXJkTGlzdEl0ZW1cIjtcbmltcG9ydCB0eXBlIEV2ZW50IGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFwiO1xuaW1wb3J0IHR5cGUgeyAkQ29udHJvbFNldHRpbmdzIH0gZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBJbnZpc2libGVUZXh0IGZyb20gXCJzYXAvdWkvY29yZS9JbnZpc2libGVUZXh0XCI7XG5pbXBvcnQgSXRlbSBmcm9tIFwic2FwL3VpL2NvcmUvSXRlbVwiO1xuaW1wb3J0IHR5cGUgVmlldyBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL1ZpZXdcIjtcbmltcG9ydCB0eXBlIFByb3BlcnR5QmluZGluZyBmcm9tIFwic2FwL3VpL21vZGVsL1Byb3BlcnR5QmluZGluZ1wiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9iamVjdFBhZ2VDb250cm9sbGVyIGZyb20gXCIuLi9PYmplY3RQYWdlQ29udHJvbGxlci5jb250cm9sbGVyXCI7XG5cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5tYWNyb3MuRHJhZnRUb2dnbGVcIilcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERyYWZ0VG9nZ2xlIGV4dGVuZHMgQnVpbGRpbmdCbG9jazxCdXR0b24+IHtcblx0QGltcGxlbWVudEludGVyZmFjZShcInNhcC5tLklPdmVyZmxvd1Rvb2xiYXJDb250ZW50XCIpXG5cdF9faW1wbGVtZW50c19fc2FwX21fSU92ZXJmbG93VG9vbGJhckNvbnRlbnQgPSB0cnVlO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdHB1YmxpYyB2aXNpYmxlITogYm9vbGVhbjtcblxuXHRwcml2YXRlIF9jb250YWluaW5nVmlldyE6IFZpZXc7XG5cblx0cHJpdmF0ZSBwb3BvdmVyPzogUmVzcG9uc2l2ZVBvcG92ZXI7XG5cblx0cHJpdmF0ZSByZWFkb25seSBTV0lUQ0hfVE9fRFJBRlRfS0VZID0gXCJzd2l0Y2hUb0RyYWZ0XCI7XG5cblx0cHJpdmF0ZSByZWFkb25seSBTV0lUQ0hfVE9fQUNUSVZFX0tFWSA9IFwic3dpdGNoVG9BY3RpdmVcIjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdHB1YmxpYyBpZD86IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdHB1YmxpYyBjb250ZXh0UGF0aD86IHN0cmluZztcblxuXHRAZGVmaW5lUmVmZXJlbmNlKClcblx0cHVibGljIHN3aXRjaFRvQWN0aXZlUmVmITogUmVmPEl0ZW0+O1xuXG5cdEBkZWZpbmVSZWZlcmVuY2UoKVxuXHRwdWJsaWMgc3dpdGNoVG9EcmFmdFJlZiE6IFJlZjxJdGVtPjtcblxuXHRwcml2YXRlIGluaXRpYWxTZWxlY3RlZEtleTogc3RyaW5nID0gdGhpcy5TV0lUQ0hfVE9fQUNUSVZFX0tFWTtcblxuXHRwcml2YXRlIF9oaWRkZW5EcmFmdCA9IGZhbHNlO1xuXG5cdGNvbnN0cnVjdG9yKHByb3BzOiAkQ29udHJvbFNldHRpbmdzICYgUHJvcGVydGllc09mPERyYWZ0VG9nZ2xlPiwgb3RoZXJzPzogJENvbnRyb2xTZXR0aW5ncykge1xuXHRcdHN1cGVyKHByb3BzLCBvdGhlcnMpO1xuXHRcdHRoaXMuYXR0YWNoTW9kZWxDb250ZXh0Q2hhbmdlKGZ1bmN0aW9uIGhhbmRsZVZpc2liaWxpdHkoZXZlbnQ6IEV2ZW50KSB7XG5cdFx0XHQvLyBGb3JjZWQgdG8gZG91YmxlIGNhc3QgdG8gYXZvaWQgdHlwaW5nIGVycm9ycy5cblx0XHRcdGNvbnN0IHNlbGYgPSBldmVudC5nZXRTb3VyY2UoKSBhcyB1bmtub3duIGFzIERyYWZ0VG9nZ2xlO1xuXHRcdFx0aWYgKHNlbGYuY29udGVudD8uZ2V0QmluZGluZyhcInZpc2libGVcIikpIHtcblx0XHRcdFx0c2VsZi5jb250ZW50Py5nZXRCaW5kaW5nKFwidmlzaWJsZVwiKT8uYXR0YWNoRXZlbnQoXCJjaGFuZ2VcIiwgKGxvY2FsRXZlbnQ6IEV2ZW50PHt9LCBQcm9wZXJ0eUJpbmRpbmc+KSA9PiB7XG5cdFx0XHRcdFx0c2VsZi52aXNpYmxlID0gbG9jYWxFdmVudC5nZXRTb3VyY2UoKS5nZXRFeHRlcm5hbFZhbHVlKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRzZWxmLmRldGFjaE1vZGVsQ29udGV4dENoYW5nZShoYW5kbGVWaXNpYmlsaXR5LCBzZWxmKTtcblx0XHRcdH1cblx0XHR9LCB0aGlzKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVyIGZvciB0aGUgb25NZXRhZGF0YUF2YWlsYWJsZSBldmVudC5cblx0ICovXG5cdG9uTWV0YWRhdGFBdmFpbGFibGUoKTogdm9pZCB7XG5cdFx0Y29uc3QgY29udHJvbGxlciA9IHRoaXMuX2dldE93bmVyKCk/LmdldFJvb3RDb250cm9sbGVyKCkgYXMgT2JqZWN0UGFnZUNvbnRyb2xsZXI7XG5cdFx0dGhpcy5faGlkZGVuRHJhZnQgPSAoY29udHJvbGxlci5nZXRBcHBDb21wb25lbnQoKS5nZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcygpLmdldENhcGFiaWxpdGllcygpLkhpZGRlbkRyYWZ0IGFzIEhpZGRlbkRyYWZ0KVxuXHRcdFx0Py5lbmFibGVkO1xuXHRcdGlmICghdGhpcy5jb250ZW50ICYmICF0aGlzLl9oaWRkZW5EcmFmdCkge1xuXHRcdFx0dGhpcy5jb250ZW50ID0gdGhpcy5jcmVhdGVDb250ZW50KCk7XG5cdFx0fVxuXHR9XG5cblx0Z2V0RW5hYmxlZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5jb250ZW50Py5nZXRQcm9wZXJ0eShcImVuYWJsZWRcIikgPz8gdHJ1ZTtcblx0fVxuXG5cdGdldE92ZXJmbG93VG9vbGJhckNvbmZpZygpOiBvYmplY3Qge1xuXHRcdHJldHVybiB7XG5cdFx0XHRjYW5PdmVyZmxvdzogdHJ1ZVxuXHRcdH07XG5cdH1cblxuXHRoYW5kbGVTZWxlY3RlZEl0ZW1DaGFuZ2UgPSAoc2VsZWN0ZWRJdGVtS2V5OiBzdHJpbmcpOiB2b2lkID0+IHtcblx0XHRpZiAoc2VsZWN0ZWRJdGVtS2V5ICE9PSB0aGlzLmluaXRpYWxTZWxlY3RlZEtleSkge1xuXHRcdFx0KHRoaXMuX2NvbnRhaW5pbmdWaWV3LmdldENvbnRyb2xsZXIoKSBhcyBQYWdlQ29udHJvbGxlcikuZWRpdEZsb3cudG9nZ2xlRHJhZnRBY3RpdmUoXG5cdFx0XHRcdHRoaXMuX2NvbnRhaW5pbmdWaWV3LmdldEJpbmRpbmdDb250ZXh0KCkgYXMgQ29udGV4dFxuXHRcdFx0KTtcblx0XHR9XG5cdFx0dGhpcy5wb3BvdmVyPy5jbG9zZSgpO1xuXHR9O1xuXG5cdG9wZW5Td2l0Y2hBY3RpdmVQb3BvdmVyID0gKGV2ZW50OiBFdmVudDx7fSwgQnV0dG9uPik6IFJlc3BvbnNpdmVQb3BvdmVyID0+IHtcblx0XHRjb25zdCBzb3VyY2VDb250cm9sID0gZXZlbnQuZ2V0U291cmNlKCk7XG5cdFx0Y29uc3QgY29udGFpbmluZ1ZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KHNvdXJjZUNvbnRyb2wpO1xuXHRcdGlmICh0aGlzLnBvcG92ZXIpIHtcblx0XHRcdHRoaXMucG9wb3Zlci5kZXN0cm95KCk7XG5cdFx0XHRkZWxldGUgdGhpcy5wb3BvdmVyO1xuXHRcdH1cblx0XHRjb25zdCBjb250ZXh0OiBDb250ZXh0ID0gY29udGFpbmluZ1ZpZXcuZ2V0QmluZGluZ0NvbnRleHQoKTtcblx0XHRjb25zdCBpc0FjdGl2ZUVudGl0eSA9IGNvbnRleHQuZ2V0T2JqZWN0KCkuSXNBY3RpdmVFbnRpdHk7XG5cdFx0dGhpcy5pbml0aWFsU2VsZWN0ZWRLZXkgPSBpc0FjdGl2ZUVudGl0eSA/IHRoaXMuU1dJVENIX1RPX0FDVElWRV9LRVkgOiB0aGlzLlNXSVRDSF9UT19EUkFGVF9LRVk7XG5cdFx0Y29uc3QgcG9wb3ZlciA9IHRoaXMuY3JlYXRlUG9wb3ZlcigpO1xuXHRcdHRoaXMucG9wb3ZlciA9IHBvcG92ZXI7XG5cblx0XHR0aGlzLl9jb250YWluaW5nVmlldyA9IGNvbnRhaW5pbmdWaWV3O1xuXHRcdGNvbnRhaW5pbmdWaWV3LmFkZERlcGVuZGVudChwb3BvdmVyKTtcblx0XHRwb3BvdmVyLmF0dGFjaEV2ZW50T25jZShcImFmdGVyQ2xvc2VcIiwgKCkgPT4ge1xuXHRcdFx0cG9wb3Zlci5kZXN0cm95KCk7XG5cdFx0XHRpZiAodGhpcy5wb3BvdmVyID09PSBwb3BvdmVyKSB7XG5cdFx0XHRcdGRlbGV0ZSB0aGlzLnBvcG92ZXI7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0cG9wb3Zlci5vcGVuQnkoc291cmNlQ29udHJvbCk7XG5cdFx0cmV0dXJuIHBvcG92ZXI7XG5cdH07XG5cblx0Y3JlYXRlUG9wb3ZlcigpOiBSZXNwb25zaXZlUG9wb3ZlciB7XG5cdFx0Y29uc3QgZHJhZnRJZCA9IHRoaXMuY3JlYXRlSWQoXCJEcmFmdFRvZ2dsZUl0ZW1EcmFmdFwiKSE7XG5cdFx0Y29uc3QgYWN0aXZlSWQgPSB0aGlzLmNyZWF0ZUlkKFwiRHJhZnRUb2dnbGVJdGVtQWN0aXZlXCIpITtcblx0XHRjb25zdCBpc0RyYWZ0Q3VycmVudCA9IHRoaXMuaW5pdGlhbFNlbGVjdGVkS2V5ID09PSB0aGlzLlNXSVRDSF9UT19EUkFGVF9LRVk7XG5cdFx0Y29uc3QgaW5pdGlhbEZvY3VzSWQgPSBpc0RyYWZ0Q3VycmVudCA/IGFjdGl2ZUlkIDogZHJhZnRJZDtcblx0XHRyZXR1cm4gKFxuXHRcdFx0PFJlc3BvbnNpdmVQb3BvdmVyXG5cdFx0XHRcdHNob3dIZWFkZXI9e2ZhbHNlfVxuXHRcdFx0XHRjb250ZW50V2lkdGg9e1wiMTUuNjI1cmVtXCJ9XG5cdFx0XHRcdHZlcnRpY2FsU2Nyb2xsaW5nPXtmYWxzZX1cblx0XHRcdFx0Y2xhc3M9e1wic2FwVWlOb0NvbnRlbnRQYWRkaW5nXCJ9XG5cdFx0XHRcdHBsYWNlbWVudD17XCJCb3R0b21cIn1cblx0XHRcdFx0aW5pdGlhbEZvY3VzPXtpbml0aWFsRm9jdXNJZH1cblx0XHRcdD5cblx0XHRcdFx0PExpc3Q+XG5cdFx0XHRcdFx0PFN0YW5kYXJkTGlzdEl0ZW1cblx0XHRcdFx0XHRcdGlkPXtkcmFmdElkfVxuXHRcdFx0XHRcdFx0dGl0bGU9e1wie3NhcC5mZS5pMThuPkNfQ09NTU9OX09CSkVDVF9QQUdFX0RJU1BMQVlfRFJBRlRfTUlUfVwifVxuXHRcdFx0XHRcdFx0dHlwZT17XCJBY3RpdmVcIn1cblx0XHRcdFx0XHRcdHByZXNzPXsoKTogdm9pZCA9PiB0aGlzLmhhbmRsZVNlbGVjdGVkSXRlbUNoYW5nZSh0aGlzLlNXSVRDSF9UT19EUkFGVF9LRVkpfVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0PFN0YW5kYXJkTGlzdEl0ZW1cblx0XHRcdFx0XHRcdGlkPXthY3RpdmVJZH1cblx0XHRcdFx0XHRcdHRpdGxlPXtcIntzYXAuZmUuaTE4bj5DX0NPTU1PTl9PQkpFQ1RfUEFHRV9ESVNQTEFZX1NBVkVEX1ZFUlNJT05fTUlUfVwifVxuXHRcdFx0XHRcdFx0dHlwZT17XCJBY3RpdmVcIn1cblx0XHRcdFx0XHRcdHByZXNzPXsoKTogdm9pZCA9PiB0aGlzLmhhbmRsZVNlbGVjdGVkSXRlbUNoYW5nZSh0aGlzLlNXSVRDSF9UT19BQ1RJVkVfS0VZKX1cblx0XHRcdFx0XHQvPlxuXHRcdFx0XHQ8L0xpc3Q+XG5cdFx0XHQ8L1Jlc3BvbnNpdmVQb3BvdmVyPlxuXHRcdCk7XG5cdH1cblxuXHRjcmVhdGVDb250ZW50KCk6IEJ1dHRvbiB7XG5cdFx0Y29uc3QgY29udGV4dFBhdGhUb1VzZSA9IHRoaXMuX2dldE93bmVyKCk/LnByZXByb2Nlc3NvckNvbnRleHQ/LmZ1bGxDb250ZXh0UGF0aDtcblx0XHRjb25zdCBvZGF0YU1ldGFNb2RlbCA9IHRoaXMuX2dldE93bmVyKCk/LmdldE1ldGFNb2RlbCgpO1xuXHRcdGNvbnN0IGNvbnRleHQgPSBvZGF0YU1ldGFNb2RlbD8uY3JlYXRlQmluZGluZ0NvbnRleHQodGhpcy5jb250ZXh0UGF0aCA/PyBjb250ZXh0UGF0aFRvVXNlISk7XG5cdFx0Y29uc3QgZW50aXR5c2V0ID0gTWV0YU1vZGVsQ29udmVydGVyLmNvbnZlcnRNZXRhTW9kZWxDb250ZXh0KGNvbnRleHQhKSBhcyBFbnRpdHlTZXQ7XG5cdFx0Y29uc3QgdGV4dFZhbHVlID0gaWZFbHNlKFxuXHRcdFx0YW5kKG5vdChVSS5Jc0VkaXRhYmxlKSwgbm90KFVJLklzQ3JlYXRlTW9kZSksIEVudGl0eS5IYXNEcmFmdCksXG5cdFx0XHRwYXRoSW5Nb2RlbChcIkNfQ09NTU9OX09CSkVDVF9QQUdFX1NBVkVEX1ZFUlNJT05fQlVUXCIsIFwic2FwLmZlLmkxOG5cIiksXG5cdFx0XHRwYXRoSW5Nb2RlbChcIkNfQ09NTU9OX09CSkVDVF9QQUdFX0RSQUZUX0JVVFwiLCBcInNhcC5mZS5pMThuXCIpXG5cdFx0KTtcblx0XHRjb25zdCB2aXNpYmxlID0gZ2V0U3dpdGNoRHJhZnRBbmRBY3RpdmVWaXNpYmlsaXR5KGVudGl0eXNldCk7XG5cdFx0Y29uc3QgY29udHJvbGxlciA9IHRoaXMuX2dldE93bmVyKCk/LmdldFJvb3RDb250cm9sbGVyKCkgYXMgT2JqZWN0UGFnZUNvbnRyb2xsZXI7XG5cdFx0Y29uc3QgaW52aXNpYmxlVGV4dCA9IChcblx0XHRcdDxJbnZpc2libGVUZXh0XG5cdFx0XHRcdHRleHQ9XCJ7c2FwLmZlLmkxOG4+VF9IRUFERVJfREFUQVBPSU5UX1RJVExFX0RSQUZUX1NXSVRDSEVSX0FSSUFfQlVUVE9OfVwiXG5cdFx0XHRcdGlkPXt0aGlzLmNyZWF0ZUlkKFwiQXJpYVRleHREcmFmdFN3aXRjaGVyXCIpfVxuXHRcdFx0Lz5cblx0XHQpO1xuXHRcdGludmlzaWJsZVRleHQudG9TdGF0aWMoKTtcblx0XHRjb25zdCBkcmFmdFRvZ2dsZSA9IChcblx0XHRcdDxCdXR0b25cblx0XHRcdFx0aWQ9e3RoaXMuY3JlYXRlSWQoXCJfZHRcIil9XG5cdFx0XHRcdGR0OmRlc2lnbnRpbWU9XCJub3QtYWRhcHRhYmxlXCJcblx0XHRcdFx0dGV4dD17dGV4dFZhbHVlfVxuXHRcdFx0XHR2aXNpYmxlPXt2aXNpYmxlfVxuXHRcdFx0XHRpY29uPVwic2FwLWljb246Ly9uYXZpZ2F0aW9uLWRvd24tYXJyb3dcIlxuXHRcdFx0XHRpY29uRmlyc3Q9e2ZhbHNlfVxuXHRcdFx0XHR0eXBlPVwiVHJhbnNwYXJlbnRcIlxuXHRcdFx0XHRwcmVzcz17KGV2ZW50OiBFdmVudDx7fSwgQnV0dG9uPik6IFJlc3BvbnNpdmVQb3BvdmVyID0+IHRoaXMub3BlblN3aXRjaEFjdGl2ZVBvcG92ZXIoZXZlbnQpfVxuXHRcdFx0XHRhcmlhRGVzY3JpYmVkQnk9e3RoaXMuY3JlYXRlSWQoXCJBcmlhVGV4dERyYWZ0U3dpdGNoZXJcIikgPyBbdGhpcy5jcmVhdGVJZChcIkFyaWFUZXh0RHJhZnRTd2l0Y2hlclwiKSFdIDogdW5kZWZpbmVkfVxuXHRcdFx0Lz5cblx0XHQpO1xuXHRcdGRyYWZ0VG9nZ2xlLmFkZERlcGVuZGVudChpbnZpc2libGVUZXh0KTtcblx0XHRjb250cm9sbGVyLmdldFZpZXcoKS5hZGREZXBlbmRlbnQoXG5cdFx0XHQ8Q29tbWFuZEV4ZWN1dGlvblxuXHRcdFx0XHRjb21tYW5kPVwiU3dpdGNoVG9BY3RpdmVPYmplY3RcIlxuXHRcdFx0XHRleGVjdXRlPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0Y29udHJvbGxlci5lZGl0Rmxvdy50b2dnbGVEcmFmdEFjdGl2ZShjb250cm9sbGVyLmdldFZpZXcoKS5nZXRCaW5kaW5nQ29udGV4dCgpKTtcblx0XHRcdFx0fX1cblx0XHRcdFx0dmlzaWJsZT17Z2V0U3dpdGNoVG9BY3RpdmVWaXNpYmlsaXR5KGVudGl0eXNldCkgYXMgdW5rbm93biBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj59XG5cdFx0XHQvPlxuXHRcdCk7XG5cdFx0Y29udHJvbGxlci5nZXRWaWV3KCkuYWRkRGVwZW5kZW50KFxuXHRcdFx0PENvbW1hbmRFeGVjdXRpb25cblx0XHRcdFx0Y29tbWFuZD1cIlN3aXRjaFRvRHJhZnRPYmplY3RcIlxuXHRcdFx0XHRleGVjdXRlPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0Y29udHJvbGxlci5lZGl0Rmxvdy50b2dnbGVEcmFmdEFjdGl2ZShjb250cm9sbGVyLmdldFZpZXcoKS5nZXRCaW5kaW5nQ29udGV4dCgpKTtcblx0XHRcdFx0fX1cblx0XHRcdFx0dmlzaWJsZT17Z2V0U3dpdGNoVG9EcmFmdFZpc2liaWxpdHkoZW50aXR5c2V0KSBhcyB1bmtub3duIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPn1cblx0XHRcdC8+XG5cdFx0KTtcblx0XHRyZXR1cm4gZHJhZnRUb2dnbGU7XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BZ0NxQkEsV0FBVyxJQUFBQyxJQUFBLEdBRC9CQyxjQUFjLENBQUMsMkJBQTJCLENBQUMsRUFBQUMsS0FBQSxHQUUxQ0Msa0JBQWtCLENBQUMsK0JBQStCLENBQUMsRUFBQUMsS0FBQSxHQUduREMsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFVLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBVzdCRixRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFO0VBQVMsQ0FBQyxDQUFDLEVBQUFFLEtBQUEsR0FHNUJILFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBUyxDQUFDLENBQUMsRUFBQUcsS0FBQSxHQUc1QkMsZUFBZSxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQUdqQkQsZUFBZSxDQUFDLENBQUMsRUFBQVYsSUFBQSxDQUFBWSxNQUFBLElBQUFDLE9BQUEsMEJBQUFDLGNBQUE7SUFPbEIsU0FBQWYsWUFBWWdCLEtBQW1ELEVBQUVDLE1BQXlCLEVBQUU7TUFBQSxJQUFBQyxLQUFBO01BQzNGQSxLQUFBLEdBQUFILGNBQUEsQ0FBQUksSUFBQSxPQUFNSCxLQUFLLEVBQUVDLE1BQU0sQ0FBQztNQUFDRywwQkFBQSxDQUFBRixLQUFBLGlEQUFBRyxXQUFBLEVBQUFILEtBQUE7TUFBQUUsMEJBQUEsQ0FBQUYsS0FBQSxhQUFBSSxZQUFBLEVBQUFKLEtBQUE7TUFBQUEsS0FBQSxDQXJCTEssbUJBQW1CLEdBQUcsZUFBZTtNQUFBTCxLQUFBLENBRXJDTSxvQkFBb0IsR0FBRyxnQkFBZ0I7TUFBQUosMEJBQUEsQ0FBQUYsS0FBQSxRQUFBTyxZQUFBLEVB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
|
|
283
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEcmFmdFRvZ2dsZSIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwiaW1wbGVtZW50SW50ZXJmYWNlIiwiX2RlYzMiLCJwcm9wZXJ0eSIsInR5cGUiLCJfZGVjNCIsIl9kZWM1IiwiX2RlYzYiLCJkZWZpbmVSZWZlcmVuY2UiLCJfZGVjNyIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQnVpbGRpbmdCbG9jayIsInByb3BzIiwib3RoZXJzIiwiX3RoaXMiLCJjYWxsIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsIl9kZXNjcmlwdG9yMiIsIlNXSVRDSF9UT19EUkFGVF9LRVkiLCJTV0lUQ0hfVE9fQUNUSVZFX0tFWSIsIl9kZXNjcmlwdG9yMyIsIl9kZXNjcmlwdG9yNCIsIl9kZXNjcmlwdG9yNSIsIl9kZXNjcmlwdG9yNiIsImluaXRpYWxTZWxlY3RlZEtleSIsIl9oaWRkZW5EcmFmdCIsImhhbmRsZVNlbGVjdGVkSXRlbUNoYW5nZSIsInNlbGVjdGVkSXRlbUtleSIsIl9jb250YWluaW5nVmlldyIsImdldENvbnRyb2xsZXIiLCJlZGl0RmxvdyIsInRvZ2dsZURyYWZ0QWN0aXZlIiwiZ2V0QmluZGluZ0NvbnRleHQiLCJwb3BvdmVyIiwiY2xvc2UiLCJvcGVuU3dpdGNoQWN0aXZlUG9wb3ZlciIsImV2ZW50Iiwic291cmNlQ29udHJvbCIsImdldFNvdXJjZSIsImNvbnRhaW5pbmdWaWV3IiwiQ29tbW9uVXRpbHMiLCJnZXRUYXJnZXRWaWV3IiwiZGVzdHJveSIsImNvbnRleHQiLCJpc0FjdGl2ZUVudGl0eSIsImdldE9iamVjdCIsIklzQWN0aXZlRW50aXR5IiwiY3JlYXRlUG9wb3ZlciIsImFkZERlcGVuZGVudCIsImF0dGFjaEV2ZW50T25jZSIsIm9wZW5CeSIsImF0dGFjaE1vZGVsQ29udGV4dENoYW5nZSIsImhhbmRsZVZpc2liaWxpdHkiLCJzZWxmIiwiY29udGVudCIsImdldEJpbmRpbmciLCJhdHRhY2hFdmVudCIsImxvY2FsRXZlbnQiLCJ2aXNpYmxlIiwiZ2V0RXh0ZXJuYWxWYWx1ZSIsImRldGFjaE1vZGVsQ29udGV4dENoYW5nZSIsIl9leHBvcnRzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJvbk1ldGFkYXRhQXZhaWxhYmxlIiwiY29udHJvbGxlciIsIl9nZXRPd25lciIsImdldFJvb3RDb250cm9sbGVyIiwiZ2V0QXBwQ29tcG9uZW50IiwiZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMiLCJnZXRDYXBhYmlsaXRpZXMiLCJIaWRkZW5EcmFmdCIsImVuYWJsZWQiLCJjcmVhdGVDb250ZW50IiwiZ2V0RW5hYmxlZCIsImdldFByb3BlcnR5IiwiZ2V0T3ZlcmZsb3dUb29sYmFyQ29uZmlnIiwiY2FuT3ZlcmZsb3ciLCJjaGVja0NvbGxhYm9yYXRpb25EcmFmdFJvb3QiLCJlbnRpdHlTZXQiLCJhbm5vdGF0aW9ucyIsIkNvbW1vbiIsIkRyYWZ0Um9vdCIsIlNoYXJlQWN0aW9uIiwiZ2V0U3dpdGNoVG9BY3RpdmVWaXNpYmlsaXR5IiwiY2hlY2tEcmFmdFN0YXRlIiwiY29tcGlsZUV4cHJlc3Npb24iLCJhbmQiLCJwYXRoSW5Nb2RlbCIsIlVJIiwiSXNFZGl0YWJsZSIsIkRyYWZ0IiwiSXNDcmVhdGVkQnlNZSIsIm5vdCIsIklzQ3JlYXRlTW9kZSIsImdldFN3aXRjaFRvRHJhZnRWaXNpYmlsaXR5IiwiZ2V0VmlzaWJpbGl0eSIsImlmRWxzZSIsImVxdWFsIiwib3IiLCJJc09mQ29sbGFib3JhdGl2ZVR5cGUiLCJkcmFmdElkIiwiY3JlYXRlSWQiLCJhY3RpdmVJZCIsImlzRHJhZnRDdXJyZW50IiwiaW5pdGlhbEZvY3VzSWQiLCJfanN4IiwiUmVzcG9uc2l2ZVBvcG92ZXIiLCJzaG93SGVhZGVyIiwiY29udGVudFdpZHRoIiwidmVydGljYWxTY3JvbGxpbmciLCJjbGFzcyIsInBsYWNlbWVudCIsImluaXRpYWxGb2N1cyIsImNoaWxkcmVuIiwiX2pzeHMiLCJMaXN0IiwiU3RhbmRhcmRMaXN0SXRlbSIsImlkIiwidGl0bGUiLCJwcmVzcyIsImNvbnRleHRQYXRoVG9Vc2UiLCJwcmVwcm9jZXNzb3JDb250ZXh0IiwiZnVsbENvbnRleHRQYXRoIiwib2RhdGFNZXRhTW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsImNvbnRleHRQYXRoIiwiZW50aXR5c2V0IiwiTWV0YU1vZGVsQ29udmVydGVyIiwiY29udmVydE1ldGFNb2RlbENvbnRleHQiLCJ0ZXh0VmFsdWUiLCJFbnRpdHkiLCJIYXNEcmFmdCIsImludmlzaWJsZVRleHQiLCJJbnZpc2libGVUZXh0IiwidGV4dCIsInRvU3RhdGljIiwiZHJhZnRUb2dnbGUiLCJCdXR0b24iLCJpY29uIiwiaWNvbkZpcnN0IiwiYXJpYURlc2NyaWJlZEJ5IiwidW5kZWZpbmVkIiwiZ2V0VmlldyIsIkNvbW1hbmRFeGVjdXRpb24iLCJjb21tYW5kIiwiZXhlY3V0ZSIsIkJ1aWxkaW5nQmxvY2siLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkRyYWZ0VG9nZ2xlLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEVudGl0eVNldCB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24sIENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBhbmQsIGNvbXBpbGVFeHByZXNzaW9uLCBlcXVhbCwgaWZFbHNlLCBub3QsIG9yLCBwYXRoSW5Nb2RlbCB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBkZWZpbmVSZWZlcmVuY2UsIGRlZmluZVVJNUNsYXNzLCBpbXBsZW1lbnRJbnRlcmZhY2UsIHByb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvanN4LXJ1bnRpbWUvanN4XCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCBCdWlsZGluZ0Jsb2NrIGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy9CdWlsZGluZ0Jsb2NrXCI7XG5pbXBvcnQgQ29tbWFuZEV4ZWN1dGlvbiBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbHMvQ29tbWFuZEV4ZWN1dGlvblwiO1xuaW1wb3J0IHR5cGUgeyBIaWRkZW5EcmFmdCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCAqIGFzIE1ldGFNb2RlbENvbnZlcnRlciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB7IERyYWZ0LCBFbnRpdHksIFVJIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ0hlbHBlclwiO1xuaW1wb3J0IEJ1dHRvbiBmcm9tIFwic2FwL20vQnV0dG9uXCI7XG5pbXBvcnQgTGlzdCBmcm9tIFwic2FwL20vTGlzdFwiO1xuaW1wb3J0IFJlc3BvbnNpdmVQb3BvdmVyIGZyb20gXCJzYXAvbS9SZXNwb25zaXZlUG9wb3ZlclwiO1xuaW1wb3J0IFN0YW5kYXJkTGlzdEl0ZW0gZnJvbSBcInNhcC9tL1N0YW5kYXJkTGlzdEl0ZW1cIjtcbmltcG9ydCB0eXBlIEV2ZW50IGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFwiO1xuaW1wb3J0IHR5cGUgeyAkQ29udHJvbFNldHRpbmdzIH0gZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBJbnZpc2libGVUZXh0IGZyb20gXCJzYXAvdWkvY29yZS9JbnZpc2libGVUZXh0XCI7XG5pbXBvcnQgdHlwZSBJdGVtIGZyb20gXCJzYXAvdWkvY29yZS9JdGVtXCI7XG5pbXBvcnQgdHlwZSBWaWV3IGZyb20gXCJzYXAvdWkvY29yZS9tdmMvVmlld1wiO1xuaW1wb3J0IHR5cGUgUHJvcGVydHlCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvUHJvcGVydHlCaW5kaW5nXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgT2JqZWN0UGFnZUNvbnRyb2xsZXIgZnJvbSBcIi4uL09iamVjdFBhZ2VDb250cm9sbGVyLmNvbnRyb2xsZXJcIjtcbmltcG9ydCB7IGNoZWNrRHJhZnRTdGF0ZSB9IGZyb20gXCIuLi9PYmplY3RQYWdlVGVtcGxhdGluZ1wiO1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLm1hY3Jvcy5EcmFmdFRvZ2dsZVwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRHJhZnRUb2dnbGUgZXh0ZW5kcyBCdWlsZGluZ0Jsb2NrPEJ1dHRvbj4ge1xuXHRAaW1wbGVtZW50SW50ZXJmYWNlKFwic2FwLm0uSU92ZXJmbG93VG9vbGJhckNvbnRlbnRcIilcblx0X19pbXBsZW1lbnRzX19zYXBfbV9JT3ZlcmZsb3dUb29sYmFyQ29udGVudCA9IHRydWU7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0cHVibGljIHZpc2libGUhOiBib29sZWFuO1xuXG5cdHByaXZhdGUgX2NvbnRhaW5pbmdWaWV3ITogVmlldztcblxuXHRwcml2YXRlIHBvcG92ZXI/OiBSZXNwb25zaXZlUG9wb3ZlcjtcblxuXHRwcml2YXRlIHJlYWRvbmx5IFNXSVRDSF9UT19EUkFGVF9LRVkgPSBcInN3aXRjaFRvRHJhZnRcIjtcblxuXHRwcml2YXRlIHJlYWRvbmx5IFNXSVRDSF9UT19BQ1RJVkVfS0VZID0gXCJzd2l0Y2hUb0FjdGl2ZVwiO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0cHVibGljIGlkPzogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0cHVibGljIGNvbnRleHRQYXRoPzogc3RyaW5nO1xuXG5cdEBkZWZpbmVSZWZlcmVuY2UoKVxuXHRwdWJsaWMgc3dpdGNoVG9BY3RpdmVSZWYhOiBSZWY8SXRlbT47XG5cblx0QGRlZmluZVJlZmVyZW5jZSgpXG5cdHB1YmxpYyBzd2l0Y2hUb0RyYWZ0UmVmITogUmVmPEl0ZW0+O1xuXG5cdHByaXZhdGUgaW5pdGlhbFNlbGVjdGVkS2V5OiBzdHJpbmcgPSB0aGlzLlNXSVRDSF9UT19BQ1RJVkVfS0VZO1xuXG5cdHByaXZhdGUgX2hpZGRlbkRyYWZ0ID0gZmFsc2U7XG5cblx0Y29uc3RydWN0b3IocHJvcHM6ICRDb250cm9sU2V0dGluZ3MgJiBQcm9wZXJ0aWVzT2Y8RHJhZnRUb2dnbGU+LCBvdGhlcnM/OiAkQ29udHJvbFNldHRpbmdzKSB7XG5cdFx0c3VwZXIocHJvcHMsIG90aGVycyk7XG5cdFx0dGhpcy5hdHRhY2hNb2RlbENvbnRleHRDaGFuZ2UoZnVuY3Rpb24gaGFuZGxlVmlzaWJpbGl0eShldmVudDogRXZlbnQpIHtcblx0XHRcdC8vIEZvcmNlZCB0byBkb3VibGUgY2FzdCB0byBhdm9pZCB0eXBpbmcgZXJyb3JzLlxuXHRcdFx0Y29uc3Qgc2VsZiA9IGV2ZW50LmdldFNvdXJjZSgpIGFzIHVua25vd24gYXMgRHJhZnRUb2dnbGU7XG5cdFx0XHRpZiAoc2VsZi5jb250ZW50Py5nZXRCaW5kaW5nKFwidmlzaWJsZVwiKSkge1xuXHRcdFx0XHRzZWxmLmNvbnRlbnQ/LmdldEJpbmRpbmcoXCJ2aXNpYmxlXCIpPy5hdHRhY2hFdmVudChcImNoYW5nZVwiLCAobG9jYWxFdmVudDogRXZlbnQ8e30sIFByb3BlcnR5QmluZGluZz4pID0+IHtcblx0XHRcdFx0XHRzZWxmLnZpc2libGUgPSBsb2NhbEV2ZW50LmdldFNvdXJjZSgpLmdldEV4dGVybmFsVmFsdWUoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHNlbGYuZGV0YWNoTW9kZWxDb250ZXh0Q2hhbmdlKGhhbmRsZVZpc2liaWxpdHksIHNlbGYpO1xuXHRcdFx0fVxuXHRcdH0sIHRoaXMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXIgZm9yIHRoZSBvbk1ldGFkYXRhQXZhaWxhYmxlIGV2ZW50LlxuXHQgKi9cblx0b25NZXRhZGF0YUF2YWlsYWJsZSgpOiB2b2lkIHtcblx0XHRjb25zdCBjb250cm9sbGVyID0gdGhpcy5fZ2V0T3duZXIoKT8uZ2V0Um9vdENvbnRyb2xsZXIoKSBhcyBPYmplY3RQYWdlQ29udHJvbGxlcjtcblx0XHR0aGlzLl9oaWRkZW5EcmFmdCA9IChjb250cm9sbGVyLmdldEFwcENvbXBvbmVudCgpLmdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzKCkuZ2V0Q2FwYWJpbGl0aWVzKCkuSGlkZGVuRHJhZnQgYXMgSGlkZGVuRHJhZnQpXG5cdFx0XHQ/LmVuYWJsZWQ7XG5cdFx0aWYgKCF0aGlzLmNvbnRlbnQgJiYgIXRoaXMuX2hpZGRlbkRyYWZ0KSB7XG5cdFx0XHR0aGlzLmNvbnRlbnQgPSB0aGlzLmNyZWF0ZUNvbnRlbnQoKTtcblx0XHR9XG5cdH1cblxuXHRnZXRFbmFibGVkKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLmNvbnRlbnQ/LmdldFByb3BlcnR5KFwiZW5hYmxlZFwiKSA/PyB0cnVlO1xuXHR9XG5cblx0Z2V0T3ZlcmZsb3dUb29sYmFyQ29uZmlnKCk6IG9iamVjdCB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGNhbk92ZXJmbG93OiB0cnVlXG5cdFx0fTtcblx0fVxuXG5cdGhhbmRsZVNlbGVjdGVkSXRlbUNoYW5nZSA9IChzZWxlY3RlZEl0ZW1LZXk6IHN0cmluZyk6IHZvaWQgPT4ge1xuXHRcdGlmIChzZWxlY3RlZEl0ZW1LZXkgIT09IHRoaXMuaW5pdGlhbFNlbGVjdGVkS2V5KSB7XG5cdFx0XHQodGhpcy5fY29udGFpbmluZ1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIFBhZ2VDb250cm9sbGVyKS5lZGl0Rmxvdy50b2dnbGVEcmFmdEFjdGl2ZShcblx0XHRcdFx0dGhpcy5fY29udGFpbmluZ1ZpZXcuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0XG5cdFx0XHQpO1xuXHRcdH1cblx0XHR0aGlzLnBvcG92ZXI/LmNsb3NlKCk7XG5cdH07XG5cblx0LyoqXG5cdCAqIEZ1bmN0aW9uIHRvIGNoZWNrIGlmIHRoZSBlbnRpdHlTZXQgaXMgYSBkcmFmdCByb290IHRoYXQgc3VwcG9ydHMgY29sbGFib3JhdGlvbi5cblx0ICogQHBhcmFtIGVudGl0eVNldCBUaGUgY3VycmVudCBlbnRpdHkgc2V0LlxuXHQgKiBAcmV0dXJucyBSZXR1cm5zIHRoZSBCb29sZWFuIHZhbHVlIGJhc2VkIG9uIGRyYWZ0IHN0YXRlXG5cdCAqL1xuXHRjaGVja0NvbGxhYm9yYXRpb25EcmFmdFJvb3QoZW50aXR5U2V0OiBFbnRpdHlTZXQpOiBib29sZWFuIHtcblx0XHRpZiAoZW50aXR5U2V0LmFubm90YXRpb25zPy5Db21tb24/LkRyYWZ0Um9vdD8uU2hhcmVBY3Rpb24pIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEZ1bmN0aW9uIHRvIGdldCB0aGUgdmlzaWJpbGl0eSBmb3IgdGhlIFN3aXRjaFRvQWN0aXZlIGJ1dHRvbiBpbiB0aGUgb2JqZWN0IHBhZ2Ugb3Igc3Vib2JqZWN0IHBhZ2UuXG5cdCAqIEBwYXJhbSBlbnRpdHlTZXQgVGhlIGN1cnJlbnQgZW50aXR5IHNldC5cblx0ICogQHJldHVybnMgUmV0dXJucyBleHByZXNzaW9uIGJpbmRpbmcgb3IgQm9vbGVhbiB2YWx1ZSBiYXNlZCBvbiB0aGUgZHJhZnQgc3RhdGVcblx0ICovXG5cdGdldFN3aXRjaFRvQWN0aXZlVmlzaWJpbGl0eShlbnRpdHlTZXQ6IEVudGl0eVNldCk6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIHwgYm9vbGVhbiB7XG5cdFx0aWYgKGNoZWNrRHJhZnRTdGF0ZShlbnRpdHlTZXQpKSB7XG5cdFx0XHRpZiAodGhpcy5jaGVja0NvbGxhYm9yYXRpb25EcmFmdFJvb3QoZW50aXR5U2V0KSkge1xuXHRcdFx0XHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oYW5kKHBhdGhJbk1vZGVsKFwiSGFzQWN0aXZlRW50aXR5XCIpLCBVSS5Jc0VkaXRhYmxlKSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oYW5kKERyYWZ0LklzQ3JlYXRlZEJ5TWUsIFVJLklzRWRpdGFibGUsIG5vdChVSS5Jc0NyZWF0ZU1vZGUpKSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogRnVuY3Rpb24gdG8gZ2V0IHRoZSB2aXNpYmlsaXR5IGZvciB0aGUgU3dpdGNoVG9EcmFmdCBidXR0b24gaW4gdGhlIG9iamVjdCBwYWdlIG9yIHN1Ym9iamVjdCBwYWdlLlxuXHQgKiBAcGFyYW0gZW50aXR5U2V0IFRoZSBjdXJyZW50IGVudGl0eSBzZXQuXG5cdCAqIEByZXR1cm5zIFJldHVybnMgZXhwcmVzc2lvbiBiaW5kaW5nIG9yIEJvb2xlYW4gdmFsdWUgYmFzZWQgb24gdGhlIGRyYWZ0IHN0YXRlXG5cdCAqL1xuXHRnZXRTd2l0Y2hUb0RyYWZ0VmlzaWJpbGl0eShlbnRpdHlTZXQ6IEVudGl0eVNldCk6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIHwgYm9vbGVhbiB7XG5cdFx0aWYgKGNoZWNrRHJhZnRTdGF0ZShlbnRpdHlTZXQpKSB7XG5cdFx0XHRpZiAodGhpcy5jaGVja0NvbGxhYm9yYXRpb25EcmFmdFJvb3QoZW50aXR5U2V0KSkge1xuXHRcdFx0XHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oYW5kKHBhdGhJbk1vZGVsKFwiSGFzRHJhZnRFbnRpdHlcIiksIG5vdChVSS5Jc0VkaXRhYmxlKSkpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKGFuZChEcmFmdC5Jc0NyZWF0ZWRCeU1lLCBub3QoVUkuSXNFZGl0YWJsZSksIG5vdChVSS5Jc0NyZWF0ZU1vZGUpLCBwYXRoSW5Nb2RlbChcIkhhc0RyYWZ0RW50aXR5XCIpKSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogRnVuY3Rpb24gdG8gZ2V0IHRoZSB2aXNpYmlsaXR5IGZvciB0aGUgU3dpdGNoRHJhZnRBbmRBY3RpdmUgYnV0dG9uIGluIHRoZSBvYmplY3QgcGFnZSBvciBzdWJvYmplY3QgcGFnZS5cblx0ICogQHBhcmFtIGVudGl0eVNldCBUaGUgY3VycmVudCBlbnRpdHkgc2V0LlxuXHQgKiBAcmV0dXJucyBSZXR1cm5zIGV4cHJlc3Npb24gYmluZGluZyBvciBCb29sZWFuIHZhbHVlIGJhc2VkIG9uIHRoZSBkcmFmdCBzdGF0ZVxuXHQgKi9cblx0Z2V0VmlzaWJpbGl0eShlbnRpdHlTZXQ6IEVudGl0eVNldCk6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIHwgYm9vbGVhbiB7XG5cdFx0aWYgKGNoZWNrRHJhZnRTdGF0ZShlbnRpdHlTZXQpKSB7XG5cdFx0XHRpZiAodGhpcy5jaGVja0NvbGxhYm9yYXRpb25EcmFmdFJvb3QoZW50aXR5U2V0KSkge1xuXHRcdFx0XHQvLyBPbiBhbiBhY3RpdmUgaW5zdGFuY2UsIHdlIGNoZWNrIGlmIHRoZXJlJ3MgYSBkcmFmdC4gT24gYSBkcmFmdCBpbnN0YW5jZSwgd2UgY2hlY2sgaWYgdGhlcmUncyBhbiBhY3RpdmUgZW50aXR5LlxuXHRcdFx0XHQvLyBXZSBhbHNvIGNoZWNrIGVpdGhlciB0aGF0IHRoZSBkcmFmdCBpcyBjb2xsYWJvcmF0aXZlIChhY2Nlc3MgdHlwZSAzKSBvciB0aGF0IHRoZSBkcmFmdCB3YXMgY3JlYXRlZCBieSBtZSAoaW4gY2FzZSBhbiBleGNsdXNpdmUgZHJhZnQgd2FzIGNyZWF0ZWQgYmVmb3JlKSAtLT4gZm9yIGFuIGV4Y2x1c2l2ZSBkcmFmdCBub3QgY3JlYXRlZCBieSBtZSwgd2UgZG9uJ3Qgc2hvdyB0aGUgdG9nZ2xlXG5cdFx0XHRcdHJldHVybiBjb21waWxlRXhwcmVzc2lvbihcblx0XHRcdFx0XHRhbmQoXG5cdFx0XHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0XHRcdHBhdGhJbk1vZGVsKFwiSXNBY3RpdmVFbnRpdHlcIiksXG5cdFx0XHRcdFx0XHRcdGVxdWFsKHBhdGhJbk1vZGVsKFwiSGFzRHJhZnRFbnRpdHlcIiksIHRydWUpLFxuXHRcdFx0XHRcdFx0XHRlcXVhbChwYXRoSW5Nb2RlbChcIkhhc0FjdGl2ZUVudGl0eVwiKSwgdHJ1ZSlcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRvcihEcmFmdC5Jc09mQ29sbGFib3JhdGl2ZVR5cGUsIERyYWZ0LklzQ3JlYXRlZEJ5TWUpXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKGFuZChEcmFmdC5Jc0NyZWF0ZWRCeU1lLCBub3QoVUkuSXNDcmVhdGVNb2RlKSkpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG5cblx0b3BlblN3aXRjaEFjdGl2ZVBvcG92ZXIgPSAoZXZlbnQ6IEV2ZW50PHt9LCBCdXR0b24+KTogUmVzcG9uc2l2ZVBvcG92ZXIgPT4ge1xuXHRcdGNvbnN0IHNvdXJjZUNvbnRyb2wgPSBldmVudC5nZXRTb3VyY2UoKTtcblx0XHRjb25zdCBjb250YWluaW5nVmlldyA9IENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcoc291cmNlQ29udHJvbCk7XG5cdFx0aWYgKHRoaXMucG9wb3Zlcikge1xuXHRcdFx0dGhpcy5wb3BvdmVyLmRlc3Ryb3koKTtcblx0XHRcdGRlbGV0ZSB0aGlzLnBvcG92ZXI7XG5cdFx0fVxuXHRcdGNvbnN0IGNvbnRleHQ6IENvbnRleHQgPSBjb250YWluaW5nVmlldy5nZXRCaW5kaW5nQ29udGV4dCgpO1xuXHRcdGNvbnN0IGlzQWN0aXZlRW50aXR5ID0gY29udGV4dC5nZXRPYmplY3QoKS5Jc0FjdGl2ZUVudGl0eTtcblx0XHR0aGlzLmluaXRpYWxTZWxlY3RlZEtleSA9IGlzQWN0aXZlRW50aXR5ID8gdGhpcy5TV0lUQ0hfVE9fQUNUSVZFX0tFWSA6IHRoaXMuU1dJVENIX1RPX0RSQUZUX0tFWTtcblx0XHRjb25zdCBwb3BvdmVyID0gdGhpcy5jcmVhdGVQb3BvdmVyKCk7XG5cdFx0dGhpcy5wb3BvdmVyID0gcG9wb3ZlcjtcblxuXHRcdHRoaXMuX2NvbnRhaW5pbmdWaWV3ID0gY29udGFpbmluZ1ZpZXc7XG5cdFx0Y29udGFpbmluZ1ZpZXcuYWRkRGVwZW5kZW50KHBvcG92ZXIpO1xuXHRcdHBvcG92ZXIuYXR0YWNoRXZlbnRPbmNlKFwiYWZ0ZXJDbG9zZVwiLCAoKSA9PiB7XG5cdFx0XHRwb3BvdmVyLmRlc3Ryb3koKTtcblx0XHRcdGlmICh0aGlzLnBvcG92ZXIgPT09IHBvcG92ZXIpIHtcblx0XHRcdFx0ZGVsZXRlIHRoaXMucG9wb3Zlcjtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRwb3BvdmVyLm9wZW5CeShzb3VyY2VDb250cm9sKTtcblx0XHRyZXR1cm4gcG9wb3Zlcjtcblx0fTtcblxuXHRjcmVhdGVQb3BvdmVyKCk6IFJlc3BvbnNpdmVQb3BvdmVyIHtcblx0XHRjb25zdCBkcmFmdElkID0gdGhpcy5jcmVhdGVJZChcIkRyYWZ0VG9nZ2xlSXRlbURyYWZ0XCIpITtcblx0XHRjb25zdCBhY3RpdmVJZCA9IHRoaXMuY3JlYXRlSWQoXCJEcmFmdFRvZ2dsZUl0ZW1BY3RpdmVcIikhO1xuXHRcdGNvbnN0IGlzRHJhZnRDdXJyZW50ID0gdGhpcy5pbml0aWFsU2VsZWN0ZWRLZXkgPT09IHRoaXMuU1dJVENIX1RPX0RSQUZUX0tFWTtcblx0XHRjb25zdCBpbml0aWFsRm9jdXNJZCA9IGlzRHJhZnRDdXJyZW50ID8gYWN0aXZlSWQgOiBkcmFmdElkO1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8UmVzcG9uc2l2ZVBvcG92ZXJcblx0XHRcdFx0c2hvd0hlYWRlcj17ZmFsc2V9XG5cdFx0XHRcdGNvbnRlbnRXaWR0aD17XCIxNS42MjVyZW1cIn1cblx0XHRcdFx0dmVydGljYWxTY3JvbGxpbmc9e2ZhbHNlfVxuXHRcdFx0XHRjbGFzcz17XCJzYXBVaU5vQ29udGVudFBhZGRpbmdcIn1cblx0XHRcdFx0cGxhY2VtZW50PXtcIkJvdHRvbVwifVxuXHRcdFx0XHRpbml0aWFsRm9jdXM9e2luaXRpYWxGb2N1c0lkfVxuXHRcdFx0PlxuXHRcdFx0XHQ8TGlzdD5cblx0XHRcdFx0XHQ8U3RhbmRhcmRMaXN0SXRlbVxuXHRcdFx0XHRcdFx0aWQ9e2RyYWZ0SWR9XG5cdFx0XHRcdFx0XHR0aXRsZT17XCJ7c2FwLmZlLmkxOG4+Q19DT01NT05fT0JKRUNUX1BBR0VfRElTUExBWV9EUkFGVF9NSVR9XCJ9XG5cdFx0XHRcdFx0XHR0eXBlPXtcIkFjdGl2ZVwifVxuXHRcdFx0XHRcdFx0cHJlc3M9eygpOiB2b2lkID0+IHRoaXMuaGFuZGxlU2VsZWN0ZWRJdGVtQ2hhbmdlKHRoaXMuU1dJVENIX1RPX0RSQUZUX0tFWSl9XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHQ8U3RhbmRhcmRMaXN0SXRlbVxuXHRcdFx0XHRcdFx0aWQ9e2FjdGl2ZUlkfVxuXHRcdFx0XHRcdFx0dGl0bGU9e1wie3NhcC5mZS5pMThuPkNfQ09NTU9OX09CSkVDVF9QQUdFX0RJU1BMQVlfU0FWRURfVkVSU0lPTl9NSVR9XCJ9XG5cdFx0XHRcdFx0XHR0eXBlPXtcIkFjdGl2ZVwifVxuXHRcdFx0XHRcdFx0cHJlc3M9eygpOiB2b2lkID0+IHRoaXMuaGFuZGxlU2VsZWN0ZWRJdGVtQ2hhbmdlKHRoaXMuU1dJVENIX1RPX0FDVElWRV9LRVkpfVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdDwvTGlzdD5cblx0XHRcdDwvUmVzcG9uc2l2ZVBvcG92ZXI+XG5cdFx0KTtcblx0fVxuXG5cdGNyZWF0ZUNvbnRlbnQoKTogQnV0dG9uIHtcblx0XHRjb25zdCBjb250ZXh0UGF0aFRvVXNlID0gdGhpcy5fZ2V0T3duZXIoKT8ucHJlcHJvY2Vzc29yQ29udGV4dD8uZnVsbENvbnRleHRQYXRoO1xuXHRcdGNvbnN0IG9kYXRhTWV0YU1vZGVsID0gdGhpcy5fZ2V0T3duZXIoKT8uZ2V0TWV0YU1vZGVsKCk7XG5cdFx0Y29uc3QgY29udGV4dCA9IG9kYXRhTWV0YU1vZGVsPy5jcmVhdGVCaW5kaW5nQ29udGV4dCh0aGlzLmNvbnRleHRQYXRoID8/IGNvbnRleHRQYXRoVG9Vc2UhKTtcblx0XHRjb25zdCBlbnRpdHlzZXQgPSBNZXRhTW9kZWxDb252ZXJ0ZXIuY29udmVydE1ldGFNb2RlbENvbnRleHQoY29udGV4dCEpIGFzIEVudGl0eVNldDtcblx0XHRjb25zdCB0ZXh0VmFsdWUgPSBpZkVsc2UoXG5cdFx0XHRhbmQobm90KFVJLklzRWRpdGFibGUpLCBub3QoVUkuSXNDcmVhdGVNb2RlKSwgRW50aXR5Lkhhc0RyYWZ0KSxcblx0XHRcdHBhdGhJbk1vZGVsKFwiQ19DT01NT05fT0JKRUNUX1BBR0VfU0FWRURfVkVSU0lPTl9CVVRcIiwgXCJzYXAuZmUuaTE4blwiKSxcblx0XHRcdHBhdGhJbk1vZGVsKFwiQ19DT01NT05fT0JKRUNUX1BBR0VfRFJBRlRfQlVUXCIsIFwic2FwLmZlLmkxOG5cIilcblx0XHQpO1xuXHRcdGNvbnN0IHZpc2libGUgPSB0aGlzLmdldFZpc2liaWxpdHkoZW50aXR5c2V0KTtcblx0XHRjb25zdCBjb250cm9sbGVyID0gdGhpcy5fZ2V0T3duZXIoKT8uZ2V0Um9vdENvbnRyb2xsZXIoKSBhcyBPYmplY3RQYWdlQ29udHJvbGxlcjtcblx0XHRjb25zdCBpbnZpc2libGVUZXh0ID0gKFxuXHRcdFx0PEludmlzaWJsZVRleHRcblx0XHRcdFx0dGV4dD1cIntzYXAuZmUuaTE4bj5UX0hFQURFUl9EQVRBUE9JTlRfVElUTEVfRFJBRlRfU1dJVENIRVJfQVJJQV9CVVRUT059XCJcblx0XHRcdFx0aWQ9e3RoaXMuY3JlYXRlSWQoXCJBcmlhVGV4dERyYWZ0U3dpdGNoZXJcIil9XG5cdFx0XHQvPlxuXHRcdCk7XG5cdFx0aW52aXNpYmxlVGV4dC50b1N0YXRpYygpO1xuXHRcdGNvbnN0IGRyYWZ0VG9nZ2xlID0gKFxuXHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRpZD17dGhpcy5jcmVhdGVJZChcIl9kdFwiKX1cblx0XHRcdFx0ZHQ6ZGVzaWdudGltZT1cIm5vdC1hZGFwdGFibGVcIlxuXHRcdFx0XHR0ZXh0PXt0ZXh0VmFsdWV9XG5cdFx0XHRcdHZpc2libGU9e3Zpc2libGV9XG5cdFx0XHRcdGljb249XCJzYXAtaWNvbjovL25hdmlnYXRpb24tZG93bi1hcnJvd1wiXG5cdFx0XHRcdGljb25GaXJzdD17ZmFsc2V9XG5cdFx0XHRcdHR5cGU9XCJUcmFuc3BhcmVudFwiXG5cdFx0XHRcdHByZXNzPXsoZXZlbnQ6IEV2ZW50PHt9LCBCdXR0b24+KTogUmVzcG9uc2l2ZVBvcG92ZXIgPT4gdGhpcy5vcGVuU3dpdGNoQWN0aXZlUG9wb3ZlcihldmVudCl9XG5cdFx0XHRcdGFyaWFEZXNjcmliZWRCeT17dGhpcy5jcmVhdGVJZChcIkFyaWFUZXh0RHJhZnRTd2l0Y2hlclwiKSA/IFt0aGlzLmNyZWF0ZUlkKFwiQXJpYVRleHREcmFmdFN3aXRjaGVyXCIpIV0gOiB1bmRlZmluZWR9XG5cdFx0XHQvPlxuXHRcdCk7XG5cdFx0ZHJhZnRUb2dnbGUuYWRkRGVwZW5kZW50KGludmlzaWJsZVRleHQpO1xuXHRcdGNvbnRyb2xsZXIuZ2V0VmlldygpLmFkZERlcGVuZGVudChcblx0XHRcdDxDb21tYW5kRXhlY3V0aW9uXG5cdFx0XHRcdGNvbW1hbmQ9XCJTd2l0Y2hUb0FjdGl2ZU9iamVjdFwiXG5cdFx0XHRcdGV4ZWN1dGU9eygpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRjb250cm9sbGVyLmVkaXRGbG93LnRvZ2dsZURyYWZ0QWN0aXZlKGNvbnRyb2xsZXIuZ2V0VmlldygpLmdldEJpbmRpbmdDb250ZXh0KCkpO1xuXHRcdFx0XHR9fVxuXHRcdFx0XHR2aXNpYmxlPXt0aGlzLmdldFN3aXRjaFRvQWN0aXZlVmlzaWJpbGl0eShlbnRpdHlzZXQpIGFzIHVua25vd24gYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+fVxuXHRcdFx0Lz5cblx0XHQpO1xuXHRcdGNvbnRyb2xsZXIuZ2V0VmlldygpLmFkZERlcGVuZGVudChcblx0XHRcdDxDb21tYW5kRXhlY3V0aW9uXG5cdFx0XHRcdGNvbW1hbmQ9XCJTd2l0Y2hUb0RyYWZ0T2JqZWN0XCJcblx0XHRcdFx0ZXhlY3V0ZT17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdGNvbnRyb2xsZXIuZWRpdEZsb3cudG9nZ2xlRHJhZnRBY3RpdmUoY29udHJvbGxlci5nZXRWaWV3KCkuZ2V0QmluZGluZ0NvbnRleHQoKSk7XG5cdFx0XHRcdH19XG5cdFx0XHRcdHZpc2libGU9e3RoaXMuZ2V0U3dpdGNoVG9EcmFmdFZpc2liaWxpdHkoZW50aXR5c2V0KSBhcyB1bmtub3duIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPn1cblx0XHRcdC8+XG5cdFx0KTtcblx0XHRyZXR1cm4gZHJhZnRUb2dnbGU7XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUEyQnFCQSxXQUFXLElBQUFDLElBQUEsR0FEL0JDLGNBQWMsQ0FBQywyQkFBMkIsQ0FBQyxFQUFBQyxLQUFBLEdBRTFDQyxrQkFBa0IsQ0FBQywrQkFBK0IsQ0FBQyxFQUFBQyxLQUFB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
|