@rotki/ui-library 2.8.0 → 2.8.1
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/dist/components/index.es.js +10 -10
- package/dist/style.css +1 -1
- package/dist/web-types.json +1 -1
- package/package.json +1 -1
|
@@ -7758,16 +7758,16 @@ const Lr = ["tabindex"], Nr = ["disabled", "value", "placeholder", "readonly"],
|
|
|
7758
7758
|
]), 1040, ["class", "color"]));
|
|
7759
7759
|
};
|
|
7760
7760
|
}
|
|
7761
|
-
}), O1 = "
|
|
7761
|
+
}), O1 = "_tab_b7dy7_1", F1 = {
|
|
7762
7762
|
tab: O1,
|
|
7763
|
-
"tab--vertical": "_tab--
|
|
7764
|
-
"tab--grow": "_tab--
|
|
7765
|
-
"tab--active": "_tab--
|
|
7766
|
-
"tab-indicator--start": "_tab-indicator--
|
|
7767
|
-
"tab--disabled": "_tab--
|
|
7768
|
-
"tab--start": "_tab--
|
|
7769
|
-
"tab--center": "_tab--
|
|
7770
|
-
"tab--end": "_tab--
|
|
7763
|
+
"tab--vertical": "_tab--vertical_b7dy7_5",
|
|
7764
|
+
"tab--grow": "_tab--grow_b7dy7_8",
|
|
7765
|
+
"tab--active": "_tab--active_b7dy7_11",
|
|
7766
|
+
"tab-indicator--start": "_tab-indicator--start_b7dy7_15",
|
|
7767
|
+
"tab--disabled": "_tab--disabled_b7dy7_24",
|
|
7768
|
+
"tab--start": "_tab--start_b7dy7_27",
|
|
7769
|
+
"tab--center": "_tab--center_b7dy7_30",
|
|
7770
|
+
"tab--end": "_tab--end_b7dy7_33"
|
|
7771
7771
|
}, U1 = {
|
|
7772
7772
|
$style: F1
|
|
7773
7773
|
}, Tm = /* @__PURE__ */ ye(N1, [["__cssModules", U1]]), Y1 = /* @__PURE__ */ re({
|
|
@@ -8027,4 +8027,4 @@ export {
|
|
|
8027
8027
|
Br as RuiTimePicker,
|
|
8028
8028
|
zs as RuiTooltip
|
|
8029
8029
|
};
|
|
8030
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZXMuanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL2ljb25zL1J1aUljb24udnVlIiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvYWNjb3JkaW9ucy9hY2NvcmRpb24vUnVpQWNjb3JkaW9uLnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL2FjY29yZGlvbnMvYWNjb3JkaW9ucy9SdWlBY2NvcmRpb25zLnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL3Byb2dyZXNzL1J1aVByb2dyZXNzLnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL2J1dHRvbnMvYnV0dG9uL1J1aUJ1dHRvbi52dWUiLCIuLi8uLi9zcmMvY29tcG9uZW50cy9hbGVydHMvUnVpQWxlcnQudnVlIiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvYnV0dG9ucy9idXR0b24tZ3JvdXAvUnVpQnV0dG9uR3JvdXAudnVlIiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvY2FsZW5kYXIvc3RhdGUudHMiLCIuLi8uLi9zcmMvY29tcG9uZW50cy9jYWxlbmRhci9SdWlDYWxlbmRhckdyaWQudnVlIiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvaGVscGVycy9SdWlGb3JtVGV4dERldGFpbC52dWUiLCIuLi8uLi9zcmMvY29tcG9uZW50cy9vdmVybGF5cy9tZW51L1J1aU1lbnUudnVlIiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvY2FsZW5kYXIvUnVpQ2FsZW5kYXJNZW51LnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL2NhbGVuZGFyL1J1aUNhbGVuZGFySGVhZGVyLnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL2NhbGVuZGFyL1J1aUNhbGVuZGFyLnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL2NhcmRzL1J1aUNhcmRIZWFkZXIudnVlIiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvY2FyZHMvUnVpQ2FyZC52dWUiLCIuLi8uLi9zcmMvY29tcG9uZW50cy9jaGlwcy9SdWlDaGlwLnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL2NvbG9yLXBpY2tlci91dGlscy50cyIsIi4uLy4uL3NyYy9jb21wb25lbnRzL2NvbG9yLXBpY2tlci9SdWlDb2xvckJvYXJkLnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL292ZXJsYXlzL3Rvb2x0aXAvUnVpVG9vbHRpcC52dWUiLCIuLi8uLi9zcmMvY29tcG9uZW50cy9jb2xvci1waWNrZXIvUnVpQ29sb3JEaXNwbGF5LnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL2NvbG9yLXBpY2tlci9SdWlDb2xvckh1ZS52dWUiLCIuLi8uLi9zcmMvY29tcG9uZW50cy9mb3Jtcy90ZXh0LWZpZWxkL1J1aVRleHRGaWVsZC52dWUiLCIuLi8uLi9zcmMvY29tcG9uZW50cy9jb2xvci1waWNrZXIvUnVpQ29sb3JJbnB1dC52dWUiLCIuLi8uLi9zcmMvY29tcG9uZW50cy9jb2xvci1waWNrZXIvUnVpQ29sb3JQaWNrZXIudnVlIiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvZGF0ZS10aW1lLXBpY2tlci90aW1lem9uZXMudHMiLCIuLi8uLi9zcmMvY29tcG9uZW50cy9mb3Jtcy9hdXRvLWNvbXBsZXRlL1J1aUF1dG9Db21wbGV0ZS52dWUiLCIuLi8uLi9zcmMvY29tcG9uZW50cy90aW1lLXBpY2tlci9SdWlUaW1lUGlja2VyLnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL2RhdGUtdGltZS1waWNrZXIvUnVpRGF0ZVRpbWVQaWNrZXJNZW51LnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL2RhdGUtdGltZS1waWNrZXIvdXRpbHMudHMiLCIuLi8uLi9zcmMvY29tcG9uZW50cy9kYXRlLXRpbWUtcGlja2VyL3VzZS1pbnB1dC1oYW5kbGVyLnRzIiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvZGF0ZS10aW1lLXBpY2tlci90eXBlcy50cyIsIi4uLy4uL3NyYy9jb21wb25lbnRzL2RhdGUtdGltZS1waWNrZXIvdXNlLWtleWJvYXJkLWhhbmRsZXIudHMiLCIuLi8uLi9zcmMvY29tcG9uZW50cy9kYXRlLXRpbWUtcGlja2VyL1J1aURhdGVUaW1lUGlja2VyLnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL2RpdmlkZXIvUnVpRGl2aWRlci52dWUiLCIuLi8uLi9zcmMvY29tcG9uZW50cy9mb3Jtcy9jaGVja2JveC9SdWlDaGVja2JveC52dWUiLCIuLi8uLi9zcmMvY29tcG9uZW50cy9mb3Jtcy9yYWRpby1idXR0b24vcmFkaW8tZ3JvdXAvUnVpUmFkaW9Hcm91cC52dWUiLCIuLi8uLi9zcmMvY29tcG9uZW50cy9mb3Jtcy9yYWRpby1idXR0b24vcmFkaW8vUnVpUmFkaW8udnVlIiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvZm9ybXMvcmV2ZWFsYWJsZS10ZXh0LWZpZWxkL1J1aVJldmVhbGFibGVUZXh0RmllbGQudnVlIiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvZm9ybXMvc2VsZWN0L1J1aU1lbnVTZWxlY3QudnVlIiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvZm9ybXMvc2VsZWN0L1J1aVNpbXBsZVNlbGVjdC52dWUiLCIuLi8uLi9zcmMvY29tcG9uZW50cy9mb3Jtcy9zbGlkZXIvUnVpU2xpZGVyLnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL2Zvcm1zL3N3aXRjaC9SdWlTd2l0Y2gudnVlIiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvZm9ybXMvdGV4dC1hcmVhL1J1aVRleHRBcmVhLnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL2xvYWRlcnMvUnVpU2tlbGV0b25CYXNlLnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL2xvYWRlcnMvUnVpU2tlbGV0b25Mb2FkZXIudnVlIiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvbG9nb3MvbG9nby5zdmciLCIuLi8uLi9zcmMvY29tcG9uZW50cy9sb2dvcy9SdWlMb2dvLnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL292ZXJsYXlzL2JhZGdlL1J1aUJhZGdlLnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL292ZXJsYXlzL2RpYWxvZy9SdWlEaWFsb2cudnVlIiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvb3ZlcmxheXMvYm90dG9tLXNoZWV0L1J1aUJvdHRvbVNoZWV0LnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL292ZXJsYXlzL25hdmlnYXRpb24tZHJhd2VyL1J1aU5hdmlnYXRpb25EcmF3ZXIudnVlIiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvb3ZlcmxheXMvbm90aWZpY2F0aW9uL1J1aU5vdGlmaWNhdGlvbi52dWUiLCIuLi8uLi9zcmMvY29tcG9uZW50cy9zdGVwcGVycy9SdWlGb290ZXJTdGVwcGVyLnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL3N0ZXBwZXJzL1J1aVN0ZXBwZXJDdXN0b21JY29uLnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL3N0ZXBwZXJzL1J1aVN0ZXBwZXJJY29uLnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL3N0ZXBwZXJzL1J1aVN0ZXBwZXIudnVlIiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvdGFibGVzL1J1aUV4cGFuZEJ1dHRvbi52dWUiLCIuLi8uLi9zcmMvY29tcG9uZW50cy90YWJsZXMvUnVpVGFibGVIZWFkLnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL3RhYmxlcy9SdWlUYWJsZVBhZ2luYXRpb24udnVlIiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvdGFibGVzL3RhYmxlX25vX2RhdGFfcGxhY2Vob2xkZXIuc3ZnIiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvdGFibGVzL3RhYmxlX25vX2RhdGFfcGxhY2Vob2xkZXJfZGFyay5zdmciLCIuLi8uLi9zcmMvY29tcG9uZW50cy90YWJsZXMvUnVpRGF0YVRhYmxlLnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL3RhYnMvdGFiLWl0ZW0vUnVpVGFiSXRlbS52dWUiLCIuLi8uLi9zcmMvY29tcG9uZW50cy90YWJzL3RhYi1pdGVtcy9SdWlUYWJJdGVtcy52dWUiLCIuLi8uLi9zcmMvY29tcG9uZW50cy90YWJzL3RhYi9SdWlUYWIudnVlIiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvdGFicy90YWJzL1J1aVRhYnMudnVlIl0sInNvdXJjZXNDb250ZW50IjpbIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG5pbXBvcnQgdHlwZSB7IENvbnRleHRDb2xvcnNUeXBlIH0gZnJvbSAnQC9jb25zdHMvY29sb3JzJztcbmltcG9ydCB7IGlzUnVpSWNvbiwgdHlwZSBSdWlJY29ucyB9IGZyb20gJ0AvaWNvbnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BzIHtcbiAgbmFtZTogUnVpSWNvbnM7XG4gIHNpemU/OiBudW1iZXIgfCBzdHJpbmc7XG4gIGNvbG9yPzogQ29udGV4dENvbG9yc1R5cGU7XG59XG5cbmRlZmluZU9wdGlvbnMoe1xuICBuYW1lOiAnUnVpSWNvbicsXG59KTtcblxuY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgc2l6ZTogMjQsXG4gIGNvbG9yOiB1bmRlZmluZWQsXG59KTtcblxuY29uc3QgeyByZWdpc3RlcmVkSWNvbnMgfSA9IHVzZUljb25zKCk7XG5cbmNvbnN0IGlzRmlsbCA9IGNvbXB1dGVkKCgpID0+IHByb3BzLm5hbWUuZW5kc1dpdGgoJy1maWxsJykpO1xuXG5jb25zdCBjb21wb25lbnRzOiBDb21wdXRlZFJlZjxbc3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XVtdIHwgdW5kZWZpbmVkPiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgY29uc3QgbmFtZSA9IHByb3BzLm5hbWU7XG4gIGlmICghaXNSdWlJY29uKG5hbWUpKSB7XG4gICAgY29uc29sZS53YXJuKGBpY29uICR7bmFtZX0gbXVzdCBiZSBhIHZhbGlkIFJ1aUljb25gKTtcbiAgfVxuICBjb25zdCBmb3VuZCA9IHJlZ2lzdGVyZWRJY29uc1tuYW1lXTtcblxuICBpZiAoIWZvdW5kKSB7XG4gICAgY29uc29sZS5lcnJvcihgSWNvbnMgXCIke25hbWV9XCIgbm90IGZvdW5kLiBNYWtlIHN1cmUgdGhhdCB5b3UgaGF2ZSByZWdpc3RlciB0aGUgaWNvbiB3aGVuIGluc3RhbGxpbmcgdGhlIFJ1aVBsdWdpbmApO1xuICB9XG4gIHJldHVybiBmb3VuZDtcbn0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPHN2Z1xuICAgIDpjbGFzcz1cIlskc3R5bGVbJ3J1aS1pY29uJ10sICRzdHlsZVtjb2xvciA/PyAnJ11dXCJcbiAgICA6aGVpZ2h0PVwic2l6ZVwiXG4gICAgOndpZHRoPVwic2l6ZVwiXG4gICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gID5cbiAgICA8Y29tcG9uZW50XG4gICAgICA6aXM9XCJjb21wb25lbnRbMF1cIlxuICAgICAgdi1mb3I9XCIoY29tcG9uZW50LCBpbmRleCkgaW4gY29tcG9uZW50c1wiXG4gICAgICA6a2V5PVwiaW5kZXhcIlxuICAgICAgdi1iaW5kPVwiY29tcG9uZW50WzFdXCJcbiAgICAgIDpmaWxsPVwiKCFpc0ZpbGwpID8gJ25vbmUnIDogJ2N1cnJlbnRDb2xvcidcIlxuICAgICAgOnN0cm9rZT1cIighaXNGaWxsKSA/ICdjdXJyZW50Q29sb3InIDogJ25vbmUnXCJcbiAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxuICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgIC8+XG4gIDwvc3ZnPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgbW9kdWxlPlxuQHVzZSAnQC9zdHlsZXMvY29sb3JzLnNjc3MnIGFzIGM7XG5cbi5ydWktaWNvbiB7XG4gIEBlYWNoICRjb2xvciBpbiBjLiRjb250ZXh0LWNvbG9ycyB7XG4gICAgJi4jeyRjb2xvcn0ge1xuICAgICAgQGFwcGx5IHRleHQtcnVpLSN7JGNvbG9yfTtcbiAgICB9XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuaW1wb3J0IEljb24gZnJvbSAnQC9jb21wb25lbnRzL2ljb25zL1J1aUljb24udnVlJztcblxuZXhwb3J0IGludGVyZmFjZSBBY2NvcmRpb25Qcm9wcyB7XG4gIG9wZW4/OiBib29sZWFuO1xuICBlYWdlcj86IGJvb2xlYW47XG4gIGhlYWRlckdyb3c/OiBib29sZWFuO1xuICBoZWFkZXJDbGFzcz86IHN0cmluZztcbiAgY29udGVudENsYXNzPzogc3RyaW5nO1xufVxuXG5kZWZpbmVPcHRpb25zKHtcbiAgbmFtZTogJ1J1aUFjY29yZGlvbicsXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG59KTtcblxud2l0aERlZmF1bHRzKGRlZmluZVByb3BzPEFjY29yZGlvblByb3BzPigpLCB7XG4gIG9wZW46IGZhbHNlLFxuICBlYWdlcjogZmFsc2UsXG4gIGhlYWRlckdyb3c6IGZhbHNlLFxuICBoZWFkZXJDbGFzczogJycsXG4gIGNvbnRlbnRDbGFzczogJycsXG59KTtcblxuY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPHtcbiAgKGU6ICdjbGljaycpOiB2b2lkO1xufT4oKTtcblxuZnVuY3Rpb24gY2xpY2soKSB7XG4gIGVtaXQoJ2NsaWNrJyk7XG59XG5cbmNvbnN0IGlubmVyID0gcmVmPEhUTUxEaXZFbGVtZW50PigpO1xuXG5jb25zdCB7IGhlaWdodDogaW5uZXJIZWlnaHQgfSA9IHVzZUVsZW1lbnRTaXplKGlubmVyKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICBjbGFzcz1cImFjY29yZGlvblwiXG4gICAgOmNsYXNzPVwiWyRzdHlsZS5hY2NvcmRpb24sIHsgWyRzdHlsZS5vcGVuXTogb3BlbiB9XVwiXG4gICAgdi1iaW5kPVwiJGF0dHJzXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIHYtaWY9XCIkc2xvdHMuaGVhZGVyXCJcbiAgICAgIGNsYXNzPVwiYWNjb3JkaW9uX19oZWFkZXIgZmxleCBnYXAtMiBpdGVtcy1jZW50ZXJcIlxuICAgICAgOmNsYXNzPVwiW2hlYWRlckNsYXNzLCB7ICd3LWZ1bGwnOiBoZWFkZXJHcm93IH1dXCJcbiAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgQGNsaWNrPVwiY2xpY2soKVwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJ7IGdyb3c6IGhlYWRlckdyb3cgfVwiXG4gICAgICA+XG4gICAgICAgIDxzbG90XG4gICAgICAgICAgbmFtZT1cImhlYWRlclwiXG4gICAgICAgICAgOm9wZW49XCJvcGVuXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPEljb25cbiAgICAgICAgY2xhc3M9XCJ0ZXh0LXJ1aS10ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgIDpjbGFzcz1cIiRzdHlsZS5pY29uXCJcbiAgICAgICAgbmFtZT1cImx1LWNoZXZyb24tZG93blwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIHYtaWY9XCJvcGVuIHx8IGVhZ2VyXCJcbiAgICAgIDpjbGFzcz1cIltjb250ZW50Q2xhc3MsICRzdHlsZS5hY2NvcmRpb25fX2NvbnRlbnRdXCJcbiAgICAgIGNsYXNzPVwiYWNjb3JkaW9uX19jb250ZW50XCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIHJlZj1cImlubmVyXCJcbiAgICAgID5cbiAgICAgICAgPHNsb3RcbiAgICAgICAgICBuYW1lPVwiZGVmYXVsdFwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIiBtb2R1bGU+XG4uYWNjb3JkaW9uIHtcbiAgQGFwcGx5IGZsZXggZmxleC1jb2wgaXRlbXMtc3RhcnQ7XG5cbiAgJi5vcGVuIHtcbiAgICAuYWNjb3JkaW9uIHtcbiAgICAgICZfX2NvbnRlbnQge1xuICAgICAgICBoZWlnaHQ6IGNhbGModi1iaW5kKGlubmVySGVpZ2h0KSAqIDFweCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmljb24ge1xuICAgICAgQGFwcGx5IHRyYW5zZm9ybSAtcm90YXRlLTE4MDtcbiAgICB9XG4gIH1cblxuICAmX19jb250ZW50IHtcbiAgICBAYXBwbHkgZ3JvdyB0cmFuc2l0aW9uLWFsbCBvdmVyZmxvdy1oaWRkZW4gaC0wIHctZnVsbDtcbiAgfVxuXG4gIC5pY29uIHtcbiAgICBAYXBwbHkgdHJhbnNpdGlvbi1hbGw7XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuZXhwb3J0IGludGVyZmFjZSBQcm9wcyB7XG4gIG1vZGVsVmFsdWU/OiBudW1iZXJbXSB8IG51bWJlcjtcbiAgbXVsdGlwbGU/OiBib29sZWFuO1xufVxuXG5kZWZpbmVPcHRpb25zKHtcbiAgbmFtZTogJ1J1aUFjY29yZGlvbnMnLFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxufSk7XG5cbmNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gIG1vZGVsVmFsdWU6IC0xLFxuICBtdWx0aXBsZTogZmFsc2UsXG59KTtcblxuY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPHtcbiAgKGU6ICd1cGRhdGU6bW9kZWwtdmFsdWUnLCBtb2RlbFZhbHVlOiBudW1iZXIgfCBudW1iZXJbXSk6IHZvaWQ7XG59PigpO1xuXG5jb25zdCB7IG1vZGVsVmFsdWUsIG11bHRpcGxlIH0gPSB0b1JlZnMocHJvcHMpO1xuXG5jb25zdCBpbnRlcm5hbFZhbHVlID0gcmVmKCk7XG5cbmNvbnN0IHNsb3RzID0gdXNlU2xvdHMoKTtcbmNvbnN0IGNoaWxkcmVuID0gY29tcHV0ZWQoKCkgPT4ge1xuICBjb25zdCBhY2NvcmRpb25zID0gc2xvdHMuZGVmYXVsdD8uKCkgPz8gW107XG4gIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IGdldChpbnRlcm5hbFZhbHVlKTtcbiAgY29uc3QgbXVsdGlwbGVWYWwgPSBnZXQobXVsdGlwbGUpO1xuXG4gIHJldHVybiBhY2NvcmRpb25zLm1hcCgoYWNjb3JkaW9uLCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IG9wZW4gPSBtdWx0aXBsZVZhbCAmJiBBcnJheS5pc0FycmF5KGN1cnJlbnRWYWx1ZSkgPyBjdXJyZW50VmFsdWUuaW5jbHVkZXMoaW5kZXgpIDogY3VycmVudFZhbHVlID09PSBpbmRleDtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5hY2NvcmRpb24sXG4gICAgICBwcm9wczoge1xuICAgICAgICBvcGVuLFxuICAgICAgICAuLi5hY2NvcmRpb24ucHJvcHMsXG4gICAgICB9LFxuICAgIH07XG4gIH0pO1xufSk7XG5cbmZ1bmN0aW9uIHVwZGF0ZVZhbHVlKG5ld01vZGVsVmFsdWU6IG51bWJlcikge1xuICBsZXQgbmV3VmFsdWU6IG51bWJlcltdIHwgbnVtYmVyO1xuICBjb25zdCBpbnRlcm5hbCA9IGdldChpbnRlcm5hbFZhbHVlKTtcbiAgaWYgKGdldChtdWx0aXBsZSkgJiYgQXJyYXkuaXNBcnJheShpbnRlcm5hbCkpIHtcbiAgICBjb25zdCB0ZW1wID0gWy4uLmdldChpbnRlcm5hbCldO1xuICAgIGNvbnN0IGluZGV4ID0gdGVtcC5pbmRleE9mKG5ld01vZGVsVmFsdWUpO1xuICAgIGlmIChpbmRleCA9PT0gLTEpXG4gICAgICB0ZW1wLnB1c2gobmV3TW9kZWxWYWx1ZSk7XG4gICAgZWxzZVxuICAgICAgdGVtcC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIG5ld1ZhbHVlID0gdGVtcDtcbiAgfVxuICBlbHNlIHtcbiAgICBpZiAoaW50ZXJuYWwgPT09IG5ld01vZGVsVmFsdWUpXG4gICAgICBuZXdWYWx1ZSA9IC0xO1xuICAgIGVsc2VcbiAgICAgIG5ld1ZhbHVlID0gbmV3TW9kZWxWYWx1ZTtcbiAgfVxuICBlbWl0KCd1cGRhdGU6bW9kZWwtdmFsdWUnLCBuZXdWYWx1ZSk7XG4gIHNldChpbnRlcm5hbFZhbHVlLCBuZXdWYWx1ZSk7XG59XG5cbndhdGNoKFttb2RlbFZhbHVlLCBtdWx0aXBsZV0sIChbdmFsdWUsIG11bHRpcGxlXSkgPT4ge1xuICBsZXQgaW50ZXJuYWw6IG51bWJlciB8IG51bWJlcltdID0gdmFsdWU7XG4gIGlmIChtdWx0aXBsZSAmJiAhQXJyYXkuaXNBcnJheShpbnRlcm5hbCkpXG4gICAgaW50ZXJuYWwgPSBpbnRlcm5hbCA9PT0gLTEgPyBbXSA6IFtpbnRlcm5hbF07XG4gIGVsc2UgaWYgKCFtdWx0aXBsZSAmJiBBcnJheS5pc0FycmF5KGludGVybmFsKSlcbiAgICBpbnRlcm5hbCA9IGludGVybmFsWzBdID8/IC0xO1xuXG4gIHNldChpbnRlcm5hbFZhbHVlLCBpbnRlcm5hbCk7XG59LCB7IGltbWVkaWF0ZTogdHJ1ZSB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgdi1iaW5kPVwiJGF0dHJzXCI+XG4gICAgPENvbXBvbmVudFxuICAgICAgOmlzPVwiY2hpbGRcIlxuICAgICAgdi1mb3I9XCIoY2hpbGQsIGkpIGluIGNoaWxkcmVuXCJcbiAgICAgIDprZXk9XCJpXCJcbiAgICAgIEBjbGljaz1cInVwZGF0ZVZhbHVlKGkpXCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuaW1wb3J0IHR5cGUgeyBDb250ZXh0Q29sb3JzVHlwZSB9IGZyb20gJ0AvY29uc3RzL2NvbG9ycyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvcHMge1xuICAvKipcbiAgICogaW4gcGVyY2VudGFnZSB2YWx1ZSwgcmVxdWlyZWQgd2hlbiB2YXJpYW50ID09PSBkZXRlcm1pbmF0ZSBvciBidWZmZXJcbiAgICogQGV4YW1wbGUgLSAwIDw9IHZhbHVlIDw9IDEwMFxuICAgKi9cbiAgdmFsdWU/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBpbiBwZXJjZW50YWdlIHZhbHVlLCByZXF1aXJlZCB3aGVuIHZhcmlhbnQgPT09IGJ1ZmZlclxuICAgKiBAZXhhbXBsZSAtIDAgPD0gdmFsdWUgPD0gMTAwXG4gICAqL1xuICBidWZmZXJWYWx1ZT86IG51bWJlcjtcbiAgdmFyaWFudD86ICdkZXRlcm1pbmF0ZScgfCAnaW5kZXRlcm1pbmF0ZScgfCAnYnVmZmVyJztcbiAgY29sb3I/OiBDb250ZXh0Q29sb3JzVHlwZSB8ICdpbmhlcml0JztcbiAgY2lyY3VsYXI/OiBib29sZWFuO1xuICBzaG93TGFiZWw/OiBib29sZWFuO1xuICAvKipcbiAgICogU2V0cyB0aGUgc3Ryb2tlIHRoaWNrbmVzcyBpbiBwaXhlbHNcbiAgICovXG4gIHRoaWNrbmVzcz86IG51bWJlciB8IHN0cmluZztcbiAgLyoqXG4gICAqIG9ubHkgdXNlZCBmb3IgY2lyY3VsYXIgcHJvZ3Jlc3NcbiAgICovXG4gIHNpemU/OiBudW1iZXIgfCBzdHJpbmc7XG59XG5cbmRlZmluZU9wdGlvbnMoe1xuICBuYW1lOiAnUnVpUHJvZ3Jlc3MnLFxufSk7XG5cbmNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gIHZhbHVlOiAwLFxuICBidWZmZXJWYWx1ZTogMCxcbiAgdmFyaWFudDogJ2RldGVybWluYXRlJyxcbiAgY29sb3I6ICdpbmhlcml0JyxcbiAgY2lyY3VsYXI6IGZhbHNlLFxuICBzaG93TGFiZWw6IGZhbHNlLFxuICB0aGlja25lc3M6IDQsXG4gIHNpemU6IDMyLFxufSk7XG5cbmNvbnN0IHsgdmFyaWFudCwgdmFsdWUsIGJ1ZmZlclZhbHVlLCB0aGlja25lc3MsIHNpemUgfSA9IHRvUmVmcyhwcm9wcyk7XG5cbmNvbnN0IGN1cnJlbnRWYWx1ZSA9IGNvbXB1dGVkKCgpID0+XG4gIE1hdGgubWF4KDAsIE1hdGgubWluKGdldCh2YWx1ZSkgPz8gMTAwLCAxMDApKSxcbik7XG5cbmNvbnN0IGxhYmVsID0gY29tcHV0ZWQoKCkgPT4gYCR7TWF0aC5mbG9vcihnZXQoY3VycmVudFZhbHVlKSl9JWApO1xuXG5jb25zdCBwcm9ncmVzcyA9IGNvbXB1dGVkKCgpID0+IC0xMDAgKyBnZXQoY3VycmVudFZhbHVlKSk7XG5cbmNvbnN0IHZhbHVlUGVyY2VudCA9IGNvbXB1dGVkKCgpID0+IGAke2dldChwcm9ncmVzcyl9JWApO1xuXG5jb25zdCBidWZmZXJQZXJjZW50ID0gY29tcHV0ZWQoXG4gICgpID0+IGAkey0xMDAgKyBNYXRoLm1heCgwLCBNYXRoLm1pbihnZXQoYnVmZmVyVmFsdWUpID8/IDEwMCwgMTAwKSl9JWAsXG4pO1xuXG5jb25zdCBjaXJjdWxhclNjYWxlZFRoaWNrbmVzcyA9IGNvbXB1dGVkKFxuICAoKSA9PiAoK2dldCh0aGlja25lc3MpICogMzIpIC8gK2dldChzaXplKSxcbik7XG5cbmNvbnN0IGNpcmN1bGFyVmlld1NpemUgPSBjb21wdXRlZCgoKSA9PiA0MCArIGdldChjaXJjdWxhclNjYWxlZFRoaWNrbmVzcykpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICRzdHlsZS53cmFwcGVyLFxuICAgICAgY2lyY3VsYXIgPyAnaW5saW5lLWZsZXgnIDogJ3ctZnVsbCcsXG4gICAgICB7IFskc3R5bGVbJ2hhcy1sYWJlbCddXTogc2hvd0xhYmVsICYmIHZhcmlhbnQgIT09ICdpbmRldGVybWluYXRlJyB9LFxuICAgIF1cIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmFyaWEtdmFsdWVub3c9XCJ2YWx1ZVwiXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgIGNpcmN1bGFyICYmIHZhcmlhbnQgIT09ICdidWZmZXInID8gJHN0eWxlLmNpcmN1bGFyIDogJHN0eWxlLnByb2dyZXNzLFxuICAgICAgICAkc3R5bGVbdmFyaWFudCA/PyAnJ10sXG4gICAgICAgICRzdHlsZVtjb2xvciA/PyAnJ10sXG4gICAgICBdXCJcbiAgICAgIGFyaWEtdmFsdWVtYXg9XCIxMDBcIlxuICAgICAgYXJpYS12YWx1ZW1pbj1cIjBcIlxuICAgICAgcm9sZT1cInByb2dyZXNzYmFyXCJcbiAgICA+XG4gICAgICA8c3ZnXG4gICAgICAgIHYtaWY9XCJjaXJjdWxhciAmJiB2YXJpYW50ICE9PSAnYnVmZmVyJ1wiXG4gICAgICAgIDp2aWV3Qm94PVwiYDAgMCAke2NpcmN1bGFyVmlld1NpemV9ICR7Y2lyY3VsYXJWaWV3U2l6ZX1gXCJcbiAgICAgID5cbiAgICAgICAgPGNpcmNsZVxuICAgICAgICAgIGN4PVwiNTAlXCJcbiAgICAgICAgICBjeT1cIjUwJVwiXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIHI9XCIyMFwiXG4gICAgICAgICAgOnN0cm9rZS13aWR0aD1cImNpcmN1bGFyU2NhbGVkVGhpY2tuZXNzXCJcbiAgICAgICAgLz5cbiAgICAgIDwvc3ZnPlxuICAgICAgPHRlbXBsYXRlIHYtZWxzZT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIHYtaWY9XCJ2YXJpYW50ID09PSAnYnVmZmVyJ1wiXG4gICAgICAgICAgOmNsYXNzPVwiJHN0eWxlWydidWZmZXItZG90cyddXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIlskc3R5bGUucmFpbCwgeyBbJHN0eWxlWydidWZmZXItcmFpbCddXTogdmFyaWFudCA9PT0gJ2J1ZmZlcicgfV1cIlxuICAgICAgICAvPlxuICAgICAgICA8ZGl2IDpjbGFzcz1cIiRzdHlsZVt2YXJpYW50ID8/ICcnXVwiIC8+XG4gICAgICA8L3RlbXBsYXRlPlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIHYtaWY9XCJzaG93TGFiZWwgJiYgdmFyaWFudCAhPT0gJ2luZGV0ZXJtaW5hdGUnXCJcbiAgICAgIDpjbGFzcz1cIiRzdHlsZS5sYWJlbFwiXG4gICAgPlxuICAgICAge3sgbGFiZWwgfX1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIiBtb2R1bGU+XG4kY29sb3JzOiAncHJpbWFyeScsICdzZWNvbmRhcnknO1xuXG4ud3JhcHBlciB7XG4gICYuaGFzLWxhYmVsIHtcbiAgICBAYXBwbHkgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHJlbGF0aXZlO1xuXG4gICAgLmxhYmVsIHtcbiAgICAgIEBhcHBseSBibG9jayB0ZXh0LXNtIG1sLTQ7XG4gICAgfVxuXG4gICAgLmNpcmN1bGFyIH4gLmxhYmVsIHtcbiAgICAgIEBhcHBseSBhYnNvbHV0ZSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LVswLjYyNXJlbV0gbWwtMDtcbiAgICAgIHdpZHRoOiBjYWxjKHYtYmluZChzaXplKSAqIDFweCk7XG4gICAgICBoZWlnaHQ6IGNhbGModi1iaW5kKHNpemUpICogMXB4KTtcbiAgICB9XG4gIH1cblxuICAucHJvZ3Jlc3Mge1xuICAgIEBhcHBseSB3LWZ1bGwgb3ZlcmZsb3ctaGlkZGVuIHJlbGF0aXZlO1xuICAgIGhlaWdodDogY2FsYyh2LWJpbmQodGhpY2tuZXNzKSAqIDFweCk7XG5cbiAgICAucmFpbCB7XG4gICAgICBAYXBwbHkgdy1mdWxsIGgtZnVsbDtcbiAgICB9XG5cbiAgICAuZGV0ZXJtaW5hdGUsXG4gICAgLmJ1ZmZlciB7XG4gICAgICBAYXBwbHkgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMTUwIGVhc2UtaW4tb3V0IGFic29sdXRlIGxlZnQtMCB0b3AtMCBoLWZ1bGwgdy1mdWxsO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKHYtYmluZCh2YWx1ZVBlcmNlbnQpKTtcbiAgICB9XG5cbiAgICAuaW5kZXRlcm1pbmF0ZSB7XG4gICAgICBAYXBwbHkgYWJzb2x1dGUgbGVmdC0wIHRvcC0wIGgtZnVsbCB3LWF1dG8gdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMjAwIGVhc2UtbGluZWFyIGRlbGF5LTAgb3JpZ2luLWxlZnQ7XG4gICAgICBhbmltYXRpb246IDEuNnMgY3ViaWMtYmV6aWVyKDAuNjUsIDAuODE1LCAwLjczNSwgMC4zOTUpIDBzIGluZmluaXRlIG5vcm1hbCBub25lIHJ1bm5pbmcgc2xpZGUtcmFpbDtcbiAgICB9XG5cbiAgICAuYnVmZmVyLWRvdHMge1xuICAgICAgQGFwcGx5IGFic29sdXRlIGgtMCB3LVsyMDAlXSAtdG9wLXB4IC1sZWZ0LVsxMDAlXSBib3JkZXItZGFzaGVkIGJvcmRlci15LVswLjJyZW1dO1xuICAgICAgYW5pbWF0aW9uOiAzcyBlYXNlLWluLW91dCAzcyBpbmZpbml0ZSBub3JtYWwgbm9uZSBydW5uaW5nIGJ1ZmZlci1wdWxzZTtcbiAgICB9XG5cbiAgICAuYnVmZmVyLXJhaWwge1xuICAgICAgQGFwcGx5IHctZnVsbCB0cmFuc2l0aW9uLXRyYW5zZm9ybSBkdXJhdGlvbi0yMDAgZWFzZS1saW5lYXIgZGVsYXktMCBvcmlnaW4tbGVmdDtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCh2LWJpbmQoYnVmZmVyUGVyY2VudCkpO1xuICAgIH1cblxuICAgIEBlYWNoICRjb2xvciBpbiAkY29sb3JzIHtcbiAgICAgICYuI3skY29sb3J9IHtcbiAgICAgICAgLnJhaWwge1xuICAgICAgICAgIEBhcHBseSBiZy1ydWktI3skY29sb3J9LzIwO1xuICAgICAgICB9XG5cbiAgICAgICAgLmRldGVybWluYXRlLFxuICAgICAgICAuaW5kZXRlcm1pbmF0ZSxcbiAgICAgICAgLmJ1ZmZlciB7XG4gICAgICAgICAgQGFwcGx5IGJnLXJ1aS0jeyRjb2xvcn07XG4gICAgICAgIH1cblxuICAgICAgICAuYnVmZmVyLWRvdHMge1xuICAgICAgICAgIEBhcHBseSBib3JkZXItcnVpLSN7JGNvbG9yfS8yMDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICYuaW5oZXJpdCB7XG4gICAgICAucmFpbCB7XG4gICAgICAgIEBhcHBseSBiZy1jdXJyZW50IG9wYWNpdHktMjA7XG4gICAgICB9XG5cbiAgICAgIC5kZXRlcm1pbmF0ZSxcbiAgICAgIC5pbmRldGVybWluYXRlLFxuICAgICAgLmJ1ZmZlciB7XG4gICAgICAgIEBhcHBseSBiZy1jdXJyZW50O1xuICAgICAgfVxuXG4gICAgICAuYnVmZmVyLWRvdHMge1xuICAgICAgICBAYXBwbHkgYm9yZGVyLWN1cnJlbnQgb3BhY2l0eS0yMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuY2lyY3VsYXIge1xuICAgIEBhcHBseSBpbmxpbmUtYmxvY2s7XG4gICAgd2lkdGg6IGNhbGModi1iaW5kKHNpemUpICogMXB4KTtcbiAgICBoZWlnaHQ6IGNhbGModi1iaW5kKHNpemUpICogMXB4KTtcblxuICAgIEBlYWNoICRjb2xvciBpbiAkY29sb3JzIHtcbiAgICAgICYuI3skY29sb3J9IHtcbiAgICAgICAgQGFwcGx5IHRleHQtcnVpLSN7JGNvbG9yfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmluZGV0ZXJtaW5hdGUge1xuICAgICAgQGFwcGx5IGFuaW1hdGUtW3NwaW5fMS40c19saW5lYXJfaW5maW5pdGVdO1xuXG4gICAgICBzdmcge1xuICAgICAgICBjaXJjbGUge1xuICAgICAgICAgIHN0cm9rZS1kYXNoYXJyYXk6IDgwcHgsIDIwMHB4O1xuICAgICAgICAgIHN0cm9rZS1kYXNob2Zmc2V0OiAwO1xuICAgICAgICAgIHN0cm9rZS1saW5lY2FwOiByb3VuZDtcbiAgICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogY29sbGFwc2Utc3Ryb2tlIDEuNHMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICAgICAgYW5pbWF0aW9uOiBjb2xsYXBzZS1zdHJva2UgMS40cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICYuZGV0ZXJtaW5hdGUge1xuICAgICAgQGFwcGx5IC1yb3RhdGUtOTA7XG5cbiAgICAgIHN2ZyB7XG4gICAgICAgIGNpcmNsZSB7XG4gICAgICAgICAgc3Ryb2tlLWRhc2hhcnJheTogMTI2LjkyO1xuICAgICAgICAgIHN0cm9rZS1kYXNob2Zmc2V0OiBjYWxjKHYtYmluZChwcm9ncmVzcykgLyAxMDAgKiAtMTI2LjkyKTtcbiAgICAgICAgICAtd2Via2l0LXRyYW5zaXRpb246IHN0cm9rZS1kYXNob2Zmc2V0IDMwMG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSkgMG1zO1xuICAgICAgICAgIHRyYW5zaXRpb246IHN0cm9rZS1kYXNob2Zmc2V0IDMwMG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSkgMG1zO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5pbmhlcml0IHtcbiAgICAgIEBhcHBseSB0ZXh0LWN1cnJlbnQ7XG4gICAgfVxuXG4gICAgc3ZnIHtcbiAgICAgIEBhcHBseSBibG9jaztcblxuICAgICAgY2lyY2xlIHtcbiAgICAgICAgc3Ryb2tlOiBjdXJyZW50Q29sb3I7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbjpnbG9iYWwoLmRhcmspIHtcbiAgLndyYXBwZXIge1xuICAgICYuaGFzLWxhYmVsIHtcbiAgICAgIC5sYWJlbCB7XG4gICAgICAgIEBhcHBseSB0ZXh0LXdoaXRlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgYnVmZmVyLXB1bHNlIHtcbiAgMCUge1xuICAgIG9wYWNpdHk6IDAuMjtcbiAgICBsZWZ0OiAtMTAwJTtcbiAgfVxuICA1MCUge1xuICAgIG9wYWNpdHk6IDEuNTtcbiAgICBsZWZ0OiAtMTAwJTtcbiAgfVxuICA2MCUge1xuICAgIG9wYWNpdHk6IDAuNDtcbiAgICBsZWZ0OiAtNzUlO1xuICB9XG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDAuMjtcbiAgICBsZWZ0OiAtMTAwJTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIGJ1ZmZlci1wdWxzZSB7XG4gIDAlIHtcbiAgICBvcGFjaXR5OiAwLjI7XG4gICAgbGVmdDogLTEwMCU7XG4gIH1cbiAgNTAlIHtcbiAgICBvcGFjaXR5OiAxLjU7XG4gICAgbGVmdDogLTEwMCU7XG4gIH1cbiAgNjAlIHtcbiAgICBvcGFjaXR5OiAwLjQ7XG4gICAgbGVmdDogLTc1JTtcbiAgfVxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAwLjI7XG4gICAgbGVmdDogLTEwMCU7XG4gIH1cbn1cblxuQC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlLXJhaWwge1xuICAwJSB7XG4gICAgbGVmdDogLTM1JTtcbiAgICByaWdodDogMTAwJTtcbiAgfVxuXG4gIDYwJSB7XG4gICAgbGVmdDogMTAwJTtcbiAgICByaWdodDogLTkwJTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIGxlZnQ6IDEwMCU7XG4gICAgcmlnaHQ6IC05MCU7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBzbGlkZS1yYWlsIHtcbiAgMCUge1xuICAgIGxlZnQ6IC0zNSU7XG4gICAgcmlnaHQ6IDEwMCU7XG4gIH1cblxuICA2MCUge1xuICAgIGxlZnQ6IDEwMCU7XG4gICAgcmlnaHQ6IC05MCU7XG4gIH1cblxuICAxMDAlIHtcbiAgICBsZWZ0OiAxMDAlO1xuICAgIHJpZ2h0OiAtOTAlO1xuICB9XG59XG5cbkAtd2Via2l0LWtleWZyYW1lcyBjb2xsYXBzZS1zdHJva2Uge1xuICAwJSB7XG4gICAgc3Ryb2tlLWRhc2hhcnJheTogMXB4LCAyMDBweDtcbiAgICBzdHJva2UtZGFzaG9mZnNldDogMDtcbiAgfVxuXG4gIDUwJSB7XG4gICAgc3Ryb2tlLWRhc2hhcnJheTogMTAwcHgsIDIwMHB4O1xuICAgIHN0cm9rZS1kYXNob2Zmc2V0OiAtMTVweDtcbiAgfVxuXG4gIDEwMCUge1xuICAgIHN0cm9rZS1kYXNoYXJyYXk6IDEwMHB4LCAyMDBweDtcbiAgICBzdHJva2UtZGFzaG9mZnNldDogLTEyNXB4O1xuICB9XG59XG5cbkBrZXlmcmFtZXMgY29sbGFwc2Utc3Ryb2tlIHtcbiAgMCUge1xuICAgIHN0cm9rZS1kYXNoYXJyYXk6IDFweCwgMjAwcHg7XG4gICAgc3Ryb2tlLWRhc2hvZmZzZXQ6IDA7XG4gIH1cblxuICA1MCUge1xuICAgIHN0cm9rZS1kYXNoYXJyYXk6IDEwMHB4LCAyMDBweDtcbiAgICBzdHJva2UtZGFzaG9mZnNldDogLTE1cHg7XG4gIH1cblxuICAxMDAlIHtcbiAgICBzdHJva2UtZGFzaGFycmF5OiAxMDBweCwgMjAwcHg7XG4gICAgc3Ryb2tlLWRhc2hvZmZzZXQ6IC0xMjVweDtcbiAgfVxufVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgZ2VuZXJpYz1cIlQgPSB1bmRlZmluZWRcIiBzZXR1cD5cbmltcG9ydCB0eXBlIHsgQ29udGV4dENvbG9yc1R5cGUgfSBmcm9tICdAL2NvbnN0cy9jb2xvcnMnO1xuaW1wb3J0IFJ1aVByb2dyZXNzIGZyb20gJ0AvY29tcG9uZW50cy9wcm9ncmVzcy9SdWlQcm9ncmVzcy52dWUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BzPFQgPSB1bmRlZmluZWQ+IHtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBsb2FkaW5nPzogYm9vbGVhbjtcbiAgY29sb3I/OiBDb250ZXh0Q29sb3JzVHlwZTtcbiAgcm91bmRlZD86IGJvb2xlYW47XG4gIGVsZXZhdGlvbj86IG51bWJlciB8IHN0cmluZyB8IG51bGw7XG4gIHZhcmlhbnQ/OiAnZGVmYXVsdCcgfCAnb3V0bGluZWQnIHwgJ3RleHQnIHwgJ2ZhYicgfCAnbGlzdCc7XG4gIGljb24/OiBib29sZWFuO1xuICBhY3RpdmU/OiBib29sZWFuO1xuICBzaXplPzogJ3NtJyB8ICdsZyc7XG4gIHRhZz86ICdidXR0b24nIHwgJ2EnO1xuICB0eXBlPzogJ2J1dHRvbicgfCAnc3VibWl0JztcbiAgbW9kZWxWYWx1ZT86IFQ7XG4gIGhpZGVGb2N1c0luZGljYXRvcj86IGJvb2xlYW47XG59XG5cbmRlZmluZU9wdGlvbnMoe1xuICBuYW1lOiAnUnVpQnV0dG9uJyxcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbn0pO1xuXG5jb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wczxUPj4oKSwge1xuICBkaXNhYmxlZDogZmFsc2UsXG4gIGxvYWRpbmc6IGZhbHNlLFxuICBjb2xvcjogdW5kZWZpbmVkLFxuICByb3VuZGVkOiBmYWxzZSxcbiAgZWxldmF0aW9uOiBudWxsLFxuICB2YXJpYW50OiAnZGVmYXVsdCcsXG4gIGljb246IGZhbHNlLFxuICBhY3RpdmU6IGZhbHNlLFxuICBzaXplOiB1bmRlZmluZWQsXG4gIHRhZzogJ2J1dHRvbicsXG4gIHR5cGU6ICdidXR0b24nLFxuICBtb2RlbFZhbHVlOiB1bmRlZmluZWQsXG4gIGhpZGVGb2N1c0luZGljYXRvcjogZmFsc2UsXG59KTtcblxuY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPHtcbiAgKGU6ICd1cGRhdGU6bW9kZWwtdmFsdWUnLCB2YWx1ZT86IFQpOiB2b2lkO1xufT4oKTtcblxuY29uc3QgYnRuVmFsdWUgPSBjb21wdXRlZDxUIHwgdW5kZWZpbmVkPigoKSA9PiBwcm9wcy5tb2RlbFZhbHVlKTtcblxuY29uc3QgdXNlZEVsZXZhdGlvbiA9IGNvbXB1dGVkPG51bWJlciB8IHN0cmluZz4oKCkgPT4ge1xuICBpZiAocHJvcHMuZGlzYWJsZWQpXG4gICAgcmV0dXJuIDA7XG5cbiAgaWYgKHByb3BzLmVsZXZhdGlvbiAhPT0gbnVsbClcbiAgICByZXR1cm4gcHJvcHMuZWxldmF0aW9uO1xuXG4gIGlmIChwcm9wcy52YXJpYW50ID09PSAnZmFiJylcbiAgICByZXR1cm4gNjtcblxuICByZXR1cm4gMDtcbn0pO1xuXG5jb25zdCBzcGlubmVyU2l6ZSA9IGNvbXB1dGVkPG51bWJlcj4oKCkgPT4ge1xuICBjb25zdCBzaXplID0gcHJvcHMuc2l6ZTtcbiAgaWYgKHNpemUgPT09ICdsZycpXG4gICAgcmV0dXJuIDI2O1xuXG4gIGlmIChzaXplID09PSAnc20nKVxuICAgIHJldHVybiAxODtcblxuICByZXR1cm4gMjI7XG59KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxDb21wb25lbnRcbiAgICA6aXM9XCJ0YWdcIlxuICAgIDpjbGFzcz1cIltcbiAgICAgICRzdHlsZS5idG4sXG4gICAgICAkc3R5bGVbY29sb3IgPz8gJ2dyZXknXSxcbiAgICAgICRzdHlsZVtzaXplID8/ICcnXSxcbiAgICAgICRzdHlsZVt2YXJpYW50ID8/ICcnXSxcbiAgICAgIGBzaGFkb3ctJHt1c2VkRWxldmF0aW9ufWAsXG4gICAgICB7XG4gICAgICAgIFskc3R5bGUubG9hZGluZ106IGxvYWRpbmcsXG4gICAgICAgIFskc3R5bGUuX3JvdW5kZWRdOiByb3VuZGVkLFxuICAgICAgICBbJHN0eWxlLmljb25dOiBpY29uLFxuICAgICAgICBbJHN0eWxlLmFjdGl2ZV06IGFjdGl2ZSxcbiAgICAgICAgWyRzdHlsZS50ZXh0XTogdmFyaWFudCA9PT0gJ2xpc3QnLFxuICAgICAgICBbJHN0eWxlLmZsYXRdOiBoaWRlRm9jdXNJbmRpY2F0b3IsXG4gICAgICB9LFxuICAgIF1cIlxuICAgIDpkaXNhYmxlZD1cImRpc2FibGVkIHx8IGxvYWRpbmdcIlxuICAgIDp0eXBlPVwidGFnID09PSAnYnV0dG9uJyA/IHR5cGUgOiB1bmRlZmluZWRcIlxuICAgIHYtYmluZD1cIiRhdHRyc1wiXG4gICAgQGNsaWNrPVwiZW1pdCgndXBkYXRlOm1vZGVsLXZhbHVlJywgYnRuVmFsdWUpXCJcbiAgPlxuICAgIDxzbG90XG4gICAgICB2LWlmPVwiJHNsb3RzLnByZXBlbmRcIlxuICAgICAgbmFtZT1cInByZXBlbmRcIlxuICAgIC8+XG4gICAgPHNwYW5cbiAgICAgIHYtaWY9XCIkc2xvdHMuZGVmYXVsdFwiXG4gICAgICA6Y2xhc3M9XCIkc3R5bGUubGFiZWxcIlxuICAgID5cbiAgICAgIDxzbG90IC8+XG4gICAgPC9zcGFuPlxuICAgIDxzbG90XG4gICAgICB2LWlmPVwiJHNsb3RzLmFwcGVuZFwiXG4gICAgICBuYW1lPVwiYXBwZW5kXCJcbiAgICAvPlxuICAgIDxSdWlQcm9ncmVzc1xuICAgICAgdi1pZj1cImxvYWRpbmdcIlxuICAgICAgY2lyY3VsYXJcbiAgICAgIDpjbGFzcz1cIiRzdHlsZS5zcGlubmVyXCJcbiAgICAgIHZhcmlhbnQ9XCJpbmRldGVybWluYXRlXCJcbiAgICAgIHRoaWNrbmVzcz1cIjJcIlxuICAgICAgOnNpemU9XCJzcGlubmVyU2l6ZVwiXG4gICAgLz5cbiAgPC9Db21wb25lbnQ+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIiBtb2R1bGU+XG5AdXNlICdAL3N0eWxlcy9jb2xvcnMuc2NzcycgYXMgYztcbkB1c2UgJ3Nhc3M6bGlzdCc7XG5cbi5idG4ge1xuICBAYXBwbHkgdGV4dC1zbSBsZWFkaW5nLVsxLjVyZW1dIGZvbnQtbWVkaXVtIG91dGxpbmUgb3V0bGluZS0xIG91dGxpbmUtdHJhbnNwYXJlbnQgb3V0bGluZS1vZmZzZXQtWy0xcHhdIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC14LTIgcmVsYXRpdmU7XG4gIEBhcHBseSBweC00IHB5LTEuNSByb3VuZGVkIHRyYW5zaXRpb24tYWxsO1xuICBAYXBwbHkgZGlzYWJsZWQ6YmctYmxhY2svWy4xMl0gZGFyazpkaXNhYmxlZDpiZy13aGl0ZS9bLjEyXSBkaXNhYmxlZDp0ZXh0LXJ1aS10ZXh0LWRpc2FibGVkIGRpc2FibGVkOmFjdGl2ZTp0ZXh0LXJ1aS10ZXh0LWRpc2FibGVkIGZvY3VzLXZpc2libGU6cmluZy0yICN7IWltcG9ydGFudH07XG5cbiAgLmxhYmVsIHtcbiAgICBAYXBwbHkgaW5saW5lLWJsb2NrIHRleHQtbm93cmFwO1xuICB9XG5cbiAgJi5mbGF0IHtcbiAgICBAYXBwbHkgZm9jdXMtdmlzaWJsZTpyaW5nLTAgI3shaW1wb3J0YW50fTtcbiAgfVxuXG4gICYuX3JvdW5kZWQge1xuICAgIEBhcHBseSByb3VuZGVkLWZ1bGw7XG4gIH1cblxuICAmLnNtIHtcbiAgICBAYXBwbHkgcHgtMi41IHB5LTEgdGV4dC1bLjgxMjVyZW1dIGxlYWRpbmctWzEuMzc1cmVtXTtcbiAgfVxuXG4gICYubGcge1xuICAgIEBhcHBseSBweC02IHB5LTIgdGV4dC1iYXNlIGxlYWRpbmctWzEuNjI1cmVtXTtcbiAgfVxuXG4gIEBlYWNoICRjb2xvciBpbiBjLiRjb250ZXh0LWNvbG9ycyB7XG4gICAgJi4jeyRjb2xvcn0ge1xuICAgICAgQGFwcGx5IGJnLXJ1aS0jeyRjb2xvcn0gaG92ZXI6YmctcnVpLSN7JGNvbG9yfS1kYXJrZXIgYWN0aXZlOmJnLXJ1aS0jeyRjb2xvcn0tZGFya2VyLzkwIHRleHQtcnVpLWRhcmstdGV4dCByaW5nLXJ1aS0jeyRjb2xvcn0vNDAgZGFyazp0ZXh0LXJ1aS10ZXh0IGRhcms6cmluZy1ydWktI3skY29sb3J9LzYwO1xuXG4gICAgICAmLmFjdGl2ZSB7XG4gICAgICAgIEBhcHBseSBiZy1ydWktI3skY29sb3J9LWRhcmtlcjtcbiAgICAgIH1cblxuICAgICAgJi5vdXRsaW5lZCxcbiAgICAgICYudGV4dCB7XG4gICAgICAgIEBhcHBseSBiZy10cmFuc3BhcmVudCBob3ZlcjpiZy1ydWktI3skY29sb3J9LWxpZ2h0ZXIvWy4wNF0gYWN0aXZlOmJnLXJ1aS0jeyRjb2xvcn0tbGlnaHRlci8xMCB0ZXh0LXJ1aS0jeyRjb2xvcn07XG5cbiAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgIEBhcHBseSBiZy1ydWktI3skY29sb3J9LWxpZ2h0ZXIvMzA7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJi5vdXRsaW5lZCB7XG4gICAgICAgIEBhcHBseSBvdXRsaW5lLXJ1aS0jeyRjb2xvcn0vWzAuNV07XG4gICAgICB9XG5cbiAgICAgIEBpZiBsaXN0LmluZGV4KCh3YXJuaW5nLCBzdWNjZXNzLCBpbmZvKSwgJGNvbG9yKSB7XG4gICAgICAgIEBhcHBseSBkYXJrOnRleHQtcnVpLWxpZ2h0LXRleHQ7XG4gICAgICB9XG5cbiAgICAgIEBpZiBsaXN0LmluZGV4KChwcmltYXJ5LCBzZWNvbmRhcnkpLCAkY29sb3IpIHtcbiAgICAgICAgJi5vdXRsaW5lZCxcbiAgICAgICAgJi50ZXh0IHtcbiAgICAgICAgICAmLmFjdGl2ZSB7XG4gICAgICAgICAgICBAYXBwbHkgZGFyazpiZy1ydWktI3skY29sb3J9LWRhcmtlci82MCBkYXJrOnRleHQtcnVpLSN7JGNvbG9yfS1saWdodGVyO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICYuZ3JleSB7XG4gICAgQGFwcGx5IGJnLXJ1aS1ncmV5LTIwMCBob3ZlcjpiZy1ydWktZ3JleS0xMDAgYWN0aXZlOmJnLXJ1aS1ncmV5LTUwIHRleHQtcnVpLXRleHQgcmluZy1ydWktZ3JleS00MDA7XG4gICAgQGFwcGx5IGRhcms6YmctcnVpLWdyZXktMzAwIGRhcms6dGV4dC1ydWktbGlnaHQtdGV4dCBkYXJrOnJpbmctcnVpLWdyZXktNjAwO1xuXG4gICAgJi5hY3RpdmUge1xuICAgICAgQGFwcGx5IGJnLXJ1aS1ncmV5LTUwO1xuICAgIH1cblxuICAgICYub3V0bGluZWQsXG4gICAgJi50ZXh0IHtcbiAgICAgIEBhcHBseSBiZy10cmFuc3BhcmVudCBob3ZlcjpiZy1ibGFjay9bLjA0XSBhY3RpdmU6YmctYmxhY2svMTA7XG4gICAgICBAYXBwbHkgZGFyazphY3RpdmU6Ymctd2hpdGUvMTAgZGFyazpob3ZlcjpiZy13aGl0ZS9bLjA0XSBkYXJrOnRleHQtcnVpLXRleHQ7XG5cbiAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgQGFwcGx5IGJnLWJsYWNrLzEwIGRhcms6Ymctd2hpdGUvMzA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5vdXRsaW5lZCB7XG4gICAgICBAYXBwbHkgb3V0bGluZS1ydWktdGV4dDtcbiAgICB9XG5cbiAgICAmLnRleHQge1xuICAgICAgQGFwcGx5IHRleHQtcnVpLXRleHQtc2Vjb25kYXJ5O1xuICAgIH1cbiAgfVxuXG4gICYub3V0bGluZWQsXG4gICYudGV4dCB7XG4gICAgQGFwcGx5IGRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGRpc2FibGVkOmFjdGl2ZTpiZy10cmFuc3BhcmVudCAjeyFpbXBvcnRhbnR9O1xuICB9XG5cbiAgJi5vdXRsaW5lZCB7XG4gICAgQGFwcGx5IGRpc2FibGVkOm91dGxpbmUtcnVpLXRleHQtZGlzYWJsZWQ7XG4gIH1cblxuICAmLnRleHQge1xuICAgIEBhcHBseSBweC0yO1xuXG4gICAgJi5zbSB7XG4gICAgICBAYXBwbHkgcHgtMS41O1xuICAgIH1cblxuICAgICYubGcge1xuICAgICAgQGFwcGx5IHB4LTIuNTtcbiAgICB9XG4gIH1cblxuICAmLmZhYiB7XG4gICAgQGFwcGx5IHJvdW5kZWQtZnVsbCBweS0yO1xuXG4gICAgJi5sZyB7XG4gICAgICBAYXBwbHkgcHktMztcbiAgICB9XG5cbiAgICAmLnNtIHtcbiAgICAgIEBhcHBseSBweS0xLjUgcHgtMjtcbiAgICB9XG4gIH1cblxuICAmLmxpc3Qge1xuICAgIEBhcHBseSBwLTMgcm91bmRlZC1ub25lIHctZnVsbCBqdXN0aWZ5LXN0YXJ0IHRleHQtbGVmdDtcblxuICAgICYuc20ge1xuICAgICAgQGFwcGx5IHB4LTMgcHktMTtcbiAgICB9XG5cbiAgICAubGFiZWwge1xuICAgICAgQGFwcGx5IHctZnVsbDtcbiAgICB9XG4gIH1cblxuICAmLmljb24ge1xuICAgIEBhcHBseSByb3VuZGVkLWZ1bGwgcHgtMyBweS0zO1xuXG4gICAgJi5sZyB7XG4gICAgICBAYXBwbHkgcHgtNCBweS00O1xuICAgIH1cblxuICAgICYuc20ge1xuICAgICAgQGFwcGx5IHB4LTEgcHktMTtcbiAgICB9XG4gIH1cblxuICAmLmZhYi5pY29uIHtcbiAgICAmLnNtIHtcbiAgICAgIEBhcHBseSBweC0yIHB5LTI7XG4gICAgfVxuICB9XG5cbiAgJi5sb2FkaW5nIHtcbiAgICBAYXBwbHkgc3BhY2UteC0wO1xuXG4gICAgPiAqOm5vdCguc3Bpbm5lcikge1xuICAgICAgQGFwcGx5IG9wYWNpdHktMCBpbnZpc2libGU7XG4gICAgfVxuICB9XG5cbiAgLnNwaW5uZXIge1xuICAgIEBhcHBseSBhYnNvbHV0ZSB0b3AtMS8yIGxlZnQtMS8yIHRyYW5zZm9ybSAtdHJhbnNsYXRlLXgtMS8yIC10cmFuc2xhdGUteS0xLzI7XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHR5cGUgeyBDb250ZXh0Q29sb3JzVHlwZSB9IGZyb20gJ0AvY29uc3RzL2NvbG9ycyc7XG5pbXBvcnQgdHlwZSB7IFJ1aUljb25zIH0gZnJvbSAnQC9pY29ucyc7XG5pbXBvcnQgUnVpQnV0dG9uIGZyb20gJ0AvY29tcG9uZW50cy9idXR0b25zL2J1dHRvbi9SdWlCdXR0b24udnVlJztcbmltcG9ydCBSdWlJY29uIGZyb20gJ0AvY29tcG9uZW50cy9pY29ucy9SdWlJY29uLnZ1ZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvcHMge1xuICB0aXRsZT86IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIHR5cGU/OiBDb250ZXh0Q29sb3JzVHlwZTtcbiAgaWNvbj86IFJ1aUljb25zO1xuICB2YXJpYW50PzogJ2RlZmF1bHQnIHwgJ2ZpbGxlZCcgfCAnb3V0bGluZWQnO1xuICBhY3Rpb25UZXh0Pzogc3RyaW5nO1xuICBjbG9zZWFibGU/OiBib29sZWFuO1xufVxuXG5kZWZpbmVPcHRpb25zKHtcbiAgbmFtZTogJ1J1aUFsZXJ0JyxcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbn0pO1xuXG5jb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICB0aXRsZTogJycsXG4gIGRlc2NyaXB0aW9uOiAnJyxcbiAgdHlwZTogJ3ByaW1hcnknLFxuICBpY29uOiB1bmRlZmluZWQsXG4gIHZhcmlhbnQ6ICdkZWZhdWx0JyxcbiAgYWN0aW9uVGV4dDogJycsXG4gIGNsb3NlYWJsZTogZmFsc2UsXG59KTtcblxuY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPHtcbiAgKGU6ICdhY3Rpb24nKTogdm9pZDtcbiAgKGU6ICdjbG9zZScpOiB2b2lkO1xufT4oKTtcblxuY29uc3QgeyBpY29uLCB0eXBlIH0gPSB0b1JlZnMocHJvcHMpO1xuXG5jb25zdCB1c2VkSWNvbiA9IGNvbXB1dGVkPFJ1aUljb25zIHwgdW5kZWZpbmVkPigoKSA9PiB7XG4gIGNvbnN0IGljb25WYWwgPSBnZXQoaWNvbik7XG4gIGlmIChpY29uVmFsKVxuICAgIHJldHVybiBpY29uVmFsO1xuXG4gIGNvbnN0IGljb25NYXA6IFJlY29yZDxDb250ZXh0Q29sb3JzVHlwZSwgUnVpSWNvbnMgfCB1bmRlZmluZWQ+ID0ge1xuICAgIHByaW1hcnk6IHVuZGVmaW5lZCxcbiAgICBzZWNvbmRhcnk6IHVuZGVmaW5lZCxcbiAgICB3YXJuaW5nOiAnbHUtdHJpYW5nbGUtYWxlcnQnLFxuICAgIGluZm86ICdsdS1pbmZvJyxcbiAgICBlcnJvcjogJ2x1LWNpcmNsZS1hbGVydCcsXG4gICAgc3VjY2VzczogJ2x1LWNpcmNsZS1jaGVjaycsXG4gIH07XG5cbiAgcmV0dXJuIGljb25NYXBbZ2V0KHR5cGUpXTtcbn0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICRzdHlsZS5hbGVydCxcbiAgICAgICRzdHlsZVt0eXBlXSxcbiAgICAgICRzdHlsZVt2YXJpYW50XSxcbiAgICBdXCJcbiAgICB2LWJpbmQ9XCIkYXR0cnNcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggc3BhY2UteC0zIHB5LTEgZmxleC1ncm93XCI+XG4gICAgICA8ZGl2XG4gICAgICAgIHYtaWY9XCJ1c2VkSWNvblwiXG4gICAgICAgIDpjbGFzcz1cIiRzdHlsZS5pY29uXCJcbiAgICAgID5cbiAgICAgICAgPFJ1aUljb25cbiAgICAgICAgICA6bmFtZT1cInVzZWRJY29uXCJcbiAgICAgICAgICBzaXplPVwiMjJcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwic3BhY2UteS0xIGZsZXgtZ3Jvd1wiXG4gICAgICAgIDpjbGFzcz1cIiRzdHlsZS50ZXh0c1wiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICB2LWlmPVwiJHNsb3RzLnRpdGxlIHx8IHRpdGxlXCJcbiAgICAgICAgICA6Y2xhc3M9XCJ7XG4gICAgICAgICAgICAnZm9udC1tZWRpdW0nOiAhIXRpdGxlLFxuICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cInRpdGxlXCI+XG4gICAgICAgICAgICB7eyB0aXRsZSB9fVxuICAgICAgICAgIDwvc2xvdD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIHYtaWY9XCIkc2xvdHMuZGVmYXVsdCB8fCBkZXNjcmlwdGlvblwiXG4gICAgICAgICAgY2xhc3M9XCJ0ZXh0LWJvZHktMlwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2xvdD5cbiAgICAgICAgICAgIHt7IGRlc2NyaXB0aW9uIH19XG4gICAgICAgICAgPC9zbG90PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgdi1pZj1cImFjdGlvblRleHRcIj5cbiAgICAgIDxSdWlCdXR0b25cbiAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICBzaXplPVwic21cIlxuICAgICAgICA6Y29sb3I9XCJ2YXJpYW50ID09PSAnZmlsbGVkJyA/IHVuZGVmaW5lZCA6IHR5cGVcIlxuICAgICAgICA6Y2xhc3M9XCIkc3R5bGUuYWN0aW9uXCJcbiAgICAgICAgQGNsaWNrPVwiZW1pdCgnYWN0aW9uJylcIlxuICAgICAgPlxuICAgICAgICB7eyBhY3Rpb25UZXh0IH19XG4gICAgICA8L1J1aUJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IHYtaWY9XCJjbG9zZWFibGVcIj5cbiAgICAgIDxSdWlCdXR0b25cbiAgICAgICAgOmNvbG9yPVwidmFyaWFudCA9PT0gJ2ZpbGxlZCcgPyB1bmRlZmluZWQgOiB0eXBlXCJcbiAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgaWNvblxuICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgIDpjbGFzcz1cIiRzdHlsZS5jbG9zZVwiXG4gICAgICAgIEBjbGljaz1cImVtaXQoJ2Nsb3NlJylcIlxuICAgICAgPlxuICAgICAgICA8UnVpSWNvblxuICAgICAgICAgIG5hbWU9XCJsdS14XCJcbiAgICAgICAgICBzaXplPVwiMjBcIlxuICAgICAgICAvPlxuICAgICAgPC9SdWlCdXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgbW9kdWxlPlxuQHVzZSAnQC9zdHlsZXMvY29sb3JzLnNjc3MnIGFzIGM7XG5AdXNlICdzYXNzOmxpc3QnO1xuXG46Z2xvYmFsKC5kYXJrKSB7XG4gIC5hbGVydCB7XG4gICAgQGVhY2ggJGNvbG9yIGluIGMuJGNvbnRleHQtY29sb3JzIHtcbiAgICAgICYuI3skY29sb3J9IHtcbiAgICAgICAgJi5kZWZhdWx0IHtcbiAgICAgICAgICBAYXBwbHkgY29sb3ItbWl4LXN1cHBvcnRlZDpiZy1ydWktI3skY29sb3J9LXNoYWRlL1suOV0gYmctc2hhZGUtWy45XTtcbiAgICAgICAgfVxuXG4gICAgICAgICYuZGVmYXVsdCxcbiAgICAgICAgJi5vdXRsaW5lZCB7XG4gICAgICAgICAgLmljb24sXG4gICAgICAgICAgLnRleHRzLFxuICAgICAgICAgIC5hY3Rpb24sXG4gICAgICAgICAgLmNsb3NlIHtcbiAgICAgICAgICAgIEBhcHBseSBjb2xvci1taXgtc3VwcG9ydGVkOnRleHQtcnVpLSN7JGNvbG9yfS10aW50L1suNl0gdGV4dC10aW50LVsuNl07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLmljb24ge1xuICAgICAgICAgICAgQGFwcGx5IHRleHQtcnVpLSN7JGNvbG9yfTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGlmIGxpc3QuaW5kZXgoKHdhcm5pbmcsIHN1Y2Nlc3MsIGluZm8pLCAkY29sb3IpIHtcbiAgICAgICAgJi4jeyRjb2xvcn0ge1xuICAgICAgICAgICYuZmlsbGVkIHtcbiAgICAgICAgICAgIC5pY29uLFxuICAgICAgICAgICAgLnRleHRzLFxuICAgICAgICAgICAgLmFjdGlvbixcbiAgICAgICAgICAgIC5jbG9zZSB7XG4gICAgICAgICAgICAgIEBhcHBseSB0ZXh0LXJ1aS1saWdodC10ZXh0ICN7IWltcG9ydGFudH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5vdXRsaW5lZCB7XG4gICAgICBAYXBwbHkgYmctYmxhY2s7XG4gICAgfVxuICB9XG59XG5cbi5hbGVydCB7XG4gIEBhcHBseSBweC00IHB5LTIuNSByb3VuZGVkIGZsZXggc3BhY2UteC00O1xuXG4gIEBlYWNoICRjb2xvciBpbiBjLiRjb250ZXh0LWNvbG9ycyB7XG4gICAgJi4jeyRjb2xvcn0ge1xuICAgICAgJi5kZWZhdWx0IHtcbiAgICAgICAgQGFwcGx5IGNvbG9yLW1peC1zdXBwb3J0ZWQ6YmctcnVpLSN7JGNvbG9yfS10aW50L1suOV07XG4gICAgICAgIEBhcHBseSBiZy1ydWktI3skY29sb3J9IGJnLXRpbnQtWy45XTtcbiAgICAgIH1cblxuICAgICAgJi5maWxsZWQge1xuICAgICAgICBAYXBwbHkgYmctcnVpLSN7JGNvbG9yfTtcbiAgICAgIH1cblxuICAgICAgJi5vdXRsaW5lZCB7XG4gICAgICAgIEBhcHBseSBib3JkZXItcnVpLSN7JGNvbG9yfTtcbiAgICAgIH1cblxuICAgICAgJi5kZWZhdWx0LFxuICAgICAgJi5vdXRsaW5lZCB7XG4gICAgICAgIC5pY29uLFxuICAgICAgICAudGV4dHMsXG4gICAgICAgIC5hY3Rpb24sXG4gICAgICAgIC5jbG9zZSB7XG4gICAgICAgICAgQGFwcGx5IHRleHQtcnVpLSN7JGNvbG9yfSB0ZXh0LXNoYWRlLVsuNl07XG4gICAgICAgICAgQGFwcGx5IGNvbG9yLW1peC1zdXBwb3J0ZWQ6dGV4dC1ydWktI3skY29sb3J9LXNoYWRlL1suNl0gY29sb3ItbWl4LXN1cHBvcnRlZDphbmltYXRlLW5vbmU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmLmZpbGxlZCB7XG4gICAgLmljb24sXG4gICAgLnRleHRzLFxuICAgIC5hY3Rpb24sXG4gICAgLmNsb3NlIHtcbiAgICAgIEBhcHBseSB0ZXh0LXJ1aS1kYXJrLXRleHQgI3shaW1wb3J0YW50fTtcbiAgICB9XG4gIH1cblxuICAmLm91dGxpbmVkIHtcbiAgICBAYXBwbHkgYm9yZGVyIG0tWy0xcHhdIGJnLXdoaXRlO1xuICB9XG59XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBnZW5lcmljPVwiVCA9IHVuZGVmaW5lZFwiIHNldHVwPlxuaW1wb3J0IHR5cGUgeyBDb250ZXh0Q29sb3JzVHlwZSB9IGZyb20gJ0AvY29uc3RzL2NvbG9ycyc7XG5pbXBvcnQgeyBGcmFnbWVudCwgaXNWTm9kZSB9IGZyb20gJ3Z1ZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvcHM8VCA9IHVuZGVmaW5lZD4ge1xuICB2ZXJ0aWNhbD86IGJvb2xlYW47XG4gIGNvbG9yPzogQ29udGV4dENvbG9yc1R5cGU7XG4gIGFjdGl2ZUNvbG9yPzogQ29udGV4dENvbG9yc1R5cGU7XG4gIHZhcmlhbnQ/OiAnZGVmYXVsdCcgfCAnb3V0bGluZWQnIHwgJ3RleHQnO1xuICBzaXplPzogJ3NtJyB8ICdsZyc7XG4gIGdhcD86ICdzbScgfCAnbWQnIHwgJ2xnJztcbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICBtb2RlbFZhbHVlPzogVCB8IFRbXTtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xufVxuXG5kZWZpbmVPcHRpb25zKHtcbiAgbmFtZTogJ1J1aUJ1dHRvbkdyb3VwJyxcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbn0pO1xuXG5jb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wczxUPj4oKSwge1xuICB2ZXJ0aWNhbDogZmFsc2UsXG4gIGNvbG9yOiB1bmRlZmluZWQsXG4gIGFjdGl2ZUNvbG9yOiB1bmRlZmluZWQsXG4gIHZhcmlhbnQ6ICdkZWZhdWx0JyxcbiAgc2l6ZTogdW5kZWZpbmVkLFxuICBnYXA6IHVuZGVmaW5lZCxcbiAgcmVxdWlyZWQ6IGZhbHNlLFxuICBtb2RlbFZhbHVlOiB1bmRlZmluZWQsXG4gIGRpc2FibGVkOiBmYWxzZSxcbn0pO1xuXG5jb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8e1xuICAoZTogJ3VwZGF0ZTptb2RlbFZhbHVlJywgbW9kZWxWYWx1ZT86IFQgfCBUW10pOiB2b2lkO1xufT4oKTtcblxuY29uc3Qgc2xvdHMgPSB1c2VTbG90cygpO1xuY29uc3QgeyBtb2RlbFZhbHVlLCByZXF1aXJlZCwgZGlzYWJsZWQsIGNvbG9yLCB2YXJpYW50LCBzaXplIH0gPSB0b1JlZnMocHJvcHMpO1xuXG4vLyBXaGVuIHVzaW5nIGR5bmFtaWMgY29udGVudCB3aXRoIHYtZm9yIHRoZSBzbG90IGNvbnRlbnQgY2FuIGNvbnRhaW4gZnJhZ21lbnQsXG4vLyBHbyB0aHJvdWdoIHRoZSBmcmFnbWVudCBhbmQgYWx3YXlzIHJldHVybiBSdWlCdXR0b24gb25seVxuZnVuY3Rpb24gZ2V0Q2hpbGRyZW4oY2hpbGRyZW46IFZOb2RlW10pOiBWTm9kZVtdIHtcbiAgcmV0dXJuIGNoaWxkcmVuLmZsYXRNYXAoKGl0ZW0pID0+IHtcbiAgICBpZiAoaXRlbS50eXBlID09PSBGcmFnbWVudCAmJiBBcnJheS5pc0FycmF5KGl0ZW0uY2hpbGRyZW4pICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoID4gMClcbiAgICAgIHJldHVybiBnZXRDaGlsZHJlbihpdGVtLmNoaWxkcmVuLmZpbHRlcihpc1ZOb2RlKSk7XG5cbiAgICByZXR1cm4gW2l0ZW1dO1xuICB9KS5mbGF0KCk7XG59XG5cbmNvbnN0IGNoaWxkcmVuID0gY29tcHV0ZWQoKCkgPT4ge1xuICAvLyBpZiBncm91cCBpcyBkaXNhYmxlZCwgZGlzYWJsZSBjaGlsZCBidXR0b25zXG4gIGNvbnN0IGlzRGlzYWJsZWQgPSBnZXQoZGlzYWJsZWQpO1xuICBjb25zdCByb290Q29sb3IgPSBnZXQoY29sb3IpO1xuICBjb25zdCBzZWxlY3RlZFZhbHVlOiBUIHwgVFtdIHwgdW5kZWZpbmVkID0gZ2V0KG1vZGVsVmFsdWUpO1xuXG4gIGNvbnN0IHNsb3RDb250ZW50ID0gc2xvdHMuZGVmYXVsdD8uKCkgPz8gW107XG5cbiAgLy8gV2hlbiB1c2luZyBkeW5hbWljIGNvbnRlbnQgd2l0aCB2LWZvciB0aGUgc2xvdCBjb250ZW50IGlzIGEgc2luZ2xlIGZyYWdtZW50XG4gIC8vIGNvbnRhaW5pbmcgdGhlIGNoaWxkcmVuIGNvbXBvbmVudHMuXG4gIGNvbnN0IGNoaWxkcmVuID0gZ2V0Q2hpbGRyZW4oc2xvdENvbnRlbnQpO1xuXG4gIHJldHVybiBjaGlsZHJlbi5tYXAoKGNoaWxkLCBpKSA9PiB7XG4gICAgLy8gY2hpbGQgcHJvcHMgYXJlIGluIGtlYmFiLWNhc2UgaXQgc2VlbXNcbiAgICBjb25zdCB2YWx1ZSA9IGNoaWxkLnByb3BzPy5bJ21vZGVsLXZhbHVlJ107XG5cbiAgICBjaGlsZC5wcm9wcyA9IHtcbiAgICAgIC4uLmNoaWxkLnByb3BzLFxuICAgICAgYWN0aXZlOiBhY3RpdmVJdGVtKHZhbHVlID8/IGksIHNlbGVjdGVkVmFsdWUpLFxuICAgIH07XG5cbiAgICBpZiAoaXNEaXNhYmxlZClcbiAgICAgIGNoaWxkLnByb3BzLmRpc2FibGVkID0gdHJ1ZTtcblxuICAgIC8vIGlmIGdpdmVuIHJvb3QgY29sb3IsIHVzZSBpdFxuICAgIGlmIChyb290Q29sb3IpXG4gICAgICBjaGlsZC5wcm9wcy5jb2xvciA9IHJvb3RDb2xvcjtcblxuICAgIGlmIChjaGlsZC5wcm9wcy5hY3RpdmUgJiYgcHJvcHMuYWN0aXZlQ29sb3IpXG4gICAgICBjaGlsZC5wcm9wcy5jb2xvciA9IHByb3BzLmFjdGl2ZUNvbG9yO1xuXG4gICAgcmV0dXJuIGNoaWxkO1xuICB9KTtcbn0pO1xuXG5mdW5jdGlvbiBhY3RpdmVJdGVtKGlkOiBULCBzZWxlY3RlZD86IFQgfCBUW10pIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoc2VsZWN0ZWQpKVxuICAgIHJldHVybiBzZWxlY3RlZC5pbmNsdWRlcyhpZCk7XG5cbiAgcmV0dXJuIHNlbGVjdGVkID09PSBpZDtcbn1cblxuZnVuY3Rpb24gb25DbGljayhpZDogVCkge1xuICBjb25zdCBzZWxlY3RlZCA9IGdldChtb2RlbFZhbHVlKTtcbiAgY29uc3QgbWFuZGF0b3J5ID0gZ2V0KHJlcXVpcmVkKTtcbiAgaWYgKEFycmF5LmlzQXJyYXkoc2VsZWN0ZWQpKSB7XG4gICAgY29uc3QgaW5kZXggPSBzZWxlY3RlZC5pbmRleE9mKGlkKTtcbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgaWYgKCFtYW5kYXRvcnkgfHwgc2VsZWN0ZWQubGVuZ3RoICE9PSAxKVxuICAgICAgICBzZWxlY3RlZC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHNlbGVjdGVkLnB1c2goaWQpO1xuICAgIH1cbiAgICBlbWl0KCd1cGRhdGU6bW9kZWxWYWx1ZScsIHNlbGVjdGVkKTtcbiAgfVxuICBlbHNlIGlmIChtYW5kYXRvcnkpIHtcbiAgICBlbWl0KCd1cGRhdGU6bW9kZWxWYWx1ZScsIGlkKTtcbiAgfVxuICBlbHNlIHtcbiAgICBlbWl0KCd1cGRhdGU6bW9kZWxWYWx1ZScsIGFjdGl2ZUl0ZW0oaWQsIHNlbGVjdGVkKSA/IHVuZGVmaW5lZCA6IGlkKTtcbiAgfVxufVxuXG5jb25zdCBjc3MgPSB1c2VDc3NNb2R1bGUoKTtcbmNvbnN0IGNvbG9yQ2xhc3MgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMuY29sb3IgPyBjc3NbcHJvcHMuY29sb3JdIDogdW5kZWZpbmVkKSk7XG5jb25zdCB2YXJpYW50Q2xhc3MgPSBjb21wdXRlZCgoKSA9PlxuICBwcm9wcy52YXJpYW50ID8gY3NzW3Byb3BzLnZhcmlhbnRdIDogdW5kZWZpbmVkLFxuKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICBjc3Mud3JhcHBlcixcbiAgICAgIGNvbG9yQ2xhc3MsXG4gICAgICB2YXJpYW50Q2xhc3MsXG4gICAgICB7XG4gICAgICAgIFtjc3Mud3JhcHBlcl9fdmVydGljYWwgPz8gJyddOiB2ZXJ0aWNhbCxcbiAgICAgICAgW2Nzcy53cmFwcGVyX19ob3Jpem9udGFsID8/ICcnXTogIXZlcnRpY2FsLFxuICAgICAgICBbY3NzLnNlcGFyYXRlZCA/PyAnJ106ICEhZ2FwLFxuICAgICAgICBbY3NzW2BzZXBhcmF0ZWRfXyR7Z2FwfWBdID8/ICcnXTogISFnYXAsXG4gICAgICB9LFxuICAgIF1cIlxuICAgIHYtYmluZD1cIiRhdHRyc1wiXG4gID5cbiAgICA8Q29tcG9uZW50XG4gICAgICA6aXM9XCJjaGlsZFwiXG4gICAgICB2LWZvcj1cIihjaGlsZCwgaSkgaW4gY2hpbGRyZW5cIlxuICAgICAgOmtleT1cImlcIlxuICAgICAgOmNsYXNzPVwiY3NzLmJ1dHRvblwiXG4gICAgICA6c2l6ZT1cInNpemVcIlxuICAgICAgOnZhcmlhbnQ9XCJ2YXJpYW50XCJcbiAgICAgIEB1cGRhdGU6bW9kZWwtdmFsdWU9XCJvbkNsaWNrKCRldmVudCA/PyBpKVwiXG4gICAgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIiBtb2R1bGU+XG5AdXNlICdAL3N0eWxlcy9jb2xvcnMuc2NzcycgYXMgYztcblxuLndyYXBwZXIge1xuICBAYXBwbHkgaW5saW5lLWZsZXggcm91bmRlZCBkaXZpZGUteCBkaXZpZGUtcnVpLWdyZXktNDAwO1xuICBAYXBwbHkgb3V0bGluZSBvdXRsaW5lLTEgb3V0bGluZS10cmFuc3BhcmVudCBvdXRsaW5lLW9mZnNldC1bLTFweF07XG5cbiAgJjpub3QoLnNlcGFyYXRlZCkge1xuICAgIC5idXR0b24ge1xuICAgICAgQGFwcGx5IHJvdW5kZWQtbm9uZTtcbiAgICB9XG4gIH1cblxuICAmX192ZXJ0aWNhbCB7XG4gICAgQGFwcGx5IGlubGluZS1mbGV4IGZsZXgtY29sIGl0ZW1zLXN0YXJ0IGRpdmlkZS14LTAgZGl2aWRlLXk7XG5cbiAgICAuYnV0dG9uIHtcbiAgICAgIEBhcHBseSB3LWZ1bGw7XG4gICAgfVxuXG4gICAgJjpub3QoLnNlcGFyYXRlZCkgLmJ1dHRvbiB7XG4gICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgQGFwcGx5IHJvdW5kZWQtdDtcbiAgICAgIH1cblxuICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgQGFwcGx5IHJvdW5kZWQtYjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmX19ob3Jpem9udGFsIHtcbiAgICAmOm5vdCguc2VwYXJhdGVkKSAuYnV0dG9uIHtcbiAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICBAYXBwbHkgcm91bmRlZC1sO1xuICAgICAgfVxuXG4gICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBAYXBwbHkgcm91bmRlZC1yO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICYuc2VwYXJhdGVkIHtcbiAgICBAYXBwbHkgZGl2aWRlLXgtMCBkaXZpZGUteS0wIG91dGxpbmUtMDtcbiAgICAmX19zbSB7XG4gICAgICBAYXBwbHkgZ2FwLTI7XG4gICAgfVxuXG4gICAgJl9fbWQge1xuICAgICAgQGFwcGx5IGdhcC00O1xuICAgIH1cblxuICAgICZfX2xnIHtcbiAgICAgIEBhcHBseSBnYXAtNjtcbiAgICB9XG5cbiAgICAuYnV0dG9uIHtcbiAgICAgIEBhcHBseSBvdXRsaW5lLTE7XG4gICAgfVxuICB9XG5cbiAgLmJ1dHRvbiB7XG4gICAgQGFwcGx5IGJvcmRlci0wIG91dGxpbmUtMDtcblxuICAgICY6Zm9jdXMge1xuICAgICAgQGFwcGx5IHotWzFdO1xuICAgIH1cbiAgfVxuXG4gIEBlYWNoICRjb2xvciBpbiBjLiRjb250ZXh0LWNvbG9ycyB7XG4gICAgJi4jeyRjb2xvcn0ge1xuICAgICAgQGFwcGx5IGRpdmlkZS1ydWktI3skY29sb3J9LWRhcmtlcjtcblxuICAgICAgJi5vdXRsaW5lZCxcbiAgICAgICYudGV4dCB7XG4gICAgICAgIEBhcHBseSBkaXZpZGUtcnVpLSN7JGNvbG9yfS9bMC41XTtcbiAgICAgIH1cblxuICAgICAgJi5vdXRsaW5lZCB7XG4gICAgICAgIEBhcHBseSBvdXRsaW5lLXJ1aS0jeyRjb2xvcn0vWzAuNV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJi5vdXRsaW5lZCB7XG4gICAgQGFwcGx5IG91dGxpbmUtcnVpLXRleHQgZGl2aWRlLXJ1aS10ZXh0O1xuICB9XG59XG48L3N0eWxlPlxuIiwiaW1wb3J0IHR5cGUgeyBDb21wdXRlZFJlZiwgSW5qZWN0aW9uS2V5LCBSZWYgfSBmcm9tICd2dWUnO1xuXG5leHBvcnQgY29uc3QgQ2FsZW5kYXJTdGF0ZVN5bWJvbDogSW5qZWN0aW9uS2V5PFJ1aUNhbGVuZGFyU3RhdGU+ID0gU3ltYm9sLmZvcigncnVpOmNhbGVuZGFyJyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUnVpQ2FsZW5kYXJTdGF0ZSB7XG4gIHZpZXdNb250aDogUmVmPG51bWJlcj47XG4gIHZpZXdZZWFyOiBSZWY8bnVtYmVyPjtcbiAgc2VsZWN0ZWREYXRlOiBSZWY8RGF0ZSB8IHVuZGVmaW5lZD47XG4gIG1heERhdGU6IENvbXB1dGVkUmVmPERhdGUgfCB1bmRlZmluZWQ+O1xuICBtaW5EYXRlOiBDb21wdXRlZFJlZjxEYXRlIHwgdW5kZWZpbmVkPjtcbiAgaXNEYXJrOiBDb21wdXRlZFJlZjxib29sZWFuPjtcbiAgYWxsb3dFbXB0eTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNb250aFllYXJTZWxlY3Rpb24ge1xuICBtb250aDogbnVtYmVyO1xuICB5ZWFyOiBudW1iZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREYXlzT2ZXZWVrKGxvY2FsZTogSW50bC5Mb2NhbGVzQXJndW1lbnQgPSAnZW4tVVMnLCBmb3JtYXQ6ICduYXJyb3cnIHwgJ3Nob3J0JyA9ICduYXJyb3cnKTogc3RyaW5nW10ge1xuICBjb25zdCBkYXlzT2ZXZWVrOiBzdHJpbmdbXSA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IDc7IGkrKykge1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgyMDIxLCAwLCAzICsgaSk7IC8vIEphbiAzLCAyMDIxIHdhcyBhIFN1bmRheVxuICAgIGNvbnN0IGRheU5hbWUgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUsIHsgd2Vla2RheTogZm9ybWF0IH0pLmZvcm1hdChkYXRlKTtcbiAgICBkYXlzT2ZXZWVrLnB1c2goZm9ybWF0ID09PSAnbmFycm93JyA/IGRheU5hbWUgOiBkYXlOYW1lLmNoYXJBdCgwKSk7XG4gIH1cbiAgcmV0dXJuIGRheXNPZldlZWs7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTaG9ydE1vbnRoTmFtZXMobG9jYWxlOiBJbnRsLkxvY2FsZXNBcmd1bWVudCA9ICdlbi1VUycpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IG1vbnRoTmFtZXM6IHN0cmluZ1tdID0gW107XG4gIGZvciAobGV0IG1vbnRoID0gMDsgbW9udGggPCAxMjsgbW9udGgrKykge1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgyMDIxLCBtb250aCwgMSk7XG4gICAgY29uc3QgbW9udGhOYW1lID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IG1vbnRoOiAnc2hvcnQnIH0pLmZvcm1hdChkYXRlKTtcbiAgICBtb250aE5hbWVzLnB1c2gobW9udGhOYW1lKTtcbiAgfVxuICByZXR1cm4gbW9udGhOYW1lcztcbn1cbiIsIjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XG5pbXBvcnQgeyBnZXQsIGlzRGVmaW5lZCwgc2V0IH0gZnJvbSAnQHZ1ZXVzZS9jb3JlJztcbmltcG9ydCB7IGluamVjdCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5pbXBvcnQgeyBDYWxlbmRhclN0YXRlU3ltYm9sLCBnZXREYXlzT2ZXZWVrLCB0eXBlIFJ1aUNhbGVuZGFyU3RhdGUgfSBmcm9tICdAL2NvbXBvbmVudHMvY2FsZW5kYXIvc3RhdGUnO1xuXG5kZWZpbmVPcHRpb25zKHtcbiAgbmFtZTogJ1J1aUNhbGVuZGFyR3JpZCcsXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG59KTtcblxuY29uc3QgbW9kZWwgPSBkZWZpbmVNb2RlbDxEYXRlIHwgdW5kZWZpbmVkPigpO1xuXG5jb25zdCBwcm9wcyA9IGRlZmluZVByb3BzPHtcbiAgdmlld01vbnRoOiBudW1iZXI7XG4gIHZpZXdZZWFyOiBudW1iZXI7XG59PigpO1xuXG5jb25zdCBjYWxlbmRhclN0YXRlID0gaW5qZWN0PFJ1aUNhbGVuZGFyU3RhdGU+KENhbGVuZGFyU3RhdGVTeW1ib2wpIGFzIFJ1aUNhbGVuZGFyU3RhdGU7XG5cbi8vIEhlbHBlciBmdW5jdGlvbnMgdG8gcmVkdWNlIGR1cGxpY2F0aW9uXG5mdW5jdGlvbiBjcmVhdGVEYXRlS2V5KGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7ZGF0ZS5nZXRGdWxsWWVhcigpfS0keyhkYXRlLmdldE1vbnRoKCkgKyAxKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9LSR7ZGF0ZS5nZXREYXRlKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpfWA7XG59XG5cbi8vIFByZS1jYWxjdWxhdGVkIGNvbnN0YW50c1xuY29uc3QgZGF5c09mV2VlayA9IGdldERheXNPZldlZWsoKTtcbmNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcbmNvbnN0IHRvZGF5S2V5ID0gY3JlYXRlRGF0ZUtleSh0b2RheSk7XG5cbi8vIFByZS1jYWxjdWxhdGVkIGFycmF5cyBmb3IgcGVyZm9ybWFuY2UgLSB1c2luZyByZWZzIGZvciBiZXR0ZXIgY29udHJvbFxuY29uc3QgY2FsZW5kYXJEYXlzID0gcmVmPEFycmF5PHtcbiAgZGF0ZTogRGF0ZTtcbiAgaXNDdXJyZW50TW9udGg6IGJvb2xlYW47XG4gIGlzSW5SYW5nZTogYm9vbGVhbjtcbiAgaXNTZWxlY3RlZDogYm9vbGVhbjtcbiAgaXNUb2RheTogYm9vbGVhbjtcbiAga2V5OiBzdHJpbmc7XG4gIGRheU51bWJlcjogbnVtYmVyO1xufT4+KFtdKTtcblxuZnVuY3Rpb24gY3JlYXRlRGF5RGF0YShkYXRlOiBEYXRlLCBpc0N1cnJlbnRNb250aDogYm9vbGVhbiwgbW9kZWxWYWx1ZTogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQsIG1heERhdGVWYWx1ZTogRGF0ZSB8IG51bGwsIG1pbkRhdGVWYWx1ZTogRGF0ZSB8IG51bGwpIHtcbiAgY29uc3Qga2V5ID0gY3JlYXRlRGF0ZUtleShkYXRlKTtcbiAgcmV0dXJuIHtcbiAgICBkYXRlLFxuICAgIGlzQ3VycmVudE1vbnRoLFxuICAgIGlzSW5SYW5nZTogaXNEYXRlSW5SYW5nZUNoZWNrKGRhdGUsIG1heERhdGVWYWx1ZSwgbWluRGF0ZVZhbHVlKSxcbiAgICBpc1NlbGVjdGVkOiBtb2RlbFZhbHVlID8gaXNEYXRlU2VsZWN0ZWRDaGVjayhkYXRlLCBtb2RlbFZhbHVlKSA6IGZhbHNlLFxuICAgIGlzVG9kYXk6IGtleSA9PT0gdG9kYXlLZXksXG4gICAga2V5LFxuICAgIGRheU51bWJlcjogZGF0ZS5nZXREYXRlKCksXG4gIH07XG59XG5cbi8vIFByZS1jYWxjdWxhdGlvbiBmdW5jdGlvbnMgdXNpbmcgVnVlVXNlIGdldC9zZXRcbmZ1bmN0aW9uIGNhbGN1bGF0ZUNhbGVuZGFyRGF5cygpIHtcbiAgY29uc3QgZmlyc3REYXlPZk1vbnRoID0gbmV3IERhdGUocHJvcHMudmlld1llYXIsIHByb3BzLnZpZXdNb250aCwgMSk7XG4gIGNvbnN0IGxhc3REYXlPZk1vbnRoID0gbmV3IERhdGUocHJvcHMudmlld1llYXIsIHByb3BzLnZpZXdNb250aCArIDEsIDApO1xuICBjb25zdCBkYXlzSW5Nb250aCA9IGxhc3REYXlPZk1vbnRoLmdldERhdGUoKTtcbiAgY29uc3Qgc3RhcnRpbmdEYXlPZldlZWsgPSBmaXJzdERheU9mTW9udGguZ2V0RGF5KCk7XG5cbiAgY29uc3QgeyBtYXhEYXRlLCBtaW5EYXRlIH0gPSBjYWxlbmRhclN0YXRlO1xuICBjb25zdCBtb2RlbFZhbHVlID0gZ2V0KG1vZGVsKTtcbiAgY29uc3QgbWF4RGF0ZVZhbHVlID0gaXNEZWZpbmVkKG1heERhdGUpID8gZ2V0KG1heERhdGUpIDogbnVsbDtcbiAgY29uc3QgbWluRGF0ZVZhbHVlID0gaXNEZWZpbmVkKG1pbkRhdGUpID8gZ2V0KG1pbkRhdGUpIDogbnVsbDtcblxuICBjb25zdCByZXN1bHQgPSBbXTtcblxuICAvLyBQcmV2aW91cyBtb250aCBkYXlzXG4gIGlmIChzdGFydGluZ0RheU9mV2VlayA+IDApIHtcbiAgICBjb25zdCBwcmV2TW9udGhMYXN0RGF5ID0gbmV3IERhdGUocHJvcHMudmlld1llYXIsIHByb3BzLnZpZXdNb250aCwgMCkuZ2V0RGF0ZSgpO1xuICAgIGZvciAobGV0IGkgPSBzdGFydGluZ0RheU9mV2VlayAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUocHJvcHMudmlld1llYXIsIHByb3BzLnZpZXdNb250aCAtIDEsIHByZXZNb250aExhc3REYXkgLSBpLCAxMiwgMCwgMCwgMCk7XG4gICAgICByZXN1bHQucHVzaChjcmVhdGVEYXlEYXRhKGRhdGUsIGZhbHNlLCBtb2RlbFZhbHVlLCBtYXhEYXRlVmFsdWUsIG1pbkRhdGVWYWx1ZSkpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEN1cnJlbnQgbW9udGggZGF5c1xuICBmb3IgKGxldCBpID0gMTsgaSA8PSBkYXlzSW5Nb250aDsgaSsrKSB7XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHByb3BzLnZpZXdZZWFyLCBwcm9wcy52aWV3TW9udGgsIGksIDEyLCAwLCAwLCAwKTtcbiAgICByZXN1bHQucHVzaChjcmVhdGVEYXlEYXRhKGRhdGUsIHRydWUsIG1vZGVsVmFsdWUsIG1heERhdGVWYWx1ZSwgbWluRGF0ZVZhbHVlKSk7XG4gIH1cblxuICAvLyBOZXh0IG1vbnRoIGRheXNcbiAgY29uc3QgdG90YWxEYXlzU29GYXIgPSByZXN1bHQubGVuZ3RoO1xuICBjb25zdCBkYXlzVG9BZGQgPSA0MiAtIHRvdGFsRGF5c1NvRmFyO1xuICBmb3IgKGxldCBpID0gMTsgaSA8PSBkYXlzVG9BZGQ7IGkrKykge1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShwcm9wcy52aWV3WWVhciwgcHJvcHMudmlld01vbnRoICsgMSwgaSwgMTIsIDAsIDAsIDApO1xuICAgIHJlc3VsdC5wdXNoKGNyZWF0ZURheURhdGEoZGF0ZSwgZmFsc2UsIG1vZGVsVmFsdWUsIG1heERhdGVWYWx1ZSwgbWluRGF0ZVZhbHVlKSk7XG4gIH1cblxuICBzZXQoY2FsZW5kYXJEYXlzLCByZXN1bHQpO1xufVxuXG5mdW5jdGlvbiBpc0RhdGVJblJhbmdlQ2hlY2soZGF0ZTogRGF0ZSwgbWF4RGF0ZVZhbHVlOiBEYXRlIHwgbnVsbCwgbWluRGF0ZVZhbHVlOiBEYXRlIHwgbnVsbCk6IGJvb2xlYW4ge1xuICBpZiAobWF4RGF0ZVZhbHVlICYmIGRhdGUgPiBtYXhEYXRlVmFsdWUpXG4gICAgcmV0dXJuIGZhbHNlO1xuICBpZiAobWluRGF0ZVZhbHVlICYmIGRhdGUgPCBtaW5EYXRlVmFsdWUpXG4gICAgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gaXNEYXRlU2VsZWN0ZWRDaGVjayhkYXRlOiBEYXRlLCBtb2RlbFZhbHVlOiBEYXRlKTogYm9vbGVhbiB7XG4gIHJldHVybiBkYXRlLmdldEZ1bGxZZWFyKCkgPT09IG1vZGVsVmFsdWUuZ2V0RnVsbFllYXIoKVxuICAgICYmIGRhdGUuZ2V0TW9udGgoKSA9PT0gbW9kZWxWYWx1ZS5nZXRNb250aCgpXG4gICAgJiYgZGF0ZS5nZXREYXRlKCkgPT09IG1vZGVsVmFsdWUuZ2V0RGF0ZSgpO1xufVxuXG4vLyBJbml0aWFsIGNhbGN1bGF0aW9uXG5jYWxjdWxhdGVDYWxlbmRhckRheXMoKTtcblxuLy8gV2F0Y2hlcnMgZm9yIHJlY2FsY3VsYXRpb24gb25seSB3aGVuIG5lZWRlZFxud2F0Y2goWygpID0+IHByb3BzLnZpZXdNb250aCwgKCkgPT4gcHJvcHMudmlld1llYXJdLCAoKSA9PiB7XG4gIGNhbGN1bGF0ZUNhbGVuZGFyRGF5cygpO1xufSk7XG5cbndhdGNoKG1vZGVsLCAoKSA9PiB7XG4gIGNhbGN1bGF0ZUNhbGVuZGFyRGF5cygpO1xufSk7XG5cbndhdGNoKFsoKSA9PiBjYWxlbmRhclN0YXRlLm1heERhdGUsICgpID0+IGNhbGVuZGFyU3RhdGUubWluRGF0ZV0sICgpID0+IHtcbiAgY2FsY3VsYXRlQ2FsZW5kYXJEYXlzKCk7XG59LCB7IGRlZXA6IHRydWUgfSk7XG5cbmZ1bmN0aW9uIHNlbGVjdERhdGUoZGF5RGF0YTogeyBkYXRlOiBEYXRlOyBpc0luUmFuZ2U6IGJvb2xlYW47IGlzU2VsZWN0ZWQ6IGJvb2xlYW4gfSkge1xuICBpZiAoIWRheURhdGEuaXNJblJhbmdlKVxuICAgIHJldHVybjtcblxuICBsZXQgdXBkYXRlTW9kZWw6IERhdGUgfCB1bmRlZmluZWQ7XG5cbiAgaWYgKGRheURhdGEuaXNTZWxlY3RlZCAmJiBjYWxlbmRhclN0YXRlLmFsbG93RW1wdHkpIHtcbiAgICB1cGRhdGVNb2RlbCA9IHVuZGVmaW5lZDtcbiAgfVxuICBlbHNlIGlmIChpc0RlZmluZWQobW9kZWwpKSB7XG4gICAgY29uc3QgbW9kZWxWYWx1ZSA9IGdldChtb2RlbCk7XG4gICAgY29uc3QgbmV3RGF0ZSA9IG5ldyBEYXRlKGRheURhdGEuZGF0ZSk7XG4gICAgbmV3RGF0ZS5zZXRIb3Vycyhtb2RlbFZhbHVlLmdldEhvdXJzKCkpO1xuICAgIG5ld0RhdGUuc2V0TWludXRlcyhtb2RlbFZhbHVlLmdldE1pbnV0ZXMoKSk7XG4gICAgbmV3RGF0ZS5zZXRTZWNvbmRzKG1vZGVsVmFsdWUuZ2V0U2Vjb25kcygpKTtcbiAgICB1cGRhdGVNb2RlbCA9IG5ld0RhdGU7XG4gIH1cbiAgZWxzZSB7XG4gICAgdXBkYXRlTW9kZWwgPSBuZXcgRGF0ZShkYXlEYXRhLmRhdGUpO1xuICB9XG4gIHNldChtb2RlbCwgdXBkYXRlTW9kZWwpO1xufVxuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWdyaWRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItd2Vla2RheXNcIj5cbiAgICAgIDxzcGFuXG4gICAgICAgIHYtZm9yPVwiZGF5IGluIGRheXNPZldlZWtcIlxuICAgICAgICA6a2V5PVwiZGF5XCJcbiAgICAgICAgY2xhc3M9XCJ3ZWVrZGF5LWxhYmVsXCJcbiAgICAgID5cbiAgICAgICAge3sgZGF5IH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItZGF5c1wiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB2LWZvcj1cImRheURhdGEgaW4gZ2V0KGNhbGVuZGFyRGF5cylcIlxuICAgICAgICA6a2V5PVwiZGF5RGF0YS5rZXlcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgOmRhdGEtaWQ9XCJkYXlEYXRhLmtleVwiXG4gICAgICAgIGNsYXNzPVwiaC05IHctZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LXNtIHJvdW5kZWQtZnVsbCBteC1hdXRvIG1heC13LVsyLjI1cmVtXSB0cmFuc2l0aW9uLWNvbG9ycyBkdXJhdGlvbi0xNTAgZWFzZS1pbi1vdXQgYm9yZGVyLW5vbmUgb3V0bGluZS1ub25lIGN1cnNvci1wb2ludGVyIGZvY3VzOnJpbmctMiBmb2N1czpyaW5nLXJ1aS1wcmltYXJ5IGZvY3VzOnJpbmctb3BhY2l0eS01MFwiXG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICB7XG4gICAgICAgICAgICAnYmctcnVpLXByaW1hcnkgdGV4dC13aGl0ZSBob3ZlcjpiZy1ydWktcHJpbWFyeS85MCBkYXJrOmhvdmVyOmJnLXJ1aS1wcmltYXJ5LzkwJzogZGF5RGF0YS5pc1NlbGVjdGVkLFxuICAgICAgICAgICAgJ3RleHQtZ3JheS00MDAgZGFyazp0ZXh0LWdyYXktNjAwJzogIWRheURhdGEuaXNDdXJyZW50TW9udGggJiYgIWRheURhdGEuaXNTZWxlY3RlZCxcbiAgICAgICAgICAgICd0ZXh0LWdyYXktNzAwIGhvdmVyOmJnLWdyYXktMTAwIGRhcms6dGV4dC1ncmF5LTMwMCBkYXJrOmhvdmVyOmJnLWdyYXktNzAwJzogZGF5RGF0YS5pc0N1cnJlbnRNb250aCAmJiAhZGF5RGF0YS5pc1NlbGVjdGVkICYmIGRheURhdGEuaXNJblJhbmdlLFxuICAgICAgICAgICAgJ29wYWNpdHktNTAgY3Vyc29yLW5vdC1hbGxvd2VkIGhvdmVyOmJnLXRyYW5zcGFyZW50JzogIWRheURhdGEuaXNJblJhbmdlLFxuICAgICAgICAgICAgJ3RvZGF5LWluZGljYXRvcic6IGRheURhdGEuaXNUb2RheSAmJiAhZGF5RGF0YS5pc1NlbGVjdGVkLFxuICAgICAgICAgIH0sXG4gICAgICAgIF1cIlxuICAgICAgICA6ZGlzYWJsZWQ9XCIhZGF5RGF0YS5pc0luUmFuZ2VcIlxuICAgICAgICBAY2xpY2suc3RvcD1cInNlbGVjdERhdGUoZGF5RGF0YSlcIlxuICAgICAgPlxuICAgICAgICB7eyBkYXlEYXRhLmRheU51bWJlciB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbi5jYWxlbmRhci1ncmlkIHtcbiAgQGFwcGx5IHctZnVsbCBwLTIgcHQtMDtcbn1cblxuLmNhbGVuZGFyLXdlZWtkYXlzIHtcbiAgQGFwcGx5IGdyaWQgZ3JpZC1jb2xzLTcgcGItMjtcbn1cblxuLndlZWtkYXktbGFiZWwge1xuICBAYXBwbHkgcHktMiB0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtY2VudGVyIHRleHQtZ3JheS01MDAgZGFyazp0ZXh0LWdyYXktNDAwO1xufVxuXG4uY2FsZW5kYXItZGF5cyB7XG4gIEBhcHBseSBncmlkIGdyaWQtY29scy03IGdhcC0wLjU7XG59XG5cbi50b2RheS1pbmRpY2F0b3Ige1xuICBAYXBwbHkgcmVsYXRpdmU7XG5cbiAgJjphZnRlciB7XG4gICAgY29udGVudDogJyc7XG4gICAgQGFwcGx5IGFic29sdXRlIHNpemUtMSByb3VuZGVkLWZ1bGwgYm90dG9tLTEgbGVmdC0xLzIgdHJhbnNmb3JtIC10cmFuc2xhdGUteC0xLzIgYmctcnVpLXByaW1hcnk7XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoXG4gIGRlZmluZVByb3BzPHtcbiAgICBlcnJvck1lc3NhZ2VzPzogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgc3VjY2Vzc01lc3NhZ2VzPzogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgaGludD86IHN0cmluZztcbiAgfT4oKSxcbiAge1xuICAgIGVycm9yTWVzc2FnZXM6ICgpID0+IFtdLFxuICAgIHN1Y2Nlc3NNZXNzYWdlczogKCkgPT4gW10sXG4gICAgaGludDogJycsXG4gIH0sXG4pO1xuXG5jb25zdCB7IGVycm9yTWVzc2FnZXMsIHN1Y2Nlc3NNZXNzYWdlcyB9ID0gdG9SZWZzKHByb3BzKTtcblxuY29uc3Qge1xuICBmb3JtYXR0ZWRFcnJvck1lc3NhZ2VzLFxuICBmb3JtYXR0ZWRTdWNjZXNzTWVzc2FnZXMsXG4gIGhhc0Vycm9yLFxuICBoYXNTdWNjZXNzLFxufSA9IHVzZUZvcm1UZXh0RGV0YWlsKGVycm9yTWVzc2FnZXMsIHN1Y2Nlc3NNZXNzYWdlcyk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8VHJhbnNpdGlvbkdyb3VwXG4gICAgdGFnPVwiZGl2XCJcbiAgICBjbGFzcz1cImRldGFpbHMgbWluLWgtWzEuNXJlbV1cIlxuICAgIGVudGVyLWZyb20tY2xhc3M9XCJvcGFjaXR5LTAgLXRyYW5zbGF0ZS15LTIgaC0wXCJcbiAgICBlbnRlci1hY3RpdmUtY2xhc3M9XCJ0cmFuc2Zvcm0gdHJhbnNpdGlvblwiXG4gICAgZW50ZXItdG8tY2xhc3M9XCJvcGFjaXR5LTEwMCB0cmFuc2xhdGUteS0wXCJcbiAgICBsZWF2ZS1mcm9tLWNsYXNzPVwib3BhY2l0eS0xMDAgLXRyYW5zbGF0ZS15LTJcIlxuICAgIGxlYXZlLWFjdGl2ZS1jbGFzcz1cInRyYW5zZm9ybSB0cmFuc2l0aW9uXCJcbiAgICBsZWF2ZS10by1jbGFzcz1cIm9wYWNpdHktMCAtdHJhbnNsYXRlLXktMiBoLTBcIlxuICAgIGFwcGVhclxuICA+XG4gICAgPGRpdlxuICAgICAgdi1pZj1cImhhc0Vycm9yXCJcbiAgICAgIGtleT1cImVycm9yXCJcbiAgICAgIGNsYXNzPVwidGV4dC1ydWktZXJyb3IgdGV4dC1jYXB0aW9uXCJcbiAgICA+XG4gICAgICB7eyBmb3JtYXR0ZWRFcnJvck1lc3NhZ2VzWzBdIH19XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgdi1lbHNlLWlmPVwiaGFzU3VjY2Vzc1wiXG4gICAgICBrZXk9XCJzdWNjZXNzXCJcbiAgICAgIGNsYXNzPVwidGV4dC1ydWktc3VjY2VzcyB0ZXh0LWNhcHRpb25cIlxuICAgID5cbiAgICAgIHt7IGZvcm1hdHRlZFN1Y2Nlc3NNZXNzYWdlc1swXSB9fVxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIHYtZWxzZS1pZj1cImhpbnRcIlxuICAgICAga2V5PVwiaGludFwiXG4gICAgICBjbGFzcz1cInRleHQtcnVpLXRleHQtc2Vjb25kYXJ5IHRleHQtY2FwdGlvblwiXG4gICAgPlxuICAgICAge3sgaGludCB9fVxuICAgIDwvZGl2PlxuICA8L1RyYW5zaXRpb25Hcm91cD5cbjwvdGVtcGxhdGU+XG4iLCI8c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuaW1wb3J0IFJ1aUZvcm1UZXh0RGV0YWlsIGZyb20gJ0AvY29tcG9uZW50cy9oZWxwZXJzL1J1aUZvcm1UZXh0RGV0YWlsLnZ1ZSc7XG5pbXBvcnQgeyB0eXBlIFBvcHBlck9wdGlvbnMsIHVzZVBvcHBlciB9IGZyb20gJ0AvY29tcG9zYWJsZXMvcG9wcGVyJztcblxuZXhwb3J0IGludGVyZmFjZSBNZW51UHJvcHMge1xuICBtb2RlbFZhbHVlPzogYm9vbGVhbjtcbiAgb3Blbk9uSG92ZXI/OiBib29sZWFuO1xuICBmdWxsV2lkdGg/OiBib29sZWFuO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIG9wZW5EZWxheT86IG51bWJlcjtcbiAgY2xvc2VEZWxheT86IG51bWJlcjtcbiAgcG9wcGVyPzogUG9wcGVyT3B0aW9ucztcbiAgd3JhcHBlckNsYXNzPzogc3RyaW5nIHwgb2JqZWN0IHwgc3RyaW5nW107XG4gIG1lbnVDbGFzcz86IHN0cmluZyB8IG9iamVjdCB8IHN0cmluZ1tdO1xuICBjbG9zZU9uQ29udGVudENsaWNrPzogYm9vbGVhbjtcbiAgcGVyc2lzdE9uQWN0aXZhdG9yQ2xpY2s/OiBib29sZWFuO1xuICBoaW50Pzogc3RyaW5nO1xuICBlcnJvck1lc3NhZ2VzPzogc3RyaW5nIHwgc3RyaW5nW107XG4gIHN1Y2Nlc3NNZXNzYWdlcz86IHN0cmluZyB8IHN0cmluZ1tdO1xuICBzaG93RGV0YWlscz86IGJvb2xlYW47XG4gIGRlbnNlPzogYm9vbGVhbjtcbiAgcGVyc2lzdGVudD86IGJvb2xlYW47XG4gIGRpc2FibGVBdXRvRm9jdXM/OiBib29sZWFuO1xufVxuXG5kZWZpbmVPcHRpb25zKHtcbiAgbmFtZTogJ1J1aU1lbnUnLFxufSk7XG5cbmNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPE1lbnVQcm9wcz4oKSwge1xuICBtb2RlbFZhbHVlOiBmYWxzZSxcbiAgb3Blbk9uSG92ZXI6IGZhbHNlLFxuICBkaXNhYmxlZDogZmFsc2UsXG4gIGZ1bGxXaWR0aDogZmFsc2UsXG4gIG9wZW5EZWxheTogMCxcbiAgY2xvc2VEZWxheTogMCxcbiAgcG9wcGVyOiAoKSA9PiAoe30pLFxuICB3cmFwcGVyQ2xhc3M6ICcnLFxuICBtZW51Q2xhc3M6ICcnLFxuICBjbG9zZU9uQ29udGVudENsaWNrOiBmYWxzZSxcbiAgcGVyc2lzdE9uQWN0aXZhdG9yQ2xpY2s6IGZhbHNlLFxuICBoaW50OiB1bmRlZmluZWQsXG4gIGVycm9yTWVzc2FnZXM6ICgpID0+IFtdLFxuICBzdWNjZXNzTWVzc2FnZXM6ICgpID0+IFtdLFxuICBwZXJzaXN0ZW50OiBmYWxzZSxcbiAgZGlzYWJsZUF1dG9Gb2N1czogZmFsc2UsXG59KTtcblxuY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPHtcbiAgKGU6ICd1cGRhdGU6bW9kZWwtdmFsdWUnLCB2YWx1ZTogYm9vbGVhbik6IHZvaWQ7XG59PigpO1xuXG5jb25zdCB7XG4gIG1vZGVsVmFsdWUsXG4gIGNsb3NlRGVsYXksXG4gIG9wZW5EZWxheSxcbiAgcG9wcGVyLFxuICBkaXNhYmxlZCxcbiAgcGVyc2lzdE9uQWN0aXZhdG9yQ2xpY2ssXG4gIGNsb3NlT25Db250ZW50Q2xpY2ssXG4gIG9wZW5PbkhvdmVyLFxuICBlcnJvck1lc3NhZ2VzLFxuICBzdWNjZXNzTWVzc2FnZXMsXG4gIHBlcnNpc3RlbnQsXG4gIGRpc2FibGVBdXRvRm9jdXMsXG59ID0gdG9SZWZzKHByb3BzKTtcblxuY29uc3Qge1xuICByZWZlcmVuY2U6IGFjdGl2YXRvcixcbiAgcG9wcGVyOiBtZW51LFxuICBvcGVuLFxuICBwb3BwZXJFbnRlcixcbiAgbGVhdmVQZW5kaW5nLFxuICBvbkxlYXZlUGVuZGluZyxcbiAgb25PcGVuLFxuICBvbkNsb3NlLFxuICBvblBvcHBlckxlYXZlLFxuICB1cGRhdGVQb3BwZXIsXG59ID0gdXNlUG9wcGVyKHBvcHBlciwgZGlzYWJsZWQsIG9wZW5EZWxheSwgY2xvc2VEZWxheSk7XG5cbmNvbnN0IHsgd2lkdGggfSA9IHVzZUVsZW1lbnRTaXplKGFjdGl2YXRvcik7XG5cbmNvbnN0IGNsaWNrID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcbmNvbnN0IG1lbnVDb250ZW50ID0gcmVmPEhUTUxFbGVtZW50PigpO1xuXG5jb25zdCBGT0NVU0FCTEVfRUxFTUVOVFNfU0VMRUNUT1IgPSAnYnV0dG9uLCBbaHJlZl0sIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBbdGFiaW5kZXhdOm5vdChbdGFiaW5kZXg9XCItMVwiXSknO1xuXG5mdW5jdGlvbiBmb2N1c01lbnUoKSB7XG4gIGlmIChnZXQoZGlzYWJsZUF1dG9Gb2N1cykpXG4gICAgcmV0dXJuO1xuXG4gIG5leHRUaWNrKCgpID0+IHtcbiAgICBjb25zdCBjb250ZW50ID0gZ2V0KG1lbnVDb250ZW50KTtcbiAgICBpZiAoIWNvbnRlbnQpXG4gICAgICByZXR1cm47XG5cbiAgICAvLyBGb2N1cyBvbiB0aGUgbWVudSBjb250YWluZXIgaXRzZWxmXG4gICAgY29udGVudC5mb2N1cygpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gb25MZWF2ZShldmVudD86IEtleWJvYXJkRXZlbnQpIHtcbiAgaWYgKCFnZXQob3BlbikpXG4gICAgcmV0dXJuO1xuICBvbkNsb3NlKCk7XG4gIHNldChjbGljaywgZmFsc2UpO1xuICBldmVudD8uc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgLy8gUmV0dXJuIGZvY3VzIHRvIGFjdGl2YXRvciB3aGVuIG1lbnUgY2xvc2VzXG4gIGlmICghZ2V0KGRpc2FibGVBdXRvRm9jdXMpKSB7XG4gICAgbmV4dFRpY2soKCkgPT4ge1xuICAgICAgY29uc3QgYWN0aXZhdG9yRWwgPSBnZXQoYWN0aXZhdG9yKTtcbiAgICAgIGlmIChhY3RpdmF0b3JFbCkge1xuICAgICAgICBjb25zdCBmb2N1c2FibGVFbCA9IGFjdGl2YXRvckVsLnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KFxuICAgICAgICAgIEZPQ1VTQUJMRV9FTEVNRU5UU19TRUxFQ1RPUixcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGZvY3VzYWJsZUVsKSB7XG4gICAgICAgICAgZm9jdXNhYmxlRWwuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNoZWNrQ2xpY2soKSB7XG4gIGlmIChnZXQob3BlbikgJiYgZ2V0KGNsaWNrKSkge1xuICAgIGlmICghZ2V0KHBlcnNpc3RPbkFjdGl2YXRvckNsaWNrKSlcbiAgICAgIG9uTGVhdmUoKTtcbiAgfVxuICBlbHNlIHtcbiAgICBvbk9wZW4oKTtcbiAgICBzZXQoY2xpY2ssIHRydWUpO1xuICB9XG59XG5cbndhdGNoKG1vZGVsVmFsdWUsICh2YWx1ZSkgPT4ge1xuICBpZiAodmFsdWUpIHtcbiAgICBvbk9wZW4oKTtcbiAgICBzZXQoY2xpY2ssIHRydWUpO1xuICB9XG4gIGVsc2Uge1xuICAgIG9uTGVhdmUoKTtcbiAgfVxufSk7XG5cbndhdGNoKG9wZW4sIChvcGVuKSA9PiB7XG4gIGVtaXQoJ3VwZGF0ZTptb2RlbC12YWx1ZScsIG9wZW4pO1xuICBpZiAob3Blbikge1xuICAgIGZvY3VzTWVudSgpO1xuICB9XG59KTtcblxub25DbGlja091dHNpZGUobWVudSwgKCkgPT4ge1xuICBpZiAoZ2V0KG9wZW4pICYmICFnZXQocGVyc2lzdGVudCkpXG4gICAgb25MZWF2ZSgpO1xufSwgeyBpZ25vcmU6IFthY3RpdmF0b3JdIH0pO1xuXG5jb25zdCBiYXNlTWVudUF0dHJzID0gY29tcHV0ZWQoKCkgPT4ge1xuICBpZiAoZ2V0KGRpc2FibGVkKSlcbiAgICByZXR1cm4ge307XG5cbiAgY29uc3Qgb3Blbk9uSG92ZXJWYWwgPSBnZXQob3Blbk9uSG92ZXIpO1xuICBjb25zdCBjbGlja1ZhbCA9IGdldChjbGljayk7XG4gIHJldHVybiB7XG4gICAgb25Nb3VzZW92ZXI6ICgpID0+IHtcbiAgICAgIGlmIChvcGVuT25Ib3ZlclZhbClcbiAgICAgICAgb25PcGVuKCk7XG4gICAgfSxcbiAgICBvbk1vdXNlbGVhdmU6ICgpID0+IHtcbiAgICAgIGlmIChvcGVuT25Ib3ZlclZhbCAmJiAhY2xpY2tWYWwpXG4gICAgICAgIG9uQ2xvc2UoKTtcbiAgICB9LFxuICB9O1xufSk7XG5cbmNvbnN0IG1lbnVBdHRycyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgaWYgKGdldChkaXNhYmxlZCkpXG4gICAgcmV0dXJuIHt9O1xuXG4gIHJldHVybiB7IC4uLmdldChiYXNlTWVudUF0dHJzKSwgb25DbGljazogY2hlY2tDbGljayB9O1xufSk7XG5cbmNvbnN0IHsgaGFzRXJyb3IsIGhhc1N1Y2Nlc3MgfSA9IHVzZUZvcm1UZXh0RGV0YWlsKFxuICBlcnJvck1lc3NhZ2VzLFxuICBzdWNjZXNzTWVzc2FnZXMsXG4pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIEBrZXlkb3duLmVzYy5zdG9wPVwib25MZWF2ZSgpXCJcbiAgICBAa2V5ZG93bi50YWI9XCIhZGlzYWJsZUF1dG9Gb2N1cyAmJiBvcGVuID8gdW5kZWZpbmVkIDogbnVsbFwiXG4gID5cbiAgICA8ZGl2XG4gICAgICByZWY9XCJhY3RpdmF0b3JcIlxuICAgICAgOmNsYXNzPVwiWyRzdHlsZS53cmFwcGVyLCB3cmFwcGVyQ2xhc3MsIHsgJ3ctZnVsbCc6IGZ1bGxXaWR0aCB9XVwiXG4gICAgICA6ZGF0YS1tZW51LWRpc2FibGVkPVwiZGlzYWJsZWRcIlxuICAgID5cbiAgICAgIDxzbG90XG4gICAgICAgIG5hbWU9XCJhY3RpdmF0b3JcIlxuICAgICAgICB2LWJpbmQ9XCJ7IGF0dHJzOiBtZW51QXR0cnMsIG9wZW4sIGRpc2FibGVkLCBoYXNFcnJvciwgaGFzU3VjY2VzcyB9XCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gICAgPFRlbGVwb3J0XG4gICAgICB2LWlmPVwiIWRpc2FibGVkXCJcbiAgICAgIHRvPVwiYm9keVwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICB2LWlmPVwicG9wcGVyRW50ZXJcIlxuICAgICAgICByZWY9XCJtZW51XCJcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICRzdHlsZS5tZW51LFxuICAgICAgICAgIG1lbnVDbGFzcyxcbiAgICAgICAgICAkc3R5bGVbYG1lbnVfXyR7cG9wcGVyPy5zdHJhdGVneSA/PyAnYWJzb2x1dGUnfWBdLFxuICAgICAgICBdXCJcbiAgICAgICAgcm9sZT1cIm1lbnVcIlxuICAgICAgICBAY2xpY2s9XCJjbG9zZU9uQ29udGVudENsaWNrID8gb25MZWF2ZSgpIDogdW5kZWZpbmVkXCJcbiAgICAgICAgQGtleWRvd24uZXNjLnN0b3A9XCJvbkxlYXZlKClcIlxuICAgICAgPlxuICAgICAgICA8VHJhbnNpdGlvbkdyb3VwXG4gICAgICAgICAgZW50ZXItYWN0aXZlLWNsYXNzPVwidHJhbnNpdGlvbiBlYXNlLW91dCBkdXJhdGlvbi0yMDBcIlxuICAgICAgICAgIGVudGVyLWZyb20tY2xhc3M9XCJvcGFjaXR5LTAgdHJhbnNsYXRlLXktMVwiXG4gICAgICAgICAgZW50ZXItdG8tY2xhc3M9XCJvcGFjaXR5LTEwMCB0cmFuc2xhdGUteS0wXCJcbiAgICAgICAgICBsZWF2ZS1hY3RpdmUtY2xhc3M9XCJ0cmFuc2l0aW9uIGVhc2UtaW4gZHVyYXRpb24tMTUwXCJcbiAgICAgICAgICBsZWF2ZS1mcm9tLWNsYXNzPVwib3BhY2l0eS0xMDAgdHJhbnNsYXRlLXktMFwiXG4gICAgICAgICAgbGVhdmUtdG8tY2xhc3M9XCJvcGFjaXR5LTAgdHJhbnNsYXRlLXktMVwiXG4gICAgICAgICAgQGJlZm9yZS1lbnRlcj1cInVwZGF0ZVBvcHBlcigpXCJcbiAgICAgICAgICBAYWZ0ZXItbGVhdmU9XCJsZWF2ZVBlbmRpbmcgPyBvblBvcHBlckxlYXZlKCkgOiB1bmRlZmluZWRcIlxuICAgICAgICAgIEBiZWZvcmUtbGVhdmU9XCJvbkxlYXZlUGVuZGluZygpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIHYtaWY9XCJvcGVuXCJcbiAgICAgICAgICAgIHJlZj1cIm1lbnVDb250ZW50XCJcbiAgICAgICAgICAgIGtleT1cIm1lbnVcIlxuICAgICAgICAgICAgcm9sZT1cIm1lbnUtY29udGVudFwiXG4gICAgICAgICAgICA6Y2xhc3M9XCIkc3R5bGUuYmFzZVwiXG4gICAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgIHYtYmluZD1cImJhc2VNZW51QXR0cnNcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzbG90IHYtYmluZD1cInsgd2lkdGggfVwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvVHJhbnNpdGlvbkdyb3VwPlxuICAgICAgPC9kaXY+XG4gICAgPC9UZWxlcG9ydD5cbiAgICA8UnVpRm9ybVRleHREZXRhaWxcbiAgICAgIHYtaWY9XCJzaG93RGV0YWlsc1wiXG4gICAgICBjbGFzcz1cInB0LTFcIlxuICAgICAgOmNsYXNzPVwiW2RlbnNlID8gJ3B4LTInIDogJ3B4LTQnXVwiXG4gICAgICA6ZXJyb3ItbWVzc2FnZXM9XCJlcnJvck1lc3NhZ2VzXCJcbiAgICAgIDpzdWNjZXNzLW1lc3NhZ2VzPVwic3VjY2Vzc01lc3NhZ2VzXCJcbiAgICAgIDpoaW50PVwiaGludFwiXG4gICAgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIiBtb2R1bGU+XG4ud3JhcHBlciB7XG4gIEBhcHBseSByZWxhdGl2ZSBpbmxpbmUtZmxleCBtYXgtdy1mdWxsO1xufVxuXG4ubWVudSB7XG4gIEBhcHBseSB3LW1heCB0cmFuc2Zvcm0gdHJhbnNpdGlvbi1vcGFjaXR5IGRlbGF5LTAgei1bOTk5OV07XG5cbiAgJl9fZml4ZWQge1xuICAgIEBhcHBseSBmaXhlZDtcbiAgfVxuXG4gICZfX2Fic29sdXRlIHtcbiAgICBAYXBwbHkgYWJzb2x1dGU7XG4gIH1cblxuICAuYmFzZSB7XG4gICAgQGFwcGx5IHJvdW5kZWQgb3ZlcmZsb3ctaGlkZGVuIHNoYWRvdy04O1xuICAgIEBhcHBseSBiZy13aGl0ZSB0ZXh0LXJ1aS10ZXh0O1xuXG4gICAgJjpmb2N1cyB7XG4gICAgICBAYXBwbHkgb3V0bGluZS1ub25lO1xuICAgIH1cbiAgfVxufVxuXG46Z2xvYmFsKC5kYXJrKSB7XG4gIC5tZW51IHtcbiAgICAuYmFzZSB7XG4gICAgICBAYXBwbHkgYmctWyMyRTJFMkVdO1xuICAgIH1cbiAgfVxufVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XG5pbXBvcnQgeyBnZXQsIGlzRGVmaW5lZCwgc2V0IH0gZnJvbSAnQHZ1ZXVzZS9jb3JlJztcbmltcG9ydCB7IHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuaW1wb3J0IHtcbiAgQ2FsZW5kYXJTdGF0ZVN5bWJvbCxcbiAgZ2V0U2hvcnRNb250aE5hbWVzLFxuICB0eXBlIE1vbnRoWWVhclNlbGVjdGlvbixcbiAgdHlwZSBSdWlDYWxlbmRhclN0YXRlLFxufSBmcm9tICdAL2NvbXBvbmVudHMvY2FsZW5kYXIvc3RhdGUnO1xuaW1wb3J0IFJ1aUljb24gZnJvbSAnQC9jb21wb25lbnRzL2ljb25zL1J1aUljb24udnVlJztcbmltcG9ydCBSdWlNZW51IGZyb20gJ0AvY29tcG9uZW50cy9vdmVybGF5cy9tZW51L1J1aU1lbnUudnVlJztcbmltcG9ydCBSdWlCdXR0b24gZnJvbSAnLi4vYnV0dG9ucy9idXR0b24vUnVpQnV0dG9uLnZ1ZSc7XG5cbmRlZmluZU9wdGlvbnMoe1xuICBuYW1lOiAnUnVpQ2FsZW5kYXJNZW51JyxcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbn0pO1xuXG5jb25zdCBtb2RlbFZhbHVlID0gZGVmaW5lTW9kZWw8Ym9vbGVhbj4oKTtcblxuY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wczx7XG4gIGFuY2hvckVsOiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgdmlld01vbnRoOiBudW1iZXI7XG4gIHZpZXdZZWFyOiBudW1iZXI7XG59PigpO1xuXG5jb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8e1xuICBzZWxlY3Q6IFtNb250aFllYXJTZWxlY3Rpb25dO1xufT4oKTtcblxuLy8gQ29yZSByZWFjdGl2ZSBzdGF0ZSAtIG1pbmltYWxcbmNvbnN0IHZpZXdNb2RlID0gcmVmPCdtb250aHMnIHwgJ3llYXJzJz4oJ21vbnRocycpO1xuY29uc3Qgc3RhcnRZZWFyID0gcmVmPG51bWJlcj4ocHJvcHMudmlld1llYXIgLSA2KTtcblxuLy8gUHJlLWNhbGN1bGF0ZWQgY29uc3RhbnRzXG5jb25zdCBtb250aHMgPSBnZXRTaG9ydE1vbnRoTmFtZXMoKTtcbmNvbnN0IGNhbGVuZGFyU3RhdGUgPSBpbmplY3Q8UnVpQ2FsZW5kYXJTdGF0ZT4oQ2FsZW5kYXJTdGF0ZVN5bWJvbCkgYXMgUnVpQ2FsZW5kYXJTdGF0ZTtcblxuLy8gUHJlLWNhbGN1bGF0ZWQgYXJyYXlzIGZvciBwZXJmb3JtYW5jZSAtIHVzaW5nIHJlZnMgZm9yIGJldHRlciBjb250cm9sXG5jb25zdCB5ZWFyUmFuZ2UgPSByZWY8bnVtYmVyW10+KFtdKTtcbmNvbnN0IG1vbnRoc0luUmFuZ2UgPSByZWY8Ym9vbGVhbltdPihbXSk7XG5jb25zdCB5ZWFyc0luUmFuZ2UgPSByZWY8Ym9vbGVhbltdPihbXSk7XG5jb25zdCB0aXRsZSA9IHJlZjxzdHJpbmc+KCcnKTtcbmNvbnN0IGNhbkdvVG9OZXh0ID0gcmVmPGJvb2xlYW4+KHRydWUpO1xuY29uc3QgY2FuR29Ub1ByZXYgPSByZWY8Ym9vbGVhbj4odHJ1ZSk7XG5cbi8vIFByZS1jYWxjdWxhdGlvbiBmdW5jdGlvbnMgdXNpbmcgVnVlVXNlIGdldC9zZXRcbmZ1bmN0aW9uIGNhbGN1bGF0ZVllYXJSYW5nZSgpIHtcbiAgY29uc3Qgc3RhcnQgPSBnZXQoc3RhcnRZZWFyKTtcbiAgc2V0KHllYXJSYW5nZSwgQXJyYXkuZnJvbSh7IGxlbmd0aDogMTIgfSwgKF8sIGkpID0+IHN0YXJ0ICsgaSkpO1xufVxuXG5mdW5jdGlvbiBjYWxjdWxhdGVUaXRsZSgpIHtcbiAgaWYgKGdldCh2aWV3TW9kZSkgPT09ICdtb250aHMnKSB7XG4gICAgc2V0KHRpdGxlLCBwcm9wcy52aWV3WWVhci50b1N0cmluZygpKTtcbiAgfVxuICBlbHNlIHtcbiAgICBjb25zdCByYW5nZSA9IGdldCh5ZWFyUmFuZ2UpO1xuICAgIHNldCh0aXRsZSwgYCR7cmFuZ2VbMF19IC0gJHtyYW5nZS5hdCgtMSl9YCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FsY3VsYXRlTmF2aWdhdGlvbigpIHtcbiAgY29uc3QgeyBtYXhEYXRlLCBtaW5EYXRlIH0gPSBjYWxlbmRhclN0YXRlO1xuICBjb25zdCBtb2RlID0gZ2V0KHZpZXdNb2RlKTtcblxuICBpZiAobW9kZSA9PT0gJ21vbnRocycpIHtcbiAgICBjb25zdCBuZXh0WWVhciA9IHByb3BzLnZpZXdZZWFyICsgMTtcbiAgICBjb25zdCBwcmV2aW91c1llYXIgPSBwcm9wcy52aWV3WWVhciAtIDE7XG5cbiAgICBzZXQoY2FuR29Ub05leHQsICFpc0RlZmluZWQobWF4RGF0ZSkgfHwgbmV4dFllYXIgPD0gZ2V0KG1heERhdGUpLmdldEZ1bGxZZWFyKCkpO1xuICAgIHNldChjYW5Hb1RvUHJldiwgIWlzRGVmaW5lZChtaW5EYXRlKSB8fCBwcmV2aW91c1llYXIgPj0gZ2V0KG1pbkRhdGUpLmdldEZ1bGxZZWFyKCkpO1xuICB9XG4gIGVsc2Uge1xuICAgIGNvbnN0IGxhc3RZZWFySW5SYW5nZSA9IGdldChzdGFydFllYXIpICsgMTE7XG4gICAgY29uc3QgZmlyc3RZZWFySW5SYW5nZSA9IGdldChzdGFydFllYXIpO1xuXG4gICAgLy8gQ2hlY2sgaWYgd2UgY2FuIG5hdmlnYXRlIHRvIHRoZSBuZXh0IHJhbmdlIG9mIHllYXJzXG4gICAgY29uc3QgbmV4dFJhbmdlU3RhcnQgPSBsYXN0WWVhckluUmFuZ2UgKyAxO1xuICAgIHNldChjYW5Hb1RvTmV4dCwgIWlzRGVmaW5lZChtYXhEYXRlKSB8fCBuZXh0UmFuZ2VTdGFydCA8PSBnZXQobWF4RGF0ZSkuZ2V0RnVsbFllYXIoKSk7XG5cbiAgICAvLyBDaGVjayBpZiB3ZSBjYW4gbmF2aWdhdGUgdG8gdGhlIHByZXZpb3VzIHJhbmdlIG9mIHllYXJzXG4gICAgY29uc3QgcHJldlJhbmdlRW5kID0gZmlyc3RZZWFySW5SYW5nZSAtIDE7XG4gICAgc2V0KGNhbkdvVG9QcmV2LCAhaXNEZWZpbmVkKG1pbkRhdGUpIHx8IHByZXZSYW5nZUVuZCA+PSBnZXQobWluRGF0ZSkuZ2V0RnVsbFllYXIoKSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FsY3VsYXRlTW9udGhzSW5SYW5nZSgpIHtcbiAgY29uc3QgeyBtaW5EYXRlLCBtYXhEYXRlIH0gPSBjYWxlbmRhclN0YXRlO1xuICBjb25zdCBjdXJyZW50WWVhciA9IHByb3BzLnZpZXdZZWFyO1xuICBjb25zdCByZXN1bHQgPSBuZXcgQXJyYXkoMTIpLmZpbGwodHJ1ZSk7XG5cbiAgaWYgKGlzRGVmaW5lZChtaW5EYXRlKSB8fCBpc0RlZmluZWQobWF4RGF0ZSkpIHtcbiAgICBmb3IgKGxldCBtb250aCA9IDA7IG1vbnRoIDwgMTI7IG1vbnRoKyspIHtcbiAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShjdXJyZW50WWVhciwgbW9udGgpO1xuICAgICAgaWYgKGlzRGVmaW5lZChtYXhEYXRlKSAmJiBkYXRlID4gZ2V0KG1heERhdGUpKSB7XG4gICAgICAgIHJlc3VsdFttb250aF0gPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChpc0RlZmluZWQobWluRGF0ZSkgJiYgZGF0ZSA8IGdldChtaW5EYXRlKSkge1xuICAgICAgICByZXN1bHRbbW9udGhdID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0KG1vbnRoc0luUmFuZ2UsIHJlc3VsdCk7XG59XG5cbmZ1bmN0aW9uIGNhbGN1bGF0ZVllYXJzSW5SYW5nZSgpIHtcbiAgY29uc3QgeyBtaW5EYXRlLCBtYXhEYXRlIH0gPSBjYWxlbmRhclN0YXRlO1xuICBjb25zdCByYW5nZSA9IGdldCh5ZWFyUmFuZ2UpO1xuICBjb25zdCBjdXJyZW50TW9udGggPSBwcm9wcy52aWV3TW9udGg7XG5cbiAgaWYgKCFpc0RlZmluZWQobWluRGF0ZSkgJiYgIWlzRGVmaW5lZChtYXhEYXRlKSkge1xuICAgIHNldCh5ZWFyc0luUmFuZ2UsIG5ldyBBcnJheShyYW5nZS5sZW5ndGgpLmZpbGwodHJ1ZSkpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdCA9IHJhbmdlLm1hcCgoeWVhcikgPT4ge1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBjdXJyZW50TW9udGgpO1xuICAgIGlmIChpc0RlZmluZWQobWF4RGF0ZSkgJiYgZGF0ZSA+IGdldChtYXhEYXRlKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gIWlzRGVmaW5lZChtaW5EYXRlKSB8fCBkYXRlID49IGdldChtaW5EYXRlKTtcbiAgfSk7XG5cbiAgc2V0KHllYXJzSW5SYW5nZSwgcmVzdWx0KTtcbn1cblxuLy8gSW5pdGlhbCBjYWxjdWxhdGlvbnNcbmNhbGN1bGF0ZVllYXJSYW5nZSgpO1xuY2FsY3VsYXRlVGl0bGUoKTtcbmNhbGN1bGF0ZU5hdmlnYXRpb24oKTtcbmNhbGN1bGF0ZU1vbnRoc0luUmFuZ2UoKTtcbmNhbGN1bGF0ZVllYXJzSW5SYW5nZSgpO1xuXG4vLyBXYXRjaGVycyBmb3IgcmVjYWxjdWxhdGlvbiBvbmx5IHdoZW4gbmVlZGVkXG53YXRjaChzdGFydFllYXIsICgpID0+IHtcbiAgY2FsY3VsYXRlWWVhclJhbmdlKCk7XG4gIGNhbGN1bGF0ZVRpdGxlKCk7XG4gIGNhbGN1bGF0ZU5hdmlnYXRpb24oKTtcbiAgY2FsY3VsYXRlWWVhcnNJblJhbmdlKCk7XG59KTtcblxud2F0Y2godmlld01vZGUsICgpID0+IHtcbiAgY2FsY3VsYXRlVGl0bGUoKTtcbiAgY2FsY3VsYXRlTmF2aWdhdGlvbigpO1xufSk7XG5cbndhdGNoKCgpID0+IHByb3BzLnZpZXdZZWFyLCAoKSA9PiB7XG4gIGNhbGN1bGF0ZVRpdGxlKCk7XG4gIGNhbGN1bGF0ZU5hdmlnYXRpb24oKTtcbiAgY2FsY3VsYXRlTW9udGhzSW5SYW5nZSgpO1xuICBjYWxjdWxhdGVZZWFyc0luUmFuZ2UoKTtcbn0pO1xuXG53YXRjaCgoKSA9PiBwcm9wcy52aWV3TW9udGgsICgpID0+IHtcbiAgY2FsY3VsYXRlWWVhcnNJblJhbmdlKCk7XG59KTtcblxuZnVuY3Rpb24gdG9nZ2xlU2VsZWN0aW9uKCkge1xuICBzZXQodmlld01vZGUsIGdldCh2aWV3TW9kZSkgPT09ICdtb250aHMnID8gJ3llYXJzJyA6ICdtb250aHMnKTtcbn1cblxuZnVuY3Rpb24gc2VsZWN0TW9udGgobW9udGg6IG51bWJlcikge1xuICBpZiAoIWdldChtb250aHNJblJhbmdlKVttb250aF0pXG4gICAgcmV0dXJuO1xuICBlbWl0KCdzZWxlY3QnLCB7IG1vbnRoLCB5ZWFyOiBwcm9wcy52aWV3WWVhciB9KTtcbiAgc2V0KG1vZGVsVmFsdWUsIGZhbHNlKTtcbn1cblxuZnVuY3Rpb24gc2VsZWN0WWVhcih5ZWFyOiBudW1iZXIpIHtcbiAgY29uc3QgeWVhckluZGV4ID0gZ2V0KHllYXJSYW5nZSkuaW5kZXhPZih5ZWFyKTtcbiAgaWYgKHllYXJJbmRleCA9PT0gLTEgfHwgIWdldCh5ZWFyc0luUmFuZ2UpW3llYXJJbmRleF0pXG4gICAgcmV0dXJuO1xuXG4gIGVtaXQoJ3NlbGVjdCcsIHsgbW9udGg6IHByb3BzLnZpZXdNb250aCwgeWVhciB9KTtcbiAgc2V0KHZpZXdNb2RlLCAnbW9udGhzJyk7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZU5leHQoKSB7XG4gIGlmIChnZXQodmlld01vZGUpID09PSAnbW9udGhzJykge1xuICAgIGNvbnN0IG5leHRZZWFyID0gcHJvcHMudmlld1llYXIgKyAxO1xuICAgIHNlbGVjdFllYXIobmV4dFllYXIpO1xuICB9XG4gIGVsc2Uge1xuICAgIGNvbnN0IGxhc3RZZWFySW5SYW5nZSA9IGdldChzdGFydFllYXIpICsgMTE7XG4gICAgc2V0KHN0YXJ0WWVhciwgbGFzdFllYXJJblJhbmdlICsgMSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaGFuZGxlUHJldigpIHtcbiAgaWYgKGdldCh2aWV3TW9kZSkgPT09ICdtb250aHMnKSB7XG4gICAgY29uc3QgcHJldmlvdXNZZWFyID0gcHJvcHMudmlld1llYXIgLSAxO1xuICAgIHNlbGVjdFllYXIocHJldmlvdXNZZWFyKTtcbiAgfVxuICBlbHNlIHtcbiAgICBjb25zdCBmaXJzdFllYXJJblJhbmdlID0gZ2V0KHN0YXJ0WWVhcik7XG4gICAgc2V0KHN0YXJ0WWVhciwgZmlyc3RZZWFySW5SYW5nZSAtIDEyKTtcbiAgfVxufVxuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPFJ1aU1lbnVcbiAgICB2LW1vZGVsPVwibW9kZWxWYWx1ZVwiXG4gICAgOmFuY2hvci1lbD1cImFuY2hvckVsXCJcbiAgICBwbGFjZW1lbnQ9XCJib3R0b20tc3RhcnRcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cIm1lbnUtY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWVudS1oZWFkZXJcIj5cbiAgICAgICAgPFJ1aUJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwibmF2LWJ1dHRvblwiXG4gICAgICAgICAgaWNvblxuICAgICAgICAgIDpkaXNhYmxlZD1cIiFnZXQoY2FuR29Ub1ByZXYpXCJcbiAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgQGNsaWNrLnN0b3A9XCJoYW5kbGVQcmV2KClcIlxuICAgICAgICA+XG4gICAgICAgICAgPFJ1aUljb25cbiAgICAgICAgICAgIG5hbWU9XCJsdS1jaGV2cm9uLWxlZnRcIlxuICAgICAgICAgICAgc2l6ZT1cIjIwXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L1J1aUJ1dHRvbj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJmbGV4LTEgdGV4dC1jZW50ZXIgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgIEBjbGljay5zdG9wPVwidG9nZ2xlU2VsZWN0aW9uKClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZ2V0KHRpdGxlKSB9fVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8UnVpQnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJuYXYtYnV0dG9uXCJcbiAgICAgICAgICBpY29uXG4gICAgICAgICAgOmRpc2FibGVkPVwiIWdldChjYW5Hb1RvTmV4dClcIlxuICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICBAY2xpY2suc3RvcD1cImhhbmRsZU5leHQoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8UnVpSWNvblxuICAgICAgICAgICAgbmFtZT1cImx1LWNoZXZyb24tcmlnaHRcIlxuICAgICAgICAgICAgc2l6ZT1cIjIwXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L1J1aUJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgIHYtaWY9XCJ2aWV3TW9kZSA9PT0gJ21vbnRocydcIlxuICAgICAgICBjbGFzcz1cIm1vbnRoLWdyaWRcIlxuICAgICAgPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdi1mb3I9XCIobW9udGgsIGluZGV4KSBpbiBtb250aHNcIlxuICAgICAgICAgIDprZXk9XCJpbmRleFwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJoLTkgdy1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtc20gZm9udC1tZWRpdW0gcm91bmRlZC1tZCB0cmFuc2l0aW9uLWNvbG9ycyBkdXJhdGlvbi0xNTAgZWFzZS1pbi1vdXQgYm9yZGVyLW5vbmUgb3V0bGluZS1ub25lIGN1cnNvci1wb2ludGVyIGZvY3VzOnJpbmctMiBmb2N1czpyaW5nLXJ1aS1wcmltYXJ5IGZvY3VzOnJpbmctb3BhY2l0eS01MFwiXG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAnYmctcnVpLXByaW1hcnkgdGV4dC13aGl0ZSBob3ZlcjpiZy1ydWktcHJpbWFyeS1kYXJrZXIgYWN0aXZlOmJnLXJ1aS1wcmltYXJ5LWRhcmtlciBkYXJrOmJnLXJ1aS1wcmltYXJ5IGRhcms6dGV4dC13aGl0ZSBkYXJrOmhvdmVyOmJnLXJ1aS1wcmltYXJ5LWRhcmtlcic6IGluZGV4ID09PSB2aWV3TW9udGggJiYgZ2V0KG1vbnRoc0luUmFuZ2UpW2luZGV4XSxcbiAgICAgICAgICAgICAgJ2JnLWdyYXktMzAwIHRleHQtZ3JheS01MDAgZGFyazpiZy1ncmF5LTYwMCBkYXJrOnRleHQtZ3JheS00MDAnOiBpbmRleCA9PT0gdmlld01vbnRoICYmICFnZXQobW9udGhzSW5SYW5nZSlbaW5kZXhdLFxuICAgICAgICAgICAgICAndGV4dC1ncmF5LTcwMCBiZy10cmFuc3BhcmVudCBob3ZlcjpiZy1ncmF5LTEwMCBhY3RpdmU6YmctZ3JheS0yMDAgZGFyazp0ZXh0LWdyYXktMzAwIGRhcms6aG92ZXI6YmctZ3JheS03MDAgZGFyazphY3RpdmU6YmctZ3JheS02MDAnOiBpbmRleCAhPT0gdmlld01vbnRoICYmIGdldChtb250aHNJblJhbmdlKVtpbmRleF0sXG4gICAgICAgICAgICAgICdvcGFjaXR5LTUwIGN1cnNvci1ub3QtYWxsb3dlZCBiZy10cmFuc3BhcmVudCBob3ZlcjpiZy10cmFuc3BhcmVudCBhY3RpdmU6YmctdHJhbnNwYXJlbnQgZGFyazpob3ZlcjpiZy10cmFuc3BhcmVudCBkYXJrOmFjdGl2ZTpiZy10cmFuc3BhcmVudCBwb2ludGVyLWV2ZW50cy1ub25lIHRleHQtZ3JheS00MDAgZGFyazp0ZXh0LWdyYXktNjAwJzogIWdldChtb250aHNJblJhbmdlKVtpbmRleF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIDpkaXNhYmxlZD1cIiFnZXQobW9udGhzSW5SYW5nZSlbaW5kZXhdXCJcbiAgICAgICAgICBAY2xpY2suc3RvcD1cInNlbGVjdE1vbnRoKGluZGV4KVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBtb250aC5zdWJzdHJpbmcoMCwgMykgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICB2LWVsc2UtaWY9XCJ2aWV3TW9kZSA9PT0gJ3llYXJzJ1wiXG4gICAgICAgIGNsYXNzPVwieWVhci1ncmlkXCJcbiAgICAgID5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHYtZm9yPVwiKHllYXIsIGluZGV4KSBpbiB5ZWFyUmFuZ2VcIlxuICAgICAgICAgIDprZXk9XCJ5ZWFyXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cImgtOSB3LWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC1zbSBmb250LW1lZGl1bSByb3VuZGVkLW1kIHRyYW5zaXRpb24tY29sb3JzIGR1cmF0aW9uLTE1MCBlYXNlLWluLW91dCBib3JkZXItbm9uZSBvdXRsaW5lLW5vbmUgY3Vyc29yLXBvaW50ZXIgZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctcnVpLXByaW1hcnkgZm9jdXM6cmluZy1vcGFjaXR5LTUwXCJcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICdiZy1ydWktcHJpbWFyeSB0ZXh0LXdoaXRlIGhvdmVyOmJnLXJ1aS1wcmltYXJ5LWRhcmtlciBhY3RpdmU6YmctcnVpLXByaW1hcnktZGFya2VyIGRhcms6YmctcnVpLXByaW1hcnkgZGFyazp0ZXh0LXdoaXRlIGRhcms6aG92ZXI6YmctcnVpLXByaW1hcnktZGFya2VyJzogeWVhciA9PT0gdmlld1llYXIgJiYgZ2V0KHllYXJzSW5SYW5nZSlbaW5kZXhdLFxuICAgICAgICAgICAgICAnYmctZ3JheS0zMDAgdGV4dC1ncmF5LTUwMCBkYXJrOmJnLWdyYXktNjAwIGRhcms6dGV4dC1ncmF5LTQwMCc6IHllYXIgPT09IHZpZXdZZWFyICYmICFnZXQoeWVhcnNJblJhbmdlKVtpbmRleF0sXG4gICAgICAgICAgICAgICd0ZXh0LWdyYXktNzAwIGJnLXRyYW5zcGFyZW50IGhvdmVyOmJnLWdyYXktMTAwIGFjdGl2ZTpiZy1ncmF5LTIwMCBkYXJrOnRleHQtZ3JheS0zMDAgZGFyazpob3ZlcjpiZy1ncmF5LTcwMCBkYXJrOmFjdGl2ZTpiZy1ncmF5LTYwMCc6IHllYXIgIT09IHZpZXdZZWFyICYmIGdldCh5ZWFyc0luUmFuZ2UpW2luZGV4XSxcbiAgICAgICAgICAgICAgJ29wYWNpdHktNTAgY3Vyc29yLW5vdC1hbGxvd2VkIGJnLXRyYW5zcGFyZW50IGhvdmVyOmJnLXRyYW5zcGFyZW50IGFjdGl2ZTpiZy10cmFuc3BhcmVudCBkYXJrOmhvdmVyOmJnLXRyYW5zcGFyZW50IGRhcms6YWN0aXZlOmJnLXRyYW5zcGFyZW50IHBvaW50ZXItZXZlbnRzLW5vbmUgdGV4dC1ncmF5LTQwMCBkYXJrOnRleHQtZ3JheS02MDAnOiAhZ2V0KHllYXJzSW5SYW5nZSlbaW5kZXhdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdXCJcbiAgICAgICAgICA6ZGlzYWJsZWQ9XCIhZ2V0KHllYXJzSW5SYW5nZSlbaW5kZXhdXCJcbiAgICAgICAgICBAY2xpY2suc3RvcD1cInNlbGVjdFllYXIoeWVhcilcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgeWVhciB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L1J1aU1lbnU+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuLm1lbnUtY29udGFpbmVyIHtcbiAgQGFwcGx5IHctNjQgc2hhZG93LWxnIG92ZXJmbG93LWhpZGRlbjtcbn1cblxuLm1lbnUtaGVhZGVyIHtcbiAgQGFwcGx5IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHAtMSBmb250LW1lZGl1bSB0ZXh0LWdyYXktODAwIGRhcms6dGV4dC1ncmF5LTIwMDtcbiAgQGFwcGx5IGJvcmRlci1iIGJvcmRlci1ydWktZ3JleS0yMDAgZGFyazpib3JkZXItcnVpLWdyZXktODAwIGN1cnNvci1wb2ludGVyIGhvdmVyOmJnLXJ1aS1ncmV5LTEwMCBkYXJrOmhvdmVyOmJnLXJ1aS1ncmV5LTgwMDtcbn1cblxuLm1vbnRoLWdyaWQge1xuICBAYXBwbHkgZ3JpZCBncmlkLWNvbHMtMyBnYXAtMSBwLTI7XG59XG5cbi55ZWFyLWdyaWQge1xuICBAYXBwbHkgZ3JpZCBncmlkLWNvbHMtMyBnYXAtMSBwLTI7XG59XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IGdldCwgaXNEZWZpbmVkLCBzZXQgfSBmcm9tICdAdnVldXNlL2NvcmUnO1xuaW1wb3J0IHsgY29tcHV0ZWQsIGluamVjdCwgcmVmIH0gZnJvbSAndnVlJztcbmltcG9ydCBSdWlCdXR0b24gZnJvbSAnQC9jb21wb25lbnRzL2J1dHRvbnMvYnV0dG9uL1J1aUJ1dHRvbi52dWUnO1xuaW1wb3J0IHsgQ2FsZW5kYXJTdGF0ZVN5bWJvbCwgdHlwZSBNb250aFllYXJTZWxlY3Rpb24sIHR5cGUgUnVpQ2FsZW5kYXJTdGF0ZSB9IGZyb20gJ0AvY29tcG9uZW50cy9jYWxlbmRhci9zdGF0ZSc7XG5pbXBvcnQgUnVpSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvaWNvbnMvUnVpSWNvbi52dWUnO1xuaW1wb3J0IFJ1aUNhbGVuZGFyTWVudSBmcm9tICcuL1J1aUNhbGVuZGFyTWVudS52dWUnO1xuXG5kZWZpbmVPcHRpb25zKHtcbiAgbmFtZTogJ1J1aUNhbGVuZGFySGVhZGVyJyxcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbn0pO1xuXG5jb25zdCBpc01lbnVPcGVuID0gZGVmaW5lTW9kZWw8Ym9vbGVhbj4oJ21lbnUtb3BlbicsIHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbmNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHM8e1xuICB0aXRsZTogc3RyaW5nO1xuICB2aWV3TW9udGg6IG51bWJlcjtcbiAgdmlld1llYXI6IG51bWJlcjtcbn0+KCk7XG5cbmNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czx7XG4gICdwcmV2LW1vbnRoJzogW107XG4gICduZXh0LW1vbnRoJzogW107XG4gICdzZWxlY3QtbW9udGgnOiBbTW9udGhZZWFyU2VsZWN0aW9uXTtcbn0+KCk7XG5cbmNvbnN0IGFuY2hvckVsID0gcmVmPEhUTUxFbGVtZW50PigpO1xuXG5jb25zdCBjYWxlbmRhclN0YXRlID0gaW5qZWN0PFJ1aUNhbGVuZGFyU3RhdGU+KENhbGVuZGFyU3RhdGVTeW1ib2wpIGFzIFJ1aUNhbGVuZGFyU3RhdGU7XG5cbmNvbnN0IGNhbkdvVG9OZXh0ID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4ge1xuICBjb25zdCB7IG1heERhdGUgfSA9IGNhbGVuZGFyU3RhdGU7XG4gIGlmICghaXNEZWZpbmVkKG1heERhdGUpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBjb25zdCBkYXRlID0gbmV3IERhdGUocHJvcHMudmlld1llYXIsIHByb3BzLnZpZXdNb250aCk7XG4gIHJldHVybiBkYXRlLmdldFRpbWUoKSA8IGdldChtYXhEYXRlKS5nZXRUaW1lKCk7XG59KTtcblxuY29uc3QgY2FuR29Ub1ByZXYgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiB7XG4gIGNvbnN0IHsgbWluRGF0ZSB9ID0gY2FsZW5kYXJTdGF0ZTtcbiAgaWYgKCFpc0RlZmluZWQobWluRGF0ZSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShwcm9wcy52aWV3WWVhciwgcHJvcHMudmlld01vbnRoKTtcbiAgcmV0dXJuIGRhdGUuZ2V0VGltZSgpID4gZ2V0KG1pbkRhdGUpLmdldFRpbWUoKTtcbn0pO1xuXG5mdW5jdGlvbiBoYW5kbGVUaXRsZUNsaWNrKGU6IEV2ZW50KSB7XG4gIHNldChhbmNob3JFbCwgZS5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50ID8/IHVuZGVmaW5lZCk7XG4gIHNldChpc01lbnVPcGVuLCB0cnVlKTtcbn1cblxuZnVuY3Rpb24gaGFuZGxlRGF0ZVNlbGVjdGlvbihzZWxlY3Rpb246IE1vbnRoWWVhclNlbGVjdGlvbikge1xuICBlbWl0KCdzZWxlY3QtbW9udGgnLCBzZWxlY3Rpb24pO1xufVxuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWhlYWRlclwiPlxuICAgIDxSdWlCdXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJuYXYtYnV0dG9uXCJcbiAgICAgIGljb25cbiAgICAgIDpkaXNhYmxlZD1cIiFjYW5Hb1RvUHJldlwiXG4gICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICBAY2xpY2suc3RvcD1cImVtaXQoJ3ByZXYtbW9udGgnKVwiXG4gICAgPlxuICAgICAgPFJ1aUljb25cbiAgICAgICAgbmFtZT1cImx1LWNoZXZyb24tbGVmdFwiXG4gICAgICAgIHNpemU9XCIyMFwiXG4gICAgICAvPlxuICAgIDwvUnVpQnV0dG9uPlxuXG4gICAgPGgzXG4gICAgICBjbGFzcz1cImhlYWRlci10aXRsZVwiXG4gICAgICBAY2xpY2suc3RvcD1cImhhbmRsZVRpdGxlQ2xpY2soJGV2ZW50KVwiXG4gICAgPlxuICAgICAge3sgdGl0bGUgfX1cbiAgICAgIDxSdWlJY29uXG4gICAgICAgIG5hbWU9XCJsdS1jaGV2cm9uLWRvd25cIlxuICAgICAgICBzaXplPVwiMTZcIlxuICAgICAgICBjbGFzcz1cIm1sLTFcIlxuICAgICAgLz5cbiAgICA8L2gzPlxuXG4gICAgPFJ1aUNhbGVuZGFyTWVudVxuICAgICAgdi1tb2RlbD1cImlzTWVudU9wZW5cIlxuICAgICAgOmFuY2hvci1lbD1cImFuY2hvckVsXCJcbiAgICAgIDp2aWV3LW1vbnRoPVwidmlld01vbnRoXCJcbiAgICAgIDp2aWV3LXllYXI9XCJ2aWV3WWVhclwiXG4gICAgICBAc2VsZWN0PVwiaGFuZGxlRGF0ZVNlbGVjdGlvbigkZXZlbnQpXCJcbiAgICAvPlxuXG4gICAgPFJ1aUJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cIm5hdi1idXR0b25cIlxuICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgaWNvblxuICAgICAgOmRpc2FibGVkPVwiIWNhbkdvVG9OZXh0XCJcbiAgICAgIEBjbGljay5zdG9wPVwiZW1pdCgnbmV4dC1tb250aCcpXCJcbiAgICA+XG4gICAgICA8UnVpSWNvblxuICAgICAgICBuYW1lPVwibHUtY2hldnJvbi1yaWdodFwiXG4gICAgICAgIHNpemU9XCIyMFwiXG4gICAgICAvPlxuICAgIDwvUnVpQnV0dG9uPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4uY2FsZW5kYXItaGVhZGVyIHtcbiAgQGFwcGx5IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBweC00IHB5LTM7XG59XG5cbi5oZWFkZXItdGl0bGUge1xuICBAYXBwbHkgZm9udC1tZWRpdW0gdGV4dC1ncmF5LTgwMCBkYXJrOnRleHQtZ3JheS0yMDAgZmxleCBpdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXIgcGwtODtcbn1cblxuLm5hdi1idXR0b24ge1xuICBAYXBwbHkgcC0xIHJvdW5kZWQtZnVsbCB0ZXh0LWdyYXktNTAwIGhvdmVyOnRleHQtcnVpLXByaW1hcnkgaG92ZXI6YmctZ3JheS0xMDA7XG4gIEBhcHBseSBkYXJrOnRleHQtZ3JheS00MDAgZGFyazpob3ZlcjpiZy1ncmF5LTYwMCBkYXJrOmhvdmVyOnRleHQtcnVpLXByaW1hcnk7XG59XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IGdldCwgaXNEZWZpbmVkLCBzZXQgfSBmcm9tICdAdnVldXNlL2NvcmUnO1xuaW1wb3J0IHsgY29tcHV0ZWQsIHByb3ZpZGUsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuaW1wb3J0IHtcbiAgQ2FsZW5kYXJTdGF0ZVN5bWJvbCxcbiAgdHlwZSBNb250aFllYXJTZWxlY3Rpb24sXG4gIHR5cGUgUnVpQ2FsZW5kYXJTdGF0ZSxcbn0gZnJvbSAnQC9jb21wb25lbnRzL2NhbGVuZGFyL3N0YXRlJztcbmltcG9ydCB7IHVzZVJvdGtpVGhlbWUgfSBmcm9tICdAL2NvbXBvc2FibGVzL3RoZW1lJztcbmltcG9ydCBSdWlDYWxlbmRhckdyaWQgZnJvbSAnLi9SdWlDYWxlbmRhckdyaWQudnVlJztcbmltcG9ydCBSdWlDYWxlbmRhckhlYWRlciBmcm9tICcuL1J1aUNhbGVuZGFySGVhZGVyLnZ1ZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FsZW5kYXJQcm9wcyB7XG4gIG1heERhdGU/OiBEYXRlIHwgbnVtYmVyO1xuICBtaW5EYXRlPzogRGF0ZSB8IG51bWJlcjtcbiAgYWxsb3dFbXB0eT86IGJvb2xlYW47XG4gIGJvcmRlcmxlc3M/OiBib29sZWFuO1xufVxuXG5kZWZpbmVPcHRpb25zKHtcbiAgbmFtZTogJ1J1aUNhbGVuZGFyJyxcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbn0pO1xuXG5jb25zdCBtb2RlbCA9IGRlZmluZU1vZGVsPERhdGUgfCB1bmRlZmluZWQ+KHsgcmVxdWlyZWQ6IGZhbHNlIH0pO1xuY29uc3QgaXNNZW51T3BlbiA9IGRlZmluZU1vZGVsPGJvb2xlYW4+KCdtZW51LW9wZW4nLCB7IHJlcXVpcmVkOiBmYWxzZSwgZGVmYXVsdDogZmFsc2UgfSk7XG5cbmNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPENhbGVuZGFyUHJvcHM+KCksIHtcbiAgbWF4RGF0ZTogdW5kZWZpbmVkLFxuICBtaW5EYXRlOiB1bmRlZmluZWQsXG4gIGFsbG93RW1wdHk6IGZhbHNlLFxuICBib3JkZXJsZXNzOiBmYWxzZSxcbn0pO1xuXG5jb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8e1xuICAndXBkYXRlOnBhZ2VzJzogW3sgdGl0bGU6IHN0cmluZyB9W11dO1xufT4oKTtcblxuY29uc3QgY3VycmVudERhdGUgPSByZWYoaXNEZWZpbmVkKG1vZGVsKSA/IG5ldyBEYXRlKGdldChtb2RlbCkpIDogbmV3IERhdGUoKSk7XG5jb25zdCBzZWxlY3RlZERhdGUgPSByZWYoaXNEZWZpbmVkKG1vZGVsKSA/IG5ldyBEYXRlKGdldChtb2RlbCkpIDogdW5kZWZpbmVkKTtcbmNvbnN0IHZpZXdNb250aCA9IHJlZihnZXQoY3VycmVudERhdGUpLmdldE1vbnRoKCkpO1xuY29uc3Qgdmlld1llYXIgPSByZWYoZ2V0KGN1cnJlbnREYXRlKS5nZXRGdWxsWWVhcigpKTtcblxuY29uc3QgeyBpc0RhcmsgfSA9IHVzZVJvdGtpVGhlbWUoKTtcblxuY29uc3QgbW9udGhUaXRsZSA9IGNvbXB1dGVkPHN0cmluZz4oKCkgPT4ge1xuICBjb25zdCBkYXRlID0gbmV3IERhdGUoZ2V0KHZpZXdZZWFyKSwgZ2V0KHZpZXdNb250aCkpO1xuICByZXR1cm4gZGF0ZS50b0xvY2FsZVN0cmluZygnZGVmYXVsdCcsIHsgbW9udGg6ICdsb25nJywgeWVhcjogJ251bWVyaWMnIH0pO1xufSk7XG5cbnByb3ZpZGUoQ2FsZW5kYXJTdGF0ZVN5bWJvbC52YWx1ZU9mKCksIHtcbiAgdmlld01vbnRoLFxuICB2aWV3WWVhcixcbiAgc2VsZWN0ZWREYXRlLFxuICBtYXhEYXRlOiBjb21wdXRlZCgoKSA9PiBwcm9wcy5tYXhEYXRlID8gbmV3IERhdGUocHJvcHMubWF4RGF0ZSkgOiB1bmRlZmluZWQpLFxuICBtaW5EYXRlOiBjb21wdXRlZCgoKSA9PiBwcm9wcy5taW5EYXRlID8gbmV3IERhdGUocHJvcHMubWluRGF0ZSkgOiB1bmRlZmluZWQpLFxuICBpc0RhcmssXG4gIGFsbG93RW1wdHk6IHByb3BzLmFsbG93RW1wdHksXG59IHNhdGlzZmllcyBSdWlDYWxlbmRhclN0YXRlKTtcblxuZnVuY3Rpb24gbW92ZU1vbnRoKGRlbHRhOiBudW1iZXIpIHtcbiAgbGV0IG5ld01vbnRoID0gZ2V0KHZpZXdNb250aCkgKyBkZWx0YTtcbiAgbGV0IG5ld1llYXIgPSBnZXQodmlld1llYXIpO1xuXG4gIGlmIChuZXdNb250aCA+IDExKSB7XG4gICAgbmV3TW9udGggPSAwO1xuICAgIG5ld1llYXIrKztcbiAgfVxuICBlbHNlIGlmIChuZXdNb250aCA8IDApIHtcbiAgICBuZXdNb250aCA9IDExO1xuICAgIG5ld1llYXItLTtcbiAgfVxuXG4gIHNldCh2aWV3TW9udGgsIG5ld01vbnRoKTtcbiAgc2V0KHZpZXdZZWFyLCBuZXdZZWFyKTtcblxuICBlbWl0KCd1cGRhdGU6cGFnZXMnLCBbeyB0aXRsZTogZ2V0KG1vbnRoVGl0bGUpIH1dKTtcbn1cblxuZnVuY3Rpb24gbW92ZShkYXRlOiBEYXRlIHwgbnVtYmVyKSB7XG4gIGNvbnN0IG5ld0RhdGUgPSBuZXcgRGF0ZShkYXRlKTtcbiAgc2V0KHZpZXdNb250aCwgbmV3RGF0ZS5nZXRNb250aCgpKTtcbiAgc2V0KHZpZXdZZWFyLCBuZXdEYXRlLmdldEZ1bGxZZWFyKCkpO1xufVxuXG5mdW5jdGlvbiBzZWxlY3RNb250aChzZWxlY3Rpb246IE1vbnRoWWVhclNlbGVjdGlvbikge1xuICBzZXQodmlld01vbnRoLCBzZWxlY3Rpb24ubW9udGgpO1xuICBzZXQodmlld1llYXIsIHNlbGVjdGlvbi55ZWFyKTtcbn1cblxud2F0Y2goW3NlbGVjdGVkRGF0ZV0sIChbZGF0ZV0pID0+IHtcbiAgaWYgKCFkYXRlICYmICFwcm9wcy5hbGxvd0VtcHR5KVxuICAgIHJldHVybjtcblxuICBpZiAoZGF0ZSkge1xuICAgIHNldChtb2RlbCwgbmV3IERhdGUoZGF0ZSkpO1xuXG4gICAgaWYgKGdldCh2aWV3TW9udGgpICE9PSBkYXRlLmdldE1vbnRoKCkpIHtcbiAgICAgIHNldCh2aWV3TW9udGgsIGRhdGUuZ2V0TW9udGgoKSk7XG4gICAgfVxuXG4gICAgaWYgKGdldCh2aWV3WWVhcikgIT09IGRhdGUuZ2V0RnVsbFllYXIoKSkge1xuICAgICAgc2V0KHZpZXdZZWFyLCBkYXRlLmdldEZ1bGxZZWFyKCkpO1xuICAgIH1cbiAgfVxuICBlbHNlIHtcbiAgICBzZXQobW9kZWwsIHVuZGVmaW5lZCk7XG4gIH1cbn0pO1xuXG53YXRjaChtb2RlbCwgKG5ld1ZhbHVlKSA9PiB7XG4gIGlmIChuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgc2V0KHNlbGVjdGVkRGF0ZSwgdW5kZWZpbmVkKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBkYXRlID0gbmV3IERhdGUobmV3VmFsdWUpO1xuXG4gIGlmIChpc0RlZmluZWQoc2VsZWN0ZWREYXRlKSAmJiBnZXQoc2VsZWN0ZWREYXRlKS5nZXRUaW1lKCkgIT09IGRhdGUuZ2V0VGltZSgpKSB7XG4gICAgc2V0KHNlbGVjdGVkRGF0ZSwgbmV3IERhdGUobmV3VmFsdWUpKTtcbiAgICBzZXQodmlld01vbnRoLCBkYXRlLmdldE1vbnRoKCkpO1xuICAgIHNldCh2aWV3WWVhciwgZGF0ZS5nZXRGdWxsWWVhcigpKTtcbiAgfVxufSk7XG5cbmRlZmluZUV4cG9zZSh7XG4gIG1vdmUsXG59KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICBjbGFzcz1cInJ1aS1jYWxlbmRhclwiXG4gICAgOmNsYXNzPVwieyBkYXJrOiBpc0RhcmssIGJvcmRlcmVkOiAhYm9yZGVybGVzcyB9XCJcbiAgPlxuICAgIDxSdWlDYWxlbmRhckhlYWRlclxuICAgICAgdi1tb2RlbDptZW51LW9wZW49XCJpc01lbnVPcGVuXCJcbiAgICAgIDp0aXRsZT1cIm1vbnRoVGl0bGVcIlxuICAgICAgOnZpZXctbW9udGg9XCJ2aWV3TW9udGhcIlxuICAgICAgOnZpZXcteWVhcj1cInZpZXdZZWFyXCJcbiAgICAgIEBwcmV2LW1vbnRoPVwibW92ZU1vbnRoKC0xKVwiXG4gICAgICBAbmV4dC1tb250aD1cIm1vdmVNb250aCgxKVwiXG4gICAgICBAc2VsZWN0LW1vbnRoPVwic2VsZWN0TW9udGgoJGV2ZW50KVwiXG4gICAgLz5cblxuICAgIDxSdWlDYWxlbmRhckdyaWRcbiAgICAgIHYtbW9kZWw9XCJzZWxlY3RlZERhdGVcIlxuICAgICAgOnZpZXctbW9udGg9XCJ2aWV3TW9udGhcIlxuICAgICAgOnZpZXcteWVhcj1cInZpZXdZZWFyXCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBsYW5nPVwic2Nzc1wiPlxuLnJ1aS1jYWxlbmRhciB7XG4gIEBhcHBseSB3LVsxOC43NXJlbV0gYmctd2hpdGUgb3ZlcmZsb3ctaGlkZGVuO1xuXG4gICYuYm9yZGVyZWQge1xuICAgIEBhcHBseSByb3VuZGVkLW1kIHNoYWRvdy1zbSBib3JkZXIgYm9yZGVyLXJ1aS1ncmV5LTIwMDtcbiAgfVxuXG4gICYuZGFyayB7XG4gICAgQGFwcGx5IGJnLXJ1aS1ncmV5LTkwMDtcblxuICAgICYuYm9yZGVyZWQge1xuICAgICAgQGFwcGx5IGJvcmRlci1ydWktZ3JleS04MDA7XG4gICAgfVxuICB9XG59XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvcHMge1xuICBkZW5zZT86IGJvb2xlYW47XG59XG5cbmRlZmluZU9wdGlvbnMoe1xuICBuYW1lOiAnUnVpQ2FyZEhlYWRlcicsXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG59KTtcblxud2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gIGRlbnNlOiBmYWxzZSxcbn0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICRzdHlsZS5oZWFkLFxuICAgICAge1xuICAgICAgICBbJHN0eWxlLmRlbnNlXTogZGVuc2UsXG4gICAgICAgIFskc3R5bGUuaGFzX3ByZXBlbmRdOiAhISRzbG90cy5wcmVwZW5kLFxuICAgICAgfSxcbiAgICBdXCJcbiAgICB2LWJpbmQ9XCIkYXR0cnNcIlxuICA+XG4gICAgPGRpdlxuICAgICAgdi1pZj1cIiRzbG90cy5wcmVwZW5kXCJcbiAgICAgIDpjbGFzcz1cIiRzdHlsZS5wcmVwZW5kXCJcbiAgICA+XG4gICAgICA8c2xvdCBuYW1lPVwicHJlcGVuZFwiIC8+XG4gICAgPC9kaXY+XG4gICAgPGRpdiA6Y2xhc3M9XCIkc3R5bGUuaGVhZGVyc1wiPlxuICAgICAgPGg1XG4gICAgICAgIHYtaWY9XCIkc2xvdHMuaGVhZGVyXCJcbiAgICAgICAgOmNsYXNzPVwiJHN0eWxlLmhlYWRlclwiXG4gICAgICA+XG4gICAgICAgIDxzbG90IG5hbWU9XCJoZWFkZXJcIiAvPlxuICAgICAgPC9oNT5cbiAgICAgIDxwXG4gICAgICAgIHYtaWY9XCIkc2xvdHMuc3ViaGVhZGVyXCJcbiAgICAgICAgOmNsYXNzPVwiJHN0eWxlLnN1YmhlYWRlclwiXG4gICAgICA+XG4gICAgICAgIDxzbG90IG5hbWU9XCJzdWJoZWFkZXJcIiAvPlxuICAgICAgPC9wPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBsYW5nPVwic2Nzc1wiIG1vZHVsZT5cbi5oZWFkIHtcbiAgQGFwcGx5IHAtNCBmbGV4IHNwYWNlLXgtNDtcblxuICAucHJlcGVuZCB7XG4gICAgQGFwcGx5IHJvdW5kZWQtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB3LTEwIGgtMTA7XG4gICAgQGFwcGx5IHRleHQtWzEuMjVyZW1dIHRleHQtd2hpdGUgYmctcnVpLWdyZXktNDAwIG92ZXJmbG93LWhpZGRlbjtcbiAgfVxuXG4gIC5oZWFkZXJzIHtcbiAgICBAYXBwbHkgZmxleCBmbGV4LWNvbCBqdXN0aWZ5LWNlbnRlcjtcbiAgfVxuXG4gIC5oZWFkZXIge1xuICAgIEBhcHBseSB0ZXh0LXJ1aS10ZXh0IHRleHQtaDY7XG4gIH1cblxuICAuc3ViaGVhZGVyIHtcbiAgICBAYXBwbHkgdGV4dC1ydWktdGV4dC1zZWNvbmRhcnkgdGV4dC1ib2R5LTIgbWItMDtcbiAgfVxuXG4gICYuaGFzX3ByZXBlbmQge1xuICAgIC5oZWFkZXIge1xuICAgICAgQGFwcGx5IHRleHQtYm9keS0xO1xuICAgIH1cbiAgfVxuXG4gICYuZGVuc2Uge1xuICAgIEBhcHBseSBwLTMgc3BhY2UteC0yO1xuXG4gICAgLnByZXBlbmQge1xuICAgICAgQGFwcGx5IHRleHQtYmFzZSBwLVswLjA4cmVtXSB3LTkgaC05O1xuICAgIH1cbiAgfVxufVxuXG46Z2xvYmFsKC5kYXJrKSB7XG4gIC5oZWFkIHtcbiAgICAucHJlcGVuZCB7XG4gICAgICBAYXBwbHkgYmctcnVpLWdyZXktNzAwIHRleHQtYmxhY2svOTA7XG4gICAgfVxuXG4gICAgLmhlYWRlciB7XG4gICAgICBAYXBwbHkgdGV4dC1ydWktZGFyay10ZXh0O1xuICAgIH1cblxuICAgIC5zdWJoZWFkZXIge1xuICAgICAgQGFwcGx5IHRleHQtcnVpLWRhcmstdGV4dC1zZWNvbmRhcnk7XG4gICAgfVxuICB9XG59XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSAndnVlJztcbmltcG9ydCBSdWlDYXJkSGVhZGVyIGZyb20gJ0AvY29tcG9uZW50cy9jYXJkcy9SdWlDYXJkSGVhZGVyLnZ1ZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvcHMge1xuICBkZW5zZT86IGJvb2xlYW47XG4gIGRpdmlkZT86IGJvb2xlYW47XG4gIGVsZXZhdGlvbj86IG51bWJlcjtcbiAgdmFyaWFudD86ICdmbGF0JyB8ICdvdXRsaW5lZCc7XG4gIHJvdW5kZWQ/OiAnc20nIHwgJ21kJyB8ICdsZyc7XG4gIG5vUGFkZGluZz86IGJvb2xlYW47XG4gIGNvbnRlbnRDbGFzcz86IHN0cmluZztcbn1cblxuZGVmaW5lT3B0aW9ucyh7XG4gIG5hbWU6ICdSdWlDYXJkJyxcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbn0pO1xuXG53aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgZGl2aWRlOiBmYWxzZSxcbiAgZGVuc2U6IGZhbHNlLFxuICBlbGV2YXRpb246IDAsXG4gIHZhcmlhbnQ6ICdvdXRsaW5lZCcsXG4gIHJvdW5kZWQ6ICdtZCcsXG4gIG5vUGFkZGluZzogZmFsc2UsXG4gIGNvbnRlbnRDbGFzczogJycsXG59KTtcblxuY29uc3Qgc2xvdHMgPSB1c2VTbG90cygpO1xuXG5jb25zdCBoYXNIZWFkQ29udGVudCA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+ICEhc2xvdHMuaGVhZGVyIHx8ICEhc2xvdHMuc3ViaGVhZGVyKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAkc3R5bGUuY2FyZCxcbiAgICAgIGBzaGFkb3ctJHtlbGV2YXRpb259YCxcbiAgICAgICRzdHlsZVtgcm91bmRlZF9fJHtyb3VuZGVkfWBdLFxuICAgICAge1xuICAgICAgICBbJHN0eWxlLm91dGxpbmVkXTogdmFyaWFudCA9PT0gJ291dGxpbmVkJyxcbiAgICAgICAgWyRzdHlsZS5kZW5zZV06IGRlbnNlLFxuICAgICAgICBbJHN0eWxlLmRpdmlkZV06IGRpdmlkZSxcbiAgICAgICAgWyRzdHlsZVsnbm8tcGFkZGluZyddXTogbm9QYWRkaW5nLFxuICAgICAgfSxcbiAgICBdXCJcbiAgICB2LWJpbmQ9XCIkYXR0cnNcIlxuICA+XG4gICAgPGRpdlxuICAgICAgdi1pZj1cInNsb3RzLmltYWdlXCJcbiAgICAgIDpjbGFzcz1cIiRzdHlsZS5pbWFnZVwiXG4gICAgPlxuICAgICAgPHNsb3QgbmFtZT1cImltYWdlXCIgLz5cbiAgICA8L2Rpdj5cbiAgICA8c2xvdCBuYW1lPVwiY3VzdG9tLWhlYWRlclwiPlxuICAgICAgPFJ1aUNhcmRIZWFkZXJcbiAgICAgICAgdi1pZj1cImhhc0hlYWRDb250ZW50XCJcbiAgICAgICAgOmRlbnNlPVwiZGVuc2VcIlxuICAgICAgPlxuICAgICAgICA8dGVtcGxhdGVcbiAgICAgICAgICB2LWlmPVwic2xvdHMucHJlcGVuZFwiXG4gICAgICAgICAgI3ByZXBlbmRcbiAgICAgICAgPlxuICAgICAgICAgIDxzbG90IG5hbWU9XCJwcmVwZW5kXCIgLz5cbiAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgPHRlbXBsYXRlXG4gICAgICAgICAgdi1pZj1cInNsb3RzLmhlYWRlclwiXG4gICAgICAgICAgI2hlYWRlclxuICAgICAgICA+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cImhlYWRlclwiIC8+XG4gICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgIDx0ZW1wbGF0ZVxuICAgICAgICAgIHYtaWY9XCJzbG90cy5zdWJoZWFkZXJcIlxuICAgICAgICAgICNzdWJoZWFkZXJcbiAgICAgICAgPlxuICAgICAgICAgIDxzbG90IG5hbWU9XCJzdWJoZWFkZXJcIiAvPlxuICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgPC9SdWlDYXJkSGVhZGVyPlxuICAgIDwvc2xvdD5cbiAgICA8ZGl2XG4gICAgICB2LWlmPVwic2xvdHMuZGVmYXVsdFwiXG4gICAgICA6Y2xhc3M9XCJbJHN0eWxlLmNvbnRlbnQsIGNvbnRlbnRDbGFzc11cIlxuICAgID5cbiAgICAgIDxzbG90IC8+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgdi1pZj1cInNsb3RzLmZvb3RlclwiXG4gICAgICA6Y2xhc3M9XCIkc3R5bGUuZm9vdGVyXCJcbiAgICA+XG4gICAgICA8c2xvdCBuYW1lPVwiZm9vdGVyXCIgLz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIiBtb2R1bGU+XG4uY2FyZCB7XG4gIEBhcHBseSBmbGV4IGZsZXgtY29sIGgtZnVsbCB3LWZ1bGwgYmctd2hpdGU7XG4gICYucm91bmRlZF9fc20ge1xuICAgIEBhcHBseSByb3VuZGVkLVsuMjVyZW1dO1xuXG4gICAgLmltYWdlIHtcbiAgICAgIEBhcHBseSByb3VuZGVkLXQtWy4yNXJlbV07XG4gICAgfVxuICB9XG5cbiAgJi5yb3VuZGVkX19tZCB7XG4gICAgQGFwcGx5IHJvdW5kZWQtWy41cmVtXTtcblxuICAgIC5pbWFnZSB7XG4gICAgICBAYXBwbHkgcm91bmRlZC10LVsuNXJlbV07XG4gICAgfVxuICB9XG5cbiAgJi5yb3VuZGVkX19sZyB7XG4gICAgQGFwcGx5IHJvdW5kZWQtWzFyZW1dO1xuXG4gICAgLmltYWdlIHtcbiAgICAgIEBhcHBseSByb3VuZGVkLXQtWzFyZW1dO1xuICAgIH1cbiAgfVxuXG4gIC5pbWFnZSB7XG4gICAgQGFwcGx5IG92ZXJmbG93LWhpZGRlbjtcbiAgfVxuXG4gIC5jb250ZW50IHtcbiAgICBAYXBwbHkgcC00IHRleHQtYm9keS0xIHRleHQtcnVpLWxpZ2h0LXRleHQgb3ZlcmZsb3cteS1hdXRvO1xuICB9XG5cbiAgLmZvb3RlciB7XG4gICAgQGFwcGx5IHAtNCBwdC0yIGZsZXggc3BhY2UteC0yIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LXN0YXJ0IG10LWF1dG87XG4gIH1cblxuICAmLmZsYXQge1xuICAgIEBhcHBseSBib3JkZXItbm9uZTtcbiAgfVxuXG4gICYub3V0bGluZWQge1xuICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLWJsYWNrL1swLjEyXTtcbiAgfVxuXG4gICYuZGl2aWRlIHtcbiAgICBAYXBwbHkgZGl2aWRlLXkgZGl2aWRlLWJsYWNrL1swLjEyXTtcbiAgfVxuXG4gICYuZGVuc2Uge1xuICAgID4gLmNvbnRlbnQge1xuICAgICAgQGFwcGx5IHAtMztcbiAgICB9XG5cbiAgICA+IC5mb290ZXIge1xuICAgICAgQGFwcGx5IHB5LTEgZmxleCBzcGFjZS14LTI7XG4gICAgfVxuICB9XG5cbiAgJi5uby1wYWRkaW5nIHtcbiAgICA+IC5jb250ZW50IHtcbiAgICAgIEBhcHBseSBwLTA7XG4gICAgfVxuICB9XG59XG5cbjpnbG9iYWwoLmRhcmspIHtcbiAgLmNhcmQge1xuICAgIEBhcHBseSBiZy1bIzFFMUUxRV07XG5cbiAgICAuY29udGVudCB7XG4gICAgICBAYXBwbHkgdGV4dC1ydWktZGFyay10ZXh0O1xuICAgIH1cblxuICAgICYub3V0bGluZWQge1xuICAgICAgQGFwcGx5IGJvcmRlci13aGl0ZS9bMC4xMl07XG4gICAgfVxuXG4gICAgJi5kaXZpZGUge1xuICAgICAgQGFwcGx5IGRpdmlkZS13aGl0ZS9bMC4xMl07XG4gICAgfVxuICB9XG59XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbmltcG9ydCB0eXBlIHsgU3R5bGVWYWx1ZSB9IGZyb20gJ3Z1ZSc7XG5pbXBvcnQgdHlwZSB7IENvbnRleHRDb2xvcnNUeXBlIH0gZnJvbSAnQC9jb25zdHMvY29sb3JzJztcbmltcG9ydCB0eXBlIHsgUnVpSWNvbnMgfSBmcm9tICdAL2ljb25zJztcbmltcG9ydCB7IGxvZ2ljTm90LCBsb2dpY09yIH0gZnJvbSAnQHZ1ZXVzZS9tYXRoJztcbmltcG9ydCB7IG9iamVjdE9taXQgfSBmcm9tICdAdnVldXNlL3NoYXJlZCc7XG5pbXBvcnQgUnVpSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvaWNvbnMvUnVpSWNvbi52dWUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BzIHtcbiAgdGlsZT86IGJvb2xlYW47XG4gIGNsaWNrYWJsZT86IGJvb2xlYW47XG4gIGNsb3NlYWJsZT86IGJvb2xlYW47XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgc2l6ZT86ICdzbScgfCAnbWQnO1xuICB2YXJpYW50PzogJ2ZpbGxlZCcgfCAnb3V0bGluZWQnO1xuICBjb2xvcj86ICdncmV5JyB8IENvbnRleHRDb2xvcnNUeXBlO1xuICBjbG9zZUljb24/OiBSdWlJY29ucztcbiAgYmdDb2xvcj86IHN0cmluZztcbiAgdGV4dENvbG9yPzogc3RyaW5nO1xuICBjb250ZW50Q2xhc3M/OiBzdHJpbmc7XG59XG5cbmRlZmluZU9wdGlvbnMoe1xuICBuYW1lOiAnUnVpQ2hpcCcsXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG59KTtcblxuY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgdGlsZTogZmFsc2UsXG4gIHNpemU6ICdtZCcsXG4gIGNvbG9yOiAnZ3JleScsXG4gIGNsaWNrYWJsZTogZmFsc2UsXG4gIGNsb3NlYWJsZTogZmFsc2UsXG4gIGRpc2FibGVkOiBmYWxzZSxcbiAgdmFyaWFudDogJ2ZpbGxlZCcsXG4gIGNsb3NlSWNvbjogJ2x1LWNpcmNsZS14JyxcbiAgYmdDb2xvcjogdW5kZWZpbmVkLFxuICB0ZXh0Q29sb3I6IHVuZGVmaW5lZCxcbiAgY29udGVudENsYXNzOiAnJyxcbn0pO1xuXG5jb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8e1xuICAoZXZlbnQ6ICdjbGljazpjbG9zZScpOiB2b2lkO1xuICAoZXZlbnQ6ICdjbGljaycsIGU6IGFueSk6IHZvaWQ7XG59PigpO1xuXG5jb25zdCB7IGNsaWNrYWJsZSwgZGlzYWJsZWQsIGJnQ29sb3IsIHRleHRDb2xvciB9ID0gdG9SZWZzKHByb3BzKTtcblxuZnVuY3Rpb24gY2xpY2soZTogYW55KSB7XG4gIGlmIChnZXQobG9naWNPcihsb2dpY05vdChjbGlja2FibGUpLCBkaXNhYmxlZCkpKVxuICAgIHJldHVybjtcblxuICBlbWl0KCdjbGljaycsIGUpO1xufVxuXG5jb25zdCBzdHlsZSA9IGNvbXB1dGVkPFBhcnRpYWw8U3R5bGVWYWx1ZT4+KCgpID0+IHtcbiAgY29uc3Qgc3R5bGU6IFBhcnRpYWw8U3R5bGVWYWx1ZT4gPSB7fTtcbiAgY29uc3QgYmcgPSBnZXQoYmdDb2xvcik7XG4gIGNvbnN0IHRleHQgPSBnZXQodGV4dENvbG9yKTtcbiAgaWYgKGJnKVxuICAgIHN0eWxlLmJhY2tncm91bmRDb2xvciA9IGJnO1xuXG4gIGlmICh0ZXh0KVxuICAgIHN0eWxlLmNvbG9yID0gdGV4dDtcblxuICByZXR1cm4gc3R5bGU7XG59KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAkc3R5bGUuY2hpcCxcbiAgICAgICRzdHlsZVtjb2xvciA/PyAnJ10sXG4gICAgICAkc3R5bGVbc2l6ZSA/PyAnJ10sXG4gICAgICAkc3R5bGVbdmFyaWFudCA/PyAnJ10sXG4gICAgICB7XG4gICAgICAgIFskc3R5bGUuZGlzYWJsZWRdOiBkaXNhYmxlZCxcbiAgICAgICAgWyRzdHlsZS50aWxlXTogdGlsZSxcbiAgICAgICAgWyRzdHlsZS5yZWFkb25seV06ICFjbGlja2FibGUsXG4gICAgICB9LFxuICAgIF1cIlxuICAgIDpzdHlsZT1cInN0eWxlXCJcbiAgICByb2xlPVwiYnV0dG9uXCJcbiAgICB0YWJpbmRleD1cIjBcIlxuICAgIHYtYmluZD1cIm9iamVjdE9taXQoJGF0dHJzLCBbJ29uQ2xpY2snXSlcIlxuICAgIEBjbGljaz1cImNsaWNrKCRldmVudClcIlxuICA+XG4gICAgPGRpdlxuICAgICAgdi1pZj1cIiRzbG90cy5wcmVwZW5kXCJcbiAgICAgIDpjbGFzcz1cIiRzdHlsZS5jaGlwX19wcmVwZW5kXCJcbiAgICA+XG4gICAgICA8c2xvdCBuYW1lPVwicHJlcGVuZFwiIC8+XG4gICAgPC9kaXY+XG4gICAgPHNwYW4gOmNsYXNzPVwiWyRzdHlsZS5jaGlwX19sYWJlbCwgY29udGVudENsYXNzXVwiPlxuICAgICAgPHNsb3QgLz5cbiAgICA8L3NwYW4+XG4gICAgPGJ1dHRvblxuICAgICAgdi1pZj1cImNsb3NlYWJsZVwiXG4gICAgICA6Y2xhc3M9XCIkc3R5bGUuY2hpcF9fY2xvc2VcIlxuICAgICAgOmRpc2FibGVkPVwiZGlzYWJsZWRcIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBAY2xpY2suc3RvcD1cImVtaXQoJ2NsaWNrOmNsb3NlJylcIlxuICAgID5cbiAgICAgIDxSdWlJY29uXG4gICAgICAgIDpjbGFzcz1cIiRzdHlsZS5jaGlwX19jbG9zZV9pY29uXCJcbiAgICAgICAgOnNpemU9XCJzaXplID09PSAnc20nID8gMTYgOiAyNFwiXG4gICAgICAgIDpuYW1lPVwiY2xvc2VJY29uXCJcbiAgICAgIC8+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgbW9kdWxlPlxuQHVzZSAnQC9zdHlsZXMvY29sb3JzLnNjc3MnIGFzIGM7XG5cbi5jaGlwIHtcbiAgQGFwcGx5IGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcm91bmRlZC1mdWxsIHB4LTEuNSBweS1bMC4yNXJlbV0gdHJhbnNpdGlvbi1hbGwgY3Vyc29yLWRlZmF1bHQgb3V0bGluZS1ub25lO1xuICBAYXBwbHkgbWF4LXctZnVsbCB0cnVuY2F0ZTtcblxuICAmLnRpbGUge1xuICAgIEBhcHBseSByb3VuZGVkLXNtO1xuICB9XG5cbiAgJjpub3QoLnJlYWRvbmx5KTpub3QoLmRpc2FibGVkKSB7XG4gICAgQGFwcGx5IGhvdmVyOmJyaWdodG5lc3MtOTAgZm9jdXM6YnJpZ2h0bmVzcy03NTtcbiAgfVxuXG4gICYuZ3JleSB7XG4gICAgQGFwcGx5IHRleHQtcnVpLXRleHQ7XG5cbiAgICAmLmZpbGxlZCB7XG4gICAgICBAYXBwbHkgYmctcnVpLWdyZXktMjAwO1xuICAgIH1cblxuICAgICYub3V0bGluZWQge1xuICAgICAgQGFwcGx5IGJvcmRlciBib3JkZXItYmxhY2svWzAuMjZdIGJnLXRyYW5zcGFyZW50O1xuXG4gICAgICAmOm5vdCgucmVhZG9ubHkpOm5vdCguZGlzYWJsZWQpIHtcbiAgICAgICAgQGFwcGx5IGhvdmVyOmJnLWJsYWNrL1swLjA0XSBmb2N1czpiZy1ibGFjay9bMC4xMl07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGVhY2ggJGNvbG9yIGluIGMuJGNvbnRleHQtY29sb3JzIHtcbiAgICAmLiN7JGNvbG9yfSB7XG4gICAgICAmLmZpbGxlZCB7XG4gICAgICAgIEBhcHBseSB0ZXh0LXJ1aS1kYXJrLXRleHQgYmctcnVpLSN7JGNvbG9yfTtcbiAgICAgIH1cblxuICAgICAgJi5vdXRsaW5lZCB7XG4gICAgICAgIEBhcHBseSBib3JkZXIgdGV4dC1ydWktI3skY29sb3J9IGJvcmRlci1ydWktI3skY29sb3J9LzUwIGJnLXRyYW5zcGFyZW50O1xuXG4gICAgICAgICY6bm90KC5yZWFkb25seSk6bm90KC5kaXNhYmxlZCkge1xuICAgICAgICAgIEBhcHBseSBob3ZlcjpiZy1ydWktI3skY29sb3J9L1swLjA0XSBmb2N1czpiZy1ydWktI3skY29sb3J9L1swLjEyXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICZfX3ByZXBlbmQge1xuICAgIEBhcHBseSByb3VuZGVkLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcHItMCB3LTYgaC02O1xuICAgIEBhcHBseSB0ZXh0LVswLjZyZW1dIHRleHQtd2hpdGUgYmctcnVpLWdyZXktNDAwIC1tbC0wLjUgb3ZlcmZsb3ctaGlkZGVuO1xuICB9XG5cbiAgJl9fbGFiZWwge1xuICAgIEBhcHBseSB0cnVuY2F0ZSBweC1bMC4zNzVyZW1dIHRleHQtWzAuODEyNXJlbV07XG4gIH1cblxuICAmX19jbG9zZSB7XG4gICAgQGFwcGx5IHJvdW5kZWQtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBwLVswLjEzcmVtXSBwbC0wO1xuICAgIEBhcHBseSBpbnNldC15LTAgZm9jdXM6b3V0bGluZS1ub25lIC1tci0xO1xuXG4gICAgJl9pY29uIHtcbiAgICAgIEBhcHBseSBvcGFjaXR5LTUwIGhvdmVyOm9wYWNpdHktODAgdHJhbnNpdGlvbi1vcGFjaXR5O1xuICAgIH1cbiAgfVxuXG4gICYubWQge1xuICAgIEBhcHBseSBtaW4taC1bMi4yNnJlbV07XG4gIH1cblxuICAmLnNtIHtcbiAgICBAYXBwbHkgcHktWzAuMTlyZW1dO1xuXG4gICAgJl9fcHJlcGVuZCB7XG4gICAgICBAYXBwbHkgdGV4dC1bMC41cmVtXSBwLVswLjA4cmVtXSB3LTQgaC00IC1tbC0xO1xuICAgIH1cblxuICAgICZfX2xhYmVsIHtcbiAgICAgIEBhcHBseSBweC1bMC4zcmVtXSB0ZXh0LVswLjdyZW1dO1xuICAgIH1cblxuICAgICZfX2Nsb3NlIHtcbiAgICAgIEBhcHBseSBwLVswLjA4cmVtXTtcbiAgICAgIEBhcHBseSAtbXItMS41O1xuICAgIH1cbiAgfVxuXG4gICYuZGlzYWJsZWQsXG4gICYucmVhZG9ubHkge1xuICAgIEBhcHBseSBjdXJzb3ItZGVmYXVsdDtcblxuICAgICZfX2Nsb3NlIHtcbiAgICAgIEBhcHBseSBjdXJzb3ItZGVmYXVsdDtcblxuICAgICAgJl9pY29uIHtcbiAgICAgICAgQGFwcGx5IG9wYWNpdHktNTA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJi5kaXNhYmxlZCB7XG4gICAgQGFwcGx5IG9wYWNpdHktNDA7XG4gIH1cbn1cblxuOmdsb2JhbCguZGFyaykge1xuICAuY2hpcCB7XG4gICAgJjpub3QoLnJlYWRvbmx5KTpub3QoLmRpc2FibGVkKSB7XG4gICAgICBAYXBwbHkgaG92ZXI6YnJpZ2h0bmVzcy0xMTAgZm9jdXM6YnJpZ2h0bmVzcy03NTtcbiAgICB9XG5cbiAgICAmLmdyZXkge1xuICAgICAgJi5maWxsZWQge1xuICAgICAgICBAYXBwbHkgYmctcnVpLWdyZXktODAwO1xuICAgICAgfVxuXG4gICAgICAmLm91dGxpbmVkIHtcbiAgICAgICAgQGFwcGx5IGJvcmRlci13aGl0ZS9bMC4yNl07XG5cbiAgICAgICAgJjpub3QoLnJlYWRvbmx5KTpub3QoLmRpc2FibGVkKSB7XG4gICAgICAgICAgQGFwcGx5IGhvdmVyOmJnLXdoaXRlL1swLjA0XSBmb2N1czpiZy13aGl0ZS9bMC4xMl07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBAZWFjaCAkY29sb3IgaW4gKHdhcm5pbmcsIHN1Y2Nlc3MsIGluZm8pIHtcbiAgICAgICYuI3skY29sb3J9IHtcbiAgICAgICAgJi5maWxsZWQge1xuICAgICAgICAgIEBhcHBseSB0ZXh0LXJ1aS1saWdodC10ZXh0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJl9fcHJlcGVuZCB7XG4gICAgICBAYXBwbHkgYmctcnVpLWdyZXktNzAwO1xuICAgIH1cblxuICAgICZfX2Nsb3NlIHtcbiAgICAgICZfaWNvbiB7XG4gICAgICAgIEBhcHBseSBob3Zlcjp0ZXh0LXJ1aS1ncmV5LTMwMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgdGlueWNvbG9yLCB7IHR5cGUgQ29sb3JJbnB1dCB9IGZyb20gJ3Rpbnljb2xvcjInO1xuXG5leHBvcnQgdHlwZSBDb2xvckZvcm1hdCA9ICdyZ2InIHwgJ2hleCc7XG5cbmV4cG9ydCBmdW5jdGlvbiByb3VuZFR3b0RlY2ltYWwobnVtOiBudW1iZXIpIHtcbiAgcmV0dXJuIE1hdGgucm91bmQobnVtICogMTAwKSAvIDEwMDtcbn1cblxuZXhwb3J0IGNsYXNzIENvbG9yIHtcbiAgaW5zdGFuY2U6IHRpbnljb2xvci5JbnN0YW5jZTtcbiAgYWxwaGFWYWx1ZSA9IDA7XG5cbiAgLy8gcmdiXG4gIHJlZFZhbHVlID0gMDtcbiAgZ3JlZW5WYWx1ZSA9IDA7XG4gIGJsdWVWYWx1ZSA9IDA7XG5cbiAgLy8gSFNWXG4gIGh1ZVZhbHVlID0gMDtcbiAgc2F0dXJhdGlvblZhbHVlID0gMDtcbiAgYnJpZ2h0bmVzc1ZhbHVlID0gMDtcblxuICAvLyBIU0xcbiAgaHNsU2F0dXJhdGlvblZhbHVlID0gMDtcbiAgbGlnaHRuZXNzVmFsdWUgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKGlucHV0PzogQ29sb3JJbnB1dCkge1xuICAgIHRoaXMuaW5zdGFuY2UgPSB0aW55Y29sb3IoaW5wdXQpO1xuXG4gICAgdGhpcy5pbml0UmdiKCk7XG4gICAgdGhpcy5pbml0SHNiKCk7XG4gICAgdGhpcy5pbml0TGlnaHRuZXNzKCk7XG4gICAgdGhpcy5pbml0QWxwaGEoKTtcbiAgfVxuXG4gIGluaXRBbHBoYSA9ICgpID0+IHtcbiAgICBjb25zdCBpbml0QWxwaGEgPSB0aGlzLmluc3RhbmNlLmdldEFscGhhKCk7XG4gICAgdGhpcy5hbHBoYVZhbHVlID0gTWF0aC5taW4oMSwgaW5pdEFscGhhKSAqIDEwMDtcbiAgfTtcblxuICBpbml0TGlnaHRuZXNzID0gKCkgPT4ge1xuICAgIGNvbnN0IHsgbCwgcyB9ID0gdGhpcy5pbnN0YW5jZS50b0hzbCgpO1xuICAgIHRoaXMuaHNsU2F0dXJhdGlvblZhbHVlID0gcm91bmRUd29EZWNpbWFsKHMpO1xuICAgIHRoaXMubGlnaHRuZXNzVmFsdWUgPSByb3VuZFR3b0RlY2ltYWwobCk7XG4gIH07XG5cbiAgaW5pdFJnYiA9ICgpID0+IHtcbiAgICBjb25zdCB7IGIsIGcsIHIgfSA9IHRoaXMuaW5zdGFuY2UudG9SZ2IoKTtcblxuICAgIHRoaXMucmVkVmFsdWUgPSByb3VuZFR3b0RlY2ltYWwocik7XG4gICAgdGhpcy5ncmVlblZhbHVlID0gcm91bmRUd29EZWNpbWFsKGcpO1xuICAgIHRoaXMuYmx1ZVZhbHVlID0gcm91bmRUd29EZWNpbWFsKGIpO1xuICB9O1xuXG4gIGluaXRIc2IgPSAoKSA9PiB7XG4gICAgY29uc3QgeyBoLCBzLCB2IH0gPSB0aGlzLmluc3RhbmNlLnRvSHN2KCk7XG5cbiAgICB0aGlzLmh1ZVZhbHVlID0gTWF0aC5taW4oMzYwLCBNYXRoLmNlaWwoaCkpO1xuICAgIHRoaXMuc2F0dXJhdGlvblZhbHVlID0gcm91bmRUd29EZWNpbWFsKHMpO1xuICAgIHRoaXMuYnJpZ2h0bmVzc1ZhbHVlID0gcm91bmRUd29EZWNpbWFsKHYpO1xuICB9O1xuXG4gIHRvU3RyaW5nKGZvcm1hdD86IENvbG9yRm9ybWF0KSB7XG4gICAgcmV0dXJuIHRoaXMuaW5zdGFuY2UudG9TdHJpbmcoZm9ybWF0KTtcbiAgfVxuXG4gIGdldCBoZXhTdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5zdGFuY2UudG9IZXhTdHJpbmcoKTtcbiAgfTtcblxuICBnZXQgaGV4KCkge1xuICAgIHJldHVybiB0aGlzLmluc3RhbmNlLnRvSGV4KCk7XG4gIH1cblxuICBzZXQgaGV4KGhleFN0cmluZzogc3RyaW5nKSB7XG4gICAgdGhpcy5pbnN0YW5jZSA9IHRpbnljb2xvcihoZXhTdHJpbmcpO1xuICAgIHRoaXMuaW5pdEhzYigpO1xuICAgIHRoaXMuaW5pdFJnYigpO1xuICAgIHRoaXMuaW5pdEFscGhhKCk7XG4gICAgdGhpcy5pbml0TGlnaHRuZXNzKCk7XG4gIH1cblxuICBzZXQgaHVlKHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5zYXR1cmF0aW9uID09PSAwICYmIHRoaXMuYnJpZ2h0bmVzcyA9PT0gMCkge1xuICAgICAgdGhpcy5zYXR1cmF0aW9uVmFsdWUgPSAxO1xuICAgICAgdGhpcy5icmlnaHRuZXNzVmFsdWUgPSAxO1xuICAgIH1cbiAgICB0aGlzLmluc3RhbmNlID0gdGlueWNvbG9yKHtcbiAgICAgIGE6IHRoaXMuYWxwaGFWYWx1ZSAvIDEwMCxcbiAgICAgIGg6IHJvdW5kVHdvRGVjaW1hbCh2YWx1ZSksXG4gICAgICBzOiB0aGlzLnNhdHVyYXRpb24sXG4gICAgICB2OiB0aGlzLmJyaWdodG5lc3MsXG4gICAgfSk7XG5cbiAgICB0aGlzLmluaXRSZ2IoKTtcbiAgICB0aGlzLmluaXRMaWdodG5lc3MoKTtcbiAgICB0aGlzLmh1ZVZhbHVlID0gcm91bmRUd29EZWNpbWFsKHZhbHVlKTtcbiAgfVxuXG4gIGdldCBodWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaHVlVmFsdWU7XG4gIH1cblxuICBzZXQgc2F0dXJhdGlvbih2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5pbnN0YW5jZSA9IHRpbnljb2xvcih7XG4gICAgICBhOiB0aGlzLmFscGhhVmFsdWUgLyAxMDAsXG4gICAgICBoOiB0aGlzLmh1ZSxcbiAgICAgIHM6IHJvdW5kVHdvRGVjaW1hbCh2YWx1ZSksXG4gICAgICB2OiB0aGlzLmJyaWdodG5lc3MsXG4gICAgfSk7XG5cbiAgICB0aGlzLmluaXRSZ2IoKTtcbiAgICB0aGlzLmluaXRMaWdodG5lc3MoKTtcbiAgICB0aGlzLnNhdHVyYXRpb25WYWx1ZSA9IHJvdW5kVHdvRGVjaW1hbCh2YWx1ZSk7XG4gIH1cblxuICBnZXQgc2F0dXJhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zYXR1cmF0aW9uVmFsdWU7XG4gIH1cblxuICBzZXQgYnJpZ2h0bmVzcyh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5pbnN0YW5jZSA9IHRpbnljb2xvcih7XG4gICAgICBhOiB0aGlzLmFscGhhVmFsdWUgLyAxMDAsXG4gICAgICBoOiB0aGlzLmh1ZSxcbiAgICAgIHM6IHRoaXMuc2F0dXJhdGlvbixcbiAgICAgIHY6IHJvdW5kVHdvRGVjaW1hbCh2YWx1ZSksXG4gICAgfSk7XG5cbiAgICB0aGlzLmluaXRSZ2IoKTtcbiAgICB0aGlzLmluaXRMaWdodG5lc3MoKTtcbiAgICB0aGlzLmJyaWdodG5lc3NWYWx1ZSA9IHJvdW5kVHdvRGVjaW1hbCh2YWx1ZSk7XG4gIH1cblxuICBnZXQgYnJpZ2h0bmVzcygpIHtcbiAgICByZXR1cm4gdGhpcy5icmlnaHRuZXNzVmFsdWU7XG4gIH1cblxuICBzZXQgcmVkKHZhbHVlOiBudW1iZXIpIHtcbiAgICBjb25zdCByZ2IgPSB0aGlzLmluc3RhbmNlLnRvUmdiKCk7XG4gICAgdGhpcy5pbnN0YW5jZSA9IHRpbnljb2xvcih7XG4gICAgICAuLi5yZ2IsXG4gICAgICBhOiB0aGlzLmFscGhhVmFsdWUgLyAxMDAsXG4gICAgICByOiByb3VuZFR3b0RlY2ltYWwodmFsdWUpLFxuICAgIH0pO1xuXG4gICAgdGhpcy5pbml0SHNiKCk7XG4gICAgdGhpcy5pbml0TGlnaHRuZXNzKCk7XG4gICAgdGhpcy5yZWRWYWx1ZSA9IHJvdW5kVHdvRGVjaW1hbCh2YWx1ZSk7XG4gIH1cblxuICBnZXQgcmVkKCkge1xuICAgIHJldHVybiB0aGlzLnJlZFZhbHVlO1xuICB9XG5cbiAgc2V0IGdyZWVuKHZhbHVlOiBudW1iZXIpIHtcbiAgICBjb25zdCByZ2IgPSB0aGlzLmluc3RhbmNlLnRvUmdiKCk7XG4gICAgdGhpcy5pbnN0YW5jZSA9IHRpbnljb2xvcih7XG4gICAgICAuLi5yZ2IsXG4gICAgICBhOiB0aGlzLmFscGhhVmFsdWUgLyAxMDAsXG4gICAgICBnOiByb3VuZFR3b0RlY2ltYWwodmFsdWUpLFxuICAgIH0pO1xuXG4gICAgdGhpcy5pbml0SHNiKCk7XG4gICAgdGhpcy5pbml0TGlnaHRuZXNzKCk7XG4gICAgdGhpcy5ncmVlblZhbHVlID0gcm91bmRUd29EZWNpbWFsKHZhbHVlKTtcbiAgfVxuXG4gIGdldCBncmVlbigpIHtcbiAgICByZXR1cm4gdGhpcy5ncmVlblZhbHVlO1xuICB9XG5cbiAgc2V0IGJsdWUodmFsdWU6IG51bWJlcikge1xuICAgIGNvbnN0IHJnYiA9IHRoaXMuaW5zdGFuY2UudG9SZ2IoKTtcbiAgICB0aGlzLmluc3RhbmNlID0gdGlueWNvbG9yKHtcbiAgICAgIC4uLnJnYixcbiAgICAgIGE6IHRoaXMuYWxwaGFWYWx1ZSAvIDEwMCxcbiAgICAgIGI6IHJvdW5kVHdvRGVjaW1hbCh2YWx1ZSksXG4gICAgfSk7XG5cbiAgICB0aGlzLmluaXRIc2IoKTtcbiAgICB0aGlzLmluaXRMaWdodG5lc3MoKTtcbiAgICB0aGlzLmJsdWVWYWx1ZSA9IHJvdW5kVHdvRGVjaW1hbCh2YWx1ZSk7XG4gIH1cblxuICBnZXQgYmx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5ibHVlVmFsdWU7XG4gIH1cblxuICBnZXQgcmdiKCk6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSB7XG4gICAgcmV0dXJuIFt0aGlzLnJlZCwgdGhpcy5ncmVlbiwgdGhpcy5ibHVlXTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlRWxlbWVudERyYWcoaGFuZGxlcjogKHg6IG51bWJlciwgeTogbnVtYmVyKSA9PiBhbnkpIHtcbiAgZnVuY3Rpb24gaGFuZGxlQ2xpY2soZTogeyBjbGllbnRYOiBudW1iZXI7IGNsaWVudFk6IG51bWJlciB9KSB7XG4gICAgaGFuZGxlcihlLmNsaWVudFgsIGUuY2xpZW50WSk7XG4gIH1cblxuICBmdW5jdGlvbiBvbk1vdXNlRG93bihlOiBNb3VzZUV2ZW50KSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIGhhbmRsZUNsaWNrKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU1vdXNlVXApO1xuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlTW91c2VVcCgpIHtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgaGFuZGxlQ2xpY2spO1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgaGFuZGxlTW91c2VVcCk7XG4gIH1cblxuICBvblVubW91bnRlZCgoKSA9PiB7XG4gICAgaGFuZGxlTW91c2VVcCgpO1xuICB9KTtcblxuICByZXR1cm4ge1xuICAgIGhhbmRsZUNsaWNrLFxuICAgIG9uTW91c2VEb3duLFxuICB9O1xufVxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbmltcG9ydCB7IGNsYW1wIH0gZnJvbSAnQHZ1ZXVzZS9zaGFyZWQnO1xuaW1wb3J0IHsgQ29sb3IsIHVzZUVsZW1lbnREcmFnIH0gZnJvbSAnLi91dGlscyc7XG5cbmRlZmluZU9wdGlvbnMoe1xuICBuYW1lOiAnUnVpQ29sb3JCb2FyZCcsXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG59KTtcblxuY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wczx7XG4gIGNvbG9yOiBDb2xvcjtcbn0+KCk7XG5cbmNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czx7XG4gIChlOiAndXBkYXRlOmJvYXJkJywgZXZlbnQ6IHsgc2F0dXJhdGlvbjogbnVtYmVyOyBicmlnaHRuZXNzOiBudW1iZXIgfSk6IHZvaWQ7XG59PigpO1xuXG5mdW5jdGlvbiBodWVUb0hleChodWU6IG51bWJlcikge1xuICByZXR1cm4gbmV3IENvbG9yKHsgaDogaHVlLCBzOiAxLCB2OiAxIH0pLmhleFN0cmluZztcbn1cblxuY29uc3Qgc3RhdGUgPSByZWFjdGl2ZSh7XG4gIGhleFN0cmluZzogaHVlVG9IZXgocHJvcHMuY29sb3IuaHVlKSxcbiAgc2F0dXJhdGlvbjogcHJvcHMuY29sb3Iuc2F0dXJhdGlvbixcbiAgYnJpZ2h0bmVzczogcHJvcHMuY29sb3IuYnJpZ2h0bmVzcyxcbn0pO1xuXG5jb25zdCBjdXJzb3JUb3AgPSByZWY8bnVtYmVyPigwKTtcbmNvbnN0IGN1cnNvckxlZnQgPSByZWY8bnVtYmVyPigwKTtcblxuY29uc3QgY3Vyc29yU3R5bGUgPSBjb21wdXRlZCgoKSA9PiAoe1xuICB0b3A6IGAke2dldChjdXJzb3JUb3ApICogMTAwfSVgLFxuICBsZWZ0OiBgJHtnZXQoY3Vyc29yTGVmdCkgKiAxMDB9JWAsXG59KSk7XG5cbmNvbnN0IHdyYXBwZXIgPSByZWY8SFRNTEVsZW1lbnQ+KCk7XG5cbmZ1bmN0aW9uIHVwZGF0ZVBvc2l0aW9uKCkge1xuICBzZXQoY3Vyc29yTGVmdCwgc3RhdGUuc2F0dXJhdGlvbik7XG4gIHNldChjdXJzb3JUb3AsICgxIC0gc3RhdGUuYnJpZ2h0bmVzcykpO1xufVxuXG5jb25zdCBpbnN0YW5jZSA9IGdldEN1cnJlbnRJbnN0YW5jZSgpO1xuXG5jb25zdCB7XG4gIGhhbmRsZUNsaWNrLFxuICBvbk1vdXNlRG93bixcbn0gPSB1c2VFbGVtZW50RHJhZyhlbWl0Q29sb3IpO1xuXG5mdW5jdGlvbiBlbWl0Q29sb3IoeDogbnVtYmVyLCB5OiBudW1iZXIpIHtcbiAgaWYgKCFpbnN0YW5jZSlcbiAgICByZXR1cm47XG5cbiAgY29uc3QgZWwgPSBpbnN0YW5jZS52bm9kZS5lbDtcbiAgY29uc3QgcmVjdCA9IGVsPy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICBpZiAoIXJlY3QpXG4gICAgcmV0dXJuO1xuXG4gIGNvbnN0IHsgd2lkdGgsIGhlaWdodCwgbGVmdCwgdG9wIH0gPSByZWN0O1xuICBsZXQgY2FsY3VsYXRlZFggPSB4IC0gbGVmdDtcbiAgbGV0IGNhbGN1bGF0ZWRZID0geSAtIHRvcDtcblxuICBjYWxjdWxhdGVkWCA9IGNsYW1wKGNhbGN1bGF0ZWRYLCAwLCB3aWR0aCk7XG4gIGNhbGN1bGF0ZWRZID0gY2xhbXAoY2FsY3VsYXRlZFksIDAsIGhlaWdodCk7XG5cbiAgY29uc3Qgc2F0dXJhdGlvbiA9IGNhbGN1bGF0ZWRYIC8gd2lkdGg7XG4gIGNvbnN0IGJyaWdodG5lc3MgPSBjbGFtcCgtKGNhbGN1bGF0ZWRZIC8gaGVpZ2h0KSArIDEsIDAsIDEpO1xuXG4gIHNldChjdXJzb3JMZWZ0LCBjYWxjdWxhdGVkWCAvIHdpZHRoKTtcbiAgc2V0KGN1cnNvclRvcCwgY2FsY3VsYXRlZFkgLyBoZWlnaHQpO1xuXG4gIHN0YXRlLnNhdHVyYXRpb24gPSBzYXR1cmF0aW9uO1xuICBzdGF0ZS5icmlnaHRuZXNzID0gYnJpZ2h0bmVzcztcblxuICBlbWl0KCd1cGRhdGU6Ym9hcmQnLCB7IHNhdHVyYXRpb24sIGJyaWdodG5lc3MgfSk7XG59XG5cbm9uTW91bnRlZCgoKSA9PiB7XG4gIHVwZGF0ZVBvc2l0aW9uKCk7XG59KTtcblxud2hlbmV2ZXIoXG4gICgpID0+IHByb3BzLmNvbG9yLFxuICAodmFsdWUpID0+IHtcbiAgICBzdGF0ZS5oZXhTdHJpbmcgPSBodWVUb0hleCh2YWx1ZS5odWUpO1xuICAgIHN0YXRlLnNhdHVyYXRpb24gPSB2YWx1ZS5zYXR1cmF0aW9uO1xuICAgIHN0YXRlLmJyaWdodG5lc3MgPSB2YWx1ZS5icmlnaHRuZXNzO1xuICAgIHVwZGF0ZVBvc2l0aW9uKCk7XG4gIH0sXG4gIHsgZGVlcDogdHJ1ZSB9LFxuKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICByZWY9XCJ3cmFwcGVyXCJcbiAgICBjbGFzcz1cInJ1aS1jb2xvci1ib2FyZFwiXG4gICAgOmNsYXNzPVwiJHN0eWxlLnNhdHVyYXRpb25cIlxuICAgIHYtYmluZD1cIiRhdHRyc1wiXG4gICAgOnN0eWxlPVwieyBiYWNrZ3JvdW5kQ29sb3I6IHN0YXRlLmhleFN0cmluZyB9XCJcbiAgICBAY2xpY2s9XCJoYW5kbGVDbGljaygkZXZlbnQpXCJcbiAgICBAbW91c2Vkb3duPVwib25Nb3VzZURvd24oJGV2ZW50KVwiXG4gID5cbiAgICA8ZGl2IDpjbGFzcz1cIiRzdHlsZS5zYXR1cmF0aW9uX193aGl0ZVwiIC8+XG4gICAgPGRpdiA6Y2xhc3M9XCIkc3R5bGUuc2F0dXJhdGlvbl9fYmxhY2tcIiAvPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIiRzdHlsZS5jdXJzb3JcIlxuICAgICAgOnN0eWxlPVwiY3Vyc29yU3R5bGVcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgbW9kdWxlPlxuLnNhdHVyYXRpb24ge1xuICBAYXBwbHkgcmVsYXRpdmUgdy1mdWxsIGgtNDAgb3ZlcmZsb3ctaGlkZGVuIGN1cnNvci1wb2ludGVyO1xuXG4gICZfX3doaXRlLFxuICAmX19ibGFjayB7XG4gICAgQGFwcGx5IGFic29sdXRlIHRvcC0wIGxlZnQtMCByaWdodC0wIGJvdHRvbS0wIHRvLXRyYW5zcGFyZW50O1xuICB9XG5cbiAgJl9fYmxhY2sge1xuICAgIEBhcHBseSBiZy1ncmFkaWVudC10by10IGZyb20tYmxhY2s7XG4gIH1cblxuICAmX193aGl0ZSB7XG4gICAgQGFwcGx5IGJnLWdyYWRpZW50LXRvLXIgZnJvbS13aGl0ZTtcbiAgfVxufVxuXG4uY3Vyc29yIHtcbiAgQGFwcGx5IGFic29sdXRlIHctNSBoLTUgdHJhbnNmb3JtIC10cmFuc2xhdGUteC0xLzIgLXRyYW5zbGF0ZS15LTEvMiBib3JkZXItMiBib3JkZXItd2hpdGUgc2hhZG93IHJvdW5kZWQtZnVsbDtcblxuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBAYXBwbHkgYWJzb2x1dGUgdy1mdWxsIGgtZnVsbCByb3VuZGVkLWZ1bGwgYm9yZGVyLTIgYm9yZGVyLWJsYWNrLzE1O1xuICB9XG59XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IHR5cGUgUG9wcGVyT3B0aW9ucywgdXNlUG9wcGVyIH0gZnJvbSAnQC9jb21wb3NhYmxlcy9wb3BwZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BzIHtcbiAgdGV4dD86IHN0cmluZyB8IG51bGw7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgaGlkZUFycm93PzogYm9vbGVhbjtcbiAgb3BlbkRlbGF5PzogbnVtYmVyO1xuICBjbG9zZURlbGF5PzogbnVtYmVyO1xuICBwZXJzaXN0T25Ub29sdGlwSG92ZXI/OiBib29sZWFuO1xuICBwb3BwZXI/OiBQb3BwZXJPcHRpb25zO1xuICB0b29sdGlwQ2xhc3M/OiBzdHJpbmc7XG59XG5cbmRlZmluZU9wdGlvbnMoe1xuICBuYW1lOiAnUnVpVG9vbHRpcCcsXG59KTtcblxuY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgdGV4dDogbnVsbCxcbiAgZGlzYWJsZWQ6IGZhbHNlLFxuICBoaWRlQXJyb3c6IGZhbHNlLFxuICBvcGVuRGVsYXk6IDAsXG4gIGNsb3NlRGVsYXk6IDUwMCxcbiAgcGVyc2lzdE9uVG9vbHRpcEhvdmVyOiBmYWxzZSxcbiAgcG9wcGVyOiAoKSA9PiAoe30pLFxuICB0b29sdGlwQ2xhc3M6ICcnLFxufSk7XG5cbmNvbnN0IHsgY2xvc2VEZWxheSwgb3BlbkRlbGF5LCBwb3BwZXIsIGRpc2FibGVkIH0gPSB0b1JlZnMocHJvcHMpO1xuXG5jb25zdCB7XG4gIHJlZmVyZW5jZTogYWN0aXZhdG9yLFxuICBwb3BwZXI6IHRvb2x0aXAsXG4gIG9wZW4sXG4gIHBvcHBlckVudGVyLFxuICBvbk9wZW4sXG4gIG9uQ2xvc2UsXG4gIG9uUG9wcGVyTGVhdmUsXG4gIHVwZGF0ZVBvcHBlcixcbn0gPSB1c2VQb3BwZXIocG9wcGVyLCBkaXNhYmxlZCwgb3BlbkRlbGF5LCBjbG9zZURlbGF5KTtcblxuZGVmaW5lRXhwb3NlKHtcbiAgb25PcGVuLFxuICBvbkNsb3NlLFxufSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgcmVmPVwiYWN0aXZhdG9yXCJcbiAgICA6Y2xhc3M9XCIkc3R5bGUud3JhcHBlclwiXG4gICAgOmRhdGEtdG9vbHRpcC1kaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICBAbW91c2VvdmVyPVwib25PcGVuKClcIlxuICAgIEBtb3VzZWxlYXZlPVwib25DbG9zZSgpXCJcbiAgICBAZm9jdXNpbj1cIm9uT3BlbigpXCJcbiAgICBAZm9jdXNvdXQ9XCJvbkNsb3NlKClcIlxuICA+XG4gICAgPHNsb3RcbiAgICAgIG5hbWU9XCJhY3RpdmF0b3JcIlxuICAgICAgOm9wZW49XCJvcGVuXCJcbiAgICAgIDpjbG9zZT1cIm9uQ2xvc2VcIlxuICAgIC8+XG5cbiAgICA8VGVsZXBvcnRcbiAgICAgIHYtaWY9XCIhZGlzYWJsZWRcIlxuICAgICAgdG89XCJib2R5XCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIHYtaWY9XCJwb3BwZXJFbnRlclwiXG4gICAgICAgIHJlZj1cInRvb2x0aXBcIlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJHN0eWxlLnRvb2x0aXAsXG4gICAgICAgICAgdG9vbHRpcENsYXNzLFxuICAgICAgICAgICRzdHlsZVtgdG9vbHRpcF9fJHtwb3BwZXI/LnN0cmF0ZWd5ID8/ICdhYnNvbHV0ZSd9YF0sXG4gICAgICAgIF1cIlxuICAgICAgICByb2xlPVwidG9vbHRpcFwiXG4gICAgICA+XG4gICAgICAgIDxUcmFuc2l0aW9uR3JvdXBcbiAgICAgICAgICBlbnRlci1hY3RpdmUtY2xhc3M9XCJ0cmFuc2l0aW9uIGVhc2Utb3V0IGR1cmF0aW9uLTIwMFwiXG4gICAgICAgICAgZW50ZXItZnJvbS1jbGFzcz1cIm9wYWNpdHktMCB0cmFuc2xhdGUteS0xXCJcbiAgICAgICAgICBlbnRlci10by1jbGFzcz1cIm9wYWNpdHktMTAwIHRyYW5zbGF0ZS15LTBcIlxuICAgICAgICAgIGxlYXZlLWFjdGl2ZS1jbGFzcz1cInRyYW5zaXRpb24gZWFzZS1pbiBkdXJhdGlvbi0xNTBcIlxuICAgICAgICAgIGxlYXZlLWZyb20tY2xhc3M9XCJvcGFjaXR5LTEwMCB0cmFuc2xhdGUteS0wXCJcbiAgICAgICAgICBsZWF2ZS10by1jbGFzcz1cIm9wYWNpdHktMCB0cmFuc2xhdGUteS0xXCJcbiAgICAgICAgICBAYmVmb3JlLWVudGVyPVwidXBkYXRlUG9wcGVyKClcIlxuICAgICAgICAgIEBhZnRlci1sZWF2ZT1cIm9uUG9wcGVyTGVhdmUoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICB2LWlmPVwib3BlblwiXG4gICAgICAgICAgICBrZXk9XCJ0b29sdGlwXCJcbiAgICAgICAgICAgIDpjbGFzcz1cIiRzdHlsZS5iYXNlXCJcbiAgICAgICAgICAgIHJvbGU9XCJ0b29sdGlwLWNvbnRlbnRcIlxuICAgICAgICAgICAgQG1vdXNlb3Zlcj1cInBlcnNpc3RPblRvb2x0aXBIb3ZlciAmJiBvbk9wZW4oKVwiXG4gICAgICAgICAgICBAbW91c2VsZWF2ZT1cInBlcnNpc3RPblRvb2x0aXBIb3ZlciAmJiBvbkNsb3NlKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzbG90PlxuICAgICAgICAgICAgICB7eyB0ZXh0IH19XG4gICAgICAgICAgICA8L3Nsb3Q+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIHYtaWY9XCIhaGlkZUFycm93XCJcbiAgICAgICAgICAgIDpjbGFzcz1cIlskc3R5bGUuYXJyb3csIHsgWyRzdHlsZS5hcnJvd19fb3BlbiA/PyAnJ106IG9wZW4gfV1cIlxuICAgICAgICAgICAgZGF0YS1wb3BwZXItYXJyb3dcbiAgICAgICAgICAvPlxuICAgICAgICA8L1RyYW5zaXRpb25Hcm91cD5cbiAgICAgIDwvZGl2PlxuICAgIDwvVGVsZXBvcnQ+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgbW9kdWxlPlxuJGFycm93U2l6ZTogMC42MjVyZW07XG4ud3JhcHBlciB7XG4gIEBhcHBseSByZWxhdGl2ZSBpbmxpbmUtZmxleDtcbn1cblxuLnRvb2x0aXAge1xuICBAYXBwbHkgdy1tYXggdHJhbnNmb3JtIHRyYW5zaXRpb24tb3BhY2l0eSBkZWxheS0wIHotWzk5OTldO1xuXG4gICZfX2ZpeGVkIHtcbiAgICBAYXBwbHkgZml4ZWQ7XG4gIH1cblxuICAmX19hYnNvbHV0ZSB7XG4gICAgQGFwcGx5IGFic29sdXRlO1xuICB9XG5cbiAgLmJhc2Uge1xuICAgIEBhcHBseSBweC0yIHB5LTEgdGV4dC14cyBmb250LW5vcm1hbDtcbiAgICBAYXBwbHkgYmctcnVpLWdyZXktNzAwLzkwIHRleHQtd2hpdGUgcm91bmRlZCBzaGFkb3c7XG4gIH1cblxuICAuYXJyb3cge1xuICAgIEBhcHBseSB3LTIuNSBoLTIuNSB0cmFuc2l0aW9uLW9wYWNpdHkgb3BhY2l0eS0wO1xuXG4gICAgJl9fb3BlbiB7XG4gICAgICBAYXBwbHkgb3BhY2l0eS0xMDA7XG4gICAgfVxuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIEBhcHBseSBibG9jayBib3JkZXItWzAuMzEyNXJlbV0gb3JpZ2luLWNlbnRlcjtcbiAgICAgIEBhcHBseSBib3JkZXItbC10cmFuc3BhcmVudCBib3JkZXItYi10cmFuc3BhcmVudCBib3JkZXItdC1ydWktZ3JleS03MDAvOTAgYm9yZGVyLXItcnVpLWdyZXktNzAwLzkwO1xuXG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIGJvcmRlci1yYWRpdXM6IDAgMC4xMjVyZW0gMCAwO1xuICAgIH1cbiAgfVxuXG4gICZbZGF0YS1wb3BwZXItcGxhY2VtZW50Kj0nYm90dG9tJ10gLmFycm93IHtcbiAgICB0b3A6IGNhbGMoMC41cHggLSAjeyRhcnJvd1NpemV9IC8gMik7XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgQGFwcGx5IC1yb3RhdGUtNDU7XG4gICAgfVxuICB9XG5cbiAgJltkYXRhLXBvcHBlci1wbGFjZW1lbnQqPSd0b3AnXSAuYXJyb3cge1xuICAgIGJvdHRvbTogY2FsYygwLjVweCAtICN7JGFycm93U2l6ZX0gLyAyKTtcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICBAYXBwbHkgcm90YXRlLVsxMzVkZWddO1xuICAgIH1cbiAgfVxuXG4gICZbZGF0YS1wb3BwZXItcGxhY2VtZW50Kj0nbGVmdCddIC5hcnJvdyB7XG4gICAgcmlnaHQ6IGNhbGMoMC41cHggLSAjeyRhcnJvd1NpemV9IC8gMik7XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgQGFwcGx5IHJvdGF0ZS00NTtcbiAgICB9XG4gIH1cblxuICAmW2RhdGEtcG9wcGVyLXBsYWNlbWVudCo9J3JpZ2h0J10gLmFycm93IHtcbiAgICBsZWZ0OiBjYWxjKDAuNXB4IC0gI3skYXJyb3dTaXplfSAvIDIpO1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIEBhcHBseSAtcm90YXRlLVsxMzVkZWddO1xuICAgIH1cbiAgfVxufVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgc2V0dXAgbGFuZz0ndHMnPlxuaW1wb3J0IFJ1aVRvb2x0aXAgZnJvbSAnQC9jb21wb25lbnRzL292ZXJsYXlzL3Rvb2x0aXAvUnVpVG9vbHRpcC52dWUnO1xuXG5kZWZpbmVPcHRpb25zKHtcbiAgbmFtZTogJ1J1aUNvbG9yRGlzcGxheScsXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG59KTtcblxuY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wczx7XG4gIGNvbG9yOiBzdHJpbmc7XG59PigpO1xuXG5jb25zdCB7IGNvbG9yIH0gPSB0b1JlZnMocHJvcHMpO1xuXG5jb25zdCB7IGNvcHksIGNvcGllZCB9ID0gdXNlQ2xpcGJvYXJkKHsgc291cmNlOiBjb2xvciB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxSdWlUb29sdGlwXG4gICAgOnBvcHBlcj1cInsgcGxhY2VtZW50OiAndG9wJyB9XCJcbiAgICA6Y2xvc2UtZGVsYXk9XCI0MDBcIlxuICAgIHRvb2x0aXAtY2xhc3M9XCJ0ZXh0LWNlbnRlclwiXG4gICAgdi1iaW5kPVwiJGF0dHJzXCJcbiAgPlxuICAgIDx0ZW1wbGF0ZSAjYWN0aXZhdG9yPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInctOCBoLTggbWluLXctOCBtaW4taC04IHJvdW5kZWQtZnVsbCBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgIGRhdGEtY3k9XCJjb2xvci1kaXNwbGF5XCJcbiAgICAgICAgOnN0eWxlPVwieyBiYWNrZ3JvdW5kOiBjb2xvciB9XCJcbiAgICAgICAgQGNsaWNrPVwiY29weSgpXCJcbiAgICAgIC8+XG4gICAgPC90ZW1wbGF0ZT5cbiAgICA8ZGl2IDpjbGFzcz1cInsgJ2gtMCBvdmVyZmxvdy1oaWRkZW4nOiBjb3BpZWQgfVwiPlxuICAgICAgQ2xpY2sgdG8gY29weVxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIHYtaWY9XCJjb3BpZWRcIlxuICAgICAgY2xhc3M9XCJ0ZXh0LXJ1aS1zdWNjZXNzXCJcbiAgICA+XG4gICAgICBDT1BJRUQhXG4gICAgPC9kaXY+XG4gIDwvUnVpVG9vbHRpcD5cbjwvdGVtcGxhdGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuaW1wb3J0IHsgY2xhbXAgfSBmcm9tICdAdnVldXNlL3NoYXJlZCc7XG5pbXBvcnQgeyByb3VuZFR3b0RlY2ltYWwsIHVzZUVsZW1lbnREcmFnIH0gZnJvbSAnLi91dGlscyc7XG5cbmRlZmluZU9wdGlvbnMoe1xuICBuYW1lOiAnUnVpQ29sb3JIdWUnLFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxufSk7XG5cbmNvbnN0IG1vZGVsVmFsdWUgPSBkZWZpbmVNb2RlbDxudW1iZXI+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbmNvbnN0IGJhckVsZW1lbnQgPSByZWY8SFRNTEVsZW1lbnQ+KCk7XG5cbmNvbnN0IGN1cnNvcldpZHRoID0gMTY7XG5cbmZ1bmN0aW9uIGdldExpbWl0KHdpZHRoOiBudW1iZXIpIHtcbiAgY29uc3QgbG93ZXJMaW1pdCA9IGN1cnNvcldpZHRoIC8gMjtcbiAgY29uc3QgdXBwZXJMaW1pdCA9IHdpZHRoIC0gbG93ZXJMaW1pdDtcbiAgY29uc3QgYXZhaWxhYmxlV2lkdGggPSB1cHBlckxpbWl0IC0gbG93ZXJMaW1pdDtcblxuICByZXR1cm4geyBsb3dlckxpbWl0LCB1cHBlckxpbWl0LCBhdmFpbGFibGVXaWR0aCB9O1xufVxuXG5jb25zdCBjdXJzb3JMZWZ0ID0gcmVmPHN0cmluZz4oJycpO1xuXG5mdW5jdGlvbiB1cGRhdGVQb3NpdGlvbigpIHtcbiAgc2V0KGN1cnNvckxlZnQsIGdldEN1cnNvckxlZnQoKS50b1N0cmluZygpKTtcbn1cblxuY29uc3QgY3Vyc29yU3R5bGUgPSBjb21wdXRlZCgoKSA9PiAoe1xuICBsZWZ0OiBnZXQoY3Vyc29yTGVmdCksXG59KSk7XG5cbmNvbnN0IGluc3RhbmNlID0gZ2V0Q3VycmVudEluc3RhbmNlKCk7XG5cbmZ1bmN0aW9uIGdldEN1cnNvckxlZnQoKSB7XG4gIGlmICghaW5zdGFuY2UpXG4gICAgcmV0dXJuIDA7XG5cbiAgY29uc3QgZWwgPSBpbnN0YW5jZS52bm9kZS5lbDtcbiAgY29uc3QgcmVjdCA9IGVsPy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICBpZiAoIXJlY3QpXG4gICAgcmV0dXJuIDA7XG5cbiAgY29uc3QgYWN0dWFsV2lkdGggPSByZWN0LndpZHRoO1xuICBjb25zdCB7IGxvd2VyTGltaXQsIGF2YWlsYWJsZVdpZHRoIH0gPSBnZXRMaW1pdChhY3R1YWxXaWR0aCk7XG5cbiAgY29uc3QgaHVlVmFsID0gZ2V0KG1vZGVsVmFsdWUpO1xuICBjb25zdCB1c2VkSHVlID0gaHVlVmFsID09PSAzNjAgPyAzNjAgOiBodWVWYWwgJSAzNjA7XG5cbiAgY29uc3QgcGVyY2VudGFnZSA9IHJvdW5kVHdvRGVjaW1hbCgodXNlZEh1ZSAvIDM2MCkgKiAoYXZhaWxhYmxlV2lkdGggLyBhY3R1YWxXaWR0aCkgKiAxMDApO1xuICByZXR1cm4gYGNhbGMoJHtwZXJjZW50YWdlfSUgKyAke2xvd2VyTGltaXR9cHgpYDtcbn1cblxuZnVuY3Rpb24gZW1pdEh1ZSh4OiBudW1iZXIpIHtcbiAgaWYgKCFpbnN0YW5jZSlcbiAgICByZXR1cm47XG5cbiAgY29uc3QgZWwgPSBpbnN0YW5jZS52bm9kZS5lbDtcbiAgY29uc3QgcmVjdCA9IGVsPy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICBpZiAoIXJlY3QpXG4gICAgcmV0dXJuO1xuXG4gIGxldCBjYWxjdWxhdGVkWCA9IHggLSByZWN0LmxlZnQ7XG5cbiAgY29uc3QgeyBsb3dlckxpbWl0LCB1cHBlckxpbWl0LCBhdmFpbGFibGVXaWR0aCB9ID0gZ2V0TGltaXQocmVjdC53aWR0aCk7XG4gIGNhbGN1bGF0ZWRYID0gY2xhbXAoY2FsY3VsYXRlZFgsIGxvd2VyTGltaXQsIHVwcGVyTGltaXQpO1xuXG4gIHNldChtb2RlbFZhbHVlLCBNYXRoLnJvdW5kKCgoY2FsY3VsYXRlZFggLSBsb3dlckxpbWl0KSAvIGF2YWlsYWJsZVdpZHRoKSAqIDM2MCkpO1xufVxuXG5jb25zdCB7XG4gIGhhbmRsZUNsaWNrLFxuICBvbk1vdXNlRG93bixcbn0gPSB1c2VFbGVtZW50RHJhZyhlbWl0SHVlKTtcblxub25Nb3VudGVkKCgpID0+IHtcbiAgdXBkYXRlUG9zaXRpb24oKTtcbn0pO1xuXG53YXRjaChtb2RlbFZhbHVlLCAoKSA9PiB7XG4gIHVwZGF0ZVBvc2l0aW9uKCk7XG59KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICByZWY9XCJiYXJFbGVtZW50XCJcbiAgICA6Y2xhc3M9XCIkc3R5bGUuYmFyXCJcbiAgICBjbGFzcz1cInJ1aS1jb2xvci1odWVcIlxuICAgIHYtYmluZD1cIiRhdHRyc1wiXG4gICAgQGNsaWNrPVwiaGFuZGxlQ2xpY2soJGV2ZW50KVwiXG4gICAgQG1vdXNlZG93bj1cIm9uTW91c2VEb3duKCRldmVudClcIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiJHN0eWxlLmN1cnNvclwiXG4gICAgICA6c3R5bGU9XCJjdXJzb3JTdHlsZVwiXG4gICAgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIiBtb2R1bGU+XG4uYmFyIHtcbiAgQGFwcGx5IHJlbGF0aXZlIHctZnVsbCBoLTMuNSByb3VuZGVkLWZ1bGwgY3Vyc29yLXBvaW50ZXI7XG5cbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KFxuICAgIHRvIHJpZ2h0LFxuICAgIHJnYigyNTUsIDAsIDApIDAlLFxuICAgIHJnYigyNTUsIDI1NSwgMCkgMTYuNjYlLFxuICAgIHJnYigwLCAyNTUsIDApIDMzLjMzJSxcbiAgICByZ2IoMCwgMjU1LCAyNTUpIDUwJSxcbiAgICByZ2IoMCwgMCwgMjU1KSA2Ni42NiUsXG4gICAgcmdiKDI1NSwgMCwgMjU1KSA4My4zMyUsXG4gICAgcmdiKDI1NSwgMCwgMCkgMTAwJVxuICApO1xufVxuXG4uY3Vyc29yIHtcbiAgQGFwcGx5IGFic29sdXRlIHctNCBoLTQgdHJhbnNmb3JtIHRvcC0xLzIgLXRyYW5zbGF0ZS14LTEvMiAtdHJhbnNsYXRlLXktMS8yIHNoYWRvdy0yIGJnLXdoaXRlIHJvdW5kZWQtZnVsbDtcbn1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuaW1wb3J0IHR5cGUgeyBDb250ZXh0Q29sb3JzVHlwZSB9IGZyb20gJ0AvY29uc3RzL2NvbG9ycyc7XG5pbXBvcnQgdHlwZSB7IFJ1aUljb25zIH0gZnJvbSAnQC9pY29ucyc7XG5pbXBvcnQgeyBsb2dpY0FuZCwgbG9naWNOb3QgfSBmcm9tICdAdnVldXNlL21hdGgnO1xuaW1wb3J0IFJ1aUJ1dHRvbiBmcm9tICdAL2NvbXBvbmVudHMvYnV0dG9ucy9idXR0b24vUnVpQnV0dG9uLnZ1ZSc7XG5pbXBvcnQgUnVpRm9ybVRleHREZXRhaWwgZnJvbSAnQC9jb21wb25lbnRzL2hlbHBlcnMvUnVpRm9ybVRleHREZXRhaWwudnVlJztcbmltcG9ydCBSdWlJY29uIGZyb20gJ0AvY29tcG9uZW50cy9pY29ucy9SdWlJY29uLnZ1ZSc7XG5pbXBvcnQgeyBhc3NlcnQgfSBmcm9tICdAL3V0aWxzL2Fzc2VydCc7XG5pbXBvcnQgeyBnZXROb25Sb290QXR0cnMsIGdldFJvb3RBdHRycyB9IGZyb20gJ0AvdXRpbHMvaGVscGVycyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGV4dEZpZWxkUHJvcHMge1xuICBsYWJlbD86IHN0cmluZztcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgdmFyaWFudD86ICdkZWZhdWx0JyB8ICdmaWxsZWQnIHwgJ291dGxpbmVkJztcbiAgY29sb3I/OiBDb250ZXh0Q29sb3JzVHlwZTtcbiAgdGV4dENvbG9yPzogQ29udGV4dENvbG9yc1R5cGU7XG4gIGRlbnNlPzogYm9vbGVhbjtcbiAgaGludD86IHN0cmluZztcbiAgZXJyb3JNZXNzYWdlcz86IHN0cmluZyB8IHN0cmluZ1tdO1xuICBzdWNjZXNzTWVzc2FnZXM/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgaGlkZURldGFpbHM/OiBib29sZWFuO1xuICBwcmVwZW5kSWNvbj86IFJ1aUljb25zO1xuICBhcHBlbmRJY29uPzogUnVpSWNvbnM7XG4gIHJlYWRvbmx5PzogYm9vbGVhbjtcbiAgY2xlYXJhYmxlPzogYm9vbGVhbjtcbn1cblxuZGVmaW5lT3B0aW9ucyh7XG4gIG5hbWU6ICdSdWlUZXh0RmllbGQnLFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxufSk7XG5cbmNvbnN0IG1vZGVsVmFsdWUgPSBkZWZpbmVNb2RlbDxzdHJpbmc+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbmNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFRleHRGaWVsZFByb3BzPigpLCB7XG4gIGxhYmVsOiAnJyxcbiAgcGxhY2Vob2xkZXI6ICcnLFxuICBkaXNhYmxlZDogZmFsc2UsXG4gIHZhcmlhbnQ6ICdkZWZhdWx0JyxcbiAgY29sb3I6IHVuZGVmaW5lZCxcbiAgdGV4dENvbG9yOiB1bmRlZmluZWQsXG4gIGRlbnNlOiBmYWxzZSxcbiAgaGludDogJycsXG4gIGFzOiAnaW5wdXQnLFxuICBlcnJvck1lc3NhZ2VzOiAoKSA9PiBbXSxcbiAgc3VjY2Vzc01lc3NhZ2VzOiAoKSA9PiBbXSxcbiAgaGlkZURldGFpbHM6IGZhbHNlLFxuICBwcmVwZW5kSWNvbjogdW5kZWZpbmVkLFxuICBhcHBlbmRJY29uOiB1bmRlZmluZWQsXG4gIHJlYWRvbmx5OiBmYWxzZSxcbiAgY2xlYXJhYmxlOiBmYWxzZSxcbn0pO1xuXG5jb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8e1xuICAoZTogJ2ZvY3VzLWlucHV0JywgZXZlbnQ6IEV2ZW50KTogdm9pZDtcbiAgKGU6ICdibHVyJywgZXZlbnQ6IEV2ZW50KTogdm9pZDtcbiAgKGU6ICdyZW1vdmUnLCB2YWx1ZTogdW5rbm93bik6IHZvaWQ7XG4gIChlOiAnY2xlYXInKTogdm9pZDtcbn0+KCk7XG5cbmNvbnN0IHtcbiAgbGFiZWwsXG4gIGNsZWFyYWJsZSxcbiAgZGlzYWJsZWQsXG4gIHJlYWRvbmx5LFxuICBlcnJvck1lc3NhZ2VzLFxuICBzdWNjZXNzTWVzc2FnZXMsXG59ID0gdG9SZWZzKHByb3BzKTtcblxuZnVuY3Rpb24gaW5wdXQoZXZlbnQ6IEV2ZW50KSB7XG4gIGNvbnN0IHZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcbiAgc2V0KG1vZGVsVmFsdWUsIHZhbHVlKTtcbn1cblxuY29uc3QgbGFiZWxXaXRoUXVvdGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gIGNvbnN0IGxhYmVsVmFsID0gZ2V0KGxhYmVsKTtcbiAgaWYgKCFsYWJlbFZhbClcbiAgICByZXR1cm4gJ1wiXFxcXDIwMEJcIic7XG5cbiAgcmV0dXJuIGAnICAke2xhYmVsVmFsfSAgJ2A7XG59KTtcblxuY29uc3QgcHJlcGVuZCA9IHJlZjxIVE1MRGl2RWxlbWVudD4oKTtcbmNvbnN0IGFwcGVuZCA9IHJlZjxIVE1MRGl2RWxlbWVudD4oKTtcbmNvbnN0IGlubmVyV3JhcHBlciA9IHJlZjxIVE1MRGl2RWxlbWVudD4oKTtcbmNvbnN0IGlucHV0UmVmID0gcmVmPEhUTUxJbnB1dEVsZW1lbnQ+KCk7XG5cbmNvbnN0IHByZXBlbmRXaWR0aCA9IHJlZignMHB4Jyk7XG5jb25zdCBhcHBlbmRXaWR0aCA9IHJlZignMHB4Jyk7XG5cbmNvbnN0IHsgd2lkdGggfSA9IHVzZUVsZW1lbnRCb3VuZGluZyhpbm5lcldyYXBwZXIpO1xuXG51c2VSZXNpemVPYnNlcnZlcihwcmVwZW5kLCAoZW50cmllcykgPT4ge1xuICBjb25zdCBbZW50cnldID0gZW50cmllcztcbiAgYXNzZXJ0KGVudHJ5KTtcbiAgY29uc3QgeyB3aWR0aCwgbGVmdCB9ID0gZW50cnkuY29udGVudFJlY3Q7XG4gIHNldChwcmVwZW5kV2lkdGgsIGAke3dpZHRoICsgbGVmdH1weGApO1xufSk7XG5cbnVzZVJlc2l6ZU9ic2VydmVyKGFwcGVuZCwgKGVudHJpZXMpID0+IHtcbiAgY29uc3QgW2VudHJ5XSA9IGVudHJpZXM7XG4gIGFzc2VydChlbnRyeSk7XG4gIGNvbnN0IHsgd2lkdGgsIHJpZ2h0IH0gPSBlbnRyeS5jb250ZW50UmVjdDtcbiAgc2V0KGFwcGVuZFdpZHRoLCBgJHt3aWR0aCArIHJpZ2h0fXB4YCk7XG59KTtcblxuY29uc3QgeyBoYXNFcnJvciwgaGFzU3VjY2VzcywgaGFzTWVzc2FnZXMgfSA9IHVzZUZvcm1UZXh0RGV0YWlsKFxuICBlcnJvck1lc3NhZ2VzLFxuICBzdWNjZXNzTWVzc2FnZXMsXG4pO1xuXG5jb25zdCB7IGZvY3VzZWQgfSA9IHVzZUZvY3VzKGlucHV0UmVmKTtcbmNvbnN0IGZvY3VzZWREZWJvdW5jZWQgPSByZWZEZWJvdW5jZWQoZm9jdXNlZCwgNTAwKTtcblxuY29uc3Qgc2hvd0NsZWFySWNvbiA9IGxvZ2ljQW5kKFxuICBjbGVhcmFibGUsXG4gIG1vZGVsVmFsdWUsXG4gIGxvZ2ljTm90KGRpc2FibGVkKSxcbiAgbG9naWNOb3QocmVhZG9ubHkpLFxuKTtcblxuZnVuY3Rpb24gY2xlYXJJY29uQ2xpY2tlZCgpIHtcbiAgc2V0KG1vZGVsVmFsdWUsICcnKTtcbiAgZW1pdCgnY2xlYXInKTtcbn1cblxuZGVmaW5lRXhwb3NlKHtcbiAgc2V0U2VsZWN0aW9uUmFuZ2U6IChzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcikgPT4ge1xuICAgIGdldChpbnB1dFJlZik/LnNldFNlbGVjdGlvblJhbmdlKHN0YXJ0LCBlbmQpO1xuICB9LFxuICBmb2N1czogKCkgPT4gZ2V0KGlucHV0UmVmKT8uZm9jdXMoKSxcbiAgZWxlbWVudDogaW5wdXRSZWYsXG59KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgdi1iaW5kPVwiZ2V0Um9vdEF0dHJzKCRhdHRycylcIj5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICRzdHlsZS53cmFwcGVyLFxuICAgICAgICAkc3R5bGVbY29sb3IgPz8gJyddLFxuICAgICAgICAkc3R5bGVbdmFyaWFudCA/PyAnJ10sXG4gICAgICAgIHtcbiAgICAgICAgICBbJHN0eWxlLmRlbnNlXTogZGVuc2UsXG4gICAgICAgICAgWyRzdHlsZS5kaXNhYmxlZF06IGRpc2FibGVkLFxuICAgICAgICAgIFskc3R5bGVbJ25vLWxhYmVsJ11dOiAhbGFiZWwsXG4gICAgICAgICAgWyRzdHlsZVsnd2l0aC1lcnJvciddID8/ICcnXTogaGFzRXJyb3IsXG4gICAgICAgICAgWyRzdHlsZVsnd2l0aC1zdWNjZXNzJ10gPz8gJyddOiBoYXNTdWNjZXNzICYmICFoYXNFcnJvcixcbiAgICAgICAgICBbJHN0eWxlW2B0ZXh0XyR7dGV4dENvbG9yfWBdID8/ICcnXTogdGV4dENvbG9yICYmICFoYXNNZXNzYWdlcyxcbiAgICAgICAgfSxcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgdi1pZj1cIiRzbG90cy5wcmVwZW5kIHx8IHByZXBlbmRJY29uXCJcbiAgICAgICAgcmVmPVwicHJlcGVuZFwiXG4gICAgICAgIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEgc2hyaW5rLTBcIlxuICAgICAgICA6Y2xhc3M9XCIkc3R5bGUucHJlcGVuZFwiXG4gICAgICA+XG4gICAgICAgIDxzbG90XG4gICAgICAgICAgdi1pZj1cIiRzbG90cy5wcmVwZW5kXCJcbiAgICAgICAgICBuYW1lPVwicHJlcGVuZFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICB2LWVsc2UtaWY9XCJwcmVwZW5kSWNvblwiXG4gICAgICAgICAgOmNsYXNzPVwiWyRzdHlsZS5pY29uXVwiXG4gICAgICAgID5cbiAgICAgICAgICA8UnVpSWNvbiA6bmFtZT1cInByZXBlbmRJY29uXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgcmVmPVwiaW5uZXJXcmFwcGVyXCJcbiAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtMSBvdmVyZmxvdy1oaWRkZW5cIlxuICAgICAgICBAY2xpY2s9XCJlbWl0KCdmb2N1cy1pbnB1dCcsICRldmVudClcIlxuICAgICAgPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICByZWY9XCJpbnB1dFJlZlwiXG4gICAgICAgICAgOnZhbHVlPVwibW9kZWxWYWx1ZVwiXG4gICAgICAgICAgOnBsYWNlaG9sZGVyPVwicGxhY2Vob2xkZXIgfHwgJyAnXCJcbiAgICAgICAgICA6Y2xhc3M9XCIkc3R5bGUuaW5wdXRcIlxuICAgICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgICAgICA6ZGVuc2U9XCJkZW5zZVwiXG4gICAgICAgICAgOnZhcmlhbnQ9XCJ2YXJpYW50XCJcbiAgICAgICAgICA6cmVhZG9ubHk9XCJyZWFkb25seVwiXG4gICAgICAgICAgOndyYXBwZXItd2lkdGg9XCJ3aWR0aFwiXG4gICAgICAgICAgdi1iaW5kPVwiZ2V0Tm9uUm9vdEF0dHJzKCRhdHRycylcIlxuICAgICAgICAgIEBpbnB1dD1cImlucHV0KCRldmVudClcIlxuICAgICAgICAgIEBibHVyPVwiZW1pdCgnYmx1cicsICRldmVudClcIlxuICAgICAgICAgIEByZW1vdmU9XCJlbWl0KCdyZW1vdmUnLCAkZXZlbnQpXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGxhYmVsIDpjbGFzcz1cIiRzdHlsZS5sYWJlbFwiPlxuICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAge3sgbGFiZWwgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxmaWVsZHNldFxuICAgICAgICAgIHYtaWY9XCJ2YXJpYW50ID09PSAnb3V0bGluZWQnXCJcbiAgICAgICAgICA6Y2xhc3M9XCIkc3R5bGUuZmllbGRzZXRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGxlZ2VuZCA6Y2xhc3M9XCJ7IFskc3R5bGUuc2hvd106IGxhYmVsIH1cIiAvPlxuICAgICAgICA8L2ZpZWxkc2V0PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIHYtaWY9XCIkc2xvdHMuYXBwZW5kIHx8IGFwcGVuZEljb24gfHwgc2hvd0NsZWFySWNvblwiXG4gICAgICAgIHJlZj1cImFwcGVuZFwiXG4gICAgICAgIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEgc2hyaW5rLTBcIlxuICAgICAgICA6Y2xhc3M9XCIkc3R5bGUuYXBwZW5kXCJcbiAgICAgID5cbiAgICAgICAgPFJ1aUJ1dHRvblxuICAgICAgICAgIHYtaWY9XCJzaG93Q2xlYXJJY29uXCJcbiAgICAgICAgICA6Y2xhc3M9XCJ7IGhpZGRlbjogIWZvY3VzZWREZWJvdW5jZWQgfVwiXG4gICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGljb25cbiAgICAgICAgICBjbGFzcz1cIiFwLTIgY2xlYXItYnRuXCJcbiAgICAgICAgICBjb2xvcj1cImVycm9yXCJcbiAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICBAY2xpY2suc3RvcD1cImNsZWFySWNvbkNsaWNrZWQoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8UnVpSWNvblxuICAgICAgICAgICAgbmFtZT1cImx1LXhcIlxuICAgICAgICAgICAgc2l6ZT1cIjIwXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L1J1aUJ1dHRvbj5cbiAgICAgICAgPHNsb3RcbiAgICAgICAgICB2LWlmPVwiJHNsb3RzLmFwcGVuZFwiXG4gICAgICAgICAgbmFtZT1cImFwcGVuZFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICB2LWVsc2UtaWY9XCJhcHBlbmRJY29uXCJcbiAgICAgICAgICA6Y2xhc3M9XCJbJHN0eWxlLmljb25dXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxSdWlJY29uIDpuYW1lPVwiYXBwZW5kSWNvblwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPFJ1aUZvcm1UZXh0RGV0YWlsXG4gICAgICB2LWlmPVwiIWhpZGVEZXRhaWxzXCJcbiAgICAgIGNsYXNzPVwicHQtMSBweC0zXCJcbiAgICAgIDplcnJvci1tZXNzYWdlcz1cImVycm9yTWVzc2FnZXNcIlxuICAgICAgOnN1Y2Nlc3MtbWVzc2FnZXM9XCJzdWNjZXNzTWVzc2FnZXNcIlxuICAgICAgOmhpbnQ9XCJoaW50XCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBsYW5nPVwic2Nzc1wiIG1vZHVsZT5cbkB1c2UgJ0Avc3R5bGVzL2NvbG9ycy5zY3NzJyBhcyBjO1xuXG46Z2xvYmFsKC5kYXJrKSB7XG4gIC53cmFwcGVyIHtcbiAgICBAYXBwbHkgYmctdHJhbnNwYXJlbnQ7XG5cbiAgICAubGFiZWwge1xuICAgICAgQGFwcGx5IGJvcmRlci13aGl0ZS9bMC40Ml07XG5cbiAgICAgICY6YWZ0ZXIge1xuICAgICAgICBAYXBwbHkgYm9yZGVyLXdoaXRlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5pY29uIHtcbiAgICAgIEBhcHBseSB0ZXh0LXdoaXRlL1swLjU2XTtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIC5sYWJlbCB7XG4gICAgICAgIEBhcHBseSBib3JkZXItd2hpdGU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5maWxsZWQge1xuICAgICAgLmlucHV0IHtcbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgKyAubGFiZWwge1xuICAgICAgICAgICAgQGFwcGx5IGJnLXdoaXRlL1swLjEzXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmxhYmVsIHtcbiAgICAgICAgQGFwcGx5IGJnLXdoaXRlL1swLjA5XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLm91dGxpbmVkIHtcbiAgICAgIC5maWVsZHNldCB7XG4gICAgICAgIEBhcHBseSBib3JkZXItd2hpdGUvWzAuMjNdO1xuICAgICAgfVxuXG4gICAgICAmOm5vdCguZGlzYWJsZWQpIHtcbiAgICAgICAgLmlucHV0IHtcbiAgICAgICAgICAmOmhvdmVyLFxuICAgICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgfiAuZmllbGRzZXQge1xuICAgICAgICAgICAgICBAYXBwbHkgYm9yZGVyLXdoaXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4ud3JhcHBlciB7XG4gIEBhcHBseSByZWxhdGl2ZSB3LWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIgcHQtMyByb3VuZGVkIGJnLXdoaXRlO1xuXG4gIC5pbnB1dCB7XG4gICAgQGFwcGx5IGxlYWRpbmctNiB0ZXh0LXJ1aS10ZXh0IHctZnVsbCBiZy10cmFuc3BhcmVudCBweS0xLjUgcHItMyBvdXRsaW5lLTAgb3V0bGluZS1ub25lIHRyYW5zaXRpb24tYWxsIHBsYWNlaG9sZGVyOm9wYWNpdHktMCBmb2N1czpwbGFjZWhvbGRlcjpvcGFjaXR5LTEwMDtcblxuICAgICY6Zm9jdXMge1xuICAgICAgQGFwcGx5IG91dGxpbmUtMDtcbiAgICAgICsgLmxhYmVsIHtcbiAgICAgICAgQGFwcGx5IGFmdGVyOnNjYWxlLXgtMTAwO1xuICAgICAgfVxuICAgIH1cblxuICAgICY6bm90KDpwbGFjZWhvbGRlci1zaG93biksXG4gICAgJjphdXRvZmlsbCxcbiAgICAmOi13ZWJraXQtYXV0b2ZpbGwsXG4gICAgJltkYXRhLWhhcy12YWx1ZT0ndHJ1ZSddLFxuICAgICY6Zm9jdXMge1xuICAgICAgKyAubGFiZWwge1xuICAgICAgICBAYXBwbHkgdGV4dC14cyBsZWFkaW5nLXRpZ2h0O1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IHZhcigtLXgtcGFkZGluZyk7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IHZhcigtLXgtcGFkZGluZyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJjpkaXNhYmxlZCB7XG4gICAgICBAYXBwbHkgYm9yZGVyLWRvdHRlZDtcblxuICAgICAgJixcbiAgICAgICsgLmxhYmVsIHtcbiAgICAgICAgQGFwcGx5IHRleHQtcnVpLXRleHQtZGlzYWJsZWQ7XG4gICAgICB9XG5cbiAgICAgIH4gLmZpZWxkc2V0IHtcbiAgICAgICAgQGFwcGx5IGJvcmRlci1kb3R0ZWQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmxhYmVsIHtcbiAgICBAYXBwbHkgbGVmdC0wIHRleHQtYmFzZSBsZWFkaW5nLVszLjc1XSB0ZXh0LXJ1aS10ZXh0LXNlY29uZGFyeSBwb2ludGVyLWV2ZW50cy1ub25lIGFic29sdXRlIHRvcC0wIGZsZXggaC1mdWxsIHctZnVsbCBzZWxlY3Qtbm9uZSB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi03NSBib3JkZXItYiBib3JkZXItYmxhY2svWzAuNDJdO1xuXG4gICAgLS14LXBhZGRpbmc6IDBweDtcbiAgICAtLXByZXBlbmQtd2lkdGg6IHYtYmluZChwcmVwZW5kV2lkdGgpO1xuICAgIC0tYXBwZW5kLXdpZHRoOiB2LWJpbmQoYXBwZW5kV2lkdGgpO1xuXG4gICAgcGFkZGluZy1sZWZ0OiBjYWxjKHZhcigtLXgtcGFkZGluZykgKyB2YXIoLS1wcmVwZW5kLXdpZHRoLCAwcHgpKTtcbiAgICBwYWRkaW5nLXJpZ2h0OiBjYWxjKHZhcigtLXgtcGFkZGluZykgKyB2YXIoLS1hcHBlbmQtd2lkdGgsIDBweCkpO1xuXG4gICAgc3BhbiB7XG4gICAgICBAYXBwbHkgdHJ1bmNhdGUgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tNzU7XG4gICAgICBjb250ZW50OiB2LWJpbmQobGFiZWxXaXRoUXVvdGUpO1xuICAgIH1cblxuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBAYXBwbHkgYWJzb2x1dGUgYm90dG9tLTAgbGVmdC0wIGJsb2NrIHctZnVsbCBzY2FsZS14LTAgYm9yZGVyLWItMiBtYi1bLTFweF0gdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMzAwIGJvcmRlci1ibGFjaztcbiAgICB9XG4gIH1cblxuICAmOmhvdmVyIHtcbiAgICAubGFiZWwge1xuICAgICAgQGFwcGx5IGJvcmRlci1ibGFjaztcbiAgICB9XG4gIH1cblxuICAuaWNvbiB7XG4gICAgQGFwcGx5IHRleHQtYmxhY2svWzAuNTRdO1xuICB9XG5cbiAgLnByZXBlbmQge1xuICAgICY6bm90KDplbXB0eSkge1xuICAgICAgQGFwcGx5IHByLTI7XG4gICAgfVxuICB9XG5cbiAgLmFwcGVuZCB7XG4gICAgJjpub3QoOmVtcHR5KSB7XG4gICAgICBAYXBwbHkgcGwtMjtcbiAgICB9XG4gIH1cblxuICBAZWFjaCAkY29sb3IgaW4gYy4kY29udGV4dC1jb2xvcnMge1xuICAgICYuI3skY29sb3J9IHtcbiAgICAgIC5pbnB1dCB7XG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICsgLmxhYmVsIHtcbiAgICAgICAgICAgIEBhcHBseSB0ZXh0LXJ1aS0jeyRjb2xvcn07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5sYWJlbCB7XG4gICAgICAgIEBhcHBseSBhZnRlcjpib3JkZXItcnVpLSN7JGNvbG9yfTtcbiAgICAgIH1cblxuICAgICAgJi5vdXRsaW5lZCB7XG4gICAgICAgICY6bm90KC5kaXNhYmxlZCkge1xuICAgICAgICAgIC5pbnB1dCB7XG4gICAgICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgICAgfiAuZmllbGRzZXQge1xuICAgICAgICAgICAgICAgIEBhcHBseSBib3JkZXItcnVpLSN7JGNvbG9yfTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICYudGV4dF8jeyRjb2xvcn0sXG4gICAgJi53aXRoLSN7JGNvbG9yfSB7XG4gICAgICAucHJlcGVuZCxcbiAgICAgIC5hcHBlbmQsXG4gICAgICAuaW5wdXQge1xuICAgICAgICBAYXBwbHkgdGV4dC1ydWktI3skY29sb3J9O1xuICAgICAgfVxuXG4gICAgICAmOm5vdCguZGlzYWJsZWQpIC5wcmVwZW5kIHN2ZyxcbiAgICAgICY6bm90KC5kaXNhYmxlZCkgLmFwcGVuZCBzdmcge1xuICAgICAgICBAYXBwbHkgdGV4dC1ydWktI3skY29sb3J9O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBlYWNoICRjb2xvciBpbiAnZXJyb3InLCAnc3VjY2Vzcycge1xuICAgICYud2l0aC0jeyRjb2xvcn0ge1xuICAgICAgLmlucHV0IHtcbiAgICAgICAgQGFwcGx5IGJvcmRlci1ydWktI3skY29sb3J9ICN7IWltcG9ydGFudH07XG4gICAgICB9XG5cbiAgICAgIC5sYWJlbCB7XG4gICAgICAgIEBhcHBseSB0ZXh0LXJ1aS0jeyRjb2xvcn0gYWZ0ZXI6Ym9yZGVyLXJ1aS0jeyRjb2xvcn0gI3shaW1wb3J0YW50fTtcbiAgICAgIH1cblxuICAgICAgLmZpZWxkc2V0IHtcbiAgICAgICAgQGFwcGx5IGJvcmRlci1ydWktI3skY29sb3J9ICN7IWltcG9ydGFudH07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJi5kZW5zZSB7XG4gICAgLmlucHV0IHtcbiAgICAgIEBhcHBseSBweS0xO1xuICAgIH1cblxuICAgIC5sYWJlbCB7XG4gICAgICBAYXBwbHkgbGVhZGluZy1bMy41XTtcbiAgICB9XG4gIH1cblxuICAmLmZpbGxlZCxcbiAgJi5vdXRsaW5lZCB7XG4gICAgQGFwcGx5IHB0LTA7XG5cbiAgICAucHJlcGVuZCB7XG4gICAgICAmOm5vdCg6ZW1wdHkpIHtcbiAgICAgICAgQGFwcGx5IHBsLTMgcHItMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAuYXBwZW5kIHtcbiAgICAgICY6bm90KDplbXB0eSkge1xuICAgICAgICBAYXBwbHkgcHItMyBwbC0wO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5pbnB1dCB7XG4gICAgICBAYXBwbHkgcHgtMztcbiAgICB9XG5cbiAgICAubGFiZWwge1xuICAgICAgQGFwcGx5IGxlYWRpbmctWzMuNV07XG4gICAgICAtLXgtcGFkZGluZzogMC43NXJlbTtcbiAgICB9XG4gIH1cblxuICAmLmZpbGxlZCB7XG4gICAgLmlucHV0IHtcbiAgICAgIEBhcHBseSBweS00O1xuXG4gICAgICAmOmZvY3VzIHtcbiAgICAgICAgKyAubGFiZWwge1xuICAgICAgICAgIEBhcHBseSBiZy1ibGFjay9bMC4wOV07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJjpub3QoOnBsYWNlaG9sZGVyLXNob3duKSxcbiAgICAgICY6YXV0b2ZpbGwsXG4gICAgICAmOi13ZWJraXQtYXV0b2ZpbGwsXG4gICAgICAmW2RhdGEtaGFzLXZhbHVlPSd0cnVlJ10sXG4gICAgICAmOmZvY3VzIHtcbiAgICAgICAgKyAubGFiZWwge1xuICAgICAgICAgIEBhcHBseSBsZWFkaW5nLVsxLjVdIHBsLTQ7XG5cbiAgICAgICAgICBwYWRkaW5nLWxlZnQ6IGNhbGModmFyKC0teC1wYWRkaW5nKSk7XG4gICAgICAgICAgcGFkZGluZy1yaWdodDogY2FsYyh2YXIoLS14LXBhZGRpbmcpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC5sYWJlbCB7XG4gICAgICBAYXBwbHkgcm91bmRlZC10IGJnLWJsYWNrL1swLjA2XTtcbiAgICB9XG5cbiAgICAmLmRlbnNlIHtcbiAgICAgIC5pbnB1dCB7XG4gICAgICAgIEBhcHBseSBwdC01IHBiLTE7XG4gICAgICB9XG5cbiAgICAgIC5sYWJlbCB7XG4gICAgICAgIEBhcHBseSBsZWFkaW5nLVszXTtcbiAgICAgIH1cblxuICAgICAgJjpub3QoOnBsYWNlaG9sZGVyLXNob3duKSxcbiAgICAgICY6YXV0b2ZpbGwsXG4gICAgICAmOi13ZWJraXQtYXV0b2ZpbGwsXG4gICAgICAmW2RhdGEtaGFzLXZhbHVlPSd0cnVlJ10sXG4gICAgICAmOmZvY3VzIHtcbiAgICAgICAgKyAubGFiZWwge1xuICAgICAgICAgIEBhcHBseSBsZWFkaW5nLVsyLjI1XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICYubm8tbGFiZWwge1xuICAgICAgLmlucHV0IHtcbiAgICAgICAgQGFwcGx5IHB5LTQ7XG4gICAgICB9XG5cbiAgICAgICYuZGVuc2Uge1xuICAgICAgICAuaW5wdXQge1xuICAgICAgICAgIEBhcHBseSBweS0zO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJi5vdXRsaW5lZCB7XG4gICAgLmlucHV0IHtcbiAgICAgIEBhcHBseSBweS00IGJvcmRlci1iLTA7XG5cbiAgICAgICY6bm90KDpwbGFjZWhvbGRlci1zaG93biksXG4gICAgICAmOmF1dG9maWxsLFxuICAgICAgJjotd2Via2l0LWF1dG9maWxsLFxuICAgICAgJltkYXRhLWhhcy12YWx1ZT0ndHJ1ZSddLFxuICAgICAgJjpmb2N1cyB7XG4gICAgICAgIEBhcHBseSBib3JkZXItdC10cmFuc3BhcmVudDtcblxuICAgICAgICArIC5sYWJlbCB7XG4gICAgICAgICAgQGFwcGx5IGxlYWRpbmctWzBdIHBsLTQgLW10LTM7XG5cbiAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgIEBhcHBseSBwdC0zO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIH4gLmZpZWxkc2V0IHtcbiAgICAgICAgICBsZWdlbmQge1xuICAgICAgICAgICAgJi5zaG93IHtcbiAgICAgICAgICAgICAgQGFwcGx5IHB4LTI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgY29udGVudDogdi1iaW5kKGxhYmVsV2l0aFF1b3RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAuZmllbGRzZXQge1xuICAgICAgQGFwcGx5IGFic29sdXRlIHctZnVsbCBtaW4tdy0wIGgtW2NhbGMoMTAwJSswLjVyZW0pXSB0b3AtMCBsZWZ0LTAgcG9pbnRlci1ldmVudHMtbm9uZSByb3VuZGVkIGJvcmRlciBib3JkZXItYmxhY2svWzAuMjNdIHB4LTIgdHJhbnNpdGlvbi1hbGwgLW10LTI7XG5cbiAgICAgIGxlZ2VuZCB7XG4gICAgICAgIEBhcHBseSBvcGFjaXR5LTAgdGV4dC14cyBtYXgtdy1mdWxsIHRydW5jYXRlO1xuXG4gICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICBjb250ZW50OiAnICc7XG4gICAgICAgIH1cblxuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICBAYXBwbHkgdHJ1bmNhdGUgbWF4LXctZnVsbCBsZWFkaW5nLVswXTtcbiAgICAgICAgICBjb250ZW50OiAnXFwyMDBCJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICY6bm90KC5kaXNhYmxlZCkge1xuICAgICAgLmlucHV0IHtcbiAgICAgICAgJjpob3ZlcixcbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgfiAuZmllbGRzZXQge1xuICAgICAgICAgICAgQGFwcGx5IGJvcmRlciBib3JkZXItYmxhY2s7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgfiAuZmllbGRzZXQge1xuICAgICAgICAgICAgQGFwcGx5IGJvcmRlci0yO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC5sYWJlbCB7XG4gICAgICBAYXBwbHkgYm9yZGVyLTAgYm9yZGVyLXRyYW5zcGFyZW50O1xuXG4gICAgICAmOmFmdGVyIHtcbiAgICAgICAgY29udGVudDogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgIH1cblxuICAgICYuZGVuc2Uge1xuICAgICAgLmlucHV0IHtcbiAgICAgICAgQGFwcGx5IHB5LTI7XG4gICAgICB9XG5cbiAgICAgIC5sYWJlbCB7XG4gICAgICAgIEBhcHBseSBsZWFkaW5nLVsyLjVdO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG5pbXBvcnQgdHlwZSB7IENvbG9yIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBjbGFtcCB9IGZyb20gJ0B2dWV1c2Uvc2hhcmVkJztcbmltcG9ydCB0aW55Y29sb3IgZnJvbSAndGlueWNvbG9yMic7XG5pbXBvcnQgUnVpQnV0dG9uIGZyb20gJ0AvY29tcG9uZW50cy9idXR0b25zL2J1dHRvbi9SdWlCdXR0b24udnVlJztcbmltcG9ydCBSdWlUZXh0RmllbGQgZnJvbSAnQC9jb21wb25lbnRzL2Zvcm1zL3RleHQtZmllbGQvUnVpVGV4dEZpZWxkLnZ1ZSc7XG5pbXBvcnQgUnVpSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvaWNvbnMvUnVpSWNvbi52dWUnO1xuXG5kZWZpbmVPcHRpb25zKHtcbiAgbmFtZTogJ1J1aUNvbG9ySW5wdXQnLFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxufSk7XG5cbmNvbnN0IG1vZGVsVmFsdWUgPSBkZWZpbmVNb2RlbDxDb2xvcj4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuY29uc3QgaW5wdXRUeXBlID0gcmVmPCdoZXgnIHwgJ3JnYic+KCdoZXgnKTtcbmNvbnN0IHN0YXRlID0gcmVhY3RpdmUoe1xuICBjb2xvcjogZ2V0KG1vZGVsVmFsdWUpLFxuICBoZXg6IGdldChtb2RlbFZhbHVlKS5oZXgsXG4gIHJnYjogZ2V0KG1vZGVsVmFsdWUpLnJnYixcbn0pO1xuXG5mdW5jdGlvbiBvbklucHV0VHlwZUNoYW5nZSgpIHtcbiAgc2V0KGlucHV0VHlwZSwgZ2V0KGlucHV0VHlwZSkgPT09ICdyZ2InID8gJ2hleCcgOiAncmdiJyk7XG59XG5cbmNvbnN0IG9uQmx1ckNoYW5nZSA9IHVzZURlYm91bmNlRm4oKGlucHV0VHlwZTogc3RyaW5nLCBldmVudDogYW55LCBrZXk/OiBudW1iZXIpID0+IHtcbiAgaWYgKCFzdGF0ZS5jb2xvcilcbiAgICByZXR1cm47XG5cbiAgY29uc3QgdmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XG4gIGlmIChpbnB1dFR5cGUgPT09ICdoZXgnKSB7XG4gICAgY29uc3QgX2hleCA9IHZhbHVlLnJlcGxhY2UoJyMnLCAnJyk7XG4gICAgaWYgKHRpbnljb2xvcihfaGV4KS5pc1ZhbGlkKCkgJiYgWzMsIDQsIDZdLmluY2x1ZGVzKF9oZXgubGVuZ3RoKSlcbiAgICAgIHN0YXRlLmNvbG9yLmhleCA9IF9oZXg7XG5cbiAgICBlbHNlXG4gICAgICBzdGF0ZS5jb2xvci5oZXggPSAnMDAwMDAwJztcbiAgfVxuICBlbHNlIGlmIChrZXkgIT09IHVuZGVmaW5lZCAmJiBzdGF0ZS5yZ2IgJiYgc3RhdGUuY29sb3IpIHtcbiAgICBsZXQgdmFsdWVJbk51bWJlciA9IE51bWJlcih2YWx1ZSk7XG4gICAgdmFsdWVJbk51bWJlciA9IGNsYW1wKHZhbHVlSW5OdW1iZXIsIDAsIDI1NSk7XG5cbiAgICBzdGF0ZS5yZ2Jba2V5XSA9IHZhbHVlSW5OdW1iZXI7XG4gICAgY29uc3QgW3IsIGcsIGJdID0gc3RhdGUucmdiO1xuICAgIHN0YXRlLmNvbG9yLmhleCA9IHRpbnljb2xvcih7IHIsIGcsIGIgfSkudG9IZXgoKTtcbiAgfVxufSwgMTAwKTtcblxuY29uc3Qgb25JbnB1dENoYW5nZSA9IHVzZURlYm91bmNlRm4oKGlucHV0VHlwZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBrZXk/OiBudW1iZXIpID0+IHtcbiAgaWYgKCF2YWx1ZSlcbiAgICByZXR1cm47XG5cbiAgaWYgKGlucHV0VHlwZSA9PT0gJ2hleCcpIHtcbiAgICBjb25zdCBfaGV4ID0gdmFsdWUucmVwbGFjZSgnIycsICcnKTtcbiAgICBpZiAodGlueWNvbG9yKF9oZXgpLmlzVmFsaWQoKSAmJiBzdGF0ZS5jb2xvciAmJiBfaGV4Lmxlbmd0aCA9PT0gNilcbiAgICAgIHN0YXRlLmNvbG9yLmhleCA9IF9oZXg7XG4gIH1cbiAgZWxzZSBpZiAoa2V5ICE9PSB1bmRlZmluZWQgJiYgc3RhdGUucmdiICYmIHN0YXRlLmNvbG9yKSB7XG4gICAgbGV0IHZhbHVlSW5OdW1iZXIgPSBOdW1iZXIodmFsdWUpO1xuICAgIHZhbHVlSW5OdW1iZXIgPSBjbGFtcCh2YWx1ZUluTnVtYmVyLCAwLCAyNTUpO1xuXG4gICAgc3RhdGUucmdiW2tleV0gPSB2YWx1ZUluTnVtYmVyO1xuICAgIGNvbnN0IFtyLCBnLCBiXSA9IHN0YXRlLnJnYjtcbiAgICBzdGF0ZS5jb2xvci5oZXggPSB0aW55Y29sb3IoeyByLCBnLCBiIH0pLnRvSGV4KCk7XG4gIH1cblxuICBzZXQobW9kZWxWYWx1ZSwgc3RhdGUuY29sb3IpO1xufSwgMzAwKTtcblxud2hlbmV2ZXIoXG4gIG1vZGVsVmFsdWUsXG4gICh2YWx1ZSkgPT4ge1xuICAgIHN0YXRlLmNvbG9yID0gdmFsdWU7XG4gICAgc3RhdGUuaGV4ID0gc3RhdGUuY29sb3IuaGV4O1xuICAgIHN0YXRlLnJnYiA9IHN0YXRlLmNvbG9yLnJnYjtcbiAgfSxcbiAgeyBkZWVwOiB0cnVlIH0sXG4pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIGNsYXNzPVwicnVpLWNvbG9yLWlucHV0IGZsZXgganVzdGlmeS1jZW50ZXIgZ2FwLTJcIlxuICAgIHYtYmluZD1cIiRhdHRyc1wiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIgZ2FwLTEgdy1bMTZyZW1dXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsXCI+XG4gICAgICAgIDxSdWlUZXh0RmllbGRcbiAgICAgICAgICB2LWlmPVwiaW5wdXRUeXBlID09PSAnaGV4J1wiXG4gICAgICAgICAgdi1tb2RlbD1cInN0YXRlLmhleFwiXG4gICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICBjbGFzcz1cImZsZXgtMSB3LWZ1bGwgWyZfaW5wdXRdOnVwcGVyY2FzZVwiXG4gICAgICAgICAgbWF4bGVuZ3RoPVwiNlwiXG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICBkZW5zZVxuICAgICAgICAgIGhpZGUtZGV0YWlsc1xuICAgICAgICAgIEB1cGRhdGU6bW9kZWwtdmFsdWU9XCJvbklucHV0Q2hhbmdlKGlucHV0VHlwZSwgJGV2ZW50KVwiXG4gICAgICAgICAgQGJsdXI9XCJvbkJsdXJDaGFuZ2UoaW5wdXRUeXBlLCAkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx0ZW1wbGF0ZSAjcHJlcGVuZD5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1ydWktdGV4dFwiPlxuICAgICAgICAgICAgICAjXG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgPC9SdWlUZXh0RmllbGQ+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICB2LWVsc2VcbiAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC0xIGdhcC0xXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxSdWlUZXh0RmllbGRcbiAgICAgICAgICAgIHYtZm9yPVwiKHYsIGkpIGluIHN0YXRlLnJnYlwiXG4gICAgICAgICAgICA6a2V5PVwiaVwiXG4gICAgICAgICAgICA6bW9kZWwtdmFsdWU9XCJ2LnRvU3RyaW5nKClcIlxuICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICAgIGNsYXNzPVwiWyZfaW5wdXRdOnRleHQtY2VudGVyIHctZnVsbFwiXG4gICAgICAgICAgICBtYXhsZW5ndGg9XCIzXCJcbiAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICBkZW5zZVxuICAgICAgICAgICAgaGlkZS1kZXRhaWxzXG4gICAgICAgICAgICBAdXBkYXRlOm1vZGVsLXZhbHVlPVwib25JbnB1dENoYW5nZShpbnB1dFR5cGUsICRldmVudCwgaSlcIlxuICAgICAgICAgICAgQGJsdXI9XCJvbkJsdXJDaGFuZ2UoaW5wdXRUeXBlLCAkZXZlbnQsIGkpXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwidXBwZXJjYXNlIHRleHQtcnVpLXRleHQtc2Vjb25kYXJ5IHRleHQtc21cIj5cbiAgICAgICAge3sgaW5wdXRUeXBlIH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8UnVpQnV0dG9uXG4gICAgICBjbGFzcz1cImgtMTBcIlxuICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgQGNsaWNrPVwib25JbnB1dFR5cGVDaGFuZ2UoKVwiXG4gICAgPlxuICAgICAgPFJ1aUljb24gbmFtZT1cImx1LWNoZXZyb25zLXVwLWRvd25cIiAvPlxuICAgIDwvUnVpQnV0dG9uPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuLy8gSW5zcGlyZWQgYnkgaHR0cHM6Ly9naXRodWIuY29tL2Flc29wZXIxMDEvdnVlMy1jb2xvcnBpY2tlci9cbmltcG9ydCBSdWlDb2xvckJvYXJkIGZyb20gJ0AvY29tcG9uZW50cy9jb2xvci1waWNrZXIvUnVpQ29sb3JCb2FyZC52dWUnO1xuaW1wb3J0IFJ1aUNvbG9yRGlzcGxheSBmcm9tICdAL2NvbXBvbmVudHMvY29sb3ItcGlja2VyL1J1aUNvbG9yRGlzcGxheS52dWUnO1xuaW1wb3J0IFJ1aUNvbG9ySHVlIGZyb20gJ0AvY29tcG9uZW50cy9jb2xvci1waWNrZXIvUnVpQ29sb3JIdWUudnVlJztcbmltcG9ydCBSdWlDb2xvcklucHV0IGZyb20gJ0AvY29tcG9uZW50cy9jb2xvci1waWNrZXIvUnVpQ29sb3JJbnB1dC52dWUnO1xuaW1wb3J0IHsgQ29sb3IgfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBQcm9wcyB7XG4gIG1vZGVsVmFsdWU/OiBzdHJpbmc7XG59XG5cbmRlZmluZU9wdGlvbnMoe1xuICBuYW1lOiAnUnVpQ29sb3JQaWNrZXInLFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxufSk7XG5cbmNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7IG1vZGVsVmFsdWU6ICcnIH0pO1xuXG5jb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8e1xuICAoZTogJ3VwZGF0ZTptb2RlbC12YWx1ZScsIHZhbHVlOiBzdHJpbmcpOiB2b2lkO1xufT4oKTtcblxuY29uc3QgeyBtb2RlbFZhbHVlIH0gPSB0b1JlZnMocHJvcHMpO1xuXG5jb25zdCBzdGF0ZSA9IHJlYWN0aXZlKHtcbiAgY29sb3I6IG5ldyBDb2xvcihnZXQobW9kZWxWYWx1ZSkpLFxufSk7XG5cbmZ1bmN0aW9uIG9uQm9hcmRDaGFuZ2UoeyBzYXR1cmF0aW9uLCBicmlnaHRuZXNzIH06IHsgc2F0dXJhdGlvbjogbnVtYmVyOyBicmlnaHRuZXNzOiBudW1iZXIgfSkge1xuICBzdGF0ZS5jb2xvci5zYXR1cmF0aW9uID0gc2F0dXJhdGlvbjtcbiAgc3RhdGUuY29sb3IuYnJpZ2h0bmVzcyA9IGJyaWdodG5lc3M7XG59XG5cbndoZW5ldmVyKFxuICBtb2RlbFZhbHVlLFxuICAodmFsdWU6IHN0cmluZykgPT4ge1xuICAgIGlmIChzdGF0ZS5jb2xvci5oZXggIT09IHZhbHVlKVxuICAgICAgc3RhdGUuY29sb3IgPSBuZXcgQ29sb3IodmFsdWUpO1xuICB9LFxuICB7IGRlZXA6IHRydWUgfSxcbik7XG5cbndhdGNoKHN0YXRlLCAoc3RhdGUpID0+IHtcbiAgZW1pdCgndXBkYXRlOm1vZGVsLXZhbHVlJywgc3RhdGUuY29sb3IuaGV4KTtcbn0sIHsgaW1tZWRpYXRlOiB0cnVlLCBkZWVwOiB0cnVlIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIGNsYXNzPVwicnVpLWNvbG9yLXBpY2tlciByZWxhdGl2ZSBzZWxlY3Qtbm9uZSBiZy1pbml0aWFsXCJcbiAgICB2LWJpbmQ9XCIkYXR0cnNcIlxuICA+XG4gICAgPFJ1aUNvbG9yQm9hcmRcbiAgICAgIDpjb2xvcj1cInN0YXRlLmNvbG9yXCJcbiAgICAgIEB1cGRhdGU6Ym9hcmQ9XCJvbkJvYXJkQ2hhbmdlKCRldmVudClcIlxuICAgIC8+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTUgcC00XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTRcIj5cbiAgICAgICAgPFJ1aUNvbG9yRGlzcGxheSA6Y29sb3I9XCJzdGF0ZS5jb2xvci5oZXhTdHJpbmdcIiAvPlxuICAgICAgICA8UnVpQ29sb3JIdWVcbiAgICAgICAgICB2LW1vZGVsPVwic3RhdGUuY29sb3IuaHVlXCJcbiAgICAgICAgICBjbGFzcz1cImZsZXgtMVwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPFJ1aUNvbG9ySW5wdXQgdi1tb2RlbD1cInN0YXRlLmNvbG9yXCIgLz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuIiwiLyogZXNsaW50LWRpc2FibGUgbWF4LWxpbmVzICovXG5cbmV4cG9ydCBjb25zdCB0aW1lem9uZXM6IHN0cmluZ1tdID0gW1xuICAnQWZyaWNhL0FiaWRqYW4nLFxuICAnQWZyaWNhL0FjY3JhJyxcbiAgJ0FmcmljYS9BZGRpc19BYmFiYScsXG4gICdBZnJpY2EvQWxnaWVycycsXG4gICdBZnJpY2EvQXNtYXJhJyxcbiAgJ0FmcmljYS9Bc21lcmEnLFxuICAnQWZyaWNhL0JhbWFrbycsXG4gICdBZnJpY2EvQmFuZ3VpJyxcbiAgJ0FmcmljYS9CYW5qdWwnLFxuICAnQWZyaWNhL0Jpc3NhdScsXG4gICdBZnJpY2EvQmxhbnR5cmUnLFxuICAnQWZyaWNhL0JyYXp6YXZpbGxlJyxcbiAgJ0FmcmljYS9CdWp1bWJ1cmEnLFxuICAnQWZyaWNhL0NhaXJvJyxcbiAgJ0FmcmljYS9DYXNhYmxhbmNhJyxcbiAgJ0FmcmljYS9DZXV0YScsXG4gICdBZnJpY2EvQ29uYWtyeScsXG4gICdBZnJpY2EvRGFrYXInLFxuICAnQWZyaWNhL0Rhcl9lc19TYWxhYW0nLFxuICAnQWZyaWNhL0RqaWJvdXRpJyxcbiAgJ0FmcmljYS9Eb3VhbGEnLFxuICAnQWZyaWNhL0VsX0FhaXVuJyxcbiAgJ0FmcmljYS9GcmVldG93bicsXG4gICdBZnJpY2EvR2Fib3JvbmUnLFxuICAnQWZyaWNhL0hhcmFyZScsXG4gICdBZnJpY2EvSm9oYW5uZXNidXJnJyxcbiAgJ0FmcmljYS9KdWJhJyxcbiAgJ0FmcmljYS9LYW1wYWxhJyxcbiAgJ0FmcmljYS9LaGFydG91bScsXG4gICdBZnJpY2EvS2lnYWxpJyxcbiAgJ0FmcmljYS9LaW5zaGFzYScsXG4gICdBZnJpY2EvTGFnb3MnLFxuICAnQWZyaWNhL0xpYnJldmlsbGUnLFxuICAnQWZyaWNhL0xvbWUnLFxuICAnQWZyaWNhL0x1YW5kYScsXG4gICdBZnJpY2EvTHVidW1iYXNoaScsXG4gICdBZnJpY2EvTHVzYWthJyxcbiAgJ0FmcmljYS9NYWxhYm8nLFxuICAnQWZyaWNhL01hcHV0bycsXG4gICdBZnJpY2EvTWFzZXJ1JyxcbiAgJ0FmcmljYS9NYmFiYW5lJyxcbiAgJ0FmcmljYS9Nb2dhZGlzaHUnLFxuICAnQWZyaWNhL01vbnJvdmlhJyxcbiAgJ0FmcmljYS9OYWlyb2JpJyxcbiAgJ0FmcmljYS9OZGphbWVuYScsXG4gICdBZnJpY2EvTmlhbWV5JyxcbiAgJ0FmcmljYS9Ob3Vha2Nob3R0JyxcbiAgJ0FmcmljYS9PdWFnYWRvdWdvdScsXG4gICdBZnJpY2EvUG9ydG8tTm92bycsXG4gICdBZnJpY2EvU2FvX1RvbWUnLFxuICAnQWZyaWNhL1RpbWJ1a3R1JyxcbiAgJ0FmcmljYS9Ucmlwb2xpJyxcbiAgJ0FmcmljYS9UdW5pcycsXG4gICdBZnJpY2EvV2luZGhvZWsnLFxuICAnQW1lcmljYS9BZGFrJyxcbiAgJ0FtZXJpY2EvQW5jaG9yYWdlJyxcbiAgJ0FtZXJpY2EvQW5ndWlsbGEnLFxuICAnQW1lcmljYS9BbnRpZ3VhJyxcbiAgJ0FtZXJpY2EvQXJhZ3VhaW5hJyxcbiAgJ0FtZXJpY2EvQXJnZW50aW5hL0J1ZW5vc19BaXJlcycsXG4gICdBbWVyaWNhL0FyZ2VudGluYS9DYXRhbWFyY2EnLFxuICAnQW1lcmljYS9BcmdlbnRpbmEvQ29tb2RSaXZhZGF2aWEnLFxuICAnQW1lcmljYS9BcmdlbnRpbmEvQ29yZG9iYScsXG4gICdBbWVyaWNhL0FyZ2VudGluYS9KdWp1eScsXG4gICdBbWVyaWNhL0FyZ2VudGluYS9MYV9SaW9qYScsXG4gICdBbWVyaWNhL0FyZ2VudGluYS9NZW5kb3phJyxcbiAgJ0FtZXJpY2EvQXJnZW50aW5hL1Jpb19HYWxsZWdvcycsXG4gICdBbWVyaWNhL0FyZ2VudGluYS9TYWx0YScsXG4gICdBbWVyaWNhL0FyZ2VudGluYS9TYW5fSnVhbicsXG4gICdBbWVyaWNhL0FyZ2VudGluYS9TYW5fTHVpcycsXG4gICdBbWVyaWNhL0FyZ2VudGluYS9UdWN1bWFuJyxcbiAgJ0FtZXJpY2EvQXJnZW50aW5hL1VzaHVhaWEnLFxuICAnQW1lcmljYS9BcnViYScsXG4gICdBbWVyaWNhL0FzdW5jaW9uJyxcbiAgJ0FtZXJpY2EvQXRpa29rYW4nLFxuICAnQW1lcmljYS9BdGthJyxcbiAgJ0FtZXJpY2EvQmFoaWEnLFxuICAnQW1lcmljYS9CYWhpYV9CYW5kZXJhcycsXG4gICdBbWVyaWNhL0JhcmJhZG9zJyxcbiAgJ0FtZXJpY2EvQmVsZW0nLFxuICAnQW1lcmljYS9CZWxpemUnLFxuICAnQW1lcmljYS9CbGFuYy1TYWJsb24nLFxuICAnQW1lcmljYS9Cb2FfVmlzdGEnLFxuICAnQW1lcmljYS9Cb2dvdGEnLFxuICAnQW1lcmljYS9Cb2lzZScsXG4gICdBbWVyaWNhL0J1ZW5vc19BaXJlcycsXG4gICdBbWVyaWNhL0NhbWJyaWRnZV9CYXknLFxuICAnQW1lcmljYS9DYW1wb19HcmFuZGUnLFxuICAnQW1lcmljYS9DYW5jdW4nLFxuICAnQW1lcmljYS9DYXJhY2FzJyxcbiAgJ0FtZXJpY2EvQ2F0YW1hcmNhJyxcbiAgJ0FtZXJpY2EvQ2F5ZW5uZScsXG4gICdBbWVyaWNhL0NheW1hbicsXG4gICdBbWVyaWNhL0NoaWNhZ28nLFxuICAnQW1lcmljYS9DaGlodWFodWEnLFxuICAnQW1lcmljYS9Db3JhbF9IYXJib3VyJyxcbiAgJ0FtZXJpY2EvQ29yZG9iYScsXG4gICdBbWVyaWNhL0Nvc3RhX1JpY2EnLFxuICAnQW1lcmljYS9DcmVzdG9uJyxcbiAgJ0FtZXJpY2EvQ3VpYWJhJyxcbiAgJ0FtZXJpY2EvQ3VyYWNhbycsXG4gICdBbWVyaWNhL0Rhbm1hcmtzaGF2bicsXG4gICdBbWVyaWNhL0Rhd3NvbicsXG4gICdBbWVyaWNhL0Rhd3Nvbl9DcmVlaycsXG4gICdBbWVyaWNhL0RlbnZlcicsXG4gICdBbWVyaWNhL0RldHJvaXQnLFxuICAnQW1lcmljYS9Eb21pbmljYScsXG4gICdBbWVyaWNhL0VkbW9udG9uJyxcbiAgJ0FtZXJpY2EvRWlydW5lcGUnLFxuICAnQW1lcmljYS9FbF9TYWx2YWRvcicsXG4gICdBbWVyaWNhL0Vuc2VuYWRhJyxcbiAgJ0FtZXJpY2EvRm9ydF9OZWxzb24nLFxuICAnQW1lcmljYS9Gb3J0X1dheW5lJyxcbiAgJ0FtZXJpY2EvRm9ydGFsZXphJyxcbiAgJ0FtZXJpY2EvR2xhY2VfQmF5JyxcbiAgJ0FtZXJpY2EvR29kdGhhYicsXG4gICdBbWVyaWNhL0dvb3NlX0JheScsXG4gICdBbWVyaWNhL0dyYW5kX1R1cmsnLFxuICAnQW1lcmljYS9HcmVuYWRhJyxcbiAgJ0FtZXJpY2EvR3VhZGVsb3VwZScsXG4gICdBbWVyaWNhL0d1YXRlbWFsYScsXG4gICdBbWVyaWNhL0d1YXlhcXVpbCcsXG4gICdBbWVyaWNhL0d1eWFuYScsXG4gICdBbWVyaWNhL0hhbGlmYXgnLFxuICAnQW1lcmljYS9IYXZhbmEnLFxuICAnQW1lcmljYS9IZXJtb3NpbGxvJyxcbiAgJ0FtZXJpY2EvSW5kaWFuYS9JbmRpYW5hcG9saXMnLFxuICAnQW1lcmljYS9JbmRpYW5hL0tub3gnLFxuICAnQW1lcmljYS9JbmRpYW5hL01hcmVuZ28nLFxuICAnQW1lcmljYS9JbmRpYW5hL1BldGVyc2J1cmcnLFxuICAnQW1lcmljYS9JbmRpYW5hL1RlbGxfQ2l0eScsXG4gICdBbWVyaWNhL0luZGlhbmEvVmV2YXknLFxuICAnQW1lcmljYS9JbmRpYW5hL1ZpbmNlbm5lcycsXG4gICdBbWVyaWNhL0luZGlhbmEvV2luYW1hYycsXG4gICdBbWVyaWNhL0luZGlhbmFwb2xpcycsXG4gICdBbWVyaWNhL0ludXZpaycsXG4gICdBbWVyaWNhL0lxYWx1aXQnLFxuICAnQW1lcmljYS9KYW1haWNhJyxcbiAgJ0FtZXJpY2EvSnVqdXknLFxuICAnQW1lcmljYS9KdW5lYXUnLFxuICAnQW1lcmljYS9LZW50dWNreS9Mb3Vpc3ZpbGxlJyxcbiAgJ0FtZXJpY2EvS2VudHVja3kvTW9udGljZWxsbycsXG4gICdBbWVyaWNhL0tub3hfSU4nLFxuICAnQW1lcmljYS9LcmFsZW5kaWprJyxcbiAgJ0FtZXJpY2EvTGFfUGF6JyxcbiAgJ0FtZXJpY2EvTGltYScsXG4gICdBbWVyaWNhL0xvc19BbmdlbGVzJyxcbiAgJ0FtZXJpY2EvTG91aXN2aWxsZScsXG4gICdBbWVyaWNhL0xvd2VyX1ByaW5jZXMnLFxuICAnQW1lcmljYS9NYWNlaW8nLFxuICAnQW1lcmljYS9NYW5hZ3VhJyxcbiAgJ0FtZXJpY2EvTWFuYXVzJyxcbiAgJ0FtZXJpY2EvTWFyaWdvdCcsXG4gICdBbWVyaWNhL01hcnRpbmlxdWUnLFxuICAnQW1lcmljYS9NYXRhbW9yb3MnLFxuICAnQW1lcmljYS9NYXphdGxhbicsXG4gICdBbWVyaWNhL01lbmRvemEnLFxuICAnQW1lcmljYS9NZW5vbWluZWUnLFxuICAnQW1lcmljYS9NZXJpZGEnLFxuICAnQW1lcmljYS9NZXRsYWthdGxhJyxcbiAgJ0FtZXJpY2EvTWV4aWNvX0NpdHknLFxuICAnQW1lcmljYS9NaXF1ZWxvbicsXG4gICdBbWVyaWNhL01vbmN0b24nLFxuICAnQW1lcmljYS9Nb250ZXJyZXknLFxuICAnQW1lcmljYS9Nb250ZXZpZGVvJyxcbiAgJ0FtZXJpY2EvTW9udHJlYWwnLFxuICAnQW1lcmljYS9Nb250c2VycmF0JyxcbiAgJ0FtZXJpY2EvTmFzc2F1JyxcbiAgJ0FtZXJpY2EvTmV3X1lvcmsnLFxuICAnQW1lcmljYS9OaXBpZ29uJyxcbiAgJ0FtZXJpY2EvTm9tZScsXG4gICdBbWVyaWNhL05vcm9uaGEnLFxuICAnQW1lcmljYS9Ob3J0aF9EYWtvdGEvQmV1bGFoJyxcbiAgJ0FtZXJpY2EvTm9ydGhfRGFrb3RhL0NlbnRlcicsXG4gICdBbWVyaWNhL05vcnRoX0Rha290YS9OZXdfU2FsZW0nLFxuICAnQW1lcmljYS9OdXVrJyxcbiAgJ0FtZXJpY2EvT2ppbmFnYScsXG4gICdBbWVyaWNhL1BhbmFtYScsXG4gICdBbWVyaWNhL1BhbmduaXJ0dW5nJyxcbiAgJ0FtZXJpY2EvUGFyYW1hcmlibycsXG4gICdBbWVyaWNhL1Bob2VuaXgnLFxuICAnQW1lcmljYS9Qb3J0LWF1LVByaW5jZScsXG4gICdBbWVyaWNhL1BvcnRfb2ZfU3BhaW4nLFxuICAnQW1lcmljYS9Qb3J0b19BY3JlJyxcbiAgJ0FtZXJpY2EvUG9ydG9fVmVsaG8nLFxuICAnQW1lcmljYS9QdWVydG9fUmljbycsXG4gICdBbWVyaWNhL1B1bnRhX0FyZW5hcycsXG4gICdBbWVyaWNhL1JhaW55X1JpdmVyJyxcbiAgJ0FtZXJpY2EvUmFua2luX0lubGV0JyxcbiAgJ0FtZXJpY2EvUmVjaWZlJyxcbiAgJ0FtZXJpY2EvUmVnaW5hJyxcbiAgJ0FtZXJpY2EvUmVzb2x1dGUnLFxuICAnQW1lcmljYS9SaW9fQnJhbmNvJyxcbiAgJ0FtZXJpY2EvUm9zYXJpbycsXG4gICdBbWVyaWNhL1NhbnRhX0lzYWJlbCcsXG4gICdBbWVyaWNhL1NhbnRhcmVtJyxcbiAgJ0FtZXJpY2EvU2FudGlhZ28nLFxuICAnQW1lcmljYS9TYW50b19Eb21pbmdvJyxcbiAgJ0FtZXJpY2EvU2FvX1BhdWxvJyxcbiAgJ0FtZXJpY2EvU2NvcmVzYnlzdW5kJyxcbiAgJ0FtZXJpY2EvU2hpcHJvY2snLFxuICAnQW1lcmljYS9TaXRrYScsXG4gICdBbWVyaWNhL1N0X0JhcnRoZWxlbXknLFxuICAnQW1lcmljYS9TdF9Kb2hucycsXG4gICdBbWVyaWNhL1N0X0tpdHRzJyxcbiAgJ0FtZXJpY2EvU3RfTHVjaWEnLFxuICAnQW1lcmljYS9TdF9UaG9tYXMnLFxuICAnQW1lcmljYS9TdF9WaW5jZW50JyxcbiAgJ0FtZXJpY2EvU3dpZnRfQ3VycmVudCcsXG4gICdBbWVyaWNhL1RlZ3VjaWdhbHBhJyxcbiAgJ0FtZXJpY2EvVGh1bGUnLFxuICAnQW1lcmljYS9UaHVuZGVyX0JheScsXG4gICdBbWVyaWNhL1RpanVhbmEnLFxuICAnQW1lcmljYS9Ub3JvbnRvJyxcbiAgJ0FtZXJpY2EvVG9ydG9sYScsXG4gICdBbWVyaWNhL1ZhbmNvdXZlcicsXG4gICdBbWVyaWNhL1ZpcmdpbicsXG4gICdBbWVyaWNhL1doaXRlaG9yc2UnLFxuICAnQW1lcmljYS9XaW5uaXBlZycsXG4gICdBbWVyaWNhL1lha3V0YXQnLFxuICAnQW1lcmljYS9ZZWxsb3drbmlmZScsXG4gICdBbnRhcmN0aWNhL0Nhc2V5JyxcbiAgJ0FudGFyY3RpY2EvRGF2aXMnLFxuICAnQW50YXJjdGljYS9EdW1vbnREVXJ2aWxsZScsXG4gICdBbnRhcmN0aWNhL01hY3F1YXJpZScsXG4gICdBbnRhcmN0aWNhL01hd3NvbicsXG4gICdBbnRhcmN0aWNhL01jTXVyZG8nLFxuICAnQW50YXJjdGljYS9QYWxtZXInLFxuICAnQW50YXJjdGljYS9Sb3RoZXJhJyxcbiAgJ0FudGFyY3RpY2EvU291dGhfUG9sZScsXG4gICdBbnRhcmN0aWNhL1N5b3dhJyxcbiAgJ0FudGFyY3RpY2EvVHJvbGwnLFxuICAnQW50YXJjdGljYS9Wb3N0b2snLFxuICAnQXJjdGljL0xvbmd5ZWFyYnllbicsXG4gICdBc2lhL0FkZW4nLFxuICAnQXNpYS9BbG1hdHknLFxuICAnQXNpYS9BbW1hbicsXG4gICdBc2lhL0FuYWR5cicsXG4gICdBc2lhL0FxdGF1JyxcbiAgJ0FzaWEvQXF0b2JlJyxcbiAgJ0FzaWEvQXNoZ2FiYXQnLFxuICAnQXNpYS9Bc2hraGFiYWQnLFxuICAnQXNpYS9BdHlyYXUnLFxuICAnQXNpYS9CYWdoZGFkJyxcbiAgJ0FzaWEvQmFocmFpbicsXG4gICdBc2lhL0Jha3UnLFxuICAnQXNpYS9CYW5na29rJyxcbiAgJ0FzaWEvQmFybmF1bCcsXG4gICdBc2lhL0JlaXJ1dCcsXG4gICdBc2lhL0Jpc2hrZWsnLFxuICAnQXNpYS9CcnVuZWknLFxuICAnQXNpYS9DYWxjdXR0YScsXG4gICdBc2lhL0NoaXRhJyxcbiAgJ0FzaWEvQ2hvaWJhbHNhbicsXG4gICdBc2lhL0Nob25ncWluZycsXG4gICdBc2lhL0NodW5na2luZycsXG4gICdBc2lhL0NvbG9tYm8nLFxuICAnQXNpYS9EYWNjYScsXG4gICdBc2lhL0RhbWFzY3VzJyxcbiAgJ0FzaWEvRGhha2EnLFxuICAnQXNpYS9EaWxpJyxcbiAgJ0FzaWEvRHViYWknLFxuICAnQXNpYS9EdXNoYW5iZScsXG4gICdBc2lhL0ZhbWFndXN0YScsXG4gICdBc2lhL0dhemEnLFxuICAnQXNpYS9IYXJiaW4nLFxuICAnQXNpYS9IZWJyb24nLFxuICAnQXNpYS9Ib19DaGlfTWluaCcsXG4gICdBc2lhL0hvbmdfS29uZycsXG4gICdBc2lhL0hvdmQnLFxuICAnQXNpYS9Jcmt1dHNrJyxcbiAgJ0FzaWEvSXN0YW5idWwnLFxuICAnQXNpYS9KYWthcnRhJyxcbiAgJ0FzaWEvSmF5YXB1cmEnLFxuICAnQXNpYS9KZXJ1c2FsZW0nLFxuICAnQXNpYS9LYWJ1bCcsXG4gICdBc2lhL0thbWNoYXRrYScsXG4gICdBc2lhL0thcmFjaGknLFxuICAnQXNpYS9LYXNoZ2FyJyxcbiAgJ0FzaWEvS2F0aG1hbmR1JyxcbiAgJ0FzaWEvS2F0bWFuZHUnLFxuICAnQXNpYS9LaGFuZHlnYScsXG4gICdBc2lhL0tvbGthdGEnLFxuICAnQXNpYS9LcmFzbm95YXJzaycsXG4gICdBc2lhL0t1YWxhX0x1bXB1cicsXG4gICdBc2lhL0t1Y2hpbmcnLFxuICAnQXNpYS9LdXdhaXQnLFxuICAnQXNpYS9NYWNhbycsXG4gICdBc2lhL01hY2F1JyxcbiAgJ0FzaWEvTWFnYWRhbicsXG4gICdBc2lhL01ha2Fzc2FyJyxcbiAgJ0FzaWEvTWFuaWxhJyxcbiAgJ0FzaWEvTXVzY2F0JyxcbiAgJ0FzaWEvTmljb3NpYScsXG4gICdBc2lhL05vdm9rdXpuZXRzaycsXG4gICdBc2lhL05vdm9zaWJpcnNrJyxcbiAgJ0FzaWEvT21zaycsXG4gICdBc2lhL09yYWwnLFxuICAnQXNpYS9QaG5vbV9QZW5oJyxcbiAgJ0FzaWEvUG9udGlhbmFrJyxcbiAgJ0FzaWEvUHlvbmd5YW5nJyxcbiAgJ0FzaWEvUWF0YXInLFxuICAnQXNpYS9Rb3N0YW5heScsXG4gICdBc2lhL1F5enlsb3JkYScsXG4gICdBc2lhL1Jhbmdvb24nLFxuICAnQXNpYS9SaXlhZGgnLFxuICAnQXNpYS9TYWlnb24nLFxuICAnQXNpYS9TYWtoYWxpbicsXG4gICdBc2lhL1NhbWFya2FuZCcsXG4gICdBc2lhL1Nlb3VsJyxcbiAgJ0FzaWEvU2hhbmdoYWknLFxuICAnQXNpYS9TaW5nYXBvcmUnLFxuICAnQXNpYS9TcmVkbmVrb2x5bXNrJyxcbiAgJ0FzaWEvVGFpcGVpJyxcbiAgJ0FzaWEvVGFzaGtlbnQnLFxuICAnQXNpYS9UYmlsaXNpJyxcbiAgJ0FzaWEvVGVocmFuJyxcbiAgJ0FzaWEvVGVsX0F2aXYnLFxuICAnQXNpYS9UaGltYnUnLFxuICAnQXNpYS9UaGltcGh1JyxcbiAgJ0FzaWEvVG9reW8nLFxuICAnQXNpYS9Ub21zaycsXG4gICdBc2lhL1VqdW5nX1BhbmRhbmcnLFxuICAnQXNpYS9VbGFhbmJhYXRhcicsXG4gICdBc2lhL1VsYW5fQmF0b3InLFxuICAnQXNpYS9VcnVtcWknLFxuICAnQXNpYS9Vc3QtTmVyYScsXG4gICdBc2lhL1ZpZW50aWFuZScsXG4gICdBc2lhL1ZsYWRpdm9zdG9rJyxcbiAgJ0FzaWEvWWFrdXRzaycsXG4gICdBc2lhL1lhbmdvbicsXG4gICdBc2lhL1lla2F0ZXJpbmJ1cmcnLFxuICAnQXNpYS9ZZXJldmFuJyxcbiAgJ0F0bGFudGljL0F6b3JlcycsXG4gICdBdGxhbnRpYy9CZXJtdWRhJyxcbiAgJ0F0bGFudGljL0NhbmFyeScsXG4gICdBdGxhbnRpYy9DYXBlX1ZlcmRlJyxcbiAgJ0F0bGFudGljL0ZhZXJvZScsXG4gICdBdGxhbnRpYy9GYXJvZScsXG4gICdBdGxhbnRpYy9KYW5fTWF5ZW4nLFxuICAnQXRsYW50aWMvTWFkZWlyYScsXG4gICdBdGxhbnRpYy9SZXlramF2aWsnLFxuICAnQXRsYW50aWMvU291dGhfR2VvcmdpYScsXG4gICdBdGxhbnRpYy9TdF9IZWxlbmEnLFxuICAnQXRsYW50aWMvU3RhbmxleScsXG4gICdBdXN0cmFsaWEvQUNUJyxcbiAgJ0F1c3RyYWxpYS9BZGVsYWlkZScsXG4gICdBdXN0cmFsaWEvQnJpc2JhbmUnLFxuICAnQXVzdHJhbGlhL0Jyb2tlbl9IaWxsJyxcbiAgJ0F1c3RyYWxpYS9DYW5iZXJyYScsXG4gICdBdXN0cmFsaWEvQ3VycmllJyxcbiAgJ0F1c3RyYWxpYS9EYXJ3aW4nLFxuICAnQXVzdHJhbGlhL0V1Y2xhJyxcbiAgJ0F1c3RyYWxpYS9Ib2JhcnQnLFxuICAnQXVzdHJhbGlhL0xISScsXG4gICdBdXN0cmFsaWEvTGluZGVtYW4nLFxuICAnQXVzdHJhbGlhL0xvcmRfSG93ZScsXG4gICdBdXN0cmFsaWEvTWVsYm91cm5lJyxcbiAgJ0F1c3RyYWxpYS9OU1cnLFxuICAnQXVzdHJhbGlhL05vcnRoJyxcbiAgJ0F1c3RyYWxpYS9QZXJ0aCcsXG4gICdBdXN0cmFsaWEvUXVlZW5zbGFuZCcsXG4gICdBdXN0cmFsaWEvU291dGgnLFxuICAnQXVzdHJhbGlhL1N5ZG5leScsXG4gICdBdXN0cmFsaWEvVGFzbWFuaWEnLFxuICAnQXVzdHJhbGlhL1ZpY3RvcmlhJyxcbiAgJ0F1c3RyYWxpYS9XZXN0JyxcbiAgJ0F1c3RyYWxpYS9ZYW5jb3dpbm5hJyxcbiAgJ0JyYXppbC9BY3JlJyxcbiAgJ0JyYXppbC9EZU5vcm9uaGEnLFxuICAnQnJhemlsL0Vhc3QnLFxuICAnQnJhemlsL1dlc3QnLFxuICAnQ0VUJyxcbiAgJ0NTVDZDRFQnLFxuICAnQ2FuYWRhL0F0bGFudGljJyxcbiAgJ0NhbmFkYS9DZW50cmFsJyxcbiAgJ0NhbmFkYS9FYXN0ZXJuJyxcbiAgJ0NhbmFkYS9Nb3VudGFpbicsXG4gICdDYW5hZGEvTmV3Zm91bmRsYW5kJyxcbiAgJ0NhbmFkYS9QYWNpZmljJyxcbiAgJ0NhbmFkYS9TYXNrYXRjaGV3YW4nLFxuICAnQ2FuYWRhL1l1a29uJyxcbiAgJ0NoaWxlL0NvbnRpbmVudGFsJyxcbiAgJ0NoaWxlL0Vhc3RlcklzbGFuZCcsXG4gICdDdWJhJyxcbiAgJ0VFVCcsXG4gICdFU1QnLFxuICAnRVNUNUVEVCcsXG4gICdFZ3lwdCcsXG4gICdFaXJlJyxcbiAgJ0V0Yy9HTVQnLFxuICAnRXRjL0dNVCswJyxcbiAgJ0V0Yy9HTVQrMScsXG4gICdFdGMvR01UKzEwJyxcbiAgJ0V0Yy9HTVQrMTEnLFxuICAnRXRjL0dNVCsxMicsXG4gICdFdGMvR01UKzInLFxuICAnRXRjL0dNVCszJyxcbiAgJ0V0Yy9HTVQrNCcsXG4gICdFdGMvR01UKzUnLFxuICAnRXRjL0dNVCs2JyxcbiAgJ0V0Yy9HTVQrNycsXG4gICdFdGMvR01UKzgnLFxuICAnRXRjL0dNVCs5JyxcbiAgJ0V0Yy9HTVQtMCcsXG4gICdFdGMvR01ULTEnLFxuICAnRXRjL0dNVC0xMCcsXG4gICdFdGMvR01ULTExJyxcbiAgJ0V0Yy9HTVQtMTInLFxuICAnRXRjL0dNVC0xMycsXG4gICdFdGMvR01ULTE0JyxcbiAgJ0V0Yy9HTVQtMicsXG4gICdFdGMvR01ULTMnLFxuICAnRXRjL0dNVC00JyxcbiAgJ0V0Yy9HTVQtNScsXG4gICdFdGMvR01ULTYnLFxuICAnRXRjL0dNVC03JyxcbiAgJ0V0Yy9HTVQtOCcsXG4gICdFdGMvR01ULTknLFxuICAnRXRjL0dNVDAnLFxuICAnRXRjL0dyZWVud2ljaCcsXG4gICdFdGMvVUNUJyxcbiAgJ0V0Yy9VVEMnLFxuICAnRXRjL1VuaXZlcnNhbCcsXG4gICdFdGMvWnVsdScsXG4gICdFdXJvcGUvQW1zdGVyZGFtJyxcbiAgJ0V1cm9wZS9BbmRvcnJhJyxcbiAgJ0V1cm9wZS9Bc3RyYWtoYW4nLFxuICAnRXVyb3BlL0F0aGVucycsXG4gICdFdXJvcGUvQmVsZmFzdCcsXG4gICdFdXJvcGUvQmVsZ3JhZGUnLFxuICAnRXVyb3BlL0JlcmxpbicsXG4gICdFdXJvcGUvQnJhdGlzbGF2YScsXG4gICdFdXJvcGUvQnJ1c3NlbHMnLFxuICAnRXVyb3BlL0J1Y2hhcmVzdCcsXG4gICdFdXJvcGUvQnVkYXBlc3QnLFxuICAnRXVyb3BlL0J1c2luZ2VuJyxcbiAgJ0V1cm9wZS9DaGlzaW5hdScsXG4gICdFdXJvcGUvQ29wZW5oYWdlbicsXG4gICdFdXJvcGUvRHVibGluJyxcbiAgJ0V1cm9wZS9HaWJyYWx0YXInLFxuICAnRXVyb3BlL0d1ZXJuc2V5JyxcbiAgJ0V1cm9wZS9IZWxzaW5raScsXG4gICdFdXJvcGUvSXNsZV9vZl9NYW4nLFxuICAnRXVyb3BlL0lzdGFuYnVsJyxcbiAgJ0V1cm9wZS9KZXJzZXknLFxuICAnRXVyb3BlL0thbGluaW5ncmFkJyxcbiAgJ0V1cm9wZS9LaWV2JyxcbiAgJ0V1cm9wZS9LaXJvdicsXG4gICdFdXJvcGUvTGlzYm9uJyxcbiAgJ0V1cm9wZS9ManVibGphbmEnLFxuICAnRXVyb3BlL0xvbmRvbicsXG4gICdFdXJvcGUvTHV4ZW1ib3VyZycsXG4gICdFdXJvcGUvTWFkcmlkJyxcbiAgJ0V1cm9wZS9NYWx0YScsXG4gICdFdXJvcGUvTWFyaWVoYW1uJyxcbiAgJ0V1cm9wZS9NaW5zaycsXG4gICdFdXJvcGUvTW9uYWNvJyxcbiAgJ0V1cm9wZS9Nb3Njb3cnLFxuICAnRXVyb3BlL05pY29zaWEnLFxuICAnRXVyb3BlL09zbG8nLFxuICAnRXVyb3BlL1BhcmlzJyxcbiAgJ0V1cm9wZS9Qb2Rnb3JpY2EnLFxuICAnRXVyb3BlL1ByYWd1ZScsXG4gICdFdXJvcGUvUmlnYScsXG4gICdFdXJvcGUvUm9tZScsXG4gICdFdXJvcGUvU2FtYXJhJyxcbiAgJ0V1cm9wZS9TYW5fTWFyaW5vJyxcbiAgJ0V1cm9wZS9TYXJhamV2bycsXG4gICdFdXJvcGUvU2FyYXRvdicsXG4gICdFdXJvcGUvU2ltZmVyb3BvbCcsXG4gICdFdXJvcGUvU2tvcGplJyxcbiAgJ0V1cm9wZS9Tb2ZpYScsXG4gICdFdXJvcGUvU3RvY2tob2xtJyxcbiAgJ0V1cm9wZS9UYWxsaW5uJyxcbiAgJ0V1cm9wZS9UaXJhbmUnLFxuICAnRXVyb3BlL1RpcmFzcG9sJyxcbiAgJ0V1cm9wZS9VbHlhbm92c2snLFxuICAnRXVyb3BlL1V6aGdvcm9kJyxcbiAgJ0V1cm9wZS9WYWR1eicsXG4gICdFdXJvcGUvVmF0aWNhbicsXG4gICdFdXJvcGUvVmllbm5hJyxcbiAgJ0V1cm9wZS9WaWxuaXVzJyxcbiAgJ0V1cm9wZS9Wb2xnb2dyYWQnLFxuICAnRXVyb3BlL1dhcnNhdycsXG4gICdFdXJvcGUvWmFncmViJyxcbiAgJ0V1cm9wZS9aYXBvcm96aHllJyxcbiAgJ0V1cm9wZS9adXJpY2gnLFxuICAnRmFjdG9yeScsXG4gICdHQicsXG4gICdHQi1FaXJlJyxcbiAgJ0dNVCcsXG4gICdHTVQrMCcsXG4gICdHTVQtMCcsXG4gICdHTVQwJyxcbiAgJ0dyZWVud2ljaCcsXG4gICdIU1QnLFxuICAnSG9uZ2tvbmcnLFxuICAnSWNlbGFuZCcsXG4gICdJbmRpYW4vQW50YW5hbmFyaXZvJyxcbiAgJ0luZGlhbi9DaGFnb3MnLFxuICAnSW5kaWFuL0NocmlzdG1hcycsXG4gICdJbmRpYW4vQ29jb3MnLFxuICAnSW5kaWFuL0NvbW9ybycsXG4gICdJbmRpYW4vS2VyZ3VlbGVuJyxcbiAgJ0luZGlhbi9NYWhlJyxcbiAgJ0luZGlhbi9NYWxkaXZlcycsXG4gICdJbmRpYW4vTWF1cml0aXVzJyxcbiAgJ0luZGlhbi9NYXlvdHRlJyxcbiAgJ0luZGlhbi9SZXVuaW9uJyxcbiAgJ0lyYW4nLFxuICAnSXNyYWVsJyxcbiAgJ0phbWFpY2EnLFxuICAnSmFwYW4nLFxuICAnS3dhamFsZWluJyxcbiAgJ0xpYnlhJyxcbiAgJ01FVCcsXG4gICdNU1QnLFxuICAnTVNUN01EVCcsXG4gICdNZXhpY28vQmFqYU5vcnRlJyxcbiAgJ01leGljby9CYWphU3VyJyxcbiAgJ01leGljby9HZW5lcmFsJyxcbiAgJ05aJyxcbiAgJ05aLUNIQVQnLFxuICAnTmF2YWpvJyxcbiAgJ1BSQycsXG4gICdQU1Q4UERUJyxcbiAgJ1BhY2lmaWMvQXBpYScsXG4gICdQYWNpZmljL0F1Y2tsYW5kJyxcbiAgJ1BhY2lmaWMvQm91Z2FpbnZpbGxlJyxcbiAgJ1BhY2lmaWMvQ2hhdGhhbScsXG4gICdQYWNpZmljL0NodXVrJyxcbiAgJ1BhY2lmaWMvRWFzdGVyJyxcbiAgJ1BhY2lmaWMvRWZhdGUnLFxuICAnUGFjaWZpYy9FbmRlcmJ1cnknLFxuICAnUGFjaWZpYy9GYWthb2ZvJyxcbiAgJ1BhY2lmaWMvRmlqaScsXG4gICdQYWNpZmljL0Z1bmFmdXRpJyxcbiAgJ1BhY2lmaWMvR2FsYXBhZ29zJyxcbiAgJ1BhY2lmaWMvR2FtYmllcicsXG4gICdQYWNpZmljL0d1YWRhbGNhbmFsJyxcbiAgJ1BhY2lmaWMvR3VhbScsXG4gICdQYWNpZmljL0hvbm9sdWx1JyxcbiAgJ1BhY2lmaWMvSm9obnN0b24nLFxuICAnUGFjaWZpYy9LaXJpdGltYXRpJyxcbiAgJ1BhY2lmaWMvS29zcmFlJyxcbiAgJ1BhY2lmaWMvS3dhamFsZWluJyxcbiAgJ1BhY2lmaWMvTWFqdXJvJyxcbiAgJ1BhY2lmaWMvTWFycXVlc2FzJyxcbiAgJ1BhY2lmaWMvTWlkd2F5JyxcbiAgJ1BhY2lmaWMvTmF1cnUnLFxuICAnUGFjaWZpYy9OaXVlJyxcbiAgJ1BhY2lmaWMvTm9yZm9saycsXG4gICdQYWNpZmljL05vdW1lYScsXG4gICdQYWNpZmljL1BhZ29fUGFnbycsXG4gICdQYWNpZmljL1BhbGF1JyxcbiAgJ1BhY2lmaWMvUGl0Y2Fpcm4nLFxuICAnUGFjaWZpYy9Qb2hucGVpJyxcbiAgJ1BhY2lmaWMvUG9uYXBlJyxcbiAgJ1BhY2lmaWMvUG9ydF9Nb3Jlc2J5JyxcbiAgJ1BhY2lmaWMvUmFyb3RvbmdhJyxcbiAgJ1BhY2lmaWMvU2FpcGFuJyxcbiAgJ1BhY2lmaWMvU2Ftb2EnLFxuICAnUGFjaWZpYy9UYWhpdGknLFxuICAnUGFjaWZpYy9UYXJhd2EnLFxuICAnUGFjaWZpYy9Ub25nYXRhcHUnLFxuICAnUGFjaWZpYy9UcnVrJyxcbiAgJ1BhY2lmaWMvV2FrZScsXG4gICdQYWNpZmljL1dhbGxpcycsXG4gICdQYWNpZmljL1lhcCcsXG4gICdQb2xhbmQnLFxuICAnUG9ydHVnYWwnLFxuICAnUk9DJyxcbiAgJ1JPSycsXG4gICdTaW5nYXBvcmUnLFxuICAnVHVya2V5JyxcbiAgJ1VDVCcsXG4gICdVUy9BbGFza2EnLFxuICAnVVMvQWxldXRpYW4nLFxuICAnVVMvQXJpem9uYScsXG4gICdVUy9DZW50cmFsJyxcbiAgJ1VTL0Vhc3QtSW5kaWFuYScsXG4gICdVUy9FYXN0ZXJuJyxcbiAgJ1VTL0hhd2FpaScsXG4gICdVUy9JbmRpYW5hLVN0YXJrZScsXG4gICdVUy9NaWNoaWdhbicsXG4gICdVUy9Nb3VudGFpbicsXG4gICdVUy9QYWNpZmljJyxcbiAgJ1VTL1BhY2lmaWMtTmV3JyxcbiAgJ1VTL1NhbW9hJyxcbiAgJ1VUQycsXG4gICdVbml2ZXJzYWwnLFxuICAnVy1TVScsXG4gICdXRVQnLFxuICAnWnVsdScsXG5dO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cCBnZW5lcmljPSdUVmFsdWUsIFRJdGVtJz5cbmltcG9ydCB0eXBlIHsgQ29tcG9uZW50UHVibGljSW5zdGFuY2UsIENvbXB1dGVkUmVmIH0gZnJvbSAndnVlJztcbmltcG9ydCB7IHN5bmNSZWYgfSBmcm9tICdAdnVldXNlL2NvcmUnO1xuaW1wb3J0IHsgbG9naWNBbmQsIGxvZ2ljT3IgfSBmcm9tICdAdnVldXNlL21hdGgnO1xuaW1wb3J0IFJ1aUJ1dHRvbiBmcm9tICdAL2NvbXBvbmVudHMvYnV0dG9ucy9idXR0b24vUnVpQnV0dG9uLnZ1ZSc7XG5pbXBvcnQgUnVpQ2hpcCBmcm9tICdAL2NvbXBvbmVudHMvY2hpcHMvUnVpQ2hpcC52dWUnO1xuaW1wb3J0IFJ1aUljb24gZnJvbSAnQC9jb21wb25lbnRzL2ljb25zL1J1aUljb24udnVlJztcbmltcG9ydCBSdWlNZW51LCB7IHR5cGUgTWVudVByb3BzIH0gZnJvbSAnQC9jb21wb25lbnRzL292ZXJsYXlzL21lbnUvUnVpTWVudS52dWUnO1xuaW1wb3J0IFJ1aVByb2dyZXNzIGZyb20gJ0AvY29tcG9uZW50cy9wcm9ncmVzcy9SdWlQcm9ncmVzcy52dWUnO1xuaW1wb3J0IHsgdHlwZSBLZXlPZlR5cGUsIHVzZURyb3Bkb3duTWVudSwgdXNlRHJvcGRvd25PcHRpb25Qcm9wZXJ0eSB9IGZyb20gJ0AvY29tcG9zYWJsZXMvZHJvcGRvd24tbWVudSc7XG5pbXBvcnQgeyB1c2VBdXRvQ29tcGxldGVGb2N1cywgdXNlQXV0b0NvbXBsZXRlS2V5Ym9hcmROYXZpZ2F0aW9uLCB1c2VBdXRvQ29tcGxldGVTZWFyY2gsIHVzZUF1dG9Db21wbGV0ZVZhbHVlIH0gZnJvbSAnQC9jb21wb3NhYmxlcy9mb3Jtcy9hdXRvLWNvbXBsZXRlJztcbmltcG9ydCB7IGdldFRleHRUb2tlbiB9IGZyb20gJ0AvdXRpbHMvaGVscGVycyc7XG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSAnQC91dGlscy9pcy1lcXVhbCc7XG5cbmV4cG9ydCB0eXBlIEF1dG9Db21wbGV0ZU1vZGVsVmFsdWU8VFZhbHVlPiA9IFRWYWx1ZSBleHRlbmRzIEFycmF5PGluZmVyIFU+ID8gVVtdIDogVFZhbHVlIHwgdW5kZWZpbmVkO1xuXG5leHBvcnQgaW50ZXJmYWNlIEF1dG9Db21wbGV0ZVByb3BzPFRWYWx1ZSwgVEl0ZW0+IHtcbiAgb3B0aW9ucz86IFRJdGVtW107XG4gIGtleUF0dHI/OiBLZXlPZlR5cGU8VEl0ZW0sIFRWYWx1ZSBleHRlbmRzIEFycmF5PGluZmVyIFU+ID8gVSA6IFRWYWx1ZT47XG4gIHRleHRBdHRyPzoga2V5b2YgVEl0ZW07XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgbG9hZGluZz86IGJvb2xlYW47XG4gIHJlYWRPbmx5PzogYm9vbGVhbjtcbiAgZGVuc2U/OiBib29sZWFuO1xuICBjbGVhcmFibGU/OiBib29sZWFuO1xuICBsYWJlbD86IHN0cmluZztcbiAgbWVudU9wdGlvbnM/OiBNZW51UHJvcHM7XG4gIGxhYmVsQ2xhc3M/OiBzdHJpbmc7XG4gIG1lbnVDbGFzcz86IHN0cmluZztcbiAgaXRlbUNsYXNzPzogc3RyaW5nO1xuICBwcmVwZW5kV2lkdGg/OiBudW1iZXI7IC8vIGluIHJlbVxuICBhcHBlbmRXaWR0aD86IG51bWJlcjsgLy8gaW4gcmVtXG4gIGl0ZW1IZWlnaHQ/OiBudW1iZXI7IC8vIGluIHB4XG4gIHZhcmlhbnQ/OiAnZGVmYXVsdCcgfCAnZmlsbGVkJyB8ICdvdXRsaW5lZCc7XG4gIGhpbnQ/OiBzdHJpbmc7XG4gIGVycm9yTWVzc2FnZXM/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgc3VjY2Vzc01lc3NhZ2VzPzogc3RyaW5nIHwgc3RyaW5nW107XG4gIGhpZGVEZXRhaWxzPzogYm9vbGVhbjtcbiAgYXV0b1NlbGVjdEZpcnN0PzogYm9vbGVhbjtcbiAgY2hpcHM/OiBib29sZWFuO1xuICBub0ZpbHRlcj86IGJvb2xlYW47XG4gIGhpZGVOb0RhdGE/OiBib29sZWFuO1xuICBub0RhdGFUZXh0Pzogc3RyaW5nO1xuICBmaWx0ZXI/OiAoaXRlbTogVEl0ZW0sIHF1ZXJ5VGV4dDogc3RyaW5nKSA9PiBib29sZWFuO1xuICBoaWRlU2VsZWN0ZWQ/OiBib29sZWFuO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgcmV0dXJuT2JqZWN0PzogYm9vbGVhbjtcbiAgY3VzdG9tVmFsdWU/OiBib29sZWFuO1xuICBoaWRlQ3VzdG9tVmFsdWU/OiBib29sZWFuO1xufVxuXG5kZWZpbmVPcHRpb25zKHtcbiAgbmFtZTogJ1J1aUF1dG9Db21wbGV0ZScsXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG59KTtcblxuY29uc3QgbW9kZWxWYWx1ZSA9IGRlZmluZU1vZGVsPEF1dG9Db21wbGV0ZU1vZGVsVmFsdWU8VFZhbHVlPj4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuY29uc3Qgc2VhcmNoSW5wdXRNb2RlbCA9IGRlZmluZU1vZGVsPHN0cmluZz4oJ3NlYXJjaElucHV0JywgeyBkZWZhdWx0OiAnJyB9KTtcblxuY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8QXV0b0NvbXBsZXRlUHJvcHM8VFZhbHVlLCBUSXRlbT4+KCksIHtcbiAgb3B0aW9uczogKCkgPT4gW10sXG4gIGRpc2FibGVkOiBmYWxzZSxcbiAgbG9hZGluZzogZmFsc2UsXG4gIHJlYWRPbmx5OiBmYWxzZSxcbiAgZGVuc2U6IGZhbHNlLFxuICBjbGVhcmFibGU6IGZhbHNlLFxuICBoaWRlRGV0YWlsczogZmFsc2UsXG4gIGNoaXBzOiBmYWxzZSxcbiAgbGFiZWw6ICdTZWxlY3QnLFxuICBtZW51T3B0aW9uczogdW5kZWZpbmVkLFxuICBwcmVwZW5kV2lkdGg6IDAsXG4gIGFwcGVuZFdpZHRoOiAwLFxuICB2YXJpYW50OiAnZGVmYXVsdCcsXG4gIGhpbnQ6IHVuZGVmaW5lZCxcbiAga2V5QXR0cjogdW5kZWZpbmVkLFxuICB0ZXh0QXR0cjogdW5kZWZpbmVkLFxuICBpdGVtSGVpZ2h0OiB1bmRlZmluZWQsXG4gIGVycm9yTWVzc2FnZXM6ICgpID0+IFtdLFxuICBzdWNjZXNzTWVzc2FnZXM6ICgpID0+IFtdLFxuICBhdXRvU2VsZWN0Rmlyc3Q6IGZhbHNlLFxuICBub0ZpbHRlcjogZmFsc2UsXG4gIGhpZGVOb0RhdGE6IGZhbHNlLFxuICBub0RhdGFUZXh0OiAnTm8gZGF0YSBhdmFpbGFibGUnLFxuICBoaWRlU2VsZWN0ZWQ6IGZhbHNlLFxuICBwbGFjZWhvbGRlcjogJycsXG4gIHJldHVybk9iamVjdDogZmFsc2UsXG4gIGN1c3RvbVZhbHVlOiBmYWxzZSxcbiAgaGlkZUN1c3RvbVZhbHVlOiBmYWxzZSxcbn0pO1xuXG5jb25zdCBzbG90cyA9IHVzZVNsb3RzKCk7XG5cbmNvbnN0IHsgZGVuc2UsIGRpc2FibGVkLCBvcHRpb25zIH0gPSB0b1JlZnMocHJvcHMpO1xuXG5jb25zdCB7IGdldFRleHQsIGdldElkZW50aWZpZXIgfSA9IHVzZURyb3Bkb3duT3B0aW9uUHJvcGVydHk8VFZhbHVlLCBUSXRlbT4oe1xuICBrZXlBdHRyOiBwcm9wcy5rZXlBdHRyLFxuICB0ZXh0QXR0cjogcHJvcHMudGV4dEF0dHIsXG59KTtcblxuY29uc3QgdGV4dElucHV0ID0gcmVmKCk7XG5jb25zdCBhY3RpdmF0b3IgPSByZWYoKTtcbmNvbnN0IG1lbnVSZWYgPSByZWYoKTtcbmNvbnN0IG1lbnVXcmFwcGVyUmVmID0gcmVmKCk7XG5cbmNvbnN0IHsgZm9jdXNlZDogYWN0aXZhdG9yRm9jdXNlZFdpdGhpbiB9ID0gdXNlRm9jdXNXaXRoaW4oYWN0aXZhdG9yKTtcbmNvbnN0IHsgZm9jdXNlZDogbWVudVdyYXBwZXJGb2N1c2VkV2l0aGluIH0gPSB1c2VGb2N1c1dpdGhpbihtZW51V3JhcHBlclJlZik7XG5jb25zdCB7IGZvY3VzZWQ6IHNlYXJjaElucHV0Rm9jdXNlZCB9ID0gdXNlRm9jdXModGV4dElucHV0KTtcbmNvbnN0IHsgZm9jdXNlZDogYWN0aXZhdG9yRm9jdXNlZCB9ID0gdXNlRm9jdXMoYWN0aXZhdG9yKTtcblxuY29uc3QgcmVuZGVyZWRPcHRpb25zID0gcmVmPENvbXBvbmVudFB1YmxpY0luc3RhbmNlW10+KFtdKTtcblxuY29uc3Qge1xuICBpbnRlcm5hbFNlYXJjaCxcbiAgZmlsdGVyZWRPcHRpb25zLFxuICBqdXN0T3BlbmVkLFxuICB1cGRhdGVJbnRlcm5hbFNlYXJjaCxcbiAgdGV4dFZhbHVlVG9Qcm9wZXJWYWx1ZSxcbn0gPSB1c2VBdXRvQ29tcGxldGVTZWFyY2g8VEl0ZW0+KFxuICBvcHRpb25zLFxuICBzZWFyY2hJbnB1dE1vZGVsLFxuICB7XG4gICAga2V5QXR0cjogdG9SZWYocHJvcHMsICdrZXlBdHRyJyksXG4gICAgdGV4dEF0dHI6IHRvUmVmKHByb3BzLCAndGV4dEF0dHInKSxcbiAgICBub0ZpbHRlcjogdG9SZWYocHJvcHMsICdub0ZpbHRlcicpLFxuICAgIGZpbHRlcjogdG9SZWYocHJvcHMsICdmaWx0ZXInKSxcbiAgICBjdXN0b21WYWx1ZTogdG9SZWYocHJvcHMsICdjdXN0b21WYWx1ZScpLFxuICAgIGhpZGVDdXN0b21WYWx1ZTogdG9SZWYocHJvcHMsICdoaWRlQ3VzdG9tVmFsdWUnKSxcbiAgICByZXR1cm5PYmplY3Q6IHRvUmVmKHByb3BzLCAncmV0dXJuT2JqZWN0JyksXG4gIH0sXG4pO1xuXG4vLyBDYWxjdWxhdGUgbXVsdGlwbGUgZnJvbSBtb2RlbFZhbHVlIGRpcmVjdGx5IHRvIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY3lcbmNvbnN0IG11bHRpcGxlID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4gQXJyYXkuaXNBcnJheShnZXQobW9kZWxWYWx1ZSkpKTtcblxuY29uc3Qgc2hvdWxkQXBwbHlWYWx1ZUFzU2VhcmNoID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4gIShzbG90cy5zZWxlY3Rpb24gfHwgZ2V0KG11bHRpcGxlKSB8fCBwcm9wcy5jaGlwcykpO1xuXG4vLyBDcmVhdGUgYSB0ZW1wb3JhcnkgaXNPcGVuIHJlZiB0aGF0IHdlJ2xsIHN5bmMgd2l0aCB1c2VEcm9wZG93bk1lbnUncyBpc09wZW5cbmNvbnN0IHRlbXBJc09wZW4gPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuXG5jb25zdCB7XG4gIHZhbHVlLFxuICBzZXRTZWxlY3RlZCxcbn0gPSB1c2VBdXRvQ29tcGxldGVWYWx1ZTxBdXRvQ29tcGxldGVNb2RlbFZhbHVlPFRWYWx1ZT4sIFRJdGVtPihcbiAgbW9kZWxWYWx1ZSxcbiAgb3B0aW9ucyxcbiAge1xuICAgIGtleUF0dHI6IHRvUmVmKHByb3BzLCAna2V5QXR0cicpLFxuICAgIHJldHVybk9iamVjdDogdG9SZWYocHJvcHMsICdyZXR1cm5PYmplY3QnKSxcbiAgICBjdXN0b21WYWx1ZTogdG9SZWYocHJvcHMsICdjdXN0b21WYWx1ZScpLFxuICB9LFxuICB7XG4gICAgZ2V0SWRlbnRpZmllcixcbiAgICBnZXRUZXh0LFxuICAgIHRleHRWYWx1ZVRvUHJvcGVyVmFsdWUsXG4gICAgc2hvdWxkQXBwbHlWYWx1ZUFzU2VhcmNoLFxuICAgIGlzT3BlbjogdGVtcElzT3BlbixcbiAgICB1cGRhdGVJbnRlcm5hbFNlYXJjaCxcbiAgfSxcbik7XG5cbmNvbnN0IHtcbiAgY29udGFpbmVyUHJvcHMsXG4gIHdyYXBwZXJQcm9wcyxcbiAgcmVuZGVyZWREYXRhLFxuICBpc09wZW4sXG4gIG1lbnVXaWR0aCxcbiAgaXNBY3RpdmVJdGVtLFxuICBpdGVtSW5kZXhJblZhbHVlLFxuICBoaWdobGlnaHRlZEluZGV4LFxuICBtb3ZlSGlnaGxpZ2h0LFxuICBhcHBseUhpZ2hsaWdodGVkLFxuICBvcHRpb25zV2l0aFNlbGVjdGVkSGlkZGVuLFxufSA9IHVzZURyb3Bkb3duTWVudTxUVmFsdWUsIFRJdGVtPih7XG4gIGl0ZW1IZWlnaHQ6IHByb3BzLml0ZW1IZWlnaHQgPz8gKHByb3BzLmRlbnNlID8gMzAgOiA0OCksXG4gIGtleUF0dHI6IHByb3BzLmtleUF0dHIsXG4gIHRleHRBdHRyOiBwcm9wcy50ZXh0QXR0cixcbiAgb3B0aW9uczogZmlsdGVyZWRPcHRpb25zLFxuICBkZW5zZSxcbiAgdmFsdWUsXG4gIG1lbnVSZWYsXG4gIHNldFZhbHVlLFxuICBhdXRvU2VsZWN0Rmlyc3Q6IHByb3BzLmF1dG9TZWxlY3RGaXJzdCxcbiAgaGlkZVNlbGVjdGVkOiBwcm9wcy5oaWRlU2VsZWN0ZWQsXG59KTtcblxuLy8gU3luYyB0aGUgaXNPcGVuIHN0YXRlc1xuc3luY1JlZihpc09wZW4sIHRlbXBJc09wZW4pO1xuXG5jb25zdCB7XG4gIGZvY3VzZWRWYWx1ZUluZGV4LFxuICBtb3ZlU2VsZWN0ZWRWYWx1ZUhpZ2hsaWdodCxcbiAgb25FbnRlcixcbiAgb25JbnB1dERlbGV0ZVByZXNzZWQsXG4gIG9uVGFiLFxuICBzZXRWYWx1ZUZvY3VzLFxufSA9IHVzZUF1dG9Db21wbGV0ZUtleWJvYXJkTmF2aWdhdGlvbjxUSXRlbT4oXG4gIHtcbiAgICBjdXN0b21WYWx1ZTogdG9SZWYocHJvcHMsICdjdXN0b21WYWx1ZScpLFxuICAgIG11bHRpcGxlLFxuICB9LFxuICB7XG4gICAgYWN0aXZhdG9yLFxuICAgIGFwcGx5SGlnaGxpZ2h0ZWQsXG4gICAgY2xlYXIsXG4gICAgZmlsdGVyZWRPcHRpb25zLFxuICAgIGhpZ2hsaWdodGVkSW5kZXgsXG4gICAgaW50ZXJuYWxTZWFyY2gsXG4gICAgaXNPcGVuLFxuICAgIG9wdGlvbnMsXG4gICAgc2VhcmNoSW5wdXRGb2N1c2VkLFxuICAgIHNldFNlYXJjaEFzVmFsdWUsXG4gICAgdmFsdWUsXG4gIH0sXG4pO1xuXG5jb25zdCB7XG4gIGFueUZvY3VzZWQ6IGZvY3VzQW55Rm9jdXNlZCxcbiAgaW5wdXRDbGFzczogZm9jdXNJbnB1dENsYXNzLFxuICBvbkFjdGl2YXRvckZvY3VzZWQ6IGZvY3VzT25BY3RpdmF0b3JGb2N1c2VkLFxuICBvbklucHV0Rm9jdXNlZDogZm9jdXNPbklucHV0Rm9jdXNlZCxcbiAgc2V0SW5wdXRGb2N1czogZm9jdXNTZXRJbnB1dEZvY3VzLFxufSA9IHVzZUF1dG9Db21wbGV0ZUZvY3VzPFRJdGVtPihcbiAge1xuICAgIGN1c3RvbVZhbHVlOiB0b1JlZihwcm9wcywgJ2N1c3RvbVZhbHVlJyksXG4gICAgZGlzYWJsZWQsXG4gICAgc2hvdWxkQXBwbHlWYWx1ZUFzU2VhcmNoLFxuICB9LFxuICB7XG4gICAgYWN0aXZhdG9yRm9jdXNlZCxcbiAgICBhY3RpdmF0b3JGb2N1c2VkV2l0aGluLFxuICAgIGZpbHRlcmVkT3B0aW9ucyxcbiAgICBmb2N1c2VkVmFsdWVJbmRleCxcbiAgICBpbnRlcm5hbFNlYXJjaCxcbiAgICBpc09wZW4sXG4gICAganVzdE9wZW5lZCxcbiAgICBtZW51V3JhcHBlckZvY3VzZWRXaXRoaW4sXG4gICAgc2VhcmNoSW5wdXRGb2N1c2VkLFxuICAgIHNldFNlYXJjaEFzVmFsdWUsXG4gICAgdGV4dElucHV0LFxuICAgIHVwZGF0ZUludGVybmFsU2VhcmNoLFxuICB9LFxuKTtcblxuY29uc3QgdmFsdWVTZXQgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiBnZXQodmFsdWUpLmxlbmd0aCA+IDApO1xuXG5jb25zdCBsYWJlbFdpdGhRdW90ZSA9IGNvbXB1dGVkPHN0cmluZz4oKCkgPT4ge1xuICBpZiAoIXByb3BzLmxhYmVsKVxuICAgIHJldHVybiAnXCJcXFxcMjAwQlwiJztcblxuICByZXR1cm4gYCcgICR7cHJvcHMubGFiZWx9ICAnYDtcbn0pO1xuXG5jb25zdCBtZW51TWluSGVpZ2h0ID0gcmVmPG51bWJlcj4oMCk7XG5cbi8vIFVwZGF0ZSBtZW51IG1pbiBoZWlnaHQgb25seSB3aGVuIHJlbmRlcmVkIGRhdGEgY2hhbmdlc1xud2F0Y2gocmVuZGVyZWREYXRhLCBhc3luYyAoKSA9PiB7XG4gIGF3YWl0IG5leHRUaWNrKCk7XG4gIGNvbnN0IHJlbmRlcmVkT3B0aW9uc0RhdGEgPSBnZXQocmVuZGVyZWRPcHRpb25zKS5zbGljZSgwLCBNYXRoLm1pbig1LCBnZXQocmVuZGVyZWREYXRhKS5sZW5ndGgpKTtcbiAgbGV0IGhlaWdodCA9IDA7XG4gIGZvciAoY29uc3QgaXRlbSBvZiByZW5kZXJlZE9wdGlvbnNEYXRhKSB7XG4gICAgaWYgKGl0ZW0uJGVsKSB7XG4gICAgICBoZWlnaHQgKz0gaXRlbS4kZWwub2Zmc2V0SGVpZ2h0O1xuICAgIH1cbiAgfVxuICBzZXQobWVudU1pbkhlaWdodCwgaGVpZ2h0KTtcbn0sIHsgaW1tZWRpYXRlOiB0cnVlIH0pO1xuXG5jb25zdCBvdXRsaW5lZCA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHByb3BzLnZhcmlhbnQgPT09ICdvdXRsaW5lZCcpO1xuXG5jb25zdCBmbG9hdDogQ29tcHV0ZWRSZWY8Ym9vbGVhbj4gPSBsb2dpY0FuZChcbiAgbG9naWNPcihcbiAgICBpc09wZW4sXG4gICAgdmFsdWVTZXQsXG4gICAgc2VhcmNoSW5wdXRGb2N1c2VkLFxuICApLFxuICBvdXRsaW5lZCxcbik7XG5cbmNvbnN0IHZpcnR1YWxDb250YWluZXJQcm9wcyA9IGNvbXB1dGVkKCgpID0+ICh7XG4gIHN0eWxlOiBjb250YWluZXJQcm9wcy5zdHlsZSBhcyBhbnksXG4gIHJlZjogY29udGFpbmVyUHJvcHMucmVmIGFzIGFueSxcbn0pKTtcblxuZnVuY3Rpb24gdXBkYXRlU2VhcmNoSW5wdXQoZXZlbnQ6IGFueSkge1xuICBjb25zdCB2YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgc2V0KGlzT3BlbiwgdHJ1ZSk7XG4gIHVwZGF0ZUludGVybmFsU2VhcmNoKHZhbHVlKTtcbiAgc2V0KGp1c3RPcGVuZWQsIGZhbHNlKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2V0VmFsdWUodmFsOiBUSXRlbSwgaW5kZXg/OiBudW1iZXIsIHNraXBSZWZvY3VzZWQgPSBmYWxzZSk6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoaXNEZWZpbmVkKGluZGV4KSlcbiAgICBzZXQoaGlnaGxpZ2h0ZWRJbmRleCwgaW5kZXgpO1xuXG4gIGNvbnN0IGlzTXVsdGlwbGUgPSBnZXQobXVsdGlwbGUpO1xuXG4gIGlmIChpc011bHRpcGxlKSB7XG4gICAgY29uc3QgbmV3VmFsdWUgPSBbLi4uZ2V0KHZhbHVlKV07XG4gICAgY29uc3QgaW5kZXhJblZhbHVlID0gaXRlbUluZGV4SW5WYWx1ZSh2YWwpO1xuICAgIGlmIChpbmRleEluVmFsdWUgPT09IC0xKSB7XG4gICAgICB1cGRhdGVJbnRlcm5hbFNlYXJjaCgpO1xuICAgICAgbmV3VmFsdWUucHVzaCh2YWwpO1xuICAgIH1cblxuICAgIGVsc2UgeyBuZXdWYWx1ZS5zcGxpY2UoaW5kZXhJblZhbHVlLCAxKTsgfVxuICAgIHNldCh2YWx1ZSwgbmV3VmFsdWUpO1xuICB9XG4gIGVsc2Uge1xuICAgIGlmIChnZXQoc2hvdWxkQXBwbHlWYWx1ZUFzU2VhcmNoKSlcbiAgICAgIHVwZGF0ZUludGVybmFsU2VhcmNoKGdldFRleHQodmFsKSk7XG4gICAgZWxzZVxuICAgICAgdXBkYXRlSW50ZXJuYWxTZWFyY2goKTtcblxuICAgIHNldCh2YWx1ZSwgW3ZhbF0pO1xuICB9XG5cbiAgaWYgKCFpc011bHRpcGxlKSB7XG4gICAgaWYgKCFza2lwUmVmb2N1c2VkKSB7XG4gICAgICBzZXQoYWN0aXZhdG9yRm9jdXNlZCwgdHJ1ZSk7XG4gICAgICBnZXQoYWN0aXZhdG9yKT8uZm9jdXMoKTtcbiAgICAgIGF3YWl0IG5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgc2V0KGlzT3BlbiwgZmFsc2UpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgc2V0KGlzT3BlbiwgZmFsc2UpO1xuICAgIH1cbiAgfVxuICBlbHNlIGlmICghc2tpcFJlZm9jdXNlZCkge1xuICAgIHNldChzZWFyY2hJbnB1dEZvY3VzZWQsIHRydWUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNldFNlYXJjaEFzVmFsdWUoKSB7XG4gIGNvbnN0IHNlYXJjaFRvQmVWYWx1ZSA9IGdldChpbnRlcm5hbFNlYXJjaCk7XG4gIGlmICghc2VhcmNoVG9CZVZhbHVlKVxuICAgIHJldHVybjtcblxuICBjb25zdCBuZXdWYWx1ZTogVEl0ZW0gPSB0ZXh0VmFsdWVUb1Byb3BlclZhbHVlKHNlYXJjaFRvQmVWYWx1ZSk7XG4gIHNldFZhbHVlKG5ld1ZhbHVlLCB1bmRlZmluZWQsIHRydWUpO1xufVxuXG5mdW5jdGlvbiBjbGVhcigpOiB2b2lkIHtcbiAgdXBkYXRlSW50ZXJuYWxTZWFyY2goKTtcbiAgc2V0KG1vZGVsVmFsdWUsIChBcnJheS5pc0FycmF5KGdldChtb2RlbFZhbHVlKSkgPyBbXSA6IHVuZGVmaW5lZCkgYXMgQXV0b0NvbXBsZXRlTW9kZWxWYWx1ZTxUVmFsdWU+KTtcbn1cblxuZnVuY3Rpb24gY2hpcEF0dHJzKGl0ZW06IFRJdGVtLCBpbmRleDogbnVtYmVyKSB7XG4gIHJldHVybiB7XG4gICAgJ2RhdGEtaW5kZXgnOiBpbmRleCxcbiAgICAnZGF0YS12YWx1ZSc6IGdldElkZW50aWZpZXIoaXRlbSksXG4gICAgJ29uS2V5ZG93bic6IChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQgPT4ge1xuICAgICAgY29uc3QgeyBrZXkgfSA9IGV2ZW50O1xuICAgICAgaWYgKFsnQmFja3NwYWNlJywgJ0RlbGV0ZSddLmluY2x1ZGVzKGtleSkpXG4gICAgICAgIHNldFZhbHVlKGl0ZW0pO1xuICAgIH0sXG4gICAgJ29uQ2xpY2suc3RvcCc6ICgpOiB2b2lkID0+IHtcbiAgICAgIHNldFZhbHVlRm9jdXMoaW5kZXgpO1xuICAgIH0sXG4gICAgJ29uQ2xpY2s6Y2xvc2UnOiAoKTogdm9pZCA9PiB7XG4gICAgICBzZXRWYWx1ZShpdGVtKTtcbiAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiBzZXRTZWxlY3Rpb25SYW5nZShzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcik6IHZvaWQge1xuICBzZXQoc2VhcmNoSW5wdXRGb2N1c2VkLCB0cnVlKTtcbiAgZ2V0KHRleHRJbnB1dCk/LnNldFNlbGVjdGlvblJhbmdlPy4oc3RhcnQsIGVuZCk7XG59XG5cbi8vIE9wdGltaXplIG9wdGlvbnMgd2F0Y2hlciB3aXRoIHNoYWxsb3cgY29tcGFyaXNvbiBmaXJzdFxud2F0Y2gob3B0aW9ucywgKGN1cnIsIG9sZCkgPT4ge1xuICBpZiAoY3VyciA9PT0gb2xkIHx8IHByb3BzLmN1c3RvbVZhbHVlKVxuICAgIHJldHVybjtcblxuICAvLyBPbmx5IGRvIGRlZXAgY29tcGFyaXNvbiBpZiByZWZlcmVuY2UgY2hhbmdlZFxuICBpZiAoaXNFcXVhbChjdXJyLCBvbGQpKVxuICAgIHJldHVybjtcblxuICBzZXRTZWxlY3RlZChnZXQodmFsdWUpKTtcbn0pO1xuXG5mdW5jdGlvbiBhcnJvd0NsaWNrZWQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICBpZiAoZ2V0KGlzT3BlbikpIHtcbiAgICBzZXQoaXNPcGVuLCBmYWxzZSk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cbn1cblxuZGVmaW5lRXhwb3NlKHtcbiAgZm9jdXM6IGZvY3VzU2V0SW5wdXRGb2N1cyxcbiAgc2V0U2VsZWN0aW9uUmFuZ2UsXG59KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxSdWlNZW51XG4gICAgdi1tb2RlbD1cImlzT3BlblwiXG4gICAgOmNsYXNzPVwiJHN0eWxlLndyYXBwZXJcIlxuICAgIGRpc2FibGUtYXV0by1mb2N1c1xuICAgIHYtYmluZD1cIntcbiAgICAgIC4uLmdldFJvb3RBdHRycygkYXR0cnMpLFxuICAgICAgcGxhY2VtZW50OiAnYm90dG9tLXN0YXJ0JyxcbiAgICAgIGNsb3NlT25Db250ZW50Q2xpY2s6IGZhbHNlLFxuICAgICAgZnVsbFdpZHRoOiB0cnVlLFxuICAgICAgcGVyc2lzdE9uQWN0aXZhdG9yQ2xpY2s6IHRydWUsXG4gICAgICAuLi5tZW51T3B0aW9ucyxcbiAgICAgIG1lbnVDbGFzczogW1xuICAgICAgICB7IGhpZGRlbjogKG9wdGlvbnNXaXRoU2VsZWN0ZWRIaWRkZW4ubGVuZ3RoID09PSAwICYmIGN1c3RvbVZhbHVlICYmICFzbG90c1snbm8tZGF0YSddKSB9LFxuICAgICAgICBtZW51T3B0aW9ucz8ubWVudUNsYXNzLFxuICAgICAgXSxcbiAgICAgIGVycm9yTWVzc2FnZXMsXG4gICAgICBzdWNjZXNzTWVzc2FnZXMsXG4gICAgICBoaW50LFxuICAgICAgZGVuc2UsXG4gICAgICBzaG93RGV0YWlsczogIWhpZGVEZXRhaWxzLFxuICAgICAgZGlzYWJsZWQsXG4gICAgfVwiXG4gID5cbiAgICA8dGVtcGxhdGUgI2FjdGl2YXRvcj1cInsgYXR0cnMsIG9wZW4sIGhhc0Vycm9yLCBoYXNTdWNjZXNzIH1cIj5cbiAgICAgIDxzbG90XG4gICAgICAgIG5hbWU9XCJhY3RpdmF0b3JcIlxuICAgICAgICB2LWJpbmQ9XCJ7IGRpc2FibGVkLCB2YWx1ZSwgdmFyaWFudCwgcmVhZE9ubHksIGF0dHJzLCBvcGVuLCBoYXNFcnJvciwgaGFzU3VjY2VzcyB9XCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIHJlZj1cImFjdGl2YXRvclwiXG4gICAgICAgICAgY2xhc3M9XCJncm91cFwiXG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgJHN0eWxlLmFjdGl2YXRvcixcbiAgICAgICAgICAgIGxhYmVsQ2xhc3MsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFskc3R5bGUuZGlzYWJsZWRdOiBkaXNhYmxlZCxcbiAgICAgICAgICAgICAgWyRzdHlsZS5yZWFkb25seV06IHJlYWRPbmx5LFxuICAgICAgICAgICAgICBbJHN0eWxlLm91dGxpbmVkXTogb3V0bGluZWQsXG4gICAgICAgICAgICAgIFskc3R5bGUuZGVuc2VdOiBkZW5zZSxcbiAgICAgICAgICAgICAgWyRzdHlsZS5mbG9hdF06IGZsb2F0LFxuICAgICAgICAgICAgICBbJHN0eWxlLm9wZW5lZF06IG9wZW4sXG4gICAgICAgICAgICAgIFskc3R5bGVbJ3dpdGgtdmFsdWUnXV06IHZhbHVlU2V0LFxuICAgICAgICAgICAgICBbJHN0eWxlWyd3aXRoLWVycm9yJ11dOiBoYXNFcnJvcixcbiAgICAgICAgICAgICAgWyRzdHlsZVsnd2l0aC1zdWNjZXNzJ11dOiBoYXNTdWNjZXNzICYmICFoYXNFcnJvcixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgdi1iaW5kPVwie1xuICAgICAgICAgICAgLi4uZ2V0Tm9uUm9vdEF0dHJzKCRhdHRycywgWydvbkNsaWNrJywgJ2NsYXNzJ10pLFxuICAgICAgICAgICAgLi4uKHJlYWRPbmx5ID8ge30gOiBhdHRycykgfVxuICAgICAgICAgIFwiXG4gICAgICAgICAgZGF0YS1pZD1cImFjdGl2YXRvclwiXG4gICAgICAgICAgOnRhYmluZGV4PVwiZGlzYWJsZWQgfHwgcmVhZE9ubHkgPyAtMSA6IDBcIlxuICAgICAgICAgIEBjbGljaz1cImZvY3VzU2V0SW5wdXRGb2N1cygpXCJcbiAgICAgICAgICBAZm9jdXM9XCJmb2N1c09uQWN0aXZhdG9yRm9jdXNlZCgpXCJcbiAgICAgICAgICBAa2V5ZG93bi5lbnRlcj1cIm9uRW50ZXIoJGV2ZW50KVwiXG4gICAgICAgICAgQGtleWRvd24udGFiPVwib25UYWIoJGV2ZW50KVwiXG4gICAgICAgICAgQGtleWRvd24ubGVmdD1cIm1vdmVTZWxlY3RlZFZhbHVlSGlnaGxpZ2h0KCRldmVudCwgZmFsc2UpXCJcbiAgICAgICAgICBAa2V5ZG93bi5yaWdodD1cIm1vdmVTZWxlY3RlZFZhbHVlSGlnaGxpZ2h0KCRldmVudCwgdHJ1ZSlcIlxuICAgICAgICAgIEBrZXlkb3duLnVwLnByZXZlbnQ9XCJtb3ZlSGlnaGxpZ2h0KHRydWUpXCJcbiAgICAgICAgICBAa2V5ZG93bi5kb3duLnByZXZlbnQ9XCJtb3ZlSGlnaGxpZ2h0KGZhbHNlKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgdi1pZj1cIm91dGxpbmVkIHx8ICghdmFsdWVTZXQgJiYgIXNlYXJjaElucHV0Rm9jdXNlZClcIlxuICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgICAkc3R5bGUubGFiZWwsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAnYWJzb2x1dGUnOiBvdXRsaW5lZCxcbiAgICAgICAgICAgICAgICAncHItMic6ICF2YWx1ZVNldCAmJiAhb3BlbiAmJiBvdXRsaW5lZCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzbG90XG4gICAgICAgICAgICAgIG5hbWU9XCJhY3RpdmF0b3IubGFiZWxcIlxuICAgICAgICAgICAgICB2LWJpbmQ9XCJ7IHZhbHVlIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBsYWJlbCB9fVxuICAgICAgICAgICAgPC9zbG90PlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8ZGl2IDpjbGFzcz1cIiRzdHlsZS52YWx1ZVwiPlxuICAgICAgICAgICAgPHRlbXBsYXRlXG4gICAgICAgICAgICAgIHYtZm9yPVwiKGl0ZW0sIGkpIGluIHZhbHVlXCJcbiAgICAgICAgICAgICAgOmtleT1cImdldElkZW50aWZpZXIoaXRlbSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8UnVpQ2hpcFxuICAgICAgICAgICAgICAgIHYtaWY9XCJjaGlwc1wiXG4gICAgICAgICAgICAgICAgOmtleT1cImdldFRleHRUb2tlbihnZXRJZGVudGlmaWVyKGl0ZW0pKVwiXG4gICAgICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICAgICAgOnNpemU9XCJkZW5zZSA/ICdzbScgOiAnbWQnXCJcbiAgICAgICAgICAgICAgICBjbG9zZWFibGVcbiAgICAgICAgICAgICAgICA6Y2xhc3M9XCJ7ICdsZWFkaW5nLTMnOiBkZW5zZSB9XCJcbiAgICAgICAgICAgICAgICBjbGlja2FibGVcbiAgICAgICAgICAgICAgICB2LWJpbmQ9XCJjaGlwQXR0cnMoaXRlbSwgaSlcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXhcIj5cbiAgICAgICAgICAgICAgICAgIDxzbG90XG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJzZWxlY3Rpb24ucHJlcGVuZFwiXG4gICAgICAgICAgICAgICAgICAgIDppbmRleD1cImlcIlxuICAgICAgICAgICAgICAgICAgICB2LWJpbmQ9XCJ7IGl0ZW0gfVwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPHNsb3RcbiAgICAgICAgICAgICAgICAgICAgOmluZGV4PVwiaVwiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJzZWxlY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICB2LWJpbmQ9XCJ7IGl0ZW0gfVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IGdldFRleHQoaXRlbSkgfX1cbiAgICAgICAgICAgICAgICAgIDwvc2xvdD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9SdWlDaGlwPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgdi1lbHNlLWlmPVwibXVsdGlwbGUgfHwgKCghc2VhcmNoSW5wdXRGb2N1c2VkKSAmJiAoc2xvdHNbJ3NlbGVjdGlvbi5wcmVwZW5kJ10gfHwgc2xvdHMuc2VsZWN0aW9uKSlcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c2xvdFxuICAgICAgICAgICAgICAgICAgbmFtZT1cInNlbGVjdGlvbi5wcmVwZW5kXCJcbiAgICAgICAgICAgICAgICAgIDppbmRleD1cImlcIlxuICAgICAgICAgICAgICAgICAgdi1iaW5kPVwieyBpdGVtIH1cIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPHNsb3RcbiAgICAgICAgICAgICAgICAgIHYtaWY9XCJtdWx0aXBsZSB8fCBzbG90cy5zZWxlY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgOmluZGV4PVwiaVwiXG4gICAgICAgICAgICAgICAgICBuYW1lPVwic2VsZWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgIHYtYmluZD1cInsgaXRlbSwgY2hpcEF0dHJzOiBjaGlwQXR0cnMoaXRlbSwgaSkgfVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgZ2V0VGV4dChpdGVtKSB9fVxuICAgICAgICAgICAgICAgIDwvc2xvdD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHJlZj1cInRleHRJbnB1dFwiXG4gICAgICAgICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgOnZhbHVlPVwiaW50ZXJuYWxTZWFyY2hcIlxuICAgICAgICAgICAgICBjbGFzcz1cImJnLXRyYW5zcGFyZW50IG91dGxpbmUtbm9uZVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgOnBsYWNlaG9sZGVyPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICA6Y2xhc3M9XCJmb2N1c0lucHV0Q2xhc3NcIlxuICAgICAgICAgICAgICBAa2V5ZG93bi5kZWxldGU9XCJvbklucHV0RGVsZXRlUHJlc3NlZCgpXCJcbiAgICAgICAgICAgICAgQGlucHV0LnN0b3A9XCJ1cGRhdGVTZWFyY2hJbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgQGZvY3VzPVwiZm9jdXNPbklucHV0Rm9jdXNlZCgpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8UnVpQnV0dG9uXG4gICAgICAgICAgICB2LWlmPVwiY2xlYXJhYmxlICYmIHZhbHVlU2V0ICYmICFkaXNhYmxlZFwiXG4gICAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgICBpY29uXG4gICAgICAgICAgICBzaXplPVwic21cIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICBjb2xvcj1cImVycm9yXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZ3JvdXAtaG92ZXI6IXZpc2libGVcIlxuICAgICAgICAgICAgOmNsYXNzPVwiWyRzdHlsZS5jbGVhciwgZm9jdXNBbnlGb2N1c2VkICYmICchdmlzaWJsZScsIHtcbiAgICAgICAgICAgICAgJ21yLTInOiAhZGVuc2UsXG4gICAgICAgICAgICB9XVwiXG4gICAgICAgICAgICBAY2xpY2suc3RvcC5wcmV2ZW50PVwiY2xlYXIoKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFJ1aUljb25cbiAgICAgICAgICAgICAgbmFtZT1cImx1LXhcIlxuICAgICAgICAgICAgICBzaXplPVwiMThcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1J1aUJ1dHRvbj5cblxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICA6Y2xhc3M9XCIkc3R5bGUuaWNvbl9fd3JhcHBlclwiXG4gICAgICAgICAgICBAY2xpY2s9XCJhcnJvd0NsaWNrZWQoJGV2ZW50KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFJ1aUljb25cbiAgICAgICAgICAgICAgOmNsYXNzPVwiWyRzdHlsZS5pY29uLCB7ICdyb3RhdGUtMTgwJzogb3BlbiB9XVwiXG4gICAgICAgICAgICAgIDpzaXplPVwiZGVuc2UgPyAxNiA6IDI0XCJcbiAgICAgICAgICAgICAgbmFtZT1cImx1LWNoZXZyb24tZG93blwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgIDxSdWlQcm9ncmVzc1xuICAgICAgICAgICAgdi1pZj1cImxvYWRpbmdcIlxuICAgICAgICAgICAgY2xhc3M9XCJhYnNvbHV0ZSBsZWZ0LTAgYm90dG9tLTAgdy1mdWxsXCJcbiAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICB0aGlja25lc3M9XCIzXCJcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJpbmRldGVybWluYXRlXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGZpZWxkc2V0XG4gICAgICAgICAgdi1pZj1cIm91dGxpbmVkXCJcbiAgICAgICAgICA6Y2xhc3M9XCIkc3R5bGUuZmllbGRzZXRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGxlZ2VuZCA6Y2xhc3M9XCJ7ICdweC0yJzogZmxvYXQgfVwiIC8+XG4gICAgICAgIDwvZmllbGRzZXQ+XG4gICAgICA8L3Nsb3Q+XG4gICAgPC90ZW1wbGF0ZT5cbiAgICA8dGVtcGxhdGUgI2RlZmF1bHQ9XCJ7IHdpZHRoIH1cIj5cbiAgICAgIDxkaXYgcmVmPVwibWVudVdyYXBwZXJSZWZcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIHYtaWY9XCJvcHRpb25zV2l0aFNlbGVjdGVkSGlkZGVuLmxlbmd0aCA+IDBcIlxuICAgICAgICAgIDpjbGFzcz1cIlskc3R5bGUubWVudSwgbWVudUNsYXNzXVwiXG4gICAgICAgICAgOnN0eWxlPVwieyB3aWR0aDogYCR7d2lkdGh9cHhgLCBtaW5XaWR0aDogbWVudVdpZHRoLCBtaW5IZWlnaHQ6IGAke21lbnVNaW5IZWlnaHR9cHhgIH1cIlxuICAgICAgICAgIHYtYmluZD1cInZpcnR1YWxDb250YWluZXJQcm9wc1wiXG4gICAgICAgICAgQHNjcm9sbD1cImNvbnRhaW5lclByb3BzLm9uU2Nyb2xsXCJcbiAgICAgICAgICBAa2V5ZG93bi51cC5wcmV2ZW50PVwibW92ZUhpZ2hsaWdodCh0cnVlKVwiXG4gICAgICAgICAgQGtleWRvd24uZG93bi5wcmV2ZW50PVwibW92ZUhpZ2hsaWdodChmYWxzZSlcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgdi1iaW5kPVwid3JhcHBlclByb3BzXCJcbiAgICAgICAgICAgIHJlZj1cIm1lbnVSZWZcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxSdWlCdXR0b25cbiAgICAgICAgICAgICAgdi1mb3I9XCIoeyBpdGVtLCBfaW5kZXggfSkgaW4gcmVuZGVyZWREYXRhXCJcbiAgICAgICAgICAgICAgcmVmPVwicmVuZGVyZWRPcHRpb25zXCJcbiAgICAgICAgICAgICAgOmtleT1cImdldElkZW50aWZpZXIoaXRlbSk/LnRvU3RyaW5nKClcIlxuICAgICAgICAgICAgICA6YWN0aXZlPVwiaXNBY3RpdmVJdGVtKGl0ZW0pXCJcbiAgICAgICAgICAgICAgOnNpemU9XCJkZW5zZSA/ICdzbScgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICB2YXJpYW50PVwibGlzdFwiXG4gICAgICAgICAgICAgIDpjbGFzcz1cIntcbiAgICAgICAgICAgICAgICBoaWdobGlnaHRlZDogaGlnaGxpZ2h0ZWRJbmRleCA9PT0gX2luZGV4LFxuICAgICAgICAgICAgICAgIFskc3R5bGUuaGlnaGxpZ2h0ZWRdOiBoaWdobGlnaHRlZEluZGV4ID09PSBfaW5kZXgsXG4gICAgICAgICAgICAgICAgWyRzdHlsZS5hY3RpdmVdOiBpc0FjdGl2ZUl0ZW0oaXRlbSksXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICBAY2xpY2s9XCJzZXRWYWx1ZShpdGVtLCBfaW5kZXgpXCJcbiAgICAgICAgICAgICAgQG1vdXNlZG93bj1cImhpZ2hsaWdodGVkSW5kZXggPSBfaW5kZXhcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8dGVtcGxhdGUgI3ByZXBlbmQ+XG4gICAgICAgICAgICAgICAgPHNsb3RcbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJpdGVtLnByZXBlbmRcIlxuICAgICAgICAgICAgICAgICAgdi1iaW5kPVwieyBkaXNhYmxlZCwgaXRlbSwgYWN0aXZlOiBpc0FjdGl2ZUl0ZW0oaXRlbSkgfVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPHNsb3RcbiAgICAgICAgICAgICAgICBuYW1lPVwiaXRlbVwiXG4gICAgICAgICAgICAgICAgdi1iaW5kPVwieyBkaXNhYmxlZCwgaXRlbSwgYWN0aXZlOiBpc0FjdGl2ZUl0ZW0oaXRlbSkgfVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBnZXRUZXh0KGl0ZW0pIH19XG4gICAgICAgICAgICAgIDwvc2xvdD5cbiAgICAgICAgICAgICAgPHRlbXBsYXRlICNhcHBlbmQ+XG4gICAgICAgICAgICAgICAgPHNsb3RcbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJpdGVtLmFwcGVuZFwiXG4gICAgICAgICAgICAgICAgICB2LWJpbmQ9XCJ7IGRpc2FibGVkLCBpdGVtLCBhY3RpdmU6IGlzQWN0aXZlSXRlbShpdGVtKSB9XCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgPC9SdWlCdXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICB2LWVsc2UtaWY9XCIhaGlkZU5vRGF0YVwiXG4gICAgICAgICAgOnN0eWxlPVwieyB3aWR0aDogYCR7d2lkdGh9cHhgLCBtaW5XaWR0aDogbWVudVdpZHRoIH1cIlxuICAgICAgICAgIDpjbGFzcz1cIm1lbnVDbGFzc1wiXG4gICAgICAgID5cbiAgICAgICAgICA8c2xvdCBuYW1lPVwibm8tZGF0YVwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICB2LWlmPVwiIWN1c3RvbVZhbHVlXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwLTRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBub0RhdGFUZXh0IH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3Nsb3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC90ZW1wbGF0ZT5cbiAgPC9SdWlNZW51PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgbW9kdWxlPlxuLndyYXBwZXIge1xuICBAYXBwbHkgdy1mdWxsIGlubGluZS1mbGV4IGZsZXgtY29sO1xuXG4gIC5hY3RpdmF0b3Ige1xuICAgIEBhcHBseSByZWxhdGl2ZSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgdy1mdWxsO1xuICAgIEBhcHBseSBvdXRsaW5lLW5vbmUgZm9jdXMtd2l0aGluOm91dGxpbmUtbm9uZSBjdXJzb3ItcG9pbnRlciBtaW4taC0xNCBwbC0zIHB5LTIgcHItOCByb3VuZGVkO1xuICAgIEBhcHBseSBtLTAgYmctd2hpdGUgdHJhbnNpdGlvbi1hbGwgdGV4dC1ib2R5LTEgdGV4dC1sZWZ0IGhvdmVyOmJvcmRlci1ibGFjaztcblxuICAgICY6bm90KC5vdXRsaW5lZCkge1xuICAgICAgQGFwcGx5IGhvdmVyOmJnLWdyYXktMTAwIGZvY3VzLXdpdGhpbjpiZy1ncmF5LTEwMDtcbiAgICB9XG5cbiAgICAmLmRlbnNlIHtcbiAgICAgIEBhcHBseSBweS0xLjUgbWluLWgtMTA7XG5cbiAgICAgIH4gLmZpZWxkc2V0IHtcbiAgICAgICAgQGFwcGx5IHB4LTI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5kaXNhYmxlZCB7XG4gICAgICBAYXBwbHkgb3BhY2l0eS02NSB0ZXh0LXJ1aS10ZXh0LWRpc2FibGVkIGFjdGl2ZTp0ZXh0LXJ1aS10ZXh0LWRpc2FibGVkIGN1cnNvci1kZWZhdWx0IHBvaW50ZXItZXZlbnRzLW5vbmU7XG4gICAgfVxuXG4gICAgJi5yZWFkb25seSB7XG4gICAgICBAYXBwbHkgb3BhY2l0eS04MCBwb2ludGVyLWV2ZW50cy1ub25lIGN1cnNvci1kZWZhdWx0IGJnLWdyYXktNTA7XG4gICAgfVxuXG4gICAgJi5vdXRsaW5lZCB7XG4gICAgICBAYXBwbHkgYm9yZGVyLW5vbmUgaG92ZXI6Ym9yZGVyLW5vbmU7XG5cbiAgICAgICY6bm90KC5kaXNhYmxlZCk6bm90KC53aXRoLWVycm9yKTpub3QoLndpdGgtc3VjY2Vzcykge1xuICAgICAgICAmLm9wZW5lZCxcbiAgICAgICAgJjpmb2N1cyxcbiAgICAgICAgJjpmb2N1cy13aXRoaW4ge1xuICAgICAgICAgIEBhcHBseSBib3JkZXItcnVpLXByaW1hcnk7XG5cbiAgICAgICAgICB+IC5maWVsZHNldCB7XG4gICAgICAgICAgICBAYXBwbHkgYm9yZGVyLXJ1aS1wcmltYXJ5ICN7IWltcG9ydGFudH07XG4gICAgICAgICAgICBAYXBwbHkgYm9yZGVyLTIgI3shaW1wb3J0YW50fTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgfiAuZmllbGRzZXQge1xuICAgICAgICBAYXBwbHkgYm9yZGVyIGJvcmRlci1ibGFjay9bMC4yM107XG4gICAgICB9XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICB+IC5maWVsZHNldCB7XG4gICAgICAgICAgQGFwcGx5IGJvcmRlci1ibGFjaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmLmRpc2FibGVkIHtcbiAgICAgICAgfiAuZmllbGRzZXQge1xuICAgICAgICAgIEBhcHBseSBib3JkZXItZG90dGVkO1xuICAgICAgICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLWJsYWNrL1swLjIzXSAjeyFpbXBvcnRhbnR9O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYud2l0aC1zdWNjZXNzIHtcbiAgICAgICAgLmxhYmVsIHtcbiAgICAgICAgICBAYXBwbHkgdGV4dC1ydWktc3VjY2VzcyAjeyFpbXBvcnRhbnR9O1xuICAgICAgICB9XG5cbiAgICAgICAgfiAuZmllbGRzZXQge1xuICAgICAgICAgIEBhcHBseSBib3JkZXItcnVpLXN1Y2Nlc3MgI3shaW1wb3J0YW50fTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmLndpdGgtZXJyb3Ige1xuICAgICAgICAubGFiZWwge1xuICAgICAgICAgIEBhcHBseSB0ZXh0LXJ1aS1lcnJvciAjeyFpbXBvcnRhbnR9O1xuICAgICAgICB9XG5cbiAgICAgICAgfiAuZmllbGRzZXQge1xuICAgICAgICAgIEBhcHBseSBib3JkZXItcnVpLWVycm9yICN7IWltcG9ydGFudH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAubGFiZWwge1xuICAgICAgQGFwcGx5IHRleHQtcnVpLXRleHQtc2Vjb25kYXJ5O1xuICAgICAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSAyLjVyZW0pO1xuICAgIH1cblxuICAgIC5sYWJlbCxcbiAgICAudmFsdWUge1xuICAgICAgQGFwcGx5IGJsb2NrIHRydW5jYXRlIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTc1O1xuICAgIH1cblxuICAgIC52YWx1ZSB7XG4gICAgICBAYXBwbHkgZmxleCBnYXAtMSBmbGV4LXdyYXAgZmxleC0xO1xuICAgIH1cblxuICAgIC5jbGVhciB7XG4gICAgICBAYXBwbHkgbWwtYXV0byBzaHJpbmstMCBpbnZpc2libGU7XG4gICAgfVxuXG4gICAgLmljb24ge1xuICAgICAgQGFwcGx5IHRleHQtcnVpLXRleHQgdHJhbnNpdGlvbjtcblxuICAgICAgJl9fd3JhcHBlciB7XG4gICAgICAgIEBhcHBseSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWVuZDtcbiAgICAgICAgQGFwcGx5IGFic29sdXRlIHJpZ2h0LTMgdG9wLXB4IGJvdHRvbS0wO1xuICAgICAgfVxuICAgIH1cblxuICAgICYuZmxvYXQge1xuICAgICAgLmxhYmVsIHtcbiAgICAgICAgQGFwcGx5IC10cmFuc2xhdGUteS0yIHRvcC0wIHRleHQteHMgcHgtMTtcbiAgICAgIH1cblxuICAgICAgfiAuZmllbGRzZXQge1xuICAgICAgICBsZWdlbmQge1xuICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgY29udGVudDogdi1iaW5kKGxhYmVsV2l0aFF1b3RlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJjpub3QoLmRpc2FibGVkKSB7XG4gICAgICAgICYub3BlbmVkLFxuICAgICAgICAmLm9wZW5lZC53aXRoLXZhbHVlLFxuICAgICAgICAmOmZvY3VzLFxuICAgICAgICAmOmZvY3VzLndpdGgtdmFsdWUsXG4gICAgICAgICY6Zm9jdXMtd2l0aGluLFxuICAgICAgICAmOmZvY3VzLXdpdGhpbi53aXRoLXZhbHVlIHtcbiAgICAgICAgICAubGFiZWwge1xuICAgICAgICAgICAgQGFwcGx5IHRleHQtcnVpLXByaW1hcnk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgfiAuZmllbGRzZXQge1xuICAgICAgICAgICAgQGFwcGx5IGJvcmRlci1ydWktcHJpbWFyeTtcbiAgICAgICAgICAgIEBhcHBseSBib3JkZXItMiAjeyFpbXBvcnRhbnR9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5maWVsZHNldCB7XG4gICAgQGFwcGx5IGFic29sdXRlIHctZnVsbCBtaW4tdy0wIGgtW2NhbGMoMTAwJSswLjVyZW0pXSB0b3AtMCBsZWZ0LTAgcm91bmRlZCBwb2ludGVyLWV2ZW50cy1ub25lIHB4LTIgdHJhbnNpdGlvbi1hbGwgLW10LTI7XG5cbiAgICBsZWdlbmQge1xuICAgICAgQGFwcGx5IG9wYWNpdHktMCB0ZXh0LXhzIHRydW5jYXRlO1xuICAgICAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSAxcmVtKTtcblxuICAgICAgJjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiAnICc7XG4gICAgICB9XG5cbiAgICAgICY6YWZ0ZXIge1xuICAgICAgICBAYXBwbHkgdHJ1bmNhdGUgbWF4LXctZnVsbCBsZWFkaW5nLVswXTtcbiAgICAgICAgY29udGVudDogJ1xcMjAwQic7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi5tZW51IHtcbiAgQGFwcGx5IG92ZXJmbG93LXktYXV0byBtYXgtaC02MCBtaW4tdy1bMi41cmVtXTtcbn1cblxuLmhpZ2hsaWdodGVkIHtcbiAgQGFwcGx5IGJnLXJ1aS1ncmV5LTIwMCAjeyFpbXBvcnRhbnR9O1xuXG4gICYuYWN0aXZlIHtcbiAgICBAYXBwbHkgYmctcnVpLWdyZXktMzAwICN7IWltcG9ydGFudH07XG4gIH1cbn1cblxuOmdsb2JhbCguZGFyaykge1xuICAud3JhcHBlciB7XG4gICAgLmFjdGl2YXRvciB7XG4gICAgICBAYXBwbHkgYmctdHJhbnNwYXJlbnQgdGV4dC1ydWktdGV4dDtcblxuICAgICAgJjpub3QoLm91dGxpbmVkKSB7XG4gICAgICAgIEBhcHBseSBob3ZlcjpiZy13aGl0ZS8xMCBmb2N1cy13aXRoaW46Ymctd2hpdGUvMTA7XG5cbiAgICAgICAgJi5kaXNhYmxlZCB7XG4gICAgICAgICAgQGFwcGx5IGJnLXdoaXRlLzEwO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYucmVhZG9ubHkge1xuICAgICAgICBAYXBwbHkgYmctd2hpdGUvMTA7XG4gICAgICB9XG5cbiAgICAgICYub3V0bGluZWQge1xuICAgICAgICB+IC5maWVsZHNldCB7XG4gICAgICAgICAgQGFwcGx5IGJvcmRlci13aGl0ZS9bMC4yM107XG4gICAgICAgIH1cblxuICAgICAgICAmLmRpc2FibGVkIHtcbiAgICAgICAgICB+IC5maWVsZHNldCB7XG4gICAgICAgICAgICBAYXBwbHkgYm9yZGVyLXdoaXRlL1swLjIzXSAjeyFpbXBvcnRhbnR9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgIH4gLmZpZWxkc2V0IHtcbiAgICAgICAgICAgIEBhcHBseSBib3JkZXItd2hpdGU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmhpZ2hsaWdodGVkIHtcbiAgICBAYXBwbHkgYmctcnVpLWdyZXktODAwICN7IWltcG9ydGFudH07XG5cbiAgICAmLmFjdGl2ZSB7XG4gICAgICBAYXBwbHkgYmctcnVpLWdyZXktNzAwICN7IWltcG9ydGFudH07XG4gICAgfVxuICB9XG59XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IGNvbXB1dGVkLCBvbk1vdW50ZWQsIHJlZiwgdHlwZSBTdHlsZVZhbHVlLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5pbXBvcnQgeyBUaW1lQWNjdXJhY3kgfSBmcm9tICdAL2NvbnN0cy90aW1lLWFjY3VyYWN5JztcbmltcG9ydCB7IGFzc2VydCB9IGZyb20gJ0AvdXRpbHMvYXNzZXJ0JztcblxuZXhwb3J0IHR5cGUgVGltZVBpY2tlclNlbGVjdGlvbiA9ICdob3VyJyB8ICdtaW51dGUnIHwgJ3NlY29uZCcgfCAnbWlsbGlzZWNvbmQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJ1aVRpbWVQaWNrZXJQcm9wcyB7XG4gIGFjY3VyYWN5PzogVGltZUFjY3VyYWN5O1xuICBib3JkZXJsZXNzPzogYm9vbGVhbjtcbn1cblxuY29uc3QgbW9kZWxWYWx1ZSA9IGRlZmluZU1vZGVsPERhdGUgfCB1bmRlZmluZWQ+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbmNvbnN0IHNlbGVjdGVkSG91ciA9IGRlZmluZU1vZGVsPG51bWJlciB8IHVuZGVmaW5lZD4oJ2hvdXInKTtcbmNvbnN0IHNlbGVjdGVkTWludXRlID0gZGVmaW5lTW9kZWw8bnVtYmVyIHwgdW5kZWZpbmVkPignbWludXRlJyk7XG5jb25zdCBzZWxlY3RlZFNlY29uZCA9IGRlZmluZU1vZGVsPG51bWJlciB8IHVuZGVmaW5lZD4oJ3NlY29uZCcpO1xuY29uc3Qgc2VsZWN0ZWRNaWxsaXNlY29uZCA9IGRlZmluZU1vZGVsPG51bWJlciB8IHVuZGVmaW5lZD4oJ21pbGxpc2Vjb25kJyk7XG5jb25zdCBlZGl0TW9kZSA9IGRlZmluZU1vZGVsPFRpbWVQaWNrZXJTZWxlY3Rpb24+KCdzZWxlY3Rpb24nLCB7IGRlZmF1bHQ6ICdob3VyJyB9KTtcblxuY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UnVpVGltZVBpY2tlclByb3BzPigpLCB7XG4gIGFjY3VyYWN5OiBUaW1lQWNjdXJhY3kuTUlOVVRFLFxuICBib3JkZXJsZXNzOiBmYWxzZSxcbn0pO1xuXG5jb25zdCBGVUxMX0NJUkNMRSA9IDM2MDtcbmNvbnN0IFRXRUxWRV9IT1VSUyA9IDEyO1xuXG5jb25zdCB0b3RhbEl0ZW1zUGVyTW9kZTogUmVjb3JkPFRpbWVQaWNrZXJTZWxlY3Rpb24sIG51bWJlcj4gPSB7XG4gIGhvdXI6IDEyLFxuICBtaW51dGU6IDYwLFxuICBzZWNvbmQ6IDYwLFxuICBtaWxsaXNlY29uZDogMTAwMCxcbn07XG5cbmNvbnN0IGludGVydmFsczogUmVjb3JkPFRpbWVQaWNrZXJTZWxlY3Rpb24sIG51bWJlcj4gPSB7XG4gIGhvdXI6IDEsXG4gIG1pbnV0ZTogNSxcbiAgc2Vjb25kOiA1LFxuICBtaWxsaXNlY29uZDogMTAwLFxufTtcblxuY29uc3QgaXNEcmFnZ2luZyA9IHJlZjxib29sZWFuPihmYWxzZSk7XG5jb25zdCBjbG9ja0ZhY2UgPSB1c2VUZW1wbGF0ZVJlZjxJbnN0YW5jZVR5cGU8dHlwZW9mIEhUTUxEaXZFbGVtZW50Pj4oJ2Nsb2NrRmFjZScpO1xuXG5jb25zdCBzaG93U2Vjb25kID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4gcHJvcHMuYWNjdXJhY3kgPT09IFRpbWVBY2N1cmFjeS5TRUNPTkQgfHwgcHJvcHMuYWNjdXJhY3kgPT09IFRpbWVBY2N1cmFjeS5NSUxMSVNFQ09ORCk7XG5jb25zdCBzaG93TWlsbGlzZWNvbmQgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiBwcm9wcy5hY2N1cmFjeSA9PT0gVGltZUFjY3VyYWN5Lk1JTExJU0VDT05EKTtcblxuY29uc3QgcGVyaW9kID0gY29tcHV0ZWQ8J1BNJyB8ICdBTSc+KCgpID0+IGlzRGVmaW5lZChzZWxlY3RlZEhvdXIpICYmIGdldChzZWxlY3RlZEhvdXIpID49IFRXRUxWRV9IT1VSUyA/ICdQTScgOiAnQU0nKTtcblxuY29uc3QgZGlzcGxheUhvdXIgPSBjb21wdXRlZDxudW1iZXIgfCB1bmRlZmluZWQ+KCgpID0+IHtcbiAgaWYgKCFpc0RlZmluZWQoc2VsZWN0ZWRIb3VyKSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgaG91clZhbHVlID0gZ2V0KHNlbGVjdGVkSG91cik7XG4gIGNvbnN0IGhvdXIgPSBob3VyVmFsdWUgJSBUV0VMVkVfSE9VUlM7XG4gIHJldHVybiBob3VyID09PSAwID8gVFdFTFZFX0hPVVJTIDogaG91cjtcbn0pO1xuXG5jb25zdCBlZGl0ZWRWYWx1ZSA9IGNvbXB1dGVkPG51bWJlciB8IHVuZGVmaW5lZD4oKCkgPT4ge1xuICBjb25zdCBtb2RlID0gZ2V0KGVkaXRNb2RlKTtcbiAgaWYgKG1vZGUgPT09ICdob3VyJykge1xuICAgIHJldHVybiBnZXQoZGlzcGxheUhvdXIpO1xuICB9XG4gIGVsc2UgaWYgKG1vZGUgPT09ICdtaW51dGUnKSB7XG4gICAgcmV0dXJuIGdldChzZWxlY3RlZE1pbnV0ZSk7XG4gIH1cbiAgZWxzZSBpZiAobW9kZSA9PT0gJ3NlY29uZCcpIHtcbiAgICByZXR1cm4gZ2V0KHNlbGVjdGVkU2Vjb25kKTtcbiAgfVxuICBlbHNlIHtcbiAgICByZXR1cm4gZ2V0KHNlbGVjdGVkTWlsbGlzZWNvbmQpO1xuICB9XG59KTtcblxuY29uc3QgZGlzcGxheUNsb2NrSGFuZENpcmNsZSA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHtcbiAgY29uc3QgbW9kZSA9IGdldChlZGl0TW9kZSk7XG4gIGlmIChtb2RlID09PSAnaG91cicgfHwgIWlzRGVmaW5lZChlZGl0ZWRWYWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgZWxzZSB7XG4gICAgY29uc3QgaW50ZXJ2YWwgPSBpbnRlcnZhbHNbbW9kZV07XG4gICAgY29uc3QgdmFsdWUgPSBnZXQoZWRpdGVkVmFsdWUpO1xuICAgIHJldHVybiB2YWx1ZSAlIGludGVydmFsICE9PSAwO1xuICB9XG59KTtcblxuY29uc3QgZG90U3R5bGUgPSBjb21wdXRlZDxTdHlsZVZhbHVlPigoKSA9PiAoe1xuICB0b3A6ICc1MCUnLFxuICBsZWZ0OiAnNTAlJyxcbiAgdHJhbnNmb3JtOiAndHJhbnNsYXRlKC01MCUsIC01MCUpJyxcbn0pKTtcblxuY29uc3QgY2xvY2tIYW5kU3R5bGUgPSBjb21wdXRlZDxTdHlsZVZhbHVlPigoKSA9PiB7XG4gIGlmICghaXNEZWZpbmVkKGVkaXRlZFZhbHVlKSkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuICBjb25zdCBjdXJyZW50VmFsdWUgPSBnZXQoZWRpdGVkVmFsdWUpO1xuICBjb25zdCB0b3RhbEl0ZW1zID0gdG90YWxJdGVtc1Blck1vZGVbZ2V0KGVkaXRNb2RlKV07XG4gIGNvbnN0IGFuZ2xlID0gKGN1cnJlbnRWYWx1ZSAqIChGVUxMX0NJUkNMRSAvIHRvdGFsSXRlbXMpKTtcblxuICByZXR1cm4ge1xuICAgIGhlaWdodDogJzM2JScsXG4gICAgdG9wOiAnMTQlJyxcbiAgICBsZWZ0OiAnNTAlJyxcbiAgICB0cmFuc2Zvcm1PcmlnaW46ICdib3R0b20gY2VudGVyJyxcbiAgICB0cmFuc2Zvcm06IGB0cmFuc2xhdGVYKC01MCUpIHJvdGF0ZSgke2FuZ2xlfWRlZylgLFxuICAgIHpJbmRleDogMTAsXG4gIH07XG59KTtcblxuY29uc3QgY2xvY2tIYW5kQ2lyY2xlU3R5bGUgPSBjb21wdXRlZDxTdHlsZVZhbHVlPigoKSA9PiB7XG4gIGlmICghaXNEZWZpbmVkKGVkaXRlZFZhbHVlKSkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuICBjb25zdCByYWRpdXMgPSAnMzglJztcbiAgY29uc3QgY3VycmVudFZhbHVlID0gZ2V0KGVkaXRlZFZhbHVlKTtcbiAgY29uc3QgdG90YWxJdGVtcyA9IHRvdGFsSXRlbXNQZXJNb2RlW2dldChlZGl0TW9kZSldO1xuICBjb25zdCBhbmdsZSA9IChjdXJyZW50VmFsdWUgKiAoRlVMTF9DSVJDTEUgLyB0b3RhbEl0ZW1zKSk7XG5cbiAgY29uc3QgcmFkaWFucyA9IChhbmdsZSAqIE1hdGguUEkpIC8gMTgwO1xuXG4gIGNvbnN0IHggPSA1MCArIHBhcnNlRmxvYXQocmFkaXVzKSAqIE1hdGguY29zKHJhZGlhbnMgLSBNYXRoLlBJIC8gMik7XG4gIGNvbnN0IHkgPSA1MCArIHBhcnNlRmxvYXQocmFkaXVzKSAqIE1hdGguc2luKHJhZGlhbnMgLSBNYXRoLlBJIC8gMik7XG5cbiAgcmV0dXJuIHtcbiAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICB0b3A6IGAke3l9JWAsXG4gICAgbGVmdDogYCR7eH0lYCxcbiAgICB3aWR0aDogJzEwcHgnLFxuICAgIGhlaWdodDogJzEwcHgnLFxuICAgIGJvcmRlclJhZGl1czogJzUwJScsXG4gICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlKC01MCUsIC01MCUpJyxcbiAgICB6SW5kZXg6IDExLFxuICB9O1xufSk7XG5cbmNvbnN0IGNsb2NrTnVtYmVycyA9IGNvbXB1dGVkPG51bWJlcltdPigoKSA9PiB7XG4gIGNvbnN0IG1vZGUgPSBnZXQoZWRpdE1vZGUpO1xuICBjb25zdCBpbnRlcnZhbCA9IGludGVydmFsc1ttb2RlXTtcbiAgY29uc3QgdG90YWwgPSB0b3RhbEl0ZW1zUGVyTW9kZVttb2RlXTtcbiAgY29uc3QgbnVtYmVycyA9IGdlbmVyYXRlTnVtYmVycyh0b3RhbCwgaW50ZXJ2YWwpO1xuICBpZiAobW9kZSA9PT0gJ2hvdXInKSB7XG4gICAgbnVtYmVyc1swXSA9IDEyO1xuICB9XG4gIHJldHVybiBudW1iZXJzO1xufSk7XG5cbmZ1bmN0aW9uIGdldE1vZGVsSG91cnMoKSB7XG4gIHJldHVybiBpc0RlZmluZWQobW9kZWxWYWx1ZSkgPyBuZXcgRGF0ZShnZXQobW9kZWxWYWx1ZSkpLmdldEhvdXJzKCkgOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGdldE1vZGVsTWludXRlcygpIHtcbiAgcmV0dXJuIGlzRGVmaW5lZChtb2RlbFZhbHVlKSA/IG5ldyBEYXRlKGdldChtb2RlbFZhbHVlKSkuZ2V0TWludXRlcygpIDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBnZXRNb2RlbFNlY29uZHMoKSB7XG4gIGNvbnN0IGFjY2VwdGVkQWNjdXJhY3k6IFRpbWVBY2N1cmFjeVtdID0gW1RpbWVBY2N1cmFjeS5TRUNPTkQsIFRpbWVBY2N1cmFjeS5NSUxMSVNFQ09ORF07XG4gIHJldHVybiBhY2NlcHRlZEFjY3VyYWN5LmluY2x1ZGVzKHByb3BzLmFjY3VyYWN5KSAmJiBpc0RlZmluZWQobW9kZWxWYWx1ZSlcbiAgICA/IG5ldyBEYXRlKGdldChtb2RlbFZhbHVlKSkuZ2V0U2Vjb25kcygpXG4gICAgOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGdldE1vZGVsTWlsbGlzZWNvbmRzKCkge1xuICByZXR1cm4gcHJvcHMuYWNjdXJhY3kgPT09IFRpbWVBY2N1cmFjeS5NSUxMSVNFQ09ORCAmJiBpc0RlZmluZWQobW9kZWxWYWx1ZSlcbiAgICA/IG5ldyBEYXRlKGdldChtb2RlbFZhbHVlKSkuZ2V0TWlsbGlzZWNvbmRzKClcbiAgICA6IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVOdW1iZXJzKHRvdGFsOiBudW1iZXIsIGludGVydmFsOiBudW1iZXIpOiBudW1iZXJbXSB7XG4gIGNvbnN0IG51bWJlcnM6IG51bWJlcltdID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdG90YWw7IGkgKz0gaW50ZXJ2YWwpIHtcbiAgICBudW1iZXJzLnB1c2goaSk7XG4gIH1cbiAgcmV0dXJuIG51bWJlcnM7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFZhbHVlKHZhbHVlPzogbnVtYmVyLCBwYWRkaW5nID0gMik6IHN0cmluZyB7XG4gIHJldHVybiB2YWx1ZSAhPT0gdW5kZWZpbmVkXG4gICAgPyB2YWx1ZS50b1N0cmluZygpLnBhZFN0YXJ0KHBhZGRpbmcsICcwJylcbiAgICA6ICctJy5yZXBlYXQocGFkZGluZyk7XG59XG5cbmZ1bmN0aW9uIG51bWJlclN0eWxlKG51bTogbnVtYmVyKTogU3R5bGVWYWx1ZSB7XG4gIGNvbnN0IHJhZGl1cyA9ICczOCUnO1xuICBjb25zdCB0b3RhbEl0ZW1zID0gdG90YWxJdGVtc1Blck1vZGVbZ2V0KGVkaXRNb2RlKV07XG4gIGNvbnN0IGFuZ2xlID0gKG51bSAqIChGVUxMX0NJUkNMRSAvIHRvdGFsSXRlbXMpKSAtIDkwO1xuXG4gIGNvbnN0IHJhZGlhbnMgPSAoYW5nbGUgKiBNYXRoLlBJKSAvIDE4MDtcbiAgY29uc3QgeCA9IDUwICsgcGFyc2VGbG9hdChyYWRpdXMpICogTWF0aC5jb3MocmFkaWFucyk7XG4gIGNvbnN0IHkgPSA1MCArIHBhcnNlRmxvYXQocmFkaXVzKSAqIE1hdGguc2luKHJhZGlhbnMpO1xuXG4gIHJldHVybiB7XG4gICAgdG9wOiBgJHt5fSVgLFxuICAgIGxlZnQ6IGAke3h9JWAsXG4gICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlKC01MCUsIC01MCUpJyxcbiAgfTtcbn1cblxuZnVuY3Rpb24gaXNTZWxlY3RlZE51bWJlcihudW06IG51bWJlcik6IGJvb2xlYW4ge1xuICBpZiAoIWlzRGVmaW5lZChlZGl0ZWRWYWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3QgbW9kZSA9IGdldChlZGl0TW9kZSk7XG4gIGlmIChtb2RlID09PSAnaG91cicpIHtcbiAgICByZXR1cm4gZ2V0KGRpc3BsYXlIb3VyKSA9PT0gbnVtO1xuICB9XG4gIGVsc2Uge1xuICAgIGNvbnN0IHZhbHVlID0gZ2V0KGVkaXRlZFZhbHVlKTtcbiAgICBjb25zdCBpbnRlcnZhbCA9IGludGVydmFsc1ttb2RlXTtcbiAgICByZXR1cm4gdmFsdWUgPT09IG51bSB8fCAodmFsdWUgJSBpbnRlcnZhbCA9PT0gMCAmJiB2YWx1ZSA9PT0gbnVtKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB0b2dnbGVBbVBtKCkge1xuICBpZiAoIWlzRGVmaW5lZChzZWxlY3RlZEhvdXIpKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChnZXQoc2VsZWN0ZWRIb3VyKSA8IFRXRUxWRV9IT1VSUykge1xuICAgIHNldChzZWxlY3RlZEhvdXIsIGdldChzZWxlY3RlZEhvdXIpICsgVFdFTFZFX0hPVVJTKTtcbiAgfVxuICBlbHNlIHtcbiAgICBzZXQoc2VsZWN0ZWRIb3VyLCBnZXQoc2VsZWN0ZWRIb3VyKSAtIFRXRUxWRV9IT1VSUyk7XG4gIH1cblxuICB1cGRhdGVNb2RlbFZhbHVlKCk7XG59XG5cbmZ1bmN0aW9uIHN0YXJ0RHJhZyhldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpIHtcbiAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgc2V0KGlzRHJhZ2dpbmcsIHRydWUpO1xuXG4gIGNvbnN0IGhhbmRsZU1vdmUgPSAobW92ZUV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCkgPT4ge1xuICAgIGlmICghZ2V0KGlzRHJhZ2dpbmcpIHx8ICFpc0RlZmluZWQoY2xvY2tGYWNlKSlcbiAgICAgIHJldHVybjtcblxuICAgIGNvbnN0IHJlY3QgPSBnZXQoY2xvY2tGYWNlKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBjZW50ZXJYID0gcmVjdC5sZWZ0ICsgcmVjdC53aWR0aCAvIDI7XG4gICAgY29uc3QgY2VudGVyWSA9IHJlY3QudG9wICsgcmVjdC5oZWlnaHQgLyAyO1xuXG4gICAgbGV0IGNsaWVudFgsIGNsaWVudFk7XG5cbiAgICBpZiAoJ3RvdWNoZXMnIGluIG1vdmVFdmVudCkge1xuICAgICAgY29uc3QgdG91Y2ggPSBtb3ZlRXZlbnQudG91Y2hlc1swXTtcbiAgICAgIGFzc2VydCh0b3VjaCk7XG4gICAgICBjbGllbnRYID0gdG91Y2guY2xpZW50WDtcbiAgICAgIGNsaWVudFkgPSB0b3VjaC5jbGllbnRZO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNsaWVudFggPSBtb3ZlRXZlbnQuY2xpZW50WDtcbiAgICAgIGNsaWVudFkgPSBtb3ZlRXZlbnQuY2xpZW50WTtcbiAgICB9XG5cbiAgICBjb25zdCB4ID0gY2xpZW50WCAtIGNlbnRlclg7XG4gICAgY29uc3QgeSA9IGNsaWVudFkgLSBjZW50ZXJZO1xuXG4gICAgbGV0IGFuZ2xlID0gTWF0aC5hdGFuMih5LCB4KSAqICgxODAgLyBNYXRoLlBJKSArIDkwO1xuICAgIGlmIChhbmdsZSA8IDApXG4gICAgICBhbmdsZSArPSBGVUxMX0NJUkNMRTtcblxuICAgIGNvbnN0IG1vZGUgPSBnZXQoZWRpdE1vZGUpO1xuICAgIGNvbnN0IHVuaXQgPSBNYXRoLnJvdW5kKGFuZ2xlIC8gKEZVTExfQ0lSQ0xFIC8gdG90YWxJdGVtc1Blck1vZGVbbW9kZV0pKSAlIHRvdGFsSXRlbXNQZXJNb2RlW21vZGVdO1xuICAgIGlmIChtb2RlID09PSAnaG91cicpIHtcbiAgICAgIGxldCBob3VyO1xuXG4gICAgICBob3VyID0gdW5pdDtcbiAgICAgIGlmIChob3VyID09PSAwKVxuICAgICAgICBob3VyID0gVFdFTFZFX0hPVVJTO1xuXG4gICAgICBpZiAoZ2V0KHBlcmlvZCkgPT09ICdQTScgJiYgaG91ciA8IFRXRUxWRV9IT1VSUykge1xuICAgICAgICBob3VyICs9IFRXRUxWRV9IT1VSUztcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKGdldChwZXJpb2QpID09PSAnQU0nICYmIGhvdXIgPT09IFRXRUxWRV9IT1VSUykge1xuICAgICAgICBob3VyID0gMDtcbiAgICAgIH1cblxuICAgICAgc2V0KHNlbGVjdGVkSG91ciwgaG91cik7XG4gICAgfVxuICAgIGVsc2UgaWYgKG1vZGUgPT09ICdtaW51dGUnKSB7XG4gICAgICBzZXQoc2VsZWN0ZWRNaW51dGUsIHVuaXQpO1xuICAgIH1cbiAgICBlbHNlIGlmIChtb2RlID09PSAnc2Vjb25kJykge1xuICAgICAgc2V0KHNlbGVjdGVkU2Vjb25kLCB1bml0KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBzZXQoc2VsZWN0ZWRNaWxsaXNlY29uZCwgdW5pdCk7XG4gICAgfVxuXG4gICAgdXBkYXRlTW9kZWxWYWx1ZSgpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUVuZCA9ICgpOiB2b2lkID0+IHtcbiAgICBzZXQoaXNEcmFnZ2luZywgZmFsc2UpO1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIGhhbmRsZU1vdmUpO1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIGhhbmRsZU1vdmUpO1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBoYW5kbGVFbmQpO1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgaGFuZGxlRW5kKTtcblxuICAgIGlmIChnZXQoZWRpdE1vZGUpID09PSAnaG91cicpIHtcbiAgICAgIHNldChlZGl0TW9kZSwgJ21pbnV0ZScpO1xuICAgIH1cbiAgICBlbHNlIGlmIChnZXQoc2hvd1NlY29uZCkgJiYgZ2V0KGVkaXRNb2RlKSA9PT0gJ21pbnV0ZScpIHtcbiAgICAgIHNldChlZGl0TW9kZSwgJ3NlY29uZCcpO1xuICAgIH1cbiAgICBlbHNlIGlmIChnZXQoc2hvd01pbGxpc2Vjb25kKSAmJiBnZXQoZWRpdE1vZGUpID09PSAnc2Vjb25kJykge1xuICAgICAgc2V0KGVkaXRNb2RlLCAnbWlsbGlzZWNvbmQnKTtcbiAgICB9XG4gIH07XG5cbiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgaGFuZGxlTW92ZSk7XG4gIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIGhhbmRsZU1vdmUpO1xuICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgaGFuZGxlRW5kKTtcbiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCBoYW5kbGVFbmQpO1xuXG4gIGhhbmRsZU1vdmUoZXZlbnQpO1xufVxuXG5mdW5jdGlvbiBzZWxlY3RCeUNsaWNrKG51bTogbnVtYmVyKSB7XG4gIGNvbnN0IG1vZGUgPSBnZXQoZWRpdE1vZGUpO1xuICBpZiAobW9kZSA9PT0gJ2hvdXInKSB7XG4gICAgbGV0IG5ld0hvdXIgPSBudW07XG5cbiAgICBpZiAoZ2V0KHBlcmlvZCkgPT09ICdQTScgJiYgbmV3SG91ciA8IFRXRUxWRV9IT1VSUykge1xuICAgICAgbmV3SG91ciArPSBUV0VMVkVfSE9VUlM7XG4gICAgfVxuXG4gICAgc2V0KHNlbGVjdGVkSG91ciwgbmV3SG91cik7XG4gICAgc2V0KGVkaXRNb2RlLCAnbWludXRlJyk7XG4gIH1cbiAgZWxzZSBpZiAobW9kZSA9PT0gJ21pbnV0ZScpIHtcbiAgICBzZXQoc2VsZWN0ZWRNaW51dGUsIG51bSk7XG4gICAgaWYgKGdldChzaG93U2Vjb25kKSlcbiAgICAgIHNldChlZGl0TW9kZSwgJ3NlY29uZCcpO1xuICB9XG4gIGVsc2UgaWYgKG1vZGUgPT09ICdzZWNvbmQnKSB7XG4gICAgc2V0KHNlbGVjdGVkU2Vjb25kLCBudW0pO1xuICAgIGlmIChnZXQoc2hvd01pbGxpc2Vjb25kKSkge1xuICAgICAgc2V0KGVkaXRNb2RlLCAnbWlsbGlzZWNvbmQnKTtcbiAgICB9XG4gIH1cbiAgZWxzZSBpZiAobW9kZSA9PT0gJ21pbGxpc2Vjb25kJykge1xuICAgIHNldChzZWxlY3RlZE1pbGxpc2Vjb25kLCBudW0pO1xuICB9XG5cbiAgdXBkYXRlTW9kZWxWYWx1ZSgpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVNb2RlbFZhbHVlKCkge1xuICBpZiAoIShpc0RlZmluZWQoc2VsZWN0ZWRIb3VyKSAmJiBpc0RlZmluZWQoc2VsZWN0ZWRNaW51dGUpKSkge1xuICAgIHJldHVybjtcbiAgfVxuICBuZXh0VGljaygoKSA9PiB7XG4gICAgY29uc3QgZGF0ZSA9IGlzRGVmaW5lZChtb2RlbFZhbHVlKSA/IG5ldyBEYXRlKGdldChtb2RlbFZhbHVlKSkgOiBuZXcgRGF0ZSgpO1xuICAgIGRhdGUuc2V0SG91cnMoZ2V0KHNlbGVjdGVkSG91cikpO1xuICAgIGRhdGUuc2V0TWludXRlcyhnZXQoc2VsZWN0ZWRNaW51dGUpKTtcbiAgICBkYXRlLnNldFNlY29uZHMoZ2V0KHNlbGVjdGVkU2Vjb25kKSA/PyAwKTtcbiAgICBkYXRlLnNldE1pbGxpc2Vjb25kcyhnZXQoc2VsZWN0ZWRNaWxsaXNlY29uZCkgPz8gMCk7XG4gICAgc2V0KG1vZGVsVmFsdWUsIGRhdGUpO1xuICB9KTtcbn1cblxub25Nb3VudGVkKCgpID0+IHtcbiAgc2V0KHNlbGVjdGVkSG91ciwgZ2V0TW9kZWxIb3VycygpKTtcbiAgc2V0KHNlbGVjdGVkTWludXRlLCBnZXRNb2RlbE1pbnV0ZXMoKSk7XG4gIHNldChzZWxlY3RlZFNlY29uZCwgZ2V0TW9kZWxTZWNvbmRzKCkpO1xuICBzZXQoc2VsZWN0ZWRNaWxsaXNlY29uZCwgZ2V0TW9kZWxNaWxsaXNlY29uZHMoKSk7XG4gIHNldChlZGl0TW9kZSwgJ2hvdXInKTtcbn0pO1xuXG53YXRjaChtb2RlbFZhbHVlLCAoKSA9PiB7XG4gIHNldChzZWxlY3RlZEhvdXIsIGdldE1vZGVsSG91cnMoKSk7XG4gIHNldChzZWxlY3RlZE1pbnV0ZSwgZ2V0TW9kZWxNaW51dGVzKCkpO1xuICBzZXQoc2VsZWN0ZWRTZWNvbmQsIGdldE1vZGVsU2Vjb25kcygpKTtcbiAgc2V0KHNlbGVjdGVkTWlsbGlzZWNvbmQsIGdldE1vZGVsTWlsbGlzZWNvbmRzKCkpO1xufSwgeyBkZWVwOiB0cnVlIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIntcbiAgICAgIFskc3R5bGVbJ3J1aS10aW1lcGlja2VyJ11dOiB0cnVlLFxuICAgICAgWyRzdHlsZS5ib3JkZXJlZF06ICFib3JkZXJsZXNzLFxuICAgIH1cIlxuICA+XG4gICAgPGRpdiA6Y2xhc3M9XCIkc3R5bGVbJ3J1aS1kaWdpdGFsLWRpc3BsYXknXVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyIGdhcC0xXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJ7XG4gICAgICAgICAgICBbJHN0eWxlWydydWktZGlnaXQnXV06IHRydWUsXG4gICAgICAgICAgICBbJHN0eWxlLmFjdGl2ZV06IGVkaXRNb2RlID09PSAnaG91cicsXG4gICAgICAgICAgfVwiXG4gICAgICAgICAgQGNsaWNrPVwiZWRpdE1vZGUgPSAnaG91cidcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZm9ybWF0VmFsdWUoZGlzcGxheUhvdXIpIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC0yeGwgZm9udC1zZW1pYm9sZFwiPlxuICAgICAgICAgIDpcbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJ7XG4gICAgICAgICAgICBbJHN0eWxlWydydWktZGlnaXQnXV06IHRydWUsXG4gICAgICAgICAgICBbJHN0eWxlLmFjdGl2ZV06IGVkaXRNb2RlID09PSAnbWludXRlJyxcbiAgICAgICAgICB9XCJcbiAgICAgICAgICBAY2xpY2s9XCJlZGl0TW9kZSA9ICdtaW51dGUnXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGZvcm1hdFZhbHVlKHNlbGVjdGVkTWludXRlKSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIHYtaWY9XCJzaG93U2Vjb25kXCJcbiAgICAgICAgICBjbGFzcz1cInRleHQtMnhsIGZvbnQtc2VtaWJvbGRcIlxuICAgICAgICA+XG4gICAgICAgICAgOlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIHYtaWY9XCJzaG93U2Vjb25kXCJcbiAgICAgICAgICA6Y2xhc3M9XCJ7XG4gICAgICAgICAgICBbJHN0eWxlWydydWktZGlnaXQnXV06IHRydWUsXG4gICAgICAgICAgICBbJHN0eWxlLmFjdGl2ZV06IGVkaXRNb2RlID09PSAnc2Vjb25kJyxcbiAgICAgICAgICB9XCJcbiAgICAgICAgICBAY2xpY2s9XCJlZGl0TW9kZSA9ICdzZWNvbmQnXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGZvcm1hdFZhbHVlKHNlbGVjdGVkU2Vjb25kKSB9fVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgdi1pZj1cInNob3dNaWxsaXNlY29uZFwiXG4gICAgICAgICAgY2xhc3M9XCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGRcIlxuICAgICAgICA+XG4gICAgICAgICAgLlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgdi1pZj1cInNob3dNaWxsaXNlY29uZFwiXG4gICAgICAgICAgY2xhc3M9XCIhdGV4dC1sZ1wiXG4gICAgICAgICAgOmNsYXNzPVwie1xuICAgICAgICAgICAgWyRzdHlsZS5hY3RpdmVdOiBlZGl0TW9kZSA9PT0gJ21pbGxpc2Vjb25kJyxcbiAgICAgICAgICAgIFskc3R5bGVbJ3J1aS1kaWdpdCddXTogdHJ1ZSxcbiAgICAgICAgICB9XCJcbiAgICAgICAgICBAY2xpY2s9XCJlZGl0TW9kZSA9ICdtaWxsaXNlY29uZCdcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZm9ybWF0VmFsdWUoc2VsZWN0ZWRNaWxsaXNlY29uZCwgMykgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXhsXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJydWktdGltZS1waWNrZXItcGVyaW9kIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgIEBjbGljaz1cInRvZ2dsZUFtUG0oKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgcGVyaW9kIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICByZWY9XCJjbG9ja0ZhY2VcIlxuICAgICAgOmNsYXNzPVwiJHN0eWxlWydydWktY2xvY2stZmFjZSddXCJcbiAgICAgIEBtb3VzZWRvd249XCJzdGFydERyYWcoJGV2ZW50KVwiXG4gICAgICBAdG91Y2hzdGFydD1cInN0YXJ0RHJhZygkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIiRzdHlsZVsncnVpLWNlbnRlci1kb3QnXVwiXG4gICAgICAgIDpzdHlsZT1cImRvdFN0eWxlXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiJHN0eWxlWydydWktY2xvY2staGFuZCddXCJcbiAgICAgICAgOnN0eWxlPVwiY2xvY2tIYW5kU3R5bGVcIlxuICAgICAgLz5cblxuICAgICAgPGRpdlxuICAgICAgICB2LWlmPVwiZGlzcGxheUNsb2NrSGFuZENpcmNsZVwiXG4gICAgICAgIDpjbGFzcz1cIiRzdHlsZVsncnVpLWNsb2NrLWhhbmQtY2lyY2xlJ11cIlxuICAgICAgICA6c3R5bGU9XCJjbG9ja0hhbmRDaXJjbGVTdHlsZVwiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2XG4gICAgICAgIHYtZm9yPVwibnVtIGluIGNsb2NrTnVtYmVyc1wiXG4gICAgICAgIDprZXk9XCJgbnVtLSR7bnVtfWBcIlxuICAgICAgICA6Y2xhc3M9XCJ7XG4gICAgICAgICAgWyRzdHlsZVsncnVpLWNsb2NrLW51bWJlciddXTogdHJ1ZSxcbiAgICAgICAgICBbJHN0eWxlWydpcy1zZWxlY3RlZCddXTogaXNTZWxlY3RlZE51bWJlcihudW0pLFxuICAgICAgICAgIFtgcnVpLSR7ZWRpdE1vZGV9LSR7bnVtLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKX1gXTogdHJ1ZSxcbiAgICAgICAgfVwiXG4gICAgICAgIDpzdHlsZT1cIm51bWJlclN0eWxlKG51bSlcIlxuICAgICAgICBAY2xpY2s9XCJzZWxlY3RCeUNsaWNrKG51bSlcIlxuICAgICAgPlxuICAgICAgICB7eyBudW0gfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBsYW5nPVwic2Nzc1wiIG1vZHVsZT5cbi5ydWktdGltZXBpY2tlciB7XG4gIEBhcHBseSBiZy13aGl0ZSBvdmVyZmxvdy1oaWRkZW4gdGV4dC1ydWktdGV4dCBwLTM7XG5cbiAgJi5ib3JkZXJlZCB7XG4gICAgQGFwcGx5IHJvdW5kZWQtbWQgc2hhZG93LXNtIGJvcmRlciBib3JkZXItcnVpLWdyZXktMjAwO1xuICB9XG59XG5cbi5ydWktZGlnaXRhbC1kaXNwbGF5IHtcbiAgQGFwcGx5IG1iLTIgdGV4dC1jZW50ZXI7XG59XG5cbi5ydWktZGlnaXQge1xuICBAYXBwbHkgdGV4dC0yeGwgZm9udC1zZW1pYm9sZCBjdXJzb3ItcG9pbnRlcjtcblxuICAmLmFjdGl2ZSB7XG4gICAgQGFwcGx5IHRleHQtcnVpLXByaW1hcnk7XG4gIH1cbn1cblxuLnJ1aS1jbG9jay1mYWNlIHtcbiAgQGFwcGx5IHJlbGF0aXZlIHJvdW5kZWQtZnVsbCB3LTY0IGgtNjQgbXgtYXV0byBib3JkZXIgYm9yZGVyLXJ1aS1ncmV5LTIwMDtcbn1cblxuLnJ1aS1jZW50ZXItZG90IHtcbiAgQGFwcGx5IGFic29sdXRlIHJvdW5kZWQtZnVsbCBiZy1ydWktcHJpbWFyeSB3LTMgaC0zO1xufVxuXG4ucnVpLWNsb2NrLWhhbmQge1xuICBAYXBwbHkgYWJzb2x1dGUgdy1bMS41cHhdIGJnLXJ1aS1wcmltYXJ5IHJvdW5kZWQtZnVsbDtcbn1cblxuLnJ1aS1jbG9jay1oYW5kLWNpcmNsZSB7XG4gIEBhcHBseSBhYnNvbHV0ZSBib3JkZXItMiBib3JkZXItcnVpLXByaW1hcnk7XG59XG5cbi5ydWktY2xvY2stbnVtYmVyIHtcbiAgQGFwcGx5IGFic29sdXRlIHRleHQtY2VudGVyIHRleHQtc20gZm9udC1tZWRpdW0gdy04IGgtOCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBob3ZlcjpiZy1ydWktcHJpbWFyeS1saWdodGVyIGN1cnNvci1wb2ludGVyIHJvdW5kZWQtZnVsbDtcblxuICAmLmlzLXNlbGVjdGVkIHtcbiAgICBAYXBwbHkgYmctcnVpLXByaW1hcnkgdGV4dC1ydWktZGFyay10ZXh0IGRhcms6dGV4dC1ydWktbGlnaHQtdGV4dCB6LTEwIGZvbnQtYm9sZDtcbiAgfVxufVxuXG46Z2xvYmFsKC5kYXJrKSB7XG4gIC5ydWktdGltZXBpY2tlciB7XG4gICAgQGFwcGx5IGJnLXJ1aS1ncmV5LTkwMDtcblxuICAgICYuYm9yZGVyZWQge1xuICAgICAgQGFwcGx5IGJvcmRlci1ydWktZ3JleS04MDA7XG4gICAgfVxuICB9XG5cbiAgLnJ1aS1jbG9jay1mYWNlIHtcbiAgICBAYXBwbHkgYm9yZGVyLXJ1aS1ncmV5LTgwMDtcbiAgfVxufVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG5pbXBvcnQgdHlwZSB7IFRpbWVBY2N1cmFjeSB9IGZyb20gJ0AvY29uc3RzL3RpbWUtYWNjdXJhY3knO1xuaW1wb3J0IFJ1aUJ1dHRvbiBmcm9tICdAL2NvbXBvbmVudHMvYnV0dG9ucy9idXR0b24vUnVpQnV0dG9uLnZ1ZSc7XG5pbXBvcnQgUnVpQ2FsZW5kYXIgZnJvbSAnQC9jb21wb25lbnRzL2NhbGVuZGFyL1J1aUNhbGVuZGFyLnZ1ZSc7XG5pbXBvcnQgeyB0aW1lem9uZXMgfSBmcm9tICdAL2NvbXBvbmVudHMvZGF0ZS10aW1lLXBpY2tlci90aW1lem9uZXMnO1xuaW1wb3J0IFJ1aUF1dG9Db21wbGV0ZSBmcm9tICdAL2NvbXBvbmVudHMvZm9ybXMvYXV0by1jb21wbGV0ZS9SdWlBdXRvQ29tcGxldGUudnVlJztcbmltcG9ydCBSdWlJY29uIGZyb20gJ0AvY29tcG9uZW50cy9pY29ucy9SdWlJY29uLnZ1ZSc7XG5pbXBvcnQgUnVpVGltZVBpY2tlciwgeyB0eXBlIFRpbWVQaWNrZXJTZWxlY3Rpb24gfSBmcm9tICdAL2NvbXBvbmVudHMvdGltZS1waWNrZXIvUnVpVGltZVBpY2tlci52dWUnO1xuXG5kZWZpbmVPcHRpb25zKHtcbiAgbmFtZTogJ1J1aURhdGVUaW1lUGlja2VyTWVudScsXG59KTtcblxuY29uc3Qgc2VsZWN0ZWREYXRlID0gZGVmaW5lTW9kZWw8RGF0ZSB8IHVuZGVmaW5lZD4oJ3NlbGVjdGVkRGF0ZScsIHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5jb25zdCBzZWxlY3RlZFRpbWUgPSBkZWZpbmVNb2RlbDxEYXRlIHwgdW5kZWZpbmVkPignc2VsZWN0ZWRUaW1lJywgeyByZXF1aXJlZDogdHJ1ZSB9KTtcbmNvbnN0IHNlbGVjdGVkSG91ciA9IGRlZmluZU1vZGVsPG51bWJlciB8IHVuZGVmaW5lZD4oJ3NlbGVjdGVkSG91cicsIHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5jb25zdCBzZWxlY3RlZE1pbnV0ZSA9IGRlZmluZU1vZGVsPG51bWJlciB8IHVuZGVmaW5lZD4oJ3NlbGVjdGVkTWludXRlJywgeyByZXF1aXJlZDogdHJ1ZSB9KTtcbmNvbnN0IHNlbGVjdGVkU2Vjb25kID0gZGVmaW5lTW9kZWw8bnVtYmVyIHwgdW5kZWZpbmVkPignc2VsZWN0ZWRTZWNvbmQnLCB7IHJlcXVpcmVkOiB0cnVlIH0pO1xuY29uc3Qgc2VsZWN0ZWRNaWxsaXNlY29uZCA9IGRlZmluZU1vZGVsPG51bWJlciB8IHVuZGVmaW5lZD4oJ3NlbGVjdGVkTWlsbGlzZWNvbmQnLCB7IHJlcXVpcmVkOiB0cnVlIH0pO1xuY29uc3QgdGltZVNlbGVjdGlvbiA9IGRlZmluZU1vZGVsPFRpbWVQaWNrZXJTZWxlY3Rpb24+KCd0aW1lU2VsZWN0aW9uJywgeyByZXF1aXJlZDogdHJ1ZSB9KTtcbmNvbnN0IHNlbGVjdGVkVGltZXpvbmUgPSBkZWZpbmVNb2RlbDxzdHJpbmcgfCB1bmRlZmluZWQ+KCdzZWxlY3RlZFRpbWV6b25lJywgeyByZXF1aXJlZDogdHJ1ZSB9KTtcbmNvbnN0IGNhbGVuZGFyTWVudU9wZW4gPSBkZWZpbmVNb2RlbDxib29sZWFuPignY2FsZW5kYXJNZW51T3BlbicsIHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbmRlZmluZVByb3BzPHtcbiAgYWNjdXJhY3k6IFRpbWVBY2N1cmFjeTtcbiAgbWF4RGF0ZT86IERhdGUgfCBudW1iZXI7XG4gIG1pbkRhdGU/OiBEYXRlIHwgbnVtYmVyO1xufT4oKTtcblxuY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPHtcbiAgJ3NldC1ub3cnOiBbXTtcbn0+KCk7XG5cbmRlZmluZVNsb3RzPHtcbiAgZGVmYXVsdDogKCkgPT4gYW55O1xufT4oKTtcblxuZnVuY3Rpb24gc2V0Tm93KCk6IHZvaWQge1xuICBlbWl0KCdzZXQtbm93Jyk7XG59XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiZmxleCBkaXZpZGUteCBkaXZpZGUtcnVpLWdyZXktMjAwIGRhcms6ZGl2aWRlLXJ1aS1ncmV5LTgwMFwiPlxuICAgIDxSdWlDYWxlbmRhclxuICAgICAgdi1tb2RlbD1cInNlbGVjdGVkRGF0ZVwiXG4gICAgICB2LW1vZGVsOm1lbnUtb3Blbj1cImNhbGVuZGFyTWVudU9wZW5cIlxuICAgICAgYm9yZGVybGVzc1xuICAgICAgOm1heC1kYXRlPVwibWF4RGF0ZVwiXG4gICAgICA6bWluLWRhdGU9XCJtaW5EYXRlXCJcbiAgICAvPlxuICAgIDxSdWlUaW1lUGlja2VyXG4gICAgICB2LW1vZGVsPVwic2VsZWN0ZWRUaW1lXCJcbiAgICAgIHYtbW9kZWw6aG91cj1cInNlbGVjdGVkSG91clwiXG4gICAgICB2LW1vZGVsOm1pbnV0ZT1cInNlbGVjdGVkTWludXRlXCJcbiAgICAgIHYtbW9kZWw6c2Vjb25kPVwic2VsZWN0ZWRTZWNvbmRcIlxuICAgICAgdi1tb2RlbDptaWxsaXNlY29uZD1cInNlbGVjdGVkTWlsbGlzZWNvbmRcIlxuICAgICAgdi1tb2RlbDpzZWxlY3Rpb249XCJ0aW1lU2VsZWN0aW9uXCJcbiAgICAgIDphY2N1cmFjeT1cImFjY3VyYWN5XCJcbiAgICAgIGJvcmRlcmxlc3NcbiAgICAvPlxuICAgIDxkaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtMyBwLTQgcGwtM1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICA8UnVpQnV0dG9uXG4gICAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgICBpY29uXG4gICAgICAgICAgICBkYXRhLWlkPVwic2V0LW5vd1wiXG4gICAgICAgICAgICBAY2xpY2s9XCJzZXROb3coKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFJ1aUljb25cbiAgICAgICAgICAgICAgbmFtZT1cImx1LWNsb2NrXCJcbiAgICAgICAgICAgICAgc2l6ZT1cIjE4XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9SdWlCdXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbFwiPlxuICAgICAgICAgIDxSdWlBdXRvQ29tcGxldGVcbiAgICAgICAgICAgIHYtbW9kZWw9XCJzZWxlY3RlZFRpbWV6b25lXCJcbiAgICAgICAgICAgIGhpZGUtZGV0YWlsc1xuICAgICAgICAgICAgbGFiZWw9XCJUaW1lem9uZVwiXG4gICAgICAgICAgICBjbGFzcz1cInB0LTAgcHItMFwiXG4gICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICAgICAgOm9wdGlvbnM9XCJ0aW1lem9uZXNcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHNsb3QgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuIiwiaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcbmltcG9ydCB7IHRpbWV6b25lcyB9IGZyb20gJ0AvY29tcG9uZW50cy9kYXRlLXRpbWUtcGlja2VyL3RpbWV6b25lcyc7XG5pbXBvcnQgeyBUaW1lQWNjdXJhY3kgfSBmcm9tICdAL2NvbnN0cy90aW1lLWFjY3VyYWN5JztcblxuZXhwb3J0IGZ1bmN0aW9uIGd1ZXNzVGltZXpvbmUoKSB7XG4gIGNvbnN0IHRpbWV6b25lID0gZGF5anMudHouZ3Vlc3MoKTtcbiAgcmV0dXJuIHRpbWV6b25lcy5maW5kKHR6ID0+IHR6ID09PSB0aW1lem9uZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmNsdWRlU2Vjb25kcyhhY2N1cmFjeTogVGltZUFjY3VyYWN5KTogYm9vbGVhbiB7XG4gIHJldHVybiBhY2N1cmFjeSA9PT0gVGltZUFjY3VyYWN5LlNFQ09ORCB8fCBhY2N1cmFjeSA9PT0gVGltZUFjY3VyYWN5Lk1JTExJU0VDT05EO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5jbHVkZU1pbGxpc2Vjb25kcyhhY2N1cmFjeTogVGltZUFjY3VyYWN5KTogYm9vbGVhbiB7XG4gIHJldHVybiBhY2N1cmFjeSA9PT0gVGltZUFjY3VyYWN5Lk1JTExJU0VDT05EO1xufVxuIiwiaW1wb3J0IHR5cGUgeyBEYXlqcyB9IGZyb20gJ2RheWpzJztcbmltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSAndnVlJztcbmltcG9ydCB0eXBlIHsgRGF0ZVRpbWVTZWdtZW50VHlwZSwgU2VnbWVudERhdGEgfSBmcm9tICdAL2NvbXBvbmVudHMvZGF0ZS10aW1lLXBpY2tlci90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IFRpbWVBY2N1cmFjeSB9IGZyb20gJ0AvY29uc3RzL3RpbWUtYWNjdXJhY3knO1xuaW1wb3J0IHsgaW5jbHVkZU1pbGxpc2Vjb25kcywgaW5jbHVkZVNlY29uZHMgfSBmcm9tICdAL2NvbXBvbmVudHMvZGF0ZS10aW1lLXBpY2tlci91dGlscyc7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VJbnB1dEhhbmRsZXIoZGF0YTogU2VnbWVudERhdGEsIGN1cnJlbnRWYWx1ZTogUmVmPG51bWJlciB8IHVuZGVmaW5lZD4pIHtcbiAgZnVuY3Rpb24gc2V0VmFsdWUoc2VnbWVudDogRGF0ZVRpbWVTZWdtZW50VHlwZSwgdmFsdWU/OiBudW1iZXIpIHtcbiAgICBpZiAoZ2V0KGRhdGFbc2VnbWVudF0pICE9PSB2YWx1ZSlcbiAgICAgIHNldChkYXRhW3NlZ21lbnRdLCB2YWx1ZSk7XG5cbiAgICBzZXQoY3VycmVudFZhbHVlLCB2YWx1ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBvbmx5U2V0KHNlZ21lbnQ6IERhdGVUaW1lU2VnbWVudFR5cGUsIHZhbHVlPzogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKGdldChkYXRhW3NlZ21lbnRdKSA9PT0gdmFsdWUpXG4gICAgICByZXR1cm47XG5cbiAgICBzZXQoZGF0YVtzZWdtZW50XSwgdmFsdWUpO1xuICB9XG5cbiAgZnVuY3Rpb24gdXBkYXRlKGRhdGU6IERheWpzLCBhY2N1cmFjeTogVGltZUFjY3VyYWN5KSB7XG4gICAgb25seVNldCgnWVlZWScsIGRhdGUueWVhcigpKTtcbiAgICBvbmx5U2V0KCdNTScsIGRhdGUubW9udGgoKSArIDEpO1xuICAgIG9ubHlTZXQoJ0REJywgZGF0ZS5kYXRlKCkpO1xuICAgIG9ubHlTZXQoJ0hIJywgZGF0ZS5ob3VyKCkpO1xuICAgIG9ubHlTZXQoJ21tJywgZGF0ZS5taW51dGUoKSk7XG4gICAgb25seVNldCgnc3MnLCBpbmNsdWRlU2Vjb25kcyhhY2N1cmFjeSkgPyBkYXRlLnNlY29uZCgpIDogdW5kZWZpbmVkKTtcbiAgICBvbmx5U2V0KCdTU1MnLCBpbmNsdWRlTWlsbGlzZWNvbmRzKGFjY3VyYWN5KSA/IGRhdGUubWlsbGlzZWNvbmQoKSA6IHVuZGVmaW5lZCk7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRDdXJyZW50KHNlZ21lbnQ6IERhdGVUaW1lU2VnbWVudFR5cGUpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBnZXQoZGF0YVtzZWdtZW50XSk7XG4gIH1cblxuICByZXR1cm4geyBnZXRDdXJyZW50LCBzZXRWYWx1ZSwgdXBkYXRlIH07XG59XG4iLCJpbXBvcnQgdHlwZSB7IFJlZiB9IGZyb20gJ3Z1ZSc7XG5cbmV4cG9ydCBjb25zdCBEQVRFX1RJTUVfU0VHTUVOVF9UWVBFUyA9IFtcbiAgJ0REJyxcbiAgJ01NJyxcbiAgJ1lZWVknLFxuICAnSEgnLFxuICAnbW0nLFxuICAnc3MnLFxuICAnU1NTJyxcbl0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIERhdGVUaW1lU2VnbWVudFR5cGUgPSB0eXBlb2YgREFURV9USU1FX1NFR01FTlRfVFlQRVNbbnVtYmVyXTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzRGF0ZVRpbWVTZWdtZW50VHlwZSh2YWx1ZTogc3RyaW5nKTogdmFsdWUgaXMgRGF0ZVRpbWVTZWdtZW50VHlwZSB7XG4gIHJldHVybiAoREFURV9USU1FX1NFR01FTlRfVFlQRVMgYXMgcmVhZG9ubHkgc3RyaW5nW10pLmluY2x1ZGVzKHZhbHVlKTtcbn1cblxuZXhwb3J0IHR5cGUgU2VnbWVudERhdGEgPSBSZWNvcmQ8RGF0ZVRpbWVTZWdtZW50VHlwZSwgUmVmPG51bWJlciB8IHVuZGVmaW5lZD4+O1xuIiwiaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuaW1wb3J0IHR5cGUgeyBUaW1lQWNjdXJhY3kgfSBmcm9tICdAL2NvbnN0cy90aW1lLWFjY3VyYWN5JztcbmltcG9ydCBkYXlqcywgeyB0eXBlIERheWpzIH0gZnJvbSAnZGF5anMnO1xuaW1wb3J0IHsgdHlwZSBEYXRlVGltZVNlZ21lbnRUeXBlLCBpc0RhdGVUaW1lU2VnbWVudFR5cGUgfSBmcm9tICdAL2NvbXBvbmVudHMvZGF0ZS10aW1lLXBpY2tlci90eXBlcyc7XG5pbXBvcnQgeyBpbmNsdWRlTWlsbGlzZWNvbmRzLCBpbmNsdWRlU2Vjb25kcyB9IGZyb20gJ0AvY29tcG9uZW50cy9kYXRlLXRpbWUtcGlja2VyL3V0aWxzJztcbmltcG9ydCB7IGFzc2VydCB9IGZyb20gJ0AvdXRpbHMvYXNzZXJ0JztcblxuaW50ZXJmYWNlIFNlZ21lbnQge1xuICBzdGFydDogbnVtYmVyO1xuICBlbmQ6IG51bWJlcjtcbiAgdHlwZTogRGF0ZVRpbWVTZWdtZW50VHlwZTtcbn1cblxuaW50ZXJmYWNlIEtleWJvYXJkSGFuZGxlck9wdGlvbnMge1xuICBkYXRlRm9ybWF0OiBSZWY8c3RyaW5nPjtcbiAgY3Vyc29yUG9zaXRpb246IFJlZjxudW1iZXI+O1xuICBjdXJyZW50VmFsdWU6IFJlZjxudW1iZXIgfCB1bmRlZmluZWQ+O1xuICB0ZXh0SW5wdXQ6IFJlZjxIVE1MSW5wdXRFbGVtZW50IHwgdW5kZWZpbmVkPjtcbiAgc2V0VmFsdWU6IChzZWdtZW50OiBEYXRlVGltZVNlZ21lbnRUeXBlLCB2YWx1ZT86IG51bWJlcikgPT4gdm9pZDtcbiAgZ2V0Q3VycmVudDogKHNlZ21lbnQ6IERhdGVUaW1lU2VnbWVudFR5cGUpID0+IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgZ2V0RGF0ZVRpbWU6ICgpID0+IERheWpzO1xuICBkaXNhYmxlZDogYm9vbGVhbjtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG4gIGFjY3VyYWN5OiBUaW1lQWNjdXJhY3k7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VLZXlib2FyZEhhbmRsZXIob3B0aW9uczogS2V5Ym9hcmRIYW5kbGVyT3B0aW9ucykge1xuICBjb25zdCB7XG4gICAgYWNjdXJhY3ksXG4gICAgY3VycmVudFZhbHVlLFxuICAgIGN1cnNvclBvc2l0aW9uLFxuICAgIGRhdGVGb3JtYXQsXG4gICAgZGlzYWJsZWQsXG4gICAgZ2V0Q3VycmVudCxcbiAgICBnZXREYXRlVGltZSxcbiAgICByZWFkb25seSxcbiAgICBzZXRWYWx1ZSxcbiAgICB0ZXh0SW5wdXQsXG4gIH0gPSBvcHRpb25zO1xuXG4gIGNvbnN0IGZvcm1hdFNlZ21lbnRzID0gY29tcHV0ZWQ8c3RyaW5nW10+KCgpID0+IHtcbiAgICBjb25zdCBmb3JtYXQgPSBnZXQoZGF0ZUZvcm1hdCk7XG4gICAgcmV0dXJuIGZvcm1hdC5zcGxpdCgvKFtcXHMuLzpdKS9nKS5maWx0ZXIoQm9vbGVhbik7XG4gIH0pO1xuXG4gIGNvbnN0IHNlZ21lbnRQb3NpdGlvbnMgPSBjb21wdXRlZDxTZWdtZW50W10+KCgpID0+IHtcbiAgICBjb25zdCBzZWdtZW50cyA9IGdldChmb3JtYXRTZWdtZW50cyk7XG4gICAgY29uc3QgcG9zaXRpb25zOiBTZWdtZW50W10gPSBbXTtcbiAgICBsZXQgY3VycmVudFBvc2l0aW9uID0gMDtcblxuICAgIHNlZ21lbnRzLmZvckVhY2goKHNlZ21lbnQpID0+IHtcbiAgICAgIGlmICghL1tcXHMuLzpdLy50ZXN0KHNlZ21lbnQpKSB7XG4gICAgICAgIGFzc2VydChpc0RhdGVUaW1lU2VnbWVudFR5cGUoc2VnbWVudCksIGBJbnZhbGlkIGRhdGUgZm9ybWF0IHNlZ21lbnQ6ICR7c2VnbWVudH1gKTtcbiAgICAgICAgcG9zaXRpb25zLnB1c2goe1xuICAgICAgICAgIGVuZDogY3VycmVudFBvc2l0aW9uICsgc2VnbWVudC5sZW5ndGgsXG4gICAgICAgICAgc3RhcnQ6IGN1cnJlbnRQb3NpdGlvbixcbiAgICAgICAgICB0eXBlOiBzZWdtZW50LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGN1cnJlbnRQb3NpdGlvbiArPSBzZWdtZW50Lmxlbmd0aDtcbiAgICB9KTtcblxuICAgIHJldHVybiBwb3NpdGlvbnM7XG4gIH0pO1xuXG4gIGZ1bmN0aW9uIGdldEN1cnJlbnRTZWdtZW50KHBvc2l0aW9uOiBudW1iZXIgPSBnZXQoY3Vyc29yUG9zaXRpb24pKSB7XG4gICAgY29uc3Qgc2VnbWVudHMgPSBnZXQoc2VnbWVudFBvc2l0aW9ucyk7XG4gICAgcmV0dXJuIHNlZ21lbnRzLmZpbmQoXG4gICAgICBzZWdtZW50ID0+IHBvc2l0aW9uID49IHNlZ21lbnQuc3RhcnQgJiYgcG9zaXRpb24gPD0gc2VnbWVudC5lbmQsXG4gICAgKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNldEN1cnNvclBvc2l0aW9uKHNlZ21lbnQ6IFNlZ21lbnQpOiB2b2lkIHtcbiAgICBzZXQoY3Vyc29yUG9zaXRpb24sIHNlZ21lbnQuZW5kKTtcblxuICAgIG5leHRUaWNrKCgpID0+IHtcbiAgICAgIGlmIChpc0RlZmluZWQodGV4dElucHV0KSkge1xuICAgICAgICBjb25zdCBpbnB1dCA9IGdldCh0ZXh0SW5wdXQpO1xuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZShzZWdtZW50LnN0YXJ0LCBzZWdtZW50LmVuZCk7XG4gICAgICAgIGlucHV0LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBzZXRTZWdtZW50KHNlZ21lbnRUeXBlOiBEYXRlVGltZVNlZ21lbnRUeXBlKTogdm9pZCB7XG4gICAgY29uc3Qgc2VnbWVudHMgPSBnZXQoc2VnbWVudFBvc2l0aW9ucykuZmluZChzZWdtZW50ID0+IHNlZ21lbnQudHlwZSA9PT0gc2VnbWVudFR5cGUpO1xuICAgIGlmIChzZWdtZW50cykge1xuICAgICAgc2V0Q3Vyc29yUG9zaXRpb24oc2VnbWVudHMpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNsZWFyKHNlZ21lbnRUeXBlPzogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFNlZ21lbnQgPSBnZXRDdXJyZW50U2VnbWVudCgpO1xuICAgIGlmICghc2VnbWVudFR5cGUgJiYgIWN1cnJlbnRTZWdtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdHlwZVRvVXNlID0gc2VnbWVudFR5cGUgPz8gY3VycmVudFNlZ21lbnQ/LnR5cGU7XG4gICAgaWYgKCF0eXBlVG9Vc2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzZXRWYWx1ZSh0eXBlVG9Vc2UgYXMgRGF0ZVRpbWVTZWdtZW50VHlwZSwgdW5kZWZpbmVkKTtcblxuICAgIGlmIChjdXJyZW50U2VnbWVudCkge1xuICAgICAgc2V0Q3Vyc29yUG9zaXRpb24oY3VycmVudFNlZ21lbnQpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNoYW5nZVNlZ21lbnRWYWx1ZShpbmNyZW1lbnQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoIWlzRGVmaW5lZCh0ZXh0SW5wdXQpKVxuICAgICAgcmV0dXJuO1xuXG4gICAgY29uc3QgY3VycmVudFNlZ21lbnQgPSBnZXRDdXJyZW50U2VnbWVudCgpO1xuXG4gICAgaWYgKCFjdXJyZW50U2VnbWVudClcbiAgICAgIHJldHVybjtcblxuICAgIGNvbnN0IHNlZ21lbnRNZXRob2RzID0ge1xuICAgICAgREQ6ICdkYXRlJyxcbiAgICAgIEhIOiAnaG91cicsXG4gICAgICBNTTogJ21vbnRoJyxcbiAgICAgIG1tOiAnbWludXRlJyxcbiAgICAgIHNzOiAnc2Vjb25kJyxcbiAgICAgIFNTUzogJ21pbGxpc2Vjb25kJyxcbiAgICAgIFlZWVk6ICd5ZWFyJyxcbiAgICB9IGFzIGNvbnN0O1xuXG4gICAgY29uc3Qgc2VnbWVudFR5cGUgPSBjdXJyZW50U2VnbWVudC50eXBlO1xuICAgIGNvbnN0IG1ldGhvZCA9IHNlZ21lbnRNZXRob2RzW3NlZ21lbnRUeXBlXTtcbiAgICBjb25zdCBzZWxlY3RlZERhdGUgPSBnZXREYXRlVGltZSgpO1xuICAgIGNvbnN0IHVwZGF0ZWREYXRlID0gc2VsZWN0ZWREYXRlLnNldChtZXRob2QsIHNlbGVjdGVkRGF0ZS5nZXQobWV0aG9kKSArIChpbmNyZW1lbnQgPyAxIDogLTEpKTtcbiAgICBpZiAodXBkYXRlZERhdGUueWVhcigpID49IDE5NzApIHtcbiAgICAgIHNldFZhbHVlKHNlZ21lbnRUeXBlLCBzZWdtZW50VHlwZSA9PT0gJ01NJyA/IHVwZGF0ZWREYXRlLmdldChtZXRob2QpICsgMSA6IHVwZGF0ZWREYXRlLmdldChtZXRob2QpKTtcbiAgICAgIHNldEN1cnNvclBvc2l0aW9uKGN1cnJlbnRTZWdtZW50KTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBuYXZpZ2F0ZVNlZ21lbnRzKGtleTogc3RyaW5nKSB7XG4gICAgY29uc3QgcG9zaXRpb24gPSBnZXQoY3Vyc29yUG9zaXRpb24pO1xuICAgIGNvbnN0IHBvc2l0aW9ucyA9IGdldChzZWdtZW50UG9zaXRpb25zKTtcbiAgICBjb25zdCBjdXJyZW50U2VnbWVudEluZGV4ID0gcG9zaXRpb25zLmZpbmRJbmRleChcbiAgICAgIHNlZ21lbnQgPT4gcG9zaXRpb24gPj0gc2VnbWVudC5zdGFydCAmJiBwb3NpdGlvbiA8PSBzZWdtZW50LmVuZCxcbiAgICApO1xuXG4gICAgaWYgKGN1cnJlbnRTZWdtZW50SW5kZXggPT09IC0xKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc2V0KGN1cnJlbnRWYWx1ZSwgdW5kZWZpbmVkKTtcblxuICAgIGxldCBuZXh0U2VnbWVudEluZGV4OiBudW1iZXI7XG4gICAgaWYgKGtleSA9PT0gJ0Fycm93UmlnaHQnKSB7XG4gICAgICBuZXh0U2VnbWVudEluZGV4ID0gY3VycmVudFNlZ21lbnRJbmRleCArIDE7XG4gICAgICBpZiAobmV4dFNlZ21lbnRJbmRleCA8IHBvc2l0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgbmV4dFNlZ21lbnQgPSBwb3NpdGlvbnNbbmV4dFNlZ21lbnRJbmRleF07XG4gICAgICAgIGFzc2VydChuZXh0U2VnbWVudCk7XG4gICAgICAgIHNldEN1cnNvclBvc2l0aW9uKG5leHRTZWdtZW50KTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBuZXh0U2VnbWVudEluZGV4ID0gY3VycmVudFNlZ21lbnRJbmRleCAtIDE7XG4gICAgICBpZiAobmV4dFNlZ21lbnRJbmRleCA+PSAwKSB7XG4gICAgICAgIGNvbnN0IG5leHRTZWdtZW50ID0gcG9zaXRpb25zW25leHRTZWdtZW50SW5kZXhdO1xuICAgICAgICBhc3NlcnQobmV4dFNlZ21lbnQpO1xuICAgICAgICBzZXRDdXJzb3JQb3NpdGlvbihuZXh0U2VnbWVudCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlRGlnaXRQcmVzc2VkKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBkaWdpdDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCEoZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcG9zaXRpb24gPSBldmVudC50YXJnZXQuc2VsZWN0aW9uU3RhcnQgPz8gMDtcbiAgICBjb25zdCBjdXJyZW50U2VnbWVudCA9IGdldEN1cnJlbnRTZWdtZW50KHBvc2l0aW9uKTtcbiAgICBpZiAoIWN1cnJlbnRTZWdtZW50KVxuICAgICAgcmV0dXJuO1xuXG4gICAgY29uc3QgbnVtYmVyID0gcGFyc2VJbnQoZGlnaXQpO1xuICAgIGlmIChpc05hTihudW1iZXIpKVxuICAgICAgcmV0dXJuO1xuXG4gICAgY29uc3Qgc2VnbWVudENvbmZpZzogUmVjb3JkPERhdGVUaW1lU2VnbWVudFR5cGUsIHsgbWF4VmFsdWU6IG51bWJlcjsgbWluVmFsdWU/OiBudW1iZXIgfT4gPSB7XG4gICAgICBERDogeyBtYXhWYWx1ZTogMzEsIG1pblZhbHVlOiAxIH0sXG4gICAgICBISDogeyBtYXhWYWx1ZTogMjMsIG1pblZhbHVlOiAwIH0sXG4gICAgICBNTTogeyBtYXhWYWx1ZTogMTIsIG1pblZhbHVlOiAxIH0sXG4gICAgICBtbTogeyBtYXhWYWx1ZTogNTksIG1pblZhbHVlOiAwIH0sXG4gICAgICBzczogeyBtYXhWYWx1ZTogNTksIG1pblZhbHVlOiAwIH0sXG4gICAgICBTU1M6IHsgbWF4VmFsdWU6IDk5OSwgbWluVmFsdWU6IDAgfSxcbiAgICAgIFlZWVk6IHsgbWF4VmFsdWU6IDk5OTksIG1pblZhbHVlOiAxIH0sXG4gICAgfTtcblxuICAgIGNvbnN0IHNlZ21lbnRUeXBlID0gY3VycmVudFNlZ21lbnQudHlwZTtcblxuICAgIGlmIChpc0RhdGVUaW1lU2VnbWVudFR5cGUoc2VnbWVudFR5cGUpKSB7XG4gICAgICBjb25zdCBjb25maWcgPSBzZWdtZW50Q29uZmlnW3NlZ21lbnRUeXBlXTtcbiAgICAgIGNvbnN0IHZhbHVlID0gZ2V0KGN1cnJlbnRWYWx1ZSkgPz8gJyc7XG4gICAgICBjb25zdCBjb21iaW5lZFZhbHVlID0gcGFyc2VJbnQoYCR7dmFsdWV9JHtkaWdpdH1gKTtcbiAgICAgIGNvbnN0IG5leHRDb21iaW5lZFZhbHVlID0gcGFyc2VJbnQoYCR7dmFsdWV9JHtkaWdpdH0wYCk7XG5cbiAgICAgIGNvbnN0IG1heExlbmd0aCA9IHNlZ21lbnRUeXBlLmxlbmd0aDtcbiAgICAgIGNvbnN0IG1pblZhbHVlID0gY29uZmlnLm1pblZhbHVlID8/IDA7XG5cbiAgICAgIGlmIChjb21iaW5lZFZhbHVlID49IG1pblZhbHVlICYmIGNvbWJpbmVkVmFsdWUgPD0gY29uZmlnLm1heFZhbHVlKSB7XG4gICAgICAgIHNldFZhbHVlKHNlZ21lbnRUeXBlLCBjb21iaW5lZFZhbHVlKTtcbiAgICAgICAgc2V0Q3Vyc29yUG9zaXRpb24oY3VycmVudFNlZ21lbnQpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB3aWxsRXhjZWVkTWF4ID0gbmV4dENvbWJpbmVkVmFsdWUgPiBjb25maWcubWF4VmFsdWU7XG4gICAgICBjb25zdCByZWFjaGVkTWF4TGVuZ3RoID0gY29tYmluZWRWYWx1ZS50b1N0cmluZygpLmxlbmd0aCA+PSBtYXhMZW5ndGg7XG5cbiAgICAgIGlmICh3aWxsRXhjZWVkTWF4IHx8IHJlYWNoZWRNYXhMZW5ndGgpIHtcbiAgICAgICAgbmF2aWdhdGVTZWdtZW50cygnQXJyb3dSaWdodCcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZUtleWJvYXJkTmF2aWdhdGlvbihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd1VwJykge1xuICAgICAgY2hhbmdlU2VnbWVudFZhbHVlKHRydWUpO1xuICAgIH1cbiAgICBlbHNlIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XG4gICAgICBjaGFuZ2VTZWdtZW50VmFsdWUoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZUJhY2tzcGFjZShldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmICghKGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHBvc2l0aW9uID0gZXZlbnQudGFyZ2V0LnNlbGVjdGlvblN0YXJ0ID8/IDA7XG4gICAgY29uc3QgY3VycmVudFNlZ21lbnQgPSBnZXRDdXJyZW50U2VnbWVudChwb3NpdGlvbik7XG4gICAgaWYgKCFjdXJyZW50U2VnbWVudClcbiAgICAgIHJldHVybjtcblxuICAgIGNvbnN0IHZhbHVlID0gZ2V0KGN1cnJlbnRWYWx1ZSkgPz8gZ2V0Q3VycmVudChjdXJyZW50U2VnbWVudC50eXBlKSA/PyAnJztcbiAgICBjb25zdCB1cGRhdGVkVmFsdWUgPSB2YWx1ZS50b1N0cmluZygpLnNsaWNlKDAsIC0xKTtcbiAgICBzZXRWYWx1ZShjdXJyZW50U2VnbWVudC50eXBlLCB1cGRhdGVkVmFsdWUubGVuZ3RoID09PSAwID8gdW5kZWZpbmVkIDogcGFyc2VJbnQodXBkYXRlZFZhbHVlKSk7XG4gICAgc2V0Q3Vyc29yUG9zaXRpb24oY3VycmVudFNlZ21lbnQpO1xuICB9XG5cbiAgZnVuY3Rpb24gb25JbnB1dERlbGV0ZVByZXNzZWQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIShldmVudC50YXJnZXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBzZWxlY3Rpb25TdGFydCA9IGV2ZW50LnRhcmdldC5zZWxlY3Rpb25TdGFydCA/PyAwO1xuICAgIGNvbnN0IHNlZ21lbnQgPSBnZXRDdXJyZW50U2VnbWVudChzZWxlY3Rpb25TdGFydCk7XG4gICAgaWYgKHNlZ21lbnQpIHtcbiAgICAgIGNsZWFyKHNlZ21lbnQudHlwZSk7XG4gICAgICBzZXRDdXJzb3JQb3NpdGlvbihzZWdtZW50KTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGRpc2FibGVkIHx8IHJlYWRvbmx5KVxuICAgICAgcmV0dXJuO1xuXG4gICAgY29uc3QgeyBrZXkgfSA9IGV2ZW50O1xuXG4gICAgaWYgKFsnVGFiJ10uaW5jbHVkZXMoa2V5KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBpZiAoa2V5ID09PSAnQXJyb3dSaWdodCcgfHwga2V5ID09PSAnQXJyb3dMZWZ0Jykge1xuICAgICAgbmF2aWdhdGVTZWdtZW50cyhrZXkpO1xuICAgIH1cbiAgICBlbHNlIGlmIChrZXkgPT09ICdBcnJvd1VwJyB8fCBrZXkgPT09ICdBcnJvd0Rvd24nKSB7XG4gICAgICBoYW5kbGVLZXlib2FyZE5hdmlnYXRpb24oZXZlbnQpO1xuICAgIH1cbiAgICBlbHNlIGlmIChrZXkgPT09ICdCYWNrc3BhY2UnKSB7XG4gICAgICBoYW5kbGVCYWNrc3BhY2UoZXZlbnQpO1xuICAgIH1cbiAgICBlbHNlIGlmIChrZXkgPT09ICdEZWxldGUnKSB7XG4gICAgICBvbklucHV0RGVsZXRlUHJlc3NlZChldmVudCk7XG4gICAgfVxuICAgIGVsc2UgaWYgKC9eXFxkJC8udGVzdChrZXkpKSB7XG4gICAgICBoYW5kbGVEaWdpdFByZXNzZWQoZXZlbnQsIGtleSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZGlzYWJsZWQgfHwgcmVhZG9ubHkpXG4gICAgICByZXR1cm47XG5cbiAgICBjb25zdCBldmVudFRhcmdldCA9IGV2ZW50LnRhcmdldDtcbiAgICBpZiAoIShldmVudFRhcmdldCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHBvc2l0aW9uID0gZXZlbnRUYXJnZXQuc2VsZWN0aW9uU3RhcnQgPz8gMDtcbiAgICBjb25zdCBjdXJyZW50U2VnbWVudCA9IGdldEN1cnJlbnRTZWdtZW50KHBvc2l0aW9uKTtcbiAgICBpZiAoY3VycmVudFNlZ21lbnQpXG4gICAgICBzZXRDdXJzb3JQb3NpdGlvbihjdXJyZW50U2VnbWVudCk7XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVJbnB1dFNlbGVjdGlvbihldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICBzZXQoY3Vyc29yUG9zaXRpb24sIHRhcmdldC5zZWxlY3Rpb25TdGFydCA/PyAwKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZUZvY3VzKCk6IHZvaWQge1xuICAgIGNvbnN0IGZpcnN0U2VnbWVudCA9IGdldChzZWdtZW50UG9zaXRpb25zKVswXTtcbiAgICBpZiAoZmlyc3RTZWdtZW50KSB7XG4gICAgICBzZXRDdXJzb3JQb3NpdGlvbihmaXJzdFNlZ21lbnQpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlQW5kU2V0RGF0ZVZhbHVlcyhwYXN0ZWRUZXh0OiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcGFyc2VkRGF0ZSA9IGRheWpzKHBhc3RlZFRleHQsIGdldChkYXRlRm9ybWF0KSk7XG5cbiAgICAgIGlmICghcGFyc2VkRGF0ZS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRlID0gcGFyc2VkRGF0ZS50b0RhdGUoKTtcbiAgICAgIHNldFZhbHVlKCdZWVlZJywgZGF0ZS5nZXRGdWxsWWVhcigpKTtcbiAgICAgIHNldFZhbHVlKCdNTScsIGRhdGUuZ2V0TW9udGgoKSArIDEpO1xuICAgICAgc2V0VmFsdWUoJ0REJywgZGF0ZS5nZXREYXRlKCkpO1xuICAgICAgc2V0VmFsdWUoJ0hIJywgZGF0ZS5nZXRIb3VycygpKTtcbiAgICAgIHNldFZhbHVlKCdtbScsIGRhdGUuZ2V0TWludXRlcygpKTtcbiAgICAgIGlmIChpbmNsdWRlU2Vjb25kcyhhY2N1cmFjeSkpIHtcbiAgICAgICAgc2V0VmFsdWUoJ3NzJywgZGF0ZS5nZXRTZWNvbmRzKCkpO1xuICAgICAgfVxuICAgICAgaWYgKGluY2x1ZGVNaWxsaXNlY29uZHMoYWNjdXJhY3kpKSB7XG4gICAgICAgIHNldFZhbHVlKCdTU1MnLCBkYXRlLmdldE1pbGxpc2Vjb25kcygpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY2F0Y2gge1xuICAgICAgLy8gSW52YWxpZCBmb3JtYXQsIGlnbm9yZSBwYXN0ZVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZVBhc3RlKGV2ZW50OiBDbGlwYm9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChkaXNhYmxlZCB8fCByZWFkb25seSlcbiAgICAgIHJldHVybjtcblxuICAgIGlmICghKGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIGNvbnN0IHBhc3RlZFRleHQgPSBldmVudC5jbGlwYm9hcmREYXRhPy5nZXREYXRhKCd0ZXh0Jyk7XG4gICAgaWYgKCFwYXN0ZWRUZXh0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHBhcnNlQW5kU2V0RGF0ZVZhbHVlcyhwYXN0ZWRUZXh0KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZUlucHV0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGlmIChkaXNhYmxlZCB8fCByZWFkb25seSlcbiAgICAgIHJldHVybjtcblxuICAgIGlmICghKGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaW5wdXRUZXh0ID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgIGlmICghaW5wdXRUZXh0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcGFyc2VBbmRTZXREYXRlVmFsdWVzKGlucHV0VGV4dCk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGNsZWFyLFxuICAgIGdldEN1cnJlbnRTZWdtZW50LFxuICAgIGhhbmRsZUNsaWNrLFxuICAgIGhhbmRsZUZvY3VzLFxuICAgIGhhbmRsZUlucHV0LFxuICAgIGhhbmRsZUlucHV0U2VsZWN0aW9uLFxuICAgIGhhbmRsZUtleURvd24sXG4gICAgaGFuZGxlUGFzdGUsXG4gICAgc2V0U2VnbWVudCxcbiAgfTtcbn1cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG5pbXBvcnQgdHlwZSB7IERhdGVUaW1lU2VnbWVudFR5cGUgfSBmcm9tICdAL2NvbXBvbmVudHMvZGF0ZS10aW1lLXBpY2tlci90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IFRpbWVQaWNrZXJTZWxlY3Rpb24gfSBmcm9tICdAL2NvbXBvbmVudHMvdGltZS1waWNrZXIvUnVpVGltZVBpY2tlci52dWUnO1xuaW1wb3J0IHR5cGUgeyBUaW1lQWNjdXJhY3kgfSBmcm9tICdAL2NvbnN0cy90aW1lLWFjY3VyYWN5JztcbmltcG9ydCB7IGxvZ2ljQW5kLCBsb2dpY09yIH0gZnJvbSAnQHZ1ZXVzZS9tYXRoJztcbmltcG9ydCBkYXlqcywgeyB0eXBlIERheWpzIH0gZnJvbSAnZGF5anMnO1xuaW1wb3J0IFJ1aUJ1dHRvbiBmcm9tICdAL2NvbXBvbmVudHMvYnV0dG9ucy9idXR0b24vUnVpQnV0dG9uLnZ1ZSc7XG5pbXBvcnQgUnVpRGF0ZVRpbWVQaWNrZXJNZW51IGZyb20gJ0AvY29tcG9uZW50cy9kYXRlLXRpbWUtcGlja2VyL1J1aURhdGVUaW1lUGlja2VyTWVudS52dWUnO1xuaW1wb3J0IHsgdXNlSW5wdXRIYW5kbGVyIH0gZnJvbSAnQC9jb21wb25lbnRzL2RhdGUtdGltZS1waWNrZXIvdXNlLWlucHV0LWhhbmRsZXInO1xuaW1wb3J0IHsgdXNlS2V5Ym9hcmRIYW5kbGVyIH0gZnJvbSAnQC9jb21wb25lbnRzL2RhdGUtdGltZS1waWNrZXIvdXNlLWtleWJvYXJkLWhhbmRsZXInO1xuaW1wb3J0IHsgZ3Vlc3NUaW1lem9uZSwgaW5jbHVkZU1pbGxpc2Vjb25kcywgaW5jbHVkZVNlY29uZHMgfSBmcm9tICdAL2NvbXBvbmVudHMvZGF0ZS10aW1lLXBpY2tlci91dGlscyc7XG5pbXBvcnQgUnVpSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvaWNvbnMvUnVpSWNvbi52dWUnO1xuaW1wb3J0IFJ1aU1lbnUgZnJvbSAnQC9jb21wb25lbnRzL292ZXJsYXlzL21lbnUvUnVpTWVudS52dWUnO1xuaW1wb3J0IHsgdXNlUnVpSThuIH0gZnJvbSAnQC9jb21wb3NhYmxlcy91c2UtcnVpLWkxOG4nO1xuaW1wb3J0IHsgUlVJX0kxOE5fS0VZUyB9IGZyb20gJ0AvaTE4bi9rZXlzJztcblxudHlwZSBEYXRlRm9ybWF0ID0gJ3llYXItZmlyc3QnIHwgJ21vbnRoLWZpcnN0JyB8ICdkYXktZmlyc3QnO1xuXG50eXBlIERhdGVUaW1lTW9kZWxUeXBlID0gJ2RhdGUnIHwgJ2Vwb2NoLW1zJyB8ICdlcG9jaCc7XG5cbnR5cGUgTW9kZWxWYWx1ZVR5cGU8VCBleHRlbmRzIERhdGVUaW1lTW9kZWxUeXBlPiA9XG4gIFQgZXh0ZW5kcyAnZGF0ZScgPyBEYXRlIHwgdW5kZWZpbmVkIDpcbiAgICBUIGV4dGVuZHMgJ2Vwb2NoLW1zJyA/IG51bWJlciB8IHVuZGVmaW5lZCA6XG4gICAgICBUIGV4dGVuZHMgJ2Vwb2NoJyA/IG51bWJlciB8IHVuZGVmaW5lZCA6XG4gICAgICAgIERhdGUgfCBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUnVpRGF0ZVRpbWVQaWNrZXJQcm9wcyB7XG4gIG1pbkRhdGU/OiBEYXRlIHwgbnVtYmVyO1xuICBtYXhEYXRlPzogRGF0ZSB8IG51bWJlciB8ICdub3cnO1xuICBmb3JtYXQ/OiBEYXRlRm9ybWF0O1xuICB0eXBlPzogRGF0ZVRpbWVNb2RlbFR5cGU7XG4gIGFjY3VyYWN5PzogVGltZUFjY3VyYWN5O1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGFsbG93RW1wdHk/OiBib29sZWFuO1xuICByZWFkb25seT86IGJvb2xlYW47XG4gIGRlbnNlPzogYm9vbGVhbjtcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIHZhcmlhbnQ/OiAnZGVmYXVsdCcgfCAnZmlsbGVkJyB8ICdvdXRsaW5lZCc7XG4gIGhpbnQ/OiBzdHJpbmc7XG4gIGVycm9yTWVzc2FnZXM/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgc3VjY2Vzc01lc3NhZ2VzPzogc3RyaW5nIHwgc3RyaW5nW107XG4gIGhpZGVEZXRhaWxzPzogYm9vbGVhbjtcbn1cblxuZGVmaW5lT3B0aW9ucyh7XG4gIG5hbWU6ICdSdWlEYXRlVGltZVBpY2tlcicsXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG59KTtcblxuY29uc3QgbW9kZWxWYWx1ZSA9IGRlZmluZU1vZGVsPE1vZGVsVmFsdWVUeXBlPHR5cGVvZiBwcm9wcy50eXBlPj4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UnVpRGF0ZVRpbWVQaWNrZXJQcm9wcz4oKSwge1xuICBkaXNhYmxlZDogZmFsc2UsXG4gIHJlYWRvbmx5OiBmYWxzZSxcbiAgYWxsb3dFbXB0eTogZmFsc2UsXG4gIGRlbnNlOiBmYWxzZSxcbiAgdHlwZTogJ2Vwb2NoLW1zJyxcbiAgaGlkZURldGFpbHM6IGZhbHNlLFxuICBsYWJlbDogJ1BpY2sgYSBkYXRlJyxcbiAgdmFyaWFudDogJ2RlZmF1bHQnLFxuICBoaW50OiB1bmRlZmluZWQsXG4gIG1heERhdGU6IHVuZGVmaW5lZCxcbiAgbWluRGF0ZTogdW5kZWZpbmVkLFxuICBmb3JtYXQ6ICdkYXktZmlyc3QnLFxuICBhY2N1cmFjeTogJ21pbnV0ZScsXG4gIGVycm9yTWVzc2FnZXM6ICgpID0+IFtdLFxuICBzdWNjZXNzTWVzc2FnZXM6ICgpID0+IFtdLFxufSk7XG5cbmRlZmluZVNsb3RzPHtcbiAgJ21lbnUtY29udGVudCc6ICgpID0+IGFueTtcbn0+KCk7XG5cbmNvbnN0IGJhc2VGb3JtYXRzOiBSZWNvcmQ8RGF0ZUZvcm1hdCwgc3RyaW5nPiA9IHtcbiAgJ2RheS1maXJzdCc6ICdERC9NTS9ZWVlZIEhIOm1tJyxcbiAgJ21vbnRoLWZpcnN0JzogJ01NL0REL1lZWVkgSEg6bW0nLFxuICAneWVhci1maXJzdCc6ICdZWVlZL01NL0REIEhIOm1tJyxcbn07XG5cbmNvbnN0IE1JTExJU0VDT05EUyA9IDEwMDA7XG5cbmNvbnN0IGlzT3BlbiA9IHJlZjxib29sZWFuPihmYWxzZSk7XG5jb25zdCBjdXJzb3JQb3NpdGlvbiA9IHJlZjxudW1iZXI+KDApO1xuY29uc3QgaW50ZXJuYWxFcnJvck1lc3NhZ2VzID0gcmVmPHN0cmluZ1tdPihbXSk7XG5cbmNvbnN0IHNlbGVjdGVkWWVhciA9IHJlZjxudW1iZXI+KCk7XG5jb25zdCBzZWxlY3RlZE1vbnRoID0gcmVmPG51bWJlcj4oKTtcbmNvbnN0IHNlbGVjdGVkRGF5ID0gcmVmPG51bWJlcj4oKTtcblxuY29uc3Qgc2VsZWN0ZWRIb3VyID0gcmVmPG51bWJlcj4oKTtcbmNvbnN0IHNlbGVjdGVkTWludXRlID0gcmVmPG51bWJlcj4oKTtcbmNvbnN0IHNlbGVjdGVkU2Vjb25kID0gcmVmPG51bWJlcj4oKTtcbmNvbnN0IHNlbGVjdGVkTWlsbGlzZWNvbmQgPSByZWY8bnVtYmVyPigpO1xuY29uc3Qgc2VsZWN0ZWRUaW1lem9uZSA9IHJlZjxzdHJpbmcgfCB1bmRlZmluZWQ+KGd1ZXNzVGltZXpvbmUoKSk7XG5cbmNvbnN0IGN1cnJlbnRWYWx1ZSA9IHJlZjxudW1iZXI+KCk7XG5jb25zdCBub3cgPSByZWYoZGF5anMudHoodW5kZWZpbmVkLCBndWVzc1RpbWV6b25lKCkpKTtcblxuY29uc3QgdGV4dElucHV0ID0gcmVmPEhUTUxJbnB1dEVsZW1lbnQ+KCk7XG5jb25zdCBhY3RpdmF0b3IgPSByZWYoKTtcbmNvbnN0IG1lbnVXcmFwcGVyUmVmID0gcmVmKCk7XG5jb25zdCBjYWxlbmRhck1lbnVPcGVuID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcblxuY29uc3QgeyBmb2N1c2VkOiBhY3RpdmF0b3JGb2N1c2VkV2l0aGluIH0gPSB1c2VGb2N1c1dpdGhpbihhY3RpdmF0b3IpO1xuY29uc3QgeyBmb2N1c2VkOiBtZW51V3JhcHBlckZvY3VzZWRXaXRoaW4gfSA9IHVzZUZvY3VzV2l0aGluKG1lbnVXcmFwcGVyUmVmKTtcbmNvbnN0IHsgZm9jdXNlZDogc2VhcmNoSW5wdXRGb2N1c2VkIH0gPSB1c2VGb2N1cyh0ZXh0SW5wdXQpO1xuXG5jb25zdCB7IHNldFZhbHVlLCB1cGRhdGUsIGdldEN1cnJlbnQgfSA9IHVzZUlucHV0SGFuZGxlcih7XG4gIEREOiBzZWxlY3RlZERheSxcbiAgTU06IHNlbGVjdGVkTW9udGgsXG4gIFlZWVk6IHNlbGVjdGVkWWVhcixcbiAgSEg6IHNlbGVjdGVkSG91cixcbiAgbW06IHNlbGVjdGVkTWludXRlLFxuICBzczogc2VsZWN0ZWRTZWNvbmQsXG4gIFNTUzogc2VsZWN0ZWRNaWxsaXNlY29uZCxcbn0sIGN1cnJlbnRWYWx1ZSk7XG5cbmNvbnN0IG1pbkFsbG93ZWREYXRlID0gY29tcHV0ZWQ8RGF0ZT4oKCkgPT4ge1xuICBpZiAocHJvcHMubWluRGF0ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKDE5NzAsIDAsIDEpO1xuICB9XG5cbiAgaWYgKHByb3BzLnR5cGUgPT09ICdlcG9jaCcgJiYgdHlwZW9mIHByb3BzLm1pbkRhdGUgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHByb3BzLm1pbkRhdGUgKiBNSUxMSVNFQ09ORFMpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBEYXRlKHByb3BzLm1pbkRhdGUpO1xufSk7XG5cbmNvbnN0IG1heEFsbG93ZWREYXRlID0gY29tcHV0ZWQ8RGF0ZSB8IHVuZGVmaW5lZD4oKCkgPT4ge1xuICBpZiAocHJvcHMubWF4RGF0ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBpZiAocHJvcHMubWF4RGF0ZSA9PT0gJ25vdycpIHtcbiAgICByZXR1cm4gZ2V0KG5vdykudG9EYXRlKCk7XG4gIH1cbiAgaWYgKHByb3BzLnR5cGUgPT09ICdlcG9jaCcgJiYgdHlwZW9mIHByb3BzLm1heERhdGUgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHByb3BzLm1heERhdGUgKiBNSUxMSVNFQ09ORFMpO1xuICB9XG4gIHJldHVybiBuZXcgRGF0ZShwcm9wcy5tYXhEYXRlKTtcbn0pO1xuXG5jb25zdCBkYXRlRm9ybWF0ID0gY29tcHV0ZWQ8c3RyaW5nPigoKSA9PiB7XG4gIGNvbnN0IGRhdGVGb3JtYXQgPSBwcm9wcy5mb3JtYXQ7XG4gIGNvbnN0IGZvcm1hdCA9IGJhc2VGb3JtYXRzW2RhdGVGb3JtYXRdO1xuICBpZiAocHJvcHMuYWNjdXJhY3kgPT09ICdzZWNvbmQnKSB7XG4gICAgcmV0dXJuIGZvcm1hdC5yZXBsYWNlKCdISDptbScsICdISDptbTpzcycpO1xuICB9XG4gIGVsc2UgaWYgKHByb3BzLmFjY3VyYWN5ID09PSAnbWlsbGlzZWNvbmQnKSB7XG4gICAgcmV0dXJuIGZvcm1hdC5yZXBsYWNlKCdISDptbScsICdISDptbTpzcy5TU1MnKTtcbiAgfVxuICByZXR1cm4gZm9ybWF0O1xufSk7XG5cbmNvbnN0IHtcbiAgY2xlYXI6IGNsZWFyU2VnbWVudCxcbiAgZ2V0Q3VycmVudFNlZ21lbnQsXG4gIGhhbmRsZUNsaWNrLFxuICBoYW5kbGVGb2N1cyxcbiAgaGFuZGxlSW5wdXQsXG4gIGhhbmRsZUlucHV0U2VsZWN0aW9uLFxuICBoYW5kbGVLZXlEb3duLFxuICBoYW5kbGVQYXN0ZSxcbiAgc2V0U2VnbWVudCxcbn0gPSB1c2VLZXlib2FyZEhhbmRsZXIoe1xuICBjdXJyZW50VmFsdWUsXG4gIGN1cnNvclBvc2l0aW9uLFxuICBkaXNhYmxlZDogcHJvcHMuZGlzYWJsZWQsXG4gIGdldERhdGVUaW1lLFxuICBnZXRDdXJyZW50LFxuICByZWFkb25seTogcHJvcHMucmVhZG9ubHksXG4gIGRhdGVGb3JtYXQsXG4gIHNldFZhbHVlLFxuICB0ZXh0SW5wdXQsXG4gIGFjY3VyYWN5OiBwcm9wcy5hY2N1cmFjeSxcbn0pO1xuXG5jb25zdCB7IHQgfSA9IHVzZVJ1aUk4bigpO1xuXG5jb25zdCBhbnlGb2N1c2VkID0gbG9naWNPcihhY3RpdmF0b3JGb2N1c2VkV2l0aGluLCBtZW51V3JhcHBlckZvY3VzZWRXaXRoaW4pO1xuXG5jb25zdCBzZWxlY3RlZERhdGUgPSBjb21wdXRlZDxEYXRlIHwgdW5kZWZpbmVkPih7XG4gIHNldCh2YWx1ZT86IERhdGUpIHtcbiAgICBzZXQoc2VsZWN0ZWRZZWFyLCB2YWx1ZT8uZ2V0RnVsbFllYXIoKSk7XG4gICAgc2V0KHNlbGVjdGVkTW9udGgsIHZhbHVlID8gdmFsdWUuZ2V0TW9udGgoKSArIDEgOiB1bmRlZmluZWQpO1xuICAgIHNldChzZWxlY3RlZERheSwgdmFsdWU/LmdldERhdGUoKSk7XG4gIH0sXG4gIGdldCgpIHtcbiAgICBpZiAoIShpc0RlZmluZWQoc2VsZWN0ZWRZZWFyKSAmJiBpc0RlZmluZWQoc2VsZWN0ZWRNb250aCkgJiYgaXNEZWZpbmVkKHNlbGVjdGVkRGF5KSkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGRhdGUuc2V0RnVsbFllYXIoZ2V0KHNlbGVjdGVkWWVhcikpO1xuICAgIGRhdGUuc2V0TW9udGgoZ2V0KHNlbGVjdGVkTW9udGgpIC0gMSk7XG4gICAgZGF0ZS5zZXREYXRlKGdldChzZWxlY3RlZERheSkpO1xuICAgIHJldHVybiBkYXRlO1xuICB9LFxufSk7XG5cbmNvbnN0IHNlbGVjdGVkVGltZSA9IGNvbXB1dGVkPERhdGUgfCB1bmRlZmluZWQ+KHtcbiAgc2V0KHZhbHVlPzogRGF0ZSkge1xuICAgIHNldChzZWxlY3RlZEhvdXIsIHZhbHVlPy5nZXRIb3VycygpKTtcbiAgICBzZXQoc2VsZWN0ZWRNaW51dGUsIHZhbHVlPy5nZXRNaW51dGVzKCkpO1xuICAgIHNldChzZWxlY3RlZFNlY29uZCwgdmFsdWU/LmdldFNlY29uZHMoKSk7XG4gICAgc2V0KHNlbGVjdGVkTWlsbGlzZWNvbmQsIHZhbHVlPy5nZXRNaWxsaXNlY29uZHMoKSk7XG4gIH0sXG4gIGdldCgpIHtcbiAgICBpZiAoIShpc0RlZmluZWQoc2VsZWN0ZWRIb3VyKSAmJiBpc0RlZmluZWQoc2VsZWN0ZWRNaW51dGUpKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgZGF0ZS5zZXRIb3VycyhcbiAgICAgIGdldChzZWxlY3RlZEhvdXIpLFxuICAgICAgZ2V0KHNlbGVjdGVkTWludXRlKSxcbiAgICAgIGdldChzZWxlY3RlZFNlY29uZCkgPz8gMCxcbiAgICAgIGdldChzZWxlY3RlZE1pbGxpc2Vjb25kKSA/PyAwLFxuICAgICk7XG4gICAgcmV0dXJuIGRhdGU7XG4gIH0sXG59KTtcblxuY29uc3QgdmFsdWVTZXQgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiBpc0RlZmluZWQoc2VsZWN0ZWREYXRlKSAmJiBpc0RlZmluZWQoc2VsZWN0ZWRUaW1lKSk7XG5cbmNvbnN0IGxhYmVsV2l0aFF1b3RlID0gY29tcHV0ZWQ8c3RyaW5nPigoKSA9PiB7XG4gIGlmICghcHJvcHMubGFiZWwpXG4gICAgcmV0dXJuICdcIlxcXFwyMDBCXCInO1xuXG4gIHJldHVybiBgJyAgJHtwcm9wcy5sYWJlbH0gICdgO1xufSk7XG5cbmNvbnN0IGlzT3V0bGluZWQgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiBwcm9wcy52YXJpYW50ID09PSAnb3V0bGluZWQnKTtcblxuY29uc3QgZm9ybWF0dGVkRGlzcGxheSA9IGNvbXB1dGVkPHN0cmluZz4oKCkgPT4ge1xuICBsZXQgcmVzdWx0ID0gZ2V0KGRhdGVGb3JtYXQpO1xuXG4gIGNvbnN0IHJlcGxhY2VtZW50cyA9IFtcbiAgICB7IHBhdHRlcm46ICdZWVlZJywgdmFsdWU6IGdldERpc3BsYXlWYWx1ZShzZWxlY3RlZFllYXIsIDQpIH0sXG4gICAgeyBwYXR0ZXJuOiAnTU0nLCB2YWx1ZTogZ2V0RGlzcGxheVZhbHVlKHNlbGVjdGVkTW9udGgsIDIpIH0sXG4gICAgeyBwYXR0ZXJuOiAnREQnLCB2YWx1ZTogZ2V0RGlzcGxheVZhbHVlKHNlbGVjdGVkRGF5LCAyKSB9LFxuICAgIHsgcGF0dGVybjogJ0hIJywgdmFsdWU6IGdldERpc3BsYXlWYWx1ZShzZWxlY3RlZEhvdXIsIDIpIH0sXG4gICAgeyBwYXR0ZXJuOiAnbW0nLCB2YWx1ZTogZ2V0RGlzcGxheVZhbHVlKHNlbGVjdGVkTWludXRlLCAyKSB9LFxuICAgIHsgcGF0dGVybjogJ3NzJywgdmFsdWU6IGdldERpc3BsYXlWYWx1ZShzZWxlY3RlZFNlY29uZCwgMikgfSxcbiAgICB7IHBhdHRlcm46ICdTU1MnLCB2YWx1ZTogZ2V0RGlzcGxheVZhbHVlKHNlbGVjdGVkTWlsbGlzZWNvbmQsIDMpIH0sXG4gIF07XG5cbiAgZm9yIChjb25zdCB7IHBhdHRlcm4sIHZhbHVlIH0gb2YgcmVwbGFjZW1lbnRzKSB7XG4gICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNlKHBhdHRlcm4sIHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufSk7XG5cbmNvbnN0IHRpbWVTZWxlY3Rpb24gPSBjb21wdXRlZDxUaW1lUGlja2VyU2VsZWN0aW9uPih7XG4gIGdldCgpIHtcbiAgICBjb25zdCB0eXBlID0gZ2V0Q3VycmVudFNlZ21lbnQoKT8udHlwZTtcblxuICAgIGlmICh0eXBlID09PSAnbW0nKSB7XG4gICAgICByZXR1cm4gJ21pbnV0ZSc7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGUgPT09ICdzcycpIHtcbiAgICAgIHJldHVybiAnc2Vjb25kJztcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZSA9PT0gJ1NTUycpIHtcbiAgICAgIHJldHVybiAnbWlsbGlzZWNvbmQnO1xuICAgIH1cbiAgICByZXR1cm4gJ2hvdXInO1xuICB9LFxuICBzZXQodmFsdWU6IFRpbWVQaWNrZXJTZWxlY3Rpb24pIHtcbiAgICBsZXQgc2VnbWVudFR5cGU6IERhdGVUaW1lU2VnbWVudFR5cGUgPSAnSEgnO1xuICAgIGlmICh2YWx1ZSA9PT0gJ21pbnV0ZScpIHtcbiAgICAgIHNlZ21lbnRUeXBlID0gJ21tJztcbiAgICB9XG4gICAgZWxzZSBpZiAodmFsdWUgPT09ICdzZWNvbmQnKSB7XG4gICAgICBzZWdtZW50VHlwZSA9ICdzcyc7XG4gICAgfVxuICAgIGVsc2UgaWYgKHZhbHVlID09PSAnbWlsbGlzZWNvbmQnKSB7XG4gICAgICBzZWdtZW50VHlwZSA9ICdTU1MnO1xuICAgIH1cblxuICAgIHNldFNlZ21lbnQoc2VnbWVudFR5cGUpO1xuICB9LFxufSk7XG5cbmNvbnN0IGZsb2F0ID0gbG9naWNBbmQobG9naWNPcihpc09wZW4sIHZhbHVlU2V0LCBzZWFyY2hJbnB1dEZvY3VzZWQpLCBpc091dGxpbmVkKTtcblxuY29uc3QgY29tYmluZWRFcnJvck1lc3NhZ2VzID0gY29tcHV0ZWQ8c3RyaW5nW10+KCgpID0+IHtcbiAgbGV0IHByb3BFcnJvcnM6IHN0cmluZ1tdO1xuICBpZiAocHJvcHMuZXJyb3JNZXNzYWdlcykge1xuICAgIHByb3BFcnJvcnMgPSBBcnJheS5pc0FycmF5KHByb3BzLmVycm9yTWVzc2FnZXMpXG4gICAgICA/IHByb3BzLmVycm9yTWVzc2FnZXNcbiAgICAgIDogW3Byb3BzLmVycm9yTWVzc2FnZXNdO1xuICB9XG4gIGVsc2Uge1xuICAgIHByb3BFcnJvcnMgPSBBcnJheS5pc0FycmF5KHByb3BzLmVycm9yTWVzc2FnZXMpXG4gICAgICA/IHByb3BzLmVycm9yTWVzc2FnZXNcbiAgICAgIDogW107XG4gIH1cbiAgcmV0dXJuIFsuLi5wcm9wRXJyb3JzLCAuLi5nZXQoaW50ZXJuYWxFcnJvck1lc3NhZ2VzKV07XG59KTtcblxuZnVuY3Rpb24gZ2V0RGlzcGxheVZhbHVlKGRpZ2l0OiBSZWY8bnVtYmVyIHwgdW5kZWZpbmVkPiwgcGFkZGluZzogbnVtYmVyKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGlzRGVmaW5lZChkaWdpdClcbiAgICA/IGdldChkaWdpdCkudG9TdHJpbmcoKS5wYWRTdGFydChwYWRkaW5nLCAnMCcpXG4gICAgOiB1bmRlZmluZWQ7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNldElucHV0Rm9jdXMoKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IG5leHRUaWNrKCgpID0+IHtcbiAgICBzZXQoc2VhcmNoSW5wdXRGb2N1c2VkLCB0cnVlKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGNsZWFyKHNlZ21lbnRUeXBlPzogc3RyaW5nKTogdm9pZCB7XG4gIHNldChpbnRlcm5hbEVycm9yTWVzc2FnZXMsIFtdKTtcblxuICBpZiAoIXNlZ21lbnRUeXBlKSB7XG4gICAgc2V0KHNlbGVjdGVkWWVhciwgdW5kZWZpbmVkKTtcbiAgICBzZXQoc2VsZWN0ZWRNb250aCwgdW5kZWZpbmVkKTtcbiAgICBzZXQoc2VsZWN0ZWREYXksIHVuZGVmaW5lZCk7XG4gICAgc2V0KHNlbGVjdGVkSG91ciwgdW5kZWZpbmVkKTtcbiAgICBzZXQoc2VsZWN0ZWRNaW51dGUsIHVuZGVmaW5lZCk7XG4gICAgc2V0KHNlbGVjdGVkU2Vjb25kLCB1bmRlZmluZWQpO1xuICAgIHNldChzZWxlY3RlZE1pbGxpc2Vjb25kLCB1bmRlZmluZWQpO1xuICAgIHNldChjdXJyZW50VmFsdWUsIHVuZGVmaW5lZCk7XG4gICAgc2V0KG1vZGVsVmFsdWUsIHVuZGVmaW5lZCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY2xlYXJTZWdtZW50KHNlZ21lbnRUeXBlKTtcbn1cblxuZnVuY3Rpb24gYXJyb3dDbGlja2VkKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgaWYgKGdldChpc09wZW4pKSB7XG4gICAgc2V0KGlzT3BlbiwgZmFsc2UpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldERhdGVUaW1lKCk6IERheWpzIHtcbiAgbGV0IGRhdGVUaW1lID0gZGF5anMoKTtcbiAgaWYgKGlzRGVmaW5lZChzZWxlY3RlZFllYXIpKSB7XG4gICAgZGF0ZVRpbWUgPSBkYXRlVGltZS55ZWFyKGdldChzZWxlY3RlZFllYXIpKTtcbiAgfVxuXG4gIGlmIChpc0RlZmluZWQoc2VsZWN0ZWRNb250aCkpIHtcbiAgICBkYXRlVGltZSA9IGRhdGVUaW1lLm1vbnRoKGdldChzZWxlY3RlZE1vbnRoKSAtIDEpO1xuICB9XG5cbiAgaWYgKGlzRGVmaW5lZChzZWxlY3RlZERheSkpIHtcbiAgICBjb25zdCBkYXlzSW5Nb250aCA9IGRhdGVUaW1lLmRheXNJbk1vbnRoKCk7XG4gICAgY29uc3QgZGF5ID0gTWF0aC5taW4oZ2V0KHNlbGVjdGVkRGF5KSwgZGF5c0luTW9udGgpO1xuICAgIGRhdGVUaW1lID0gZGF0ZVRpbWUuZGF0ZShkYXkpO1xuICB9XG5cbiAgaWYgKGlzRGVmaW5lZChzZWxlY3RlZEhvdXIpKSB7XG4gICAgZGF0ZVRpbWUgPSBkYXRlVGltZS5ob3VyKGdldChzZWxlY3RlZEhvdXIpKTtcbiAgfVxuXG4gIGlmIChpc0RlZmluZWQoc2VsZWN0ZWRNaW51dGUpKSB7XG4gICAgZGF0ZVRpbWUgPSBkYXRlVGltZS5taW51dGUoZ2V0KHNlbGVjdGVkTWludXRlKSk7XG4gIH1cblxuICBpZiAoaXNEZWZpbmVkKHNlbGVjdGVkU2Vjb25kKSkge1xuICAgIGRhdGVUaW1lID0gZGF0ZVRpbWUuc2Vjb25kKGdldChzZWxlY3RlZFNlY29uZCkpO1xuICB9XG5cbiAgaWYgKGlzRGVmaW5lZChzZWxlY3RlZE1pbGxpc2Vjb25kKSkge1xuICAgIGRhdGVUaW1lID0gZGF0ZVRpbWUubWlsbGlzZWNvbmQoZ2V0KHNlbGVjdGVkTWlsbGlzZWNvbmQpKTtcbiAgfVxuXG4gIHJldHVybiBkYXRlVGltZTtcbn1cblxuZnVuY3Rpb24gc2V0Tm93KCk6IHZvaWQge1xuICBzZXQoaW50ZXJuYWxFcnJvck1lc3NhZ2VzLCBbXSk7XG5cbiAgY29uc3QgZGF0ZSA9IGRheWpzKCk7XG4gIHNldChub3csIGRhdGUpO1xuICBzZXQoc2VsZWN0ZWRZZWFyLCBkYXRlLnllYXIoKSk7XG4gIHNldChzZWxlY3RlZE1vbnRoLCBkYXRlLm1vbnRoKCkgKyAxKTtcbiAgc2V0KHNlbGVjdGVkRGF5LCBkYXRlLmRhdGUoKSk7XG4gIHNldChzZWxlY3RlZEhvdXIsIGRhdGUuaG91cigpKTtcbiAgc2V0KHNlbGVjdGVkTWludXRlLCBkYXRlLm1pbnV0ZSgpKTtcbiAgc2V0KHNlbGVjdGVkU2Vjb25kLCBpbmNsdWRlU2Vjb25kcyhwcm9wcy5hY2N1cmFjeSkgPyBkYXRlLnNlY29uZCgpIDogMCk7XG4gIHNldChzZWxlY3RlZE1pbGxpc2Vjb25kLCBpbmNsdWRlTWlsbGlzZWNvbmRzKHByb3BzLmFjY3VyYWN5KSA/IGRhdGUubWlsbGlzZWNvbmQoKSA6IDApO1xuXG4gIG5leHRUaWNrKCgpID0+IHtcbiAgICB1cGRhdGVNb2RlbFZhbHVlKCk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBpc0RhdGVWYWxpZChkYXRlOiBEYXlqcyk6IGJvb2xlYW4ge1xuICBjb25zdCBtaW4gPSBnZXQobWluQWxsb3dlZERhdGUpO1xuICBjb25zdCBtYXggPSBnZXQobWF4QWxsb3dlZERhdGUpO1xuXG4gIHNldChpbnRlcm5hbEVycm9yTWVzc2FnZXMsIFtdKTtcblxuICBpZiAobWluICYmIGRhdGUuaXNCZWZvcmUobWluKSkge1xuICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IHQoUlVJX0kxOE5fS0VZUy5kYXRlVGltZVBpY2tlci5kYXRlQmVmb3JlTWluLCB7XG4gICAgICBkYXRlOiBtaW4udG9Mb2NhbGVEYXRlU3RyaW5nKCksXG4gICAgfSwgYERhdGUgY2Fubm90IGJlIGJlZm9yZSAke21pbi50b0xvY2FsZURhdGVTdHJpbmcoKX1gKTtcbiAgICBzZXQoaW50ZXJuYWxFcnJvck1lc3NhZ2VzLCBbLi4uZ2V0KGludGVybmFsRXJyb3JNZXNzYWdlcyksIGVycm9yTWVzc2FnZV0pO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChtYXggJiYgZGF0ZS5pc0FmdGVyKG1heCkpIHtcbiAgICBjb25zdCBub3dFcnJvciA9IHQoUlVJX0kxOE5fS0VZUy5kYXRlVGltZVBpY2tlci5kYXRlSW5GdXR1cmUsICdUaGUgc2VsZWN0ZWQgZGF0ZSBjYW5ub3QgYmUgaW4gdGhlIGZ1dHVyZScpO1xuICAgIGNvbnN0IG1heEVycm9yID0gdChSVUlfSTE4Tl9LRVlTLmRhdGVUaW1lUGlja2VyLmRhdGVBZnRlck1heCwgeyBkYXRlOiBtYXgudG9Mb2NhbGVEYXRlU3RyaW5nKCkgfSwgYERhdGUgY2Fubm90IGJlIGFmdGVyICR7bWF4LnRvTG9jYWxlRGF0ZVN0cmluZygpfWApO1xuICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IHByb3BzLm1heERhdGUgPT09ICdub3cnID8gbm93RXJyb3IgOiBtYXhFcnJvcjtcbiAgICBzZXQoaW50ZXJuYWxFcnJvck1lc3NhZ2VzLCBbLi4uZ2V0KGludGVybmFsRXJyb3JNZXNzYWdlcyksIGVycm9yTWVzc2FnZV0pO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBlbWl0VXBkYXRlKHVwZGF0ZWRNb2RlbDogRGF5anMpIHtcbiAgY29uc3QgdHlwZU1hcCA9IHtcbiAgICAnZGF0ZSc6ICgpID0+IHVwZGF0ZWRNb2RlbC50b0RhdGUoKSxcbiAgICAnZXBvY2gtbXMnOiAoKSA9PiB1cGRhdGVkTW9kZWwudmFsdWVPZigpLFxuICAgICdlcG9jaCc6ICgpID0+IHVwZGF0ZWRNb2RlbC52YWx1ZU9mKCkgLyBNSUxMSVNFQ09ORFMsXG4gIH0gYXMgY29uc3Q7XG5cbiAgc2V0KG1vZGVsVmFsdWUsIHR5cGVNYXBbcHJvcHMudHlwZV0oKSk7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZU1vZGVsVmFsdWUoKTogdm9pZCB7XG4gIGlmICghaXNEZWZpbmVkKHNlbGVjdGVkRGF0ZSkgfHwgIWlzRGVmaW5lZChzZWxlY3RlZFRpbWUpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKCEoaXNEZWZpbmVkKHNlbGVjdGVkRGF0ZSkgJiYgaXNEZWZpbmVkKHNlbGVjdGVkVGltZSkpKSB7XG4gICAgc2V0KG1vZGVsVmFsdWUsIHVuZGVmaW5lZCk7XG4gIH1cbiAgZWxzZSB7XG4gICAgY29uc3QgZGF0ZSA9IGdldChzZWxlY3RlZERhdGUpO1xuICAgIGNvbnN0IHRpbWUgPSBnZXQoc2VsZWN0ZWRUaW1lKTtcblxuICAgIGNvbnN0IHVwZGF0ZWRNb2RlbCA9IGRheWpzLnR6KGlzRGVmaW5lZChtb2RlbFZhbHVlKSA/IGdldChtb2RlbFZhbHVlKSA6IHVuZGVmaW5lZCwgZ2V0KHNlbGVjdGVkVGltZXpvbmUpKVxuICAgICAgLnllYXIoZGF0ZS5nZXRGdWxsWWVhcigpKVxuICAgICAgLm1vbnRoKGRhdGUuZ2V0TW9udGgoKSlcbiAgICAgIC5kYXRlKGRhdGUuZ2V0RGF0ZSgpKVxuICAgICAgLmhvdXIodGltZS5nZXRIb3VycygpKVxuICAgICAgLm1pbnV0ZSh0aW1lLmdldE1pbnV0ZXMoKSlcbiAgICAgIC5zZWNvbmQoaW5jbHVkZVNlY29uZHMocHJvcHMuYWNjdXJhY3kpID8gdGltZS5nZXRTZWNvbmRzKCkgOiAwKVxuICAgICAgLm1pbGxpc2Vjb25kKGluY2x1ZGVNaWxsaXNlY29uZHMocHJvcHMuYWNjdXJhY3kpID8gdGltZS5nZXRNaWxsaXNlY29uZHMoKSA6IDApO1xuXG4gICAgaWYgKCFpc0RhdGVWYWxpZCh1cGRhdGVkTW9kZWwpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZW1pdFVwZGF0ZSh1cGRhdGVkTW9kZWwpO1xuICB9XG59XG5cbmNvbnN0IHsgaWdub3JlVXBkYXRlcyB9ID0gd2F0Y2hJZ25vcmFibGUoW3NlbGVjdGVkRGF0ZSwgc2VsZWN0ZWRUaW1lXSwgKFtzZWxlY3RlZERhdGUsIHNlbGVjdGVkVGltZV0sIFtwcmV2U2VsZWN0ZWREYXRlLCBwcmV2U2VsZWN0ZWRUaW1lXSkgPT4ge1xuICBjb25zdCBjdXJyZW50VGltZXpvbmUgPSBnZXQoc2VsZWN0ZWRUaW1lem9uZSk7XG4gIGNvbnN0IG5ld1NlbGVjdGVkRGF0ZSA9IGRheWpzLnR6KHNlbGVjdGVkRGF0ZSwgY3VycmVudFRpbWV6b25lKTtcbiAgY29uc3Qgb2xkU2VsZWN0ZWREYXRlID0gZGF5anMudHoocHJldlNlbGVjdGVkRGF0ZSwgY3VycmVudFRpbWV6b25lKTtcbiAgY29uc3QgbmV3U2VsZWN0ZWRUaW1lID0gZGF5anMudHooc2VsZWN0ZWRUaW1lLCBjdXJyZW50VGltZXpvbmUpO1xuICBjb25zdCBvbGRTZWxlY3RlZFRpbWUgPSBkYXlqcy50eihwcmV2U2VsZWN0ZWRUaW1lLCBjdXJyZW50VGltZXpvbmUpO1xuXG4gIGlmIChuZXdTZWxlY3RlZERhdGUuaXNTYW1lKG9sZFNlbGVjdGVkRGF0ZSkgJiYgbmV3U2VsZWN0ZWRUaW1lLmlzU2FtZShvbGRTZWxlY3RlZFRpbWUpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc2V0KG5vdywgZGF5anMoKSk7XG4gIHVwZGF0ZU1vZGVsVmFsdWUoKTtcbn0pO1xuXG5mdW5jdGlvbiB1cGRhdGVJbnRlcm5hbE1vZGVsKHZhbHVlOiBNb2RlbFZhbHVlVHlwZTx0eXBlb2YgcHJvcHMudHlwZT4pIHtcbiAgaWdub3JlVXBkYXRlcygoKSA9PiB7XG4gICAgY29uc3QgdXBkYXRlZFZhbHVlID0gcHJvcHMudHlwZSA9PT0gJ2Vwb2NoJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInXG4gICAgICA/IHZhbHVlICogTUlMTElTRUNPTkRTXG4gICAgICA6IHZhbHVlO1xuICAgIGNvbnN0IGRhdGUgPSBkYXlqcy50eih1cGRhdGVkVmFsdWUsIGdldChzZWxlY3RlZFRpbWV6b25lKSk7XG4gICAgaXNEYXRlVmFsaWQoZGF0ZSk7XG4gICAgdXBkYXRlKGRhdGUsIHByb3BzLmFjY3VyYWN5KTtcbiAgfSk7XG59XG5cbndhdGNoKHNlbGVjdGVkVGltZXpvbmUsIChuZXdUaW1lem9uZTogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PiB7XG4gIGlmIChuZXdUaW1lem9uZSAmJiBpc0RlZmluZWQoc2VsZWN0ZWREYXRlKSAmJiBpc0RlZmluZWQoc2VsZWN0ZWRUaW1lKSkge1xuICAgIHNldChub3csIGRheWpzKCkpO1xuICAgIHVwZGF0ZU1vZGVsVmFsdWUoKTtcbiAgfVxufSk7XG5cbndhdGNoKG1vZGVsVmFsdWUsICh2YWx1ZSkgPT4ge1xuICBzZXQobm93LCBkYXlqcygpKTtcbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICBjbGVhcigpO1xuICB9XG4gIGVsc2Uge1xuICAgIHVwZGF0ZUludGVybmFsTW9kZWwodmFsdWUpO1xuICB9XG59KTtcblxub25Nb3VudGVkKCgpID0+IHtcbiAgaWYgKGlzRGVmaW5lZChtb2RlbFZhbHVlKSkge1xuICAgIHVwZGF0ZUludGVybmFsTW9kZWwoZ2V0KG1vZGVsVmFsdWUpKTtcbiAgfVxuICBlbHNlIGlmICghcHJvcHMuYWxsb3dFbXB0eSkge1xuICAgIHNldE5vdygpO1xuICB9XG59KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxSdWlNZW51XG4gICAgdi1tb2RlbD1cImlzT3BlblwiXG4gICAgOmNsYXNzPVwiJHN0eWxlLndyYXBwZXJcIlxuICAgIDpkZW5zZT1cImRlbnNlXCJcbiAgICA6aGludD1cImhpbnRcIlxuICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICA6c3VjY2Vzcy1tZXNzYWdlcz1cInN1Y2Nlc3NNZXNzYWdlc1wiXG4gICAgOmVycm9yLW1lc3NhZ2VzPVwiY29tYmluZWRFcnJvck1lc3NhZ2VzXCJcbiAgICA6Y2xvc2Utb24tY29udGVudC1jbGljaz1cImZhbHNlXCJcbiAgICA6c2hvdy1kZXRhaWxzPVwiIWhpZGVEZXRhaWxzXCJcbiAgICA6cGVyc2lzdGVudD1cImNhbGVuZGFyTWVudU9wZW5cIlxuICAgIDpwb3BwZXI9XCJ7XG4gICAgICBwbGFjZW1lbnQ6ICdib3R0b20tc3RhcnQnLFxuICAgIH1cIlxuICAgIGZ1bGwtd2lkdGhcbiAgICB2LWJpbmQ9XCJ7XG4gICAgICAuLi5nZXRSb290QXR0cnMoJGF0dHJzKSxcbiAgICB9XCJcbiAgPlxuICAgIDx0ZW1wbGF0ZSAjYWN0aXZhdG9yPVwieyBhdHRycywgb3BlbiwgaGFzRXJyb3IsIGhhc1N1Y2Nlc3MgfVwiPlxuICAgICAgPGRpdlxuICAgICAgICByZWY9XCJhY3RpdmF0b3JcIlxuICAgICAgICBjbGFzcz1cImdyb3VwXCJcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICRzdHlsZS5hY3RpdmF0b3IsXG4gICAgICAgICAge1xuICAgICAgICAgICAgWyRzdHlsZS5kaXNhYmxlZF06IGRpc2FibGVkLFxuICAgICAgICAgICAgWyRzdHlsZS5yZWFkb25seV06IHJlYWRvbmx5LFxuICAgICAgICAgICAgWyRzdHlsZS5vdXRsaW5lZF06IGlzT3V0bGluZWQsXG4gICAgICAgICAgICBbJHN0eWxlLmRlbnNlXTogZGVuc2UsXG4gICAgICAgICAgICBbJHN0eWxlLmZsb2F0XTogZmxvYXQsXG4gICAgICAgICAgICBbJHN0eWxlLm9wZW5lZF06IG9wZW4sXG4gICAgICAgICAgICBbJHN0eWxlWyd3aXRoLXZhbHVlJ11dOiB2YWx1ZVNldCxcbiAgICAgICAgICAgIFskc3R5bGVbJ3dpdGgtZXJyb3InXV06IGhhc0Vycm9yLFxuICAgICAgICAgICAgWyRzdHlsZVsnd2l0aC1zdWNjZXNzJ11dOiBoYXNTdWNjZXNzICYmICFoYXNFcnJvcixcbiAgICAgICAgICB9LFxuICAgICAgICBdXCJcbiAgICAgICAgdi1iaW5kPVwie1xuICAgICAgICAgIC4uLmdldE5vblJvb3RBdHRycygkYXR0cnMsIFsnb25DbGljaycsICdjbGFzcyddKSxcbiAgICAgICAgICAuLi4ocHJvcHMucmVhZG9ubHkgPyB7fSA6IGF0dHJzKSB9XG4gICAgICAgIFwiXG4gICAgICAgIGRhdGEtaWQ9XCJhY3RpdmF0b3JcIlxuICAgICAgICA6dGFiaW5kZXg9XCJkaXNhYmxlZCB8fCBwcm9wcy5yZWFkb25seSA/IC0xIDogMFwiXG4gICAgICAgIEBjbGljaz1cInNldElucHV0Rm9jdXMoKVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgdi1pZj1cImlzT3V0bGluZWQgJiYgKHNlYXJjaElucHV0Rm9jdXNlZCB8fCBvcGVuIHx8IHZhbHVlU2V0KVwiXG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgJHN0eWxlLmxhYmVsLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAnYWJzb2x1dGUnOiBpc091dGxpbmVkLFxuICAgICAgICAgICAgICAncHItMic6ICF2YWx1ZVNldCAmJiAhb3BlbiAmJiBpc091dGxpbmVkLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGxhYmVsIH19XG4gICAgICAgIDwvc3Bhbj5cblxuICAgICAgICA8c3BhbiA6Y2xhc3M9XCJbJHN0eWxlLmljb25fX3dyYXBwZXIsICRzdHlsZS5pY29uX19wcmVwZW5kXVwiPlxuICAgICAgICAgIDxSdWlJY29uXG4gICAgICAgICAgICA6Y2xhc3M9XCJbJHN0eWxlLmljb25dXCJcbiAgICAgICAgICAgIDpzaXplPVwiZGVuc2UgPyAxNiA6IDI0XCJcbiAgICAgICAgICAgIG5hbWU9XCJsdS1jYWxlbmRhci1kYXlzXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgPGRpdiA6Y2xhc3M9XCIkc3R5bGUudmFsdWVcIj5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHJlZj1cInRleHRJbnB1dFwiXG4gICAgICAgICAgICA6ZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICA6dmFsdWU9XCJmb3JtYXR0ZWREaXNwbGF5XCJcbiAgICAgICAgICAgIGNsYXNzPVwiYmctdHJhbnNwYXJlbnQgb3V0bGluZS1ub25lIGZsZXgtMSBtaW4tdy0wXCJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIDpwbGFjZWhvbGRlcj1cImRhdGVGb3JtYXRcIlxuICAgICAgICAgICAgOnJlYWRvbmx5PVwicmVhZG9ubHlcIlxuICAgICAgICAgICAgQGZvY3VzPVwiaGFuZGxlRm9jdXMoKVwiXG4gICAgICAgICAgICBAc2VsZWN0PVwiaGFuZGxlSW5wdXRTZWxlY3Rpb24oJGV2ZW50KVwiXG4gICAgICAgICAgICBAY2xpY2s9XCJoYW5kbGVDbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgIEBrZXlkb3duPVwiaGFuZGxlS2V5RG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgIEBwYXN0ZT1cImhhbmRsZVBhc3RlKCRldmVudClcIlxuICAgICAgICAgICAgQGlucHV0PVwiaGFuZGxlSW5wdXQoJGV2ZW50KVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPFJ1aUJ1dHRvblxuICAgICAgICAgIHYtaWY9XCJhbGxvd0VtcHR5ICYmIHZhbHVlU2V0ICYmICFkaXNhYmxlZFwiXG4gICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgIGljb25cbiAgICAgICAgICBkYXRhLWlkPVwiY2xlYXItYnV0dG9uXCJcbiAgICAgICAgICBzaXplPVwic21cIlxuICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgIGNvbG9yPVwiZXJyb3JcIlxuICAgICAgICAgIGNsYXNzPVwiZ3JvdXAtaG92ZXI6IXZpc2libGVcIlxuICAgICAgICAgIDpjbGFzcz1cIlskc3R5bGUuY2xlYXIsIGFueUZvY3VzZWQgJiYgJyF2aXNpYmxlJywge1xuICAgICAgICAgICAgJ21yLTInOiAhZGVuc2UsXG4gICAgICAgICAgfV1cIlxuICAgICAgICAgIEBjbGljay5zdG9wLnByZXZlbnQ9XCJjbGVhcigpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxSdWlJY29uXG4gICAgICAgICAgICBuYW1lPVwibHUteFwiXG4gICAgICAgICAgICBzaXplPVwiMThcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvUnVpQnV0dG9uPlxuXG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgOmNsYXNzPVwiWyRzdHlsZS5pY29uX193cmFwcGVyLCAkc3R5bGUuaWNvbl9fYXBwZW5kXVwiXG4gICAgICAgICAgQGNsaWNrPVwiYXJyb3dDbGlja2VkKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgPFJ1aUljb25cbiAgICAgICAgICAgIDpjbGFzcz1cIlskc3R5bGUuaWNvbiwgeyAncm90YXRlLTE4MCc6IG9wZW4gfV1cIlxuICAgICAgICAgICAgOnNpemU9XCJkZW5zZSA/IDE2IDogMjRcIlxuICAgICAgICAgICAgbmFtZT1cImx1LWNoZXZyb24tZG93blwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZmllbGRzZXRcbiAgICAgICAgdi1pZj1cImlzT3V0bGluZWRcIlxuICAgICAgICA6Y2xhc3M9XCIkc3R5bGUuZmllbGRzZXRcIlxuICAgICAgPlxuICAgICAgICA8bGVnZW5kIDpjbGFzcz1cInsgJ3B4LTInOiBmbG9hdCB9XCIgLz5cbiAgICAgIDwvZmllbGRzZXQ+XG4gICAgPC90ZW1wbGF0ZT5cbiAgICA8dGVtcGxhdGUgI2RlZmF1bHQ+XG4gICAgICA8UnVpRGF0ZVRpbWVQaWNrZXJNZW51XG4gICAgICAgIHJlZj1cIm1lbnVXcmFwcGVyUmVmXCJcbiAgICAgICAgdi1tb2RlbDpzZWxlY3RlZC1kYXRlPVwic2VsZWN0ZWREYXRlXCJcbiAgICAgICAgdi1tb2RlbDpzZWxlY3RlZC10aW1lPVwic2VsZWN0ZWRUaW1lXCJcbiAgICAgICAgdi1tb2RlbDpzZWxlY3RlZC1ob3VyPVwic2VsZWN0ZWRIb3VyXCJcbiAgICAgICAgdi1tb2RlbDpzZWxlY3RlZC1taW51dGU9XCJzZWxlY3RlZE1pbnV0ZVwiXG4gICAgICAgIHYtbW9kZWw6c2VsZWN0ZWQtc2Vjb25kPVwic2VsZWN0ZWRTZWNvbmRcIlxuICAgICAgICB2LW1vZGVsOnNlbGVjdGVkLW1pbGxpc2Vjb25kPVwic2VsZWN0ZWRNaWxsaXNlY29uZFwiXG4gICAgICAgIHYtbW9kZWw6dGltZS1zZWxlY3Rpb249XCJ0aW1lU2VsZWN0aW9uXCJcbiAgICAgICAgdi1tb2RlbDpzZWxlY3RlZC10aW1lem9uZT1cInNlbGVjdGVkVGltZXpvbmVcIlxuICAgICAgICB2LW1vZGVsOmNhbGVuZGFyLW1lbnUtb3Blbj1cImNhbGVuZGFyTWVudU9wZW5cIlxuICAgICAgICA6YWNjdXJhY3k9XCJhY2N1cmFjeVwiXG4gICAgICAgIDptYXgtZGF0ZT1cIm1heEFsbG93ZWREYXRlXCJcbiAgICAgICAgOm1pbi1kYXRlPVwibWluQWxsb3dlZERhdGVcIlxuICAgICAgICBAc2V0LW5vdz1cInNldE5vdygpXCJcbiAgICAgID5cbiAgICAgICAgPHNsb3QgbmFtZT1cIm1lbnUtY29udGVudFwiIC8+XG4gICAgICA8L1J1aURhdGVUaW1lUGlja2VyTWVudT5cbiAgICA8L3RlbXBsYXRlPlxuICA8L1J1aU1lbnU+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIiBtb2R1bGU+XG4ud3JhcHBlciB7XG4gIEBhcHBseSB3LWZ1bGwgaW5saW5lLWZsZXggZmxleC1jb2w7XG5cbiAgLmFjdGl2YXRvciB7XG4gICAgQGFwcGx5IHJlbGF0aXZlIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciB3LWZ1bGw7XG4gICAgQGFwcGx5IG91dGxpbmUtbm9uZSBmb2N1cy13aXRoaW46b3V0bGluZS1ub25lIGN1cnNvci1wb2ludGVyIG1pbi1oLTE0IHBsLTMgcHktMiBwci04IHJvdW5kZWQ7XG4gICAgQGFwcGx5IG0tMCBiZy13aGl0ZSB0cmFuc2l0aW9uLWFsbCB0ZXh0LWJvZHktMSB0ZXh0LWxlZnQgaG92ZXI6Ym9yZGVyLWJsYWNrO1xuXG4gICAgJjpub3QoLm91dGxpbmVkKSB7XG4gICAgICBAYXBwbHkgaG92ZXI6YmctZ3JheS0xMDAgZm9jdXMtd2l0aGluOmJnLWdyYXktMTAwO1xuICAgIH1cblxuICAgICYuZGVuc2Uge1xuICAgICAgQGFwcGx5IHB5LTEuNSBtaW4taC0xMDtcblxuICAgICAgfiAuZmllbGRzZXQge1xuICAgICAgICBAYXBwbHkgcHgtMjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmRpc2FibGVkIHtcbiAgICAgIEBhcHBseSBvcGFjaXR5LTY1IHRleHQtcnVpLXRleHQtZGlzYWJsZWQgYWN0aXZlOnRleHQtcnVpLXRleHQtZGlzYWJsZWQgY3Vyc29yLWRlZmF1bHQgcG9pbnRlci1ldmVudHMtbm9uZTtcbiAgICB9XG5cbiAgICAmLnJlYWRvbmx5IHtcbiAgICAgIEBhcHBseSBvcGFjaXR5LTgwIHBvaW50ZXItZXZlbnRzLW5vbmUgY3Vyc29yLWRlZmF1bHQgYmctZ3JheS01MDtcbiAgICB9XG5cbiAgICAmLm91dGxpbmVkIHtcbiAgICAgIEBhcHBseSBib3JkZXItbm9uZSBob3Zlcjpib3JkZXItbm9uZTtcblxuICAgICAgJi5vcGVuZWQsXG4gICAgICAmOmZvY3VzLFxuICAgICAgJjpmb2N1cy13aXRoaW4ge1xuICAgICAgICBAYXBwbHkgYm9yZGVyLXJ1aS1wcmltYXJ5O1xuXG4gICAgICAgIH4gLmZpZWxkc2V0IHtcbiAgICAgICAgICBAYXBwbHkgYm9yZGVyLXJ1aS1wcmltYXJ5ICN7IWltcG9ydGFudH07XG4gICAgICAgICAgQGFwcGx5IGJvcmRlci0yICN7IWltcG9ydGFudH07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgfiAuZmllbGRzZXQge1xuICAgICAgICBAYXBwbHkgYm9yZGVyIGJvcmRlci1ibGFjay9bMC4yM107XG4gICAgICB9XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICB+IC5maWVsZHNldCB7XG4gICAgICAgICAgQGFwcGx5IGJvcmRlci1ibGFjaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmLmRpc2FibGVkIHtcbiAgICAgICAgfiAuZmllbGRzZXQge1xuICAgICAgICAgIEBhcHBseSBib3JkZXItZG90dGVkO1xuICAgICAgICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLWJsYWNrL1swLjIzXSAjeyFpbXBvcnRhbnR9O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYud2l0aC1zdWNjZXNzIHtcbiAgICAgICAgLmxhYmVsIHtcbiAgICAgICAgICBAYXBwbHkgdGV4dC1ydWktc3VjY2VzcyAjeyFpbXBvcnRhbnR9O1xuICAgICAgICB9XG5cbiAgICAgICAgfiAuZmllbGRzZXQge1xuICAgICAgICAgIEBhcHBseSBib3JkZXItcnVpLXN1Y2Nlc3MgI3shaW1wb3J0YW50fTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmLndpdGgtZXJyb3Ige1xuICAgICAgICAubGFiZWwge1xuICAgICAgICAgIEBhcHBseSB0ZXh0LXJ1aS1lcnJvciAjeyFpbXBvcnRhbnR9O1xuICAgICAgICB9XG5cbiAgICAgICAgfiAuZmllbGRzZXQge1xuICAgICAgICAgIEBhcHBseSBib3JkZXItcnVpLWVycm9yICN7IWltcG9ydGFudH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAubGFiZWwge1xuICAgICAgQGFwcGx5IHRleHQtcnVpLXRleHQtc2Vjb25kYXJ5O1xuICAgICAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSAyLjVyZW0pO1xuICAgIH1cblxuICAgIC5sYWJlbCxcbiAgICAudmFsdWUge1xuICAgICAgQGFwcGx5IGJsb2NrIHRydW5jYXRlIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTc1O1xuICAgIH1cblxuICAgIC52YWx1ZSB7XG4gICAgICBAYXBwbHkgZmxleCBnYXAtMSBmbGV4LXdyYXAgZmxleC0xIHBzLTg7XG4gICAgfVxuXG4gICAgLmNsZWFyIHtcbiAgICAgIEBhcHBseSBtbC1hdXRvIHNocmluay0wIGludmlzaWJsZTtcbiAgICB9XG5cbiAgICAuaWNvbiB7XG4gICAgICBAYXBwbHkgdGV4dC1ydWktdGV4dC1zZWNvbmRhcnkgdHJhbnNpdGlvbjtcblxuICAgICAgJl9fd3JhcHBlciB7XG4gICAgICAgIEBhcHBseSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWVuZDtcbiAgICAgICAgQGFwcGx5IGFic29sdXRlIHRvcC1weCBib3R0b20tMDtcbiAgICAgIH1cblxuICAgICAgJl9fYXBwZW5kIHtcbiAgICAgICAgQGFwcGx5IHJpZ2h0LTM7XG4gICAgICB9XG5cbiAgICAgICZfX3ByZXBlbmQge1xuICAgICAgICBAYXBwbHkgbGVmdC0zO1xuICAgICAgfVxuICAgIH1cblxuICAgICYuZmxvYXQge1xuICAgICAgLmxhYmVsIHtcbiAgICAgICAgQGFwcGx5IC10cmFuc2xhdGUteS0yIHRvcC0wIHRleHQteHMgcHgtMTtcbiAgICAgIH1cblxuICAgICAgfiAuZmllbGRzZXQge1xuICAgICAgICBsZWdlbmQge1xuICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgY29udGVudDogdi1iaW5kKGxhYmVsV2l0aFF1b3RlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJi5vcGVuZWQsXG4gICAgICAmLm9wZW5lZC53aXRoLXZhbHVlLFxuICAgICAgJjpmb2N1cyxcbiAgICAgICY6Zm9jdXMud2l0aC12YWx1ZSxcbiAgICAgICY6Zm9jdXMtd2l0aGluLFxuICAgICAgJjpmb2N1cy13aXRoaW4ud2l0aC12YWx1ZSB7XG4gICAgICAgIC5sYWJlbCB7XG4gICAgICAgICAgQGFwcGx5IHRleHQtcnVpLXByaW1hcnk7XG4gICAgICAgIH1cblxuICAgICAgICB+IC5maWVsZHNldCB7XG4gICAgICAgICAgQGFwcGx5IGJvcmRlci1ydWktcHJpbWFyeTtcbiAgICAgICAgICBAYXBwbHkgYm9yZGVyLTIgI3shaW1wb3J0YW50fTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5maWVsZHNldCB7XG4gICAgQGFwcGx5IGFic29sdXRlIHctZnVsbCBtaW4tdy0wIGgtW2NhbGMoMTAwJSswLjVyZW0pXSB0b3AtMCBsZWZ0LTAgcm91bmRlZCBwb2ludGVyLWV2ZW50cy1ub25lIHB4LTIgdHJhbnNpdGlvbi1hbGwgLW10LTI7XG5cbiAgICBsZWdlbmQge1xuICAgICAgQGFwcGx5IG9wYWNpdHktMCB0ZXh0LXhzIHRydW5jYXRlO1xuICAgICAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSAxcmVtKTtcblxuICAgICAgJjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiAnICc7XG4gICAgICB9XG5cbiAgICAgICY6YWZ0ZXIge1xuICAgICAgICBAYXBwbHkgdHJ1bmNhdGUgbWF4LXctZnVsbCBsZWFkaW5nLVswXTtcbiAgICAgICAgY29udGVudDogJ1xcMjAwQic7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi5tZW51IHtcbiAgQGFwcGx5IG92ZXJmbG93LXktYXV0byBtYXgtaC02MCBtaW4tdy1bMi41cmVtXTtcbn1cblxuLmhpZ2hsaWdodGVkIHtcbiAgQGFwcGx5IGJnLXJ1aS1ncmV5LTIwMCAjeyFpbXBvcnRhbnR9O1xuXG4gICYuYWN0aXZlIHtcbiAgICBAYXBwbHkgYmctcnVpLWdyZXktMzAwICN7IWltcG9ydGFudH07XG4gIH1cbn1cblxuOmdsb2JhbCguZGFyaykge1xuICAud3JhcHBlciB7XG4gICAgLmFjdGl2YXRvciB7XG4gICAgICBAYXBwbHkgYmctdHJhbnNwYXJlbnQgdGV4dC1ydWktdGV4dDtcblxuICAgICAgJjpub3QoLm91dGxpbmVkKSB7XG4gICAgICAgIEBhcHBseSBob3ZlcjpiZy13aGl0ZS8xMCBmb2N1cy13aXRoaW46Ymctd2hpdGUvMTA7XG5cbiAgICAgICAgJi5kaXNhYmxlZCB7XG4gICAgICAgICAgQGFwcGx5IGJnLXdoaXRlLzEwO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYucmVhZG9ubHkge1xuICAgICAgICBAYXBwbHkgYmctd2hpdGUvMTA7XG4gICAgICB9XG5cbiAgICAgICYub3V0bGluZWQge1xuICAgICAgICB+IC5maWVsZHNldCB7XG4gICAgICAgICAgQGFwcGx5IGJvcmRlci13aGl0ZS9bMC4yM107XG4gICAgICAgIH1cblxuICAgICAgICAmLmRpc2FibGVkIHtcbiAgICAgICAgICB+IC5maWVsZHNldCB7XG4gICAgICAgICAgICBAYXBwbHkgYm9yZGVyLXdoaXRlL1swLjIzXSAjeyFpbXBvcnRhbnR9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgIH4gLmZpZWxkc2V0IHtcbiAgICAgICAgICAgIEBhcHBseSBib3JkZXItd2hpdGU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmhpZ2hsaWdodGVkIHtcbiAgICBAYXBwbHkgYmctcnVpLWdyZXktODAwICN7IWltcG9ydGFudH07XG5cbiAgICAmLmFjdGl2ZSB7XG4gICAgICBAYXBwbHkgYmctcnVpLWdyZXktNzAwICN7IWltcG9ydGFudH07XG4gICAgfVxuICB9XG59XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvcHMge1xuICB2ZXJ0aWNhbD86IGJvb2xlYW47XG59XG5cbmRlZmluZU9wdGlvbnMoe1xuICBuYW1lOiAnUnVpRGl2aWRlcicsXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG59KTtcblxud2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gIHZlcnRpY2FsOiBmYWxzZSxcbn0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cInZlcnRpY2FsID8gJ2JvcmRlci1sJyA6ICdib3JkZXItdCdcIlxuICAgIGNsYXNzPVwiYm9yZGVyLWRlZmF1bHRcIlxuICAgIHYtYmluZD1cIiRhdHRyc1wiXG4gIC8+XG48L3RlbXBsYXRlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbmltcG9ydCB0eXBlIHsgQ29udGV4dENvbG9yc1R5cGUgfSBmcm9tICdAL2NvbnN0cy9jb2xvcnMnO1xuaW1wb3J0IHsgb2JqZWN0UGljayB9IGZyb20gJ0B2dWV1c2Uvc2hhcmVkJztcbmltcG9ydCBSdWlGb3JtVGV4dERldGFpbCBmcm9tICdAL2NvbXBvbmVudHMvaGVscGVycy9SdWlGb3JtVGV4dERldGFpbC52dWUnO1xuaW1wb3J0IFJ1aUljb24gZnJvbSAnQC9jb21wb25lbnRzL2ljb25zL1J1aUljb24udnVlJztcbmltcG9ydCB7IGdldE5vblJvb3RBdHRycywgZ2V0Um9vdEF0dHJzIH0gZnJvbSAnQC91dGlscy9oZWxwZXJzJztcblxuZXhwb3J0IGludGVyZmFjZSBQcm9wcyB7XG4gIG1vZGVsVmFsdWU/OiBib29sZWFuO1xuICBpbmRldGVybWluYXRlPzogYm9vbGVhbjtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBjb2xvcj86IENvbnRleHRDb2xvcnNUeXBlO1xuICBzaXplPzogJ3NtJyB8ICdsZyc7XG4gIGxhYmVsPzogc3RyaW5nO1xuICBoaW50Pzogc3RyaW5nO1xuICBlcnJvck1lc3NhZ2VzPzogc3RyaW5nIHwgc3RyaW5nW107XG4gIHN1Y2Nlc3NNZXNzYWdlcz86IHN0cmluZyB8IHN0cmluZ1tdO1xuICBoaWRlRGV0YWlscz86IGJvb2xlYW47XG59XG5cbmRlZmluZU9wdGlvbnMoe1xuICBuYW1lOiAnUnVpQ2hlY2tib3gnLFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxufSk7XG5cbmNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gIG1vZGVsVmFsdWU6IGZhbHNlLFxuICBpbmRldGVybWluYXRlOiBmYWxzZSxcbiAgZGlzYWJsZWQ6IGZhbHNlLFxuICBjb2xvcjogdW5kZWZpbmVkLFxuICBzaXplOiB1bmRlZmluZWQsXG4gIGxhYmVsOiAnJyxcbiAgaGludDogJycsXG4gIGVycm9yTWVzc2FnZXM6ICgpID0+IFtdLFxuICBzdWNjZXNzTWVzc2FnZXM6ICgpID0+IFtdLFxuICBoaWRlRGV0YWlsczogZmFsc2UsXG59KTtcblxuY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPHtcbiAgKGU6ICd1cGRhdGU6bW9kZWxWYWx1ZScsIG1vZGVsVmFsdWU6IGJvb2xlYW4pOiB2b2lkO1xuICAoZTogJ3VwZGF0ZTppbmRldGVybWluYXRlJywgaW5kZXRlcm1pbmF0ZTogYm9vbGVhbik6IHZvaWQ7XG59PigpO1xuXG5jb25zdCB7IHNpemUsIG1vZGVsVmFsdWUsIGluZGV0ZXJtaW5hdGUsIGVycm9yTWVzc2FnZXMsIHN1Y2Nlc3NNZXNzYWdlcyB9ID0gdG9SZWZzKHByb3BzKTtcblxuY29uc3QgZWwgPSByZWY8SFRNTElucHV0RWxlbWVudCB8IG51bGw+KG51bGwpO1xuXG5jb25zdCBpbnRlcm5hbE1vZGVsVmFsdWUgPSBjb21wdXRlZDxib29sZWFuPih7XG4gIGdldDogKCkgPT4gZ2V0KG1vZGVsVmFsdWUpLFxuICBzZXQ6IChjaGVja2VkOiBib29sZWFuKSA9PiB7XG4gICAgaWYgKGNoZWNrZWQpXG4gICAgICBlbWl0KCd1cGRhdGU6aW5kZXRlcm1pbmF0ZScsIGZhbHNlKTtcbiAgICBlbWl0KCd1cGRhdGU6bW9kZWxWYWx1ZScsIGNoZWNrZWQpO1xuICB9LFxufSk7XG5cbmNvbnN0IGljb25TaXplID0gY29tcHV0ZWQ8bnVtYmVyPigoKSA9PiB7XG4gIGNvbnN0IHNpemVWYWwgPSBnZXQoc2l6ZSk7XG4gIGlmIChzaXplVmFsID09PSAnbGcnKVxuICAgIHJldHVybiAyODtcblxuICBpZiAoc2l6ZVZhbCA9PT0gJ3NtJylcbiAgICByZXR1cm4gMjA7XG5cbiAgcmV0dXJuIDI0O1xufSk7XG5cbmNvbnN0IHsgaGFzRXJyb3IsIGhhc1N1Y2Nlc3MgfSA9IHVzZUZvcm1UZXh0RGV0YWlsKFxuICBlcnJvck1lc3NhZ2VzLFxuICBzdWNjZXNzTWVzc2FnZXMsXG4pO1xuXG53YXRjaChpbmRldGVybWluYXRlLCAodmFsKSA9PiB7XG4gIGNvbnN0IGlucHV0ID0gZ2V0KGVsKTtcbiAgaWYgKGlucHV0KSB7XG4gICAgaW5wdXQuY2hlY2tlZCA9ICF2YWw7XG4gICAgaWYgKHZhbClcbiAgICAgIGlucHV0LnZhbHVlID0gJ29mZic7XG4gICAgZWxzZVxuICAgICAgaW5wdXQudmFsdWUgPSAnb24nO1xuICB9XG59KTtcblxud2F0Y2goaW50ZXJuYWxNb2RlbFZhbHVlLCAodmFsKSA9PiB7XG4gIGNvbnN0IGlucHV0ID0gZ2V0KGVsKTtcbiAgaWYgKGlucHV0ICYmIGlucHV0LmNoZWNrZWQgIT09IHZhbClcbiAgICBpbnB1dC5jaGVja2VkID0gdmFsO1xufSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IHYtYmluZD1cImdldFJvb3RBdHRycygkYXR0cnMpXCI+XG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICRzdHlsZS53cmFwcGVyLFxuICAgICAgICAkc3R5bGVbc2l6ZSA/PyAnJ10sXG4gICAgICAgIHtcbiAgICAgICAgICBbJHN0eWxlLmRpc2FibGVkXTogZGlzYWJsZWQsXG4gICAgICAgIH0sXG4gICAgICBdXCJcbiAgICAgIHYtYmluZD1cIm9iamVjdFBpY2soJGF0dHJzLCBbJ29uQ2xpY2snXSlcIlxuICAgID5cbiAgICAgIDxpbnB1dFxuICAgICAgICByZWY9XCJlbFwiXG4gICAgICAgIHYtbW9kZWw9XCJpbnRlcm5hbE1vZGVsVmFsdWVcIlxuICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICA6Y2xhc3M9XCIkc3R5bGUuaW5wdXRcIlxuICAgICAgICA6ZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXG4gICAgICAgIHYtYmluZD1cImdldE5vblJvb3RBdHRycygkYXR0cnMsIFsnb25JbnB1dCcsICdvbkNsaWNrJ10pXCJcbiAgICAgIC8+XG4gICAgICA8c3BhblxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJHN0eWxlLmNoZWNrYm94LFxuICAgICAgICAgICRzdHlsZVtjb2xvciA/PyAnJ10sXG4gICAgICAgICAgJHN0eWxlW3NpemUgPz8gJyddLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFskc3R5bGUuY2hlY2tlZF06IG1vZGVsVmFsdWUgfHwgaW5kZXRlcm1pbmF0ZSxcbiAgICAgICAgICAgIFskc3R5bGUuZGlzYWJsZWRdOiBkaXNhYmxlZCxcbiAgICAgICAgICAgIFskc3R5bGVbJ3dpdGgtZXJyb3InXV06IGhhc0Vycm9yLFxuICAgICAgICAgICAgWyRzdHlsZVsnd2l0aC1zdWNjZXNzJ11dOiBoYXNTdWNjZXNzICYmICFoYXNFcnJvcixcbiAgICAgICAgICB9LFxuICAgICAgICBdXCJcbiAgICAgID5cbiAgICAgICAgPFJ1aUljb25cbiAgICAgICAgICB2LWlmPVwiaW5kZXRlcm1pbmF0ZVwiXG4gICAgICAgICAgbmFtZT1cImx1LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtZmlsbFwiXG4gICAgICAgICAgOnNpemU9XCJpY29uU2l6ZVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxSdWlJY29uXG4gICAgICAgICAgdi1lbHNlLWlmPVwibW9kZWxWYWx1ZVwiXG4gICAgICAgICAgbmFtZT1cImx1LWNoZWNrYm94LWZpbGxcIlxuICAgICAgICAgIDpzaXplPVwiaWNvblNpemVcIlxuICAgICAgICAvPlxuICAgICAgICA8UnVpSWNvblxuICAgICAgICAgIHYtZWxzZVxuICAgICAgICAgIG5hbWU9XCJsdS1jaGVja2JveC1ibGFua1wiXG4gICAgICAgICAgOnNpemU9XCJpY29uU2l6ZVwiXG4gICAgICAgIC8+XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhblxuICAgICAgICB2LWlmPVwibGFiZWwgfHwgJHNsb3RzLmRlZmF1bHRcIlxuICAgICAgICA6Y2xhc3M9XCIkc3R5bGUubGFiZWxcIlxuICAgICAgICBjbGFzcz1cInRleHQtYm9keS0xXCJcbiAgICAgID5cbiAgICAgICAgPHNsb3Q+e3sgbGFiZWwgfX08L3Nsb3Q+XG4gICAgICA8L3NwYW4+XG4gICAgPC9sYWJlbD5cbiAgICA8UnVpRm9ybVRleHREZXRhaWxcbiAgICAgIHYtaWY9XCIhaGlkZURldGFpbHNcIlxuICAgICAgOmVycm9yLW1lc3NhZ2VzPVwiZXJyb3JNZXNzYWdlc1wiXG4gICAgICA6c3VjY2Vzcy1tZXNzYWdlcz1cInN1Y2Nlc3NNZXNzYWdlc1wiXG4gICAgICA6aGludD1cImhpbnRcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgbW9kdWxlPlxuQHVzZSAnQC9zdHlsZXMvY29sb3JzLnNjc3MnIGFzIGM7XG5cbi53cmFwcGVyIHtcbiAgQGFwcGx5IHJlbGF0aXZlIGZsZXggaXRlbXMtc3RhcnQgY3Vyc29yLXBvaW50ZXIgLW1sLVs5cHhdO1xuXG4gICYuZGlzYWJsZWQge1xuICAgIEBhcHBseSBjdXJzb3Itbm90LWFsbG93ZWQ7XG5cbiAgICAuY2hlY2tib3gge1xuICAgICAgQGFwcGx5IG9wYWNpdHktNTA7XG5cbiAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgIH1cblxuICAgIC5sYWJlbCB7XG4gICAgICBAYXBwbHkgdGV4dC1ydWktdGV4dC1kaXNhYmxlZDtcbiAgICB9XG4gIH1cblxuICAuaW5wdXQge1xuICAgIEBhcHBseSBhcHBlYXJhbmNlLW5vbmUgdy1bMXB4XSBoLVsxcHhdIGFic29sdXRlIHotWzJdIG91dGxpbmUtbm9uZSBzZWxlY3Qtbm9uZTtcblxuICAgICY6Zm9jdXMge1xuICAgICAgKyAuY2hlY2tib3gge1xuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgQGFwcGx5IG9wYWNpdHktMTU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuY2hlY2tib3gge1xuICAgIEBhcHBseSByZWxhdGl2ZSB0ZXh0LXJ1aS10ZXh0LXNlY29uZGFyeSBwLVs5cHhdO1xuXG4gICAgJjpiZWZvcmUge1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBAYXBwbHkgYWJzb2x1dGUgdG9wLTEvMiBsZWZ0LTEvMiBibG9jayBoLVs0MnB4XSB3LVs0MnB4XSAtdHJhbnNsYXRlLXktMS8yIC10cmFuc2xhdGUteC0xLzIgcm91bmRlZC1mdWxsIG9wYWNpdHktMCB0cmFuc2l0aW9uLW9wYWNpdHk7XG4gICAgICBAYXBwbHkgYmctYmxhY2sgZGFyazpiZy13aGl0ZTtcbiAgICB9XG5cbiAgICAmLndpdGgtZXJyb3Ige1xuICAgICAgQGFwcGx5IHRleHQtcnVpLWVycm9yICN7IWltcG9ydGFudH07XG4gICAgfVxuXG4gICAgJi53aXRoLXN1Y2Nlc3Mge1xuICAgICAgQGFwcGx5IHRleHQtcnVpLXN1Y2Nlc3MgI3shaW1wb3J0YW50fTtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgQGFwcGx5IG9wYWNpdHktNTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOmFjdGl2ZSB7XG4gICAgICAmOmJlZm9yZSB7XG4gICAgICAgIEBhcHBseSBvcGFjaXR5LTMwO1xuICAgICAgfVxuICAgIH1cblxuICAgICYubGcge1xuICAgICAgJjpiZWZvcmUge1xuICAgICAgICBAYXBwbHkgaC1bNDZweF0gdy1bNDZweF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5zbSB7XG4gICAgICAmOmJlZm9yZSB7XG4gICAgICAgIEBhcHBseSBoLVszOHB4XSB3LVszOHB4XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAZWFjaCAkY29sb3IgaW4gYy4kY29udGV4dC1jb2xvcnMge1xuICAgICAgJi4jeyRjb2xvcn0ge1xuICAgICAgICBAYXBwbHkgYmVmb3JlOmJnLXJ1aS0jeyRjb2xvcn07XG4gICAgICAgICYuY2hlY2tlZCB7XG4gICAgICAgICAgQGFwcGx5IHRleHQtcnVpLSN7JGNvbG9yfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5sYWJlbCB7XG4gICAgQGFwcGx5IGZsZXgtMSB0ZXh0LXJ1aS10ZXh0O1xuXG4gICAgJjpub3QoOmVtcHR5KSB7XG4gICAgICBAYXBwbHkgbXQtWzlweF0gbWItMTtcbiAgICB9XG4gIH1cblxuICAmLnNtIHtcbiAgICAubGFiZWwge1xuICAgICAgJjpub3QoOmVtcHR5KSB7XG4gICAgICAgIEBhcHBseSBtdC1bN3B4XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmLmxnIHtcbiAgICAubGFiZWwge1xuICAgICAgJjpub3QoOmVtcHR5KSB7XG4gICAgICAgIEBhcHBseSBtdC1bMTFweF07XG4gICAgICB9XG4gICAgfVxuICB9XG59XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cCBnZW5lcmljPSdUVmFsdWUnPlxuaW1wb3J0IHR5cGUgeyBDb250ZXh0Q29sb3JzVHlwZSB9IGZyb20gJ0AvY29uc3RzL2NvbG9ycyc7XG5pbXBvcnQgeyBvYmplY3RQaWNrIH0gZnJvbSAnQHZ1ZXVzZS9zaGFyZWQnO1xuaW1wb3J0IHsgRnJhZ21lbnQsIGlzVk5vZGUgfSBmcm9tICd2dWUnO1xuaW1wb3J0IFJ1aUZvcm1UZXh0RGV0YWlsIGZyb20gJ0AvY29tcG9uZW50cy9oZWxwZXJzL1J1aUZvcm1UZXh0RGV0YWlsLnZ1ZSc7XG5pbXBvcnQgeyBhc3NlcnQgfSBmcm9tICdAL3V0aWxzL2Fzc2VydCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvcHMge1xuICBpbmxpbmU/OiBib29sZWFuO1xuICBsYWJlbD86IHN0cmluZztcbiAgaGludD86IHN0cmluZztcbiAgZXJyb3JNZXNzYWdlcz86IHN0cmluZyB8IHN0cmluZ1tdO1xuICBzdWNjZXNzTWVzc2FnZXM/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgaGlkZURldGFpbHM/OiBib29sZWFuO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGNvbG9yPzogQ29udGV4dENvbG9yc1R5cGU7XG4gIHNpemU/OiAnc20nIHwgJ2xnJztcbn1cblxuZGVmaW5lT3B0aW9ucyh7XG4gIG5hbWU6ICdSdWlSYWRpb0dyb3VwJyxcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbn0pO1xuXG5jb25zdCBtb2RlbFZhbHVlID0gZGVmaW5lTW9kZWw8VFZhbHVlPih7IHJlcXVpcmVkOiBmYWxzZSB9KTtcblxud2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gIGlubGluZTogZmFsc2UsXG4gIGxhYmVsOiAnJyxcbiAgaGludDogJycsXG4gIGVycm9yTWVzc2FnZXM6ICgpID0+IFtdLFxuICBzdWNjZXNzTWVzc2FnZXM6ICgpID0+IFtdLFxuICBoaWRlRGV0YWlsczogZmFsc2UsXG4gIGRpc2FibGVkOiBmYWxzZSxcbiAgY29sb3I6IHVuZGVmaW5lZCxcbiAgc2l6ZTogdW5kZWZpbmVkLFxufSk7XG5cbmNvbnN0IHJhZGlvR3JvdXBOYW1lID0gcmVmKCcnKTtcblxub25Nb3VudGVkKCgpID0+IHtcbiAgc2V0KHJhZGlvR3JvdXBOYW1lLCBnZW5lcmF0ZUlkKCdyYWRpby1ncm91cCcpKTtcbn0pO1xuXG5jb25zdCBzbG90cyA9IHVzZVNsb3RzKCk7XG5jb25zdCBjaGlsZHJlbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgY29uc3Qgc2xvdENvbnRlbnQgPSBzbG90cy5kZWZhdWx0Py4oKSA/PyBbXTtcblxuICAvLyBXaGVuIHVzaW5nIGR5bmFtaWMgY29udGVudCB3aXRoIHYtZm9yIHRoZSBzbG90IGNvbnRlbnQgaXMgYSBzaW5nbGUgZnJhZ21lbnRcbiAgLy8gY29udGFpbmluZyB0aGUgY2hpbGRyZW4gY29tcG9uZW50cy5cbiAgaWYgKHNsb3RDb250ZW50Lmxlbmd0aCA9PT0gMSkge1xuICAgIGNvbnN0IGZpcnN0Q2hpbGQgPSBzbG90Q29udGVudFswXTtcbiAgICBhc3NlcnQoZmlyc3RDaGlsZCk7XG4gICAgaWYgKGZpcnN0Q2hpbGQudHlwZSA9PT0gRnJhZ21lbnQpIHtcbiAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KGZpcnN0Q2hpbGQuY2hpbGRyZW4pID8gZmlyc3RDaGlsZC5jaGlsZHJlbi5maWx0ZXIoaXNWTm9kZSkgOiBbXTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHNsb3RDb250ZW50O1xufSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IHYtYmluZD1cIiRhdHRyc1wiPlxuICAgIDxkaXZcbiAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICBjbGFzcz1cInRleHQtcnVpLXRleHQtc2Vjb25kYXJ5IHRleHQtYm9keS0xXCJcbiAgICA+XG4gICAgICB7eyBsYWJlbCB9fVxuICAgIDwvZGl2PlxuICAgIDxkaXYgOmNsYXNzPVwiWyRzdHlsZS53cmFwcGVyLCB7IFskc3R5bGUud3JhcHBlcl9faW5saW5lID8/ICcnXTogaW5saW5lIH1dXCI+XG4gICAgICA8Q29tcG9uZW50XG4gICAgICAgIDppcz1cImNoaWxkXCJcbiAgICAgICAgdi1mb3I9XCIoY2hpbGQsIGkpIGluIGNoaWxkcmVuXCJcbiAgICAgICAgdi1iaW5kPVwib2JqZWN0UGljaygkcHJvcHMsIFsnZGlzYWJsZWQnLCAnY29sb3InLCAnc2l6ZSddKVwiXG4gICAgICAgIDprZXk9XCJpXCJcbiAgICAgICAgdi1tb2RlbD1cIm1vZGVsVmFsdWVcIlxuICAgICAgICBoaWRlLWRldGFpbHNcbiAgICAgICAgOm5hbWU9XCJyYWRpb0dyb3VwTmFtZVwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuICAgIDxSdWlGb3JtVGV4dERldGFpbFxuICAgICAgdi1pZj1cIiFoaWRlRGV0YWlsc1wiXG4gICAgICA6ZXJyb3ItbWVzc2FnZXM9XCJlcnJvck1lc3NhZ2VzXCJcbiAgICAgIDpzdWNjZXNzLW1lc3NhZ2VzPVwic3VjY2Vzc01lc3NhZ2VzXCJcbiAgICAgIDpoaW50PVwiaGludFwiXG4gICAgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIiBtb2R1bGU+XG4ud3JhcHBlciB7XG4gICZfX2lubGluZSB7XG4gICAgQGFwcGx5IGZsZXggc3BhY2UteC02O1xuICB9XG59XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cCBnZW5lcmljPSdUVmFsdWUnPlxuaW1wb3J0IHR5cGUgeyBDb250ZXh0Q29sb3JzVHlwZSB9IGZyb20gJ0AvY29uc3RzL2NvbG9ycyc7XG5pbXBvcnQgUnVpRm9ybVRleHREZXRhaWwgZnJvbSAnQC9jb21wb25lbnRzL2hlbHBlcnMvUnVpRm9ybVRleHREZXRhaWwudnVlJztcbmltcG9ydCBSdWlJY29uIGZyb20gJ0AvY29tcG9uZW50cy9pY29ucy9SdWlJY29uLnZ1ZSc7XG5pbXBvcnQgeyBnZXROb25Sb290QXR0cnMsIGdldFJvb3RBdHRycyB9IGZyb20gJ0AvdXRpbHMvaGVscGVycyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmFkaW9Qcm9wczxUVmFsdWU+IHtcbiAgdmFsdWU6IFRWYWx1ZTtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBjb2xvcj86IENvbnRleHRDb2xvcnNUeXBlO1xuICBzaXplPzogJ3NtJyB8ICdsZyc7XG4gIGxhYmVsPzogc3RyaW5nO1xuICBoaW50Pzogc3RyaW5nO1xuICBlcnJvck1lc3NhZ2VzPzogc3RyaW5nIHwgc3RyaW5nW107XG4gIHN1Y2Nlc3NNZXNzYWdlcz86IHN0cmluZyB8IHN0cmluZ1tdO1xuICBoaWRlRGV0YWlscz86IGJvb2xlYW47XG59XG5cbmRlZmluZU9wdGlvbnMoe1xuICBuYW1lOiAnUnVpUmFkaW8nLFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxufSk7XG5cbmNvbnN0IG1vZGVsVmFsdWUgPSBkZWZpbmVNb2RlbDxUVmFsdWU+KHsgcmVxdWlyZWQ6IGZhbHNlIH0pO1xuXG5jb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxSYWRpb1Byb3BzPFRWYWx1ZT4+KCksIHtcbiAgZGlzYWJsZWQ6IGZhbHNlLFxuICBjb2xvcjogdW5kZWZpbmVkLFxuICBzaXplOiB1bmRlZmluZWQsXG4gIGxhYmVsOiAnJyxcbiAgaGludDogJycsXG4gIGVycm9yTWVzc2FnZXM6ICgpID0+IFtdLFxuICBzdWNjZXNzTWVzc2FnZXM6ICgpID0+IFtdLFxuICBoaWRlRGV0YWlsczogZmFsc2UsXG59KTtcblxuY29uc3QgeyB2YWx1ZSwgc3VjY2Vzc01lc3NhZ2VzLCBlcnJvck1lc3NhZ2VzIH1cbiAgPSB0b1JlZnMocHJvcHMpO1xuXG5mdW5jdGlvbiBpbnB1dChldmVudDogRXZlbnQpIHtcbiAgY29uc3QgY2hlY2tlZCA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkuY2hlY2tlZDtcbiAgaWYgKGNoZWNrZWQpXG4gICAgc2V0KG1vZGVsVmFsdWUsIGdldCh2YWx1ZSkpO1xufVxuXG5jb25zdCBpY29uU2l6ZTogQ29tcHV0ZWRSZWY8bnVtYmVyPiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgY29uc3Qgc2l6ZSA9IHByb3BzLnNpemU7XG4gIGlmIChzaXplID09PSAnbGcnKVxuICAgIHJldHVybiAyODtcblxuICBpZiAoc2l6ZSA9PT0gJ3NtJylcbiAgICByZXR1cm4gMjA7XG5cbiAgcmV0dXJuIDI0O1xufSk7XG5cbmNvbnN0IHNlbGVjdGVkID0gY29tcHV0ZWQoKCkgPT4gZ2V0KG1vZGVsVmFsdWUpID09PSBnZXQodmFsdWUpKTtcblxuY29uc3QgeyBoYXNFcnJvciwgaGFzU3VjY2VzcyB9ID0gdXNlRm9ybVRleHREZXRhaWwoXG4gIGVycm9yTWVzc2FnZXMsXG4gIHN1Y2Nlc3NNZXNzYWdlcyxcbik7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IHYtYmluZD1cImdldFJvb3RBdHRycygkYXR0cnMpXCI+XG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICRzdHlsZS53cmFwcGVyLFxuICAgICAgICAkc3R5bGVbc2l6ZSA/PyAnJ10sXG4gICAgICAgIHtcbiAgICAgICAgICBbJHN0eWxlLmRpc2FibGVkXTogZGlzYWJsZWQsXG4gICAgICAgIH0sXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8aW5wdXRcbiAgICAgICAgOmNoZWNrZWQ9XCJzZWxlY3RlZFwiXG4gICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgIDpjbGFzcz1cIiRzdHlsZS5pbnB1dFwiXG4gICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgICAgdi1iaW5kPVwiZ2V0Tm9uUm9vdEF0dHJzKCRhdHRycylcIlxuICAgICAgICA6dmFsdWU9XCJ2YWx1ZVwiXG4gICAgICAgIEBpbnB1dD1cImlucHV0KCRldmVudClcIlxuICAgICAgLz5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICRzdHlsZS5yYWRpbyxcbiAgICAgICAgICAkc3R5bGVbY29sb3IgPz8gJyddLFxuICAgICAgICAgICRzdHlsZVtzaXplID8/ICcnXSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBbJHN0eWxlLmNoZWNrZWRdOiBzZWxlY3RlZCxcbiAgICAgICAgICAgIFskc3R5bGUuZGlzYWJsZWRdOiBkaXNhYmxlZCxcbiAgICAgICAgICAgIFskc3R5bGVbJ3dpdGgtZXJyb3InXV06IGhhc0Vycm9yLFxuICAgICAgICAgICAgWyRzdHlsZVsnd2l0aC1zdWNjZXNzJ11dOiBoYXNTdWNjZXNzICYmICFoYXNFcnJvcixcbiAgICAgICAgICB9LFxuICAgICAgICBdXCJcbiAgICAgID5cbiAgICAgICAgPFJ1aUljb25cbiAgICAgICAgICB2LWlmPVwic2VsZWN0ZWRcIlxuICAgICAgICAgIG5hbWU9XCJsdS1yYWRpby1idXR0b24tZmlsbFwiXG4gICAgICAgICAgOnNpemU9XCJpY29uU2l6ZVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxSdWlJY29uXG4gICAgICAgICAgdi1lbHNlXG4gICAgICAgICAgbmFtZT1cImx1LWNoZWNrYm94LWJsYW5rLWNpcmNsZVwiXG4gICAgICAgICAgOnNpemU9XCJpY29uU2l6ZVwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiJHN0eWxlLmxhYmVsXCJcbiAgICAgICAgY2xhc3M9XCJ0ZXh0LWJvZHktMVwiXG4gICAgICA+XG4gICAgICAgIDxzbG90Pnt7IGxhYmVsIH19PC9zbG90PlxuICAgICAgPC9kaXY+XG4gICAgPC9sYWJlbD5cbiAgICA8UnVpRm9ybVRleHREZXRhaWxcbiAgICAgIHYtaWY9XCIhaGlkZURldGFpbHNcIlxuICAgICAgOmVycm9yLW1lc3NhZ2VzPVwiZXJyb3JNZXNzYWdlc1wiXG4gICAgICA6c3VjY2Vzcy1tZXNzYWdlcz1cInN1Y2Nlc3NNZXNzYWdlc1wiXG4gICAgICA6aGludD1cImhpbnRcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgbW9kdWxlPlxuQHVzZSAnQC9zdHlsZXMvY29sb3JzLnNjc3MnIGFzIGM7XG5cbi53cmFwcGVyIHtcbiAgQGFwcGx5IHJlbGF0aXZlIGZsZXggaXRlbXMtc3RhcnQgY3Vyc29yLXBvaW50ZXIgLW1sLVs5cHhdO1xuXG4gICYuZGlzYWJsZWQge1xuICAgIEBhcHBseSBjdXJzb3Itbm90LWFsbG93ZWQ7XG5cbiAgICAucmFkaW8ge1xuICAgICAgQGFwcGx5IG9wYWNpdHktNTA7XG5cbiAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgIH1cblxuICAgIC5sYWJlbCB7XG4gICAgICBAYXBwbHkgdGV4dC1ydWktdGV4dC1kaXNhYmxlZDtcbiAgICB9XG4gIH1cblxuICAuaW5wdXQge1xuICAgIEBhcHBseSBhcHBlYXJhbmNlLW5vbmUgdy1bMXB4XSBoLVsxcHhdIGFic29sdXRlIHotWzJdIG91dGxpbmUtbm9uZSBzZWxlY3Qtbm9uZTtcblxuICAgICY6Zm9jdXMge1xuICAgICAgKyAucmFkaW8ge1xuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgQGFwcGx5IG9wYWNpdHktMTU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAucmFkaW8ge1xuICAgIEBhcHBseSByZWxhdGl2ZSB0ZXh0LXJ1aS10ZXh0LXNlY29uZGFyeSBwLVs5cHhdO1xuXG4gICAgJjpiZWZvcmUge1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBAYXBwbHkgYWJzb2x1dGUgdG9wLTEvMiBsZWZ0LTEvMiBibG9jayBoLVs0MnB4XSB3LVs0MnB4XSAtdHJhbnNsYXRlLXktMS8yIC10cmFuc2xhdGUteC0xLzIgcm91bmRlZC1mdWxsIG9wYWNpdHktMCB0cmFuc2l0aW9uLW9wYWNpdHk7XG4gICAgICBAYXBwbHkgYmctYmxhY2sgZGFyazpiZy13aGl0ZTtcbiAgICB9XG5cbiAgICAmLndpdGgtZXJyb3Ige1xuICAgICAgQGFwcGx5IHRleHQtcnVpLWVycm9yICN7IWltcG9ydGFudH07XG4gICAgfVxuXG4gICAgJi53aXRoLXN1Y2Nlc3Mge1xuICAgICAgQGFwcGx5IHRleHQtcnVpLXN1Y2Nlc3MgI3shaW1wb3J0YW50fTtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgQGFwcGx5IG9wYWNpdHktNTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOmFjdGl2ZSB7XG4gICAgICAmOmJlZm9yZSB7XG4gICAgICAgIEBhcHBseSBvcGFjaXR5LTMwO1xuICAgICAgfVxuICAgIH1cblxuICAgICYubGcge1xuICAgICAgJjpiZWZvcmUge1xuICAgICAgICBAYXBwbHkgaC1bNDZweF0gdy1bNDZweF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5zbSB7XG4gICAgICAmOmJlZm9yZSB7XG4gICAgICAgIEBhcHBseSBoLVszOHB4XSB3LVszOHB4XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAZWFjaCAkY29sb3IgaW4gYy4kY29udGV4dC1jb2xvcnMge1xuICAgICAgJi4jeyRjb2xvcn0ge1xuICAgICAgICBAYXBwbHkgYmVmb3JlOmJnLXJ1aS0jeyRjb2xvcn07XG4gICAgICAgICYuY2hlY2tlZCB7XG4gICAgICAgICAgQGFwcGx5IHRleHQtcnVpLSN7JGNvbG9yfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5sYWJlbCB7XG4gICAgQGFwcGx5IGZsZXgtMSB0ZXh0LXJ1aS10ZXh0O1xuXG4gICAgJjpub3QoOmVtcHR5KSB7XG4gICAgICBAYXBwbHkgbXQtWzlweF0gbWItMTtcbiAgICB9XG4gIH1cblxuICAmLnNtIHtcbiAgICAubGFiZWwge1xuICAgICAgJjpub3QoOmVtcHR5KSB7XG4gICAgICAgIEBhcHBseSBtdC1bN3B4XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmLmxnIHtcbiAgICAubGFiZWwge1xuICAgICAgJjpub3QoOmVtcHR5KSB7XG4gICAgICAgIEBhcHBseSBtdC1bMTFweF07XG4gICAgICB9XG4gICAgfVxuICB9XG59XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbmltcG9ydCBSdWlCdXR0b24gZnJvbSAnQC9jb21wb25lbnRzL2J1dHRvbnMvYnV0dG9uL1J1aUJ1dHRvbi52dWUnO1xuaW1wb3J0IFJ1aVRleHRGaWVsZCwgeyB0eXBlIFRleHRGaWVsZFByb3BzIH0gZnJvbSAnQC9jb21wb25lbnRzL2Zvcm1zL3RleHQtZmllbGQvUnVpVGV4dEZpZWxkLnZ1ZSc7XG5pbXBvcnQgUnVpSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvaWNvbnMvUnVpSWNvbi52dWUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BzIGV4dGVuZHMgVGV4dEZpZWxkUHJvcHMge31cblxuZGVmaW5lT3B0aW9ucyh7XG4gIG5hbWU6ICdSdWlSZXZlYWxhYmxlVGV4dEZpZWxkJyxcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbn0pO1xuXG5jb25zdCBtb2RlbFZhbHVlID0gZGVmaW5lTW9kZWw8c3RyaW5nPih7IHJlcXVpcmVkOiB0cnVlIH0pO1xuXG5jb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICBsYWJlbDogJycsXG4gIHBsYWNlaG9sZGVyOiAnJyxcbiAgZGlzYWJsZWQ6IGZhbHNlLFxuICB2YXJpYW50OiAnZGVmYXVsdCcsXG4gIGNvbG9yOiB1bmRlZmluZWQsXG4gIHRleHRDb2xvcjogdW5kZWZpbmVkLFxuICBkZW5zZTogZmFsc2UsXG4gIGhpbnQ6ICcnLFxuICBhczogdW5kZWZpbmVkLFxuICBlcnJvck1lc3NhZ2VzOiAoKSA9PiBbXSxcbiAgc3VjY2Vzc01lc3NhZ2VzOiAoKSA9PiBbXSxcbiAgaGlkZURldGFpbHM6IGZhbHNlLFxuICBwcmVwZW5kSWNvbjogdW5kZWZpbmVkLFxuICBhcHBlbmRJY29uOiB1bmRlZmluZWQsXG4gIHJlYWRvbmx5OiBmYWxzZSxcbiAgY2xlYXJhYmxlOiBmYWxzZSxcbn0pO1xuXG5jb25zdCBoaWRkZW4gPSByZWY8Ym9vbGVhbj4odHJ1ZSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8UnVpVGV4dEZpZWxkXG4gICAgdi1iaW5kPVwieyAuLi5wcm9wcywgLi4uJGF0dHJzIH1cIlxuICAgIHYtbW9kZWw9XCJtb2RlbFZhbHVlXCJcbiAgICA6dHlwZT1cImhpZGRlbiA/ICdwYXNzd29yZCcgOiAndGV4dCdcIlxuICA+XG4gICAgPHRlbXBsYXRlXG4gICAgICB2LWlmPVwiJHNsb3RzLnByZXBlbmRcIlxuICAgICAgI3ByZXBlbmRcbiAgICA+XG4gICAgICA8c2xvdCBuYW1lPVwicHJlcGVuZFwiIC8+XG4gICAgPC90ZW1wbGF0ZT5cbiAgICA8dGVtcGxhdGUgI2FwcGVuZD5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICA8UnVpQnV0dG9uXG4gICAgICAgICAgOmRpc2FibGVkPVwiZGlzYWJsZWRcIlxuICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBpY29uXG4gICAgICAgICAgY2xhc3M9XCItbXItMSAhcC0yXCJcbiAgICAgICAgICBAY2xpY2s9XCJoaWRkZW4gPSAhaGlkZGVuXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxSdWlJY29uXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtYmxhY2svWy41NF0gZGFyazp0ZXh0LXdoaXRlL1suNTZdXCJcbiAgICAgICAgICAgIHNpemU9XCIyMFwiXG4gICAgICAgICAgICA6bmFtZT1cImhpZGRlbiA/ICdsdS1leWUtb2ZmJyA6ICdsdS1leWUnXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L1J1aUJ1dHRvbj5cblxuICAgICAgICA8c2xvdCBuYW1lPVwiYXBwZW5kXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvdGVtcGxhdGU+XG4gIDwvUnVpVGV4dEZpZWxkPlxuPC90ZW1wbGF0ZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXAgZ2VuZXJpYz1cIlRWYWx1ZSwgVEl0ZW1cIj5cbmltcG9ydCBSdWlCdXR0b24gZnJvbSAnQC9jb21wb25lbnRzL2J1dHRvbnMvYnV0dG9uL1J1aUJ1dHRvbi52dWUnO1xuaW1wb3J0IFJ1aUljb24gZnJvbSAnQC9jb21wb25lbnRzL2ljb25zL1J1aUljb24udnVlJztcbmltcG9ydCBSdWlNZW51LCB7IHR5cGUgTWVudVByb3BzIH0gZnJvbSAnQC9jb21wb25lbnRzL292ZXJsYXlzL21lbnUvUnVpTWVudS52dWUnO1xuaW1wb3J0IFJ1aVByb2dyZXNzIGZyb20gJ0AvY29tcG9uZW50cy9wcm9ncmVzcy9SdWlQcm9ncmVzcy52dWUnO1xuaW1wb3J0IHsgdHlwZSBLZXlPZlR5cGUsIHVzZURyb3Bkb3duTWVudSB9IGZyb20gJ0AvY29tcG9zYWJsZXMvZHJvcGRvd24tbWVudSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvcHM8VFZhbHVlLCBUSXRlbT4ge1xuICBvcHRpb25zOiBUSXRlbVtdO1xuICBrZXlBdHRyPzogS2V5T2ZUeXBlPFRJdGVtLCBUVmFsdWUgZXh0ZW5kcyBBcnJheTxpbmZlciBVPiA/IFUgOiBUVmFsdWU+O1xuICB0ZXh0QXR0cj86IGtleW9mIFRJdGVtO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGxvYWRpbmc/OiBib29sZWFuO1xuICByZWFkT25seT86IGJvb2xlYW47XG4gIGRlbnNlPzogYm9vbGVhbjtcbiAgY2xlYXJhYmxlPzogYm9vbGVhbjtcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIG1lbnVPcHRpb25zPzogTWVudVByb3BzO1xuICBsYWJlbENsYXNzPzogc3RyaW5nO1xuICBtZW51Q2xhc3M/OiBzdHJpbmc7XG4gIG9wdGlvbkNsYXNzPzogc3RyaW5nO1xuICBwcmVwZW5kV2lkdGg/OiBudW1iZXI7IC8vIGluIHJlbVxuICBhcHBlbmRXaWR0aD86IG51bWJlcjsgLy8gaW4gcmVtXG4gIGl0ZW1IZWlnaHQ/OiBudW1iZXI7IC8vIGluIHB4XG4gIHZhcmlhbnQ/OiAnZGVmYXVsdCcgfCAnZmlsbGVkJyB8ICdvdXRsaW5lZCc7XG4gIGhpbnQ/OiBzdHJpbmc7XG4gIGVycm9yTWVzc2FnZXM/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgc3VjY2Vzc01lc3NhZ2VzPzogc3RyaW5nIHwgc3RyaW5nW107XG4gIGhpZGVEZXRhaWxzPzogYm9vbGVhbjtcbiAgYXV0b1NlbGVjdEZpcnN0PzogYm9vbGVhbjtcbiAgaGlkZU5vRGF0YT86IGJvb2xlYW47XG4gIG5vRGF0YVRleHQ/OiBzdHJpbmc7XG59XG5cbmRlZmluZU9wdGlvbnMoe1xuICBuYW1lOiAnUnVpTWVudVNlbGVjdCcsXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG59KTtcblxuY29uc3QgbW9kZWxWYWx1ZSA9IGRlZmluZU1vZGVsPFRWYWx1ZSB8IHVuZGVmaW5lZD4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM8VFZhbHVlLCBUSXRlbT4+KCksIHtcbiAgZGlzYWJsZWQ6IGZhbHNlLFxuICBsb2FkaW5nOiBmYWxzZSxcbiAgcmVhZE9ubHk6IGZhbHNlLFxuICBkZW5zZTogZmFsc2UsXG4gIGNsZWFyYWJsZTogZmFsc2UsXG4gIGhpZGVEZXRhaWxzOiBmYWxzZSxcbiAgbGFiZWw6ICdTZWxlY3QnLFxuICBwcmVwZW5kV2lkdGg6IDAsXG4gIGFwcGVuZFdpZHRoOiAwLFxuICB2YXJpYW50OiAnZGVmYXVsdCcsXG4gIGhpbnQ6IHVuZGVmaW5lZCxcbiAga2V5QXR0cjogdW5kZWZpbmVkLFxuICB0ZXh0QXR0cjogdW5kZWZpbmVkLFxuICBpdGVtSGVpZ2h0OiB1bmRlZmluZWQsXG4gIGVycm9yTWVzc2FnZXM6ICgpID0+IFtdLFxuICBzdWNjZXNzTWVzc2FnZXM6ICgpID0+IFtdLFxuICBhdXRvU2VsZWN0Rmlyc3Q6IGZhbHNlLFxuICBoaWRlTm9EYXRhOiBmYWxzZSxcbiAgbm9EYXRhVGV4dDogJ05vIGRhdGEgYXZhaWxhYmxlJyxcbn0pO1xuXG5jb25zdCB7IGRlbnNlLCBvcHRpb25zLCBkaXNhYmxlZCB9ID0gdG9SZWZzKHByb3BzKTtcblxuY29uc3QgbWVudVJlZiA9IHJlZigpO1xuY29uc3QgYWN0aXZhdG9yID0gcmVmKCk7XG5jb25zdCB7IGZvY3VzZWQgfSA9IHVzZUZvY3VzKGFjdGl2YXRvcik7XG5cbmNvbnN0IHZhbHVlID0gY29tcHV0ZWQ8VEl0ZW0gfCB1bmRlZmluZWQ+KHtcbiAgZ2V0OiAoKSA9PiB7XG4gICAgY29uc3Qga2V5QXR0ciA9IHByb3BzLmtleUF0dHI7XG4gICAgY29uc3QgdmFsdWUgPSBnZXQobW9kZWxWYWx1ZSk7XG4gICAgaWYgKGtleUF0dHIpXG4gICAgICByZXR1cm4gcHJvcHMub3B0aW9ucy5maW5kKG9wdGlvbiA9PiBvcHRpb25ba2V5QXR0cl0gPT09IHZhbHVlKTtcbiAgICByZXR1cm4gdmFsdWUgYXMgdW5rbm93biBhcyBUSXRlbTtcbiAgfSxcbiAgc2V0OiAoc2VsZWN0ZWQ/OiBUSXRlbSkgPT4ge1xuICAgIGNvbnN0IGtleUF0dHIgPSBwcm9wcy5rZXlBdHRyO1xuICAgIGNvbnN0IHNlbGVjdGlvbiA9IGtleUF0dHIgJiYgc2VsZWN0ZWQgPyBzZWxlY3RlZFtrZXlBdHRyXSA6IHNlbGVjdGVkO1xuICAgIHNldChtb2RlbFZhbHVlLCBzZWxlY3Rpb24gYXMgVFZhbHVlKTtcbiAgfSxcbn0pO1xuXG5jb25zdCBsYWJlbFdpdGhRdW90ZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgaWYgKCFwcm9wcy5sYWJlbClcbiAgICByZXR1cm4gJ1wiXFxcXDIwMEJcIic7XG5cbiAgcmV0dXJuIGAnICAke3Byb3BzLmxhYmVsfSAgJ2A7XG59KTtcblxuY29uc3Qge1xuICBjb250YWluZXJQcm9wcyxcbiAgd3JhcHBlclByb3BzLFxuICByZW5kZXJlZERhdGEsXG4gIGlzT3BlbixcbiAgbWVudVdpZHRoLFxuICBnZXRUZXh0LFxuICBnZXRJZGVudGlmaWVyLFxuICBpc0FjdGl2ZUl0ZW0sXG4gIGhpZ2hsaWdodGVkSW5kZXgsXG4gIG1vdmVIaWdobGlnaHQsXG4gIHZhbHVlS2V5LFxufSA9IHVzZURyb3Bkb3duTWVudTxUVmFsdWUsIFRJdGVtPih7XG4gIGl0ZW1IZWlnaHQ6IHByb3BzLml0ZW1IZWlnaHQgPz8gKHByb3BzLmRlbnNlID8gMzAgOiA0OCksXG4gIGtleUF0dHI6IHByb3BzLmtleUF0dHIsXG4gIHRleHRBdHRyOiBwcm9wcy50ZXh0QXR0cixcbiAgb3B0aW9ucyxcbiAgYXV0b0ZvY3VzOiB0cnVlLFxuICBkZW5zZSxcbiAgdmFsdWUsXG4gIG1lbnVSZWYsXG4gIGRpc2FibGVkLFxuICBhdXRvU2VsZWN0Rmlyc3Q6IHByb3BzLmF1dG9TZWxlY3RGaXJzdCxcbn0pO1xuXG5jb25zdCBvdXRsaW5lZCA9IGNvbXB1dGVkKCgpID0+IHByb3BzLnZhcmlhbnQgPT09ICdvdXRsaW5lZCcpO1xuXG5jb25zdCBmbG9hdCA9IGNvbXB1dGVkKCgpID0+IChnZXQoaXNPcGVuKSB8fCAhIWdldCh2YWx1ZSkpICYmIGdldChvdXRsaW5lZCkpO1xuXG5jb25zdCB2aXJ0dWFsQ29udGFpbmVyUHJvcHMgPSBjb21wdXRlZCgoKSA9PiAoe1xuICBzdHlsZTogY29udGFpbmVyUHJvcHMuc3R5bGUgYXMgYW55LFxuICByZWY6IGNvbnRhaW5lclByb3BzLnJlZiBhcyBhbnksXG59KSk7XG5cbmZ1bmN0aW9uIHNldFZhbHVlKHZhbDogVEl0ZW0sIGluZGV4PzogbnVtYmVyKSB7XG4gIGlmIChpc0RlZmluZWQoaW5kZXgpKVxuICAgIHNldChoaWdobGlnaHRlZEluZGV4LCBpbmRleCk7XG5cbiAgc2V0KHZhbHVlLCB2YWwpO1xuICBzZXQoZm9jdXNlZCwgdHJ1ZSk7XG59XG5cbmZ1bmN0aW9uIGNsZWFyKCkge1xuICBzZXQobW9kZWxWYWx1ZSwgdW5kZWZpbmVkKTtcbn1cbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxSdWlNZW51XG4gICAgdi1tb2RlbD1cImlzT3BlblwiXG4gICAgOmNsYXNzPVwiJHN0eWxlLndyYXBwZXJcIlxuICAgIGRpc2FibGUtYXV0by1mb2N1c1xuICAgIHYtYmluZD1cIntcbiAgICAgIC4uLmdldFJvb3RBdHRycygkYXR0cnMpLFxuICAgICAgcGxhY2VtZW50OiAnYm90dG9tLXN0YXJ0JyxcbiAgICAgIGNsb3NlT25Db250ZW50Q2xpY2s6IHRydWUsXG4gICAgICBmdWxsV2lkdGg6IHRydWUsXG4gICAgICAuLi5tZW51T3B0aW9ucyxcbiAgICAgIGVycm9yTWVzc2FnZXMsXG4gICAgICBzdWNjZXNzTWVzc2FnZXMsXG4gICAgICBoaW50LFxuICAgICAgZGVuc2UsXG4gICAgICBzaG93RGV0YWlsczogIWhpZGVEZXRhaWxzLFxuICAgICAgZGlzYWJsZWQsXG4gICAgfVwiXG4gID5cbiAgICA8dGVtcGxhdGUgI2FjdGl2YXRvcj1cInsgYXR0cnMsIG9wZW4sIGhhc0Vycm9yLCBoYXNTdWNjZXNzIH1cIj5cbiAgICAgIDxzbG90XG4gICAgICAgIG5hbWU9XCJhY3RpdmF0b3JcIlxuICAgICAgICB2LWJpbmQ9XCJ7IGRpc2FibGVkLCB2YWx1ZSwgdmFyaWFudCwgcmVhZE9ubHksIGF0dHJzLCBvcGVuLCBoYXNFcnJvciwgaGFzU3VjY2VzcyB9XCJcbiAgICAgID5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHJlZj1cImFjdGl2YXRvclwiXG4gICAgICAgICAgOmRpc2FibGVkPVwiZGlzYWJsZWRcIlxuICAgICAgICAgIDphcmlhLWRpc2FibGVkPVwiZGlzYWJsZWRcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIDp0YWJpbmRleD1cImRpc2FibGVkIHx8IHJlYWRPbmx5ID8gLTEgOiAwXCJcbiAgICAgICAgICBjbGFzcz1cImdyb3VwXCJcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAkc3R5bGUuYWN0aXZhdG9yLFxuICAgICAgICAgICAgbGFiZWxDbGFzcyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgWyRzdHlsZS5kaXNhYmxlZF06IGRpc2FibGVkLFxuICAgICAgICAgICAgICBbJHN0eWxlLnJlYWRvbmx5XTogcmVhZE9ubHksXG4gICAgICAgICAgICAgIFskc3R5bGUub3V0bGluZWRdOiBvdXRsaW5lZCxcbiAgICAgICAgICAgICAgWyRzdHlsZS5kZW5zZV06IGRlbnNlLFxuICAgICAgICAgICAgICBbJHN0eWxlLmZsb2F0XTogZmxvYXQsXG4gICAgICAgICAgICAgIFskc3R5bGUub3BlbmVkXTogb3BlbixcbiAgICAgICAgICAgICAgWyRzdHlsZVsnd2l0aC12YWx1ZSddXTogISF2YWx1ZSxcbiAgICAgICAgICAgICAgWyRzdHlsZVsnd2l0aC1lcnJvciddXTogaGFzRXJyb3IsXG4gICAgICAgICAgICAgIFskc3R5bGVbJ3dpdGgtc3VjY2VzcyddXTogaGFzU3VjY2VzcyAmJiAhaGFzRXJyb3IsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIHYtYmluZD1cInsgLi4uZ2V0Tm9uUm9vdEF0dHJzKCRhdHRycyksIC4uLihyZWFkT25seSA/IHt9IDogYXR0cnMpIH1cIlxuICAgICAgICAgIGRhdGEtaWQ9XCJhY3RpdmF0b3JcIlxuICAgICAgICAgIEBrZXlkb3duLnVwLnByZXZlbnQ9XCJtb3ZlSGlnaGxpZ2h0KHRydWUpXCJcbiAgICAgICAgICBAa2V5ZG93bi5kb3duLnByZXZlbnQ9XCJtb3ZlSGlnaGxpZ2h0KGZhbHNlKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgdi1pZj1cIm91dGxpbmVkIHx8ICF2YWx1ZVwiXG4gICAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAgICRzdHlsZS5sYWJlbCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICdhYnNvbHV0ZSc6IG91dGxpbmVkLFxuICAgICAgICAgICAgICAgICdwci0yJzogIXZhbHVlICYmICFvcGVuICYmIG91dGxpbmVkLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNsb3RcbiAgICAgICAgICAgICAgbmFtZT1cImFjdGl2YXRvci5sYWJlbFwiXG4gICAgICAgICAgICAgIHYtYmluZD1cInsgdmFsdWUgfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IGxhYmVsIH19XG4gICAgICAgICAgICA8L3Nsb3Q+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICB2LWlmPVwidmFsdWVcIlxuICAgICAgICAgICAgY2xhc3M9XCJ3LWZ1bGxcIlxuICAgICAgICAgICAgOmNsYXNzPVwiJHN0eWxlLnZhbHVlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c2xvdFxuICAgICAgICAgICAgICBuYW1lPVwic2VsZWN0aW9uLnByZXBlbmRcIlxuICAgICAgICAgICAgICB2LWJpbmQ9XCJ7IGl0ZW06IHZhbHVlIH1cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzbG90XG4gICAgICAgICAgICAgIG5hbWU9XCJzZWxlY3Rpb25cIlxuICAgICAgICAgICAgICB2LWJpbmQ9XCJ7IGl0ZW06IHZhbHVlIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBnZXRUZXh0KHZhbHVlKSB9fVxuICAgICAgICAgICAgPC9zbG90PlxuICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICB2LWlmPVwiY2xlYXJhYmxlICYmIHZhbHVlICYmICFkaXNhYmxlZFwiXG4gICAgICAgICAgICBjbGFzcz1cImdyb3VwLWhvdmVyOiF2aXNpYmxlXCJcbiAgICAgICAgICAgIDpjbGFzcz1cIlskc3R5bGUuY2xlYXIsIGZvY3VzZWQgJiYgJyF2aXNpYmxlJ11cIlxuICAgICAgICAgICAgQGNsaWNrLnN0b3AucHJldmVudD1cImNsZWFyKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxSdWlJY29uXG4gICAgICAgICAgICAgIGNvbG9yPVwiZXJyb3JcIlxuICAgICAgICAgICAgICBuYW1lPVwibHUteFwiXG4gICAgICAgICAgICAgIHNpemU9XCIxOFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgIDxzcGFuIDpjbGFzcz1cIiRzdHlsZS5pY29uX193cmFwcGVyXCI+XG4gICAgICAgICAgICA8UnVpSWNvblxuICAgICAgICAgICAgICA6Y2xhc3M9XCJbJHN0eWxlLmljb24sIHsgJ3JvdGF0ZS0xODAnOiBvcGVuIH1dXCJcbiAgICAgICAgICAgICAgOnNpemU9XCJkZW5zZSA/IDE2IDogMjRcIlxuICAgICAgICAgICAgICBuYW1lPVwibHUtY2hldnJvbi1kb3duXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgPFJ1aVByb2dyZXNzXG4gICAgICAgICAgICB2LWlmPVwibG9hZGluZ1wiXG4gICAgICAgICAgICBjbGFzcz1cImFic29sdXRlIGxlZnQtMCBib3R0b20tMCB3LWZ1bGxcIlxuICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgIHRoaWNrbmVzcz1cIjNcIlxuICAgICAgICAgICAgdmFyaWFudD1cImluZGV0ZXJtaW5hdGVcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8ZmllbGRzZXRcbiAgICAgICAgICB2LWlmPVwib3V0bGluZWRcIlxuICAgICAgICAgIDpjbGFzcz1cIiRzdHlsZS5maWVsZHNldFwiXG4gICAgICAgID5cbiAgICAgICAgICA8bGVnZW5kIDpjbGFzcz1cInsgJ3B4LTInOiBmbG9hdCB9XCIgLz5cbiAgICAgICAgPC9maWVsZHNldD5cbiAgICAgIDwvc2xvdD5cbiAgICAgIDxpbnB1dFxuICAgICAgICA6dmFsdWU9XCJ2YWx1ZUtleVwiXG4gICAgICAgIGNsYXNzPVwiaGlkZGVuXCJcbiAgICAgICAgdHlwZT1cImhpZGRlblwiXG4gICAgICAvPlxuICAgIDwvdGVtcGxhdGU+XG4gICAgPHRlbXBsYXRlICNkZWZhdWx0PVwieyB3aWR0aCB9XCI+XG4gICAgICA8ZGl2XG4gICAgICAgIHYtaWY9XCJvcHRpb25zLmxlbmd0aCA+IDBcIlxuICAgICAgICA6Y2xhc3M9XCJbJHN0eWxlLm1lbnUsIG1lbnVDbGFzc11cIlxuICAgICAgICA6c3R5bGU9XCJ7IHdpZHRoOiBgJHt3aWR0aH1weGAsIG1pbldpZHRoOiBtZW51V2lkdGggfVwiXG4gICAgICAgIHYtYmluZD1cInZpcnR1YWxDb250YWluZXJQcm9wc1wiXG4gICAgICAgIEBzY3JvbGw9XCJjb250YWluZXJQcm9wcy5vblNjcm9sbFwiXG4gICAgICAgIEBrZXlkb3duLnVwLnByZXZlbnQ9XCJtb3ZlSGlnaGxpZ2h0KHRydWUpXCJcbiAgICAgICAgQGtleWRvd24uZG93bi5wcmV2ZW50PVwibW92ZUhpZ2hsaWdodChmYWxzZSlcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgdi1iaW5kPVwid3JhcHBlclByb3BzXCJcbiAgICAgICAgICByZWY9XCJtZW51UmVmXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxSdWlCdXR0b25cbiAgICAgICAgICAgIHYtZm9yPVwiKHsgaXRlbSwgX2luZGV4IH0pIGluIHJlbmRlcmVkRGF0YVwiXG4gICAgICAgICAgICA6a2V5PVwiX2luZGV4XCJcbiAgICAgICAgICAgIDphY3RpdmU9XCJpc0FjdGl2ZUl0ZW0oaXRlbSlcIlxuICAgICAgICAgICAgOnNpemU9XCJkZW5zZSA/ICdzbScgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgOm1vZGVsLXZhbHVlPVwiZ2V0SWRlbnRpZmllcihpdGVtKVwiXG4gICAgICAgICAgICB2YXJpYW50PVwibGlzdFwiXG4gICAgICAgICAgICA6Y2xhc3M9XCJ7XG4gICAgICAgICAgICAgIGhpZ2hsaWdodGVkOiBoaWdobGlnaHRlZEluZGV4ID09PSBfaW5kZXgsXG4gICAgICAgICAgICAgIFskc3R5bGUuaGlnaGxpZ2h0ZWRdOiAhaXNBY3RpdmVJdGVtKGl0ZW0pICYmIGhpZ2hsaWdodGVkSW5kZXggPT09IF9pbmRleCxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgQHVwZGF0ZTptb2RlbC12YWx1ZT1cInNldFZhbHVlKGl0ZW0sIF9pbmRleClcIlxuICAgICAgICAgICAgQG1vdXNlZG93bj1cImhpZ2hsaWdodGVkSW5kZXggPSBfaW5kZXhcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDx0ZW1wbGF0ZSAjcHJlcGVuZD5cbiAgICAgICAgICAgICAgPHNsb3RcbiAgICAgICAgICAgICAgICBuYW1lPVwiaXRlbS5wcmVwZW5kXCJcbiAgICAgICAgICAgICAgICB2LWJpbmQ9XCJ7IGRpc2FibGVkLCBpdGVtLCBhY3RpdmU6IGlzQWN0aXZlSXRlbShpdGVtKSB9XCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICA8c2xvdFxuICAgICAgICAgICAgICBuYW1lPVwiaXRlbVwiXG4gICAgICAgICAgICAgIHYtYmluZD1cInsgZGlzYWJsZWQsIGl0ZW0sIGFjdGl2ZTogaXNBY3RpdmVJdGVtKGl0ZW0pIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBnZXRUZXh0KGl0ZW0pIH19XG4gICAgICAgICAgICA8L3Nsb3Q+XG4gICAgICAgICAgICA8dGVtcGxhdGUgI2FwcGVuZD5cbiAgICAgICAgICAgICAgPHNsb3RcbiAgICAgICAgICAgICAgICBuYW1lPVwiaXRlbS5hcHBlbmRcIlxuICAgICAgICAgICAgICAgIHYtYmluZD1cInsgZGlzYWJsZWQsIGl0ZW0sIGFjdGl2ZTogaXNBY3RpdmVJdGVtKGl0ZW0pIH1cIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICA8L1J1aUJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICB2LWVsc2UtaWY9XCIhaGlkZU5vRGF0YVwiXG4gICAgICAgIDpzdHlsZT1cInsgd2lkdGg6IGAke3dpZHRofXB4YCwgbWluV2lkdGg6IG1lbnVXaWR0aCB9XCJcbiAgICAgICAgOmNsYXNzPVwibWVudUNsYXNzXCJcbiAgICAgID5cbiAgICAgICAgPHNsb3QgbmFtZT1cIm5vLWRhdGFcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicC00XCI+XG4gICAgICAgICAgICB7eyBub0RhdGFUZXh0IH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2xvdD5cbiAgICAgIDwvZGl2PlxuICAgIDwvdGVtcGxhdGU+XG4gIDwvUnVpTWVudT5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBsYW5nPVwic2Nzc1wiIG1vZHVsZT5cbi53cmFwcGVyIHtcbiAgQGFwcGx5IHctZnVsbCBpbmxpbmUtZmxleCBmbGV4LWNvbDtcblxuICAuYWN0aXZhdG9yIHtcbiAgICBAYXBwbHkgcmVsYXRpdmUgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHctZnVsbDtcbiAgICBAYXBwbHkgb3V0bGluZS1ub25lIGZvY3VzOm91dGxpbmUtbm9uZSBjdXJzb3ItcG9pbnRlciBtaW4taC0xNCBwbC0zIHB5LTIgcHItOCByb3VuZGVkO1xuICAgIEBhcHBseSBtLTAgYmctd2hpdGUgdHJhbnNpdGlvbi1hbGwgdGV4dC1ib2R5LTEgdGV4dC1sZWZ0IGhvdmVyOmJvcmRlci1ibGFjaztcblxuICAgICY6bm90KC5vdXRsaW5lZCkge1xuICAgICAgQGFwcGx5IGhvdmVyOmJnLWdyYXktMTAwIGZvY3VzLXdpdGhpbjpiZy1ncmF5LTEwMDtcbiAgICB9XG5cbiAgICAmLmRlbnNlIHtcbiAgICAgIEBhcHBseSBweS0xLjUgbWluLWgtMTA7XG5cbiAgICAgIH4gLmZpZWxkc2V0IHtcbiAgICAgICAgQGFwcGx5IHB4LTI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5kaXNhYmxlZCB7XG4gICAgICBAYXBwbHkgb3BhY2l0eS02NSB0ZXh0LXJ1aS10ZXh0LWRpc2FibGVkIGFjdGl2ZTp0ZXh0LXJ1aS10ZXh0LWRpc2FibGVkIGN1cnNvci1kZWZhdWx0IHBvaW50ZXItZXZlbnRzLW5vbmU7XG4gICAgfVxuXG4gICAgJi5yZWFkb25seSB7XG4gICAgICBAYXBwbHkgb3BhY2l0eS04MCBwb2ludGVyLWV2ZW50cy1ub25lIGN1cnNvci1kZWZhdWx0IGJnLWdyYXktNTA7XG4gICAgfVxuXG4gICAgJi5vdXRsaW5lZCB7XG4gICAgICBAYXBwbHkgYm9yZGVyLW5vbmUgaG92ZXI6Ym9yZGVyLW5vbmU7XG5cbiAgICAgICYub3BlbmVkLFxuICAgICAgJjpmb2N1cyB7XG4gICAgICAgIEBhcHBseSBib3JkZXItcnVpLXByaW1hcnk7XG5cbiAgICAgICAgfiAuZmllbGRzZXQge1xuICAgICAgICAgIEBhcHBseSBib3JkZXItcnVpLXByaW1hcnkgI3shaW1wb3J0YW50fTtcbiAgICAgICAgICBAYXBwbHkgYm9yZGVyLTIgI3shaW1wb3J0YW50fTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB+IC5maWVsZHNldCB7XG4gICAgICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLWJsYWNrL1swLjIzXTtcbiAgICAgIH1cblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIH4gLmZpZWxkc2V0IHtcbiAgICAgICAgICBAYXBwbHkgYm9yZGVyLWJsYWNrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYuZGlzYWJsZWQge1xuICAgICAgICB+IC5maWVsZHNldCB7XG4gICAgICAgICAgQGFwcGx5IGJvcmRlci1kb3R0ZWQ7XG4gICAgICAgICAgQGFwcGx5IGJvcmRlci1ibGFjay9bMC4yM10gI3shaW1wb3J0YW50fTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmLndpdGgtc3VjY2VzcyB7XG4gICAgICAgIC5sYWJlbCB7XG4gICAgICAgICAgQGFwcGx5IHRleHQtcnVpLXN1Y2Nlc3MgI3shaW1wb3J0YW50fTtcbiAgICAgICAgfVxuXG4gICAgICAgIH4gLmZpZWxkc2V0IHtcbiAgICAgICAgICBAYXBwbHkgYm9yZGVyLXJ1aS1zdWNjZXNzICN7IWltcG9ydGFudH07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJi53aXRoLWVycm9yIHtcbiAgICAgICAgLmxhYmVsIHtcbiAgICAgICAgICBAYXBwbHkgdGV4dC1ydWktZXJyb3IgI3shaW1wb3J0YW50fTtcbiAgICAgICAgfVxuXG4gICAgICAgIH4gLmZpZWxkc2V0IHtcbiAgICAgICAgICBAYXBwbHkgYm9yZGVyLXJ1aS1lcnJvciAjeyFpbXBvcnRhbnR9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmxhYmVsIHtcbiAgICAgIEBhcHBseSB0ZXh0LXJ1aS10ZXh0LXNlY29uZGFyeTtcbiAgICAgIG1heC13aWR0aDogY2FsYygxMDAlIC0gMi41cmVtKTtcbiAgICB9XG5cbiAgICAubGFiZWwsXG4gICAgLnZhbHVlIHtcbiAgICAgIEBhcHBseSBibG9jayB0cnVuY2F0ZSB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi03NTtcbiAgICB9XG5cbiAgICAuY2xlYXIge1xuICAgICAgQGFwcGx5IG1sLWF1dG8gc2hyaW5rLTAgaW52aXNpYmxlO1xuICAgIH1cblxuICAgIC5pY29uIHtcbiAgICAgIEBhcHBseSB0ZXh0LXJ1aS10ZXh0IHRyYW5zaXRpb247XG5cbiAgICAgICZfX3dyYXBwZXIge1xuICAgICAgICBAYXBwbHkgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmQ7XG4gICAgICAgIEBhcHBseSBhYnNvbHV0ZSByaWdodC0zIHRvcC1weCBib3R0b20tMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmZsb2F0IHtcbiAgICAgIC5sYWJlbCB7XG4gICAgICAgIEBhcHBseSAtdHJhbnNsYXRlLXktMiB0b3AtMCB0ZXh0LXhzIHB4LTE7XG4gICAgICB9XG5cbiAgICAgIH4gLmZpZWxkc2V0IHtcbiAgICAgICAgbGVnZW5kIHtcbiAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IHYtYmluZChsYWJlbFdpdGhRdW90ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYub3BlbmVkLFxuICAgICAgJi5vcGVuZWQud2l0aC12YWx1ZSxcbiAgICAgICY6Zm9jdXMsXG4gICAgICAmOmZvY3VzLndpdGgtdmFsdWUge1xuICAgICAgICAubGFiZWwge1xuICAgICAgICAgIEBhcHBseSB0ZXh0LXJ1aS1wcmltYXJ5O1xuICAgICAgICB9XG5cbiAgICAgICAgfiAuZmllbGRzZXQge1xuICAgICAgICAgIEBhcHBseSBib3JkZXItcnVpLXByaW1hcnk7XG4gICAgICAgICAgQGFwcGx5IGJvcmRlci0yICN7IWltcG9ydGFudH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuZmllbGRzZXQge1xuICAgIEBhcHBseSBhYnNvbHV0ZSB3LWZ1bGwgbWluLXctMCBoLVtjYWxjKDEwMCUrMC41cmVtKV0gdG9wLTAgbGVmdC0wIHJvdW5kZWQgcG9pbnRlci1ldmVudHMtbm9uZSBweC0yIHRyYW5zaXRpb24tYWxsIC1tdC0yO1xuXG4gICAgbGVnZW5kIHtcbiAgICAgIEBhcHBseSBvcGFjaXR5LTAgdGV4dC14cyB0cnVuY2F0ZTtcbiAgICAgIG1heC13aWR0aDogY2FsYygxMDAlIC0gMXJlbSk7XG5cbiAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogJyAnO1xuICAgICAgfVxuXG4gICAgICAmOmFmdGVyIHtcbiAgICAgICAgQGFwcGx5IHRydW5jYXRlIG1heC13LWZ1bGwgbGVhZGluZy1bMF07XG4gICAgICAgIGNvbnRlbnQ6ICdcXDIwMEInO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4ubWVudSB7XG4gIEBhcHBseSBvdmVyZmxvdy15LWF1dG8gbWF4LWgtNjAgbWluLXctWzIuNXJlbV07XG59XG5cbi5oaWdobGlnaHRlZCB7XG4gIEBhcHBseSBiZy1ydWktZ3JleS0yMDAgI3shaW1wb3J0YW50fTtcblxuICAmLmFjdGl2ZSB7XG4gICAgQGFwcGx5IGJnLXJ1aS1ncmV5LTMwMCAjeyFpbXBvcnRhbnR9O1xuICB9XG59XG5cbjpnbG9iYWwoLmRhcmspIHtcbiAgLndyYXBwZXIge1xuICAgIC5hY3RpdmF0b3Ige1xuICAgICAgQGFwcGx5IGJnLXRyYW5zcGFyZW50IHRleHQtcnVpLXRleHQ7XG5cbiAgICAgICY6bm90KC5vdXRsaW5lZCkge1xuICAgICAgICBAYXBwbHkgaG92ZXI6Ymctd2hpdGUvMTAgZm9jdXMtd2l0aGluOmJnLXdoaXRlLzEwO1xuXG4gICAgICAgICYuZGlzYWJsZWQge1xuICAgICAgICAgIEBhcHBseSBiZy13aGl0ZS8xMDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmLnJlYWRvbmx5IHtcbiAgICAgICAgQGFwcGx5IGJnLXdoaXRlLzEwO1xuICAgICAgfVxuXG4gICAgICAmLm91dGxpbmVkIHtcbiAgICAgICAgfiAuZmllbGRzZXQge1xuICAgICAgICAgIEBhcHBseSBib3JkZXItd2hpdGUvWzAuMjNdO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5kaXNhYmxlZCB7XG4gICAgICAgICAgfiAuZmllbGRzZXQge1xuICAgICAgICAgICAgQGFwcGx5IGJvcmRlci13aGl0ZS9bMC4yM10gI3shaW1wb3J0YW50fTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICB+IC5maWVsZHNldCB7XG4gICAgICAgICAgICBAYXBwbHkgYm9yZGVyLXdoaXRlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5oaWdobGlnaHRlZCB7XG4gICAgQGFwcGx5IGJnLXJ1aS1ncmV5LTgwMCAjeyFpbXBvcnRhbnR9O1xuXG4gICAgJi5hY3RpdmUge1xuICAgICAgQGFwcGx5IGJnLXJ1aS1ncmV5LTcwMCAjeyFpbXBvcnRhbnR9O1xuICAgIH1cbiAgfVxufVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG5pbXBvcnQgUnVpSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvaWNvbnMvUnVpSWNvbi52dWUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BzIHtcbiAgbW9kZWxWYWx1ZTogc3RyaW5nIHwgbnVtYmVyO1xuICBvcHRpb25zOiBzdHJpbmdbXSB8IG51bWJlcltdO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHZhcmlhbnQ/OiAnZGVmYXVsdCcgfCAnb3V0bGluZWQnO1xufVxuXG5kZWZpbmVPcHRpb25zKHtcbiAgbmFtZTogJ1J1aVNpbXBsZVNlbGVjdCcsXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG59KTtcblxuY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgZGlzYWJsZWQ6IGZhbHNlLFxuICBuYW1lOiAnJyxcbiAgdmFyaWFudDogJ2RlZmF1bHQnLFxufSk7XG5cbmNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czx7XG4gIChlOiAndXBkYXRlOm1vZGVsLXZhbHVlJywgdmFsdWU/OiBzdHJpbmcgfCBudW1iZXIpOiB2b2lkO1xufT4oKTtcblxuY29uc3QgeyBtb2RlbFZhbHVlIH0gPSB0b1JlZnMocHJvcHMpO1xuXG5jb25zdCB2YWx1ZSA9IGNvbXB1dGVkKHtcbiAgZ2V0OiAoKSA9PiBnZXQobW9kZWxWYWx1ZSksXG4gIHNldDogdmFsdWUgPT4gZW1pdCgndXBkYXRlOm1vZGVsLXZhbHVlJywgdmFsdWUpLFxufSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiJHN0eWxlLndyYXBwZXJcIlxuICAgIHYtYmluZD1cIiRhdHRyc1wiXG4gID5cbiAgICA8c2VsZWN0XG4gICAgICB2LW1vZGVsPVwidmFsdWVcIlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAkc3R5bGUuc2VsZWN0LFxuICAgICAgICAkc3R5bGVbdmFyaWFudCA/PyAnZGVmYXVsdCddLFxuICAgICAgICB7IFskc3R5bGUuZGlzYWJsZWQgPz8gJyddOiBkaXNhYmxlZCB9LFxuICAgICAgXVwiXG4gICAgICA6bmFtZT1cIm5hbWVcIlxuICAgICAgOmRpc2FibGVkPVwiZGlzYWJsZWRcIlxuICAgID5cbiAgICAgIDxvcHRpb25cbiAgICAgICAgdi1mb3I9XCIob3B0aW9uLCBpKSBpbiBvcHRpb25zXCJcbiAgICAgICAgOmtleT1cImlcIlxuICAgICAgICA6dmFsdWU9XCJvcHRpb25cIlxuICAgICAgPlxuICAgICAgICB7eyBvcHRpb24gfX1cbiAgICAgIDwvb3B0aW9uPlxuICAgIDwvc2VsZWN0PlxuICAgIDxzcGFuIDpjbGFzcz1cIiRzdHlsZS5pY29uX193cmFwcGVyXCI+XG4gICAgICA8UnVpSWNvblxuICAgICAgICA6Y2xhc3M9XCIkc3R5bGUuaWNvblwiXG4gICAgICAgIG5hbWU9XCJsdS1jaGV2cm9uLWRvd25cIlxuICAgICAgICBzaXplPVwiMTZcIlxuICAgICAgLz5cbiAgICA8L3NwYW4+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIG1vZHVsZSBsYW5nPVwic2Nzc1wiPlxuLndyYXBwZXIge1xuICBAYXBwbHkgcmVsYXRpdmUgaW5saW5lLWZsZXg7XG5cbiAgLnNlbGVjdCB7XG4gICAgQGFwcGx5IG91dGxpbmUtbm9uZSBmb2N1czpvdXRsaW5lLW5vbmUgYXBwZWFyYW5jZS1ub25lIGN1cnNvci1wb2ludGVyIHBsLTIgcHktMSBwci04IHJvdW5kZWQ7XG4gICAgQGFwcGx5IG0tMCB3LWZ1bGwgYmctd2hpdGUgaG92ZXI6YmctZ3JheS01MCB0cmFuc2l0aW9uO1xuICAgIEBhcHBseSBkaXNhYmxlZDpiZy1ibGFjay9bLjEyXSBkaXNhYmxlZDp0ZXh0LXJ1aS10ZXh0LWRpc2FibGVkIGRpc2FibGVkOmFjdGl2ZTp0ZXh0LXJ1aS10ZXh0LWRpc2FibGVkIGRpc2FibGVkOmN1cnNvci1kZWZhdWx0O1xuXG4gICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gICAgZm9udC1zaXplOiBpbmhlcml0O1xuICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuXG4gICAgJjo6LW1zLWV4cGFuZCB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgICYub3V0bGluZWQge1xuICAgICAgQGFwcGx5IGJvcmRlciBib3JkZXItcnVpLXRleHQtZGlzYWJsZWQgZGlzYWJsZWQ6Ym9yZGVyLXRyYW5zcGFyZW50O1xuICAgIH1cbiAgfVxuXG4gIC5pY29uIHtcbiAgICBAYXBwbHkgdGV4dC1ydWktdGV4dC1kaXNhYmxlZCBwb2ludGVyLWV2ZW50cy1ub25lO1xuXG4gICAgJl9fd3JhcHBlciB7XG4gICAgICBAYXBwbHkgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmQ7XG4gICAgICBAYXBwbHkgYWJzb2x1dGUgcmlnaHQtMSB0b3AtcHggYm90dG9tLTAgcG9pbnRlci1ldmVudHMtbm9uZTtcbiAgICB9XG4gIH1cbn1cblxuOmdsb2JhbCguZGFyaykge1xuICAud3JhcHBlciB7XG4gICAgLnNlbGVjdCB7XG4gICAgICBAYXBwbHkgYmctdHJhbnNwYXJlbnQgaG92ZXI6Ymctd2hpdGUvMTAgZGlzYWJsZWQ6Ymctd2hpdGUvMTAgdGV4dC1ydWktdGV4dC1kaXNhYmxlZDtcblxuICAgICAgJi5vdXRsaW5lZCB7XG4gICAgICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLXJ1aS10ZXh0LWRpc2FibGVkO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5pY29uIHtcbiAgICAgIEBhcHBseSB0ZXh0LXJ1aS10ZXh0LWRpc2FibGVkO1xuICAgIH1cbiAgfVxufVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XG5pbXBvcnQgdHlwZSB7IENvbnRleHRDb2xvcnNUeXBlIH0gZnJvbSAnQC9jb25zdHMvY29sb3JzJztcbmltcG9ydCBSdWlGb3JtVGV4dERldGFpbCBmcm9tICdAL2NvbXBvbmVudHMvaGVscGVycy9SdWlGb3JtVGV4dERldGFpbC52dWUnO1xuaW1wb3J0IHsgZ2V0Tm9uUm9vdEF0dHJzLCBnZXRSb290QXR0cnMgfSBmcm9tICdAL3V0aWxzL2hlbHBlcnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BzIHtcbiAgbW9kZWxWYWx1ZT86IG51bWJlcjtcbiAgbWluPzogbnVtYmVyO1xuICBtYXg/OiBudW1iZXI7XG4gIHN0ZXA/OiBudW1iZXI7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgc2hvd1RodW1iTGFiZWw/OiBib29sZWFuO1xuICBzaG93VGlja3M/OiBib29sZWFuO1xuICBoaWRlVHJhY2s/OiBib29sZWFuO1xuICB0aWNrU2l6ZT86IG51bWJlcjtcbiAgdmVydGljYWw/OiBib29sZWFuO1xuICBjb2xvcj86IENvbnRleHRDb2xvcnNUeXBlO1xuICBsYWJlbD86IHN0cmluZztcbiAgaGludD86IHN0cmluZztcbiAgZXJyb3JNZXNzYWdlcz86IHN0cmluZyB8IHN0cmluZ1tdO1xuICBzdWNjZXNzTWVzc2FnZXM/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgaGlkZURldGFpbHM/OiBib29sZWFuO1xuICBzbGlkZXJDbGFzcz86IHN0cmluZztcbiAgdGlja0NsYXNzPzogc3RyaW5nO1xufVxuXG5kZWZpbmVPcHRpb25zKHtcbiAgbmFtZTogJ1J1aVNsaWRlcicsXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG59KTtcblxuY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgbW9kZWxWYWx1ZTogMCxcbiAgbWluOiAwLFxuICBtYXg6IDEwMCxcbiAgc3RlcDogMSxcbiAgZGlzYWJsZWQ6IGZhbHNlLFxuICBzaG93VGh1bWJMYWJlbDogZmFsc2UsXG4gIHNob3dUaWNrczogZmFsc2UsXG4gIGhpZGVUcmFjazogZmFsc2UsXG4gIHZlcnRpY2FsOiBmYWxzZSxcbiAgdGlja1NpemU6IDIsXG4gIGNvbG9yOiAncHJpbWFyeScsXG4gIGxhYmVsOiAnJyxcbiAgaGludDogJycsXG4gIGVycm9yTWVzc2FnZXM6ICgpID0+IFtdLFxuICBzdWNjZXNzTWVzc2FnZXM6ICgpID0+IFtdLFxuICBoaWRlRGV0YWlsczogZmFsc2UsXG4gIHNsaWRlckNsYXNzOiAnJyxcbiAgdGlja0NsYXNzOiAnJyxcbn0pO1xuXG5jb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8e1xuICAoZTogJ3VwZGF0ZTptb2RlbC12YWx1ZScsIHZhbHVlOiBudW1iZXIpOiB2b2lkO1xufT4oKTtcblxuY29uc3QgeyBtb2RlbFZhbHVlLCBtYXgsIG1pbiwgc3RlcCwgZXJyb3JNZXNzYWdlcywgc3VjY2Vzc01lc3NhZ2VzLCB2ZXJ0aWNhbCwgdGlja1NpemUgfSA9IHRvUmVmcyhwcm9wcyk7XG5cbmNvbnN0IHZNb2RlbCA9IGNvbXB1dGVkKHtcbiAgZ2V0KCkge1xuICAgIHJldHVybiBnZXQobW9kZWxWYWx1ZSk7XG4gIH0sXG4gIHNldCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgZW1pdCgndXBkYXRlOm1vZGVsLXZhbHVlJywgdmFsdWUpO1xuICB9LFxufSk7XG5cbmNvbnN0IHRpY2tzRGF0YSA9IGNvbXB1dGVkPFtudW1iZXIsIG51bWJlcl0+KCgpID0+IHtcbiAgY29uc3QgbWluVmFsID0gZ2V0KG1pbik7XG4gIGNvbnN0IHN0ZXBWYWwgPSBnZXQoc3RlcCk7XG4gIGNvbnN0IHJhbmdlID0gZ2V0KG1heCkgLSBtaW5WYWw7XG4gIGNvbnN0IHRvdGFsID0gcmFuZ2UgLyBzdGVwVmFsO1xuICBjb25zdCBjdXJyZW50ID0gTWF0aC5yb3VuZCgoZ2V0KG1vZGVsVmFsdWUpIC0gbWluVmFsKSAvIHN0ZXBWYWwpO1xuXG4gIHJldHVybiBbY3VycmVudCwgdG90YWxdO1xufSk7XG5cbmNvbnN0IHRyYWNrV2lkdGggPSBjb21wdXRlZCgoKSA9PiB7XG4gIGNvbnN0IFtjdXJyZW50LCB0b3RhbF0gPSBnZXQodGlja3NEYXRhKTtcbiAgY29uc3QgcGVyY2VudGFnZSA9IE1hdGgubWluKDEwMCwgTWF0aC5tYXgoMCwgTWF0aC5yb3VuZChjdXJyZW50IC8gdG90YWwgKiAxMDApKSk7XG4gIHJldHVybiBgJHtwZXJjZW50YWdlfSVgO1xufSk7XG5cbmNvbnN0IHsgaGFzRXJyb3IsIGhhc1N1Y2Nlc3MgfSA9IHVzZUZvcm1UZXh0RGV0YWlsKFxuICBlcnJvck1lc3NhZ2VzLFxuICBzdWNjZXNzTWVzc2FnZXMsXG4pO1xuXG5jb25zdCBvdXRlciA9IHJlZjxIVE1MRGl2RWxlbWVudD4oKTtcbmNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gdXNlRWxlbWVudEJvdW5kaW5nKG91dGVyKTtcblxuY29uc3Qgc2xpZGVyV2lkdGggPSBjb21wdXRlZCgoKSA9PiBgJHtnZXQod2lkdGgpfXB4YCk7XG5jb25zdCBzbGlkZXJIZWlnaHQgPSBjb21wdXRlZCgoKSA9PiBgJHtnZXQoaGVpZ2h0KX1weGApO1xuY29uc3QgdGlja1NpemVJblB4ID0gY29tcHV0ZWQoKCkgPT4gYCR7Z2V0KHRpY2tTaXplKX1weGApO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiB2LWJpbmQ9XCJnZXRSb290QXR0cnMoJGF0dHJzKVwiPlxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAkc3R5bGUud3JhcHBlcixcbiAgICAgICAge1xuICAgICAgICAgIFskc3R5bGUuZGlzYWJsZWQgPz8gJyddOiBkaXNhYmxlZCxcbiAgICAgICAgICBbJHN0eWxlLnZlcnRpY2FsID8/ICcnXTogdmVydGljYWwsXG4gICAgICAgICAgWyRzdHlsZVtjb2xvcl0gPz8gJyddOiBjb2xvcixcbiAgICAgICAgICBbJHN0eWxlWydoaWRlLXRyYWNrJ10gPz8gJyddOiBoaWRlVHJhY2ssXG4gICAgICAgICAgWyRzdHlsZVsnYmlnLXRpY2snXSA/PyAnJ106IHRpY2tTaXplID4gNCxcbiAgICAgICAgICBbJHN0eWxlWyd3aXRoLWVycm9yJ10gPz8gJyddOiBoYXNFcnJvcixcbiAgICAgICAgICBbJHN0eWxlWyd3aXRoLXN1Y2Nlc3MnXSA/PyAnJ106IGhhc1N1Y2Nlc3MgJiYgIWhhc0Vycm9yLFxuICAgICAgICB9LFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgICA6Y2xhc3M9XCIkc3R5bGUubGFiZWxcIlxuICAgICAgICBjbGFzcz1cInRleHQtYm9keS0xXCJcbiAgICAgID5cbiAgICAgICAge3sgbGFiZWwgfX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICByZWY9XCJvdXRlclwiXG4gICAgICAgIDpjbGFzcz1cIiRzdHlsZS5vdXRlclwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgOmNsYXNzPVwiJHN0eWxlLmlubmVyXCI+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB2LW1vZGVsPVwidk1vZGVsXCJcbiAgICAgICAgICAgIDpjbGFzcz1cIiRzdHlsZS5pbnB1dFwiXG4gICAgICAgICAgICB0eXBlPVwicmFuZ2VcIlxuICAgICAgICAgICAgOm1heD1cIm1heFwiXG4gICAgICAgICAgICA6bWluPVwibWluXCJcbiAgICAgICAgICAgIDpzdGVwPVwic3RlcFwiXG4gICAgICAgICAgICA6ZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICB2LWJpbmQ9XCJnZXROb25Sb290QXR0cnMoJGF0dHJzKVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8ZGl2IDpjbGFzcz1cIiRzdHlsZS5zbGlkZXJcIj5cbiAgICAgICAgICAgIDxkaXYgOmNsYXNzPVwiJHN0eWxlLnNsaWRlcl9faW5uZXJcIj5cbiAgICAgICAgICAgICAgPGRpdiA6Y2xhc3M9XCJbJHN0eWxlLnNsaWRlcl9fY29udGFpbmVyLCBzbGlkZXJDbGFzc11cIj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICB2LWlmPVwiIWhpZGVUcmFja1wiXG4gICAgICAgICAgICAgICAgICA6Y2xhc3M9XCIkc3R5bGUuc2xpZGVyX19jb250YWluZXJfX3RyYWNrXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIHYtaWY9XCJzaG93VGlja3MgJiYgIWRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgIDpjbGFzcz1cIiRzdHlsZS5zbGlkZXJfX3RpY2tzXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICB2LWZvcj1cImkgaW4gKHRpY2tzRGF0YVsxXSArIDEpXCJcbiAgICAgICAgICAgICAgICAgICAgOmtleT1cImlcIlxuICAgICAgICAgICAgICAgICAgICA6Y2xhc3M9XCJoaWRlVHJhY2sgPyBbdGlja0NsYXNzXSA6IHsgWyRzdHlsZS5oaWdobGlnaHRlZF06IGkgLSAxIDw9IHRpY2tzRGF0YVswXSwgW3RpY2tDbGFzc106IGkgLSAxID4gdGlja3NEYXRhWzBdIH1cIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgOmNsYXNzPVwiJHN0eWxlLnNsaWRlcl9fdGh1bWJcIiAvPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgdi1pZj1cInNob3dUaHVtYkxhYmVsICYmICFkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgOmNsYXNzPVwiJHN0eWxlLnNsaWRlcl9fdGh1bWJfbGFiZWxcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgbW9kZWxWYWx1ZSB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbGFiZWw+XG4gICAgPFJ1aUZvcm1UZXh0RGV0YWlsXG4gICAgICB2LWlmPVwiIWhpZGVEZXRhaWxzXCJcbiAgICAgIGNsYXNzPVwicHQtMVwiXG4gICAgICA6ZXJyb3ItbWVzc2FnZXM9XCJlcnJvck1lc3NhZ2VzXCJcbiAgICAgIDpzdWNjZXNzLW1lc3NhZ2VzPVwic3VjY2Vzc01lc3NhZ2VzXCJcbiAgICAgIDpoaW50PVwiaGludFwiXG4gICAgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIiBtb2R1bGU+XG5AdXNlICdAL3N0eWxlcy9jb2xvcnMuc2NzcycgYXMgYztcblxuOmdsb2JhbCguZGFyaykge1xuICAud3JhcHBlciB7XG4gICAgJi5kaXNhYmxlZCB7XG4gICAgICAuaW5uZXIge1xuICAgICAgICAuc2xpZGVyIHtcbiAgICAgICAgICAmX19jb250YWluZXIge1xuICAgICAgICAgICAgQGFwcGx5IGJnLXJ1aS1ncmV5LTgwMCAjeyFpbXBvcnRhbnR9O1xuXG4gICAgICAgICAgICAmX190cmFjayB7XG4gICAgICAgICAgICAgIEBhcHBseSBiZy1ydWktZ3JleS03MDAgI3shaW1wb3J0YW50fTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICAmX190aHVtYiB7XG4gICAgICAgICAgICBAYXBwbHkgYmctcnVpLWdyZXktNzAwICN7IWltcG9ydGFudH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmlubmVyIHtcbiAgICAgIC5zbGlkZXIge1xuICAgICAgICAmX190aWNrcyB7XG4gICAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICAmLmhpZ2hsaWdodGVkIHtcbiAgICAgICAgICAgICAgQGFwcGx5IGJnLVsjMTIxMjEyXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLndyYXBwZXIge1xuICBAYXBwbHkgZmxleCBpdGVtcy1zdGFydCBnYXAtMztcblxuICAmLmRpc2FibGVkIHtcbiAgICAubGFiZWwge1xuICAgICAgQGFwcGx5IHRleHQtcnVpLXRleHQtZGlzYWJsZWQ7XG4gICAgfVxuICAgIC5pbm5lciB7XG4gICAgICAuc2xpZGVyIHtcbiAgICAgICAgJl9fY29udGFpbmVyIHtcbiAgICAgICAgICBAYXBwbHkgYmctcnVpLWdyZXktMzAwICN7IWltcG9ydGFudH07XG5cbiAgICAgICAgICAmX190cmFjayB7XG4gICAgICAgICAgICBAYXBwbHkgYmctcnVpLWdyZXktNDAwICN7IWltcG9ydGFudH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJl9fdGh1bWIge1xuICAgICAgICAgIEBhcHBseSBiZy1ydWktZ3JleS00MDAgI3shaW1wb3J0YW50fTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBlYWNoICRjb2xvciBpbiBjLiRjb250ZXh0LWNvbG9ycyB7XG4gICAgJi4jeyRjb2xvcn0sXG4gICAgJi53aXRoLSN7JGNvbG9yfSB7XG4gICAgICAuaW5uZXIge1xuICAgICAgICAuc2xpZGVyIHtcbiAgICAgICAgICAmX19jb250YWluZXIge1xuICAgICAgICAgICAgQGFwcGx5IGJnLXJ1aS0jeyRjb2xvcn0gYmctb3BhY2l0eS00MDtcblxuICAgICAgICAgICAgJl9fdHJhY2sge1xuICAgICAgICAgICAgICBAYXBwbHkgYmctcnVpLSN7JGNvbG9yfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICAmX190aHVtYiB7XG4gICAgICAgICAgICBAYXBwbHkgYmctcnVpLSN7JGNvbG9yfTtcblxuICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICBAYXBwbHkgYmctcnVpLSN7JGNvbG9yfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICAmX190aWNrcyB7XG4gICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgQGFwcGx5IGJnLXJ1aS0jeyRjb2xvcn07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYuYmlnLXRpY2sge1xuICAgICAgICAuaW5uZXIge1xuICAgICAgICAgIC5zbGlkZXIge1xuICAgICAgICAgICAgJl9fdGlja3Mge1xuICAgICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgICBAYXBwbHkgYmctcnVpLSN7JGNvbG9yfS1saWdodGVyO1xuXG4gICAgICAgICAgICAgICAgJi5oaWdobGlnaHRlZCB7XG4gICAgICAgICAgICAgICAgICBAYXBwbHkgYmctcnVpLSN7JGNvbG9yfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAZWFjaCAkY29sb3IgaW4gKCdlcnJvcicsICdzdWNjZXNzJykge1xuICAgICYud2l0aC0jeyRjb2xvcn0ge1xuICAgICAgLmxhYmVsIHtcbiAgICAgICAgQGFwcGx5IHRleHQtcnVpLSN7JGNvbG9yfTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmLnZlcnRpY2FsIHtcbiAgICBAYXBwbHkgZmxleC1jb2wtcmV2ZXJzZSBpdGVtcy1jZW50ZXIgaC1mdWxsO1xuXG4gICAgLmxhYmVsIHtcbiAgICAgIEBhcHBseSBtYi0yIHRleHQtY2VudGVyO1xuICAgIH1cblxuICAgIC5vdXRlciB7XG4gICAgICBAYXBwbHkgbWluLXctMCBtaW4taC1bMTIwcHhdIHctODtcbiAgICB9XG5cbiAgICAuaW5uZXIge1xuICAgICAgd2lkdGg6IHYtYmluZChzbGlkZXJIZWlnaHQpO1xuICAgICAgaGVpZ2h0OiB2LWJpbmQoc2xpZGVyV2lkdGgpO1xuICAgICAgQGFwcGx5IC1yb3RhdGUtOTA7XG4gICAgICB0cmFuc2Zvcm0tb3JpZ2luOiAwIDA7XG4gICAgICAtLXR3LXRyYW5zbGF0ZS15OiB2LWJpbmQoc2xpZGVySGVpZ2h0KTtcblxuICAgICAgLnNsaWRlciB7XG4gICAgICAgICZfX3RodW1iIHtcbiAgICAgICAgICAmX2xhYmVsIHtcbiAgICAgICAgICAgIEBhcHBseSBtdC02O1xuICAgICAgICAgICAgQGFwcGx5IHJvdGF0ZS05MCB0cmFuc2xhdGUteC0wO1xuICAgICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogMCA1MCU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmxhYmVsIHtcbiAgICBAYXBwbHkgbXQtMSB0ZXh0LXJ1aS10ZXh0O1xuICB9XG5cbiAgLm91dGVyIHtcbiAgICBAYXBwbHkgcmVsYXRpdmUgaC04IGZsZXgtMSBtaW4tdy1bMTIwcHhdO1xuICB9XG5cbiAgLmlubmVyIHtcbiAgICB3aWR0aDogdi1iaW5kKHNsaWRlcldpZHRoKTtcbiAgICBoZWlnaHQ6IHYtYmluZChzbGlkZXJIZWlnaHQpO1xuICAgIEBhcHBseSByZWxhdGl2ZTtcblxuICAgIC5pbnB1dCB7XG4gICAgICBAYXBwbHkgaC1mdWxsIHctZnVsbCBvcGFjaXR5LTAgY3Vyc29yLXBvaW50ZXI7XG5cbiAgICAgICY6bm90KDpkaXNhYmxlZCkge1xuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICB+IC5zbGlkZXIge1xuICAgICAgICAgICAgLnNsaWRlciB7XG4gICAgICAgICAgICAgICZfX3RodW1iIHtcbiAgICAgICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICBAYXBwbHkgc2NhbGUtMTAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgIH4gLnNsaWRlciB7XG4gICAgICAgICAgICAuc2xpZGVyIHtcbiAgICAgICAgICAgICAgJl9fdGh1bWIge1xuICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgIEBhcHBseSBzY2FsZS0xMDAgb3BhY2l0eS0xNTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmOmFjdGl2ZSB7XG4gICAgICAgICAgfiAuc2xpZGVyIHtcbiAgICAgICAgICAgIC5zbGlkZXIge1xuICAgICAgICAgICAgICAmX190aHVtYiB7XG4gICAgICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgQGFwcGx5IHNjYWxlLTEwMCBvcGFjaXR5LTMwO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICZfbGFiZWwge1xuICAgICAgICAgICAgICAgICAgQGFwcGx5IG9wYWNpdHktMTAwIHZpc2libGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLnNsaWRlciB7XG4gICAgICBAYXBwbHkgYWJzb2x1dGUgaC1mdWxsIHctZnVsbCB0b3AtMCBweC0yIHBvaW50ZXItZXZlbnRzLW5vbmU7XG5cbiAgICAgICZfX2lubmVyIHtcbiAgICAgICAgQGFwcGx5IHJlbGF0aXZlIGgtZnVsbCB3LWZ1bGwgY3Vyc29yLXBvaW50ZXI7XG4gICAgICB9XG5cbiAgICAgICZfX2NvbnRhaW5lciB7XG4gICAgICAgIEBhcHBseSBhYnNvbHV0ZSB0b3AtMS8yIHRyYW5zZm9ybSAtdHJhbnNsYXRlLXktMS8yO1xuICAgICAgICBAYXBwbHkgdy1mdWxsIGgtMSByb3VuZGVkLWZ1bGw7XG5cbiAgICAgICAgJl9fdHJhY2sge1xuICAgICAgICAgIHdpZHRoOiB2LWJpbmQodHJhY2tXaWR0aCk7XG4gICAgICAgICAgQGFwcGx5IHRyYW5zaXRpb24tYWxsIGVhc2UtbGluZWFyIGR1cmF0aW9uLTc1IGRlbGF5LTA7XG4gICAgICAgICAgQGFwcGx5IGgtZnVsbCByb3VuZGVkLWZ1bGw7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJl9fdGlja3Mge1xuICAgICAgICBAYXBwbHkgaC1mdWxsIGFic29sdXRlIHRvcC0wO1xuICAgICAgICBAYXBwbHkgZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyO1xuICAgICAgICBtYXJnaW46IDAgY2FsYyh2LWJpbmQodGlja1NpemVJblB4KSAvIC0yKTtcbiAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSArIHYtYmluZCh0aWNrU2l6ZUluUHgpKTtcblxuICAgICAgICBzcGFuIHtcbiAgICAgICAgICBAYXBwbHkgcm91bmRlZC1mdWxsO1xuICAgICAgICAgIHdpZHRoOiBjYWxjKHYtYmluZCh0aWNrU2l6ZUluUHgpKTtcbiAgICAgICAgICBoZWlnaHQ6IGNhbGModi1iaW5kKHRpY2tTaXplSW5QeCkpO1xuXG4gICAgICAgICAgJi5oaWdobGlnaHRlZCB7XG4gICAgICAgICAgICBAYXBwbHkgYmctcnVpLWdyZXktMTAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmX190aHVtYiB7XG4gICAgICAgIEBhcHBseSBhYnNvbHV0ZSB0b3AtMS8yIHRyYW5zaXRpb24tYWxsIGVhc2UtbGluZWFyIGR1cmF0aW9uLTc1IGRlbGF5LTAgdHJhbnNmb3JtIC10cmFuc2xhdGUteS0xLzIgLXRyYW5zbGF0ZS14LTEvMjtcbiAgICAgICAgQGFwcGx5IHctMyBoLTMgcm91bmRlZC1mdWxsIHNoYWRvdy0yO1xuICAgICAgICBsZWZ0OiB2LWJpbmQodHJhY2tXaWR0aCk7XG5cbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgIEBhcHBseSB3LTggaC04IHJvdW5kZWQtZnVsbCBhYnNvbHV0ZSB0b3AtMS8yIGxlZnQtMS8yO1xuICAgICAgICAgIEBhcHBseSBvcGFjaXR5LTEwO1xuICAgICAgICAgIEBhcHBseSB0cmFuc2l0aW9uIHRyYW5zZm9ybSAtdHJhbnNsYXRlLXgtMS8yIC10cmFuc2xhdGUteS0xLzIgc2NhbGUtMDtcbiAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgfVxuXG4gICAgICAgICZfbGFiZWwge1xuICAgICAgICAgIGxlZnQ6IHYtYmluZCh0cmFja1dpZHRoKTtcbiAgICAgICAgICBAYXBwbHkgaW52aXNpYmxlIG9wYWNpdHktMDtcbiAgICAgICAgICBAYXBwbHkgYWJzb2x1dGUgLW10LTcgdHJhbnNpdGlvbi1hbGwgZWFzZS1saW5lYXIgZHVyYXRpb24tNzUgZGVsYXktMCB0cmFuc2Zvcm0gLXRyYW5zbGF0ZS14LTEvMjtcbiAgICAgICAgICBAYXBwbHkgcHgtMiBweS0xIHRleHQteHMgZm9udC1ub3JtYWw7XG4gICAgICAgICAgQGFwcGx5IGJnLXJ1aS1ncmV5LTcwMC85MCB0ZXh0LXdoaXRlIHJvdW5kZWQgc2hhZG93O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbmltcG9ydCB0eXBlIHsgQ29udGV4dENvbG9yc1R5cGUgfSBmcm9tICdAL2NvbnN0cy9jb2xvcnMnO1xuaW1wb3J0IFJ1aUZvcm1UZXh0RGV0YWlsIGZyb20gJ0AvY29tcG9uZW50cy9oZWxwZXJzL1J1aUZvcm1UZXh0RGV0YWlsLnZ1ZSc7XG5pbXBvcnQgeyBnZXROb25Sb290QXR0cnMsIGdldFJvb3RBdHRycyB9IGZyb20gJ0AvdXRpbHMvaGVscGVycyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvcHMge1xuICBtb2RlbFZhbHVlPzogYm9vbGVhbjtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBjb2xvcj86IENvbnRleHRDb2xvcnNUeXBlO1xuICBzaXplPzogJ3NtJztcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIGhpbnQ/OiBzdHJpbmc7XG4gIGVycm9yTWVzc2FnZXM/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgc3VjY2Vzc01lc3NhZ2VzPzogc3RyaW5nIHwgc3RyaW5nW107XG4gIGhpZGVEZXRhaWxzPzogYm9vbGVhbjtcbn1cblxuZGVmaW5lT3B0aW9ucyh7XG4gIG5hbWU6ICdSdWlTd2l0Y2gnLFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxufSk7XG5cbmNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gIG1vZGVsVmFsdWU6IGZhbHNlLFxuICBkaXNhYmxlZDogZmFsc2UsXG4gIGNvbG9yOiB1bmRlZmluZWQsXG4gIHNpemU6IHVuZGVmaW5lZCxcbiAgbGFiZWw6ICcnLFxuICBoaW50OiAnJyxcbiAgZXJyb3JNZXNzYWdlczogKCkgPT4gW10sXG4gIHN1Y2Nlc3NNZXNzYWdlczogKCkgPT4gW10sXG4gIGhpZGVEZXRhaWxzOiBmYWxzZSxcbn0pO1xuXG5jb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8e1xuICAoZTogJ3VwZGF0ZTptb2RlbFZhbHVlJywgbW9kZWxWYWx1ZTogYm9vbGVhbik6IHZvaWQ7XG59PigpO1xuXG5jb25zdCB7IHNpemUsIG1vZGVsVmFsdWUsIGVycm9yTWVzc2FnZXMsIHN1Y2Nlc3NNZXNzYWdlcyB9ID0gdG9SZWZzKHByb3BzKTtcblxuZnVuY3Rpb24gaW5wdXQoZXZlbnQ6IEV2ZW50KSB7XG4gIGNvbnN0IGNoZWNrZWQgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmNoZWNrZWQ7XG4gIGVtaXQoJ3VwZGF0ZTptb2RlbFZhbHVlJywgY2hlY2tlZCk7XG59XG5cbmNvbnN0IHsgaGFzRXJyb3IsIGhhc1N1Y2Nlc3MgfSA9IHVzZUZvcm1UZXh0RGV0YWlsKFxuICBlcnJvck1lc3NhZ2VzLFxuICBzdWNjZXNzTWVzc2FnZXMsXG4pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiB2LWJpbmQ9XCJnZXRSb290QXR0cnMoJGF0dHJzKVwiPlxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAkc3R5bGUud3JhcHBlcixcbiAgICAgICAgJHN0eWxlW3NpemUgPz8gJyddLFxuICAgICAgICAkc3R5bGVbY29sb3IgPz8gJyddLFxuICAgICAgICB7XG4gICAgICAgICAgWyRzdHlsZS5jaGVja2VkXTogbW9kZWxWYWx1ZSxcbiAgICAgICAgICBbJHN0eWxlLmRpc2FibGVkXTogZGlzYWJsZWQsXG4gICAgICAgICAgWyRzdHlsZVsnd2l0aC1lcnJvciddXTogaGFzRXJyb3IsXG4gICAgICAgICAgWyRzdHlsZVsnd2l0aC1zdWNjZXNzJ11dOiBoYXNTdWNjZXNzICYmICFoYXNFcnJvcixcbiAgICAgICAgfSxcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxkaXYgOmNsYXNzPVwiJHN0eWxlLmlubmVyXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIDpjaGVja2VkPVwibW9kZWxWYWx1ZVwiXG4gICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICA6Y2xhc3M9XCIkc3R5bGUuaW5wdXRcIlxuICAgICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgICAgICB2LWJpbmQ9XCJnZXROb25Sb290QXR0cnMoJGF0dHJzKVwiXG4gICAgICAgICAgQGlucHV0PVwiaW5wdXQoJGV2ZW50KVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCIkc3R5bGUudG9nZ2xlXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNwYW5cbiAgICAgICAgdi1pZj1cImxhYmVsIHx8ICRzbG90cy5kZWZhdWx0XCJcbiAgICAgICAgOmNsYXNzPVwiJHN0eWxlLmxhYmVsXCJcbiAgICAgICAgY2xhc3M9XCJ0ZXh0LWJvZHktMVwiXG4gICAgICA+XG4gICAgICAgIDxzbG90Pnt7IGxhYmVsIH19PC9zbG90PlxuICAgICAgPC9zcGFuPlxuICAgIDwvbGFiZWw+XG4gICAgPFJ1aUZvcm1UZXh0RGV0YWlsXG4gICAgICB2LWlmPVwiIWhpZGVEZXRhaWxzXCJcbiAgICAgIGNsYXNzPVwicHQtMVwiXG4gICAgICA6ZXJyb3ItbWVzc2FnZXM9XCJlcnJvck1lc3NhZ2VzXCJcbiAgICAgIDpzdWNjZXNzLW1lc3NhZ2VzPVwic3VjY2Vzc01lc3NhZ2VzXCJcbiAgICAgIDpoaW50PVwiaGludFwiXG4gICAgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIiBtb2R1bGU+XG5AdXNlICdAL3N0eWxlcy9jb2xvcnMuc2NzcycgYXMgYztcblxuLndyYXBwZXIge1xuICBAYXBwbHkgcmVsYXRpdmUgZmxleCBnYXAtMiBpdGVtcy1zdGFydCBjdXJzb3ItcG9pbnRlcjtcblxuICAmLmRpc2FibGVkIHtcbiAgICBAYXBwbHkgY3Vyc29yLW5vdC1hbGxvd2VkO1xuXG4gICAgLmlucHV0IHtcbiAgICAgIEBhcHBseSBiZy1ydWktZ3JleS0zMDAgY3Vyc29yLW5vdC1hbGxvd2VkO1xuICAgIH1cblxuICAgIC5sYWJlbCB7XG4gICAgICBAYXBwbHkgdGV4dC1ydWktdGV4dC1kaXNhYmxlZDtcbiAgICB9XG5cbiAgICAudG9nZ2xlIHtcbiAgICAgIEBhcHBseSBiZy1ydWktZ3JleS01MDA7XG4gICAgfVxuICB9XG5cbiAgJjpob3ZlciB7XG4gICAgJjpub3QoLmRpc2FibGVkKSB7XG4gICAgICAudG9nZ2xlIHtcbiAgICAgICAgQGFwcGx5IHNoYWRvdy0xO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICYuY2hlY2tlZCB7XG4gICAgJjpub3QoLmRpc2FibGVkKSB7XG4gICAgICAuaW5wdXQge1xuICAgICAgICBAYXBwbHkgYmctYmxhY2s7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLnRvZ2dsZSB7XG4gICAgICBAYXBwbHkgbGVmdC1bMjFweF07XG4gICAgfVxuICB9XG5cbiAgJi5zbSB7XG4gICAgLmlubmVyIHtcbiAgICAgIEBhcHBseSB3LTEwIGgtNSBtdC0wLjU7XG4gICAgfVxuICAgIC50b2dnbGUge1xuICAgICAgQGFwcGx5IHctNCBoLTQ7XG5cbiAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgQGFwcGx5IHctNiBoLTY7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5jaGVja2VkIHtcbiAgICAgIC50b2dnbGUge1xuICAgICAgICBAYXBwbHkgbGVmdC1bMjJweF07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJi5jaGVja2VkIHtcbiAgICAmOm5vdCguZGlzYWJsZWQpIHtcbiAgICAgIEBlYWNoICRjb2xvciBpbiBjLiRjb250ZXh0LWNvbG9ycyB7XG4gICAgICAgICYuI3skY29sb3J9IHtcbiAgICAgICAgICAuaW5wdXQge1xuICAgICAgICAgICAgQGFwcGx5IGJnLXJ1aS0jeyRjb2xvcn07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJi53aXRoLWVycm9yIHtcbiAgICAuaW5wdXQge1xuICAgICAgQGFwcGx5IGJnLXJ1aS1lcnJvciAjeyFpbXBvcnRhbnR9O1xuICAgIH1cblxuICAgIC5sYWJlbCB7XG4gICAgICBAYXBwbHkgdGV4dC1ydWktZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgJi53aXRoLXN1Y2Nlc3Mge1xuICAgIC5pbnB1dCB7XG4gICAgICBAYXBwbHkgYmctcnVpLXN1Y2Nlc3MgI3shaW1wb3J0YW50fTtcbiAgICB9XG5cbiAgICAubGFiZWwge1xuICAgICAgQGFwcGx5IHRleHQtcnVpLXN1Y2Nlc3M7XG4gICAgfVxuICB9XG5cbiAgLmlubmVyIHtcbiAgICBAYXBwbHkgcmVsYXRpdmUgdy1bNDNweF0gaC1bMjRweF0gc2hyaW5rLTA7XG4gIH1cblxuICAuaW5wdXQge1xuICAgIEBhcHBseSBhcHBlYXJhbmNlLW5vbmUgcmVsYXRpdmUgdy1mdWxsIGgtZnVsbCByb3VuZGVkLWZ1bGwgYmctcnVpLWdyZXktNDAwIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTc1IGVhc2UtaW4tb3V0IGN1cnNvci1wb2ludGVyO1xuXG4gICAgJjphY3RpdmU6bm90KDpkaXNhYmxlZCkge1xuICAgICAgKyAudG9nZ2xlIHtcbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgIEBhcHBseSBvcGFjaXR5LTIwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLnRvZ2dsZSB7XG4gICAgQGFwcGx5IGFic29sdXRlIHctNSBoLTUgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tNzUgZWFzZS1pbi1vdXQgdHJhbnNmb3JtIC10cmFuc2xhdGUteS0xLzIgdG9wLTEvMiByb3VuZGVkLWZ1bGwgcG9pbnRlci1ldmVudHMtbm9uZTtcbiAgICBAYXBwbHkgYmctd2hpdGUgbGVmdC1bMnB4XTtcblxuICAgICY6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgQGFwcGx5IGFic29sdXRlIHctMTAgaC0xMCBiZy1ibGFjayByb3VuZGVkLWZ1bGwgdG9wLTEvMiBsZWZ0LTEvMiB0cmFuc2Zvcm0gLXRyYW5zbGF0ZS14LTEvMiAtdHJhbnNsYXRlLXktMS8yIHRyYW5zaXRpb24tYWxsIGVhc2UtaW4tb3V0IG9wYWNpdHktMDtcbiAgICB9XG4gIH1cbn1cblxuOmdsb2JhbCguZGFyaykge1xuICAud3JhcHBlciB7XG4gICAgJi5kaXNhYmxlZCB7XG4gICAgICAuaW5wdXQge1xuICAgICAgICBAYXBwbHkgYmctcnVpLWdyZXktODAwO1xuICAgICAgfVxuXG4gICAgICAudG9nZ2xlIHtcbiAgICAgICAgQGFwcGx5IGJnLXJ1aS1ncmV5LTYwMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmNoZWNrZWQge1xuICAgICAgJjpub3QoLmRpc2FibGVkKSB7XG4gICAgICAgIC5pbnB1dCB7XG4gICAgICAgICAgQGFwcGx5IGJnLXdoaXRlO1xuICAgICAgICB9XG4gICAgICAgIC50b2dnbGUge1xuICAgICAgICAgIEBhcHBseSBiZy1ibGFjaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICYuY2hlY2tlZCB7XG4gICAgICAmOm5vdCguZGlzYWJsZWQpIHtcbiAgICAgICAgQGVhY2ggJGNvbG9yIGluIGMuJGNvbnRleHQtY29sb3JzIHtcbiAgICAgICAgICAmLiN7JGNvbG9yfSB7XG4gICAgICAgICAgICAuaW5wdXQge1xuICAgICAgICAgICAgICBAYXBwbHkgYmctcnVpLSN7JGNvbG9yfS9bMC41XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC50b2dnbGUge1xuICAgICAgICAgICAgICBAYXBwbHkgYmctcnVpLSN7JGNvbG9yfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLndpdGgtZXJyb3Ige1xuICAgICAgLmlucHV0IHtcbiAgICAgICAgQGFwcGx5IGJnLXJ1aS1lcnJvci9bMC41XSAjeyFpbXBvcnRhbnR9O1xuICAgICAgfVxuICAgICAgLnRvZ2dsZSB7XG4gICAgICAgIEBhcHBseSBiZy1ydWktZXJyb3IgI3shaW1wb3J0YW50fTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLndpdGgtc3VjY2VzcyB7XG4gICAgICAuaW5wdXQge1xuICAgICAgICBAYXBwbHkgYmctcnVpLXN1Y2Nlc3MvWzAuNV0gI3shaW1wb3J0YW50fTtcbiAgICAgIH1cbiAgICAgIC50b2dnbGUge1xuICAgICAgICBAYXBwbHkgYmctcnVpLXN1Y2Nlc3MgI3shaW1wb3J0YW50fTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuaW5wdXQge1xuICAgIEBhcHBseSBiZy1ydWktZ3JleS03MDA7XG4gIH1cblxuICAudG9nZ2xlIHtcbiAgICAmOmJlZm9yZSB7XG4gICAgICBAYXBwbHkgYmctd2hpdGU7XG4gICAgfVxuICB9XG59XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbmltcG9ydCB0eXBlIHsgQ29udGV4dENvbG9yc1R5cGUgfSBmcm9tICdAL2NvbnN0cy9jb2xvcnMnO1xuaW1wb3J0IHR5cGUgeyBSdWlJY29ucyB9IGZyb20gJ0AvaWNvbnMnO1xuaW1wb3J0IHsgbG9naWNBbmQsIGxvZ2ljTm90IH0gZnJvbSAnQHZ1ZXVzZS9tYXRoJztcbmltcG9ydCBSdWlCdXR0b24gZnJvbSAnQC9jb21wb25lbnRzL2J1dHRvbnMvYnV0dG9uL1J1aUJ1dHRvbi52dWUnO1xuaW1wb3J0IFJ1aUZvcm1UZXh0RGV0YWlsIGZyb20gJ0AvY29tcG9uZW50cy9oZWxwZXJzL1J1aUZvcm1UZXh0RGV0YWlsLnZ1ZSc7XG5pbXBvcnQgUnVpSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvaWNvbnMvUnVpSWNvbi52dWUnO1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSAnQC91dGlscy9hc3NlcnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BzIHtcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIHZhcmlhbnQ/OiAnZGVmYXVsdCcgfCAnZmlsbGVkJyB8ICdvdXRsaW5lZCc7XG4gIGNvbG9yPzogQ29udGV4dENvbG9yc1R5cGU7XG4gIHRleHRDb2xvcj86IENvbnRleHRDb2xvcnNUeXBlO1xuICBkZW5zZT86IGJvb2xlYW47XG4gIGhpbnQ/OiBzdHJpbmc7XG4gIGVycm9yTWVzc2FnZXM/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgc3VjY2Vzc01lc3NhZ2VzPzogc3RyaW5nIHwgc3RyaW5nW107XG4gIGhpZGVEZXRhaWxzPzogYm9vbGVhbjtcbiAgcHJlcGVuZEljb24/OiBSdWlJY29ucztcbiAgYXBwZW5kSWNvbj86IFJ1aUljb25zO1xuICByZWFkb25seT86IGJvb2xlYW47XG4gIGNsZWFyYWJsZT86IGJvb2xlYW47XG4gIG5vUmVzaXplPzogYm9vbGVhbjtcbiAgbWluUm93cz86IG51bWJlciB8IHN0cmluZztcbiAgbWF4Um93cz86IG51bWJlciB8IHN0cmluZztcbiAgcm93SGVpZ2h0PzogbnVtYmVyIHwgc3RyaW5nO1xuICBhdXRvR3Jvdz86IGJvb2xlYW47XG59XG5cbmRlZmluZU9wdGlvbnMoe1xuICBuYW1lOiAnUnVpVGV4dEFyZWEnLFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxufSk7XG5cbmNvbnN0IG1vZGVsVmFsdWUgPSBkZWZpbmVNb2RlbDxzdHJpbmc+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbmNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gIGxhYmVsOiAnJyxcbiAgcGxhY2Vob2xkZXI6ICcnLFxuICBkaXNhYmxlZDogZmFsc2UsXG4gIHZhcmlhbnQ6ICdkZWZhdWx0JyxcbiAgY29sb3I6IHVuZGVmaW5lZCxcbiAgdGV4dENvbG9yOiB1bmRlZmluZWQsXG4gIGRlbnNlOiBmYWxzZSxcbiAgaGludDogJycsXG4gIGVycm9yTWVzc2FnZXM6ICgpID0+IFtdLFxuICBzdWNjZXNzTWVzc2FnZXM6ICgpID0+IFtdLFxuICBoaWRlRGV0YWlsczogZmFsc2UsXG4gIHByZXBlbmRJY29uOiB1bmRlZmluZWQsXG4gIGFwcGVuZEljb246IHVuZGVmaW5lZCxcbiAgcmVhZG9ubHk6IGZhbHNlLFxuICBjbGVhcmFibGU6IGZhbHNlLFxuICBub1Jlc2l6ZTogZmFsc2UsXG4gIG1pblJvd3M6IDIsXG4gIHJvd0hlaWdodDogMS41LCAvLyBpbiByZW1zXG4gIG1heFJvd3M6IHVuZGVmaW5lZCxcbiAgYXV0b0dyb3c6IGZhbHNlLFxufSk7XG5cbmNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czx7XG4gIChlOiAnY2xpY2s6Y2xlYXInKTogdm9pZDtcbn0+KCk7XG5cbmNvbnN0IHtcbiAgbGFiZWwsXG4gIGF1dG9Hcm93LFxuICBjbGVhcmFibGUsXG4gIGRpc2FibGVkLFxuICByZWFkb25seSxcbiAgbWluUm93cyxcbiAgbWF4Um93cyxcbiAgbm9SZXNpemUsXG4gIHJvd0hlaWdodCxcbiAgZXJyb3JNZXNzYWdlcyxcbiAgc3VjY2Vzc01lc3NhZ2VzLFxufSA9IHRvUmVmcyhwcm9wcyk7XG5cbmNvbnN0IHByZXBlbmQgPSByZWY8SFRNTERpdkVsZW1lbnQ+KCk7XG5jb25zdCBhcHBlbmQgPSByZWY8SFRNTERpdkVsZW1lbnQ+KCk7XG5jb25zdCB0ZXh0YXJlYSA9IHJlZjxIVE1MVGV4dEFyZWFFbGVtZW50PigpO1xuY29uc3QgdGV4dGFyZWFTaXplciA9IHJlZjxIVE1MVGV4dEFyZWFFbGVtZW50PigpO1xuXG5jb25zdCBjc3MgPSB1c2VDc3NNb2R1bGUoKTtcblxuY29uc3QgbGFiZWxXaXRoUXVvdGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gIGNvbnN0IGxhYmVsVmFsID0gZ2V0KGxhYmVsKTtcbiAgaWYgKCFsYWJlbFZhbClcbiAgICByZXR1cm4gJ1wiXFxcXDIwMEJcIic7XG5cbiAgcmV0dXJuIGAnICAke2dldChsYWJlbCl9ICAnYDtcbn0pO1xuXG5jb25zdCBmaWVsZFN0eWxlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgY29uc3QgaGVpZ2h0ID0gTnVtYmVyKGdldChyb3dIZWlnaHQpKTtcbiAgY29uc3QgbWluID0gTnVtYmVyKGdldChtaW5Sb3dzKSk7XG4gIGNvbnN0IG1heCA9IE51bWJlcihnZXQobWF4Um93cykpO1xuICBjb25zdCB2YWx1ZTogeyBtaW5IZWlnaHQ6IHN0cmluZzsgbWF4SGVpZ2h0Pzogc3RyaW5nIH0gPSB7XG4gICAgbWluSGVpZ2h0OiBgJHttaW4gKiBoZWlnaHQgKyAwLjc1fXJlbWAsXG4gIH07XG4gIGlmIChtYXgpXG4gICAgdmFsdWUubWF4SGVpZ2h0ID0gYCR7bWF4ICogaGVpZ2h0ICsgMC43NX1yZW1gO1xuXG4gIHJldHVybiB2YWx1ZTtcbn0pO1xuXG5jb25zdCBwcmVwZW5kV2lkdGggPSByZWYoJzBweCcpO1xuY29uc3QgYXBwZW5kV2lkdGggPSByZWYoJzBweCcpO1xuXG51c2VSZXNpemVPYnNlcnZlcihwcmVwZW5kLCAoZW50cmllcykgPT4ge1xuICBjb25zdCBbZW50cnldID0gZW50cmllcztcbiAgYXNzZXJ0KGVudHJ5KTtcbiAgY29uc3QgeyB3aWR0aCwgbGVmdCB9ID0gZW50cnkuY29udGVudFJlY3Q7XG4gIHNldChwcmVwZW5kV2lkdGgsIGAke3dpZHRoICsgbGVmdCArIDI0fXB4YCk7XG59KTtcblxudXNlUmVzaXplT2JzZXJ2ZXIoYXBwZW5kLCAoZW50cmllcykgPT4ge1xuICBjb25zdCBbZW50cnldID0gZW50cmllcztcbiAgYXNzZXJ0KGVudHJ5KTtcbiAgY29uc3QgeyB3aWR0aCwgcmlnaHQgfSA9IGVudHJ5LmNvbnRlbnRSZWN0O1xuICBzZXQoYXBwZW5kV2lkdGgsIGAke3dpZHRoICsgcmlnaHQgKyAyNH1weGApO1xufSk7XG5cbmNvbnN0IGNvbG9yQ2xhc3MgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMuY29sb3IgPyBjc3NbcHJvcHMuY29sb3JdIDogdW5kZWZpbmVkKSk7XG5cbmNvbnN0IHNob3dDbGVhckljb24gPSBsb2dpY0FuZChcbiAgY2xlYXJhYmxlLFxuICBtb2RlbFZhbHVlLFxuICBsb2dpY05vdChkaXNhYmxlZCksXG4gIGxvZ2ljTm90KHJlYWRvbmx5KSxcbik7XG5cbmNvbnN0IHsgaGFzRXJyb3IsIGhhc1N1Y2Nlc3MsIGhhc01lc3NhZ2VzIH0gPSB1c2VGb3JtVGV4dERldGFpbChcbiAgZXJyb3JNZXNzYWdlcyxcbiAgc3VjY2Vzc01lc3NhZ2VzLFxuKTtcblxuZnVuY3Rpb24gY2xlYXJJY29uQ2xpY2tlZCgpIHtcbiAgc2V0KG1vZGVsVmFsdWUsICcnKTtcbiAgZW1pdCgnY2xpY2s6Y2xlYXInKTtcbn1cblxuZnVuY3Rpb24gY29tcHV0ZUZpZWxkSGVpZ2h0KG5ld1ZhbD86IHN0cmluZywgb2xkVmFsPzogc3RyaW5nKSB7XG4gIGlmICghZ2V0KGF1dG9Hcm93KSlcbiAgICByZXR1cm47XG5cbiAgY29uc3QgZmllbGQgPSBnZXQodGV4dGFyZWEpO1xuICBjb25zdCBmaWVsZFZhbHVlID0gbmV3VmFsID8/IGdldChtb2RlbFZhbHVlKTtcbiAgY29uc3QgZmllbGRTaXplciA9IGdldCh0ZXh0YXJlYVNpemVyKTtcbiAgaWYgKCEoZmllbGQgJiYgZmllbGRTaXplcikpXG4gICAgcmV0dXJuO1xuXG4gIG5leHRUaWNrKCgpID0+IHtcbiAgICBmaWVsZC5zdHlsZS5taW5IZWlnaHQgPSBnZXQoZmllbGRTdHlsZXMpLm1pbkhlaWdodDtcbiAgICBjb25zdCBzaXplckhlaWdodCA9IGZpZWxkU2l6ZXIuc2Nyb2xsSGVpZ2h0O1xuICAgIGNvbnN0IGZpZWxkSGVpZ2h0ID0gZmllbGQuc2Nyb2xsSGVpZ2h0O1xuICAgIGxldCBoZWlnaHQgPSBgJHtNYXRoLm1heChzaXplckhlaWdodCwgZmllbGRIZWlnaHQpIC8gMTZ9cmVtYDtcbiAgICBpZiAob2xkVmFsICYmIG9sZFZhbC5sZW5ndGggPiBmaWVsZFZhbHVlLmxlbmd0aClcbiAgICAgIGhlaWdodCA9IGAke01hdGgubWluKHNpemVySGVpZ2h0LCBmaWVsZEhlaWdodCkgLyAxNn1yZW1gO1xuXG4gICAgZmllbGQuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0O1xuICB9KTtcbn1cblxuY29uc3QgeyBmb2N1c2VkIH0gPSB1c2VGb2N1cyh0ZXh0YXJlYSk7XG5jb25zdCBmb2N1c2VkRGVib3VuY2VkID0gcmVmRGVib3VuY2VkKGZvY3VzZWQsIDUwMCk7XG5cbndhdGNoKG1vZGVsVmFsdWUsIGNvbXB1dGVGaWVsZEhlaWdodCk7XG5vbk1vdW50ZWQoY29tcHV0ZUZpZWxkSGVpZ2h0KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgdi1iaW5kPVwiZ2V0Um9vdEF0dHJzKCRhdHRycylcIj5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgIGNzcy53cmFwcGVyLFxuICAgICAgICBjb2xvckNsYXNzLFxuICAgICAgICBjc3NbdmFyaWFudCA/PyAnJ10sXG4gICAgICAgIHtcbiAgICAgICAgICBbY3NzLmRlbnNlXTogZGVuc2UsXG4gICAgICAgICAgW2Nzcy5kaXNhYmxlZF06IGRpc2FibGVkLFxuICAgICAgICAgIFtjc3NbJ25vLWxhYmVsJ11dOiAhbGFiZWwsXG4gICAgICAgICAgW2Nzc1snd2l0aC1lcnJvciddID8/ICcnXTogaGFzRXJyb3IsXG4gICAgICAgICAgW2Nzc1snd2l0aC1zdWNjZXNzJ10gPz8gJyddOiBoYXNTdWNjZXNzICYmICFoYXNFcnJvcixcbiAgICAgICAgICBbY3NzW2B0ZXh0XyR7dGV4dENvbG9yfWBdID8/ICcnXTogdGV4dENvbG9yICYmICFoYXNNZXNzYWdlcyxcbiAgICAgICAgfSxcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgdi1pZj1cIiRzbG90cy5wcmVwZW5kIHx8IHByZXBlbmRJY29uXCJcbiAgICAgICAgcmVmPVwicHJlcGVuZFwiXG4gICAgICAgIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEgc2hyaW5rLTBcIlxuICAgICAgICA6Y2xhc3M9XCJjc3MucHJlcGVuZFwiXG4gICAgICA+XG4gICAgICAgIDxzbG90XG4gICAgICAgICAgdi1pZj1cIiRzbG90cy5wcmVwZW5kXCJcbiAgICAgICAgICBuYW1lPVwicHJlcGVuZFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICB2LWVsc2UtaWY9XCJwcmVwZW5kSWNvblwiXG4gICAgICAgICAgOmNsYXNzPVwiW2Nzcy5pY29uXVwiXG4gICAgICAgID5cbiAgICAgICAgICA8UnVpSWNvbiA6bmFtZT1cInByZXBlbmRJY29uXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgOmNsYXNzPVwiY3NzLmlubmVyX3dyYXBwZXJcIj5cbiAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgdi1pZj1cImF1dG9Hcm93XCJcbiAgICAgICAgICByZWY9XCJ0ZXh0YXJlYVNpemVyXCJcbiAgICAgICAgICA6dmFsdWU9XCJtb2RlbFZhbHVlXCJcbiAgICAgICAgICA6Y2xhc3M9XCJbY3NzLnRleHRhcmVhX3NpemVyXVwiXG4gICAgICAgICAgOnN0eWxlPVwiZmllbGRTdHlsZXNcIlxuICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgZGlzYWJsZWRcbiAgICAgICAgICByZWFkb25seVxuICAgICAgICAvPlxuICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICByZWY9XCJ0ZXh0YXJlYVwiXG4gICAgICAgICAgdi1tb2RlbD1cIm1vZGVsVmFsdWVcIlxuICAgICAgICAgIDpwbGFjZWhvbGRlcj1cInBsYWNlaG9sZGVyIHx8ICcgJ1wiXG4gICAgICAgICAgOmNsYXNzPVwiW2Nzcy50ZXh0YXJlYSwgbm9SZXNpemUgPyAncmVzaXplLW5vbmUnIDogJ3Jlc2l6ZS15J11cIlxuICAgICAgICAgIDpzdHlsZT1cImZpZWxkU3R5bGVzXCJcbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXG4gICAgICAgICAgOnJlYWRvbmx5PVwicmVhZG9ubHlcIlxuICAgICAgICAgIHYtYmluZD1cImdldE5vblJvb3RBdHRycygkYXR0cnMpXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGxhYmVsIDpjbGFzcz1cImNzcy5sYWJlbFwiPlxuICAgICAgICAgIHt7IGxhYmVsIH19XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxmaWVsZHNldFxuICAgICAgICAgIHYtaWY9XCJ2YXJpYW50ID09PSAnb3V0bGluZWQnXCJcbiAgICAgICAgICA6Y2xhc3M9XCJjc3MuZmllbGRzZXRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGxlZ2VuZCAvPlxuICAgICAgICA8L2ZpZWxkc2V0PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIHYtaWY9XCIkc2xvdHMuYXBwZW5kIHx8IGFwcGVuZEljb24gfHwgc2hvd0NsZWFySWNvblwiXG4gICAgICAgIHJlZj1cImFwcGVuZFwiXG4gICAgICAgIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEgc2hyaW5rLTBcIlxuICAgICAgICA6Y2xhc3M9XCJjc3MuYXBwZW5kXCJcbiAgICAgID5cbiAgICAgICAgPFJ1aUJ1dHRvblxuICAgICAgICAgIHYtaWY9XCJzaG93Q2xlYXJJY29uXCJcbiAgICAgICAgICA6Y2xhc3M9XCJ7IGhpZGRlbjogIWZvY3VzZWREZWJvdW5jZWQgfVwiXG4gICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGljb25cbiAgICAgICAgICBjbGFzcz1cIiFwLTIgY2xlYXItYnRuXCJcbiAgICAgICAgICBjb2xvcj1cImVycm9yXCJcbiAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICBAY2xpY2suc3RvcD1cImNsZWFySWNvbkNsaWNrZWQoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8UnVpSWNvblxuICAgICAgICAgICAgbmFtZT1cImx1LXhcIlxuICAgICAgICAgICAgc2l6ZT1cIjIwXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L1J1aUJ1dHRvbj5cbiAgICAgICAgPHNsb3RcbiAgICAgICAgICB2LWlmPVwiJHNsb3RzLmFwcGVuZFwiXG4gICAgICAgICAgbmFtZT1cImFwcGVuZFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICB2LWVsc2UtaWY9XCJhcHBlbmRJY29uXCJcbiAgICAgICAgICA6Y2xhc3M9XCJbY3NzLmljb25dXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxSdWlJY29uIDpuYW1lPVwiYXBwZW5kSWNvblwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPFJ1aUZvcm1UZXh0RGV0YWlsXG4gICAgICB2LWlmPVwiIWhpZGVEZXRhaWxzXCJcbiAgICAgIGNsYXNzPVwicHQtMSBweC0zXCJcbiAgICAgIDplcnJvci1tZXNzYWdlcz1cImVycm9yTWVzc2FnZXNcIlxuICAgICAgOnN1Y2Nlc3MtbWVzc2FnZXM9XCJzdWNjZXNzTWVzc2FnZXNcIlxuICAgICAgOmhpbnQ9XCJoaW50XCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBsYW5nPVwic2Nzc1wiIG1vZHVsZT5cbkB1c2UgJ0Avc3R5bGVzL2NvbG9ycy5zY3NzJyBhcyBjO1xuXG46Z2xvYmFsKC5kYXJrKSB7XG4gIC53cmFwcGVyIHtcbiAgICAubGFiZWwge1xuICAgICAgQGFwcGx5IGJvcmRlci13aGl0ZS9bMC40Ml07XG5cbiAgICAgICY6YWZ0ZXIge1xuICAgICAgICBAYXBwbHkgYm9yZGVyLXdoaXRlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5pY29uIHtcbiAgICAgIEBhcHBseSB0ZXh0LXdoaXRlL1swLjU2XTtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIC5sYWJlbCB7XG4gICAgICAgIEBhcHBseSBib3JkZXItd2hpdGU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5maWxsZWQge1xuICAgICAgLnRleHRhcmVhIHtcbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgKyAubGFiZWwge1xuICAgICAgICAgICAgQGFwcGx5IGJnLXdoaXRlL1swLjEzXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmxhYmVsIHtcbiAgICAgICAgQGFwcGx5IGJnLXdoaXRlL1swLjA5XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLm91dGxpbmVkIHtcbiAgICAgIC5maWVsZHNldCB7XG4gICAgICAgIEBhcHBseSBib3JkZXItd2hpdGUvWzAuMjNdO1xuICAgICAgfVxuXG4gICAgICAmOm5vdCguZGlzYWJsZWQpIHtcbiAgICAgICAgLnRleHRhcmVhIHtcbiAgICAgICAgICAmOmhvdmVyLFxuICAgICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgfiAuZmllbGRzZXQge1xuICAgICAgICAgICAgICBAYXBwbHkgYm9yZGVyLXdoaXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4ud3JhcHBlciB7XG4gIEBhcHBseSByZWxhdGl2ZSB3LWZ1bGwgbWluLXctWzEyLjVyZW1dIGZsZXggaXRlbXMtc3RhcnQ7XG5cbiAgLmlubmVyX3dyYXBwZXIge1xuICAgIEBhcHBseSBmbGV4IGZsZXgtMSBwdC00O1xuICB9XG5cbiAgLmFwcGVuZCB7XG4gICAgQGFwcGx5IGFic29sdXRlIHJpZ2h0LTA7XG4gIH1cblxuICAudGV4dGFyZWEge1xuICAgIEBhcHBseSBsZWFkaW5nLTYgdGV4dC1ydWktdGV4dCB3LWZ1bGwgYmctdHJhbnNwYXJlbnQgcGItMiBwdC0wO1xuICAgIEBhcHBseSBvdXRsaW5lLTAgb3V0bGluZS1ub25lIHBsYWNlaG9sZGVyOm9wYWNpdHktMCBmb2N1czpwbGFjZWhvbGRlcjpvcGFjaXR5LTEwMDtcblxuICAgIC0teC1wYWRkaW5nOiAwLjc1cmVtO1xuICAgIHBhZGRpbmctcmlnaHQ6IGNhbGModmFyKC0teC1wYWRkaW5nKSArIHYtYmluZChhcHBlbmRXaWR0aCkpICFpbXBvcnRhbnQ7XG5cbiAgICAmX3NpemVyIHtcbiAgICAgIEBhcHBseSBpbnZpc2libGUgYWJzb2x1dGUgdG9wLTAgbGVmdC0wIHctZnVsbCBoLTAgLXotMTAgcG9pbnRlci1ldmVudHMtbm9uZSBweS0yIHB4LTMgI3shaW1wb3J0YW50fTtcblxuICAgICAgcGFkZGluZy1yaWdodDogY2FsYyh2YXIoLS14LXBhZGRpbmcpICsgdi1iaW5kKGFwcGVuZFdpZHRoKSkgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgIEBhcHBseSBvdXRsaW5lLTA7XG4gICAgICArIC5sYWJlbCB7XG4gICAgICAgIEBhcHBseSBhZnRlcjpzY2FsZS14LTEwMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOm5vdCg6cGxhY2Vob2xkZXItc2hvd24pLFxuICAgICY6YXV0b2ZpbGwsXG4gICAgJjotd2Via2l0LWF1dG9maWxsLFxuICAgICZbZGF0YS1oYXMtdmFsdWU9J3RydWUnXSxcbiAgICAmOmZvY3VzIHtcbiAgICAgICsgLmxhYmVsIHtcbiAgICAgICAgQGFwcGx5IHRleHQteHMgbGVhZGluZy10aWdodDtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiB2YXIoLS14LXBhZGRpbmcpO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS14LXBhZGRpbmcpO1xuICAgICAgfVxuICAgIH1cblxuICAgICY6ZGlzYWJsZWQge1xuICAgICAgQGFwcGx5IGJvcmRlci1kb3R0ZWQ7XG5cbiAgICAgICYsXG4gICAgICArIC5sYWJlbCB7XG4gICAgICAgIEBhcHBseSB0ZXh0LXJ1aS10ZXh0LWRpc2FibGVkO1xuICAgICAgfVxuXG4gICAgICB+IC5maWVsZHNldCB7XG4gICAgICAgIEBhcHBseSBib3JkZXItZG90dGVkO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5sYWJlbCB7XG4gICAgQGFwcGx5IGxlZnQtMCB0ZXh0LWJhc2UgbGVhZGluZy1bMy4yXSB0ZXh0LXJ1aS10ZXh0LXNlY29uZGFyeSBwb2ludGVyLWV2ZW50cy1ub25lIGFic29sdXRlIHRvcC0wIGZsZXggaC1mdWxsIHctZnVsbCBzZWxlY3Qtbm9uZSB0cmFuc2l0aW9uLWFsbCBib3JkZXItYiBib3JkZXItYmxhY2svWzAuNDJdO1xuXG4gICAgLS14LXBhZGRpbmc6IDByZW07XG5cbiAgICBwYWRkaW5nLWxlZnQ6IGNhbGModmFyKC0teC1wYWRkaW5nKSArIHYtYmluZChwcmVwZW5kV2lkdGgpKTtcbiAgICBwYWRkaW5nLXJpZ2h0OiBjYWxjKHZhcigtLXgtcGFkZGluZykgKyB2LWJpbmQoYXBwZW5kV2lkdGgpKTtcblxuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBAYXBwbHkgYWJzb2x1dGUgYm90dG9tLTAgbGVmdC0wIGJsb2NrIHctZnVsbCBzY2FsZS14LTAgYm9yZGVyLWItMiBtYi1bLTFweF0gdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMzAwIGJvcmRlci1ibGFjaztcbiAgICB9XG4gIH1cblxuICAmOmhvdmVyIHtcbiAgICAubGFiZWwge1xuICAgICAgQGFwcGx5IGJvcmRlci1ibGFjaztcbiAgICB9XG4gIH1cblxuICAuaWNvbiB7XG4gICAgQGFwcGx5IHRleHQtYmxhY2svWzAuNTRdO1xuICB9XG5cbiAgLnByZXBlbmQsXG4gIC5hcHBlbmQge1xuICAgIEBhcHBseSBtdC00IG14LTM7XG5cbiAgICAudGV4dGFyZWEge1xuICAgICAgLS14LXBhZGRpbmc6IDByZW07XG4gICAgfVxuICB9XG5cbiAgQGVhY2ggJGNvbG9yIGluIGMuJGNvbnRleHQtY29sb3JzIHtcbiAgICAmLiN7JGNvbG9yfSB7XG4gICAgICAudGV4dGFyZWEge1xuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICArIC5sYWJlbCB7XG4gICAgICAgICAgICBAYXBwbHkgdGV4dC1ydWktI3skY29sb3J9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAubGFiZWwge1xuICAgICAgICBAYXBwbHkgYWZ0ZXI6Ym9yZGVyLXJ1aS0jeyRjb2xvcn07XG4gICAgICB9XG5cbiAgICAgICYub3V0bGluZWQge1xuICAgICAgICAmOm5vdCguZGlzYWJsZWQpIHtcbiAgICAgICAgICAudGV4dGFyZWEge1xuICAgICAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICAgIH4gLmZpZWxkc2V0IHtcbiAgICAgICAgICAgICAgICBAYXBwbHkgYm9yZGVyLXJ1aS0jeyRjb2xvcn07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLnRleHRfI3skY29sb3J9LFxuICAgICYud2l0aC0jeyRjb2xvcn0ge1xuICAgICAgLnByZXBlbmQsXG4gICAgICAuYXBwZW5kLFxuICAgICAgLnRleHRhcmVhIHtcbiAgICAgICAgQGFwcGx5IHRleHQtcnVpLSN7JGNvbG9yfTtcbiAgICAgIH1cblxuICAgICAgJjpub3QoLmRpc2FibGVkKSAucHJlcGVuZCBzdmcsXG4gICAgICAmOm5vdCguZGlzYWJsZWQpIC5hcHBlbmQgc3ZnIHtcbiAgICAgICAgQGFwcGx5IHRleHQtcnVpLSN7JGNvbG9yfTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAZWFjaCAkY29sb3IgaW4gJ2Vycm9yJywgJ3N1Y2Nlc3MnIHtcbiAgICAmLndpdGgtI3skY29sb3J9IHtcbiAgICAgIC50ZXh0YXJlYSB7XG4gICAgICAgIEBhcHBseSBib3JkZXItcnVpLSN7JGNvbG9yfSAjeyFpbXBvcnRhbnR9O1xuICAgICAgfVxuXG4gICAgICAubGFiZWwge1xuICAgICAgICBAYXBwbHkgdGV4dC1ydWktI3skY29sb3J9IGFmdGVyOmJvcmRlci1ydWktI3skY29sb3J9ICN7IWltcG9ydGFudH07XG4gICAgICB9XG5cbiAgICAgIC5maWVsZHNldCB7XG4gICAgICAgIEBhcHBseSBib3JkZXItcnVpLSN7JGNvbG9yfSAjeyFpbXBvcnRhbnR9O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICYuZGVuc2Uge1xuICAgIC5pbm5lcl93cmFwcGVyIHtcbiAgICAgIEBhcHBseSBwdC0yO1xuXG4gICAgICAudGV4dGFyZWEge1xuICAgICAgICBAYXBwbHkgcHktMTtcbiAgICAgICAgJl9zaXplciB7XG4gICAgICAgICAgQGFwcGx5IHB5LTE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmLmZpbGxlZCxcbiAgJi5vdXRsaW5lZCB7XG4gICAgLnRleHRhcmVhIHtcbiAgICAgIEBhcHBseSBweC0zO1xuICAgIH1cblxuICAgIC5wcmVwZW5kIHtcbiAgICAgIEBhcHBseSBtci0wO1xuXG4gICAgICArIC5pbm5lcl93cmFwcGVyIC50ZXh0YXJlYSB7XG4gICAgICAgICY6bm90KDpwbGFjZWhvbGRlci1zaG93biksXG4gICAgICAgICY6YXV0b2ZpbGwsXG4gICAgICAgICY6LXdlYmtpdC1hdXRvZmlsbCxcbiAgICAgICAgJltkYXRhLWhhcy12YWx1ZT0ndHJ1ZSddLFxuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICArIC5sYWJlbCB7XG4gICAgICAgICAgICAtLXgtcGFkZGluZzogMC43NXJlbTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAuYXBwZW5kIHtcbiAgICAgIEBhcHBseSBtbC0wO1xuICAgIH1cblxuICAgIC5wcmVwZW5kLFxuICAgIC5hcHBlbmQge1xuICAgICAgKyAuaW5uZXJfd3JhcHBlciA+IC5sYWJlbCB7XG4gICAgICAgIC0teC1wYWRkaW5nOiAwcmVtO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5sYWJlbCB7XG4gICAgICAtLXgtcGFkZGluZzogMC43NXJlbTtcbiAgICB9XG4gIH1cblxuICAmLmZpbGxlZCB7XG4gICAgLmxhYmVsIHtcbiAgICAgIEBhcHBseSByb3VuZGVkLXQgYmctYmxhY2svWzAuMDZdO1xuICAgIH1cblxuICAgICYubm8tbGFiZWwge1xuICAgICAgLnRleHRhcmVhIHtcbiAgICAgICAgQGFwcGx5IHB5LTQ7XG4gICAgICAgICZfc2l6ZXIge1xuICAgICAgICAgIEBhcHBseSBweS00O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYuZGVuc2Uge1xuICAgICAgICAudGV4dGFyZWEge1xuICAgICAgICAgIEBhcHBseSBweS0zO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJi5vdXRsaW5lZCB7XG4gICAgLnRleHRhcmVhIHtcbiAgICAgICY6bm90KDpwbGFjZWhvbGRlci1zaG93biksXG4gICAgICAmOmF1dG9maWxsLFxuICAgICAgJjotd2Via2l0LWF1dG9maWxsLFxuICAgICAgJltkYXRhLWhhcy12YWx1ZT0ndHJ1ZSddLFxuICAgICAgJjpmb2N1cyB7XG4gICAgICAgIEBhcHBseSBib3JkZXItdC10cmFuc3BhcmVudDtcblxuICAgICAgICArIC5sYWJlbCB7XG4gICAgICAgICAgQGFwcGx5IGxlYWRpbmctWzBdIHBsLTQ7XG4gICAgICAgIH1cblxuICAgICAgICB+IC5maWVsZHNldCB7XG4gICAgICAgICAgbGVnZW5kIHtcbiAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICBjb250ZW50OiB2LWJpbmQobGFiZWxXaXRoUXVvdGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC5maWVsZHNldCB7XG4gICAgICBAYXBwbHkgYWJzb2x1dGUgdy1mdWxsIGgtW2NhbGMoMTAwJSswLjVyZW0pXSB0b3AtMCBsZWZ0LTAgcG9pbnRlci1ldmVudHMtbm9uZSByb3VuZGVkIGJvcmRlciBib3JkZXItYmxhY2svWzAuMjNdIHB4LTIgdHJhbnNpdGlvbi1hbGwgLW10LTI7XG5cbiAgICAgIGxlZ2VuZCB7XG4gICAgICAgIEBhcHBseSBvcGFjaXR5LTAgdGV4dC14cztcblxuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICBAYXBwbHkgd2hpdGVzcGFjZS1icmVhay1zcGFjZXM7XG4gICAgICAgICAgY29udGVudDogJ1xcMjAwQic7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOm5vdCguZGlzYWJsZWQpIHtcbiAgICAgIC50ZXh0YXJlYSB7XG4gICAgICAgICY6aG92ZXIsXG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgIH4gLmZpZWxkc2V0IHtcbiAgICAgICAgICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLWJsYWNrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgIH4gLmZpZWxkc2V0IHtcbiAgICAgICAgICAgIEBhcHBseSBib3JkZXItMjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAubGFiZWwge1xuICAgICAgQGFwcGx5IGJvcmRlci0wIGJvcmRlci10cmFuc3BhcmVudDtcblxuICAgICAgJjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmRlbnNlIHtcbiAgICAgIC5sYWJlbCB7XG4gICAgICAgIEBhcHBseSBsZWFkaW5nLVsyLjVdO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG5leHBvcnQgaW50ZXJmYWNlIFByb3BzIHtcbiAgcm91bmRlZD86ICdub25lJyB8ICdzbScgfCAnbWQnIHwgJ2xnJyB8ICdmdWxsJztcbn1cblxuZGVmaW5lT3B0aW9ucyh7XG4gIG5hbWU6ICdSdWlTa2VsZXRvbkxvYWRlckJhc2UnLFxufSk7XG5cbndpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICByb3VuZGVkOiB1bmRlZmluZWQsXG59KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbJHN0eWxlLnNrZWxldG9uLCB7IFtgcm91bmRlZC0ke3JvdW5kZWR9YF06ICEhcm91bmRlZCB9XVwiXG4gICAgcm9sZT1cImFsZXJ0XCJcbiAgLz5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBsYW5nPVwic2Nzc1wiIG1vZHVsZT5cbi5za2VsZXRvbiB7XG4gIEBhcHBseSBhbmltYXRlLXB1bHNlIGJnLWJsYWNrL1suMTJdO1xufVxuXG46Z2xvYmFsKC5kYXJrKSB7XG4gIC5za2VsZXRvbiB7XG4gICAgQGFwcGx5IGJnLXdoaXRlL1suMTZdO1xuICB9XG59XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbmltcG9ydCBSdWlTa2VsZXRvbkJhc2UsIHsgdHlwZSBQcm9wcyBhcyBTa2VsZXRvbkJhc2VQcm9wcyB9IGZyb20gJ0AvY29tcG9uZW50cy9sb2FkZXJzL1J1aVNrZWxldG9uQmFzZS52dWUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BzIGV4dGVuZHMgU2tlbGV0b25CYXNlUHJvcHMge1xuICB0eXBlPzpcbiAgICB8ICd0ZXh0J1xuICAgIHwgJ3BhcmFncmFwaCdcbiAgICB8ICdoZWFkaW5nJ1xuICAgIHwgJ2FydGljbGUnXG4gICAgfCAnYnV0dG9uJ1xuICAgIHwgJ2ljb24nXG4gICAgfCAnYXZhdGFyJ1xuICAgIHwgJ3RodW1ibmFpbCdcbiAgICB8ICdjdXN0b20nO1xufVxuXG5kZWZpbmVPcHRpb25zKHtcbiAgbmFtZTogJ1J1aVNrZWxldG9uTG9hZGVyJyxcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbn0pO1xuXG53aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgdHlwZTogJ3RleHQnLFxuICByb3VuZGVkOiB1bmRlZmluZWQsXG59KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxSdWlTa2VsZXRvbkJhc2VcbiAgICB2LWlmPVwiIVsncGFyYWdyYXBoJywgJ2FydGljbGUnXS5pbmNsdWRlcyh0eXBlKVwiXG4gICAgOmNsYXNzPVwiJHN0eWxlW2Bza2VsZXRvbl8ke3R5cGV9YF1cIlxuICAgIDpyb3VuZGVkPVwicm91bmRlZFwiXG4gICAgdi1iaW5kPVwiJGF0dHJzXCJcbiAgLz5cbiAgPGRpdlxuICAgIHYtZWxzZVxuICAgIDpjbGFzcz1cIiRzdHlsZVtgc2tlbGV0b25fJHt0eXBlfWBdXCJcbiAgICB2LWJpbmQ9XCIkYXR0cnNcIlxuICA+XG4gICAgPFJ1aVNrZWxldG9uQmFzZVxuICAgICAgdi1pZj1cInR5cGUgPT09ICdhcnRpY2xlJ1wiXG4gICAgICA6Y2xhc3M9XCIkc3R5bGUuc2tlbGV0b25faGVhZGluZ1wiXG4gICAgICA6cm91bmRlZD1cInJvdW5kZWRcIlxuICAgIC8+XG4gICAgPFJ1aVNrZWxldG9uQmFzZVxuICAgICAgOmNsYXNzPVwiJHN0eWxlLnNrZWxldG9uX3RleHRcIlxuICAgICAgOnJvdW5kZWQ9XCJyb3VuZGVkXCJcbiAgICAvPlxuICAgIDxSdWlTa2VsZXRvbkJhc2VcbiAgICAgIDpjbGFzcz1cIiRzdHlsZS5za2VsZXRvbl90ZXh0XCJcbiAgICAgIDpyb3VuZGVkPVwicm91bmRlZFwiXG4gICAgLz5cbiAgICA8UnVpU2tlbGV0b25CYXNlXG4gICAgICA6Y2xhc3M9XCIkc3R5bGUuc2tlbGV0b25fdGV4dFwiXG4gICAgICA6cm91bmRlZD1cInJvdW5kZWRcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgbW9kdWxlPlxuLnNrZWxldG9uIHtcbiAgJl9jdXN0b20ge1xuICAgIEBhcHBseSBib3gtYm9yZGVyO1xuICB9XG5cbiAgJl90ZXh0IHtcbiAgICBAYXBwbHkgdy1mdWxsIGgtNCByb3VuZGVkLW1kO1xuICB9XG5cbiAgJl9oZWFkaW5nIHtcbiAgICBAYXBwbHkgdy1mdWxsIGgtNiByb3VuZGVkLW1kO1xuICB9XG5cbiAgJl9idXR0b24ge1xuICAgIEBhcHBseSB3LWZ1bGwgbWF4LXctWzZyZW1dIGgtWzIuMjVyZW1dIHJvdW5kZWQtbWQ7XG4gIH1cblxuICAmX2ljb24ge1xuICAgIEBhcHBseSB3LTYgaC02IHJvdW5kZWQtZnVsbDtcbiAgfVxuXG4gICZfYXZhdGFyIHtcbiAgICBAYXBwbHkgdy0xMCBoLTEwIHJvdW5kZWQtZnVsbDtcbiAgfVxuXG4gICZfdGh1bWJuYWlsIHtcbiAgICBAYXBwbHkgdy0xNCBoLTE0IHJvdW5kZWQtc207XG4gIH1cblxuICAmX3BhcmFncmFwaCxcbiAgJl9hcnRpY2xlIHtcbiAgICBAYXBwbHkgZmxleCBmbGV4LWNvbCBnYXAtMjtcblxuICAgIC5za2VsZXRvbl9oZWFkaW5nIHtcbiAgICAgIEBhcHBseSBtYi0xO1xuICAgIH1cblxuICAgIC5za2VsZXRvbl90ZXh0IHtcbiAgICAgIEBhcHBseSBoLTM7XG5cbiAgICAgICY6bnRoLWNoaWxkKDIpIHtcbiAgICAgICAgQGFwcGx5IG1heC13LVs4MCVdO1xuICAgICAgfVxuXG4gICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBAYXBwbHkgbWF4LXctWzkwJV07XG4gICAgICB9XG4gICAgfVxuICB9XG59XG48L3N0eWxlPlxuIiwiZXhwb3J0IGRlZmF1bHQgXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNjc3ZnJTIweG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUyMHdpZHRoPSc4NiclMjBoZWlnaHQ9Jzg4JyUyMGZpbGw9J25vbmUnJTNlJTNjcGF0aCUyMGQ9J004NS42NyUyMDc0LjcyOEguMDA3djUuMzNIODUuNjd2LTUuMzN6JyUyMGZpbGw9JyUyMzRlMzUyZScvJTNlJTNjcGF0aCUyMGQ9J00yMS44NTYlMjA4Ni45NzFjLTYuMzkxJTIwMC02LjQyMS0xOC44ODIlMjAwLTE4Ljg4MnM2LjQyMSUyMDE4Ljg4MiUyMDAlMjAxOC44ODJ6bTQ1LjE5LTE3LjA1NWMtLjItLjI3OC0uNDYtLjUwNy0uNzYxLS42Ny41MTclMjAyLjE2MiUyMDEuMDM1JTIwNy4zNC0xLjAzNSUyMDcuMzQtLjA2MS0xLjY0NS0uMDMxLTYuNDI2LTEuNDkxLTcuNzk3LS45MTMuMjc0LTIuNTg3JTIwMS4wOTYtMy40OTklMjAzLjQ0MS0uMjg4LjkzNC0uNDkxJTIwMS44OTItLjYwOSUyMDIuODYzdi4wOTFjLS42MzklMjA1LjM2LjkxMyUyMDExLjgxNyUyMDQuNjU2JTIwMTEuODE3JTIwMy44OTUlMjAwJTIwNS40MTctNy4wMzUlMjA0LjU2NS0xMi40ODdhMSUyMDElMjAwJTIwMCUyMDEtLjY2OS4yNDRjLjA2MS0xLjU1My0uMzk2LTMuNzQ2LTEuMTU2LTQuODQyem0xMi4zMjUtMS44MjdjLTYuNDIxJTIwMC02LjM5MSUyMDE4Ljg4MiUyMDAlMjAxOC44ODJzNi4zOS0xOC44ODIlMjAwLTE4Ljg4MnptLTY4LjY1MiUyMDBjLTYuNDIxJTIwMC02LjM5MSUyMDE4Ljg4MiUyMDAlMjAxOC44ODJzNi40MjEtMTguODgyJTIwMC0xOC44ODJ6JyUyMGZpbGw9JyUyM2U0NTMyNScvJTNlJTNjcGF0aCUyMGQ9J00xMy4wNjIlMjA4Mi43NjhhMy4wNCUyMDMuMDQlMjAwJTIwMCUyMDAlMjAxLjk0OC0uN2MtLjclMjAyLjgwMi0yLjEzJTIwNC45MDMtNC4yNiUyMDQuOTAzLTUuNjYlMjAwLTYuMzMtMTQuODAxLTEuOTQ4LTE4LjE4Mi0xLjQzJTIwNS42MDQtLjAzJTIwMTMuOTc5JTIwNC4yNiUyMDEzLjk3OXptNjguNjIyJTIwMGMtNC4yNiUyMDAtNS42OTEtOC40MDYtNC4yNi0xMy45NzktNC4zODIlMjAzLjM4LTMuNzEzJTIwMTguMTgyJTIwMS45NDglMjAxOC4xODIlMjAyLjEzJTIwMCUyMDMuNTYtMi4xMDElMjA0LjI2LTQuOTAzYTMuMDQlMjAzLjA0JTIwMCUyMDAlMjAxLTEuOTQ4Ljd6TTYwLjI1NSUyMDcyLjE3OWMtMS43OTYlMjA1LjU0My0uNDU3JTIwMTQuODAxJTIwNC4wMTclMjAxNC44MDElMjAyLjEzJTIwMCUyMDMuNTYtMi4xMDElMjA0LjI2LTQuOTAzYTMuMjQlMjAzLjI0JTIwMCUyMDAlMjAxLTEuOTQ4LjcwMWMtNC4wNzglMjAwLTUuNTM4LTcuNjE0LTQuNDQzLTEzLjE1N2E2LjA5JTIwNi4wOSUyMDAlMjAwJTIwMC0xLjg4NyUyMDIuNTU4em0tNDAuMzUxLTMuMzgxYy00LjM4MiUyMDMuMzgxLTMuNzEzJTIwMTguMTgyJTIwMS45NDglMjAxOC4xODIlMjAyLjEzJTIwMCUyMDMuNTYtMi4xMDElMjA0LjI2LTQuOTAzYTMuMjQlMjAzLjI0JTIwMCUyMDAlMjAxLTEuOTQ4LjcwMWMtNC4yNTQtLjAwOS01LjY4NC04LjM4NC00LjI1NC0xMy45ODhsLS4wMDYuMDA5eiclMjBmaWxsPSclMjNiZTNhMjYnLyUzZSUzY3BhdGglMjBkPSdNMzcuMTI3JTIwNzMuMzU4Yy0uMzM1LS4wOTEtNC4zODItMTAuMDItNC4zODItMTAuMDJzMi44My0yLjAxJTIwMi45ODItMi42MTljLS44MjItLjgyMi0xLjYxMy0yLjQ2Ny0xLjYxMy0yLjQ2N2ExMi4zMyUyMDEyLjMzJTIwMCUyMDAlMjAwJTIwLjQ1NyUyMDIuMDFzLTEuMjE3LS41NDgtMS42MTMtMS41MjNsLTIuNjQ4JTIwMy43NzdzNC40NzMlMjAxMC4yOTQlMjA0LjQ0MyUyMDEwLjg0MmMtMS42NzQtLjM2NS0zLjIyNiUyMDEuNDAxLTMuMjI2JTIwMS40MDElMjAzLjI1Ni4zMzUlMjAyLjE5MSUyMDUuOTM5JTIwMCUyMDUuMzMlMjAxLjU1MiUyMDMuNTYzJTIwMy40MDglMjAxLjQ2MiUyMDMuNTYtNC41OTkuNy40ODclMjAzLjE2NSUyMDMuOTU5LjMwNCUyMDQuNTk5JTIwMi42NDglMjA0Ljg0MiUyMDUuNTM4LTEuMzQlMjAxLjYxMy00Ljg3MyUyMDIuMDM5LjE1MiUyMDUuMjA0JTIwMi42MTklMjAyLjc2OSUyMDQuODczLjg4MiUyMDIuMzE1JTIwMi42MTclMjAxLjA5NiUyMDIuODkxLS42MzkuNDAyLTMuMjI4LTIuNjExLTUuMzYtNS41MzgtNi4wOTF6bTI5LjMxMS01Ljc4N2MtLjgyMi0xLjE4OC0yLjAzOS0xLjE4OC0zLjMxNy0uNDI2LTIuOC4wOTEtNC41MzQtLjI3NC0xMy4xNzcuODUzJTIwMCUyMDAtLjA2MS0uNjctLjEyMi0xLjYxNC0uNzMuMDkxLTEuNDYxLjEyMi0yLjIyMS4xNTJsLjc5MSUyMDQuMDJjMi4zMTMtLjA5MSUyMDkuMjgyLTEuNzM2JTIwMTIuNjI5LTEuNzM2LTEuMjE3JTIwMS4zMS0zLjA3NCUyMDQuODQyLTEuMzM5JTIwNi4zNjUuMjc0LTQuNjI5JTIwMi44OTEtNi4wMjQlMjA0LjA3OC02LjM5NSUyMDEuMTY5JTIwMS40MTMlMjAxLjQzJTIwNi4xODIlMjAxLjQ5MSUyMDcuNzk2JTIwMi4wNjklMjAwJTIwMS42MTMtNS4xNDclMjAxLjA5Ni03LjMwOS4yNjQuMTc4LjQ5OS4zOTMuNy42NC43NjElMjAxLjA2NiUyMDEuMDI5JTIwMy4zMDclMjAxLjE1NiUyMDQuODQyJTIwMi4zNzQlMjAwJTIwLjg3Ni03LjEyNi0xLjc2NS03LjE4N3onJTIwZmlsbD0nJTIzMmQxZTFjJy8lM2UlM2NwYXRoJTIwZD0nTTYxLjg3MyUyMDU4LjIyMWMtNy4xODIlMjAzLjY1NS0xNi4zNDElMjAzLjc0Ni0xMS42NTUtNS4yOTlhMTUuOTMlMjAxNS45MyUyMDAlMjAwJTIwMC0xLjAzNSUyMDEuMjE4Yy44NTItMy4wMTUlMjAzLjQzOS01LjcyNiUyMDUuODQzLTcuNTgzLTEuMTgyLjYtMi4zMjElMjAxLjI4Mi0zLjQwOCUyMDIuMDQlMjAzLjkyNi01LjUxMiUyMDcuNzktMy44MDclMjA5LjYxNi0xMS42OTUtMS40MyUyMDUuMTE3LTcuMjEyJTIwOC41MjgtMTIuMzU1JTIwOS44OTgtNC44OTklMjAyLjgwMi0xOC4zOC0uMzk2LTIyLjczMi0xLjc2NiUyMDMuMDQzLS4yNDQlMjA0LjE2OS0uNDI2JTIwNC4xNjktLjQyNi0zLjE2NS0uOTc1LTYuNjY0LTIuODAyLTEwLjEzNC00LjA1MS4xNTIlMjAyLjQ5Ny43MyUyMDUuMDg2JTIwMS43MDQlMjA3LjA5Ni0uNTE3LTIuODAyJTIwMC00LjIwMyUyMDAtNC4yMDNzMS4wMDQlMjA1LjkzOSUyMDMuMzQ3JTIwOS4zOGMtLjkxMy0zLjY4NS0uNTE3LTQuOTM0LS41MTctNC45MzRzMS44ODclMjA3LjA5NiUyMDQuNjU2JTIwOS41MzJjLS4zNjYtMS4zMDctLjQ2OS0yLjY3My0uMzA0LTQuMDIlMjAwJTIwMCUyMC41MTclMjAxLjQwMSUyMDMuNzczJTIwNC4wMi0uODIyLTEuOTglMjAxLjEyNi0xLjI3OSUyMDIuNjQ4LjgyMnMyLjQzNSUyMDIuMjg0JTIwNi42MDQlMjAxLjQ2MmMtMy4wNDMlMjAxLjczNiUyMDEuODI2JTIwMi45NTQlMjA0Ljk2JTIwMi41NTgtMi4yNTIlMjAxLjQzMSUyMDQuODY5JTIwMS4wNjYlMjA4LjkxNi4wOTEtMi4xMyUyMDEuNjQ1JTIwNS4yNjQuOTQ0JTIwNi40ODIuMTIyLjM2NS0uMjQ0JTIwMS4xODctLjI0NCUyMDIuMS0uMDYxYTMwLjM5JTIwMzAuMzklMjAwJTIwMCUyMDAlMjAxLjAzNS0uNzMxYy0yLjI4OCUyMDEuMTU3JTIwMS42NjgtNi4yNDMtMy43MTMtMy40NzJ6JyUyMGZpbGw9JyUyM2YyZjJmMicvJTNlJTNjcGF0aCUyMGQ9J001NC40NDglMjA2NS4yODdjLTUuNjkxJTIwMi4xOTMtMTQuMzMzJTIwMS4yNzktMjEuNTQ1LTEuNjE0LS4wNDgtLjEwOS0uMDg5LS4yMjEtLjEyMi0uMzM1JTIwMCUyMDAlMjAyLjgzLTIuMDElMjAyLjk4Mi0yLjYxOS0uODIyLS44MjItMS42MTMtMi40NjctMS42MTMtMi40NjdhMTIuMzMlMjAxMi4zMyUyMDAlMjAwJTIwMCUyMC40NTYlMjAyLjAxcy0xLjIxNy0uNTQ4LTEuNjEzLTEuNTIzbC0yLjY0OCUyMDMuNzc2YzAlMjAuMDA4LjAwMy4wMTYuMDA5LjAyMnMuMDEzLjAwOS4wMjEuMDA5Yy0yLjgzLTEuNDAxLTUuMzI1LTMuMTA2LTcuMTgyLTUuMDI1LjQyNiUyMDEuMTU3Ljc5MSUyMDIuMjg0Ljk3NCUyMDIuODMyLTEuMjE3LTEuNTIzLTYuMTE3LTYuNTc4LTcuOTczLTEzLjczNWEzMS4zNyUyMDMxLjM3JTIwMCUyMDAlMjAwJTIwLjE4MyUyMDMuMzhjLTEuMTM5LTIuNzktMS44NDctNS43MzctMi4xLTguNzQxYTIxLjYlMjAyMS42JTIwMCUyMDAlMjAwLS4yMTMlMjAyLjc0MWMtLjc2MS0yLjE2Mi0xLjA5Ni01LjAyNS0xLjE1Ni03LjE1N3YtMi4wMWExMC4zNiUyMDEwLjM2JTIwMCUyMDAlMjAwLS41NDglMjAxLjQwMWMtLjAzLjEyMi0uMDYxLjIxMy0uMDkxLjMzNXYuMDNjLS4wMzUuMTE5LS4wNTYuMjQyLS4wNjEuMzY2LS4zMTUtMi4zMTgtLjI2NC00LjY3Mi4xNTItNi45NzQlMjA2LjQ1MSUyMDMuNTMzJTIwMTMuNjk0JTIwNy45NzklMjAxOC4xNjclMjAxMS4xNDcuNzkxLjU0OC03LjAyOS0yLjEwMS02LjIzOC0xLjU1MyUyMDYuNjM0JTIwNC40NzclMjAxMy41NzIlMjA4LjEzMiUyMDIwLjI2NyUyMDcuOTE4JTIwMS40ODMtLjA2JTIwMi45NTQtLjI5NiUyMDQuMzgyLS43LTQuODk5JTIwMi44MDItMTguMzgtLjM5Ni0yMi43MzItMS43NjYlMjAzLjA0My0uMjQ0JTIwNC4xNjktLjQyNiUyMDQuMTY5LS40MjYtMy4xNjUtLjk3NS02LjY2NC0yLjgwMi0xMC4xMzMtNC4wNS4xNTIlMjAyLjQ5Ny43MyUyMDUuMDg2JTIwMS43MDQlMjA3LjA5Ni0uNTE3LTIuODAyJTIwMC00LjIwMyUyMDAtNC4yMDNzMS4wMDQlMjA1LjkzOSUyMDMuMzQ3JTIwOS4zOGMtLjkxMy0zLjY4NS0uNTE3LTQuOTM0LS41MTctNC45MzRzMS44ODclMjA3LjA5NiUyMDQuNjU2JTIwOS41MzJjLS4zNjYtMS4zMDctLjQ2OS0yLjY3My0uMzA0LTQuMDIlMjAwJTIwMCUyMC41MTclMjAxLjQwMSUyMDMuNzczJTIwNC4wMi0uODIyLTEuOTglMjAxLjEyNi0xLjI3OSUyMDIuNjQ4LjgyMnMyLjQzNSUyMDIuMjg0JTIwNi42MDQlMjAxLjQ2MmMtMy4wNDMlMjAxLjczNiUyMDEuODI2JTIwMi45NTQlMjA0Ljk2JTIwMi41NTgtMi4yNTIlMjAxLjQzMSUyMDQuODY5JTIwMS4wNjYlMjA4LjkxNi4wOTEtMi4xMyUyMDEuNjQ0JTIwNS4yNjQuOTQ0JTIwNi40ODIuMTIyLjM2NS0uMjQ0JTIwMS4xODctLjI0NCUyMDIuMS0uMDYxLTMuMDEzJTIwMi4wMS02LjgxNyUyMDMuNTAyLTExLjcxNiUyMDQuMjAzLS4wNjEtLjAzMSUyMDEuMDA0LS41MTglMjAxLjU1Mi0xLjM0em0tMTQuOTcyLTExLjM2YzEuNTIyLjY0JTIwMy41LS4yMTMlMjA1LjExMi0yLjM3Ni0xLjA3MS45MTQtMy4yMDElMjAyLjEzMi01LjExMiUyMDIuMzc2em0wJTIwNC44NzNjMS4xMjYuMzY1JTIwMi42MTctLjEyMiUyMDMuODA0LTEuMzctMS4xNTkuNzE4LTIuNDU0JTIwMS4xODQtMy44MDQlMjAxLjM3ek0yNy4zMzQlMjA0Ni45MDFjLS4zNjUlMjAxLjY3NS4zNjUlMjAzLjc3NiUyMDIuMDM5JTIwNS40MjFhMTUuNTQlMjAxNS41NCUyMDAlMjAwJTIwMS0yLjAzOS01LjQyMXonJTIwZmlsbD0nJTIzYjNiM2IzJy8lM2UlM2NwYXRoJTIwZD0nTTEuMTk0JTIwMjQuNjY5QzIuNzQ2JTIwMjcuOTI4JTIwNy4zMSUyMDMxLjQlMjAxMS45MzYlMjAzNC4wOGExOS4yNyUyMDE5LjI3JTIwMCUyMDAlMjAxJTIwLjM2NS00LjA4MWMtNC41MzQtMi41MDYtOC42NDgtNC41NDctMTEuMTA3LTUuMzN6TTEyLjM5MiUyMDIuMTUzQzguNDA2LTEuMDc1JTIwNi4xMjMlMjAxLjM2MiUyMDcuMzcxJTIwNC42MiUyMDYuMTU0JTIwNC4wNDItLjIzNy0yLjk2My4wMDclMjAxLjQ1My4xNTklMjAzLjk4MSUyMDYuMDMyJTIwMTEuNTk0JTIwMTEuOTM2JTIwMTkuMTE3YzMuMjExLTEuNDU3JTIwNi41MjctMi42NjklMjA5LjkyMS0zLjYyNC0zLjY4Mi01Ljk2OS03LjU3Ny0xMS44MTctOS40NjQtMTMuMzM5eiclMjBmaWxsPSclMjMyZDFlMWMnLyUzZSUzY3BhdGglMjBkPSdNODMuNzgzJTIwNDUuNjQzYzMuNTYtMTEuMjA4LS40ODctMjkuODc2LTM1LjUxMy0yOC44NDEtMTYuODg5LTcuOTE4LTM1LjIzOSUyMDEuMDk2LTQ3LjA3NyUyMDcuODU3JTIwNS45MDQlMjAxLjkxOSUyMDIxLjY2NyUyMDExLjA4NiUyMDI5LjI3NSUyMDE2LjQ0Ni43OTEuNTQ4LTcuMDMtMi4xMDEtNi4yMzgtMS41NTMlMjA2LjYzNCUyMDQuNDc3JTIwMTMuNTcyJTIwOC4xMzIlMjAyMC4yNjclMjA3LjkxOCUyMDUuOTY0LS4xODMlMjAxNi4wMDctNC4zODUlMjAxNi45OC0xMS44NzglMjAzLjAxMy41NzklMjA0LjEzOSUyMDYuNDg3JTIwMy44MzQlMjA2Ljk0NC4zOTYtLjQyNi44NTItNC45MzQlMjAyLjk4Mi02LjAzJTIwMCUyMDAtLjg4MiUyMDIuNTI4LS42MzklMjAzLjE5OCUyMDEuMTI2LTMuNTYzJTIwOS44MjktNC4xMTIlMjA4LjQyOSUyMDQuNjkuMzk2LS4zOTYlMjAxLjEyNi0zLjAxNSUyMDEuMTI2LTMuMDE1LTEuMDM1JTIwNi41MTclMjAxLjQ5MSUyMDkuMTM2JTIwMy45NTYlMjA5LjU2MyUyMDEuMTU2LS4yMTMlMjAzLjQwOC00LjM1NSUyMDMuNjgyLTYuOTQ0YTcuNjklMjA3LjY5JTIwMCUyMDAlMjAxLTEuMDY1JTIwMS42NDV6JyUyMGZpbGw9JyUyMzRlMzUyZScvJTNlJTNjcGF0aCUyMGQ9J00xMy45NDQlMjAyMC4xYzMuMTk1LTEuOTglMjAxNC4zNjQtNi44NTIlMjAyNS45MjctNC41NjhDMjguNDklMjAxNC45MjMlMjAxMy45NDQlMjAyMC4xJTIwMTMuOTQ0JTIwMjAuMXptMzQuMzI2LTMuMjg5YTI0LjMzJTIwMjQuMzMlMjAwJTIwMCUyMDAtMi42NDgtMS4wOTYlMjA0NS4zJTIwNDUuMyUyMDAlMjAwJTIwMSUyMDkuNTU1JTIwOC40MDZjLS45NzQtMS43MDYtMi4xMy00Ljc1MS00LjE5OS03LjM0LS44ODMtLjAwOS0xLjc5NS0uMDA5LTIuNzA4LjAyMXYuMDA5eiclMjBmaWxsPSclMjMyZDFlMWMnLyUzZSUzY3BhdGglMjBkPSdNNTEuMjIyJTIwNDIuOTkzYy0xMy4wMjQlMjAxLjc2Ni0xOC42ODUtMS45OC0xOC4xNjctMi41MjglMjA1Ljg0MyUyMDMuMTA2JTIwMTYuNDMzJTIwMi40MDYlMjAxOC4xNjclMjAyLjUyOHptLTIxLjYwNi04LjgzMmMtLjUxNy41MTglMjA1LjE0MyUyMDQuMjk0JTIwMTguMTY3JTIwMi41MjgtMS43MzUtLjEyMi0xMi4yOTQuNTc5LTE4LjE2Ny0yLjUyOHptMjguMzAxJTIwMi44MDJjLjYwOS4yNDQlMjAzLjQzOS0yLjcxMS0uMjc0LTkuMTY3LjEyMi44ODMlMjAyLjQwNCUyMDYuMTIxLjI3NCUyMDkuMTY3em0yMy4zNDEtNS4xNDdjLTYuMDI1LTkuMzUtMTUuNjcyLTEwLjE3Mi0xNy44MzMtOS41NjMlMjAxMS43NCUyMDEuNTg0JTIwMTYuNDk0JTIwOC44MTElMjAxNy44MjYlMjA5LjU2M2guMDA2eiclMjBmaWxsPSclMjM2ZDRkNDInLyUzZSUzY3BhdGglMjBkPSdNODAuMjg0JTIwNTIuNTg3Yy41NzgtLjY0JTIwMi4wMDgtMS4xODglMjAyLjU4Ny0xLjQ2Mi0uMzM1LS4wMy0xLjMwOS4yNDQtMi4yNTIuNTQ4bC41NDgtLjczMWMtMi40OTUtLjQyNi00Ljk5MS0zLjA0Ni0zLjk1Ni05LjU2MyUyMDAlMjAwLS43NjElMjAyLjYxOS0xLjEyNiUyMDMuMDE1JTIwMS40LTguODMyLTcuMzAzLTguMjUzLTguNDI5LTQuNjktLjI0My0uNjcuNjM5LTMuMTk4LjYzOS0zLjE5OC0yLjEzJTIwMS4wOTYtMi41ODclMjA1LjYwNC0yLjk4MiUyMDYuMDMuMzA0LS40NTctLjg1Mi02LjM2NS0zLjgzNC02Ljk0NC0uMDYyLjQzMi0uMTU0Ljg2LS4yNzQlMjAxLjI3OS0xLjgyNiUyMDcuODg4LTUuNjkxJTIwNi4xODItOS42MTYlMjAxMS42OTVhMjguNDclMjAyOC40NyUyMDAlMjAwJTIwMSUyMDMuNDA4LTIuMDQxYy0yLjQzNCUyMDEuODU4LTQuOTkxJTIwNC41NjgtNS44NDMlMjA3LjU4My4zMjQtLjQyMy42Ny0uODMlMjAxLjAzNS0xLjIxOC00LjY1NiUyMDkuMDQ1JTIwNC40NzMlMjA4Ljk1NCUyMDExLjY1NSUyMDUuMjk5JTIwNS40MTctMi43NzElMjAxLjQlMjA0LjY5JTIwMy43MTMlMjAzLjQ0MSUyMDMuMzE3LTEuNzY2JTIwNC44MDgtNC41OTklMjA1LjY5MS02LjE4MmwtMS4wNjUlMjAyLjI1NGMyLjEzLTEuNjE0JTIwMi45MjEtNC40MTYlMjA0LjYyNi00Ljc1MS0uNTE3LTEuMjE4LS43NjEtMi4xNjItLjM5Ni0yLjQwNi41NDgtLjMzNSUyMDIuMjgyJTIwMS4zNCUyMDMuMDEzJTIwMS43MzYuMTgzLS4xMjIuMTUyLS41MTguMTUyLS41MTguMzYyLjUzNS44MjcuOTklMjAxLjM2OSUyMDEuMzQuMTUyLS4zNjUuMzY1LS4xNTIuMzk2LS4xNTJhMy4zMSUyMDMuMzElMjAwJTIwMCUyMDElMjAxLjc5NS41NzljLS4yMzUtLjM1Ni0uNTIyLS42NzQtLjg1Mi0uOTQ0eiclMjBmaWxsPSclMjNlNDUzMjUnLyUzZSUzY3BhdGglMjBkPSdNNzQuODM3JTIwMzkuODU3Yy0yLjI1Mi0yLjEzMi00Ljg5OS0xLjI3OS02LjA1Ni4xODMuOTA3LTIuNzExJTIwNC44MzktMy4wNzYlMjA2LjA1Ni0uMTgzem0tNS4wMjElMjAxNS4zNDljLS4zNjUlMjAxLjAzNS0zLjA3MyUyMDQuMjY0LTQuODk5JTIwNC40NDYuODE2LjQ1NyUyMDQuNzQ3LTEuNzA2JTIwNC44OTktNC40NDZ6bS0xMS40NDItNS44MTdjLS43My43MzEtMi4zNDMlMjAxLjkxOS0zLjg2NSUyMDIuMTAxLjQ1Ni4yODMlMjAyLjU1Ni0uMjQ0JTIwMy44NjUtMi4xMDF6bS01Ljk5NSUyMDUuNjA0Yy0uMzk2LjUxOC0xLjMwOSUyMDEuMjc5LTIuMzc0JTIwMS4xODguMzY1LjMzNSUyMDEuNzY1LjI0NCUyMDIuMzc0LTEuMTg4em03LjM2NC0xLjA2NmMtLjM5Ni41MTgtMS4zMDklMjAxLjI3OS0yLjM3NCUyMDEuMTg4LjM2NS4zMzUlMjAxLjc2NS4yNDQlMjAyLjM3NC0xLjE4OHptNy44NTEtLjM5NmMtLjM5Ni41MTgtMS4zMDklMjAxLjI3OS0yLjM3NCUyMDEuMTg4LjM2NS4zMzUlMjAxLjc2NS4yNDQlMjAyLjM3NC0xLjE4OHptLTcuMDklMjAyLjQ5N2MtLjUxNyUyMDEuMDY2LTUuMjM0JTIwMy45OS03LjMzNCUyMDMuMjU5Ljg1Mi45NzQlMjA2Ljg0NyUyMDAlMjA3LjMzNC0zLjI1di0uMDA5eiclMjBmaWxsPSclMjNiZTNhMjYnLyUzZSUzY3BhdGglMjBkPSdNNzQuNTkzJTIwNDQuOTQzYy0xLjcwNCUyMDEuMDM1LTMuNzQzJTIwMS4xMjctNS4yMzQtLjA5MS4zMDQuOTc0JTIwMy4yODclMjAyLjE5MyUyMDUuMjM0LjA5MXonJTIwZmlsbD0nJTIzZWQ2ZDIzJy8lM2UlM2NwYXRoJTIwZD0nTTEzLjQ4OCUyMDE5LjQ5MUM3LjA5NyUyMDEyLjA5MS45NSUyMDIuMjg0Ljk1Ljg1M2MwLS4wMDklMjA0LjkzJTIwNy45MDklMjAxMi41MzglMjAxOC42Mzh6bTMuMTk1LTQuODQyYy0uMDYxLS45MTQtNC4yMy03LjAwNS04LjM5OS0xMS41NDIlMjA1LjA4MiUyMDYuNjM5JTIwOC4zOTklMjAxMS41MzMlMjA4LjM5OSUyMDExLjUzM3YuMDA5eiclMjBmaWxsPSclMjM0ZTM1MmUnLyUzZSUzY3BhdGglMjBkPSdNNzguOTc1JTIwNTMuMTM1YTQuMTElMjA0LjExJTIwMCUyMDAlMjAxLTEuMzY5LTEuMzRzLjAzLjM5Ni0uMTUyLjUxOGMtLjczLS4zOTYtMi40NjUtMi4wNzEtMy4wMTMtMS43MzYtLjM2NS4yNDQtLjEyMiUyMDEuMTg4LjM5NiUyMDIuNDA2bDIuNzA4JTIwNS43NTZjLjI3NC42NCUyMDEuOTc4JTIwMi44NjMlMjAxLjgyNi01Ljc1Ni0uMDMtLjAzLS4yNS0uMjQ0LS4zOTYuMTUyem0tNy4xNTEtNy42NDRhMy4zNSUyMDMuMzUlMjAwJTIwMSUyMDAlMjAwLTYuNyUyMDMuMzUlMjAzLjM1JTIwMCUyMDElMjAwJTIwMCUyMDYuN3onJTIwZmlsbD0nJTIzMDAwJy8lM2UlM2NwYXRoJTIwZD0nTTcyLjg4OSUyMDQwLjIwMWMuMDYxLjQyNi0uNDI2Ljg1My0xLjA2NS45NDRzLTEuMjQ4LS4xODMtMS4zMDgtLjU3OS40MjYtLjg1MyUyMDEuMDY1LS45NDQlMjAxLjIxNy4xNDMlMjAxLjMwOC41Nzl6bS45NDMlMjAzLjcxNWEyLjM4JTIwMi4zOCUyMDAlMjAwJTIwMS0xLjQ5MS44MjJjLS4wNjEtLjA2MS0uMTUyLS4wNjEtLjI3NC0uMDYxLS4wNzkuMDA1LS4xNTUuMDM3LS4yMTMuMDkxLS42NDguMDE0LTEuMjg4LS4xNDQtMS44NTYtLjQ1N2EyLjM4JTIwMi4zOCUyMDAlMjAwJTIwMCUyMDEuODI2LjcwMWMuMDg3LjA2Ni4xOTUuMDk5LjMwNC4wOTEuMTIyLS4wMy4yMTMtLjA2MS4yNDMtLjE1Mi43OTEtLjE4MyUyMDEuNDMtLjU4OCUyMDEuNDYxLTEuMDQ1di4wMDl6JyUyMGZpbGw9JyUyM2ZmZicvJTNlJTNjL3N2ZyUzZVwiIiwiPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IGlzQ2xpZW50IH0gZnJvbSAnQHZ1ZXVzZS9zaGFyZWQnO1xuaW1wb3J0IHsgdXNlU1NSQ29udGV4dCB9IGZyb20gJ3Z1ZSc7XG5pbXBvcnQgZmFsbGJhY2sgZnJvbSAnQC9jb21wb25lbnRzL2xvZ29zL2xvZ28uc3ZnJztcbmltcG9ydCB7IHRyYW5zZm9ybUNhc2UgfSBmcm9tICdAL3V0aWxzL2hlbHBlcnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEV4dGVybmFsTGlua3Mge1xuICBkcmF3ZXI/OiBzdHJpbmc7XG4gIGFwcD86IHN0cmluZztcbiAgd2Vic2l0ZT86IHN0cmluZztcbiAgYWJvdXQ/OiBzdHJpbmc7XG4gIGVtcHR5U2NyZWVuPzogc3RyaW5nO1xuICBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvcHMge1xuICB0ZXh0PzogYm9vbGVhbjtcbiAgYnJhbmNoPzogJ2RldmVsb3AnIHwgJ21haW4nIHwgc3RyaW5nO1xuICBsb2dvPzoga2V5b2YgRXh0ZXJuYWxMaW5rcztcbiAgc2l6ZT86IHN0cmluZyB8IG51bWJlcjsgLy8gaW4gcmVtc1xuICB1bmlxdWVLZXk/OiBzdHJpbmcgfCBudW1iZXI7XG59XG5cbmRlZmluZU9wdGlvbnMoe1xuICBuYW1lOiAnUnVpTG9nbycsXG59KTtcblxuY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgdGV4dDogZmFsc2UsXG4gIGJyYW5jaDogJ2RldmVsb3AnLFxuICBsb2dvOiB1bmRlZmluZWQsXG4gIHNpemU6IDMsXG4gIHVuaXF1ZUtleTogdW5kZWZpbmVkLFxufSk7XG5cbmNvbnN0IGN1c3RvbUltYWdlUmVmID0gcmVmPEhUTUxJbWFnZUVsZW1lbnQ+KCk7XG5jb25zdCBlcnJvciA9IHJlZihmYWxzZSk7XG5jb25zdCBkZWNvZGluZyA9IHJlZighIXByb3BzLmxvZ28pO1xuY29uc3QgcGVuZGluZ1NvdXJjZXMgPSByZWYoZmFsc2UpO1xuY29uc3QgYXBwTmFtZSA9ICdyb3RraSc7XG5jb25zdCBlbXB0eUxpbmtzOiBFeHRlcm5hbExpbmtzID0ge1xuICBhcHA6IHVuZGVmaW5lZCxcbiAgd2Vic2l0ZTogdW5kZWZpbmVkLFxuICBhYm91dDogdW5kZWZpbmVkLFxuICBlbXB0eVNjcmVlbjogdW5kZWZpbmVkLFxufTtcbmNvbnN0IGV4dGVybmFsU291cmNlcyA9IHJlZihlbXB0eUxpbmtzKTtcblxuY29uc3QgZXh0ZXJuYWxTb3VyY2UgPSBjb21wdXRlZCgoKSA9PiB7XG4gIGNvbnN0IHNvdXJjZXMgPSBnZXQoZXh0ZXJuYWxTb3VyY2VzKTtcbiAgY29uc3QgeyBsb2dvIH0gPSBwcm9wcztcbiAgaWYgKCFsb2dvIHx8ICFzb3VyY2VzW2xvZ29dKSB7XG4gICAgc2V0KGRlY29kaW5nLCBnZXQocGVuZGluZ1NvdXJjZXMpKTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgY29uc3QgdXJsID0gYGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9yb3RraS9kYXRhLyR7cHJvcHMuYnJhbmNofS9hc3NldHMvaWNvbnMvJHtzb3VyY2VzW2xvZ29dfWA7XG5cbiAgaWYgKHByb3BzLnVuaXF1ZUtleSAhPT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiBgJHt1cmx9P2tleT0ke3Byb3BzLnVuaXF1ZUtleX1gO1xuXG4gIHJldHVybiB1cmw7XG59KTtcblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hTb3VyY2VzKCkge1xuICBpZiAoIXByb3BzLmxvZ28pXG4gICAgcmV0dXJuO1xuXG4gIHNldChwZW5kaW5nU291cmNlcywgdHJ1ZSk7XG4gIHRyeSB7XG4gICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCB1c2VGZXRjaDxzdHJpbmc+KFxuICAgICAgYGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9yb3RraS9kYXRhLyR7cHJvcHMuYnJhbmNofS9jb25zdGFudHMvYXNzZXQtbWFwcGluZ3MuanNvbmAsXG4gICAgKTtcblxuICAgIGNvbnN0IGxpbmtzID0gdHJhbnNmb3JtQ2FzZShKU09OLnBhcnNlKGdldChkYXRhKSA/PyAnbnVsbCcpPy5sb2dvLCAnY2FtZWxDYXNlJyk7XG5cbiAgICBpZiAobGlua3MpXG4gICAgICBzZXQoZXh0ZXJuYWxTb3VyY2VzLCBsaW5rcyk7XG4gIH1cbiAgY2F0Y2gge31cbiAgc2V0KHBlbmRpbmdTb3VyY2VzLCBmYWxzZSk7XG59XG5cbndhdGNoKFxuICAoKSA9PiBnZXQoY3VzdG9tSW1hZ2VSZWYpPy5jb21wbGV0ZSxcbiAgKGNvbXBsZXRlKSA9PiB7XG4gICAgaWYgKGNvbXBsZXRlKSB7XG4gICAgICBnZXQoY3VzdG9tSW1hZ2VSZWYpXG4gICAgICAgID8uZGVjb2RlKClcbiAgICAgICAgLmNhdGNoKCgpID0+IHNldChlcnJvciwgdHJ1ZSkpXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHNldChkZWNvZGluZywgZmFsc2UpKTtcbiAgICB9XG4gIH0sXG4pO1xuXG53YXRjaEVmZmVjdChmZXRjaFNvdXJjZXMpO1xuXG5pZiAoIWlzQ2xpZW50KVxuICB1c2VTU1JDb250ZXh0KCk7XG5cbm9uU2VydmVyUHJlZmV0Y2goYXN5bmMgKCkgPT4ge1xuICBhd2FpdCBmZXRjaFNvdXJjZXMoKTtcbn0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZ2FwLXgtNCBmbGV4IGl0ZW1zLWNlbnRlciByZWxhdGl2ZVwiXG4gICAgOnN0eWxlPVwieyBoZWlnaHQ6IGAke3NpemV9cmVtYCB9XCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIHYtaWY9XCIhZXh0ZXJuYWxTb3VyY2UgJiYgZGVjb2RpbmdcIlxuICAgICAgY2xhc3M9XCJoLWZ1bGwgdHJhbnNpdGlvbiBkZWxheS0wIG9wYWNpdHktMFwiXG4gICAgICA6c3R5bGU9XCJ7IHdpZHRoOiBgJHtzaXplfXJlbWAgfVwiXG4gICAgLz5cbiAgICA8aW1nXG4gICAgICB2LWVsc2UtaWY9XCJleHRlcm5hbFNvdXJjZSAmJiAoIWVycm9yIHx8IGRlY29kaW5nKVwiXG4gICAgICByZWY9XCJjdXN0b21JbWFnZVJlZlwiXG4gICAgICA6c3JjPVwiZXh0ZXJuYWxTb3VyY2VcIlxuICAgICAgOmFsdD1cImFwcE5hbWVcIlxuICAgICAgZGF0YS1pbWFnZT1cImN1c3RvbVwiXG4gICAgICBjbGFzcz1cImgtZnVsbCB0cmFuc2l0aW9uIGVhc2Utb3V0IGR1cmF0aW9uLTIwMCBkZWxheS0xMDBcIlxuICAgICAgOnN0eWxlPVwieyB3aWR0aDogYCR7c2l6ZX1yZW1gIH1cIlxuICAgICAgQGVycm9yPVwiZXJyb3IgPSB0cnVlXCJcbiAgICAvPlxuICAgIDxpbWdcbiAgICAgIHYtZWxzZVxuICAgICAgOnNyYz1cImZhbGxiYWNrXCJcbiAgICAgIDphbHQ9XCJhcHBOYW1lXCJcbiAgICAgIGRhdGEtaW1hZ2U9XCJmYWxsYmFja1wiXG4gICAgICBjbGFzcz1cImgtZnVsbCB0cmFuc2l0aW9uIGVhc2Utb3V0IGR1cmF0aW9uLTIwMCBkZWxheS0xMDBcIlxuICAgICAgOnN0eWxlPVwieyB3aWR0aDogYCR7c2l6ZX1yZW1gIH1cIlxuICAgIC8+XG4gICAgPGRpdlxuICAgICAgdi1pZj1cInRleHRcIlxuICAgICAgY2xhc3M9XCJ0ZXh0LWg0IHRleHQtcnVpLXByaW1hcnkgZGFyazp0ZXh0LXdoaXRlXCJcbiAgICA+XG4gICAgICB7eyBhcHBOYW1lIH19XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbiIsIjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XG5pbXBvcnQgdHlwZSB7IENvbnRleHRDb2xvcnNUeXBlIH0gZnJvbSAnQC9jb25zdHMvY29sb3JzJztcbmltcG9ydCB0eXBlIHsgUnVpSWNvbnMgfSBmcm9tICdAL2ljb25zJztcbmltcG9ydCB7IGxvZ2ljQW5kLCBsb2dpY09yIH0gZnJvbSAnQHZ1ZXVzZS9tYXRoJztcbmltcG9ydCBSdWlJY29uIGZyb20gJ0AvY29tcG9uZW50cy9pY29ucy9SdWlJY29uLnZ1ZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvcHMge1xuICB0ZXh0Pzogc3RyaW5nIHwgbnVsbDtcbiAgaWNvbj86IFJ1aUljb25zIHwgbnVsbDtcbiAgbW9kZWxWYWx1ZT86IGJvb2xlYW47XG4gIGRvdD86IGJvb2xlYW47XG4gIGxlZnQ/OiBib29sZWFuO1xuICBvZmZzZXRYPzogc3RyaW5nIHwgbnVtYmVyO1xuICBvZmZzZXRZPzogc3RyaW5nIHwgbnVtYmVyO1xuICBwbGFjZW1lbnQ/OiAndG9wJyB8ICdjZW50ZXInIHwgJ2JvdHRvbSc7XG4gIHNpemU/OiAnc20nIHwgJ21kJyB8ICdsZyc7XG4gIHJvdW5kZWQ/OiAnc20nIHwgJ21kJyB8ICdsZycgfCAnZnVsbCc7XG4gIGNvbG9yPzogJ2RlZmF1bHQnIHwgQ29udGV4dENvbG9yc1R5cGU7XG59XG5cbmRlZmluZU9wdGlvbnMoe1xuICBuYW1lOiAnUnVpQmFkZ2UnLFxufSk7XG5cbmNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gIHRleHQ6IG51bGwsXG4gIGljb246IG51bGwsXG4gIG1vZGVsVmFsdWU6IHRydWUsXG4gIGRvdDogZmFsc2UsXG4gIHBsYWNlbWVudDogJ3RvcCcsXG4gIGxlZnQ6IGZhbHNlLFxuICBzaXplOiAnbWQnLFxuICByb3VuZGVkOiAnZnVsbCcsXG4gIGNvbG9yOiAncHJpbWFyeScsXG4gIG9mZnNldFg6IDAsXG4gIG9mZnNldFk6IDAsXG59KTtcblxuY29uc3Qgc2xvdHMgPSB1c2VTbG90cygpO1xuXG5jb25zdCB7IG1vZGVsVmFsdWUsIG9mZnNldFgsIG9mZnNldFksIGljb24sIHRleHQgfSA9IHRvUmVmcyhwcm9wcyk7XG5cbmNvbnN0IGhhc0ljb24gPSBsb2dpY09yKGljb24sIHNsb3RzLmljb24pO1xuXG5jb25zdCBoYXNUZXh0ID0gbG9naWNPcih0ZXh0LCBzbG90cy5iYWRnZSk7XG5cbmNvbnN0IGhhc0ljb25BbmRUZXh0ID0gbG9naWNBbmQoaGFzSWNvbiwgaGFzVGV4dCk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IDpjbGFzcz1cIiRzdHlsZS53cmFwcGVyXCI+XG4gICAgPHNsb3QgLz5cbiAgICA8VHJhbnNpdGlvblxuICAgICAgYXBwZWFyXG4gICAgICBlbnRlci1hY3RpdmUtY2xhc3M9XCJ0cmFuc2Zvcm0gZWFzZS1vdXQgZHVyYXRpb24tMjAwXCJcbiAgICAgIGVudGVyLWZyb20tY2xhc3M9XCJzY2FsZS0wXCJcbiAgICAgIGVudGVyLXRvLWNsYXNzPVwic2NhbGUtMTAwXCJcbiAgICAgIGxlYXZlLWFjdGl2ZS1jbGFzcz1cInRyYW5zZm9ybSBlYXNlLWluIGR1cmF0aW9uLTE1MFwiXG4gICAgICBsZWF2ZS1mcm9tLWNsYXNzPVwic2NhbGUtMTAwXCJcbiAgICAgIGxlYXZlLXRvLWNsYXNzPVwic2NhbGUtMFwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICB2LWlmPVwibW9kZWxWYWx1ZVwiXG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAkc3R5bGUuYmFkZ2UsXG4gICAgICAgICAgJHN0eWxlW2NvbG9yID8/ICdwcmltYXJ5J10sXG4gICAgICAgICAgJHN0eWxlW2BwbGFjZW1lbnRfXyR7cGxhY2VtZW50fWBdLFxuICAgICAgICAgICRzdHlsZVtgcm91bmRlZF9fJHtyb3VuZGVkfWBdLFxuICAgICAgICAgICRzdHlsZVtgc2l6ZV9fJHtzaXplfWBdLFxuICAgICAgICAgIHsgWyRzdHlsZS5sZWZ0XTogbGVmdCwgWyRzdHlsZS5kb3RdOiBkb3QgfSxcbiAgICAgICAgXVwiXG4gICAgICAgIGFyaWEtYXRvbWljPVwidHJ1ZVwiXG4gICAgICAgIGFyaWEtbGFiZWw9XCJCYWRnZVwiXG4gICAgICAgIGFyaWEtbGl2ZT1cInBvbGl0ZVwiXG4gICAgICAgIHJvbGU9XCJzdGF0dXNcIlxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIHYtaWY9XCIhZG90XCJcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAkc3R5bGUuY29udGVudCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgWyRzdHlsZS50ZXh0X2ljb25dOiBoYXNJY29uQW5kVGV4dCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2xvdCBuYW1lPVwiYmFkZ2VcIj5cbiAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICB7eyB0ZXh0IH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9zbG90PlxuICAgICAgICAgIDxzbG90IG5hbWU9XCJpY29uXCI+XG4gICAgICAgICAgICA8UnVpSWNvblxuICAgICAgICAgICAgICB2LWlmPVwiaWNvblwiXG4gICAgICAgICAgICAgIDpuYW1lPVwiaWNvblwiXG4gICAgICAgICAgICAgIHNpemU9XCIxNlwiXG4gICAgICAgICAgICAgIDpjbGFzcz1cInsgJ21sLTAuNSc6IGhhc1RleHQgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvc2xvdD5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9UcmFuc2l0aW9uPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBsYW5nPVwic2Nzc1wiIG1vZHVsZT5cbkB1c2UgJ0Avc3R5bGVzL2NvbG9ycy5zY3NzJyBhcyBjO1xuQHVzZSAnc2FzczpsaXN0JztcblxuJGJvcmRlcnM6IGZ1bGwsIHNtLCBtZCwgbGc7XG4kc2l6ZXM6IHNtLCBtZCwgbGc7XG5cbi53cmFwcGVyIHtcbiAgQGFwcGx5IHJlbGF0aXZlIGlubGluZS1ibG9jaztcblxuICAuYmFkZ2Uge1xuICAgIEBhcHBseSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LXhzIGZvbnQtbWVkaXVtIGFic29sdXRlO1xuICAgIEBhcHBseSBiZy10cmFuc3BhcmVudCB0ZXh0LXJ1aS1saWdodC10ZXh0O1xuXG4gICAgbGVmdDogY2FsYygxMDAlIC0gMC41cmVtICsgdi1iaW5kKG9mZnNldFgpICogMC4wNjI1cmVtKTtcblxuICAgIC5jb250ZW50IHtcbiAgICAgIEBhcHBseSBmbGV4IGl0ZW1zLWNlbnRlciBweC0xO1xuXG4gICAgICAmLnRleHRfaWNvbiB7XG4gICAgICAgIEBhcHBseSBweC0yO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBlYWNoICRjb2xvciBpbiBjLiRjb250ZXh0LWNvbG9ycyB7XG4gICAgICAmLiN7JGNvbG9yfSB7XG4gICAgICAgIEBhcHBseSB0ZXh0LXdoaXRlIGJnLXJ1aS0jeyRjb2xvcn07XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGVhY2ggJGJvcmRlciBpbiAkYm9yZGVycyB7XG4gICAgICAmLnJvdW5kZWRfXyN7JGJvcmRlcn0ge1xuICAgICAgICBAYXBwbHkgcm91bmRlZC0jeyRib3JkZXJ9O1xuICAgICAgfVxuICAgIH1cblxuICAgICYuc2l6ZV9fc20ge1xuICAgICAgQGFwcGx5IG1pbi1oLVsxLjI1cmVtXSBtaW4tdy1bMS4yNXJlbV07XG5cbiAgICAgICYubGVmdCB7XG4gICAgICAgIGxlZnQ6IGNhbGMoLTAuOTVyZW0gKyB2LWJpbmQob2Zmc2V0WCkgKiAwLjA2MjVyZW0pO1xuICAgICAgfVxuXG4gICAgICAmLnBsYWNlbWVudF9fY2VudGVyIHtcbiAgICAgICAgdG9wOiBjYWxjKDUwJSAtIDAuNjVyZW0gLSB2LWJpbmQob2Zmc2V0WSkgKiAwLjA2MjVyZW0pO1xuICAgICAgfVxuICAgIH1cblxuICAgICYuc2l6ZV9fbWQge1xuICAgICAgQGFwcGx5IG1pbi1oLVsxLjVyZW1dIG1pbi13LVsxLjVyZW1dO1xuXG4gICAgICAmLmxlZnQge1xuICAgICAgICBsZWZ0OiBjYWxjKC0xLjA1cmVtICsgdi1iaW5kKG9mZnNldFgpICogMC4wNjI1cmVtKTtcbiAgICAgIH1cblxuICAgICAgJi5wbGFjZW1lbnRfX2NlbnRlciB7XG4gICAgICAgIHRvcDogY2FsYyg1MCUgLSAwLjc1cmVtIC0gdi1iaW5kKG9mZnNldFkpICogMC4wNjI1cmVtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLnNpemVfX2xnIHtcbiAgICAgIEBhcHBseSBtaW4taC1bMS43NXJlbV0gbWluLXctWzEuNzVyZW1dO1xuXG4gICAgICAmLmxlZnQge1xuICAgICAgICBsZWZ0OiBjYWxjKC0xLjE1cmVtICsgdi1iaW5kKG9mZnNldFgpICogMC4wNjI1cmVtKTtcbiAgICAgIH1cblxuICAgICAgJi5wbGFjZW1lbnRfX2NlbnRlciB7XG4gICAgICAgIHRvcDogY2FsYyg1MCUgLSAwLjg1cmVtIC0gdi1iaW5kKG9mZnNldFkpICogMC4wNjI1cmVtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLnBsYWNlbWVudF9fdG9wIHtcbiAgICAgIGJvdHRvbTogY2FsYygxMDAlIC0gMC41cmVtIC0gdi1iaW5kKG9mZnNldFkpICogMC4wNjI1cmVtKTtcbiAgICB9XG5cbiAgICAmLnBsYWNlbWVudF9fYm90dG9tIHtcbiAgICAgIHRvcDogY2FsYygxMDAlIC0gMC41cmVtIC0gdi1iaW5kKG9mZnNldFkpICogMC4wNjI1cmVtKTtcbiAgICB9XG5cbiAgICAmLmRvdCB7XG4gICAgICBsZWZ0OiBjYWxjKDEwMCUgKyAwLjEyNXJlbSArIHYtYmluZChvZmZzZXRYKSAqIDAuMDYyNXJlbSk7XG5cbiAgICAgICYuZGVmYXVsdCB7XG4gICAgICAgIEBhcHBseSBiZy1ncmF5LTUwMDtcbiAgICAgIH1cblxuICAgICAgJi5zaXplX19zbSB7XG4gICAgICAgIEBhcHBseSBtaW4tdy1bMC4zNzVyZW1dIG1pbi1oLVswLjM3NXJlbV07XG4gICAgICB9XG5cbiAgICAgICYuc2l6ZV9fbWQge1xuICAgICAgICBAYXBwbHkgbWluLXctWzAuNXJlbV0gbWluLWgtWzAuNXJlbV07XG4gICAgICB9XG5cbiAgICAgICYuc2l6ZV9fbGcge1xuICAgICAgICBAYXBwbHkgbWluLXctWzAuNjI1cmVtXSBtaW4taC1bMC42MjVyZW1dO1xuICAgICAgfVxuXG4gICAgICAmLmxlZnQge1xuICAgICAgICBsZWZ0OiBjYWxjKC0wLjY1cmVtICsgdi1iaW5kKG9mZnNldFgpICogMC4wNjI1cmVtKTtcbiAgICAgIH1cblxuICAgICAgJi5wbGFjZW1lbnRfX3RvcCB7XG4gICAgICAgIGJvdHRvbTogY2FsYygxMDAlICsgMC4yNXJlbSAtIHYtYmluZChvZmZzZXRZKSAqIDAuMDYyNXJlbSk7XG4gICAgICB9XG5cbiAgICAgICYucGxhY2VtZW50X19jZW50ZXIge1xuICAgICAgICB0b3A6IGNhbGMoNTAlIC0gMC4yNXJlbSAtIHYtYmluZChvZmZzZXRZKSAqIDAuMDYyNXJlbSk7XG4gICAgICB9XG5cbiAgICAgICYucGxhY2VtZW50X19ib3R0b20ge1xuICAgICAgICB0b3A6IGNhbGMoMTAwJSArIDAuMjVyZW0gLSB2LWJpbmQob2Zmc2V0WSkgKiAwLjA2MjVyZW0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG46Z2xvYmFsKC5kYXJrKSB7XG4gIC53cmFwcGVyIHtcbiAgICAuYmFkZ2Uge1xuICAgICAgQGFwcGx5IHRleHQtcnVpLXRleHQ7XG5cbiAgICAgIEBlYWNoICRjb2xvciBpbiBjLiRjb250ZXh0LWNvbG9ycyB7XG4gICAgICAgIEBpZiBsaXN0LmluZGV4KCh3YXJuaW5nLCBzdWNjZXNzLCBpbmZvKSwgJGNvbG9yKSB7XG4gICAgICAgICAgJi4jeyRjb2xvcn0ge1xuICAgICAgICAgICAgQGFwcGx5IHRleHQtcnVpLWxpZ2h0LXRleHQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbmV4cG9ydCBpbnRlcmZhY2UgRGlhbG9nUHJvcHMge1xuICBtb2RlbFZhbHVlPzogYm9vbGVhbjtcbiAgcGVyc2lzdGVudD86IGJvb2xlYW47XG4gIHdpZHRoPzogc3RyaW5nIHwgbnVtYmVyO1xuICBtYXhXaWR0aD86IHN0cmluZyB8IG51bWJlcjtcbiAgYm90dG9tU2hlZXQ/OiBib29sZWFuO1xuICBjb250ZW50Q2xhc3M/OiBhbnk7XG4gIHpJbmRleD86IHN0cmluZyB8IG51bWJlcjtcbn1cblxuZGVmaW5lT3B0aW9ucyh7XG4gIG5hbWU6ICdSdWlEaWFsb2cnLFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxufSk7XG5cbmNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPERpYWxvZ1Byb3BzPigpLCB7XG4gIG1vZGVsVmFsdWU6IGZhbHNlLFxuICBwZXJzaXN0ZW50OiBmYWxzZSxcbiAgd2lkdGg6ICc5OCUnLFxuICBib3R0b21TaGVldDogZmFsc2UsXG4gIGNvbnRlbnRDbGFzczogJycsXG4gIHpJbmRleDogOTk5OSxcbn0pO1xuXG5jb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8e1xuICAoZTogJ3VwZGF0ZTptb2RlbC12YWx1ZScsIHZhbHVlOiBib29sZWFuKTogdm9pZDtcbiAgKGU6ICdjbG9zZWQnKTogdm9pZDtcbiAgKGU6ICdjbGljazpvdXRzaWRlJyk6IHZvaWQ7XG4gIChlOiAnY2xpY2s6ZXNjJyk6IHZvaWQ7XG59PigpO1xuXG5jb25zdCB7XG4gIG1vZGVsVmFsdWUsXG4gIHdpZHRoLFxuICBtYXhXaWR0aCxcbiAgYm90dG9tU2hlZXQsXG59ID0gdG9SZWZzKHByb3BzKTtcblxuY29uc3QgaW50ZXJuYWxWYWx1ZSA9IHJlZjxib29sZWFuPihmYWxzZSk7XG5jb25zdCBpc09wZW4gPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuXG53YXRjaEltbWVkaWF0ZShtb2RlbFZhbHVlLCAodmFsdWUpID0+IHtcbiAgbmV4dFRpY2soKCkgPT4ge1xuICAgIHNldChpbnRlcm5hbFZhbHVlLCB2YWx1ZSk7XG4gIH0pO1xufSk7XG5cbndhdGNoKGludGVybmFsVmFsdWUsICh2YWx1ZSkgPT4ge1xuICBpZiAodmFsdWUpIHtcbiAgICBuZXh0VGljaygoKSA9PiB7XG4gICAgICBzZXQoaXNPcGVuLCB2YWx1ZSk7XG4gICAgfSk7XG4gIH1cbiAgZWxzZSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBzZXQoaXNPcGVuLCB2YWx1ZSk7XG4gICAgfSwgMTAwKTtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIG9uVXBkYXRlTW9kZWxWYWx1ZSh2YWx1ZTogYm9vbGVhbikge1xuICBlbWl0KCd1cGRhdGU6bW9kZWwtdmFsdWUnLCB2YWx1ZSk7XG5cbiAgaWYgKCF2YWx1ZSlcbiAgICBlbWl0KCdjbG9zZWQnKTtcbn1cblxud2F0Y2goaXNPcGVuLCAoaXNPcGVuKSA9PiB7XG4gIGlmIChpc09wZW4pIHtcbiAgICBvblVwZGF0ZU1vZGVsVmFsdWUoaXNPcGVuKTtcbiAgICBzZXQoaW50ZXJuYWxWYWx1ZSwgaXNPcGVuKTtcbiAgfVxuICBlbHNlIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIG9uVXBkYXRlTW9kZWxWYWx1ZShpc09wZW4pO1xuICAgICAgc2V0KGludGVybmFsVmFsdWUsIGlzT3Blbik7XG4gICAgfSwgMTAwKTtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIGNsb3NlKCkge1xuICBzZXQoaXNPcGVuLCBmYWxzZSk7XG59XG5cbmNvbnN0IHN0eWxlID0gY29tcHV0ZWQoKCkgPT4gKHtcbiAgd2lkdGg6IHRyYW5zZm9ybVByb3BzVW5pdChnZXQod2lkdGgpKSxcbiAgbWF4V2lkdGg6IHRyYW5zZm9ybVByb3BzVW5pdChnZXQobWF4V2lkdGgpKSxcbn0pKTtcblxuY29uc3QgY29udGVudFJlZiA9IHJlZjxIVE1MRGl2RWxlbWVudD4oKTtcblxud2F0Y2goY29udGVudFJlZiwgKGNvbnRlbnRSZWYpID0+IHtcbiAgaWYgKGNvbnRlbnRSZWYpIHtcbiAgICBuZXh0VGljaygoKSA9PiB7XG4gICAgICBjb250ZW50UmVmLmZvY3VzKCk7XG4gICAgfSk7XG4gIH1cbn0pO1xuXG5jb25zdCBkaWFsb2dBdHRycyA9IGNvbXB1dGVkKCgpID0+ICh7XG4gIG9uQ2xpY2s6ICgpID0+IHtcbiAgICBjb25zdCBuZXdWYWx1ZSA9ICFnZXQoaW50ZXJuYWxWYWx1ZSk7XG4gICAgc2V0KGludGVybmFsVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICBvblVwZGF0ZU1vZGVsVmFsdWUobmV3VmFsdWUpO1xuICB9LFxufSkpO1xuXG5jb25zdCBjb250ZW50VHJhbnNpdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgaWYgKCFnZXQoYm90dG9tU2hlZXQpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVudGVyRnJvbUNsYXNzOiAnb3BhY2l0eS0wIHNjYWxlLTc1JyxcbiAgICAgIGVudGVyQWN0aXZlQ2xhc3M6ICdlYXNlLW91dCBkdXJhdGlvbi0xNTAnLFxuICAgICAgZW50ZXJUb0NsYXNzOiAnb3BhY2l0eS0xMDAgc2NhbGUtMTAwJyxcbiAgICAgIGxlYXZlRnJvbUNsYXNzOiAnb3BhY2l0eS0xMDAgc2NhbGUtMTAwJyxcbiAgICAgIGxlYXZlQWN0aXZlQ2xhc3M6ICdlYXNlLWluIGR1cmF0aW9uLTEwMCcsXG4gICAgICBsZWF2ZVRvQ2xhc3M6ICdvcGFjaXR5LTAgc2NhbGUtNzUnLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGVudGVyRnJvbUNsYXNzOiAndHJhbnNsYXRlLXktZnVsbCcsXG4gICAgZW50ZXJBY3RpdmVDbGFzczogJ2Vhc2Utb3V0IGR1cmF0aW9uLTE1MCcsXG4gICAgZW50ZXJUb0NsYXNzOiAndHJhbnNsYXRlLXktMCcsXG4gICAgbGVhdmVGcm9tQ2xhc3M6ICd0cmFuc2xhdGUteS0wJyxcbiAgICBsZWF2ZUFjdGl2ZUNsYXNzOiAnZWFzZS1pbiBkdXJhdGlvbi0xMDAnLFxuICAgIGxlYXZlVG9DbGFzczogJ3RyYW5zbGF0ZS15LWZ1bGwnLFxuICB9O1xufSk7XG5cbmZ1bmN0aW9uIG9uRXNjQ2xpY2soKSB7XG4gIGlmICghcHJvcHMucGVyc2lzdGVudCkge1xuICAgIGNsb3NlKCk7XG4gIH1cbiAgZW1pdCgnY2xpY2s6ZXNjJyk7XG59XG5cbmZ1bmN0aW9uIG9uQ2xpY2tPdXRzaWRlKCkge1xuICBpZiAoIXByb3BzLnBlcnNpc3RlbnQpIHtcbiAgICBjbG9zZSgpO1xuICB9XG4gIGVtaXQoJ2NsaWNrOm91dHNpZGUnKTtcbn1cbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgdi1iaW5kPVwiZ2V0Um9vdEF0dHJzKCRhdHRycylcIj5cbiAgICA8c2xvdFxuICAgICAgbmFtZT1cImFjdGl2YXRvclwiXG4gICAgICB2LWJpbmQ9XCJ7IGF0dHJzOiBkaWFsb2dBdHRycywgaXNPcGVuIH1cIlxuICAgIC8+XG4gICAgPFRlbGVwb3J0IHRvPVwiYm9keVwiPlxuICAgICAgPGRpdlxuICAgICAgICB2LWlmPVwiaXNPcGVuIHx8IGludGVybmFsVmFsdWVcIlxuICAgICAgICA6Y2xhc3M9XCIkc3R5bGUud3JhcHBlclwiXG4gICAgICAgIDpzdHlsZT1cInsgekluZGV4IH1cIlxuICAgICAgICByb2xlPVwiZGlhbG9nXCJcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgdi1iaW5kPVwiZ2V0Tm9uUm9vdEF0dHJzKCRhdHRycylcIlxuICAgICAgICBAa2V5ZG93bi5lc2Muc3RvcD1cIm9uRXNjQ2xpY2soKVwiXG4gICAgICA+XG4gICAgICAgIDxUcmFuc2l0aW9uXG4gICAgICAgICAgZW50ZXItZnJvbS1jbGFzcz1cIm9wYWNpdHktMFwiXG4gICAgICAgICAgZW50ZXItYWN0aXZlLWNsYXNzPVwiZWFzZS1vdXQgZHVyYXRpb24tMTUwXCJcbiAgICAgICAgICBlbnRlci10by1jbGFzcz1cIm9wYWNpdHktMTAwXCJcbiAgICAgICAgICBsZWF2ZS1mcm9tLWNsYXNzPVwib3BhY2l0eS0xMDBcIlxuICAgICAgICAgIGxlYXZlLWFjdGl2ZS1jbGFzcz1cImVhc2UtaW4gZHVyYXRpb24tMTAwXCJcbiAgICAgICAgICBsZWF2ZS10by1jbGFzcz1cIm9wYWNpdHktMFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICB2LWlmPVwiaXNPcGVuICYmIGludGVybmFsVmFsdWVcIlxuICAgICAgICAgICAgOmNsYXNzPVwiJHN0eWxlLm92ZXJsYXlcIlxuICAgICAgICAgICAgQGNsaWNrLnN0b3A9XCJvbkNsaWNrT3V0c2lkZSgpXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L1RyYW5zaXRpb24+XG4gICAgICAgIDxUcmFuc2l0aW9uIHYtYmluZD1cImNvbnRlbnRUcmFuc2l0aW9uXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgdi1pZj1cImlzT3BlbiAmJiBpbnRlcm5hbFZhbHVlXCJcbiAgICAgICAgICAgIHJlZj1cImNvbnRlbnRSZWZcIlxuICAgICAgICAgICAgOnN0eWxlPVwic3R5bGVcIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgIDpjbGFzcz1cIlskc3R5bGUuY29udGVudCwgY29udGVudENsYXNzLCB7IFskc3R5bGUuY2VudGVyXTogIWJvdHRvbVNoZWV0IH1dXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c2xvdCB2LWJpbmQ9XCJ7IGlzT3BlbiwgY2xvc2UgfVwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvVHJhbnNpdGlvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvVGVsZXBvcnQ+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgbW9kdWxlPlxuLndyYXBwZXIge1xuICBAYXBwbHkgZml4ZWQgdy1mdWxsIGgtZnVsbCB0b3AtMCBsZWZ0LTA7XG59XG5cbi5vdmVybGF5IHtcbiAgQGFwcGx5IGFic29sdXRlIHRvcC0wIGxlZnQtMCB3LWZ1bGwgaC1mdWxsIGJhY2tkcm9wLWJsdXIgYmctcnVpLWdyZXktNTAwL1swLjVdO1xufVxuXG4uY29udGVudCB7XG4gIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTEvMiBib3R0b20tMCB0cmFuc2Zvcm0gLXRyYW5zbGF0ZS14LTEvMiBvdXRsaW5lLW5vbmUgb3ZlcmZsb3cteS1hdXRvIG1heC1oLVs5MHZoXTtcblxuICAmLmNlbnRlciB7XG4gICAgQGFwcGx5IHRvcC0xLzIgLXRyYW5zbGF0ZS15LTEvMiBib3R0b20tYXV0bztcbiAgfVxufVxuXG46Z2xvYmFsKC5kYXJrKSB7XG4gIC5vdmVybGF5IHtcbiAgICBAYXBwbHkgYmctYmxhY2svWzAuNV07XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuaW1wb3J0IFJ1aURpYWxvZyBmcm9tICdAL2NvbXBvbmVudHMvb3ZlcmxheXMvZGlhbG9nL1J1aURpYWxvZy52dWUnO1xuXG4vLyBrZWVwIHRoZXNlIHByb3BzIGluIHN5bmMgd2l0aCBEaWFsb2cgcHJvcHNcbmV4cG9ydCBpbnRlcmZhY2UgQm90dG9tU2hlZXRQcm9wcyB7XG4gIG1vZGVsVmFsdWU/OiBib29sZWFuO1xuICBwZXJzaXN0ZW50PzogYm9vbGVhbjtcbiAgd2lkdGg/OiBzdHJpbmcgfCBudW1iZXI7XG4gIG1heFdpZHRoPzogc3RyaW5nIHwgbnVtYmVyO1xufVxuXG5kZWZpbmVPcHRpb25zKHtcbiAgbmFtZTogJ1J1aUJvdHRvbVNoZWV0JyxcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbn0pO1xuXG5jb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxCb3R0b21TaGVldFByb3BzPigpLCB7XG4gIG1vZGVsVmFsdWU6IGZhbHNlLFxuICBwZXJzaXN0ZW50OiBmYWxzZSxcbn0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPFJ1aURpYWxvZ1xuICAgIGJvdHRvbS1zaGVldFxuICAgIHYtYmluZD1cInsgLi4ucHJvcHMsIC4uLiRhdHRycyB9XCJcbiAgPlxuICAgIDx0ZW1wbGF0ZVxuICAgICAgdi1mb3I9XCJzbG90IGluIE9iamVjdC5rZXlzKCRzbG90cylcIlxuICAgICAgI1tzbG90XT1cInNjb3BlXCJcbiAgICA+XG4gICAgICA8c2xvdFxuICAgICAgICB2LWJpbmQ9XCJzY29wZVwiXG4gICAgICAgIDpuYW1lPVwic2xvdFwiXG4gICAgICAvPlxuICAgIDwvdGVtcGxhdGU+XG4gIDwvUnVpRGlhbG9nPlxuPC90ZW1wbGF0ZT5cbiIsIjxzY3JpcHQgc2V0dXAgbGFuZz0ndHMnPlxuaW1wb3J0IHR5cGUgeyBNYXliZUVsZW1lbnQgfSBmcm9tICdAdnVldXNlL2NvcmUnO1xuaW1wb3J0IHsgdHlwZSBSZWYsIHJlZiB9IGZyb20gJ3Z1ZSc7XG5pbXBvcnQgeyBnZXRSb290QXR0cnMgfSBmcm9tICdAL3V0aWxzL2hlbHBlcnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5hdmlnYXRpb25EcmF3ZXJQcm9wcyB7XG4gIG1vZGVsVmFsdWU/OiBib29sZWFuO1xuICB0ZW1wb3Jhcnk/OiBib29sZWFuO1xuICBzdGF0ZWxlc3M/OiBib29sZWFuO1xuICB3aWR0aD86IHN0cmluZyB8IG51bWJlcjtcbiAgbWluaVZhcmlhbnQ/OiBib29sZWFuO1xuICBvdmVybGF5PzogYm9vbGVhbjtcbiAgcG9zaXRpb24/OiAnbGVmdCcgfCAncmlnaHQnO1xuICBjb250ZW50Q2xhc3M/OiBzdHJpbmcgfCBvYmplY3QgfCBzdHJpbmdbXTtcbn1cblxuZGVmaW5lT3B0aW9ucyh7XG4gIG5hbWU6ICdSdWlOYXZpZ2F0aW9uRHJhd2VyJyxcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbn0pO1xuXG5jb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxOYXZpZ2F0aW9uRHJhd2VyUHJvcHM+KCksIHtcbiAgbW9kZWxWYWx1ZTogZmFsc2UsXG4gIHRlbXBvcmFyeTogZmFsc2UsXG4gIHN0YXRlbGVzczogZmFsc2UsXG4gIHdpZHRoOiAzNjAsXG4gIG1pbmlWYXJpYW50OiBmYWxzZSxcbiAgb3ZlcmxheTogZmFsc2UsXG4gIHBvc2l0aW9uOiAnbGVmdCcsXG4gIGNvbnRlbnRDbGFzczogJycsXG59KTtcblxuY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPHtcbiAgKGU6ICd1cGRhdGU6bW9kZWwtdmFsdWUnLCB2YWx1ZTogYm9vbGVhbik6IHZvaWQ7XG4gIChlOiAnY2xvc2VkJyk6IHZvaWQ7XG59PigpO1xuXG5jb25zdCB7XG4gIG1vZGVsVmFsdWUsXG4gIHBvc2l0aW9uLFxuICBtaW5pVmFyaWFudCxcbiAgd2lkdGgsXG59ID0gdG9SZWZzKHByb3BzKTtcblxuZnVuY3Rpb24gb25VcGRhdGVNb2RlbFZhbHVlKHZhbHVlOiBib29sZWFuKSB7XG4gIGVtaXQoJ3VwZGF0ZTptb2RlbC12YWx1ZScsIHZhbHVlKTtcblxuICBpZiAoIXZhbHVlKVxuICAgIGVtaXQoJ2Nsb3NlZCcpO1xufVxuXG5jb25zdCBpbnRlcm5hbFZhbHVlOiBSZWY8Ym9vbGVhbj4gPSByZWYoZmFsc2UpO1xuXG53YXRjaEltbWVkaWF0ZShtb2RlbFZhbHVlLCAodmFsdWUpID0+IHtcbiAgc2V0KGludGVybmFsVmFsdWUsIHZhbHVlKTtcbn0pO1xuXG53YXRjaChpbnRlcm5hbFZhbHVlLCAodmFsdWUpID0+IHtcbiAgb25VcGRhdGVNb2RlbFZhbHVlKHZhbHVlKTtcbn0pO1xuXG5mdW5jdGlvbiBjbG9zZSgpIHtcbiAgc2V0KGludGVybmFsVmFsdWUsIGZhbHNlKTtcbn1cblxuY29uc3Qgc3R5bGUgPSBjb21wdXRlZCgoKSA9PiAoe1xuICB3aWR0aDogdHJhbnNmb3JtUHJvcHNVbml0KGdldCh3aWR0aCkpLFxufSkpO1xuXG5jb25zdCBjb250ZW50OiBSZWY8TWF5YmVFbGVtZW50IHwgbnVsbD4gPSByZWYobnVsbCk7XG5cbm9uQ2xpY2tPdXRzaWRlKGNvbnRlbnQsICgpID0+IHtcbiAgaWYgKGdldChpbnRlcm5hbFZhbHVlKSAmJiBwcm9wcy50ZW1wb3JhcnkgJiYgIXByb3BzLnN0YXRlbGVzcykge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY2xvc2UoKTtcbiAgICB9LCA1MCk7XG4gIH1cbn0pO1xuXG5jb25zdCBhY3RpdmF0b3JBdHRycyA9IGNvbXB1dGVkKCgpID0+ICh7XG4gIG9uQ2xpY2s6ICgpID0+IHtcbiAgICBjb25zdCBuZXdWYWx1ZSA9ICFnZXQoaW50ZXJuYWxWYWx1ZSk7XG4gICAgc2V0KGludGVybmFsVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICBvblVwZGF0ZU1vZGVsVmFsdWUobmV3VmFsdWUpO1xuICB9LFxufSkpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdj5cbiAgICA8c2xvdFxuICAgICAgbmFtZT1cImFjdGl2YXRvclwiXG4gICAgICB2LWJpbmQ9XCJ7IG9wZW46IGludGVybmFsVmFsdWUsIGF0dHJzOiBhY3RpdmF0b3JBdHRycyB9XCJcbiAgICAvPlxuICAgIDxUZWxlcG9ydCB0bz1cImJvZHlcIj5cbiAgICAgIDxUcmFuc2l0aW9uXG4gICAgICAgIHYtaWY9XCJvdmVybGF5XCJcbiAgICAgICAgZW50ZXItZnJvbS1jbGFzcz1cIm9wYWNpdHktMFwiXG4gICAgICAgIGVudGVyLWFjdGl2ZS1jbGFzcz1cImVhc2Utb3V0IGR1cmF0aW9uLTE1MFwiXG4gICAgICAgIGVudGVyLXRvLWNsYXNzPVwib3BhY2l0eS0xMDBcIlxuICAgICAgICBsZWF2ZS1mcm9tLWNsYXNzPVwib3BhY2l0eS0xMDBcIlxuICAgICAgICBsZWF2ZS1hY3RpdmUtY2xhc3M9XCJlYXNlLWluIGR1cmF0aW9uLTEwMFwiXG4gICAgICAgIGxlYXZlLXRvLWNsYXNzPVwib3BhY2l0eS0wXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIHYtaWY9XCJpbnRlcm5hbFZhbHVlXCJcbiAgICAgICAgICA6Y2xhc3M9XCIkc3R5bGUub3ZlcmxheVwiXG4gICAgICAgICAgQGNsaWNrLnN0b3A9XCJjbG9zZSgpXCJcbiAgICAgICAgLz5cbiAgICAgIDwvVHJhbnNpdGlvbj5cbiAgICAgIDxhc2lkZVxuICAgICAgICByZWY9XCJjb250ZW50XCJcbiAgICAgICAgOnN0eWxlPVwic3R5bGVcIlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJHN0eWxlLmNvbnRlbnQsXG4gICAgICAgICAgY29udGVudENsYXNzLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFskc3R5bGUudmlzaWJsZV06IGludGVybmFsVmFsdWUsXG4gICAgICAgICAgICBbJHN0eWxlW3Bvc2l0aW9uXV06IHBvc2l0aW9uLFxuICAgICAgICAgICAgWyRzdHlsZS5taW5pXTogbWluaVZhcmlhbnQsXG4gICAgICAgICAgICBbJHN0eWxlLnRlbXBvcmFyeV06IHRlbXBvcmFyeSxcbiAgICAgICAgICAgIFskc3R5bGVbJ3dpdGgtb3ZlcmxheSddXTogb3ZlcmxheSxcbiAgICAgICAgICB9LFxuICAgICAgICBdXCJcbiAgICAgICAgdi1iaW5kPVwiZ2V0Um9vdEF0dHJzKCRhdHRycylcIlxuICAgICAgPlxuICAgICAgICA8c2xvdCB2LWJpbmQ9XCJ7IGF0dHJzOiBhY3RpdmF0b3JBdHRycywgY2xvc2UgfVwiIC8+XG4gICAgICA8L2FzaWRlPlxuICAgIDwvVGVsZXBvcnQ+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgbW9kdWxlPlxuLm92ZXJsYXkge1xuICBAYXBwbHkgYWJzb2x1dGUgdG9wLTAgbGVmdC0wIHctZnVsbCBoLWZ1bGwgYmFja2Ryb3AtYmx1ciBiZy1ydWktZ3JleS01MDAvWzAuNV0gei1bMTAwMDBdO1xufVxuXG4uY29udGVudCB7XG4gIEBhcHBseSB0cmFuc2l0aW9uLWFsbCB0b3AtMCBoLWZ1bGwgZml4ZWQgdGV4dC1ydWktdGV4dCBiZy13aGl0ZSB6LVs3XTtcblxuICAmLmxlZnQge1xuICAgIEBhcHBseSAtdHJhbnNsYXRlLXgtZnVsbCBsZWZ0LTA7XG4gIH1cblxuICAmLnJpZ2h0IHtcbiAgICBAYXBwbHkgdHJhbnNsYXRlLXgtZnVsbCByaWdodC0wO1xuICB9XG5cbiAgJi53aXRoLW92ZXJsYXkge1xuICAgIEBhcHBseSB6LVsxMDAwMF07XG4gIH1cblxuICAmLnZpc2libGUge1xuICAgIEBhcHBseSB0cmFuc2xhdGUteC0wO1xuICB9XG5cbiAgJi50ZW1wb3Jhcnkge1xuICAgICYudmlzaWJsZSB7XG4gICAgICBAYXBwbHkgc2hhZG93LTU7XG4gICAgfVxuICB9XG5cbiAgJi5taW5pIHtcbiAgICBAYXBwbHkgdHJhbnNsYXRlLXgtMDtcblxuICAgICY6bm90KC52aXNpYmxlKSB7XG4gICAgICBAYXBwbHkgdy0xNCAjeyFpbXBvcnRhbnR9O1xuICAgIH1cbiAgfVxufVxuXG46Z2xvYmFsKC5kYXJrKSB7XG4gIC5vdmVybGF5IHtcbiAgICBAYXBwbHkgYmctYmxhY2svWzAuNV07XG4gIH1cblxuICAuY29udGVudCB7XG4gICAgQGFwcGx5IGJnLVsjMzYzNjM2XTtcbiAgfVxufVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz0ndHMnIHNldHVwPlxuZXhwb3J0IGludGVyZmFjZSBOb3RpZmljYXRpb25Qcm9wcyB7XG4gIG1vZGVsVmFsdWU6IGJvb2xlYW47XG4gIHRpbWVvdXQ6IG51bWJlcjtcbiAgd2lkdGg/OiBudW1iZXIgfCBzdHJpbmc7XG4gIHRoZW1lPzogJ2xpZ2h0JyB8ICdkYXJrJztcbn1cblxuZGVmaW5lT3B0aW9ucyh7XG4gIG5hbWU6ICdSdWlOb3RpZmljYXRpb24nLFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxufSk7XG5cbmNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKFxuICBkZWZpbmVQcm9wczxOb3RpZmljYXRpb25Qcm9wcz4oKSxcbiAge1xuICAgIHdpZHRoOiA0MDAsXG4gICAgdGhlbWU6IHVuZGVmaW5lZCxcbiAgfSxcbik7XG5cbmNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czx7XG4gIChlOiAndXBkYXRlOm1vZGVsLXZhbHVlJywgdmFsdWU6IGJvb2xlYW4pOiB2b2lkO1xufT4oKTtcblxuY29uc3QgeyB0aW1lb3V0LCBtb2RlbFZhbHVlLCB3aWR0aCB9ID0gdG9SZWZzKHByb3BzKTtcblxuY29uc3Qgc3R5bGUgPSBjb21wdXRlZCgoKSA9PiAoe1xuICB3aWR0aDogdHJhbnNmb3JtUHJvcHNVbml0KGdldCh3aWR0aCkpLFxufSkpO1xuXG5mdW5jdGlvbiBkaXNtaXNzKCkge1xuICBpZiAoZ2V0KHRpbWVvdXQpIDwgMClcbiAgICByZXR1cm47XG5cbiAgZW1pdCgndXBkYXRlOm1vZGVsLXZhbHVlJywgZmFsc2UpO1xufVxuXG53YXRjaEltbWVkaWF0ZShtb2RlbFZhbHVlLCAoZGlzcGxheSkgPT4ge1xuICBpZiAoIWRpc3BsYXkpXG4gICAgcmV0dXJuO1xuXG4gIGNvbnN0IGR1cmF0aW9uID0gZ2V0KHRpbWVvdXQpO1xuICBpZiAoZHVyYXRpb24gPiAwKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBlbWl0KCd1cGRhdGU6bW9kZWwtdmFsdWUnLCBmYWxzZSk7XG4gICAgfSwgZHVyYXRpb24pO1xuICB9XG59KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxUZWxlcG9ydCB0bz1cImJvZHlcIj5cbiAgICA8VHJhbnNpdGlvblxuICAgICAgZW50ZXItZnJvbS1jbGFzcz1cIm9wYWNpdHktMFwiXG4gICAgICBlbnRlci1hY3RpdmUtY2xhc3M9XCJlYXNlLW91dCBkdXJhdGlvbi0xNTBcIlxuICAgICAgZW50ZXItdG8tY2xhc3M9XCJvcGFjaXR5LTEwMFwiXG4gICAgICBsZWF2ZS1mcm9tLWNsYXNzPVwib3BhY2l0eS0xMDBcIlxuICAgICAgbGVhdmUtYWN0aXZlLWNsYXNzPVwiZWFzZS1pbiBkdXJhdGlvbi0xMDBcIlxuICAgICAgbGVhdmUtdG8tY2xhc3M9XCJvcGFjaXR5LTBcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgdi1pZj1cIm1vZGVsVmFsdWVcIlxuICAgICAgICBjbGFzcz1cInRvcC0yIHJpZ2h0LTIgZml4ZWQgZHJvcC1zaGFkb3ctbGcgcm91bmRlZC1zbSB6LTUwXCJcbiAgICAgICAgOmNsYXNzPVwie1xuICAgICAgICAgICdiZy13aGl0ZSBkYXJrOmJnLVsjMzYzNjM2XSc6ICF0aGVtZSxcbiAgICAgICAgICAnYmctd2hpdGUgdGV4dC1ydWktbGlnaHQtdGV4dCc6IHRoZW1lID09PSAnbGlnaHQnLFxuICAgICAgICAgICdiZy1bIzM2MzYzNl0gdGV4dC1ydWktZGFyay10ZXh0JzogdGhlbWUgPT09ICdkYXJrJyxcbiAgICAgICAgfVwiXG4gICAgICAgIDpzdHlsZT1cInN0eWxlXCJcbiAgICAgICAgdi1iaW5kPVwiJGF0dHJzXCJcbiAgICAgICAgQGNsaWNrPVwiZGlzbWlzcygpXCJcbiAgICAgID5cbiAgICAgICAgPHNsb3QgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvVHJhbnNpdGlvbj5cbiAgPC9UZWxlcG9ydD5cbjwvdGVtcGxhdGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuaW1wb3J0IFJ1aUJ1dHRvbiBmcm9tICdAL2NvbXBvbmVudHMvYnV0dG9ucy9idXR0b24vUnVpQnV0dG9uLnZ1ZSc7XG5pbXBvcnQgUnVpSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvaWNvbnMvUnVpSWNvbi52dWUnO1xuaW1wb3J0IFJ1aVByb2dyZXNzIGZyb20gJ0AvY29tcG9uZW50cy9wcm9ncmVzcy9SdWlQcm9ncmVzcy52dWUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BzIHtcbiAgcGFnZXM6IG51bWJlcjtcbiAgbW9kZWxWYWx1ZT86IG51bWJlcjtcbiAgdmFyaWFudD86ICdudW1lcmljJyB8ICdidWxsZXQnIHwgJ3Byb2dyZXNzJyB8ICdwaWxsJztcbiAgYXJyb3dCdXR0b25zPzogYm9vbGVhbjtcbiAgaGlkZUJ1dHRvbnM/OiBib29sZWFuO1xufVxuXG5kZWZpbmVPcHRpb25zKHtcbiAgbmFtZTogJ1J1aUZvb3RlclN0ZXBwZXInLFxufSk7XG5cbmNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gIG1vZGVsVmFsdWU6IDEsXG4gIHZhcmlhbnQ6ICdudW1lcmljJyxcbiAgYXJyb3dCdXR0b25zOiBmYWxzZSxcbiAgaGlkZUJ1dHRvbnM6IGZhbHNlLFxufSk7XG5cbmNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czx7XG4gIChldmVudDogJ3VwZGF0ZTptb2RlbFZhbHVlJywgbW9kZWxWYWx1ZTogbnVtYmVyKTogdm9pZDtcbn0+KCk7XG5cbmNvbnN0IHsgbW9kZWxWYWx1ZSwgcGFnZXMgfSA9IHRvUmVmcyhwcm9wcyk7XG5cbmZ1bmN0aW9uIG9uQ2hhbmdlKGRlbHRhOiBudW1iZXIpIHtcbiAgZW1pdCgndXBkYXRlOm1vZGVsVmFsdWUnLCBnZXQobW9kZWxWYWx1ZSkgKyBkZWx0YSk7XG59XG5cbmZ1bmN0aW9uIG9uUHJldigpIHtcbiAgY29uc3QgdmFsdWUgPSBnZXQobW9kZWxWYWx1ZSk7XG4gIGlmICh2YWx1ZSlcbiAgICBvbkNoYW5nZSgtMSk7XG59XG5cbmZ1bmN0aW9uIG9uTmV4dCgpIHtcbiAgY29uc3QgdmFsdWUgPSBnZXQobW9kZWxWYWx1ZSk7XG4gIGlmICh2YWx1ZSA8IGdldChwYWdlcykpXG4gICAgb25DaGFuZ2UoMSk7XG59XG5cbmZ1bmN0aW9uIG9uQ2xpY2soaW5kZXg6IG51bWJlcikge1xuICBvbkNoYW5nZShpbmRleCAtIGdldChtb2RlbFZhbHVlKSk7XG59XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IDpjbGFzcz1cIlskc3R5bGVbJ2Zvb3Rlci1zdGVwcGVyJ10sICRzdHlsZVt2YXJpYW50ID8/ICcnXV1cIj5cbiAgICA8dGVtcGxhdGUgdi1pZj1cInZhcmlhbnQgPT09ICdwaWxsJ1wiPlxuICAgICAgPGRpdiA6Y2xhc3M9XCIkc3R5bGUucGlsbHNcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICB2LWZvcj1cImkgaW4gcGFnZXNcIlxuICAgICAgICAgIDprZXk9XCJpXCJcbiAgICAgICAgICA6Y2xhc3M9XCJbJHN0eWxlLnBpbGwsIHsgWyRzdHlsZS5hY3RpdmVdOiBtb2RlbFZhbHVlID09PSBpIH1dXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvdGVtcGxhdGU+XG4gICAgPHRlbXBsYXRlIHYtZWxzZT5cbiAgICAgIDxSdWlCdXR0b25cbiAgICAgICAgdi1pZj1cIiFoaWRlQnV0dG9uc1wiXG4gICAgICAgIDpjbGFzcz1cInsgWyRzdHlsZS5hcnJvd19fYnV0dG9uXTogYXJyb3dCdXR0b25zIH1cIlxuICAgICAgICA6ZGlzYWJsZWQ9XCJtb2RlbFZhbHVlIDw9IDFcIlxuICAgICAgICA6aWNvbj1cImFycm93QnV0dG9uc1wiXG4gICAgICAgIDp2YXJpYW50PVwiYXJyb3dCdXR0b25zID8gJ291dGxpbmVkJyA6ICd0ZXh0J1wiXG4gICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgIEBjbGljaz1cIm9uUHJldigpXCJcbiAgICAgID5cbiAgICAgICAgPHRlbXBsYXRlXG4gICAgICAgICAgdi1pZj1cIiFhcnJvd0J1dHRvbnNcIlxuICAgICAgICAgICNwcmVwZW5kXG4gICAgICAgID5cbiAgICAgICAgICA8UnVpSWNvblxuICAgICAgICAgICAgOnNpemU9XCIxOFwiXG4gICAgICAgICAgICBuYW1lPVwibHUtY2hldnJvbi1sZWZ0XCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICA8c3BhbiB2LWlmPVwiIWFycm93QnV0dG9uc1wiPkJhY2s8L3NwYW4+XG4gICAgICAgIDxSdWlJY29uXG4gICAgICAgICAgdi1lbHNlXG4gICAgICAgICAgOnNpemU9XCIyNFwiXG4gICAgICAgICAgbmFtZT1cImx1LWFycm93LWxlZnRcIlxuICAgICAgICAvPlxuICAgICAgPC9SdWlCdXR0b24+XG4gICAgICA8c3BhblxuICAgICAgICB2LWlmPVwidmFyaWFudCA9PT0gJ251bWVyaWMnXCJcbiAgICAgICAgOmNsYXNzPVwiJHN0eWxlLm51bWVyaWNcIlxuICAgICAgPlxuICAgICAgICB7eyBtb2RlbFZhbHVlIH19L3t7IHBhZ2VzIH19XG4gICAgICA8L3NwYW4+XG4gICAgICA8ZGl2XG4gICAgICAgIHYtZWxzZS1pZj1cInZhcmlhbnQgPT09ICdidWxsZXQnXCJcbiAgICAgICAgOmNsYXNzPVwiJHN0eWxlLmJ1bGxldHNcIlxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIHYtZm9yPVwiaSBpbiBwYWdlc1wiXG4gICAgICAgICAgOmtleT1cImlcIlxuICAgICAgICAgIDpjbGFzcz1cIlskc3R5bGUuYnVsbGV0LCB7IFskc3R5bGUuYWN0aXZlXTogbW9kZWxWYWx1ZSA9PT0gaSB9XVwiXG4gICAgICAgICAgQGNsaWNrPVwib25DbGljayhpKVwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxSdWlQcm9ncmVzc1xuICAgICAgICB2LWVsc2UtaWY9XCJ2YXJpYW50ID09PSAncHJvZ3Jlc3MnXCJcbiAgICAgICAgOmNsYXNzPVwiJHN0eWxlLnByb2dyZXNzXCJcbiAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgOnZhbHVlPVwiKG1vZGVsVmFsdWUgLyBwYWdlcykgKiAxMDBcIlxuICAgICAgLz5cbiAgICAgIDxSdWlCdXR0b25cbiAgICAgICAgdi1pZj1cIiFoaWRlQnV0dG9uc1wiXG4gICAgICAgIDpjbGFzcz1cInsgWyRzdHlsZS5hcnJvd19fYnV0dG9uXTogYXJyb3dCdXR0b25zIH1cIlxuICAgICAgICA6ZGlzYWJsZWQ9XCJtb2RlbFZhbHVlID49IHBhZ2VzXCJcbiAgICAgICAgOmljb249XCJhcnJvd0J1dHRvbnNcIlxuICAgICAgICA6dmFyaWFudD1cImFycm93QnV0dG9ucyA/ICdvdXRsaW5lZCcgOiAndGV4dCdcIlxuICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICBAY2xpY2s9XCJvbk5leHQoKVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIHYtaWY9XCIhYXJyb3dCdXR0b25zXCI+TmV4dDwvc3Bhbj5cbiAgICAgICAgPFJ1aUljb25cbiAgICAgICAgICB2LWVsc2VcbiAgICAgICAgICA6c2l6ZT1cIjI0XCJcbiAgICAgICAgICBuYW1lPVwibHUtYXJyb3ctcmlnaHRcIlxuICAgICAgICAvPlxuICAgICAgICA8dGVtcGxhdGVcbiAgICAgICAgICB2LWlmPVwiIWFycm93QnV0dG9uc1wiXG4gICAgICAgICAgI2FwcGVuZFxuICAgICAgICA+XG4gICAgICAgICAgPFJ1aUljb25cbiAgICAgICAgICAgIDpzaXplPVwiMThcIlxuICAgICAgICAgICAgbmFtZT1cImx1LWNoZXZyb24tcmlnaHRcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICA8L1J1aUJ1dHRvbj5cbiAgICA8L3RlbXBsYXRlPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBsYW5nPVwic2Nzc1wiIG1vZHVsZT5cbi5mb290ZXItc3RlcHBlciB7XG4gIEBhcHBseSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gZ2FwLXgtNCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0xNTA7XG5cbiAgLm51bWVyaWMge1xuICAgIEBhcHBseSB0ZXh0LXJ1aS10ZXh0O1xuICB9XG5cbiAgLmJ1bGxldHMsXG4gIC5waWxscyB7XG4gICAgQGFwcGx5IGZsZXg7XG5cbiAgICAuYnVsbGV0LFxuICAgIC5waWxsIHtcbiAgICAgIEBhcHBseSByb3VuZGVkLWZ1bGwgaC0yIGJnLWJsYWNrL1swLjI2XSB0cmFuc2l0aW9uLWNvbG9ycztcblxuICAgICAgJi5hY3RpdmUge1xuICAgICAgICBAYXBwbHkgYmctcnVpLXByaW1hcnk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmJ1bGxldCB7XG4gICAgICBAYXBwbHkgaG92ZXI6YmctcnVpLWdyZXktMzAwIGN1cnNvci1wb2ludGVyO1xuXG4gICAgICAmLmFjdGl2ZSB7XG4gICAgICAgIEBhcHBseSBob3ZlcjpiZy1ydWktcHJpbWFyeTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAucGlsbCB7XG4gICAgICBAYXBwbHkgYmctcnVpLWdyZXktMjAwO1xuICAgIH1cbiAgfVxuXG4gIC5idWxsZXRzIHtcbiAgICBAYXBwbHkgZ2FwLXgtMTtcblxuICAgIC5idWxsZXQge1xuICAgICAgQGFwcGx5IHctMjtcbiAgICB9XG4gIH1cblxuICAucGlsbHMge1xuICAgIEBhcHBseSB3LWZ1bGwgZ2FwLXgtMztcblxuICAgIC5waWxsIHtcbiAgICAgIEBhcHBseSB3LWZ1bGw7XG4gICAgfVxuICB9XG5cbiAgLnByb2dyZXNzIHtcbiAgICBAYXBwbHkgbWF4LXctWzYwJV07XG4gIH1cblxuICAuYXJyb3dfX2J1dHRvbiB7XG4gICAgQGFwcGx5IGJnLXdoaXRlIGRpc2FibGVkOmJnLXdoaXRlLzYwICN7IWltcG9ydGFudH07XG4gIH1cbn1cblxuOmdsb2JhbCguZGFyaykge1xuICAuZm9vdGVyLXN0ZXBwZXIge1xuICAgIC5idWxsZXRzLFxuICAgIC5waWxscyB7XG4gICAgICAuYnVsbGV0LFxuICAgICAgLnBpbGwge1xuICAgICAgICBAYXBwbHkgYmctcnVpLWdyZXktMzAwO1xuXG4gICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICBAYXBwbHkgYmctcnVpLXByaW1hcnk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmJ1bGxldCB7XG4gICAgICAgIEBhcHBseSBob3ZlcjpiZy1ydWktZ3JleS00MDA7XG5cbiAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgIEBhcHBseSBob3ZlcjpiZy1ydWktcHJpbWFyeTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC5idWxsZXRzIHtcbiAgICAgIC5idWxsZXQge1xuICAgICAgICBAYXBwbHkgYmctd2hpdGUvMzA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmFycm93X19idXR0b24ge1xuICAgICAgQGFwcGx5IGRpc2FibGVkOmJnLVtyZ2IoNTAsNTAsNTApXSAjeyFpbXBvcnRhbnR9O1xuICAgIH1cbiAgfVxufVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG5pbXBvcnQgUnVpSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvaWNvbnMvUnVpSWNvbi52dWUnO1xuaW1wb3J0IHsgU3RlcHBlclN0YXRlIH0gZnJvbSAnQC90eXBlcy9zdGVwcGVyJztcblxud2l0aERlZmF1bHRzKFxuICBkZWZpbmVQcm9wczx7XG4gICAgc3RhdGU/OiBTdGVwcGVyU3RhdGU7XG4gICAgaW5kZXg6IG51bWJlcjtcbiAgfT4oKSxcbiAge1xuICAgIHN0YXRlOiBTdGVwcGVyU3RhdGUuaW5hY3RpdmUsXG4gIH0sXG4pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPHNwYW4gOmNsYXNzPVwiWyRzdHlsZS5pbmRpY2F0b3IsICRzdHlsZVtzdGF0ZV1dXCI+XG4gICAgPHNwYW5cbiAgICAgIHYtaWY9XCJzdGF0ZSA9PT0gU3RlcHBlclN0YXRlLmluYWN0aXZlXCJcbiAgICAgIDpjbGFzcz1cIiRzdHlsZS50ZXh0XCJcbiAgICA+XG4gICAgICB7eyBpbmRleCB9fVxuICAgIDwvc3Bhbj5cbiAgICA8UnVpSWNvblxuICAgICAgdi1lbHNlLWlmPVwic3RhdGUgPT09IFN0ZXBwZXJTdGF0ZS5hY3RpdmVcIlxuICAgICAgbmFtZT1cImx1LWNoZWNrYm94LWJsYW5rLWNpcmNsZS1maWxsXCJcbiAgICAgIDpzaXplPVwiMjBcIlxuICAgIC8+XG4gICAgPFJ1aUljb25cbiAgICAgIHYtZWxzZS1pZj1cInN0YXRlID09PSBTdGVwcGVyU3RhdGUuZG9uZVwiXG4gICAgICA6Y2xhc3M9XCIkc3R5bGUudGV4dFwiXG4gICAgICA6c2l6ZT1cIjIwXCJcbiAgICAgIG5hbWU9XCJsdS1jaGVja1wiXG4gICAgLz5cbiAgICA8c3BhblxuICAgICAgdi1lbHNlXG4gICAgICA6Y2xhc3M9XCIkc3R5bGUudGV4dFwiXG4gICAgPlxuICAgICAge3sgaW5kZXggfX1cbiAgICA8L3NwYW4+XG4gIDwvc3Bhbj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBsYW5nPVwic2Nzc1wiIG1vZHVsZT5cbi5pbmRpY2F0b3Ige1xuICBAYXBwbHkgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtZnVsbCBoLTEwIHctMTAgc2hyaW5rLTAgYm9yZGVyIHRleHQtd2hpdGUgYmctcnVpLXByaW1hcnkgYm9yZGVyLXJ1aS1wcmltYXJ5O1xuXG4gICYuaW5hY3RpdmUge1xuICAgIEBhcHBseSB0ZXh0LXhzIGJnLXdoaXRlO1xuXG4gICAgLnRleHQge1xuICAgICAgQGFwcGx5IHRleHQtcnVpLXByaW1hcnk7XG4gICAgfVxuICB9XG59XG5cbjpnbG9iYWwoLmRhcmspIHtcbiAgLmluZGljYXRvciB7XG4gICAgQGFwcGx5IGJnLXdoaXRlIHRleHQtcnVpLXByaW1hcnk7XG5cbiAgICAmLmluYWN0aXZlIHtcbiAgICAgIEBhcHBseSB0ZXh0LXdoaXRlIGJvcmRlci13aGl0ZSBiZy1ydWktcHJpbWFyeTtcblxuICAgICAgLnRleHQge1xuICAgICAgICBAYXBwbHkgdGV4dC13aGl0ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuaW1wb3J0IFJ1aUljb24gZnJvbSAnQC9jb21wb25lbnRzL2ljb25zL1J1aUljb24udnVlJztcbmltcG9ydCB7IFN0ZXBwZXJTdGF0ZSB9IGZyb20gJ0AvdHlwZXMvc3RlcHBlcic7XG5cbndpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczx7XG4gIHN0YXRlPzogU3RlcHBlclN0YXRlO1xuICBpbmRleDogbnVtYmVyO1xufT4oKSwge1xuICBzdGF0ZTogU3RlcHBlclN0YXRlLmluYWN0aXZlLFxufSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8c3BhbiA6Y2xhc3M9XCJbJHN0eWxlLmluZGljYXRvciwgJHN0eWxlW3N0YXRlXV1cIj5cbiAgICA8c3BhblxuICAgICAgdi1pZj1cInN0YXRlID09PSBTdGVwcGVyU3RhdGUuaW5hY3RpdmUgfHwgc3RhdGUgPT09IFN0ZXBwZXJTdGF0ZS5hY3RpdmVcIlxuICAgICAgOmNsYXNzPVwiJHN0eWxlLnRleHRcIlxuICAgID5cbiAgICAgIHt7IGluZGV4IH19XG4gICAgPC9zcGFuPlxuICAgIDxSdWlJY29uXG4gICAgICB2LWVsc2UtaWY9XCJzdGF0ZSA9PT0gU3RlcHBlclN0YXRlLmRvbmVcIlxuICAgICAgOmNsYXNzPVwiJHN0eWxlLnRleHRcIlxuICAgICAgOnNpemU9XCIyMFwiXG4gICAgICBuYW1lPVwibHUtY2hlY2tcIlxuICAgIC8+XG4gICAgPFJ1aUljb25cbiAgICAgIHYtZWxzZS1pZj1cInN0YXRlID09PSBTdGVwcGVyU3RhdGUuc3VjY2Vzc1wiXG4gICAgICBuYW1lPVwibHUtY2lyY2xlLWNoZWNrXCJcbiAgICAvPlxuICAgIDxSdWlJY29uXG4gICAgICB2LWVsc2UtaWY9XCJzdGF0ZSA9PT0gU3RlcHBlclN0YXRlLmVycm9yXCJcbiAgICAgIG5hbWU9XCJsdS1jaXJjbGUtYWxlcnRcIlxuICAgIC8+XG4gICAgPFJ1aUljb25cbiAgICAgIHYtZWxzZS1pZj1cInN0YXRlID09PSBTdGVwcGVyU3RhdGUud2FybmluZ1wiXG4gICAgICBuYW1lPVwibHUtdHJpYW5nbGUtYWxlcnRcIlxuICAgIC8+XG4gICAgPFJ1aUljb25cbiAgICAgIHYtZWxzZS1pZj1cInN0YXRlID09PSBTdGVwcGVyU3RhdGUuaW5mb1wiXG4gICAgICBuYW1lPVwibHUtaW5mb1wiXG4gICAgLz5cbiAgPC9zcGFuPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgbW9kdWxlPlxuLmluZGljYXRvciB7XG4gIEBhcHBseSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1mdWxsIGgtNiB3LTY7XG5cbiAgLnRleHQge1xuICAgIEBhcHBseSB0ZXh0LXJ1aS1kYXJrLXRleHQ7XG4gIH1cblxuICAmLmluYWN0aXZlIHtcbiAgICBAYXBwbHkgYmctY3VycmVudCB0ZXh0LXhzO1xuICB9XG5cbiAgJi5hY3RpdmUsXG4gICYuZG9uZSB7XG4gICAgQGFwcGx5IGJnLXJ1aS1wcmltYXJ5IHJvdW5kZWQtZnVsbCB0ZXh0LXhzO1xuICB9XG59XG5cbjpnbG9iYWwoLmRhcmspIHtcbiAgLmluZGljYXRvciB7XG4gICAgJi5pbmFjdGl2ZSB7XG4gICAgICAudGV4dCB7XG4gICAgICAgIEBhcHBseSB0ZXh0LXJ1aS1saWdodC10ZXh0LXNlY29uZGFyeTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmFjdGl2ZSxcbiAgICAmLmRvbmUge1xuICAgICAgLnRleHQge1xuICAgICAgICBAYXBwbHkgdGV4dC1ydWktbGlnaHQtdGV4dDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuaW1wb3J0IFJ1aVByb2dyZXNzIGZyb20gJ0AvY29tcG9uZW50cy9wcm9ncmVzcy9SdWlQcm9ncmVzcy52dWUnO1xuaW1wb3J0IFJ1aVN0ZXBwZXJDdXN0b21JY29uIGZyb20gJ0AvY29tcG9uZW50cy9zdGVwcGVycy9SdWlTdGVwcGVyQ3VzdG9tSWNvbi52dWUnO1xuaW1wb3J0IFJ1aVN0ZXBwZXJJY29uIGZyb20gJ0AvY29tcG9uZW50cy9zdGVwcGVycy9SdWlTdGVwcGVySWNvbi52dWUnO1xuaW1wb3J0IHtcbiAgU3RlcHBlck9yaWVudGF0aW9uLFxuICBTdGVwcGVyU3RhdGUsXG4gIHR5cGUgU3RlcHBlclN0ZXAsXG59IGZyb20gJ0AvdHlwZXMvc3RlcHBlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvcHMge1xuICBzdGVwPzogbnVtYmVyO1xuICBzdGVwczogU3RlcHBlclN0ZXBbXTtcbiAgaWNvblRvcD86IGJvb2xlYW47XG4gIGN1c3RvbT86IGJvb2xlYW47XG4gIHRpdGxlQ2xhc3M/OiBzdHJpbmc7XG4gIHN1YnRpdGxlQ2xhc3M/OiBzdHJpbmc7XG4gIG9yaWVudGF0aW9uPzogU3RlcHBlck9yaWVudGF0aW9uO1xuICBrZWVwQWN0aXZlVmlzaWJsZT86IGJvb2xlYW47XG59XG5cbmRlZmluZU9wdGlvbnMoe1xuICBuYW1lOiAnUnVpU3RlcHBlcicsXG59KTtcblxuY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgc3RlcDogdW5kZWZpbmVkLFxuICBpY29uVG9wOiBmYWxzZSxcbiAgY3VzdG9tOiBmYWxzZSxcbiAgdGl0bGVDbGFzczogJycsXG4gIHN1YnRpdGxlQ2xhc3M6ICcnLFxuICBvcmllbnRhdGlvbjogU3RlcHBlck9yaWVudGF0aW9uLmhvcml6b250YWwsXG4gIGtlZXBBY3RpdmVWaXNpYmxlOiB0cnVlLFxufSk7XG5cbmNvbnN0IHsgY3VzdG9tLCBzdGVwcywgc3RlcCwgb3JpZW50YXRpb24sIGtlZXBBY3RpdmVWaXNpYmxlIH0gPSB0b1JlZnMocHJvcHMpO1xuXG4vLyBhdXRvbWF0aWNhbGx5IHNldCBzdGVwIHN0YXRlIHRvIHN0ZXBwZXIuXG5jb25zdCByZW5kZXJlZFN0ZXAgPSBjb21wdXRlZCgoKSA9PiB7XG4gIGNvbnN0IGN1cnJlbnRTdGVwID0gZ2V0KHN0ZXApO1xuICBjb25zdCBzdGVwc1ZhbCA9IGdldChzdGVwcyk7XG5cbiAgaWYgKCFpc0RlZmluZWQoY3VycmVudFN0ZXApKVxuICAgIHJldHVybiBzdGVwc1ZhbDtcblxuICByZXR1cm4gc3RlcHNWYWwubWFwKCh0ZXh0LCBpbmRleCkgPT4ge1xuICAgIGxldCBzdGVwU3RhdHVzOiBTdGVwcGVyU3RhdGUgPSBTdGVwcGVyU3RhdGUuaW5hY3RpdmU7XG5cbiAgICBpZiAoaW5kZXggKyAxID09PSBjdXJyZW50U3RlcClcbiAgICAgIHN0ZXBTdGF0dXMgPSBTdGVwcGVyU3RhdGUuYWN0aXZlO1xuXG4gICAgaWYgKGluZGV4ICsgMSA8IGN1cnJlbnRTdGVwKVxuICAgICAgc3RlcFN0YXR1cyA9IFN0ZXBwZXJTdGF0ZS5kb25lO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnRleHQsXG4gICAgICBzdGF0ZTogc3RlcFN0YXR1cyxcbiAgICB9O1xuICB9KTtcbn0pO1xuXG5jb25zdCB3cmFwcGVyUmVmID0gcmVmPEhUTUxEaXZFbGVtZW50PigpO1xuXG53YXRjaChzdGVwLCAoKSA9PiB7XG4gIGlmIChcbiAgICAhZ2V0KGtlZXBBY3RpdmVWaXNpYmxlKVxuICAgIHx8IGdldChvcmllbnRhdGlvbikgIT09IFN0ZXBwZXJPcmllbnRhdGlvbi5ob3Jpem9udGFsXG4gICkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIG5leHRUaWNrKCgpID0+IHtcbiAgICBjb25zdCBlbGVtID0gZ2V0KHdyYXBwZXJSZWYpO1xuICAgIGlmIChlbGVtKSB7XG4gICAgICBjb25zdCBhY3RpdmVTdGVwID0gZWxlbS5xdWVyeVNlbGVjdG9yKCcuYWN0aXZlLXN0ZXAnKTtcbiAgICAgIGFjdGl2ZVN0ZXA/LnNjcm9sbEludG9WaWV3Py4oe1xuICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgICAgIGlubGluZTogJ2NlbnRlcicsXG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xufSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgcmVmPVwid3JhcHBlclJlZlwiXG4gICAgOmNsYXNzPVwiW1xuICAgICAgJHN0eWxlLnN0ZXBwZXIsXG4gICAgICAkc3R5bGVbb3JpZW50YXRpb24gPz8gJyddLFxuICAgICAgeyBbJHN0eWxlWydpY29uLXRvcCddXTogaWNvblRvcCwgWyRzdHlsZS5jdXN0b21dOiBjdXN0b20gfSxcbiAgICBdXCJcbiAgICBjbGFzcz1cIm5vLXNjcm9sbGJhciBvdmVyZmxvdy1hdXRvXCJcbiAgPlxuICAgIDx0ZW1wbGF0ZVxuICAgICAgdi1mb3I9XCIoeyB0aXRsZSwgZGVzY3JpcHRpb24sIHN0YXRlLCBsb2FkaW5nIH0sIGluZGV4KSBpbiByZW5kZXJlZFN0ZXBcIlxuICAgICAgOmtleT1cImluZGV4XCJcbiAgICA+XG4gICAgICA8aHJcbiAgICAgICAgdi1pZj1cImluZGV4ID4gMFwiXG4gICAgICAgIDpjbGFzcz1cIiRzdHlsZS5kaXZpZGVyXCJcbiAgICAgIC8+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAkc3R5bGUuc3RlcCxcbiAgICAgICAgICAkc3R5bGVbc3RhdGUgPz8gU3RlcHBlclN0YXRlLmluYWN0aXZlXSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICAnYWN0aXZlLXN0ZXAnOiBzdGF0ZSA9PT0gU3RlcHBlclN0YXRlLmFjdGl2ZSxcbiAgICAgICAgICB9LFxuICAgICAgICBdXCJcbiAgICAgID5cbiAgICAgICAgPHNsb3RcbiAgICAgICAgICBuYW1lPVwiaWNvblwiXG4gICAgICAgICAgdi1iaW5kPVwieyBzdGF0ZSwgaW5kZXg6IGluZGV4ICsgMSB9XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSBmbGV4IHB5LTJcIj5cbiAgICAgICAgICAgIDxSdWlTdGVwcGVyQ3VzdG9tSWNvblxuICAgICAgICAgICAgICB2LWlmPVwiY3VzdG9tXCJcbiAgICAgICAgICAgICAgOmluZGV4PVwiaW5kZXggKyAxXCJcbiAgICAgICAgICAgICAgOnN0YXRlPVwic3RhdGVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxSdWlTdGVwcGVySWNvblxuICAgICAgICAgICAgICB2LWVsc2VcbiAgICAgICAgICAgICAgOmluZGV4PVwiaW5kZXggKyAxXCJcbiAgICAgICAgICAgICAgOnN0YXRlPVwic3RhdGVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxSdWlQcm9ncmVzc1xuICAgICAgICAgICAgICB2LWlmPVwibG9hZGluZ1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYWJzb2x1dGUgbGVmdC0xLzIgdG9wLTEvMiB0cmFuc2Zvcm0gLXRyYW5zbGF0ZS14LTEvMiAtdHJhbnNsYXRlLXktMS8yXCJcbiAgICAgICAgICAgICAgc2l6ZT1cIjMyXCJcbiAgICAgICAgICAgICAgdmFyaWFudD1cImluZGV0ZXJtaW5hdGVcIlxuICAgICAgICAgICAgICBjaXJjdWxhclxuICAgICAgICAgICAgICB0aGlja25lc3M9XCIyXCJcbiAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2xvdD5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIHYtaWY9XCJ0aXRsZSB8fCBkZXNjcmlwdGlvblwiXG4gICAgICAgICAgOmNsYXNzPVwiJHN0eWxlLmxhYmVsXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICB2LWlmPVwidGl0bGVcIlxuICAgICAgICAgICAgOmNsYXNzPVwiWyRzdHlsZS50aXRsZSwgeyBbdGl0bGVDbGFzc106IGN1c3RvbSB9XVwiXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtc3VidGl0bGUtMlwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgdGl0bGUgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIHYtaWY9XCJkZXNjcmlwdGlvblwiXG4gICAgICAgICAgICA6Y2xhc3M9XCJbJHN0eWxlLnN1YnRpdGxlLCB7IFtzdWJ0aXRsZUNsYXNzXTogY3VzdG9tIH1dXCJcbiAgICAgICAgICAgIGNsYXNzPVwidGV4dC1jYXB0aW9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBkZXNjcmlwdGlvbiB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L3RlbXBsYXRlPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBsYW5nPVwic2Nzc1wiIG1vZHVsZT5cbiRjb2xvcnM6ICdlcnJvcicsICd3YXJuaW5nJywgJ2luZm8nLCAnc3VjY2Vzcyc7XG4uc3RlcHBlciB7XG4gIEBhcHBseSBmbGV4O1xuXG4gICYuaG9yaXpvbnRhbCB7XG4gICAgQGFwcGx5IHdoaXRlc3BhY2Utbm93cmFwIGxnOndoaXRlc3BhY2Utbm9ybWFsO1xuICB9XG5cbiAgJi52ZXJ0aWNhbCB7XG4gICAgQGFwcGx5IGZsZXgtY29sIGlubGluZS1mbGV4O1xuXG4gICAgLnN0ZXAge1xuICAgICAgQGFwcGx5IHB4LTAgcHktNjtcbiAgICB9XG5cbiAgICAuZGl2aWRlciB7XG4gICAgICBAYXBwbHkgYmxvY2sgbWluLWgtWzNyZW1dIG1pbi13LTAgbWF4LWgtZnVsbCBoLWZ1bGwgc2VsZi1zdGFydCAtbXktNCBteC0zIGJvcmRlci1sIGJvcmRlci1ydWktZ3JleS00MDA7XG4gICAgfVxuXG4gICAgJi5jdXN0b20ge1xuICAgICAgLmRpdmlkZXIge1xuICAgICAgICBAYXBwbHkgbXgtNTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmljb24tdG9wIHtcbiAgICAgIC5kaXZpZGVyIHtcbiAgICAgICAgQGFwcGx5IHNlbGYtY2VudGVyIG14LWF1dG87XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLnN0ZXAge1xuICAgIEBhcHBseSBmbGV4IGl0ZW1zLWNlbnRlciBweC02IHJlbGF0aXZlO1xuXG4gICAgLmluZGljYXRvciB7XG4gICAgICBAYXBwbHkgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtZnVsbCBoLTYgdy02IG1pbi13LVsxLjVyZW1dO1xuICAgIH1cblxuICAgIC5sYWJlbCB7XG4gICAgICBAYXBwbHkgZmxleCBmbGV4LWNvbCBpdGVtcy1zdGFydCB0ZXh0LWxlZnQgbWwtMjtcbiAgICB9XG5cbiAgICAmLmluYWN0aXZlIHtcbiAgICAgIEBhcHBseSB0ZXh0LXJ1aS10ZXh0LWRpc2FibGVkO1xuXG4gICAgICAudGl0bGUge1xuICAgICAgICBAYXBwbHkgdGV4dC1ydWktdGV4dC1zZWNvbmRhcnk7XG4gICAgICB9XG5cbiAgICAgIC5zdWJ0aXRsZSB7XG4gICAgICAgIEBhcHBseSB0ZXh0LXJ1aS10ZXh0O1xuICAgICAgfVxuICAgIH1cblxuICAgICYuYWN0aXZlLFxuICAgICYuZG9uZSB7XG4gICAgICBAYXBwbHkgdGV4dC1ydWktdGV4dDtcblxuICAgICAgLnN1YnRpdGxlIHtcbiAgICAgICAgQGFwcGx5IHRleHQtcnVpLXRleHQtc2Vjb25kYXJ5O1xuICAgICAgfVxuICAgIH1cblxuICAgIEBlYWNoICRjb2xvciBpbiAkY29sb3JzIHtcbiAgICAgICYuI3skY29sb3J9IHtcbiAgICAgICAgQGFwcGx5IHRleHQtcnVpLSN7JGNvbG9yfTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmLmljb24tdG9wIHtcbiAgICAuc3RlcCB7XG4gICAgICBAYXBwbHkgZmxleC1jb2w7XG5cbiAgICAgIC5sYWJlbCB7XG4gICAgICAgIEBhcHBseSBtbC0wIG10LTQgaXRlbXMtY2VudGVyIHRleHQtY2VudGVyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5kaXZpZGVyIHtcbiAgICBAYXBwbHkgYmxvY2sgbWF4LXctZnVsbCBtaW4tdy1bMXJlbV0gaC0wIG1heC1oLTAgc2VsZi1jZW50ZXIgLW14LTQgbXktMCBib3JkZXItdCBib3JkZXItcnVpLWdyZXktNDAwO1xuICAgIGZsZXg6IDEgMSAwO1xuICB9XG5cbiAgJi5jdXN0b20ge1xuICAgIC5zdGVwIHtcbiAgICAgIC5kaXZpZGVyIHtcbiAgICAgICAgQGFwcGx5IGJvcmRlci1ydWktcHJpbWFyeS1saWdodGVyO1xuICAgICAgfVxuXG4gICAgICAmLmluYWN0aXZlIHtcbiAgICAgICAgQGFwcGx5IHRleHQtcnVpLXRleHQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbmltcG9ydCB0eXBlIHsgUnVpSWNvbnMgfSBmcm9tICdAL2ljb25zJztcbmltcG9ydCBSdWlCdXR0b24gZnJvbSAnQC9jb21wb25lbnRzL2J1dHRvbnMvYnV0dG9uL1J1aUJ1dHRvbi52dWUnO1xuaW1wb3J0IFJ1aUljb24gZnJvbSAnQC9jb21wb25lbnRzL2ljb25zL1J1aUljb24udnVlJztcblxuZXhwb3J0IGludGVyZmFjZSBQcm9wcyB7XG4gIGV4cGFuZGVkOiBib29sZWFuO1xuICBpY29uPzogUnVpSWNvbnM7XG59XG5cbmRlZmluZU9wdGlvbnMoe1xuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxufSk7XG5cbndpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwgeyBpY29uOiAnbHUtY2hldnJvbi1kb3duJyB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxSdWlCdXR0b25cbiAgICA6Y2xhc3M9XCJbXG4gICAgICAkc3R5bGUudHJfX2V4cGFuZGVyX2J1dHRvbixcbiAgICAgIHtcbiAgICAgICAgWyRzdHlsZS50cl9fZXhwYW5kZXJfYnV0dG9uX29wZW4gPz8gJyddOiBleHBhbmRlZCxcbiAgICAgIH0sXG4gICAgXVwiXG4gICAgaWNvblxuICAgIHNpemU9XCJzbVwiXG4gICAgdmFyaWFudD1cInRleHRcIlxuICAgIHYtYmluZD1cIiRhdHRyc1wiXG4gID5cbiAgICA8c2xvdD5cbiAgICAgIDxSdWlJY29uXG4gICAgICAgIDpjbGFzcz1cIiRzdHlsZS50cl9fZXhwYW5kZXJfYnV0dG9uX2ljb25cIlxuICAgICAgICA6bmFtZT1cImljb25cIlxuICAgICAgLz5cbiAgICA8L3Nsb3Q+XG4gIDwvUnVpQnV0dG9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgbW9kdWxlPlxuLnRyX19leHBhbmRlciB7XG4gICZfYnV0dG9uIHtcbiAgICBAYXBwbHkgcmVsYXRpdmU7XG5cbiAgICAmX2ljb24ge1xuICAgICAgQGFwcGx5IHRyYW5zaXRpb24gcm90YXRlLTA7XG4gICAgfVxuXG4gICAgJl9vcGVuIC50cl9fZXhwYW5kZXJfYnV0dG9uX2ljb24ge1xuICAgICAgQGFwcGx5IHJvdGF0ZS0xODA7XG4gICAgfVxuICB9XG59XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cCBnZW5lcmljPVwiVCBleHRlbmRzIG9iamVjdCwgSyBleHRlbmRzIGtleW9mIFQgPSBrZXlvZiBUXCI+XG5pbXBvcnQgUnVpQnV0dG9uIGZyb20gJ0AvY29tcG9uZW50cy9idXR0b25zL2J1dHRvbi9SdWlCdXR0b24udnVlJztcbmltcG9ydCBSdWlDaGVja2JveCBmcm9tICdAL2NvbXBvbmVudHMvZm9ybXMvY2hlY2tib3gvUnVpQ2hlY2tib3gudnVlJztcbmltcG9ydCBSdWlJY29uIGZyb20gJ0AvY29tcG9uZW50cy9pY29ucy9SdWlJY29uLnZ1ZSc7XG5pbXBvcnQgUnVpQmFkZ2UgZnJvbSAnQC9jb21wb25lbnRzL292ZXJsYXlzL2JhZGdlL1J1aUJhZGdlLnZ1ZSc7XG5pbXBvcnQgUnVpUHJvZ3Jlc3MgZnJvbSAnQC9jb21wb25lbnRzL3Byb2dyZXNzL1J1aVByb2dyZXNzLnZ1ZSc7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHNvcnRhYmxlIGNvbHVtbiBuYW1lIGZvciBhIGdpdmVuIHR5cGUuXG4gKiBUaGUgY29sdW1uIG5hbWUgbXVzdCBiZSBhIGtleSBvZiB0aGUgcGFzc2VkIGRhdGEgb2JqZWN0IHR5cGUuXG4gKiBAdGVtcGxhdGUgVCAtIFRoZSB0eXBlIG9mIHRoZSBkYXRhIGluIHRoZSBjb2x1bW4uXG4gKi9cbmV4cG9ydCB0eXBlIFRhYmxlUm93S2V5PFQ+ID0ga2V5b2YgVCBleHRlbmRzIHN0cmluZyA/IGtleW9mIFQgOiBuZXZlcjtcblxuZXhwb3J0IGludGVyZmFjZSBCYXNlVGFibGVDb2x1bW48VD4ge1xuICBrZXk6IFRhYmxlUm93S2V5PFQ+IHwgc3RyaW5nO1xuICBzb3J0YWJsZT86IGJvb2xlYW47XG4gIGRpcmVjdGlvbj86ICdhc2MnIHwgJ2Rlc2MnO1xuICBhbGlnbj86ICdzdGFydCcgfCAnY2VudGVyJyB8ICdlbmQnO1xuICBjbGFzcz86IHN0cmluZztcbiAgY2VsbENsYXNzPzogc3RyaW5nO1xuICBjb2xzcGFuPzogc3RyaW5nIHwgbnVtYmVyO1xuICByb3dzcGFuPzogc3RyaW5nIHwgbnVtYmVyO1xuXG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgc29ydGFibGUgdGFibGUgY29sdW1uLlxuICogVGhpcyBpcyB1c2VkIHRvIGVuc3VyZSB0aGF0IHdoZW4gdXNpbmcgc29ydGFibGUgd2l0aCBhIHRydWUgdmFsdWUsXG4gKiB0aGUga2V5IG1hdGNoZXMgdG8gYW4gYWN0dWFsIHByb3BlcnR5IG9mIHRoZSBvYmplY3QgcGFzc2VkLlxuICpcbiAqIEB0ZW1wbGF0ZSBUIC0gVGhlIHR5cGUgb2YgZGF0YSBpbiB0aGUgdGFibGUgY29sdW1uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNvcnRhYmxlVGFibGVDb2x1bW48VD4gZXh0ZW5kcyBCYXNlVGFibGVDb2x1bW48VD4ge1xuICBzb3J0YWJsZTogdHJ1ZTtcbn1cblxuLyoqXG4gKiBBbiBpbnRlcmZhY2UgcmVwcmVzZW50aW5nIGEgY29sdW1uIGluIGEgdGFibGUgdGhhdCBjYW5ub3QgYmUgc29ydGVkLlxuICogVGhpcyBjYW4gYmUgbWFwcGVkIHRvIGFuIGFjdHVhbCBwcm9wZXJ0eSBvZiB0aGUgb2JqZWN0IG9yIHRvIGEgdmlydHVhbCBjb2x1bW4uXG4gKlxuICogQHR5cGVwYXJhbSBUIC0gVGhlIHR5cGUgb2YgZGF0YSBpbiB0aGUgdGFibGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTm9uZVNvcnRhYmxlVGFibGVDb2x1bW48VD4gZXh0ZW5kcyBCYXNlVGFibGVDb2x1bW48VD4ge1xuICBzb3J0YWJsZT86IGZhbHNlO1xufVxuXG5leHBvcnQgdHlwZSBUYWJsZUNvbHVtbjxUPiA9XG4gIHwgU29ydGFibGVUYWJsZUNvbHVtbjxUPlxuICB8IE5vbmVTb3J0YWJsZVRhYmxlQ29sdW1uPFQ+O1xuXG5leHBvcnQgaW50ZXJmYWNlIFNvcnRDb2x1bW48VD4ge1xuICBjb2x1bW4/OiBUYWJsZVJvd0tleTxUPjtcbiAgZGlyZWN0aW9uOiAnYXNjJyB8ICdkZXNjJztcbn1cblxuZXhwb3J0IHR5cGUgVGFibGVTb3J0RGF0YTxUPiA9IFNvcnRDb2x1bW48VD4gfCBTb3J0Q29sdW1uPFQ+W10gfCB1bmRlZmluZWQ7XG5cbmV4cG9ydCB0eXBlIFRhYmxlUm93S2V5RGF0YTxUPiA9IFRhYmxlUm93S2V5PFQ+IHwgVGFibGVSb3dLZXk8VD5bXSB8IHVuZGVmaW5lZDtcblxuZXhwb3J0IGludGVyZmFjZSBHcm91cERhdGE8VD4ge1xuICBrZXk6IHN0cmluZztcbiAgdmFsdWU/OiBQYXJ0aWFsPFQ+O1xufVxuXG5leHBvcnQgdHlwZSBHcm91cEtleTxUPiA9IFRhYmxlQ29sdW1uPFQ+WydrZXknXTtcblxuZXhwb3J0IHR5cGUgR3JvdXBLZXlzPFQ+ID0gR3JvdXBLZXk8VD4gfCBHcm91cEtleTxUPltdIHwgdW5kZWZpbmVkO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BzPFQ+IHtcbiAgbG9hZGluZz86IGJvb2xlYW47XG4gIHN0aWNreUhlYWRlcj86IGJvb2xlYW47XG4gIHN0aWNrPzogYm9vbGVhbjtcbiAgc2VsZWN0YWJsZT86IGJvb2xlYW47XG4gIGRpc2FibGVDaGVja0FsbD86IGJvb2xlYW47XG4gIG5vRGF0YT86IGJvb2xlYW47XG4gIGNvbHNwYW4/OiBudW1iZXI7XG4gIGNvbHVtbnM/OiBUYWJsZUNvbHVtbjxUPltdO1xuICBjYXBpdGFsaXplSGVhZGVycz86IGJvb2xlYW47XG4gIGlzQWxsU2VsZWN0ZWQ/OiBib29sZWFuO1xuICBpbmRldGVybWluYXRlPzogYm9vbGVhbjtcbiAgZGVuc2U/OiBib29sZWFuO1xuICBzb3J0ZWRNYXA/OiBQYXJ0aWFsPFJlY29yZDxUYWJsZVJvd0tleTxUPiwgU29ydENvbHVtbjxUPj4+O1xuICBzb3J0RGF0YT86IFRhYmxlU29ydERhdGE8VD47XG4gIGNvbHVtbkF0dHI/OiBrZXlvZiBUYWJsZUNvbHVtbjxUPjtcbiAgZGF0YUlkPzogc3RyaW5nO1xufVxuXG5jb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wczxUPj4oKSwge1xuICBsb2FkaW5nOiBmYWxzZSxcbiAgc3RpY2t5SGVhZGVyOiBmYWxzZSxcbiAgc3RpY2s6IGZhbHNlLFxuICBzZWxlY3RhYmxlOiBmYWxzZSxcbiAgZGlzYWJsZUNoZWNrQWxsOiBmYWxzZSxcbiAgbm9EYXRhOiBmYWxzZSxcbiAgY29sc3BhbjogMCxcbiAgY29sdW1uczogdW5kZWZpbmVkLFxuICBjYXBpdGFsaXplSGVhZGVyczogZmFsc2UsXG4gIGlzQWxsU2VsZWN0ZWQ6IGZhbHNlLFxuICBpbmRldGVybWluYXRlOiBmYWxzZSxcbiAgZGVuc2U6IGZhbHNlLFxuICBzb3J0ZWRNYXA6ICgpID0+ICh7fSksXG4gIGNvbHVtbkF0dHI6ICdsYWJlbCcsXG4gIHNvcnREYXRhOiB1bmRlZmluZWQsXG4gIGRhdGFJZDogJ2hlYWQtbWFpbicsXG59KTtcblxuY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPHtcbiAgKGU6ICdzZWxlY3Q6YWxsJywgdmFsdWU6IGJvb2xlYW4pOiB2b2lkO1xuICAoXG4gICAgZTogJ3NvcnQnLFxuICAgIHZhbHVlOiB7XG4gICAgICBrZXk6IFRhYmxlUm93S2V5PFQ+O1xuICAgICAgZGlyZWN0aW9uPzogJ2FzYycgfCAnZGVzYyc7XG4gICAgfSxcbiAgKTogdm9pZDtcbn0+KCk7XG5cbmZ1bmN0aW9uIG9uU29ydCh7IGtleSwgZGlyZWN0aW9uIH06IFRhYmxlQ29sdW1uPFQ+KSB7XG4gIHJldHVybiBlbWl0KCdzb3J0Jywge1xuICAgIGtleToga2V5IGFzIFRhYmxlUm93S2V5PFQ+LFxuICAgIGRpcmVjdGlvbjogZGlyZWN0aW9uID8/ICdhc2MnLFxuICB9KTtcbn1cblxuY29uc3Qgb25Ub2dnbGVBbGwgPSAoY2hlY2tlZDogYm9vbGVhbikgPT4gZW1pdCgnc2VsZWN0OmFsbCcsIGNoZWNrZWQpO1xuXG5jb25zdCBpc1NvcnRlZEJ5ID0gKGtleTogVGFibGVDb2x1bW48VD5bJ2tleSddKSA9PiBrZXkgaW4gcHJvcHMuc29ydGVkTWFwO1xuXG5mdW5jdGlvbiBnZXRTb3J0SW5kZXgoa2V5OiBUYWJsZUNvbHVtbjxUPlsna2V5J10pOiBudW1iZXIge1xuICBjb25zdCBzb3J0QnkgPSBwcm9wcy5zb3J0RGF0YTtcblxuICBpZiAoIXNvcnRCeSB8fCAhQXJyYXkuaXNBcnJheShzb3J0QnkpIHx8ICFpc1NvcnRlZEJ5KGtleSkpXG4gICAgcmV0dXJuIC0xO1xuXG4gIHJldHVybiBzb3J0QnkuZmluZEluZGV4KHNvcnQgPT4gc29ydC5jb2x1bW4gPT09IGtleSk7XG59XG5cbmZ1bmN0aW9uIGdldFNvcnREaXJlY3Rpb24oa2V5OiBUYWJsZUNvbHVtbjxUPlsna2V5J10pIHtcbiAgcmV0dXJuIHByb3BzLnNvcnRlZE1hcFtrZXldPy5kaXJlY3Rpb247XG59XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8dGhlYWRcbiAgICA6ZGF0YS1pZD1cImRhdGFJZFwiXG4gICAgOmNsYXNzPVwiW1xuICAgICAgJHN0eWxlLnRoZWFkLFxuICAgICAge1xuICAgICAgICBbJHN0eWxlLnN0aWNreV9faGVhZGVyXTogc3RpY2t5SGVhZGVyLFxuICAgICAgICBbJHN0eWxlLnN0aWNrX190b3BdOiBzdGljayxcbiAgICAgICAgWyRzdHlsZS5kZW5zZV06IGRlbnNlLFxuICAgICAgfSxcbiAgICBdXCJcbiAgPlxuICAgIDx0ciA6Y2xhc3M9XCIkc3R5bGUudHJcIj5cbiAgICAgIDx0aFxuICAgICAgICB2LWlmPVwic2VsZWN0YWJsZVwiXG4gICAgICAgIDpjbGFzcz1cIiRzdHlsZS5jaGVja2JveFwiXG4gICAgICAgIHNjb3BlPVwiY29sXCJcbiAgICAgICAgY29sc3Bhbj1cIjFcIlxuICAgICAgICByb3dzcGFuPVwiMVwiXG4gICAgICA+XG4gICAgICAgIDxSdWlDaGVja2JveFxuICAgICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVDaGVja0FsbFwiXG4gICAgICAgICAgOmluZGV0ZXJtaW5hdGU9XCJpbmRldGVybWluYXRlXCJcbiAgICAgICAgICA6bW9kZWwtdmFsdWU9XCJpc0FsbFNlbGVjdGVkXCJcbiAgICAgICAgICA6c2l6ZT1cImRlbnNlID8gJ3NtJyA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICBkYXRhLWN5PVwidGFibGUtdG9nZ2xlLWNoZWNrLWFsbFwiXG4gICAgICAgICAgaGlkZS1kZXRhaWxzXG4gICAgICAgICAgQHVwZGF0ZTptb2RlbC12YWx1ZT1cIm9uVG9nZ2xlQWxsKCRldmVudClcIlxuICAgICAgICAvPlxuICAgICAgPC90aD5cblxuICAgICAgPHRoXG4gICAgICAgIHYtZm9yPVwiKGNvbHVtbiwgaW5kZXgpIGluIGNvbHVtbnNcIlxuICAgICAgICA6a2V5PVwiaW5kZXhcIlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJHN0eWxlLnRoLFxuICAgICAgICAgIGNvbHVtbi5jbGFzcyxcbiAgICAgICAgICAkc3R5bGVbYGFsaWduX18ke2NvbHVtbi5hbGlnbiA/PyAnc3RhcnQnfWBdLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNhcGl0YWxpemU6ICFjYXBpdGFsaXplSGVhZGVycyxcbiAgICAgICAgICAgIFskc3R5bGUuc29ydGFibGVdOiBjb2x1bW4uc29ydGFibGUsXG4gICAgICAgICAgfSxcbiAgICAgICAgXVwiXG4gICAgICAgIHNjb3BlPVwiY29sXCJcbiAgICAgICAgOmNvbHNwYW49XCJjb2x1bW4uY29sc3BhbiA/PyAxXCJcbiAgICAgICAgOnJvd3NwYW49XCJjb2x1bW4ucm93c3BhbiA/PyAxXCJcbiAgICAgID5cbiAgICAgICAgPHNsb3RcbiAgICAgICAgICA6Y29sdW1uPVwiY29sdW1uXCJcbiAgICAgICAgICA6bmFtZT1cImBoZWFkZXIuJHtjb2x1bW4ua2V5LnRvU3RyaW5nKCl9YFwiXG4gICAgICAgID5cbiAgICAgICAgICA8UnVpQmFkZ2VcbiAgICAgICAgICAgIHYtaWY9XCJjb2x1bW4uc29ydGFibGVcIlxuICAgICAgICAgICAgOm1vZGVsLXZhbHVlPVwiZ2V0U29ydEluZGV4KGNvbHVtbi5rZXkpID49IDBcIlxuICAgICAgICAgICAgOnRleHQ9XCJgJHtnZXRTb3J0SW5kZXgoY29sdW1uLmtleSkgKyAxfWBcIlxuICAgICAgICAgICAgOm9mZnNldC15PVwiZGVuc2UgPyA4IDogMFwiXG4gICAgICAgICAgICBjb2xvcj1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICBzaXplPVwic21cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxSdWlCdXR0b25cbiAgICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgICAgICRzdHlsZS5zb3J0X19idXR0b24sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgWyRzdHlsZS5zb3J0X19hY3RpdmUgPz8gJyddOiBpc1NvcnRlZEJ5KGNvbHVtbi5rZXkpLFxuICAgICAgICAgICAgICAgICAgWyRzdHlsZVtgc29ydF9fJHtnZXRTb3J0RGlyZWN0aW9uKGNvbHVtbi5rZXkpfWBdID8/ICcnXTogaXNTb3J0ZWRCeShcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uLmtleSxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXVwiXG4gICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgQGNsaWNrPVwib25Tb3J0KGNvbHVtbilcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiA6Y2xhc3M9XCIkc3R5bGUuY29sdW1uX190ZXh0XCI+XG4gICAgICAgICAgICAgICAgPHNsb3RcbiAgICAgICAgICAgICAgICAgIDpuYW1lPVwiYGhlYWRlci50ZXh0LiR7Y29sdW1uLmtleS50b1N0cmluZygpfWBcIlxuICAgICAgICAgICAgICAgICAgOmNvbHVtbj1cImNvbHVtblwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgY29sdW1uW2NvbHVtbkF0dHJdIH19XG4gICAgICAgICAgICAgICAgPC9zbG90PlxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPHRlbXBsYXRlXG4gICAgICAgICAgICAgICAgdi1pZj1cImNvbHVtbi5hbGlnbiA9PT0gJ2VuZCdcIlxuICAgICAgICAgICAgICAgICNwcmVwZW5kXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8UnVpSWNvblxuICAgICAgICAgICAgICAgICAgOmNsYXNzPVwiJHN0eWxlLnNvcnRfX2ljb25cIlxuICAgICAgICAgICAgICAgICAgbmFtZT1cImx1LWFycm93LWRvd25cIlxuICAgICAgICAgICAgICAgICAgc2l6ZT1cIjE4XCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuXG4gICAgICAgICAgICAgIDx0ZW1wbGF0ZSAjYXBwZW5kPlxuICAgICAgICAgICAgICAgIDxSdWlJY29uXG4gICAgICAgICAgICAgICAgICB2LWlmPVwiY29sdW1uLmFsaWduICE9PSAnZW5kJ1wiXG4gICAgICAgICAgICAgICAgICA6Y2xhc3M9XCIkc3R5bGUuc29ydF9faWNvblwiXG4gICAgICAgICAgICAgICAgICBuYW1lPVwibHUtYXJyb3ctZG93blwiXG4gICAgICAgICAgICAgICAgICBzaXplPVwiMThcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICA8L1J1aUJ1dHRvbj5cbiAgICAgICAgICA8L1J1aUJhZGdlPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICB2LWVsc2VcbiAgICAgICAgICAgIDpjbGFzcz1cIiRzdHlsZS5jb2x1bW5fX3RleHRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzbG90XG4gICAgICAgICAgICAgIDpuYW1lPVwiYGhlYWRlci50ZXh0LiR7Y29sdW1uLmtleS50b1N0cmluZygpfWBcIlxuICAgICAgICAgICAgICA6Y29sdW1uPVwiY29sdW1uXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgY29sdW1uW2NvbHVtbkF0dHJdIH19XG4gICAgICAgICAgICA8L3Nsb3Q+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L3Nsb3Q+XG4gICAgICA8L3RoPlxuICAgIDwvdHI+XG4gICAgPHRyXG4gICAgICB2LWlmPVwibG9hZGluZ1wiXG4gICAgICA6Y2xhc3M9XCJbJHN0eWxlLnRoZWFkX19sb2FkZXIsICRzdHlsZS50aGVhZF9fbG9hZGVyX2xpbmVhcl1cIlxuICAgID5cbiAgICAgIDx0aFxuICAgICAgICA6Y2xhc3M9XCIkc3R5bGUucHJvZ3Jlc3NcIlxuICAgICAgICA6Y29sc3Bhbj1cImNvbHNwYW5cIlxuICAgICAgICBzY29wZT1cImNvbFwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgOmNsYXNzPVwiJHN0eWxlLnByb2dyZXNzX193cmFwcGVyXCI+XG4gICAgICAgICAgPFJ1aVByb2dyZXNzXG4gICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgdmFyaWFudD1cImluZGV0ZXJtaW5hdGVcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC90aD5cbiAgICA8L3RyPlxuICA8L3RoZWFkPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIG1vZHVsZSBsYW5nPVwic2Nzc1wiPlxuLnRoZWFkIHtcbiAgQGFwcGx5IGRpdmlkZS15IGRpdmlkZS1ibGFjay9bMC4xMl07XG5cbiAgJi5zdGlja3lfX2hlYWRlciB7XG4gICAgQGFwcGx5IHRvcC0wIHotMTAgYWJzb2x1dGU7XG5cbiAgICAmLnN0aWNrX190b3Age1xuICAgICAgQGFwcGx5IGZpeGVkO1xuXG4gICAgICB0ciB7XG4gICAgICAgIHRoIHtcbiAgICAgICAgICBAYXBwbHkgYmctd2hpdGUgYm9yZGVyLWIgYm9yZGVyLWItYmxhY2svWzAuMTJdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJi5kZW5zZSB7XG4gICAgLnRyIHtcbiAgICAgIC50aCB7XG4gICAgICAgIEBhcHBseSBweS1bMC4zOHJlbV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLnRyIHtcbiAgICAudGgge1xuICAgICAgQGFwcGx5IHAtNDtcblxuICAgICAgJi5hbGlnbl9fc3RhcnQge1xuICAgICAgICBAYXBwbHkgdGV4dC1sZWZ0IHJ0bDp0ZXh0LXJpZ2h0O1xuICAgICAgfVxuXG4gICAgICAmLmFsaWduX19jZW50ZXIge1xuICAgICAgICBAYXBwbHkgdGV4dC1jZW50ZXI7XG4gICAgICB9XG5cbiAgICAgICYuYWxpZ25fX2VuZCB7XG4gICAgICAgIEBhcHBseSB0ZXh0LXJpZ2h0IHJ0bDp0ZXh0LWxlZnQ7XG4gICAgICB9XG5cbiAgICAgICYuc29ydGFibGUge1xuICAgICAgICAmLmFsaWduX19zdGFydCB7XG4gICAgICAgICAgQGFwcGx5IHBsLTM7XG4gICAgICAgIH1cblxuICAgICAgICAmLmFsaWduX19jZW50ZXIge1xuICAgICAgICAgIEBhcHBseSBweC0zO1xuICAgICAgICAgIC5zb3J0X19idXR0b24ge1xuICAgICAgICAgICAgQGFwcGx5IG1sLTY7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi5hbGlnbl9fZW5kIHtcbiAgICAgICAgICBAYXBwbHkgcHItMztcbiAgICAgICAgfVxuXG4gICAgICAgIC5zb3J0X19idXR0b24ge1xuICAgICAgICAgIEBhcHBseSBpbmxpbmUtZmxleDtcblxuICAgICAgICAgICY6aG92ZXIgLnNvcnRfX2ljb24ge1xuICAgICAgICAgICAgQGFwcGx5IG9wYWNpdHktNjA7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgJi5zb3J0IHtcbiAgICAgICAgICAgICZfX2FjdGl2ZSB7XG4gICAgICAgICAgICAgIC5zb3J0X19pY29uIHtcbiAgICAgICAgICAgICAgICBAYXBwbHkgb3BhY2l0eS0xMDA7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJl9fZGVzYyB7XG4gICAgICAgICAgICAgIC5zb3J0X19pY29uIHtcbiAgICAgICAgICAgICAgICBAYXBwbHkgcm90YXRlLTA7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJl9fYXNjIHtcbiAgICAgICAgICAgICAgLnNvcnRfX2ljb24ge1xuICAgICAgICAgICAgICAgIEBhcHBseSByb3RhdGUtMTgwO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLnNvcnRfX2ljb24ge1xuICAgICAgICAgIEBhcHBseSB0cmFuc2l0aW9uIG9wYWNpdHktMCByb3RhdGUtMTgwO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jb2x1bW5fX3RleHQge1xuICAgICAgICBAYXBwbHkgdGV4dC1ydWktdGV4dCBmb250LW1lZGl1bSB0ZXh0LXNtIGxlYWRpbmctNjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAuY2hlY2tib3gge1xuICAgICAgQGFwcGx5IHB4LTIgdy1bMy42MjVyZW1dIG1heC13LVszLjYyNXJlbV07XG4gICAgICBsYWJlbCB7XG4gICAgICAgIEBhcHBseSBtbC0wO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICZfX2xvYWRlciB7XG4gICAgLnByb2dyZXNzIHtcbiAgICAgIEBhcHBseSByZWxhdGl2ZSBweS04O1xuICAgIH1cblxuICAgICZfbGluZWFyIHtcbiAgICAgIEBhcHBseSBib3JkZXItbm9uZTtcblxuICAgICAgLnByb2dyZXNzIHtcbiAgICAgICAgQGFwcGx5IHAtMCBoLTA7XG4gICAgICB9XG5cbiAgICAgIC5wcm9ncmVzc19fd3JhcHBlciB7XG4gICAgICAgIEBhcHBseSBoLTAgLW10LTE7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbjpnbG9iYWwoLmRhcmspIHtcbiAgLnRoZWFkIHtcbiAgICBAYXBwbHkgZGl2aWRlLXkgZGl2aWRlLXdoaXRlL1swLjEyXTtcblxuICAgICYuc3RpY2t5X19oZWFkZXIuc3RpY2tfX3RvcCB7XG4gICAgICB0aCB7XG4gICAgICAgIEBhcHBseSBiZy1bIzEyMTIxMl0gYm9yZGVyLWIgYm9yZGVyLWItd2hpdGUvWzAuMTJdO1xuICAgICAgfVxuICAgIH1cblxuICAgIC50ciB7XG4gICAgICAudGgge1xuICAgICAgICBAYXBwbHkgdGV4dC13aGl0ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuaW1wb3J0IFJ1aUJ1dHRvbiBmcm9tICdAL2NvbXBvbmVudHMvYnV0dG9ucy9idXR0b24vUnVpQnV0dG9uLnZ1ZSc7XG5pbXBvcnQgUnVpTWVudVNlbGVjdCBmcm9tICdAL2NvbXBvbmVudHMvZm9ybXMvc2VsZWN0L1J1aU1lbnVTZWxlY3QudnVlJztcbmltcG9ydCBSdWlJY29uIGZyb20gJ0AvY29tcG9uZW50cy9pY29ucy9SdWlJY29uLnZ1ZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVQYWdpbmF0aW9uRGF0YSB7XG4gIHBhZ2U6IG51bWJlcjtcbiAgdG90YWw6IG51bWJlcjtcbiAgbGltaXQ6IG51bWJlcjtcbiAgbGltaXRzPzogbnVtYmVyW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvcHMge1xuICBtb2RlbFZhbHVlOiBUYWJsZVBhZ2luYXRpb25EYXRhO1xuICBkZW5zZT86IGJvb2xlYW47XG4gIGRpc2FibGVQZXJQYWdlPzogYm9vbGVhbjtcbiAgbG9hZGluZz86IGJvb2xlYW47XG59XG5cbmNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gIGRlbnNlOiBmYWxzZSxcbiAgbG9hZGluZzogZmFsc2UsXG4gIGRpc2FibGVQZXJQYWdlOiBmYWxzZSxcbn0pO1xuXG5jb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8e1xuICAoZTogJ3VwZGF0ZTptb2RlbC12YWx1ZScsIHZhbHVlOiBUYWJsZVBhZ2luYXRpb25EYXRhKTogdm9pZDtcbn0+KCk7XG5cbmNvbnN0IHsgbW9kZWxWYWx1ZSB9ID0gdG9SZWZzKHByb3BzKTtcblxuY29uc3QgdGFibGVEZWZhdWx0cyA9IHVzZVRhYmxlKCk7XG5cbmNvbnN0IGxpbWl0cyA9IGNvbXB1dGVkKCgpID0+IChnZXQobW9kZWxWYWx1ZSkubGltaXRzID8/IGdldCh0YWJsZURlZmF1bHRzLmxpbWl0cykpLm1hcChsaW1pdCA9PiAoeyBsaW1pdCB9KSkpO1xuXG5jb25zdCBjdXJyZW50TGltaXQgPSBjb21wdXRlZCh7XG4gIGdldDogKCkgPT4gZ2V0KG1vZGVsVmFsdWUpLmxpbWl0LFxuICBzZXQ6IGxpbWl0ID0+XG4gICAgZW1pdCgndXBkYXRlOm1vZGVsLXZhbHVlJywge1xuICAgICAgLi4uZ2V0KG1vZGVsVmFsdWUpLFxuICAgICAgbGltaXQ6IE51bWJlcihsaW1pdCksXG4gICAgICBwYWdlOiAxLFxuICAgIH0pLFxufSk7XG5cbmNvbnN0IHBhZ2VzID0gY29tcHV0ZWQoKCkgPT4ge1xuICBjb25zdCB7IGxpbWl0LCB0b3RhbCB9ID0gZ2V0KG1vZGVsVmFsdWUpO1xuICBpZiAoIXRvdGFsKVxuICAgIHJldHVybiAwO1xuXG4gIHJldHVybiBNYXRoLmNlaWwodG90YWwgLyBsaW1pdCk7XG59KTtcblxuY29uc3QgcmFuZ2VzID0gY29tcHV0ZWQoKCkgPT4ge1xuICBjb25zdCBzZWdtZW50cyA9IFtdO1xuXG4gIGZvciAobGV0IHBhZ2UgPSAxOyBwYWdlIDw9IGdldChwYWdlcyk7IHBhZ2UrKylcbiAgICBzZWdtZW50cy5wdXNoKHsgcGFnZSwgdGV4dDogcGFnZVJhbmdlVGV4dChwYWdlKSB9KTtcblxuICByZXR1cm4gc2VnbWVudHM7XG59KTtcblxuY29uc3QgaW5kaWNhdG9yVGV4dCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgY29uc3QgeyB0b3RhbCB9ID0gZ2V0KG1vZGVsVmFsdWUpO1xuICByZXR1cm4gYCR7IXRvdGFsID8gJzAgJyA6ICcnfW9mICR7Zm9ybWF0SW50ZWdlcih0b3RhbCl9YDtcbn0pO1xuXG5jb25zdCBjdXJyZW50UmFuZ2UgPSBjb21wdXRlZCh7XG4gIGdldDogKCkgPT4gZ2V0KG1vZGVsVmFsdWUpLnBhZ2UsXG4gIHNldDogcGFnZSA9PlxuICAgIGVtaXQoJ3VwZGF0ZTptb2RlbC12YWx1ZScsIHtcbiAgICAgIC4uLmdldChtb2RlbFZhbHVlKSxcbiAgICAgIHBhZ2UsXG4gICAgfSksXG59KTtcblxuY29uc3QgaGFzUHJldiA9IGNvbXB1dGVkKCgpID0+IGdldChtb2RlbFZhbHVlKS5wYWdlID4gMSk7XG5jb25zdCBoYXNOZXh0ID0gY29tcHV0ZWQoKCkgPT4gZ2V0KHBhZ2VzKSA+IGdldChtb2RlbFZhbHVlKS5wYWdlKTtcblxuZnVuY3Rpb24gZ29Ub1BhZ2UocGFnZTogbnVtYmVyKSB7XG4gIGVtaXQoJ3VwZGF0ZTptb2RlbC12YWx1ZScsIHtcbiAgICAuLi5nZXQobW9kZWxWYWx1ZSksXG4gICAgcGFnZSxcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHBhZ2VSYW5nZVRleHQocGFnZTogbnVtYmVyKSB7XG4gIGNvbnN0IHsgbGltaXQsIHRvdGFsIH0gPSBnZXQobW9kZWxWYWx1ZSk7XG4gIHJldHVybiBgJHtmb3JtYXRJbnRlZ2VyKChwYWdlIC0gMSkgKiBsaW1pdCArIDEpfSAtICR7Zm9ybWF0SW50ZWdlcihcbiAgICBNYXRoLm1pbihwYWdlICogbGltaXQsIHRvdGFsKSxcbiAgKX1gO1xufVxuXG5mdW5jdGlvbiBvbk5hdmlnYXRlKGRlbHRhOiBudW1iZXIpIHtcbiAgZ29Ub1BhZ2UoZ2V0KG1vZGVsVmFsdWUpLnBhZ2UgKyBkZWx0YSk7XG59XG5cbmZ1bmN0aW9uIG9uUHJldigpIHtcbiAgaWYgKCFnZXQoaGFzUHJldikpXG4gICAgcmV0dXJuO1xuXG4gIG9uTmF2aWdhdGUoLTEpO1xufVxuXG5mdW5jdGlvbiBvbk5leHQoKSB7XG4gIGlmICghZ2V0KGhhc05leHQpKVxuICAgIHJldHVybjtcblxuICBvbk5hdmlnYXRlKDEpO1xufVxuXG5mdW5jdGlvbiBvbkZpcnN0KCkge1xuICBpZiAoIWdldChoYXNQcmV2KSlcbiAgICByZXR1cm47XG5cbiAgZ29Ub1BhZ2UoMSk7XG59XG5cbmZ1bmN0aW9uIG9uTGFzdCgpIHtcbiAgaWYgKCFnZXQoaGFzTmV4dCkpXG4gICAgcmV0dXJuO1xuXG4gIGdvVG9QYWdlKGdldChwYWdlcykpO1xufVxuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiA6Y2xhc3M9XCJbJHN0eWxlLndyYXBwZXIsIHsgWyRzdHlsZVsnd3JhcHBlci1kZW5zZSddID8/ICcnXTogZGVuc2UgfV1cIj5cbiAgICA8ZGl2IDpjbGFzcz1cIiRzdHlsZS5saW1pdFwiPlxuICAgICAgPHNwYW4gOmNsYXNzPVwiJHN0eWxlLmxpbWl0X190ZXh0XCI+Um93cyBwZXIgcGFnZTo8L3NwYW4+XG4gICAgICA8UnVpTWVudVNlbGVjdFxuICAgICAgICB2LW1vZGVsPVwiY3VycmVudExpbWl0XCJcbiAgICAgICAgOm9wdGlvbnM9XCJsaW1pdHNcIlxuICAgICAgICA6ZGlzYWJsZWQ9XCJsb2FkaW5nIHx8IGRpc2FibGVQZXJQYWdlXCJcbiAgICAgICAgbGFiZWwtY2xhc3M9XCIhdGV4dC14cyAhbWluLWgtOFwiXG4gICAgICAgIG5hbWU9XCJsaW1pdFwiXG4gICAgICAgIGtleS1hdHRyPVwibGltaXRcIlxuICAgICAgICB0ZXh0LWF0dHI9XCJsaW1pdFwiXG4gICAgICAgIGhpZGUtZGV0YWlsc1xuICAgICAgICBkZW5zZVxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IDpjbGFzcz1cIiRzdHlsZS5yYW5nZXNcIj5cbiAgICAgIDxzcGFuIDpjbGFzcz1cIiRzdHlsZS5yYW5nZXNfX3RleHRcIj5JdGVtcyAjPC9zcGFuPlxuICAgICAgPFJ1aU1lbnVTZWxlY3RcbiAgICAgICAgdi1pZj1cInJhbmdlcy5sZW5ndGggPiAwXCJcbiAgICAgICAgdi1tb2RlbD1cImN1cnJlbnRSYW5nZVwiXG4gICAgICAgIDpvcHRpb25zPVwicmFuZ2VzXCJcbiAgICAgICAgOmRpc2FibGVkPVwibG9hZGluZ1wiXG4gICAgICAgIGxhYmVsLWNsYXNzPVwiIXRleHQteHMgIW1pbi1oLThcIlxuICAgICAgICBuYW1lPVwicmFuZ2VzXCJcbiAgICAgICAga2V5LWF0dHI9XCJwYWdlXCJcbiAgICAgICAgdGV4dC1hdHRyPVwidGV4dFwiXG4gICAgICAgIGhpZGUtZGV0YWlsc1xuICAgICAgICBkZW5zZVxuICAgICAgLz5cbiAgICAgIDxzcGFuIDpjbGFzcz1cIiRzdHlsZS5pbmRpY2F0b3JcIj5cbiAgICAgICAge3sgaW5kaWNhdG9yVGV4dCB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgOmNsYXNzPVwiJHN0eWxlLm5hdmlnYXRpb25cIj5cbiAgICAgIDxSdWlCdXR0b25cbiAgICAgICAgOnNpemU9XCJkZW5zZSA/ICdzbScgOiB1bmRlZmluZWRcIlxuICAgICAgICA6ZGlzYWJsZWQ9XCIhaGFzUHJldiB8fCBsb2FkaW5nXCJcbiAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICBpY29uXG4gICAgICAgIEBjbGljaz1cIm9uRmlyc3QoKVwiXG4gICAgICA+XG4gICAgICAgIDxSdWlJY29uIG5hbWU9XCJsdS1jaGV2cm9ucy1sZWZ0XCIgLz5cbiAgICAgIDwvUnVpQnV0dG9uPlxuICAgICAgPFJ1aUJ1dHRvblxuICAgICAgICA6c2l6ZT1cImRlbnNlID8gJ3NtJyA6IHVuZGVmaW5lZFwiXG4gICAgICAgIDpkaXNhYmxlZD1cIiFoYXNQcmV2IHx8IGxvYWRpbmdcIlxuICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgIGljb25cbiAgICAgICAgQGNsaWNrPVwib25QcmV2KClcIlxuICAgICAgPlxuICAgICAgICA8UnVpSWNvbiBuYW1lPVwibHUtY2hldnJvbi1sZWZ0XCIgLz5cbiAgICAgIDwvUnVpQnV0dG9uPlxuICAgICAgPFJ1aUJ1dHRvblxuICAgICAgICA6c2l6ZT1cImRlbnNlID8gJ3NtJyA6IHVuZGVmaW5lZFwiXG4gICAgICAgIDpkaXNhYmxlZD1cIiFoYXNOZXh0IHx8IGxvYWRpbmdcIlxuICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgIGljb25cbiAgICAgICAgQGNsaWNrPVwib25OZXh0KClcIlxuICAgICAgPlxuICAgICAgICA8UnVpSWNvbiBuYW1lPVwibHUtY2hldnJvbi1yaWdodFwiIC8+XG4gICAgICA8L1J1aUJ1dHRvbj5cbiAgICAgIDxSdWlCdXR0b25cbiAgICAgICAgOnNpemU9XCJkZW5zZSA/ICdzbScgOiB1bmRlZmluZWRcIlxuICAgICAgICA6ZGlzYWJsZWQ9XCIhaGFzTmV4dCB8fCBsb2FkaW5nXCJcbiAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICBpY29uXG4gICAgICAgIEBjbGljaz1cIm9uTGFzdCgpXCJcbiAgICAgID5cbiAgICAgICAgPFJ1aUljb24gbmFtZT1cImx1LWNoZXZyb25zLXJpZ2h0XCIgLz5cbiAgICAgIDwvUnVpQnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBtb2R1bGUgbGFuZz1cInNjc3NcIj5cbi53cmFwcGVyIHtcbiAgQGFwcGx5IHJlbGF0aXZlIGZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWVuZCBnYXAteC00IGdhcC15LTA7XG5cbiAgLmxpbWl0IHtcbiAgICBAYXBwbHkgZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0yIHRleHQtY2FwdGlvbjtcblxuICAgICZfX3RleHQge1xuICAgICAgQGFwcGx5IHRleHQtcnVpLXRleHQtc2Vjb25kYXJ5IHdoaXRlc3BhY2Utbm93cmFwIHB5LTM7XG4gICAgfVxuICB9XG5cbiAgLnJhbmdlcyB7XG4gICAgQGFwcGx5IGZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMiB0ZXh0LWNhcHRpb24gcHItMjtcblxuICAgICZfX3RleHQge1xuICAgICAgQGFwcGx5IHRleHQtcnVpLXRleHQtc2Vjb25kYXJ5IHdoaXRlc3BhY2Utbm93cmFwIHB5LTM7XG4gICAgfVxuICB9XG5cbiAgLmluZGljYXRvciB7XG4gICAgQGFwcGx5IHRleHQtcnVpLXRleHQgdGV4dC1jYXB0aW9uIHdoaXRlc3BhY2Utbm93cmFwO1xuICB9XG5cbiAgLm5hdmlnYXRpb24ge1xuICAgIEBhcHBseSBmbGV4IGl0ZW1zLWNlbnRlcjtcbiAgfVxuXG4gICYtZGVuc2Uge1xuICAgIEBhcHBseSBnYXAteC0yO1xuICB9XG59XG48L3N0eWxlPlxuIiwiZXhwb3J0IGRlZmF1bHQgXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNjc3ZnJTIweG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUyMHdpZHRoPScxNTInJTIwaGVpZ2h0PScxMjQnJTIwZmlsbD0nbm9uZSclM2UlM2NjaXJjbGUlMjBjeD0nNzYnJTIwY3k9JzU4JyUyMHI9JzUyJyUyMGZpbGw9JyUyM2VhZWFlYicvJTNlJTNjZyUyMGZpbGw9JyUyM2YyZjJmMyclM2UlM2NjaXJjbGUlMjBjeD0nMjEnJTIwY3k9JzI1JyUyMHI9JzUnLyUzZSUzY2NpcmNsZSUyMGN4PScxOCclMjBjeT0nMTA5JyUyMHI9JzcnLyUzZSUzY2NpcmNsZSUyMGN4PScxNDUnJTIwY3k9JzQxJyUyMHI9JzcnLyUzZSUzY2NpcmNsZSUyMGN4PScxMzQnJTIwY3k9JzE0JyUyMHI9JzQnLyUzZSUzYy9nJTNlJTNjZyUyMGZpbHRlcj0ndXJsKCUyM0IpJyUzZSUzY3BhdGglMjBkPSdNNzYlMjAzNi4wNjNsNC41MzYtMS45LTQuNTM1JTIwMS45MzJWOTAuMTlsNDEuNzk1LTE3LjUxNFYxOC41NTdsLjIwNC0uMDg1LS4yMDQtLjA5di0uMDkxbC0uMTA0LjA0NUw3Ni4zMyUyMDAlMjAzNCUyMDE4LjAzMWwuMi4wODYtLjIlMjA1My44OTklMjA0MiUyMDE4LjE0MVYzNi4wNjN6JyUyMGZpbGw9JyUyM2ZhZmFmYScvJTNlJTNjcGF0aCUyMGQ9J003NiUyMDM2LjA2M3Y1NC4wOTVMMzQlMjA3Mi4wMTdsLjItNTMuODk5TDc2JTIwMzYuMDYzeiclMjBmaWxsPSd1cmwoJTIzQyknLyUzZSUzY3BhdGglMjBkPSdNNzYuMDAxJTIwMzYuMDk1VjkwLjE5bDQxLjc5Ni0xNy41MTRWMTguMjlMNzYuMDAxJTIwMzYuMDk1eiclMjBmaWxsPSd1cmwoJTIzRCknLyUzZSUzY3BhdGglMjBkPSdNNzYlMjAzNi4wNjNsNDItMTcuNTkyTDc2LjMzJTIwMCUyMDM0JTIwMTguMDMxbDQyJTIwMTguMDMxeiclMjBmaWxsPSclMjNmMmYyZjMnLyUzZSUzY3BhdGglMjBkPSdNNDkuODMyJTIwMTEuMjg3bDQxLjg0JTIwMTguMjExLjM4JTIwMTMuMjcxJTIwMTEuNzA2LTQuODMtLjM1NC0xMy4zNTVMNjAuMzI3JTIwNi44MTdsLTEwLjQ5NSUyMDQuNDd6JyUyMGZpbGw9JyUyM2VhZWFlYicvJTNlJTNjL2clM2UlM2NtYXNrJTIwaWQ9J0EnJTIwbWFza1VuaXRzPSd1c2VyU3BhY2VPblVzZSclMjB4PSc1MiclMjB5PSc2OCclMjB3aWR0aD0nNDgnJTIwaGVpZ2h0PSc0OCclMjBtYXNrLXR5cGU9J2FscGhhJyUzZSUzY3BhdGglMjB0cmFuc2Zvcm09J3RyYW5zbGF0ZSg1MiUyMDY4KSclMjBmaWxsPSd1cmwoJTIzRSknJTIwZD0nTTAlMjAwaDQ4djQ4SDB6Jy8lM2UlM2MvbWFzayUzZSUzY2clMjBtYXNrPSd1cmwoJTIzQSknJTNlJTNjY2lyY2xlJTIwY3g9Jzc2JyUyMGN5PSc5MiclMjByPScyMy41JyUyMGZpbGw9JyUyM2ZhZmFmYSclMjBzdHJva2U9JyUyM2VhZWFlYicvJTNlJTNjL2clM2UlM2NyZWN0JTIweD0nNjAnJTIweT0nNzYnJTIwd2lkdGg9JzMyJyUyMGhlaWdodD0nMzInJTIwcng9JzE2JyUyMGZpbGw9JyUyMzAwMCclMjBmaWxsLW9wYWNpdHk9Jy4zJy8lM2UlM2NnJTIwY2xpcC1wYXRoPSd1cmwoJTIzRiknJTNlJTNjcGF0aCUyMGQ9J003NiUyMDg4LjY2N1Y5Mm0wJTIwMy4zMzNoLjAwOE04NC4zMzQlMjA5MmMwJTIwNC42MDItMy43MzElMjA4LjMzMy04LjMzMyUyMDguMzMzcy04LjMzMy0zLjczLTguMzMzLTguMzMzJTIwMy43MzEtOC4zMzMlMjA4LjMzMy04LjMzMyUyMDguMzMzJTIwMy43MzElMjA4LjMzMyUyMDguMzMzeiclMjBzdHJva2U9JyUyM2ZmZiclMjBzdHJva2Utd2lkdGg9JzEuNjcnJTIwc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyUyMHN0cm9rZS1saW5lam9pbj0ncm91bmQnLyUzZSUzYy9nJTNlJTNjZGVmcyUzZSUzY2ZpbHRlciUyMGlkPSdCJyUyMHg9JzE0JyUyMHk9JzAnJTIwd2lkdGg9JzEyNCclMjBoZWlnaHQ9JzEzMC4xOSclMjBmaWx0ZXJVbml0cz0ndXNlclNwYWNlT25Vc2UnJTIwY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSdzUkdCJyUzZSUzY2ZlRmxvb2QlMjBmbG9vZC1vcGFjaXR5PScwJyUyMHJlc3VsdD0nQScvJTNlJTNjZmVDb2xvck1hdHJpeCUyMGluPSdTb3VyY2VBbHBoYSclMjB2YWx1ZXM9JzAlMjAwJTIwMCUyMDAlMjAwJTIwMCUyMDAlMjAwJTIwMCUyMDAlMjAwJTIwMCUyMDAlMjAwJTIwMCUyMDAlMjAwJTIwMCUyMDEyNyUyMDAnJTIwcmVzdWx0PSdCJy8lM2UlM2NmZU1vcnBob2xvZ3klMjByYWRpdXM9JzQnJTIwaW49J1NvdXJjZUFscGhhJyUyMHJlc3VsdD0nQycvJTNlJTNjZmVPZmZzZXQlMjBkeT0nOCcvJTNlJTNjZmVHYXVzc2lhbkJsdXIlMjBzdGREZXZpYXRpb249JzQnLyUzZSUzY2ZlQ29tcG9zaXRlJTIwaW4yPSdCJyUyMG9wZXJhdG9yPSdvdXQnLyUzZSUzY2ZlQ29sb3JNYXRyaXglMjB2YWx1ZXM9JzAlMjAwJTIwMCUyMDAlMjAwLjA2Mjc0NTElMjAwJTIwMCUyMDAlMjAwJTIwMC4wOTQxMTc2JTIwMCUyMDAlMjAwJTIwMCUyMDAuMTU2ODYzJTIwMCUyMDAlMjAwJTIwMC4wMyUyMDAnLyUzZSUzY2ZlQmxlbmQlMjBpbjI9J0EnJTIwcmVzdWx0PSdDJy8lM2UlM2NmZUNvbG9yTWF0cml4JTIwaW49J1NvdXJjZUFscGhhJyUyMHZhbHVlcz0nMCUyMDAlMjAwJTIwMCUyMDAlMjAwJTIwMCUyMDAlMjAwJTIwMCUyMDAlMjAwJTIwMCUyMDAlMjAwJTIwMCUyMDAlMjAwJTIwMTI3JTIwMCclMjByZXN1bHQ9J0InLyUzZSUzY2ZlTW9ycGhvbG9neSUyMHJhZGl1cz0nNCclMjBpbj0nU291cmNlQWxwaGEnLyUzZSUzY2ZlT2Zmc2V0JTIwZHk9JzIwJy8lM2UlM2NmZUdhdXNzaWFuQmx1ciUyMHN0ZERldmlhdGlvbj0nMTInLyUzZSUzY2ZlQ29tcG9zaXRlJTIwaW4yPSdCJyUyMG9wZXJhdG9yPSdvdXQnLyUzZSUzY2ZlQ29sb3JNYXRyaXglMjB2YWx1ZXM9JzAlMjAwJTIwMCUyMDAlMjAwLjA2Mjc0NTElMjAwJTIwMCUyMDAlMjAwJTIwMC4wOTQxMTc2JTIwMCUyMDAlMjAwJTIwMCUyMDAuMTU2ODYzJTIwMCUyMDAlMjAwJTIwMC4wOCUyMDAnLyUzZSUzY2ZlQmxlbmQlMjBpbjI9J0MnLyUzZSUzY2ZlQmxlbmQlMjBpbj0nU291cmNlR3JhcGhpYycvJTNlJTNjL2ZpbHRlciUzZSUzY2xpbmVhckdyYWRpZW50JTIwaWQ9J0MnJTIweDE9JzM0JyUyMHkxPSc3Mi4yODknJTIweDI9JzUwLjU4NyclMjB5Mj0nMjcuMzY3JyUyMGdyYWRpZW50VW5pdHM9J3VzZXJTcGFjZU9uVXNlJyUzZSUzY3N0b3AlMjBzdG9wLWNvbG9yPSclMjNkZWUxZTgnLyUzZSUzY3N0b3AlMjBvZmZzZXQ9JzEnJTIwc3RvcC1jb2xvcj0nJTIzZWZmMWY1Jy8lM2UlM2MvbGluZWFyR3JhZGllbnQlM2UlM2NsaW5lYXJHcmFkaWVudCUyMGlkPSdEJyUyMHgxPSc3NiclMjB5MT0nMzcuMTU0JyUyMHgyPScxMjMuMzU5JyUyMHkyPSc0Ni41ODMnJTIwZ3JhZGllbnRVbml0cz0ndXNlclNwYWNlT25Vc2UnJTNlJTNjc3RvcCUyMHN0b3AtY29sb3I9JyUyM2U0ZTdlYycvJTNlJTNjc3RvcCUyMG9mZnNldD0nMSclMjBzdG9wLWNvbG9yPSclMjNmMmY0ZjcnLyUzZSUzYy9saW5lYXJHcmFkaWVudCUzZSUzY2xpbmVhckdyYWRpZW50JTIwaWQ9J0UnJTIweDE9JzI0JyUyMHkxPScwJyUyMHgyPScyNCclMjB5Mj0nNDgnJTIwZ3JhZGllbnRVbml0cz0ndXNlclNwYWNlT25Vc2UnJTNlJTNjc3RvcC8lM2UlM2NzdG9wJTIwb2Zmc2V0PScxJyUyMHN0b3Atb3BhY2l0eT0nMCcvJTNlJTNjL2xpbmVhckdyYWRpZW50JTNlJTNjY2xpcFBhdGglMjBpZD0nRiclM2UlM2NwYXRoJTIwZmlsbD0nJTIzZmZmJyUyMHRyYW5zZm9ybT0ndHJhbnNsYXRlKDY2JTIwODIpJyUyMGQ9J00wJTIwMGgyMHYyMEgweicvJTNlJTNjL2NsaXBQYXRoJTNlJTNjL2RlZnMlM2UlM2Mvc3ZnJTNlXCIiLCJleHBvcnQgZGVmYXVsdCBcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM2NzdmclMjB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTIwd2lkdGg9JzE1MiclMjBoZWlnaHQ9JzEyNCclMjBmaWxsPSdub25lJyUzZSUzY2NpcmNsZSUyMGN4PSc3NiclMjBjeT0nNTgnJTIwcj0nNTInJTIwZmlsbD0nJTIzMzMzNzQxJy8lM2UlM2NnJTIwZmlsbD0nJTIzMWYyNDJmJyUzZSUzY2NpcmNsZSUyMGN4PScyMSclMjBjeT0nMjUnJTIwcj0nNScvJTNlJTNjY2lyY2xlJTIwY3g9JzE4JyUyMGN5PScxMDknJTIwcj0nNycvJTNlJTNjY2lyY2xlJTIwY3g9JzE0NSclMjBjeT0nNDEnJTIwcj0nNycvJTNlJTNjY2lyY2xlJTIwY3g9JzEzNCclMjBjeT0nMTQnJTIwcj0nNCcvJTNlJTNjL2clM2UlM2NwYXRoJTIwZD0nTTc2JTIwMzYuMDYzbDQuNTM2LTEuOS00LjUzNSUyMDEuOTMyVjkwLjE5bDQxLjc5NS0xNy41MTRWMTguNTU3bC4yMDQtLjA4NS0uMjA0LS4wOXYtLjA5MWwtLjEwNC4wNDVMNzYuMzMlMjAwJTIwMzQlMjAxOC4wMzFsLjIuMDg2LS4yJTIwNTMuODk5JTIwNDIlMjAxOC4xNDFWMzYuMDYzeiclMjBmaWxsPSclMjNmYWZhZmEnLyUzZSUzY3BhdGglMjBkPSdNNzYlMjAzNi4wNjN2NTQuMDk1TDM0JTIwNzIuMDE3bC4yLTUzLjg5OUw3NiUyMDM2LjA2M3onJTIwZmlsbD0ndXJsKCUyM0IpJy8lM2UlM2NwYXRoJTIwZD0nTTc2LjAwMSUyMDM2LjA5NVY5MC4xOWw0MS43OTYtMTcuNTE0VjE4LjI5TDc2LjAwMSUyMDM2LjA5NXonJTIwZmlsbD0ndXJsKCUyM0MpJy8lM2UlM2NwYXRoJTIwZD0nTTc2JTIwMzYuMDYzbDQyLTE3LjU5Mkw3Ni4zMyUyMDAlMjAzNCUyMDE4LjAzMWw0MiUyMDE4LjAzMXonJTIwZmlsbD0nJTIzMWYyNDJmJy8lM2UlM2NwYXRoJTIwZD0nTTQ5LjgzMiUyMDExLjI4N2w0MS44NCUyMDE4LjIxMS4zOCUyMDEzLjI3MSUyMDExLjcwNi00LjgzLS4zNTQtMTMuMzU1TDYwLjMyNyUyMDYuODE3bC0xMC40OTUlMjA0LjQ3eiclMjBmaWxsPSclMjMzMzM3NDEnLyUzZSUzY21hc2slMjBpZD0nQSclMjBtYXNrVW5pdHM9J3VzZXJTcGFjZU9uVXNlJyUyMHg9JzUyJyUyMHk9JzY4JyUyMHdpZHRoPSc0OCclMjBoZWlnaHQ9JzQ4JyUyMG1hc2stdHlwZT0nYWxwaGEnJTNlJTNjcGF0aCUyMHRyYW5zZm9ybT0ndHJhbnNsYXRlKDUyJTIwNjgpJyUyMGZpbGw9J3VybCglMjNEKSclMjBkPSdNMCUyMDBoNDh2NDhIMHonLyUzZSUzYy9tYXNrJTNlJTNjZyUyMG1hc2s9J3VybCglMjNBKSclM2UlM2NjaXJjbGUlMjBjeD0nNzYnJTIwY3k9JzkyJyUyMHI9JzIzLjUnJTIwZmlsbD0nJTIzMTYxYjI2JyUyMHN0cm9rZT0nJTIzMzMzNzQxJy8lM2UlM2MvZyUzZSUzY3JlY3QlMjB4PSc2MCclMjB5PSc3NiclMjB3aWR0aD0nMzInJTIwaGVpZ2h0PSczMiclMjByeD0nMTYnJTIwZmlsbD0nJTIzMTYxYjI2Jy8lM2UlM2NnJTIwY2xpcC1wYXRoPSd1cmwoJTIzRSknJTNlJTNjcGF0aCUyMGQ9J003NiUyMDg4LjY2N1Y5Mm0wJTIwMy4zMzNoLjAwOE04NC4zMzQlMjA5MmMwJTIwNC42MDItMy43MzElMjA4LjMzMy04LjMzMyUyMDguMzMzcy04LjMzMy0zLjczLTguMzMzLTguMzMzJTIwMy43MzEtOC4zMzMlMjA4LjMzMy04LjMzMyUyMDguMzMzJTIwMy43MzElMjA4LjMzMyUyMDguMzMzeiclMjBzdHJva2U9JyUyM2ZmZiclMjBzdHJva2Utd2lkdGg9JzEuNjcnJTIwc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyUyMHN0cm9rZS1saW5lam9pbj0ncm91bmQnLyUzZSUzYy9nJTNlJTNjZGVmcyUzZSUzY2xpbmVhckdyYWRpZW50JTIwaWQ9J0InJTIweDE9JzM0JyUyMHkxPSc3Mi4yODknJTIweDI9JzUwLjU4NyclMjB5Mj0nMjcuMzY3JyUyMGdyYWRpZW50VW5pdHM9J3VzZXJTcGFjZU9uVXNlJyUzZSUzY3N0b3AlMjBzdG9wLWNvbG9yPSclMjMzYjQzNTQnLyUzZSUzY3N0b3AlMjBvZmZzZXQ9JzEnJTIwc3RvcC1jb2xvcj0nJTIzMWYyNDJmJy8lM2UlM2MvbGluZWFyR3JhZGllbnQlM2UlM2NsaW5lYXJHcmFkaWVudCUyMGlkPSdDJyUyMHgxPSc3NiclMjB5MT0nMzcuMTU0JyUyMHgyPScxMjMuMzU5JyUyMHkyPSc0Ni41ODMnJTIwZ3JhZGllbnRVbml0cz0ndXNlclNwYWNlT25Vc2UnJTNlJTNjc3RvcCUyMHN0b3AtY29sb3I9JyUyMzNiNDM1NCcvJTNlJTNjc3RvcCUyMG9mZnNldD0nMSclMjBzdG9wLWNvbG9yPSclMjMxZjI0MmYnLyUzZSUzYy9saW5lYXJHcmFkaWVudCUzZSUzY2xpbmVhckdyYWRpZW50JTIwaWQ9J0QnJTIweDE9JzI0JyUyMHkxPScwJyUyMHgyPScyNCclMjB5Mj0nNDgnJTIwZ3JhZGllbnRVbml0cz0ndXNlclNwYWNlT25Vc2UnJTNlJTNjc3RvcC8lM2UlM2NzdG9wJTIwb2Zmc2V0PScxJyUyMHN0b3Atb3BhY2l0eT0nMCcvJTNlJTNjL2xpbmVhckdyYWRpZW50JTNlJTNjY2xpcFBhdGglMjBpZD0nRSclM2UlM2NwYXRoJTIwZmlsbD0nJTIzZmZmJyUyMHRyYW5zZm9ybT0ndHJhbnNsYXRlKDY2JTIwODIpJyUyMGQ9J00wJTIwMGgyMHYyMEgweicvJTNlJTNjL2NsaXBQYXRoJTNlJTNjL2RlZnMlM2UlM2Mvc3ZnJTNlXCIiLCI8c2NyaXB0XG4gIGxhbmc9XCJ0c1wiXG4gIHNldHVwXG4gIGdlbmVyaWM9XCJUIGV4dGVuZHMgb2JqZWN0LCBJZFR5cGUgZXh0ZW5kcyBrZXlvZiBUID0ga2V5b2YgVFwiXG4+XG5pbXBvcnQgUnVpQnV0dG9uIGZyb20gJ0AvY29tcG9uZW50cy9idXR0b25zL2J1dHRvbi9SdWlCdXR0b24udnVlJztcbmltcG9ydCBSdWlDaGVja2JveCBmcm9tICdAL2NvbXBvbmVudHMvZm9ybXMvY2hlY2tib3gvUnVpQ2hlY2tib3gudnVlJztcbmltcG9ydCBSdWlJY29uIGZyb20gJ0AvY29tcG9uZW50cy9pY29ucy9SdWlJY29uLnZ1ZSc7XG5pbXBvcnQgUnVpVG9vbHRpcCBmcm9tICdAL2NvbXBvbmVudHMvb3ZlcmxheXMvdG9vbHRpcC9SdWlUb29sdGlwLnZ1ZSc7XG5pbXBvcnQgUnVpUHJvZ3Jlc3MgZnJvbSAnQC9jb21wb25lbnRzL3Byb2dyZXNzL1J1aVByb2dyZXNzLnZ1ZSc7XG5pbXBvcnQgUnVpRXhwYW5kQnV0dG9uIGZyb20gJ0AvY29tcG9uZW50cy90YWJsZXMvUnVpRXhwYW5kQnV0dG9uLnZ1ZSc7XG5pbXBvcnQgUnVpVGFibGVIZWFkLCB7IHR5cGUgR3JvdXBEYXRhLCB0eXBlIEdyb3VwS2V5cywgdHlwZSBOb25lU29ydGFibGVUYWJsZUNvbHVtbiwgdHlwZSBTb3J0Q29sdW1uLCB0eXBlIFRhYmxlQ29sdW1uLCB0eXBlIFRhYmxlUm93S2V5LCB0eXBlIFRhYmxlUm93S2V5RGF0YSwgdHlwZSBUYWJsZVNvcnREYXRhIH0gZnJvbSAnQC9jb21wb25lbnRzL3RhYmxlcy9SdWlUYWJsZUhlYWQudnVlJztcbmltcG9ydCBSdWlUYWJsZVBhZ2luYXRpb24sIHsgdHlwZSBUYWJsZVBhZ2luYXRpb25EYXRhIH0gZnJvbSAnQC9jb21wb25lbnRzL3RhYmxlcy9SdWlUYWJsZVBhZ2luYXRpb24udnVlJztcbmltcG9ydCBub0RhdGFQbGFjZWhvbGRlciBmcm9tICdAL2NvbXBvbmVudHMvdGFibGVzL3RhYmxlX25vX2RhdGFfcGxhY2Vob2xkZXIuc3ZnJztcbmltcG9ydCBub0RhdGFQbGFjZWhvbGRlckRhcmsgZnJvbSAnQC9jb21wb25lbnRzL3RhYmxlcy90YWJsZV9ub19kYXRhX3BsYWNlaG9sZGVyX2Rhcmsuc3ZnJztcbmltcG9ydCB7IGFzc2VydCB9IGZyb20gJ0AvdXRpbHMvYXNzZXJ0JztcblxuZXhwb3J0IGludGVyZmFjZSBUYWJsZU9wdGlvbnM8VD4ge1xuICBwYWdpbmF0aW9uPzogVGFibGVQYWdpbmF0aW9uRGF0YTtcbiAgc29ydD86IFRhYmxlU29ydERhdGE8VD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR3JvdXBIZWFkZXI8VD4ge1xuICBfX2hlYWRlcl9fOiB0cnVlO1xuICBpZGVudGlmaWVyOiBzdHJpbmc7XG4gIGdyb3VwOiBQYXJ0aWFsPFQ+O1xufVxuXG5leHBvcnQgdHlwZSBHcm91cGVkVGFibGVSb3c8VD4gPSBUIHwgR3JvdXBIZWFkZXI8VD47XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvcHM8VCwgSyBleHRlbmRzIGtleW9mIFQ+IHtcbiAgLyoqXG4gICAqIGxpc3Qgb2YgaXRlbXMgZm9yIGVhY2ggcm93XG4gICAqL1xuICByb3dzOiBUW107XG4gIC8qKlxuICAgKiB0aGUgYXR0cmlidXRlIHVzZWQgdG8gaWRlbnRpZnkgZWFjaCByb3cgdW5pcXVlbHkgZm9yIHNlbGVjdGlvbiwgdXN1YWxseSBgaWRgXG4gICAqL1xuICByb3dBdHRyOiBLO1xuICAvKipcbiAgICogbW9kZWwgZm9yIHNlbGVjdGVkIHJvd3MsIGFkZCBhIHYtbW9kZWwgdG8gc3VwcG9ydCByb3cgc2VsZWN0aW9uXG4gICAqL1xuICBtb2RlbFZhbHVlPzogVFtLXVtdO1xuICAvKipcbiAgICogbW9kZWwgZm9yIGludGVybmFsIHNlYXJjaGluZ1xuICAgKi9cbiAgc2VhcmNoPzogc3RyaW5nO1xuICAvKipcbiAgICogbW9kZWwgZm9yIGl0ZW1zIHBlciBwYWdlXG4gICAqIHdpbGwgYmUgdXNlZCBpZiB0aGUgYHBhZ2luYXRpb25gIG1vZGVsIGlzbid0IHNwZWNpZmllZFxuICAgKi9cbiAgaXRlbXNQZXJQYWdlPzogbnVtYmVyO1xuICAvKipcbiAgICogbW9kZWwgZm9yIHBhZ2luYXRpbmcgZGF0YVxuICAgKiBAZXhhbXBsZSB2LW1vZGVsOnBhZ2luYXRpb249XCJ7IHRvdGFsOiAxMCwgbGltaXQ6IDUsIHBhZ2U6IDEgfVwiXG4gICAqL1xuICBwYWdpbmF0aW9uPzogVGFibGVQYWdpbmF0aW9uRGF0YTtcbiAgLyoqXG4gICAqIG1vZGlmaWVycyBmb3Igc3BlY2lmeWluZyBleHRlcm5hbGx5IHBhZ2luYXRlZCB0YWJsZXNcbiAgICogdXNlIHRoaXMgd2hlbiBhcGkgY29udHJvbHMgcGFnaW5hdGlvblxuICAgKiBAZXhhbXBsZSB2LW1vZGVsOnBhZ2luYXRpb24uZXh0ZXJuYWw9XCJ7IHRvdGFsOiAxMCwgbGltaXQ6IDUsIHBhZ2U6IDEgfVwiXG4gICAqL1xuICBwYWdpbmF0aW9uTW9kaWZpZXJzPzoge1xuICAgIGV4dGVybmFsOiBib29sZWFuO1xuICB9O1xuICAvKipcbiAgICogbW9kZWwgZm9yIHNvcnQgY29sdW1uL2NvbHVtbnMgZGF0YVxuICAgKiBzaW5nbGUgY29sdW1uIHNvcnRcbiAgICogQGV4YW1wbGUgdi1tb2RlbDpzb3J0PVwieyBjb2x1bW46ICduYW1lJywgZGlyZWN0aW9uOiAnYXNjJyB9XCJcbiAgICogbXVsdGkgY29sdW1ucyBzb3J0XG4gICAqIEBleGFtcGxlIHYtbW9kZWw6c29ydD1cIlt7IGNvbHVtbjogJ25hbWUnLCBkaXJlY3Rpb246ICdhc2MnIH1dXCJcbiAgICovXG4gIHNvcnQ/OiBUYWJsZVNvcnREYXRhPFQ+O1xuICAvKipcbiAgICogbW9kaWZpZXJzIGZvciBzcGVjaWZ5aW5nIGV4dGVybmFsbHkgc29ydGVkIHRhYmxlc1xuICAgKiB1c2UgdGhpcyB3aGVuIGFwaSBjb250cm9scyBzb3J0aW5nXG4gICAqIHNpbmdsZSBjb2x1bW4gc29ydFxuICAgKiBAZXhhbXBsZSB2LW1vZGVsOnNvcnQuZXh0ZXJuYWw9XCJ7IGNvbHVtbjogJ25hbWUnLCBkaXJlY3Rpb246ICdhc2MnIH1cIlxuICAgKiBtdWx0aSBjb2x1bW5zIHNvcnRcbiAgICogQGV4YW1wbGUgdi1tb2RlbDpzb3J0LmV4dGVybmFsPVwiW3sgY29sdW1uOiAnbmFtZScsIGRpcmVjdGlvbjogJ2FzYycgfV1cIlxuICAgKi9cbiAgc29ydE1vZGlmaWVycz86IHtcbiAgICBleHRlcm5hbDogYm9vbGVhbjtcbiAgfTtcbiAgLyoqXG4gICAqIGxpc3Qgb2YgY29sdW1uIGRlZmluaXRpb25zXG4gICAqL1xuICBjb2xzPzogVGFibGVDb2x1bW48VD5bXTtcbiAgLyoqXG4gICAqIGF0dHJpYnV0ZSB0byB1c2UgZnJvbSBjb2x1bW4gZGVmaW5pdGlvbnMgdG8gZGlzcGxheSBjb2x1bW4gdGl0bGVzXG4gICAqL1xuICBjb2x1bW5BdHRyPzoga2V5b2YgVGFibGVDb2x1bW48VD47XG4gIC8qKlxuICAgKiBmbGFnIHRvIHNob3cgYSBtb3JlIG9yIGxlc3Mgc3BhY2lvdXMgdGFibGVcbiAgICovXG4gIGRlbnNlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIGZsYWcgdG8gb3V0bGluZSB0aGUgZmxhZyB3aXRoIGEgYm9yZGVyXG4gICAqL1xuICBvdXRsaW5lZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBzaG91bGQgYWRkIHplYnJhLXN0cmlwaW5nIHRvIHRoZSB0YWJsZSByb3dcbiAgICovXG4gIHN0cmlwZWQ/OiBib29sZWFuO1xuICAvKipcbiAgICogZmxhZyB0byBzaG93IGxvYWRpbmcgc3RhdGUgb2YgdGhlIHRhYmxlXG4gICAqIHRyaWdnZXJzIGluZGVmaW5pdGUgcHJvZ3Jlc3MgYXQgdGhlIGJvdHRvbSBvZiB0aGUgdGFibGUgaGVhZGVyXG4gICAqL1xuICBsb2FkaW5nPzogYm9vbGVhbjtcbiAgZGlzYWJsZVBlclBhZ2U/OiBib29sZWFuO1xuICAvKipcbiAgICogZGF0YSB0byBkaXNwbGF5IGZvciBlbXB0eSBzdGF0ZVxuICAgKiB0ZXh0IGFuZCBpY29uXG4gICAqIEBleGFtcGxlIDplbXB0eT1cInsgaWNvbjogJ3RyYW5zYWN0aW9ucy1saW5lJywgbGFiZWw6ICdObyB0cmFuc2FjdGlvbnMgZm91bmQnIH1cIlxuICAgKi9cbiAgZW1wdHk/OiB7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIH07XG4gIC8qKlxuICAgKiBzaG91bGQgaGlkZSB0aGUgaGVhZGVyIG5hdmlnYXRpb25cbiAgICovXG4gIGhpZGVEZWZhdWx0SGVhZGVyPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIHNob3VsZCBoaWRlIHRoZSBmb290ZXIgbmF2aWdhdGlvblxuICAgKi9cbiAgaGlkZURlZmF1bHRGb290ZXI/OiBib29sZWFuO1xuXG4gIHJvdW5kZWQ/OiAnc20nIHwgJ21kJyB8ICdsZyc7XG4gIC8qKlxuICAgKiBtb2RlbCBmb3IgZXhwYW5kZWQgcm93c1xuICAgKi9cbiAgZXhwYW5kZWQ/OiBUW107XG4gIC8qKlxuICAgKiBtYWtlIGV4cGFuc2lvbiB3b3JrIGxpa2UgYWNjb3JkaW9uXG4gICAqL1xuICBzaW5nbGVFeHBhbmQ/OiBib29sZWFuO1xuICAvKipcbiAgICogbWFrZSB0YWJsZSBoZWFkIHN0aWNrIHRvIHRvcCBvbiBzY3JvbGxcbiAgICovXG4gIHN0aWNreUhlYWRlcj86IGJvb2xlYW47XG4gIHN0aWNreU9mZnNldD86IG51bWJlcjtcbiAgLyoqXG4gICAqIEFmZmVjdHMgaG93IHRoZSBpdGVtcyBwZXIgcGFnZSB3b3JrIGFjcm9zcyB0aGUgYXBwLlxuICAgKiBXaGVuIHRydWUsIGNoYW5naW5nIHRoZSBpdGVtcyBwZXIgcGFnZSBzZXR0aW5nIGluIG9uZSB0YWJsZSB3aWxsIGFmZmVjdCBvdGhlciB0YWJsZXMuXG4gICAqL1xuICBnbG9iYWxJdGVtc1BlclBhZ2U/OiBib29sZWFuO1xuICAvKipcbiAgICogbW9kZWwgZm9yIGdyb3VwaW5nIGNvbHVtbi9jb2x1bW5zIGRhdGFcbiAgICogc2luZ2xlIGNvbHVtbiBncm91cGluZ1xuICAgKiBAZXhhbXBsZSB2LW1vZGVsOmdyb3VwPVwiJ25hbWUnXCJcbiAgICogbXVsdGkgY29sdW1ucyBncm91cGluZ1xuICAgKiBAZXhhbXBsZSB2LW1vZGVsOmdyb3VwPVwiWyduYW1lJywgJ2NvdW50cnknXVwiXG4gICAqL1xuICBncm91cD86IFRhYmxlUm93S2V5RGF0YTxUPjtcbiAgZ3JvdXBFeHBhbmRCdXR0b25Qb3NpdGlvbj86ICdzdGFydCcgfCAnZW5kJztcbiAgY29sbGFwc2VkPzogVFtdO1xuICBkaXNhYmxlZFJvd3M/OiBUW107XG4gIG11bHRpUGFnZVNlbGVjdD86IGJvb2xlYW47XG4gIHNjcm9sbGVyPzogSFRNTEVsZW1lbnQgfCBudWxsO1xuICBpdGVtQ2xhc3M/OiAoKGl0ZW06IFQpID0+IHN0cmluZykgfCBzdHJpbmc7XG59XG5cbmRlZmluZU9wdGlvbnMoe1xuICBuYW1lOiAnUnVpRGF0YVRhYmxlJyxcbn0pO1xuXG5jb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wczxULCBJZFR5cGU+PigpLCB7XG4gIG1vZGVsVmFsdWU6IHVuZGVmaW5lZCxcbiAgc2VhcmNoOiAnJyxcbiAgY29sczogdW5kZWZpbmVkLFxuICBpdGVtc1BlclBhZ2U6IDEwLFxuICBwYWdpbmF0aW9uOiB1bmRlZmluZWQsXG4gIGNvbHVtbkF0dHI6ICdsYWJlbCcsXG4gIHNvcnQ6IHVuZGVmaW5lZCxcbiAgbG9hZGluZzogZmFsc2UsXG4gIGRlbnNlOiBmYWxzZSxcbiAgb3V0bGluZWQ6IGZhbHNlLFxuICBwYWdpbmF0aW9uTW9kaWZpZXJzOiB1bmRlZmluZWQsXG4gIHNvcnRNb2RpZmllcnM6IHVuZGVmaW5lZCxcbiAgZW1wdHk6ICgpID0+ICh7IGxhYmVsOiAnTm8gaXRlbSBmb3VuZCcgfSksXG4gIHJvdW5kZWQ6ICdtZCcsXG4gIGhpZGVEZWZhdWx0SGVhZGVyOiBmYWxzZSxcbiAgaGlkZURlZmF1bHRGb290ZXI6IGZhbHNlLFxuICBkaXNhYmxlUGVyUGFnZTogZmFsc2UsXG4gIHN0cmlwZWQ6IGZhbHNlLFxuICBleHBhbmRlZDogdW5kZWZpbmVkLFxuICBzaW5nbGVFeHBhbmQ6IGZhbHNlLFxuICBzdGlja3lIZWFkZXI6IGZhbHNlLFxuICBzdGlja3lPZmZzZXQ6IHVuZGVmaW5lZCxcbiAgZ2xvYmFsSXRlbXNQZXJQYWdlOiB1bmRlZmluZWQsXG4gIGdyb3VwOiB1bmRlZmluZWQsXG4gIGNvbGxhcHNlZDogdW5kZWZpbmVkLFxuICBkaXNhYmxlZFJvd3M6IHVuZGVmaW5lZCxcbiAgbXVsdGlQYWdlU2VsZWN0OiBmYWxzZSxcbiAgZ3JvdXBFeHBhbmRCdXR0b25Qb3NpdGlvbjogJ3N0YXJ0JyxcbiAgc2Nyb2xsZXI6IHVuZGVmaW5lZCxcbiAgaXRlbUNsYXNzOiAnJyxcbn0pO1xuXG5jb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8e1xuICAoZTogJ3VwZGF0ZTptb2RlbC12YWx1ZScsIHZhbHVlPzogVFtJZFR5cGVdW10pOiB2b2lkO1xuICAoZTogJ3VwZGF0ZTpleHBhbmRlZCcsIHZhbHVlOiBUW10pOiB2b2lkO1xuICAoZTogJ3VwZGF0ZTpwYWdpbmF0aW9uJywgdmFsdWU6IFRhYmxlUGFnaW5hdGlvbkRhdGEpOiB2b2lkO1xuICAoZTogJ3VwZGF0ZTpzb3J0JywgdmFsdWU/OiBUYWJsZVNvcnREYXRhPFQ+KTogdm9pZDtcbiAgKGU6ICd1cGRhdGU6b3B0aW9ucycsIHZhbHVlOiBUYWJsZU9wdGlvbnM8VD4pOiB2b2lkO1xuICAoZTogJ3VwZGF0ZTpncm91cCcsIHZhbHVlPzogR3JvdXBLZXlzPFQ+KTogdm9pZDtcbiAgKGU6ICd1cGRhdGU6Y29sbGFwc2VkJywgdmFsdWU/OiBUW10pOiB2b2lkO1xuICAoZTogJ2NvcHk6Z3JvdXAnLCB2YWx1ZTogR3JvdXBEYXRhPFQ+KTogdm9pZDtcbn0+KCk7XG5cbmNvbnN0IHNsb3RzID0gZGVmaW5lU2xvdHM8XG4gIFBhcnRpYWw8UmVjb3JkPGBoZWFkZXIuJHtzdHJpbmd9YCwgKHByb3BzOiB7XG4gICAgY29sdW1uOiBUYWJsZUNvbHVtbjxUPjtcbiAgfSkgPT4gYW55PlxuICAmIFJlY29yZDxgaXRlbS4ke3N0cmluZ31gLCAocHJvcHM6IHtcbiAgICBjb2x1bW46IFRhYmxlQ29sdW1uPFQ+O1xuICAgIHJvdzogVDtcbiAgICBpbmRleDogbnVtYmVyO1xuICB9KSA9PiBhbnk+XG4gICYge1xuICAgICdib2R5LnByZXBlbmQnOiAocHJvcHM6IHsgY29sc3BhbjogbnVtYmVyIH0pID0+IGFueTtcbiAgICAnYm9keS5hcHBlbmQnOiAocHJvcHM6IHsgY29sc3BhbjogbnVtYmVyIH0pID0+IGFueTtcbiAgICAnZ3JvdXAuaGVhZGVyJzogKHByb3BzOiB7XG4gICAgICBjb2xzcGFuOiBudW1iZXI7XG4gICAgICBoZWFkZXI6IEdyb3VwSGVhZGVyPFQ+O1xuICAgICAgaXNPcGVuOiBib29sZWFuO1xuICAgICAgdG9nZ2xlOiAoKSA9PiB2b2lkO1xuICAgIH0pID0+IGFueTtcbiAgICAnZ3JvdXAuaGVhZGVyLmNvbnRlbnQnOiAocHJvcHM6IHtcbiAgICAgIGhlYWRlcjogR3JvdXBIZWFkZXI8VD47XG4gICAgICBncm91cEtleTogc3RyaW5nO1xuICAgIH0pID0+IGFueTtcbiAgICAnZXhwYW5kZWQtaXRlbSc6IChwcm9wczogeyByb3c6IFQ7IGluZGV4OiBudW1iZXIgfSkgPT4gYW55O1xuICAgICduby1kYXRhJzogKCkgPT4gYW55O1xuICAgICdlbXB0eS1kZXNjcmlwdGlvbic6ICgpID0+IGFueTtcbiAgICAndGZvb3QnOiAoKSA9PiBhbnk7XG4gIH0+XG4+KCk7XG5cbmNvbnN0IHsgc3RpY2t5SGVhZGVyLCBjb2xsYXBzZWQsIG1vZGVsVmFsdWUsIGRpc2FibGVkUm93cyB9ID0gdG9SZWZzKHByb3BzKTtcbmNvbnN0IHRhYmxlRGVmYXVsdHMgPSB1c2VUYWJsZSgpO1xuXG5jb25zdCB7IGlzRGFyayB9ID0gdXNlUm90a2lUaGVtZSgpO1xuXG5jb25zdCBzdGlja3lIZWFkZXJPZmZzZXQgPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5zdGlja3lPZmZzZXQgIT09IHVuZGVmaW5lZCA/IHByb3BzLnN0aWNreU9mZnNldCA6IGdldCh0YWJsZURlZmF1bHRzLnN0aWNreU9mZnNldCkpO1xuXG5mdW5jdGlvbiBpc1JvdzxUIGV4dGVuZHMgb2JqZWN0PihpdGVtOiBHcm91cGVkVGFibGVSb3c8VD4pOiBpdGVtIGlzIFQge1xuICByZXR1cm4gISgnX19oZWFkZXJfXycgaW4gaXRlbSk7XG59XG5cbmZ1bmN0aW9uIGlzSGVhZGVyU2xvdChzbG90TmFtZTogc3RyaW5nKTogc2xvdE5hbWUgaXMgYGhlYWRlci4ke3N0cmluZ31gIHtcbiAgcmV0dXJuIHNsb3ROYW1lLnN0YXJ0c1dpdGgoJ2hlYWRlci4nKTtcbn1cblxuY29uc3QgeyBzdGljaywgdGFibGUsIHRhYmxlU2Nyb2xsZXIgfSA9IHVzZVN0aWNreVRhYmxlSGVhZGVyKFxuICBzdGlja3lIZWFkZXIsXG4gIGdldChzdGlja3lIZWFkZXJPZmZzZXQpLFxuKTtcblxuY29uc3QgZXhwYW5kYWJsZSA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmV4cGFuZGVkICYmIHNsb3RzWydleHBhbmRlZC1pdGVtJ10pO1xuXG5jb25zdCBoZWFkZXJTbG90cyA9IGNvbXB1dGVkPGBoZWFkZXIuJHtzdHJpbmd9YFtdPigoKSA9PlxuICBPYmplY3Qua2V5cyhzbG90cykuZmlsdGVyKGlzSGVhZGVyU2xvdCksXG4pO1xuXG5jb25zdCBnbG9iYWxJdGVtc1BlclBhZ2VTZXR0aW5ncyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgaWYgKHByb3BzLmdsb2JhbEl0ZW1zUGVyUGFnZSAhPT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiBwcm9wcy5nbG9iYWxJdGVtc1BlclBhZ2U7XG5cbiAgcmV0dXJuIGdldCh0YWJsZURlZmF1bHRzLmdsb2JhbEl0ZW1zUGVyUGFnZSk7XG59KTtcblxuY29uc3QgZ2V0S2V5cyA9IDxUIGV4dGVuZHMgb2JqZWN0Pih0OiBUKSA9PiBPYmplY3Qua2V5cyh0KSBhcyBUYWJsZVJvd0tleTxUPltdO1xuXG5jb25zdCBncm91cEtleXM6IENvbXB1dGVkUmVmPFRhYmxlUm93S2V5PFQ+W10+ID0gY29tcHV0ZWQoKCkgPT4ge1xuICBjb25zdCBncm91cEJ5ID0gcHJvcHMuZ3JvdXA7XG5cbiAgaWYgKCFncm91cEJ5KSB7XG4gICAgLy8gbm8gZ3JvdXBpbmdcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBpZiAoIUFycmF5LmlzQXJyYXkoZ3JvdXBCeSkpIHtcbiAgICAvLyBjdXJyZW50bHkgb25seSBzdXBwb3J0cyBhIHNpbmdsZSBncm91cGluZ1xuICAgIC8vIG9ubHkgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGFycmF5IGlzIHVzZWRcbiAgICByZXR1cm4gW2dyb3VwQnldO1xuICB9XG5cbiAgcmV0dXJuIGdyb3VwQnk7XG59KTtcblxuY29uc3QgZ3JvdXBLZXkgPSBjb21wdXRlZCgoKSA9PiBnZXQoZ3JvdXBLZXlzKS5qb2luKCc6JykpO1xuXG5jb25zdCBpc0dyb3VwZWQgPSBjb21wdXRlZCgoKSA9PiAhIWdldChncm91cEtleSkpO1xuXG4vKipcbiAqIFByZXBhcmUgdGhlIGNvbHVtbnMgZnJvbSBwcm9wcyBvciBnZW5lcmF0ZSB1c2luZyBmaXJzdCBpdGVtIGluIHRoZSBsaXN0XG4gKi9cbmNvbnN0IGNvbHVtbnMgPSBjb21wdXRlZDxUYWJsZUNvbHVtbjxUPltdPigoKSA9PiB7XG4gIGNvbnN0IGRhdGFcbiAgICA9IHByb3BzLmNvbHNcbiAgICAgID8/IGdldEtleXMocHJvcHMucm93c1swXSA/PyB7fSkubWFwKFxuICAgICAgICBrZXkgPT5cbiAgICAgICAgKHtcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgW3Byb3BzLmNvbHVtbkF0dHJdOiBTdHJpbmcoa2V5KSxcbiAgICAgICAgfSkgc2F0aXNmaWVzIE5vbmVTb3J0YWJsZVRhYmxlQ29sdW1uPFQ+LFxuICAgICAgKTtcblxuICBjb25zdCBoYXNFeHBhbmRDb2x1bW4gPSBkYXRhLnNvbWUocm93ID0+IHJvdy5rZXkgPT09ICdleHBhbmQnKTtcblxuICBpZiAoZ2V0KGV4cGFuZGFibGUpICYmICFoYXNFeHBhbmRDb2x1bW4pIHtcbiAgICByZXR1cm4gW1xuICAgICAgLi4uZGF0YSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAnZXhwYW5kJyBhcyBUYWJsZVJvd0tleTxUPixcbiAgICAgICAgc29ydGFibGU6IGZhbHNlLFxuICAgICAgICBjbGFzczogJ3ctMTYnLFxuICAgICAgICBjZWxsQ2xhc3M6ICchcHktMCB3LTE2JyxcbiAgICAgICAgYWxpZ246ICdlbmQnLFxuICAgICAgfSBzYXRpc2ZpZXMgTm9uZVNvcnRhYmxlVGFibGVDb2x1bW48VD4sXG4gICAgXTtcbiAgfVxuXG4gIGNvbnN0IGdyb3VwQnlLZXlzID0gZ2V0KGdyb3VwS2V5cyk7XG5cbiAgaWYgKGdyb3VwQnlLZXlzLmxlbmd0aCA9PT0gMClcbiAgICByZXR1cm4gZGF0YTtcblxuICByZXR1cm4gZGF0YS5maWx0ZXIoXG4gICAgY29sdW1uID0+ICFncm91cEJ5S2V5cy5pbmNsdWRlcyhjb2x1bW4ua2V5IGFzIFRhYmxlUm93S2V5PFQ+KSxcbiAgKTtcbn0pO1xuXG5jb25zdCBpdGVtc0xlbmd0aCA9IHJlZigwKTtcblxuY29uc3Qgc2VsZWN0ZWREYXRhID0gY29tcHV0ZWQ8VFtJZFR5cGVdW10gfCB1bmRlZmluZWQ+KHtcbiAgZ2V0KCkge1xuICAgIHJldHVybiBnZXQobW9kZWxWYWx1ZSk7XG4gIH0sXG4gIHNldCh2YWx1ZSkge1xuICAgIGVtaXQoJ3VwZGF0ZTptb2RlbC12YWx1ZScsIHZhbHVlKTtcbiAgfSxcbn0pO1xuXG5jb25zdCBpbnRlcm5hbFNlbGVjdGVkRGF0YTogUmVmPFRbSWRUeXBlXVtdPiA9IHJlZihbXSk7XG5cbndhdGNoSW1tZWRpYXRlKG1vZGVsVmFsdWUsIChtb2RlbFZhbHVlKSA9PiB7XG4gIHNldChpbnRlcm5hbFNlbGVjdGVkRGF0YSwgbW9kZWxWYWx1ZSk7XG59KTtcblxuY29uc3Qgcm93SWRlbnRpZmllciA9IGNvbXB1dGVkKCgpID0+IHByb3BzLnJvd0F0dHIpO1xuXG5jb25zdCBpbnRlcm5hbFBhZ2luYXRpb25TdGF0ZTogUmVmPFRhYmxlUGFnaW5hdGlvbkRhdGEgfCB1bmRlZmluZWQ+ID0gcmVmKCk7XG5jb25zdCBjb2xsYXBzZWRSb3dzOiBSZWY8VFtdPiA9IHJlZihbXSk7XG5cbmNvbnN0IHBhZ2luYXRpb24gPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5wYWdpbmF0aW9uKTtcblxud2F0Y2hJbW1lZGlhdGUocGFnaW5hdGlvbiwgKHBhZ2luYXRpb24pID0+IHtcbiAgc2V0KGludGVybmFsUGFnaW5hdGlvblN0YXRlLCBwYWdpbmF0aW9uKTtcbn0pO1xuXG53YXRjaEltbWVkaWF0ZShjb2xsYXBzZWQsICh2YWx1ZSkgPT4ge1xuICBzZXQoY29sbGFwc2VkUm93cywgdmFsdWUgPz8gW10pO1xufSk7XG5cbi8qKlxuICogUGFnaW5hdGlvbiBpcyBkaWZmZXJlbnQgZm9yIHNlYXJjaFxuICogc2luY2Ugc2VhcmNoIGlzIG9ubHkgdXNlZCBmb3IgaW50ZXJuYWwgZmlsdGVyaW5nXG4gKiB3ZSByZXR1cm4gdGhlIGxlbmd0aCBvZiBzZWFyY2ggcmVzdWx0cyBhcyB0b3RhbFxuICovXG5jb25zdCBwYWdpbmF0aW9uRGF0YTogUmVmPFRhYmxlUGFnaW5hdGlvbkRhdGE+ID0gY29tcHV0ZWQoe1xuICBnZXQoKSB7XG4gICAgY29uc3QgcGFnaW5hdGVkID0gZ2V0KGludGVybmFsUGFnaW5hdGlvblN0YXRlKTtcbiAgICBpZiAoIXBhZ2luYXRlZCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdG90YWw6IGdldChpdGVtc0xlbmd0aCksXG4gICAgICAgIGxpbWl0OiBwcm9wcy5pdGVtc1BlclBhZ2UsXG4gICAgICAgIHBhZ2U6IDEsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5wYWdpbmF0aW9uTW9kaWZpZXJzPy5leHRlcm5hbClcbiAgICAgIHJldHVybiBwYWdpbmF0ZWQ7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdG90YWw6IGdldChpdGVtc0xlbmd0aCksXG4gICAgICBsaW1pdDogcGFnaW5hdGVkLmxpbWl0LFxuICAgICAgcGFnZTogcGFnaW5hdGVkLnBhZ2UsXG4gICAgICBsaW1pdHM6IHBhZ2luYXRlZC5saW1pdHMsXG4gICAgfTtcbiAgfSxcbiAgc2V0KHZhbHVlOiBUYWJsZVBhZ2luYXRpb25EYXRhKSB7XG4gICAgc2V0KGludGVybmFsUGFnaW5hdGlvblN0YXRlLCB2YWx1ZSk7XG4gICAgZW1pdCgndXBkYXRlOnBhZ2luYXRpb24nLCB2YWx1ZSk7XG4gICAgZW1pdCgndXBkYXRlOm9wdGlvbnMnLCB7XG4gICAgICBwYWdpbmF0aW9uOiB2YWx1ZSxcbiAgICAgIHNvcnQ6IHByb3BzLnNvcnQsXG4gICAgfSk7XG4gIH0sXG59KTtcblxuY29uc3Qgc29ydERhdGEgPSBjb21wdXRlZCh7XG4gIGdldCgpIHtcbiAgICByZXR1cm4gcHJvcHMuc29ydDtcbiAgfSxcbiAgc2V0KHZhbHVlKSB7XG4gICAgaWYgKCFwcm9wcy5tdWx0aVBhZ2VTZWxlY3QpXG4gICAgICBvblRvZ2dsZUFsbChmYWxzZSk7XG4gICAgcmVzZXRDaGVja2JveFNoaWZ0U3RhdGUoKTtcbiAgICBlbWl0KCd1cGRhdGU6c29ydCcsIHZhbHVlKTtcbiAgICBlbWl0KCd1cGRhdGU6b3B0aW9ucycsIHtcbiAgICAgIHNvcnQ6IHZhbHVlLFxuICAgICAgcGFnaW5hdGlvbjogZ2V0KHBhZ2luYXRpb24pLFxuICAgIH0pO1xuICB9LFxufSk7XG5cbi8qKlxuICogQSBtYXBwaW5nIG9mIHRoZSBzb3J0IGNvbHVtbnNcbiAqIGZvciBlYXNpbHkgY2hlY2tpbmcgaWYgYSBjb2x1bW4gaXMgc29ydGVkIGluc3RlYWQgb2YgbG9vcGluZyB0aHJvdWdoIHRoZSBhcnJheVxuICovXG5jb25zdCBzb3J0ZWRNYXAgPSBjb21wdXRlZCgoKSA9PiB7XG4gIGNvbnN0IG1hcHBlZDogUGFydGlhbDxSZWNvcmQ8VGFibGVSb3dLZXk8VD4sIFNvcnRDb2x1bW48VD4+PiA9IHt9O1xuICBjb25zdCBzb3J0QnkgPSBnZXQoc29ydERhdGEpO1xuICBpZiAoIXNvcnRCeSlcbiAgICByZXR1cm4gbWFwcGVkO1xuXG4gIGlmICghQXJyYXkuaXNBcnJheShzb3J0QnkpKSB7XG4gICAgaWYgKHNvcnRCeS5jb2x1bW4pXG4gICAgICBtYXBwZWRbc29ydEJ5LmNvbHVtbl0gPSBzb3J0Qnk7XG5cbiAgICByZXR1cm4gbWFwcGVkO1xuICB9XG5cbiAgcmV0dXJuIHNvcnRCeS5yZWR1Y2UoKGFjYywgY3VycikgPT4ge1xuICAgIGlmICghY3Vyci5jb2x1bW4pXG4gICAgICByZXR1cm4gYWNjO1xuXG4gICAgcmV0dXJuIHsgLi4uYWNjLCBbY3Vyci5jb2x1bW5dOiBjdXJyIH07XG4gIH0sIG1hcHBlZCk7XG59KTtcblxuLyoqXG4gKiByb3dzIGZpbHRlcmVkIGJhc2VkIG9uIHNlYXJjaCBxdWVyeSBpZiBpdCBleGlzdHNcbiAqL1xuY29uc3Qgc2VhcmNoRGF0YSA9IGNvbXB1dGVkPFRbXT4oKCkgPT4ge1xuICBjb25zdCBxdWVyeSA9IHByb3BzLnNlYXJjaD8udG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgaWYgKCFxdWVyeSlcbiAgICByZXR1cm4gcHJvcHMucm93cztcblxuICByZXR1cm4gcHJvcHMucm93cy5maWx0ZXIocm93ID0+XG4gICAgZ2V0S2V5cyhyb3cpLnNvbWUoa2V5ID0+XG4gICAgICBgJHtyb3dba2V5XX1gLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXMocXVlcnkpLFxuICAgICksXG4gICk7XG59KTtcblxuLyoqXG4gKiBzb3J0IHRoZSBzZWFyY2ggcmVzdWx0c1xuICovXG5jb25zdCBzb3J0ZWQ6IENvbXB1dGVkUmVmPFRbXT4gPSBjb21wdXRlZCgoKSA9PiB7XG4gIGNvbnN0IHNvcnRCeSA9IGdldChzb3J0RGF0YSk7XG4gIGNvbnN0IGRhdGEgPSBbLi4uZ2V0KHNlYXJjaERhdGEpXTtcbiAgaWYgKCFzb3J0QnkgfHwgcHJvcHMuc29ydE1vZGlmaWVycz8uZXh0ZXJuYWwpXG4gICAgcmV0dXJuIGRhdGE7XG5cbiAgY29uc3Qgc29ydE9wdGlvbnM6IEludGwuQ29sbGF0b3JPcHRpb25zID0geyBzZW5zaXRpdml0eTogJ2FjY2VudCcsIHVzYWdlOiAnc29ydCcgfTtcblxuICBjb25zdCBzb3J0ID0gKGJ5OiBTb3J0Q29sdW1uPFQ+KSA9PiB7XG4gICAgZGF0YS5zb3J0KChhLCBiKSA9PiB7XG4gICAgICBjb25zdCBjb2x1bW4gPSBieS5jb2x1bW47XG4gICAgICBpZiAoIWNvbHVtbilcbiAgICAgICAgcmV0dXJuIDA7XG5cbiAgICAgIGxldCBbYVZhbHVlLCBiVmFsdWVdID0gW2FbY29sdW1uXSwgYltjb2x1bW5dXTtcbiAgICAgIGlmIChieS5kaXJlY3Rpb24gPT09ICdkZXNjJylcbiAgICAgICAgW2FWYWx1ZSwgYlZhbHVlXSA9IFtiVmFsdWUsIGFWYWx1ZV07XG5cbiAgICAgIGNvbnN0IGFOdW1iZXIgPSBOdW1iZXIoYVZhbHVlKTtcbiAgICAgIGNvbnN0IGJOdW1iZXIgPSBOdW1iZXIoYlZhbHVlKTtcbiAgICAgIGlmICghaXNOYU4oYU51bWJlcikgJiYgIWlzTmFOKGJOdW1iZXIpKVxuICAgICAgICByZXR1cm4gYU51bWJlciAtIGJOdW1iZXI7XG5cbiAgICAgIHJldHVybiBgJHthVmFsdWV9YC5sb2NhbGVDb21wYXJlKFxuICAgICAgICBgJHtiVmFsdWV9YCxcbiAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICBzb3J0T3B0aW9ucyxcbiAgICAgICk7XG4gICAgfSk7XG4gIH07XG5cbiAgaWYgKCFBcnJheS5pc0FycmF5KHNvcnRCeSkpXG4gICAgc29ydChzb3J0QnkpO1xuICBlbHNlXG4gICAgWy4uLnNvcnRCeV0ucmV2ZXJzZSgpLmZvckVhY2goc29ydCk7XG5cbiAgcmV0dXJuIGRhdGE7XG59KTtcblxuLyoqXG4gKiBjb21wcmlzZXMgc2VhcmNoLCBzb3J0ZWQgcGFnaW5hdGVkLCBhbmQgZ3JvdXBlZCBkYXRhXG4gKi9cbmNvbnN0IG1hcHBlZEdyb3VwcyA9IGNvbXB1dGVkPFJlY29yZDxzdHJpbmcsIEdyb3VwZWRUYWJsZVJvdzxUPltdPj4oKCkgPT4ge1xuICBpZiAoIWdldChpc0dyb3VwZWQpKSB7XG4gICAgLy8gbm8gZ3JvdXBpbmdcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjb25zdCByZXN1bHQgPSBnZXQoc29ydGVkKTtcbiAgY29uc3QgaWRlbnRpZmllciA9IHByb3BzLnJvd0F0dHI7XG5cbiAgcmV0dXJuIHJlc3VsdC5yZWR1Y2UoKGFjYzogUmVjb3JkPHN0cmluZywgR3JvdXBlZFRhYmxlUm93PFQ+W10+LCByb3cpID0+IHtcbiAgICBpZiAoIWlzRGVmaW5lZChyb3dbaWRlbnRpZmllcl0pIHx8IHJvd1tpZGVudGlmaWVyXSA9PT0gJycpXG4gICAgICByZXR1cm4gYWNjO1xuXG4gICAgY29uc3QgZ3JvdXAgPSBnZXRSb3dHcm91cChyb3cpO1xuICAgIGNvbnN0IGdyb3VwVmFsID0gT2JqZWN0LnZhbHVlcyhncm91cCkuZmlsdGVyKGlzRGVmaW5lZCkuam9pbignLCcpO1xuICAgIGlmICghYWNjW2dyb3VwVmFsXSkge1xuICAgICAgYWNjW2dyb3VwVmFsXSA9IFtcbiAgICAgICAge1xuICAgICAgICAgIF9faGVhZGVyX186IHRydWUsXG4gICAgICAgICAgZ3JvdXAsXG4gICAgICAgICAgaWRlbnRpZmllcjogZ3JvdXBWYWwsXG4gICAgICAgIH0gc2F0aXNmaWVzIEdyb3VwSGVhZGVyPFQ+LFxuICAgICAgXTtcbiAgICB9XG5cbiAgICBhY2NbZ3JvdXBWYWxdLnB1c2gocm93KTtcblxuICAgIHJldHVybiBhY2M7XG4gIH0sIHt9KTtcbn0pO1xuXG4vKipcbiAqIGNvbXByaXNlcyBzZWFyY2gsIHNvcnRlZCBwYWdpbmF0ZWQsIGFuZCBncm91cGVkIGRhdGFcbiAqL1xuY29uc3QgZ3JvdXBlZCA9IGNvbXB1dGVkPEdyb3VwZWRUYWJsZVJvdzxUPltdPigoKSA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IGdldChzb3J0ZWQpO1xuICBjb25zdCBncm91cEJ5S2V5ID0gZ2V0KGdyb3VwS2V5KTtcblxuICBpZiAoIWdyb3VwQnlLZXkpIHtcbiAgICAvLyBubyBncm91cGluZ1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICByZXR1cm4gT2JqZWN0LnZhbHVlcyhnZXQobWFwcGVkR3JvdXBzKSkuZmxhdE1hcChncm91cGVkID0+IGdyb3VwZWQpO1xufSk7XG5cbi8qKlxuICogY29tcHJpc2VzIHNlYXJjaCwgc29ydGVkIGFuZCBwYWdpbmF0ZWQgZGF0YVxuICovXG5jb25zdCBmaWx0ZXJlZCA9IGNvbXB1dGVkPEdyb3VwZWRUYWJsZVJvdzxUPltdPigoKSA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IGdldChncm91cGVkKTtcblxuICBjb25zdCBwYWdpbmF0ZWQgPSBnZXQocGFnaW5hdGlvbkRhdGEpO1xuICBjb25zdCBsaW1pdCA9IHBhZ2luYXRlZC5saW1pdDtcbiAgaWYgKHBhZ2luYXRlZCAmJiAhcHJvcHMucGFnaW5hdGlvbk1vZGlmaWVycz8uZXh0ZXJuYWwpIHtcbiAgICBjb25zdCBzdGFydCA9IChwYWdpbmF0ZWQucGFnZSAtIDEpICogbGltaXQ7XG4gICAgY29uc3QgZW5kID0gc3RhcnQgKyBsaW1pdDtcbiAgICBjb25zdCBwcmVHcm91cHMgPSByZXN1bHQuc2xpY2UoMCwgc3RhcnQgKyAxKS5maWx0ZXIoaXRlbSA9PiAhaXNSb3coaXRlbSkpO1xuICAgIGNvbnN0IHBvc3RHcm91cHMgPSByZXN1bHQuc2xpY2Uoc3RhcnQgKyAxLCBlbmQgKyBwcmVHcm91cHMubGVuZ3RoKS5maWx0ZXIoaXRlbSA9PiAhaXNSb3coaXRlbSkpO1xuICAgIGNvbnN0IGRhdGEgPSByZXN1bHQuc2xpY2Uoc3RhcnQgKyBwcmVHcm91cHMubGVuZ3RoLCBlbmQgKyBwcmVHcm91cHMubGVuZ3RoICsgcG9zdEdyb3Vwcy5sZW5ndGgpO1xuICAgIGNvbnN0IG5lYXJlc3RHcm91cCA9IHByZUdyb3Vwcy5hdCgtMSk7XG4gICAgaWYgKGRhdGEubGVuZ3RoID4gMCkge1xuICAgICAgLy8gaWYgb3VyIGZpcnN0IGl0ZW0gaXMgbm90IGEgZ3JvdXAsIHB1c2ggaW4gdGhlIG5lYXJlc3QgZ3JvdXBcbiAgICAgIGNvbnN0IGZpcnN0SXRlbSA9IGRhdGFbMF07XG4gICAgICBhc3NlcnQoZmlyc3RJdGVtKTtcbiAgICAgIGlmIChpc1JvdyhmaXJzdEl0ZW0pICYmIG5lYXJlc3RHcm91cClcbiAgICAgICAgZGF0YS51bnNoaWZ0KG5lYXJlc3RHcm91cCk7XG4gICAgICBjb25zdCBsYXN0SXRlbSA9IGRhdGEuYXQoLTEpO1xuICAgICAgLy8gaWYgb3VyIGxhc3QgaXRlbSBpcyBhIGdyb3VwLCByZW1vdmUgaXRcbiAgICAgIGlmIChsYXN0SXRlbSAmJiAhaXNSb3cobGFzdEl0ZW0pKVxuICAgICAgICBkYXRhLnBvcCgpO1xuICAgIH1cblxuICAgIHJldHVybiBkYXRhLmZpbHRlcihyb3cgPT4gIWlzSGlkZGVuUm93KHJvdykpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdC5maWx0ZXIocm93ID0+ICFpc0hpZGRlblJvdyhyb3cpKTtcbn0pO1xuXG4vKipcbiAqIGxpc3QgaWYgaWRzIG9mIHRoZSB2aXNpYmxlIHRhYmxlIHJvd3MgdXNlZCBmb3IgY2hlY2stYWxsIGFuZCB1bmNoZWNrLWFsbFxuICovXG5jb25zdCB2aXNpYmxlSWRlbnRpZmllcnMgPSBjb21wdXRlZDxUW0lkVHlwZV1bXT4oKCkgPT4ge1xuICBjb25zdCBzZWxlY3RCeSA9IHByb3BzLnJvd0F0dHI7XG5cbiAgaWYgKCFzZWxlY3RCeSlcbiAgICByZXR1cm4gW107XG5cbiAgcmV0dXJuIGdldChmaWx0ZXJlZClcbiAgICAuZmlsdGVyKGlzUm93KVxuICAgIC5tYXAocm93ID0+IHJvd1tzZWxlY3RCeV0pO1xufSk7XG5cbi8qKlxuICogRmxhZyB0byBrbm93IHdoZW4gYWxsIHJvd3MgYXJlIHNlbGVjdGVkIGZvciB0aGUgY3VycmVudCBzY3JlZW5cbiAqL1xuY29uc3QgaXNBbGxTZWxlY3RlZCA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHtcbiAgY29uc3Qgc2VsZWN0ZWRSb3dzID0gZ2V0KHNlbGVjdGVkRGF0YSk7XG4gIGlmICghc2VsZWN0ZWRSb3dzKVxuICAgIHJldHVybiBmYWxzZTtcblxuICByZXR1cm4gKFxuICAgIHNlbGVjdGVkUm93cy5sZW5ndGggPiAwXG4gICAgJiYgZ2V0KHZpc2libGVJZGVudGlmaWVycykuZXZlcnkoaWQgPT4gc2VsZWN0ZWRSb3dzLmluY2x1ZGVzKGlkKSlcbiAgKTtcbn0pO1xuXG5jb25zdCBpbmRldGVybWluYXRlID0gY29tcHV0ZWQoKCkgPT4ge1xuICBjb25zdCBzZWxlY3RlZFJvd3MgPSBnZXQoc2VsZWN0ZWREYXRhKTtcbiAgaWYgKCFzZWxlY3RlZFJvd3MpXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIHJldHVybiBzZWxlY3RlZFJvd3MubGVuZ3RoID4gMCAmJiAhZ2V0KGlzQWxsU2VsZWN0ZWQpO1xufSk7XG5cbmNvbnN0IG5vRGF0YSA9IGNvbXB1dGVkKCgpID0+IGdldChmaWx0ZXJlZCkubGVuZ3RoID09PSAwKTtcblxuY29uc3QgY29sc3BhbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgbGV0IGNvbHVtbkxlbmd0aCA9IGdldChjb2x1bW5zKS5sZW5ndGg7XG4gIGlmIChnZXQoc2VsZWN0ZWREYXRhKSlcbiAgICBjb2x1bW5MZW5ndGgrKztcblxuICByZXR1cm4gY29sdW1uTGVuZ3RoO1xufSk7XG5cbmNvbnN0IGlzU29ydGVkQnkgPSAoa2V5OiBUYWJsZVJvd0tleTxUPikgPT4ga2V5IGluIGdldChzb3J0ZWRNYXApO1xuXG5mdW5jdGlvbiBnZXRTb3J0SW5kZXgoa2V5OiBUYWJsZVJvd0tleTxUPikge1xuICBjb25zdCBzb3J0QnkgPSBnZXQoc29ydERhdGEpO1xuXG4gIGlmICghc29ydEJ5IHx8ICFBcnJheS5pc0FycmF5KHNvcnRCeSkgfHwgIWlzU29ydGVkQnkoa2V5KSlcbiAgICByZXR1cm4gLTE7XG5cbiAgcmV0dXJuIHNvcnRCeS5maW5kSW5kZXgoc29ydCA9PiBzb3J0LmNvbHVtbiA9PT0ga2V5KSA/PyAtMTtcbn1cblxuZnVuY3Rpb24gaXNTZWxlY3RlZChpZGVudGlmaWVyOiBUW0lkVHlwZV0pIHtcbiAgY29uc3Qgc2VsZWN0aW9uID0gZ2V0KHNlbGVjdGVkRGF0YSk7XG4gIGlmICghc2VsZWN0aW9uKVxuICAgIHJldHVybiBmYWxzZTtcblxuICByZXR1cm4gc2VsZWN0aW9uLmluY2x1ZGVzKGlkZW50aWZpZXIpO1xufVxuXG5mdW5jdGlvbiBpc0Rpc2FibGVkUm93KHJvd0tleTogVFtJZFR5cGVdKSB7XG4gIGNvbnN0IGlkZW50aWZpZXIgPSBwcm9wcy5yb3dBdHRyO1xuICBpZiAoIWlkZW50aWZpZXIpXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIHJldHVybiAhIWdldChkaXNhYmxlZFJvd3MpPy5zb21lKChkaXNhYmxlZFJvdzogVCkgPT4gcm93S2V5ID09PSBkaXNhYmxlZFJvd1tpZGVudGlmaWVyXSk7XG59XG5cbmZ1bmN0aW9uIGlzRXhwYW5kZWQoaWRlbnRpZmllcjogVFtJZFR5cGVdKSB7XG4gIGNvbnN0IHsgZXhwYW5kZWQgfSA9IHByb3BzO1xuICBpZiAoIWV4cGFuZGVkPy5sZW5ndGgpXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIHJldHVybiBleHBhbmRlZC5zb21lKGRhdGEgPT4gZGF0YVtwcm9wcy5yb3dBdHRyXSA9PT0gaWRlbnRpZmllcik7XG59XG5cbmZ1bmN0aW9uIG9uVG9nZ2xlRXhwYW5kKHJvdzogVCkge1xuICBjb25zdCB7IGV4cGFuZGVkIH0gPSBwcm9wcztcbiAgaWYgKCFleHBhbmRlZClcbiAgICByZXR1cm47XG5cbiAgY29uc3Qga2V5ID0gcHJvcHMucm93QXR0cjtcbiAgY29uc3Qgcm93RXhwYW5kZWQgPSBpc0V4cGFuZGVkKHJvd1trZXldKTtcblxuICBpZiAocHJvcHMuc2luZ2xlRXhwYW5kKVxuICAgIHJldHVybiBlbWl0KCd1cGRhdGU6ZXhwYW5kZWQnLCByb3dFeHBhbmRlZCA/IFtdIDogW3Jvd10pO1xuXG4gIHJldHVybiBlbWl0KFxuICAgICd1cGRhdGU6ZXhwYW5kZWQnLFxuICAgIHJvd0V4cGFuZGVkXG4gICAgICA/IGV4cGFuZGVkLmZpbHRlcihpdGVtID0+IGl0ZW1ba2V5XSAhPT0gcm93W2tleV0pXG4gICAgICA6IFsuLi5leHBhbmRlZCwgcm93XSxcbiAgKTtcbn1cblxuZnVuY3Rpb24gZ2V0Um93R3JvdXAocm93OiBUKTogUGFydGlhbDxUPiB7XG4gIHJldHVybiBnZXQoZ3JvdXBLZXlzKS5yZWR1Y2UoKGFjYywga2V5KSA9PiAoeyAuLi5hY2MsIFtrZXldOiByb3dba2V5XSB9KSwge30pO1xufVxuXG5mdW5jdGlvbiBnZXRHcm91cFJvd3MoZ3JvdXBWYWw6IHN0cmluZykge1xuICBpZiAoIWdldChpc0dyb3VwZWQpKVxuICAgIHJldHVybiBbXTtcblxuICBjb25zdCBncm91cFJvd3MgPSBnZXQobWFwcGVkR3JvdXBzKVtncm91cFZhbF07XG4gIGFzc2VydChncm91cFJvd3MpO1xuICByZXR1cm4gZ3JvdXBSb3dzLmZpbHRlcihpc1Jvdyk7XG59XG5cbmZ1bmN0aW9uIGNvbXBhcmVHcm91cHNGbihhOiBULCBiOiBQYXJ0aWFsPFQ+KSB7XG4gIGNvbnN0IGdyb3VwID0gZ2V0KGdyb3VwS2V5cyk7XG4gIGlmIChncm91cC5sZW5ndGggPT09IDApXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIHJldHVybiBncm91cC5ldmVyeShrZXkgPT4gYVtrZXldID09PSBiW2tleV0pO1xufVxuXG5mdW5jdGlvbiBpc0V4cGFuZGVkR3JvdXAodmFsdWU6IFBhcnRpYWw8VD4pIHtcbiAgcmV0dXJuIGdldChjb2xsYXBzZWRSb3dzKS5ldmVyeShyb3cgPT4gIWNvbXBhcmVHcm91cHNGbihyb3csIHZhbHVlKSk7XG59XG5cbmZ1bmN0aW9uIGlzSGlkZGVuUm93KHJvdzogR3JvdXBlZFRhYmxlUm93PFQ+KSB7XG4gIGNvbnN0IGlkZW50aWZpZXIgPSBwcm9wcy5yb3dBdHRyO1xuICByZXR1cm4gKFxuICAgIGdldChpc0dyb3VwZWQpXG4gICAgJiYgZ2V0KGNvbGxhcHNlZFJvd3MpLnNvbWUoXG4gICAgICB2YWx1ZSA9PiBpc1Jvdyhyb3cpICYmIHJvd1tpZGVudGlmaWVyXSA9PT0gdmFsdWVbaWRlbnRpZmllcl0sXG4gICAgKVxuICApO1xufVxuXG5mdW5jdGlvbiBvblRvZ2dsZUV4cGFuZEdyb3VwKGdyb3VwOiBQYXJ0aWFsPFQ+LCB2YWx1ZT86IHN0cmluZykge1xuICBpZiAoIXZhbHVlKVxuICAgIHJldHVybjtcblxuICBjb25zdCBjb2xsYXBzZWQgPSBnZXQoY29sbGFwc2VkUm93cyk7XG5cbiAgY29uc3QgZ3JvdXBFeHBhbmRlZCA9IGlzRXhwYW5kZWRHcm91cChncm91cCk7XG5cbiAgY29uc3QgZ3JvdXBSb3dzID0gZ2V0R3JvdXBSb3dzKHZhbHVlKTtcblxuICBzZXQoXG4gICAgY29sbGFwc2VkUm93cyxcbiAgICBncm91cEV4cGFuZGVkXG4gICAgICA/IFsuLi5jb2xsYXBzZWQsIC4uLmdyb3VwUm93c11cbiAgICAgIDogY29sbGFwc2VkLmZpbHRlcihyb3cgPT4gIWNvbXBhcmVHcm91cHNGbihyb3csIGdyb3VwKSksXG4gICk7XG5cbiAgZW1pdCgndXBkYXRlOmNvbGxhcHNlZCcsIGdldChjb2xsYXBzZWRSb3dzKSk7XG59XG5cbmZ1bmN0aW9uIG9uVW5ncm91cCgpIHtcbiAgc2V0KGNvbGxhcHNlZFJvd3MsIFtdKTtcblxuICBlbWl0KCd1cGRhdGU6Y29sbGFwc2VkJywgW10pO1xuICBlbWl0KCd1cGRhdGU6Z3JvdXAnLCBBcnJheS5pc0FycmF5KHByb3BzLmdyb3VwKSA/IFtdIDogdW5kZWZpbmVkKTtcbn1cblxuZnVuY3Rpb24gb25Db3B5R3JvdXAodmFsdWU6IEdyb3VwRGF0YTxUPikge1xuICBlbWl0KCdjb3B5Omdyb3VwJywgdmFsdWUpO1xufVxuXG4vKipcbiAqIFNvcnQgdG8gaGFuZGxlIHNpbmdsZSBzb3J0IG9yIG11bHRpcGxlIHNvcnQgY29sdW1uc1xuICovXG5mdW5jdGlvbiBvblNvcnQoe1xuICBrZXksXG4gIGRpcmVjdGlvbixcbn06IHtcbiAga2V5OiBUYWJsZVJvd0tleTxUPjtcbiAgZGlyZWN0aW9uPzogJ2FzYycgfCAnZGVzYyc7XG59KSB7XG4gIGNvbnN0IHNvcnRCeSA9IGdldChzb3J0RGF0YSk7XG4gIGlmICghc29ydEJ5KVxuICAgIHJldHVybjtcblxuICBpZiAoIUFycmF5LmlzQXJyYXkoc29ydEJ5KSkge1xuICAgIGlmIChpc1NvcnRlZEJ5KGtleSkpIHtcbiAgICAgIGNvbnN0IG5ld0RpcmVjdGlvbiA9ICFkaXJlY3Rpb24gfHwgZGlyZWN0aW9uID09PSAnYXNjJyA/ICdkZXNjJyA6ICdhc2MnO1xuXG4gICAgICBpZiAoc29ydEJ5LmRpcmVjdGlvbiA9PT0gbmV3RGlyZWN0aW9uKSB7XG4gICAgICAgIHNldChzb3J0RGF0YSwgeyAuLi5zb3J0QnksIGNvbHVtbjogdW5kZWZpbmVkLCBkaXJlY3Rpb246ICdhc2MnIH0pO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHNldChzb3J0RGF0YSwge1xuICAgICAgICAgIC4uLnNvcnRCeSxcbiAgICAgICAgICBkaXJlY3Rpb246IHNvcnRCeS5kaXJlY3Rpb24gPT09ICdhc2MnID8gJ2Rlc2MnIDogJ2FzYycsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHNldChzb3J0RGF0YSwgeyBjb2x1bW46IGtleSwgZGlyZWN0aW9uOiBkaXJlY3Rpb24gfHwgJ2FzYycgfSk7XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChpc1NvcnRlZEJ5KGtleSkpIHtcbiAgICBjb25zdCBuZXdEaXJlY3Rpb24gPSAhZGlyZWN0aW9uIHx8IGRpcmVjdGlvbiA9PT0gJ2FzYycgPyAnZGVzYycgOiAnYXNjJztcblxuICAgIGNvbnN0IGluZGV4ID0gZ2V0U29ydEluZGV4KGtleSk7XG4gICAgY29uc3Qgc29ydEJ5Q29sID0gc29ydEJ5W2luZGV4XTtcbiAgICBhc3NlcnQoc29ydEJ5Q29sKTtcblxuICAgIGlmIChzb3J0QnlDb2wuZGlyZWN0aW9uID09PSBuZXdEaXJlY3Rpb24pXG4gICAgICBzb3J0Qnkuc3BsaWNlKGluZGV4LCAxKTtcbiAgICBlbHNlXG4gICAgICBzb3J0QnlDb2wuZGlyZWN0aW9uID0gc29ydEJ5Q29sLmRpcmVjdGlvbiA9PT0gJ2FzYycgPyAnZGVzYycgOiAnYXNjJztcblxuICAgIHNldChzb3J0RGF0YSwgc29ydEJ5KTtcbiAgfVxuICBlbHNlIHtcbiAgICBzZXQoc29ydERhdGEsIFsuLi5zb3J0QnksIHsgY29sdW1uOiBrZXksIGRpcmVjdGlvbjogZGlyZWN0aW9uIHx8ICdhc2MnIH1dKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc1NlbGVjdGFibGUocm93S2V5OiBUW0lkVHlwZV0pOiBib29sZWFuIHtcbiAgcmV0dXJuIGlzU2VsZWN0ZWQocm93S2V5KSB8fCAhaXNEaXNhYmxlZFJvdyhyb3dLZXkpO1xufVxuXG5mdW5jdGlvbiBtdXN0U2VsZWN0KHJvd0tleTogVFtJZFR5cGVdKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc1NlbGVjdGVkKHJvd0tleSkgJiYgaXNEaXNhYmxlZFJvdyhyb3dLZXkpO1xufVxuXG4vKipcbiAqIHRvZ2dsZXMgc2VsZWN0ZWQgcm93c1xuICogQHBhcmFtIHtib29sZWFufSBjaGVja2VkIGNoZWNrYm94IHN0YXRlXG4gKi9cbmZ1bmN0aW9uIG9uVG9nZ2xlQWxsKGNoZWNrZWQ6IGJvb2xlYW4pIHtcbiAgY29uc3Qgc2VsZWN0ZWRSb3dzID0gZ2V0KHNlbGVjdGVkRGF0YSkgPz8gW107XG4gIGlmICghcHJvcHMubXVsdGlQYWdlU2VsZWN0KSB7XG4gICAgaWYgKGNoZWNrZWQpXG4gICAgICBzZXQoc2VsZWN0ZWREYXRhLCBnZXQodmlzaWJsZUlkZW50aWZpZXJzKS5maWx0ZXIoaXNTZWxlY3RhYmxlKSk7XG4gICAgZWxzZVxuICAgICAgc2V0KHNlbGVjdGVkRGF0YSwgZ2V0KHZpc2libGVJZGVudGlmaWVycykuZmlsdGVyKG11c3RTZWxlY3QpKTtcbiAgfVxuICBlbHNlIHtcbiAgICBpZiAoY2hlY2tlZCkge1xuICAgICAgc2V0KFxuICAgICAgICBzZWxlY3RlZERhdGEsXG4gICAgICAgIEFycmF5LmZyb20obmV3IFNldChcbiAgICAgICAgICBbXG4gICAgICAgICAgICAuLi5zZWxlY3RlZFJvd3MsXG4gICAgICAgICAgICAuLi5nZXQodmlzaWJsZUlkZW50aWZpZXJzKS5maWx0ZXIoaXNTZWxlY3RhYmxlKSxcbiAgICAgICAgICBdLFxuICAgICAgICApKSxcbiAgICAgICk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgc2V0KFxuICAgICAgICBzZWxlY3RlZERhdGEsXG4gICAgICAgIHNlbGVjdGVkUm93cy5maWx0ZXIocm93S2V5ID0+ICFnZXQodmlzaWJsZUlkZW50aWZpZXJzKS5pbmNsdWRlcyhyb3dLZXkpIHx8IGdldCh2aXNpYmxlSWRlbnRpZmllcnMpLmZpbHRlcihtdXN0U2VsZWN0KS5pbmNsdWRlcyhyb3dLZXkpKSxcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbmNvbnN0IHNoaWZ0Q2xpY2tlZDogUmVmPGJvb2xlYW4+ID0gcmVmKGZhbHNlKTtcbmNvbnN0IGxhc3RTZWxlY3RlZEluZGV4OiBSZWY8bnVtYmVyPiA9IHJlZigtMSk7XG5cbmZ1bmN0aW9uIHJlc2V0Q2hlY2tib3hTaGlmdFN0YXRlKCkge1xuICBzZXQoc2hpZnRDbGlja2VkLCBmYWxzZSk7XG4gIHNldChsYXN0U2VsZWN0ZWRJbmRleCwgLTEpO1xufVxuXG4vKipcbiAqIHRvZ2dsZXMgYSBzaW5nbGUgcm93XG4gKiBAcGFyYW0ge2Jvb2xlYW59IGNoZWNrZWQgY2hlY2tib3ggc3RhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSB0aGUgaWQgb2YgdGhlIHNlbGVjdGVkIHJvd1xuICogQHBhcmFtIHtib29sZWFufSB1c2VyQWN0aW9uIHdoZXRoZXIgdGhlIHNlbGVjdCB0cmlnZ2VyZWQgYnkgdXNlciBtYW51YWxseVxuICpcbiAqL1xuZnVuY3Rpb24gb25TZWxlY3QoY2hlY2tlZDogYm9vbGVhbiwgdmFsdWU6IFRbdHlwZW9mIHByb3BzLnJvd0F0dHJdLCB1c2VyQWN0aW9uID0gZmFsc2UpIHtcbiAgaWYgKGdldChzaGlmdENsaWNrZWQpICYmIHVzZXJBY3Rpb24pXG4gICAgcmV0dXJuO1xuXG4gIGNvbnN0IHNlbGVjdGVkUm93cyA9IGdldChpbnRlcm5hbFNlbGVjdGVkRGF0YSk7XG4gIGlmICghc2VsZWN0ZWRSb3dzKVxuICAgIHJldHVybiBmYWxzZTtcblxuICBjb25zdCBzZWxlY3RlZCA9IGlzU2VsZWN0ZWQodmFsdWUpO1xuXG4gIGlmIChjaGVja2VkICYmICFzZWxlY3RlZCkge1xuICAgIHNldChpbnRlcm5hbFNlbGVjdGVkRGF0YSwgWy4uLnNlbGVjdGVkUm93cywgdmFsdWVdKTtcbiAgfVxuICBlbHNlIGlmICghY2hlY2tlZCAmJiBzZWxlY3RlZCkge1xuICAgIHNldChcbiAgICAgIGludGVybmFsU2VsZWN0ZWREYXRhLFxuICAgICAgWy4uLnNlbGVjdGVkUm93c10uZmlsdGVyKHIgPT4gciAhPT0gdmFsdWUpLFxuICAgICk7XG4gIH1cblxuICBpZiAodXNlckFjdGlvbilcbiAgICBzZXQoc2VsZWN0ZWREYXRhLCBnZXQoaW50ZXJuYWxTZWxlY3RlZERhdGEpKTtcbn1cblxuZnVuY3Rpb24gb25DaGVja2JveENsaWNrKGV2ZW50OiBhbnksIHZhbHVlOiBUW3R5cGVvZiBwcm9wcy5yb3dBdHRyXSwgaW5kZXg6IG51bWJlcikge1xuICBjb25zdCBpbnB1dCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQucXVlcnlTZWxlY3RvcignaW5wdXQnKTtcbiAgY29uc3Qgbm9kZU5hbWUgPSBldmVudC50YXJnZXQubm9kZU5hbWU7XG5cbiAgY29uc3Qgc2hpZnRLZXkgPSBldmVudC5zaGlmdEtleTtcbiAgc2V0KHNoaWZ0Q2xpY2tlZCwgc2hpZnRLZXkpO1xuXG4gIGlmIChpbnB1dCAmJiBub2RlTmFtZSAhPT0gJ0lOUFVUJykge1xuICAgIGlmIChzaGlmdEtleSkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGxldCBsYXN0SW5kZXggPSBnZXQobGFzdFNlbGVjdGVkSW5kZXgpO1xuICAgICAgICBpZiAobGFzdEluZGV4ID09PSAtMSlcbiAgICAgICAgICBsYXN0SW5kZXggPSBpbmRleDtcbiAgICAgICAgY29uc3QgdGFibGVEYXRhID0gZ2V0KGZpbHRlcmVkKTtcbiAgICAgICAgY29uc3QgbGFzdFNlbGVjdGVkRGF0YSA9IHRhYmxlRGF0YVtsYXN0SW5kZXhdO1xuICAgICAgICBhc3NlcnQobGFzdFNlbGVjdGVkRGF0YSk7XG5cbiAgICAgICAgaWYgKGlzUm93KGxhc3RTZWxlY3RlZERhdGEpKSB7XG4gICAgICAgICAgY29uc3QgaWQgPSBnZXQocm93SWRlbnRpZmllcik7XG4gICAgICAgICAgY29uc3QgdmFsdWVUb0FwcGx5ID0gaXNTZWxlY3RlZChsYXN0U2VsZWN0ZWREYXRhW2lkXSk7XG5cbiAgICAgICAgICBpZiAobGFzdEluZGV4ID09PSBpbmRleCkge1xuICAgICAgICAgICAgb25TZWxlY3QoIXZhbHVlVG9BcHBseSwgdmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGZyb20gPSBNYXRoLm1pbihsYXN0SW5kZXgsIGluZGV4KTtcbiAgICAgICAgICAgIGNvbnN0IHRvID0gTWF0aC5tYXgobGFzdEluZGV4LCBpbmRleCk7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBmcm9tOyBpIDw9IHRvOyBpKyspIHtcbiAgICAgICAgICAgICAgY29uc3QgY3VyclNlbGVjdGVkRGF0YSA9IHRhYmxlRGF0YVtpXTtcbiAgICAgICAgICAgICAgYXNzZXJ0KGN1cnJTZWxlY3RlZERhdGEpO1xuICAgICAgICAgICAgICBpZiAoaXNSb3coY3VyclNlbGVjdGVkRGF0YSkgJiYgIWlzRGlzYWJsZWRSb3coY3VyclNlbGVjdGVkRGF0YVtpZF0pKVxuICAgICAgICAgICAgICAgIG9uU2VsZWN0KHZhbHVlVG9BcHBseSwgY3VyclNlbGVjdGVkRGF0YVtpZF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHNldChsYXN0U2VsZWN0ZWRJbmRleCwgaW5kZXgpO1xuICAgICAgICAgIHNldChzZWxlY3RlZERhdGEsIGdldChpbnRlcm5hbFNlbGVjdGVkRGF0YSkpO1xuICAgICAgICB9XG4gICAgICB9LCAxKTtcbiAgICB9XG5cbiAgICBlbHNlIHsgc2V0KGxhc3RTZWxlY3RlZEluZGV4LCBpbmRleCk7IH1cbiAgfVxufVxuXG5jb25zdCBzZWFyY2ggPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5zZWFyY2gpO1xuXG5mdW5jdGlvbiBkZXNlbGVjdFJlbW92ZWRSb3dzKCkge1xuICBnZXQoc2VsZWN0ZWREYXRhKT8uZm9yRWFjaCgoa2V5OiBUW0lkVHlwZV0pID0+IHtcbiAgICBpZiAoaXNTZWxlY3RlZChrZXkpICYmICFnZXQodmlzaWJsZUlkZW50aWZpZXJzKS5pbmNsdWRlcyhrZXkpKVxuICAgICAgb25TZWxlY3QoZmFsc2UsIGtleSwgdHJ1ZSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBvblBhZ2luYXRlKCkge1xuICBlbWl0KCd1cGRhdGU6ZXhwYW5kZWQnLCBbXSk7XG4gIGlmICghcHJvcHMubXVsdGlQYWdlU2VsZWN0KVxuICAgIG9uVG9nZ2xlQWxsKGZhbHNlKTtcbiAgcmVzZXRDaGVja2JveFNoaWZ0U3RhdGUoKTtcbn1cblxuZnVuY3Rpb24gc2V0SW50ZXJuYWxUb3RhbChpdGVtczogR3JvdXBlZFRhYmxlUm93PFQ+W10pIHtcbiAgaWYgKCFwcm9wcy5wYWdpbmF0aW9uTW9kaWZpZXJzPy5leHRlcm5hbClcbiAgICBzZXQoaXRlbXNMZW5ndGgsIGl0ZW1zLmZpbHRlcihpc1JvdykubGVuZ3RoKTtcbn1cblxuZnVuY3Rpb24gY2VsbFZhbHVlKHJvdzogVCwga2V5OiBUYWJsZUNvbHVtbjxUPlsna2V5J10pIHtcbiAgcmV0dXJuIHJvd1trZXkgYXMgVGFibGVSb3dLZXk8VD5dO1xufVxuXG4vKipcbiAqIEtlZXBzIHRoZSBnbG9iYWwgaXRlbXMgcGVyIHBhZ2UgaW4gc3luYyB3aXRoIHRoZSBpbnRlcm5hbCBzdGF0ZS5cbiAqL1xud2F0Y2goaW50ZXJuYWxQYWdpbmF0aW9uU3RhdGUsIChwYWdpbmF0aW9uKSA9PiB7XG4gIGlmIChwYWdpbmF0aW9uPy5saW1pdCAmJiBnZXQoZ2xvYmFsSXRlbXNQZXJQYWdlU2V0dGluZ3MpKVxuICAgIHNldCh0YWJsZURlZmF1bHRzLml0ZW1zUGVyUGFnZSwgcGFnaW5hdGlvbi5saW1pdCk7XG59KTtcblxud2F0Y2godGFibGVEZWZhdWx0cy5pdGVtc1BlclBhZ2UsIChpdGVtc1BlclBhZ2UpID0+IHtcbiAgaWYgKCFnZXQoZ2xvYmFsSXRlbXNQZXJQYWdlU2V0dGluZ3MpKVxuICAgIHJldHVybjtcblxuICBzZXQocGFnaW5hdGlvbkRhdGEsIHtcbiAgICAuLi5nZXQocGFnaW5hdGlvbkRhdGEpLFxuICAgIGxpbWl0OiBpdGVtc1BlclBhZ2UsXG4gIH0pO1xufSk7XG5cbi8qKlxuICogb24gY2hhbmdpbmcgc2VhcmNoIHF1ZXJ5LCBuZWVkIHRvIHJlc2V0IHBhZ2luYXRpb24gcGFnZSB0byAxXG4gKi9cbndhdGNoKHNlYXJjaCwgKCkgPT4ge1xuICBzZXQocGFnaW5hdGlvbkRhdGEsIHtcbiAgICAuLi5nZXQocGFnaW5hdGlvbkRhdGEpLFxuICAgIHBhZ2U6IDEsXG4gIH0pO1xuICBvblRvZ2dsZUFsbChmYWxzZSk7XG4gIHJlc2V0Q2hlY2tib3hTaGlmdFN0YXRlKCk7XG59KTtcblxud2F0Y2goc29ydGVkLCAoaXRlbXMpID0+IHtcbiAgaWYgKCFwcm9wcy5tdWx0aVBhZ2VTZWxlY3QpXG4gICAgZGVzZWxlY3RSZW1vdmVkUm93cygpO1xuICBzZXRJbnRlcm5hbFRvdGFsKGl0ZW1zKTtcbn0pO1xuXG4vKipcbiAqIEF1dG9tYXRpY2FsbHkgYWRqdXN0IHBhZ2Ugd2hlbiBjdXJyZW50IHBhZ2UgZXhjZWVkcyBtYXhpbXVtIGF2YWlsYWJsZSBwYWdlc1xuICogVGhpcyBjYW4gaGFwcGVuIHdoZW4gdG90YWwgZGF0YSBkZWNyZWFzZXMgd2hpbGUgdXNlciBpcyBvbiBhIGhpZ2hlciBwYWdlXG4gKi9cbndhdGNoKHBhZ2luYXRpb25EYXRhLCAocGFnaW5hdGlvbikgPT4ge1xuICBjb25zdCB7IHRvdGFsLCBsaW1pdCwgcGFnZSB9ID0gcGFnaW5hdGlvbjtcbiAgY29uc3QgbWF4UGFnZXMgPSBNYXRoLmNlaWwodG90YWwgLyBsaW1pdCk7XG5cbiAgaWYgKG1heFBhZ2VzID4gMCAmJiBwYWdlID4gbWF4UGFnZXMpIHtcbiAgICBzZXQocGFnaW5hdGlvbkRhdGEsIHtcbiAgICAgIC4uLnBhZ2luYXRpb24sXG4gICAgICBwYWdlOiBtYXhQYWdlcyxcbiAgICB9KTtcbiAgfVxufSk7XG5cbm9uTW91bnRlZCgoKSA9PiB7XG4gIHNldEludGVybmFsVG90YWwoZ2V0KHNvcnRlZCkpO1xuXG4gIGlmICghZ2V0KGdsb2JhbEl0ZW1zUGVyUGFnZVNldHRpbmdzKSlcbiAgICByZXR1cm47XG5cbiAgc2V0KHBhZ2luYXRpb25EYXRhLCB7XG4gICAgLi4uZ2V0KHBhZ2luYXRpb25EYXRhKSxcbiAgICBsaW1pdDogZ2V0KHRhYmxlRGVmYXVsdHMuaXRlbXNQZXJQYWdlKSxcbiAgfSk7XG59KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAkc3R5bGUud3JhcHBlcixcbiAgICAgICRzdHlsZVtgcm91bmRlZF9fJHtyb3VuZGVkfWBdLFxuICAgICAgeyBbJHN0eWxlLm91dGxpbmVkXTogb3V0bGluZWQgfSxcbiAgICBdXCJcbiAgPlxuICAgIDxSdWlUYWJsZVBhZ2luYXRpb25cbiAgICAgIHYtaWY9XCJwYWdpbmF0aW9uRGF0YSAmJiAhaGlkZURlZmF1bHRIZWFkZXJcIlxuICAgICAgdi1tb2RlbD1cInBhZ2luYXRpb25EYXRhXCJcbiAgICAgIDpkZW5zZT1cImRlbnNlXCJcbiAgICAgIDpsb2FkaW5nPVwibG9hZGluZ1wiXG4gICAgICA6ZGlzYWJsZS1wZXItcGFnZT1cImRpc2FibGVQZXJQYWdlXCJcbiAgICAgIGRhdGEtY3k9XCJ0YWJsZS1wYWdpbmF0aW9uXCJcbiAgICAgIEB1cGRhdGU6bW9kZWwtdmFsdWU9XCJvblBhZ2luYXRlKClcIlxuICAgIC8+XG4gICAgPGRpdlxuICAgICAgcmVmPVwidGFibGVTY3JvbGxlclwiXG4gICAgICA6Y2xhc3M9XCIkc3R5bGUuc2Nyb2xsZXJcIlxuICAgID5cbiAgICAgIDx0YWJsZVxuICAgICAgICByZWY9XCJ0YWJsZVwiXG4gICAgICAgIDpjbGFzcz1cIlskc3R5bGUudGFibGUsIHsgWyRzdHlsZS5kZW5zZV06IGRlbnNlIH1dXCJcbiAgICAgICAgYXJpYS1sYWJlbD1cIlwiXG4gICAgICA+XG4gICAgICAgIDxSdWlUYWJsZUhlYWRcbiAgICAgICAgICA6bG9hZGluZz1cImxvYWRpbmdcIlxuICAgICAgICAgIDppbmRldGVybWluYXRlPVwiaW5kZXRlcm1pbmF0ZVwiXG4gICAgICAgICAgOmNhcGl0YWxpemUtaGVhZGVycz1cIiFjb2xzXCJcbiAgICAgICAgICA6Y29sc3Bhbj1cImNvbHNwYW5cIlxuICAgICAgICAgIDpjb2x1bW4tYXR0cj1cImNvbHVtbkF0dHJcIlxuICAgICAgICAgIDpjb2x1bW5zPVwiY29sdW1uc1wiXG4gICAgICAgICAgOmRlbnNlPVwiZGVuc2VcIlxuICAgICAgICAgIDpkaXNhYmxlLWNoZWNrLWFsbD1cIiFmaWx0ZXJlZD8ubGVuZ3RoXCJcbiAgICAgICAgICA6aXMtYWxsLXNlbGVjdGVkPVwiaXNBbGxTZWxlY3RlZFwiXG4gICAgICAgICAgOm5vLWRhdGE9XCJub0RhdGFcIlxuICAgICAgICAgIDpzZWxlY3RhYmxlPVwiISFzZWxlY3RlZERhdGFcIlxuICAgICAgICAgIDpzb3J0LWRhdGE9XCJzb3J0RGF0YVwiXG4gICAgICAgICAgOnNvcnRlZC1tYXA9XCJzb3J0ZWRNYXBcIlxuICAgICAgICAgIDpzdGljaz1cInN0aWNrXCJcbiAgICAgICAgICA6c3RpY2t5LWhlYWRlcj1cInN0aWNreUhlYWRlclwiXG4gICAgICAgICAgQHNvcnQ9XCJvblNvcnQoJGV2ZW50KVwiXG4gICAgICAgICAgQHNlbGVjdDphbGw9XCJvblRvZ2dsZUFsbCgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx0ZW1wbGF0ZVxuICAgICAgICAgICAgdi1mb3I9XCJoZWFkZXJTbG90IGluIGhlYWRlclNsb3RzXCJcbiAgICAgICAgICAgICNbaGVhZGVyU2xvdF09XCJzbG90RGF0YVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNsb3RcbiAgICAgICAgICAgICAgOm5hbWU9XCJoZWFkZXJTbG90XCJcbiAgICAgICAgICAgICAgdi1iaW5kPVwic2xvdERhdGFcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICA8L1J1aVRhYmxlSGVhZD5cbiAgICAgICAgPFJ1aVRhYmxlSGVhZFxuICAgICAgICAgIHYtaWY9XCJzdGlja3lIZWFkZXJcIlxuICAgICAgICAgIDpsb2FkaW5nPVwibG9hZGluZ1wiXG4gICAgICAgICAgOmNhcGl0YWxpemUtaGVhZGVycz1cIiFjb2xzXCJcbiAgICAgICAgICA6Y29sc3Bhbj1cImNvbHNwYW5cIlxuICAgICAgICAgIDpjb2x1bW4tYXR0cj1cImNvbHVtbkF0dHJcIlxuICAgICAgICAgIDpjb2x1bW5zPVwiY29sdW1uc1wiXG4gICAgICAgICAgOmRlbnNlPVwiZGVuc2VcIlxuICAgICAgICAgIDpuby1kYXRhPVwibm9EYXRhXCJcbiAgICAgICAgICA6c2VsZWN0YWJsZT1cIiEhc2VsZWN0ZWREYXRhXCJcbiAgICAgICAgICA6c29ydC1kYXRhPVwic29ydERhdGFcIlxuICAgICAgICAgIDpzb3J0ZWQtbWFwPVwic29ydGVkTWFwXCJcbiAgICAgICAgICBkYXRhLWlkPVwiaGVhZC1jbG9uZVwiXG4gICAgICAgICAgY2xhc3M9XCJvcGFjaXR5LTAgaW52aXNpYmxlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx0ZW1wbGF0ZVxuICAgICAgICAgICAgdi1mb3I9XCJoZWFkZXJTbG90IGluIGhlYWRlclNsb3RzXCJcbiAgICAgICAgICAgICNbaGVhZGVyU2xvdF09XCJzbG90RGF0YVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNsb3RcbiAgICAgICAgICAgICAgOm5hbWU9XCJoZWFkZXJTbG90XCJcbiAgICAgICAgICAgICAgdi1iaW5kPVwic2xvdERhdGFcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICA8L1J1aVRhYmxlSGVhZD5cbiAgICAgICAgPHRib2R5IDpjbGFzcz1cIlskc3R5bGUudGJvZHksIHsgWyRzdHlsZVsndGJvZHktLXN0cmlwZWQnXSA/PyAnJ106IHN0cmlwZWQgfV1cIj5cbiAgICAgICAgICA8c2xvdFxuICAgICAgICAgICAgdi1pZj1cInNsb3RzWydib2R5LnByZXBlbmQnXVwiXG4gICAgICAgICAgICA6Y29sc3Bhbj1cImNvbHNwYW5cIlxuICAgICAgICAgICAgbmFtZT1cImJvZHkucHJlcGVuZFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8dGVtcGxhdGUgdi1mb3I9XCIocm93LCBpbmRleCkgaW4gZmlsdGVyZWRcIj5cbiAgICAgICAgICAgIDx0clxuICAgICAgICAgICAgICB2LWlmPVwiIWlzUm93KHJvdylcIlxuICAgICAgICAgICAgICA6a2V5PVwiYHJvdy0ke2luZGV4fWBcIlxuICAgICAgICAgICAgICA6Y2xhc3M9XCJbJHN0eWxlLnRyLCAkc3R5bGUudHJfX2dyb3VwXVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzbG90XG4gICAgICAgICAgICAgICAgbmFtZT1cImdyb3VwLmhlYWRlclwiXG4gICAgICAgICAgICAgICAgOmNvbHNwYW49XCJjb2xzcGFuXCJcbiAgICAgICAgICAgICAgICA6aGVhZGVyPVwicm93XCJcbiAgICAgICAgICAgICAgICA6aXMtb3Blbj1cImlzRXhwYW5kZWRHcm91cChyb3cuZ3JvdXApXCJcbiAgICAgICAgICAgICAgICA6dG9nZ2xlPVwiKCkgPT4gb25Ub2dnbGVFeHBhbmRHcm91cChyb3cuZ3JvdXAsIHJvdy5pZGVudGlmaWVyKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICAgIDpjbGFzcz1cIlskc3R5bGUudGRdXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiIXAtMlwiXG4gICAgICAgICAgICAgICAgICA6Y29sc3Bhbj1cImNvbHNwYW5cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICA8UnVpRXhwYW5kQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgdi1pZj1cImdyb3VwRXhwYW5kQnV0dG9uUG9zaXRpb24gPT09ICdzdGFydCdcIlxuICAgICAgICAgICAgICAgICAgICAgIDpleHBhbmRlZD1cImlzRXhwYW5kZWRHcm91cChyb3cuZ3JvdXApXCJcbiAgICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XCJvblRvZ2dsZUV4cGFuZEdyb3VwKHJvdy5ncm91cCwgcm93LmlkZW50aWZpZXIpXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPHNsb3RcbiAgICAgICAgICAgICAgICAgICAgICA6Z3JvdXAta2V5PVwiZ3JvdXBLZXlcIlxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJncm91cC5oZWFkZXIuY29udGVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgOmhlYWRlcj1cInJvd1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBncm91cEtleSB9fToge3sgcm93LmlkZW50aWZpZXIgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPFJ1aUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIEBjbGljaz1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNvcHlHcm91cCh7IGtleTogZ3JvdXBLZXksIHZhbHVlOiByb3cuZ3JvdXAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFJ1aUljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImx1LWNvcHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwiMTZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L1J1aUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zbG90PlxuICAgICAgICAgICAgICAgICAgICA8UnVpVG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICAgIDpwb3BwZXI9XCJ7IHBsYWNlbWVudDogJ3RvcCcgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtbC1hdXRvIG1yLTJcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlICNhY3RpdmF0b3I+XG4gICAgICAgICAgICAgICAgICAgICAgICA8UnVpQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XCJvblVuZ3JvdXAoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxSdWlJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImx1LXRyYXNoLTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCIxNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1J1aUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgIFVuZ3JvdXBcbiAgICAgICAgICAgICAgICAgICAgPC9SdWlUb29sdGlwPlxuICAgICAgICAgICAgICAgICAgICA8UnVpRXhwYW5kQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgdi1pZj1cImdyb3VwRXhwYW5kQnV0dG9uUG9zaXRpb24gPT09ICdlbmQnXCJcbiAgICAgICAgICAgICAgICAgICAgICA6ZXhwYW5kZWQ9XCJpc0V4cGFuZGVkR3JvdXAocm93Lmdyb3VwKVwiXG4gICAgICAgICAgICAgICAgICAgICAgQGNsaWNrPVwib25Ub2dnbGVFeHBhbmRHcm91cChyb3cuZ3JvdXAsIHJvdy5pZGVudGlmaWVyKVwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8L3Nsb3Q+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPHRlbXBsYXRlIHYtZWxzZT5cbiAgICAgICAgICAgICAgPHRyXG4gICAgICAgICAgICAgICAgOmtleT1cImByb3ctJHtpbmRleH1gXCJcbiAgICAgICAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAgICAgICAkc3R5bGUudHIsXG4gICAgICAgICAgICAgICAgICB7IFskc3R5bGUudHJfX3NlbGVjdGVkID8/ICcnXTogaXNTZWxlY3RlZChyb3dbcm93SWRlbnRpZmllcl0pIH0sXG4gICAgICAgICAgICAgICAgICB0eXBlb2YgaXRlbUNsYXNzID09PSAnc3RyaW5nJyA/IGl0ZW1DbGFzcyA6IGl0ZW1DbGFzcyhyb3cpLFxuICAgICAgICAgICAgICAgIF1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICAgICB2LWlmPVwic2VsZWN0ZWREYXRhXCJcbiAgICAgICAgICAgICAgICAgIDpjbGFzcz1cIiRzdHlsZS5jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICBjb2xzcGFuPVwiMVwiXG4gICAgICAgICAgICAgICAgICByb3dzcGFuPVwiMVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFJ1aUNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgIDpkYXRhLWN5PVwiYHRhYmxlLXRvZ2dsZS1jaGVjay0ke2luZGV4fWBcIlxuICAgICAgICAgICAgICAgICAgICA6bW9kZWwtdmFsdWU9XCJpc1NlbGVjdGVkKHJvd1tyb3dJZGVudGlmaWVyXSlcIlxuICAgICAgICAgICAgICAgICAgICA6ZGlzYWJsZWQ9XCJpc0Rpc2FibGVkUm93KHJvd1tyb3dJZGVudGlmaWVyXSlcIlxuICAgICAgICAgICAgICAgICAgICA6c2l6ZT1cImRlbnNlID8gJ3NtJyA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0LW5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBoaWRlLWRldGFpbHNcbiAgICAgICAgICAgICAgICAgICAgQHVwZGF0ZTptb2RlbC12YWx1ZT1cIm9uU2VsZWN0KCRldmVudCwgcm93W3Jvd0lkZW50aWZpZXJdLCB0cnVlKVwiXG4gICAgICAgICAgICAgICAgICAgIEBjbGljaz1cIm9uQ2hlY2tib3hDbGljaygkZXZlbnQsIHJvd1tyb3dJZGVudGlmaWVyXSwgaW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC90ZD5cblxuICAgICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAgICAgdi1mb3I9XCIoY29sdW1uLCBzdWJJbmRleCkgaW4gY29sdW1uc1wiXG4gICAgICAgICAgICAgICAgICA6a2V5PVwic3ViSW5kZXhcIlxuICAgICAgICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgICAgICAgICAkc3R5bGUudGQsXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbi5jZWxsQ2xhc3MsXG4gICAgICAgICAgICAgICAgICAgICRzdHlsZVtgYWxpZ25fXyR7Y29sdW1uLmFsaWduID8/ICdzdGFydCd9YF0sXG4gICAgICAgICAgICAgICAgICBdXCJcbiAgICAgICAgICAgICAgICAgIDpjb2xzcGFuPVwiY29sdW1uLmNvbHNwYW4gPz8gMVwiXG4gICAgICAgICAgICAgICAgICA6cm93c3Bhbj1cImNvbHVtbi5yb3dzcGFuID8/IDFcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxzbG90XG4gICAgICAgICAgICAgICAgICAgIHYtaWY9XCJjb2x1bW4ua2V5ID09PSAnZXhwYW5kJ1wiXG4gICAgICAgICAgICAgICAgICAgIDpuYW1lPVwiYGl0ZW0uJHtjb2x1bW4ua2V5LnRvU3RyaW5nKCl9YFwiXG4gICAgICAgICAgICAgICAgICAgIDpjb2x1bW49XCJjb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICA6cm93PVwicm93XCJcbiAgICAgICAgICAgICAgICAgICAgOmluZGV4PVwiaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8UnVpRXhwYW5kQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgdi1pZj1cIiFzbG90c1snaXRlbS5leHBhbmQnXVwiXG4gICAgICAgICAgICAgICAgICAgICAgOmV4cGFuZGVkPVwiaXNFeHBhbmRlZChyb3dbcm93SWRlbnRpZmllcl0pXCJcbiAgICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XCJvblRvZ2dsZUV4cGFuZChyb3cpXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvc2xvdD5cbiAgICAgICAgICAgICAgICAgIDxzbG90XG4gICAgICAgICAgICAgICAgICAgIHYtZWxzZVxuICAgICAgICAgICAgICAgICAgICA6Y29sdW1uPVwiY29sdW1uXCJcbiAgICAgICAgICAgICAgICAgICAgOmluZGV4PVwiaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICA6bmFtZT1cImBpdGVtLiR7Y29sdW1uLmtleS50b1N0cmluZygpfWBcIlxuICAgICAgICAgICAgICAgICAgICA6cm93PVwicm93XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgY2VsbFZhbHVlKHJvdywgY29sdW1uLmtleSkgfX1cbiAgICAgICAgICAgICAgICAgIDwvc2xvdD5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8L3RyPlxuXG4gICAgICAgICAgICAgIDx0clxuICAgICAgICAgICAgICAgIHYtaWY9XCJleHBhbmRhYmxlICYmIGlzRXhwYW5kZWQocm93W3Jvd0lkZW50aWZpZXJdKVwiXG4gICAgICAgICAgICAgICAgOmtleT1cImByb3ctZXhwYW5kLSR7aW5kZXh9YFwiXG4gICAgICAgICAgICAgICAgOmNsYXNzPVwiWyRzdHlsZS50ciwgJHN0eWxlLnRyX19leHBhbmRhYmxlXVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICAgIDpjb2xzcGFuPVwiY29sc3BhblwiXG4gICAgICAgICAgICAgICAgICA6Y2xhc3M9XCJbJHN0eWxlLnRkXVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHNsb3RcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cImV4cGFuZGVkLWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICA6cm93PVwicm93XCJcbiAgICAgICAgICAgICAgICAgICAgOmluZGV4PVwiaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgIDx0clxuICAgICAgICAgICAgdi1pZj1cImxvYWRpbmcgJiYgbm9EYXRhXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgOmNsYXNzPVwiJHN0eWxlLnRib2R5X19sb2FkZXJcIlxuICAgICAgICAgICAgICA6Y29sc3Bhbj1cImNvbHNwYW5cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8UnVpUHJvZ3Jlc3NcbiAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJpbmRldGVybWluYXRlXCJcbiAgICAgICAgICAgICAgICBjaXJjdWxhclxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDx0clxuICAgICAgICAgICAgdi1pZj1cIm5vRGF0YSAmJiBlbXB0eSAmJiAhbG9hZGluZ1wiXG4gICAgICAgICAgICA6Y2xhc3M9XCJbJHN0eWxlLnRyLCAkc3R5bGUudHJfX2VtcHR5XVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFRyYW5zaXRpb25cbiAgICAgICAgICAgICAgYXBwZWFyXG4gICAgICAgICAgICAgIGVudGVyLWFjdGl2ZS1jbGFzcz1cInRyYW5zaXRpb24gZWFzZS1vdXQgZHVyYXRpb24tMjAwIGRlbGF5LTIwMFwiXG4gICAgICAgICAgICAgIGVudGVyLWZyb20tY2xhc3M9XCJvcGFjaXR5LTAgdHJhbnNsYXRlLXktMVwiXG4gICAgICAgICAgICAgIGVudGVyLXRvLWNsYXNzPVwib3BhY2l0eS0xMDAgdHJhbnNsYXRlLXktMFwiXG4gICAgICAgICAgICAgIGxlYXZlLWFjdGl2ZS1jbGFzcz1cInRyYW5zaXRpb24gZWFzZS1pbiBkdXJhdGlvbi0xNTBcIlxuICAgICAgICAgICAgICBsZWF2ZS1mcm9tLWNsYXNzPVwib3BhY2l0eS0xMDAgdHJhbnNsYXRlLXktMFwiXG4gICAgICAgICAgICAgIGxlYXZlLXRvLWNsYXNzPVwib3BhY2l0eS0wIHRyYW5zbGF0ZS15LTFcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICA6Y2xhc3M9XCIkc3R5bGUudGRcIlxuICAgICAgICAgICAgICAgIDpjb2xzcGFuPVwiY29sc3BhblwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c2xvdCBuYW1lPVwibm8tZGF0YVwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiA6Y2xhc3M9XCIkc3R5bGUuZW1wdHlcIj5cbiAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgIDpzcmM9XCJpc0RhcmsgPyBub0RhdGFQbGFjZWhvbGRlckRhcmsgOiBub0RhdGFQbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgOmFsdD1cImVtcHR5LmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImgtMzJcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8cFxuICAgICAgICAgICAgICAgICAgICAgIHYtaWY9XCJlbXB0eS5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgOmNsYXNzPVwiJHN0eWxlLmVtcHR5X19sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBlbXB0eS5sYWJlbCB9fVxuICAgICAgICAgICAgICAgICAgICA8L3A+XG5cbiAgICAgICAgICAgICAgICAgICAgPHNsb3QgbmFtZT1cImVtcHR5LWRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHBcbiAgICAgICAgICAgICAgICAgICAgICAgIHYtaWY9XCJlbXB0eS5kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M9XCIkc3R5bGUuZW1wdHlfX2Rlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBlbXB0eS5kZXNjcmlwdGlvbiB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgPC9zbG90PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9zbG90PlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC9UcmFuc2l0aW9uPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPHNsb3RcbiAgICAgICAgICAgIHYtaWY9XCJzbG90c1snYm9keS5hcHBlbmQnXVwiXG4gICAgICAgICAgICA6Y29sc3Bhbj1cImNvbHNwYW5cIlxuICAgICAgICAgICAgbmFtZT1cImJvZHkuYXBwZW5kXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L3Rib2R5PlxuICAgICAgICA8dGZvb3Q+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cInRmb290XCIgLz5cbiAgICAgICAgPC90Zm9vdD5cbiAgICAgIDwvdGFibGU+XG4gICAgPC9kaXY+XG4gICAgPFJ1aVRhYmxlUGFnaW5hdGlvblxuICAgICAgdi1pZj1cInBhZ2luYXRpb25EYXRhICYmICFoaWRlRGVmYXVsdEZvb3RlclwiXG4gICAgICB2LW1vZGVsPVwicGFnaW5hdGlvbkRhdGFcIlxuICAgICAgOmRlbnNlPVwiZGVuc2VcIlxuICAgICAgOmxvYWRpbmc9XCJsb2FkaW5nXCJcbiAgICAgIDpkaXNhYmxlLXBlci1wYWdlPVwiZGlzYWJsZVBlclBhZ2VcIlxuICAgICAgZGF0YS1jeT1cInRhYmxlLXBhZ2luYXRpb25cIlxuICAgICAgQHVwZGF0ZTptb2RlbC12YWx1ZT1cIm9uUGFnaW5hdGUoKVwiXG4gICAgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgbW9kdWxlIGxhbmc9XCJzY3NzXCI+XG4ud3JhcHBlciB7XG4gIEBhcHBseSByZWxhdGl2ZSBkaXZpZGUteSBkaXZpZGUtYmxhY2svWzAuMTJdIG92ZXJmbG93LWhpZGRlbjtcbiAgJi5vdXRsaW5lZCB7XG4gICAgQGFwcGx5IGJvcmRlciBib3JkZXItYmxhY2svWzAuMTJdO1xuICB9XG5cbiAgJi5yb3VuZGVkX19zbSB7XG4gICAgQGFwcGx5IHJvdW5kZWQtWy4yNXJlbV07XG5cbiAgICAuaW1hZ2Uge1xuICAgICAgQGFwcGx5IHJvdW5kZWQtdC1bLjI1cmVtXTtcbiAgICB9XG4gIH1cblxuICAmLnJvdW5kZWRfX21kIHtcbiAgICBAYXBwbHkgcm91bmRlZC1bLjc1cmVtXTtcblxuICAgIC5pbWFnZSB7XG4gICAgICBAYXBwbHkgcm91bmRlZC10LVsuNzVyZW1dO1xuICAgIH1cbiAgfVxuXG4gICYucm91bmRlZF9fbGcge1xuICAgIEBhcHBseSByb3VuZGVkLVsxcmVtXTtcblxuICAgIC5pbWFnZSB7XG4gICAgICBAYXBwbHkgcm91bmRlZC10LVsxcmVtXTtcbiAgICB9XG4gIH1cblxuICAuc2Nyb2xsZXIge1xuICAgIEBhcHBseSBvdmVyZmxvdy14LWF1dG8gb3ZlcmZsb3cteS1oaWRkZW47XG4gICAgY2xpcC1wYXRoOiBpbnNldCgwIDAgMCAwKTtcbiAgfVxuXG4gIC50YWJsZSB7XG4gICAgQGFwcGx5IG1pbi13LWZ1bGwgdGFibGUtZml4ZWQgZGl2aWRlLXkgZGl2aWRlLWJsYWNrL1swLjEyXSB3aGl0ZXNwYWNlLW5vd3JhcCBteC1hdXRvIG15LTAgbWF4LXctZml0IHJlbGF0aXZlIGJvcmRlci1ibGFjay9bMC4xMl07XG5cbiAgICAudGJvZHkge1xuICAgICAgQGFwcGx5IGRpdmlkZS15IGRpdmlkZS1ibGFjay9bMC4xMl07XG5cbiAgICAgICYtLXN0cmlwZWQge1xuICAgICAgICA+IC50ciB7XG4gICAgICAgICAgJjpudGgtY2hpbGQoZXZlbikge1xuICAgICAgICAgICAgQGFwcGx5IGJnLXJ1aS1ncmV5LTUwO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICA+IC50ciB7XG4gICAgICAgIEBhcHBseSBob3ZlcjpiZy1ibGFjay9bMC4wNF07XG5cbiAgICAgICAgJl9fc2VsZWN0ZWQge1xuICAgICAgICAgIEBhcHBseSBiZy1ydWktcHJpbWFyeS9bMC4wOF07XG4gICAgICAgIH1cblxuICAgICAgICAmX19lbXB0eSB7XG4gICAgICAgICAgQGFwcGx5IGhvdmVyOmJnLXRyYW5zcGFyZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgJl9fZXhwYW5kYWJsZSB7XG4gICAgICAgICAgQGFwcGx5IGJnLVsjZjlmYWZiXSBob3ZlcjpiZy1bI2Y5ZmFmYl07XG4gICAgICAgIH1cblxuICAgICAgICAmX19ncm91cCB7XG4gICAgICAgICAgQGFwcGx5IGJnLWJsYWNrL1swLjAyXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC50ZCB7XG4gICAgICAgICAgQGFwcGx5IHAtNCB0ZXh0LXJ1aS10ZXh0IHRleHQtYm9keS0yO1xuICAgICAgICAgIHRleHQtd3JhcDogaW5pdGlhbDtcblxuICAgICAgICAgICYuYWxpZ25fX3N0YXJ0IHtcbiAgICAgICAgICAgIEBhcHBseSB0ZXh0LWxlZnQgcnRsOnRleHQtcmlnaHQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgJi5hbGlnbl9fY2VudGVyIHtcbiAgICAgICAgICAgIEBhcHBseSB0ZXh0LWNlbnRlcjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAmLmFsaWduX19lbmQge1xuICAgICAgICAgICAgQGFwcGx5IHRleHQtcmlnaHQgcnRsOnRleHQtbGVmdDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAuZW1wdHkge1xuICAgICAgICAgICAgQGFwcGx5IGZsZXggZmxleC1jb2wgZ2FwLTMgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGZsZXgtMSBtaW4taC1bNC40cmVtXSBteS00O1xuXG4gICAgICAgICAgICAmX19sYWJlbCB7XG4gICAgICAgICAgICAgIEBhcHBseSB0ZXh0LWJvZHktMSBsZWFkaW5nLW5vbmUgZm9udC1ib2xkIHRleHQtY2VudGVyIHRleHQtY3VycmVudCBwYi0wIG1iLTA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICZfX2Rlc2NyaXB0aW9uIHtcbiAgICAgICAgICAgICAgQGFwcGx5IHRleHQtYm9keS0yIHRleHQtY2VudGVyIHRleHQtcnVpLXRleHQtc2Vjb25kYXJ5IHBiLTAgbWItMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJl9fbG9hZGVyIHtcbiAgICAgICAgQGFwcGx5IHB5LTggdGV4dC1jZW50ZXI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmNoZWNrYm94IHtcbiAgICAgIEBhcHBseSBweC0yIHctWzMuNjI1cmVtXSBtYXgtdy1bMy42MjVyZW1dO1xuICAgICAgbGFiZWwge1xuICAgICAgICBAYXBwbHkgbWwtMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmRlbnNlIHtcbiAgICAgIC50Ym9keSB7XG4gICAgICAgIC50ZCB7XG4gICAgICAgICAgQGFwcGx5IHB5LVswLjM4cmVtXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG46Z2xvYmFsKC5kYXJrKSB7XG4gIC53cmFwcGVyIHtcbiAgICBAYXBwbHkgZGl2aWRlLXdoaXRlL1swLjEyXTtcblxuICAgICYub3V0bGluZWQge1xuICAgICAgQGFwcGx5IGJvcmRlci13aGl0ZS9bMC4xMl07XG4gICAgfVxuXG4gICAgLnRhYmxlIHtcbiAgICAgIEBhcHBseSBkaXZpZGUtd2hpdGUvWzAuMTJdIGJvcmRlci13aGl0ZS9bMC4xMl07XG5cbiAgICAgIC50Ym9keSB7XG4gICAgICAgIEBhcHBseSBkaXZpZGUtd2hpdGUvWzAuMTJdO1xuXG4gICAgICAgICYtLXN0cmlwZWQge1xuICAgICAgICAgID4gLnRyIHtcbiAgICAgICAgICAgICY6bnRoLWNoaWxkKGV2ZW4pIHtcbiAgICAgICAgICAgICAgQGFwcGx5IGJnLXJ1aS1ncmV5LTkwMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICA+IC50ciB7XG4gICAgICAgICAgQGFwcGx5IGhvdmVyOmJnLXdoaXRlL1swLjA0XTtcblxuICAgICAgICAgICZfX3NlbGVjdGVkIHtcbiAgICAgICAgICAgIEBhcHBseSBiZy1ydWktZGFyay1wcmltYXJ5L1swLjA4XTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAmX19leHBhbmRhYmxlIHtcbiAgICAgICAgICAgIEBhcHBseSBiZy1bIzEyMTIxMl0gaG92ZXI6YmctWyMxMjEyMTJdO1xuICAgICAgICAgIH1cblxuICAgICAgICAgICZfX2dyb3VwIHtcbiAgICAgICAgICAgIEBhcHBseSBiZy13aGl0ZS9bMC4wMl07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvcHMge1xuICBhY3RpdmU/OiBib29sZWFuO1xuICB2YWx1ZT86IG51bWJlciB8IHN0cmluZztcbiAgZWFnZXI/OiBib29sZWFuO1xuICByZXZlcnNlPzogYm9vbGVhbjtcbn1cblxuZGVmaW5lT3B0aW9ucyh7XG4gIG5hbWU6ICdSdWlUYWJJdGVtJyxcbn0pO1xuXG53aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgZWFnZXI6IGZhbHNlLFxuICBhY3RpdmU6IGZhbHNlLFxuICByZXZlcnNlOiBmYWxzZSxcbn0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiA6Y2xhc3M9XCJbJHN0eWxlLnRhYiwgeyAnYWN0aXZlLXRhYi1pdGVtJzogYWN0aXZlIH1dXCI+XG4gICAgPFRyYW5zaXRpb25cbiAgICAgIDplbnRlci1mcm9tLWNsYXNzPVwiYG9wYWNpdHktMCAke3JldmVyc2UgPyAnLXRyYW5zbGF0ZS14LTgnIDogJ3RyYW5zbGF0ZS14LTgnfWBcIlxuICAgICAgOmxlYXZlLXRvLWNsYXNzPVwiYG9wYWNpdHktMCAhaC0wIG92ZXJmbG93LWhpZGRlbiAke1xuICAgICAgICByZXZlcnNlID8gJ3RyYW5zbGF0ZS14LTgnIDogJy10cmFuc2xhdGUteC04J1xuICAgICAgfWBcIlxuICAgICAgZW50ZXItYWN0aXZlLWNsYXNzPVwidy1mdWxsIHRyYW5zZm9ybSBkdXJhdGlvbi0zMDAgdHJhbnNpdGlvblwiXG4gICAgICBlbnRlci10by1jbGFzcz1cIm9wYWNpdHktMTAwIHRyYW5zbGF0ZS14LTBcIlxuICAgICAgbGVhdmUtYWN0aXZlLWNsYXNzPVwidy1mdWxsIHRyYW5zZm9ybSBkdXJhdGlvbi0zMDAgdHJhbnNpdGlvbiAhaC0wIG92ZXJmbG93LWhpZGRlblwiXG4gICAgICBsZWF2ZS1mcm9tLWNsYXNzPVwib3BhY2l0eS0xMDAgdHJhbnNsYXRlLXgtMCAhaC0wIG92ZXJmbG93LWhpZGRlblwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICB2LWlmPVwiYWN0aXZlXCJcbiAgICAgICAgY2xhc3M9XCJ3LWZ1bGxcIlxuICAgICAgPlxuICAgICAgICA8c2xvdCAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9UcmFuc2l0aW9uPlxuICAgIDxkaXZcbiAgICAgIHYtaWY9XCJlYWdlciAmJiAhYWN0aXZlXCJcbiAgICAgIGNsYXNzPVwiaGlkZGVuXCJcbiAgICA+XG4gICAgICA8c2xvdCAvPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBsYW5nPVwic2Nzc1wiIG1vZHVsZT5cbi50YWIge1xuICBAYXBwbHkgdy1mdWxsO1xufVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXAgZ2VuZXJpYz0nVCBleHRlbmRzIHN0cmluZyB8IG51bWJlcic+XG5pbXBvcnQgeyBGcmFnbWVudCwgaXNWTm9kZSB9IGZyb20gJ3Z1ZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvcHM8VD4ge1xuICBtb2RlbFZhbHVlPzogVDtcbn1cblxuZGVmaW5lT3B0aW9ucyh7XG4gIG5hbWU6ICdSdWlUYWJJdGVtcycsXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG59KTtcblxuY29uc3QgbW9kZWxWYWx1ZSA9IGRlZmluZU1vZGVsPFByb3BzPFQ+Wydtb2RlbFZhbHVlJ10+KCk7XG5cbmNvbnN0IHNsb3RzID0gdXNlU2xvdHMoKTtcbmNvbnN0IHJldmVyc2UgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuY29uc3QgY3VyckluZGV4ID0gcmVmPG51bWJlcj4oLTEpO1xuY29uc3QgYWN0aXZlSW5kZXggPSByZWY8bnVtYmVyPigtMSk7XG5cbndhdGNoKGN1cnJJbmRleCwgKGluZGV4KSA9PiB7XG4gIG5leHRUaWNrKCgpID0+IHtcbiAgICBzZXQoYWN0aXZlSW5kZXgsIGluZGV4KTtcbiAgfSk7XG59KTtcblxuLy8gV2hlbiB1c2luZyBkeW5hbWljIGNvbnRlbnQgd2l0aCB2LWZvciB0aGUgc2xvdCBjb250ZW50IGNhbiBjb250YWluIGZyYWdtZW50LFxuLy8gR28gdGhyb3VnaCB0aGUgZnJhZ21lbnQgYW5kIGFsd2F5cyByZXR1cm4gUnVpVGFiSXRlbSBvbmx5XG5mdW5jdGlvbiBnZXRDaGlsZHJlblRhYnMoY2hpbGRyZW46IFZOb2RlW10pOiBWTm9kZVtdIHtcbiAgcmV0dXJuIGNoaWxkcmVuLmZsYXRNYXAoKGl0ZW0pID0+IHtcbiAgICBpZiAoaXRlbS50eXBlID09PSBGcmFnbWVudCAmJiBBcnJheS5pc0FycmF5KGl0ZW0uY2hpbGRyZW4pICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoID4gMClcbiAgICAgIHJldHVybiBnZXRDaGlsZHJlblRhYnMoaXRlbS5jaGlsZHJlbi5maWx0ZXIoaXNWTm9kZSkpO1xuXG4gICAgcmV0dXJuIFtpdGVtXTtcbiAgfSkuZmxhdCgpO1xufVxuXG5jb25zdCBjaGlsZHJlbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgY29uc3Qgc2xvdENvbnRlbnQgPSBzbG90cy5kZWZhdWx0Py4oKSA/PyBbXTtcblxuICBjb25zdCB0YWJzID0gZ2V0Q2hpbGRyZW5UYWJzKHNsb3RDb250ZW50KTtcblxuICBsZXQgYW55QWN0aXZlID0gZmFsc2U7XG4gIGNvbnN0IGNoaWxkcmVuID0gdGFicy5tYXAoKHRhYiwgaW5kZXgpID0+IHtcbiAgICBjb25zdCB2YWx1ZSA9IHRhYi5wcm9wcz8udmFsdWUgPz8gaW5kZXg7XG4gICAgY29uc3QgYWN0aXZlID0gZ2V0KG1vZGVsVmFsdWUpID09PSB2YWx1ZTtcbiAgICBpZiAoYWN0aXZlKSB7XG4gICAgICBhbnlBY3RpdmUgPSB0cnVlO1xuICAgICAgaWYgKGluZGV4ICE9PSBnZXQoY3VyckluZGV4KSkge1xuICAgICAgICBzZXQocmV2ZXJzZSwgaW5kZXggPCBnZXQoY3VyckluZGV4KSk7XG4gICAgICAgIHNldChjdXJySW5kZXgsIGluZGV4KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udGFiLFxuICAgICAgcHJvcHM6IHtcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIC4uLnRhYi5wcm9wcyxcbiAgICAgIH0sXG4gICAgfTtcbiAgfSk7XG5cbiAgaWYgKCFhbnlBY3RpdmUpXG4gICAgc2V0KGN1cnJJbmRleCwgLTEpO1xuXG4gIHJldHVybiBjaGlsZHJlbjtcbn0pO1xuXG5jb25zdCB3cmFwcGVyID0gcmVmPEhUTUxEaXZFbGVtZW50PigpO1xuY29uc3QgaW5uZXIgPSByZWY8SFRNTERpdkVsZW1lbnQ+KCk7XG5cbmNvbnN0IHsgaGVpZ2h0OiBpbm5lckhlaWdodCB9ID0gdXNlRWxlbWVudFNpemUoaW5uZXIpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIHJlZj1cIndyYXBwZXJcIlxuICAgIDpjbGFzcz1cIiRzdHlsZS50YWJzXCJcbiAgICB2LWJpbmQ9XCIkYXR0cnNcIlxuICA+XG4gICAgPGRpdiByZWY9XCJpbm5lclwiPlxuICAgICAgPENvbXBvbmVudFxuICAgICAgICA6aXM9XCJjaGlsZFwiXG4gICAgICAgIHYtZm9yPVwiKGNoaWxkLCBpKSBpbiBjaGlsZHJlblwiXG4gICAgICAgIDprZXk9XCJpXCJcbiAgICAgICAgOnJldmVyc2U9XCJyZXZlcnNlXCJcbiAgICAgICAgOmFjdGl2ZT1cImkgPT09IGFjdGl2ZUluZGV4XCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgbW9kdWxlPlxuLnRhYnMge1xuICBAYXBwbHkgZ3JvdyB0cmFuc2l0aW9uLWFsbCBvdmVyZmxvdy1oaWRkZW47XG4gIGhlaWdodDogY2FsYyh2LWJpbmQoaW5uZXJIZWlnaHQpICogMXB4KTtcbn1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuaW1wb3J0IHR5cGUgeyBSb3V0ZUxvY2F0aW9uUmF3IH0gZnJvbSAndnVlLXJvdXRlcic7XG5pbXBvcnQgdHlwZSB7IENvbnRleHRDb2xvcnNUeXBlIH0gZnJvbSAnQC9jb25zdHMvY29sb3JzJztcbmltcG9ydCBSdWlCdXR0b24gZnJvbSAnQC9jb21wb25lbnRzL2J1dHRvbnMvYnV0dG9uL1J1aUJ1dHRvbi52dWUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BzIHtcbiAgY29sb3I/OiBDb250ZXh0Q29sb3JzVHlwZTtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBncm93PzogYm9vbGVhbjtcbiAgdmFsdWU/OiBudW1iZXIgfCBzdHJpbmc7XG4gIGFjdGl2ZT86IGJvb2xlYW47XG4gIGFjdGl2ZUNsYXNzPzogc3RyaW5nO1xuICBsaW5rPzogYm9vbGVhbjtcbiAgdGFyZ2V0Pzogc3RyaW5nO1xuICB0bz86IFJvdXRlTG9jYXRpb25SYXc7XG4gIGV4YWN0PzogYm9vbGVhbjtcbiAgZXhhY3RQYXRoPzogYm9vbGVhbjtcbiAgdmVydGljYWw/OiBib29sZWFuO1xuICBhbGlnbj86ICdzdGFydCcgfCAnY2VudGVyJyB8ICdlbmQnO1xuICBpbmRpY2F0b3JQb3NpdGlvbj86ICdzdGFydCcgfCAnZW5kJztcbn1cblxuZGVmaW5lT3B0aW9ucyh7XG4gIG5hbWU6ICdSdWlUYWInLFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxufSk7XG5cbmNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gIGNvbG9yOiB1bmRlZmluZWQsXG4gIGRpc2FibGVkOiBmYWxzZSxcbiAgZ3JvdzogZmFsc2UsXG4gIHZhbHVlOiBnZW5lcmF0ZUlkKCksXG4gIGFjdGl2ZTogZmFsc2UsXG4gIGFjdGl2ZUNsYXNzOiAnJyxcbiAgbGluazogZmFsc2UsXG4gIHRvOiAnJyxcbiAgdGFyZ2V0OiAnX3NlbGYnLFxuICBleGFjdDogZmFsc2UsXG4gIGV4YWN0UGF0aDogZmFsc2UsXG4gIHZlcnRpY2FsOiBmYWxzZSxcbiAgYWxpZ246ICdjZW50ZXInLFxuICBpbmRpY2F0b3JQb3NpdGlvbjogJ2VuZCcsXG59KTtcblxuY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPHtcbiAgKGU6ICdjbGljaycsIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiB2b2lkO1xufT4oKTtcblxuY29uc3Qgc2xvdHMgPSBkZWZpbmVTbG90czx7XG4gIGRlZmF1bHQ/OiAocHJvcHM/OiBvYmplY3QpID0+IGFueTtcbiAgcHJlcGVuZD86IChwcm9wcz86IG9iamVjdCkgPT4gYW55O1xuICBhcHBlbmQ/OiAocHJvcHM/OiBvYmplY3QpID0+IGFueTtcbn0+KCk7XG5cbmNvbnN0IHsgdGFyZ2V0LCBncm93LCBhY3RpdmUsIGFjdGl2ZUNsYXNzLCBkaXNhYmxlZCwgdmVydGljYWwsIGFsaWduLCB2YWx1ZSwgaW5kaWNhdG9yUG9zaXRpb24gfVxuICA9IHRvUmVmcyhwcm9wcyk7XG5cbmNvbnN0IGNzcyA9IHVzZUNzc01vZHVsZSgpO1xuXG5jb25zdCBpc1NlbGYgPSBjb21wdXRlZCgoKSA9PiBnZXQodGFyZ2V0KSA9PT0gJ19zZWxmJyk7XG5cbmNvbnN0IHRhYkNsYXNzID0gY29tcHV0ZWQoKCkgPT4gW1xuICBjc3MudGFiLFxuICBjc3NbYHRhYi0tJHtnZXQoYWxpZ24pfWBdLFxuICBjc3NbYHRhYi1pbmRpY2F0b3ItLSR7Z2V0KGluZGljYXRvclBvc2l0aW9uKX1gXSxcbiAge1xuICAgIFtjc3NbJ3RhYi0tZ3JvdyddID8/ICcnXTogZ2V0KGdyb3cpLFxuICAgIFtgJHtjc3NbJ3RhYi0tYWN0aXZlJ119IGFjdGl2ZS10YWIgJHtnZXQoYWN0aXZlQ2xhc3MpfWBdOiBnZXQoYWN0aXZlKSxcbiAgICBbY3NzWyd0YWItLWRpc2FibGVkJ10gPz8gJyddOiBnZXQoZGlzYWJsZWQpLFxuICAgIFtjc3NbJ3RhYi0tdmVydGljYWwnXSA/PyAnJ106IGdldCh2ZXJ0aWNhbCksXG4gIH0sXG5dKTtcblxuZnVuY3Rpb24gY2xpY2soKSB7XG4gIGVtaXQoJ2NsaWNrJywgZ2V0KHZhbHVlKSk7XG59XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8UnVpQnV0dG9uXG4gICAgdi1pZj1cImRpc2FibGVkXCJcbiAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgZGlzYWJsZWRcbiAgICA6Y2xhc3M9XCJ0YWJDbGFzc1wiXG4gICAgaGlkZS1mb2N1cy1pbmRpY2F0b3JcbiAgICB0YWJpbmRleD1cIi0xXCJcbiAgICByb2xlPVwidGFiXCJcbiAgICB2LWJpbmQ9XCIkYXR0cnNcIlxuICA+XG4gICAgPHRlbXBsYXRlXG4gICAgICB2LWZvcj1cIihfLCBuYW1lKSBpbiBzbG90c1wiXG4gICAgICAjW25hbWVdPVwic2xvdERhdGFcIlxuICAgID5cbiAgICAgIDxzbG90XG4gICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgIHYtYmluZD1cInNsb3REYXRhXCJcbiAgICAgIC8+XG4gICAgPC90ZW1wbGF0ZT5cbiAgPC9SdWlCdXR0b24+XG4gIDxSdWlCdXR0b25cbiAgICB2LWVsc2UtaWY9XCIhbGlua1wiXG4gICAgOmNsYXNzPVwidGFiQ2xhc3NcIlxuICAgIDpjb2xvcj1cImFjdGl2ZSA/IGNvbG9yIDogdW5kZWZpbmVkXCJcbiAgICByb2xlPVwidGFiXCJcbiAgICB2LWJpbmQ9XCIkYXR0cnNcIlxuICAgIHRhYmluZGV4PVwiLTFcIlxuICAgIGhpZGUtZm9jdXMtaW5kaWNhdG9yXG4gICAgdmFyaWFudD1cInRleHRcIlxuICAgIEBjbGljaz1cImNsaWNrKClcIlxuICA+XG4gICAgPHRlbXBsYXRlXG4gICAgICB2LWZvcj1cIihfLCBuYW1lKSBpbiBzbG90c1wiXG4gICAgICAjW25hbWVdPVwic2xvdERhdGFcIlxuICAgID5cbiAgICAgIDxzbG90XG4gICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgIHYtYmluZD1cInNsb3REYXRhXCJcbiAgICAgIC8+XG4gICAgPC90ZW1wbGF0ZT5cbiAgPC9SdWlCdXR0b24+XG4gIDxSb3V0ZXJMaW5rXG4gICAgdi1lbHNlXG4gICAgI2RlZmF1bHQ9XCJ7IGhyZWYsIG5hdmlnYXRlLCBpc0FjdGl2ZSwgaXNFeGFjdEFjdGl2ZSB9XCJcbiAgICA6dG89XCJ0b1wiXG4gICAgOmV4YWN0PVwiZXhhY3RcIlxuICAgIDpleGFjdC1wYXRoPVwiZXhhY3RQYXRoXCJcbiAgICBjdXN0b21cbiAgPlxuICAgIDxSdWlCdXR0b25cbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgLi4udGFiQ2xhc3MsXG4gICAgICAgIHtcbiAgICAgICAgICBbYCR7Y3NzWyd0YWItLWFjdGl2ZSddfSBhY3RpdmUtdGFiLWxpbmtgXTogZXhhY3RcbiAgICAgICAgICAgID8gaXNFeGFjdEFjdGl2ZVxuICAgICAgICAgICAgOiBpc0FjdGl2ZSxcbiAgICAgICAgfSxcbiAgICAgIF1cIlxuICAgICAgOmNvbG9yPVwiYWN0aXZlIHx8IChleGFjdCA/IGlzRXhhY3RBY3RpdmUgOiBpc0FjdGl2ZSkgPyBjb2xvciA6IHVuZGVmaW5lZFwiXG4gICAgICA6aHJlZj1cImlzU2VsZiA/IHVuZGVmaW5lZCA6IGhyZWZcIlxuICAgICAgOnRhcmdldD1cInRhcmdldFwiXG4gICAgICByb2xlPVwidGFiXCJcbiAgICAgIG5vLW91dGxpbmVcbiAgICAgIHRhZz1cImFcIlxuICAgICAgaGlkZS1mb2N1cy1pbmRpY2F0b3JcbiAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgdi1iaW5kPVwiJGF0dHJzXCJcbiAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgIEBjbGljaz1cIlxuICAgICAgICBjbGljaygpO1xuICAgICAgICBpc1NlbGYgPyBuYXZpZ2F0ZSgkZXZlbnQpIDogdW5kZWZpbmVkO1xuICAgICAgXCJcbiAgICA+XG4gICAgICA8dGVtcGxhdGVcbiAgICAgICAgdi1mb3I9XCIoXywgbmFtZSkgaW4gc2xvdHNcIlxuICAgICAgICAjW25hbWVdPVwic2xvdERhdGFcIlxuICAgICAgPlxuICAgICAgICA8c2xvdFxuICAgICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgICAgdi1iaW5kPVwic2xvdERhdGFcIlxuICAgICAgICAvPlxuICAgICAgPC90ZW1wbGF0ZT5cbiAgICA8L1J1aUJ1dHRvbj5cbiAgPC9Sb3V0ZXJMaW5rPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgbW9kdWxlPlxuLnRhYiB7XG4gIEBhcHBseSBoLWZ1bGwgbWluLXctWzkwcHhdIG1heC13LVszNjBweF0gZmxleCBpdGVtcy1jZW50ZXIgcm91bmRlZC1ub25lIGN1cnNvci1wb2ludGVyIHJlbGF0aXZlIHdoaXRlc3BhY2Utbm93cmFwIHNocmluay0wO1xuICBAYXBwbHkgcHgtNDtcblxuICAmLS12ZXJ0aWNhbCB7XG4gICAgQGFwcGx5IGgtWzIuNjI1cmVtXSB3LWZ1bGwgbWF4LXctbm9uZTtcbiAgfVxuXG4gICYtLWdyb3cge1xuICAgIEBhcHBseSBncm93IG1heC13LW5vbmU7XG4gIH1cblxuICAmLS1hY3RpdmUge1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBAYXBwbHkgYWJzb2x1dGUgaC0wIHctZnVsbCBib3R0b20tMCBsZWZ0LTAgYm9yZGVyLWItMiBib3JkZXItY3VycmVudDtcbiAgICB9XG5cbiAgICAmLnRhYi1pbmRpY2F0b3ItLXN0YXJ0IHtcbiAgICAgICY6YWZ0ZXIge1xuICAgICAgICBAYXBwbHkgdG9wLTAgYm90dG9tLWF1dG87XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi50YWItLXZlcnRpY2FsIHtcbiAgICAgICY6YWZ0ZXIge1xuICAgICAgICBAYXBwbHkgaC1mdWxsIHctMCByaWdodC0wIGxlZnQtYXV0byBib3JkZXItYi0wIGJvcmRlci1yLTI7XG4gICAgICB9XG5cbiAgICAgICYudGFiLWluZGljYXRvci0tc3RhcnQge1xuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICBAYXBwbHkgbGVmdC0wIHJpZ2h0LWF1dG87XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmLS1kaXNhYmxlZCB7XG4gICAgQGFwcGx5IGN1cnNvci1ub3QtYWxsb3dlZDtcbiAgfVxuXG4gICYtLXN0YXJ0IHtcbiAgICBAYXBwbHkganVzdGlmeS1zdGFydCB0ZXh0LWxlZnQgcnRsOmp1c3RpZnktZW5kIHJ0bDp0ZXh0LXJpZ2h0O1xuICB9XG5cbiAgJi0tY2VudGVyIHtcbiAgICBAYXBwbHkganVzdGlmeS1jZW50ZXIgdGV4dC1jZW50ZXI7XG4gIH1cblxuICAmLS1lbmQge1xuICAgIEBhcHBseSBqdXN0aWZ5LWVuZCB0ZXh0LXJpZ2h0IHJ0bDpqdXN0aWZ5LXN0YXJ0IHJ0bDp0ZXh0LWxlZnQ7XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuaW1wb3J0IHR5cGUgeyBQcm9wcyBhcyBUYWJQcm9wcyB9IGZyb20gJ0AvY29tcG9uZW50cy90YWJzL3RhYi9SdWlUYWIudnVlJztcbmltcG9ydCB0eXBlIHsgQ29udGV4dENvbG9yc1R5cGUgfSBmcm9tICdAL2NvbnN0cy9jb2xvcnMnO1xuaW1wb3J0IHsgdGhyb3R0bGVGaWx0ZXIgfSBmcm9tICdAdnVldXNlL3NoYXJlZCc7XG5pbXBvcnQgeyBGcmFnbWVudCwgaXNWTm9kZSwgdHlwZSBWTm9kZSB9IGZyb20gJ3Z1ZSc7XG5pbXBvcnQgeyB1c2VSb3V0ZSwgdXNlUm91dGVyIH0gZnJvbSAndnVlLXJvdXRlcic7XG5pbXBvcnQgUnVpQnV0dG9uIGZyb20gJ0AvY29tcG9uZW50cy9idXR0b25zL2J1dHRvbi9SdWlCdXR0b24udnVlJztcbmltcG9ydCBSdWlJY29uIGZyb20gJ0AvY29tcG9uZW50cy9pY29ucy9SdWlJY29uLnZ1ZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvcHMge1xuICBjb2xvcj86IENvbnRleHRDb2xvcnNUeXBlO1xuICB2ZXJ0aWNhbD86IGJvb2xlYW47XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgZ3Jvdz86IGJvb2xlYW47XG4gIG1vZGVsVmFsdWU/OiBudW1iZXIgfCBzdHJpbmc7XG4gIGFsaWduPzogJ3N0YXJ0JyB8ICdjZW50ZXInIHwgJ2VuZCc7XG4gIGluZGljYXRvclBvc2l0aW9uPzogJ3N0YXJ0JyB8ICdlbmQnO1xufVxuXG5kZWZpbmVPcHRpb25zKHtcbiAgbmFtZTogJ1J1aVRhYnMnLFxufSk7XG5cbmNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gIGNvbG9yOiB1bmRlZmluZWQsXG4gIHZlcnRpY2FsOiBmYWxzZSxcbiAgZGlzYWJsZWQ6IGZhbHNlLFxuICBncm93OiBmYWxzZSxcbiAgbW9kZWxWYWx1ZTogdW5kZWZpbmVkLFxuICBhbGlnbjogJ2NlbnRlcicsXG4gIGluZGljYXRvclBvc2l0aW9uOiAnZW5kJyxcbn0pO1xuXG5jb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8e1xuICAoZTogJ3VwZGF0ZTptb2RlbFZhbHVlJywgbW9kZWxWYWx1ZTogbnVtYmVyIHwgc3RyaW5nKTogdm9pZDtcbn0+KCk7XG5cbmNvbnN0IHsgY29sb3IsIGdyb3csIG1vZGVsVmFsdWUsIGRpc2FibGVkLCB2ZXJ0aWNhbCwgYWxpZ24sIGluZGljYXRvclBvc2l0aW9uIH0gPSB0b1JlZnMocHJvcHMpO1xuXG5jb25zdCBpbnRlcm5hbE1vZGVsVmFsdWUgPSByZWYoKTtcbmNvbnN0IGJhciA9IHJlZjxIVE1MRGl2RWxlbWVudD4oKTtcbmNvbnN0IHdyYXBwZXIgPSByZWY8SFRNTERpdkVsZW1lbnQ+KCk7XG5jb25zdCBzaG93QXJyb3dzOiBSZWY8Ym9vbGVhbj4gPSByZWYoZmFsc2UpO1xuXG4vLyBXaGVuIHVzaW5nIGR5bmFtaWMgY29udGVudCB3aXRoIHYtZm9yIHRoZSBzbG90IGNvbnRlbnQgY2FuIGNvbnRhaW4gZnJhZ21lbnQsXG4vLyBHbyB0aHJvdWdoIHRoZSBmcmFnbWVudCBhbmQgYWx3YXlzIHJldHVybiBSdWlUYWIgb25seVxuZnVuY3Rpb24gZ2V0Q2hpbGRyZW5UYWJzKGNoaWxkcmVuOiBWTm9kZVtdKTogVk5vZGVbXSB7XG4gIHJldHVybiBjaGlsZHJlbi5mbGF0TWFwKChpdGVtKSA9PiB7XG4gICAgaWYgKGl0ZW0udHlwZSA9PT0gRnJhZ21lbnQgJiYgQXJyYXkuaXNBcnJheShpdGVtLmNoaWxkcmVuKSAmJiBpdGVtLmNoaWxkcmVuLmxlbmd0aCA+IDApXG4gICAgICByZXR1cm4gZ2V0Q2hpbGRyZW5UYWJzKGl0ZW0uY2hpbGRyZW4uZmlsdGVyKGlzVk5vZGUpKTtcblxuICAgIHJldHVybiBbaXRlbV07XG4gIH0pLmZsYXQoKTtcbn1cblxuY29uc3Qgc2xvdHMgPSB1c2VTbG90cygpO1xuY29uc3QgY2hpbGRyZW4gPSBjb21wdXRlZCgoKSA9PiB7XG4gIGNvbnN0IHNsb3RDb250ZW50ID0gc2xvdHMuZGVmYXVsdD8uKCkgPz8gW107XG5cbiAgY29uc3QgdGFicyA9IGdldENoaWxkcmVuVGFicyhzbG90Q29udGVudCk7XG5cbiAgY29uc3QgY3VycmVudE1vZGVsVmFsdWUgPSBnZXQoaW50ZXJuYWxNb2RlbFZhbHVlKTtcbiAgY29uc3QgaW5oZXJpdGVkUHJvcHMgPSB7XG4gICAgY29sb3I6IGdldChjb2xvciksXG4gICAgZ3JvdzogZ2V0KGdyb3cpLFxuICAgIGRpc2FibGVkOiBnZXQoZGlzYWJsZWQpLFxuICAgIHZlcnRpY2FsOiBnZXQodmVydGljYWwpLFxuICAgIGFsaWduOiBnZXQoYWxpZ24pLFxuICAgIGluZGljYXRvclBvc2l0aW9uOiBnZXQoaW5kaWNhdG9yUG9zaXRpb24pLFxuICB9O1xuICByZXR1cm4gdGFicy5tYXAoKHRhYiwgaW5kZXgpID0+IHtcbiAgICBsZXQgdGFiVmFsdWUgPSB0YWIucHJvcHM/LnZhbHVlID8/IGluZGV4O1xuICAgIGlmICh0YWIucHJvcHM/LmxpbmsgIT09IGZhbHNlICYmIHRhYi5wcm9wcz8udG8pXG4gICAgICB0YWJWYWx1ZSA9IHRhYi5wcm9wcy50bztcblxuICAgIGNvbnN0IGFjdGl2ZSA9IGN1cnJlbnRNb2RlbFZhbHVlID09PSB0YWJWYWx1ZTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4udGFiLFxuICAgICAgcHJvcHM6IHtcbiAgICAgICAgdmFsdWU6IHRhYlZhbHVlLFxuICAgICAgICBhY3RpdmUsXG4gICAgICAgIC4uLmluaGVyaXRlZFByb3BzLFxuICAgICAgICAuLi50YWIucHJvcHMsXG4gICAgICB9LFxuICAgIH07XG4gIH0pO1xufSk7XG5cbmZ1bmN0aW9uIHVwZGF0ZU1vZGVsVmFsdWUobmV3TW9kZWxWYWx1ZTogc3RyaW5nIHwgbnVtYmVyKSB7XG4gIGVtaXQoJ3VwZGF0ZTptb2RlbFZhbHVlJywgbmV3TW9kZWxWYWx1ZSk7XG4gIHNldChpbnRlcm5hbE1vZGVsVmFsdWUsIG5ld01vZGVsVmFsdWUpO1xufVxuXG5jb25zdCByb3V0ZSA9IHVzZVJvdXRlKCk7XG5cbmZ1bmN0aW9uIGlzUGF0aE1hdGNoKHBhdGg6IHN0cmluZywgeyBleGFjdFBhdGgsIGV4YWN0IH06IHsgZXhhY3RQYXRoPzogYm9vbGVhbjsgZXhhY3Q/OiBib29sZWFuIH0pIHtcbiAgY29uc3QgY3VycmVudFJvdXRlID0gcm91dGUuZnVsbFBhdGg7XG5cbiAgaWYgKGV4YWN0UGF0aClcbiAgICByZXR1cm4gY3VycmVudFJvdXRlID09PSBwYXRoO1xuXG4gIGNvbnN0IHJvdXRlV2l0aG91dFF1ZXJ5UGFyYW1zID0gbmV3IFVSTChwYXRoLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKVxuICAgIC5wYXRobmFtZTtcblxuICBpZiAoZXhhY3QpXG4gICAgcmV0dXJuIGN1cnJlbnRSb3V0ZSA9PT0gcm91dGVXaXRob3V0UXVlcnlQYXJhbXM7XG5cbiAgcmV0dXJuIGN1cnJlbnRSb3V0ZS5zdGFydHNXaXRoKHJvdXRlV2l0aG91dFF1ZXJ5UGFyYW1zKTtcbn1cblxuZnVuY3Rpb24ga2VlcEFjdGl2ZVRhYlZpc2libGUoKSB7XG4gIG5leHRUaWNrKCgpID0+IHtcbiAgICBpZiAoIWdldChzaG93QXJyb3dzKSlcbiAgICAgIHJldHVybjtcblxuICAgIGNvbnN0IGVsZW0gPSBnZXQod3JhcHBlcik7XG4gICAgY29uc3QgYmFyRWxlbSA9IGdldChiYXIpO1xuICAgIGlmIChlbGVtKSB7XG4gICAgICBjb25zdCBhY3RpdmVUYWIgPSAoZWxlbS5xdWVyeVNlbGVjdG9yKCcuYWN0aXZlLXRhYicpXG4gICAgICAgID8/IGVsZW0ucXVlcnlTZWxlY3RvcignLmFjdGl2ZS10YWItbGluaycpKSBhcyBIVE1MRWxlbWVudDtcblxuICAgICAgaWYgKCFhY3RpdmVUYWIgfHwgIWJhckVsZW0pXG4gICAgICAgIHJldHVybjtcblxuICAgICAgY29uc3QgY2hpbGRMZWZ0ID0gYWN0aXZlVGFiLm9mZnNldExlZnQgLSBlbGVtLm9mZnNldExlZnQ7XG4gICAgICBjb25zdCBjaGlsZFRvcCA9IGFjdGl2ZVRhYi5vZmZzZXRUb3AgLSBlbGVtLm9mZnNldFRvcDtcbiAgICAgIGNvbnN0IGNoaWxkV2lkdGggPSBhY3RpdmVUYWIub2Zmc2V0V2lkdGg7XG4gICAgICBjb25zdCBjaGlsZEhlaWdodCA9IGFjdGl2ZVRhYi5vZmZzZXRIZWlnaHQ7XG4gICAgICBjb25zdCBwYXJlbnRTY3JvbGxMZWZ0ID0gYmFyRWxlbS5zY3JvbGxMZWZ0O1xuICAgICAgY29uc3QgcGFyZW50U2Nyb2xsVG9wID0gYmFyRWxlbS5zY3JvbGxUb3A7XG4gICAgICBjb25zdCBwYXJlbnRXaWR0aCA9IGJhckVsZW0ub2Zmc2V0V2lkdGg7XG4gICAgICBjb25zdCBwYXJlbnRIZWlnaHQgPSBiYXJFbGVtLm9mZnNldEhlaWdodDtcblxuICAgICAgY29uc3Qgc2Nyb2xsTGVmdCA9IE1hdGgubWF4KFxuICAgICAgICBNYXRoLm1pbihwYXJlbnRTY3JvbGxMZWZ0LCBjaGlsZExlZnQpLFxuICAgICAgICBjaGlsZExlZnQgKyBjaGlsZFdpZHRoIC0gcGFyZW50V2lkdGgsXG4gICAgICApO1xuXG4gICAgICBjb25zdCBzY3JvbGxUb3AgPSBNYXRoLm1heChcbiAgICAgICAgTWF0aC5taW4ocGFyZW50U2Nyb2xsVG9wLCBjaGlsZFRvcCksXG4gICAgICAgIGNoaWxkVG9wICsgY2hpbGRIZWlnaHQgLSBwYXJlbnRIZWlnaHQsXG4gICAgICApO1xuXG4gICAgICBiYXJFbGVtLnNjcm9sbFRvKHtcbiAgICAgICAgbGVmdDogc2Nyb2xsTGVmdCxcbiAgICAgICAgdG9wOiBzY3JvbGxUb3AsXG4gICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG59XG5cbmNvbnN0IHJvdXRlciA9IHVzZVJvdXRlcigpO1xuXG5mdW5jdGlvbiBhcHBseU5ld1ZhbHVlKG9ubHlMaW5rID0gZmFsc2UpIHtcbiAgY29uc3QgZW5hYmxlZENoaWxkcmVuID0gZ2V0KGNoaWxkcmVuKS5maWx0ZXIoXG4gICAgY2hpbGQgPT4gIWNoaWxkLnByb3BzLmRpc2FibGVkLFxuICApO1xuICBpZiAoZW5hYmxlZENoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICBsZXQgbmV3TW9kZWxWYWx1ZTogc3RyaW5nIHwgbnVtYmVyID0gZ2V0KG1vZGVsVmFsdWUpIHx8IDA7XG4gICAgZW5hYmxlZENoaWxkcmVuLmZvckVhY2goKGNoaWxkLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHMgPSBjaGlsZC5wcm9wcyBhcyBUYWJQcm9wcztcbiAgICAgIGlmICghb25seUxpbmsgJiYgaW5kZXggPT09IDAgJiYgcHJvcHMudmFsdWUpXG4gICAgICAgIG5ld01vZGVsVmFsdWUgPSBwcm9wcy52YWx1ZTtcblxuICAgICAgY29uc3QgdG8gPSBwcm9wcy50byA/IHJvdXRlci5yZXNvbHZlKHByb3BzLnRvKSA6IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKHByb3BzLmxpbmsgIT09IGZhbHNlICYmIHRvICYmIGlzUGF0aE1hdGNoKHRvLmZ1bGxQYXRoLCBwcm9wcykpXG4gICAgICAgIG5ld01vZGVsVmFsdWUgPSB0by5mdWxsUGF0aDtcbiAgICB9KTtcbiAgICB1cGRhdGVNb2RlbFZhbHVlKG5ld01vZGVsVmFsdWUpO1xuICB9XG4gIGtlZXBBY3RpdmVUYWJWaXNpYmxlKCk7XG59XG5cbm9uTW91bnRlZCgoKSA9PiB7XG4gIGlmIChnZXQobW9kZWxWYWx1ZSkgIT09IHVuZGVmaW5lZClcbiAgICByZXR1cm47XG5cbiAgYXBwbHlOZXdWYWx1ZSgpO1xufSk7XG5cbndhdGNoKHJvdXRlLCAoKSA9PiB7XG4gIGFwcGx5TmV3VmFsdWUodHJ1ZSk7XG59KTtcblxuY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSB1c2VFbGVtZW50U2l6ZShiYXIpO1xuY29uc3QgeyB3aWR0aDogd3JhcHBlcldpZHRoLCBoZWlnaHQ6IHdyYXBwZXJIZWlnaHQgfSA9IHVzZUVsZW1lbnRTaXplKHdyYXBwZXIpO1xuY29uc3QgeyBhcnJpdmVkU3RhdGUsIHgsIHkgfSA9IHVzZVNjcm9sbChiYXIsIHsgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xuXG5jb25zdCB7IHRvcCwgYm90dG9tLCBsZWZ0LCByaWdodCB9ID0gdG9SZWZzKGFycml2ZWRTdGF0ZSk7XG5cbmNvbnN0IHsgdHJpZ2dlcjogdHJpZ2dlckhvcml6b250YWwsIHN0b3A6IHN0b3BIb3Jpem9udGFsIH0gPSB3YXRjaFRyaWdnZXJhYmxlKFxuICBbd3JhcHBlcldpZHRoLCB3aWR0aF0sXG4gIChbd3csIHddKSA9PiB7XG4gICAgaWYgKHcgPiAwKVxuICAgICAgc2V0KHNob3dBcnJvd3MsIHd3ID4gdyk7XG4gIH0sXG4gIHtcbiAgICBldmVudEZpbHRlcjogdGhyb3R0bGVGaWx0ZXIoNTApLFxuICB9LFxuKTtcblxuY29uc3QgeyB0cmlnZ2VyOiB0cmlnZ2VyVmVydGljYWwsIHN0b3A6IHN0b3BWZXJ0aWNhbCB9ID0gd2F0Y2hUcmlnZ2VyYWJsZShcbiAgW3dyYXBwZXJIZWlnaHQsIGhlaWdodF0sXG4gIChbd2gsIGhdKSA9PiB7XG4gICAgaWYgKGggPiAwKVxuICAgICAgc2V0KHNob3dBcnJvd3MsIHdoID4gaCk7XG4gIH0sXG4gIHtcbiAgICBldmVudEZpbHRlcjogdGhyb3R0bGVGaWx0ZXIoNTAwKSxcbiAgfSxcbik7XG5cbndhdGNoSW1tZWRpYXRlKHZlcnRpY2FsLCAodmVydGljYWwpID0+IHtcbiAgaWYgKHZlcnRpY2FsKSB7XG4gICAgdHJpZ2dlclZlcnRpY2FsKCk7XG4gICAgc3RvcEhvcml6b250YWwoKTtcbiAgfVxuICBlbHNlIHtcbiAgICB0cmlnZ2VySG9yaXpvbnRhbCgpO1xuICAgIHN0b3BWZXJ0aWNhbCgpO1xuICB9XG59KTtcblxuY29uc3QgcHJldkFycm93RGlzYWJsZWQgPSBjb21wdXRlZCgoKSA9PiB7XG4gIGlmICghZ2V0KHZlcnRpY2FsKSlcbiAgICByZXR1cm4gZ2V0KGxlZnQpO1xuXG4gIHJldHVybiBnZXQodG9wKTtcbn0pO1xuXG5jb25zdCBuZXh0QXJyb3dEaXNhYmxlZCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgaWYgKCFnZXQodmVydGljYWwpKVxuICAgIHJldHVybiBnZXQocmlnaHQpO1xuXG4gIHJldHVybiBnZXQoYm90dG9tKTtcbn0pO1xuXG5mdW5jdGlvbiBvblByZXZTbGlkZXJDbGljaygpIHtcbiAgaWYgKCFnZXQodmVydGljYWwpKVxuICAgIHNldCh4LCBnZXQoeCkgLSBnZXQod2lkdGgpKTtcbiAgZWxzZVxuICAgIHNldCh5LCBnZXQoeSkgLSBnZXQoaGVpZ2h0KSk7XG59XG5cbmZ1bmN0aW9uIG9uTmV4dFNsaWRlckNsaWNrKCkge1xuICBpZiAoIWdldCh2ZXJ0aWNhbCkpXG4gICAgc2V0KHgsIGdldCh4KSArIGdldCh3aWR0aCkpO1xuICBlbHNlXG4gICAgc2V0KHksIGdldCh5KSArIGdldChoZWlnaHQpKTtcbn1cblxudXNlUmVzaXplT2JzZXJ2ZXIoYmFyLCAoKSA9PiB7XG4gIGtlZXBBY3RpdmVUYWJWaXNpYmxlKCk7XG59KTtcblxud2F0Y2hJbW1lZGlhdGUobW9kZWxWYWx1ZSwgKG1vZGVsVmFsdWUpID0+IHtcbiAgc2V0KGludGVybmFsTW9kZWxWYWx1ZSwgbW9kZWxWYWx1ZSk7XG59KTtcblxud2F0Y2goaW50ZXJuYWxNb2RlbFZhbHVlLCAoKSA9PiB7XG4gIGtlZXBBY3RpdmVUYWJWaXNpYmxlKCk7XG59KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgOmNsYXNzPVwiWyRzdHlsZS50YWJzLCB7IFskc3R5bGVbJ3RhYnMtLXZlcnRpY2FsJ10gPz8gJyddOiB2ZXJ0aWNhbCB9XVwiPlxuICAgIDxkaXZcbiAgICAgIHYtaWY9XCJzaG93QXJyb3dzXCJcbiAgICAgIDpjbGFzcz1cIlskc3R5bGUuYXJyb3csIHsgWyRzdHlsZVsnYXJyb3ctLXZlcnRpY2FsJ10gPz8gJyddOiB2ZXJ0aWNhbCB9XVwiXG4gICAgPlxuICAgICAgPFJ1aUJ1dHRvblxuICAgICAgICBjbGFzcz1cInctZnVsbCBoLWZ1bGwgIXJvdW5kZWQtbm9uZVwiXG4gICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgOmNvbG9yPVwiY29sb3JcIlxuICAgICAgICA6ZGlzYWJsZWQ9XCJwcmV2QXJyb3dEaXNhYmxlZFwiXG4gICAgICAgIEBjbGljaz1cIm9uUHJldlNsaWRlckNsaWNrKClcIlxuICAgICAgPlxuICAgICAgICA8UnVpSWNvbiA6bmFtZT1cInZlcnRpY2FsID8gJ2x1LWNoZXZyb24tdXAnIDogJ2x1LWNoZXZyb24tbGVmdCdcIiAvPlxuICAgICAgPC9SdWlCdXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgcmVmPVwiYmFyXCJcbiAgICAgIGNsYXNzPVwibm8tc2Nyb2xsYmFyXCJcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJHN0eWxlWyd0YWJzLWJhciddLFxuICAgICAgICB7IFskc3R5bGVbJ3RhYnMtYmFyLS12ZXJ0aWNhbCddID8/ICcnXTogdmVydGljYWwgfSxcbiAgICAgICAgeyBbJHN0eWxlWyd0YWJzLWJhci0tZ3JvdyddID8/ICcnXTogZ3JvdyB9LFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICByZWY9XCJ3cmFwcGVyXCJcbiAgICAgICAgcm9sZT1cInRhYmxpc3RcIlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJHN0eWxlWyd0YWJzLXdyYXBwZXInXSxcbiAgICAgICAgICB7IFskc3R5bGVbJ3RhYnMtd3JhcHBlci0tdmVydGljYWwnXSA/PyAnJ106IHZlcnRpY2FsIH0sXG4gICAgICAgICAgeyBbJHN0eWxlWyd0YWJzLXdyYXBwZXItLWdyb3cnXSA/PyAnJ106IGdyb3cgfSxcbiAgICAgICAgXVwiXG4gICAgICA+XG4gICAgICAgIDxDb21wb25lbnRcbiAgICAgICAgICA6aXM9XCJjaGlsZFwiXG4gICAgICAgICAgdi1mb3I9XCIoY2hpbGQsIGkpIGluIGNoaWxkcmVuXCJcbiAgICAgICAgICA6a2V5PVwiaVwiXG4gICAgICAgICAgQGNsaWNrPVwidXBkYXRlTW9kZWxWYWx1ZSgkZXZlbnQpXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIHYtaWY9XCJzaG93QXJyb3dzXCJcbiAgICAgIDpjbGFzcz1cIlskc3R5bGUuYXJyb3csIHsgWyRzdHlsZVsnYXJyb3ctLXZlcnRpY2FsJ10gPz8gJyddOiB2ZXJ0aWNhbCB9XVwiXG4gICAgPlxuICAgICAgPFJ1aUJ1dHRvblxuICAgICAgICBjbGFzcz1cInctZnVsbCBoLWZ1bGwgIXJvdW5kZWQtbm9uZVwiXG4gICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgOmNvbG9yPVwiY29sb3JcIlxuICAgICAgICA6ZGlzYWJsZWQ9XCJuZXh0QXJyb3dEaXNhYmxlZFwiXG4gICAgICAgIEBjbGljaz1cIm9uTmV4dFNsaWRlckNsaWNrKClcIlxuICAgICAgPlxuICAgICAgICA8UnVpSWNvbiA6bmFtZT1cInZlcnRpY2FsID8gJ2x1LWNoZXZyb24tZG93bicgOiAnbHUtY2hldnJvbi1yaWdodCdcIiAvPlxuICAgICAgPC9SdWlCdXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgbW9kdWxlPlxuLnRhYnMge1xuICBAYXBwbHkgZmxleCBoLVsyLjYyNXJlbV07XG5cbiAgJi0tdmVydGljYWwge1xuICAgIEBhcHBseSBoLWF1dG8gbWF4LWgtZnVsbCBmbGV4LWNvbDtcbiAgfVxuXG4gICYtYmFyIHtcbiAgICBAYXBwbHkgbWF4LWgtZnVsbCBvdmVyZmxvdy1hdXRvO1xuXG4gICAgJi0tdmVydGljYWwsXG4gICAgJi0tZ3JvdyB7XG4gICAgICBAYXBwbHkgdy1mdWxsO1xuICAgIH1cbiAgfVxuXG4gICYtd3JhcHBlciB7XG4gICAgQGFwcGx5IGgtZnVsbCBpbmxpbmUtZmxleCBtYXgtdy1ub25lO1xuXG4gICAgJi0tdmVydGljYWwge1xuICAgICAgQGFwcGx5IGZsZXgtY29sIGgtYXV0bztcbiAgICB9XG5cbiAgICAmLS12ZXJ0aWNhbCxcbiAgICAmLS1ncm93IHtcbiAgICAgIEBhcHBseSBtaW4tdy1mdWxsO1xuICAgIH1cbiAgfVxufVxuXG4uYXJyb3cge1xuICBAYXBwbHkgaC1mdWxsIHctMTA7XG5cbiAgJi0tdmVydGljYWwge1xuICAgIEBhcHBseSBtaW4taC1bMi42MjVyZW1dIHctZnVsbCBoLWF1dG87XG4gIH1cbn1cbjwvc3R5bGU+XG4iXSwibmFtZXMiOlsicHJvcHMiLCJfX3Byb3BzIiwicmVnaXN0ZXJlZEljb25zIiwidXNlSWNvbnMiLCJpc0ZpbGwiLCJjb21wdXRlZCIsImNvbXBvbmVudHMiLCJuYW1lIiwiaXNSdWlJY29uIiwiZm91bmQiLCJfY3JlYXRlRWxlbWVudEJsb2NrIiwiX25vcm1hbGl6ZUNsYXNzIiwiJHN0eWxlIiwiX29wZW5CbG9jayIsIl9GcmFnbWVudCIsIl9yZW5kZXJMaXN0IiwiX3VucmVmIiwiY29tcG9uZW50IiwiaW5kZXgiLCJfY3JlYXRlQmxvY2siLCJfcmVzb2x2ZUR5bmFtaWNDb21wb25lbnQiLCJfbWVyZ2VQcm9wcyIsImVtaXQiLCJfX2VtaXQiLCJjbGljayIsImlubmVyIiwicmVmIiwiaW5uZXJIZWlnaHQiLCJ1c2VFbGVtZW50U2l6ZSIsIiRhdHRycyIsIiRzbG90cyIsIl9jcmVhdGVFbGVtZW50Vk5vZGUiLCJfcmVuZGVyU2xvdCIsIl9jdHgiLCJfY3JlYXRlVk5vZGUiLCJJY29uIiwibW9kZWxWYWx1ZSIsIm11bHRpcGxlIiwidG9SZWZzIiwiaW50ZXJuYWxWYWx1ZSIsInNsb3RzIiwidXNlU2xvdHMiLCJjaGlsZHJlbiIsImFjY29yZGlvbnMiLCJjdXJyZW50VmFsdWUiLCJnZXQiLCJtdWx0aXBsZVZhbCIsImFjY29yZGlvbiIsIm9wZW4iLCJ1cGRhdGVWYWx1ZSIsIm5ld01vZGVsVmFsdWUiLCJuZXdWYWx1ZSIsImludGVybmFsIiwidGVtcCIsInNldCIsIndhdGNoIiwidmFsdWUiLCJjaGlsZCIsImkiLCIkZXZlbnQiLCJ2YXJpYW50IiwiYnVmZmVyVmFsdWUiLCJ0aGlja25lc3MiLCJzaXplIiwibGFiZWwiLCJwcm9ncmVzcyIsInZhbHVlUGVyY2VudCIsImJ1ZmZlclBlcmNlbnQiLCJjaXJjdWxhclNjYWxlZFRoaWNrbmVzcyIsImNpcmN1bGFyVmlld1NpemUiLCJidG5WYWx1ZSIsInVzZWRFbGV2YXRpb24iLCJzcGlubmVyU2l6ZSIsIl9jYWNoZSIsIlJ1aVByb2dyZXNzIiwiaWNvbiIsInR5cGUiLCJ1c2VkSWNvbiIsImljb25WYWwiLCJfaG9pc3RlZF8xIiwiUnVpSWNvbiIsIl9ob2lzdGVkXzIiLCJfaG9pc3RlZF8zIiwiUnVpQnV0dG9uIiwiX2hvaXN0ZWRfNCIsInJlcXVpcmVkIiwiZGlzYWJsZWQiLCJjb2xvciIsImdldENoaWxkcmVuIiwiaXRlbSIsIkZyYWdtZW50IiwiaXNWTm9kZSIsImlzRGlzYWJsZWQiLCJyb290Q29sb3IiLCJzZWxlY3RlZFZhbHVlIiwic2xvdENvbnRlbnQiLCJhY3RpdmVJdGVtIiwiaWQiLCJzZWxlY3RlZCIsIm9uQ2xpY2siLCJtYW5kYXRvcnkiLCJjc3MiLCJ1c2VDc3NNb2R1bGUiLCJjb2xvckNsYXNzIiwidmFyaWFudENsYXNzIiwiQ2FsZW5kYXJTdGF0ZVN5bWJvbCIsImdldERheXNPZldlZWsiLCJsb2NhbGUiLCJmb3JtYXQiLCJkYXlzT2ZXZWVrIiwiZGF0ZSIsImRheU5hbWUiLCJnZXRTaG9ydE1vbnRoTmFtZXMiLCJtb250aE5hbWVzIiwibW9udGgiLCJtb250aE5hbWUiLCJtb2RlbCIsIl91c2VNb2RlbCIsImNhbGVuZGFyU3RhdGUiLCJpbmplY3QiLCJjcmVhdGVEYXRlS2V5IiwidG9kYXlLZXkiLCJjYWxlbmRhckRheXMiLCJjcmVhdGVEYXlEYXRhIiwiaXNDdXJyZW50TW9udGgiLCJtYXhEYXRlVmFsdWUiLCJtaW5EYXRlVmFsdWUiLCJrZXkiLCJpc0RhdGVJblJhbmdlQ2hlY2siLCJpc0RhdGVTZWxlY3RlZENoZWNrIiwiY2FsY3VsYXRlQ2FsZW5kYXJEYXlzIiwiZmlyc3REYXlPZk1vbnRoIiwiZGF5c0luTW9udGgiLCJzdGFydGluZ0RheU9mV2VlayIsIm1heERhdGUiLCJtaW5EYXRlIiwiaXNEZWZpbmVkIiwicmVzdWx0IiwicHJldk1vbnRoTGFzdERheSIsImRheXNUb0FkZCIsInNlbGVjdERhdGUiLCJkYXlEYXRhIiwidXBkYXRlTW9kZWwiLCJuZXdEYXRlIiwiZGF5IiwiX3dpdGhNb2RpZmllcnMiLCJfdG9EaXNwbGF5U3RyaW5nIiwiZXJyb3JNZXNzYWdlcyIsInN1Y2Nlc3NNZXNzYWdlcyIsImZvcm1hdHRlZEVycm9yTWVzc2FnZXMiLCJmb3JtYXR0ZWRTdWNjZXNzTWVzc2FnZXMiLCJoYXNFcnJvciIsImhhc1N1Y2Nlc3MiLCJ1c2VGb3JtVGV4dERldGFpbCIsIl9UcmFuc2l0aW9uR3JvdXAiLCJGT0NVU0FCTEVfRUxFTUVOVFNfU0VMRUNUT1IiLCJjbG9zZURlbGF5Iiwib3BlbkRlbGF5IiwicG9wcGVyIiwicGVyc2lzdE9uQWN0aXZhdG9yQ2xpY2siLCJjbG9zZU9uQ29udGVudENsaWNrIiwib3Blbk9uSG92ZXIiLCJwZXJzaXN0ZW50IiwiZGlzYWJsZUF1dG9Gb2N1cyIsImFjdGl2YXRvciIsIm1lbnUiLCJwb3BwZXJFbnRlciIsImxlYXZlUGVuZGluZyIsIm9uTGVhdmVQZW5kaW5nIiwib25PcGVuIiwib25DbG9zZSIsIm9uUG9wcGVyTGVhdmUiLCJ1cGRhdGVQb3BwZXIiLCJ1c2VQb3BwZXIiLCJ3aWR0aCIsIm1lbnVDb250ZW50IiwiZm9jdXNNZW51IiwibmV4dFRpY2siLCJjb250ZW50Iiwib25MZWF2ZSIsImV2ZW50IiwiYWN0aXZhdG9yRWwiLCJmb2N1c2FibGVFbCIsImNoZWNrQ2xpY2siLCJvbkNsaWNrT3V0c2lkZSIsImJhc2VNZW51QXR0cnMiLCJvcGVuT25Ib3ZlclZhbCIsImNsaWNrVmFsIiwibWVudUF0dHJzIiwiX25vcm1hbGl6ZVByb3BzIiwiX2d1YXJkUmVhY3RpdmVQcm9wcyIsIl9UZWxlcG9ydCIsIlJ1aUZvcm1UZXh0RGV0YWlsIiwidmlld01vZGUiLCJzdGFydFllYXIiLCJtb250aHMiLCJ5ZWFyUmFuZ2UiLCJtb250aHNJblJhbmdlIiwieWVhcnNJblJhbmdlIiwidGl0bGUiLCJjYW5Hb1RvTmV4dCIsImNhbkdvVG9QcmV2IiwiY2FsY3VsYXRlWWVhclJhbmdlIiwic3RhcnQiLCJfIiwiY2FsY3VsYXRlVGl0bGUiLCJyYW5nZSIsImNhbGN1bGF0ZU5hdmlnYXRpb24iLCJuZXh0WWVhciIsInByZXZpb3VzWWVhciIsImxhc3RZZWFySW5SYW5nZSIsImZpcnN0WWVhckluUmFuZ2UiLCJuZXh0UmFuZ2VTdGFydCIsInByZXZSYW5nZUVuZCIsImNhbGN1bGF0ZU1vbnRoc0luUmFuZ2UiLCJjdXJyZW50WWVhciIsImNhbGN1bGF0ZVllYXJzSW5SYW5nZSIsImN1cnJlbnRNb250aCIsInllYXIiLCJ0b2dnbGVTZWxlY3Rpb24iLCJzZWxlY3RNb250aCIsInNlbGVjdFllYXIiLCJ5ZWFySW5kZXgiLCJoYW5kbGVOZXh0IiwiaGFuZGxlUHJldiIsIlJ1aU1lbnUiLCJfaG9pc3RlZF81IiwiX2hvaXN0ZWRfNiIsImlzTWVudU9wZW4iLCJhbmNob3JFbCIsImhhbmRsZVRpdGxlQ2xpY2siLCJlIiwiaGFuZGxlRGF0ZVNlbGVjdGlvbiIsInNlbGVjdGlvbiIsIl9jcmVhdGVUZXh0Vk5vZGUiLCJSdWlDYWxlbmRhck1lbnUiLCJjdXJyZW50RGF0ZSIsInNlbGVjdGVkRGF0ZSIsInZpZXdNb250aCIsInZpZXdZZWFyIiwiaXNEYXJrIiwidXNlUm90a2lUaGVtZSIsIm1vbnRoVGl0bGUiLCJwcm92aWRlIiwibW92ZU1vbnRoIiwiZGVsdGEiLCJuZXdNb250aCIsIm5ld1llYXIiLCJtb3ZlIiwiX19leHBvc2UiLCJSdWlDYWxlbmRhckhlYWRlciIsIlJ1aUNhbGVuZGFyR3JpZCIsImhhc0hlYWRDb250ZW50IiwiUnVpQ2FyZEhlYWRlciIsImNsaWNrYWJsZSIsImJnQ29sb3IiLCJ0ZXh0Q29sb3IiLCJsb2dpY09yIiwibG9naWNOb3QiLCJzdHlsZSIsImJnIiwidGV4dCIsIm9iamVjdE9taXQiLCJyb3VuZFR3b0RlY2ltYWwiLCJudW0iLCJDb2xvciIsImlucHV0IiwidGlueWNvbG9yIiwiaW5pdEFscGhhIiwicyIsImIiLCJnIiwiaCIsInYiLCJoZXhTdHJpbmciLCJyZ2IiLCJ1c2VFbGVtZW50RHJhZyIsImhhbmRsZXIiLCJoYW5kbGVDbGljayIsIm9uTW91c2VEb3duIiwiaGFuZGxlTW91c2VVcCIsIm9uVW5tb3VudGVkIiwiaHVlVG9IZXgiLCJodWUiLCJzdGF0ZSIsInJlYWN0aXZlIiwiY3Vyc29yVG9wIiwiY3Vyc29yTGVmdCIsImN1cnNvclN0eWxlIiwid3JhcHBlciIsInVwZGF0ZVBvc2l0aW9uIiwiaW5zdGFuY2UiLCJnZXRDdXJyZW50SW5zdGFuY2UiLCJlbWl0Q29sb3IiLCJ4IiwieSIsInJlY3QiLCJoZWlnaHQiLCJsZWZ0IiwidG9wIiwiY2FsY3VsYXRlZFgiLCJjYWxjdWxhdGVkWSIsImNsYW1wIiwic2F0dXJhdGlvbiIsImJyaWdodG5lc3MiLCJvbk1vdW50ZWQiLCJ3aGVuZXZlciIsInRvb2x0aXAiLCJjb3B5IiwiY29waWVkIiwidXNlQ2xpcGJvYXJkIiwiUnVpVG9vbHRpcCIsImN1cnNvcldpZHRoIiwiYmFyRWxlbWVudCIsImdldExpbWl0IiwibG93ZXJMaW1pdCIsInVwcGVyTGltaXQiLCJhdmFpbGFibGVXaWR0aCIsImdldEN1cnNvckxlZnQiLCJhY3R1YWxXaWR0aCIsImh1ZVZhbCIsInVzZWRIdWUiLCJlbWl0SHVlIiwiY2xlYXJhYmxlIiwicmVhZG9ubHkiLCJsYWJlbFdpdGhRdW90ZSIsImxhYmVsVmFsIiwicHJlcGVuZCIsImFwcGVuZCIsImlubmVyV3JhcHBlciIsImlucHV0UmVmIiwicHJlcGVuZFdpZHRoIiwiYXBwZW5kV2lkdGgiLCJ1c2VFbGVtZW50Qm91bmRpbmciLCJ1c2VSZXNpemVPYnNlcnZlciIsImVudHJpZXMiLCJlbnRyeSIsImFzc2VydCIsInJpZ2h0IiwiaGFzTWVzc2FnZXMiLCJmb2N1c2VkIiwidXNlRm9jdXMiLCJmb2N1c2VkRGVib3VuY2VkIiwicmVmRGVib3VuY2VkIiwic2hvd0NsZWFySWNvbiIsImxvZ2ljQW5kIiwiY2xlYXJJY29uQ2xpY2tlZCIsImVuZCIsImdldFJvb3RBdHRycyIsImdldE5vblJvb3RBdHRycyIsImlucHV0VHlwZSIsIm9uSW5wdXRUeXBlQ2hhbmdlIiwib25CbHVyQ2hhbmdlIiwidXNlRGVib3VuY2VGbiIsIl9oZXgiLCJ2YWx1ZUluTnVtYmVyIiwiciIsIm9uSW5wdXRDaGFuZ2UiLCJSdWlUZXh0RmllbGQiLCJvbkJvYXJkQ2hhbmdlIiwiUnVpQ29sb3JCb2FyZCIsIlJ1aUNvbG9yRGlzcGxheSIsIlJ1aUNvbG9ySHVlIiwiUnVpQ29sb3JJbnB1dCIsInRpbWV6b25lcyIsInNlYXJjaElucHV0TW9kZWwiLCJkZW5zZSIsIm9wdGlvbnMiLCJnZXRUZXh0IiwiZ2V0SWRlbnRpZmllciIsInVzZURyb3Bkb3duT3B0aW9uUHJvcGVydHkiLCJ0ZXh0SW5wdXQiLCJtZW51UmVmIiwibWVudVdyYXBwZXJSZWYiLCJhY3RpdmF0b3JGb2N1c2VkV2l0aGluIiwidXNlRm9jdXNXaXRoaW4iLCJtZW51V3JhcHBlckZvY3VzZWRXaXRoaW4iLCJzZWFyY2hJbnB1dEZvY3VzZWQiLCJhY3RpdmF0b3JGb2N1c2VkIiwicmVuZGVyZWRPcHRpb25zIiwiaW50ZXJuYWxTZWFyY2giLCJmaWx0ZXJlZE9wdGlvbnMiLCJqdXN0T3BlbmVkIiwidXBkYXRlSW50ZXJuYWxTZWFyY2giLCJ0ZXh0VmFsdWVUb1Byb3BlclZhbHVlIiwidXNlQXV0b0NvbXBsZXRlU2VhcmNoIiwidG9SZWYiLCJzaG91bGRBcHBseVZhbHVlQXNTZWFyY2giLCJ0ZW1wSXNPcGVuIiwic2V0U2VsZWN0ZWQiLCJ1c2VBdXRvQ29tcGxldGVWYWx1ZSIsImNvbnRhaW5lclByb3BzIiwid3JhcHBlclByb3BzIiwicmVuZGVyZWREYXRhIiwiaXNPcGVuIiwibWVudVdpZHRoIiwiaXNBY3RpdmVJdGVtIiwiaXRlbUluZGV4SW5WYWx1ZSIsImhpZ2hsaWdodGVkSW5kZXgiLCJtb3ZlSGlnaGxpZ2h0IiwiYXBwbHlIaWdobGlnaHRlZCIsIm9wdGlvbnNXaXRoU2VsZWN0ZWRIaWRkZW4iLCJ1c2VEcm9wZG93bk1lbnUiLCJzZXRWYWx1ZSIsInN5bmNSZWYiLCJmb2N1c2VkVmFsdWVJbmRleCIsIm1vdmVTZWxlY3RlZFZhbHVlSGlnaGxpZ2h0Iiwib25FbnRlciIsIm9uSW5wdXREZWxldGVQcmVzc2VkIiwib25UYWIiLCJzZXRWYWx1ZUZvY3VzIiwidXNlQXV0b0NvbXBsZXRlS2V5Ym9hcmROYXZpZ2F0aW9uIiwiY2xlYXIiLCJzZXRTZWFyY2hBc1ZhbHVlIiwiZm9jdXNBbnlGb2N1c2VkIiwiZm9jdXNJbnB1dENsYXNzIiwiZm9jdXNPbkFjdGl2YXRvckZvY3VzZWQiLCJmb2N1c09uSW5wdXRGb2N1c2VkIiwiZm9jdXNTZXRJbnB1dEZvY3VzIiwidXNlQXV0b0NvbXBsZXRlRm9jdXMiLCJ2YWx1ZVNldCIsIm1lbnVNaW5IZWlnaHQiLCJyZW5kZXJlZE9wdGlvbnNEYXRhIiwib3V0bGluZWQiLCJmbG9hdCIsInZpcnR1YWxDb250YWluZXJQcm9wcyIsInVwZGF0ZVNlYXJjaElucHV0IiwidmFsIiwic2tpcFJlZm9jdXNlZCIsImlzTXVsdGlwbGUiLCJpbmRleEluVmFsdWUiLCJzZWFyY2hUb0JlVmFsdWUiLCJjaGlwQXR0cnMiLCJzZXRTZWxlY3Rpb25SYW5nZSIsImN1cnIiLCJvbGQiLCJpc0VxdWFsIiwiYXJyb3dDbGlja2VkIiwiX3dpdGhDdHgiLCJhdHRycyIsIl93aXRoS2V5cyIsIlJ1aUNoaXAiLCJnZXRUZXh0VG9rZW4iLCJhcmdzIiwiX2luZGV4IiwiX25vcm1hbGl6ZVN0eWxlIiwiRlVMTF9DSVJDTEUiLCJUV0VMVkVfSE9VUlMiLCJzZWxlY3RlZEhvdXIiLCJzZWxlY3RlZE1pbnV0ZSIsInNlbGVjdGVkU2Vjb25kIiwic2VsZWN0ZWRNaWxsaXNlY29uZCIsImVkaXRNb2RlIiwidG90YWxJdGVtc1Blck1vZGUiLCJpbnRlcnZhbHMiLCJpc0RyYWdnaW5nIiwiY2xvY2tGYWNlIiwidXNlVGVtcGxhdGVSZWYiLCJzaG93U2Vjb25kIiwiVGltZUFjY3VyYWN5Iiwic2hvd01pbGxpc2Vjb25kIiwicGVyaW9kIiwiZGlzcGxheUhvdXIiLCJob3VyIiwiZWRpdGVkVmFsdWUiLCJtb2RlIiwiZGlzcGxheUNsb2NrSGFuZENpcmNsZSIsImludGVydmFsIiwiZG90U3R5bGUiLCJjbG9ja0hhbmRTdHlsZSIsInRvdGFsSXRlbXMiLCJjbG9ja0hhbmRDaXJjbGVTdHlsZSIsInJhZGl1cyIsInJhZGlhbnMiLCJjbG9ja051bWJlcnMiLCJ0b3RhbCIsIm51bWJlcnMiLCJnZW5lcmF0ZU51bWJlcnMiLCJnZXRNb2RlbEhvdXJzIiwiZ2V0TW9kZWxNaW51dGVzIiwiZ2V0TW9kZWxTZWNvbmRzIiwiZ2V0TW9kZWxNaWxsaXNlY29uZHMiLCJmb3JtYXRWYWx1ZSIsInBhZGRpbmciLCJudW1iZXJTdHlsZSIsImlzU2VsZWN0ZWROdW1iZXIiLCJ0b2dnbGVBbVBtIiwidXBkYXRlTW9kZWxWYWx1ZSIsInN0YXJ0RHJhZyIsImhhbmRsZU1vdmUiLCJtb3ZlRXZlbnQiLCJjZW50ZXJYIiwiY2VudGVyWSIsImNsaWVudFgiLCJjbGllbnRZIiwidG91Y2giLCJhbmdsZSIsInVuaXQiLCJoYW5kbGVFbmQiLCJzZWxlY3RCeUNsaWNrIiwibmV3SG91ciIsInNlbGVjdGVkVGltZSIsInRpbWVTZWxlY3Rpb24iLCJzZWxlY3RlZFRpbWV6b25lIiwiY2FsZW5kYXJNZW51T3BlbiIsInNldE5vdyIsIlJ1aUNhbGVuZGFyIiwiUnVpVGltZVBpY2tlciIsIlJ1aUF1dG9Db21wbGV0ZSIsImd1ZXNzVGltZXpvbmUiLCJ0aW1lem9uZSIsImRheWpzIiwidHoiLCJpbmNsdWRlU2Vjb25kcyIsImFjY3VyYWN5IiwiaW5jbHVkZU1pbGxpc2Vjb25kcyIsInVzZUlucHV0SGFuZGxlciIsImRhdGEiLCJzZWdtZW50Iiwib25seVNldCIsInVwZGF0ZSIsImdldEN1cnJlbnQiLCJEQVRFX1RJTUVfU0VHTUVOVF9UWVBFUyIsImlzRGF0ZVRpbWVTZWdtZW50VHlwZSIsInVzZUtleWJvYXJkSGFuZGxlciIsImN1cnNvclBvc2l0aW9uIiwiZGF0ZUZvcm1hdCIsImdldERhdGVUaW1lIiwiZm9ybWF0U2VnbWVudHMiLCJzZWdtZW50UG9zaXRpb25zIiwic2VnbWVudHMiLCJwb3NpdGlvbnMiLCJjdXJyZW50UG9zaXRpb24iLCJnZXRDdXJyZW50U2VnbWVudCIsInBvc2l0aW9uIiwic2V0Q3Vyc29yUG9zaXRpb24iLCJzZXRTZWdtZW50Iiwic2VnbWVudFR5cGUiLCJjdXJyZW50U2VnbWVudCIsInR5cGVUb1VzZSIsImNoYW5nZVNlZ21lbnRWYWx1ZSIsImluY3JlbWVudCIsInNlZ21lbnRNZXRob2RzIiwibWV0aG9kIiwidXBkYXRlZERhdGUiLCJuYXZpZ2F0ZVNlZ21lbnRzIiwiY3VycmVudFNlZ21lbnRJbmRleCIsIm5leHRTZWdtZW50SW5kZXgiLCJuZXh0U2VnbWVudCIsImhhbmRsZURpZ2l0UHJlc3NlZCIsImRpZ2l0IiwibnVtYmVyIiwic2VnbWVudENvbmZpZyIsImNvbmZpZyIsImNvbWJpbmVkVmFsdWUiLCJuZXh0Q29tYmluZWRWYWx1ZSIsIm1heExlbmd0aCIsIm1pblZhbHVlIiwid2lsbEV4Y2VlZE1heCIsInJlYWNoZWRNYXhMZW5ndGgiLCJoYW5kbGVLZXlib2FyZE5hdmlnYXRpb24iLCJoYW5kbGVCYWNrc3BhY2UiLCJ1cGRhdGVkVmFsdWUiLCJzZWxlY3Rpb25TdGFydCIsImhhbmRsZUtleURvd24iLCJldmVudFRhcmdldCIsImhhbmRsZUlucHV0U2VsZWN0aW9uIiwidGFyZ2V0IiwiaGFuZGxlRm9jdXMiLCJmaXJzdFNlZ21lbnQiLCJwYXJzZUFuZFNldERhdGVWYWx1ZXMiLCJwYXN0ZWRUZXh0IiwicGFyc2VkRGF0ZSIsImhhbmRsZVBhc3RlIiwiaGFuZGxlSW5wdXQiLCJpbnB1dFRleHQiLCJNSUxMSVNFQ09ORFMiLCJiYXNlRm9ybWF0cyIsImludGVybmFsRXJyb3JNZXNzYWdlcyIsInNlbGVjdGVkWWVhciIsInNlbGVjdGVkTW9udGgiLCJzZWxlY3RlZERheSIsIm5vdyIsIm1pbkFsbG93ZWREYXRlIiwibWF4QWxsb3dlZERhdGUiLCJ0IiwidXNlUnVpSThuIiwiYW55Rm9jdXNlZCIsImlzT3V0bGluZWQiLCJmb3JtYXR0ZWREaXNwbGF5IiwicmVwbGFjZW1lbnRzIiwiZ2V0RGlzcGxheVZhbHVlIiwicGF0dGVybiIsImNvbWJpbmVkRXJyb3JNZXNzYWdlcyIsInByb3BFcnJvcnMiLCJzZXRJbnB1dEZvY3VzIiwiZGF0ZVRpbWUiLCJpc0RhdGVWYWxpZCIsIm1pbiIsIm1heCIsImVycm9yTWVzc2FnZSIsIlJVSV9JMThOX0tFWVMiLCJub3dFcnJvciIsIm1heEVycm9yIiwiZW1pdFVwZGF0ZSIsInVwZGF0ZWRNb2RlbCIsInRpbWUiLCJpZ25vcmVVcGRhdGVzIiwid2F0Y2hJZ25vcmFibGUiLCJwcmV2U2VsZWN0ZWREYXRlIiwicHJldlNlbGVjdGVkVGltZSIsImN1cnJlbnRUaW1lem9uZSIsIm5ld1NlbGVjdGVkRGF0ZSIsIm9sZFNlbGVjdGVkRGF0ZSIsIm5ld1NlbGVjdGVkVGltZSIsIm9sZFNlbGVjdGVkVGltZSIsInVwZGF0ZUludGVybmFsTW9kZWwiLCJuZXdUaW1lem9uZSIsIlJ1aURhdGVUaW1lUGlja2VyTWVudSIsImluZGV0ZXJtaW5hdGUiLCJlbCIsImludGVybmFsTW9kZWxWYWx1ZSIsImNoZWNrZWQiLCJpY29uU2l6ZSIsInNpemVWYWwiLCJvYmplY3RQaWNrIiwiX3dpdGhEaXJlY3RpdmVzIiwicmFkaW9Hcm91cE5hbWUiLCJnZW5lcmF0ZUlkIiwiZmlyc3RDaGlsZCIsIiRwcm9wcyIsImhpZGRlbiIsImtleUF0dHIiLCJvcHRpb24iLCJ2YWx1ZUtleSIsInN0ZXAiLCJ2ZXJ0aWNhbCIsInRpY2tTaXplIiwidk1vZGVsIiwidGlja3NEYXRhIiwibWluVmFsIiwic3RlcFZhbCIsInRyYWNrV2lkdGgiLCJjdXJyZW50Iiwib3V0ZXIiLCJzbGlkZXJXaWR0aCIsInNsaWRlckhlaWdodCIsInRpY2tTaXplSW5QeCIsImF1dG9Hcm93IiwibWluUm93cyIsIm1heFJvd3MiLCJub1Jlc2l6ZSIsInJvd0hlaWdodCIsInRleHRhcmVhIiwidGV4dGFyZWFTaXplciIsImZpZWxkU3R5bGVzIiwiY29tcHV0ZUZpZWxkSGVpZ2h0IiwibmV3VmFsIiwib2xkVmFsIiwiZmllbGQiLCJmaWVsZFZhbHVlIiwiZmllbGRTaXplciIsInNpemVySGVpZ2h0IiwiZmllbGRIZWlnaHQiLCJSdWlTa2VsZXRvbkJhc2UiLCJmYWxsYmFjayIsImFwcE5hbWUiLCJjdXN0b21JbWFnZVJlZiIsImVycm9yIiwiZGVjb2RpbmciLCJwZW5kaW5nU291cmNlcyIsImV4dGVybmFsU291cmNlcyIsImV4dGVybmFsU291cmNlIiwic291cmNlcyIsImxvZ28iLCJ1cmwiLCJmZXRjaFNvdXJjZXMiLCJ1c2VGZXRjaCIsImxpbmtzIiwidHJhbnNmb3JtQ2FzZSIsImNvbXBsZXRlIiwid2F0Y2hFZmZlY3QiLCJpc0NsaWVudCIsInVzZVNTUkNvbnRleHQiLCJvblNlcnZlclByZWZldGNoIiwib2Zmc2V0WCIsIm9mZnNldFkiLCJoYXNJY29uIiwiaGFzVGV4dCIsImhhc0ljb25BbmRUZXh0IiwiX1RyYW5zaXRpb24iLCJtYXhXaWR0aCIsImJvdHRvbVNoZWV0Iiwid2F0Y2hJbW1lZGlhdGUiLCJvblVwZGF0ZU1vZGVsVmFsdWUiLCJjbG9zZSIsInRyYW5zZm9ybVByb3BzVW5pdCIsImNvbnRlbnRSZWYiLCJkaWFsb2dBdHRycyIsImNvbnRlbnRUcmFuc2l0aW9uIiwib25Fc2NDbGljayIsIlJ1aURpYWxvZyIsIl9jcmVhdGVTbG90cyIsInNsb3QiLCJzY29wZSIsIm1pbmlWYXJpYW50IiwiYWN0aXZhdG9yQXR0cnMiLCJ0aW1lb3V0IiwiZGlzbWlzcyIsImRpc3BsYXkiLCJkdXJhdGlvbiIsInBhZ2VzIiwib25DaGFuZ2UiLCJvblByZXYiLCJvbk5leHQiLCJTdGVwcGVyU3RhdGUiLCJjdXN0b20iLCJzdGVwcyIsIm9yaWVudGF0aW9uIiwia2VlcEFjdGl2ZVZpc2libGUiLCJyZW5kZXJlZFN0ZXAiLCJjdXJyZW50U3RlcCIsInN0ZXBzVmFsIiwic3RlcFN0YXR1cyIsIndyYXBwZXJSZWYiLCJTdGVwcGVyT3JpZW50YXRpb24iLCJlbGVtIiwiZGVzY3JpcHRpb24iLCJsb2FkaW5nIiwiUnVpU3RlcHBlckN1c3RvbUljb24iLCJSdWlTdGVwcGVySWNvbiIsIm9uU29ydCIsImRpcmVjdGlvbiIsIm9uVG9nZ2xlQWxsIiwiaXNTb3J0ZWRCeSIsImdldFNvcnRJbmRleCIsInNvcnRCeSIsInNvcnQiLCJnZXRTb3J0RGlyZWN0aW9uIiwiUnVpQ2hlY2tib3giLCJjb2x1bW4iLCJSdWlCYWRnZSIsInRhYmxlRGVmYXVsdHMiLCJ1c2VUYWJsZSIsImxpbWl0cyIsImxpbWl0IiwiY3VycmVudExpbWl0IiwicmFuZ2VzIiwicGFnZSIsInBhZ2VSYW5nZVRleHQiLCJpbmRpY2F0b3JUZXh0IiwiZm9ybWF0SW50ZWdlciIsImN1cnJlbnRSYW5nZSIsImhhc1ByZXYiLCJoYXNOZXh0IiwiZ29Ub1BhZ2UiLCJvbk5hdmlnYXRlIiwib25GaXJzdCIsIm9uTGFzdCIsIlJ1aU1lbnVTZWxlY3QiLCJub0RhdGFQbGFjZWhvbGRlciIsIm5vRGF0YVBsYWNlaG9sZGVyRGFyayIsIl91c2VTbG90cyIsInN0aWNreUhlYWRlciIsImNvbGxhcHNlZCIsImRpc2FibGVkUm93cyIsInN0aWNreUhlYWRlck9mZnNldCIsImlzUm93IiwiaXNIZWFkZXJTbG90Iiwic2xvdE5hbWUiLCJzdGljayIsInRhYmxlIiwidGFibGVTY3JvbGxlciIsInVzZVN0aWNreVRhYmxlSGVhZGVyIiwiZXhwYW5kYWJsZSIsImhlYWRlclNsb3RzIiwiZ2xvYmFsSXRlbXNQZXJQYWdlU2V0dGluZ3MiLCJnZXRLZXlzIiwiZ3JvdXBLZXlzIiwiZ3JvdXBCeSIsImdyb3VwS2V5IiwiaXNHcm91cGVkIiwiY29sdW1ucyIsImhhc0V4cGFuZENvbHVtbiIsInJvdyIsImdyb3VwQnlLZXlzIiwiaXRlbXNMZW5ndGgiLCJzZWxlY3RlZERhdGEiLCJpbnRlcm5hbFNlbGVjdGVkRGF0YSIsInJvd0lkZW50aWZpZXIiLCJpbnRlcm5hbFBhZ2luYXRpb25TdGF0ZSIsImNvbGxhcHNlZFJvd3MiLCJwYWdpbmF0aW9uIiwicGFnaW5hdGlvbkRhdGEiLCJwYWdpbmF0ZWQiLCJzb3J0RGF0YSIsInJlc2V0Q2hlY2tib3hTaGlmdFN0YXRlIiwic29ydGVkTWFwIiwibWFwcGVkIiwiYWNjIiwic2VhcmNoRGF0YSIsInF1ZXJ5Iiwic29ydGVkIiwic29ydE9wdGlvbnMiLCJieSIsImEiLCJhVmFsdWUiLCJiVmFsdWUiLCJhTnVtYmVyIiwiYk51bWJlciIsIm1hcHBlZEdyb3VwcyIsImlkZW50aWZpZXIiLCJncm91cCIsImdldFJvd0dyb3VwIiwiZ3JvdXBWYWwiLCJncm91cGVkIiwiZmlsdGVyZWQiLCJwcmVHcm91cHMiLCJwb3N0R3JvdXBzIiwibmVhcmVzdEdyb3VwIiwiZmlyc3RJdGVtIiwibGFzdEl0ZW0iLCJpc0hpZGRlblJvdyIsInZpc2libGVJZGVudGlmaWVycyIsInNlbGVjdEJ5IiwiaXNBbGxTZWxlY3RlZCIsInNlbGVjdGVkUm93cyIsIm5vRGF0YSIsImNvbHNwYW4iLCJjb2x1bW5MZW5ndGgiLCJpc1NlbGVjdGVkIiwiaXNEaXNhYmxlZFJvdyIsInJvd0tleSIsImRpc2FibGVkUm93IiwiaXNFeHBhbmRlZCIsImV4cGFuZGVkIiwib25Ub2dnbGVFeHBhbmQiLCJyb3dFeHBhbmRlZCIsImdldEdyb3VwUm93cyIsImdyb3VwUm93cyIsImNvbXBhcmVHcm91cHNGbiIsImlzRXhwYW5kZWRHcm91cCIsIm9uVG9nZ2xlRXhwYW5kR3JvdXAiLCJncm91cEV4cGFuZGVkIiwib25Vbmdyb3VwIiwib25Db3B5R3JvdXAiLCJuZXdEaXJlY3Rpb24iLCJzb3J0QnlDb2wiLCJpc1NlbGVjdGFibGUiLCJtdXN0U2VsZWN0Iiwic2hpZnRDbGlja2VkIiwibGFzdFNlbGVjdGVkSW5kZXgiLCJvblNlbGVjdCIsInVzZXJBY3Rpb24iLCJvbkNoZWNrYm94Q2xpY2siLCJub2RlTmFtZSIsInNoaWZ0S2V5IiwibGFzdEluZGV4IiwidGFibGVEYXRhIiwibGFzdFNlbGVjdGVkRGF0YSIsInZhbHVlVG9BcHBseSIsImZyb20iLCJ0byIsImN1cnJTZWxlY3RlZERhdGEiLCJzZWFyY2giLCJkZXNlbGVjdFJlbW92ZWRSb3dzIiwib25QYWdpbmF0ZSIsInNldEludGVybmFsVG90YWwiLCJpdGVtcyIsImNlbGxWYWx1ZSIsIml0ZW1zUGVyUGFnZSIsIm1heFBhZ2VzIiwiUnVpVGFibGVQYWdpbmF0aW9uIiwiUnVpVGFibGVIZWFkIiwiaGVhZGVyU2xvdCIsInNsb3REYXRhIiwic3ViSW5kZXgiLCJSdWlFeHBhbmRCdXR0b24iLCJyZXZlcnNlIiwiY3VyckluZGV4IiwiYWN0aXZlSW5kZXgiLCJnZXRDaGlsZHJlblRhYnMiLCJ0YWJzIiwiYW55QWN0aXZlIiwidGFiIiwiZ3JvdyIsImFjdGl2ZSIsImFjdGl2ZUNsYXNzIiwiYWxpZ24iLCJpbmRpY2F0b3JQb3NpdGlvbiIsImlzU2VsZiIsInRhYkNsYXNzIiwiX2NvbXBvbmVudF9Sb3V0ZXJMaW5rIiwiaHJlZiIsIm5hdmlnYXRlIiwiaXNBY3RpdmUiLCJpc0V4YWN0QWN0aXZlIiwiYmFyIiwic2hvd0Fycm93cyIsImN1cnJlbnRNb2RlbFZhbHVlIiwiaW5oZXJpdGVkUHJvcHMiLCJ0YWJWYWx1ZSIsInJvdXRlIiwidXNlUm91dGUiLCJpc1BhdGhNYXRjaCIsInBhdGgiLCJleGFjdFBhdGgiLCJleGFjdCIsImN1cnJlbnRSb3V0ZSIsInJvdXRlV2l0aG91dFF1ZXJ5UGFyYW1zIiwia2VlcEFjdGl2ZVRhYlZpc2libGUiLCJiYXJFbGVtIiwiYWN0aXZlVGFiIiwiY2hpbGRMZWZ0IiwiY2hpbGRUb3AiLCJjaGlsZFdpZHRoIiwiY2hpbGRIZWlnaHQiLCJwYXJlbnRTY3JvbGxMZWZ0IiwicGFyZW50U2Nyb2xsVG9wIiwicGFyZW50V2lkdGgiLCJwYXJlbnRIZWlnaHQiLCJzY3JvbGxMZWZ0Iiwic2Nyb2xsVG9wIiwicm91dGVyIiwidXNlUm91dGVyIiwiYXBwbHlOZXdWYWx1ZSIsIm9ubHlMaW5rIiwiZW5hYmxlZENoaWxkcmVuIiwid3JhcHBlcldpZHRoIiwid3JhcHBlckhlaWdodCIsImFycml2ZWRTdGF0ZSIsInVzZVNjcm9sbCIsImJvdHRvbSIsInRyaWdnZXJIb3Jpem9udGFsIiwic3RvcEhvcml6b250YWwiLCJ3YXRjaFRyaWdnZXJhYmxlIiwid3ciLCJ3IiwidGhyb3R0bGVGaWx0ZXIiLCJ0cmlnZ2VyVmVydGljYWwiLCJzdG9wVmVydGljYWwiLCJ3aCIsInByZXZBcnJvd0Rpc2FibGVkIiwibmV4dEFycm93RGlzYWJsZWQiLCJvblByZXZTbGlkZXJDbGljayIsIm9uTmV4dFNsaWRlckNsaWNrIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBY0EsVUFBTUEsSUFBUUMsR0FLUixFQUFFLGlCQUFBQyxFQUFBLElBQW9CQyxHQUFBLEdBRXRCQyxJQUFTQyxFQUFTLE1BQU1MLEVBQU0sS0FBSyxTQUFTLE9BQU8sQ0FBQyxHQUVwRE0sSUFBMEVELEVBQVMsTUFBTTtBQUM3RixZQUFNRSxJQUFPUCxFQUFNO0FBQ25CLE1BQUtRLEdBQVVELENBQUksS0FDakIsUUFBUSxLQUFLLFFBQVFBLENBQUksMEJBQTBCO0FBRXJELFlBQU1FLElBQVFQLEVBQWdCSyxDQUFJO0FBRWxDLGFBQUtFLEtBQ0gsUUFBUSxNQUFNLFVBQVVGLENBQUksc0ZBQXNGLEdBRTdHRTtBQUFBLElBQ1QsQ0FBQzsyQkFJQ0MsRUFvQk0sT0FBQTtBQUFBLE1BbkJILE9BQUtDLEVBQUEsQ0FBR0MsRUFBQUEsT0FBTSxVQUFBLEdBQWNBLEVBQUFBLE9BQU9YLEVBQUEsU0FBSyxFQUFBLENBQUEsQ0FBQTtBQUFBLE1BQ3hDLFFBQVFBLEVBQUE7QUFBQSxNQUNSLE9BQU9BLEVBQUE7QUFBQSxNQUNSLFNBQVE7QUFBQSxNQUNSLE9BQU07QUFBQSxJQUFBO09BRU5ZLEVBQUEsRUFBQSxHQUFBSCxFQVlFSSxJQUFBLE1BQUFDLEdBVjZCQyxFQUFBVixDQUFBLEdBQVUsQ0FBL0JXLEdBQVdD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QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFDRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDOWhCQSxVQUFNeFUsSUFBYWlGLEdBQTJDcEgsR0FB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
|
|
8030
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZXMuanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL2ljb25zL1J1aUljb24udnVlIiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvYWNjb3JkaW9ucy9hY2NvcmRpb24vUnVpQWNjb3JkaW9uLnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL2FjY29yZGlvbnMvYWNjb3JkaW9ucy9SdWlBY2NvcmRpb25zLnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL3Byb2dyZXNzL1J1aVByb2dyZXNzLnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL2J1dHRvbnMvYnV0dG9uL1J1aUJ1dHRvbi52dWUiLCIuLi8uLi9zcmMvY29tcG9uZW50cy9hbGVydHMvUnVpQWxlcnQudnVlIiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvYnV0dG9ucy9idXR0b24tZ3JvdXAvUnVpQnV0dG9uR3JvdXAudnVlIiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvY2FsZW5kYXIvc3RhdGUudHMiLCIuLi8uLi9zcmMvY29tcG9uZW50cy9jYWxlbmRhci9SdWlDYWxlbmRhckdyaWQudnVlIiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvaGVscGVycy9SdWlGb3JtVGV4dERldGFpbC52dWUiLCIuLi8uLi9zcmMvY29tcG9uZW50cy9vdmVybGF5cy9tZW51L1J1aU1lbnUudnVlIiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvY2FsZW5kYXIvUnVpQ2FsZW5kYXJNZW51LnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL2NhbGVuZGFyL1J1aUNhbGVuZGFySGVhZGVyLnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL2NhbGVuZGFyL1J1aUNhbGVuZGFyLnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL2NhcmRzL1J1aUNhcmRIZWFkZXIudnVlIiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvY2FyZHMvUnVpQ2FyZC52dWUiLCIuLi8uLi9zcmMvY29tcG9uZW50cy9jaGlwcy9SdWlDaGlwLnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL2NvbG9yLXBpY2tlci91dGlscy50cyIsIi4uLy4uL3NyYy9jb21wb25lbnRzL2NvbG9yLXBpY2tlci9SdWlDb2xvckJvYXJkLnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL292ZXJsYXlzL3Rvb2x0aXAvUnVpVG9vbHRpcC52dWUiLCIuLi8uLi9zcmMvY29tcG9uZW50cy9jb2xvci1waWNrZXIvUnVpQ29sb3JEaXNwbGF5LnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL2NvbG9yLXBpY2tlci9SdWlDb2xvckh1ZS52dWUiLCIuLi8uLi9zcmMvY29tcG9uZW50cy9mb3Jtcy90ZXh0LWZpZWxkL1J1aVRleHRGaWVsZC52dWUiLCIuLi8uLi9zcmMvY29tcG9uZW50cy9jb2xvci1waWNrZXIvUnVpQ29sb3JJbnB1dC52dWUiLCIuLi8uLi9zcmMvY29tcG9uZW50cy9jb2xvci1waWNrZXIvUnVpQ29sb3JQaWNrZXIudnVlIiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvZGF0ZS10aW1lLXBpY2tlci90aW1lem9uZXMudHMiLCIuLi8uLi9zcmMvY29tcG9uZW50cy9mb3Jtcy9hdXRvLWNvbXBsZXRlL1J1aUF1dG9Db21wbGV0ZS52dWUiLCIuLi8uLi9zcmMvY29tcG9uZW50cy90aW1lLXBpY2tlci9SdWlUaW1lUGlja2VyLnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL2RhdGUtdGltZS1waWNrZXIvUnVpRGF0ZVRpbWVQaWNrZXJNZW51LnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL2RhdGUtdGltZS1waWNrZXIvdXRpbHMudHMiLCIuLi8uLi9zcmMvY29tcG9uZW50cy9kYXRlLXRpbWUtcGlja2VyL3VzZS1pbnB1dC1oYW5kbGVyLnRzIiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvZGF0ZS10aW1lLXBpY2tlci90eXBlcy50cyIsIi4uLy4uL3NyYy9jb21wb25lbnRzL2RhdGUtdGltZS1waWNrZXIvdXNlLWtleWJvYXJkLWhhbmRsZXIudHMiLCIuLi8uLi9zcmMvY29tcG9uZW50cy9kYXRlLXRpbWUtcGlja2VyL1J1aURhdGVUaW1lUGlja2VyLnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL2RpdmlkZXIvUnVpRGl2aWRlci52dWUiLCIuLi8uLi9zcmMvY29tcG9uZW50cy9mb3Jtcy9jaGVja2JveC9SdWlDaGVja2JveC52dWUiLCIuLi8uLi9zcmMvY29tcG9uZW50cy9mb3Jtcy9yYWRpby1idXR0b24vcmFkaW8tZ3JvdXAvUnVpUmFkaW9Hcm91cC52dWUiLCIuLi8uLi9zcmMvY29tcG9uZW50cy9mb3Jtcy9yYWRpby1idXR0b24vcmFkaW8vUnVpUmFkaW8udnVlIiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvZm9ybXMvcmV2ZWFsYWJsZS10ZXh0LWZpZWxkL1J1aVJldmVhbGFibGVUZXh0RmllbGQudnVlIiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvZm9ybXMvc2VsZWN0L1J1aU1lbnVTZWxlY3QudnVlIiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvZm9ybXMvc2VsZWN0L1J1aVNpbXBsZVNlbGVjdC52dWUiLCIuLi8uLi9zcmMvY29tcG9uZW50cy9mb3Jtcy9zbGlkZXIvUnVpU2xpZGVyLnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL2Zvcm1zL3N3aXRjaC9SdWlTd2l0Y2gudnVlIiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvZm9ybXMvdGV4dC1hcmVhL1J1aVRleHRBcmVhLnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL2xvYWRlcnMvUnVpU2tlbGV0b25CYXNlLnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL2xvYWRlcnMvUnVpU2tlbGV0b25Mb2FkZXIudnVlIiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvbG9nb3MvbG9nby5zdmciLCIuLi8uLi9zcmMvY29tcG9uZW50cy9sb2dvcy9SdWlMb2dvLnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL292ZXJsYXlzL2JhZGdlL1J1aUJhZGdlLnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL292ZXJsYXlzL2RpYWxvZy9SdWlEaWFsb2cudnVlIiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvb3ZlcmxheXMvYm90dG9tLXNoZWV0L1J1aUJvdHRvbVNoZWV0LnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL292ZXJsYXlzL25hdmlnYXRpb24tZHJhd2VyL1J1aU5hdmlnYXRpb25EcmF3ZXIudnVlIiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvb3ZlcmxheXMvbm90aWZpY2F0aW9uL1J1aU5vdGlmaWNhdGlvbi52dWUiLCIuLi8uLi9zcmMvY29tcG9uZW50cy9zdGVwcGVycy9SdWlGb290ZXJTdGVwcGVyLnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL3N0ZXBwZXJzL1J1aVN0ZXBwZXJDdXN0b21JY29uLnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL3N0ZXBwZXJzL1J1aVN0ZXBwZXJJY29uLnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL3N0ZXBwZXJzL1J1aVN0ZXBwZXIudnVlIiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvdGFibGVzL1J1aUV4cGFuZEJ1dHRvbi52dWUiLCIuLi8uLi9zcmMvY29tcG9uZW50cy90YWJsZXMvUnVpVGFibGVIZWFkLnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL3RhYmxlcy9SdWlUYWJsZVBhZ2luYXRpb24udnVlIiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvdGFibGVzL3RhYmxlX25vX2RhdGFfcGxhY2Vob2xkZXIuc3ZnIiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvdGFibGVzL3RhYmxlX25vX2RhdGFfcGxhY2Vob2xkZXJfZGFyay5zdmciLCIuLi8uLi9zcmMvY29tcG9uZW50cy90YWJsZXMvUnVpRGF0YVRhYmxlLnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL3RhYnMvdGFiLWl0ZW0vUnVpVGFiSXRlbS52dWUiLCIuLi8uLi9zcmMvY29tcG9uZW50cy90YWJzL3RhYi1pdGVtcy9SdWlUYWJJdGVtcy52dWUiLCIuLi8uLi9zcmMvY29tcG9uZW50cy90YWJzL3RhYi9SdWlUYWIudnVlIiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvdGFicy90YWJzL1J1aVRhYnMudnVlIl0sInNvdXJjZXNDb250ZW50IjpbIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG5pbXBvcnQgdHlwZSB7IENvbnRleHRDb2xvcnNUeXBlIH0gZnJvbSAnQC9jb25zdHMvY29sb3JzJztcbmltcG9ydCB7IGlzUnVpSWNvbiwgdHlwZSBSdWlJY29ucyB9IGZyb20gJ0AvaWNvbnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BzIHtcbiAgbmFtZTogUnVpSWNvbnM7XG4gIHNpemU/OiBudW1iZXIgfCBzdHJpbmc7XG4gIGNvbG9yPzogQ29udGV4dENvbG9yc1R5cGU7XG59XG5cbmRlZmluZU9wdGlvbnMoe1xuICBuYW1lOiAnUnVpSWNvbicsXG59KTtcblxuY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgc2l6ZTogMjQsXG4gIGNvbG9yOiB1bmRlZmluZWQsXG59KTtcblxuY29uc3QgeyByZWdpc3RlcmVkSWNvbnMgfSA9IHVzZUljb25zKCk7XG5cbmNvbnN0IGlzRmlsbCA9IGNvbXB1dGVkKCgpID0+IHByb3BzLm5hbWUuZW5kc1dpdGgoJy1maWxsJykpO1xuXG5jb25zdCBjb21wb25lbnRzOiBDb21wdXRlZFJlZjxbc3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XVtdIHwgdW5kZWZpbmVkPiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgY29uc3QgbmFtZSA9IHByb3BzLm5hbWU7XG4gIGlmICghaXNSdWlJY29uKG5hbWUpKSB7XG4gICAgY29uc29sZS53YXJuKGBpY29uICR7bmFtZX0gbXVzdCBiZSBhIHZhbGlkIFJ1aUljb25gKTtcbiAgfVxuICBjb25zdCBmb3VuZCA9IHJlZ2lzdGVyZWRJY29uc1tuYW1lXTtcblxuICBpZiAoIWZvdW5kKSB7XG4gICAgY29uc29sZS5lcnJvcihgSWNvbnMgXCIke25hbWV9XCIgbm90IGZvdW5kLiBNYWtlIHN1cmUgdGhhdCB5b3UgaGF2ZSByZWdpc3RlciB0aGUgaWNvbiB3aGVuIGluc3RhbGxpbmcgdGhlIFJ1aVBsdWdpbmApO1xuICB9XG4gIHJldHVybiBmb3VuZDtcbn0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPHN2Z1xuICAgIDpjbGFzcz1cIlskc3R5bGVbJ3J1aS1pY29uJ10sICRzdHlsZVtjb2xvciA/PyAnJ11dXCJcbiAgICA6aGVpZ2h0PVwic2l6ZVwiXG4gICAgOndpZHRoPVwic2l6ZVwiXG4gICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gID5cbiAgICA8Y29tcG9uZW50XG4gICAgICA6aXM9XCJjb21wb25lbnRbMF1cIlxuICAgICAgdi1mb3I9XCIoY29tcG9uZW50LCBpbmRleCkgaW4gY29tcG9uZW50c1wiXG4gICAgICA6a2V5PVwiaW5kZXhcIlxuICAgICAgdi1iaW5kPVwiY29tcG9uZW50WzFdXCJcbiAgICAgIDpmaWxsPVwiKCFpc0ZpbGwpID8gJ25vbmUnIDogJ2N1cnJlbnRDb2xvcidcIlxuICAgICAgOnN0cm9rZT1cIighaXNGaWxsKSA/ICdjdXJyZW50Q29sb3InIDogJ25vbmUnXCJcbiAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxuICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgIC8+XG4gIDwvc3ZnPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgbW9kdWxlPlxuQHVzZSAnQC9zdHlsZXMvY29sb3JzLnNjc3MnIGFzIGM7XG5cbi5ydWktaWNvbiB7XG4gIEBlYWNoICRjb2xvciBpbiBjLiRjb250ZXh0LWNvbG9ycyB7XG4gICAgJi4jeyRjb2xvcn0ge1xuICAgICAgQGFwcGx5IHRleHQtcnVpLSN7JGNvbG9yfTtcbiAgICB9XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuaW1wb3J0IEljb24gZnJvbSAnQC9jb21wb25lbnRzL2ljb25zL1J1aUljb24udnVlJztcblxuZXhwb3J0IGludGVyZmFjZSBBY2NvcmRpb25Qcm9wcyB7XG4gIG9wZW4/OiBib29sZWFuO1xuICBlYWdlcj86IGJvb2xlYW47XG4gIGhlYWRlckdyb3c/OiBib29sZWFuO1xuICBoZWFkZXJDbGFzcz86IHN0cmluZztcbiAgY29udGVudENsYXNzPzogc3RyaW5nO1xufVxuXG5kZWZpbmVPcHRpb25zKHtcbiAgbmFtZTogJ1J1aUFjY29yZGlvbicsXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG59KTtcblxud2l0aERlZmF1bHRzKGRlZmluZVByb3BzPEFjY29yZGlvblByb3BzPigpLCB7XG4gIG9wZW46IGZhbHNlLFxuICBlYWdlcjogZmFsc2UsXG4gIGhlYWRlckdyb3c6IGZhbHNlLFxuICBoZWFkZXJDbGFzczogJycsXG4gIGNvbnRlbnRDbGFzczogJycsXG59KTtcblxuY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPHtcbiAgKGU6ICdjbGljaycpOiB2b2lkO1xufT4oKTtcblxuZnVuY3Rpb24gY2xpY2soKSB7XG4gIGVtaXQoJ2NsaWNrJyk7XG59XG5cbmNvbnN0IGlubmVyID0gcmVmPEhUTUxEaXZFbGVtZW50PigpO1xuXG5jb25zdCB7IGhlaWdodDogaW5uZXJIZWlnaHQgfSA9IHVzZUVsZW1lbnRTaXplKGlubmVyKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICBjbGFzcz1cImFjY29yZGlvblwiXG4gICAgOmNsYXNzPVwiWyRzdHlsZS5hY2NvcmRpb24sIHsgWyRzdHlsZS5vcGVuXTogb3BlbiB9XVwiXG4gICAgdi1iaW5kPVwiJGF0dHJzXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIHYtaWY9XCIkc2xvdHMuaGVhZGVyXCJcbiAgICAgIGNsYXNzPVwiYWNjb3JkaW9uX19oZWFkZXIgZmxleCBnYXAtMiBpdGVtcy1jZW50ZXJcIlxuICAgICAgOmNsYXNzPVwiW2hlYWRlckNsYXNzLCB7ICd3LWZ1bGwnOiBoZWFkZXJHcm93IH1dXCJcbiAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgQGNsaWNrPVwiY2xpY2soKVwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJ7IGdyb3c6IGhlYWRlckdyb3cgfVwiXG4gICAgICA+XG4gICAgICAgIDxzbG90XG4gICAgICAgICAgbmFtZT1cImhlYWRlclwiXG4gICAgICAgICAgOm9wZW49XCJvcGVuXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPEljb25cbiAgICAgICAgY2xhc3M9XCJ0ZXh0LXJ1aS10ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgIDpjbGFzcz1cIiRzdHlsZS5pY29uXCJcbiAgICAgICAgbmFtZT1cImx1LWNoZXZyb24tZG93blwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIHYtaWY9XCJvcGVuIHx8IGVhZ2VyXCJcbiAgICAgIDpjbGFzcz1cIltjb250ZW50Q2xhc3MsICRzdHlsZS5hY2NvcmRpb25fX2NvbnRlbnRdXCJcbiAgICAgIGNsYXNzPVwiYWNjb3JkaW9uX19jb250ZW50XCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIHJlZj1cImlubmVyXCJcbiAgICAgID5cbiAgICAgICAgPHNsb3RcbiAgICAgICAgICBuYW1lPVwiZGVmYXVsdFwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIiBtb2R1bGU+XG4uYWNjb3JkaW9uIHtcbiAgQGFwcGx5IGZsZXggZmxleC1jb2wgaXRlbXMtc3RhcnQ7XG5cbiAgJi5vcGVuIHtcbiAgICAuYWNjb3JkaW9uIHtcbiAgICAgICZfX2NvbnRlbnQge1xuICAgICAgICBoZWlnaHQ6IGNhbGModi1iaW5kKGlubmVySGVpZ2h0KSAqIDFweCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmljb24ge1xuICAgICAgQGFwcGx5IHRyYW5zZm9ybSAtcm90YXRlLTE4MDtcbiAgICB9XG4gIH1cblxuICAmX19jb250ZW50IHtcbiAgICBAYXBwbHkgZ3JvdyB0cmFuc2l0aW9uLWFsbCBvdmVyZmxvdy1oaWRkZW4gaC0wIHctZnVsbDtcbiAgfVxuXG4gIC5pY29uIHtcbiAgICBAYXBwbHkgdHJhbnNpdGlvbi1hbGw7XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuZXhwb3J0IGludGVyZmFjZSBQcm9wcyB7XG4gIG1vZGVsVmFsdWU/OiBudW1iZXJbXSB8IG51bWJlcjtcbiAgbXVsdGlwbGU/OiBib29sZWFuO1xufVxuXG5kZWZpbmVPcHRpb25zKHtcbiAgbmFtZTogJ1J1aUFjY29yZGlvbnMnLFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxufSk7XG5cbmNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gIG1vZGVsVmFsdWU6IC0xLFxuICBtdWx0aXBsZTogZmFsc2UsXG59KTtcblxuY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPHtcbiAgKGU6ICd1cGRhdGU6bW9kZWwtdmFsdWUnLCBtb2RlbFZhbHVlOiBudW1iZXIgfCBudW1iZXJbXSk6IHZvaWQ7XG59PigpO1xuXG5jb25zdCB7IG1vZGVsVmFsdWUsIG11bHRpcGxlIH0gPSB0b1JlZnMocHJvcHMpO1xuXG5jb25zdCBpbnRlcm5hbFZhbHVlID0gcmVmKCk7XG5cbmNvbnN0IHNsb3RzID0gdXNlU2xvdHMoKTtcbmNvbnN0IGNoaWxkcmVuID0gY29tcHV0ZWQoKCkgPT4ge1xuICBjb25zdCBhY2NvcmRpb25zID0gc2xvdHMuZGVmYXVsdD8uKCkgPz8gW107XG4gIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IGdldChpbnRlcm5hbFZhbHVlKTtcbiAgY29uc3QgbXVsdGlwbGVWYWwgPSBnZXQobXVsdGlwbGUpO1xuXG4gIHJldHVybiBhY2NvcmRpb25zLm1hcCgoYWNjb3JkaW9uLCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IG9wZW4gPSBtdWx0aXBsZVZhbCAmJiBBcnJheS5pc0FycmF5KGN1cnJlbnRWYWx1ZSkgPyBjdXJyZW50VmFsdWUuaW5jbHVkZXMoaW5kZXgpIDogY3VycmVudFZhbHVlID09PSBpbmRleDtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5hY2NvcmRpb24sXG4gICAgICBwcm9wczoge1xuICAgICAgICBvcGVuLFxuICAgICAgICAuLi5hY2NvcmRpb24ucHJvcHMsXG4gICAgICB9LFxuICAgIH07XG4gIH0pO1xufSk7XG5cbmZ1bmN0aW9uIHVwZGF0ZVZhbHVlKG5ld01vZGVsVmFsdWU6IG51bWJlcikge1xuICBsZXQgbmV3VmFsdWU6IG51bWJlcltdIHwgbnVtYmVyO1xuICBjb25zdCBpbnRlcm5hbCA9IGdldChpbnRlcm5hbFZhbHVlKTtcbiAgaWYgKGdldChtdWx0aXBsZSkgJiYgQXJyYXkuaXNBcnJheShpbnRlcm5hbCkpIHtcbiAgICBjb25zdCB0ZW1wID0gWy4uLmdldChpbnRlcm5hbCldO1xuICAgIGNvbnN0IGluZGV4ID0gdGVtcC5pbmRleE9mKG5ld01vZGVsVmFsdWUpO1xuICAgIGlmIChpbmRleCA9PT0gLTEpXG4gICAgICB0ZW1wLnB1c2gobmV3TW9kZWxWYWx1ZSk7XG4gICAgZWxzZVxuICAgICAgdGVtcC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIG5ld1ZhbHVlID0gdGVtcDtcbiAgfVxuICBlbHNlIHtcbiAgICBpZiAoaW50ZXJuYWwgPT09IG5ld01vZGVsVmFsdWUpXG4gICAgICBuZXdWYWx1ZSA9IC0xO1xuICAgIGVsc2VcbiAgICAgIG5ld1ZhbHVlID0gbmV3TW9kZWxWYWx1ZTtcbiAgfVxuICBlbWl0KCd1cGRhdGU6bW9kZWwtdmFsdWUnLCBuZXdWYWx1ZSk7XG4gIHNldChpbnRlcm5hbFZhbHVlLCBuZXdWYWx1ZSk7XG59XG5cbndhdGNoKFttb2RlbFZhbHVlLCBtdWx0aXBsZV0sIChbdmFsdWUsIG11bHRpcGxlXSkgPT4ge1xuICBsZXQgaW50ZXJuYWw6IG51bWJlciB8IG51bWJlcltdID0gdmFsdWU7XG4gIGlmIChtdWx0aXBsZSAmJiAhQXJyYXkuaXNBcnJheShpbnRlcm5hbCkpXG4gICAgaW50ZXJuYWwgPSBpbnRlcm5hbCA9PT0gLTEgPyBbXSA6IFtpbnRlcm5hbF07XG4gIGVsc2UgaWYgKCFtdWx0aXBsZSAmJiBBcnJheS5pc0FycmF5KGludGVybmFsKSlcbiAgICBpbnRlcm5hbCA9IGludGVybmFsWzBdID8/IC0xO1xuXG4gIHNldChpbnRlcm5hbFZhbHVlLCBpbnRlcm5hbCk7XG59LCB7IGltbWVkaWF0ZTogdHJ1ZSB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgdi1iaW5kPVwiJGF0dHJzXCI+XG4gICAgPENvbXBvbmVudFxuICAgICAgOmlzPVwiY2hpbGRcIlxuICAgICAgdi1mb3I9XCIoY2hpbGQsIGkpIGluIGNoaWxkcmVuXCJcbiAgICAgIDprZXk9XCJpXCJcbiAgICAgIEBjbGljaz1cInVwZGF0ZVZhbHVlKGkpXCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuaW1wb3J0IHR5cGUgeyBDb250ZXh0Q29sb3JzVHlwZSB9IGZyb20gJ0AvY29uc3RzL2NvbG9ycyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvcHMge1xuICAvKipcbiAgICogaW4gcGVyY2VudGFnZSB2YWx1ZSwgcmVxdWlyZWQgd2hlbiB2YXJpYW50ID09PSBkZXRlcm1pbmF0ZSBvciBidWZmZXJcbiAgICogQGV4YW1wbGUgLSAwIDw9IHZhbHVlIDw9IDEwMFxuICAgKi9cbiAgdmFsdWU/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBpbiBwZXJjZW50YWdlIHZhbHVlLCByZXF1aXJlZCB3aGVuIHZhcmlhbnQgPT09IGJ1ZmZlclxuICAgKiBAZXhhbXBsZSAtIDAgPD0gdmFsdWUgPD0gMTAwXG4gICAqL1xuICBidWZmZXJWYWx1ZT86IG51bWJlcjtcbiAgdmFyaWFudD86ICdkZXRlcm1pbmF0ZScgfCAnaW5kZXRlcm1pbmF0ZScgfCAnYnVmZmVyJztcbiAgY29sb3I/OiBDb250ZXh0Q29sb3JzVHlwZSB8ICdpbmhlcml0JztcbiAgY2lyY3VsYXI/OiBib29sZWFuO1xuICBzaG93TGFiZWw/OiBib29sZWFuO1xuICAvKipcbiAgICogU2V0cyB0aGUgc3Ryb2tlIHRoaWNrbmVzcyBpbiBwaXhlbHNcbiAgICovXG4gIHRoaWNrbmVzcz86IG51bWJlciB8IHN0cmluZztcbiAgLyoqXG4gICAqIG9ubHkgdXNlZCBmb3IgY2lyY3VsYXIgcHJvZ3Jlc3NcbiAgICovXG4gIHNpemU/OiBudW1iZXIgfCBzdHJpbmc7XG59XG5cbmRlZmluZU9wdGlvbnMoe1xuICBuYW1lOiAnUnVpUHJvZ3Jlc3MnLFxufSk7XG5cbmNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gIHZhbHVlOiAwLFxuICBidWZmZXJWYWx1ZTogMCxcbiAgdmFyaWFudDogJ2RldGVybWluYXRlJyxcbiAgY29sb3I6ICdpbmhlcml0JyxcbiAgY2lyY3VsYXI6IGZhbHNlLFxuICBzaG93TGFiZWw6IGZhbHNlLFxuICB0aGlja25lc3M6IDQsXG4gIHNpemU6IDMyLFxufSk7XG5cbmNvbnN0IHsgdmFyaWFudCwgdmFsdWUsIGJ1ZmZlclZhbHVlLCB0aGlja25lc3MsIHNpemUgfSA9IHRvUmVmcyhwcm9wcyk7XG5cbmNvbnN0IGN1cnJlbnRWYWx1ZSA9IGNvbXB1dGVkKCgpID0+XG4gIE1hdGgubWF4KDAsIE1hdGgubWluKGdldCh2YWx1ZSkgPz8gMTAwLCAxMDApKSxcbik7XG5cbmNvbnN0IGxhYmVsID0gY29tcHV0ZWQoKCkgPT4gYCR7TWF0aC5mbG9vcihnZXQoY3VycmVudFZhbHVlKSl9JWApO1xuXG5jb25zdCBwcm9ncmVzcyA9IGNvbXB1dGVkKCgpID0+IC0xMDAgKyBnZXQoY3VycmVudFZhbHVlKSk7XG5cbmNvbnN0IHZhbHVlUGVyY2VudCA9IGNvbXB1dGVkKCgpID0+IGAke2dldChwcm9ncmVzcyl9JWApO1xuXG5jb25zdCBidWZmZXJQZXJjZW50ID0gY29tcHV0ZWQoXG4gICgpID0+IGAkey0xMDAgKyBNYXRoLm1heCgwLCBNYXRoLm1pbihnZXQoYnVmZmVyVmFsdWUpID8/IDEwMCwgMTAwKSl9JWAsXG4pO1xuXG5jb25zdCBjaXJjdWxhclNjYWxlZFRoaWNrbmVzcyA9IGNvbXB1dGVkKFxuICAoKSA9PiAoK2dldCh0aGlja25lc3MpICogMzIpIC8gK2dldChzaXplKSxcbik7XG5cbmNvbnN0IGNpcmN1bGFyVmlld1NpemUgPSBjb21wdXRlZCgoKSA9PiA0MCArIGdldChjaXJjdWxhclNjYWxlZFRoaWNrbmVzcykpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICRzdHlsZS53cmFwcGVyLFxuICAgICAgY2lyY3VsYXIgPyAnaW5saW5lLWZsZXgnIDogJ3ctZnVsbCcsXG4gICAgICB7IFskc3R5bGVbJ2hhcy1sYWJlbCddXTogc2hvd0xhYmVsICYmIHZhcmlhbnQgIT09ICdpbmRldGVybWluYXRlJyB9LFxuICAgIF1cIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmFyaWEtdmFsdWVub3c9XCJ2YWx1ZVwiXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgIGNpcmN1bGFyICYmIHZhcmlhbnQgIT09ICdidWZmZXInID8gJHN0eWxlLmNpcmN1bGFyIDogJHN0eWxlLnByb2dyZXNzLFxuICAgICAgICAkc3R5bGVbdmFyaWFudCA/PyAnJ10sXG4gICAgICAgICRzdHlsZVtjb2xvciA/PyAnJ10sXG4gICAgICBdXCJcbiAgICAgIGFyaWEtdmFsdWVtYXg9XCIxMDBcIlxuICAgICAgYXJpYS12YWx1ZW1pbj1cIjBcIlxuICAgICAgcm9sZT1cInByb2dyZXNzYmFyXCJcbiAgICA+XG4gICAgICA8c3ZnXG4gICAgICAgIHYtaWY9XCJjaXJjdWxhciAmJiB2YXJpYW50ICE9PSAnYnVmZmVyJ1wiXG4gICAgICAgIDp2aWV3Qm94PVwiYDAgMCAke2NpcmN1bGFyVmlld1NpemV9ICR7Y2lyY3VsYXJWaWV3U2l6ZX1gXCJcbiAgICAgID5cbiAgICAgICAgPGNpcmNsZVxuICAgICAgICAgIGN4PVwiNTAlXCJcbiAgICAgICAgICBjeT1cIjUwJVwiXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIHI9XCIyMFwiXG4gICAgICAgICAgOnN0cm9rZS13aWR0aD1cImNpcmN1bGFyU2NhbGVkVGhpY2tuZXNzXCJcbiAgICAgICAgLz5cbiAgICAgIDwvc3ZnPlxuICAgICAgPHRlbXBsYXRlIHYtZWxzZT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIHYtaWY9XCJ2YXJpYW50ID09PSAnYnVmZmVyJ1wiXG4gICAgICAgICAgOmNsYXNzPVwiJHN0eWxlWydidWZmZXItZG90cyddXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIlskc3R5bGUucmFpbCwgeyBbJHN0eWxlWydidWZmZXItcmFpbCddXTogdmFyaWFudCA9PT0gJ2J1ZmZlcicgfV1cIlxuICAgICAgICAvPlxuICAgICAgICA8ZGl2IDpjbGFzcz1cIiRzdHlsZVt2YXJpYW50ID8/ICcnXVwiIC8+XG4gICAgICA8L3RlbXBsYXRlPlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIHYtaWY9XCJzaG93TGFiZWwgJiYgdmFyaWFudCAhPT0gJ2luZGV0ZXJtaW5hdGUnXCJcbiAgICAgIDpjbGFzcz1cIiRzdHlsZS5sYWJlbFwiXG4gICAgPlxuICAgICAge3sgbGFiZWwgfX1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIiBtb2R1bGU+XG4kY29sb3JzOiAncHJpbWFyeScsICdzZWNvbmRhcnknO1xuXG4ud3JhcHBlciB7XG4gICYuaGFzLWxhYmVsIHtcbiAgICBAYXBwbHkgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHJlbGF0aXZlO1xuXG4gICAgLmxhYmVsIHtcbiAgICAgIEBhcHBseSBibG9jayB0ZXh0LXNtIG1sLTQ7XG4gICAgfVxuXG4gICAgLmNpcmN1bGFyIH4gLmxhYmVsIHtcbiAgICAgIEBhcHBseSBhYnNvbHV0ZSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LVswLjYyNXJlbV0gbWwtMDtcbiAgICAgIHdpZHRoOiBjYWxjKHYtYmluZChzaXplKSAqIDFweCk7XG4gICAgICBoZWlnaHQ6IGNhbGModi1iaW5kKHNpemUpICogMXB4KTtcbiAgICB9XG4gIH1cblxuICAucHJvZ3Jlc3Mge1xuICAgIEBhcHBseSB3LWZ1bGwgb3ZlcmZsb3ctaGlkZGVuIHJlbGF0aXZlO1xuICAgIGhlaWdodDogY2FsYyh2LWJpbmQodGhpY2tuZXNzKSAqIDFweCk7XG5cbiAgICAucmFpbCB7XG4gICAgICBAYXBwbHkgdy1mdWxsIGgtZnVsbDtcbiAgICB9XG5cbiAgICAuZGV0ZXJtaW5hdGUsXG4gICAgLmJ1ZmZlciB7XG4gICAgICBAYXBwbHkgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMTUwIGVhc2UtaW4tb3V0IGFic29sdXRlIGxlZnQtMCB0b3AtMCBoLWZ1bGwgdy1mdWxsO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKHYtYmluZCh2YWx1ZVBlcmNlbnQpKTtcbiAgICB9XG5cbiAgICAuaW5kZXRlcm1pbmF0ZSB7XG4gICAgICBAYXBwbHkgYWJzb2x1dGUgbGVmdC0wIHRvcC0wIGgtZnVsbCB3LWF1dG8gdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMjAwIGVhc2UtbGluZWFyIGRlbGF5LTAgb3JpZ2luLWxlZnQ7XG4gICAgICBhbmltYXRpb246IDEuNnMgY3ViaWMtYmV6aWVyKDAuNjUsIDAuODE1LCAwLjczNSwgMC4zOTUpIDBzIGluZmluaXRlIG5vcm1hbCBub25lIHJ1bm5pbmcgc2xpZGUtcmFpbDtcbiAgICB9XG5cbiAgICAuYnVmZmVyLWRvdHMge1xuICAgICAgQGFwcGx5IGFic29sdXRlIGgtMCB3LVsyMDAlXSAtdG9wLXB4IC1sZWZ0LVsxMDAlXSBib3JkZXItZGFzaGVkIGJvcmRlci15LVswLjJyZW1dO1xuICAgICAgYW5pbWF0aW9uOiAzcyBlYXNlLWluLW91dCAzcyBpbmZpbml0ZSBub3JtYWwgbm9uZSBydW5uaW5nIGJ1ZmZlci1wdWxzZTtcbiAgICB9XG5cbiAgICAuYnVmZmVyLXJhaWwge1xuICAgICAgQGFwcGx5IHctZnVsbCB0cmFuc2l0aW9uLXRyYW5zZm9ybSBkdXJhdGlvbi0yMDAgZWFzZS1saW5lYXIgZGVsYXktMCBvcmlnaW4tbGVmdDtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCh2LWJpbmQoYnVmZmVyUGVyY2VudCkpO1xuICAgIH1cblxuICAgIEBlYWNoICRjb2xvciBpbiAkY29sb3JzIHtcbiAgICAgICYuI3skY29sb3J9IHtcbiAgICAgICAgLnJhaWwge1xuICAgICAgICAgIEBhcHBseSBiZy1ydWktI3skY29sb3J9LzIwO1xuICAgICAgICB9XG5cbiAgICAgICAgLmRldGVybWluYXRlLFxuICAgICAgICAuaW5kZXRlcm1pbmF0ZSxcbiAgICAgICAgLmJ1ZmZlciB7XG4gICAgICAgICAgQGFwcGx5IGJnLXJ1aS0jeyRjb2xvcn07XG4gICAgICAgIH1cblxuICAgICAgICAuYnVmZmVyLWRvdHMge1xuICAgICAgICAgIEBhcHBseSBib3JkZXItcnVpLSN7JGNvbG9yfS8yMDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICYuaW5oZXJpdCB7XG4gICAgICAucmFpbCB7XG4gICAgICAgIEBhcHBseSBiZy1jdXJyZW50IG9wYWNpdHktMjA7XG4gICAgICB9XG5cbiAgICAgIC5kZXRlcm1pbmF0ZSxcbiAgICAgIC5pbmRldGVybWluYXRlLFxuICAgICAgLmJ1ZmZlciB7XG4gICAgICAgIEBhcHBseSBiZy1jdXJyZW50O1xuICAgICAgfVxuXG4gICAgICAuYnVmZmVyLWRvdHMge1xuICAgICAgICBAYXBwbHkgYm9yZGVyLWN1cnJlbnQgb3BhY2l0eS0yMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuY2lyY3VsYXIge1xuICAgIEBhcHBseSBpbmxpbmUtYmxvY2s7XG4gICAgd2lkdGg6IGNhbGModi1iaW5kKHNpemUpICogMXB4KTtcbiAgICBoZWlnaHQ6IGNhbGModi1iaW5kKHNpemUpICogMXB4KTtcblxuICAgIEBlYWNoICRjb2xvciBpbiAkY29sb3JzIHtcbiAgICAgICYuI3skY29sb3J9IHtcbiAgICAgICAgQGFwcGx5IHRleHQtcnVpLSN7JGNvbG9yfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmluZGV0ZXJtaW5hdGUge1xuICAgICAgQGFwcGx5IGFuaW1hdGUtW3NwaW5fMS40c19saW5lYXJfaW5maW5pdGVdO1xuXG4gICAgICBzdmcge1xuICAgICAgICBjaXJjbGUge1xuICAgICAgICAgIHN0cm9rZS1kYXNoYXJyYXk6IDgwcHgsIDIwMHB4O1xuICAgICAgICAgIHN0cm9rZS1kYXNob2Zmc2V0OiAwO1xuICAgICAgICAgIHN0cm9rZS1saW5lY2FwOiByb3VuZDtcbiAgICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogY29sbGFwc2Utc3Ryb2tlIDEuNHMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICAgICAgYW5pbWF0aW9uOiBjb2xsYXBzZS1zdHJva2UgMS40cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICYuZGV0ZXJtaW5hdGUge1xuICAgICAgQGFwcGx5IC1yb3RhdGUtOTA7XG5cbiAgICAgIHN2ZyB7XG4gICAgICAgIGNpcmNsZSB7XG4gICAgICAgICAgc3Ryb2tlLWRhc2hhcnJheTogMTI2LjkyO1xuICAgICAgICAgIHN0cm9rZS1kYXNob2Zmc2V0OiBjYWxjKHYtYmluZChwcm9ncmVzcykgLyAxMDAgKiAtMTI2LjkyKTtcbiAgICAgICAgICAtd2Via2l0LXRyYW5zaXRpb246IHN0cm9rZS1kYXNob2Zmc2V0IDMwMG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSkgMG1zO1xuICAgICAgICAgIHRyYW5zaXRpb246IHN0cm9rZS1kYXNob2Zmc2V0IDMwMG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSkgMG1zO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5pbmhlcml0IHtcbiAgICAgIEBhcHBseSB0ZXh0LWN1cnJlbnQ7XG4gICAgfVxuXG4gICAgc3ZnIHtcbiAgICAgIEBhcHBseSBibG9jaztcblxuICAgICAgY2lyY2xlIHtcbiAgICAgICAgc3Ryb2tlOiBjdXJyZW50Q29sb3I7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbjpnbG9iYWwoLmRhcmspIHtcbiAgLndyYXBwZXIge1xuICAgICYuaGFzLWxhYmVsIHtcbiAgICAgIC5sYWJlbCB7XG4gICAgICAgIEBhcHBseSB0ZXh0LXdoaXRlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgYnVmZmVyLXB1bHNlIHtcbiAgMCUge1xuICAgIG9wYWNpdHk6IDAuMjtcbiAgICBsZWZ0OiAtMTAwJTtcbiAgfVxuICA1MCUge1xuICAgIG9wYWNpdHk6IDEuNTtcbiAgICBsZWZ0OiAtMTAwJTtcbiAgfVxuICA2MCUge1xuICAgIG9wYWNpdHk6IDAuNDtcbiAgICBsZWZ0OiAtNzUlO1xuICB9XG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDAuMjtcbiAgICBsZWZ0OiAtMTAwJTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIGJ1ZmZlci1wdWxzZSB7XG4gIDAlIHtcbiAgICBvcGFjaXR5OiAwLjI7XG4gICAgbGVmdDogLTEwMCU7XG4gIH1cbiAgNTAlIHtcbiAgICBvcGFjaXR5OiAxLjU7XG4gICAgbGVmdDogLTEwMCU7XG4gIH1cbiAgNjAlIHtcbiAgICBvcGFjaXR5OiAwLjQ7XG4gICAgbGVmdDogLTc1JTtcbiAgfVxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAwLjI7XG4gICAgbGVmdDogLTEwMCU7XG4gIH1cbn1cblxuQC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlLXJhaWwge1xuICAwJSB7XG4gICAgbGVmdDogLTM1JTtcbiAgICByaWdodDogMTAwJTtcbiAgfVxuXG4gIDYwJSB7XG4gICAgbGVmdDogMTAwJTtcbiAgICByaWdodDogLTkwJTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIGxlZnQ6IDEwMCU7XG4gICAgcmlnaHQ6IC05MCU7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBzbGlkZS1yYWlsIHtcbiAgMCUge1xuICAgIGxlZnQ6IC0zNSU7XG4gICAgcmlnaHQ6IDEwMCU7XG4gIH1cblxuICA2MCUge1xuICAgIGxlZnQ6IDEwMCU7XG4gICAgcmlnaHQ6IC05MCU7XG4gIH1cblxuICAxMDAlIHtcbiAgICBsZWZ0OiAxMDAlO1xuICAgIHJpZ2h0OiAtOTAlO1xuICB9XG59XG5cbkAtd2Via2l0LWtleWZyYW1lcyBjb2xsYXBzZS1zdHJva2Uge1xuICAwJSB7XG4gICAgc3Ryb2tlLWRhc2hhcnJheTogMXB4LCAyMDBweDtcbiAgICBzdHJva2UtZGFzaG9mZnNldDogMDtcbiAgfVxuXG4gIDUwJSB7XG4gICAgc3Ryb2tlLWRhc2hhcnJheTogMTAwcHgsIDIwMHB4O1xuICAgIHN0cm9rZS1kYXNob2Zmc2V0OiAtMTVweDtcbiAgfVxuXG4gIDEwMCUge1xuICAgIHN0cm9rZS1kYXNoYXJyYXk6IDEwMHB4LCAyMDBweDtcbiAgICBzdHJva2UtZGFzaG9mZnNldDogLTEyNXB4O1xuICB9XG59XG5cbkBrZXlmcmFtZXMgY29sbGFwc2Utc3Ryb2tlIHtcbiAgMCUge1xuICAgIHN0cm9rZS1kYXNoYXJyYXk6IDFweCwgMjAwcHg7XG4gICAgc3Ryb2tlLWRhc2hvZmZzZXQ6IDA7XG4gIH1cblxuICA1MCUge1xuICAgIHN0cm9rZS1kYXNoYXJyYXk6IDEwMHB4LCAyMDBweDtcbiAgICBzdHJva2UtZGFzaG9mZnNldDogLTE1cHg7XG4gIH1cblxuICAxMDAlIHtcbiAgICBzdHJva2UtZGFzaGFycmF5OiAxMDBweCwgMjAwcHg7XG4gICAgc3Ryb2tlLWRhc2hvZmZzZXQ6IC0xMjVweDtcbiAgfVxufVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgZ2VuZXJpYz1cIlQgPSB1bmRlZmluZWRcIiBzZXR1cD5cbmltcG9ydCB0eXBlIHsgQ29udGV4dENvbG9yc1R5cGUgfSBmcm9tICdAL2NvbnN0cy9jb2xvcnMnO1xuaW1wb3J0IFJ1aVByb2dyZXNzIGZyb20gJ0AvY29tcG9uZW50cy9wcm9ncmVzcy9SdWlQcm9ncmVzcy52dWUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BzPFQgPSB1bmRlZmluZWQ+IHtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBsb2FkaW5nPzogYm9vbGVhbjtcbiAgY29sb3I/OiBDb250ZXh0Q29sb3JzVHlwZTtcbiAgcm91bmRlZD86IGJvb2xlYW47XG4gIGVsZXZhdGlvbj86IG51bWJlciB8IHN0cmluZyB8IG51bGw7XG4gIHZhcmlhbnQ/OiAnZGVmYXVsdCcgfCAnb3V0bGluZWQnIHwgJ3RleHQnIHwgJ2ZhYicgfCAnbGlzdCc7XG4gIGljb24/OiBib29sZWFuO1xuICBhY3RpdmU/OiBib29sZWFuO1xuICBzaXplPzogJ3NtJyB8ICdsZyc7XG4gIHRhZz86ICdidXR0b24nIHwgJ2EnO1xuICB0eXBlPzogJ2J1dHRvbicgfCAnc3VibWl0JztcbiAgbW9kZWxWYWx1ZT86IFQ7XG4gIGhpZGVGb2N1c0luZGljYXRvcj86IGJvb2xlYW47XG59XG5cbmRlZmluZU9wdGlvbnMoe1xuICBuYW1lOiAnUnVpQnV0dG9uJyxcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbn0pO1xuXG5jb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wczxUPj4oKSwge1xuICBkaXNhYmxlZDogZmFsc2UsXG4gIGxvYWRpbmc6IGZhbHNlLFxuICBjb2xvcjogdW5kZWZpbmVkLFxuICByb3VuZGVkOiBmYWxzZSxcbiAgZWxldmF0aW9uOiBudWxsLFxuICB2YXJpYW50OiAnZGVmYXVsdCcsXG4gIGljb246IGZhbHNlLFxuICBhY3RpdmU6IGZhbHNlLFxuICBzaXplOiB1bmRlZmluZWQsXG4gIHRhZzogJ2J1dHRvbicsXG4gIHR5cGU6ICdidXR0b24nLFxuICBtb2RlbFZhbHVlOiB1bmRlZmluZWQsXG4gIGhpZGVGb2N1c0luZGljYXRvcjogZmFsc2UsXG59KTtcblxuY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPHtcbiAgKGU6ICd1cGRhdGU6bW9kZWwtdmFsdWUnLCB2YWx1ZT86IFQpOiB2b2lkO1xufT4oKTtcblxuY29uc3QgYnRuVmFsdWUgPSBjb21wdXRlZDxUIHwgdW5kZWZpbmVkPigoKSA9PiBwcm9wcy5tb2RlbFZhbHVlKTtcblxuY29uc3QgdXNlZEVsZXZhdGlvbiA9IGNvbXB1dGVkPG51bWJlciB8IHN0cmluZz4oKCkgPT4ge1xuICBpZiAocHJvcHMuZGlzYWJsZWQpXG4gICAgcmV0dXJuIDA7XG5cbiAgaWYgKHByb3BzLmVsZXZhdGlvbiAhPT0gbnVsbClcbiAgICByZXR1cm4gcHJvcHMuZWxldmF0aW9uO1xuXG4gIGlmIChwcm9wcy52YXJpYW50ID09PSAnZmFiJylcbiAgICByZXR1cm4gNjtcblxuICByZXR1cm4gMDtcbn0pO1xuXG5jb25zdCBzcGlubmVyU2l6ZSA9IGNvbXB1dGVkPG51bWJlcj4oKCkgPT4ge1xuICBjb25zdCBzaXplID0gcHJvcHMuc2l6ZTtcbiAgaWYgKHNpemUgPT09ICdsZycpXG4gICAgcmV0dXJuIDI2O1xuXG4gIGlmIChzaXplID09PSAnc20nKVxuICAgIHJldHVybiAxODtcblxuICByZXR1cm4gMjI7XG59KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxDb21wb25lbnRcbiAgICA6aXM9XCJ0YWdcIlxuICAgIDpjbGFzcz1cIltcbiAgICAgICRzdHlsZS5idG4sXG4gICAgICAkc3R5bGVbY29sb3IgPz8gJ2dyZXknXSxcbiAgICAgICRzdHlsZVtzaXplID8/ICcnXSxcbiAgICAgICRzdHlsZVt2YXJpYW50ID8/ICcnXSxcbiAgICAgIGBzaGFkb3ctJHt1c2VkRWxldmF0aW9ufWAsXG4gICAgICB7XG4gICAgICAgIFskc3R5bGUubG9hZGluZ106IGxvYWRpbmcsXG4gICAgICAgIFskc3R5bGUuX3JvdW5kZWRdOiByb3VuZGVkLFxuICAgICAgICBbJHN0eWxlLmljb25dOiBpY29uLFxuICAgICAgICBbJHN0eWxlLmFjdGl2ZV06IGFjdGl2ZSxcbiAgICAgICAgWyRzdHlsZS50ZXh0XTogdmFyaWFudCA9PT0gJ2xpc3QnLFxuICAgICAgICBbJHN0eWxlLmZsYXRdOiBoaWRlRm9jdXNJbmRpY2F0b3IsXG4gICAgICB9LFxuICAgIF1cIlxuICAgIDpkaXNhYmxlZD1cImRpc2FibGVkIHx8IGxvYWRpbmdcIlxuICAgIDp0eXBlPVwidGFnID09PSAnYnV0dG9uJyA/IHR5cGUgOiB1bmRlZmluZWRcIlxuICAgIHYtYmluZD1cIiRhdHRyc1wiXG4gICAgQGNsaWNrPVwiZW1pdCgndXBkYXRlOm1vZGVsLXZhbHVlJywgYnRuVmFsdWUpXCJcbiAgPlxuICAgIDxzbG90XG4gICAgICB2LWlmPVwiJHNsb3RzLnByZXBlbmRcIlxuICAgICAgbmFtZT1cInByZXBlbmRcIlxuICAgIC8+XG4gICAgPHNwYW5cbiAgICAgIHYtaWY9XCIkc2xvdHMuZGVmYXVsdFwiXG4gICAgICA6Y2xhc3M9XCIkc3R5bGUubGFiZWxcIlxuICAgID5cbiAgICAgIDxzbG90IC8+XG4gICAgPC9zcGFuPlxuICAgIDxzbG90XG4gICAgICB2LWlmPVwiJHNsb3RzLmFwcGVuZFwiXG4gICAgICBuYW1lPVwiYXBwZW5kXCJcbiAgICAvPlxuICAgIDxSdWlQcm9ncmVzc1xuICAgICAgdi1pZj1cImxvYWRpbmdcIlxuICAgICAgY2lyY3VsYXJcbiAgICAgIDpjbGFzcz1cIiRzdHlsZS5zcGlubmVyXCJcbiAgICAgIHZhcmlhbnQ9XCJpbmRldGVybWluYXRlXCJcbiAgICAgIHRoaWNrbmVzcz1cIjJcIlxuICAgICAgOnNpemU9XCJzcGlubmVyU2l6ZVwiXG4gICAgLz5cbiAgPC9Db21wb25lbnQ+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIiBtb2R1bGU+XG5AdXNlICdAL3N0eWxlcy9jb2xvcnMuc2NzcycgYXMgYztcbkB1c2UgJ3Nhc3M6bGlzdCc7XG5cbi5idG4ge1xuICBAYXBwbHkgdGV4dC1zbSBsZWFkaW5nLVsxLjVyZW1dIGZvbnQtbWVkaXVtIG91dGxpbmUgb3V0bGluZS0xIG91dGxpbmUtdHJhbnNwYXJlbnQgb3V0bGluZS1vZmZzZXQtWy0xcHhdIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC14LTIgcmVsYXRpdmU7XG4gIEBhcHBseSBweC00IHB5LTEuNSByb3VuZGVkIHRyYW5zaXRpb24tYWxsO1xuICBAYXBwbHkgZGlzYWJsZWQ6YmctYmxhY2svWy4xMl0gZGFyazpkaXNhYmxlZDpiZy13aGl0ZS9bLjEyXSBkaXNhYmxlZDp0ZXh0LXJ1aS10ZXh0LWRpc2FibGVkIGRpc2FibGVkOmFjdGl2ZTp0ZXh0LXJ1aS10ZXh0LWRpc2FibGVkIGZvY3VzLXZpc2libGU6cmluZy0yICN7IWltcG9ydGFudH07XG5cbiAgLmxhYmVsIHtcbiAgICBAYXBwbHkgaW5saW5lLWJsb2NrIHRleHQtbm93cmFwO1xuICB9XG5cbiAgJi5mbGF0IHtcbiAgICBAYXBwbHkgZm9jdXMtdmlzaWJsZTpyaW5nLTAgI3shaW1wb3J0YW50fTtcbiAgfVxuXG4gICYuX3JvdW5kZWQge1xuICAgIEBhcHBseSByb3VuZGVkLWZ1bGw7XG4gIH1cblxuICAmLnNtIHtcbiAgICBAYXBwbHkgcHgtMi41IHB5LTEgdGV4dC1bLjgxMjVyZW1dIGxlYWRpbmctWzEuMzc1cmVtXTtcbiAgfVxuXG4gICYubGcge1xuICAgIEBhcHBseSBweC02IHB5LTIgdGV4dC1iYXNlIGxlYWRpbmctWzEuNjI1cmVtXTtcbiAgfVxuXG4gIEBlYWNoICRjb2xvciBpbiBjLiRjb250ZXh0LWNvbG9ycyB7XG4gICAgJi4jeyRjb2xvcn0ge1xuICAgICAgQGFwcGx5IGJnLXJ1aS0jeyRjb2xvcn0gaG92ZXI6YmctcnVpLSN7JGNvbG9yfS1kYXJrZXIgYWN0aXZlOmJnLXJ1aS0jeyRjb2xvcn0tZGFya2VyLzkwIHRleHQtcnVpLWRhcmstdGV4dCByaW5nLXJ1aS0jeyRjb2xvcn0vNDAgZGFyazp0ZXh0LXJ1aS10ZXh0IGRhcms6cmluZy1ydWktI3skY29sb3J9LzYwO1xuXG4gICAgICAmLmFjdGl2ZSB7XG4gICAgICAgIEBhcHBseSBiZy1ydWktI3skY29sb3J9LWRhcmtlcjtcbiAgICAgIH1cblxuICAgICAgJi5vdXRsaW5lZCxcbiAgICAgICYudGV4dCB7XG4gICAgICAgIEBhcHBseSBiZy10cmFuc3BhcmVudCBob3ZlcjpiZy1ydWktI3skY29sb3J9LWxpZ2h0ZXIvWy4wNF0gYWN0aXZlOmJnLXJ1aS0jeyRjb2xvcn0tbGlnaHRlci8xMCB0ZXh0LXJ1aS0jeyRjb2xvcn07XG5cbiAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgIEBhcHBseSBiZy1ydWktI3skY29sb3J9LWxpZ2h0ZXIvMzA7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJi5vdXRsaW5lZCB7XG4gICAgICAgIEBhcHBseSBvdXRsaW5lLXJ1aS0jeyRjb2xvcn0vWzAuNV07XG4gICAgICB9XG5cbiAgICAgIEBpZiBsaXN0LmluZGV4KCh3YXJuaW5nLCBzdWNjZXNzLCBpbmZvKSwgJGNvbG9yKSB7XG4gICAgICAgIEBhcHBseSBkYXJrOnRleHQtcnVpLWxpZ2h0LXRleHQ7XG4gICAgICB9XG5cbiAgICAgIEBpZiBsaXN0LmluZGV4KChwcmltYXJ5LCBzZWNvbmRhcnkpLCAkY29sb3IpIHtcbiAgICAgICAgJi5vdXRsaW5lZCxcbiAgICAgICAgJi50ZXh0IHtcbiAgICAgICAgICAmLmFjdGl2ZSB7XG4gICAgICAgICAgICBAYXBwbHkgZGFyazpiZy1ydWktI3skY29sb3J9LWRhcmtlci82MCBkYXJrOnRleHQtcnVpLSN7JGNvbG9yfS1saWdodGVyO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICYuZ3JleSB7XG4gICAgQGFwcGx5IGJnLXJ1aS1ncmV5LTIwMCBob3ZlcjpiZy1ydWktZ3JleS0xMDAgYWN0aXZlOmJnLXJ1aS1ncmV5LTUwIHRleHQtcnVpLXRleHQgcmluZy1ydWktZ3JleS00MDA7XG4gICAgQGFwcGx5IGRhcms6YmctcnVpLWdyZXktMzAwIGRhcms6dGV4dC1ydWktbGlnaHQtdGV4dCBkYXJrOnJpbmctcnVpLWdyZXktNjAwO1xuXG4gICAgJi5hY3RpdmUge1xuICAgICAgQGFwcGx5IGJnLXJ1aS1ncmV5LTUwO1xuICAgIH1cblxuICAgICYub3V0bGluZWQsXG4gICAgJi50ZXh0IHtcbiAgICAgIEBhcHBseSBiZy10cmFuc3BhcmVudCBob3ZlcjpiZy1ibGFjay9bLjA0XSBhY3RpdmU6YmctYmxhY2svMTA7XG4gICAgICBAYXBwbHkgZGFyazphY3RpdmU6Ymctd2hpdGUvMTAgZGFyazpob3ZlcjpiZy13aGl0ZS9bLjA0XSBkYXJrOnRleHQtcnVpLXRleHQ7XG5cbiAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgQGFwcGx5IGJnLWJsYWNrLzEwIGRhcms6Ymctd2hpdGUvMzA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5vdXRsaW5lZCB7XG4gICAgICBAYXBwbHkgb3V0bGluZS1ydWktdGV4dDtcbiAgICB9XG5cbiAgICAmLnRleHQge1xuICAgICAgQGFwcGx5IHRleHQtcnVpLXRleHQtc2Vjb25kYXJ5O1xuICAgIH1cbiAgfVxuXG4gICYub3V0bGluZWQsXG4gICYudGV4dCB7XG4gICAgQGFwcGx5IGRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGRpc2FibGVkOmFjdGl2ZTpiZy10cmFuc3BhcmVudCAjeyFpbXBvcnRhbnR9O1xuICB9XG5cbiAgJi5vdXRsaW5lZCB7XG4gICAgQGFwcGx5IGRpc2FibGVkOm91dGxpbmUtcnVpLXRleHQtZGlzYWJsZWQ7XG4gIH1cblxuICAmLnRleHQge1xuICAgIEBhcHBseSBweC0yO1xuXG4gICAgJi5zbSB7XG4gICAgICBAYXBwbHkgcHgtMS41O1xuICAgIH1cblxuICAgICYubGcge1xuICAgICAgQGFwcGx5IHB4LTIuNTtcbiAgICB9XG4gIH1cblxuICAmLmZhYiB7XG4gICAgQGFwcGx5IHJvdW5kZWQtZnVsbCBweS0yO1xuXG4gICAgJi5sZyB7XG4gICAgICBAYXBwbHkgcHktMztcbiAgICB9XG5cbiAgICAmLnNtIHtcbiAgICAgIEBhcHBseSBweS0xLjUgcHgtMjtcbiAgICB9XG4gIH1cblxuICAmLmxpc3Qge1xuICAgIEBhcHBseSBwLTMgcm91bmRlZC1ub25lIHctZnVsbCBqdXN0aWZ5LXN0YXJ0IHRleHQtbGVmdDtcblxuICAgICYuc20ge1xuICAgICAgQGFwcGx5IHB4LTMgcHktMTtcbiAgICB9XG5cbiAgICAubGFiZWwge1xuICAgICAgQGFwcGx5IHctZnVsbDtcbiAgICB9XG4gIH1cblxuICAmLmljb24ge1xuICAgIEBhcHBseSByb3VuZGVkLWZ1bGwgcHgtMyBweS0zO1xuXG4gICAgJi5sZyB7XG4gICAgICBAYXBwbHkgcHgtNCBweS00O1xuICAgIH1cblxuICAgICYuc20ge1xuICAgICAgQGFwcGx5IHB4LTEgcHktMTtcbiAgICB9XG4gIH1cblxuICAmLmZhYi5pY29uIHtcbiAgICAmLnNtIHtcbiAgICAgIEBhcHBseSBweC0yIHB5LTI7XG4gICAgfVxuICB9XG5cbiAgJi5sb2FkaW5nIHtcbiAgICBAYXBwbHkgc3BhY2UteC0wO1xuXG4gICAgPiAqOm5vdCguc3Bpbm5lcikge1xuICAgICAgQGFwcGx5IG9wYWNpdHktMCBpbnZpc2libGU7XG4gICAgfVxuICB9XG5cbiAgLnNwaW5uZXIge1xuICAgIEBhcHBseSBhYnNvbHV0ZSB0b3AtMS8yIGxlZnQtMS8yIHRyYW5zZm9ybSAtdHJhbnNsYXRlLXgtMS8yIC10cmFuc2xhdGUteS0xLzI7XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHR5cGUgeyBDb250ZXh0Q29sb3JzVHlwZSB9IGZyb20gJ0AvY29uc3RzL2NvbG9ycyc7XG5pbXBvcnQgdHlwZSB7IFJ1aUljb25zIH0gZnJvbSAnQC9pY29ucyc7XG5pbXBvcnQgUnVpQnV0dG9uIGZyb20gJ0AvY29tcG9uZW50cy9idXR0b25zL2J1dHRvbi9SdWlCdXR0b24udnVlJztcbmltcG9ydCBSdWlJY29uIGZyb20gJ0AvY29tcG9uZW50cy9pY29ucy9SdWlJY29uLnZ1ZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvcHMge1xuICB0aXRsZT86IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIHR5cGU/OiBDb250ZXh0Q29sb3JzVHlwZTtcbiAgaWNvbj86IFJ1aUljb25zO1xuICB2YXJpYW50PzogJ2RlZmF1bHQnIHwgJ2ZpbGxlZCcgfCAnb3V0bGluZWQnO1xuICBhY3Rpb25UZXh0Pzogc3RyaW5nO1xuICBjbG9zZWFibGU/OiBib29sZWFuO1xufVxuXG5kZWZpbmVPcHRpb25zKHtcbiAgbmFtZTogJ1J1aUFsZXJ0JyxcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbn0pO1xuXG5jb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICB0aXRsZTogJycsXG4gIGRlc2NyaXB0aW9uOiAnJyxcbiAgdHlwZTogJ3ByaW1hcnknLFxuICBpY29uOiB1bmRlZmluZWQsXG4gIHZhcmlhbnQ6ICdkZWZhdWx0JyxcbiAgYWN0aW9uVGV4dDogJycsXG4gIGNsb3NlYWJsZTogZmFsc2UsXG59KTtcblxuY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPHtcbiAgKGU6ICdhY3Rpb24nKTogdm9pZDtcbiAgKGU6ICdjbG9zZScpOiB2b2lkO1xufT4oKTtcblxuY29uc3QgeyBpY29uLCB0eXBlIH0gPSB0b1JlZnMocHJvcHMpO1xuXG5jb25zdCB1c2VkSWNvbiA9IGNvbXB1dGVkPFJ1aUljb25zIHwgdW5kZWZpbmVkPigoKSA9PiB7XG4gIGNvbnN0IGljb25WYWwgPSBnZXQoaWNvbik7XG4gIGlmIChpY29uVmFsKVxuICAgIHJldHVybiBpY29uVmFsO1xuXG4gIGNvbnN0IGljb25NYXA6IFJlY29yZDxDb250ZXh0Q29sb3JzVHlwZSwgUnVpSWNvbnMgfCB1bmRlZmluZWQ+ID0ge1xuICAgIHByaW1hcnk6IHVuZGVmaW5lZCxcbiAgICBzZWNvbmRhcnk6IHVuZGVmaW5lZCxcbiAgICB3YXJuaW5nOiAnbHUtdHJpYW5nbGUtYWxlcnQnLFxuICAgIGluZm86ICdsdS1pbmZvJyxcbiAgICBlcnJvcjogJ2x1LWNpcmNsZS1hbGVydCcsXG4gICAgc3VjY2VzczogJ2x1LWNpcmNsZS1jaGVjaycsXG4gIH07XG5cbiAgcmV0dXJuIGljb25NYXBbZ2V0KHR5cGUpXTtcbn0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICRzdHlsZS5hbGVydCxcbiAgICAgICRzdHlsZVt0eXBlXSxcbiAgICAgICRzdHlsZVt2YXJpYW50XSxcbiAgICBdXCJcbiAgICB2LWJpbmQ9XCIkYXR0cnNcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggc3BhY2UteC0zIHB5LTEgZmxleC1ncm93XCI+XG4gICAgICA8ZGl2XG4gICAgICAgIHYtaWY9XCJ1c2VkSWNvblwiXG4gICAgICAgIDpjbGFzcz1cIiRzdHlsZS5pY29uXCJcbiAgICAgID5cbiAgICAgICAgPFJ1aUljb25cbiAgICAgICAgICA6bmFtZT1cInVzZWRJY29uXCJcbiAgICAgICAgICBzaXplPVwiMjJcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwic3BhY2UteS0xIGZsZXgtZ3Jvd1wiXG4gICAgICAgIDpjbGFzcz1cIiRzdHlsZS50ZXh0c1wiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICB2LWlmPVwiJHNsb3RzLnRpdGxlIHx8IHRpdGxlXCJcbiAgICAgICAgICA6Y2xhc3M9XCJ7XG4gICAgICAgICAgICAnZm9udC1tZWRpdW0nOiAhIXRpdGxlLFxuICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cInRpdGxlXCI+XG4gICAgICAgICAgICB7eyB0aXRsZSB9fVxuICAgICAgICAgIDwvc2xvdD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIHYtaWY9XCIkc2xvdHMuZGVmYXVsdCB8fCBkZXNjcmlwdGlvblwiXG4gICAgICAgICAgY2xhc3M9XCJ0ZXh0LWJvZHktMlwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2xvdD5cbiAgICAgICAgICAgIHt7IGRlc2NyaXB0aW9uIH19XG4gICAgICAgICAgPC9zbG90PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgdi1pZj1cImFjdGlvblRleHRcIj5cbiAgICAgIDxSdWlCdXR0b25cbiAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICBzaXplPVwic21cIlxuICAgICAgICA6Y29sb3I9XCJ2YXJpYW50ID09PSAnZmlsbGVkJyA/IHVuZGVmaW5lZCA6IHR5cGVcIlxuICAgICAgICA6Y2xhc3M9XCIkc3R5bGUuYWN0aW9uXCJcbiAgICAgICAgQGNsaWNrPVwiZW1pdCgnYWN0aW9uJylcIlxuICAgICAgPlxuICAgICAgICB7eyBhY3Rpb25UZXh0IH19XG4gICAgICA8L1J1aUJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IHYtaWY9XCJjbG9zZWFibGVcIj5cbiAgICAgIDxSdWlCdXR0b25cbiAgICAgICAgOmNvbG9yPVwidmFyaWFudCA9PT0gJ2ZpbGxlZCcgPyB1bmRlZmluZWQgOiB0eXBlXCJcbiAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgaWNvblxuICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgIDpjbGFzcz1cIiRzdHlsZS5jbG9zZVwiXG4gICAgICAgIEBjbGljaz1cImVtaXQoJ2Nsb3NlJylcIlxuICAgICAgPlxuICAgICAgICA8UnVpSWNvblxuICAgICAgICAgIG5hbWU9XCJsdS14XCJcbiAgICAgICAgICBzaXplPVwiMjBcIlxuICAgICAgICAvPlxuICAgICAgPC9SdWlCdXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgbW9kdWxlPlxuQHVzZSAnQC9zdHlsZXMvY29sb3JzLnNjc3MnIGFzIGM7XG5AdXNlICdzYXNzOmxpc3QnO1xuXG46Z2xvYmFsKC5kYXJrKSB7XG4gIC5hbGVydCB7XG4gICAgQGVhY2ggJGNvbG9yIGluIGMuJGNvbnRleHQtY29sb3JzIHtcbiAgICAgICYuI3skY29sb3J9IHtcbiAgICAgICAgJi5kZWZhdWx0IHtcbiAgICAgICAgICBAYXBwbHkgY29sb3ItbWl4LXN1cHBvcnRlZDpiZy1ydWktI3skY29sb3J9LXNoYWRlL1suOV0gYmctc2hhZGUtWy45XTtcbiAgICAgICAgfVxuXG4gICAgICAgICYuZGVmYXVsdCxcbiAgICAgICAgJi5vdXRsaW5lZCB7XG4gICAgICAgICAgLmljb24sXG4gICAgICAgICAgLnRleHRzLFxuICAgICAgICAgIC5hY3Rpb24sXG4gICAgICAgICAgLmNsb3NlIHtcbiAgICAgICAgICAgIEBhcHBseSBjb2xvci1taXgtc3VwcG9ydGVkOnRleHQtcnVpLSN7JGNvbG9yfS10aW50L1suNl0gdGV4dC10aW50LVsuNl07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLmljb24ge1xuICAgICAgICAgICAgQGFwcGx5IHRleHQtcnVpLSN7JGNvbG9yfTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGlmIGxpc3QuaW5kZXgoKHdhcm5pbmcsIHN1Y2Nlc3MsIGluZm8pLCAkY29sb3IpIHtcbiAgICAgICAgJi4jeyRjb2xvcn0ge1xuICAgICAgICAgICYuZmlsbGVkIHtcbiAgICAgICAgICAgIC5pY29uLFxuICAgICAgICAgICAgLnRleHRzLFxuICAgICAgICAgICAgLmFjdGlvbixcbiAgICAgICAgICAgIC5jbG9zZSB7XG4gICAgICAgICAgICAgIEBhcHBseSB0ZXh0LXJ1aS1saWdodC10ZXh0ICN7IWltcG9ydGFudH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5vdXRsaW5lZCB7XG4gICAgICBAYXBwbHkgYmctYmxhY2s7XG4gICAgfVxuICB9XG59XG5cbi5hbGVydCB7XG4gIEBhcHBseSBweC00IHB5LTIuNSByb3VuZGVkIGZsZXggc3BhY2UteC00O1xuXG4gIEBlYWNoICRjb2xvciBpbiBjLiRjb250ZXh0LWNvbG9ycyB7XG4gICAgJi4jeyRjb2xvcn0ge1xuICAgICAgJi5kZWZhdWx0IHtcbiAgICAgICAgQGFwcGx5IGNvbG9yLW1peC1zdXBwb3J0ZWQ6YmctcnVpLSN7JGNvbG9yfS10aW50L1suOV07XG4gICAgICAgIEBhcHBseSBiZy1ydWktI3skY29sb3J9IGJnLXRpbnQtWy45XTtcbiAgICAgIH1cblxuICAgICAgJi5maWxsZWQge1xuICAgICAgICBAYXBwbHkgYmctcnVpLSN7JGNvbG9yfTtcbiAgICAgIH1cblxuICAgICAgJi5vdXRsaW5lZCB7XG4gICAgICAgIEBhcHBseSBib3JkZXItcnVpLSN7JGNvbG9yfTtcbiAgICAgIH1cblxuICAgICAgJi5kZWZhdWx0LFxuICAgICAgJi5vdXRsaW5lZCB7XG4gICAgICAgIC5pY29uLFxuICAgICAgICAudGV4dHMsXG4gICAgICAgIC5hY3Rpb24sXG4gICAgICAgIC5jbG9zZSB7XG4gICAgICAgICAgQGFwcGx5IHRleHQtcnVpLSN7JGNvbG9yfSB0ZXh0LXNoYWRlLVsuNl07XG4gICAgICAgICAgQGFwcGx5IGNvbG9yLW1peC1zdXBwb3J0ZWQ6dGV4dC1ydWktI3skY29sb3J9LXNoYWRlL1suNl0gY29sb3ItbWl4LXN1cHBvcnRlZDphbmltYXRlLW5vbmU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmLmZpbGxlZCB7XG4gICAgLmljb24sXG4gICAgLnRleHRzLFxuICAgIC5hY3Rpb24sXG4gICAgLmNsb3NlIHtcbiAgICAgIEBhcHBseSB0ZXh0LXJ1aS1kYXJrLXRleHQgI3shaW1wb3J0YW50fTtcbiAgICB9XG4gIH1cblxuICAmLm91dGxpbmVkIHtcbiAgICBAYXBwbHkgYm9yZGVyIG0tWy0xcHhdIGJnLXdoaXRlO1xuICB9XG59XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBnZW5lcmljPVwiVCA9IHVuZGVmaW5lZFwiIHNldHVwPlxuaW1wb3J0IHR5cGUgeyBDb250ZXh0Q29sb3JzVHlwZSB9IGZyb20gJ0AvY29uc3RzL2NvbG9ycyc7XG5pbXBvcnQgeyBGcmFnbWVudCwgaXNWTm9kZSB9IGZyb20gJ3Z1ZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvcHM8VCA9IHVuZGVmaW5lZD4ge1xuICB2ZXJ0aWNhbD86IGJvb2xlYW47XG4gIGNvbG9yPzogQ29udGV4dENvbG9yc1R5cGU7XG4gIGFjdGl2ZUNvbG9yPzogQ29udGV4dENvbG9yc1R5cGU7XG4gIHZhcmlhbnQ/OiAnZGVmYXVsdCcgfCAnb3V0bGluZWQnIHwgJ3RleHQnO1xuICBzaXplPzogJ3NtJyB8ICdsZyc7XG4gIGdhcD86ICdzbScgfCAnbWQnIHwgJ2xnJztcbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICBtb2RlbFZhbHVlPzogVCB8IFRbXTtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xufVxuXG5kZWZpbmVPcHRpb25zKHtcbiAgbmFtZTogJ1J1aUJ1dHRvbkdyb3VwJyxcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbn0pO1xuXG5jb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wczxUPj4oKSwge1xuICB2ZXJ0aWNhbDogZmFsc2UsXG4gIGNvbG9yOiB1bmRlZmluZWQsXG4gIGFjdGl2ZUNvbG9yOiB1bmRlZmluZWQsXG4gIHZhcmlhbnQ6ICdkZWZhdWx0JyxcbiAgc2l6ZTogdW5kZWZpbmVkLFxuICBnYXA6IHVuZGVmaW5lZCxcbiAgcmVxdWlyZWQ6IGZhbHNlLFxuICBtb2RlbFZhbHVlOiB1bmRlZmluZWQsXG4gIGRpc2FibGVkOiBmYWxzZSxcbn0pO1xuXG5jb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8e1xuICAoZTogJ3VwZGF0ZTptb2RlbFZhbHVlJywgbW9kZWxWYWx1ZT86IFQgfCBUW10pOiB2b2lkO1xufT4oKTtcblxuY29uc3Qgc2xvdHMgPSB1c2VTbG90cygpO1xuY29uc3QgeyBtb2RlbFZhbHVlLCByZXF1aXJlZCwgZGlzYWJsZWQsIGNvbG9yLCB2YXJpYW50LCBzaXplIH0gPSB0b1JlZnMocHJvcHMpO1xuXG4vLyBXaGVuIHVzaW5nIGR5bmFtaWMgY29udGVudCB3aXRoIHYtZm9yIHRoZSBzbG90IGNvbnRlbnQgY2FuIGNvbnRhaW4gZnJhZ21lbnQsXG4vLyBHbyB0aHJvdWdoIHRoZSBmcmFnbWVudCBhbmQgYWx3YXlzIHJldHVybiBSdWlCdXR0b24gb25seVxuZnVuY3Rpb24gZ2V0Q2hpbGRyZW4oY2hpbGRyZW46IFZOb2RlW10pOiBWTm9kZVtdIHtcbiAgcmV0dXJuIGNoaWxkcmVuLmZsYXRNYXAoKGl0ZW0pID0+IHtcbiAgICBpZiAoaXRlbS50eXBlID09PSBGcmFnbWVudCAmJiBBcnJheS5pc0FycmF5KGl0ZW0uY2hpbGRyZW4pICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoID4gMClcbiAgICAgIHJldHVybiBnZXRDaGlsZHJlbihpdGVtLmNoaWxkcmVuLmZpbHRlcihpc1ZOb2RlKSk7XG5cbiAgICByZXR1cm4gW2l0ZW1dO1xuICB9KS5mbGF0KCk7XG59XG5cbmNvbnN0IGNoaWxkcmVuID0gY29tcHV0ZWQoKCkgPT4ge1xuICAvLyBpZiBncm91cCBpcyBkaXNhYmxlZCwgZGlzYWJsZSBjaGlsZCBidXR0b25zXG4gIGNvbnN0IGlzRGlzYWJsZWQgPSBnZXQoZGlzYWJsZWQpO1xuICBjb25zdCByb290Q29sb3IgPSBnZXQoY29sb3IpO1xuICBjb25zdCBzZWxlY3RlZFZhbHVlOiBUIHwgVFtdIHwgdW5kZWZpbmVkID0gZ2V0KG1vZGVsVmFsdWUpO1xuXG4gIGNvbnN0IHNsb3RDb250ZW50ID0gc2xvdHMuZGVmYXVsdD8uKCkgPz8gW107XG5cbiAgLy8gV2hlbiB1c2luZyBkeW5hbWljIGNvbnRlbnQgd2l0aCB2LWZvciB0aGUgc2xvdCBjb250ZW50IGlzIGEgc2luZ2xlIGZyYWdtZW50XG4gIC8vIGNvbnRhaW5pbmcgdGhlIGNoaWxkcmVuIGNvbXBvbmVudHMuXG4gIGNvbnN0IGNoaWxkcmVuID0gZ2V0Q2hpbGRyZW4oc2xvdENvbnRlbnQpO1xuXG4gIHJldHVybiBjaGlsZHJlbi5tYXAoKGNoaWxkLCBpKSA9PiB7XG4gICAgLy8gY2hpbGQgcHJvcHMgYXJlIGluIGtlYmFiLWNhc2UgaXQgc2VlbXNcbiAgICBjb25zdCB2YWx1ZSA9IGNoaWxkLnByb3BzPy5bJ21vZGVsLXZhbHVlJ107XG5cbiAgICBjaGlsZC5wcm9wcyA9IHtcbiAgICAgIC4uLmNoaWxkLnByb3BzLFxuICAgICAgYWN0aXZlOiBhY3RpdmVJdGVtKHZhbHVlID8/IGksIHNlbGVjdGVkVmFsdWUpLFxuICAgIH07XG5cbiAgICBpZiAoaXNEaXNhYmxlZClcbiAgICAgIGNoaWxkLnByb3BzLmRpc2FibGVkID0gdHJ1ZTtcblxuICAgIC8vIGlmIGdpdmVuIHJvb3QgY29sb3IsIHVzZSBpdFxuICAgIGlmIChyb290Q29sb3IpXG4gICAgICBjaGlsZC5wcm9wcy5jb2xvciA9IHJvb3RDb2xvcjtcblxuICAgIGlmIChjaGlsZC5wcm9wcy5hY3RpdmUgJiYgcHJvcHMuYWN0aXZlQ29sb3IpXG4gICAgICBjaGlsZC5wcm9wcy5jb2xvciA9IHByb3BzLmFjdGl2ZUNvbG9yO1xuXG4gICAgcmV0dXJuIGNoaWxkO1xuICB9KTtcbn0pO1xuXG5mdW5jdGlvbiBhY3RpdmVJdGVtKGlkOiBULCBzZWxlY3RlZD86IFQgfCBUW10pIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoc2VsZWN0ZWQpKVxuICAgIHJldHVybiBzZWxlY3RlZC5pbmNsdWRlcyhpZCk7XG5cbiAgcmV0dXJuIHNlbGVjdGVkID09PSBpZDtcbn1cblxuZnVuY3Rpb24gb25DbGljayhpZDogVCkge1xuICBjb25zdCBzZWxlY3RlZCA9IGdldChtb2RlbFZhbHVlKTtcbiAgY29uc3QgbWFuZGF0b3J5ID0gZ2V0KHJlcXVpcmVkKTtcbiAgaWYgKEFycmF5LmlzQXJyYXkoc2VsZWN0ZWQpKSB7XG4gICAgY29uc3QgaW5kZXggPSBzZWxlY3RlZC5pbmRleE9mKGlkKTtcbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgaWYgKCFtYW5kYXRvcnkgfHwgc2VsZWN0ZWQubGVuZ3RoICE9PSAxKVxuICAgICAgICBzZWxlY3RlZC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHNlbGVjdGVkLnB1c2goaWQpO1xuICAgIH1cbiAgICBlbWl0KCd1cGRhdGU6bW9kZWxWYWx1ZScsIHNlbGVjdGVkKTtcbiAgfVxuICBlbHNlIGlmIChtYW5kYXRvcnkpIHtcbiAgICBlbWl0KCd1cGRhdGU6bW9kZWxWYWx1ZScsIGlkKTtcbiAgfVxuICBlbHNlIHtcbiAgICBlbWl0KCd1cGRhdGU6bW9kZWxWYWx1ZScsIGFjdGl2ZUl0ZW0oaWQsIHNlbGVjdGVkKSA/IHVuZGVmaW5lZCA6IGlkKTtcbiAgfVxufVxuXG5jb25zdCBjc3MgPSB1c2VDc3NNb2R1bGUoKTtcbmNvbnN0IGNvbG9yQ2xhc3MgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMuY29sb3IgPyBjc3NbcHJvcHMuY29sb3JdIDogdW5kZWZpbmVkKSk7XG5jb25zdCB2YXJpYW50Q2xhc3MgPSBjb21wdXRlZCgoKSA9PlxuICBwcm9wcy52YXJpYW50ID8gY3NzW3Byb3BzLnZhcmlhbnRdIDogdW5kZWZpbmVkLFxuKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICBjc3Mud3JhcHBlcixcbiAgICAgIGNvbG9yQ2xhc3MsXG4gICAgICB2YXJpYW50Q2xhc3MsXG4gICAgICB7XG4gICAgICAgIFtjc3Mud3JhcHBlcl9fdmVydGljYWwgPz8gJyddOiB2ZXJ0aWNhbCxcbiAgICAgICAgW2Nzcy53cmFwcGVyX19ob3Jpem9udGFsID8/ICcnXTogIXZlcnRpY2FsLFxuICAgICAgICBbY3NzLnNlcGFyYXRlZCA/PyAnJ106ICEhZ2FwLFxuICAgICAgICBbY3NzW2BzZXBhcmF0ZWRfXyR7Z2FwfWBdID8/ICcnXTogISFnYXAsXG4gICAgICB9LFxuICAgIF1cIlxuICAgIHYtYmluZD1cIiRhdHRyc1wiXG4gID5cbiAgICA8Q29tcG9uZW50XG4gICAgICA6aXM9XCJjaGlsZFwiXG4gICAgICB2LWZvcj1cIihjaGlsZCwgaSkgaW4gY2hpbGRyZW5cIlxuICAgICAgOmtleT1cImlcIlxuICAgICAgOmNsYXNzPVwiY3NzLmJ1dHRvblwiXG4gICAgICA6c2l6ZT1cInNpemVcIlxuICAgICAgOnZhcmlhbnQ9XCJ2YXJpYW50XCJcbiAgICAgIEB1cGRhdGU6bW9kZWwtdmFsdWU9XCJvbkNsaWNrKCRldmVudCA/PyBpKVwiXG4gICAgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIiBtb2R1bGU+XG5AdXNlICdAL3N0eWxlcy9jb2xvcnMuc2NzcycgYXMgYztcblxuLndyYXBwZXIge1xuICBAYXBwbHkgaW5saW5lLWZsZXggcm91bmRlZCBkaXZpZGUteCBkaXZpZGUtcnVpLWdyZXktNDAwO1xuICBAYXBwbHkgb3V0bGluZSBvdXRsaW5lLTEgb3V0bGluZS10cmFuc3BhcmVudCBvdXRsaW5lLW9mZnNldC1bLTFweF07XG5cbiAgJjpub3QoLnNlcGFyYXRlZCkge1xuICAgIC5idXR0b24ge1xuICAgICAgQGFwcGx5IHJvdW5kZWQtbm9uZTtcbiAgICB9XG4gIH1cblxuICAmX192ZXJ0aWNhbCB7XG4gICAgQGFwcGx5IGlubGluZS1mbGV4IGZsZXgtY29sIGl0ZW1zLXN0YXJ0IGRpdmlkZS14LTAgZGl2aWRlLXk7XG5cbiAgICAuYnV0dG9uIHtcbiAgICAgIEBhcHBseSB3LWZ1bGw7XG4gICAgfVxuXG4gICAgJjpub3QoLnNlcGFyYXRlZCkgLmJ1dHRvbiB7XG4gICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgQGFwcGx5IHJvdW5kZWQtdDtcbiAgICAgIH1cblxuICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgQGFwcGx5IHJvdW5kZWQtYjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmX19ob3Jpem9udGFsIHtcbiAgICAmOm5vdCguc2VwYXJhdGVkKSAuYnV0dG9uIHtcbiAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICBAYXBwbHkgcm91bmRlZC1sO1xuICAgICAgfVxuXG4gICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBAYXBwbHkgcm91bmRlZC1yO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICYuc2VwYXJhdGVkIHtcbiAgICBAYXBwbHkgZGl2aWRlLXgtMCBkaXZpZGUteS0wIG91dGxpbmUtMDtcbiAgICAmX19zbSB7XG4gICAgICBAYXBwbHkgZ2FwLTI7XG4gICAgfVxuXG4gICAgJl9fbWQge1xuICAgICAgQGFwcGx5IGdhcC00O1xuICAgIH1cblxuICAgICZfX2xnIHtcbiAgICAgIEBhcHBseSBnYXAtNjtcbiAgICB9XG5cbiAgICAuYnV0dG9uIHtcbiAgICAgIEBhcHBseSBvdXRsaW5lLTE7XG4gICAgfVxuICB9XG5cbiAgLmJ1dHRvbiB7XG4gICAgQGFwcGx5IGJvcmRlci0wIG91dGxpbmUtMDtcblxuICAgICY6Zm9jdXMge1xuICAgICAgQGFwcGx5IHotWzFdO1xuICAgIH1cbiAgfVxuXG4gIEBlYWNoICRjb2xvciBpbiBjLiRjb250ZXh0LWNvbG9ycyB7XG4gICAgJi4jeyRjb2xvcn0ge1xuICAgICAgQGFwcGx5IGRpdmlkZS1ydWktI3skY29sb3J9LWRhcmtlcjtcblxuICAgICAgJi5vdXRsaW5lZCxcbiAgICAgICYudGV4dCB7XG4gICAgICAgIEBhcHBseSBkaXZpZGUtcnVpLSN7JGNvbG9yfS9bMC41XTtcbiAgICAgIH1cblxuICAgICAgJi5vdXRsaW5lZCB7XG4gICAgICAgIEBhcHBseSBvdXRsaW5lLXJ1aS0jeyRjb2xvcn0vWzAuNV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJi5vdXRsaW5lZCB7XG4gICAgQGFwcGx5IG91dGxpbmUtcnVpLXRleHQgZGl2aWRlLXJ1aS10ZXh0O1xuICB9XG59XG48L3N0eWxlPlxuIiwiaW1wb3J0IHR5cGUgeyBDb21wdXRlZFJlZiwgSW5qZWN0aW9uS2V5LCBSZWYgfSBmcm9tICd2dWUnO1xuXG5leHBvcnQgY29uc3QgQ2FsZW5kYXJTdGF0ZVN5bWJvbDogSW5qZWN0aW9uS2V5PFJ1aUNhbGVuZGFyU3RhdGU+ID0gU3ltYm9sLmZvcigncnVpOmNhbGVuZGFyJyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUnVpQ2FsZW5kYXJTdGF0ZSB7XG4gIHZpZXdNb250aDogUmVmPG51bWJlcj47XG4gIHZpZXdZZWFyOiBSZWY8bnVtYmVyPjtcbiAgc2VsZWN0ZWREYXRlOiBSZWY8RGF0ZSB8IHVuZGVmaW5lZD47XG4gIG1heERhdGU6IENvbXB1dGVkUmVmPERhdGUgfCB1bmRlZmluZWQ+O1xuICBtaW5EYXRlOiBDb21wdXRlZFJlZjxEYXRlIHwgdW5kZWZpbmVkPjtcbiAgaXNEYXJrOiBDb21wdXRlZFJlZjxib29sZWFuPjtcbiAgYWxsb3dFbXB0eTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNb250aFllYXJTZWxlY3Rpb24ge1xuICBtb250aDogbnVtYmVyO1xuICB5ZWFyOiBudW1iZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREYXlzT2ZXZWVrKGxvY2FsZTogSW50bC5Mb2NhbGVzQXJndW1lbnQgPSAnZW4tVVMnLCBmb3JtYXQ6ICduYXJyb3cnIHwgJ3Nob3J0JyA9ICduYXJyb3cnKTogc3RyaW5nW10ge1xuICBjb25zdCBkYXlzT2ZXZWVrOiBzdHJpbmdbXSA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IDc7IGkrKykge1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgyMDIxLCAwLCAzICsgaSk7IC8vIEphbiAzLCAyMDIxIHdhcyBhIFN1bmRheVxuICAgIGNvbnN0IGRheU5hbWUgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUsIHsgd2Vla2RheTogZm9ybWF0IH0pLmZvcm1hdChkYXRlKTtcbiAgICBkYXlzT2ZXZWVrLnB1c2goZm9ybWF0ID09PSAnbmFycm93JyA/IGRheU5hbWUgOiBkYXlOYW1lLmNoYXJBdCgwKSk7XG4gIH1cbiAgcmV0dXJuIGRheXNPZldlZWs7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTaG9ydE1vbnRoTmFtZXMobG9jYWxlOiBJbnRsLkxvY2FsZXNBcmd1bWVudCA9ICdlbi1VUycpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IG1vbnRoTmFtZXM6IHN0cmluZ1tdID0gW107XG4gIGZvciAobGV0IG1vbnRoID0gMDsgbW9udGggPCAxMjsgbW9udGgrKykge1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgyMDIxLCBtb250aCwgMSk7XG4gICAgY29uc3QgbW9udGhOYW1lID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IG1vbnRoOiAnc2hvcnQnIH0pLmZvcm1hdChkYXRlKTtcbiAgICBtb250aE5hbWVzLnB1c2gobW9udGhOYW1lKTtcbiAgfVxuICByZXR1cm4gbW9udGhOYW1lcztcbn1cbiIsIjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XG5pbXBvcnQgeyBnZXQsIGlzRGVmaW5lZCwgc2V0IH0gZnJvbSAnQHZ1ZXVzZS9jb3JlJztcbmltcG9ydCB7IGluamVjdCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5pbXBvcnQgeyBDYWxlbmRhclN0YXRlU3ltYm9sLCBnZXREYXlzT2ZXZWVrLCB0eXBlIFJ1aUNhbGVuZGFyU3RhdGUgfSBmcm9tICdAL2NvbXBvbmVudHMvY2FsZW5kYXIvc3RhdGUnO1xuXG5kZWZpbmVPcHRpb25zKHtcbiAgbmFtZTogJ1J1aUNhbGVuZGFyR3JpZCcsXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG59KTtcblxuY29uc3QgbW9kZWwgPSBkZWZpbmVNb2RlbDxEYXRlIHwgdW5kZWZpbmVkPigpO1xuXG5jb25zdCBwcm9wcyA9IGRlZmluZVByb3BzPHtcbiAgdmlld01vbnRoOiBudW1iZXI7XG4gIHZpZXdZZWFyOiBudW1iZXI7XG59PigpO1xuXG5jb25zdCBjYWxlbmRhclN0YXRlID0gaW5qZWN0PFJ1aUNhbGVuZGFyU3RhdGU+KENhbGVuZGFyU3RhdGVTeW1ib2wpIGFzIFJ1aUNhbGVuZGFyU3RhdGU7XG5cbi8vIEhlbHBlciBmdW5jdGlvbnMgdG8gcmVkdWNlIGR1cGxpY2F0aW9uXG5mdW5jdGlvbiBjcmVhdGVEYXRlS2V5KGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7ZGF0ZS5nZXRGdWxsWWVhcigpfS0keyhkYXRlLmdldE1vbnRoKCkgKyAxKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9LSR7ZGF0ZS5nZXREYXRlKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpfWA7XG59XG5cbi8vIFByZS1jYWxjdWxhdGVkIGNvbnN0YW50c1xuY29uc3QgZGF5c09mV2VlayA9IGdldERheXNPZldlZWsoKTtcbmNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcbmNvbnN0IHRvZGF5S2V5ID0gY3JlYXRlRGF0ZUtleSh0b2RheSk7XG5cbi8vIFByZS1jYWxjdWxhdGVkIGFycmF5cyBmb3IgcGVyZm9ybWFuY2UgLSB1c2luZyByZWZzIGZvciBiZXR0ZXIgY29udHJvbFxuY29uc3QgY2FsZW5kYXJEYXlzID0gcmVmPEFycmF5PHtcbiAgZGF0ZTogRGF0ZTtcbiAgaXNDdXJyZW50TW9udGg6IGJvb2xlYW47XG4gIGlzSW5SYW5nZTogYm9vbGVhbjtcbiAgaXNTZWxlY3RlZDogYm9vbGVhbjtcbiAgaXNUb2RheTogYm9vbGVhbjtcbiAga2V5OiBzdHJpbmc7XG4gIGRheU51bWJlcjogbnVtYmVyO1xufT4+KFtdKTtcblxuZnVuY3Rpb24gY3JlYXRlRGF5RGF0YShkYXRlOiBEYXRlLCBpc0N1cnJlbnRNb250aDogYm9vbGVhbiwgbW9kZWxWYWx1ZTogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQsIG1heERhdGVWYWx1ZTogRGF0ZSB8IG51bGwsIG1pbkRhdGVWYWx1ZTogRGF0ZSB8IG51bGwpIHtcbiAgY29uc3Qga2V5ID0gY3JlYXRlRGF0ZUtleShkYXRlKTtcbiAgcmV0dXJuIHtcbiAgICBkYXRlLFxuICAgIGlzQ3VycmVudE1vbnRoLFxuICAgIGlzSW5SYW5nZTogaXNEYXRlSW5SYW5nZUNoZWNrKGRhdGUsIG1heERhdGVWYWx1ZSwgbWluRGF0ZVZhbHVlKSxcbiAgICBpc1NlbGVjdGVkOiBtb2RlbFZhbHVlID8gaXNEYXRlU2VsZWN0ZWRDaGVjayhkYXRlLCBtb2RlbFZhbHVlKSA6IGZhbHNlLFxuICAgIGlzVG9kYXk6IGtleSA9PT0gdG9kYXlLZXksXG4gICAga2V5LFxuICAgIGRheU51bWJlcjogZGF0ZS5nZXREYXRlKCksXG4gIH07XG59XG5cbi8vIFByZS1jYWxjdWxhdGlvbiBmdW5jdGlvbnMgdXNpbmcgVnVlVXNlIGdldC9zZXRcbmZ1bmN0aW9uIGNhbGN1bGF0ZUNhbGVuZGFyRGF5cygpIHtcbiAgY29uc3QgZmlyc3REYXlPZk1vbnRoID0gbmV3IERhdGUocHJvcHMudmlld1llYXIsIHByb3BzLnZpZXdNb250aCwgMSk7XG4gIGNvbnN0IGxhc3REYXlPZk1vbnRoID0gbmV3IERhdGUocHJvcHMudmlld1llYXIsIHByb3BzLnZpZXdNb250aCArIDEsIDApO1xuICBjb25zdCBkYXlzSW5Nb250aCA9IGxhc3REYXlPZk1vbnRoLmdldERhdGUoKTtcbiAgY29uc3Qgc3RhcnRpbmdEYXlPZldlZWsgPSBmaXJzdERheU9mTW9udGguZ2V0RGF5KCk7XG5cbiAgY29uc3QgeyBtYXhEYXRlLCBtaW5EYXRlIH0gPSBjYWxlbmRhclN0YXRlO1xuICBjb25zdCBtb2RlbFZhbHVlID0gZ2V0KG1vZGVsKTtcbiAgY29uc3QgbWF4RGF0ZVZhbHVlID0gaXNEZWZpbmVkKG1heERhdGUpID8gZ2V0KG1heERhdGUpIDogbnVsbDtcbiAgY29uc3QgbWluRGF0ZVZhbHVlID0gaXNEZWZpbmVkKG1pbkRhdGUpID8gZ2V0KG1pbkRhdGUpIDogbnVsbDtcblxuICBjb25zdCByZXN1bHQgPSBbXTtcblxuICAvLyBQcmV2aW91cyBtb250aCBkYXlzXG4gIGlmIChzdGFydGluZ0RheU9mV2VlayA+IDApIHtcbiAgICBjb25zdCBwcmV2TW9udGhMYXN0RGF5ID0gbmV3IERhdGUocHJvcHMudmlld1llYXIsIHByb3BzLnZpZXdNb250aCwgMCkuZ2V0RGF0ZSgpO1xuICAgIGZvciAobGV0IGkgPSBzdGFydGluZ0RheU9mV2VlayAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUocHJvcHMudmlld1llYXIsIHByb3BzLnZpZXdNb250aCAtIDEsIHByZXZNb250aExhc3REYXkgLSBpLCAxMiwgMCwgMCwgMCk7XG4gICAgICByZXN1bHQucHVzaChjcmVhdGVEYXlEYXRhKGRhdGUsIGZhbHNlLCBtb2RlbFZhbHVlLCBtYXhEYXRlVmFsdWUsIG1pbkRhdGVWYWx1ZSkpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEN1cnJlbnQgbW9udGggZGF5c1xuICBmb3IgKGxldCBpID0gMTsgaSA8PSBkYXlzSW5Nb250aDsgaSsrKSB7XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHByb3BzLnZpZXdZZWFyLCBwcm9wcy52aWV3TW9udGgsIGksIDEyLCAwLCAwLCAwKTtcbiAgICByZXN1bHQucHVzaChjcmVhdGVEYXlEYXRhKGRhdGUsIHRydWUsIG1vZGVsVmFsdWUsIG1heERhdGVWYWx1ZSwgbWluRGF0ZVZhbHVlKSk7XG4gIH1cblxuICAvLyBOZXh0IG1vbnRoIGRheXNcbiAgY29uc3QgdG90YWxEYXlzU29GYXIgPSByZXN1bHQubGVuZ3RoO1xuICBjb25zdCBkYXlzVG9BZGQgPSA0MiAtIHRvdGFsRGF5c1NvRmFyO1xuICBmb3IgKGxldCBpID0gMTsgaSA8PSBkYXlzVG9BZGQ7IGkrKykge1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShwcm9wcy52aWV3WWVhciwgcHJvcHMudmlld01vbnRoICsgMSwgaSwgMTIsIDAsIDAsIDApO1xuICAgIHJlc3VsdC5wdXNoKGNyZWF0ZURheURhdGEoZGF0ZSwgZmFsc2UsIG1vZGVsVmFsdWUsIG1heERhdGVWYWx1ZSwgbWluRGF0ZVZhbHVlKSk7XG4gIH1cblxuICBzZXQoY2FsZW5kYXJEYXlzLCByZXN1bHQpO1xufVxuXG5mdW5jdGlvbiBpc0RhdGVJblJhbmdlQ2hlY2soZGF0ZTogRGF0ZSwgbWF4RGF0ZVZhbHVlOiBEYXRlIHwgbnVsbCwgbWluRGF0ZVZhbHVlOiBEYXRlIHwgbnVsbCk6IGJvb2xlYW4ge1xuICBpZiAobWF4RGF0ZVZhbHVlICYmIGRhdGUgPiBtYXhEYXRlVmFsdWUpXG4gICAgcmV0dXJuIGZhbHNlO1xuICBpZiAobWluRGF0ZVZhbHVlICYmIGRhdGUgPCBtaW5EYXRlVmFsdWUpXG4gICAgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gaXNEYXRlU2VsZWN0ZWRDaGVjayhkYXRlOiBEYXRlLCBtb2RlbFZhbHVlOiBEYXRlKTogYm9vbGVhbiB7XG4gIHJldHVybiBkYXRlLmdldEZ1bGxZZWFyKCkgPT09IG1vZGVsVmFsdWUuZ2V0RnVsbFllYXIoKVxuICAgICYmIGRhdGUuZ2V0TW9udGgoKSA9PT0gbW9kZWxWYWx1ZS5nZXRNb250aCgpXG4gICAgJiYgZGF0ZS5nZXREYXRlKCkgPT09IG1vZGVsVmFsdWUuZ2V0RGF0ZSgpO1xufVxuXG4vLyBJbml0aWFsIGNhbGN1bGF0aW9uXG5jYWxjdWxhdGVDYWxlbmRhckRheXMoKTtcblxuLy8gV2F0Y2hlcnMgZm9yIHJlY2FsY3VsYXRpb24gb25seSB3aGVuIG5lZWRlZFxud2F0Y2goWygpID0+IHByb3BzLnZpZXdNb250aCwgKCkgPT4gcHJvcHMudmlld1llYXJdLCAoKSA9PiB7XG4gIGNhbGN1bGF0ZUNhbGVuZGFyRGF5cygpO1xufSk7XG5cbndhdGNoKG1vZGVsLCAoKSA9PiB7XG4gIGNhbGN1bGF0ZUNhbGVuZGFyRGF5cygpO1xufSk7XG5cbndhdGNoKFsoKSA9PiBjYWxlbmRhclN0YXRlLm1heERhdGUsICgpID0+IGNhbGVuZGFyU3RhdGUubWluRGF0ZV0sICgpID0+IHtcbiAgY2FsY3VsYXRlQ2FsZW5kYXJEYXlzKCk7XG59LCB7IGRlZXA6IHRydWUgfSk7XG5cbmZ1bmN0aW9uIHNlbGVjdERhdGUoZGF5RGF0YTogeyBkYXRlOiBEYXRlOyBpc0luUmFuZ2U6IGJvb2xlYW47IGlzU2VsZWN0ZWQ6IGJvb2xlYW4gfSkge1xuICBpZiAoIWRheURhdGEuaXNJblJhbmdlKVxuICAgIHJldHVybjtcblxuICBsZXQgdXBkYXRlTW9kZWw6IERhdGUgfCB1bmRlZmluZWQ7XG5cbiAgaWYgKGRheURhdGEuaXNTZWxlY3RlZCAmJiBjYWxlbmRhclN0YXRlLmFsbG93RW1wdHkpIHtcbiAgICB1cGRhdGVNb2RlbCA9IHVuZGVmaW5lZDtcbiAgfVxuICBlbHNlIGlmIChpc0RlZmluZWQobW9kZWwpKSB7XG4gICAgY29uc3QgbW9kZWxWYWx1ZSA9IGdldChtb2RlbCk7XG4gICAgY29uc3QgbmV3RGF0ZSA9IG5ldyBEYXRlKGRheURhdGEuZGF0ZSk7XG4gICAgbmV3RGF0ZS5zZXRIb3Vycyhtb2RlbFZhbHVlLmdldEhvdXJzKCkpO1xuICAgIG5ld0RhdGUuc2V0TWludXRlcyhtb2RlbFZhbHVlLmdldE1pbnV0ZXMoKSk7XG4gICAgbmV3RGF0ZS5zZXRTZWNvbmRzKG1vZGVsVmFsdWUuZ2V0U2Vjb25kcygpKTtcbiAgICB1cGRhdGVNb2RlbCA9IG5ld0RhdGU7XG4gIH1cbiAgZWxzZSB7XG4gICAgdXBkYXRlTW9kZWwgPSBuZXcgRGF0ZShkYXlEYXRhLmRhdGUpO1xuICB9XG4gIHNldChtb2RlbCwgdXBkYXRlTW9kZWwpO1xufVxuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWdyaWRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItd2Vla2RheXNcIj5cbiAgICAgIDxzcGFuXG4gICAgICAgIHYtZm9yPVwiZGF5IGluIGRheXNPZldlZWtcIlxuICAgICAgICA6a2V5PVwiZGF5XCJcbiAgICAgICAgY2xhc3M9XCJ3ZWVrZGF5LWxhYmVsXCJcbiAgICAgID5cbiAgICAgICAge3sgZGF5IH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItZGF5c1wiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB2LWZvcj1cImRheURhdGEgaW4gZ2V0KGNhbGVuZGFyRGF5cylcIlxuICAgICAgICA6a2V5PVwiZGF5RGF0YS5rZXlcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgOmRhdGEtaWQ9XCJkYXlEYXRhLmtleVwiXG4gICAgICAgIGNsYXNzPVwiaC05IHctZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LXNtIHJvdW5kZWQtZnVsbCBteC1hdXRvIG1heC13LVsyLjI1cmVtXSB0cmFuc2l0aW9uLWNvbG9ycyBkdXJhdGlvbi0xNTAgZWFzZS1pbi1vdXQgYm9yZGVyLW5vbmUgb3V0bGluZS1ub25lIGN1cnNvci1wb2ludGVyIGZvY3VzOnJpbmctMiBmb2N1czpyaW5nLXJ1aS1wcmltYXJ5IGZvY3VzOnJpbmctb3BhY2l0eS01MFwiXG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICB7XG4gICAgICAgICAgICAnYmctcnVpLXByaW1hcnkgdGV4dC13aGl0ZSBob3ZlcjpiZy1ydWktcHJpbWFyeS85MCBkYXJrOmhvdmVyOmJnLXJ1aS1wcmltYXJ5LzkwJzogZGF5RGF0YS5pc1NlbGVjdGVkLFxuICAgICAgICAgICAgJ3RleHQtZ3JheS00MDAgZGFyazp0ZXh0LWdyYXktNjAwJzogIWRheURhdGEuaXNDdXJyZW50TW9udGggJiYgIWRheURhdGEuaXNTZWxlY3RlZCxcbiAgICAgICAgICAgICd0ZXh0LWdyYXktNzAwIGhvdmVyOmJnLWdyYXktMTAwIGRhcms6dGV4dC1ncmF5LTMwMCBkYXJrOmhvdmVyOmJnLWdyYXktNzAwJzogZGF5RGF0YS5pc0N1cnJlbnRNb250aCAmJiAhZGF5RGF0YS5pc1NlbGVjdGVkICYmIGRheURhdGEuaXNJblJhbmdlLFxuICAgICAgICAgICAgJ29wYWNpdHktNTAgY3Vyc29yLW5vdC1hbGxvd2VkIGhvdmVyOmJnLXRyYW5zcGFyZW50JzogIWRheURhdGEuaXNJblJhbmdlLFxuICAgICAgICAgICAgJ3RvZGF5LWluZGljYXRvcic6IGRheURhdGEuaXNUb2RheSAmJiAhZGF5RGF0YS5pc1NlbGVjdGVkLFxuICAgICAgICAgIH0sXG4gICAgICAgIF1cIlxuICAgICAgICA6ZGlzYWJsZWQ9XCIhZGF5RGF0YS5pc0luUmFuZ2VcIlxuICAgICAgICBAY2xpY2suc3RvcD1cInNlbGVjdERhdGUoZGF5RGF0YSlcIlxuICAgICAgPlxuICAgICAgICB7eyBkYXlEYXRhLmRheU51bWJlciB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbi5jYWxlbmRhci1ncmlkIHtcbiAgQGFwcGx5IHctZnVsbCBwLTIgcHQtMDtcbn1cblxuLmNhbGVuZGFyLXdlZWtkYXlzIHtcbiAgQGFwcGx5IGdyaWQgZ3JpZC1jb2xzLTcgcGItMjtcbn1cblxuLndlZWtkYXktbGFiZWwge1xuICBAYXBwbHkgcHktMiB0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtY2VudGVyIHRleHQtZ3JheS01MDAgZGFyazp0ZXh0LWdyYXktNDAwO1xufVxuXG4uY2FsZW5kYXItZGF5cyB7XG4gIEBhcHBseSBncmlkIGdyaWQtY29scy03IGdhcC0wLjU7XG59XG5cbi50b2RheS1pbmRpY2F0b3Ige1xuICBAYXBwbHkgcmVsYXRpdmU7XG5cbiAgJjphZnRlciB7XG4gICAgY29udGVudDogJyc7XG4gICAgQGFwcGx5IGFic29sdXRlIHNpemUtMSByb3VuZGVkLWZ1bGwgYm90dG9tLTEgbGVmdC0xLzIgdHJhbnNmb3JtIC10cmFuc2xhdGUteC0xLzIgYmctcnVpLXByaW1hcnk7XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoXG4gIGRlZmluZVByb3BzPHtcbiAgICBlcnJvck1lc3NhZ2VzPzogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgc3VjY2Vzc01lc3NhZ2VzPzogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgaGludD86IHN0cmluZztcbiAgfT4oKSxcbiAge1xuICAgIGVycm9yTWVzc2FnZXM6ICgpID0+IFtdLFxuICAgIHN1Y2Nlc3NNZXNzYWdlczogKCkgPT4gW10sXG4gICAgaGludDogJycsXG4gIH0sXG4pO1xuXG5jb25zdCB7IGVycm9yTWVzc2FnZXMsIHN1Y2Nlc3NNZXNzYWdlcyB9ID0gdG9SZWZzKHByb3BzKTtcblxuY29uc3Qge1xuICBmb3JtYXR0ZWRFcnJvck1lc3NhZ2VzLFxuICBmb3JtYXR0ZWRTdWNjZXNzTWVzc2FnZXMsXG4gIGhhc0Vycm9yLFxuICBoYXNTdWNjZXNzLFxufSA9IHVzZUZvcm1UZXh0RGV0YWlsKGVycm9yTWVzc2FnZXMsIHN1Y2Nlc3NNZXNzYWdlcyk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8VHJhbnNpdGlvbkdyb3VwXG4gICAgdGFnPVwiZGl2XCJcbiAgICBjbGFzcz1cImRldGFpbHMgbWluLWgtWzEuNXJlbV1cIlxuICAgIGVudGVyLWZyb20tY2xhc3M9XCJvcGFjaXR5LTAgLXRyYW5zbGF0ZS15LTIgaC0wXCJcbiAgICBlbnRlci1hY3RpdmUtY2xhc3M9XCJ0cmFuc2Zvcm0gdHJhbnNpdGlvblwiXG4gICAgZW50ZXItdG8tY2xhc3M9XCJvcGFjaXR5LTEwMCB0cmFuc2xhdGUteS0wXCJcbiAgICBsZWF2ZS1mcm9tLWNsYXNzPVwib3BhY2l0eS0xMDAgLXRyYW5zbGF0ZS15LTJcIlxuICAgIGxlYXZlLWFjdGl2ZS1jbGFzcz1cInRyYW5zZm9ybSB0cmFuc2l0aW9uXCJcbiAgICBsZWF2ZS10by1jbGFzcz1cIm9wYWNpdHktMCAtdHJhbnNsYXRlLXktMiBoLTBcIlxuICAgIGFwcGVhclxuICA+XG4gICAgPGRpdlxuICAgICAgdi1pZj1cImhhc0Vycm9yXCJcbiAgICAgIGtleT1cImVycm9yXCJcbiAgICAgIGNsYXNzPVwidGV4dC1ydWktZXJyb3IgdGV4dC1jYXB0aW9uXCJcbiAgICA+XG4gICAgICB7eyBmb3JtYXR0ZWRFcnJvck1lc3NhZ2VzWzBdIH19XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgdi1lbHNlLWlmPVwiaGFzU3VjY2Vzc1wiXG4gICAgICBrZXk9XCJzdWNjZXNzXCJcbiAgICAgIGNsYXNzPVwidGV4dC1ydWktc3VjY2VzcyB0ZXh0LWNhcHRpb25cIlxuICAgID5cbiAgICAgIHt7IGZvcm1hdHRlZFN1Y2Nlc3NNZXNzYWdlc1swXSB9fVxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIHYtZWxzZS1pZj1cImhpbnRcIlxuICAgICAga2V5PVwiaGludFwiXG4gICAgICBjbGFzcz1cInRleHQtcnVpLXRleHQtc2Vjb25kYXJ5IHRleHQtY2FwdGlvblwiXG4gICAgPlxuICAgICAge3sgaGludCB9fVxuICAgIDwvZGl2PlxuICA8L1RyYW5zaXRpb25Hcm91cD5cbjwvdGVtcGxhdGU+XG4iLCI8c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuaW1wb3J0IFJ1aUZvcm1UZXh0RGV0YWlsIGZyb20gJ0AvY29tcG9uZW50cy9oZWxwZXJzL1J1aUZvcm1UZXh0RGV0YWlsLnZ1ZSc7XG5pbXBvcnQgeyB0eXBlIFBvcHBlck9wdGlvbnMsIHVzZVBvcHBlciB9IGZyb20gJ0AvY29tcG9zYWJsZXMvcG9wcGVyJztcblxuZXhwb3J0IGludGVyZmFjZSBNZW51UHJvcHMge1xuICBtb2RlbFZhbHVlPzogYm9vbGVhbjtcbiAgb3Blbk9uSG92ZXI/OiBib29sZWFuO1xuICBmdWxsV2lkdGg/OiBib29sZWFuO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIG9wZW5EZWxheT86IG51bWJlcjtcbiAgY2xvc2VEZWxheT86IG51bWJlcjtcbiAgcG9wcGVyPzogUG9wcGVyT3B0aW9ucztcbiAgd3JhcHBlckNsYXNzPzogc3RyaW5nIHwgb2JqZWN0IHwgc3RyaW5nW107XG4gIG1lbnVDbGFzcz86IHN0cmluZyB8IG9iamVjdCB8IHN0cmluZ1tdO1xuICBjbG9zZU9uQ29udGVudENsaWNrPzogYm9vbGVhbjtcbiAgcGVyc2lzdE9uQWN0aXZhdG9yQ2xpY2s/OiBib29sZWFuO1xuICBoaW50Pzogc3RyaW5nO1xuICBlcnJvck1lc3NhZ2VzPzogc3RyaW5nIHwgc3RyaW5nW107XG4gIHN1Y2Nlc3NNZXNzYWdlcz86IHN0cmluZyB8IHN0cmluZ1tdO1xuICBzaG93RGV0YWlscz86IGJvb2xlYW47XG4gIGRlbnNlPzogYm9vbGVhbjtcbiAgcGVyc2lzdGVudD86IGJvb2xlYW47XG4gIGRpc2FibGVBdXRvRm9jdXM/OiBib29sZWFuO1xufVxuXG5kZWZpbmVPcHRpb25zKHtcbiAgbmFtZTogJ1J1aU1lbnUnLFxufSk7XG5cbmNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPE1lbnVQcm9wcz4oKSwge1xuICBtb2RlbFZhbHVlOiBmYWxzZSxcbiAgb3Blbk9uSG92ZXI6IGZhbHNlLFxuICBkaXNhYmxlZDogZmFsc2UsXG4gIGZ1bGxXaWR0aDogZmFsc2UsXG4gIG9wZW5EZWxheTogMCxcbiAgY2xvc2VEZWxheTogMCxcbiAgcG9wcGVyOiAoKSA9PiAoe30pLFxuICB3cmFwcGVyQ2xhc3M6ICcnLFxuICBtZW51Q2xhc3M6ICcnLFxuICBjbG9zZU9uQ29udGVudENsaWNrOiBmYWxzZSxcbiAgcGVyc2lzdE9uQWN0aXZhdG9yQ2xpY2s6IGZhbHNlLFxuICBoaW50OiB1bmRlZmluZWQsXG4gIGVycm9yTWVzc2FnZXM6ICgpID0+IFtdLFxuICBzdWNjZXNzTWVzc2FnZXM6ICgpID0+IFtdLFxuICBwZXJzaXN0ZW50OiBmYWxzZSxcbiAgZGlzYWJsZUF1dG9Gb2N1czogZmFsc2UsXG59KTtcblxuY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPHtcbiAgKGU6ICd1cGRhdGU6bW9kZWwtdmFsdWUnLCB2YWx1ZTogYm9vbGVhbik6IHZvaWQ7XG59PigpO1xuXG5jb25zdCB7XG4gIG1vZGVsVmFsdWUsXG4gIGNsb3NlRGVsYXksXG4gIG9wZW5EZWxheSxcbiAgcG9wcGVyLFxuICBkaXNhYmxlZCxcbiAgcGVyc2lzdE9uQWN0aXZhdG9yQ2xpY2ssXG4gIGNsb3NlT25Db250ZW50Q2xpY2ssXG4gIG9wZW5PbkhvdmVyLFxuICBlcnJvck1lc3NhZ2VzLFxuICBzdWNjZXNzTWVzc2FnZXMsXG4gIHBlcnNpc3RlbnQsXG4gIGRpc2FibGVBdXRvRm9jdXMsXG59ID0gdG9SZWZzKHByb3BzKTtcblxuY29uc3Qge1xuICByZWZlcmVuY2U6IGFjdGl2YXRvcixcbiAgcG9wcGVyOiBtZW51LFxuICBvcGVuLFxuICBwb3BwZXJFbnRlcixcbiAgbGVhdmVQZW5kaW5nLFxuICBvbkxlYXZlUGVuZGluZyxcbiAgb25PcGVuLFxuICBvbkNsb3NlLFxuICBvblBvcHBlckxlYXZlLFxuICB1cGRhdGVQb3BwZXIsXG59ID0gdXNlUG9wcGVyKHBvcHBlciwgZGlzYWJsZWQsIG9wZW5EZWxheSwgY2xvc2VEZWxheSk7XG5cbmNvbnN0IHsgd2lkdGggfSA9IHVzZUVsZW1lbnRTaXplKGFjdGl2YXRvcik7XG5cbmNvbnN0IGNsaWNrID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcbmNvbnN0IG1lbnVDb250ZW50ID0gcmVmPEhUTUxFbGVtZW50PigpO1xuXG5jb25zdCBGT0NVU0FCTEVfRUxFTUVOVFNfU0VMRUNUT1IgPSAnYnV0dG9uLCBbaHJlZl0sIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBbdGFiaW5kZXhdOm5vdChbdGFiaW5kZXg9XCItMVwiXSknO1xuXG5mdW5jdGlvbiBmb2N1c01lbnUoKSB7XG4gIGlmIChnZXQoZGlzYWJsZUF1dG9Gb2N1cykpXG4gICAgcmV0dXJuO1xuXG4gIG5leHRUaWNrKCgpID0+IHtcbiAgICBjb25zdCBjb250ZW50ID0gZ2V0KG1lbnVDb250ZW50KTtcbiAgICBpZiAoIWNvbnRlbnQpXG4gICAgICByZXR1cm47XG5cbiAgICAvLyBGb2N1cyBvbiB0aGUgbWVudSBjb250YWluZXIgaXRzZWxmXG4gICAgY29udGVudC5mb2N1cygpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gb25MZWF2ZShldmVudD86IEtleWJvYXJkRXZlbnQpIHtcbiAgaWYgKCFnZXQob3BlbikpXG4gICAgcmV0dXJuO1xuICBvbkNsb3NlKCk7XG4gIHNldChjbGljaywgZmFsc2UpO1xuICBldmVudD8uc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgLy8gUmV0dXJuIGZvY3VzIHRvIGFjdGl2YXRvciB3aGVuIG1lbnUgY2xvc2VzXG4gIGlmICghZ2V0KGRpc2FibGVBdXRvRm9jdXMpKSB7XG4gICAgbmV4dFRpY2soKCkgPT4ge1xuICAgICAgY29uc3QgYWN0aXZhdG9yRWwgPSBnZXQoYWN0aXZhdG9yKTtcbiAgICAgIGlmIChhY3RpdmF0b3JFbCkge1xuICAgICAgICBjb25zdCBmb2N1c2FibGVFbCA9IGFjdGl2YXRvckVsLnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KFxuICAgICAgICAgIEZPQ1VTQUJMRV9FTEVNRU5UU19TRUxFQ1RPUixcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGZvY3VzYWJsZUVsKSB7XG4gICAgICAgICAgZm9jdXNhYmxlRWwuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNoZWNrQ2xpY2soKSB7XG4gIGlmIChnZXQob3BlbikgJiYgZ2V0KGNsaWNrKSkge1xuICAgIGlmICghZ2V0KHBlcnNpc3RPbkFjdGl2YXRvckNsaWNrKSlcbiAgICAgIG9uTGVhdmUoKTtcbiAgfVxuICBlbHNlIHtcbiAgICBvbk9wZW4oKTtcbiAgICBzZXQoY2xpY2ssIHRydWUpO1xuICB9XG59XG5cbndhdGNoKG1vZGVsVmFsdWUsICh2YWx1ZSkgPT4ge1xuICBpZiAodmFsdWUpIHtcbiAgICBvbk9wZW4oKTtcbiAgICBzZXQoY2xpY2ssIHRydWUpO1xuICB9XG4gIGVsc2Uge1xuICAgIG9uTGVhdmUoKTtcbiAgfVxufSk7XG5cbndhdGNoKG9wZW4sIChvcGVuKSA9PiB7XG4gIGVtaXQoJ3VwZGF0ZTptb2RlbC12YWx1ZScsIG9wZW4pO1xuICBpZiAob3Blbikge1xuICAgIGZvY3VzTWVudSgpO1xuICB9XG59KTtcblxub25DbGlja091dHNpZGUobWVudSwgKCkgPT4ge1xuICBpZiAoZ2V0KG9wZW4pICYmICFnZXQocGVyc2lzdGVudCkpXG4gICAgb25MZWF2ZSgpO1xufSwgeyBpZ25vcmU6IFthY3RpdmF0b3JdIH0pO1xuXG5jb25zdCBiYXNlTWVudUF0dHJzID0gY29tcHV0ZWQoKCkgPT4ge1xuICBpZiAoZ2V0KGRpc2FibGVkKSlcbiAgICByZXR1cm4ge307XG5cbiAgY29uc3Qgb3Blbk9uSG92ZXJWYWwgPSBnZXQob3Blbk9uSG92ZXIpO1xuICBjb25zdCBjbGlja1ZhbCA9IGdldChjbGljayk7XG4gIHJldHVybiB7XG4gICAgb25Nb3VzZW92ZXI6ICgpID0+IHtcbiAgICAgIGlmIChvcGVuT25Ib3ZlclZhbClcbiAgICAgICAgb25PcGVuKCk7XG4gICAgfSxcbiAgICBvbk1vdXNlbGVhdmU6ICgpID0+IHtcbiAgICAgIGlmIChvcGVuT25Ib3ZlclZhbCAmJiAhY2xpY2tWYWwpXG4gICAgICAgIG9uQ2xvc2UoKTtcbiAgICB9LFxuICB9O1xufSk7XG5cbmNvbnN0IG1lbnVBdHRycyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgaWYgKGdldChkaXNhYmxlZCkpXG4gICAgcmV0dXJuIHt9O1xuXG4gIHJldHVybiB7IC4uLmdldChiYXNlTWVudUF0dHJzKSwgb25DbGljazogY2hlY2tDbGljayB9O1xufSk7XG5cbmNvbnN0IHsgaGFzRXJyb3IsIGhhc1N1Y2Nlc3MgfSA9IHVzZUZvcm1UZXh0RGV0YWlsKFxuICBlcnJvck1lc3NhZ2VzLFxuICBzdWNjZXNzTWVzc2FnZXMsXG4pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIEBrZXlkb3duLmVzYy5zdG9wPVwib25MZWF2ZSgpXCJcbiAgICBAa2V5ZG93bi50YWI9XCIhZGlzYWJsZUF1dG9Gb2N1cyAmJiBvcGVuID8gdW5kZWZpbmVkIDogbnVsbFwiXG4gID5cbiAgICA8ZGl2XG4gICAgICByZWY9XCJhY3RpdmF0b3JcIlxuICAgICAgOmNsYXNzPVwiWyRzdHlsZS53cmFwcGVyLCB3cmFwcGVyQ2xhc3MsIHsgJ3ctZnVsbCc6IGZ1bGxXaWR0aCB9XVwiXG4gICAgICA6ZGF0YS1tZW51LWRpc2FibGVkPVwiZGlzYWJsZWRcIlxuICAgID5cbiAgICAgIDxzbG90XG4gICAgICAgIG5hbWU9XCJhY3RpdmF0b3JcIlxuICAgICAgICB2LWJpbmQ9XCJ7IGF0dHJzOiBtZW51QXR0cnMsIG9wZW4sIGRpc2FibGVkLCBoYXNFcnJvciwgaGFzU3VjY2VzcyB9XCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gICAgPFRlbGVwb3J0XG4gICAgICB2LWlmPVwiIWRpc2FibGVkXCJcbiAgICAgIHRvPVwiYm9keVwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICB2LWlmPVwicG9wcGVyRW50ZXJcIlxuICAgICAgICByZWY9XCJtZW51XCJcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICRzdHlsZS5tZW51LFxuICAgICAgICAgIG1lbnVDbGFzcyxcbiAgICAgICAgICAkc3R5bGVbYG1lbnVfXyR7cG9wcGVyPy5zdHJhdGVneSA/PyAnYWJzb2x1dGUnfWBdLFxuICAgICAgICBdXCJcbiAgICAgICAgcm9sZT1cIm1lbnVcIlxuICAgICAgICBAY2xpY2s9XCJjbG9zZU9uQ29udGVudENsaWNrID8gb25MZWF2ZSgpIDogdW5kZWZpbmVkXCJcbiAgICAgICAgQGtleWRvd24uZXNjLnN0b3A9XCJvbkxlYXZlKClcIlxuICAgICAgPlxuICAgICAgICA8VHJhbnNpdGlvbkdyb3VwXG4gICAgICAgICAgZW50ZXItYWN0aXZlLWNsYXNzPVwidHJhbnNpdGlvbiBlYXNlLW91dCBkdXJhdGlvbi0yMDBcIlxuICAgICAgICAgIGVudGVyLWZyb20tY2xhc3M9XCJvcGFjaXR5LTAgdHJhbnNsYXRlLXktMVwiXG4gICAgICAgICAgZW50ZXItdG8tY2xhc3M9XCJvcGFjaXR5LTEwMCB0cmFuc2xhdGUteS0wXCJcbiAgICAgICAgICBsZWF2ZS1hY3RpdmUtY2xhc3M9XCJ0cmFuc2l0aW9uIGVhc2UtaW4gZHVyYXRpb24tMTUwXCJcbiAgICAgICAgICBsZWF2ZS1mcm9tLWNsYXNzPVwib3BhY2l0eS0xMDAgdHJhbnNsYXRlLXktMFwiXG4gICAgICAgICAgbGVhdmUtdG8tY2xhc3M9XCJvcGFjaXR5LTAgdHJhbnNsYXRlLXktMVwiXG4gICAgICAgICAgQGJlZm9yZS1lbnRlcj1cInVwZGF0ZVBvcHBlcigpXCJcbiAgICAgICAgICBAYWZ0ZXItbGVhdmU9XCJsZWF2ZVBlbmRpbmcgPyBvblBvcHBlckxlYXZlKCkgOiB1bmRlZmluZWRcIlxuICAgICAgICAgIEBiZWZvcmUtbGVhdmU9XCJvbkxlYXZlUGVuZGluZygpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIHYtaWY9XCJvcGVuXCJcbiAgICAgICAgICAgIHJlZj1cIm1lbnVDb250ZW50XCJcbiAgICAgICAgICAgIGtleT1cIm1lbnVcIlxuICAgICAgICAgICAgcm9sZT1cIm1lbnUtY29udGVudFwiXG4gICAgICAgICAgICA6Y2xhc3M9XCIkc3R5bGUuYmFzZVwiXG4gICAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgIHYtYmluZD1cImJhc2VNZW51QXR0cnNcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzbG90IHYtYmluZD1cInsgd2lkdGggfVwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvVHJhbnNpdGlvbkdyb3VwPlxuICAgICAgPC9kaXY+XG4gICAgPC9UZWxlcG9ydD5cbiAgICA8UnVpRm9ybVRleHREZXRhaWxcbiAgICAgIHYtaWY9XCJzaG93RGV0YWlsc1wiXG4gICAgICBjbGFzcz1cInB0LTFcIlxuICAgICAgOmNsYXNzPVwiW2RlbnNlID8gJ3B4LTInIDogJ3B4LTQnXVwiXG4gICAgICA6ZXJyb3ItbWVzc2FnZXM9XCJlcnJvck1lc3NhZ2VzXCJcbiAgICAgIDpzdWNjZXNzLW1lc3NhZ2VzPVwic3VjY2Vzc01lc3NhZ2VzXCJcbiAgICAgIDpoaW50PVwiaGludFwiXG4gICAgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIiBtb2R1bGU+XG4ud3JhcHBlciB7XG4gIEBhcHBseSByZWxhdGl2ZSBpbmxpbmUtZmxleCBtYXgtdy1mdWxsO1xufVxuXG4ubWVudSB7XG4gIEBhcHBseSB3LW1heCB0cmFuc2Zvcm0gdHJhbnNpdGlvbi1vcGFjaXR5IGRlbGF5LTAgei1bOTk5OV07XG5cbiAgJl9fZml4ZWQge1xuICAgIEBhcHBseSBmaXhlZDtcbiAgfVxuXG4gICZfX2Fic29sdXRlIHtcbiAgICBAYXBwbHkgYWJzb2x1dGU7XG4gIH1cblxuICAuYmFzZSB7XG4gICAgQGFwcGx5IHJvdW5kZWQgb3ZlcmZsb3ctaGlkZGVuIHNoYWRvdy04O1xuICAgIEBhcHBseSBiZy13aGl0ZSB0ZXh0LXJ1aS10ZXh0O1xuXG4gICAgJjpmb2N1cyB7XG4gICAgICBAYXBwbHkgb3V0bGluZS1ub25lO1xuICAgIH1cbiAgfVxufVxuXG46Z2xvYmFsKC5kYXJrKSB7XG4gIC5tZW51IHtcbiAgICAuYmFzZSB7XG4gICAgICBAYXBwbHkgYmctWyMyRTJFMkVdO1xuICAgIH1cbiAgfVxufVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XG5pbXBvcnQgeyBnZXQsIGlzRGVmaW5lZCwgc2V0IH0gZnJvbSAnQHZ1ZXVzZS9jb3JlJztcbmltcG9ydCB7IHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuaW1wb3J0IHtcbiAgQ2FsZW5kYXJTdGF0ZVN5bWJvbCxcbiAgZ2V0U2hvcnRNb250aE5hbWVzLFxuICB0eXBlIE1vbnRoWWVhclNlbGVjdGlvbixcbiAgdHlwZSBSdWlDYWxlbmRhclN0YXRlLFxufSBmcm9tICdAL2NvbXBvbmVudHMvY2FsZW5kYXIvc3RhdGUnO1xuaW1wb3J0IFJ1aUljb24gZnJvbSAnQC9jb21wb25lbnRzL2ljb25zL1J1aUljb24udnVlJztcbmltcG9ydCBSdWlNZW51IGZyb20gJ0AvY29tcG9uZW50cy9vdmVybGF5cy9tZW51L1J1aU1lbnUudnVlJztcbmltcG9ydCBSdWlCdXR0b24gZnJvbSAnLi4vYnV0dG9ucy9idXR0b24vUnVpQnV0dG9uLnZ1ZSc7XG5cbmRlZmluZU9wdGlvbnMoe1xuICBuYW1lOiAnUnVpQ2FsZW5kYXJNZW51JyxcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbn0pO1xuXG5jb25zdCBtb2RlbFZhbHVlID0gZGVmaW5lTW9kZWw8Ym9vbGVhbj4oKTtcblxuY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wczx7XG4gIGFuY2hvckVsOiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgdmlld01vbnRoOiBudW1iZXI7XG4gIHZpZXdZZWFyOiBudW1iZXI7XG59PigpO1xuXG5jb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8e1xuICBzZWxlY3Q6IFtNb250aFllYXJTZWxlY3Rpb25dO1xufT4oKTtcblxuLy8gQ29yZSByZWFjdGl2ZSBzdGF0ZSAtIG1pbmltYWxcbmNvbnN0IHZpZXdNb2RlID0gcmVmPCdtb250aHMnIHwgJ3llYXJzJz4oJ21vbnRocycpO1xuY29uc3Qgc3RhcnRZZWFyID0gcmVmPG51bWJlcj4ocHJvcHMudmlld1llYXIgLSA2KTtcblxuLy8gUHJlLWNhbGN1bGF0ZWQgY29uc3RhbnRzXG5jb25zdCBtb250aHMgPSBnZXRTaG9ydE1vbnRoTmFtZXMoKTtcbmNvbnN0IGNhbGVuZGFyU3RhdGUgPSBpbmplY3Q8UnVpQ2FsZW5kYXJTdGF0ZT4oQ2FsZW5kYXJTdGF0ZVN5bWJvbCkgYXMgUnVpQ2FsZW5kYXJTdGF0ZTtcblxuLy8gUHJlLWNhbGN1bGF0ZWQgYXJyYXlzIGZvciBwZXJmb3JtYW5jZSAtIHVzaW5nIHJlZnMgZm9yIGJldHRlciBjb250cm9sXG5jb25zdCB5ZWFyUmFuZ2UgPSByZWY8bnVtYmVyW10+KFtdKTtcbmNvbnN0IG1vbnRoc0luUmFuZ2UgPSByZWY8Ym9vbGVhbltdPihbXSk7XG5jb25zdCB5ZWFyc0luUmFuZ2UgPSByZWY8Ym9vbGVhbltdPihbXSk7XG5jb25zdCB0aXRsZSA9IHJlZjxzdHJpbmc+KCcnKTtcbmNvbnN0IGNhbkdvVG9OZXh0ID0gcmVmPGJvb2xlYW4+KHRydWUpO1xuY29uc3QgY2FuR29Ub1ByZXYgPSByZWY8Ym9vbGVhbj4odHJ1ZSk7XG5cbi8vIFByZS1jYWxjdWxhdGlvbiBmdW5jdGlvbnMgdXNpbmcgVnVlVXNlIGdldC9zZXRcbmZ1bmN0aW9uIGNhbGN1bGF0ZVllYXJSYW5nZSgpIHtcbiAgY29uc3Qgc3RhcnQgPSBnZXQoc3RhcnRZZWFyKTtcbiAgc2V0KHllYXJSYW5nZSwgQXJyYXkuZnJvbSh7IGxlbmd0aDogMTIgfSwgKF8sIGkpID0+IHN0YXJ0ICsgaSkpO1xufVxuXG5mdW5jdGlvbiBjYWxjdWxhdGVUaXRsZSgpIHtcbiAgaWYgKGdldCh2aWV3TW9kZSkgPT09ICdtb250aHMnKSB7XG4gICAgc2V0KHRpdGxlLCBwcm9wcy52aWV3WWVhci50b1N0cmluZygpKTtcbiAgfVxuICBlbHNlIHtcbiAgICBjb25zdCByYW5nZSA9IGdldCh5ZWFyUmFuZ2UpO1xuICAgIHNldCh0aXRsZSwgYCR7cmFuZ2VbMF19IC0gJHtyYW5nZS5hdCgtMSl9YCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FsY3VsYXRlTmF2aWdhdGlvbigpIHtcbiAgY29uc3QgeyBtYXhEYXRlLCBtaW5EYXRlIH0gPSBjYWxlbmRhclN0YXRlO1xuICBjb25zdCBtb2RlID0gZ2V0KHZpZXdNb2RlKTtcblxuICBpZiAobW9kZSA9PT0gJ21vbnRocycpIHtcbiAgICBjb25zdCBuZXh0WWVhciA9IHByb3BzLnZpZXdZZWFyICsgMTtcbiAgICBjb25zdCBwcmV2aW91c1llYXIgPSBwcm9wcy52aWV3WWVhciAtIDE7XG5cbiAgICBzZXQoY2FuR29Ub05leHQsICFpc0RlZmluZWQobWF4RGF0ZSkgfHwgbmV4dFllYXIgPD0gZ2V0KG1heERhdGUpLmdldEZ1bGxZZWFyKCkpO1xuICAgIHNldChjYW5Hb1RvUHJldiwgIWlzRGVmaW5lZChtaW5EYXRlKSB8fCBwcmV2aW91c1llYXIgPj0gZ2V0KG1pbkRhdGUpLmdldEZ1bGxZZWFyKCkpO1xuICB9XG4gIGVsc2Uge1xuICAgIGNvbnN0IGxhc3RZZWFySW5SYW5nZSA9IGdldChzdGFydFllYXIpICsgMTE7XG4gICAgY29uc3QgZmlyc3RZZWFySW5SYW5nZSA9IGdldChzdGFydFllYXIpO1xuXG4gICAgLy8gQ2hlY2sgaWYgd2UgY2FuIG5hdmlnYXRlIHRvIHRoZSBuZXh0IHJhbmdlIG9mIHllYXJzXG4gICAgY29uc3QgbmV4dFJhbmdlU3RhcnQgPSBsYXN0WWVhckluUmFuZ2UgKyAxO1xuICAgIHNldChjYW5Hb1RvTmV4dCwgIWlzRGVmaW5lZChtYXhEYXRlKSB8fCBuZXh0UmFuZ2VTdGFydCA8PSBnZXQobWF4RGF0ZSkuZ2V0RnVsbFllYXIoKSk7XG5cbiAgICAvLyBDaGVjayBpZiB3ZSBjYW4gbmF2aWdhdGUgdG8gdGhlIHByZXZpb3VzIHJhbmdlIG9mIHllYXJzXG4gICAgY29uc3QgcHJldlJhbmdlRW5kID0gZmlyc3RZZWFySW5SYW5nZSAtIDE7XG4gICAgc2V0KGNhbkdvVG9QcmV2LCAhaXNEZWZpbmVkKG1pbkRhdGUpIHx8IHByZXZSYW5nZUVuZCA+PSBnZXQobWluRGF0ZSkuZ2V0RnVsbFllYXIoKSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FsY3VsYXRlTW9udGhzSW5SYW5nZSgpIHtcbiAgY29uc3QgeyBtaW5EYXRlLCBtYXhEYXRlIH0gPSBjYWxlbmRhclN0YXRlO1xuICBjb25zdCBjdXJyZW50WWVhciA9IHByb3BzLnZpZXdZZWFyO1xuICBjb25zdCByZXN1bHQgPSBuZXcgQXJyYXkoMTIpLmZpbGwodHJ1ZSk7XG5cbiAgaWYgKGlzRGVmaW5lZChtaW5EYXRlKSB8fCBpc0RlZmluZWQobWF4RGF0ZSkpIHtcbiAgICBmb3IgKGxldCBtb250aCA9IDA7IG1vbnRoIDwgMTI7IG1vbnRoKyspIHtcbiAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShjdXJyZW50WWVhciwgbW9udGgpO1xuICAgICAgaWYgKGlzRGVmaW5lZChtYXhEYXRlKSAmJiBkYXRlID4gZ2V0KG1heERhdGUpKSB7XG4gICAgICAgIHJlc3VsdFttb250aF0gPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChpc0RlZmluZWQobWluRGF0ZSkgJiYgZGF0ZSA8IGdldChtaW5EYXRlKSkge1xuICAgICAgICByZXN1bHRbbW9udGhdID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0KG1vbnRoc0luUmFuZ2UsIHJlc3VsdCk7XG59XG5cbmZ1bmN0aW9uIGNhbGN1bGF0ZVllYXJzSW5SYW5nZSgpIHtcbiAgY29uc3QgeyBtaW5EYXRlLCBtYXhEYXRlIH0gPSBjYWxlbmRhclN0YXRlO1xuICBjb25zdCByYW5nZSA9IGdldCh5ZWFyUmFuZ2UpO1xuICBjb25zdCBjdXJyZW50TW9udGggPSBwcm9wcy52aWV3TW9udGg7XG5cbiAgaWYgKCFpc0RlZmluZWQobWluRGF0ZSkgJiYgIWlzRGVmaW5lZChtYXhEYXRlKSkge1xuICAgIHNldCh5ZWFyc0luUmFuZ2UsIG5ldyBBcnJheShyYW5nZS5sZW5ndGgpLmZpbGwodHJ1ZSkpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdCA9IHJhbmdlLm1hcCgoeWVhcikgPT4ge1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBjdXJyZW50TW9udGgpO1xuICAgIGlmIChpc0RlZmluZWQobWF4RGF0ZSkgJiYgZGF0ZSA+IGdldChtYXhEYXRlKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gIWlzRGVmaW5lZChtaW5EYXRlKSB8fCBkYXRlID49IGdldChtaW5EYXRlKTtcbiAgfSk7XG5cbiAgc2V0KHllYXJzSW5SYW5nZSwgcmVzdWx0KTtcbn1cblxuLy8gSW5pdGlhbCBjYWxjdWxhdGlvbnNcbmNhbGN1bGF0ZVllYXJSYW5nZSgpO1xuY2FsY3VsYXRlVGl0bGUoKTtcbmNhbGN1bGF0ZU5hdmlnYXRpb24oKTtcbmNhbGN1bGF0ZU1vbnRoc0luUmFuZ2UoKTtcbmNhbGN1bGF0ZVllYXJzSW5SYW5nZSgpO1xuXG4vLyBXYXRjaGVycyBmb3IgcmVjYWxjdWxhdGlvbiBvbmx5IHdoZW4gbmVlZGVkXG53YXRjaChzdGFydFllYXIsICgpID0+IHtcbiAgY2FsY3VsYXRlWWVhclJhbmdlKCk7XG4gIGNhbGN1bGF0ZVRpdGxlKCk7XG4gIGNhbGN1bGF0ZU5hdmlnYXRpb24oKTtcbiAgY2FsY3VsYXRlWWVhcnNJblJhbmdlKCk7XG59KTtcblxud2F0Y2godmlld01vZGUsICgpID0+IHtcbiAgY2FsY3VsYXRlVGl0bGUoKTtcbiAgY2FsY3VsYXRlTmF2aWdhdGlvbigpO1xufSk7XG5cbndhdGNoKCgpID0+IHByb3BzLnZpZXdZZWFyLCAoKSA9PiB7XG4gIGNhbGN1bGF0ZVRpdGxlKCk7XG4gIGNhbGN1bGF0ZU5hdmlnYXRpb24oKTtcbiAgY2FsY3VsYXRlTW9udGhzSW5SYW5nZSgpO1xuICBjYWxjdWxhdGVZZWFyc0luUmFuZ2UoKTtcbn0pO1xuXG53YXRjaCgoKSA9PiBwcm9wcy52aWV3TW9udGgsICgpID0+IHtcbiAgY2FsY3VsYXRlWWVhcnNJblJhbmdlKCk7XG59KTtcblxuZnVuY3Rpb24gdG9nZ2xlU2VsZWN0aW9uKCkge1xuICBzZXQodmlld01vZGUsIGdldCh2aWV3TW9kZSkgPT09ICdtb250aHMnID8gJ3llYXJzJyA6ICdtb250aHMnKTtcbn1cblxuZnVuY3Rpb24gc2VsZWN0TW9udGgobW9udGg6IG51bWJlcikge1xuICBpZiAoIWdldChtb250aHNJblJhbmdlKVttb250aF0pXG4gICAgcmV0dXJuO1xuICBlbWl0KCdzZWxlY3QnLCB7IG1vbnRoLCB5ZWFyOiBwcm9wcy52aWV3WWVhciB9KTtcbiAgc2V0KG1vZGVsVmFsdWUsIGZhbHNlKTtcbn1cblxuZnVuY3Rpb24gc2VsZWN0WWVhcih5ZWFyOiBudW1iZXIpIHtcbiAgY29uc3QgeWVhckluZGV4ID0gZ2V0KHllYXJSYW5nZSkuaW5kZXhPZih5ZWFyKTtcbiAgaWYgKHllYXJJbmRleCA9PT0gLTEgfHwgIWdldCh5ZWFyc0luUmFuZ2UpW3llYXJJbmRleF0pXG4gICAgcmV0dXJuO1xuXG4gIGVtaXQoJ3NlbGVjdCcsIHsgbW9udGg6IHByb3BzLnZpZXdNb250aCwgeWVhciB9KTtcbiAgc2V0KHZpZXdNb2RlLCAnbW9udGhzJyk7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZU5leHQoKSB7XG4gIGlmIChnZXQodmlld01vZGUpID09PSAnbW9udGhzJykge1xuICAgIGNvbnN0IG5leHRZZWFyID0gcHJvcHMudmlld1llYXIgKyAxO1xuICAgIHNlbGVjdFllYXIobmV4dFllYXIpO1xuICB9XG4gIGVsc2Uge1xuICAgIGNvbnN0IGxhc3RZZWFySW5SYW5nZSA9IGdldChzdGFydFllYXIpICsgMTE7XG4gICAgc2V0KHN0YXJ0WWVhciwgbGFzdFllYXJJblJhbmdlICsgMSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaGFuZGxlUHJldigpIHtcbiAgaWYgKGdldCh2aWV3TW9kZSkgPT09ICdtb250aHMnKSB7XG4gICAgY29uc3QgcHJldmlvdXNZZWFyID0gcHJvcHMudmlld1llYXIgLSAxO1xuICAgIHNlbGVjdFllYXIocHJldmlvdXNZZWFyKTtcbiAgfVxuICBlbHNlIHtcbiAgICBjb25zdCBmaXJzdFllYXJJblJhbmdlID0gZ2V0KHN0YXJ0WWVhcik7XG4gICAgc2V0KHN0YXJ0WWVhciwgZmlyc3RZZWFySW5SYW5nZSAtIDEyKTtcbiAgfVxufVxuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPFJ1aU1lbnVcbiAgICB2LW1vZGVsPVwibW9kZWxWYWx1ZVwiXG4gICAgOmFuY2hvci1lbD1cImFuY2hvckVsXCJcbiAgICBwbGFjZW1lbnQ9XCJib3R0b20tc3RhcnRcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cIm1lbnUtY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWVudS1oZWFkZXJcIj5cbiAgICAgICAgPFJ1aUJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwibmF2LWJ1dHRvblwiXG4gICAgICAgICAgaWNvblxuICAgICAgICAgIDpkaXNhYmxlZD1cIiFnZXQoY2FuR29Ub1ByZXYpXCJcbiAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgQGNsaWNrLnN0b3A9XCJoYW5kbGVQcmV2KClcIlxuICAgICAgICA+XG4gICAgICAgICAgPFJ1aUljb25cbiAgICAgICAgICAgIG5hbWU9XCJsdS1jaGV2cm9uLWxlZnRcIlxuICAgICAgICAgICAgc2l6ZT1cIjIwXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L1J1aUJ1dHRvbj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJmbGV4LTEgdGV4dC1jZW50ZXIgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgIEBjbGljay5zdG9wPVwidG9nZ2xlU2VsZWN0aW9uKClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZ2V0KHRpdGxlKSB9fVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8UnVpQnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJuYXYtYnV0dG9uXCJcbiAgICAgICAgICBpY29uXG4gICAgICAgICAgOmRpc2FibGVkPVwiIWdldChjYW5Hb1RvTmV4dClcIlxuICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICBAY2xpY2suc3RvcD1cImhhbmRsZU5leHQoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8UnVpSWNvblxuICAgICAgICAgICAgbmFtZT1cImx1LWNoZXZyb24tcmlnaHRcIlxuICAgICAgICAgICAgc2l6ZT1cIjIwXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L1J1aUJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgIHYtaWY9XCJ2aWV3TW9kZSA9PT0gJ21vbnRocydcIlxuICAgICAgICBjbGFzcz1cIm1vbnRoLWdyaWRcIlxuICAgICAgPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdi1mb3I9XCIobW9udGgsIGluZGV4KSBpbiBtb250aHNcIlxuICAgICAgICAgIDprZXk9XCJpbmRleFwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJoLTkgdy1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtc20gZm9udC1tZWRpdW0gcm91bmRlZC1tZCB0cmFuc2l0aW9uLWNvbG9ycyBkdXJhdGlvbi0xNTAgZWFzZS1pbi1vdXQgYm9yZGVyLW5vbmUgb3V0bGluZS1ub25lIGN1cnNvci1wb2ludGVyIGZvY3VzOnJpbmctMiBmb2N1czpyaW5nLXJ1aS1wcmltYXJ5IGZvY3VzOnJpbmctb3BhY2l0eS01MFwiXG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAnYmctcnVpLXByaW1hcnkgdGV4dC13aGl0ZSBob3ZlcjpiZy1ydWktcHJpbWFyeS1kYXJrZXIgYWN0aXZlOmJnLXJ1aS1wcmltYXJ5LWRhcmtlciBkYXJrOmJnLXJ1aS1wcmltYXJ5IGRhcms6dGV4dC13aGl0ZSBkYXJrOmhvdmVyOmJnLXJ1aS1wcmltYXJ5LWRhcmtlcic6IGluZGV4ID09PSB2aWV3TW9udGggJiYgZ2V0KG1vbnRoc0luUmFuZ2UpW2luZGV4XSxcbiAgICAgICAgICAgICAgJ2JnLWdyYXktMzAwIHRleHQtZ3JheS01MDAgZGFyazpiZy1ncmF5LTYwMCBkYXJrOnRleHQtZ3JheS00MDAnOiBpbmRleCA9PT0gdmlld01vbnRoICYmICFnZXQobW9udGhzSW5SYW5nZSlbaW5kZXhdLFxuICAgICAgICAgICAgICAndGV4dC1ncmF5LTcwMCBiZy10cmFuc3BhcmVudCBob3ZlcjpiZy1ncmF5LTEwMCBhY3RpdmU6YmctZ3JheS0yMDAgZGFyazp0ZXh0LWdyYXktMzAwIGRhcms6aG92ZXI6YmctZ3JheS03MDAgZGFyazphY3RpdmU6YmctZ3JheS02MDAnOiBpbmRleCAhPT0gdmlld01vbnRoICYmIGdldChtb250aHNJblJhbmdlKVtpbmRleF0sXG4gICAgICAgICAgICAgICdvcGFjaXR5LTUwIGN1cnNvci1ub3QtYWxsb3dlZCBiZy10cmFuc3BhcmVudCBob3ZlcjpiZy10cmFuc3BhcmVudCBhY3RpdmU6YmctdHJhbnNwYXJlbnQgZGFyazpob3ZlcjpiZy10cmFuc3BhcmVudCBkYXJrOmFjdGl2ZTpiZy10cmFuc3BhcmVudCBwb2ludGVyLWV2ZW50cy1ub25lIHRleHQtZ3JheS00MDAgZGFyazp0ZXh0LWdyYXktNjAwJzogIWdldChtb250aHNJblJhbmdlKVtpbmRleF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIDpkaXNhYmxlZD1cIiFnZXQobW9udGhzSW5SYW5nZSlbaW5kZXhdXCJcbiAgICAgICAgICBAY2xpY2suc3RvcD1cInNlbGVjdE1vbnRoKGluZGV4KVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBtb250aC5zdWJzdHJpbmcoMCwgMykgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICB2LWVsc2UtaWY9XCJ2aWV3TW9kZSA9PT0gJ3llYXJzJ1wiXG4gICAgICAgIGNsYXNzPVwieWVhci1ncmlkXCJcbiAgICAgID5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHYtZm9yPVwiKHllYXIsIGluZGV4KSBpbiB5ZWFyUmFuZ2VcIlxuICAgICAgICAgIDprZXk9XCJ5ZWFyXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cImgtOSB3LWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC1zbSBmb250LW1lZGl1bSByb3VuZGVkLW1kIHRyYW5zaXRpb24tY29sb3JzIGR1cmF0aW9uLTE1MCBlYXNlLWluLW91dCBib3JkZXItbm9uZSBvdXRsaW5lLW5vbmUgY3Vyc29yLXBvaW50ZXIgZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctcnVpLXByaW1hcnkgZm9jdXM6cmluZy1vcGFjaXR5LTUwXCJcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICdiZy1ydWktcHJpbWFyeSB0ZXh0LXdoaXRlIGhvdmVyOmJnLXJ1aS1wcmltYXJ5LWRhcmtlciBhY3RpdmU6YmctcnVpLXByaW1hcnktZGFya2VyIGRhcms6YmctcnVpLXByaW1hcnkgZGFyazp0ZXh0LXdoaXRlIGRhcms6aG92ZXI6YmctcnVpLXByaW1hcnktZGFya2VyJzogeWVhciA9PT0gdmlld1llYXIgJiYgZ2V0KHllYXJzSW5SYW5nZSlbaW5kZXhdLFxuICAgICAgICAgICAgICAnYmctZ3JheS0zMDAgdGV4dC1ncmF5LTUwMCBkYXJrOmJnLWdyYXktNjAwIGRhcms6dGV4dC1ncmF5LTQwMCc6IHllYXIgPT09IHZpZXdZZWFyICYmICFnZXQoeWVhcnNJblJhbmdlKVtpbmRleF0sXG4gICAgICAgICAgICAgICd0ZXh0LWdyYXktNzAwIGJnLXRyYW5zcGFyZW50IGhvdmVyOmJnLWdyYXktMTAwIGFjdGl2ZTpiZy1ncmF5LTIwMCBkYXJrOnRleHQtZ3JheS0zMDAgZGFyazpob3ZlcjpiZy1ncmF5LTcwMCBkYXJrOmFjdGl2ZTpiZy1ncmF5LTYwMCc6IHllYXIgIT09IHZpZXdZZWFyICYmIGdldCh5ZWFyc0luUmFuZ2UpW2luZGV4XSxcbiAgICAgICAgICAgICAgJ29wYWNpdHktNTAgY3Vyc29yLW5vdC1hbGxvd2VkIGJnLXRyYW5zcGFyZW50IGhvdmVyOmJnLXRyYW5zcGFyZW50IGFjdGl2ZTpiZy10cmFuc3BhcmVudCBkYXJrOmhvdmVyOmJnLXRyYW5zcGFyZW50IGRhcms6YWN0aXZlOmJnLXRyYW5zcGFyZW50IHBvaW50ZXItZXZlbnRzLW5vbmUgdGV4dC1ncmF5LTQwMCBkYXJrOnRleHQtZ3JheS02MDAnOiAhZ2V0KHllYXJzSW5SYW5nZSlbaW5kZXhdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdXCJcbiAgICAgICAgICA6ZGlzYWJsZWQ9XCIhZ2V0KHllYXJzSW5SYW5nZSlbaW5kZXhdXCJcbiAgICAgICAgICBAY2xpY2suc3RvcD1cInNlbGVjdFllYXIoeWVhcilcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgeWVhciB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L1J1aU1lbnU+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuLm1lbnUtY29udGFpbmVyIHtcbiAgQGFwcGx5IHctNjQgc2hhZG93LWxnIG92ZXJmbG93LWhpZGRlbjtcbn1cblxuLm1lbnUtaGVhZGVyIHtcbiAgQGFwcGx5IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHAtMSBmb250LW1lZGl1bSB0ZXh0LWdyYXktODAwIGRhcms6dGV4dC1ncmF5LTIwMDtcbiAgQGFwcGx5IGJvcmRlci1iIGJvcmRlci1ydWktZ3JleS0yMDAgZGFyazpib3JkZXItcnVpLWdyZXktODAwIGN1cnNvci1wb2ludGVyIGhvdmVyOmJnLXJ1aS1ncmV5LTEwMCBkYXJrOmhvdmVyOmJnLXJ1aS1ncmV5LTgwMDtcbn1cblxuLm1vbnRoLWdyaWQge1xuICBAYXBwbHkgZ3JpZCBncmlkLWNvbHMtMyBnYXAtMSBwLTI7XG59XG5cbi55ZWFyLWdyaWQge1xuICBAYXBwbHkgZ3JpZCBncmlkLWNvbHMtMyBnYXAtMSBwLTI7XG59XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IGdldCwgaXNEZWZpbmVkLCBzZXQgfSBmcm9tICdAdnVldXNlL2NvcmUnO1xuaW1wb3J0IHsgY29tcHV0ZWQsIGluamVjdCwgcmVmIH0gZnJvbSAndnVlJztcbmltcG9ydCBSdWlCdXR0b24gZnJvbSAnQC9jb21wb25lbnRzL2J1dHRvbnMvYnV0dG9uL1J1aUJ1dHRvbi52dWUnO1xuaW1wb3J0IHsgQ2FsZW5kYXJTdGF0ZVN5bWJvbCwgdHlwZSBNb250aFllYXJTZWxlY3Rpb24sIHR5cGUgUnVpQ2FsZW5kYXJTdGF0ZSB9IGZyb20gJ0AvY29tcG9uZW50cy9jYWxlbmRhci9zdGF0ZSc7XG5pbXBvcnQgUnVpSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvaWNvbnMvUnVpSWNvbi52dWUnO1xuaW1wb3J0IFJ1aUNhbGVuZGFyTWVudSBmcm9tICcuL1J1aUNhbGVuZGFyTWVudS52dWUnO1xuXG5kZWZpbmVPcHRpb25zKHtcbiAgbmFtZTogJ1J1aUNhbGVuZGFySGVhZGVyJyxcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbn0pO1xuXG5jb25zdCBpc01lbnVPcGVuID0gZGVmaW5lTW9kZWw8Ym9vbGVhbj4oJ21lbnUtb3BlbicsIHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbmNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHM8e1xuICB0aXRsZTogc3RyaW5nO1xuICB2aWV3TW9udGg6IG51bWJlcjtcbiAgdmlld1llYXI6IG51bWJlcjtcbn0+KCk7XG5cbmNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czx7XG4gICdwcmV2LW1vbnRoJzogW107XG4gICduZXh0LW1vbnRoJzogW107XG4gICdzZWxlY3QtbW9udGgnOiBbTW9udGhZZWFyU2VsZWN0aW9uXTtcbn0+KCk7XG5cbmNvbnN0IGFuY2hvckVsID0gcmVmPEhUTUxFbGVtZW50PigpO1xuXG5jb25zdCBjYWxlbmRhclN0YXRlID0gaW5qZWN0PFJ1aUNhbGVuZGFyU3RhdGU+KENhbGVuZGFyU3RhdGVTeW1ib2wpIGFzIFJ1aUNhbGVuZGFyU3RhdGU7XG5cbmNvbnN0IGNhbkdvVG9OZXh0ID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4ge1xuICBjb25zdCB7IG1heERhdGUgfSA9IGNhbGVuZGFyU3RhdGU7XG4gIGlmICghaXNEZWZpbmVkKG1heERhdGUpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBjb25zdCBkYXRlID0gbmV3IERhdGUocHJvcHMudmlld1llYXIsIHByb3BzLnZpZXdNb250aCk7XG4gIHJldHVybiBkYXRlLmdldFRpbWUoKSA8IGdldChtYXhEYXRlKS5nZXRUaW1lKCk7XG59KTtcblxuY29uc3QgY2FuR29Ub1ByZXYgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiB7XG4gIGNvbnN0IHsgbWluRGF0ZSB9ID0gY2FsZW5kYXJTdGF0ZTtcbiAgaWYgKCFpc0RlZmluZWQobWluRGF0ZSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShwcm9wcy52aWV3WWVhciwgcHJvcHMudmlld01vbnRoKTtcbiAgcmV0dXJuIGRhdGUuZ2V0VGltZSgpID4gZ2V0KG1pbkRhdGUpLmdldFRpbWUoKTtcbn0pO1xuXG5mdW5jdGlvbiBoYW5kbGVUaXRsZUNsaWNrKGU6IEV2ZW50KSB7XG4gIHNldChhbmNob3JFbCwgZS5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50ID8/IHVuZGVmaW5lZCk7XG4gIHNldChpc01lbnVPcGVuLCB0cnVlKTtcbn1cblxuZnVuY3Rpb24gaGFuZGxlRGF0ZVNlbGVjdGlvbihzZWxlY3Rpb246IE1vbnRoWWVhclNlbGVjdGlvbikge1xuICBlbWl0KCdzZWxlY3QtbW9udGgnLCBzZWxlY3Rpb24pO1xufVxuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWhlYWRlclwiPlxuICAgIDxSdWlCdXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJuYXYtYnV0dG9uXCJcbiAgICAgIGljb25cbiAgICAgIDpkaXNhYmxlZD1cIiFjYW5Hb1RvUHJldlwiXG4gICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICBAY2xpY2suc3RvcD1cImVtaXQoJ3ByZXYtbW9udGgnKVwiXG4gICAgPlxuICAgICAgPFJ1aUljb25cbiAgICAgICAgbmFtZT1cImx1LWNoZXZyb24tbGVmdFwiXG4gICAgICAgIHNpemU9XCIyMFwiXG4gICAgICAvPlxuICAgIDwvUnVpQnV0dG9uPlxuXG4gICAgPGgzXG4gICAgICBjbGFzcz1cImhlYWRlci10aXRsZVwiXG4gICAgICBAY2xpY2suc3RvcD1cImhhbmRsZVRpdGxlQ2xpY2soJGV2ZW50KVwiXG4gICAgPlxuICAgICAge3sgdGl0bGUgfX1cbiAgICAgIDxSdWlJY29uXG4gICAgICAgIG5hbWU9XCJsdS1jaGV2cm9uLWRvd25cIlxuICAgICAgICBzaXplPVwiMTZcIlxuICAgICAgICBjbGFzcz1cIm1sLTFcIlxuICAgICAgLz5cbiAgICA8L2gzPlxuXG4gICAgPFJ1aUNhbGVuZGFyTWVudVxuICAgICAgdi1tb2RlbD1cImlzTWVudU9wZW5cIlxuICAgICAgOmFuY2hvci1lbD1cImFuY2hvckVsXCJcbiAgICAgIDp2aWV3LW1vbnRoPVwidmlld01vbnRoXCJcbiAgICAgIDp2aWV3LXllYXI9XCJ2aWV3WWVhclwiXG4gICAgICBAc2VsZWN0PVwiaGFuZGxlRGF0ZVNlbGVjdGlvbigkZXZlbnQpXCJcbiAgICAvPlxuXG4gICAgPFJ1aUJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cIm5hdi1idXR0b25cIlxuICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgaWNvblxuICAgICAgOmRpc2FibGVkPVwiIWNhbkdvVG9OZXh0XCJcbiAgICAgIEBjbGljay5zdG9wPVwiZW1pdCgnbmV4dC1tb250aCcpXCJcbiAgICA+XG4gICAgICA8UnVpSWNvblxuICAgICAgICBuYW1lPVwibHUtY2hldnJvbi1yaWdodFwiXG4gICAgICAgIHNpemU9XCIyMFwiXG4gICAgICAvPlxuICAgIDwvUnVpQnV0dG9uPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4uY2FsZW5kYXItaGVhZGVyIHtcbiAgQGFwcGx5IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBweC00IHB5LTM7XG59XG5cbi5oZWFkZXItdGl0bGUge1xuICBAYXBwbHkgZm9udC1tZWRpdW0gdGV4dC1ncmF5LTgwMCBkYXJrOnRleHQtZ3JheS0yMDAgZmxleCBpdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXIgcGwtODtcbn1cblxuLm5hdi1idXR0b24ge1xuICBAYXBwbHkgcC0xIHJvdW5kZWQtZnVsbCB0ZXh0LWdyYXktNTAwIGhvdmVyOnRleHQtcnVpLXByaW1hcnkgaG92ZXI6YmctZ3JheS0xMDA7XG4gIEBhcHBseSBkYXJrOnRleHQtZ3JheS00MDAgZGFyazpob3ZlcjpiZy1ncmF5LTYwMCBkYXJrOmhvdmVyOnRleHQtcnVpLXByaW1hcnk7XG59XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IGdldCwgaXNEZWZpbmVkLCBzZXQgfSBmcm9tICdAdnVldXNlL2NvcmUnO1xuaW1wb3J0IHsgY29tcHV0ZWQsIHByb3ZpZGUsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuaW1wb3J0IHtcbiAgQ2FsZW5kYXJTdGF0ZVN5bWJvbCxcbiAgdHlwZSBNb250aFllYXJTZWxlY3Rpb24sXG4gIHR5cGUgUnVpQ2FsZW5kYXJTdGF0ZSxcbn0gZnJvbSAnQC9jb21wb25lbnRzL2NhbGVuZGFyL3N0YXRlJztcbmltcG9ydCB7IHVzZVJvdGtpVGhlbWUgfSBmcm9tICdAL2NvbXBvc2FibGVzL3RoZW1lJztcbmltcG9ydCBSdWlDYWxlbmRhckdyaWQgZnJvbSAnLi9SdWlDYWxlbmRhckdyaWQudnVlJztcbmltcG9ydCBSdWlDYWxlbmRhckhlYWRlciBmcm9tICcuL1J1aUNhbGVuZGFySGVhZGVyLnZ1ZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FsZW5kYXJQcm9wcyB7XG4gIG1heERhdGU/OiBEYXRlIHwgbnVtYmVyO1xuICBtaW5EYXRlPzogRGF0ZSB8IG51bWJlcjtcbiAgYWxsb3dFbXB0eT86IGJvb2xlYW47XG4gIGJvcmRlcmxlc3M/OiBib29sZWFuO1xufVxuXG5kZWZpbmVPcHRpb25zKHtcbiAgbmFtZTogJ1J1aUNhbGVuZGFyJyxcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbn0pO1xuXG5jb25zdCBtb2RlbCA9IGRlZmluZU1vZGVsPERhdGUgfCB1bmRlZmluZWQ+KHsgcmVxdWlyZWQ6IGZhbHNlIH0pO1xuY29uc3QgaXNNZW51T3BlbiA9IGRlZmluZU1vZGVsPGJvb2xlYW4+KCdtZW51LW9wZW4nLCB7IHJlcXVpcmVkOiBmYWxzZSwgZGVmYXVsdDogZmFsc2UgfSk7XG5cbmNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPENhbGVuZGFyUHJvcHM+KCksIHtcbiAgbWF4RGF0ZTogdW5kZWZpbmVkLFxuICBtaW5EYXRlOiB1bmRlZmluZWQsXG4gIGFsbG93RW1wdHk6IGZhbHNlLFxuICBib3JkZXJsZXNzOiBmYWxzZSxcbn0pO1xuXG5jb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8e1xuICAndXBkYXRlOnBhZ2VzJzogW3sgdGl0bGU6IHN0cmluZyB9W11dO1xufT4oKTtcblxuY29uc3QgY3VycmVudERhdGUgPSByZWYoaXNEZWZpbmVkKG1vZGVsKSA/IG5ldyBEYXRlKGdldChtb2RlbCkpIDogbmV3IERhdGUoKSk7XG5jb25zdCBzZWxlY3RlZERhdGUgPSByZWYoaXNEZWZpbmVkKG1vZGVsKSA/IG5ldyBEYXRlKGdldChtb2RlbCkpIDogdW5kZWZpbmVkKTtcbmNvbnN0IHZpZXdNb250aCA9IHJlZihnZXQoY3VycmVudERhdGUpLmdldE1vbnRoKCkpO1xuY29uc3Qgdmlld1llYXIgPSByZWYoZ2V0KGN1cnJlbnREYXRlKS5nZXRGdWxsWWVhcigpKTtcblxuY29uc3QgeyBpc0RhcmsgfSA9IHVzZVJvdGtpVGhlbWUoKTtcblxuY29uc3QgbW9udGhUaXRsZSA9IGNvbXB1dGVkPHN0cmluZz4oKCkgPT4ge1xuICBjb25zdCBkYXRlID0gbmV3IERhdGUoZ2V0KHZpZXdZZWFyKSwgZ2V0KHZpZXdNb250aCkpO1xuICByZXR1cm4gZGF0ZS50b0xvY2FsZVN0cmluZygnZGVmYXVsdCcsIHsgbW9udGg6ICdsb25nJywgeWVhcjogJ251bWVyaWMnIH0pO1xufSk7XG5cbnByb3ZpZGUoQ2FsZW5kYXJTdGF0ZVN5bWJvbC52YWx1ZU9mKCksIHtcbiAgdmlld01vbnRoLFxuICB2aWV3WWVhcixcbiAgc2VsZWN0ZWREYXRlLFxuICBtYXhEYXRlOiBjb21wdXRlZCgoKSA9PiBwcm9wcy5tYXhEYXRlID8gbmV3IERhdGUocHJvcHMubWF4RGF0ZSkgOiB1bmRlZmluZWQpLFxuICBtaW5EYXRlOiBjb21wdXRlZCgoKSA9PiBwcm9wcy5taW5EYXRlID8gbmV3IERhdGUocHJvcHMubWluRGF0ZSkgOiB1bmRlZmluZWQpLFxuICBpc0RhcmssXG4gIGFsbG93RW1wdHk6IHByb3BzLmFsbG93RW1wdHksXG59IHNhdGlzZmllcyBSdWlDYWxlbmRhclN0YXRlKTtcblxuZnVuY3Rpb24gbW92ZU1vbnRoKGRlbHRhOiBudW1iZXIpIHtcbiAgbGV0IG5ld01vbnRoID0gZ2V0KHZpZXdNb250aCkgKyBkZWx0YTtcbiAgbGV0IG5ld1llYXIgPSBnZXQodmlld1llYXIpO1xuXG4gIGlmIChuZXdNb250aCA+IDExKSB7XG4gICAgbmV3TW9udGggPSAwO1xuICAgIG5ld1llYXIrKztcbiAgfVxuICBlbHNlIGlmIChuZXdNb250aCA8IDApIHtcbiAgICBuZXdNb250aCA9IDExO1xuICAgIG5ld1llYXItLTtcbiAgfVxuXG4gIHNldCh2aWV3TW9udGgsIG5ld01vbnRoKTtcbiAgc2V0KHZpZXdZZWFyLCBuZXdZZWFyKTtcblxuICBlbWl0KCd1cGRhdGU6cGFnZXMnLCBbeyB0aXRsZTogZ2V0KG1vbnRoVGl0bGUpIH1dKTtcbn1cblxuZnVuY3Rpb24gbW92ZShkYXRlOiBEYXRlIHwgbnVtYmVyKSB7XG4gIGNvbnN0IG5ld0RhdGUgPSBuZXcgRGF0ZShkYXRlKTtcbiAgc2V0KHZpZXdNb250aCwgbmV3RGF0ZS5nZXRNb250aCgpKTtcbiAgc2V0KHZpZXdZZWFyLCBuZXdEYXRlLmdldEZ1bGxZZWFyKCkpO1xufVxuXG5mdW5jdGlvbiBzZWxlY3RNb250aChzZWxlY3Rpb246IE1vbnRoWWVhclNlbGVjdGlvbikge1xuICBzZXQodmlld01vbnRoLCBzZWxlY3Rpb24ubW9udGgpO1xuICBzZXQodmlld1llYXIsIHNlbGVjdGlvbi55ZWFyKTtcbn1cblxud2F0Y2goW3NlbGVjdGVkRGF0ZV0sIChbZGF0ZV0pID0+IHtcbiAgaWYgKCFkYXRlICYmICFwcm9wcy5hbGxvd0VtcHR5KVxuICAgIHJldHVybjtcblxuICBpZiAoZGF0ZSkge1xuICAgIHNldChtb2RlbCwgbmV3IERhdGUoZGF0ZSkpO1xuXG4gICAgaWYgKGdldCh2aWV3TW9udGgpICE9PSBkYXRlLmdldE1vbnRoKCkpIHtcbiAgICAgIHNldCh2aWV3TW9udGgsIGRhdGUuZ2V0TW9udGgoKSk7XG4gICAgfVxuXG4gICAgaWYgKGdldCh2aWV3WWVhcikgIT09IGRhdGUuZ2V0RnVsbFllYXIoKSkge1xuICAgICAgc2V0KHZpZXdZZWFyLCBkYXRlLmdldEZ1bGxZZWFyKCkpO1xuICAgIH1cbiAgfVxuICBlbHNlIHtcbiAgICBzZXQobW9kZWwsIHVuZGVmaW5lZCk7XG4gIH1cbn0pO1xuXG53YXRjaChtb2RlbCwgKG5ld1ZhbHVlKSA9PiB7XG4gIGlmIChuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgc2V0KHNlbGVjdGVkRGF0ZSwgdW5kZWZpbmVkKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBkYXRlID0gbmV3IERhdGUobmV3VmFsdWUpO1xuXG4gIGlmIChpc0RlZmluZWQoc2VsZWN0ZWREYXRlKSAmJiBnZXQoc2VsZWN0ZWREYXRlKS5nZXRUaW1lKCkgIT09IGRhdGUuZ2V0VGltZSgpKSB7XG4gICAgc2V0KHNlbGVjdGVkRGF0ZSwgbmV3IERhdGUobmV3VmFsdWUpKTtcbiAgICBzZXQodmlld01vbnRoLCBkYXRlLmdldE1vbnRoKCkpO1xuICAgIHNldCh2aWV3WWVhciwgZGF0ZS5nZXRGdWxsWWVhcigpKTtcbiAgfVxufSk7XG5cbmRlZmluZUV4cG9zZSh7XG4gIG1vdmUsXG59KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICBjbGFzcz1cInJ1aS1jYWxlbmRhclwiXG4gICAgOmNsYXNzPVwieyBkYXJrOiBpc0RhcmssIGJvcmRlcmVkOiAhYm9yZGVybGVzcyB9XCJcbiAgPlxuICAgIDxSdWlDYWxlbmRhckhlYWRlclxuICAgICAgdi1tb2RlbDptZW51LW9wZW49XCJpc01lbnVPcGVuXCJcbiAgICAgIDp0aXRsZT1cIm1vbnRoVGl0bGVcIlxuICAgICAgOnZpZXctbW9udGg9XCJ2aWV3TW9udGhcIlxuICAgICAgOnZpZXcteWVhcj1cInZpZXdZZWFyXCJcbiAgICAgIEBwcmV2LW1vbnRoPVwibW92ZU1vbnRoKC0xKVwiXG4gICAgICBAbmV4dC1tb250aD1cIm1vdmVNb250aCgxKVwiXG4gICAgICBAc2VsZWN0LW1vbnRoPVwic2VsZWN0TW9udGgoJGV2ZW50KVwiXG4gICAgLz5cblxuICAgIDxSdWlDYWxlbmRhckdyaWRcbiAgICAgIHYtbW9kZWw9XCJzZWxlY3RlZERhdGVcIlxuICAgICAgOnZpZXctbW9udGg9XCJ2aWV3TW9udGhcIlxuICAgICAgOnZpZXcteWVhcj1cInZpZXdZZWFyXCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBsYW5nPVwic2Nzc1wiPlxuLnJ1aS1jYWxlbmRhciB7XG4gIEBhcHBseSB3LVsxOC43NXJlbV0gYmctd2hpdGUgb3ZlcmZsb3ctaGlkZGVuO1xuXG4gICYuYm9yZGVyZWQge1xuICAgIEBhcHBseSByb3VuZGVkLW1kIHNoYWRvdy1zbSBib3JkZXIgYm9yZGVyLXJ1aS1ncmV5LTIwMDtcbiAgfVxuXG4gICYuZGFyayB7XG4gICAgQGFwcGx5IGJnLXJ1aS1ncmV5LTkwMDtcblxuICAgICYuYm9yZGVyZWQge1xuICAgICAgQGFwcGx5IGJvcmRlci1ydWktZ3JleS04MDA7XG4gICAgfVxuICB9XG59XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvcHMge1xuICBkZW5zZT86IGJvb2xlYW47XG59XG5cbmRlZmluZU9wdGlvbnMoe1xuICBuYW1lOiAnUnVpQ2FyZEhlYWRlcicsXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG59KTtcblxud2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gIGRlbnNlOiBmYWxzZSxcbn0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICRzdHlsZS5oZWFkLFxuICAgICAge1xuICAgICAgICBbJHN0eWxlLmRlbnNlXTogZGVuc2UsXG4gICAgICAgIFskc3R5bGUuaGFzX3ByZXBlbmRdOiAhISRzbG90cy5wcmVwZW5kLFxuICAgICAgfSxcbiAgICBdXCJcbiAgICB2LWJpbmQ9XCIkYXR0cnNcIlxuICA+XG4gICAgPGRpdlxuICAgICAgdi1pZj1cIiRzbG90cy5wcmVwZW5kXCJcbiAgICAgIDpjbGFzcz1cIiRzdHlsZS5wcmVwZW5kXCJcbiAgICA+XG4gICAgICA8c2xvdCBuYW1lPVwicHJlcGVuZFwiIC8+XG4gICAgPC9kaXY+XG4gICAgPGRpdiA6Y2xhc3M9XCIkc3R5bGUuaGVhZGVyc1wiPlxuICAgICAgPGg1XG4gICAgICAgIHYtaWY9XCIkc2xvdHMuaGVhZGVyXCJcbiAgICAgICAgOmNsYXNzPVwiJHN0eWxlLmhlYWRlclwiXG4gICAgICA+XG4gICAgICAgIDxzbG90IG5hbWU9XCJoZWFkZXJcIiAvPlxuICAgICAgPC9oNT5cbiAgICAgIDxwXG4gICAgICAgIHYtaWY9XCIkc2xvdHMuc3ViaGVhZGVyXCJcbiAgICAgICAgOmNsYXNzPVwiJHN0eWxlLnN1YmhlYWRlclwiXG4gICAgICA+XG4gICAgICAgIDxzbG90IG5hbWU9XCJzdWJoZWFkZXJcIiAvPlxuICAgICAgPC9wPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBsYW5nPVwic2Nzc1wiIG1vZHVsZT5cbi5oZWFkIHtcbiAgQGFwcGx5IHAtNCBmbGV4IHNwYWNlLXgtNDtcblxuICAucHJlcGVuZCB7XG4gICAgQGFwcGx5IHJvdW5kZWQtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB3LTEwIGgtMTA7XG4gICAgQGFwcGx5IHRleHQtWzEuMjVyZW1dIHRleHQtd2hpdGUgYmctcnVpLWdyZXktNDAwIG92ZXJmbG93LWhpZGRlbjtcbiAgfVxuXG4gIC5oZWFkZXJzIHtcbiAgICBAYXBwbHkgZmxleCBmbGV4LWNvbCBqdXN0aWZ5LWNlbnRlcjtcbiAgfVxuXG4gIC5oZWFkZXIge1xuICAgIEBhcHBseSB0ZXh0LXJ1aS10ZXh0IHRleHQtaDY7XG4gIH1cblxuICAuc3ViaGVhZGVyIHtcbiAgICBAYXBwbHkgdGV4dC1ydWktdGV4dC1zZWNvbmRhcnkgdGV4dC1ib2R5LTIgbWItMDtcbiAgfVxuXG4gICYuaGFzX3ByZXBlbmQge1xuICAgIC5oZWFkZXIge1xuICAgICAgQGFwcGx5IHRleHQtYm9keS0xO1xuICAgIH1cbiAgfVxuXG4gICYuZGVuc2Uge1xuICAgIEBhcHBseSBwLTMgc3BhY2UteC0yO1xuXG4gICAgLnByZXBlbmQge1xuICAgICAgQGFwcGx5IHRleHQtYmFzZSBwLVswLjA4cmVtXSB3LTkgaC05O1xuICAgIH1cbiAgfVxufVxuXG46Z2xvYmFsKC5kYXJrKSB7XG4gIC5oZWFkIHtcbiAgICAucHJlcGVuZCB7XG4gICAgICBAYXBwbHkgYmctcnVpLWdyZXktNzAwIHRleHQtYmxhY2svOTA7XG4gICAgfVxuXG4gICAgLmhlYWRlciB7XG4gICAgICBAYXBwbHkgdGV4dC1ydWktZGFyay10ZXh0O1xuICAgIH1cblxuICAgIC5zdWJoZWFkZXIge1xuICAgICAgQGFwcGx5IHRleHQtcnVpLWRhcmstdGV4dC1zZWNvbmRhcnk7XG4gICAgfVxuICB9XG59XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSAndnVlJztcbmltcG9ydCBSdWlDYXJkSGVhZGVyIGZyb20gJ0AvY29tcG9uZW50cy9jYXJkcy9SdWlDYXJkSGVhZGVyLnZ1ZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvcHMge1xuICBkZW5zZT86IGJvb2xlYW47XG4gIGRpdmlkZT86IGJvb2xlYW47XG4gIGVsZXZhdGlvbj86IG51bWJlcjtcbiAgdmFyaWFudD86ICdmbGF0JyB8ICdvdXRsaW5lZCc7XG4gIHJvdW5kZWQ/OiAnc20nIHwgJ21kJyB8ICdsZyc7XG4gIG5vUGFkZGluZz86IGJvb2xlYW47XG4gIGNvbnRlbnRDbGFzcz86IHN0cmluZztcbn1cblxuZGVmaW5lT3B0aW9ucyh7XG4gIG5hbWU6ICdSdWlDYXJkJyxcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbn0pO1xuXG53aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgZGl2aWRlOiBmYWxzZSxcbiAgZGVuc2U6IGZhbHNlLFxuICBlbGV2YXRpb246IDAsXG4gIHZhcmlhbnQ6ICdvdXRsaW5lZCcsXG4gIHJvdW5kZWQ6ICdtZCcsXG4gIG5vUGFkZGluZzogZmFsc2UsXG4gIGNvbnRlbnRDbGFzczogJycsXG59KTtcblxuY29uc3Qgc2xvdHMgPSB1c2VTbG90cygpO1xuXG5jb25zdCBoYXNIZWFkQ29udGVudCA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+ICEhc2xvdHMuaGVhZGVyIHx8ICEhc2xvdHMuc3ViaGVhZGVyKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAkc3R5bGUuY2FyZCxcbiAgICAgIGBzaGFkb3ctJHtlbGV2YXRpb259YCxcbiAgICAgICRzdHlsZVtgcm91bmRlZF9fJHtyb3VuZGVkfWBdLFxuICAgICAge1xuICAgICAgICBbJHN0eWxlLm91dGxpbmVkXTogdmFyaWFudCA9PT0gJ291dGxpbmVkJyxcbiAgICAgICAgWyRzdHlsZS5kZW5zZV06IGRlbnNlLFxuICAgICAgICBbJHN0eWxlLmRpdmlkZV06IGRpdmlkZSxcbiAgICAgICAgWyRzdHlsZVsnbm8tcGFkZGluZyddXTogbm9QYWRkaW5nLFxuICAgICAgfSxcbiAgICBdXCJcbiAgICB2LWJpbmQ9XCIkYXR0cnNcIlxuICA+XG4gICAgPGRpdlxuICAgICAgdi1pZj1cInNsb3RzLmltYWdlXCJcbiAgICAgIDpjbGFzcz1cIiRzdHlsZS5pbWFnZVwiXG4gICAgPlxuICAgICAgPHNsb3QgbmFtZT1cImltYWdlXCIgLz5cbiAgICA8L2Rpdj5cbiAgICA8c2xvdCBuYW1lPVwiY3VzdG9tLWhlYWRlclwiPlxuICAgICAgPFJ1aUNhcmRIZWFkZXJcbiAgICAgICAgdi1pZj1cImhhc0hlYWRDb250ZW50XCJcbiAgICAgICAgOmRlbnNlPVwiZGVuc2VcIlxuICAgICAgPlxuICAgICAgICA8dGVtcGxhdGVcbiAgICAgICAgICB2LWlmPVwic2xvdHMucHJlcGVuZFwiXG4gICAgICAgICAgI3ByZXBlbmRcbiAgICAgICAgPlxuICAgICAgICAgIDxzbG90IG5hbWU9XCJwcmVwZW5kXCIgLz5cbiAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgPHRlbXBsYXRlXG4gICAgICAgICAgdi1pZj1cInNsb3RzLmhlYWRlclwiXG4gICAgICAgICAgI2hlYWRlclxuICAgICAgICA+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cImhlYWRlclwiIC8+XG4gICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgIDx0ZW1wbGF0ZVxuICAgICAgICAgIHYtaWY9XCJzbG90cy5zdWJoZWFkZXJcIlxuICAgICAgICAgICNzdWJoZWFkZXJcbiAgICAgICAgPlxuICAgICAgICAgIDxzbG90IG5hbWU9XCJzdWJoZWFkZXJcIiAvPlxuICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgPC9SdWlDYXJkSGVhZGVyPlxuICAgIDwvc2xvdD5cbiAgICA8ZGl2XG4gICAgICB2LWlmPVwic2xvdHMuZGVmYXVsdFwiXG4gICAgICA6Y2xhc3M9XCJbJHN0eWxlLmNvbnRlbnQsIGNvbnRlbnRDbGFzc11cIlxuICAgID5cbiAgICAgIDxzbG90IC8+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgdi1pZj1cInNsb3RzLmZvb3RlclwiXG4gICAgICA6Y2xhc3M9XCIkc3R5bGUuZm9vdGVyXCJcbiAgICA+XG4gICAgICA8c2xvdCBuYW1lPVwiZm9vdGVyXCIgLz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIiBtb2R1bGU+XG4uY2FyZCB7XG4gIEBhcHBseSBmbGV4IGZsZXgtY29sIGgtZnVsbCB3LWZ1bGwgYmctd2hpdGU7XG4gICYucm91bmRlZF9fc20ge1xuICAgIEBhcHBseSByb3VuZGVkLVsuMjVyZW1dO1xuXG4gICAgLmltYWdlIHtcbiAgICAgIEBhcHBseSByb3VuZGVkLXQtWy4yNXJlbV07XG4gICAgfVxuICB9XG5cbiAgJi5yb3VuZGVkX19tZCB7XG4gICAgQGFwcGx5IHJvdW5kZWQtWy41cmVtXTtcblxuICAgIC5pbWFnZSB7XG4gICAgICBAYXBwbHkgcm91bmRlZC10LVsuNXJlbV07XG4gICAgfVxuICB9XG5cbiAgJi5yb3VuZGVkX19sZyB7XG4gICAgQGFwcGx5IHJvdW5kZWQtWzFyZW1dO1xuXG4gICAgLmltYWdlIHtcbiAgICAgIEBhcHBseSByb3VuZGVkLXQtWzFyZW1dO1xuICAgIH1cbiAgfVxuXG4gIC5pbWFnZSB7XG4gICAgQGFwcGx5IG92ZXJmbG93LWhpZGRlbjtcbiAgfVxuXG4gIC5jb250ZW50IHtcbiAgICBAYXBwbHkgcC00IHRleHQtYm9keS0xIHRleHQtcnVpLWxpZ2h0LXRleHQgb3ZlcmZsb3cteS1hdXRvO1xuICB9XG5cbiAgLmZvb3RlciB7XG4gICAgQGFwcGx5IHAtNCBwdC0yIGZsZXggc3BhY2UteC0yIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LXN0YXJ0IG10LWF1dG87XG4gIH1cblxuICAmLmZsYXQge1xuICAgIEBhcHBseSBib3JkZXItbm9uZTtcbiAgfVxuXG4gICYub3V0bGluZWQge1xuICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLWJsYWNrL1swLjEyXTtcbiAgfVxuXG4gICYuZGl2aWRlIHtcbiAgICBAYXBwbHkgZGl2aWRlLXkgZGl2aWRlLWJsYWNrL1swLjEyXTtcbiAgfVxuXG4gICYuZGVuc2Uge1xuICAgID4gLmNvbnRlbnQge1xuICAgICAgQGFwcGx5IHAtMztcbiAgICB9XG5cbiAgICA+IC5mb290ZXIge1xuICAgICAgQGFwcGx5IHB5LTEgZmxleCBzcGFjZS14LTI7XG4gICAgfVxuICB9XG5cbiAgJi5uby1wYWRkaW5nIHtcbiAgICA+IC5jb250ZW50IHtcbiAgICAgIEBhcHBseSBwLTA7XG4gICAgfVxuICB9XG59XG5cbjpnbG9iYWwoLmRhcmspIHtcbiAgLmNhcmQge1xuICAgIEBhcHBseSBiZy1bIzFFMUUxRV07XG5cbiAgICAuY29udGVudCB7XG4gICAgICBAYXBwbHkgdGV4dC1ydWktZGFyay10ZXh0O1xuICAgIH1cblxuICAgICYub3V0bGluZWQge1xuICAgICAgQGFwcGx5IGJvcmRlci13aGl0ZS9bMC4xMl07XG4gICAgfVxuXG4gICAgJi5kaXZpZGUge1xuICAgICAgQGFwcGx5IGRpdmlkZS13aGl0ZS9bMC4xMl07XG4gICAgfVxuICB9XG59XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbmltcG9ydCB0eXBlIHsgU3R5bGVWYWx1ZSB9IGZyb20gJ3Z1ZSc7XG5pbXBvcnQgdHlwZSB7IENvbnRleHRDb2xvcnNUeXBlIH0gZnJvbSAnQC9jb25zdHMvY29sb3JzJztcbmltcG9ydCB0eXBlIHsgUnVpSWNvbnMgfSBmcm9tICdAL2ljb25zJztcbmltcG9ydCB7IGxvZ2ljTm90LCBsb2dpY09yIH0gZnJvbSAnQHZ1ZXVzZS9tYXRoJztcbmltcG9ydCB7IG9iamVjdE9taXQgfSBmcm9tICdAdnVldXNlL3NoYXJlZCc7XG5pbXBvcnQgUnVpSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvaWNvbnMvUnVpSWNvbi52dWUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BzIHtcbiAgdGlsZT86IGJvb2xlYW47XG4gIGNsaWNrYWJsZT86IGJvb2xlYW47XG4gIGNsb3NlYWJsZT86IGJvb2xlYW47XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgc2l6ZT86ICdzbScgfCAnbWQnO1xuICB2YXJpYW50PzogJ2ZpbGxlZCcgfCAnb3V0bGluZWQnO1xuICBjb2xvcj86ICdncmV5JyB8IENvbnRleHRDb2xvcnNUeXBlO1xuICBjbG9zZUljb24/OiBSdWlJY29ucztcbiAgYmdDb2xvcj86IHN0cmluZztcbiAgdGV4dENvbG9yPzogc3RyaW5nO1xuICBjb250ZW50Q2xhc3M/OiBzdHJpbmc7XG59XG5cbmRlZmluZU9wdGlvbnMoe1xuICBuYW1lOiAnUnVpQ2hpcCcsXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG59KTtcblxuY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgdGlsZTogZmFsc2UsXG4gIHNpemU6ICdtZCcsXG4gIGNvbG9yOiAnZ3JleScsXG4gIGNsaWNrYWJsZTogZmFsc2UsXG4gIGNsb3NlYWJsZTogZmFsc2UsXG4gIGRpc2FibGVkOiBmYWxzZSxcbiAgdmFyaWFudDogJ2ZpbGxlZCcsXG4gIGNsb3NlSWNvbjogJ2x1LWNpcmNsZS14JyxcbiAgYmdDb2xvcjogdW5kZWZpbmVkLFxuICB0ZXh0Q29sb3I6IHVuZGVmaW5lZCxcbiAgY29udGVudENsYXNzOiAnJyxcbn0pO1xuXG5jb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8e1xuICAoZXZlbnQ6ICdjbGljazpjbG9zZScpOiB2b2lkO1xuICAoZXZlbnQ6ICdjbGljaycsIGU6IGFueSk6IHZvaWQ7XG59PigpO1xuXG5jb25zdCB7IGNsaWNrYWJsZSwgZGlzYWJsZWQsIGJnQ29sb3IsIHRleHRDb2xvciB9ID0gdG9SZWZzKHByb3BzKTtcblxuZnVuY3Rpb24gY2xpY2soZTogYW55KSB7XG4gIGlmIChnZXQobG9naWNPcihsb2dpY05vdChjbGlja2FibGUpLCBkaXNhYmxlZCkpKVxuICAgIHJldHVybjtcblxuICBlbWl0KCdjbGljaycsIGUpO1xufVxuXG5jb25zdCBzdHlsZSA9IGNvbXB1dGVkPFBhcnRpYWw8U3R5bGVWYWx1ZT4+KCgpID0+IHtcbiAgY29uc3Qgc3R5bGU6IFBhcnRpYWw8U3R5bGVWYWx1ZT4gPSB7fTtcbiAgY29uc3QgYmcgPSBnZXQoYmdDb2xvcik7XG4gIGNvbnN0IHRleHQgPSBnZXQodGV4dENvbG9yKTtcbiAgaWYgKGJnKVxuICAgIHN0eWxlLmJhY2tncm91bmRDb2xvciA9IGJnO1xuXG4gIGlmICh0ZXh0KVxuICAgIHN0eWxlLmNvbG9yID0gdGV4dDtcblxuICByZXR1cm4gc3R5bGU7XG59KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAkc3R5bGUuY2hpcCxcbiAgICAgICRzdHlsZVtjb2xvciA/PyAnJ10sXG4gICAgICAkc3R5bGVbc2l6ZSA/PyAnJ10sXG4gICAgICAkc3R5bGVbdmFyaWFudCA/PyAnJ10sXG4gICAgICB7XG4gICAgICAgIFskc3R5bGUuZGlzYWJsZWRdOiBkaXNhYmxlZCxcbiAgICAgICAgWyRzdHlsZS50aWxlXTogdGlsZSxcbiAgICAgICAgWyRzdHlsZS5yZWFkb25seV06ICFjbGlja2FibGUsXG4gICAgICB9LFxuICAgIF1cIlxuICAgIDpzdHlsZT1cInN0eWxlXCJcbiAgICByb2xlPVwiYnV0dG9uXCJcbiAgICB0YWJpbmRleD1cIjBcIlxuICAgIHYtYmluZD1cIm9iamVjdE9taXQoJGF0dHJzLCBbJ29uQ2xpY2snXSlcIlxuICAgIEBjbGljaz1cImNsaWNrKCRldmVudClcIlxuICA+XG4gICAgPGRpdlxuICAgICAgdi1pZj1cIiRzbG90cy5wcmVwZW5kXCJcbiAgICAgIDpjbGFzcz1cIiRzdHlsZS5jaGlwX19wcmVwZW5kXCJcbiAgICA+XG4gICAgICA8c2xvdCBuYW1lPVwicHJlcGVuZFwiIC8+XG4gICAgPC9kaXY+XG4gICAgPHNwYW4gOmNsYXNzPVwiWyRzdHlsZS5jaGlwX19sYWJlbCwgY29udGVudENsYXNzXVwiPlxuICAgICAgPHNsb3QgLz5cbiAgICA8L3NwYW4+XG4gICAgPGJ1dHRvblxuICAgICAgdi1pZj1cImNsb3NlYWJsZVwiXG4gICAgICA6Y2xhc3M9XCIkc3R5bGUuY2hpcF9fY2xvc2VcIlxuICAgICAgOmRpc2FibGVkPVwiZGlzYWJsZWRcIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBAY2xpY2suc3RvcD1cImVtaXQoJ2NsaWNrOmNsb3NlJylcIlxuICAgID5cbiAgICAgIDxSdWlJY29uXG4gICAgICAgIDpjbGFzcz1cIiRzdHlsZS5jaGlwX19jbG9zZV9pY29uXCJcbiAgICAgICAgOnNpemU9XCJzaXplID09PSAnc20nID8gMTYgOiAyNFwiXG4gICAgICAgIDpuYW1lPVwiY2xvc2VJY29uXCJcbiAgICAgIC8+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgbW9kdWxlPlxuQHVzZSAnQC9zdHlsZXMvY29sb3JzLnNjc3MnIGFzIGM7XG5cbi5jaGlwIHtcbiAgQGFwcGx5IGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcm91bmRlZC1mdWxsIHB4LTEuNSBweS1bMC4yNXJlbV0gdHJhbnNpdGlvbi1hbGwgY3Vyc29yLWRlZmF1bHQgb3V0bGluZS1ub25lO1xuICBAYXBwbHkgbWF4LXctZnVsbCB0cnVuY2F0ZTtcblxuICAmLnRpbGUge1xuICAgIEBhcHBseSByb3VuZGVkLXNtO1xuICB9XG5cbiAgJjpub3QoLnJlYWRvbmx5KTpub3QoLmRpc2FibGVkKSB7XG4gICAgQGFwcGx5IGhvdmVyOmJyaWdodG5lc3MtOTAgZm9jdXM6YnJpZ2h0bmVzcy03NTtcbiAgfVxuXG4gICYuZ3JleSB7XG4gICAgQGFwcGx5IHRleHQtcnVpLXRleHQ7XG5cbiAgICAmLmZpbGxlZCB7XG4gICAgICBAYXBwbHkgYmctcnVpLWdyZXktMjAwO1xuICAgIH1cblxuICAgICYub3V0bGluZWQge1xuICAgICAgQGFwcGx5IGJvcmRlciBib3JkZXItYmxhY2svWzAuMjZdIGJnLXRyYW5zcGFyZW50O1xuXG4gICAgICAmOm5vdCgucmVhZG9ubHkpOm5vdCguZGlzYWJsZWQpIHtcbiAgICAgICAgQGFwcGx5IGhvdmVyOmJnLWJsYWNrL1swLjA0XSBmb2N1czpiZy1ibGFjay9bMC4xMl07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGVhY2ggJGNvbG9yIGluIGMuJGNvbnRleHQtY29sb3JzIHtcbiAgICAmLiN7JGNvbG9yfSB7XG4gICAgICAmLmZpbGxlZCB7XG4gICAgICAgIEBhcHBseSB0ZXh0LXJ1aS1kYXJrLXRleHQgYmctcnVpLSN7JGNvbG9yfTtcbiAgICAgIH1cblxuICAgICAgJi5vdXRsaW5lZCB7XG4gICAgICAgIEBhcHBseSBib3JkZXIgdGV4dC1ydWktI3skY29sb3J9IGJvcmRlci1ydWktI3skY29sb3J9LzUwIGJnLXRyYW5zcGFyZW50O1xuXG4gICAgICAgICY6bm90KC5yZWFkb25seSk6bm90KC5kaXNhYmxlZCkge1xuICAgICAgICAgIEBhcHBseSBob3ZlcjpiZy1ydWktI3skY29sb3J9L1swLjA0XSBmb2N1czpiZy1ydWktI3skY29sb3J9L1swLjEyXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICZfX3ByZXBlbmQge1xuICAgIEBhcHBseSByb3VuZGVkLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcHItMCB3LTYgaC02O1xuICAgIEBhcHBseSB0ZXh0LVswLjZyZW1dIHRleHQtd2hpdGUgYmctcnVpLWdyZXktNDAwIC1tbC0wLjUgb3ZlcmZsb3ctaGlkZGVuO1xuICB9XG5cbiAgJl9fbGFiZWwge1xuICAgIEBhcHBseSB0cnVuY2F0ZSBweC1bMC4zNzVyZW1dIHRleHQtWzAuODEyNXJlbV07XG4gIH1cblxuICAmX19jbG9zZSB7XG4gICAgQGFwcGx5IHJvdW5kZWQtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBwLVswLjEzcmVtXSBwbC0wO1xuICAgIEBhcHBseSBpbnNldC15LTAgZm9jdXM6b3V0bGluZS1ub25lIC1tci0xO1xuXG4gICAgJl9pY29uIHtcbiAgICAgIEBhcHBseSBvcGFjaXR5LTUwIGhvdmVyOm9wYWNpdHktODAgdHJhbnNpdGlvbi1vcGFjaXR5O1xuICAgIH1cbiAgfVxuXG4gICYubWQge1xuICAgIEBhcHBseSBtaW4taC1bMi4yNnJlbV07XG4gIH1cblxuICAmLnNtIHtcbiAgICBAYXBwbHkgcHktWzAuMTlyZW1dO1xuXG4gICAgJl9fcHJlcGVuZCB7XG4gICAgICBAYXBwbHkgdGV4dC1bMC41cmVtXSBwLVswLjA4cmVtXSB3LTQgaC00IC1tbC0xO1xuICAgIH1cblxuICAgICZfX2xhYmVsIHtcbiAgICAgIEBhcHBseSBweC1bMC4zcmVtXSB0ZXh0LVswLjdyZW1dO1xuICAgIH1cblxuICAgICZfX2Nsb3NlIHtcbiAgICAgIEBhcHBseSBwLVswLjA4cmVtXTtcbiAgICAgIEBhcHBseSAtbXItMS41O1xuICAgIH1cbiAgfVxuXG4gICYuZGlzYWJsZWQsXG4gICYucmVhZG9ubHkge1xuICAgIEBhcHBseSBjdXJzb3ItZGVmYXVsdDtcblxuICAgICZfX2Nsb3NlIHtcbiAgICAgIEBhcHBseSBjdXJzb3ItZGVmYXVsdDtcblxuICAgICAgJl9pY29uIHtcbiAgICAgICAgQGFwcGx5IG9wYWNpdHktNTA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJi5kaXNhYmxlZCB7XG4gICAgQGFwcGx5IG9wYWNpdHktNDA7XG4gIH1cbn1cblxuOmdsb2JhbCguZGFyaykge1xuICAuY2hpcCB7XG4gICAgJjpub3QoLnJlYWRvbmx5KTpub3QoLmRpc2FibGVkKSB7XG4gICAgICBAYXBwbHkgaG92ZXI6YnJpZ2h0bmVzcy0xMTAgZm9jdXM6YnJpZ2h0bmVzcy03NTtcbiAgICB9XG5cbiAgICAmLmdyZXkge1xuICAgICAgJi5maWxsZWQge1xuICAgICAgICBAYXBwbHkgYmctcnVpLWdyZXktODAwO1xuICAgICAgfVxuXG4gICAgICAmLm91dGxpbmVkIHtcbiAgICAgICAgQGFwcGx5IGJvcmRlci13aGl0ZS9bMC4yNl07XG5cbiAgICAgICAgJjpub3QoLnJlYWRvbmx5KTpub3QoLmRpc2FibGVkKSB7XG4gICAgICAgICAgQGFwcGx5IGhvdmVyOmJnLXdoaXRlL1swLjA0XSBmb2N1czpiZy13aGl0ZS9bMC4xMl07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBAZWFjaCAkY29sb3IgaW4gKHdhcm5pbmcsIHN1Y2Nlc3MsIGluZm8pIHtcbiAgICAgICYuI3skY29sb3J9IHtcbiAgICAgICAgJi5maWxsZWQge1xuICAgICAgICAgIEBhcHBseSB0ZXh0LXJ1aS1saWdodC10ZXh0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJl9fcHJlcGVuZCB7XG4gICAgICBAYXBwbHkgYmctcnVpLWdyZXktNzAwO1xuICAgIH1cblxuICAgICZfX2Nsb3NlIHtcbiAgICAgICZfaWNvbiB7XG4gICAgICAgIEBhcHBseSBob3Zlcjp0ZXh0LXJ1aS1ncmV5LTMwMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgdGlueWNvbG9yLCB7IHR5cGUgQ29sb3JJbnB1dCB9IGZyb20gJ3Rpbnljb2xvcjInO1xuXG5leHBvcnQgdHlwZSBDb2xvckZvcm1hdCA9ICdyZ2InIHwgJ2hleCc7XG5cbmV4cG9ydCBmdW5jdGlvbiByb3VuZFR3b0RlY2ltYWwobnVtOiBudW1iZXIpIHtcbiAgcmV0dXJuIE1hdGgucm91bmQobnVtICogMTAwKSAvIDEwMDtcbn1cblxuZXhwb3J0IGNsYXNzIENvbG9yIHtcbiAgaW5zdGFuY2U6IHRpbnljb2xvci5JbnN0YW5jZTtcbiAgYWxwaGFWYWx1ZSA9IDA7XG5cbiAgLy8gcmdiXG4gIHJlZFZhbHVlID0gMDtcbiAgZ3JlZW5WYWx1ZSA9IDA7XG4gIGJsdWVWYWx1ZSA9IDA7XG5cbiAgLy8gSFNWXG4gIGh1ZVZhbHVlID0gMDtcbiAgc2F0dXJhdGlvblZhbHVlID0gMDtcbiAgYnJpZ2h0bmVzc1ZhbHVlID0gMDtcblxuICAvLyBIU0xcbiAgaHNsU2F0dXJhdGlvblZhbHVlID0gMDtcbiAgbGlnaHRuZXNzVmFsdWUgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKGlucHV0PzogQ29sb3JJbnB1dCkge1xuICAgIHRoaXMuaW5zdGFuY2UgPSB0aW55Y29sb3IoaW5wdXQpO1xuXG4gICAgdGhpcy5pbml0UmdiKCk7XG4gICAgdGhpcy5pbml0SHNiKCk7XG4gICAgdGhpcy5pbml0TGlnaHRuZXNzKCk7XG4gICAgdGhpcy5pbml0QWxwaGEoKTtcbiAgfVxuXG4gIGluaXRBbHBoYSA9ICgpID0+IHtcbiAgICBjb25zdCBpbml0QWxwaGEgPSB0aGlzLmluc3RhbmNlLmdldEFscGhhKCk7XG4gICAgdGhpcy5hbHBoYVZhbHVlID0gTWF0aC5taW4oMSwgaW5pdEFscGhhKSAqIDEwMDtcbiAgfTtcblxuICBpbml0TGlnaHRuZXNzID0gKCkgPT4ge1xuICAgIGNvbnN0IHsgbCwgcyB9ID0gdGhpcy5pbnN0YW5jZS50b0hzbCgpO1xuICAgIHRoaXMuaHNsU2F0dXJhdGlvblZhbHVlID0gcm91bmRUd29EZWNpbWFsKHMpO1xuICAgIHRoaXMubGlnaHRuZXNzVmFsdWUgPSByb3VuZFR3b0RlY2ltYWwobCk7XG4gIH07XG5cbiAgaW5pdFJnYiA9ICgpID0+IHtcbiAgICBjb25zdCB7IGIsIGcsIHIgfSA9IHRoaXMuaW5zdGFuY2UudG9SZ2IoKTtcblxuICAgIHRoaXMucmVkVmFsdWUgPSByb3VuZFR3b0RlY2ltYWwocik7XG4gICAgdGhpcy5ncmVlblZhbHVlID0gcm91bmRUd29EZWNpbWFsKGcpO1xuICAgIHRoaXMuYmx1ZVZhbHVlID0gcm91bmRUd29EZWNpbWFsKGIpO1xuICB9O1xuXG4gIGluaXRIc2IgPSAoKSA9PiB7XG4gICAgY29uc3QgeyBoLCBzLCB2IH0gPSB0aGlzLmluc3RhbmNlLnRvSHN2KCk7XG5cbiAgICB0aGlzLmh1ZVZhbHVlID0gTWF0aC5taW4oMzYwLCBNYXRoLmNlaWwoaCkpO1xuICAgIHRoaXMuc2F0dXJhdGlvblZhbHVlID0gcm91bmRUd29EZWNpbWFsKHMpO1xuICAgIHRoaXMuYnJpZ2h0bmVzc1ZhbHVlID0gcm91bmRUd29EZWNpbWFsKHYpO1xuICB9O1xuXG4gIHRvU3RyaW5nKGZvcm1hdD86IENvbG9yRm9ybWF0KSB7XG4gICAgcmV0dXJuIHRoaXMuaW5zdGFuY2UudG9TdHJpbmcoZm9ybWF0KTtcbiAgfVxuXG4gIGdldCBoZXhTdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5zdGFuY2UudG9IZXhTdHJpbmcoKTtcbiAgfTtcblxuICBnZXQgaGV4KCkge1xuICAgIHJldHVybiB0aGlzLmluc3RhbmNlLnRvSGV4KCk7XG4gIH1cblxuICBzZXQgaGV4KGhleFN0cmluZzogc3RyaW5nKSB7XG4gICAgdGhpcy5pbnN0YW5jZSA9IHRpbnljb2xvcihoZXhTdHJpbmcpO1xuICAgIHRoaXMuaW5pdEhzYigpO1xuICAgIHRoaXMuaW5pdFJnYigpO1xuICAgIHRoaXMuaW5pdEFscGhhKCk7XG4gICAgdGhpcy5pbml0TGlnaHRuZXNzKCk7XG4gIH1cblxuICBzZXQgaHVlKHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5zYXR1cmF0aW9uID09PSAwICYmIHRoaXMuYnJpZ2h0bmVzcyA9PT0gMCkge1xuICAgICAgdGhpcy5zYXR1cmF0aW9uVmFsdWUgPSAxO1xuICAgICAgdGhpcy5icmlnaHRuZXNzVmFsdWUgPSAxO1xuICAgIH1cbiAgICB0aGlzLmluc3RhbmNlID0gdGlueWNvbG9yKHtcbiAgICAgIGE6IHRoaXMuYWxwaGFWYWx1ZSAvIDEwMCxcbiAgICAgIGg6IHJvdW5kVHdvRGVjaW1hbCh2YWx1ZSksXG4gICAgICBzOiB0aGlzLnNhdHVyYXRpb24sXG4gICAgICB2OiB0aGlzLmJyaWdodG5lc3MsXG4gICAgfSk7XG5cbiAgICB0aGlzLmluaXRSZ2IoKTtcbiAgICB0aGlzLmluaXRMaWdodG5lc3MoKTtcbiAgICB0aGlzLmh1ZVZhbHVlID0gcm91bmRUd29EZWNpbWFsKHZhbHVlKTtcbiAgfVxuXG4gIGdldCBodWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaHVlVmFsdWU7XG4gIH1cblxuICBzZXQgc2F0dXJhdGlvbih2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5pbnN0YW5jZSA9IHRpbnljb2xvcih7XG4gICAgICBhOiB0aGlzLmFscGhhVmFsdWUgLyAxMDAsXG4gICAgICBoOiB0aGlzLmh1ZSxcbiAgICAgIHM6IHJvdW5kVHdvRGVjaW1hbCh2YWx1ZSksXG4gICAgICB2OiB0aGlzLmJyaWdodG5lc3MsXG4gICAgfSk7XG5cbiAgICB0aGlzLmluaXRSZ2IoKTtcbiAgICB0aGlzLmluaXRMaWdodG5lc3MoKTtcbiAgICB0aGlzLnNhdHVyYXRpb25WYWx1ZSA9IHJvdW5kVHdvRGVjaW1hbCh2YWx1ZSk7XG4gIH1cblxuICBnZXQgc2F0dXJhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zYXR1cmF0aW9uVmFsdWU7XG4gIH1cblxuICBzZXQgYnJpZ2h0bmVzcyh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5pbnN0YW5jZSA9IHRpbnljb2xvcih7XG4gICAgICBhOiB0aGlzLmFscGhhVmFsdWUgLyAxMDAsXG4gICAgICBoOiB0aGlzLmh1ZSxcbiAgICAgIHM6IHRoaXMuc2F0dXJhdGlvbixcbiAgICAgIHY6IHJvdW5kVHdvRGVjaW1hbCh2YWx1ZSksXG4gICAgfSk7XG5cbiAgICB0aGlzLmluaXRSZ2IoKTtcbiAgICB0aGlzLmluaXRMaWdodG5lc3MoKTtcbiAgICB0aGlzLmJyaWdodG5lc3NWYWx1ZSA9IHJvdW5kVHdvRGVjaW1hbCh2YWx1ZSk7XG4gIH1cblxuICBnZXQgYnJpZ2h0bmVzcygpIHtcbiAgICByZXR1cm4gdGhpcy5icmlnaHRuZXNzVmFsdWU7XG4gIH1cblxuICBzZXQgcmVkKHZhbHVlOiBudW1iZXIpIHtcbiAgICBjb25zdCByZ2IgPSB0aGlzLmluc3RhbmNlLnRvUmdiKCk7XG4gICAgdGhpcy5pbnN0YW5jZSA9IHRpbnljb2xvcih7XG4gICAgICAuLi5yZ2IsXG4gICAgICBhOiB0aGlzLmFscGhhVmFsdWUgLyAxMDAsXG4gICAgICByOiByb3VuZFR3b0RlY2ltYWwodmFsdWUpLFxuICAgIH0pO1xuXG4gICAgdGhpcy5pbml0SHNiKCk7XG4gICAgdGhpcy5pbml0TGlnaHRuZXNzKCk7XG4gICAgdGhpcy5yZWRWYWx1ZSA9IHJvdW5kVHdvRGVjaW1hbCh2YWx1ZSk7XG4gIH1cblxuICBnZXQgcmVkKCkge1xuICAgIHJldHVybiB0aGlzLnJlZFZhbHVlO1xuICB9XG5cbiAgc2V0IGdyZWVuKHZhbHVlOiBudW1iZXIpIHtcbiAgICBjb25zdCByZ2IgPSB0aGlzLmluc3RhbmNlLnRvUmdiKCk7XG4gICAgdGhpcy5pbnN0YW5jZSA9IHRpbnljb2xvcih7XG4gICAgICAuLi5yZ2IsXG4gICAgICBhOiB0aGlzLmFscGhhVmFsdWUgLyAxMDAsXG4gICAgICBnOiByb3VuZFR3b0RlY2ltYWwodmFsdWUpLFxuICAgIH0pO1xuXG4gICAgdGhpcy5pbml0SHNiKCk7XG4gICAgdGhpcy5pbml0TGlnaHRuZXNzKCk7XG4gICAgdGhpcy5ncmVlblZhbHVlID0gcm91bmRUd29EZWNpbWFsKHZhbHVlKTtcbiAgfVxuXG4gIGdldCBncmVlbigpIHtcbiAgICByZXR1cm4gdGhpcy5ncmVlblZhbHVlO1xuICB9XG5cbiAgc2V0IGJsdWUodmFsdWU6IG51bWJlcikge1xuICAgIGNvbnN0IHJnYiA9IHRoaXMuaW5zdGFuY2UudG9SZ2IoKTtcbiAgICB0aGlzLmluc3RhbmNlID0gdGlueWNvbG9yKHtcbiAgICAgIC4uLnJnYixcbiAgICAgIGE6IHRoaXMuYWxwaGFWYWx1ZSAvIDEwMCxcbiAgICAgIGI6IHJvdW5kVHdvRGVjaW1hbCh2YWx1ZSksXG4gICAgfSk7XG5cbiAgICB0aGlzLmluaXRIc2IoKTtcbiAgICB0aGlzLmluaXRMaWdodG5lc3MoKTtcbiAgICB0aGlzLmJsdWVWYWx1ZSA9IHJvdW5kVHdvRGVjaW1hbCh2YWx1ZSk7XG4gIH1cblxuICBnZXQgYmx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5ibHVlVmFsdWU7XG4gIH1cblxuICBnZXQgcmdiKCk6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSB7XG4gICAgcmV0dXJuIFt0aGlzLnJlZCwgdGhpcy5ncmVlbiwgdGhpcy5ibHVlXTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlRWxlbWVudERyYWcoaGFuZGxlcjogKHg6IG51bWJlciwgeTogbnVtYmVyKSA9PiBhbnkpIHtcbiAgZnVuY3Rpb24gaGFuZGxlQ2xpY2soZTogeyBjbGllbnRYOiBudW1iZXI7IGNsaWVudFk6IG51bWJlciB9KSB7XG4gICAgaGFuZGxlcihlLmNsaWVudFgsIGUuY2xpZW50WSk7XG4gIH1cblxuICBmdW5jdGlvbiBvbk1vdXNlRG93bihlOiBNb3VzZUV2ZW50KSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIGhhbmRsZUNsaWNrKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU1vdXNlVXApO1xuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlTW91c2VVcCgpIHtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgaGFuZGxlQ2xpY2spO1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgaGFuZGxlTW91c2VVcCk7XG4gIH1cblxuICBvblVubW91bnRlZCgoKSA9PiB7XG4gICAgaGFuZGxlTW91c2VVcCgpO1xuICB9KTtcblxuICByZXR1cm4ge1xuICAgIGhhbmRsZUNsaWNrLFxuICAgIG9uTW91c2VEb3duLFxuICB9O1xufVxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbmltcG9ydCB7IGNsYW1wIH0gZnJvbSAnQHZ1ZXVzZS9zaGFyZWQnO1xuaW1wb3J0IHsgQ29sb3IsIHVzZUVsZW1lbnREcmFnIH0gZnJvbSAnLi91dGlscyc7XG5cbmRlZmluZU9wdGlvbnMoe1xuICBuYW1lOiAnUnVpQ29sb3JCb2FyZCcsXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG59KTtcblxuY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wczx7XG4gIGNvbG9yOiBDb2xvcjtcbn0+KCk7XG5cbmNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czx7XG4gIChlOiAndXBkYXRlOmJvYXJkJywgZXZlbnQ6IHsgc2F0dXJhdGlvbjogbnVtYmVyOyBicmlnaHRuZXNzOiBudW1iZXIgfSk6IHZvaWQ7XG59PigpO1xuXG5mdW5jdGlvbiBodWVUb0hleChodWU6IG51bWJlcikge1xuICByZXR1cm4gbmV3IENvbG9yKHsgaDogaHVlLCBzOiAxLCB2OiAxIH0pLmhleFN0cmluZztcbn1cblxuY29uc3Qgc3RhdGUgPSByZWFjdGl2ZSh7XG4gIGhleFN0cmluZzogaHVlVG9IZXgocHJvcHMuY29sb3IuaHVlKSxcbiAgc2F0dXJhdGlvbjogcHJvcHMuY29sb3Iuc2F0dXJhdGlvbixcbiAgYnJpZ2h0bmVzczogcHJvcHMuY29sb3IuYnJpZ2h0bmVzcyxcbn0pO1xuXG5jb25zdCBjdXJzb3JUb3AgPSByZWY8bnVtYmVyPigwKTtcbmNvbnN0IGN1cnNvckxlZnQgPSByZWY8bnVtYmVyPigwKTtcblxuY29uc3QgY3Vyc29yU3R5bGUgPSBjb21wdXRlZCgoKSA9PiAoe1xuICB0b3A6IGAke2dldChjdXJzb3JUb3ApICogMTAwfSVgLFxuICBsZWZ0OiBgJHtnZXQoY3Vyc29yTGVmdCkgKiAxMDB9JWAsXG59KSk7XG5cbmNvbnN0IHdyYXBwZXIgPSByZWY8SFRNTEVsZW1lbnQ+KCk7XG5cbmZ1bmN0aW9uIHVwZGF0ZVBvc2l0aW9uKCkge1xuICBzZXQoY3Vyc29yTGVmdCwgc3RhdGUuc2F0dXJhdGlvbik7XG4gIHNldChjdXJzb3JUb3AsICgxIC0gc3RhdGUuYnJpZ2h0bmVzcykpO1xufVxuXG5jb25zdCBpbnN0YW5jZSA9IGdldEN1cnJlbnRJbnN0YW5jZSgpO1xuXG5jb25zdCB7XG4gIGhhbmRsZUNsaWNrLFxuICBvbk1vdXNlRG93bixcbn0gPSB1c2VFbGVtZW50RHJhZyhlbWl0Q29sb3IpO1xuXG5mdW5jdGlvbiBlbWl0Q29sb3IoeDogbnVtYmVyLCB5OiBudW1iZXIpIHtcbiAgaWYgKCFpbnN0YW5jZSlcbiAgICByZXR1cm47XG5cbiAgY29uc3QgZWwgPSBpbnN0YW5jZS52bm9kZS5lbDtcbiAgY29uc3QgcmVjdCA9IGVsPy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICBpZiAoIXJlY3QpXG4gICAgcmV0dXJuO1xuXG4gIGNvbnN0IHsgd2lkdGgsIGhlaWdodCwgbGVmdCwgdG9wIH0gPSByZWN0O1xuICBsZXQgY2FsY3VsYXRlZFggPSB4IC0gbGVmdDtcbiAgbGV0IGNhbGN1bGF0ZWRZID0geSAtIHRvcDtcblxuICBjYWxjdWxhdGVkWCA9IGNsYW1wKGNhbGN1bGF0ZWRYLCAwLCB3aWR0aCk7XG4gIGNhbGN1bGF0ZWRZID0gY2xhbXAoY2FsY3VsYXRlZFksIDAsIGhlaWdodCk7XG5cbiAgY29uc3Qgc2F0dXJhdGlvbiA9IGNhbGN1bGF0ZWRYIC8gd2lkdGg7XG4gIGNvbnN0IGJyaWdodG5lc3MgPSBjbGFtcCgtKGNhbGN1bGF0ZWRZIC8gaGVpZ2h0KSArIDEsIDAsIDEpO1xuXG4gIHNldChjdXJzb3JMZWZ0LCBjYWxjdWxhdGVkWCAvIHdpZHRoKTtcbiAgc2V0KGN1cnNvclRvcCwgY2FsY3VsYXRlZFkgLyBoZWlnaHQpO1xuXG4gIHN0YXRlLnNhdHVyYXRpb24gPSBzYXR1cmF0aW9uO1xuICBzdGF0ZS5icmlnaHRuZXNzID0gYnJpZ2h0bmVzcztcblxuICBlbWl0KCd1cGRhdGU6Ym9hcmQnLCB7IHNhdHVyYXRpb24sIGJyaWdodG5lc3MgfSk7XG59XG5cbm9uTW91bnRlZCgoKSA9PiB7XG4gIHVwZGF0ZVBvc2l0aW9uKCk7XG59KTtcblxud2hlbmV2ZXIoXG4gICgpID0+IHByb3BzLmNvbG9yLFxuICAodmFsdWUpID0+IHtcbiAgICBzdGF0ZS5oZXhTdHJpbmcgPSBodWVUb0hleCh2YWx1ZS5odWUpO1xuICAgIHN0YXRlLnNhdHVyYXRpb24gPSB2YWx1ZS5zYXR1cmF0aW9uO1xuICAgIHN0YXRlLmJyaWdodG5lc3MgPSB2YWx1ZS5icmlnaHRuZXNzO1xuICAgIHVwZGF0ZVBvc2l0aW9uKCk7XG4gIH0sXG4gIHsgZGVlcDogdHJ1ZSB9LFxuKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICByZWY9XCJ3cmFwcGVyXCJcbiAgICBjbGFzcz1cInJ1aS1jb2xvci1ib2FyZFwiXG4gICAgOmNsYXNzPVwiJHN0eWxlLnNhdHVyYXRpb25cIlxuICAgIHYtYmluZD1cIiRhdHRyc1wiXG4gICAgOnN0eWxlPVwieyBiYWNrZ3JvdW5kQ29sb3I6IHN0YXRlLmhleFN0cmluZyB9XCJcbiAgICBAY2xpY2s9XCJoYW5kbGVDbGljaygkZXZlbnQpXCJcbiAgICBAbW91c2Vkb3duPVwib25Nb3VzZURvd24oJGV2ZW50KVwiXG4gID5cbiAgICA8ZGl2IDpjbGFzcz1cIiRzdHlsZS5zYXR1cmF0aW9uX193aGl0ZVwiIC8+XG4gICAgPGRpdiA6Y2xhc3M9XCIkc3R5bGUuc2F0dXJhdGlvbl9fYmxhY2tcIiAvPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIiRzdHlsZS5jdXJzb3JcIlxuICAgICAgOnN0eWxlPVwiY3Vyc29yU3R5bGVcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgbW9kdWxlPlxuLnNhdHVyYXRpb24ge1xuICBAYXBwbHkgcmVsYXRpdmUgdy1mdWxsIGgtNDAgb3ZlcmZsb3ctaGlkZGVuIGN1cnNvci1wb2ludGVyO1xuXG4gICZfX3doaXRlLFxuICAmX19ibGFjayB7XG4gICAgQGFwcGx5IGFic29sdXRlIHRvcC0wIGxlZnQtMCByaWdodC0wIGJvdHRvbS0wIHRvLXRyYW5zcGFyZW50O1xuICB9XG5cbiAgJl9fYmxhY2sge1xuICAgIEBhcHBseSBiZy1ncmFkaWVudC10by10IGZyb20tYmxhY2s7XG4gIH1cblxuICAmX193aGl0ZSB7XG4gICAgQGFwcGx5IGJnLWdyYWRpZW50LXRvLXIgZnJvbS13aGl0ZTtcbiAgfVxufVxuXG4uY3Vyc29yIHtcbiAgQGFwcGx5IGFic29sdXRlIHctNSBoLTUgdHJhbnNmb3JtIC10cmFuc2xhdGUteC0xLzIgLXRyYW5zbGF0ZS15LTEvMiBib3JkZXItMiBib3JkZXItd2hpdGUgc2hhZG93IHJvdW5kZWQtZnVsbDtcblxuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBAYXBwbHkgYWJzb2x1dGUgdy1mdWxsIGgtZnVsbCByb3VuZGVkLWZ1bGwgYm9yZGVyLTIgYm9yZGVyLWJsYWNrLzE1O1xuICB9XG59XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IHR5cGUgUG9wcGVyT3B0aW9ucywgdXNlUG9wcGVyIH0gZnJvbSAnQC9jb21wb3NhYmxlcy9wb3BwZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BzIHtcbiAgdGV4dD86IHN0cmluZyB8IG51bGw7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgaGlkZUFycm93PzogYm9vbGVhbjtcbiAgb3BlbkRlbGF5PzogbnVtYmVyO1xuICBjbG9zZURlbGF5PzogbnVtYmVyO1xuICBwZXJzaXN0T25Ub29sdGlwSG92ZXI/OiBib29sZWFuO1xuICBwb3BwZXI/OiBQb3BwZXJPcHRpb25zO1xuICB0b29sdGlwQ2xhc3M/OiBzdHJpbmc7XG59XG5cbmRlZmluZU9wdGlvbnMoe1xuICBuYW1lOiAnUnVpVG9vbHRpcCcsXG59KTtcblxuY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgdGV4dDogbnVsbCxcbiAgZGlzYWJsZWQ6IGZhbHNlLFxuICBoaWRlQXJyb3c6IGZhbHNlLFxuICBvcGVuRGVsYXk6IDAsXG4gIGNsb3NlRGVsYXk6IDUwMCxcbiAgcGVyc2lzdE9uVG9vbHRpcEhvdmVyOiBmYWxzZSxcbiAgcG9wcGVyOiAoKSA9PiAoe30pLFxuICB0b29sdGlwQ2xhc3M6ICcnLFxufSk7XG5cbmNvbnN0IHsgY2xvc2VEZWxheSwgb3BlbkRlbGF5LCBwb3BwZXIsIGRpc2FibGVkIH0gPSB0b1JlZnMocHJvcHMpO1xuXG5jb25zdCB7XG4gIHJlZmVyZW5jZTogYWN0aXZhdG9yLFxuICBwb3BwZXI6IHRvb2x0aXAsXG4gIG9wZW4sXG4gIHBvcHBlckVudGVyLFxuICBvbk9wZW4sXG4gIG9uQ2xvc2UsXG4gIG9uUG9wcGVyTGVhdmUsXG4gIHVwZGF0ZVBvcHBlcixcbn0gPSB1c2VQb3BwZXIocG9wcGVyLCBkaXNhYmxlZCwgb3BlbkRlbGF5LCBjbG9zZURlbGF5KTtcblxuZGVmaW5lRXhwb3NlKHtcbiAgb25PcGVuLFxuICBvbkNsb3NlLFxufSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgcmVmPVwiYWN0aXZhdG9yXCJcbiAgICA6Y2xhc3M9XCIkc3R5bGUud3JhcHBlclwiXG4gICAgOmRhdGEtdG9vbHRpcC1kaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICBAbW91c2VvdmVyPVwib25PcGVuKClcIlxuICAgIEBtb3VzZWxlYXZlPVwib25DbG9zZSgpXCJcbiAgICBAZm9jdXNpbj1cIm9uT3BlbigpXCJcbiAgICBAZm9jdXNvdXQ9XCJvbkNsb3NlKClcIlxuICA+XG4gICAgPHNsb3RcbiAgICAgIG5hbWU9XCJhY3RpdmF0b3JcIlxuICAgICAgOm9wZW49XCJvcGVuXCJcbiAgICAgIDpjbG9zZT1cIm9uQ2xvc2VcIlxuICAgIC8+XG5cbiAgICA8VGVsZXBvcnRcbiAgICAgIHYtaWY9XCIhZGlzYWJsZWRcIlxuICAgICAgdG89XCJib2R5XCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIHYtaWY9XCJwb3BwZXJFbnRlclwiXG4gICAgICAgIHJlZj1cInRvb2x0aXBcIlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJHN0eWxlLnRvb2x0aXAsXG4gICAgICAgICAgdG9vbHRpcENsYXNzLFxuICAgICAgICAgICRzdHlsZVtgdG9vbHRpcF9fJHtwb3BwZXI/LnN0cmF0ZWd5ID8/ICdhYnNvbHV0ZSd9YF0sXG4gICAgICAgIF1cIlxuICAgICAgICByb2xlPVwidG9vbHRpcFwiXG4gICAgICA+XG4gICAgICAgIDxUcmFuc2l0aW9uR3JvdXBcbiAgICAgICAgICBlbnRlci1hY3RpdmUtY2xhc3M9XCJ0cmFuc2l0aW9uIGVhc2Utb3V0IGR1cmF0aW9uLTIwMFwiXG4gICAgICAgICAgZW50ZXItZnJvbS1jbGFzcz1cIm9wYWNpdHktMCB0cmFuc2xhdGUteS0xXCJcbiAgICAgICAgICBlbnRlci10by1jbGFzcz1cIm9wYWNpdHktMTAwIHRyYW5zbGF0ZS15LTBcIlxuICAgICAgICAgIGxlYXZlLWFjdGl2ZS1jbGFzcz1cInRyYW5zaXRpb24gZWFzZS1pbiBkdXJhdGlvbi0xNTBcIlxuICAgICAgICAgIGxlYXZlLWZyb20tY2xhc3M9XCJvcGFjaXR5LTEwMCB0cmFuc2xhdGUteS0wXCJcbiAgICAgICAgICBsZWF2ZS10by1jbGFzcz1cIm9wYWNpdHktMCB0cmFuc2xhdGUteS0xXCJcbiAgICAgICAgICBAYmVmb3JlLWVudGVyPVwidXBkYXRlUG9wcGVyKClcIlxuICAgICAgICAgIEBhZnRlci1sZWF2ZT1cIm9uUG9wcGVyTGVhdmUoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICB2LWlmPVwib3BlblwiXG4gICAgICAgICAgICBrZXk9XCJ0b29sdGlwXCJcbiAgICAgICAgICAgIDpjbGFzcz1cIiRzdHlsZS5iYXNlXCJcbiAgICAgICAgICAgIHJvbGU9XCJ0b29sdGlwLWNvbnRlbnRcIlxuICAgICAgICAgICAgQG1vdXNlb3Zlcj1cInBlcnNpc3RPblRvb2x0aXBIb3ZlciAmJiBvbk9wZW4oKVwiXG4gICAgICAgICAgICBAbW91c2VsZWF2ZT1cInBlcnNpc3RPblRvb2x0aXBIb3ZlciAmJiBvbkNsb3NlKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzbG90PlxuICAgICAgICAgICAgICB7eyB0ZXh0IH19XG4gICAgICAgICAgICA8L3Nsb3Q+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIHYtaWY9XCIhaGlkZUFycm93XCJcbiAgICAgICAgICAgIDpjbGFzcz1cIlskc3R5bGUuYXJyb3csIHsgWyRzdHlsZS5hcnJvd19fb3BlbiA/PyAnJ106IG9wZW4gfV1cIlxuICAgICAgICAgICAgZGF0YS1wb3BwZXItYXJyb3dcbiAgICAgICAgICAvPlxuICAgICAgICA8L1RyYW5zaXRpb25Hcm91cD5cbiAgICAgIDwvZGl2PlxuICAgIDwvVGVsZXBvcnQ+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgbW9kdWxlPlxuJGFycm93U2l6ZTogMC42MjVyZW07XG4ud3JhcHBlciB7XG4gIEBhcHBseSByZWxhdGl2ZSBpbmxpbmUtZmxleDtcbn1cblxuLnRvb2x0aXAge1xuICBAYXBwbHkgdy1tYXggdHJhbnNmb3JtIHRyYW5zaXRpb24tb3BhY2l0eSBkZWxheS0wIHotWzk5OTldO1xuXG4gICZfX2ZpeGVkIHtcbiAgICBAYXBwbHkgZml4ZWQ7XG4gIH1cblxuICAmX19hYnNvbHV0ZSB7XG4gICAgQGFwcGx5IGFic29sdXRlO1xuICB9XG5cbiAgLmJhc2Uge1xuICAgIEBhcHBseSBweC0yIHB5LTEgdGV4dC14cyBmb250LW5vcm1hbDtcbiAgICBAYXBwbHkgYmctcnVpLWdyZXktNzAwLzkwIHRleHQtd2hpdGUgcm91bmRlZCBzaGFkb3c7XG4gIH1cblxuICAuYXJyb3cge1xuICAgIEBhcHBseSB3LTIuNSBoLTIuNSB0cmFuc2l0aW9uLW9wYWNpdHkgb3BhY2l0eS0wO1xuXG4gICAgJl9fb3BlbiB7XG4gICAgICBAYXBwbHkgb3BhY2l0eS0xMDA7XG4gICAgfVxuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIEBhcHBseSBibG9jayBib3JkZXItWzAuMzEyNXJlbV0gb3JpZ2luLWNlbnRlcjtcbiAgICAgIEBhcHBseSBib3JkZXItbC10cmFuc3BhcmVudCBib3JkZXItYi10cmFuc3BhcmVudCBib3JkZXItdC1ydWktZ3JleS03MDAvOTAgYm9yZGVyLXItcnVpLWdyZXktNzAwLzkwO1xuXG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIGJvcmRlci1yYWRpdXM6IDAgMC4xMjVyZW0gMCAwO1xuICAgIH1cbiAgfVxuXG4gICZbZGF0YS1wb3BwZXItcGxhY2VtZW50Kj0nYm90dG9tJ10gLmFycm93IHtcbiAgICB0b3A6IGNhbGMoMC41cHggLSAjeyRhcnJvd1NpemV9IC8gMik7XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgQGFwcGx5IC1yb3RhdGUtNDU7XG4gICAgfVxuICB9XG5cbiAgJltkYXRhLXBvcHBlci1wbGFjZW1lbnQqPSd0b3AnXSAuYXJyb3cge1xuICAgIGJvdHRvbTogY2FsYygwLjVweCAtICN7JGFycm93U2l6ZX0gLyAyKTtcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICBAYXBwbHkgcm90YXRlLVsxMzVkZWddO1xuICAgIH1cbiAgfVxuXG4gICZbZGF0YS1wb3BwZXItcGxhY2VtZW50Kj0nbGVmdCddIC5hcnJvdyB7XG4gICAgcmlnaHQ6IGNhbGMoMC41cHggLSAjeyRhcnJvd1NpemV9IC8gMik7XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgQGFwcGx5IHJvdGF0ZS00NTtcbiAgICB9XG4gIH1cblxuICAmW2RhdGEtcG9wcGVyLXBsYWNlbWVudCo9J3JpZ2h0J10gLmFycm93IHtcbiAgICBsZWZ0OiBjYWxjKDAuNXB4IC0gI3skYXJyb3dTaXplfSAvIDIpO1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIEBhcHBseSAtcm90YXRlLVsxMzVkZWddO1xuICAgIH1cbiAgfVxufVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgc2V0dXAgbGFuZz0ndHMnPlxuaW1wb3J0IFJ1aVRvb2x0aXAgZnJvbSAnQC9jb21wb25lbnRzL292ZXJsYXlzL3Rvb2x0aXAvUnVpVG9vbHRpcC52dWUnO1xuXG5kZWZpbmVPcHRpb25zKHtcbiAgbmFtZTogJ1J1aUNvbG9yRGlzcGxheScsXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG59KTtcblxuY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wczx7XG4gIGNvbG9yOiBzdHJpbmc7XG59PigpO1xuXG5jb25zdCB7IGNvbG9yIH0gPSB0b1JlZnMocHJvcHMpO1xuXG5jb25zdCB7IGNvcHksIGNvcGllZCB9ID0gdXNlQ2xpcGJvYXJkKHsgc291cmNlOiBjb2xvciB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxSdWlUb29sdGlwXG4gICAgOnBvcHBlcj1cInsgcGxhY2VtZW50OiAndG9wJyB9XCJcbiAgICA6Y2xvc2UtZGVsYXk9XCI0MDBcIlxuICAgIHRvb2x0aXAtY2xhc3M9XCJ0ZXh0LWNlbnRlclwiXG4gICAgdi1iaW5kPVwiJGF0dHJzXCJcbiAgPlxuICAgIDx0ZW1wbGF0ZSAjYWN0aXZhdG9yPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInctOCBoLTggbWluLXctOCBtaW4taC04IHJvdW5kZWQtZnVsbCBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgIGRhdGEtY3k9XCJjb2xvci1kaXNwbGF5XCJcbiAgICAgICAgOnN0eWxlPVwieyBiYWNrZ3JvdW5kOiBjb2xvciB9XCJcbiAgICAgICAgQGNsaWNrPVwiY29weSgpXCJcbiAgICAgIC8+XG4gICAgPC90ZW1wbGF0ZT5cbiAgICA8ZGl2IDpjbGFzcz1cInsgJ2gtMCBvdmVyZmxvdy1oaWRkZW4nOiBjb3BpZWQgfVwiPlxuICAgICAgQ2xpY2sgdG8gY29weVxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIHYtaWY9XCJjb3BpZWRcIlxuICAgICAgY2xhc3M9XCJ0ZXh0LXJ1aS1zdWNjZXNzXCJcbiAgICA+XG4gICAgICBDT1BJRUQhXG4gICAgPC9kaXY+XG4gIDwvUnVpVG9vbHRpcD5cbjwvdGVtcGxhdGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuaW1wb3J0IHsgY2xhbXAgfSBmcm9tICdAdnVldXNlL3NoYXJlZCc7XG5pbXBvcnQgeyByb3VuZFR3b0RlY2ltYWwsIHVzZUVsZW1lbnREcmFnIH0gZnJvbSAnLi91dGlscyc7XG5cbmRlZmluZU9wdGlvbnMoe1xuICBuYW1lOiAnUnVpQ29sb3JIdWUnLFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxufSk7XG5cbmNvbnN0IG1vZGVsVmFsdWUgPSBkZWZpbmVNb2RlbDxudW1iZXI+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbmNvbnN0IGJhckVsZW1lbnQgPSByZWY8SFRNTEVsZW1lbnQ+KCk7XG5cbmNvbnN0IGN1cnNvcldpZHRoID0gMTY7XG5cbmZ1bmN0aW9uIGdldExpbWl0KHdpZHRoOiBudW1iZXIpIHtcbiAgY29uc3QgbG93ZXJMaW1pdCA9IGN1cnNvcldpZHRoIC8gMjtcbiAgY29uc3QgdXBwZXJMaW1pdCA9IHdpZHRoIC0gbG93ZXJMaW1pdDtcbiAgY29uc3QgYXZhaWxhYmxlV2lkdGggPSB1cHBlckxpbWl0IC0gbG93ZXJMaW1pdDtcblxuICByZXR1cm4geyBsb3dlckxpbWl0LCB1cHBlckxpbWl0LCBhdmFpbGFibGVXaWR0aCB9O1xufVxuXG5jb25zdCBjdXJzb3JMZWZ0ID0gcmVmPHN0cmluZz4oJycpO1xuXG5mdW5jdGlvbiB1cGRhdGVQb3NpdGlvbigpIHtcbiAgc2V0KGN1cnNvckxlZnQsIGdldEN1cnNvckxlZnQoKS50b1N0cmluZygpKTtcbn1cblxuY29uc3QgY3Vyc29yU3R5bGUgPSBjb21wdXRlZCgoKSA9PiAoe1xuICBsZWZ0OiBnZXQoY3Vyc29yTGVmdCksXG59KSk7XG5cbmNvbnN0IGluc3RhbmNlID0gZ2V0Q3VycmVudEluc3RhbmNlKCk7XG5cbmZ1bmN0aW9uIGdldEN1cnNvckxlZnQoKSB7XG4gIGlmICghaW5zdGFuY2UpXG4gICAgcmV0dXJuIDA7XG5cbiAgY29uc3QgZWwgPSBpbnN0YW5jZS52bm9kZS5lbDtcbiAgY29uc3QgcmVjdCA9IGVsPy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICBpZiAoIXJlY3QpXG4gICAgcmV0dXJuIDA7XG5cbiAgY29uc3QgYWN0dWFsV2lkdGggPSByZWN0LndpZHRoO1xuICBjb25zdCB7IGxvd2VyTGltaXQsIGF2YWlsYWJsZVdpZHRoIH0gPSBnZXRMaW1pdChhY3R1YWxXaWR0aCk7XG5cbiAgY29uc3QgaHVlVmFsID0gZ2V0KG1vZGVsVmFsdWUpO1xuICBjb25zdCB1c2VkSHVlID0gaHVlVmFsID09PSAzNjAgPyAzNjAgOiBodWVWYWwgJSAzNjA7XG5cbiAgY29uc3QgcGVyY2VudGFnZSA9IHJvdW5kVHdvRGVjaW1hbCgodXNlZEh1ZSAvIDM2MCkgKiAoYXZhaWxhYmxlV2lkdGggLyBhY3R1YWxXaWR0aCkgKiAxMDApO1xuICByZXR1cm4gYGNhbGMoJHtwZXJjZW50YWdlfSUgKyAke2xvd2VyTGltaXR9cHgpYDtcbn1cblxuZnVuY3Rpb24gZW1pdEh1ZSh4OiBudW1iZXIpIHtcbiAgaWYgKCFpbnN0YW5jZSlcbiAgICByZXR1cm47XG5cbiAgY29uc3QgZWwgPSBpbnN0YW5jZS52bm9kZS5lbDtcbiAgY29uc3QgcmVjdCA9IGVsPy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICBpZiAoIXJlY3QpXG4gICAgcmV0dXJuO1xuXG4gIGxldCBjYWxjdWxhdGVkWCA9IHggLSByZWN0LmxlZnQ7XG5cbiAgY29uc3QgeyBsb3dlckxpbWl0LCB1cHBlckxpbWl0LCBhdmFpbGFibGVXaWR0aCB9ID0gZ2V0TGltaXQocmVjdC53aWR0aCk7XG4gIGNhbGN1bGF0ZWRYID0gY2xhbXAoY2FsY3VsYXRlZFgsIGxvd2VyTGltaXQsIHVwcGVyTGltaXQpO1xuXG4gIHNldChtb2RlbFZhbHVlLCBNYXRoLnJvdW5kKCgoY2FsY3VsYXRlZFggLSBsb3dlckxpbWl0KSAvIGF2YWlsYWJsZVdpZHRoKSAqIDM2MCkpO1xufVxuXG5jb25zdCB7XG4gIGhhbmRsZUNsaWNrLFxuICBvbk1vdXNlRG93bixcbn0gPSB1c2VFbGVtZW50RHJhZyhlbWl0SHVlKTtcblxub25Nb3VudGVkKCgpID0+IHtcbiAgdXBkYXRlUG9zaXRpb24oKTtcbn0pO1xuXG53YXRjaChtb2RlbFZhbHVlLCAoKSA9PiB7XG4gIHVwZGF0ZVBvc2l0aW9uKCk7XG59KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICByZWY9XCJiYXJFbGVtZW50XCJcbiAgICA6Y2xhc3M9XCIkc3R5bGUuYmFyXCJcbiAgICBjbGFzcz1cInJ1aS1jb2xvci1odWVcIlxuICAgIHYtYmluZD1cIiRhdHRyc1wiXG4gICAgQGNsaWNrPVwiaGFuZGxlQ2xpY2soJGV2ZW50KVwiXG4gICAgQG1vdXNlZG93bj1cIm9uTW91c2VEb3duKCRldmVudClcIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiJHN0eWxlLmN1cnNvclwiXG4gICAgICA6c3R5bGU9XCJjdXJzb3JTdHlsZVwiXG4gICAgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIiBtb2R1bGU+XG4uYmFyIHtcbiAgQGFwcGx5IHJlbGF0aXZlIHctZnVsbCBoLTMuNSByb3VuZGVkLWZ1bGwgY3Vyc29yLXBvaW50ZXI7XG5cbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KFxuICAgIHRvIHJpZ2h0LFxuICAgIHJnYigyNTUsIDAsIDApIDAlLFxuICAgIHJnYigyNTUsIDI1NSwgMCkgMTYuNjYlLFxuICAgIHJnYigwLCAyNTUsIDApIDMzLjMzJSxcbiAgICByZ2IoMCwgMjU1LCAyNTUpIDUwJSxcbiAgICByZ2IoMCwgMCwgMjU1KSA2Ni42NiUsXG4gICAgcmdiKDI1NSwgMCwgMjU1KSA4My4zMyUsXG4gICAgcmdiKDI1NSwgMCwgMCkgMTAwJVxuICApO1xufVxuXG4uY3Vyc29yIHtcbiAgQGFwcGx5IGFic29sdXRlIHctNCBoLTQgdHJhbnNmb3JtIHRvcC0xLzIgLXRyYW5zbGF0ZS14LTEvMiAtdHJhbnNsYXRlLXktMS8yIHNoYWRvdy0yIGJnLXdoaXRlIHJvdW5kZWQtZnVsbDtcbn1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuaW1wb3J0IHR5cGUgeyBDb250ZXh0Q29sb3JzVHlwZSB9IGZyb20gJ0AvY29uc3RzL2NvbG9ycyc7XG5pbXBvcnQgdHlwZSB7IFJ1aUljb25zIH0gZnJvbSAnQC9pY29ucyc7XG5pbXBvcnQgeyBsb2dpY0FuZCwgbG9naWNOb3QgfSBmcm9tICdAdnVldXNlL21hdGgnO1xuaW1wb3J0IFJ1aUJ1dHRvbiBmcm9tICdAL2NvbXBvbmVudHMvYnV0dG9ucy9idXR0b24vUnVpQnV0dG9uLnZ1ZSc7XG5pbXBvcnQgUnVpRm9ybVRleHREZXRhaWwgZnJvbSAnQC9jb21wb25lbnRzL2hlbHBlcnMvUnVpRm9ybVRleHREZXRhaWwudnVlJztcbmltcG9ydCBSdWlJY29uIGZyb20gJ0AvY29tcG9uZW50cy9pY29ucy9SdWlJY29uLnZ1ZSc7XG5pbXBvcnQgeyBhc3NlcnQgfSBmcm9tICdAL3V0aWxzL2Fzc2VydCc7XG5pbXBvcnQgeyBnZXROb25Sb290QXR0cnMsIGdldFJvb3RBdHRycyB9IGZyb20gJ0AvdXRpbHMvaGVscGVycyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGV4dEZpZWxkUHJvcHMge1xuICBsYWJlbD86IHN0cmluZztcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgdmFyaWFudD86ICdkZWZhdWx0JyB8ICdmaWxsZWQnIHwgJ291dGxpbmVkJztcbiAgY29sb3I/OiBDb250ZXh0Q29sb3JzVHlwZTtcbiAgdGV4dENvbG9yPzogQ29udGV4dENvbG9yc1R5cGU7XG4gIGRlbnNlPzogYm9vbGVhbjtcbiAgaGludD86IHN0cmluZztcbiAgZXJyb3JNZXNzYWdlcz86IHN0cmluZyB8IHN0cmluZ1tdO1xuICBzdWNjZXNzTWVzc2FnZXM/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgaGlkZURldGFpbHM/OiBib29sZWFuO1xuICBwcmVwZW5kSWNvbj86IFJ1aUljb25zO1xuICBhcHBlbmRJY29uPzogUnVpSWNvbnM7XG4gIHJlYWRvbmx5PzogYm9vbGVhbjtcbiAgY2xlYXJhYmxlPzogYm9vbGVhbjtcbn1cblxuZGVmaW5lT3B0aW9ucyh7XG4gIG5hbWU6ICdSdWlUZXh0RmllbGQnLFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxufSk7XG5cbmNvbnN0IG1vZGVsVmFsdWUgPSBkZWZpbmVNb2RlbDxzdHJpbmc+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbmNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFRleHRGaWVsZFByb3BzPigpLCB7XG4gIGxhYmVsOiAnJyxcbiAgcGxhY2Vob2xkZXI6ICcnLFxuICBkaXNhYmxlZDogZmFsc2UsXG4gIHZhcmlhbnQ6ICdkZWZhdWx0JyxcbiAgY29sb3I6IHVuZGVmaW5lZCxcbiAgdGV4dENvbG9yOiB1bmRlZmluZWQsXG4gIGRlbnNlOiBmYWxzZSxcbiAgaGludDogJycsXG4gIGFzOiAnaW5wdXQnLFxuICBlcnJvck1lc3NhZ2VzOiAoKSA9PiBbXSxcbiAgc3VjY2Vzc01lc3NhZ2VzOiAoKSA9PiBbXSxcbiAgaGlkZURldGFpbHM6IGZhbHNlLFxuICBwcmVwZW5kSWNvbjogdW5kZWZpbmVkLFxuICBhcHBlbmRJY29uOiB1bmRlZmluZWQsXG4gIHJlYWRvbmx5OiBmYWxzZSxcbiAgY2xlYXJhYmxlOiBmYWxzZSxcbn0pO1xuXG5jb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8e1xuICAoZTogJ2ZvY3VzLWlucHV0JywgZXZlbnQ6IEV2ZW50KTogdm9pZDtcbiAgKGU6ICdibHVyJywgZXZlbnQ6IEV2ZW50KTogdm9pZDtcbiAgKGU6ICdyZW1vdmUnLCB2YWx1ZTogdW5rbm93bik6IHZvaWQ7XG4gIChlOiAnY2xlYXInKTogdm9pZDtcbn0+KCk7XG5cbmNvbnN0IHtcbiAgbGFiZWwsXG4gIGNsZWFyYWJsZSxcbiAgZGlzYWJsZWQsXG4gIHJlYWRvbmx5LFxuICBlcnJvck1lc3NhZ2VzLFxuICBzdWNjZXNzTWVzc2FnZXMsXG59ID0gdG9SZWZzKHByb3BzKTtcblxuZnVuY3Rpb24gaW5wdXQoZXZlbnQ6IEV2ZW50KSB7XG4gIGNvbnN0IHZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcbiAgc2V0KG1vZGVsVmFsdWUsIHZhbHVlKTtcbn1cblxuY29uc3QgbGFiZWxXaXRoUXVvdGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gIGNvbnN0IGxhYmVsVmFsID0gZ2V0KGxhYmVsKTtcbiAgaWYgKCFsYWJlbFZhbClcbiAgICByZXR1cm4gJ1wiXFxcXDIwMEJcIic7XG5cbiAgcmV0dXJuIGAnICAke2xhYmVsVmFsfSAgJ2A7XG59KTtcblxuY29uc3QgcHJlcGVuZCA9IHJlZjxIVE1MRGl2RWxlbWVudD4oKTtcbmNvbnN0IGFwcGVuZCA9IHJlZjxIVE1MRGl2RWxlbWVudD4oKTtcbmNvbnN0IGlubmVyV3JhcHBlciA9IHJlZjxIVE1MRGl2RWxlbWVudD4oKTtcbmNvbnN0IGlucHV0UmVmID0gcmVmPEhUTUxJbnB1dEVsZW1lbnQ+KCk7XG5cbmNvbnN0IHByZXBlbmRXaWR0aCA9IHJlZignMHB4Jyk7XG5jb25zdCBhcHBlbmRXaWR0aCA9IHJlZignMHB4Jyk7XG5cbmNvbnN0IHsgd2lkdGggfSA9IHVzZUVsZW1lbnRCb3VuZGluZyhpbm5lcldyYXBwZXIpO1xuXG51c2VSZXNpemVPYnNlcnZlcihwcmVwZW5kLCAoZW50cmllcykgPT4ge1xuICBjb25zdCBbZW50cnldID0gZW50cmllcztcbiAgYXNzZXJ0KGVudHJ5KTtcbiAgY29uc3QgeyB3aWR0aCwgbGVmdCB9ID0gZW50cnkuY29udGVudFJlY3Q7XG4gIHNldChwcmVwZW5kV2lkdGgsIGAke3dpZHRoICsgbGVmdH1weGApO1xufSk7XG5cbnVzZVJlc2l6ZU9ic2VydmVyKGFwcGVuZCwgKGVudHJpZXMpID0+IHtcbiAgY29uc3QgW2VudHJ5XSA9IGVudHJpZXM7XG4gIGFzc2VydChlbnRyeSk7XG4gIGNvbnN0IHsgd2lkdGgsIHJpZ2h0IH0gPSBlbnRyeS5jb250ZW50UmVjdDtcbiAgc2V0KGFwcGVuZFdpZHRoLCBgJHt3aWR0aCArIHJpZ2h0fXB4YCk7XG59KTtcblxuY29uc3QgeyBoYXNFcnJvciwgaGFzU3VjY2VzcywgaGFzTWVzc2FnZXMgfSA9IHVzZUZvcm1UZXh0RGV0YWlsKFxuICBlcnJvck1lc3NhZ2VzLFxuICBzdWNjZXNzTWVzc2FnZXMsXG4pO1xuXG5jb25zdCB7IGZvY3VzZWQgfSA9IHVzZUZvY3VzKGlucHV0UmVmKTtcbmNvbnN0IGZvY3VzZWREZWJvdW5jZWQgPSByZWZEZWJvdW5jZWQoZm9jdXNlZCwgNTAwKTtcblxuY29uc3Qgc2hvd0NsZWFySWNvbiA9IGxvZ2ljQW5kKFxuICBjbGVhcmFibGUsXG4gIG1vZGVsVmFsdWUsXG4gIGxvZ2ljTm90KGRpc2FibGVkKSxcbiAgbG9naWNOb3QocmVhZG9ubHkpLFxuKTtcblxuZnVuY3Rpb24gY2xlYXJJY29uQ2xpY2tlZCgpIHtcbiAgc2V0KG1vZGVsVmFsdWUsICcnKTtcbiAgZW1pdCgnY2xlYXInKTtcbn1cblxuZGVmaW5lRXhwb3NlKHtcbiAgc2V0U2VsZWN0aW9uUmFuZ2U6IChzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcikgPT4ge1xuICAgIGdldChpbnB1dFJlZik/LnNldFNlbGVjdGlvblJhbmdlKHN0YXJ0LCBlbmQpO1xuICB9LFxuICBmb2N1czogKCkgPT4gZ2V0KGlucHV0UmVmKT8uZm9jdXMoKSxcbiAgZWxlbWVudDogaW5wdXRSZWYsXG59KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgdi1iaW5kPVwiZ2V0Um9vdEF0dHJzKCRhdHRycylcIj5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICRzdHlsZS53cmFwcGVyLFxuICAgICAgICAkc3R5bGVbY29sb3IgPz8gJyddLFxuICAgICAgICAkc3R5bGVbdmFyaWFudCA/PyAnJ10sXG4gICAgICAgIHtcbiAgICAgICAgICBbJHN0eWxlLmRlbnNlXTogZGVuc2UsXG4gICAgICAgICAgWyRzdHlsZS5kaXNhYmxlZF06IGRpc2FibGVkLFxuICAgICAgICAgIFskc3R5bGVbJ25vLWxhYmVsJ11dOiAhbGFiZWwsXG4gICAgICAgICAgWyRzdHlsZVsnd2l0aC1lcnJvciddID8/ICcnXTogaGFzRXJyb3IsXG4gICAgICAgICAgWyRzdHlsZVsnd2l0aC1zdWNjZXNzJ10gPz8gJyddOiBoYXNTdWNjZXNzICYmICFoYXNFcnJvcixcbiAgICAgICAgICBbJHN0eWxlW2B0ZXh0XyR7dGV4dENvbG9yfWBdID8/ICcnXTogdGV4dENvbG9yICYmICFoYXNNZXNzYWdlcyxcbiAgICAgICAgfSxcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgdi1pZj1cIiRzbG90cy5wcmVwZW5kIHx8IHByZXBlbmRJY29uXCJcbiAgICAgICAgcmVmPVwicHJlcGVuZFwiXG4gICAgICAgIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEgc2hyaW5rLTBcIlxuICAgICAgICA6Y2xhc3M9XCIkc3R5bGUucHJlcGVuZFwiXG4gICAgICA+XG4gICAgICAgIDxzbG90XG4gICAgICAgICAgdi1pZj1cIiRzbG90cy5wcmVwZW5kXCJcbiAgICAgICAgICBuYW1lPVwicHJlcGVuZFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICB2LWVsc2UtaWY9XCJwcmVwZW5kSWNvblwiXG4gICAgICAgICAgOmNsYXNzPVwiWyRzdHlsZS5pY29uXVwiXG4gICAgICAgID5cbiAgICAgICAgICA8UnVpSWNvbiA6bmFtZT1cInByZXBlbmRJY29uXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgcmVmPVwiaW5uZXJXcmFwcGVyXCJcbiAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtMSBvdmVyZmxvdy1oaWRkZW5cIlxuICAgICAgICBAY2xpY2s9XCJlbWl0KCdmb2N1cy1pbnB1dCcsICRldmVudClcIlxuICAgICAgPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICByZWY9XCJpbnB1dFJlZlwiXG4gICAgICAgICAgOnZhbHVlPVwibW9kZWxWYWx1ZVwiXG4gICAgICAgICAgOnBsYWNlaG9sZGVyPVwicGxhY2Vob2xkZXIgfHwgJyAnXCJcbiAgICAgICAgICA6Y2xhc3M9XCIkc3R5bGUuaW5wdXRcIlxuICAgICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgICAgICA6ZGVuc2U9XCJkZW5zZVwiXG4gICAgICAgICAgOnZhcmlhbnQ9XCJ2YXJpYW50XCJcbiAgICAgICAgICA6cmVhZG9ubHk9XCJyZWFkb25seVwiXG4gICAgICAgICAgOndyYXBwZXItd2lkdGg9XCJ3aWR0aFwiXG4gICAgICAgICAgdi1iaW5kPVwiZ2V0Tm9uUm9vdEF0dHJzKCRhdHRycylcIlxuICAgICAgICAgIEBpbnB1dD1cImlucHV0KCRldmVudClcIlxuICAgICAgICAgIEBibHVyPVwiZW1pdCgnYmx1cicsICRldmVudClcIlxuICAgICAgICAgIEByZW1vdmU9XCJlbWl0KCdyZW1vdmUnLCAkZXZlbnQpXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGxhYmVsIDpjbGFzcz1cIiRzdHlsZS5sYWJlbFwiPlxuICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAge3sgbGFiZWwgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxmaWVsZHNldFxuICAgICAgICAgIHYtaWY9XCJ2YXJpYW50ID09PSAnb3V0bGluZWQnXCJcbiAgICAgICAgICA6Y2xhc3M9XCIkc3R5bGUuZmllbGRzZXRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGxlZ2VuZCA6Y2xhc3M9XCJ7IFskc3R5bGUuc2hvd106IGxhYmVsIH1cIiAvPlxuICAgICAgICA8L2ZpZWxkc2V0PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIHYtaWY9XCIkc2xvdHMuYXBwZW5kIHx8IGFwcGVuZEljb24gfHwgc2hvd0NsZWFySWNvblwiXG4gICAgICAgIHJlZj1cImFwcGVuZFwiXG4gICAgICAgIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEgc2hyaW5rLTBcIlxuICAgICAgICA6Y2xhc3M9XCIkc3R5bGUuYXBwZW5kXCJcbiAgICAgID5cbiAgICAgICAgPFJ1aUJ1dHRvblxuICAgICAgICAgIHYtaWY9XCJzaG93Q2xlYXJJY29uXCJcbiAgICAgICAgICA6Y2xhc3M9XCJ7IGhpZGRlbjogIWZvY3VzZWREZWJvdW5jZWQgfVwiXG4gICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGljb25cbiAgICAgICAgICBjbGFzcz1cIiFwLTIgY2xlYXItYnRuXCJcbiAgICAgICAgICBjb2xvcj1cImVycm9yXCJcbiAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICBAY2xpY2suc3RvcD1cImNsZWFySWNvbkNsaWNrZWQoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8UnVpSWNvblxuICAgICAgICAgICAgbmFtZT1cImx1LXhcIlxuICAgICAgICAgICAgc2l6ZT1cIjIwXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L1J1aUJ1dHRvbj5cbiAgICAgICAgPHNsb3RcbiAgICAgICAgICB2LWlmPVwiJHNsb3RzLmFwcGVuZFwiXG4gICAgICAgICAgbmFtZT1cImFwcGVuZFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICB2LWVsc2UtaWY9XCJhcHBlbmRJY29uXCJcbiAgICAgICAgICA6Y2xhc3M9XCJbJHN0eWxlLmljb25dXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxSdWlJY29uIDpuYW1lPVwiYXBwZW5kSWNvblwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPFJ1aUZvcm1UZXh0RGV0YWlsXG4gICAgICB2LWlmPVwiIWhpZGVEZXRhaWxzXCJcbiAgICAgIGNsYXNzPVwicHQtMSBweC0zXCJcbiAgICAgIDplcnJvci1tZXNzYWdlcz1cImVycm9yTWVzc2FnZXNcIlxuICAgICAgOnN1Y2Nlc3MtbWVzc2FnZXM9XCJzdWNjZXNzTWVzc2FnZXNcIlxuICAgICAgOmhpbnQ9XCJoaW50XCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBsYW5nPVwic2Nzc1wiIG1vZHVsZT5cbkB1c2UgJ0Avc3R5bGVzL2NvbG9ycy5zY3NzJyBhcyBjO1xuXG46Z2xvYmFsKC5kYXJrKSB7XG4gIC53cmFwcGVyIHtcbiAgICBAYXBwbHkgYmctdHJhbnNwYXJlbnQ7XG5cbiAgICAubGFiZWwge1xuICAgICAgQGFwcGx5IGJvcmRlci13aGl0ZS9bMC40Ml07XG5cbiAgICAgICY6YWZ0ZXIge1xuICAgICAgICBAYXBwbHkgYm9yZGVyLXdoaXRlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5pY29uIHtcbiAgICAgIEBhcHBseSB0ZXh0LXdoaXRlL1swLjU2XTtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIC5sYWJlbCB7XG4gICAgICAgIEBhcHBseSBib3JkZXItd2hpdGU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5maWxsZWQge1xuICAgICAgLmlucHV0IHtcbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgKyAubGFiZWwge1xuICAgICAgICAgICAgQGFwcGx5IGJnLXdoaXRlL1swLjEzXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmxhYmVsIHtcbiAgICAgICAgQGFwcGx5IGJnLXdoaXRlL1swLjA5XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLm91dGxpbmVkIHtcbiAgICAgIC5maWVsZHNldCB7XG4gICAgICAgIEBhcHBseSBib3JkZXItd2hpdGUvWzAuMjNdO1xuICAgICAgfVxuXG4gICAgICAmOm5vdCguZGlzYWJsZWQpIHtcbiAgICAgICAgLmlucHV0IHtcbiAgICAgICAgICAmOmhvdmVyLFxuICAgICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgfiAuZmllbGRzZXQge1xuICAgICAgICAgICAgICBAYXBwbHkgYm9yZGVyLXdoaXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4ud3JhcHBlciB7XG4gIEBhcHBseSByZWxhdGl2ZSB3LWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIgcHQtMyByb3VuZGVkIGJnLXdoaXRlO1xuXG4gIC5pbnB1dCB7XG4gICAgQGFwcGx5IGxlYWRpbmctNiB0ZXh0LXJ1aS10ZXh0IHctZnVsbCBiZy10cmFuc3BhcmVudCBweS0xLjUgcHItMyBvdXRsaW5lLTAgb3V0bGluZS1ub25lIHRyYW5zaXRpb24tYWxsIHBsYWNlaG9sZGVyOm9wYWNpdHktMCBmb2N1czpwbGFjZWhvbGRlcjpvcGFjaXR5LTEwMDtcblxuICAgICY6Zm9jdXMge1xuICAgICAgQGFwcGx5IG91dGxpbmUtMDtcbiAgICAgICsgLmxhYmVsIHtcbiAgICAgICAgQGFwcGx5IGFmdGVyOnNjYWxlLXgtMTAwO1xuICAgICAgfVxuICAgIH1cblxuICAgICY6bm90KDpwbGFjZWhvbGRlci1zaG93biksXG4gICAgJjphdXRvZmlsbCxcbiAgICAmOi13ZWJraXQtYXV0b2ZpbGwsXG4gICAgJltkYXRhLWhhcy12YWx1ZT0ndHJ1ZSddLFxuICAgICY6Zm9jdXMge1xuICAgICAgKyAubGFiZWwge1xuICAgICAgICBAYXBwbHkgdGV4dC14cyBsZWFkaW5nLXRpZ2h0O1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IHZhcigtLXgtcGFkZGluZyk7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IHZhcigtLXgtcGFkZGluZyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJjpkaXNhYmxlZCB7XG4gICAgICBAYXBwbHkgYm9yZGVyLWRvdHRlZDtcblxuICAgICAgJixcbiAgICAgICsgLmxhYmVsIHtcbiAgICAgICAgQGFwcGx5IHRleHQtcnVpLXRleHQtZGlzYWJsZWQ7XG4gICAgICB9XG5cbiAgICAgIH4gLmZpZWxkc2V0IHtcbiAgICAgICAgQGFwcGx5IGJvcmRlci1kb3R0ZWQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmxhYmVsIHtcbiAgICBAYXBwbHkgbGVmdC0wIHRleHQtYmFzZSBsZWFkaW5nLVszLjc1XSB0ZXh0LXJ1aS10ZXh0LXNlY29uZGFyeSBwb2ludGVyLWV2ZW50cy1ub25lIGFic29sdXRlIHRvcC0wIGZsZXggaC1mdWxsIHctZnVsbCBzZWxlY3Qtbm9uZSB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi03NSBib3JkZXItYiBib3JkZXItYmxhY2svWzAuNDJdO1xuXG4gICAgLS14LXBhZGRpbmc6IDBweDtcbiAgICAtLXByZXBlbmQtd2lkdGg6IHYtYmluZChwcmVwZW5kV2lkdGgpO1xuICAgIC0tYXBwZW5kLXdpZHRoOiB2LWJpbmQoYXBwZW5kV2lkdGgpO1xuXG4gICAgcGFkZGluZy1sZWZ0OiBjYWxjKHZhcigtLXgtcGFkZGluZykgKyB2YXIoLS1wcmVwZW5kLXdpZHRoLCAwcHgpKTtcbiAgICBwYWRkaW5nLXJpZ2h0OiBjYWxjKHZhcigtLXgtcGFkZGluZykgKyB2YXIoLS1hcHBlbmQtd2lkdGgsIDBweCkpO1xuXG4gICAgc3BhbiB7XG4gICAgICBAYXBwbHkgdHJ1bmNhdGUgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tNzU7XG4gICAgICBjb250ZW50OiB2LWJpbmQobGFiZWxXaXRoUXVvdGUpO1xuICAgIH1cblxuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBAYXBwbHkgYWJzb2x1dGUgYm90dG9tLTAgbGVmdC0wIGJsb2NrIHctZnVsbCBzY2FsZS14LTAgYm9yZGVyLWItMiBtYi1bLTFweF0gdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMzAwIGJvcmRlci1ibGFjaztcbiAgICB9XG4gIH1cblxuICAmOmhvdmVyIHtcbiAgICAubGFiZWwge1xuICAgICAgQGFwcGx5IGJvcmRlci1ibGFjaztcbiAgICB9XG4gIH1cblxuICAuaWNvbiB7XG4gICAgQGFwcGx5IHRleHQtYmxhY2svWzAuNTRdO1xuICB9XG5cbiAgLnByZXBlbmQge1xuICAgICY6bm90KDplbXB0eSkge1xuICAgICAgQGFwcGx5IHByLTI7XG4gICAgfVxuICB9XG5cbiAgLmFwcGVuZCB7XG4gICAgJjpub3QoOmVtcHR5KSB7XG4gICAgICBAYXBwbHkgcGwtMjtcbiAgICB9XG4gIH1cblxuICBAZWFjaCAkY29sb3IgaW4gYy4kY29udGV4dC1jb2xvcnMge1xuICAgICYuI3skY29sb3J9IHtcbiAgICAgIC5pbnB1dCB7XG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICsgLmxhYmVsIHtcbiAgICAgICAgICAgIEBhcHBseSB0ZXh0LXJ1aS0jeyRjb2xvcn07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5sYWJlbCB7XG4gICAgICAgIEBhcHBseSBhZnRlcjpib3JkZXItcnVpLSN7JGNvbG9yfTtcbiAgICAgIH1cblxuICAgICAgJi5vdXRsaW5lZCB7XG4gICAgICAgICY6bm90KC5kaXNhYmxlZCkge1xuICAgICAgICAgIC5pbnB1dCB7XG4gICAgICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgICAgfiAuZmllbGRzZXQge1xuICAgICAgICAgICAgICAgIEBhcHBseSBib3JkZXItcnVpLSN7JGNvbG9yfTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICYudGV4dF8jeyRjb2xvcn0sXG4gICAgJi53aXRoLSN7JGNvbG9yfSB7XG4gICAgICAucHJlcGVuZCxcbiAgICAgIC5hcHBlbmQsXG4gICAgICAuaW5wdXQge1xuICAgICAgICBAYXBwbHkgdGV4dC1ydWktI3skY29sb3J9O1xuICAgICAgfVxuXG4gICAgICAmOm5vdCguZGlzYWJsZWQpIC5wcmVwZW5kIHN2ZyxcbiAgICAgICY6bm90KC5kaXNhYmxlZCkgLmFwcGVuZCBzdmcge1xuICAgICAgICBAYXBwbHkgdGV4dC1ydWktI3skY29sb3J9O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBlYWNoICRjb2xvciBpbiAnZXJyb3InLCAnc3VjY2Vzcycge1xuICAgICYud2l0aC0jeyRjb2xvcn0ge1xuICAgICAgLmlucHV0IHtcbiAgICAgICAgQGFwcGx5IGJvcmRlci1ydWktI3skY29sb3J9ICN7IWltcG9ydGFudH07XG4gICAgICB9XG5cbiAgICAgIC5sYWJlbCB7XG4gICAgICAgIEBhcHBseSB0ZXh0LXJ1aS0jeyRjb2xvcn0gYWZ0ZXI6Ym9yZGVyLXJ1aS0jeyRjb2xvcn0gI3shaW1wb3J0YW50fTtcbiAgICAgIH1cblxuICAgICAgLmZpZWxkc2V0IHtcbiAgICAgICAgQGFwcGx5IGJvcmRlci1ydWktI3skY29sb3J9ICN7IWltcG9ydGFudH07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJi5kZW5zZSB7XG4gICAgLmlucHV0IHtcbiAgICAgIEBhcHBseSBweS0xO1xuICAgIH1cblxuICAgIC5sYWJlbCB7XG4gICAgICBAYXBwbHkgbGVhZGluZy1bMy41XTtcbiAgICB9XG4gIH1cblxuICAmLmZpbGxlZCxcbiAgJi5vdXRsaW5lZCB7XG4gICAgQGFwcGx5IHB0LTA7XG5cbiAgICAucHJlcGVuZCB7XG4gICAgICAmOm5vdCg6ZW1wdHkpIHtcbiAgICAgICAgQGFwcGx5IHBsLTMgcHItMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAuYXBwZW5kIHtcbiAgICAgICY6bm90KDplbXB0eSkge1xuICAgICAgICBAYXBwbHkgcHItMyBwbC0wO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5pbnB1dCB7XG4gICAgICBAYXBwbHkgcHgtMztcbiAgICB9XG5cbiAgICAubGFiZWwge1xuICAgICAgQGFwcGx5IGxlYWRpbmctWzMuNV07XG4gICAgICAtLXgtcGFkZGluZzogMC43NXJlbTtcbiAgICB9XG4gIH1cblxuICAmLmZpbGxlZCB7XG4gICAgLmlucHV0IHtcbiAgICAgIEBhcHBseSBweS00O1xuXG4gICAgICAmOmZvY3VzIHtcbiAgICAgICAgKyAubGFiZWwge1xuICAgICAgICAgIEBhcHBseSBiZy1ibGFjay9bMC4wOV07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJjpub3QoOnBsYWNlaG9sZGVyLXNob3duKSxcbiAgICAgICY6YXV0b2ZpbGwsXG4gICAgICAmOi13ZWJraXQtYXV0b2ZpbGwsXG4gICAgICAmW2RhdGEtaGFzLXZhbHVlPSd0cnVlJ10sXG4gICAgICAmOmZvY3VzIHtcbiAgICAgICAgKyAubGFiZWwge1xuICAgICAgICAgIEBhcHBseSBsZWFkaW5nLVsxLjVdIHBsLTQ7XG5cbiAgICAgICAgICBwYWRkaW5nLWxlZnQ6IGNhbGModmFyKC0teC1wYWRkaW5nKSk7XG4gICAgICAgICAgcGFkZGluZy1yaWdodDogY2FsYyh2YXIoLS14LXBhZGRpbmcpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC5sYWJlbCB7XG4gICAgICBAYXBwbHkgcm91bmRlZC10IGJnLWJsYWNrL1swLjA2XTtcbiAgICB9XG5cbiAgICAmLmRlbnNlIHtcbiAgICAgIC5pbnB1dCB7XG4gICAgICAgIEBhcHBseSBwdC01IHBiLTE7XG4gICAgICB9XG5cbiAgICAgIC5sYWJlbCB7XG4gICAgICAgIEBhcHBseSBsZWFkaW5nLVszXTtcbiAgICAgIH1cblxuICAgICAgJjpub3QoOnBsYWNlaG9sZGVyLXNob3duKSxcbiAgICAgICY6YXV0b2ZpbGwsXG4gICAgICAmOi13ZWJraXQtYXV0b2ZpbGwsXG4gICAgICAmW2RhdGEtaGFzLXZhbHVlPSd0cnVlJ10sXG4gICAgICAmOmZvY3VzIHtcbiAgICAgICAgKyAubGFiZWwge1xuICAgICAgICAgIEBhcHBseSBsZWFkaW5nLVsyLjI1XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICYubm8tbGFiZWwge1xuICAgICAgLmlucHV0IHtcbiAgICAgICAgQGFwcGx5IHB5LTQ7XG4gICAgICB9XG5cbiAgICAgICYuZGVuc2Uge1xuICAgICAgICAuaW5wdXQge1xuICAgICAgICAgIEBhcHBseSBweS0zO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJi5vdXRsaW5lZCB7XG4gICAgLmlucHV0IHtcbiAgICAgIEBhcHBseSBweS00IGJvcmRlci1iLTA7XG5cbiAgICAgICY6bm90KDpwbGFjZWhvbGRlci1zaG93biksXG4gICAgICAmOmF1dG9maWxsLFxuICAgICAgJjotd2Via2l0LWF1dG9maWxsLFxuICAgICAgJltkYXRhLWhhcy12YWx1ZT0ndHJ1ZSddLFxuICAgICAgJjpmb2N1cyB7XG4gICAgICAgIEBhcHBseSBib3JkZXItdC10cmFuc3BhcmVudDtcblxuICAgICAgICArIC5sYWJlbCB7XG4gICAgICAgICAgQGFwcGx5IGxlYWRpbmctWzBdIHBsLTQgLW10LTM7XG5cbiAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgIEBhcHBseSBwdC0zO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIH4gLmZpZWxkc2V0IHtcbiAgICAgICAgICBsZWdlbmQge1xuICAgICAgICAgICAgJi5zaG93IHtcbiAgICAgICAgICAgICAgQGFwcGx5IHB4LTI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgY29udGVudDogdi1iaW5kKGxhYmVsV2l0aFF1b3RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAuZmllbGRzZXQge1xuICAgICAgQGFwcGx5IGFic29sdXRlIHctZnVsbCBtaW4tdy0wIGgtW2NhbGMoMTAwJSswLjVyZW0pXSB0b3AtMCBsZWZ0LTAgcG9pbnRlci1ldmVudHMtbm9uZSByb3VuZGVkIGJvcmRlciBib3JkZXItYmxhY2svWzAuMjNdIHB4LTIgdHJhbnNpdGlvbi1hbGwgLW10LTI7XG5cbiAgICAgIGxlZ2VuZCB7XG4gICAgICAgIEBhcHBseSBvcGFjaXR5LTAgdGV4dC14cyBtYXgtdy1mdWxsIHRydW5jYXRlO1xuXG4gICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICBjb250ZW50OiAnICc7XG4gICAgICAgIH1cblxuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICBAYXBwbHkgdHJ1bmNhdGUgbWF4LXctZnVsbCBsZWFkaW5nLVswXTtcbiAgICAgICAgICBjb250ZW50OiAnXFwyMDBCJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICY6bm90KC5kaXNhYmxlZCkge1xuICAgICAgLmlucHV0IHtcbiAgICAgICAgJjpob3ZlcixcbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgfiAuZmllbGRzZXQge1xuICAgICAgICAgICAgQGFwcGx5IGJvcmRlciBib3JkZXItYmxhY2s7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgfiAuZmllbGRzZXQge1xuICAgICAgICAgICAgQGFwcGx5IGJvcmRlci0yO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC5sYWJlbCB7XG4gICAgICBAYXBwbHkgYm9yZGVyLTAgYm9yZGVyLXRyYW5zcGFyZW50O1xuXG4gICAgICAmOmFmdGVyIHtcbiAgICAgICAgY29udGVudDogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgIH1cblxuICAgICYuZGVuc2Uge1xuICAgICAgLmlucHV0IHtcbiAgICAgICAgQGFwcGx5IHB5LTI7XG4gICAgICB9XG5cbiAgICAgIC5sYWJlbCB7XG4gICAgICAgIEBhcHBseSBsZWFkaW5nLVsyLjVdO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG5pbXBvcnQgdHlwZSB7IENvbG9yIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBjbGFtcCB9IGZyb20gJ0B2dWV1c2Uvc2hhcmVkJztcbmltcG9ydCB0aW55Y29sb3IgZnJvbSAndGlueWNvbG9yMic7XG5pbXBvcnQgUnVpQnV0dG9uIGZyb20gJ0AvY29tcG9uZW50cy9idXR0b25zL2J1dHRvbi9SdWlCdXR0b24udnVlJztcbmltcG9ydCBSdWlUZXh0RmllbGQgZnJvbSAnQC9jb21wb25lbnRzL2Zvcm1zL3RleHQtZmllbGQvUnVpVGV4dEZpZWxkLnZ1ZSc7XG5pbXBvcnQgUnVpSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvaWNvbnMvUnVpSWNvbi52dWUnO1xuXG5kZWZpbmVPcHRpb25zKHtcbiAgbmFtZTogJ1J1aUNvbG9ySW5wdXQnLFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxufSk7XG5cbmNvbnN0IG1vZGVsVmFsdWUgPSBkZWZpbmVNb2RlbDxDb2xvcj4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuY29uc3QgaW5wdXRUeXBlID0gcmVmPCdoZXgnIHwgJ3JnYic+KCdoZXgnKTtcbmNvbnN0IHN0YXRlID0gcmVhY3RpdmUoe1xuICBjb2xvcjogZ2V0KG1vZGVsVmFsdWUpLFxuICBoZXg6IGdldChtb2RlbFZhbHVlKS5oZXgsXG4gIHJnYjogZ2V0KG1vZGVsVmFsdWUpLnJnYixcbn0pO1xuXG5mdW5jdGlvbiBvbklucHV0VHlwZUNoYW5nZSgpIHtcbiAgc2V0KGlucHV0VHlwZSwgZ2V0KGlucHV0VHlwZSkgPT09ICdyZ2InID8gJ2hleCcgOiAncmdiJyk7XG59XG5cbmNvbnN0IG9uQmx1ckNoYW5nZSA9IHVzZURlYm91bmNlRm4oKGlucHV0VHlwZTogc3RyaW5nLCBldmVudDogYW55LCBrZXk/OiBudW1iZXIpID0+IHtcbiAgaWYgKCFzdGF0ZS5jb2xvcilcbiAgICByZXR1cm47XG5cbiAgY29uc3QgdmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XG4gIGlmIChpbnB1dFR5cGUgPT09ICdoZXgnKSB7XG4gICAgY29uc3QgX2hleCA9IHZhbHVlLnJlcGxhY2UoJyMnLCAnJyk7XG4gICAgaWYgKHRpbnljb2xvcihfaGV4KS5pc1ZhbGlkKCkgJiYgWzMsIDQsIDZdLmluY2x1ZGVzKF9oZXgubGVuZ3RoKSlcbiAgICAgIHN0YXRlLmNvbG9yLmhleCA9IF9oZXg7XG5cbiAgICBlbHNlXG4gICAgICBzdGF0ZS5jb2xvci5oZXggPSAnMDAwMDAwJztcbiAgfVxuICBlbHNlIGlmIChrZXkgIT09IHVuZGVmaW5lZCAmJiBzdGF0ZS5yZ2IgJiYgc3RhdGUuY29sb3IpIHtcbiAgICBsZXQgdmFsdWVJbk51bWJlciA9IE51bWJlcih2YWx1ZSk7XG4gICAgdmFsdWVJbk51bWJlciA9IGNsYW1wKHZhbHVlSW5OdW1iZXIsIDAsIDI1NSk7XG5cbiAgICBzdGF0ZS5yZ2Jba2V5XSA9IHZhbHVlSW5OdW1iZXI7XG4gICAgY29uc3QgW3IsIGcsIGJdID0gc3RhdGUucmdiO1xuICAgIHN0YXRlLmNvbG9yLmhleCA9IHRpbnljb2xvcih7IHIsIGcsIGIgfSkudG9IZXgoKTtcbiAgfVxufSwgMTAwKTtcblxuY29uc3Qgb25JbnB1dENoYW5nZSA9IHVzZURlYm91bmNlRm4oKGlucHV0VHlwZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBrZXk/OiBudW1iZXIpID0+IHtcbiAgaWYgKCF2YWx1ZSlcbiAgICByZXR1cm47XG5cbiAgaWYgKGlucHV0VHlwZSA9PT0gJ2hleCcpIHtcbiAgICBjb25zdCBfaGV4ID0gdmFsdWUucmVwbGFjZSgnIycsICcnKTtcbiAgICBpZiAodGlueWNvbG9yKF9oZXgpLmlzVmFsaWQoKSAmJiBzdGF0ZS5jb2xvciAmJiBfaGV4Lmxlbmd0aCA9PT0gNilcbiAgICAgIHN0YXRlLmNvbG9yLmhleCA9IF9oZXg7XG4gIH1cbiAgZWxzZSBpZiAoa2V5ICE9PSB1bmRlZmluZWQgJiYgc3RhdGUucmdiICYmIHN0YXRlLmNvbG9yKSB7XG4gICAgbGV0IHZhbHVlSW5OdW1iZXIgPSBOdW1iZXIodmFsdWUpO1xuICAgIHZhbHVlSW5OdW1iZXIgPSBjbGFtcCh2YWx1ZUluTnVtYmVyLCAwLCAyNTUpO1xuXG4gICAgc3RhdGUucmdiW2tleV0gPSB2YWx1ZUluTnVtYmVyO1xuICAgIGNvbnN0IFtyLCBnLCBiXSA9IHN0YXRlLnJnYjtcbiAgICBzdGF0ZS5jb2xvci5oZXggPSB0aW55Y29sb3IoeyByLCBnLCBiIH0pLnRvSGV4KCk7XG4gIH1cblxuICBzZXQobW9kZWxWYWx1ZSwgc3RhdGUuY29sb3IpO1xufSwgMzAwKTtcblxud2hlbmV2ZXIoXG4gIG1vZGVsVmFsdWUsXG4gICh2YWx1ZSkgPT4ge1xuICAgIHN0YXRlLmNvbG9yID0gdmFsdWU7XG4gICAgc3RhdGUuaGV4ID0gc3RhdGUuY29sb3IuaGV4O1xuICAgIHN0YXRlLnJnYiA9IHN0YXRlLmNvbG9yLnJnYjtcbiAgfSxcbiAgeyBkZWVwOiB0cnVlIH0sXG4pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIGNsYXNzPVwicnVpLWNvbG9yLWlucHV0IGZsZXgganVzdGlmeS1jZW50ZXIgZ2FwLTJcIlxuICAgIHYtYmluZD1cIiRhdHRyc1wiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIgZ2FwLTEgdy1bMTZyZW1dXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsXCI+XG4gICAgICAgIDxSdWlUZXh0RmllbGRcbiAgICAgICAgICB2LWlmPVwiaW5wdXRUeXBlID09PSAnaGV4J1wiXG4gICAgICAgICAgdi1tb2RlbD1cInN0YXRlLmhleFwiXG4gICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICBjbGFzcz1cImZsZXgtMSB3LWZ1bGwgWyZfaW5wdXRdOnVwcGVyY2FzZVwiXG4gICAgICAgICAgbWF4bGVuZ3RoPVwiNlwiXG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICBkZW5zZVxuICAgICAgICAgIGhpZGUtZGV0YWlsc1xuICAgICAgICAgIEB1cGRhdGU6bW9kZWwtdmFsdWU9XCJvbklucHV0Q2hhbmdlKGlucHV0VHlwZSwgJGV2ZW50KVwiXG4gICAgICAgICAgQGJsdXI9XCJvbkJsdXJDaGFuZ2UoaW5wdXRUeXBlLCAkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx0ZW1wbGF0ZSAjcHJlcGVuZD5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1ydWktdGV4dFwiPlxuICAgICAgICAgICAgICAjXG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgPC9SdWlUZXh0RmllbGQ+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICB2LWVsc2VcbiAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC0xIGdhcC0xXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxSdWlUZXh0RmllbGRcbiAgICAgICAgICAgIHYtZm9yPVwiKHYsIGkpIGluIHN0YXRlLnJnYlwiXG4gICAgICAgICAgICA6a2V5PVwiaVwiXG4gICAgICAgICAgICA6bW9kZWwtdmFsdWU9XCJ2LnRvU3RyaW5nKClcIlxuICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICAgIGNsYXNzPVwiWyZfaW5wdXRdOnRleHQtY2VudGVyIHctZnVsbFwiXG4gICAgICAgICAgICBtYXhsZW5ndGg9XCIzXCJcbiAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICBkZW5zZVxuICAgICAgICAgICAgaGlkZS1kZXRhaWxzXG4gICAgICAgICAgICBAdXBkYXRlOm1vZGVsLXZhbHVlPVwib25JbnB1dENoYW5nZShpbnB1dFR5cGUsICRldmVudCwgaSlcIlxuICAgICAgICAgICAgQGJsdXI9XCJvbkJsdXJDaGFuZ2UoaW5wdXRUeXBlLCAkZXZlbnQsIGkpXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwidXBwZXJjYXNlIHRleHQtcnVpLXRleHQtc2Vjb25kYXJ5IHRleHQtc21cIj5cbiAgICAgICAge3sgaW5wdXRUeXBlIH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8UnVpQnV0dG9uXG4gICAgICBjbGFzcz1cImgtMTBcIlxuICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgQGNsaWNrPVwib25JbnB1dFR5cGVDaGFuZ2UoKVwiXG4gICAgPlxuICAgICAgPFJ1aUljb24gbmFtZT1cImx1LWNoZXZyb25zLXVwLWRvd25cIiAvPlxuICAgIDwvUnVpQnV0dG9uPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuLy8gSW5zcGlyZWQgYnkgaHR0cHM6Ly9naXRodWIuY29tL2Flc29wZXIxMDEvdnVlMy1jb2xvcnBpY2tlci9cbmltcG9ydCBSdWlDb2xvckJvYXJkIGZyb20gJ0AvY29tcG9uZW50cy9jb2xvci1waWNrZXIvUnVpQ29sb3JCb2FyZC52dWUnO1xuaW1wb3J0IFJ1aUNvbG9yRGlzcGxheSBmcm9tICdAL2NvbXBvbmVudHMvY29sb3ItcGlja2VyL1J1aUNvbG9yRGlzcGxheS52dWUnO1xuaW1wb3J0IFJ1aUNvbG9ySHVlIGZyb20gJ0AvY29tcG9uZW50cy9jb2xvci1waWNrZXIvUnVpQ29sb3JIdWUudnVlJztcbmltcG9ydCBSdWlDb2xvcklucHV0IGZyb20gJ0AvY29tcG9uZW50cy9jb2xvci1waWNrZXIvUnVpQ29sb3JJbnB1dC52dWUnO1xuaW1wb3J0IHsgQ29sb3IgfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBQcm9wcyB7XG4gIG1vZGVsVmFsdWU/OiBzdHJpbmc7XG59XG5cbmRlZmluZU9wdGlvbnMoe1xuICBuYW1lOiAnUnVpQ29sb3JQaWNrZXInLFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxufSk7XG5cbmNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7IG1vZGVsVmFsdWU6ICcnIH0pO1xuXG5jb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8e1xuICAoZTogJ3VwZGF0ZTptb2RlbC12YWx1ZScsIHZhbHVlOiBzdHJpbmcpOiB2b2lkO1xufT4oKTtcblxuY29uc3QgeyBtb2RlbFZhbHVlIH0gPSB0b1JlZnMocHJvcHMpO1xuXG5jb25zdCBzdGF0ZSA9IHJlYWN0aXZlKHtcbiAgY29sb3I6IG5ldyBDb2xvcihnZXQobW9kZWxWYWx1ZSkpLFxufSk7XG5cbmZ1bmN0aW9uIG9uQm9hcmRDaGFuZ2UoeyBzYXR1cmF0aW9uLCBicmlnaHRuZXNzIH06IHsgc2F0dXJhdGlvbjogbnVtYmVyOyBicmlnaHRuZXNzOiBudW1iZXIgfSkge1xuICBzdGF0ZS5jb2xvci5zYXR1cmF0aW9uID0gc2F0dXJhdGlvbjtcbiAgc3RhdGUuY29sb3IuYnJpZ2h0bmVzcyA9IGJyaWdodG5lc3M7XG59XG5cbndoZW5ldmVyKFxuICBtb2RlbFZhbHVlLFxuICAodmFsdWU6IHN0cmluZykgPT4ge1xuICAgIGlmIChzdGF0ZS5jb2xvci5oZXggIT09IHZhbHVlKVxuICAgICAgc3RhdGUuY29sb3IgPSBuZXcgQ29sb3IodmFsdWUpO1xuICB9LFxuICB7IGRlZXA6IHRydWUgfSxcbik7XG5cbndhdGNoKHN0YXRlLCAoc3RhdGUpID0+IHtcbiAgZW1pdCgndXBkYXRlOm1vZGVsLXZhbHVlJywgc3RhdGUuY29sb3IuaGV4KTtcbn0sIHsgaW1tZWRpYXRlOiB0cnVlLCBkZWVwOiB0cnVlIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIGNsYXNzPVwicnVpLWNvbG9yLXBpY2tlciByZWxhdGl2ZSBzZWxlY3Qtbm9uZSBiZy1pbml0aWFsXCJcbiAgICB2LWJpbmQ9XCIkYXR0cnNcIlxuICA+XG4gICAgPFJ1aUNvbG9yQm9hcmRcbiAgICAgIDpjb2xvcj1cInN0YXRlLmNvbG9yXCJcbiAgICAgIEB1cGRhdGU6Ym9hcmQ9XCJvbkJvYXJkQ2hhbmdlKCRldmVudClcIlxuICAgIC8+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTUgcC00XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTRcIj5cbiAgICAgICAgPFJ1aUNvbG9yRGlzcGxheSA6Y29sb3I9XCJzdGF0ZS5jb2xvci5oZXhTdHJpbmdcIiAvPlxuICAgICAgICA8UnVpQ29sb3JIdWVcbiAgICAgICAgICB2LW1vZGVsPVwic3RhdGUuY29sb3IuaHVlXCJcbiAgICAgICAgICBjbGFzcz1cImZsZXgtMVwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPFJ1aUNvbG9ySW5wdXQgdi1tb2RlbD1cInN0YXRlLmNvbG9yXCIgLz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuIiwiLyogZXNsaW50LWRpc2FibGUgbWF4LWxpbmVzICovXG5cbmV4cG9ydCBjb25zdCB0aW1lem9uZXM6IHN0cmluZ1tdID0gW1xuICAnQWZyaWNhL0FiaWRqYW4nLFxuICAnQWZyaWNhL0FjY3JhJyxcbiAgJ0FmcmljYS9BZGRpc19BYmFiYScsXG4gICdBZnJpY2EvQWxnaWVycycsXG4gICdBZnJpY2EvQXNtYXJhJyxcbiAgJ0FmcmljYS9Bc21lcmEnLFxuICAnQWZyaWNhL0JhbWFrbycsXG4gICdBZnJpY2EvQmFuZ3VpJyxcbiAgJ0FmcmljYS9CYW5qdWwnLFxuICAnQWZyaWNhL0Jpc3NhdScsXG4gICdBZnJpY2EvQmxhbnR5cmUnLFxuICAnQWZyaWNhL0JyYXp6YXZpbGxlJyxcbiAgJ0FmcmljYS9CdWp1bWJ1cmEnLFxuICAnQWZyaWNhL0NhaXJvJyxcbiAgJ0FmcmljYS9DYXNhYmxhbmNhJyxcbiAgJ0FmcmljYS9DZXV0YScsXG4gICdBZnJpY2EvQ29uYWtyeScsXG4gICdBZnJpY2EvRGFrYXInLFxuICAnQWZyaWNhL0Rhcl9lc19TYWxhYW0nLFxuICAnQWZyaWNhL0RqaWJvdXRpJyxcbiAgJ0FmcmljYS9Eb3VhbGEnLFxuICAnQWZyaWNhL0VsX0FhaXVuJyxcbiAgJ0FmcmljYS9GcmVldG93bicsXG4gICdBZnJpY2EvR2Fib3JvbmUnLFxuICAnQWZyaWNhL0hhcmFyZScsXG4gICdBZnJpY2EvSm9oYW5uZXNidXJnJyxcbiAgJ0FmcmljYS9KdWJhJyxcbiAgJ0FmcmljYS9LYW1wYWxhJyxcbiAgJ0FmcmljYS9LaGFydG91bScsXG4gICdBZnJpY2EvS2lnYWxpJyxcbiAgJ0FmcmljYS9LaW5zaGFzYScsXG4gICdBZnJpY2EvTGFnb3MnLFxuICAnQWZyaWNhL0xpYnJldmlsbGUnLFxuICAnQWZyaWNhL0xvbWUnLFxuICAnQWZyaWNhL0x1YW5kYScsXG4gICdBZnJpY2EvTHVidW1iYXNoaScsXG4gICdBZnJpY2EvTHVzYWthJyxcbiAgJ0FmcmljYS9NYWxhYm8nLFxuICAnQWZyaWNhL01hcHV0bycsXG4gICdBZnJpY2EvTWFzZXJ1JyxcbiAgJ0FmcmljYS9NYmFiYW5lJyxcbiAgJ0FmcmljYS9Nb2dhZGlzaHUnLFxuICAnQWZyaWNhL01vbnJvdmlhJyxcbiAgJ0FmcmljYS9OYWlyb2JpJyxcbiAgJ0FmcmljYS9OZGphbWVuYScsXG4gICdBZnJpY2EvTmlhbWV5JyxcbiAgJ0FmcmljYS9Ob3Vha2Nob3R0JyxcbiAgJ0FmcmljYS9PdWFnYWRvdWdvdScsXG4gICdBZnJpY2EvUG9ydG8tTm92bycsXG4gICdBZnJpY2EvU2FvX1RvbWUnLFxuICAnQWZyaWNhL1RpbWJ1a3R1JyxcbiAgJ0FmcmljYS9Ucmlwb2xpJyxcbiAgJ0FmcmljYS9UdW5pcycsXG4gICdBZnJpY2EvV2luZGhvZWsnLFxuICAnQW1lcmljYS9BZGFrJyxcbiAgJ0FtZXJpY2EvQW5jaG9yYWdlJyxcbiAgJ0FtZXJpY2EvQW5ndWlsbGEnLFxuICAnQW1lcmljYS9BbnRpZ3VhJyxcbiAgJ0FtZXJpY2EvQXJhZ3VhaW5hJyxcbiAgJ0FtZXJpY2EvQXJnZW50aW5hL0J1ZW5vc19BaXJlcycsXG4gICdBbWVyaWNhL0FyZ2VudGluYS9DYXRhbWFyY2EnLFxuICAnQW1lcmljYS9BcmdlbnRpbmEvQ29tb2RSaXZhZGF2aWEnLFxuICAnQW1lcmljYS9BcmdlbnRpbmEvQ29yZG9iYScsXG4gICdBbWVyaWNhL0FyZ2VudGluYS9KdWp1eScsXG4gICdBbWVyaWNhL0FyZ2VudGluYS9MYV9SaW9qYScsXG4gICdBbWVyaWNhL0FyZ2VudGluYS9NZW5kb3phJyxcbiAgJ0FtZXJpY2EvQXJnZW50aW5hL1Jpb19HYWxsZWdvcycsXG4gICdBbWVyaWNhL0FyZ2VudGluYS9TYWx0YScsXG4gICdBbWVyaWNhL0FyZ2VudGluYS9TYW5fSnVhbicsXG4gICdBbWVyaWNhL0FyZ2VudGluYS9TYW5fTHVpcycsXG4gICdBbWVyaWNhL0FyZ2VudGluYS9UdWN1bWFuJyxcbiAgJ0FtZXJpY2EvQXJnZW50aW5hL1VzaHVhaWEnLFxuICAnQW1lcmljYS9BcnViYScsXG4gICdBbWVyaWNhL0FzdW5jaW9uJyxcbiAgJ0FtZXJpY2EvQXRpa29rYW4nLFxuICAnQW1lcmljYS9BdGthJyxcbiAgJ0FtZXJpY2EvQmFoaWEnLFxuICAnQW1lcmljYS9CYWhpYV9CYW5kZXJhcycsXG4gICdBbWVyaWNhL0JhcmJhZG9zJyxcbiAgJ0FtZXJpY2EvQmVsZW0nLFxuICAnQW1lcmljYS9CZWxpemUnLFxuICAnQW1lcmljYS9CbGFuYy1TYWJsb24nLFxuICAnQW1lcmljYS9Cb2FfVmlzdGEnLFxuICAnQW1lcmljYS9Cb2dvdGEnLFxuICAnQW1lcmljYS9Cb2lzZScsXG4gICdBbWVyaWNhL0J1ZW5vc19BaXJlcycsXG4gICdBbWVyaWNhL0NhbWJyaWRnZV9CYXknLFxuICAnQW1lcmljYS9DYW1wb19HcmFuZGUnLFxuICAnQW1lcmljYS9DYW5jdW4nLFxuICAnQW1lcmljYS9DYXJhY2FzJyxcbiAgJ0FtZXJpY2EvQ2F0YW1hcmNhJyxcbiAgJ0FtZXJpY2EvQ2F5ZW5uZScsXG4gICdBbWVyaWNhL0NheW1hbicsXG4gICdBbWVyaWNhL0NoaWNhZ28nLFxuICAnQW1lcmljYS9DaGlodWFodWEnLFxuICAnQW1lcmljYS9Db3JhbF9IYXJib3VyJyxcbiAgJ0FtZXJpY2EvQ29yZG9iYScsXG4gICdBbWVyaWNhL0Nvc3RhX1JpY2EnLFxuICAnQW1lcmljYS9DcmVzdG9uJyxcbiAgJ0FtZXJpY2EvQ3VpYWJhJyxcbiAgJ0FtZXJpY2EvQ3VyYWNhbycsXG4gICdBbWVyaWNhL0Rhbm1hcmtzaGF2bicsXG4gICdBbWVyaWNhL0Rhd3NvbicsXG4gICdBbWVyaWNhL0Rhd3Nvbl9DcmVlaycsXG4gICdBbWVyaWNhL0RlbnZlcicsXG4gICdBbWVyaWNhL0RldHJvaXQnLFxuICAnQW1lcmljYS9Eb21pbmljYScsXG4gICdBbWVyaWNhL0VkbW9udG9uJyxcbiAgJ0FtZXJpY2EvRWlydW5lcGUnLFxuICAnQW1lcmljYS9FbF9TYWx2YWRvcicsXG4gICdBbWVyaWNhL0Vuc2VuYWRhJyxcbiAgJ0FtZXJpY2EvRm9ydF9OZWxzb24nLFxuICAnQW1lcmljYS9Gb3J0X1dheW5lJyxcbiAgJ0FtZXJpY2EvRm9ydGFsZXphJyxcbiAgJ0FtZXJpY2EvR2xhY2VfQmF5JyxcbiAgJ0FtZXJpY2EvR29kdGhhYicsXG4gICdBbWVyaWNhL0dvb3NlX0JheScsXG4gICdBbWVyaWNhL0dyYW5kX1R1cmsnLFxuICAnQW1lcmljYS9HcmVuYWRhJyxcbiAgJ0FtZXJpY2EvR3VhZGVsb3VwZScsXG4gICdBbWVyaWNhL0d1YXRlbWFsYScsXG4gICdBbWVyaWNhL0d1YXlhcXVpbCcsXG4gICdBbWVyaWNhL0d1eWFuYScsXG4gICdBbWVyaWNhL0hhbGlmYXgnLFxuICAnQW1lcmljYS9IYXZhbmEnLFxuICAnQW1lcmljYS9IZXJtb3NpbGxvJyxcbiAgJ0FtZXJpY2EvSW5kaWFuYS9JbmRpYW5hcG9saXMnLFxuICAnQW1lcmljYS9JbmRpYW5hL0tub3gnLFxuICAnQW1lcmljYS9JbmRpYW5hL01hcmVuZ28nLFxuICAnQW1lcmljYS9JbmRpYW5hL1BldGVyc2J1cmcnLFxuICAnQW1lcmljYS9JbmRpYW5hL1RlbGxfQ2l0eScsXG4gICdBbWVyaWNhL0luZGlhbmEvVmV2YXknLFxuICAnQW1lcmljYS9JbmRpYW5hL1ZpbmNlbm5lcycsXG4gICdBbWVyaWNhL0luZGlhbmEvV2luYW1hYycsXG4gICdBbWVyaWNhL0luZGlhbmFwb2xpcycsXG4gICdBbWVyaWNhL0ludXZpaycsXG4gICdBbWVyaWNhL0lxYWx1aXQnLFxuICAnQW1lcmljYS9KYW1haWNhJyxcbiAgJ0FtZXJpY2EvSnVqdXknLFxuICAnQW1lcmljYS9KdW5lYXUnLFxuICAnQW1lcmljYS9LZW50dWNreS9Mb3Vpc3ZpbGxlJyxcbiAgJ0FtZXJpY2EvS2VudHVja3kvTW9udGljZWxsbycsXG4gICdBbWVyaWNhL0tub3hfSU4nLFxuICAnQW1lcmljYS9LcmFsZW5kaWprJyxcbiAgJ0FtZXJpY2EvTGFfUGF6JyxcbiAgJ0FtZXJpY2EvTGltYScsXG4gICdBbWVyaWNhL0xvc19BbmdlbGVzJyxcbiAgJ0FtZXJpY2EvTG91aXN2aWxsZScsXG4gICdBbWVyaWNhL0xvd2VyX1ByaW5jZXMnLFxuICAnQW1lcmljYS9NYWNlaW8nLFxuICAnQW1lcmljYS9NYW5hZ3VhJyxcbiAgJ0FtZXJpY2EvTWFuYXVzJyxcbiAgJ0FtZXJpY2EvTWFyaWdvdCcsXG4gICdBbWVyaWNhL01hcnRpbmlxdWUnLFxuICAnQW1lcmljYS9NYXRhbW9yb3MnLFxuICAnQW1lcmljYS9NYXphdGxhbicsXG4gICdBbWVyaWNhL01lbmRvemEnLFxuICAnQW1lcmljYS9NZW5vbWluZWUnLFxuICAnQW1lcmljYS9NZXJpZGEnLFxuICAnQW1lcmljYS9NZXRsYWthdGxhJyxcbiAgJ0FtZXJpY2EvTWV4aWNvX0NpdHknLFxuICAnQW1lcmljYS9NaXF1ZWxvbicsXG4gICdBbWVyaWNhL01vbmN0b24nLFxuICAnQW1lcmljYS9Nb250ZXJyZXknLFxuICAnQW1lcmljYS9Nb250ZXZpZGVvJyxcbiAgJ0FtZXJpY2EvTW9udHJlYWwnLFxuICAnQW1lcmljYS9Nb250c2VycmF0JyxcbiAgJ0FtZXJpY2EvTmFzc2F1JyxcbiAgJ0FtZXJpY2EvTmV3X1lvcmsnLFxuICAnQW1lcmljYS9OaXBpZ29uJyxcbiAgJ0FtZXJpY2EvTm9tZScsXG4gICdBbWVyaWNhL05vcm9uaGEnLFxuICAnQW1lcmljYS9Ob3J0aF9EYWtvdGEvQmV1bGFoJyxcbiAgJ0FtZXJpY2EvTm9ydGhfRGFrb3RhL0NlbnRlcicsXG4gICdBbWVyaWNhL05vcnRoX0Rha290YS9OZXdfU2FsZW0nLFxuICAnQW1lcmljYS9OdXVrJyxcbiAgJ0FtZXJpY2EvT2ppbmFnYScsXG4gICdBbWVyaWNhL1BhbmFtYScsXG4gICdBbWVyaWNhL1BhbmduaXJ0dW5nJyxcbiAgJ0FtZXJpY2EvUGFyYW1hcmlibycsXG4gICdBbWVyaWNhL1Bob2VuaXgnLFxuICAnQW1lcmljYS9Qb3J0LWF1LVByaW5jZScsXG4gICdBbWVyaWNhL1BvcnRfb2ZfU3BhaW4nLFxuICAnQW1lcmljYS9Qb3J0b19BY3JlJyxcbiAgJ0FtZXJpY2EvUG9ydG9fVmVsaG8nLFxuICAnQW1lcmljYS9QdWVydG9fUmljbycsXG4gICdBbWVyaWNhL1B1bnRhX0FyZW5hcycsXG4gICdBbWVyaWNhL1JhaW55X1JpdmVyJyxcbiAgJ0FtZXJpY2EvUmFua2luX0lubGV0JyxcbiAgJ0FtZXJpY2EvUmVjaWZlJyxcbiAgJ0FtZXJpY2EvUmVnaW5hJyxcbiAgJ0FtZXJpY2EvUmVzb2x1dGUnLFxuICAnQW1lcmljYS9SaW9fQnJhbmNvJyxcbiAgJ0FtZXJpY2EvUm9zYXJpbycsXG4gICdBbWVyaWNhL1NhbnRhX0lzYWJlbCcsXG4gICdBbWVyaWNhL1NhbnRhcmVtJyxcbiAgJ0FtZXJpY2EvU2FudGlhZ28nLFxuICAnQW1lcmljYS9TYW50b19Eb21pbmdvJyxcbiAgJ0FtZXJpY2EvU2FvX1BhdWxvJyxcbiAgJ0FtZXJpY2EvU2NvcmVzYnlzdW5kJyxcbiAgJ0FtZXJpY2EvU2hpcHJvY2snLFxuICAnQW1lcmljYS9TaXRrYScsXG4gICdBbWVyaWNhL1N0X0JhcnRoZWxlbXknLFxuICAnQW1lcmljYS9TdF9Kb2hucycsXG4gICdBbWVyaWNhL1N0X0tpdHRzJyxcbiAgJ0FtZXJpY2EvU3RfTHVjaWEnLFxuICAnQW1lcmljYS9TdF9UaG9tYXMnLFxuICAnQW1lcmljYS9TdF9WaW5jZW50JyxcbiAgJ0FtZXJpY2EvU3dpZnRfQ3VycmVudCcsXG4gICdBbWVyaWNhL1RlZ3VjaWdhbHBhJyxcbiAgJ0FtZXJpY2EvVGh1bGUnLFxuICAnQW1lcmljYS9UaHVuZGVyX0JheScsXG4gICdBbWVyaWNhL1RpanVhbmEnLFxuICAnQW1lcmljYS9Ub3JvbnRvJyxcbiAgJ0FtZXJpY2EvVG9ydG9sYScsXG4gICdBbWVyaWNhL1ZhbmNvdXZlcicsXG4gICdBbWVyaWNhL1ZpcmdpbicsXG4gICdBbWVyaWNhL1doaXRlaG9yc2UnLFxuICAnQW1lcmljYS9XaW5uaXBlZycsXG4gICdBbWVyaWNhL1lha3V0YXQnLFxuICAnQW1lcmljYS9ZZWxsb3drbmlmZScsXG4gICdBbnRhcmN0aWNhL0Nhc2V5JyxcbiAgJ0FudGFyY3RpY2EvRGF2aXMnLFxuICAnQW50YXJjdGljYS9EdW1vbnREVXJ2aWxsZScsXG4gICdBbnRhcmN0aWNhL01hY3F1YXJpZScsXG4gICdBbnRhcmN0aWNhL01hd3NvbicsXG4gICdBbnRhcmN0aWNhL01jTXVyZG8nLFxuICAnQW50YXJjdGljYS9QYWxtZXInLFxuICAnQW50YXJjdGljYS9Sb3RoZXJhJyxcbiAgJ0FudGFyY3RpY2EvU291dGhfUG9sZScsXG4gICdBbnRhcmN0aWNhL1N5b3dhJyxcbiAgJ0FudGFyY3RpY2EvVHJvbGwnLFxuICAnQW50YXJjdGljYS9Wb3N0b2snLFxuICAnQXJjdGljL0xvbmd5ZWFyYnllbicsXG4gICdBc2lhL0FkZW4nLFxuICAnQXNpYS9BbG1hdHknLFxuICAnQXNpYS9BbW1hbicsXG4gICdBc2lhL0FuYWR5cicsXG4gICdBc2lhL0FxdGF1JyxcbiAgJ0FzaWEvQXF0b2JlJyxcbiAgJ0FzaWEvQXNoZ2FiYXQnLFxuICAnQXNpYS9Bc2hraGFiYWQnLFxuICAnQXNpYS9BdHlyYXUnLFxuICAnQXNpYS9CYWdoZGFkJyxcbiAgJ0FzaWEvQmFocmFpbicsXG4gICdBc2lhL0Jha3UnLFxuICAnQXNpYS9CYW5na29rJyxcbiAgJ0FzaWEvQmFybmF1bCcsXG4gICdBc2lhL0JlaXJ1dCcsXG4gICdBc2lhL0Jpc2hrZWsnLFxuICAnQXNpYS9CcnVuZWknLFxuICAnQXNpYS9DYWxjdXR0YScsXG4gICdBc2lhL0NoaXRhJyxcbiAgJ0FzaWEvQ2hvaWJhbHNhbicsXG4gICdBc2lhL0Nob25ncWluZycsXG4gICdBc2lhL0NodW5na2luZycsXG4gICdBc2lhL0NvbG9tYm8nLFxuICAnQXNpYS9EYWNjYScsXG4gICdBc2lhL0RhbWFzY3VzJyxcbiAgJ0FzaWEvRGhha2EnLFxuICAnQXNpYS9EaWxpJyxcbiAgJ0FzaWEvRHViYWknLFxuICAnQXNpYS9EdXNoYW5iZScsXG4gICdBc2lhL0ZhbWFndXN0YScsXG4gICdBc2lhL0dhemEnLFxuICAnQXNpYS9IYXJiaW4nLFxuICAnQXNpYS9IZWJyb24nLFxuICAnQXNpYS9Ib19DaGlfTWluaCcsXG4gICdBc2lhL0hvbmdfS29uZycsXG4gICdBc2lhL0hvdmQnLFxuICAnQXNpYS9Jcmt1dHNrJyxcbiAgJ0FzaWEvSXN0YW5idWwnLFxuICAnQXNpYS9KYWthcnRhJyxcbiAgJ0FzaWEvSmF5YXB1cmEnLFxuICAnQXNpYS9KZXJ1c2FsZW0nLFxuICAnQXNpYS9LYWJ1bCcsXG4gICdBc2lhL0thbWNoYXRrYScsXG4gICdBc2lhL0thcmFjaGknLFxuICAnQXNpYS9LYXNoZ2FyJyxcbiAgJ0FzaWEvS2F0aG1hbmR1JyxcbiAgJ0FzaWEvS2F0bWFuZHUnLFxuICAnQXNpYS9LaGFuZHlnYScsXG4gICdBc2lhL0tvbGthdGEnLFxuICAnQXNpYS9LcmFzbm95YXJzaycsXG4gICdBc2lhL0t1YWxhX0x1bXB1cicsXG4gICdBc2lhL0t1Y2hpbmcnLFxuICAnQXNpYS9LdXdhaXQnLFxuICAnQXNpYS9NYWNhbycsXG4gICdBc2lhL01hY2F1JyxcbiAgJ0FzaWEvTWFnYWRhbicsXG4gICdBc2lhL01ha2Fzc2FyJyxcbiAgJ0FzaWEvTWFuaWxhJyxcbiAgJ0FzaWEvTXVzY2F0JyxcbiAgJ0FzaWEvTmljb3NpYScsXG4gICdBc2lhL05vdm9rdXpuZXRzaycsXG4gICdBc2lhL05vdm9zaWJpcnNrJyxcbiAgJ0FzaWEvT21zaycsXG4gICdBc2lhL09yYWwnLFxuICAnQXNpYS9QaG5vbV9QZW5oJyxcbiAgJ0FzaWEvUG9udGlhbmFrJyxcbiAgJ0FzaWEvUHlvbmd5YW5nJyxcbiAgJ0FzaWEvUWF0YXInLFxuICAnQXNpYS9Rb3N0YW5heScsXG4gICdBc2lhL1F5enlsb3JkYScsXG4gICdBc2lhL1Jhbmdvb24nLFxuICAnQXNpYS9SaXlhZGgnLFxuICAnQXNpYS9TYWlnb24nLFxuICAnQXNpYS9TYWtoYWxpbicsXG4gICdBc2lhL1NhbWFya2FuZCcsXG4gICdBc2lhL1Nlb3VsJyxcbiAgJ0FzaWEvU2hhbmdoYWknLFxuICAnQXNpYS9TaW5nYXBvcmUnLFxuICAnQXNpYS9TcmVkbmVrb2x5bXNrJyxcbiAgJ0FzaWEvVGFpcGVpJyxcbiAgJ0FzaWEvVGFzaGtlbnQnLFxuICAnQXNpYS9UYmlsaXNpJyxcbiAgJ0FzaWEvVGVocmFuJyxcbiAgJ0FzaWEvVGVsX0F2aXYnLFxuICAnQXNpYS9UaGltYnUnLFxuICAnQXNpYS9UaGltcGh1JyxcbiAgJ0FzaWEvVG9reW8nLFxuICAnQXNpYS9Ub21zaycsXG4gICdBc2lhL1VqdW5nX1BhbmRhbmcnLFxuICAnQXNpYS9VbGFhbmJhYXRhcicsXG4gICdBc2lhL1VsYW5fQmF0b3InLFxuICAnQXNpYS9VcnVtcWknLFxuICAnQXNpYS9Vc3QtTmVyYScsXG4gICdBc2lhL1ZpZW50aWFuZScsXG4gICdBc2lhL1ZsYWRpdm9zdG9rJyxcbiAgJ0FzaWEvWWFrdXRzaycsXG4gICdBc2lhL1lhbmdvbicsXG4gICdBc2lhL1lla2F0ZXJpbmJ1cmcnLFxuICAnQXNpYS9ZZXJldmFuJyxcbiAgJ0F0bGFudGljL0F6b3JlcycsXG4gICdBdGxhbnRpYy9CZXJtdWRhJyxcbiAgJ0F0bGFudGljL0NhbmFyeScsXG4gICdBdGxhbnRpYy9DYXBlX1ZlcmRlJyxcbiAgJ0F0bGFudGljL0ZhZXJvZScsXG4gICdBdGxhbnRpYy9GYXJvZScsXG4gICdBdGxhbnRpYy9KYW5fTWF5ZW4nLFxuICAnQXRsYW50aWMvTWFkZWlyYScsXG4gICdBdGxhbnRpYy9SZXlramF2aWsnLFxuICAnQXRsYW50aWMvU291dGhfR2VvcmdpYScsXG4gICdBdGxhbnRpYy9TdF9IZWxlbmEnLFxuICAnQXRsYW50aWMvU3RhbmxleScsXG4gICdBdXN0cmFsaWEvQUNUJyxcbiAgJ0F1c3RyYWxpYS9BZGVsYWlkZScsXG4gICdBdXN0cmFsaWEvQnJpc2JhbmUnLFxuICAnQXVzdHJhbGlhL0Jyb2tlbl9IaWxsJyxcbiAgJ0F1c3RyYWxpYS9DYW5iZXJyYScsXG4gICdBdXN0cmFsaWEvQ3VycmllJyxcbiAgJ0F1c3RyYWxpYS9EYXJ3aW4nLFxuICAnQXVzdHJhbGlhL0V1Y2xhJyxcbiAgJ0F1c3RyYWxpYS9Ib2JhcnQnLFxuICAnQXVzdHJhbGlhL0xISScsXG4gICdBdXN0cmFsaWEvTGluZGVtYW4nLFxuICAnQXVzdHJhbGlhL0xvcmRfSG93ZScsXG4gICdBdXN0cmFsaWEvTWVsYm91cm5lJyxcbiAgJ0F1c3RyYWxpYS9OU1cnLFxuICAnQXVzdHJhbGlhL05vcnRoJyxcbiAgJ0F1c3RyYWxpYS9QZXJ0aCcsXG4gICdBdXN0cmFsaWEvUXVlZW5zbGFuZCcsXG4gICdBdXN0cmFsaWEvU291dGgnLFxuICAnQXVzdHJhbGlhL1N5ZG5leScsXG4gICdBdXN0cmFsaWEvVGFzbWFuaWEnLFxuICAnQXVzdHJhbGlhL1ZpY3RvcmlhJyxcbiAgJ0F1c3RyYWxpYS9XZXN0JyxcbiAgJ0F1c3RyYWxpYS9ZYW5jb3dpbm5hJyxcbiAgJ0JyYXppbC9BY3JlJyxcbiAgJ0JyYXppbC9EZU5vcm9uaGEnLFxuICAnQnJhemlsL0Vhc3QnLFxuICAnQnJhemlsL1dlc3QnLFxuICAnQ0VUJyxcbiAgJ0NTVDZDRFQnLFxuICAnQ2FuYWRhL0F0bGFudGljJyxcbiAgJ0NhbmFkYS9DZW50cmFsJyxcbiAgJ0NhbmFkYS9FYXN0ZXJuJyxcbiAgJ0NhbmFkYS9Nb3VudGFpbicsXG4gICdDYW5hZGEvTmV3Zm91bmRsYW5kJyxcbiAgJ0NhbmFkYS9QYWNpZmljJyxcbiAgJ0NhbmFkYS9TYXNrYXRjaGV3YW4nLFxuICAnQ2FuYWRhL1l1a29uJyxcbiAgJ0NoaWxlL0NvbnRpbmVudGFsJyxcbiAgJ0NoaWxlL0Vhc3RlcklzbGFuZCcsXG4gICdDdWJhJyxcbiAgJ0VFVCcsXG4gICdFU1QnLFxuICAnRVNUNUVEVCcsXG4gICdFZ3lwdCcsXG4gICdFaXJlJyxcbiAgJ0V0Yy9HTVQnLFxuICAnRXRjL0dNVCswJyxcbiAgJ0V0Yy9HTVQrMScsXG4gICdFdGMvR01UKzEwJyxcbiAgJ0V0Yy9HTVQrMTEnLFxuICAnRXRjL0dNVCsxMicsXG4gICdFdGMvR01UKzInLFxuICAnRXRjL0dNVCszJyxcbiAgJ0V0Yy9HTVQrNCcsXG4gICdFdGMvR01UKzUnLFxuICAnRXRjL0dNVCs2JyxcbiAgJ0V0Yy9HTVQrNycsXG4gICdFdGMvR01UKzgnLFxuICAnRXRjL0dNVCs5JyxcbiAgJ0V0Yy9HTVQtMCcsXG4gICdFdGMvR01ULTEnLFxuICAnRXRjL0dNVC0xMCcsXG4gICdFdGMvR01ULTExJyxcbiAgJ0V0Yy9HTVQtMTInLFxuICAnRXRjL0dNVC0xMycsXG4gICdFdGMvR01ULTE0JyxcbiAgJ0V0Yy9HTVQtMicsXG4gICdFdGMvR01ULTMnLFxuICAnRXRjL0dNVC00JyxcbiAgJ0V0Yy9HTVQtNScsXG4gICdFdGMvR01ULTYnLFxuICAnRXRjL0dNVC03JyxcbiAgJ0V0Yy9HTVQtOCcsXG4gICdFdGMvR01ULTknLFxuICAnRXRjL0dNVDAnLFxuICAnRXRjL0dyZWVud2ljaCcsXG4gICdFdGMvVUNUJyxcbiAgJ0V0Yy9VVEMnLFxuICAnRXRjL1VuaXZlcnNhbCcsXG4gICdFdGMvWnVsdScsXG4gICdFdXJvcGUvQW1zdGVyZGFtJyxcbiAgJ0V1cm9wZS9BbmRvcnJhJyxcbiAgJ0V1cm9wZS9Bc3RyYWtoYW4nLFxuICAnRXVyb3BlL0F0aGVucycsXG4gICdFdXJvcGUvQmVsZmFzdCcsXG4gICdFdXJvcGUvQmVsZ3JhZGUnLFxuICAnRXVyb3BlL0JlcmxpbicsXG4gICdFdXJvcGUvQnJhdGlzbGF2YScsXG4gICdFdXJvcGUvQnJ1c3NlbHMnLFxuICAnRXVyb3BlL0J1Y2hhcmVzdCcsXG4gICdFdXJvcGUvQnVkYXBlc3QnLFxuICAnRXVyb3BlL0J1c2luZ2VuJyxcbiAgJ0V1cm9wZS9DaGlzaW5hdScsXG4gICdFdXJvcGUvQ29wZW5oYWdlbicsXG4gICdFdXJvcGUvRHVibGluJyxcbiAgJ0V1cm9wZS9HaWJyYWx0YXInLFxuICAnRXVyb3BlL0d1ZXJuc2V5JyxcbiAgJ0V1cm9wZS9IZWxzaW5raScsXG4gICdFdXJvcGUvSXNsZV9vZl9NYW4nLFxuICAnRXVyb3BlL0lzdGFuYnVsJyxcbiAgJ0V1cm9wZS9KZXJzZXknLFxuICAnRXVyb3BlL0thbGluaW5ncmFkJyxcbiAgJ0V1cm9wZS9LaWV2JyxcbiAgJ0V1cm9wZS9LaXJvdicsXG4gICdFdXJvcGUvTGlzYm9uJyxcbiAgJ0V1cm9wZS9ManVibGphbmEnLFxuICAnRXVyb3BlL0xvbmRvbicsXG4gICdFdXJvcGUvTHV4ZW1ib3VyZycsXG4gICdFdXJvcGUvTWFkcmlkJyxcbiAgJ0V1cm9wZS9NYWx0YScsXG4gICdFdXJvcGUvTWFyaWVoYW1uJyxcbiAgJ0V1cm9wZS9NaW5zaycsXG4gICdFdXJvcGUvTW9uYWNvJyxcbiAgJ0V1cm9wZS9Nb3Njb3cnLFxuICAnRXVyb3BlL05pY29zaWEnLFxuICAnRXVyb3BlL09zbG8nLFxuICAnRXVyb3BlL1BhcmlzJyxcbiAgJ0V1cm9wZS9Qb2Rnb3JpY2EnLFxuICAnRXVyb3BlL1ByYWd1ZScsXG4gICdFdXJvcGUvUmlnYScsXG4gICdFdXJvcGUvUm9tZScsXG4gICdFdXJvcGUvU2FtYXJhJyxcbiAgJ0V1cm9wZS9TYW5fTWFyaW5vJyxcbiAgJ0V1cm9wZS9TYXJhamV2bycsXG4gICdFdXJvcGUvU2FyYXRvdicsXG4gICdFdXJvcGUvU2ltZmVyb3BvbCcsXG4gICdFdXJvcGUvU2tvcGplJyxcbiAgJ0V1cm9wZS9Tb2ZpYScsXG4gICdFdXJvcGUvU3RvY2tob2xtJyxcbiAgJ0V1cm9wZS9UYWxsaW5uJyxcbiAgJ0V1cm9wZS9UaXJhbmUnLFxuICAnRXVyb3BlL1RpcmFzcG9sJyxcbiAgJ0V1cm9wZS9VbHlhbm92c2snLFxuICAnRXVyb3BlL1V6aGdvcm9kJyxcbiAgJ0V1cm9wZS9WYWR1eicsXG4gICdFdXJvcGUvVmF0aWNhbicsXG4gICdFdXJvcGUvVmllbm5hJyxcbiAgJ0V1cm9wZS9WaWxuaXVzJyxcbiAgJ0V1cm9wZS9Wb2xnb2dyYWQnLFxuICAnRXVyb3BlL1dhcnNhdycsXG4gICdFdXJvcGUvWmFncmViJyxcbiAgJ0V1cm9wZS9aYXBvcm96aHllJyxcbiAgJ0V1cm9wZS9adXJpY2gnLFxuICAnRmFjdG9yeScsXG4gICdHQicsXG4gICdHQi1FaXJlJyxcbiAgJ0dNVCcsXG4gICdHTVQrMCcsXG4gICdHTVQtMCcsXG4gICdHTVQwJyxcbiAgJ0dyZWVud2ljaCcsXG4gICdIU1QnLFxuICAnSG9uZ2tvbmcnLFxuICAnSWNlbGFuZCcsXG4gICdJbmRpYW4vQW50YW5hbmFyaXZvJyxcbiAgJ0luZGlhbi9DaGFnb3MnLFxuICAnSW5kaWFuL0NocmlzdG1hcycsXG4gICdJbmRpYW4vQ29jb3MnLFxuICAnSW5kaWFuL0NvbW9ybycsXG4gICdJbmRpYW4vS2VyZ3VlbGVuJyxcbiAgJ0luZGlhbi9NYWhlJyxcbiAgJ0luZGlhbi9NYWxkaXZlcycsXG4gICdJbmRpYW4vTWF1cml0aXVzJyxcbiAgJ0luZGlhbi9NYXlvdHRlJyxcbiAgJ0luZGlhbi9SZXVuaW9uJyxcbiAgJ0lyYW4nLFxuICAnSXNyYWVsJyxcbiAgJ0phbWFpY2EnLFxuICAnSmFwYW4nLFxuICAnS3dhamFsZWluJyxcbiAgJ0xpYnlhJyxcbiAgJ01FVCcsXG4gICdNU1QnLFxuICAnTVNUN01EVCcsXG4gICdNZXhpY28vQmFqYU5vcnRlJyxcbiAgJ01leGljby9CYWphU3VyJyxcbiAgJ01leGljby9HZW5lcmFsJyxcbiAgJ05aJyxcbiAgJ05aLUNIQVQnLFxuICAnTmF2YWpvJyxcbiAgJ1BSQycsXG4gICdQU1Q4UERUJyxcbiAgJ1BhY2lmaWMvQXBpYScsXG4gICdQYWNpZmljL0F1Y2tsYW5kJyxcbiAgJ1BhY2lmaWMvQm91Z2FpbnZpbGxlJyxcbiAgJ1BhY2lmaWMvQ2hhdGhhbScsXG4gICdQYWNpZmljL0NodXVrJyxcbiAgJ1BhY2lmaWMvRWFzdGVyJyxcbiAgJ1BhY2lmaWMvRWZhdGUnLFxuICAnUGFjaWZpYy9FbmRlcmJ1cnknLFxuICAnUGFjaWZpYy9GYWthb2ZvJyxcbiAgJ1BhY2lmaWMvRmlqaScsXG4gICdQYWNpZmljL0Z1bmFmdXRpJyxcbiAgJ1BhY2lmaWMvR2FsYXBhZ29zJyxcbiAgJ1BhY2lmaWMvR2FtYmllcicsXG4gICdQYWNpZmljL0d1YWRhbGNhbmFsJyxcbiAgJ1BhY2lmaWMvR3VhbScsXG4gICdQYWNpZmljL0hvbm9sdWx1JyxcbiAgJ1BhY2lmaWMvSm9obnN0b24nLFxuICAnUGFjaWZpYy9LaXJpdGltYXRpJyxcbiAgJ1BhY2lmaWMvS29zcmFlJyxcbiAgJ1BhY2lmaWMvS3dhamFsZWluJyxcbiAgJ1BhY2lmaWMvTWFqdXJvJyxcbiAgJ1BhY2lmaWMvTWFycXVlc2FzJyxcbiAgJ1BhY2lmaWMvTWlkd2F5JyxcbiAgJ1BhY2lmaWMvTmF1cnUnLFxuICAnUGFjaWZpYy9OaXVlJyxcbiAgJ1BhY2lmaWMvTm9yZm9saycsXG4gICdQYWNpZmljL05vdW1lYScsXG4gICdQYWNpZmljL1BhZ29fUGFnbycsXG4gICdQYWNpZmljL1BhbGF1JyxcbiAgJ1BhY2lmaWMvUGl0Y2Fpcm4nLFxuICAnUGFjaWZpYy9Qb2hucGVpJyxcbiAgJ1BhY2lmaWMvUG9uYXBlJyxcbiAgJ1BhY2lmaWMvUG9ydF9Nb3Jlc2J5JyxcbiAgJ1BhY2lmaWMvUmFyb3RvbmdhJyxcbiAgJ1BhY2lmaWMvU2FpcGFuJyxcbiAgJ1BhY2lmaWMvU2Ftb2EnLFxuICAnUGFjaWZpYy9UYWhpdGknLFxuICAnUGFjaWZpYy9UYXJhd2EnLFxuICAnUGFjaWZpYy9Ub25nYXRhcHUnLFxuICAnUGFjaWZpYy9UcnVrJyxcbiAgJ1BhY2lmaWMvV2FrZScsXG4gICdQYWNpZmljL1dhbGxpcycsXG4gICdQYWNpZmljL1lhcCcsXG4gICdQb2xhbmQnLFxuICAnUG9ydHVnYWwnLFxuICAnUk9DJyxcbiAgJ1JPSycsXG4gICdTaW5nYXBvcmUnLFxuICAnVHVya2V5JyxcbiAgJ1VDVCcsXG4gICdVUy9BbGFza2EnLFxuICAnVVMvQWxldXRpYW4nLFxuICAnVVMvQXJpem9uYScsXG4gICdVUy9DZW50cmFsJyxcbiAgJ1VTL0Vhc3QtSW5kaWFuYScsXG4gICdVUy9FYXN0ZXJuJyxcbiAgJ1VTL0hhd2FpaScsXG4gICdVUy9JbmRpYW5hLVN0YXJrZScsXG4gICdVUy9NaWNoaWdhbicsXG4gICdVUy9Nb3VudGFpbicsXG4gICdVUy9QYWNpZmljJyxcbiAgJ1VTL1BhY2lmaWMtTmV3JyxcbiAgJ1VTL1NhbW9hJyxcbiAgJ1VUQycsXG4gICdVbml2ZXJzYWwnLFxuICAnVy1TVScsXG4gICdXRVQnLFxuICAnWnVsdScsXG5dO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cCBnZW5lcmljPSdUVmFsdWUsIFRJdGVtJz5cbmltcG9ydCB0eXBlIHsgQ29tcG9uZW50UHVibGljSW5zdGFuY2UsIENvbXB1dGVkUmVmIH0gZnJvbSAndnVlJztcbmltcG9ydCB7IHN5bmNSZWYgfSBmcm9tICdAdnVldXNlL2NvcmUnO1xuaW1wb3J0IHsgbG9naWNBbmQsIGxvZ2ljT3IgfSBmcm9tICdAdnVldXNlL21hdGgnO1xuaW1wb3J0IFJ1aUJ1dHRvbiBmcm9tICdAL2NvbXBvbmVudHMvYnV0dG9ucy9idXR0b24vUnVpQnV0dG9uLnZ1ZSc7XG5pbXBvcnQgUnVpQ2hpcCBmcm9tICdAL2NvbXBvbmVudHMvY2hpcHMvUnVpQ2hpcC52dWUnO1xuaW1wb3J0IFJ1aUljb24gZnJvbSAnQC9jb21wb25lbnRzL2ljb25zL1J1aUljb24udnVlJztcbmltcG9ydCBSdWlNZW51LCB7IHR5cGUgTWVudVByb3BzIH0gZnJvbSAnQC9jb21wb25lbnRzL292ZXJsYXlzL21lbnUvUnVpTWVudS52dWUnO1xuaW1wb3J0IFJ1aVByb2dyZXNzIGZyb20gJ0AvY29tcG9uZW50cy9wcm9ncmVzcy9SdWlQcm9ncmVzcy52dWUnO1xuaW1wb3J0IHsgdHlwZSBLZXlPZlR5cGUsIHVzZURyb3Bkb3duTWVudSwgdXNlRHJvcGRvd25PcHRpb25Qcm9wZXJ0eSB9IGZyb20gJ0AvY29tcG9zYWJsZXMvZHJvcGRvd24tbWVudSc7XG5pbXBvcnQgeyB1c2VBdXRvQ29tcGxldGVGb2N1cywgdXNlQXV0b0NvbXBsZXRlS2V5Ym9hcmROYXZpZ2F0aW9uLCB1c2VBdXRvQ29tcGxldGVTZWFyY2gsIHVzZUF1dG9Db21wbGV0ZVZhbHVlIH0gZnJvbSAnQC9jb21wb3NhYmxlcy9mb3Jtcy9hdXRvLWNvbXBsZXRlJztcbmltcG9ydCB7IGdldFRleHRUb2tlbiB9IGZyb20gJ0AvdXRpbHMvaGVscGVycyc7XG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSAnQC91dGlscy9pcy1lcXVhbCc7XG5cbmV4cG9ydCB0eXBlIEF1dG9Db21wbGV0ZU1vZGVsVmFsdWU8VFZhbHVlPiA9IFRWYWx1ZSBleHRlbmRzIEFycmF5PGluZmVyIFU+ID8gVVtdIDogVFZhbHVlIHwgdW5kZWZpbmVkO1xuXG5leHBvcnQgaW50ZXJmYWNlIEF1dG9Db21wbGV0ZVByb3BzPFRWYWx1ZSwgVEl0ZW0+IHtcbiAgb3B0aW9ucz86IFRJdGVtW107XG4gIGtleUF0dHI/OiBLZXlPZlR5cGU8VEl0ZW0sIFRWYWx1ZSBleHRlbmRzIEFycmF5PGluZmVyIFU+ID8gVSA6IFRWYWx1ZT47XG4gIHRleHRBdHRyPzoga2V5b2YgVEl0ZW07XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgbG9hZGluZz86IGJvb2xlYW47XG4gIHJlYWRPbmx5PzogYm9vbGVhbjtcbiAgZGVuc2U/OiBib29sZWFuO1xuICBjbGVhcmFibGU/OiBib29sZWFuO1xuICBsYWJlbD86IHN0cmluZztcbiAgbWVudU9wdGlvbnM/OiBNZW51UHJvcHM7XG4gIGxhYmVsQ2xhc3M/OiBzdHJpbmc7XG4gIG1lbnVDbGFzcz86IHN0cmluZztcbiAgaXRlbUNsYXNzPzogc3RyaW5nO1xuICBwcmVwZW5kV2lkdGg/OiBudW1iZXI7IC8vIGluIHJlbVxuICBhcHBlbmRXaWR0aD86IG51bWJlcjsgLy8gaW4gcmVtXG4gIGl0ZW1IZWlnaHQ/OiBudW1iZXI7IC8vIGluIHB4XG4gIHZhcmlhbnQ/OiAnZGVmYXVsdCcgfCAnZmlsbGVkJyB8ICdvdXRsaW5lZCc7XG4gIGhpbnQ/OiBzdHJpbmc7XG4gIGVycm9yTWVzc2FnZXM/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgc3VjY2Vzc01lc3NhZ2VzPzogc3RyaW5nIHwgc3RyaW5nW107XG4gIGhpZGVEZXRhaWxzPzogYm9vbGVhbjtcbiAgYXV0b1NlbGVjdEZpcnN0PzogYm9vbGVhbjtcbiAgY2hpcHM/OiBib29sZWFuO1xuICBub0ZpbHRlcj86IGJvb2xlYW47XG4gIGhpZGVOb0RhdGE/OiBib29sZWFuO1xuICBub0RhdGFUZXh0Pzogc3RyaW5nO1xuICBmaWx0ZXI/OiAoaXRlbTogVEl0ZW0sIHF1ZXJ5VGV4dDogc3RyaW5nKSA9PiBib29sZWFuO1xuICBoaWRlU2VsZWN0ZWQ/OiBib29sZWFuO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgcmV0dXJuT2JqZWN0PzogYm9vbGVhbjtcbiAgY3VzdG9tVmFsdWU/OiBib29sZWFuO1xuICBoaWRlQ3VzdG9tVmFsdWU/OiBib29sZWFuO1xufVxuXG5kZWZpbmVPcHRpb25zKHtcbiAgbmFtZTogJ1J1aUF1dG9Db21wbGV0ZScsXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG59KTtcblxuY29uc3QgbW9kZWxWYWx1ZSA9IGRlZmluZU1vZGVsPEF1dG9Db21wbGV0ZU1vZGVsVmFsdWU8VFZhbHVlPj4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuY29uc3Qgc2VhcmNoSW5wdXRNb2RlbCA9IGRlZmluZU1vZGVsPHN0cmluZz4oJ3NlYXJjaElucHV0JywgeyBkZWZhdWx0OiAnJyB9KTtcblxuY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8QXV0b0NvbXBsZXRlUHJvcHM8VFZhbHVlLCBUSXRlbT4+KCksIHtcbiAgb3B0aW9uczogKCkgPT4gW10sXG4gIGRpc2FibGVkOiBmYWxzZSxcbiAgbG9hZGluZzogZmFsc2UsXG4gIHJlYWRPbmx5OiBmYWxzZSxcbiAgZGVuc2U6IGZhbHNlLFxuICBjbGVhcmFibGU6IGZhbHNlLFxuICBoaWRlRGV0YWlsczogZmFsc2UsXG4gIGNoaXBzOiBmYWxzZSxcbiAgbGFiZWw6ICdTZWxlY3QnLFxuICBtZW51T3B0aW9uczogdW5kZWZpbmVkLFxuICBwcmVwZW5kV2lkdGg6IDAsXG4gIGFwcGVuZFdpZHRoOiAwLFxuICB2YXJpYW50OiAnZGVmYXVsdCcsXG4gIGhpbnQ6IHVuZGVmaW5lZCxcbiAga2V5QXR0cjogdW5kZWZpbmVkLFxuICB0ZXh0QXR0cjogdW5kZWZpbmVkLFxuICBpdGVtSGVpZ2h0OiB1bmRlZmluZWQsXG4gIGVycm9yTWVzc2FnZXM6ICgpID0+IFtdLFxuICBzdWNjZXNzTWVzc2FnZXM6ICgpID0+IFtdLFxuICBhdXRvU2VsZWN0Rmlyc3Q6IGZhbHNlLFxuICBub0ZpbHRlcjogZmFsc2UsXG4gIGhpZGVOb0RhdGE6IGZhbHNlLFxuICBub0RhdGFUZXh0OiAnTm8gZGF0YSBhdmFpbGFibGUnLFxuICBoaWRlU2VsZWN0ZWQ6IGZhbHNlLFxuICBwbGFjZWhvbGRlcjogJycsXG4gIHJldHVybk9iamVjdDogZmFsc2UsXG4gIGN1c3RvbVZhbHVlOiBmYWxzZSxcbiAgaGlkZUN1c3RvbVZhbHVlOiBmYWxzZSxcbn0pO1xuXG5jb25zdCBzbG90cyA9IHVzZVNsb3RzKCk7XG5cbmNvbnN0IHsgZGVuc2UsIGRpc2FibGVkLCBvcHRpb25zIH0gPSB0b1JlZnMocHJvcHMpO1xuXG5jb25zdCB7IGdldFRleHQsIGdldElkZW50aWZpZXIgfSA9IHVzZURyb3Bkb3duT3B0aW9uUHJvcGVydHk8VFZhbHVlLCBUSXRlbT4oe1xuICBrZXlBdHRyOiBwcm9wcy5rZXlBdHRyLFxuICB0ZXh0QXR0cjogcHJvcHMudGV4dEF0dHIsXG59KTtcblxuY29uc3QgdGV4dElucHV0ID0gcmVmKCk7XG5jb25zdCBhY3RpdmF0b3IgPSByZWYoKTtcbmNvbnN0IG1lbnVSZWYgPSByZWYoKTtcbmNvbnN0IG1lbnVXcmFwcGVyUmVmID0gcmVmKCk7XG5cbmNvbnN0IHsgZm9jdXNlZDogYWN0aXZhdG9yRm9jdXNlZFdpdGhpbiB9ID0gdXNlRm9jdXNXaXRoaW4oYWN0aXZhdG9yKTtcbmNvbnN0IHsgZm9jdXNlZDogbWVudVdyYXBwZXJGb2N1c2VkV2l0aGluIH0gPSB1c2VGb2N1c1dpdGhpbihtZW51V3JhcHBlclJlZik7XG5jb25zdCB7IGZvY3VzZWQ6IHNlYXJjaElucHV0Rm9jdXNlZCB9ID0gdXNlRm9jdXModGV4dElucHV0KTtcbmNvbnN0IHsgZm9jdXNlZDogYWN0aXZhdG9yRm9jdXNlZCB9ID0gdXNlRm9jdXMoYWN0aXZhdG9yKTtcblxuY29uc3QgcmVuZGVyZWRPcHRpb25zID0gcmVmPENvbXBvbmVudFB1YmxpY0luc3RhbmNlW10+KFtdKTtcblxuY29uc3Qge1xuICBpbnRlcm5hbFNlYXJjaCxcbiAgZmlsdGVyZWRPcHRpb25zLFxuICBqdXN0T3BlbmVkLFxuICB1cGRhdGVJbnRlcm5hbFNlYXJjaCxcbiAgdGV4dFZhbHVlVG9Qcm9wZXJWYWx1ZSxcbn0gPSB1c2VBdXRvQ29tcGxldGVTZWFyY2g8VEl0ZW0+KFxuICBvcHRpb25zLFxuICBzZWFyY2hJbnB1dE1vZGVsLFxuICB7XG4gICAga2V5QXR0cjogdG9SZWYocHJvcHMsICdrZXlBdHRyJyksXG4gICAgdGV4dEF0dHI6IHRvUmVmKHByb3BzLCAndGV4dEF0dHInKSxcbiAgICBub0ZpbHRlcjogdG9SZWYocHJvcHMsICdub0ZpbHRlcicpLFxuICAgIGZpbHRlcjogdG9SZWYocHJvcHMsICdmaWx0ZXInKSxcbiAgICBjdXN0b21WYWx1ZTogdG9SZWYocHJvcHMsICdjdXN0b21WYWx1ZScpLFxuICAgIGhpZGVDdXN0b21WYWx1ZTogdG9SZWYocHJvcHMsICdoaWRlQ3VzdG9tVmFsdWUnKSxcbiAgICByZXR1cm5PYmplY3Q6IHRvUmVmKHByb3BzLCAncmV0dXJuT2JqZWN0JyksXG4gIH0sXG4pO1xuXG4vLyBDYWxjdWxhdGUgbXVsdGlwbGUgZnJvbSBtb2RlbFZhbHVlIGRpcmVjdGx5IHRvIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY3lcbmNvbnN0IG11bHRpcGxlID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4gQXJyYXkuaXNBcnJheShnZXQobW9kZWxWYWx1ZSkpKTtcblxuY29uc3Qgc2hvdWxkQXBwbHlWYWx1ZUFzU2VhcmNoID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4gIShzbG90cy5zZWxlY3Rpb24gfHwgZ2V0KG11bHRpcGxlKSB8fCBwcm9wcy5jaGlwcykpO1xuXG4vLyBDcmVhdGUgYSB0ZW1wb3JhcnkgaXNPcGVuIHJlZiB0aGF0IHdlJ2xsIHN5bmMgd2l0aCB1c2VEcm9wZG93bk1lbnUncyBpc09wZW5cbmNvbnN0IHRlbXBJc09wZW4gPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuXG5jb25zdCB7XG4gIHZhbHVlLFxuICBzZXRTZWxlY3RlZCxcbn0gPSB1c2VBdXRvQ29tcGxldGVWYWx1ZTxBdXRvQ29tcGxldGVNb2RlbFZhbHVlPFRWYWx1ZT4sIFRJdGVtPihcbiAgbW9kZWxWYWx1ZSxcbiAgb3B0aW9ucyxcbiAge1xuICAgIGtleUF0dHI6IHRvUmVmKHByb3BzLCAna2V5QXR0cicpLFxuICAgIHJldHVybk9iamVjdDogdG9SZWYocHJvcHMsICdyZXR1cm5PYmplY3QnKSxcbiAgICBjdXN0b21WYWx1ZTogdG9SZWYocHJvcHMsICdjdXN0b21WYWx1ZScpLFxuICB9LFxuICB7XG4gICAgZ2V0SWRlbnRpZmllcixcbiAgICBnZXRUZXh0LFxuICAgIHRleHRWYWx1ZVRvUHJvcGVyVmFsdWUsXG4gICAgc2hvdWxkQXBwbHlWYWx1ZUFzU2VhcmNoLFxuICAgIGlzT3BlbjogdGVtcElzT3BlbixcbiAgICB1cGRhdGVJbnRlcm5hbFNlYXJjaCxcbiAgfSxcbik7XG5cbmNvbnN0IHtcbiAgY29udGFpbmVyUHJvcHMsXG4gIHdyYXBwZXJQcm9wcyxcbiAgcmVuZGVyZWREYXRhLFxuICBpc09wZW4sXG4gIG1lbnVXaWR0aCxcbiAgaXNBY3RpdmVJdGVtLFxuICBpdGVtSW5kZXhJblZhbHVlLFxuICBoaWdobGlnaHRlZEluZGV4LFxuICBtb3ZlSGlnaGxpZ2h0LFxuICBhcHBseUhpZ2hsaWdodGVkLFxuICBvcHRpb25zV2l0aFNlbGVjdGVkSGlkZGVuLFxufSA9IHVzZURyb3Bkb3duTWVudTxUVmFsdWUsIFRJdGVtPih7XG4gIGl0ZW1IZWlnaHQ6IHByb3BzLml0ZW1IZWlnaHQgPz8gKHByb3BzLmRlbnNlID8gMzAgOiA0OCksXG4gIGtleUF0dHI6IHByb3BzLmtleUF0dHIsXG4gIHRleHRBdHRyOiBwcm9wcy50ZXh0QXR0cixcbiAgb3B0aW9uczogZmlsdGVyZWRPcHRpb25zLFxuICBkZW5zZSxcbiAgdmFsdWUsXG4gIG1lbnVSZWYsXG4gIHNldFZhbHVlLFxuICBhdXRvU2VsZWN0Rmlyc3Q6IHByb3BzLmF1dG9TZWxlY3RGaXJzdCxcbiAgaGlkZVNlbGVjdGVkOiBwcm9wcy5oaWRlU2VsZWN0ZWQsXG59KTtcblxuLy8gU3luYyB0aGUgaXNPcGVuIHN0YXRlc1xuc3luY1JlZihpc09wZW4sIHRlbXBJc09wZW4pO1xuXG5jb25zdCB7XG4gIGZvY3VzZWRWYWx1ZUluZGV4LFxuICBtb3ZlU2VsZWN0ZWRWYWx1ZUhpZ2hsaWdodCxcbiAgb25FbnRlcixcbiAgb25JbnB1dERlbGV0ZVByZXNzZWQsXG4gIG9uVGFiLFxuICBzZXRWYWx1ZUZvY3VzLFxufSA9IHVzZUF1dG9Db21wbGV0ZUtleWJvYXJkTmF2aWdhdGlvbjxUSXRlbT4oXG4gIHtcbiAgICBjdXN0b21WYWx1ZTogdG9SZWYocHJvcHMsICdjdXN0b21WYWx1ZScpLFxuICAgIG11bHRpcGxlLFxuICB9LFxuICB7XG4gICAgYWN0aXZhdG9yLFxuICAgIGFwcGx5SGlnaGxpZ2h0ZWQsXG4gICAgY2xlYXIsXG4gICAgZmlsdGVyZWRPcHRpb25zLFxuICAgIGhpZ2hsaWdodGVkSW5kZXgsXG4gICAgaW50ZXJuYWxTZWFyY2gsXG4gICAgaXNPcGVuLFxuICAgIG9wdGlvbnMsXG4gICAgc2VhcmNoSW5wdXRGb2N1c2VkLFxuICAgIHNldFNlYXJjaEFzVmFsdWUsXG4gICAgdmFsdWUsXG4gIH0sXG4pO1xuXG5jb25zdCB7XG4gIGFueUZvY3VzZWQ6IGZvY3VzQW55Rm9jdXNlZCxcbiAgaW5wdXRDbGFzczogZm9jdXNJbnB1dENsYXNzLFxuICBvbkFjdGl2YXRvckZvY3VzZWQ6IGZvY3VzT25BY3RpdmF0b3JGb2N1c2VkLFxuICBvbklucHV0Rm9jdXNlZDogZm9jdXNPbklucHV0Rm9jdXNlZCxcbiAgc2V0SW5wdXRGb2N1czogZm9jdXNTZXRJbnB1dEZvY3VzLFxufSA9IHVzZUF1dG9Db21wbGV0ZUZvY3VzPFRJdGVtPihcbiAge1xuICAgIGN1c3RvbVZhbHVlOiB0b1JlZihwcm9wcywgJ2N1c3RvbVZhbHVlJyksXG4gICAgZGlzYWJsZWQsXG4gICAgc2hvdWxkQXBwbHlWYWx1ZUFzU2VhcmNoLFxuICB9LFxuICB7XG4gICAgYWN0aXZhdG9yRm9jdXNlZCxcbiAgICBhY3RpdmF0b3JGb2N1c2VkV2l0aGluLFxuICAgIGZpbHRlcmVkT3B0aW9ucyxcbiAgICBmb2N1c2VkVmFsdWVJbmRleCxcbiAgICBpbnRlcm5hbFNlYXJjaCxcbiAgICBpc09wZW4sXG4gICAganVzdE9wZW5lZCxcbiAgICBtZW51V3JhcHBlckZvY3VzZWRXaXRoaW4sXG4gICAgc2VhcmNoSW5wdXRGb2N1c2VkLFxuICAgIHNldFNlYXJjaEFzVmFsdWUsXG4gICAgdGV4dElucHV0LFxuICAgIHVwZGF0ZUludGVybmFsU2VhcmNoLFxuICB9LFxuKTtcblxuY29uc3QgdmFsdWVTZXQgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiBnZXQodmFsdWUpLmxlbmd0aCA+IDApO1xuXG5jb25zdCBsYWJlbFdpdGhRdW90ZSA9IGNvbXB1dGVkPHN0cmluZz4oKCkgPT4ge1xuICBpZiAoIXByb3BzLmxhYmVsKVxuICAgIHJldHVybiAnXCJcXFxcMjAwQlwiJztcblxuICByZXR1cm4gYCcgICR7cHJvcHMubGFiZWx9ICAnYDtcbn0pO1xuXG5jb25zdCBtZW51TWluSGVpZ2h0ID0gcmVmPG51bWJlcj4oMCk7XG5cbi8vIFVwZGF0ZSBtZW51IG1pbiBoZWlnaHQgb25seSB3aGVuIHJlbmRlcmVkIGRhdGEgY2hhbmdlc1xud2F0Y2gocmVuZGVyZWREYXRhLCBhc3luYyAoKSA9PiB7XG4gIGF3YWl0IG5leHRUaWNrKCk7XG4gIGNvbnN0IHJlbmRlcmVkT3B0aW9uc0RhdGEgPSBnZXQocmVuZGVyZWRPcHRpb25zKS5zbGljZSgwLCBNYXRoLm1pbig1LCBnZXQocmVuZGVyZWREYXRhKS5sZW5ndGgpKTtcbiAgbGV0IGhlaWdodCA9IDA7XG4gIGZvciAoY29uc3QgaXRlbSBvZiByZW5kZXJlZE9wdGlvbnNEYXRhKSB7XG4gICAgaWYgKGl0ZW0uJGVsKSB7XG4gICAgICBoZWlnaHQgKz0gaXRlbS4kZWwub2Zmc2V0SGVpZ2h0O1xuICAgIH1cbiAgfVxuICBzZXQobWVudU1pbkhlaWdodCwgaGVpZ2h0KTtcbn0sIHsgaW1tZWRpYXRlOiB0cnVlIH0pO1xuXG5jb25zdCBvdXRsaW5lZCA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHByb3BzLnZhcmlhbnQgPT09ICdvdXRsaW5lZCcpO1xuXG5jb25zdCBmbG9hdDogQ29tcHV0ZWRSZWY8Ym9vbGVhbj4gPSBsb2dpY0FuZChcbiAgbG9naWNPcihcbiAgICBpc09wZW4sXG4gICAgdmFsdWVTZXQsXG4gICAgc2VhcmNoSW5wdXRGb2N1c2VkLFxuICApLFxuICBvdXRsaW5lZCxcbik7XG5cbmNvbnN0IHZpcnR1YWxDb250YWluZXJQcm9wcyA9IGNvbXB1dGVkKCgpID0+ICh7XG4gIHN0eWxlOiBjb250YWluZXJQcm9wcy5zdHlsZSBhcyBhbnksXG4gIHJlZjogY29udGFpbmVyUHJvcHMucmVmIGFzIGFueSxcbn0pKTtcblxuZnVuY3Rpb24gdXBkYXRlU2VhcmNoSW5wdXQoZXZlbnQ6IGFueSkge1xuICBjb25zdCB2YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgc2V0KGlzT3BlbiwgdHJ1ZSk7XG4gIHVwZGF0ZUludGVybmFsU2VhcmNoKHZhbHVlKTtcbiAgc2V0KGp1c3RPcGVuZWQsIGZhbHNlKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2V0VmFsdWUodmFsOiBUSXRlbSwgaW5kZXg/OiBudW1iZXIsIHNraXBSZWZvY3VzZWQgPSBmYWxzZSk6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoaXNEZWZpbmVkKGluZGV4KSlcbiAgICBzZXQoaGlnaGxpZ2h0ZWRJbmRleCwgaW5kZXgpO1xuXG4gIGNvbnN0IGlzTXVsdGlwbGUgPSBnZXQobXVsdGlwbGUpO1xuXG4gIGlmIChpc011bHRpcGxlKSB7XG4gICAgY29uc3QgbmV3VmFsdWUgPSBbLi4uZ2V0KHZhbHVlKV07XG4gICAgY29uc3QgaW5kZXhJblZhbHVlID0gaXRlbUluZGV4SW5WYWx1ZSh2YWwpO1xuICAgIGlmIChpbmRleEluVmFsdWUgPT09IC0xKSB7XG4gICAgICB1cGRhdGVJbnRlcm5hbFNlYXJjaCgpO1xuICAgICAgbmV3VmFsdWUucHVzaCh2YWwpO1xuICAgIH1cblxuICAgIGVsc2UgeyBuZXdWYWx1ZS5zcGxpY2UoaW5kZXhJblZhbHVlLCAxKTsgfVxuICAgIHNldCh2YWx1ZSwgbmV3VmFsdWUpO1xuICB9XG4gIGVsc2Uge1xuICAgIGlmIChnZXQoc2hvdWxkQXBwbHlWYWx1ZUFzU2VhcmNoKSlcbiAgICAgIHVwZGF0ZUludGVybmFsU2VhcmNoKGdldFRleHQodmFsKSk7XG4gICAgZWxzZVxuICAgICAgdXBkYXRlSW50ZXJuYWxTZWFyY2goKTtcblxuICAgIHNldCh2YWx1ZSwgW3ZhbF0pO1xuICB9XG5cbiAgaWYgKCFpc011bHRpcGxlKSB7XG4gICAgaWYgKCFza2lwUmVmb2N1c2VkKSB7XG4gICAgICBzZXQoYWN0aXZhdG9yRm9jdXNlZCwgdHJ1ZSk7XG4gICAgICBnZXQoYWN0aXZhdG9yKT8uZm9jdXMoKTtcbiAgICAgIGF3YWl0IG5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgc2V0KGlzT3BlbiwgZmFsc2UpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgc2V0KGlzT3BlbiwgZmFsc2UpO1xuICAgIH1cbiAgfVxuICBlbHNlIGlmICghc2tpcFJlZm9jdXNlZCkge1xuICAgIHNldChzZWFyY2hJbnB1dEZvY3VzZWQsIHRydWUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNldFNlYXJjaEFzVmFsdWUoKSB7XG4gIGNvbnN0IHNlYXJjaFRvQmVWYWx1ZSA9IGdldChpbnRlcm5hbFNlYXJjaCk7XG4gIGlmICghc2VhcmNoVG9CZVZhbHVlKVxuICAgIHJldHVybjtcblxuICBjb25zdCBuZXdWYWx1ZTogVEl0ZW0gPSB0ZXh0VmFsdWVUb1Byb3BlclZhbHVlKHNlYXJjaFRvQmVWYWx1ZSk7XG4gIHNldFZhbHVlKG5ld1ZhbHVlLCB1bmRlZmluZWQsIHRydWUpO1xufVxuXG5mdW5jdGlvbiBjbGVhcigpOiB2b2lkIHtcbiAgdXBkYXRlSW50ZXJuYWxTZWFyY2goKTtcbiAgc2V0KG1vZGVsVmFsdWUsIChBcnJheS5pc0FycmF5KGdldChtb2RlbFZhbHVlKSkgPyBbXSA6IHVuZGVmaW5lZCkgYXMgQXV0b0NvbXBsZXRlTW9kZWxWYWx1ZTxUVmFsdWU+KTtcbn1cblxuZnVuY3Rpb24gY2hpcEF0dHJzKGl0ZW06IFRJdGVtLCBpbmRleDogbnVtYmVyKSB7XG4gIHJldHVybiB7XG4gICAgJ2RhdGEtaW5kZXgnOiBpbmRleCxcbiAgICAnZGF0YS12YWx1ZSc6IGdldElkZW50aWZpZXIoaXRlbSksXG4gICAgJ29uS2V5ZG93bic6IChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQgPT4ge1xuICAgICAgY29uc3QgeyBrZXkgfSA9IGV2ZW50O1xuICAgICAgaWYgKFsnQmFja3NwYWNlJywgJ0RlbGV0ZSddLmluY2x1ZGVzKGtleSkpXG4gICAgICAgIHNldFZhbHVlKGl0ZW0pO1xuICAgIH0sXG4gICAgJ29uQ2xpY2suc3RvcCc6ICgpOiB2b2lkID0+IHtcbiAgICAgIHNldFZhbHVlRm9jdXMoaW5kZXgpO1xuICAgIH0sXG4gICAgJ29uQ2xpY2s6Y2xvc2UnOiAoKTogdm9pZCA9PiB7XG4gICAgICBzZXRWYWx1ZShpdGVtKTtcbiAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiBzZXRTZWxlY3Rpb25SYW5nZShzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcik6IHZvaWQge1xuICBzZXQoc2VhcmNoSW5wdXRGb2N1c2VkLCB0cnVlKTtcbiAgZ2V0KHRleHRJbnB1dCk/LnNldFNlbGVjdGlvblJhbmdlPy4oc3RhcnQsIGVuZCk7XG59XG5cbi8vIE9wdGltaXplIG9wdGlvbnMgd2F0Y2hlciB3aXRoIHNoYWxsb3cgY29tcGFyaXNvbiBmaXJzdFxud2F0Y2gob3B0aW9ucywgKGN1cnIsIG9sZCkgPT4ge1xuICBpZiAoY3VyciA9PT0gb2xkIHx8IHByb3BzLmN1c3RvbVZhbHVlKVxuICAgIHJldHVybjtcblxuICAvLyBPbmx5IGRvIGRlZXAgY29tcGFyaXNvbiBpZiByZWZlcmVuY2UgY2hhbmdlZFxuICBpZiAoaXNFcXVhbChjdXJyLCBvbGQpKVxuICAgIHJldHVybjtcblxuICBzZXRTZWxlY3RlZChnZXQodmFsdWUpKTtcbn0pO1xuXG5mdW5jdGlvbiBhcnJvd0NsaWNrZWQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICBpZiAoZ2V0KGlzT3BlbikpIHtcbiAgICBzZXQoaXNPcGVuLCBmYWxzZSk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cbn1cblxuZGVmaW5lRXhwb3NlKHtcbiAgZm9jdXM6IGZvY3VzU2V0SW5wdXRGb2N1cyxcbiAgc2V0U2VsZWN0aW9uUmFuZ2UsXG59KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxSdWlNZW51XG4gICAgdi1tb2RlbD1cImlzT3BlblwiXG4gICAgOmNsYXNzPVwiJHN0eWxlLndyYXBwZXJcIlxuICAgIGRpc2FibGUtYXV0by1mb2N1c1xuICAgIHYtYmluZD1cIntcbiAgICAgIC4uLmdldFJvb3RBdHRycygkYXR0cnMpLFxuICAgICAgcGxhY2VtZW50OiAnYm90dG9tLXN0YXJ0JyxcbiAgICAgIGNsb3NlT25Db250ZW50Q2xpY2s6IGZhbHNlLFxuICAgICAgZnVsbFdpZHRoOiB0cnVlLFxuICAgICAgcGVyc2lzdE9uQWN0aXZhdG9yQ2xpY2s6IHRydWUsXG4gICAgICAuLi5tZW51T3B0aW9ucyxcbiAgICAgIG1lbnVDbGFzczogW1xuICAgICAgICB7IGhpZGRlbjogKG9wdGlvbnNXaXRoU2VsZWN0ZWRIaWRkZW4ubGVuZ3RoID09PSAwICYmIGN1c3RvbVZhbHVlICYmICFzbG90c1snbm8tZGF0YSddKSB9LFxuICAgICAgICBtZW51T3B0aW9ucz8ubWVudUNsYXNzLFxuICAgICAgXSxcbiAgICAgIGVycm9yTWVzc2FnZXMsXG4gICAgICBzdWNjZXNzTWVzc2FnZXMsXG4gICAgICBoaW50LFxuICAgICAgZGVuc2UsXG4gICAgICBzaG93RGV0YWlsczogIWhpZGVEZXRhaWxzLFxuICAgICAgZGlzYWJsZWQsXG4gICAgfVwiXG4gID5cbiAgICA8dGVtcGxhdGUgI2FjdGl2YXRvcj1cInsgYXR0cnMsIG9wZW4sIGhhc0Vycm9yLCBoYXNTdWNjZXNzIH1cIj5cbiAgICAgIDxzbG90XG4gICAgICAgIG5hbWU9XCJhY3RpdmF0b3JcIlxuICAgICAgICB2LWJpbmQ9XCJ7IGRpc2FibGVkLCB2YWx1ZSwgdmFyaWFudCwgcmVhZE9ubHksIGF0dHJzLCBvcGVuLCBoYXNFcnJvciwgaGFzU3VjY2VzcyB9XCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIHJlZj1cImFjdGl2YXRvclwiXG4gICAgICAgICAgY2xhc3M9XCJncm91cFwiXG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgJHN0eWxlLmFjdGl2YXRvcixcbiAgICAgICAgICAgIGxhYmVsQ2xhc3MsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFskc3R5bGUuZGlzYWJsZWRdOiBkaXNhYmxlZCxcbiAgICAgICAgICAgICAgWyRzdHlsZS5yZWFkb25seV06IHJlYWRPbmx5LFxuICAgICAgICAgICAgICBbJHN0eWxlLm91dGxpbmVkXTogb3V0bGluZWQsXG4gICAgICAgICAgICAgIFskc3R5bGUuZGVuc2VdOiBkZW5zZSxcbiAgICAgICAgICAgICAgWyRzdHlsZS5mbG9hdF06IGZsb2F0LFxuICAgICAgICAgICAgICBbJHN0eWxlLm9wZW5lZF06IG9wZW4sXG4gICAgICAgICAgICAgIFskc3R5bGVbJ3dpdGgtdmFsdWUnXV06IHZhbHVlU2V0LFxuICAgICAgICAgICAgICBbJHN0eWxlWyd3aXRoLWVycm9yJ11dOiBoYXNFcnJvcixcbiAgICAgICAgICAgICAgWyRzdHlsZVsnd2l0aC1zdWNjZXNzJ11dOiBoYXNTdWNjZXNzICYmICFoYXNFcnJvcixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgdi1iaW5kPVwie1xuICAgICAgICAgICAgLi4uZ2V0Tm9uUm9vdEF0dHJzKCRhdHRycywgWydvbkNsaWNrJywgJ2NsYXNzJ10pLFxuICAgICAgICAgICAgLi4uKHJlYWRPbmx5ID8ge30gOiBhdHRycykgfVxuICAgICAgICAgIFwiXG4gICAgICAgICAgZGF0YS1pZD1cImFjdGl2YXRvclwiXG4gICAgICAgICAgOnRhYmluZGV4PVwiZGlzYWJsZWQgfHwgcmVhZE9ubHkgPyAtMSA6IDBcIlxuICAgICAgICAgIEBjbGljaz1cImZvY3VzU2V0SW5wdXRGb2N1cygpXCJcbiAgICAgICAgICBAZm9jdXM9XCJmb2N1c09uQWN0aXZhdG9yRm9jdXNlZCgpXCJcbiAgICAgICAgICBAa2V5ZG93bi5lbnRlcj1cIm9uRW50ZXIoJGV2ZW50KVwiXG4gICAgICAgICAgQGtleWRvd24udGFiPVwib25UYWIoJGV2ZW50KVwiXG4gICAgICAgICAgQGtleWRvd24ubGVmdD1cIm1vdmVTZWxlY3RlZFZhbHVlSGlnaGxpZ2h0KCRldmVudCwgZmFsc2UpXCJcbiAgICAgICAgICBAa2V5ZG93bi5yaWdodD1cIm1vdmVTZWxlY3RlZFZhbHVlSGlnaGxpZ2h0KCRldmVudCwgdHJ1ZSlcIlxuICAgICAgICAgIEBrZXlkb3duLnVwLnByZXZlbnQ9XCJtb3ZlSGlnaGxpZ2h0KHRydWUpXCJcbiAgICAgICAgICBAa2V5ZG93bi5kb3duLnByZXZlbnQ9XCJtb3ZlSGlnaGxpZ2h0KGZhbHNlKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgdi1pZj1cIm91dGxpbmVkIHx8ICghdmFsdWVTZXQgJiYgIXNlYXJjaElucHV0Rm9jdXNlZClcIlxuICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgICAkc3R5bGUubGFiZWwsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAnYWJzb2x1dGUnOiBvdXRsaW5lZCxcbiAgICAgICAgICAgICAgICAncHItMic6ICF2YWx1ZVNldCAmJiAhb3BlbiAmJiBvdXRsaW5lZCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzbG90XG4gICAgICAgICAgICAgIG5hbWU9XCJhY3RpdmF0b3IubGFiZWxcIlxuICAgICAgICAgICAgICB2LWJpbmQ9XCJ7IHZhbHVlIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBsYWJlbCB9fVxuICAgICAgICAgICAgPC9zbG90PlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8ZGl2IDpjbGFzcz1cIiRzdHlsZS52YWx1ZVwiPlxuICAgICAgICAgICAgPHRlbXBsYXRlXG4gICAgICAgICAgICAgIHYtZm9yPVwiKGl0ZW0sIGkpIGluIHZhbHVlXCJcbiAgICAgICAgICAgICAgOmtleT1cImdldElkZW50aWZpZXIoaXRlbSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8UnVpQ2hpcFxuICAgICAgICAgICAgICAgIHYtaWY9XCJjaGlwc1wiXG4gICAgICAgICAgICAgICAgOmtleT1cImdldFRleHRUb2tlbihnZXRJZGVudGlmaWVyKGl0ZW0pKVwiXG4gICAgICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICAgICAgOnNpemU9XCJkZW5zZSA/ICdzbScgOiAnbWQnXCJcbiAgICAgICAgICAgICAgICBjbG9zZWFibGVcbiAgICAgICAgICAgICAgICA6Y2xhc3M9XCJ7ICdsZWFkaW5nLTMnOiBkZW5zZSB9XCJcbiAgICAgICAgICAgICAgICBjbGlja2FibGVcbiAgICAgICAgICAgICAgICB2LWJpbmQ9XCJjaGlwQXR0cnMoaXRlbSwgaSlcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXhcIj5cbiAgICAgICAgICAgICAgICAgIDxzbG90XG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJzZWxlY3Rpb24ucHJlcGVuZFwiXG4gICAgICAgICAgICAgICAgICAgIDppbmRleD1cImlcIlxuICAgICAgICAgICAgICAgICAgICB2LWJpbmQ9XCJ7IGl0ZW0gfVwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPHNsb3RcbiAgICAgICAgICAgICAgICAgICAgOmluZGV4PVwiaVwiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJzZWxlY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICB2LWJpbmQ9XCJ7IGl0ZW0gfVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IGdldFRleHQoaXRlbSkgfX1cbiAgICAgICAgICAgICAgICAgIDwvc2xvdD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9SdWlDaGlwPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgdi1lbHNlLWlmPVwibXVsdGlwbGUgfHwgKCghc2VhcmNoSW5wdXRGb2N1c2VkKSAmJiAoc2xvdHNbJ3NlbGVjdGlvbi5wcmVwZW5kJ10gfHwgc2xvdHMuc2VsZWN0aW9uKSlcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c2xvdFxuICAgICAgICAgICAgICAgICAgbmFtZT1cInNlbGVjdGlvbi5wcmVwZW5kXCJcbiAgICAgICAgICAgICAgICAgIDppbmRleD1cImlcIlxuICAgICAgICAgICAgICAgICAgdi1iaW5kPVwieyBpdGVtIH1cIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPHNsb3RcbiAgICAgICAgICAgICAgICAgIHYtaWY9XCJtdWx0aXBsZSB8fCBzbG90cy5zZWxlY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgOmluZGV4PVwiaVwiXG4gICAgICAgICAgICAgICAgICBuYW1lPVwic2VsZWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgIHYtYmluZD1cInsgaXRlbSwgY2hpcEF0dHJzOiBjaGlwQXR0cnMoaXRlbSwgaSkgfVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgZ2V0VGV4dChpdGVtKSB9fVxuICAgICAgICAgICAgICAgIDwvc2xvdD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHJlZj1cInRleHRJbnB1dFwiXG4gICAgICAgICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgOnZhbHVlPVwiaW50ZXJuYWxTZWFyY2hcIlxuICAgICAgICAgICAgICBjbGFzcz1cImJnLXRyYW5zcGFyZW50IG91dGxpbmUtbm9uZVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgOnBsYWNlaG9sZGVyPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICA6Y2xhc3M9XCJmb2N1c0lucHV0Q2xhc3NcIlxuICAgICAgICAgICAgICBAa2V5ZG93bi5kZWxldGU9XCJvbklucHV0RGVsZXRlUHJlc3NlZCgpXCJcbiAgICAgICAgICAgICAgQGlucHV0LnN0b3A9XCJ1cGRhdGVTZWFyY2hJbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgQGZvY3VzPVwiZm9jdXNPbklucHV0Rm9jdXNlZCgpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8UnVpQnV0dG9uXG4gICAgICAgICAgICB2LWlmPVwiY2xlYXJhYmxlICYmIHZhbHVlU2V0ICYmICFkaXNhYmxlZFwiXG4gICAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgICBpY29uXG4gICAgICAgICAgICBzaXplPVwic21cIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICBjb2xvcj1cImVycm9yXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZ3JvdXAtaG92ZXI6IXZpc2libGVcIlxuICAgICAgICAgICAgOmNsYXNzPVwiWyRzdHlsZS5jbGVhciwgZm9jdXNBbnlGb2N1c2VkICYmICchdmlzaWJsZScsIHtcbiAgICAgICAgICAgICAgJ21yLTInOiAhZGVuc2UsXG4gICAgICAgICAgICB9XVwiXG4gICAgICAgICAgICBAY2xpY2suc3RvcC5wcmV2ZW50PVwiY2xlYXIoKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFJ1aUljb25cbiAgICAgICAgICAgICAgbmFtZT1cImx1LXhcIlxuICAgICAgICAgICAgICBzaXplPVwiMThcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1J1aUJ1dHRvbj5cblxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICA6Y2xhc3M9XCIkc3R5bGUuaWNvbl9fd3JhcHBlclwiXG4gICAgICAgICAgICBAY2xpY2s9XCJhcnJvd0NsaWNrZWQoJGV2ZW50KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFJ1aUljb25cbiAgICAgICAgICAgICAgOmNsYXNzPVwiWyRzdHlsZS5pY29uLCB7ICdyb3RhdGUtMTgwJzogb3BlbiB9XVwiXG4gICAgICAgICAgICAgIDpzaXplPVwiZGVuc2UgPyAxNiA6IDI0XCJcbiAgICAgICAgICAgICAgbmFtZT1cImx1LWNoZXZyb24tZG93blwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgIDxSdWlQcm9ncmVzc1xuICAgICAgICAgICAgdi1pZj1cImxvYWRpbmdcIlxuICAgICAgICAgICAgY2xhc3M9XCJhYnNvbHV0ZSBsZWZ0LTAgYm90dG9tLTAgdy1mdWxsXCJcbiAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICB0aGlja25lc3M9XCIzXCJcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJpbmRldGVybWluYXRlXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGZpZWxkc2V0XG4gICAgICAgICAgdi1pZj1cIm91dGxpbmVkXCJcbiAgICAgICAgICA6Y2xhc3M9XCIkc3R5bGUuZmllbGRzZXRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGxlZ2VuZCA6Y2xhc3M9XCJ7ICdweC0yJzogZmxvYXQgfVwiIC8+XG4gICAgICAgIDwvZmllbGRzZXQ+XG4gICAgICA8L3Nsb3Q+XG4gICAgPC90ZW1wbGF0ZT5cbiAgICA8dGVtcGxhdGUgI2RlZmF1bHQ9XCJ7IHdpZHRoIH1cIj5cbiAgICAgIDxkaXYgcmVmPVwibWVudVdyYXBwZXJSZWZcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIHYtaWY9XCJvcHRpb25zV2l0aFNlbGVjdGVkSGlkZGVuLmxlbmd0aCA+IDBcIlxuICAgICAgICAgIDpjbGFzcz1cIlskc3R5bGUubWVudSwgbWVudUNsYXNzXVwiXG4gICAgICAgICAgOnN0eWxlPVwieyB3aWR0aDogYCR7d2lkdGh9cHhgLCBtaW5XaWR0aDogbWVudVdpZHRoLCBtaW5IZWlnaHQ6IGAke21lbnVNaW5IZWlnaHR9cHhgIH1cIlxuICAgICAgICAgIHYtYmluZD1cInZpcnR1YWxDb250YWluZXJQcm9wc1wiXG4gICAgICAgICAgQHNjcm9sbD1cImNvbnRhaW5lclByb3BzLm9uU2Nyb2xsXCJcbiAgICAgICAgICBAa2V5ZG93bi51cC5wcmV2ZW50PVwibW92ZUhpZ2hsaWdodCh0cnVlKVwiXG4gICAgICAgICAgQGtleWRvd24uZG93bi5wcmV2ZW50PVwibW92ZUhpZ2hsaWdodChmYWxzZSlcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgdi1iaW5kPVwid3JhcHBlclByb3BzXCJcbiAgICAgICAgICAgIHJlZj1cIm1lbnVSZWZcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxSdWlCdXR0b25cbiAgICAgICAgICAgICAgdi1mb3I9XCIoeyBpdGVtLCBfaW5kZXggfSkgaW4gcmVuZGVyZWREYXRhXCJcbiAgICAgICAgICAgICAgcmVmPVwicmVuZGVyZWRPcHRpb25zXCJcbiAgICAgICAgICAgICAgOmtleT1cImdldElkZW50aWZpZXIoaXRlbSk/LnRvU3RyaW5nKClcIlxuICAgICAgICAgICAgICA6YWN0aXZlPVwiaXNBY3RpdmVJdGVtKGl0ZW0pXCJcbiAgICAgICAgICAgICAgOnNpemU9XCJkZW5zZSA/ICdzbScgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICB2YXJpYW50PVwibGlzdFwiXG4gICAgICAgICAgICAgIDpjbGFzcz1cIntcbiAgICAgICAgICAgICAgICBoaWdobGlnaHRlZDogaGlnaGxpZ2h0ZWRJbmRleCA9PT0gX2luZGV4LFxuICAgICAgICAgICAgICAgIFskc3R5bGUuaGlnaGxpZ2h0ZWRdOiBoaWdobGlnaHRlZEluZGV4ID09PSBfaW5kZXgsXG4gICAgICAgICAgICAgICAgWyRzdHlsZS5hY3RpdmVdOiBpc0FjdGl2ZUl0ZW0oaXRlbSksXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICBAY2xpY2s9XCJzZXRWYWx1ZShpdGVtLCBfaW5kZXgpXCJcbiAgICAgICAgICAgICAgQG1vdXNlZG93bj1cImhpZ2hsaWdodGVkSW5kZXggPSBfaW5kZXhcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8dGVtcGxhdGUgI3ByZXBlbmQ+XG4gICAgICAgICAgICAgICAgPHNsb3RcbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJpdGVtLnByZXBlbmRcIlxuICAgICAgICAgICAgICAgICAgdi1iaW5kPVwieyBkaXNhYmxlZCwgaXRlbSwgYWN0aXZlOiBpc0FjdGl2ZUl0ZW0oaXRlbSkgfVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPHNsb3RcbiAgICAgICAgICAgICAgICBuYW1lPVwiaXRlbVwiXG4gICAgICAgICAgICAgICAgdi1iaW5kPVwieyBkaXNhYmxlZCwgaXRlbSwgYWN0aXZlOiBpc0FjdGl2ZUl0ZW0oaXRlbSkgfVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBnZXRUZXh0KGl0ZW0pIH19XG4gICAgICAgICAgICAgIDwvc2xvdD5cbiAgICAgICAgICAgICAgPHRlbXBsYXRlICNhcHBlbmQ+XG4gICAgICAgICAgICAgICAgPHNsb3RcbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJpdGVtLmFwcGVuZFwiXG4gICAgICAgICAgICAgICAgICB2LWJpbmQ9XCJ7IGRpc2FibGVkLCBpdGVtLCBhY3RpdmU6IGlzQWN0aXZlSXRlbShpdGVtKSB9XCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgPC9SdWlCdXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICB2LWVsc2UtaWY9XCIhaGlkZU5vRGF0YVwiXG4gICAgICAgICAgOnN0eWxlPVwieyB3aWR0aDogYCR7d2lkdGh9cHhgLCBtaW5XaWR0aDogbWVudVdpZHRoIH1cIlxuICAgICAgICAgIDpjbGFzcz1cIm1lbnVDbGFzc1wiXG4gICAgICAgID5cbiAgICAgICAgICA8c2xvdCBuYW1lPVwibm8tZGF0YVwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICB2LWlmPVwiIWN1c3RvbVZhbHVlXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwLTRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBub0RhdGFUZXh0IH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3Nsb3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC90ZW1wbGF0ZT5cbiAgPC9SdWlNZW51PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgbW9kdWxlPlxuLndyYXBwZXIge1xuICBAYXBwbHkgdy1mdWxsIGlubGluZS1mbGV4IGZsZXgtY29sO1xuXG4gIC5hY3RpdmF0b3Ige1xuICAgIEBhcHBseSByZWxhdGl2ZSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgdy1mdWxsO1xuICAgIEBhcHBseSBvdXRsaW5lLW5vbmUgZm9jdXMtd2l0aGluOm91dGxpbmUtbm9uZSBjdXJzb3ItcG9pbnRlciBtaW4taC0xNCBwbC0zIHB5LTIgcHItOCByb3VuZGVkO1xuICAgIEBhcHBseSBtLTAgYmctd2hpdGUgdHJhbnNpdGlvbi1hbGwgdGV4dC1ib2R5LTEgdGV4dC1sZWZ0IGhvdmVyOmJvcmRlci1ibGFjaztcblxuICAgICY6bm90KC5vdXRsaW5lZCkge1xuICAgICAgQGFwcGx5IGhvdmVyOmJnLWdyYXktMTAwIGZvY3VzLXdpdGhpbjpiZy1ncmF5LTEwMDtcbiAgICB9XG5cbiAgICAmLmRlbnNlIHtcbiAgICAgIEBhcHBseSBweS0xLjUgbWluLWgtMTA7XG5cbiAgICAgIH4gLmZpZWxkc2V0IHtcbiAgICAgICAgQGFwcGx5IHB4LTI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5kaXNhYmxlZCB7XG4gICAgICBAYXBwbHkgb3BhY2l0eS02NSB0ZXh0LXJ1aS10ZXh0LWRpc2FibGVkIGFjdGl2ZTp0ZXh0LXJ1aS10ZXh0LWRpc2FibGVkIGN1cnNvci1kZWZhdWx0IHBvaW50ZXItZXZlbnRzLW5vbmU7XG4gICAgfVxuXG4gICAgJi5yZWFkb25seSB7XG4gICAgICBAYXBwbHkgb3BhY2l0eS04MCBwb2ludGVyLWV2ZW50cy1ub25lIGN1cnNvci1kZWZhdWx0IGJnLWdyYXktNTA7XG4gICAgfVxuXG4gICAgJi5vdXRsaW5lZCB7XG4gICAgICBAYXBwbHkgYm9yZGVyLW5vbmUgaG92ZXI6Ym9yZGVyLW5vbmU7XG5cbiAgICAgICY6bm90KC5kaXNhYmxlZCk6bm90KC53aXRoLWVycm9yKTpub3QoLndpdGgtc3VjY2Vzcykge1xuICAgICAgICAmLm9wZW5lZCxcbiAgICAgICAgJjpmb2N1cyxcbiAgICAgICAgJjpmb2N1cy13aXRoaW4ge1xuICAgICAgICAgIEBhcHBseSBib3JkZXItcnVpLXByaW1hcnk7XG5cbiAgICAgICAgICB+IC5maWVsZHNldCB7XG4gICAgICAgICAgICBAYXBwbHkgYm9yZGVyLXJ1aS1wcmltYXJ5ICN7IWltcG9ydGFudH07XG4gICAgICAgICAgICBAYXBwbHkgYm9yZGVyLTIgI3shaW1wb3J0YW50fTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgfiAuZmllbGRzZXQge1xuICAgICAgICBAYXBwbHkgYm9yZGVyIGJvcmRlci1ibGFjay9bMC4yM107XG4gICAgICB9XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICB+IC5maWVsZHNldCB7XG4gICAgICAgICAgQGFwcGx5IGJvcmRlci1ibGFjaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmLmRpc2FibGVkIHtcbiAgICAgICAgfiAuZmllbGRzZXQge1xuICAgICAgICAgIEBhcHBseSBib3JkZXItZG90dGVkO1xuICAgICAgICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLWJsYWNrL1swLjIzXSAjeyFpbXBvcnRhbnR9O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYud2l0aC1zdWNjZXNzIHtcbiAgICAgICAgLmxhYmVsIHtcbiAgICAgICAgICBAYXBwbHkgdGV4dC1ydWktc3VjY2VzcyAjeyFpbXBvcnRhbnR9O1xuICAgICAgICB9XG5cbiAgICAgICAgfiAuZmllbGRzZXQge1xuICAgICAgICAgIEBhcHBseSBib3JkZXItcnVpLXN1Y2Nlc3MgI3shaW1wb3J0YW50fTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmLndpdGgtZXJyb3Ige1xuICAgICAgICAubGFiZWwge1xuICAgICAgICAgIEBhcHBseSB0ZXh0LXJ1aS1lcnJvciAjeyFpbXBvcnRhbnR9O1xuICAgICAgICB9XG5cbiAgICAgICAgfiAuZmllbGRzZXQge1xuICAgICAgICAgIEBhcHBseSBib3JkZXItcnVpLWVycm9yICN7IWltcG9ydGFudH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAubGFiZWwge1xuICAgICAgQGFwcGx5IHRleHQtcnVpLXRleHQtc2Vjb25kYXJ5O1xuICAgICAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSAyLjVyZW0pO1xuICAgIH1cblxuICAgIC5sYWJlbCxcbiAgICAudmFsdWUge1xuICAgICAgQGFwcGx5IGJsb2NrIHRydW5jYXRlIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTc1O1xuICAgIH1cblxuICAgIC52YWx1ZSB7XG4gICAgICBAYXBwbHkgZmxleCBnYXAtMSBmbGV4LXdyYXAgZmxleC0xO1xuICAgIH1cblxuICAgIC5jbGVhciB7XG4gICAgICBAYXBwbHkgbWwtYXV0byBzaHJpbmstMCBpbnZpc2libGU7XG4gICAgfVxuXG4gICAgLmljb24ge1xuICAgICAgQGFwcGx5IHRleHQtcnVpLXRleHQgdHJhbnNpdGlvbjtcblxuICAgICAgJl9fd3JhcHBlciB7XG4gICAgICAgIEBhcHBseSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWVuZDtcbiAgICAgICAgQGFwcGx5IGFic29sdXRlIHJpZ2h0LTMgdG9wLXB4IGJvdHRvbS0wO1xuICAgICAgfVxuICAgIH1cblxuICAgICYuZmxvYXQge1xuICAgICAgLmxhYmVsIHtcbiAgICAgICAgQGFwcGx5IC10cmFuc2xhdGUteS0yIHRvcC0wIHRleHQteHMgcHgtMTtcbiAgICAgIH1cblxuICAgICAgfiAuZmllbGRzZXQge1xuICAgICAgICBsZWdlbmQge1xuICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgY29udGVudDogdi1iaW5kKGxhYmVsV2l0aFF1b3RlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJjpub3QoLmRpc2FibGVkKSB7XG4gICAgICAgICYub3BlbmVkLFxuICAgICAgICAmLm9wZW5lZC53aXRoLXZhbHVlLFxuICAgICAgICAmOmZvY3VzLFxuICAgICAgICAmOmZvY3VzLndpdGgtdmFsdWUsXG4gICAgICAgICY6Zm9jdXMtd2l0aGluLFxuICAgICAgICAmOmZvY3VzLXdpdGhpbi53aXRoLXZhbHVlIHtcbiAgICAgICAgICAubGFiZWwge1xuICAgICAgICAgICAgQGFwcGx5IHRleHQtcnVpLXByaW1hcnk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgfiAuZmllbGRzZXQge1xuICAgICAgICAgICAgQGFwcGx5IGJvcmRlci1ydWktcHJpbWFyeTtcbiAgICAgICAgICAgIEBhcHBseSBib3JkZXItMiAjeyFpbXBvcnRhbnR9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5maWVsZHNldCB7XG4gICAgQGFwcGx5IGFic29sdXRlIHctZnVsbCBtaW4tdy0wIGgtW2NhbGMoMTAwJSswLjVyZW0pXSB0b3AtMCBsZWZ0LTAgcm91bmRlZCBwb2ludGVyLWV2ZW50cy1ub25lIHB4LTIgdHJhbnNpdGlvbi1hbGwgLW10LTI7XG5cbiAgICBsZWdlbmQge1xuICAgICAgQGFwcGx5IG9wYWNpdHktMCB0ZXh0LXhzIHRydW5jYXRlO1xuICAgICAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSAxcmVtKTtcblxuICAgICAgJjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiAnICc7XG4gICAgICB9XG5cbiAgICAgICY6YWZ0ZXIge1xuICAgICAgICBAYXBwbHkgdHJ1bmNhdGUgbWF4LXctZnVsbCBsZWFkaW5nLVswXTtcbiAgICAgICAgY29udGVudDogJ1xcMjAwQic7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi5tZW51IHtcbiAgQGFwcGx5IG92ZXJmbG93LXktYXV0byBtYXgtaC02MCBtaW4tdy1bMi41cmVtXTtcbn1cblxuLmhpZ2hsaWdodGVkIHtcbiAgQGFwcGx5IGJnLXJ1aS1ncmV5LTIwMCAjeyFpbXBvcnRhbnR9O1xuXG4gICYuYWN0aXZlIHtcbiAgICBAYXBwbHkgYmctcnVpLWdyZXktMzAwICN7IWltcG9ydGFudH07XG4gIH1cbn1cblxuOmdsb2JhbCguZGFyaykge1xuICAud3JhcHBlciB7XG4gICAgLmFjdGl2YXRvciB7XG4gICAgICBAYXBwbHkgYmctdHJhbnNwYXJlbnQgdGV4dC1ydWktdGV4dDtcblxuICAgICAgJjpub3QoLm91dGxpbmVkKSB7XG4gICAgICAgIEBhcHBseSBob3ZlcjpiZy13aGl0ZS8xMCBmb2N1cy13aXRoaW46Ymctd2hpdGUvMTA7XG5cbiAgICAgICAgJi5kaXNhYmxlZCB7XG4gICAgICAgICAgQGFwcGx5IGJnLXdoaXRlLzEwO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYucmVhZG9ubHkge1xuICAgICAgICBAYXBwbHkgYmctd2hpdGUvMTA7XG4gICAgICB9XG5cbiAgICAgICYub3V0bGluZWQge1xuICAgICAgICB+IC5maWVsZHNldCB7XG4gICAgICAgICAgQGFwcGx5IGJvcmRlci13aGl0ZS9bMC4yM107XG4gICAgICAgIH1cblxuICAgICAgICAmLmRpc2FibGVkIHtcbiAgICAgICAgICB+IC5maWVsZHNldCB7XG4gICAgICAgICAgICBAYXBwbHkgYm9yZGVyLXdoaXRlL1swLjIzXSAjeyFpbXBvcnRhbnR9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgIH4gLmZpZWxkc2V0IHtcbiAgICAgICAgICAgIEBhcHBseSBib3JkZXItd2hpdGU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmhpZ2hsaWdodGVkIHtcbiAgICBAYXBwbHkgYmctcnVpLWdyZXktODAwICN7IWltcG9ydGFudH07XG5cbiAgICAmLmFjdGl2ZSB7XG4gICAgICBAYXBwbHkgYmctcnVpLWdyZXktNzAwICN7IWltcG9ydGFudH07XG4gICAgfVxuICB9XG59XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IGNvbXB1dGVkLCBvbk1vdW50ZWQsIHJlZiwgdHlwZSBTdHlsZVZhbHVlLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5pbXBvcnQgeyBUaW1lQWNjdXJhY3kgfSBmcm9tICdAL2NvbnN0cy90aW1lLWFjY3VyYWN5JztcbmltcG9ydCB7IGFzc2VydCB9IGZyb20gJ0AvdXRpbHMvYXNzZXJ0JztcblxuZXhwb3J0IHR5cGUgVGltZVBpY2tlclNlbGVjdGlvbiA9ICdob3VyJyB8ICdtaW51dGUnIHwgJ3NlY29uZCcgfCAnbWlsbGlzZWNvbmQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJ1aVRpbWVQaWNrZXJQcm9wcyB7XG4gIGFjY3VyYWN5PzogVGltZUFjY3VyYWN5O1xuICBib3JkZXJsZXNzPzogYm9vbGVhbjtcbn1cblxuY29uc3QgbW9kZWxWYWx1ZSA9IGRlZmluZU1vZGVsPERhdGUgfCB1bmRlZmluZWQ+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbmNvbnN0IHNlbGVjdGVkSG91ciA9IGRlZmluZU1vZGVsPG51bWJlciB8IHVuZGVmaW5lZD4oJ2hvdXInKTtcbmNvbnN0IHNlbGVjdGVkTWludXRlID0gZGVmaW5lTW9kZWw8bnVtYmVyIHwgdW5kZWZpbmVkPignbWludXRlJyk7XG5jb25zdCBzZWxlY3RlZFNlY29uZCA9IGRlZmluZU1vZGVsPG51bWJlciB8IHVuZGVmaW5lZD4oJ3NlY29uZCcpO1xuY29uc3Qgc2VsZWN0ZWRNaWxsaXNlY29uZCA9IGRlZmluZU1vZGVsPG51bWJlciB8IHVuZGVmaW5lZD4oJ21pbGxpc2Vjb25kJyk7XG5jb25zdCBlZGl0TW9kZSA9IGRlZmluZU1vZGVsPFRpbWVQaWNrZXJTZWxlY3Rpb24+KCdzZWxlY3Rpb24nLCB7IGRlZmF1bHQ6ICdob3VyJyB9KTtcblxuY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UnVpVGltZVBpY2tlclByb3BzPigpLCB7XG4gIGFjY3VyYWN5OiBUaW1lQWNjdXJhY3kuTUlOVVRFLFxuICBib3JkZXJsZXNzOiBmYWxzZSxcbn0pO1xuXG5jb25zdCBGVUxMX0NJUkNMRSA9IDM2MDtcbmNvbnN0IFRXRUxWRV9IT1VSUyA9IDEyO1xuXG5jb25zdCB0b3RhbEl0ZW1zUGVyTW9kZTogUmVjb3JkPFRpbWVQaWNrZXJTZWxlY3Rpb24sIG51bWJlcj4gPSB7XG4gIGhvdXI6IDEyLFxuICBtaW51dGU6IDYwLFxuICBzZWNvbmQ6IDYwLFxuICBtaWxsaXNlY29uZDogMTAwMCxcbn07XG5cbmNvbnN0IGludGVydmFsczogUmVjb3JkPFRpbWVQaWNrZXJTZWxlY3Rpb24sIG51bWJlcj4gPSB7XG4gIGhvdXI6IDEsXG4gIG1pbnV0ZTogNSxcbiAgc2Vjb25kOiA1LFxuICBtaWxsaXNlY29uZDogMTAwLFxufTtcblxuY29uc3QgaXNEcmFnZ2luZyA9IHJlZjxib29sZWFuPihmYWxzZSk7XG5jb25zdCBjbG9ja0ZhY2UgPSB1c2VUZW1wbGF0ZVJlZjxJbnN0YW5jZVR5cGU8dHlwZW9mIEhUTUxEaXZFbGVtZW50Pj4oJ2Nsb2NrRmFjZScpO1xuXG5jb25zdCBzaG93U2Vjb25kID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4gcHJvcHMuYWNjdXJhY3kgPT09IFRpbWVBY2N1cmFjeS5TRUNPTkQgfHwgcHJvcHMuYWNjdXJhY3kgPT09IFRpbWVBY2N1cmFjeS5NSUxMSVNFQ09ORCk7XG5jb25zdCBzaG93TWlsbGlzZWNvbmQgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiBwcm9wcy5hY2N1cmFjeSA9PT0gVGltZUFjY3VyYWN5Lk1JTExJU0VDT05EKTtcblxuY29uc3QgcGVyaW9kID0gY29tcHV0ZWQ8J1BNJyB8ICdBTSc+KCgpID0+IGlzRGVmaW5lZChzZWxlY3RlZEhvdXIpICYmIGdldChzZWxlY3RlZEhvdXIpID49IFRXRUxWRV9IT1VSUyA/ICdQTScgOiAnQU0nKTtcblxuY29uc3QgZGlzcGxheUhvdXIgPSBjb21wdXRlZDxudW1iZXIgfCB1bmRlZmluZWQ+KCgpID0+IHtcbiAgaWYgKCFpc0RlZmluZWQoc2VsZWN0ZWRIb3VyKSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgaG91clZhbHVlID0gZ2V0KHNlbGVjdGVkSG91cik7XG4gIGNvbnN0IGhvdXIgPSBob3VyVmFsdWUgJSBUV0VMVkVfSE9VUlM7XG4gIHJldHVybiBob3VyID09PSAwID8gVFdFTFZFX0hPVVJTIDogaG91cjtcbn0pO1xuXG5jb25zdCBlZGl0ZWRWYWx1ZSA9IGNvbXB1dGVkPG51bWJlciB8IHVuZGVmaW5lZD4oKCkgPT4ge1xuICBjb25zdCBtb2RlID0gZ2V0KGVkaXRNb2RlKTtcbiAgaWYgKG1vZGUgPT09ICdob3VyJykge1xuICAgIHJldHVybiBnZXQoZGlzcGxheUhvdXIpO1xuICB9XG4gIGVsc2UgaWYgKG1vZGUgPT09ICdtaW51dGUnKSB7XG4gICAgcmV0dXJuIGdldChzZWxlY3RlZE1pbnV0ZSk7XG4gIH1cbiAgZWxzZSBpZiAobW9kZSA9PT0gJ3NlY29uZCcpIHtcbiAgICByZXR1cm4gZ2V0KHNlbGVjdGVkU2Vjb25kKTtcbiAgfVxuICBlbHNlIHtcbiAgICByZXR1cm4gZ2V0KHNlbGVjdGVkTWlsbGlzZWNvbmQpO1xuICB9XG59KTtcblxuY29uc3QgZGlzcGxheUNsb2NrSGFuZENpcmNsZSA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHtcbiAgY29uc3QgbW9kZSA9IGdldChlZGl0TW9kZSk7XG4gIGlmIChtb2RlID09PSAnaG91cicgfHwgIWlzRGVmaW5lZChlZGl0ZWRWYWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgZWxzZSB7XG4gICAgY29uc3QgaW50ZXJ2YWwgPSBpbnRlcnZhbHNbbW9kZV07XG4gICAgY29uc3QgdmFsdWUgPSBnZXQoZWRpdGVkVmFsdWUpO1xuICAgIHJldHVybiB2YWx1ZSAlIGludGVydmFsICE9PSAwO1xuICB9XG59KTtcblxuY29uc3QgZG90U3R5bGUgPSBjb21wdXRlZDxTdHlsZVZhbHVlPigoKSA9PiAoe1xuICB0b3A6ICc1MCUnLFxuICBsZWZ0OiAnNTAlJyxcbiAgdHJhbnNmb3JtOiAndHJhbnNsYXRlKC01MCUsIC01MCUpJyxcbn0pKTtcblxuY29uc3QgY2xvY2tIYW5kU3R5bGUgPSBjb21wdXRlZDxTdHlsZVZhbHVlPigoKSA9PiB7XG4gIGlmICghaXNEZWZpbmVkKGVkaXRlZFZhbHVlKSkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuICBjb25zdCBjdXJyZW50VmFsdWUgPSBnZXQoZWRpdGVkVmFsdWUpO1xuICBjb25zdCB0b3RhbEl0ZW1zID0gdG90YWxJdGVtc1Blck1vZGVbZ2V0KGVkaXRNb2RlKV07XG4gIGNvbnN0IGFuZ2xlID0gKGN1cnJlbnRWYWx1ZSAqIChGVUxMX0NJUkNMRSAvIHRvdGFsSXRlbXMpKTtcblxuICByZXR1cm4ge1xuICAgIGhlaWdodDogJzM2JScsXG4gICAgdG9wOiAnMTQlJyxcbiAgICBsZWZ0OiAnNTAlJyxcbiAgICB0cmFuc2Zvcm1PcmlnaW46ICdib3R0b20gY2VudGVyJyxcbiAgICB0cmFuc2Zvcm06IGB0cmFuc2xhdGVYKC01MCUpIHJvdGF0ZSgke2FuZ2xlfWRlZylgLFxuICAgIHpJbmRleDogMTAsXG4gIH07XG59KTtcblxuY29uc3QgY2xvY2tIYW5kQ2lyY2xlU3R5bGUgPSBjb21wdXRlZDxTdHlsZVZhbHVlPigoKSA9PiB7XG4gIGlmICghaXNEZWZpbmVkKGVkaXRlZFZhbHVlKSkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuICBjb25zdCByYWRpdXMgPSAnMzglJztcbiAgY29uc3QgY3VycmVudFZhbHVlID0gZ2V0KGVkaXRlZFZhbHVlKTtcbiAgY29uc3QgdG90YWxJdGVtcyA9IHRvdGFsSXRlbXNQZXJNb2RlW2dldChlZGl0TW9kZSldO1xuICBjb25zdCBhbmdsZSA9IChjdXJyZW50VmFsdWUgKiAoRlVMTF9DSVJDTEUgLyB0b3RhbEl0ZW1zKSk7XG5cbiAgY29uc3QgcmFkaWFucyA9IChhbmdsZSAqIE1hdGguUEkpIC8gMTgwO1xuXG4gIGNvbnN0IHggPSA1MCArIHBhcnNlRmxvYXQocmFkaXVzKSAqIE1hdGguY29zKHJhZGlhbnMgLSBNYXRoLlBJIC8gMik7XG4gIGNvbnN0IHkgPSA1MCArIHBhcnNlRmxvYXQocmFkaXVzKSAqIE1hdGguc2luKHJhZGlhbnMgLSBNYXRoLlBJIC8gMik7XG5cbiAgcmV0dXJuIHtcbiAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICB0b3A6IGAke3l9JWAsXG4gICAgbGVmdDogYCR7eH0lYCxcbiAgICB3aWR0aDogJzEwcHgnLFxuICAgIGhlaWdodDogJzEwcHgnLFxuICAgIGJvcmRlclJhZGl1czogJzUwJScsXG4gICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlKC01MCUsIC01MCUpJyxcbiAgICB6SW5kZXg6IDExLFxuICB9O1xufSk7XG5cbmNvbnN0IGNsb2NrTnVtYmVycyA9IGNvbXB1dGVkPG51bWJlcltdPigoKSA9PiB7XG4gIGNvbnN0IG1vZGUgPSBnZXQoZWRpdE1vZGUpO1xuICBjb25zdCBpbnRlcnZhbCA9IGludGVydmFsc1ttb2RlXTtcbiAgY29uc3QgdG90YWwgPSB0b3RhbEl0ZW1zUGVyTW9kZVttb2RlXTtcbiAgY29uc3QgbnVtYmVycyA9IGdlbmVyYXRlTnVtYmVycyh0b3RhbCwgaW50ZXJ2YWwpO1xuICBpZiAobW9kZSA9PT0gJ2hvdXInKSB7XG4gICAgbnVtYmVyc1swXSA9IDEyO1xuICB9XG4gIHJldHVybiBudW1iZXJzO1xufSk7XG5cbmZ1bmN0aW9uIGdldE1vZGVsSG91cnMoKSB7XG4gIHJldHVybiBpc0RlZmluZWQobW9kZWxWYWx1ZSkgPyBuZXcgRGF0ZShnZXQobW9kZWxWYWx1ZSkpLmdldEhvdXJzKCkgOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGdldE1vZGVsTWludXRlcygpIHtcbiAgcmV0dXJuIGlzRGVmaW5lZChtb2RlbFZhbHVlKSA/IG5ldyBEYXRlKGdldChtb2RlbFZhbHVlKSkuZ2V0TWludXRlcygpIDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBnZXRNb2RlbFNlY29uZHMoKSB7XG4gIGNvbnN0IGFjY2VwdGVkQWNjdXJhY3k6IFRpbWVBY2N1cmFjeVtdID0gW1RpbWVBY2N1cmFjeS5TRUNPTkQsIFRpbWVBY2N1cmFjeS5NSUxMSVNFQ09ORF07XG4gIHJldHVybiBhY2NlcHRlZEFjY3VyYWN5LmluY2x1ZGVzKHByb3BzLmFjY3VyYWN5KSAmJiBpc0RlZmluZWQobW9kZWxWYWx1ZSlcbiAgICA/IG5ldyBEYXRlKGdldChtb2RlbFZhbHVlKSkuZ2V0U2Vjb25kcygpXG4gICAgOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGdldE1vZGVsTWlsbGlzZWNvbmRzKCkge1xuICByZXR1cm4gcHJvcHMuYWNjdXJhY3kgPT09IFRpbWVBY2N1cmFjeS5NSUxMSVNFQ09ORCAmJiBpc0RlZmluZWQobW9kZWxWYWx1ZSlcbiAgICA/IG5ldyBEYXRlKGdldChtb2RlbFZhbHVlKSkuZ2V0TWlsbGlzZWNvbmRzKClcbiAgICA6IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVOdW1iZXJzKHRvdGFsOiBudW1iZXIsIGludGVydmFsOiBudW1iZXIpOiBudW1iZXJbXSB7XG4gIGNvbnN0IG51bWJlcnM6IG51bWJlcltdID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdG90YWw7IGkgKz0gaW50ZXJ2YWwpIHtcbiAgICBudW1iZXJzLnB1c2goaSk7XG4gIH1cbiAgcmV0dXJuIG51bWJlcnM7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFZhbHVlKHZhbHVlPzogbnVtYmVyLCBwYWRkaW5nID0gMik6IHN0cmluZyB7XG4gIHJldHVybiB2YWx1ZSAhPT0gdW5kZWZpbmVkXG4gICAgPyB2YWx1ZS50b1N0cmluZygpLnBhZFN0YXJ0KHBhZGRpbmcsICcwJylcbiAgICA6ICctJy5yZXBlYXQocGFkZGluZyk7XG59XG5cbmZ1bmN0aW9uIG51bWJlclN0eWxlKG51bTogbnVtYmVyKTogU3R5bGVWYWx1ZSB7XG4gIGNvbnN0IHJhZGl1cyA9ICczOCUnO1xuICBjb25zdCB0b3RhbEl0ZW1zID0gdG90YWxJdGVtc1Blck1vZGVbZ2V0KGVkaXRNb2RlKV07XG4gIGNvbnN0IGFuZ2xlID0gKG51bSAqIChGVUxMX0NJUkNMRSAvIHRvdGFsSXRlbXMpKSAtIDkwO1xuXG4gIGNvbnN0IHJhZGlhbnMgPSAoYW5nbGUgKiBNYXRoLlBJKSAvIDE4MDtcbiAgY29uc3QgeCA9IDUwICsgcGFyc2VGbG9hdChyYWRpdXMpICogTWF0aC5jb3MocmFkaWFucyk7XG4gIGNvbnN0IHkgPSA1MCArIHBhcnNlRmxvYXQocmFkaXVzKSAqIE1hdGguc2luKHJhZGlhbnMpO1xuXG4gIHJldHVybiB7XG4gICAgdG9wOiBgJHt5fSVgLFxuICAgIGxlZnQ6IGAke3h9JWAsXG4gICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlKC01MCUsIC01MCUpJyxcbiAgfTtcbn1cblxuZnVuY3Rpb24gaXNTZWxlY3RlZE51bWJlcihudW06IG51bWJlcik6IGJvb2xlYW4ge1xuICBpZiAoIWlzRGVmaW5lZChlZGl0ZWRWYWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3QgbW9kZSA9IGdldChlZGl0TW9kZSk7XG4gIGlmIChtb2RlID09PSAnaG91cicpIHtcbiAgICByZXR1cm4gZ2V0KGRpc3BsYXlIb3VyKSA9PT0gbnVtO1xuICB9XG4gIGVsc2Uge1xuICAgIGNvbnN0IHZhbHVlID0gZ2V0KGVkaXRlZFZhbHVlKTtcbiAgICBjb25zdCBpbnRlcnZhbCA9IGludGVydmFsc1ttb2RlXTtcbiAgICByZXR1cm4gdmFsdWUgPT09IG51bSB8fCAodmFsdWUgJSBpbnRlcnZhbCA9PT0gMCAmJiB2YWx1ZSA9PT0gbnVtKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB0b2dnbGVBbVBtKCkge1xuICBpZiAoIWlzRGVmaW5lZChzZWxlY3RlZEhvdXIpKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChnZXQoc2VsZWN0ZWRIb3VyKSA8IFRXRUxWRV9IT1VSUykge1xuICAgIHNldChzZWxlY3RlZEhvdXIsIGdldChzZWxlY3RlZEhvdXIpICsgVFdFTFZFX0hPVVJTKTtcbiAgfVxuICBlbHNlIHtcbiAgICBzZXQoc2VsZWN0ZWRIb3VyLCBnZXQoc2VsZWN0ZWRIb3VyKSAtIFRXRUxWRV9IT1VSUyk7XG4gIH1cblxuICB1cGRhdGVNb2RlbFZhbHVlKCk7XG59XG5cbmZ1bmN0aW9uIHN0YXJ0RHJhZyhldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpIHtcbiAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgc2V0KGlzRHJhZ2dpbmcsIHRydWUpO1xuXG4gIGNvbnN0IGhhbmRsZU1vdmUgPSAobW92ZUV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCkgPT4ge1xuICAgIGlmICghZ2V0KGlzRHJhZ2dpbmcpIHx8ICFpc0RlZmluZWQoY2xvY2tGYWNlKSlcbiAgICAgIHJldHVybjtcblxuICAgIGNvbnN0IHJlY3QgPSBnZXQoY2xvY2tGYWNlKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBjZW50ZXJYID0gcmVjdC5sZWZ0ICsgcmVjdC53aWR0aCAvIDI7XG4gICAgY29uc3QgY2VudGVyWSA9IHJlY3QudG9wICsgcmVjdC5oZWlnaHQgLyAyO1xuXG4gICAgbGV0IGNsaWVudFgsIGNsaWVudFk7XG5cbiAgICBpZiAoJ3RvdWNoZXMnIGluIG1vdmVFdmVudCkge1xuICAgICAgY29uc3QgdG91Y2ggPSBtb3ZlRXZlbnQudG91Y2hlc1swXTtcbiAgICAgIGFzc2VydCh0b3VjaCk7XG4gICAgICBjbGllbnRYID0gdG91Y2guY2xpZW50WDtcbiAgICAgIGNsaWVudFkgPSB0b3VjaC5jbGllbnRZO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNsaWVudFggPSBtb3ZlRXZlbnQuY2xpZW50WDtcbiAgICAgIGNsaWVudFkgPSBtb3ZlRXZlbnQuY2xpZW50WTtcbiAgICB9XG5cbiAgICBjb25zdCB4ID0gY2xpZW50WCAtIGNlbnRlclg7XG4gICAgY29uc3QgeSA9IGNsaWVudFkgLSBjZW50ZXJZO1xuXG4gICAgbGV0IGFuZ2xlID0gTWF0aC5hdGFuMih5LCB4KSAqICgxODAgLyBNYXRoLlBJKSArIDkwO1xuICAgIGlmIChhbmdsZSA8IDApXG4gICAgICBhbmdsZSArPSBGVUxMX0NJUkNMRTtcblxuICAgIGNvbnN0IG1vZGUgPSBnZXQoZWRpdE1vZGUpO1xuICAgIGNvbnN0IHVuaXQgPSBNYXRoLnJvdW5kKGFuZ2xlIC8gKEZVTExfQ0lSQ0xFIC8gdG90YWxJdGVtc1Blck1vZGVbbW9kZV0pKSAlIHRvdGFsSXRlbXNQZXJNb2RlW21vZGVdO1xuICAgIGlmIChtb2RlID09PSAnaG91cicpIHtcbiAgICAgIGxldCBob3VyO1xuXG4gICAgICBob3VyID0gdW5pdDtcbiAgICAgIGlmIChob3VyID09PSAwKVxuICAgICAgICBob3VyID0gVFdFTFZFX0hPVVJTO1xuXG4gICAgICBpZiAoZ2V0KHBlcmlvZCkgPT09ICdQTScgJiYgaG91ciA8IFRXRUxWRV9IT1VSUykge1xuICAgICAgICBob3VyICs9IFRXRUxWRV9IT1VSUztcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKGdldChwZXJpb2QpID09PSAnQU0nICYmIGhvdXIgPT09IFRXRUxWRV9IT1VSUykge1xuICAgICAgICBob3VyID0gMDtcbiAgICAgIH1cblxuICAgICAgc2V0KHNlbGVjdGVkSG91ciwgaG91cik7XG4gICAgfVxuICAgIGVsc2UgaWYgKG1vZGUgPT09ICdtaW51dGUnKSB7XG4gICAgICBzZXQoc2VsZWN0ZWRNaW51dGUsIHVuaXQpO1xuICAgIH1cbiAgICBlbHNlIGlmIChtb2RlID09PSAnc2Vjb25kJykge1xuICAgICAgc2V0KHNlbGVjdGVkU2Vjb25kLCB1bml0KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBzZXQoc2VsZWN0ZWRNaWxsaXNlY29uZCwgdW5pdCk7XG4gICAgfVxuXG4gICAgdXBkYXRlTW9kZWxWYWx1ZSgpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUVuZCA9ICgpOiB2b2lkID0+IHtcbiAgICBzZXQoaXNEcmFnZ2luZywgZmFsc2UpO1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIGhhbmRsZU1vdmUpO1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIGhhbmRsZU1vdmUpO1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBoYW5kbGVFbmQpO1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgaGFuZGxlRW5kKTtcblxuICAgIGlmIChnZXQoZWRpdE1vZGUpID09PSAnaG91cicpIHtcbiAgICAgIHNldChlZGl0TW9kZSwgJ21pbnV0ZScpO1xuICAgIH1cbiAgICBlbHNlIGlmIChnZXQoc2hvd1NlY29uZCkgJiYgZ2V0KGVkaXRNb2RlKSA9PT0gJ21pbnV0ZScpIHtcbiAgICAgIHNldChlZGl0TW9kZSwgJ3NlY29uZCcpO1xuICAgIH1cbiAgICBlbHNlIGlmIChnZXQoc2hvd01pbGxpc2Vjb25kKSAmJiBnZXQoZWRpdE1vZGUpID09PSAnc2Vjb25kJykge1xuICAgICAgc2V0KGVkaXRNb2RlLCAnbWlsbGlzZWNvbmQnKTtcbiAgICB9XG4gIH07XG5cbiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgaGFuZGxlTW92ZSk7XG4gIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIGhhbmRsZU1vdmUpO1xuICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgaGFuZGxlRW5kKTtcbiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCBoYW5kbGVFbmQpO1xuXG4gIGhhbmRsZU1vdmUoZXZlbnQpO1xufVxuXG5mdW5jdGlvbiBzZWxlY3RCeUNsaWNrKG51bTogbnVtYmVyKSB7XG4gIGNvbnN0IG1vZGUgPSBnZXQoZWRpdE1vZGUpO1xuICBpZiAobW9kZSA9PT0gJ2hvdXInKSB7XG4gICAgbGV0IG5ld0hvdXIgPSBudW07XG5cbiAgICBpZiAoZ2V0KHBlcmlvZCkgPT09ICdQTScgJiYgbmV3SG91ciA8IFRXRUxWRV9IT1VSUykge1xuICAgICAgbmV3SG91ciArPSBUV0VMVkVfSE9VUlM7XG4gICAgfVxuXG4gICAgc2V0KHNlbGVjdGVkSG91ciwgbmV3SG91cik7XG4gICAgc2V0KGVkaXRNb2RlLCAnbWludXRlJyk7XG4gIH1cbiAgZWxzZSBpZiAobW9kZSA9PT0gJ21pbnV0ZScpIHtcbiAgICBzZXQoc2VsZWN0ZWRNaW51dGUsIG51bSk7XG4gICAgaWYgKGdldChzaG93U2Vjb25kKSlcbiAgICAgIHNldChlZGl0TW9kZSwgJ3NlY29uZCcpO1xuICB9XG4gIGVsc2UgaWYgKG1vZGUgPT09ICdzZWNvbmQnKSB7XG4gICAgc2V0KHNlbGVjdGVkU2Vjb25kLCBudW0pO1xuICAgIGlmIChnZXQoc2hvd01pbGxpc2Vjb25kKSkge1xuICAgICAgc2V0KGVkaXRNb2RlLCAnbWlsbGlzZWNvbmQnKTtcbiAgICB9XG4gIH1cbiAgZWxzZSBpZiAobW9kZSA9PT0gJ21pbGxpc2Vjb25kJykge1xuICAgIHNldChzZWxlY3RlZE1pbGxpc2Vjb25kLCBudW0pO1xuICB9XG5cbiAgdXBkYXRlTW9kZWxWYWx1ZSgpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVNb2RlbFZhbHVlKCkge1xuICBpZiAoIShpc0RlZmluZWQoc2VsZWN0ZWRIb3VyKSAmJiBpc0RlZmluZWQoc2VsZWN0ZWRNaW51dGUpKSkge1xuICAgIHJldHVybjtcbiAgfVxuICBuZXh0VGljaygoKSA9PiB7XG4gICAgY29uc3QgZGF0ZSA9IGlzRGVmaW5lZChtb2RlbFZhbHVlKSA/IG5ldyBEYXRlKGdldChtb2RlbFZhbHVlKSkgOiBuZXcgRGF0ZSgpO1xuICAgIGRhdGUuc2V0SG91cnMoZ2V0KHNlbGVjdGVkSG91cikpO1xuICAgIGRhdGUuc2V0TWludXRlcyhnZXQoc2VsZWN0ZWRNaW51dGUpKTtcbiAgICBkYXRlLnNldFNlY29uZHMoZ2V0KHNlbGVjdGVkU2Vjb25kKSA/PyAwKTtcbiAgICBkYXRlLnNldE1pbGxpc2Vjb25kcyhnZXQoc2VsZWN0ZWRNaWxsaXNlY29uZCkgPz8gMCk7XG4gICAgc2V0KG1vZGVsVmFsdWUsIGRhdGUpO1xuICB9KTtcbn1cblxub25Nb3VudGVkKCgpID0+IHtcbiAgc2V0KHNlbGVjdGVkSG91ciwgZ2V0TW9kZWxIb3VycygpKTtcbiAgc2V0KHNlbGVjdGVkTWludXRlLCBnZXRNb2RlbE1pbnV0ZXMoKSk7XG4gIHNldChzZWxlY3RlZFNlY29uZCwgZ2V0TW9kZWxTZWNvbmRzKCkpO1xuICBzZXQoc2VsZWN0ZWRNaWxsaXNlY29uZCwgZ2V0TW9kZWxNaWxsaXNlY29uZHMoKSk7XG4gIHNldChlZGl0TW9kZSwgJ2hvdXInKTtcbn0pO1xuXG53YXRjaChtb2RlbFZhbHVlLCAoKSA9PiB7XG4gIHNldChzZWxlY3RlZEhvdXIsIGdldE1vZGVsSG91cnMoKSk7XG4gIHNldChzZWxlY3RlZE1pbnV0ZSwgZ2V0TW9kZWxNaW51dGVzKCkpO1xuICBzZXQoc2VsZWN0ZWRTZWNvbmQsIGdldE1vZGVsU2Vjb25kcygpKTtcbiAgc2V0KHNlbGVjdGVkTWlsbGlzZWNvbmQsIGdldE1vZGVsTWlsbGlzZWNvbmRzKCkpO1xufSwgeyBkZWVwOiB0cnVlIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIntcbiAgICAgIFskc3R5bGVbJ3J1aS10aW1lcGlja2VyJ11dOiB0cnVlLFxuICAgICAgWyRzdHlsZS5ib3JkZXJlZF06ICFib3JkZXJsZXNzLFxuICAgIH1cIlxuICA+XG4gICAgPGRpdiA6Y2xhc3M9XCIkc3R5bGVbJ3J1aS1kaWdpdGFsLWRpc3BsYXknXVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyIGdhcC0xXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJ7XG4gICAgICAgICAgICBbJHN0eWxlWydydWktZGlnaXQnXV06IHRydWUsXG4gICAgICAgICAgICBbJHN0eWxlLmFjdGl2ZV06IGVkaXRNb2RlID09PSAnaG91cicsXG4gICAgICAgICAgfVwiXG4gICAgICAgICAgQGNsaWNrPVwiZWRpdE1vZGUgPSAnaG91cidcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZm9ybWF0VmFsdWUoZGlzcGxheUhvdXIpIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC0yeGwgZm9udC1zZW1pYm9sZFwiPlxuICAgICAgICAgIDpcbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJ7XG4gICAgICAgICAgICBbJHN0eWxlWydydWktZGlnaXQnXV06IHRydWUsXG4gICAgICAgICAgICBbJHN0eWxlLmFjdGl2ZV06IGVkaXRNb2RlID09PSAnbWludXRlJyxcbiAgICAgICAgICB9XCJcbiAgICAgICAgICBAY2xpY2s9XCJlZGl0TW9kZSA9ICdtaW51dGUnXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGZvcm1hdFZhbHVlKHNlbGVjdGVkTWludXRlKSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIHYtaWY9XCJzaG93U2Vjb25kXCJcbiAgICAgICAgICBjbGFzcz1cInRleHQtMnhsIGZvbnQtc2VtaWJvbGRcIlxuICAgICAgICA+XG4gICAgICAgICAgOlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIHYtaWY9XCJzaG93U2Vjb25kXCJcbiAgICAgICAgICA6Y2xhc3M9XCJ7XG4gICAgICAgICAgICBbJHN0eWxlWydydWktZGlnaXQnXV06IHRydWUsXG4gICAgICAgICAgICBbJHN0eWxlLmFjdGl2ZV06IGVkaXRNb2RlID09PSAnc2Vjb25kJyxcbiAgICAgICAgICB9XCJcbiAgICAgICAgICBAY2xpY2s9XCJlZGl0TW9kZSA9ICdzZWNvbmQnXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGZvcm1hdFZhbHVlKHNlbGVjdGVkU2Vjb25kKSB9fVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgdi1pZj1cInNob3dNaWxsaXNlY29uZFwiXG4gICAgICAgICAgY2xhc3M9XCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGRcIlxuICAgICAgICA+XG4gICAgICAgICAgLlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgdi1pZj1cInNob3dNaWxsaXNlY29uZFwiXG4gICAgICAgICAgY2xhc3M9XCIhdGV4dC1sZ1wiXG4gICAgICAgICAgOmNsYXNzPVwie1xuICAgICAgICAgICAgWyRzdHlsZS5hY3RpdmVdOiBlZGl0TW9kZSA9PT0gJ21pbGxpc2Vjb25kJyxcbiAgICAgICAgICAgIFskc3R5bGVbJ3J1aS1kaWdpdCddXTogdHJ1ZSxcbiAgICAgICAgICB9XCJcbiAgICAgICAgICBAY2xpY2s9XCJlZGl0TW9kZSA9ICdtaWxsaXNlY29uZCdcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZm9ybWF0VmFsdWUoc2VsZWN0ZWRNaWxsaXNlY29uZCwgMykgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXhsXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJydWktdGltZS1waWNrZXItcGVyaW9kIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgIEBjbGljaz1cInRvZ2dsZUFtUG0oKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgcGVyaW9kIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICByZWY9XCJjbG9ja0ZhY2VcIlxuICAgICAgOmNsYXNzPVwiJHN0eWxlWydydWktY2xvY2stZmFjZSddXCJcbiAgICAgIEBtb3VzZWRvd249XCJzdGFydERyYWcoJGV2ZW50KVwiXG4gICAgICBAdG91Y2hzdGFydD1cInN0YXJ0RHJhZygkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIiRzdHlsZVsncnVpLWNlbnRlci1kb3QnXVwiXG4gICAgICAgIDpzdHlsZT1cImRvdFN0eWxlXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiJHN0eWxlWydydWktY2xvY2staGFuZCddXCJcbiAgICAgICAgOnN0eWxlPVwiY2xvY2tIYW5kU3R5bGVcIlxuICAgICAgLz5cblxuICAgICAgPGRpdlxuICAgICAgICB2LWlmPVwiZGlzcGxheUNsb2NrSGFuZENpcmNsZVwiXG4gICAgICAgIDpjbGFzcz1cIiRzdHlsZVsncnVpLWNsb2NrLWhhbmQtY2lyY2xlJ11cIlxuICAgICAgICA6c3R5bGU9XCJjbG9ja0hhbmRDaXJjbGVTdHlsZVwiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2XG4gICAgICAgIHYtZm9yPVwibnVtIGluIGNsb2NrTnVtYmVyc1wiXG4gICAgICAgIDprZXk9XCJgbnVtLSR7bnVtfWBcIlxuICAgICAgICA6Y2xhc3M9XCJ7XG4gICAgICAgICAgWyRzdHlsZVsncnVpLWNsb2NrLW51bWJlciddXTogdHJ1ZSxcbiAgICAgICAgICBbJHN0eWxlWydpcy1zZWxlY3RlZCddXTogaXNTZWxlY3RlZE51bWJlcihudW0pLFxuICAgICAgICAgIFtgcnVpLSR7ZWRpdE1vZGV9LSR7bnVtLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKX1gXTogdHJ1ZSxcbiAgICAgICAgfVwiXG4gICAgICAgIDpzdHlsZT1cIm51bWJlclN0eWxlKG51bSlcIlxuICAgICAgICBAY2xpY2s9XCJzZWxlY3RCeUNsaWNrKG51bSlcIlxuICAgICAgPlxuICAgICAgICB7eyBudW0gfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBsYW5nPVwic2Nzc1wiIG1vZHVsZT5cbi5ydWktdGltZXBpY2tlciB7XG4gIEBhcHBseSBiZy13aGl0ZSBvdmVyZmxvdy1oaWRkZW4gdGV4dC1ydWktdGV4dCBwLTM7XG5cbiAgJi5ib3JkZXJlZCB7XG4gICAgQGFwcGx5IHJvdW5kZWQtbWQgc2hhZG93LXNtIGJvcmRlciBib3JkZXItcnVpLWdyZXktMjAwO1xuICB9XG59XG5cbi5ydWktZGlnaXRhbC1kaXNwbGF5IHtcbiAgQGFwcGx5IG1iLTIgdGV4dC1jZW50ZXI7XG59XG5cbi5ydWktZGlnaXQge1xuICBAYXBwbHkgdGV4dC0yeGwgZm9udC1zZW1pYm9sZCBjdXJzb3ItcG9pbnRlcjtcblxuICAmLmFjdGl2ZSB7XG4gICAgQGFwcGx5IHRleHQtcnVpLXByaW1hcnk7XG4gIH1cbn1cblxuLnJ1aS1jbG9jay1mYWNlIHtcbiAgQGFwcGx5IHJlbGF0aXZlIHJvdW5kZWQtZnVsbCB3LTY0IGgtNjQgbXgtYXV0byBib3JkZXIgYm9yZGVyLXJ1aS1ncmV5LTIwMDtcbn1cblxuLnJ1aS1jZW50ZXItZG90IHtcbiAgQGFwcGx5IGFic29sdXRlIHJvdW5kZWQtZnVsbCBiZy1ydWktcHJpbWFyeSB3LTMgaC0zO1xufVxuXG4ucnVpLWNsb2NrLWhhbmQge1xuICBAYXBwbHkgYWJzb2x1dGUgdy1bMS41cHhdIGJnLXJ1aS1wcmltYXJ5IHJvdW5kZWQtZnVsbDtcbn1cblxuLnJ1aS1jbG9jay1oYW5kLWNpcmNsZSB7XG4gIEBhcHBseSBhYnNvbHV0ZSBib3JkZXItMiBib3JkZXItcnVpLXByaW1hcnk7XG59XG5cbi5ydWktY2xvY2stbnVtYmVyIHtcbiAgQGFwcGx5IGFic29sdXRlIHRleHQtY2VudGVyIHRleHQtc20gZm9udC1tZWRpdW0gdy04IGgtOCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBob3ZlcjpiZy1ydWktcHJpbWFyeS1saWdodGVyIGN1cnNvci1wb2ludGVyIHJvdW5kZWQtZnVsbDtcblxuICAmLmlzLXNlbGVjdGVkIHtcbiAgICBAYXBwbHkgYmctcnVpLXByaW1hcnkgdGV4dC1ydWktZGFyay10ZXh0IGRhcms6dGV4dC1ydWktbGlnaHQtdGV4dCB6LTEwIGZvbnQtYm9sZDtcbiAgfVxufVxuXG46Z2xvYmFsKC5kYXJrKSB7XG4gIC5ydWktdGltZXBpY2tlciB7XG4gICAgQGFwcGx5IGJnLXJ1aS1ncmV5LTkwMDtcblxuICAgICYuYm9yZGVyZWQge1xuICAgICAgQGFwcGx5IGJvcmRlci1ydWktZ3JleS04MDA7XG4gICAgfVxuICB9XG5cbiAgLnJ1aS1jbG9jay1mYWNlIHtcbiAgICBAYXBwbHkgYm9yZGVyLXJ1aS1ncmV5LTgwMDtcbiAgfVxufVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG5pbXBvcnQgdHlwZSB7IFRpbWVBY2N1cmFjeSB9IGZyb20gJ0AvY29uc3RzL3RpbWUtYWNjdXJhY3knO1xuaW1wb3J0IFJ1aUJ1dHRvbiBmcm9tICdAL2NvbXBvbmVudHMvYnV0dG9ucy9idXR0b24vUnVpQnV0dG9uLnZ1ZSc7XG5pbXBvcnQgUnVpQ2FsZW5kYXIgZnJvbSAnQC9jb21wb25lbnRzL2NhbGVuZGFyL1J1aUNhbGVuZGFyLnZ1ZSc7XG5pbXBvcnQgeyB0aW1lem9uZXMgfSBmcm9tICdAL2NvbXBvbmVudHMvZGF0ZS10aW1lLXBpY2tlci90aW1lem9uZXMnO1xuaW1wb3J0IFJ1aUF1dG9Db21wbGV0ZSBmcm9tICdAL2NvbXBvbmVudHMvZm9ybXMvYXV0by1jb21wbGV0ZS9SdWlBdXRvQ29tcGxldGUudnVlJztcbmltcG9ydCBSdWlJY29uIGZyb20gJ0AvY29tcG9uZW50cy9pY29ucy9SdWlJY29uLnZ1ZSc7XG5pbXBvcnQgUnVpVGltZVBpY2tlciwgeyB0eXBlIFRpbWVQaWNrZXJTZWxlY3Rpb24gfSBmcm9tICdAL2NvbXBvbmVudHMvdGltZS1waWNrZXIvUnVpVGltZVBpY2tlci52dWUnO1xuXG5kZWZpbmVPcHRpb25zKHtcbiAgbmFtZTogJ1J1aURhdGVUaW1lUGlja2VyTWVudScsXG59KTtcblxuY29uc3Qgc2VsZWN0ZWREYXRlID0gZGVmaW5lTW9kZWw8RGF0ZSB8IHVuZGVmaW5lZD4oJ3NlbGVjdGVkRGF0ZScsIHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5jb25zdCBzZWxlY3RlZFRpbWUgPSBkZWZpbmVNb2RlbDxEYXRlIHwgdW5kZWZpbmVkPignc2VsZWN0ZWRUaW1lJywgeyByZXF1aXJlZDogdHJ1ZSB9KTtcbmNvbnN0IHNlbGVjdGVkSG91ciA9IGRlZmluZU1vZGVsPG51bWJlciB8IHVuZGVmaW5lZD4oJ3NlbGVjdGVkSG91cicsIHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5jb25zdCBzZWxlY3RlZE1pbnV0ZSA9IGRlZmluZU1vZGVsPG51bWJlciB8IHVuZGVmaW5lZD4oJ3NlbGVjdGVkTWludXRlJywgeyByZXF1aXJlZDogdHJ1ZSB9KTtcbmNvbnN0IHNlbGVjdGVkU2Vjb25kID0gZGVmaW5lTW9kZWw8bnVtYmVyIHwgdW5kZWZpbmVkPignc2VsZWN0ZWRTZWNvbmQnLCB7IHJlcXVpcmVkOiB0cnVlIH0pO1xuY29uc3Qgc2VsZWN0ZWRNaWxsaXNlY29uZCA9IGRlZmluZU1vZGVsPG51bWJlciB8IHVuZGVmaW5lZD4oJ3NlbGVjdGVkTWlsbGlzZWNvbmQnLCB7IHJlcXVpcmVkOiB0cnVlIH0pO1xuY29uc3QgdGltZVNlbGVjdGlvbiA9IGRlZmluZU1vZGVsPFRpbWVQaWNrZXJTZWxlY3Rpb24+KCd0aW1lU2VsZWN0aW9uJywgeyByZXF1aXJlZDogdHJ1ZSB9KTtcbmNvbnN0IHNlbGVjdGVkVGltZXpvbmUgPSBkZWZpbmVNb2RlbDxzdHJpbmcgfCB1bmRlZmluZWQ+KCdzZWxlY3RlZFRpbWV6b25lJywgeyByZXF1aXJlZDogdHJ1ZSB9KTtcbmNvbnN0IGNhbGVuZGFyTWVudU9wZW4gPSBkZWZpbmVNb2RlbDxib29sZWFuPignY2FsZW5kYXJNZW51T3BlbicsIHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbmRlZmluZVByb3BzPHtcbiAgYWNjdXJhY3k6IFRpbWVBY2N1cmFjeTtcbiAgbWF4RGF0ZT86IERhdGUgfCBudW1iZXI7XG4gIG1pbkRhdGU/OiBEYXRlIHwgbnVtYmVyO1xufT4oKTtcblxuY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPHtcbiAgJ3NldC1ub3cnOiBbXTtcbn0+KCk7XG5cbmRlZmluZVNsb3RzPHtcbiAgZGVmYXVsdDogKCkgPT4gYW55O1xufT4oKTtcblxuZnVuY3Rpb24gc2V0Tm93KCk6IHZvaWQge1xuICBlbWl0KCdzZXQtbm93Jyk7XG59XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiZmxleCBkaXZpZGUteCBkaXZpZGUtcnVpLWdyZXktMjAwIGRhcms6ZGl2aWRlLXJ1aS1ncmV5LTgwMFwiPlxuICAgIDxSdWlDYWxlbmRhclxuICAgICAgdi1tb2RlbD1cInNlbGVjdGVkRGF0ZVwiXG4gICAgICB2LW1vZGVsOm1lbnUtb3Blbj1cImNhbGVuZGFyTWVudU9wZW5cIlxuICAgICAgYm9yZGVybGVzc1xuICAgICAgOm1heC1kYXRlPVwibWF4RGF0ZVwiXG4gICAgICA6bWluLWRhdGU9XCJtaW5EYXRlXCJcbiAgICAvPlxuICAgIDxSdWlUaW1lUGlja2VyXG4gICAgICB2LW1vZGVsPVwic2VsZWN0ZWRUaW1lXCJcbiAgICAgIHYtbW9kZWw6aG91cj1cInNlbGVjdGVkSG91clwiXG4gICAgICB2LW1vZGVsOm1pbnV0ZT1cInNlbGVjdGVkTWludXRlXCJcbiAgICAgIHYtbW9kZWw6c2Vjb25kPVwic2VsZWN0ZWRTZWNvbmRcIlxuICAgICAgdi1tb2RlbDptaWxsaXNlY29uZD1cInNlbGVjdGVkTWlsbGlzZWNvbmRcIlxuICAgICAgdi1tb2RlbDpzZWxlY3Rpb249XCJ0aW1lU2VsZWN0aW9uXCJcbiAgICAgIDphY2N1cmFjeT1cImFjY3VyYWN5XCJcbiAgICAgIGJvcmRlcmxlc3NcbiAgICAvPlxuICAgIDxkaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtMyBwLTQgcGwtM1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICA8UnVpQnV0dG9uXG4gICAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgICBpY29uXG4gICAgICAgICAgICBkYXRhLWlkPVwic2V0LW5vd1wiXG4gICAgICAgICAgICBAY2xpY2s9XCJzZXROb3coKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFJ1aUljb25cbiAgICAgICAgICAgICAgbmFtZT1cImx1LWNsb2NrXCJcbiAgICAgICAgICAgICAgc2l6ZT1cIjE4XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9SdWlCdXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbFwiPlxuICAgICAgICAgIDxSdWlBdXRvQ29tcGxldGVcbiAgICAgICAgICAgIHYtbW9kZWw9XCJzZWxlY3RlZFRpbWV6b25lXCJcbiAgICAgICAgICAgIGhpZGUtZGV0YWlsc1xuICAgICAgICAgICAgbGFiZWw9XCJUaW1lem9uZVwiXG4gICAgICAgICAgICBjbGFzcz1cInB0LTAgcHItMFwiXG4gICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICAgICAgOm9wdGlvbnM9XCJ0aW1lem9uZXNcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHNsb3QgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuIiwiaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcbmltcG9ydCB7IHRpbWV6b25lcyB9IGZyb20gJ0AvY29tcG9uZW50cy9kYXRlLXRpbWUtcGlja2VyL3RpbWV6b25lcyc7XG5pbXBvcnQgeyBUaW1lQWNjdXJhY3kgfSBmcm9tICdAL2NvbnN0cy90aW1lLWFjY3VyYWN5JztcblxuZXhwb3J0IGZ1bmN0aW9uIGd1ZXNzVGltZXpvbmUoKSB7XG4gIGNvbnN0IHRpbWV6b25lID0gZGF5anMudHouZ3Vlc3MoKTtcbiAgcmV0dXJuIHRpbWV6b25lcy5maW5kKHR6ID0+IHR6ID09PSB0aW1lem9uZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmNsdWRlU2Vjb25kcyhhY2N1cmFjeTogVGltZUFjY3VyYWN5KTogYm9vbGVhbiB7XG4gIHJldHVybiBhY2N1cmFjeSA9PT0gVGltZUFjY3VyYWN5LlNFQ09ORCB8fCBhY2N1cmFjeSA9PT0gVGltZUFjY3VyYWN5Lk1JTExJU0VDT05EO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5jbHVkZU1pbGxpc2Vjb25kcyhhY2N1cmFjeTogVGltZUFjY3VyYWN5KTogYm9vbGVhbiB7XG4gIHJldHVybiBhY2N1cmFjeSA9PT0gVGltZUFjY3VyYWN5Lk1JTExJU0VDT05EO1xufVxuIiwiaW1wb3J0IHR5cGUgeyBEYXlqcyB9IGZyb20gJ2RheWpzJztcbmltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSAndnVlJztcbmltcG9ydCB0eXBlIHsgRGF0ZVRpbWVTZWdtZW50VHlwZSwgU2VnbWVudERhdGEgfSBmcm9tICdAL2NvbXBvbmVudHMvZGF0ZS10aW1lLXBpY2tlci90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IFRpbWVBY2N1cmFjeSB9IGZyb20gJ0AvY29uc3RzL3RpbWUtYWNjdXJhY3knO1xuaW1wb3J0IHsgaW5jbHVkZU1pbGxpc2Vjb25kcywgaW5jbHVkZVNlY29uZHMgfSBmcm9tICdAL2NvbXBvbmVudHMvZGF0ZS10aW1lLXBpY2tlci91dGlscyc7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VJbnB1dEhhbmRsZXIoZGF0YTogU2VnbWVudERhdGEsIGN1cnJlbnRWYWx1ZTogUmVmPG51bWJlciB8IHVuZGVmaW5lZD4pIHtcbiAgZnVuY3Rpb24gc2V0VmFsdWUoc2VnbWVudDogRGF0ZVRpbWVTZWdtZW50VHlwZSwgdmFsdWU/OiBudW1iZXIpIHtcbiAgICBpZiAoZ2V0KGRhdGFbc2VnbWVudF0pICE9PSB2YWx1ZSlcbiAgICAgIHNldChkYXRhW3NlZ21lbnRdLCB2YWx1ZSk7XG5cbiAgICBzZXQoY3VycmVudFZhbHVlLCB2YWx1ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBvbmx5U2V0KHNlZ21lbnQ6IERhdGVUaW1lU2VnbWVudFR5cGUsIHZhbHVlPzogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKGdldChkYXRhW3NlZ21lbnRdKSA9PT0gdmFsdWUpXG4gICAgICByZXR1cm47XG5cbiAgICBzZXQoZGF0YVtzZWdtZW50XSwgdmFsdWUpO1xuICB9XG5cbiAgZnVuY3Rpb24gdXBkYXRlKGRhdGU6IERheWpzLCBhY2N1cmFjeTogVGltZUFjY3VyYWN5KSB7XG4gICAgb25seVNldCgnWVlZWScsIGRhdGUueWVhcigpKTtcbiAgICBvbmx5U2V0KCdNTScsIGRhdGUubW9udGgoKSArIDEpO1xuICAgIG9ubHlTZXQoJ0REJywgZGF0ZS5kYXRlKCkpO1xuICAgIG9ubHlTZXQoJ0hIJywgZGF0ZS5ob3VyKCkpO1xuICAgIG9ubHlTZXQoJ21tJywgZGF0ZS5taW51dGUoKSk7XG4gICAgb25seVNldCgnc3MnLCBpbmNsdWRlU2Vjb25kcyhhY2N1cmFjeSkgPyBkYXRlLnNlY29uZCgpIDogdW5kZWZpbmVkKTtcbiAgICBvbmx5U2V0KCdTU1MnLCBpbmNsdWRlTWlsbGlzZWNvbmRzKGFjY3VyYWN5KSA/IGRhdGUubWlsbGlzZWNvbmQoKSA6IHVuZGVmaW5lZCk7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRDdXJyZW50KHNlZ21lbnQ6IERhdGVUaW1lU2VnbWVudFR5cGUpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBnZXQoZGF0YVtzZWdtZW50XSk7XG4gIH1cblxuICByZXR1cm4geyBnZXRDdXJyZW50LCBzZXRWYWx1ZSwgdXBkYXRlIH07XG59XG4iLCJpbXBvcnQgdHlwZSB7IFJlZiB9IGZyb20gJ3Z1ZSc7XG5cbmV4cG9ydCBjb25zdCBEQVRFX1RJTUVfU0VHTUVOVF9UWVBFUyA9IFtcbiAgJ0REJyxcbiAgJ01NJyxcbiAgJ1lZWVknLFxuICAnSEgnLFxuICAnbW0nLFxuICAnc3MnLFxuICAnU1NTJyxcbl0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIERhdGVUaW1lU2VnbWVudFR5cGUgPSB0eXBlb2YgREFURV9USU1FX1NFR01FTlRfVFlQRVNbbnVtYmVyXTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzRGF0ZVRpbWVTZWdtZW50VHlwZSh2YWx1ZTogc3RyaW5nKTogdmFsdWUgaXMgRGF0ZVRpbWVTZWdtZW50VHlwZSB7XG4gIHJldHVybiAoREFURV9USU1FX1NFR01FTlRfVFlQRVMgYXMgcmVhZG9ubHkgc3RyaW5nW10pLmluY2x1ZGVzKHZhbHVlKTtcbn1cblxuZXhwb3J0IHR5cGUgU2VnbWVudERhdGEgPSBSZWNvcmQ8RGF0ZVRpbWVTZWdtZW50VHlwZSwgUmVmPG51bWJlciB8IHVuZGVmaW5lZD4+O1xuIiwiaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuaW1wb3J0IHR5cGUgeyBUaW1lQWNjdXJhY3kgfSBmcm9tICdAL2NvbnN0cy90aW1lLWFjY3VyYWN5JztcbmltcG9ydCBkYXlqcywgeyB0eXBlIERheWpzIH0gZnJvbSAnZGF5anMnO1xuaW1wb3J0IHsgdHlwZSBEYXRlVGltZVNlZ21lbnRUeXBlLCBpc0RhdGVUaW1lU2VnbWVudFR5cGUgfSBmcm9tICdAL2NvbXBvbmVudHMvZGF0ZS10aW1lLXBpY2tlci90eXBlcyc7XG5pbXBvcnQgeyBpbmNsdWRlTWlsbGlzZWNvbmRzLCBpbmNsdWRlU2Vjb25kcyB9IGZyb20gJ0AvY29tcG9uZW50cy9kYXRlLXRpbWUtcGlja2VyL3V0aWxzJztcbmltcG9ydCB7IGFzc2VydCB9IGZyb20gJ0AvdXRpbHMvYXNzZXJ0JztcblxuaW50ZXJmYWNlIFNlZ21lbnQge1xuICBzdGFydDogbnVtYmVyO1xuICBlbmQ6IG51bWJlcjtcbiAgdHlwZTogRGF0ZVRpbWVTZWdtZW50VHlwZTtcbn1cblxuaW50ZXJmYWNlIEtleWJvYXJkSGFuZGxlck9wdGlvbnMge1xuICBkYXRlRm9ybWF0OiBSZWY8c3RyaW5nPjtcbiAgY3Vyc29yUG9zaXRpb246IFJlZjxudW1iZXI+O1xuICBjdXJyZW50VmFsdWU6IFJlZjxudW1iZXIgfCB1bmRlZmluZWQ+O1xuICB0ZXh0SW5wdXQ6IFJlZjxIVE1MSW5wdXRFbGVtZW50IHwgdW5kZWZpbmVkPjtcbiAgc2V0VmFsdWU6IChzZWdtZW50OiBEYXRlVGltZVNlZ21lbnRUeXBlLCB2YWx1ZT86IG51bWJlcikgPT4gdm9pZDtcbiAgZ2V0Q3VycmVudDogKHNlZ21lbnQ6IERhdGVUaW1lU2VnbWVudFR5cGUpID0+IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgZ2V0RGF0ZVRpbWU6ICgpID0+IERheWpzO1xuICBkaXNhYmxlZDogYm9vbGVhbjtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG4gIGFjY3VyYWN5OiBUaW1lQWNjdXJhY3k7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VLZXlib2FyZEhhbmRsZXIob3B0aW9uczogS2V5Ym9hcmRIYW5kbGVyT3B0aW9ucykge1xuICBjb25zdCB7XG4gICAgYWNjdXJhY3ksXG4gICAgY3VycmVudFZhbHVlLFxuICAgIGN1cnNvclBvc2l0aW9uLFxuICAgIGRhdGVGb3JtYXQsXG4gICAgZGlzYWJsZWQsXG4gICAgZ2V0Q3VycmVudCxcbiAgICBnZXREYXRlVGltZSxcbiAgICByZWFkb25seSxcbiAgICBzZXRWYWx1ZSxcbiAgICB0ZXh0SW5wdXQsXG4gIH0gPSBvcHRpb25zO1xuXG4gIGNvbnN0IGZvcm1hdFNlZ21lbnRzID0gY29tcHV0ZWQ8c3RyaW5nW10+KCgpID0+IHtcbiAgICBjb25zdCBmb3JtYXQgPSBnZXQoZGF0ZUZvcm1hdCk7XG4gICAgcmV0dXJuIGZvcm1hdC5zcGxpdCgvKFtcXHMuLzpdKS9nKS5maWx0ZXIoQm9vbGVhbik7XG4gIH0pO1xuXG4gIGNvbnN0IHNlZ21lbnRQb3NpdGlvbnMgPSBjb21wdXRlZDxTZWdtZW50W10+KCgpID0+IHtcbiAgICBjb25zdCBzZWdtZW50cyA9IGdldChmb3JtYXRTZWdtZW50cyk7XG4gICAgY29uc3QgcG9zaXRpb25zOiBTZWdtZW50W10gPSBbXTtcbiAgICBsZXQgY3VycmVudFBvc2l0aW9uID0gMDtcblxuICAgIHNlZ21lbnRzLmZvckVhY2goKHNlZ21lbnQpID0+IHtcbiAgICAgIGlmICghL1tcXHMuLzpdLy50ZXN0KHNlZ21lbnQpKSB7XG4gICAgICAgIGFzc2VydChpc0RhdGVUaW1lU2VnbWVudFR5cGUoc2VnbWVudCksIGBJbnZhbGlkIGRhdGUgZm9ybWF0IHNlZ21lbnQ6ICR7c2VnbWVudH1gKTtcbiAgICAgICAgcG9zaXRpb25zLnB1c2goe1xuICAgICAgICAgIGVuZDogY3VycmVudFBvc2l0aW9uICsgc2VnbWVudC5sZW5ndGgsXG4gICAgICAgICAgc3RhcnQ6IGN1cnJlbnRQb3NpdGlvbixcbiAgICAgICAgICB0eXBlOiBzZWdtZW50LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGN1cnJlbnRQb3NpdGlvbiArPSBzZWdtZW50Lmxlbmd0aDtcbiAgICB9KTtcblxuICAgIHJldHVybiBwb3NpdGlvbnM7XG4gIH0pO1xuXG4gIGZ1bmN0aW9uIGdldEN1cnJlbnRTZWdtZW50KHBvc2l0aW9uOiBudW1iZXIgPSBnZXQoY3Vyc29yUG9zaXRpb24pKSB7XG4gICAgY29uc3Qgc2VnbWVudHMgPSBnZXQoc2VnbWVudFBvc2l0aW9ucyk7XG4gICAgcmV0dXJuIHNlZ21lbnRzLmZpbmQoXG4gICAgICBzZWdtZW50ID0+IHBvc2l0aW9uID49IHNlZ21lbnQuc3RhcnQgJiYgcG9zaXRpb24gPD0gc2VnbWVudC5lbmQsXG4gICAgKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNldEN1cnNvclBvc2l0aW9uKHNlZ21lbnQ6IFNlZ21lbnQpOiB2b2lkIHtcbiAgICBzZXQoY3Vyc29yUG9zaXRpb24sIHNlZ21lbnQuZW5kKTtcblxuICAgIG5leHRUaWNrKCgpID0+IHtcbiAgICAgIGlmIChpc0RlZmluZWQodGV4dElucHV0KSkge1xuICAgICAgICBjb25zdCBpbnB1dCA9IGdldCh0ZXh0SW5wdXQpO1xuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZShzZWdtZW50LnN0YXJ0LCBzZWdtZW50LmVuZCk7XG4gICAgICAgIGlucHV0LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBzZXRTZWdtZW50KHNlZ21lbnRUeXBlOiBEYXRlVGltZVNlZ21lbnRUeXBlKTogdm9pZCB7XG4gICAgY29uc3Qgc2VnbWVudHMgPSBnZXQoc2VnbWVudFBvc2l0aW9ucykuZmluZChzZWdtZW50ID0+IHNlZ21lbnQudHlwZSA9PT0gc2VnbWVudFR5cGUpO1xuICAgIGlmIChzZWdtZW50cykge1xuICAgICAgc2V0Q3Vyc29yUG9zaXRpb24oc2VnbWVudHMpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNsZWFyKHNlZ21lbnRUeXBlPzogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFNlZ21lbnQgPSBnZXRDdXJyZW50U2VnbWVudCgpO1xuICAgIGlmICghc2VnbWVudFR5cGUgJiYgIWN1cnJlbnRTZWdtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdHlwZVRvVXNlID0gc2VnbWVudFR5cGUgPz8gY3VycmVudFNlZ21lbnQ/LnR5cGU7XG4gICAgaWYgKCF0eXBlVG9Vc2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzZXRWYWx1ZSh0eXBlVG9Vc2UgYXMgRGF0ZVRpbWVTZWdtZW50VHlwZSwgdW5kZWZpbmVkKTtcblxuICAgIGlmIChjdXJyZW50U2VnbWVudCkge1xuICAgICAgc2V0Q3Vyc29yUG9zaXRpb24oY3VycmVudFNlZ21lbnQpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNoYW5nZVNlZ21lbnRWYWx1ZShpbmNyZW1lbnQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoIWlzRGVmaW5lZCh0ZXh0SW5wdXQpKVxuICAgICAgcmV0dXJuO1xuXG4gICAgY29uc3QgY3VycmVudFNlZ21lbnQgPSBnZXRDdXJyZW50U2VnbWVudCgpO1xuXG4gICAgaWYgKCFjdXJyZW50U2VnbWVudClcbiAgICAgIHJldHVybjtcblxuICAgIGNvbnN0IHNlZ21lbnRNZXRob2RzID0ge1xuICAgICAgREQ6ICdkYXRlJyxcbiAgICAgIEhIOiAnaG91cicsXG4gICAgICBNTTogJ21vbnRoJyxcbiAgICAgIG1tOiAnbWludXRlJyxcbiAgICAgIHNzOiAnc2Vjb25kJyxcbiAgICAgIFNTUzogJ21pbGxpc2Vjb25kJyxcbiAgICAgIFlZWVk6ICd5ZWFyJyxcbiAgICB9IGFzIGNvbnN0O1xuXG4gICAgY29uc3Qgc2VnbWVudFR5cGUgPSBjdXJyZW50U2VnbWVudC50eXBlO1xuICAgIGNvbnN0IG1ldGhvZCA9IHNlZ21lbnRNZXRob2RzW3NlZ21lbnRUeXBlXTtcbiAgICBjb25zdCBzZWxlY3RlZERhdGUgPSBnZXREYXRlVGltZSgpO1xuICAgIGNvbnN0IHVwZGF0ZWREYXRlID0gc2VsZWN0ZWREYXRlLnNldChtZXRob2QsIHNlbGVjdGVkRGF0ZS5nZXQobWV0aG9kKSArIChpbmNyZW1lbnQgPyAxIDogLTEpKTtcbiAgICBpZiAodXBkYXRlZERhdGUueWVhcigpID49IDE5NzApIHtcbiAgICAgIHNldFZhbHVlKHNlZ21lbnRUeXBlLCBzZWdtZW50VHlwZSA9PT0gJ01NJyA/IHVwZGF0ZWREYXRlLmdldChtZXRob2QpICsgMSA6IHVwZGF0ZWREYXRlLmdldChtZXRob2QpKTtcbiAgICAgIHNldEN1cnNvclBvc2l0aW9uKGN1cnJlbnRTZWdtZW50KTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBuYXZpZ2F0ZVNlZ21lbnRzKGtleTogc3RyaW5nKSB7XG4gICAgY29uc3QgcG9zaXRpb24gPSBnZXQoY3Vyc29yUG9zaXRpb24pO1xuICAgIGNvbnN0IHBvc2l0aW9ucyA9IGdldChzZWdtZW50UG9zaXRpb25zKTtcbiAgICBjb25zdCBjdXJyZW50U2VnbWVudEluZGV4ID0gcG9zaXRpb25zLmZpbmRJbmRleChcbiAgICAgIHNlZ21lbnQgPT4gcG9zaXRpb24gPj0gc2VnbWVudC5zdGFydCAmJiBwb3NpdGlvbiA8PSBzZWdtZW50LmVuZCxcbiAgICApO1xuXG4gICAgaWYgKGN1cnJlbnRTZWdtZW50SW5kZXggPT09IC0xKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc2V0KGN1cnJlbnRWYWx1ZSwgdW5kZWZpbmVkKTtcblxuICAgIGxldCBuZXh0U2VnbWVudEluZGV4OiBudW1iZXI7XG4gICAgaWYgKGtleSA9PT0gJ0Fycm93UmlnaHQnKSB7XG4gICAgICBuZXh0U2VnbWVudEluZGV4ID0gY3VycmVudFNlZ21lbnRJbmRleCArIDE7XG4gICAgICBpZiAobmV4dFNlZ21lbnRJbmRleCA8IHBvc2l0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgbmV4dFNlZ21lbnQgPSBwb3NpdGlvbnNbbmV4dFNlZ21lbnRJbmRleF07XG4gICAgICAgIGFzc2VydChuZXh0U2VnbWVudCk7XG4gICAgICAgIHNldEN1cnNvclBvc2l0aW9uKG5leHRTZWdtZW50KTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBuZXh0U2VnbWVudEluZGV4ID0gY3VycmVudFNlZ21lbnRJbmRleCAtIDE7XG4gICAgICBpZiAobmV4dFNlZ21lbnRJbmRleCA+PSAwKSB7XG4gICAgICAgIGNvbnN0IG5leHRTZWdtZW50ID0gcG9zaXRpb25zW25leHRTZWdtZW50SW5kZXhdO1xuICAgICAgICBhc3NlcnQobmV4dFNlZ21lbnQpO1xuICAgICAgICBzZXRDdXJzb3JQb3NpdGlvbihuZXh0U2VnbWVudCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlRGlnaXRQcmVzc2VkKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBkaWdpdDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCEoZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcG9zaXRpb24gPSBldmVudC50YXJnZXQuc2VsZWN0aW9uU3RhcnQgPz8gMDtcbiAgICBjb25zdCBjdXJyZW50U2VnbWVudCA9IGdldEN1cnJlbnRTZWdtZW50KHBvc2l0aW9uKTtcbiAgICBpZiAoIWN1cnJlbnRTZWdtZW50KVxuICAgICAgcmV0dXJuO1xuXG4gICAgY29uc3QgbnVtYmVyID0gcGFyc2VJbnQoZGlnaXQpO1xuICAgIGlmIChpc05hTihudW1iZXIpKVxuICAgICAgcmV0dXJuO1xuXG4gICAgY29uc3Qgc2VnbWVudENvbmZpZzogUmVjb3JkPERhdGVUaW1lU2VnbWVudFR5cGUsIHsgbWF4VmFsdWU6IG51bWJlcjsgbWluVmFsdWU/OiBudW1iZXIgfT4gPSB7XG4gICAgICBERDogeyBtYXhWYWx1ZTogMzEsIG1pblZhbHVlOiAxIH0sXG4gICAgICBISDogeyBtYXhWYWx1ZTogMjMsIG1pblZhbHVlOiAwIH0sXG4gICAgICBNTTogeyBtYXhWYWx1ZTogMTIsIG1pblZhbHVlOiAxIH0sXG4gICAgICBtbTogeyBtYXhWYWx1ZTogNTksIG1pblZhbHVlOiAwIH0sXG4gICAgICBzczogeyBtYXhWYWx1ZTogNTksIG1pblZhbHVlOiAwIH0sXG4gICAgICBTU1M6IHsgbWF4VmFsdWU6IDk5OSwgbWluVmFsdWU6IDAgfSxcbiAgICAgIFlZWVk6IHsgbWF4VmFsdWU6IDk5OTksIG1pblZhbHVlOiAxIH0sXG4gICAgfTtcblxuICAgIGNvbnN0IHNlZ21lbnRUeXBlID0gY3VycmVudFNlZ21lbnQudHlwZTtcblxuICAgIGlmIChpc0RhdGVUaW1lU2VnbWVudFR5cGUoc2VnbWVudFR5cGUpKSB7XG4gICAgICBjb25zdCBjb25maWcgPSBzZWdtZW50Q29uZmlnW3NlZ21lbnRUeXBlXTtcbiAgICAgIGNvbnN0IHZhbHVlID0gZ2V0KGN1cnJlbnRWYWx1ZSkgPz8gJyc7XG4gICAgICBjb25zdCBjb21iaW5lZFZhbHVlID0gcGFyc2VJbnQoYCR7dmFsdWV9JHtkaWdpdH1gKTtcbiAgICAgIGNvbnN0IG5leHRDb21iaW5lZFZhbHVlID0gcGFyc2VJbnQoYCR7dmFsdWV9JHtkaWdpdH0wYCk7XG5cbiAgICAgIGNvbnN0IG1heExlbmd0aCA9IHNlZ21lbnRUeXBlLmxlbmd0aDtcbiAgICAgIGNvbnN0IG1pblZhbHVlID0gY29uZmlnLm1pblZhbHVlID8/IDA7XG5cbiAgICAgIGlmIChjb21iaW5lZFZhbHVlID49IG1pblZhbHVlICYmIGNvbWJpbmVkVmFsdWUgPD0gY29uZmlnLm1heFZhbHVlKSB7XG4gICAgICAgIHNldFZhbHVlKHNlZ21lbnRUeXBlLCBjb21iaW5lZFZhbHVlKTtcbiAgICAgICAgc2V0Q3Vyc29yUG9zaXRpb24oY3VycmVudFNlZ21lbnQpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB3aWxsRXhjZWVkTWF4ID0gbmV4dENvbWJpbmVkVmFsdWUgPiBjb25maWcubWF4VmFsdWU7XG4gICAgICBjb25zdCByZWFjaGVkTWF4TGVuZ3RoID0gY29tYmluZWRWYWx1ZS50b1N0cmluZygpLmxlbmd0aCA+PSBtYXhMZW5ndGg7XG5cbiAgICAgIGlmICh3aWxsRXhjZWVkTWF4IHx8IHJlYWNoZWRNYXhMZW5ndGgpIHtcbiAgICAgICAgbmF2aWdhdGVTZWdtZW50cygnQXJyb3dSaWdodCcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZUtleWJvYXJkTmF2aWdhdGlvbihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd1VwJykge1xuICAgICAgY2hhbmdlU2VnbWVudFZhbHVlKHRydWUpO1xuICAgIH1cbiAgICBlbHNlIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XG4gICAgICBjaGFuZ2VTZWdtZW50VmFsdWUoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZUJhY2tzcGFjZShldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmICghKGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHBvc2l0aW9uID0gZXZlbnQudGFyZ2V0LnNlbGVjdGlvblN0YXJ0ID8/IDA7XG4gICAgY29uc3QgY3VycmVudFNlZ21lbnQgPSBnZXRDdXJyZW50U2VnbWVudChwb3NpdGlvbik7XG4gICAgaWYgKCFjdXJyZW50U2VnbWVudClcbiAgICAgIHJldHVybjtcblxuICAgIGNvbnN0IHZhbHVlID0gZ2V0KGN1cnJlbnRWYWx1ZSkgPz8gZ2V0Q3VycmVudChjdXJyZW50U2VnbWVudC50eXBlKSA/PyAnJztcbiAgICBjb25zdCB1cGRhdGVkVmFsdWUgPSB2YWx1ZS50b1N0cmluZygpLnNsaWNlKDAsIC0xKTtcbiAgICBzZXRWYWx1ZShjdXJyZW50U2VnbWVudC50eXBlLCB1cGRhdGVkVmFsdWUubGVuZ3RoID09PSAwID8gdW5kZWZpbmVkIDogcGFyc2VJbnQodXBkYXRlZFZhbHVlKSk7XG4gICAgc2V0Q3Vyc29yUG9zaXRpb24oY3VycmVudFNlZ21lbnQpO1xuICB9XG5cbiAgZnVuY3Rpb24gb25JbnB1dERlbGV0ZVByZXNzZWQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIShldmVudC50YXJnZXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBzZWxlY3Rpb25TdGFydCA9IGV2ZW50LnRhcmdldC5zZWxlY3Rpb25TdGFydCA/PyAwO1xuICAgIGNvbnN0IHNlZ21lbnQgPSBnZXRDdXJyZW50U2VnbWVudChzZWxlY3Rpb25TdGFydCk7XG4gICAgaWYgKHNlZ21lbnQpIHtcbiAgICAgIGNsZWFyKHNlZ21lbnQudHlwZSk7XG4gICAgICBzZXRDdXJzb3JQb3NpdGlvbihzZWdtZW50KTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGRpc2FibGVkIHx8IHJlYWRvbmx5KVxuICAgICAgcmV0dXJuO1xuXG4gICAgY29uc3QgeyBrZXkgfSA9IGV2ZW50O1xuXG4gICAgaWYgKFsnVGFiJ10uaW5jbHVkZXMoa2V5KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBpZiAoa2V5ID09PSAnQXJyb3dSaWdodCcgfHwga2V5ID09PSAnQXJyb3dMZWZ0Jykge1xuICAgICAgbmF2aWdhdGVTZWdtZW50cyhrZXkpO1xuICAgIH1cbiAgICBlbHNlIGlmIChrZXkgPT09ICdBcnJvd1VwJyB8fCBrZXkgPT09ICdBcnJvd0Rvd24nKSB7XG4gICAgICBoYW5kbGVLZXlib2FyZE5hdmlnYXRpb24oZXZlbnQpO1xuICAgIH1cbiAgICBlbHNlIGlmIChrZXkgPT09ICdCYWNrc3BhY2UnKSB7XG4gICAgICBoYW5kbGVCYWNrc3BhY2UoZXZlbnQpO1xuICAgIH1cbiAgICBlbHNlIGlmIChrZXkgPT09ICdEZWxldGUnKSB7XG4gICAgICBvbklucHV0RGVsZXRlUHJlc3NlZChldmVudCk7XG4gICAgfVxuICAgIGVsc2UgaWYgKC9eXFxkJC8udGVzdChrZXkpKSB7XG4gICAgICBoYW5kbGVEaWdpdFByZXNzZWQoZXZlbnQsIGtleSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZGlzYWJsZWQgfHwgcmVhZG9ubHkpXG4gICAgICByZXR1cm47XG5cbiAgICBjb25zdCBldmVudFRhcmdldCA9IGV2ZW50LnRhcmdldDtcbiAgICBpZiAoIShldmVudFRhcmdldCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHBvc2l0aW9uID0gZXZlbnRUYXJnZXQuc2VsZWN0aW9uU3RhcnQgPz8gMDtcbiAgICBjb25zdCBjdXJyZW50U2VnbWVudCA9IGdldEN1cnJlbnRTZWdtZW50KHBvc2l0aW9uKTtcbiAgICBpZiAoY3VycmVudFNlZ21lbnQpXG4gICAgICBzZXRDdXJzb3JQb3NpdGlvbihjdXJyZW50U2VnbWVudCk7XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVJbnB1dFNlbGVjdGlvbihldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICBzZXQoY3Vyc29yUG9zaXRpb24sIHRhcmdldC5zZWxlY3Rpb25TdGFydCA/PyAwKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZUZvY3VzKCk6IHZvaWQge1xuICAgIGNvbnN0IGZpcnN0U2VnbWVudCA9IGdldChzZWdtZW50UG9zaXRpb25zKVswXTtcbiAgICBpZiAoZmlyc3RTZWdtZW50KSB7XG4gICAgICBzZXRDdXJzb3JQb3NpdGlvbihmaXJzdFNlZ21lbnQpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlQW5kU2V0RGF0ZVZhbHVlcyhwYXN0ZWRUZXh0OiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcGFyc2VkRGF0ZSA9IGRheWpzKHBhc3RlZFRleHQsIGdldChkYXRlRm9ybWF0KSk7XG5cbiAgICAgIGlmICghcGFyc2VkRGF0ZS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRlID0gcGFyc2VkRGF0ZS50b0RhdGUoKTtcbiAgICAgIHNldFZhbHVlKCdZWVlZJywgZGF0ZS5nZXRGdWxsWWVhcigpKTtcbiAgICAgIHNldFZhbHVlKCdNTScsIGRhdGUuZ2V0TW9udGgoKSArIDEpO1xuICAgICAgc2V0VmFsdWUoJ0REJywgZGF0ZS5nZXREYXRlKCkpO1xuICAgICAgc2V0VmFsdWUoJ0hIJywgZGF0ZS5nZXRIb3VycygpKTtcbiAgICAgIHNldFZhbHVlKCdtbScsIGRhdGUuZ2V0TWludXRlcygpKTtcbiAgICAgIGlmIChpbmNsdWRlU2Vjb25kcyhhY2N1cmFjeSkpIHtcbiAgICAgICAgc2V0VmFsdWUoJ3NzJywgZGF0ZS5nZXRTZWNvbmRzKCkpO1xuICAgICAgfVxuICAgICAgaWYgKGluY2x1ZGVNaWxsaXNlY29uZHMoYWNjdXJhY3kpKSB7XG4gICAgICAgIHNldFZhbHVlKCdTU1MnLCBkYXRlLmdldE1pbGxpc2Vjb25kcygpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY2F0Y2gge1xuICAgICAgLy8gSW52YWxpZCBmb3JtYXQsIGlnbm9yZSBwYXN0ZVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZVBhc3RlKGV2ZW50OiBDbGlwYm9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChkaXNhYmxlZCB8fCByZWFkb25seSlcbiAgICAgIHJldHVybjtcblxuICAgIGlmICghKGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIGNvbnN0IHBhc3RlZFRleHQgPSBldmVudC5jbGlwYm9hcmREYXRhPy5nZXREYXRhKCd0ZXh0Jyk7XG4gICAgaWYgKCFwYXN0ZWRUZXh0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHBhcnNlQW5kU2V0RGF0ZVZhbHVlcyhwYXN0ZWRUZXh0KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZUlucHV0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGlmIChkaXNhYmxlZCB8fCByZWFkb25seSlcbiAgICAgIHJldHVybjtcblxuICAgIGlmICghKGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaW5wdXRUZXh0ID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgIGlmICghaW5wdXRUZXh0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcGFyc2VBbmRTZXREYXRlVmFsdWVzKGlucHV0VGV4dCk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGNsZWFyLFxuICAgIGdldEN1cnJlbnRTZWdtZW50LFxuICAgIGhhbmRsZUNsaWNrLFxuICAgIGhhbmRsZUZvY3VzLFxuICAgIGhhbmRsZUlucHV0LFxuICAgIGhhbmRsZUlucHV0U2VsZWN0aW9uLFxuICAgIGhhbmRsZUtleURvd24sXG4gICAgaGFuZGxlUGFzdGUsXG4gICAgc2V0U2VnbWVudCxcbiAgfTtcbn1cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG5pbXBvcnQgdHlwZSB7IERhdGVUaW1lU2VnbWVudFR5cGUgfSBmcm9tICdAL2NvbXBvbmVudHMvZGF0ZS10aW1lLXBpY2tlci90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IFRpbWVQaWNrZXJTZWxlY3Rpb24gfSBmcm9tICdAL2NvbXBvbmVudHMvdGltZS1waWNrZXIvUnVpVGltZVBpY2tlci52dWUnO1xuaW1wb3J0IHR5cGUgeyBUaW1lQWNjdXJhY3kgfSBmcm9tICdAL2NvbnN0cy90aW1lLWFjY3VyYWN5JztcbmltcG9ydCB7IGxvZ2ljQW5kLCBsb2dpY09yIH0gZnJvbSAnQHZ1ZXVzZS9tYXRoJztcbmltcG9ydCBkYXlqcywgeyB0eXBlIERheWpzIH0gZnJvbSAnZGF5anMnO1xuaW1wb3J0IFJ1aUJ1dHRvbiBmcm9tICdAL2NvbXBvbmVudHMvYnV0dG9ucy9idXR0b24vUnVpQnV0dG9uLnZ1ZSc7XG5pbXBvcnQgUnVpRGF0ZVRpbWVQaWNrZXJNZW51IGZyb20gJ0AvY29tcG9uZW50cy9kYXRlLXRpbWUtcGlja2VyL1J1aURhdGVUaW1lUGlja2VyTWVudS52dWUnO1xuaW1wb3J0IHsgdXNlSW5wdXRIYW5kbGVyIH0gZnJvbSAnQC9jb21wb25lbnRzL2RhdGUtdGltZS1waWNrZXIvdXNlLWlucHV0LWhhbmRsZXInO1xuaW1wb3J0IHsgdXNlS2V5Ym9hcmRIYW5kbGVyIH0gZnJvbSAnQC9jb21wb25lbnRzL2RhdGUtdGltZS1waWNrZXIvdXNlLWtleWJvYXJkLWhhbmRsZXInO1xuaW1wb3J0IHsgZ3Vlc3NUaW1lem9uZSwgaW5jbHVkZU1pbGxpc2Vjb25kcywgaW5jbHVkZVNlY29uZHMgfSBmcm9tICdAL2NvbXBvbmVudHMvZGF0ZS10aW1lLXBpY2tlci91dGlscyc7XG5pbXBvcnQgUnVpSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvaWNvbnMvUnVpSWNvbi52dWUnO1xuaW1wb3J0IFJ1aU1lbnUgZnJvbSAnQC9jb21wb25lbnRzL292ZXJsYXlzL21lbnUvUnVpTWVudS52dWUnO1xuaW1wb3J0IHsgdXNlUnVpSThuIH0gZnJvbSAnQC9jb21wb3NhYmxlcy91c2UtcnVpLWkxOG4nO1xuaW1wb3J0IHsgUlVJX0kxOE5fS0VZUyB9IGZyb20gJ0AvaTE4bi9rZXlzJztcblxudHlwZSBEYXRlRm9ybWF0ID0gJ3llYXItZmlyc3QnIHwgJ21vbnRoLWZpcnN0JyB8ICdkYXktZmlyc3QnO1xuXG50eXBlIERhdGVUaW1lTW9kZWxUeXBlID0gJ2RhdGUnIHwgJ2Vwb2NoLW1zJyB8ICdlcG9jaCc7XG5cbnR5cGUgTW9kZWxWYWx1ZVR5cGU8VCBleHRlbmRzIERhdGVUaW1lTW9kZWxUeXBlPiA9XG4gIFQgZXh0ZW5kcyAnZGF0ZScgPyBEYXRlIHwgdW5kZWZpbmVkIDpcbiAgICBUIGV4dGVuZHMgJ2Vwb2NoLW1zJyA/IG51bWJlciB8IHVuZGVmaW5lZCA6XG4gICAgICBUIGV4dGVuZHMgJ2Vwb2NoJyA/IG51bWJlciB8IHVuZGVmaW5lZCA6XG4gICAgICAgIERhdGUgfCBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUnVpRGF0ZVRpbWVQaWNrZXJQcm9wcyB7XG4gIG1pbkRhdGU/OiBEYXRlIHwgbnVtYmVyO1xuICBtYXhEYXRlPzogRGF0ZSB8IG51bWJlciB8ICdub3cnO1xuICBmb3JtYXQ/OiBEYXRlRm9ybWF0O1xuICB0eXBlPzogRGF0ZVRpbWVNb2RlbFR5cGU7XG4gIGFjY3VyYWN5PzogVGltZUFjY3VyYWN5O1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGFsbG93RW1wdHk/OiBib29sZWFuO1xuICByZWFkb25seT86IGJvb2xlYW47XG4gIGRlbnNlPzogYm9vbGVhbjtcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIHZhcmlhbnQ/OiAnZGVmYXVsdCcgfCAnZmlsbGVkJyB8ICdvdXRsaW5lZCc7XG4gIGhpbnQ/OiBzdHJpbmc7XG4gIGVycm9yTWVzc2FnZXM/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgc3VjY2Vzc01lc3NhZ2VzPzogc3RyaW5nIHwgc3RyaW5nW107XG4gIGhpZGVEZXRhaWxzPzogYm9vbGVhbjtcbn1cblxuZGVmaW5lT3B0aW9ucyh7XG4gIG5hbWU6ICdSdWlEYXRlVGltZVBpY2tlcicsXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG59KTtcblxuY29uc3QgbW9kZWxWYWx1ZSA9IGRlZmluZU1vZGVsPE1vZGVsVmFsdWVUeXBlPHR5cGVvZiBwcm9wcy50eXBlPj4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UnVpRGF0ZVRpbWVQaWNrZXJQcm9wcz4oKSwge1xuICBkaXNhYmxlZDogZmFsc2UsXG4gIHJlYWRvbmx5OiBmYWxzZSxcbiAgYWxsb3dFbXB0eTogZmFsc2UsXG4gIGRlbnNlOiBmYWxzZSxcbiAgdHlwZTogJ2Vwb2NoLW1zJyxcbiAgaGlkZURldGFpbHM6IGZhbHNlLFxuICBsYWJlbDogJ1BpY2sgYSBkYXRlJyxcbiAgdmFyaWFudDogJ2RlZmF1bHQnLFxuICBoaW50OiB1bmRlZmluZWQsXG4gIG1heERhdGU6IHVuZGVmaW5lZCxcbiAgbWluRGF0ZTogdW5kZWZpbmVkLFxuICBmb3JtYXQ6ICdkYXktZmlyc3QnLFxuICBhY2N1cmFjeTogJ21pbnV0ZScsXG4gIGVycm9yTWVzc2FnZXM6ICgpID0+IFtdLFxuICBzdWNjZXNzTWVzc2FnZXM6ICgpID0+IFtdLFxufSk7XG5cbmRlZmluZVNsb3RzPHtcbiAgJ21lbnUtY29udGVudCc6ICgpID0+IGFueTtcbn0+KCk7XG5cbmNvbnN0IGJhc2VGb3JtYXRzOiBSZWNvcmQ8RGF0ZUZvcm1hdCwgc3RyaW5nPiA9IHtcbiAgJ2RheS1maXJzdCc6ICdERC9NTS9ZWVlZIEhIOm1tJyxcbiAgJ21vbnRoLWZpcnN0JzogJ01NL0REL1lZWVkgSEg6bW0nLFxuICAneWVhci1maXJzdCc6ICdZWVlZL01NL0REIEhIOm1tJyxcbn07XG5cbmNvbnN0IE1JTExJU0VDT05EUyA9IDEwMDA7XG5cbmNvbnN0IGlzT3BlbiA9IHJlZjxib29sZWFuPihmYWxzZSk7XG5jb25zdCBjdXJzb3JQb3NpdGlvbiA9IHJlZjxudW1iZXI+KDApO1xuY29uc3QgaW50ZXJuYWxFcnJvck1lc3NhZ2VzID0gcmVmPHN0cmluZ1tdPihbXSk7XG5cbmNvbnN0IHNlbGVjdGVkWWVhciA9IHJlZjxudW1iZXI+KCk7XG5jb25zdCBzZWxlY3RlZE1vbnRoID0gcmVmPG51bWJlcj4oKTtcbmNvbnN0IHNlbGVjdGVkRGF5ID0gcmVmPG51bWJlcj4oKTtcblxuY29uc3Qgc2VsZWN0ZWRIb3VyID0gcmVmPG51bWJlcj4oKTtcbmNvbnN0IHNlbGVjdGVkTWludXRlID0gcmVmPG51bWJlcj4oKTtcbmNvbnN0IHNlbGVjdGVkU2Vjb25kID0gcmVmPG51bWJlcj4oKTtcbmNvbnN0IHNlbGVjdGVkTWlsbGlzZWNvbmQgPSByZWY8bnVtYmVyPigpO1xuY29uc3Qgc2VsZWN0ZWRUaW1lem9uZSA9IHJlZjxzdHJpbmcgfCB1bmRlZmluZWQ+KGd1ZXNzVGltZXpvbmUoKSk7XG5cbmNvbnN0IGN1cnJlbnRWYWx1ZSA9IHJlZjxudW1iZXI+KCk7XG5jb25zdCBub3cgPSByZWYoZGF5anMudHoodW5kZWZpbmVkLCBndWVzc1RpbWV6b25lKCkpKTtcblxuY29uc3QgdGV4dElucHV0ID0gcmVmPEhUTUxJbnB1dEVsZW1lbnQ+KCk7XG5jb25zdCBhY3RpdmF0b3IgPSByZWYoKTtcbmNvbnN0IG1lbnVXcmFwcGVyUmVmID0gcmVmKCk7XG5jb25zdCBjYWxlbmRhck1lbnVPcGVuID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcblxuY29uc3QgeyBmb2N1c2VkOiBhY3RpdmF0b3JGb2N1c2VkV2l0aGluIH0gPSB1c2VGb2N1c1dpdGhpbihhY3RpdmF0b3IpO1xuY29uc3QgeyBmb2N1c2VkOiBtZW51V3JhcHBlckZvY3VzZWRXaXRoaW4gfSA9IHVzZUZvY3VzV2l0aGluKG1lbnVXcmFwcGVyUmVmKTtcbmNvbnN0IHsgZm9jdXNlZDogc2VhcmNoSW5wdXRGb2N1c2VkIH0gPSB1c2VGb2N1cyh0ZXh0SW5wdXQpO1xuXG5jb25zdCB7IHNldFZhbHVlLCB1cGRhdGUsIGdldEN1cnJlbnQgfSA9IHVzZUlucHV0SGFuZGxlcih7XG4gIEREOiBzZWxlY3RlZERheSxcbiAgTU06IHNlbGVjdGVkTW9udGgsXG4gIFlZWVk6IHNlbGVjdGVkWWVhcixcbiAgSEg6IHNlbGVjdGVkSG91cixcbiAgbW06IHNlbGVjdGVkTWludXRlLFxuICBzczogc2VsZWN0ZWRTZWNvbmQsXG4gIFNTUzogc2VsZWN0ZWRNaWxsaXNlY29uZCxcbn0sIGN1cnJlbnRWYWx1ZSk7XG5cbmNvbnN0IG1pbkFsbG93ZWREYXRlID0gY29tcHV0ZWQ8RGF0ZT4oKCkgPT4ge1xuICBpZiAocHJvcHMubWluRGF0ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKDE5NzAsIDAsIDEpO1xuICB9XG5cbiAgaWYgKHByb3BzLnR5cGUgPT09ICdlcG9jaCcgJiYgdHlwZW9mIHByb3BzLm1pbkRhdGUgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHByb3BzLm1pbkRhdGUgKiBNSUxMSVNFQ09ORFMpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBEYXRlKHByb3BzLm1pbkRhdGUpO1xufSk7XG5cbmNvbnN0IG1heEFsbG93ZWREYXRlID0gY29tcHV0ZWQ8RGF0ZSB8IHVuZGVmaW5lZD4oKCkgPT4ge1xuICBpZiAocHJvcHMubWF4RGF0ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBpZiAocHJvcHMubWF4RGF0ZSA9PT0gJ25vdycpIHtcbiAgICByZXR1cm4gZ2V0KG5vdykudG9EYXRlKCk7XG4gIH1cbiAgaWYgKHByb3BzLnR5cGUgPT09ICdlcG9jaCcgJiYgdHlwZW9mIHByb3BzLm1heERhdGUgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHByb3BzLm1heERhdGUgKiBNSUxMSVNFQ09ORFMpO1xuICB9XG4gIHJldHVybiBuZXcgRGF0ZShwcm9wcy5tYXhEYXRlKTtcbn0pO1xuXG5jb25zdCBkYXRlRm9ybWF0ID0gY29tcHV0ZWQ8c3RyaW5nPigoKSA9PiB7XG4gIGNvbnN0IGRhdGVGb3JtYXQgPSBwcm9wcy5mb3JtYXQ7XG4gIGNvbnN0IGZvcm1hdCA9IGJhc2VGb3JtYXRzW2RhdGVGb3JtYXRdO1xuICBpZiAocHJvcHMuYWNjdXJhY3kgPT09ICdzZWNvbmQnKSB7XG4gICAgcmV0dXJuIGZvcm1hdC5yZXBsYWNlKCdISDptbScsICdISDptbTpzcycpO1xuICB9XG4gIGVsc2UgaWYgKHByb3BzLmFjY3VyYWN5ID09PSAnbWlsbGlzZWNvbmQnKSB7XG4gICAgcmV0dXJuIGZvcm1hdC5yZXBsYWNlKCdISDptbScsICdISDptbTpzcy5TU1MnKTtcbiAgfVxuICByZXR1cm4gZm9ybWF0O1xufSk7XG5cbmNvbnN0IHtcbiAgY2xlYXI6IGNsZWFyU2VnbWVudCxcbiAgZ2V0Q3VycmVudFNlZ21lbnQsXG4gIGhhbmRsZUNsaWNrLFxuICBoYW5kbGVGb2N1cyxcbiAgaGFuZGxlSW5wdXQsXG4gIGhhbmRsZUlucHV0U2VsZWN0aW9uLFxuICBoYW5kbGVLZXlEb3duLFxuICBoYW5kbGVQYXN0ZSxcbiAgc2V0U2VnbWVudCxcbn0gPSB1c2VLZXlib2FyZEhhbmRsZXIoe1xuICBjdXJyZW50VmFsdWUsXG4gIGN1cnNvclBvc2l0aW9uLFxuICBkaXNhYmxlZDogcHJvcHMuZGlzYWJsZWQsXG4gIGdldERhdGVUaW1lLFxuICBnZXRDdXJyZW50LFxuICByZWFkb25seTogcHJvcHMucmVhZG9ubHksXG4gIGRhdGVGb3JtYXQsXG4gIHNldFZhbHVlLFxuICB0ZXh0SW5wdXQsXG4gIGFjY3VyYWN5OiBwcm9wcy5hY2N1cmFjeSxcbn0pO1xuXG5jb25zdCB7IHQgfSA9IHVzZVJ1aUk4bigpO1xuXG5jb25zdCBhbnlGb2N1c2VkID0gbG9naWNPcihhY3RpdmF0b3JGb2N1c2VkV2l0aGluLCBtZW51V3JhcHBlckZvY3VzZWRXaXRoaW4pO1xuXG5jb25zdCBzZWxlY3RlZERhdGUgPSBjb21wdXRlZDxEYXRlIHwgdW5kZWZpbmVkPih7XG4gIHNldCh2YWx1ZT86IERhdGUpIHtcbiAgICBzZXQoc2VsZWN0ZWRZZWFyLCB2YWx1ZT8uZ2V0RnVsbFllYXIoKSk7XG4gICAgc2V0KHNlbGVjdGVkTW9udGgsIHZhbHVlID8gdmFsdWUuZ2V0TW9udGgoKSArIDEgOiB1bmRlZmluZWQpO1xuICAgIHNldChzZWxlY3RlZERheSwgdmFsdWU/LmdldERhdGUoKSk7XG4gIH0sXG4gIGdldCgpIHtcbiAgICBpZiAoIShpc0RlZmluZWQoc2VsZWN0ZWRZZWFyKSAmJiBpc0RlZmluZWQoc2VsZWN0ZWRNb250aCkgJiYgaXNEZWZpbmVkKHNlbGVjdGVkRGF5KSkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGRhdGUuc2V0RnVsbFllYXIoZ2V0KHNlbGVjdGVkWWVhcikpO1xuICAgIGRhdGUuc2V0TW9udGgoZ2V0KHNlbGVjdGVkTW9udGgpIC0gMSk7XG4gICAgZGF0ZS5zZXREYXRlKGdldChzZWxlY3RlZERheSkpO1xuICAgIHJldHVybiBkYXRlO1xuICB9LFxufSk7XG5cbmNvbnN0IHNlbGVjdGVkVGltZSA9IGNvbXB1dGVkPERhdGUgfCB1bmRlZmluZWQ+KHtcbiAgc2V0KHZhbHVlPzogRGF0ZSkge1xuICAgIHNldChzZWxlY3RlZEhvdXIsIHZhbHVlPy5nZXRIb3VycygpKTtcbiAgICBzZXQoc2VsZWN0ZWRNaW51dGUsIHZhbHVlPy5nZXRNaW51dGVzKCkpO1xuICAgIHNldChzZWxlY3RlZFNlY29uZCwgdmFsdWU/LmdldFNlY29uZHMoKSk7XG4gICAgc2V0KHNlbGVjdGVkTWlsbGlzZWNvbmQsIHZhbHVlPy5nZXRNaWxsaXNlY29uZHMoKSk7XG4gIH0sXG4gIGdldCgpIHtcbiAgICBpZiAoIShpc0RlZmluZWQoc2VsZWN0ZWRIb3VyKSAmJiBpc0RlZmluZWQoc2VsZWN0ZWRNaW51dGUpKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgZGF0ZS5zZXRIb3VycyhcbiAgICAgIGdldChzZWxlY3RlZEhvdXIpLFxuICAgICAgZ2V0KHNlbGVjdGVkTWludXRlKSxcbiAgICAgIGdldChzZWxlY3RlZFNlY29uZCkgPz8gMCxcbiAgICAgIGdldChzZWxlY3RlZE1pbGxpc2Vjb25kKSA/PyAwLFxuICAgICk7XG4gICAgcmV0dXJuIGRhdGU7XG4gIH0sXG59KTtcblxuY29uc3QgdmFsdWVTZXQgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiBpc0RlZmluZWQoc2VsZWN0ZWREYXRlKSAmJiBpc0RlZmluZWQoc2VsZWN0ZWRUaW1lKSk7XG5cbmNvbnN0IGxhYmVsV2l0aFF1b3RlID0gY29tcHV0ZWQ8c3RyaW5nPigoKSA9PiB7XG4gIGlmICghcHJvcHMubGFiZWwpXG4gICAgcmV0dXJuICdcIlxcXFwyMDBCXCInO1xuXG4gIHJldHVybiBgJyAgJHtwcm9wcy5sYWJlbH0gICdgO1xufSk7XG5cbmNvbnN0IGlzT3V0bGluZWQgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiBwcm9wcy52YXJpYW50ID09PSAnb3V0bGluZWQnKTtcblxuY29uc3QgZm9ybWF0dGVkRGlzcGxheSA9IGNvbXB1dGVkPHN0cmluZz4oKCkgPT4ge1xuICBsZXQgcmVzdWx0ID0gZ2V0KGRhdGVGb3JtYXQpO1xuXG4gIGNvbnN0IHJlcGxhY2VtZW50cyA9IFtcbiAgICB7IHBhdHRlcm46ICdZWVlZJywgdmFsdWU6IGdldERpc3BsYXlWYWx1ZShzZWxlY3RlZFllYXIsIDQpIH0sXG4gICAgeyBwYXR0ZXJuOiAnTU0nLCB2YWx1ZTogZ2V0RGlzcGxheVZhbHVlKHNlbGVjdGVkTW9udGgsIDIpIH0sXG4gICAgeyBwYXR0ZXJuOiAnREQnLCB2YWx1ZTogZ2V0RGlzcGxheVZhbHVlKHNlbGVjdGVkRGF5LCAyKSB9LFxuICAgIHsgcGF0dGVybjogJ0hIJywgdmFsdWU6IGdldERpc3BsYXlWYWx1ZShzZWxlY3RlZEhvdXIsIDIpIH0sXG4gICAgeyBwYXR0ZXJuOiAnbW0nLCB2YWx1ZTogZ2V0RGlzcGxheVZhbHVlKHNlbGVjdGVkTWludXRlLCAyKSB9LFxuICAgIHsgcGF0dGVybjogJ3NzJywgdmFsdWU6IGdldERpc3BsYXlWYWx1ZShzZWxlY3RlZFNlY29uZCwgMikgfSxcbiAgICB7IHBhdHRlcm46ICdTU1MnLCB2YWx1ZTogZ2V0RGlzcGxheVZhbHVlKHNlbGVjdGVkTWlsbGlzZWNvbmQsIDMpIH0sXG4gIF07XG5cbiAgZm9yIChjb25zdCB7IHBhdHRlcm4sIHZhbHVlIH0gb2YgcmVwbGFjZW1lbnRzKSB7XG4gICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNlKHBhdHRlcm4sIHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufSk7XG5cbmNvbnN0IHRpbWVTZWxlY3Rpb24gPSBjb21wdXRlZDxUaW1lUGlja2VyU2VsZWN0aW9uPih7XG4gIGdldCgpIHtcbiAgICBjb25zdCB0eXBlID0gZ2V0Q3VycmVudFNlZ21lbnQoKT8udHlwZTtcblxuICAgIGlmICh0eXBlID09PSAnbW0nKSB7XG4gICAgICByZXR1cm4gJ21pbnV0ZSc7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGUgPT09ICdzcycpIHtcbiAgICAgIHJldHVybiAnc2Vjb25kJztcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZSA9PT0gJ1NTUycpIHtcbiAgICAgIHJldHVybiAnbWlsbGlzZWNvbmQnO1xuICAgIH1cbiAgICByZXR1cm4gJ2hvdXInO1xuICB9LFxuICBzZXQodmFsdWU6IFRpbWVQaWNrZXJTZWxlY3Rpb24pIHtcbiAgICBsZXQgc2VnbWVudFR5cGU6IERhdGVUaW1lU2VnbWVudFR5cGUgPSAnSEgnO1xuICAgIGlmICh2YWx1ZSA9PT0gJ21pbnV0ZScpIHtcbiAgICAgIHNlZ21lbnRUeXBlID0gJ21tJztcbiAgICB9XG4gICAgZWxzZSBpZiAodmFsdWUgPT09ICdzZWNvbmQnKSB7XG4gICAgICBzZWdtZW50VHlwZSA9ICdzcyc7XG4gICAgfVxuICAgIGVsc2UgaWYgKHZhbHVlID09PSAnbWlsbGlzZWNvbmQnKSB7XG4gICAgICBzZWdtZW50VHlwZSA9ICdTU1MnO1xuICAgIH1cblxuICAgIHNldFNlZ21lbnQoc2VnbWVudFR5cGUpO1xuICB9LFxufSk7XG5cbmNvbnN0IGZsb2F0ID0gbG9naWNBbmQobG9naWNPcihpc09wZW4sIHZhbHVlU2V0LCBzZWFyY2hJbnB1dEZvY3VzZWQpLCBpc091dGxpbmVkKTtcblxuY29uc3QgY29tYmluZWRFcnJvck1lc3NhZ2VzID0gY29tcHV0ZWQ8c3RyaW5nW10+KCgpID0+IHtcbiAgbGV0IHByb3BFcnJvcnM6IHN0cmluZ1tdO1xuICBpZiAocHJvcHMuZXJyb3JNZXNzYWdlcykge1xuICAgIHByb3BFcnJvcnMgPSBBcnJheS5pc0FycmF5KHByb3BzLmVycm9yTWVzc2FnZXMpXG4gICAgICA/IHByb3BzLmVycm9yTWVzc2FnZXNcbiAgICAgIDogW3Byb3BzLmVycm9yTWVzc2FnZXNdO1xuICB9XG4gIGVsc2Uge1xuICAgIHByb3BFcnJvcnMgPSBBcnJheS5pc0FycmF5KHByb3BzLmVycm9yTWVzc2FnZXMpXG4gICAgICA/IHByb3BzLmVycm9yTWVzc2FnZXNcbiAgICAgIDogW107XG4gIH1cbiAgcmV0dXJuIFsuLi5wcm9wRXJyb3JzLCAuLi5nZXQoaW50ZXJuYWxFcnJvck1lc3NhZ2VzKV07XG59KTtcblxuZnVuY3Rpb24gZ2V0RGlzcGxheVZhbHVlKGRpZ2l0OiBSZWY8bnVtYmVyIHwgdW5kZWZpbmVkPiwgcGFkZGluZzogbnVtYmVyKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGlzRGVmaW5lZChkaWdpdClcbiAgICA/IGdldChkaWdpdCkudG9TdHJpbmcoKS5wYWRTdGFydChwYWRkaW5nLCAnMCcpXG4gICAgOiB1bmRlZmluZWQ7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNldElucHV0Rm9jdXMoKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IG5leHRUaWNrKCgpID0+IHtcbiAgICBzZXQoc2VhcmNoSW5wdXRGb2N1c2VkLCB0cnVlKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGNsZWFyKHNlZ21lbnRUeXBlPzogc3RyaW5nKTogdm9pZCB7XG4gIHNldChpbnRlcm5hbEVycm9yTWVzc2FnZXMsIFtdKTtcblxuICBpZiAoIXNlZ21lbnRUeXBlKSB7XG4gICAgc2V0KHNlbGVjdGVkWWVhciwgdW5kZWZpbmVkKTtcbiAgICBzZXQoc2VsZWN0ZWRNb250aCwgdW5kZWZpbmVkKTtcbiAgICBzZXQoc2VsZWN0ZWREYXksIHVuZGVmaW5lZCk7XG4gICAgc2V0KHNlbGVjdGVkSG91ciwgdW5kZWZpbmVkKTtcbiAgICBzZXQoc2VsZWN0ZWRNaW51dGUsIHVuZGVmaW5lZCk7XG4gICAgc2V0KHNlbGVjdGVkU2Vjb25kLCB1bmRlZmluZWQpO1xuICAgIHNldChzZWxlY3RlZE1pbGxpc2Vjb25kLCB1bmRlZmluZWQpO1xuICAgIHNldChjdXJyZW50VmFsdWUsIHVuZGVmaW5lZCk7XG4gICAgc2V0KG1vZGVsVmFsdWUsIHVuZGVmaW5lZCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY2xlYXJTZWdtZW50KHNlZ21lbnRUeXBlKTtcbn1cblxuZnVuY3Rpb24gYXJyb3dDbGlja2VkKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgaWYgKGdldChpc09wZW4pKSB7XG4gICAgc2V0KGlzT3BlbiwgZmFsc2UpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldERhdGVUaW1lKCk6IERheWpzIHtcbiAgbGV0IGRhdGVUaW1lID0gZGF5anMoKTtcbiAgaWYgKGlzRGVmaW5lZChzZWxlY3RlZFllYXIpKSB7XG4gICAgZGF0ZVRpbWUgPSBkYXRlVGltZS55ZWFyKGdldChzZWxlY3RlZFllYXIpKTtcbiAgfVxuXG4gIGlmIChpc0RlZmluZWQoc2VsZWN0ZWRNb250aCkpIHtcbiAgICBkYXRlVGltZSA9IGRhdGVUaW1lLm1vbnRoKGdldChzZWxlY3RlZE1vbnRoKSAtIDEpO1xuICB9XG5cbiAgaWYgKGlzRGVmaW5lZChzZWxlY3RlZERheSkpIHtcbiAgICBjb25zdCBkYXlzSW5Nb250aCA9IGRhdGVUaW1lLmRheXNJbk1vbnRoKCk7XG4gICAgY29uc3QgZGF5ID0gTWF0aC5taW4oZ2V0KHNlbGVjdGVkRGF5KSwgZGF5c0luTW9udGgpO1xuICAgIGRhdGVUaW1lID0gZGF0ZVRpbWUuZGF0ZShkYXkpO1xuICB9XG5cbiAgaWYgKGlzRGVmaW5lZChzZWxlY3RlZEhvdXIpKSB7XG4gICAgZGF0ZVRpbWUgPSBkYXRlVGltZS5ob3VyKGdldChzZWxlY3RlZEhvdXIpKTtcbiAgfVxuXG4gIGlmIChpc0RlZmluZWQoc2VsZWN0ZWRNaW51dGUpKSB7XG4gICAgZGF0ZVRpbWUgPSBkYXRlVGltZS5taW51dGUoZ2V0KHNlbGVjdGVkTWludXRlKSk7XG4gIH1cblxuICBpZiAoaXNEZWZpbmVkKHNlbGVjdGVkU2Vjb25kKSkge1xuICAgIGRhdGVUaW1lID0gZGF0ZVRpbWUuc2Vjb25kKGdldChzZWxlY3RlZFNlY29uZCkpO1xuICB9XG5cbiAgaWYgKGlzRGVmaW5lZChzZWxlY3RlZE1pbGxpc2Vjb25kKSkge1xuICAgIGRhdGVUaW1lID0gZGF0ZVRpbWUubWlsbGlzZWNvbmQoZ2V0KHNlbGVjdGVkTWlsbGlzZWNvbmQpKTtcbiAgfVxuXG4gIHJldHVybiBkYXRlVGltZTtcbn1cblxuZnVuY3Rpb24gc2V0Tm93KCk6IHZvaWQge1xuICBzZXQoaW50ZXJuYWxFcnJvck1lc3NhZ2VzLCBbXSk7XG5cbiAgY29uc3QgZGF0ZSA9IGRheWpzKCk7XG4gIHNldChub3csIGRhdGUpO1xuICBzZXQoc2VsZWN0ZWRZZWFyLCBkYXRlLnllYXIoKSk7XG4gIHNldChzZWxlY3RlZE1vbnRoLCBkYXRlLm1vbnRoKCkgKyAxKTtcbiAgc2V0KHNlbGVjdGVkRGF5LCBkYXRlLmRhdGUoKSk7XG4gIHNldChzZWxlY3RlZEhvdXIsIGRhdGUuaG91cigpKTtcbiAgc2V0KHNlbGVjdGVkTWludXRlLCBkYXRlLm1pbnV0ZSgpKTtcbiAgc2V0KHNlbGVjdGVkU2Vjb25kLCBpbmNsdWRlU2Vjb25kcyhwcm9wcy5hY2N1cmFjeSkgPyBkYXRlLnNlY29uZCgpIDogMCk7XG4gIHNldChzZWxlY3RlZE1pbGxpc2Vjb25kLCBpbmNsdWRlTWlsbGlzZWNvbmRzKHByb3BzLmFjY3VyYWN5KSA/IGRhdGUubWlsbGlzZWNvbmQoKSA6IDApO1xuXG4gIG5leHRUaWNrKCgpID0+IHtcbiAgICB1cGRhdGVNb2RlbFZhbHVlKCk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBpc0RhdGVWYWxpZChkYXRlOiBEYXlqcyk6IGJvb2xlYW4ge1xuICBjb25zdCBtaW4gPSBnZXQobWluQWxsb3dlZERhdGUpO1xuICBjb25zdCBtYXggPSBnZXQobWF4QWxsb3dlZERhdGUpO1xuXG4gIHNldChpbnRlcm5hbEVycm9yTWVzc2FnZXMsIFtdKTtcblxuICBpZiAobWluICYmIGRhdGUuaXNCZWZvcmUobWluKSkge1xuICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IHQoUlVJX0kxOE5fS0VZUy5kYXRlVGltZVBpY2tlci5kYXRlQmVmb3JlTWluLCB7XG4gICAgICBkYXRlOiBtaW4udG9Mb2NhbGVEYXRlU3RyaW5nKCksXG4gICAgfSwgYERhdGUgY2Fubm90IGJlIGJlZm9yZSAke21pbi50b0xvY2FsZURhdGVTdHJpbmcoKX1gKTtcbiAgICBzZXQoaW50ZXJuYWxFcnJvck1lc3NhZ2VzLCBbLi4uZ2V0KGludGVybmFsRXJyb3JNZXNzYWdlcyksIGVycm9yTWVzc2FnZV0pO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChtYXggJiYgZGF0ZS5pc0FmdGVyKG1heCkpIHtcbiAgICBjb25zdCBub3dFcnJvciA9IHQoUlVJX0kxOE5fS0VZUy5kYXRlVGltZVBpY2tlci5kYXRlSW5GdXR1cmUsICdUaGUgc2VsZWN0ZWQgZGF0ZSBjYW5ub3QgYmUgaW4gdGhlIGZ1dHVyZScpO1xuICAgIGNvbnN0IG1heEVycm9yID0gdChSVUlfSTE4Tl9LRVlTLmRhdGVUaW1lUGlja2VyLmRhdGVBZnRlck1heCwgeyBkYXRlOiBtYXgudG9Mb2NhbGVEYXRlU3RyaW5nKCkgfSwgYERhdGUgY2Fubm90IGJlIGFmdGVyICR7bWF4LnRvTG9jYWxlRGF0ZVN0cmluZygpfWApO1xuICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IHByb3BzLm1heERhdGUgPT09ICdub3cnID8gbm93RXJyb3IgOiBtYXhFcnJvcjtcbiAgICBzZXQoaW50ZXJuYWxFcnJvck1lc3NhZ2VzLCBbLi4uZ2V0KGludGVybmFsRXJyb3JNZXNzYWdlcyksIGVycm9yTWVzc2FnZV0pO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBlbWl0VXBkYXRlKHVwZGF0ZWRNb2RlbDogRGF5anMpIHtcbiAgY29uc3QgdHlwZU1hcCA9IHtcbiAgICAnZGF0ZSc6ICgpID0+IHVwZGF0ZWRNb2RlbC50b0RhdGUoKSxcbiAgICAnZXBvY2gtbXMnOiAoKSA9PiB1cGRhdGVkTW9kZWwudmFsdWVPZigpLFxuICAgICdlcG9jaCc6ICgpID0+IHVwZGF0ZWRNb2RlbC52YWx1ZU9mKCkgLyBNSUxMSVNFQ09ORFMsXG4gIH0gYXMgY29uc3Q7XG5cbiAgc2V0KG1vZGVsVmFsdWUsIHR5cGVNYXBbcHJvcHMudHlwZV0oKSk7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZU1vZGVsVmFsdWUoKTogdm9pZCB7XG4gIGlmICghaXNEZWZpbmVkKHNlbGVjdGVkRGF0ZSkgfHwgIWlzRGVmaW5lZChzZWxlY3RlZFRpbWUpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKCEoaXNEZWZpbmVkKHNlbGVjdGVkRGF0ZSkgJiYgaXNEZWZpbmVkKHNlbGVjdGVkVGltZSkpKSB7XG4gICAgc2V0KG1vZGVsVmFsdWUsIHVuZGVmaW5lZCk7XG4gIH1cbiAgZWxzZSB7XG4gICAgY29uc3QgZGF0ZSA9IGdldChzZWxlY3RlZERhdGUpO1xuICAgIGNvbnN0IHRpbWUgPSBnZXQoc2VsZWN0ZWRUaW1lKTtcblxuICAgIGNvbnN0IHVwZGF0ZWRNb2RlbCA9IGRheWpzLnR6KGlzRGVmaW5lZChtb2RlbFZhbHVlKSA/IGdldChtb2RlbFZhbHVlKSA6IHVuZGVmaW5lZCwgZ2V0KHNlbGVjdGVkVGltZXpvbmUpKVxuICAgICAgLnllYXIoZGF0ZS5nZXRGdWxsWWVhcigpKVxuICAgICAgLm1vbnRoKGRhdGUuZ2V0TW9udGgoKSlcbiAgICAgIC5kYXRlKGRhdGUuZ2V0RGF0ZSgpKVxuICAgICAgLmhvdXIodGltZS5nZXRIb3VycygpKVxuICAgICAgLm1pbnV0ZSh0aW1lLmdldE1pbnV0ZXMoKSlcbiAgICAgIC5zZWNvbmQoaW5jbHVkZVNlY29uZHMocHJvcHMuYWNjdXJhY3kpID8gdGltZS5nZXRTZWNvbmRzKCkgOiAwKVxuICAgICAgLm1pbGxpc2Vjb25kKGluY2x1ZGVNaWxsaXNlY29uZHMocHJvcHMuYWNjdXJhY3kpID8gdGltZS5nZXRNaWxsaXNlY29uZHMoKSA6IDApO1xuXG4gICAgaWYgKCFpc0RhdGVWYWxpZCh1cGRhdGVkTW9kZWwpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZW1pdFVwZGF0ZSh1cGRhdGVkTW9kZWwpO1xuICB9XG59XG5cbmNvbnN0IHsgaWdub3JlVXBkYXRlcyB9ID0gd2F0Y2hJZ25vcmFibGUoW3NlbGVjdGVkRGF0ZSwgc2VsZWN0ZWRUaW1lXSwgKFtzZWxlY3RlZERhdGUsIHNlbGVjdGVkVGltZV0sIFtwcmV2U2VsZWN0ZWREYXRlLCBwcmV2U2VsZWN0ZWRUaW1lXSkgPT4ge1xuICBjb25zdCBjdXJyZW50VGltZXpvbmUgPSBnZXQoc2VsZWN0ZWRUaW1lem9uZSk7XG4gIGNvbnN0IG5ld1NlbGVjdGVkRGF0ZSA9IGRheWpzLnR6KHNlbGVjdGVkRGF0ZSwgY3VycmVudFRpbWV6b25lKTtcbiAgY29uc3Qgb2xkU2VsZWN0ZWREYXRlID0gZGF5anMudHoocHJldlNlbGVjdGVkRGF0ZSwgY3VycmVudFRpbWV6b25lKTtcbiAgY29uc3QgbmV3U2VsZWN0ZWRUaW1lID0gZGF5anMudHooc2VsZWN0ZWRUaW1lLCBjdXJyZW50VGltZXpvbmUpO1xuICBjb25zdCBvbGRTZWxlY3RlZFRpbWUgPSBkYXlqcy50eihwcmV2U2VsZWN0ZWRUaW1lLCBjdXJyZW50VGltZXpvbmUpO1xuXG4gIGlmIChuZXdTZWxlY3RlZERhdGUuaXNTYW1lKG9sZFNlbGVjdGVkRGF0ZSkgJiYgbmV3U2VsZWN0ZWRUaW1lLmlzU2FtZShvbGRTZWxlY3RlZFRpbWUpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc2V0KG5vdywgZGF5anMoKSk7XG4gIHVwZGF0ZU1vZGVsVmFsdWUoKTtcbn0pO1xuXG5mdW5jdGlvbiB1cGRhdGVJbnRlcm5hbE1vZGVsKHZhbHVlOiBNb2RlbFZhbHVlVHlwZTx0eXBlb2YgcHJvcHMudHlwZT4pIHtcbiAgaWdub3JlVXBkYXRlcygoKSA9PiB7XG4gICAgY29uc3QgdXBkYXRlZFZhbHVlID0gcHJvcHMudHlwZSA9PT0gJ2Vwb2NoJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInXG4gICAgICA/IHZhbHVlICogTUlMTElTRUNPTkRTXG4gICAgICA6IHZhbHVlO1xuICAgIGNvbnN0IGRhdGUgPSBkYXlqcy50eih1cGRhdGVkVmFsdWUsIGdldChzZWxlY3RlZFRpbWV6b25lKSk7XG4gICAgaXNEYXRlVmFsaWQoZGF0ZSk7XG4gICAgdXBkYXRlKGRhdGUsIHByb3BzLmFjY3VyYWN5KTtcbiAgfSk7XG59XG5cbndhdGNoKHNlbGVjdGVkVGltZXpvbmUsIChuZXdUaW1lem9uZTogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PiB7XG4gIGlmIChuZXdUaW1lem9uZSAmJiBpc0RlZmluZWQoc2VsZWN0ZWREYXRlKSAmJiBpc0RlZmluZWQoc2VsZWN0ZWRUaW1lKSkge1xuICAgIHNldChub3csIGRheWpzKCkpO1xuICAgIHVwZGF0ZU1vZGVsVmFsdWUoKTtcbiAgfVxufSk7XG5cbndhdGNoKG1vZGVsVmFsdWUsICh2YWx1ZSkgPT4ge1xuICBzZXQobm93LCBkYXlqcygpKTtcbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICBjbGVhcigpO1xuICB9XG4gIGVsc2Uge1xuICAgIHVwZGF0ZUludGVybmFsTW9kZWwodmFsdWUpO1xuICB9XG59KTtcblxub25Nb3VudGVkKCgpID0+IHtcbiAgaWYgKGlzRGVmaW5lZChtb2RlbFZhbHVlKSkge1xuICAgIHVwZGF0ZUludGVybmFsTW9kZWwoZ2V0KG1vZGVsVmFsdWUpKTtcbiAgfVxuICBlbHNlIGlmICghcHJvcHMuYWxsb3dFbXB0eSkge1xuICAgIHNldE5vdygpO1xuICB9XG59KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxSdWlNZW51XG4gICAgdi1tb2RlbD1cImlzT3BlblwiXG4gICAgOmNsYXNzPVwiJHN0eWxlLndyYXBwZXJcIlxuICAgIDpkZW5zZT1cImRlbnNlXCJcbiAgICA6aGludD1cImhpbnRcIlxuICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICA6c3VjY2Vzcy1tZXNzYWdlcz1cInN1Y2Nlc3NNZXNzYWdlc1wiXG4gICAgOmVycm9yLW1lc3NhZ2VzPVwiY29tYmluZWRFcnJvck1lc3NhZ2VzXCJcbiAgICA6Y2xvc2Utb24tY29udGVudC1jbGljaz1cImZhbHNlXCJcbiAgICA6c2hvdy1kZXRhaWxzPVwiIWhpZGVEZXRhaWxzXCJcbiAgICA6cGVyc2lzdGVudD1cImNhbGVuZGFyTWVudU9wZW5cIlxuICAgIDpwb3BwZXI9XCJ7XG4gICAgICBwbGFjZW1lbnQ6ICdib3R0b20tc3RhcnQnLFxuICAgIH1cIlxuICAgIGZ1bGwtd2lkdGhcbiAgICB2LWJpbmQ9XCJ7XG4gICAgICAuLi5nZXRSb290QXR0cnMoJGF0dHJzKSxcbiAgICB9XCJcbiAgPlxuICAgIDx0ZW1wbGF0ZSAjYWN0aXZhdG9yPVwieyBhdHRycywgb3BlbiwgaGFzRXJyb3IsIGhhc1N1Y2Nlc3MgfVwiPlxuICAgICAgPGRpdlxuICAgICAgICByZWY9XCJhY3RpdmF0b3JcIlxuICAgICAgICBjbGFzcz1cImdyb3VwXCJcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICRzdHlsZS5hY3RpdmF0b3IsXG4gICAgICAgICAge1xuICAgICAgICAgICAgWyRzdHlsZS5kaXNhYmxlZF06IGRpc2FibGVkLFxuICAgICAgICAgICAgWyRzdHlsZS5yZWFkb25seV06IHJlYWRvbmx5LFxuICAgICAgICAgICAgWyRzdHlsZS5vdXRsaW5lZF06IGlzT3V0bGluZWQsXG4gICAgICAgICAgICBbJHN0eWxlLmRlbnNlXTogZGVuc2UsXG4gICAgICAgICAgICBbJHN0eWxlLmZsb2F0XTogZmxvYXQsXG4gICAgICAgICAgICBbJHN0eWxlLm9wZW5lZF06IG9wZW4sXG4gICAgICAgICAgICBbJHN0eWxlWyd3aXRoLXZhbHVlJ11dOiB2YWx1ZVNldCxcbiAgICAgICAgICAgIFskc3R5bGVbJ3dpdGgtZXJyb3InXV06IGhhc0Vycm9yLFxuICAgICAgICAgICAgWyRzdHlsZVsnd2l0aC1zdWNjZXNzJ11dOiBoYXNTdWNjZXNzICYmICFoYXNFcnJvcixcbiAgICAgICAgICB9LFxuICAgICAgICBdXCJcbiAgICAgICAgdi1iaW5kPVwie1xuICAgICAgICAgIC4uLmdldE5vblJvb3RBdHRycygkYXR0cnMsIFsnb25DbGljaycsICdjbGFzcyddKSxcbiAgICAgICAgICAuLi4ocHJvcHMucmVhZG9ubHkgPyB7fSA6IGF0dHJzKSB9XG4gICAgICAgIFwiXG4gICAgICAgIGRhdGEtaWQ9XCJhY3RpdmF0b3JcIlxuICAgICAgICA6dGFiaW5kZXg9XCJkaXNhYmxlZCB8fCBwcm9wcy5yZWFkb25seSA/IC0xIDogMFwiXG4gICAgICAgIEBjbGljaz1cInNldElucHV0Rm9jdXMoKVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgdi1pZj1cImlzT3V0bGluZWQgJiYgKHNlYXJjaElucHV0Rm9jdXNlZCB8fCBvcGVuIHx8IHZhbHVlU2V0KVwiXG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgJHN0eWxlLmxhYmVsLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAnYWJzb2x1dGUnOiBpc091dGxpbmVkLFxuICAgICAgICAgICAgICAncHItMic6ICF2YWx1ZVNldCAmJiAhb3BlbiAmJiBpc091dGxpbmVkLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGxhYmVsIH19XG4gICAgICAgIDwvc3Bhbj5cblxuICAgICAgICA8c3BhbiA6Y2xhc3M9XCJbJHN0eWxlLmljb25fX3dyYXBwZXIsICRzdHlsZS5pY29uX19wcmVwZW5kXVwiPlxuICAgICAgICAgIDxSdWlJY29uXG4gICAgICAgICAgICA6Y2xhc3M9XCJbJHN0eWxlLmljb25dXCJcbiAgICAgICAgICAgIDpzaXplPVwiZGVuc2UgPyAxNiA6IDI0XCJcbiAgICAgICAgICAgIG5hbWU9XCJsdS1jYWxlbmRhci1kYXlzXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgPGRpdiA6Y2xhc3M9XCIkc3R5bGUudmFsdWVcIj5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHJlZj1cInRleHRJbnB1dFwiXG4gICAgICAgICAgICA6ZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICA6dmFsdWU9XCJmb3JtYXR0ZWREaXNwbGF5XCJcbiAgICAgICAgICAgIGNsYXNzPVwiYmctdHJhbnNwYXJlbnQgb3V0bGluZS1ub25lIGZsZXgtMSBtaW4tdy0wXCJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIDpwbGFjZWhvbGRlcj1cImRhdGVGb3JtYXRcIlxuICAgICAgICAgICAgOnJlYWRvbmx5PVwicmVhZG9ubHlcIlxuICAgICAgICAgICAgQGZvY3VzPVwiaGFuZGxlRm9jdXMoKVwiXG4gICAgICAgICAgICBAc2VsZWN0PVwiaGFuZGxlSW5wdXRTZWxlY3Rpb24oJGV2ZW50KVwiXG4gICAgICAgICAgICBAY2xpY2s9XCJoYW5kbGVDbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgIEBrZXlkb3duPVwiaGFuZGxlS2V5RG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgIEBwYXN0ZT1cImhhbmRsZVBhc3RlKCRldmVudClcIlxuICAgICAgICAgICAgQGlucHV0PVwiaGFuZGxlSW5wdXQoJGV2ZW50KVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPFJ1aUJ1dHRvblxuICAgICAgICAgIHYtaWY9XCJhbGxvd0VtcHR5ICYmIHZhbHVlU2V0ICYmICFkaXNhYmxlZFwiXG4gICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgIGljb25cbiAgICAgICAgICBkYXRhLWlkPVwiY2xlYXItYnV0dG9uXCJcbiAgICAgICAgICBzaXplPVwic21cIlxuICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgIGNvbG9yPVwiZXJyb3JcIlxuICAgICAgICAgIGNsYXNzPVwiZ3JvdXAtaG92ZXI6IXZpc2libGVcIlxuICAgICAgICAgIDpjbGFzcz1cIlskc3R5bGUuY2xlYXIsIGFueUZvY3VzZWQgJiYgJyF2aXNpYmxlJywge1xuICAgICAgICAgICAgJ21yLTInOiAhZGVuc2UsXG4gICAgICAgICAgfV1cIlxuICAgICAgICAgIEBjbGljay5zdG9wLnByZXZlbnQ9XCJjbGVhcigpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxSdWlJY29uXG4gICAgICAgICAgICBuYW1lPVwibHUteFwiXG4gICAgICAgICAgICBzaXplPVwiMThcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvUnVpQnV0dG9uPlxuXG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgOmNsYXNzPVwiWyRzdHlsZS5pY29uX193cmFwcGVyLCAkc3R5bGUuaWNvbl9fYXBwZW5kXVwiXG4gICAgICAgICAgQGNsaWNrPVwiYXJyb3dDbGlja2VkKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgPFJ1aUljb25cbiAgICAgICAgICAgIDpjbGFzcz1cIlskc3R5bGUuaWNvbiwgeyAncm90YXRlLTE4MCc6IG9wZW4gfV1cIlxuICAgICAgICAgICAgOnNpemU9XCJkZW5zZSA/IDE2IDogMjRcIlxuICAgICAgICAgICAgbmFtZT1cImx1LWNoZXZyb24tZG93blwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZmllbGRzZXRcbiAgICAgICAgdi1pZj1cImlzT3V0bGluZWRcIlxuICAgICAgICA6Y2xhc3M9XCIkc3R5bGUuZmllbGRzZXRcIlxuICAgICAgPlxuICAgICAgICA8bGVnZW5kIDpjbGFzcz1cInsgJ3B4LTInOiBmbG9hdCB9XCIgLz5cbiAgICAgIDwvZmllbGRzZXQ+XG4gICAgPC90ZW1wbGF0ZT5cbiAgICA8dGVtcGxhdGUgI2RlZmF1bHQ+XG4gICAgICA8UnVpRGF0ZVRpbWVQaWNrZXJNZW51XG4gICAgICAgIHJlZj1cIm1lbnVXcmFwcGVyUmVmXCJcbiAgICAgICAgdi1tb2RlbDpzZWxlY3RlZC1kYXRlPVwic2VsZWN0ZWREYXRlXCJcbiAgICAgICAgdi1tb2RlbDpzZWxlY3RlZC10aW1lPVwic2VsZWN0ZWRUaW1lXCJcbiAgICAgICAgdi1tb2RlbDpzZWxlY3RlZC1ob3VyPVwic2VsZWN0ZWRIb3VyXCJcbiAgICAgICAgdi1tb2RlbDpzZWxlY3RlZC1taW51dGU9XCJzZWxlY3RlZE1pbnV0ZVwiXG4gICAgICAgIHYtbW9kZWw6c2VsZWN0ZWQtc2Vjb25kPVwic2VsZWN0ZWRTZWNvbmRcIlxuICAgICAgICB2LW1vZGVsOnNlbGVjdGVkLW1pbGxpc2Vjb25kPVwic2VsZWN0ZWRNaWxsaXNlY29uZFwiXG4gICAgICAgIHYtbW9kZWw6dGltZS1zZWxlY3Rpb249XCJ0aW1lU2VsZWN0aW9uXCJcbiAgICAgICAgdi1tb2RlbDpzZWxlY3RlZC10aW1lem9uZT1cInNlbGVjdGVkVGltZXpvbmVcIlxuICAgICAgICB2LW1vZGVsOmNhbGVuZGFyLW1lbnUtb3Blbj1cImNhbGVuZGFyTWVudU9wZW5cIlxuICAgICAgICA6YWNjdXJhY3k9XCJhY2N1cmFjeVwiXG4gICAgICAgIDptYXgtZGF0ZT1cIm1heEFsbG93ZWREYXRlXCJcbiAgICAgICAgOm1pbi1kYXRlPVwibWluQWxsb3dlZERhdGVcIlxuICAgICAgICBAc2V0LW5vdz1cInNldE5vdygpXCJcbiAgICAgID5cbiAgICAgICAgPHNsb3QgbmFtZT1cIm1lbnUtY29udGVudFwiIC8+XG4gICAgICA8L1J1aURhdGVUaW1lUGlja2VyTWVudT5cbiAgICA8L3RlbXBsYXRlPlxuICA8L1J1aU1lbnU+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIiBtb2R1bGU+XG4ud3JhcHBlciB7XG4gIEBhcHBseSB3LWZ1bGwgaW5saW5lLWZsZXggZmxleC1jb2w7XG5cbiAgLmFjdGl2YXRvciB7XG4gICAgQGFwcGx5IHJlbGF0aXZlIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciB3LWZ1bGw7XG4gICAgQGFwcGx5IG91dGxpbmUtbm9uZSBmb2N1cy13aXRoaW46b3V0bGluZS1ub25lIGN1cnNvci1wb2ludGVyIG1pbi1oLTE0IHBsLTMgcHktMiBwci04IHJvdW5kZWQ7XG4gICAgQGFwcGx5IG0tMCBiZy13aGl0ZSB0cmFuc2l0aW9uLWFsbCB0ZXh0LWJvZHktMSB0ZXh0LWxlZnQgaG92ZXI6Ym9yZGVyLWJsYWNrO1xuXG4gICAgJjpub3QoLm91dGxpbmVkKSB7XG4gICAgICBAYXBwbHkgaG92ZXI6YmctZ3JheS0xMDAgZm9jdXMtd2l0aGluOmJnLWdyYXktMTAwO1xuICAgIH1cblxuICAgICYuZGVuc2Uge1xuICAgICAgQGFwcGx5IHB5LTEuNSBtaW4taC0xMDtcblxuICAgICAgfiAuZmllbGRzZXQge1xuICAgICAgICBAYXBwbHkgcHgtMjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmRpc2FibGVkIHtcbiAgICAgIEBhcHBseSBvcGFjaXR5LTY1IHRleHQtcnVpLXRleHQtZGlzYWJsZWQgYWN0aXZlOnRleHQtcnVpLXRleHQtZGlzYWJsZWQgY3Vyc29yLWRlZmF1bHQgcG9pbnRlci1ldmVudHMtbm9uZTtcbiAgICB9XG5cbiAgICAmLnJlYWRvbmx5IHtcbiAgICAgIEBhcHBseSBvcGFjaXR5LTgwIHBvaW50ZXItZXZlbnRzLW5vbmUgY3Vyc29yLWRlZmF1bHQgYmctZ3JheS01MDtcbiAgICB9XG5cbiAgICAmLm91dGxpbmVkIHtcbiAgICAgIEBhcHBseSBib3JkZXItbm9uZSBob3Zlcjpib3JkZXItbm9uZTtcblxuICAgICAgJi5vcGVuZWQsXG4gICAgICAmOmZvY3VzLFxuICAgICAgJjpmb2N1cy13aXRoaW4ge1xuICAgICAgICBAYXBwbHkgYm9yZGVyLXJ1aS1wcmltYXJ5O1xuXG4gICAgICAgIH4gLmZpZWxkc2V0IHtcbiAgICAgICAgICBAYXBwbHkgYm9yZGVyLXJ1aS1wcmltYXJ5ICN7IWltcG9ydGFudH07XG4gICAgICAgICAgQGFwcGx5IGJvcmRlci0yICN7IWltcG9ydGFudH07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgfiAuZmllbGRzZXQge1xuICAgICAgICBAYXBwbHkgYm9yZGVyIGJvcmRlci1ibGFjay9bMC4yM107XG4gICAgICB9XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICB+IC5maWVsZHNldCB7XG4gICAgICAgICAgQGFwcGx5IGJvcmRlci1ibGFjaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmLmRpc2FibGVkIHtcbiAgICAgICAgfiAuZmllbGRzZXQge1xuICAgICAgICAgIEBhcHBseSBib3JkZXItZG90dGVkO1xuICAgICAgICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLWJsYWNrL1swLjIzXSAjeyFpbXBvcnRhbnR9O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYud2l0aC1zdWNjZXNzIHtcbiAgICAgICAgLmxhYmVsIHtcbiAgICAgICAgICBAYXBwbHkgdGV4dC1ydWktc3VjY2VzcyAjeyFpbXBvcnRhbnR9O1xuICAgICAgICB9XG5cbiAgICAgICAgfiAuZmllbGRzZXQge1xuICAgICAgICAgIEBhcHBseSBib3JkZXItcnVpLXN1Y2Nlc3MgI3shaW1wb3J0YW50fTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmLndpdGgtZXJyb3Ige1xuICAgICAgICAubGFiZWwge1xuICAgICAgICAgIEBhcHBseSB0ZXh0LXJ1aS1lcnJvciAjeyFpbXBvcnRhbnR9O1xuICAgICAgICB9XG5cbiAgICAgICAgfiAuZmllbGRzZXQge1xuICAgICAgICAgIEBhcHBseSBib3JkZXItcnVpLWVycm9yICN7IWltcG9ydGFudH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAubGFiZWwge1xuICAgICAgQGFwcGx5IHRleHQtcnVpLXRleHQtc2Vjb25kYXJ5O1xuICAgICAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSAyLjVyZW0pO1xuICAgIH1cblxuICAgIC5sYWJlbCxcbiAgICAudmFsdWUge1xuICAgICAgQGFwcGx5IGJsb2NrIHRydW5jYXRlIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTc1O1xuICAgIH1cblxuICAgIC52YWx1ZSB7XG4gICAgICBAYXBwbHkgZmxleCBnYXAtMSBmbGV4LXdyYXAgZmxleC0xIHBzLTg7XG4gICAgfVxuXG4gICAgLmNsZWFyIHtcbiAgICAgIEBhcHBseSBtbC1hdXRvIHNocmluay0wIGludmlzaWJsZTtcbiAgICB9XG5cbiAgICAuaWNvbiB7XG4gICAgICBAYXBwbHkgdGV4dC1ydWktdGV4dC1zZWNvbmRhcnkgdHJhbnNpdGlvbjtcblxuICAgICAgJl9fd3JhcHBlciB7XG4gICAgICAgIEBhcHBseSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWVuZDtcbiAgICAgICAgQGFwcGx5IGFic29sdXRlIHRvcC1weCBib3R0b20tMDtcbiAgICAgIH1cblxuICAgICAgJl9fYXBwZW5kIHtcbiAgICAgICAgQGFwcGx5IHJpZ2h0LTM7XG4gICAgICB9XG5cbiAgICAgICZfX3ByZXBlbmQge1xuICAgICAgICBAYXBwbHkgbGVmdC0zO1xuICAgICAgfVxuICAgIH1cblxuICAgICYuZmxvYXQge1xuICAgICAgLmxhYmVsIHtcbiAgICAgICAgQGFwcGx5IC10cmFuc2xhdGUteS0yIHRvcC0wIHRleHQteHMgcHgtMTtcbiAgICAgIH1cblxuICAgICAgfiAuZmllbGRzZXQge1xuICAgICAgICBsZWdlbmQge1xuICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgY29udGVudDogdi1iaW5kKGxhYmVsV2l0aFF1b3RlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJi5vcGVuZWQsXG4gICAgICAmLm9wZW5lZC53aXRoLXZhbHVlLFxuICAgICAgJjpmb2N1cyxcbiAgICAgICY6Zm9jdXMud2l0aC12YWx1ZSxcbiAgICAgICY6Zm9jdXMtd2l0aGluLFxuICAgICAgJjpmb2N1cy13aXRoaW4ud2l0aC12YWx1ZSB7XG4gICAgICAgIC5sYWJlbCB7XG4gICAgICAgICAgQGFwcGx5IHRleHQtcnVpLXByaW1hcnk7XG4gICAgICAgIH1cblxuICAgICAgICB+IC5maWVsZHNldCB7XG4gICAgICAgICAgQGFwcGx5IGJvcmRlci1ydWktcHJpbWFyeTtcbiAgICAgICAgICBAYXBwbHkgYm9yZGVyLTIgI3shaW1wb3J0YW50fTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5maWVsZHNldCB7XG4gICAgQGFwcGx5IGFic29sdXRlIHctZnVsbCBtaW4tdy0wIGgtW2NhbGMoMTAwJSswLjVyZW0pXSB0b3AtMCBsZWZ0LTAgcm91bmRlZCBwb2ludGVyLWV2ZW50cy1ub25lIHB4LTIgdHJhbnNpdGlvbi1hbGwgLW10LTI7XG5cbiAgICBsZWdlbmQge1xuICAgICAgQGFwcGx5IG9wYWNpdHktMCB0ZXh0LXhzIHRydW5jYXRlO1xuICAgICAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSAxcmVtKTtcblxuICAgICAgJjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiAnICc7XG4gICAgICB9XG5cbiAgICAgICY6YWZ0ZXIge1xuICAgICAgICBAYXBwbHkgdHJ1bmNhdGUgbWF4LXctZnVsbCBsZWFkaW5nLVswXTtcbiAgICAgICAgY29udGVudDogJ1xcMjAwQic7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi5tZW51IHtcbiAgQGFwcGx5IG92ZXJmbG93LXktYXV0byBtYXgtaC02MCBtaW4tdy1bMi41cmVtXTtcbn1cblxuLmhpZ2hsaWdodGVkIHtcbiAgQGFwcGx5IGJnLXJ1aS1ncmV5LTIwMCAjeyFpbXBvcnRhbnR9O1xuXG4gICYuYWN0aXZlIHtcbiAgICBAYXBwbHkgYmctcnVpLWdyZXktMzAwICN7IWltcG9ydGFudH07XG4gIH1cbn1cblxuOmdsb2JhbCguZGFyaykge1xuICAud3JhcHBlciB7XG4gICAgLmFjdGl2YXRvciB7XG4gICAgICBAYXBwbHkgYmctdHJhbnNwYXJlbnQgdGV4dC1ydWktdGV4dDtcblxuICAgICAgJjpub3QoLm91dGxpbmVkKSB7XG4gICAgICAgIEBhcHBseSBob3ZlcjpiZy13aGl0ZS8xMCBmb2N1cy13aXRoaW46Ymctd2hpdGUvMTA7XG5cbiAgICAgICAgJi5kaXNhYmxlZCB7XG4gICAgICAgICAgQGFwcGx5IGJnLXdoaXRlLzEwO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYucmVhZG9ubHkge1xuICAgICAgICBAYXBwbHkgYmctd2hpdGUvMTA7XG4gICAgICB9XG5cbiAgICAgICYub3V0bGluZWQge1xuICAgICAgICB+IC5maWVsZHNldCB7XG4gICAgICAgICAgQGFwcGx5IGJvcmRlci13aGl0ZS9bMC4yM107XG4gICAgICAgIH1cblxuICAgICAgICAmLmRpc2FibGVkIHtcbiAgICAgICAgICB+IC5maWVsZHNldCB7XG4gICAgICAgICAgICBAYXBwbHkgYm9yZGVyLXdoaXRlL1swLjIzXSAjeyFpbXBvcnRhbnR9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgIH4gLmZpZWxkc2V0IHtcbiAgICAgICAgICAgIEBhcHBseSBib3JkZXItd2hpdGU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmhpZ2hsaWdodGVkIHtcbiAgICBAYXBwbHkgYmctcnVpLWdyZXktODAwICN7IWltcG9ydGFudH07XG5cbiAgICAmLmFjdGl2ZSB7XG4gICAgICBAYXBwbHkgYmctcnVpLWdyZXktNzAwICN7IWltcG9ydGFudH07XG4gICAgfVxuICB9XG59XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvcHMge1xuICB2ZXJ0aWNhbD86IGJvb2xlYW47XG59XG5cbmRlZmluZU9wdGlvbnMoe1xuICBuYW1lOiAnUnVpRGl2aWRlcicsXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG59KTtcblxud2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gIHZlcnRpY2FsOiBmYWxzZSxcbn0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cInZlcnRpY2FsID8gJ2JvcmRlci1sJyA6ICdib3JkZXItdCdcIlxuICAgIGNsYXNzPVwiYm9yZGVyLWRlZmF1bHRcIlxuICAgIHYtYmluZD1cIiRhdHRyc1wiXG4gIC8+XG48L3RlbXBsYXRlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbmltcG9ydCB0eXBlIHsgQ29udGV4dENvbG9yc1R5cGUgfSBmcm9tICdAL2NvbnN0cy9jb2xvcnMnO1xuaW1wb3J0IHsgb2JqZWN0UGljayB9IGZyb20gJ0B2dWV1c2Uvc2hhcmVkJztcbmltcG9ydCBSdWlGb3JtVGV4dERldGFpbCBmcm9tICdAL2NvbXBvbmVudHMvaGVscGVycy9SdWlGb3JtVGV4dERldGFpbC52dWUnO1xuaW1wb3J0IFJ1aUljb24gZnJvbSAnQC9jb21wb25lbnRzL2ljb25zL1J1aUljb24udnVlJztcbmltcG9ydCB7IGdldE5vblJvb3RBdHRycywgZ2V0Um9vdEF0dHJzIH0gZnJvbSAnQC91dGlscy9oZWxwZXJzJztcblxuZXhwb3J0IGludGVyZmFjZSBQcm9wcyB7XG4gIG1vZGVsVmFsdWU/OiBib29sZWFuO1xuICBpbmRldGVybWluYXRlPzogYm9vbGVhbjtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBjb2xvcj86IENvbnRleHRDb2xvcnNUeXBlO1xuICBzaXplPzogJ3NtJyB8ICdsZyc7XG4gIGxhYmVsPzogc3RyaW5nO1xuICBoaW50Pzogc3RyaW5nO1xuICBlcnJvck1lc3NhZ2VzPzogc3RyaW5nIHwgc3RyaW5nW107XG4gIHN1Y2Nlc3NNZXNzYWdlcz86IHN0cmluZyB8IHN0cmluZ1tdO1xuICBoaWRlRGV0YWlscz86IGJvb2xlYW47XG59XG5cbmRlZmluZU9wdGlvbnMoe1xuICBuYW1lOiAnUnVpQ2hlY2tib3gnLFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxufSk7XG5cbmNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gIG1vZGVsVmFsdWU6IGZhbHNlLFxuICBpbmRldGVybWluYXRlOiBmYWxzZSxcbiAgZGlzYWJsZWQ6IGZhbHNlLFxuICBjb2xvcjogdW5kZWZpbmVkLFxuICBzaXplOiB1bmRlZmluZWQsXG4gIGxhYmVsOiAnJyxcbiAgaGludDogJycsXG4gIGVycm9yTWVzc2FnZXM6ICgpID0+IFtdLFxuICBzdWNjZXNzTWVzc2FnZXM6ICgpID0+IFtdLFxuICBoaWRlRGV0YWlsczogZmFsc2UsXG59KTtcblxuY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPHtcbiAgKGU6ICd1cGRhdGU6bW9kZWxWYWx1ZScsIG1vZGVsVmFsdWU6IGJvb2xlYW4pOiB2b2lkO1xuICAoZTogJ3VwZGF0ZTppbmRldGVybWluYXRlJywgaW5kZXRlcm1pbmF0ZTogYm9vbGVhbik6IHZvaWQ7XG59PigpO1xuXG5jb25zdCB7IHNpemUsIG1vZGVsVmFsdWUsIGluZGV0ZXJtaW5hdGUsIGVycm9yTWVzc2FnZXMsIHN1Y2Nlc3NNZXNzYWdlcyB9ID0gdG9SZWZzKHByb3BzKTtcblxuY29uc3QgZWwgPSByZWY8SFRNTElucHV0RWxlbWVudCB8IG51bGw+KG51bGwpO1xuXG5jb25zdCBpbnRlcm5hbE1vZGVsVmFsdWUgPSBjb21wdXRlZDxib29sZWFuPih7XG4gIGdldDogKCkgPT4gZ2V0KG1vZGVsVmFsdWUpLFxuICBzZXQ6IChjaGVja2VkOiBib29sZWFuKSA9PiB7XG4gICAgaWYgKGNoZWNrZWQpXG4gICAgICBlbWl0KCd1cGRhdGU6aW5kZXRlcm1pbmF0ZScsIGZhbHNlKTtcbiAgICBlbWl0KCd1cGRhdGU6bW9kZWxWYWx1ZScsIGNoZWNrZWQpO1xuICB9LFxufSk7XG5cbmNvbnN0IGljb25TaXplID0gY29tcHV0ZWQ8bnVtYmVyPigoKSA9PiB7XG4gIGNvbnN0IHNpemVWYWwgPSBnZXQoc2l6ZSk7XG4gIGlmIChzaXplVmFsID09PSAnbGcnKVxuICAgIHJldHVybiAyODtcblxuICBpZiAoc2l6ZVZhbCA9PT0gJ3NtJylcbiAgICByZXR1cm4gMjA7XG5cbiAgcmV0dXJuIDI0O1xufSk7XG5cbmNvbnN0IHsgaGFzRXJyb3IsIGhhc1N1Y2Nlc3MgfSA9IHVzZUZvcm1UZXh0RGV0YWlsKFxuICBlcnJvck1lc3NhZ2VzLFxuICBzdWNjZXNzTWVzc2FnZXMsXG4pO1xuXG53YXRjaChpbmRldGVybWluYXRlLCAodmFsKSA9PiB7XG4gIGNvbnN0IGlucHV0ID0gZ2V0KGVsKTtcbiAgaWYgKGlucHV0KSB7XG4gICAgaW5wdXQuY2hlY2tlZCA9ICF2YWw7XG4gICAgaWYgKHZhbClcbiAgICAgIGlucHV0LnZhbHVlID0gJ29mZic7XG4gICAgZWxzZVxuICAgICAgaW5wdXQudmFsdWUgPSAnb24nO1xuICB9XG59KTtcblxud2F0Y2goaW50ZXJuYWxNb2RlbFZhbHVlLCAodmFsKSA9PiB7XG4gIGNvbnN0IGlucHV0ID0gZ2V0KGVsKTtcbiAgaWYgKGlucHV0ICYmIGlucHV0LmNoZWNrZWQgIT09IHZhbClcbiAgICBpbnB1dC5jaGVja2VkID0gdmFsO1xufSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IHYtYmluZD1cImdldFJvb3RBdHRycygkYXR0cnMpXCI+XG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICRzdHlsZS53cmFwcGVyLFxuICAgICAgICAkc3R5bGVbc2l6ZSA/PyAnJ10sXG4gICAgICAgIHtcbiAgICAgICAgICBbJHN0eWxlLmRpc2FibGVkXTogZGlzYWJsZWQsXG4gICAgICAgIH0sXG4gICAgICBdXCJcbiAgICAgIHYtYmluZD1cIm9iamVjdFBpY2soJGF0dHJzLCBbJ29uQ2xpY2snXSlcIlxuICAgID5cbiAgICAgIDxpbnB1dFxuICAgICAgICByZWY9XCJlbFwiXG4gICAgICAgIHYtbW9kZWw9XCJpbnRlcm5hbE1vZGVsVmFsdWVcIlxuICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICA6Y2xhc3M9XCIkc3R5bGUuaW5wdXRcIlxuICAgICAgICA6ZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXG4gICAgICAgIHYtYmluZD1cImdldE5vblJvb3RBdHRycygkYXR0cnMsIFsnb25JbnB1dCcsICdvbkNsaWNrJ10pXCJcbiAgICAgIC8+XG4gICAgICA8c3BhblxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJHN0eWxlLmNoZWNrYm94LFxuICAgICAgICAgICRzdHlsZVtjb2xvciA/PyAnJ10sXG4gICAgICAgICAgJHN0eWxlW3NpemUgPz8gJyddLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFskc3R5bGUuY2hlY2tlZF06IG1vZGVsVmFsdWUgfHwgaW5kZXRlcm1pbmF0ZSxcbiAgICAgICAgICAgIFskc3R5bGUuZGlzYWJsZWRdOiBkaXNhYmxlZCxcbiAgICAgICAgICAgIFskc3R5bGVbJ3dpdGgtZXJyb3InXV06IGhhc0Vycm9yLFxuICAgICAgICAgICAgWyRzdHlsZVsnd2l0aC1zdWNjZXNzJ11dOiBoYXNTdWNjZXNzICYmICFoYXNFcnJvcixcbiAgICAgICAgICB9LFxuICAgICAgICBdXCJcbiAgICAgID5cbiAgICAgICAgPFJ1aUljb25cbiAgICAgICAgICB2LWlmPVwiaW5kZXRlcm1pbmF0ZVwiXG4gICAgICAgICAgbmFtZT1cImx1LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtZmlsbFwiXG4gICAgICAgICAgOnNpemU9XCJpY29uU2l6ZVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxSdWlJY29uXG4gICAgICAgICAgdi1lbHNlLWlmPVwibW9kZWxWYWx1ZVwiXG4gICAgICAgICAgbmFtZT1cImx1LWNoZWNrYm94LWZpbGxcIlxuICAgICAgICAgIDpzaXplPVwiaWNvblNpemVcIlxuICAgICAgICAvPlxuICAgICAgICA8UnVpSWNvblxuICAgICAgICAgIHYtZWxzZVxuICAgICAgICAgIG5hbWU9XCJsdS1jaGVja2JveC1ibGFua1wiXG4gICAgICAgICAgOnNpemU9XCJpY29uU2l6ZVwiXG4gICAgICAgIC8+XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhblxuICAgICAgICB2LWlmPVwibGFiZWwgfHwgJHNsb3RzLmRlZmF1bHRcIlxuICAgICAgICA6Y2xhc3M9XCIkc3R5bGUubGFiZWxcIlxuICAgICAgICBjbGFzcz1cInRleHQtYm9keS0xXCJcbiAgICAgID5cbiAgICAgICAgPHNsb3Q+e3sgbGFiZWwgfX08L3Nsb3Q+XG4gICAgICA8L3NwYW4+XG4gICAgPC9sYWJlbD5cbiAgICA8UnVpRm9ybVRleHREZXRhaWxcbiAgICAgIHYtaWY9XCIhaGlkZURldGFpbHNcIlxuICAgICAgOmVycm9yLW1lc3NhZ2VzPVwiZXJyb3JNZXNzYWdlc1wiXG4gICAgICA6c3VjY2Vzcy1tZXNzYWdlcz1cInN1Y2Nlc3NNZXNzYWdlc1wiXG4gICAgICA6aGludD1cImhpbnRcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgbW9kdWxlPlxuQHVzZSAnQC9zdHlsZXMvY29sb3JzLnNjc3MnIGFzIGM7XG5cbi53cmFwcGVyIHtcbiAgQGFwcGx5IHJlbGF0aXZlIGZsZXggaXRlbXMtc3RhcnQgY3Vyc29yLXBvaW50ZXIgLW1sLVs5cHhdO1xuXG4gICYuZGlzYWJsZWQge1xuICAgIEBhcHBseSBjdXJzb3Itbm90LWFsbG93ZWQ7XG5cbiAgICAuY2hlY2tib3gge1xuICAgICAgQGFwcGx5IG9wYWNpdHktNTA7XG5cbiAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgIH1cblxuICAgIC5sYWJlbCB7XG4gICAgICBAYXBwbHkgdGV4dC1ydWktdGV4dC1kaXNhYmxlZDtcbiAgICB9XG4gIH1cblxuICAuaW5wdXQge1xuICAgIEBhcHBseSBhcHBlYXJhbmNlLW5vbmUgdy1bMXB4XSBoLVsxcHhdIGFic29sdXRlIHotWzJdIG91dGxpbmUtbm9uZSBzZWxlY3Qtbm9uZTtcblxuICAgICY6Zm9jdXMge1xuICAgICAgKyAuY2hlY2tib3gge1xuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgQGFwcGx5IG9wYWNpdHktMTU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuY2hlY2tib3gge1xuICAgIEBhcHBseSByZWxhdGl2ZSB0ZXh0LXJ1aS10ZXh0LXNlY29uZGFyeSBwLVs5cHhdO1xuXG4gICAgJjpiZWZvcmUge1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBAYXBwbHkgYWJzb2x1dGUgdG9wLTEvMiBsZWZ0LTEvMiBibG9jayBoLVs0MnB4XSB3LVs0MnB4XSAtdHJhbnNsYXRlLXktMS8yIC10cmFuc2xhdGUteC0xLzIgcm91bmRlZC1mdWxsIG9wYWNpdHktMCB0cmFuc2l0aW9uLW9wYWNpdHk7XG4gICAgICBAYXBwbHkgYmctYmxhY2sgZGFyazpiZy13aGl0ZTtcbiAgICB9XG5cbiAgICAmLndpdGgtZXJyb3Ige1xuICAgICAgQGFwcGx5IHRleHQtcnVpLWVycm9yICN7IWltcG9ydGFudH07XG4gICAgfVxuXG4gICAgJi53aXRoLXN1Y2Nlc3Mge1xuICAgICAgQGFwcGx5IHRleHQtcnVpLXN1Y2Nlc3MgI3shaW1wb3J0YW50fTtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgQGFwcGx5IG9wYWNpdHktNTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOmFjdGl2ZSB7XG4gICAgICAmOmJlZm9yZSB7XG4gICAgICAgIEBhcHBseSBvcGFjaXR5LTMwO1xuICAgICAgfVxuICAgIH1cblxuICAgICYubGcge1xuICAgICAgJjpiZWZvcmUge1xuICAgICAgICBAYXBwbHkgaC1bNDZweF0gdy1bNDZweF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5zbSB7XG4gICAgICAmOmJlZm9yZSB7XG4gICAgICAgIEBhcHBseSBoLVszOHB4XSB3LVszOHB4XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAZWFjaCAkY29sb3IgaW4gYy4kY29udGV4dC1jb2xvcnMge1xuICAgICAgJi4jeyRjb2xvcn0ge1xuICAgICAgICBAYXBwbHkgYmVmb3JlOmJnLXJ1aS0jeyRjb2xvcn07XG4gICAgICAgICYuY2hlY2tlZCB7XG4gICAgICAgICAgQGFwcGx5IHRleHQtcnVpLSN7JGNvbG9yfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5sYWJlbCB7XG4gICAgQGFwcGx5IGZsZXgtMSB0ZXh0LXJ1aS10ZXh0O1xuXG4gICAgJjpub3QoOmVtcHR5KSB7XG4gICAgICBAYXBwbHkgbXQtWzlweF0gbWItMTtcbiAgICB9XG4gIH1cblxuICAmLnNtIHtcbiAgICAubGFiZWwge1xuICAgICAgJjpub3QoOmVtcHR5KSB7XG4gICAgICAgIEBhcHBseSBtdC1bN3B4XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmLmxnIHtcbiAgICAubGFiZWwge1xuICAgICAgJjpub3QoOmVtcHR5KSB7XG4gICAgICAgIEBhcHBseSBtdC1bMTFweF07XG4gICAgICB9XG4gICAgfVxuICB9XG59XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cCBnZW5lcmljPSdUVmFsdWUnPlxuaW1wb3J0IHR5cGUgeyBDb250ZXh0Q29sb3JzVHlwZSB9IGZyb20gJ0AvY29uc3RzL2NvbG9ycyc7XG5pbXBvcnQgeyBvYmplY3RQaWNrIH0gZnJvbSAnQHZ1ZXVzZS9zaGFyZWQnO1xuaW1wb3J0IHsgRnJhZ21lbnQsIGlzVk5vZGUgfSBmcm9tICd2dWUnO1xuaW1wb3J0IFJ1aUZvcm1UZXh0RGV0YWlsIGZyb20gJ0AvY29tcG9uZW50cy9oZWxwZXJzL1J1aUZvcm1UZXh0RGV0YWlsLnZ1ZSc7XG5pbXBvcnQgeyBhc3NlcnQgfSBmcm9tICdAL3V0aWxzL2Fzc2VydCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvcHMge1xuICBpbmxpbmU/OiBib29sZWFuO1xuICBsYWJlbD86IHN0cmluZztcbiAgaGludD86IHN0cmluZztcbiAgZXJyb3JNZXNzYWdlcz86IHN0cmluZyB8IHN0cmluZ1tdO1xuICBzdWNjZXNzTWVzc2FnZXM/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgaGlkZURldGFpbHM/OiBib29sZWFuO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGNvbG9yPzogQ29udGV4dENvbG9yc1R5cGU7XG4gIHNpemU/OiAnc20nIHwgJ2xnJztcbn1cblxuZGVmaW5lT3B0aW9ucyh7XG4gIG5hbWU6ICdSdWlSYWRpb0dyb3VwJyxcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbn0pO1xuXG5jb25zdCBtb2RlbFZhbHVlID0gZGVmaW5lTW9kZWw8VFZhbHVlPih7IHJlcXVpcmVkOiBmYWxzZSB9KTtcblxud2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gIGlubGluZTogZmFsc2UsXG4gIGxhYmVsOiAnJyxcbiAgaGludDogJycsXG4gIGVycm9yTWVzc2FnZXM6ICgpID0+IFtdLFxuICBzdWNjZXNzTWVzc2FnZXM6ICgpID0+IFtdLFxuICBoaWRlRGV0YWlsczogZmFsc2UsXG4gIGRpc2FibGVkOiBmYWxzZSxcbiAgY29sb3I6IHVuZGVmaW5lZCxcbiAgc2l6ZTogdW5kZWZpbmVkLFxufSk7XG5cbmNvbnN0IHJhZGlvR3JvdXBOYW1lID0gcmVmKCcnKTtcblxub25Nb3VudGVkKCgpID0+IHtcbiAgc2V0KHJhZGlvR3JvdXBOYW1lLCBnZW5lcmF0ZUlkKCdyYWRpby1ncm91cCcpKTtcbn0pO1xuXG5jb25zdCBzbG90cyA9IHVzZVNsb3RzKCk7XG5jb25zdCBjaGlsZHJlbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgY29uc3Qgc2xvdENvbnRlbnQgPSBzbG90cy5kZWZhdWx0Py4oKSA/PyBbXTtcblxuICAvLyBXaGVuIHVzaW5nIGR5bmFtaWMgY29udGVudCB3aXRoIHYtZm9yIHRoZSBzbG90IGNvbnRlbnQgaXMgYSBzaW5nbGUgZnJhZ21lbnRcbiAgLy8gY29udGFpbmluZyB0aGUgY2hpbGRyZW4gY29tcG9uZW50cy5cbiAgaWYgKHNsb3RDb250ZW50Lmxlbmd0aCA9PT0gMSkge1xuICAgIGNvbnN0IGZpcnN0Q2hpbGQgPSBzbG90Q29udGVudFswXTtcbiAgICBhc3NlcnQoZmlyc3RDaGlsZCk7XG4gICAgaWYgKGZpcnN0Q2hpbGQudHlwZSA9PT0gRnJhZ21lbnQpIHtcbiAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KGZpcnN0Q2hpbGQuY2hpbGRyZW4pID8gZmlyc3RDaGlsZC5jaGlsZHJlbi5maWx0ZXIoaXNWTm9kZSkgOiBbXTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHNsb3RDb250ZW50O1xufSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IHYtYmluZD1cIiRhdHRyc1wiPlxuICAgIDxkaXZcbiAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICBjbGFzcz1cInRleHQtcnVpLXRleHQtc2Vjb25kYXJ5IHRleHQtYm9keS0xXCJcbiAgICA+XG4gICAgICB7eyBsYWJlbCB9fVxuICAgIDwvZGl2PlxuICAgIDxkaXYgOmNsYXNzPVwiWyRzdHlsZS53cmFwcGVyLCB7IFskc3R5bGUud3JhcHBlcl9faW5saW5lID8/ICcnXTogaW5saW5lIH1dXCI+XG4gICAgICA8Q29tcG9uZW50XG4gICAgICAgIDppcz1cImNoaWxkXCJcbiAgICAgICAgdi1mb3I9XCIoY2hpbGQsIGkpIGluIGNoaWxkcmVuXCJcbiAgICAgICAgdi1iaW5kPVwib2JqZWN0UGljaygkcHJvcHMsIFsnZGlzYWJsZWQnLCAnY29sb3InLCAnc2l6ZSddKVwiXG4gICAgICAgIDprZXk9XCJpXCJcbiAgICAgICAgdi1tb2RlbD1cIm1vZGVsVmFsdWVcIlxuICAgICAgICBoaWRlLWRldGFpbHNcbiAgICAgICAgOm5hbWU9XCJyYWRpb0dyb3VwTmFtZVwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuICAgIDxSdWlGb3JtVGV4dERldGFpbFxuICAgICAgdi1pZj1cIiFoaWRlRGV0YWlsc1wiXG4gICAgICA6ZXJyb3ItbWVzc2FnZXM9XCJlcnJvck1lc3NhZ2VzXCJcbiAgICAgIDpzdWNjZXNzLW1lc3NhZ2VzPVwic3VjY2Vzc01lc3NhZ2VzXCJcbiAgICAgIDpoaW50PVwiaGludFwiXG4gICAgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIiBtb2R1bGU+XG4ud3JhcHBlciB7XG4gICZfX2lubGluZSB7XG4gICAgQGFwcGx5IGZsZXggc3BhY2UteC02O1xuICB9XG59XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cCBnZW5lcmljPSdUVmFsdWUnPlxuaW1wb3J0IHR5cGUgeyBDb250ZXh0Q29sb3JzVHlwZSB9IGZyb20gJ0AvY29uc3RzL2NvbG9ycyc7XG5pbXBvcnQgUnVpRm9ybVRleHREZXRhaWwgZnJvbSAnQC9jb21wb25lbnRzL2hlbHBlcnMvUnVpRm9ybVRleHREZXRhaWwudnVlJztcbmltcG9ydCBSdWlJY29uIGZyb20gJ0AvY29tcG9uZW50cy9pY29ucy9SdWlJY29uLnZ1ZSc7XG5pbXBvcnQgeyBnZXROb25Sb290QXR0cnMsIGdldFJvb3RBdHRycyB9IGZyb20gJ0AvdXRpbHMvaGVscGVycyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmFkaW9Qcm9wczxUVmFsdWU+IHtcbiAgdmFsdWU6IFRWYWx1ZTtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBjb2xvcj86IENvbnRleHRDb2xvcnNUeXBlO1xuICBzaXplPzogJ3NtJyB8ICdsZyc7XG4gIGxhYmVsPzogc3RyaW5nO1xuICBoaW50Pzogc3RyaW5nO1xuICBlcnJvck1lc3NhZ2VzPzogc3RyaW5nIHwgc3RyaW5nW107XG4gIHN1Y2Nlc3NNZXNzYWdlcz86IHN0cmluZyB8IHN0cmluZ1tdO1xuICBoaWRlRGV0YWlscz86IGJvb2xlYW47XG59XG5cbmRlZmluZU9wdGlvbnMoe1xuICBuYW1lOiAnUnVpUmFkaW8nLFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxufSk7XG5cbmNvbnN0IG1vZGVsVmFsdWUgPSBkZWZpbmVNb2RlbDxUVmFsdWU+KHsgcmVxdWlyZWQ6IGZhbHNlIH0pO1xuXG5jb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxSYWRpb1Byb3BzPFRWYWx1ZT4+KCksIHtcbiAgZGlzYWJsZWQ6IGZhbHNlLFxuICBjb2xvcjogdW5kZWZpbmVkLFxuICBzaXplOiB1bmRlZmluZWQsXG4gIGxhYmVsOiAnJyxcbiAgaGludDogJycsXG4gIGVycm9yTWVzc2FnZXM6ICgpID0+IFtdLFxuICBzdWNjZXNzTWVzc2FnZXM6ICgpID0+IFtdLFxuICBoaWRlRGV0YWlsczogZmFsc2UsXG59KTtcblxuY29uc3QgeyB2YWx1ZSwgc3VjY2Vzc01lc3NhZ2VzLCBlcnJvck1lc3NhZ2VzIH1cbiAgPSB0b1JlZnMocHJvcHMpO1xuXG5mdW5jdGlvbiBpbnB1dChldmVudDogRXZlbnQpIHtcbiAgY29uc3QgY2hlY2tlZCA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkuY2hlY2tlZDtcbiAgaWYgKGNoZWNrZWQpXG4gICAgc2V0KG1vZGVsVmFsdWUsIGdldCh2YWx1ZSkpO1xufVxuXG5jb25zdCBpY29uU2l6ZTogQ29tcHV0ZWRSZWY8bnVtYmVyPiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgY29uc3Qgc2l6ZSA9IHByb3BzLnNpemU7XG4gIGlmIChzaXplID09PSAnbGcnKVxuICAgIHJldHVybiAyODtcblxuICBpZiAoc2l6ZSA9PT0gJ3NtJylcbiAgICByZXR1cm4gMjA7XG5cbiAgcmV0dXJuIDI0O1xufSk7XG5cbmNvbnN0IHNlbGVjdGVkID0gY29tcHV0ZWQoKCkgPT4gZ2V0KG1vZGVsVmFsdWUpID09PSBnZXQodmFsdWUpKTtcblxuY29uc3QgeyBoYXNFcnJvciwgaGFzU3VjY2VzcyB9ID0gdXNlRm9ybVRleHREZXRhaWwoXG4gIGVycm9yTWVzc2FnZXMsXG4gIHN1Y2Nlc3NNZXNzYWdlcyxcbik7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IHYtYmluZD1cImdldFJvb3RBdHRycygkYXR0cnMpXCI+XG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICRzdHlsZS53cmFwcGVyLFxuICAgICAgICAkc3R5bGVbc2l6ZSA/PyAnJ10sXG4gICAgICAgIHtcbiAgICAgICAgICBbJHN0eWxlLmRpc2FibGVkXTogZGlzYWJsZWQsXG4gICAgICAgIH0sXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8aW5wdXRcbiAgICAgICAgOmNoZWNrZWQ9XCJzZWxlY3RlZFwiXG4gICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgIDpjbGFzcz1cIiRzdHlsZS5pbnB1dFwiXG4gICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgICAgdi1iaW5kPVwiZ2V0Tm9uUm9vdEF0dHJzKCRhdHRycylcIlxuICAgICAgICA6dmFsdWU9XCJ2YWx1ZVwiXG4gICAgICAgIEBpbnB1dD1cImlucHV0KCRldmVudClcIlxuICAgICAgLz5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICRzdHlsZS5yYWRpbyxcbiAgICAgICAgICAkc3R5bGVbY29sb3IgPz8gJyddLFxuICAgICAgICAgICRzdHlsZVtzaXplID8/ICcnXSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBbJHN0eWxlLmNoZWNrZWRdOiBzZWxlY3RlZCxcbiAgICAgICAgICAgIFskc3R5bGUuZGlzYWJsZWRdOiBkaXNhYmxlZCxcbiAgICAgICAgICAgIFskc3R5bGVbJ3dpdGgtZXJyb3InXV06IGhhc0Vycm9yLFxuICAgICAgICAgICAgWyRzdHlsZVsnd2l0aC1zdWNjZXNzJ11dOiBoYXNTdWNjZXNzICYmICFoYXNFcnJvcixcbiAgICAgICAgICB9LFxuICAgICAgICBdXCJcbiAgICAgID5cbiAgICAgICAgPFJ1aUljb25cbiAgICAgICAgICB2LWlmPVwic2VsZWN0ZWRcIlxuICAgICAgICAgIG5hbWU9XCJsdS1yYWRpby1idXR0b24tZmlsbFwiXG4gICAgICAgICAgOnNpemU9XCJpY29uU2l6ZVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxSdWlJY29uXG4gICAgICAgICAgdi1lbHNlXG4gICAgICAgICAgbmFtZT1cImx1LWNoZWNrYm94LWJsYW5rLWNpcmNsZVwiXG4gICAgICAgICAgOnNpemU9XCJpY29uU2l6ZVwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiJHN0eWxlLmxhYmVsXCJcbiAgICAgICAgY2xhc3M9XCJ0ZXh0LWJvZHktMVwiXG4gICAgICA+XG4gICAgICAgIDxzbG90Pnt7IGxhYmVsIH19PC9zbG90PlxuICAgICAgPC9kaXY+XG4gICAgPC9sYWJlbD5cbiAgICA8UnVpRm9ybVRleHREZXRhaWxcbiAgICAgIHYtaWY9XCIhaGlkZURldGFpbHNcIlxuICAgICAgOmVycm9yLW1lc3NhZ2VzPVwiZXJyb3JNZXNzYWdlc1wiXG4gICAgICA6c3VjY2Vzcy1tZXNzYWdlcz1cInN1Y2Nlc3NNZXNzYWdlc1wiXG4gICAgICA6aGludD1cImhpbnRcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgbW9kdWxlPlxuQHVzZSAnQC9zdHlsZXMvY29sb3JzLnNjc3MnIGFzIGM7XG5cbi53cmFwcGVyIHtcbiAgQGFwcGx5IHJlbGF0aXZlIGZsZXggaXRlbXMtc3RhcnQgY3Vyc29yLXBvaW50ZXIgLW1sLVs5cHhdO1xuXG4gICYuZGlzYWJsZWQge1xuICAgIEBhcHBseSBjdXJzb3Itbm90LWFsbG93ZWQ7XG5cbiAgICAucmFkaW8ge1xuICAgICAgQGFwcGx5IG9wYWNpdHktNTA7XG5cbiAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgIH1cblxuICAgIC5sYWJlbCB7XG4gICAgICBAYXBwbHkgdGV4dC1ydWktdGV4dC1kaXNhYmxlZDtcbiAgICB9XG4gIH1cblxuICAuaW5wdXQge1xuICAgIEBhcHBseSBhcHBlYXJhbmNlLW5vbmUgdy1bMXB4XSBoLVsxcHhdIGFic29sdXRlIHotWzJdIG91dGxpbmUtbm9uZSBzZWxlY3Qtbm9uZTtcblxuICAgICY6Zm9jdXMge1xuICAgICAgKyAucmFkaW8ge1xuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgQGFwcGx5IG9wYWNpdHktMTU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAucmFkaW8ge1xuICAgIEBhcHBseSByZWxhdGl2ZSB0ZXh0LXJ1aS10ZXh0LXNlY29uZGFyeSBwLVs5cHhdO1xuXG4gICAgJjpiZWZvcmUge1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBAYXBwbHkgYWJzb2x1dGUgdG9wLTEvMiBsZWZ0LTEvMiBibG9jayBoLVs0MnB4XSB3LVs0MnB4XSAtdHJhbnNsYXRlLXktMS8yIC10cmFuc2xhdGUteC0xLzIgcm91bmRlZC1mdWxsIG9wYWNpdHktMCB0cmFuc2l0aW9uLW9wYWNpdHk7XG4gICAgICBAYXBwbHkgYmctYmxhY2sgZGFyazpiZy13aGl0ZTtcbiAgICB9XG5cbiAgICAmLndpdGgtZXJyb3Ige1xuICAgICAgQGFwcGx5IHRleHQtcnVpLWVycm9yICN7IWltcG9ydGFudH07XG4gICAgfVxuXG4gICAgJi53aXRoLXN1Y2Nlc3Mge1xuICAgICAgQGFwcGx5IHRleHQtcnVpLXN1Y2Nlc3MgI3shaW1wb3J0YW50fTtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgQGFwcGx5IG9wYWNpdHktNTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOmFjdGl2ZSB7XG4gICAgICAmOmJlZm9yZSB7XG4gICAgICAgIEBhcHBseSBvcGFjaXR5LTMwO1xuICAgICAgfVxuICAgIH1cblxuICAgICYubGcge1xuICAgICAgJjpiZWZvcmUge1xuICAgICAgICBAYXBwbHkgaC1bNDZweF0gdy1bNDZweF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5zbSB7XG4gICAgICAmOmJlZm9yZSB7XG4gICAgICAgIEBhcHBseSBoLVszOHB4XSB3LVszOHB4XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAZWFjaCAkY29sb3IgaW4gYy4kY29udGV4dC1jb2xvcnMge1xuICAgICAgJi4jeyRjb2xvcn0ge1xuICAgICAgICBAYXBwbHkgYmVmb3JlOmJnLXJ1aS0jeyRjb2xvcn07XG4gICAgICAgICYuY2hlY2tlZCB7XG4gICAgICAgICAgQGFwcGx5IHRleHQtcnVpLSN7JGNvbG9yfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5sYWJlbCB7XG4gICAgQGFwcGx5IGZsZXgtMSB0ZXh0LXJ1aS10ZXh0O1xuXG4gICAgJjpub3QoOmVtcHR5KSB7XG4gICAgICBAYXBwbHkgbXQtWzlweF0gbWItMTtcbiAgICB9XG4gIH1cblxuICAmLnNtIHtcbiAgICAubGFiZWwge1xuICAgICAgJjpub3QoOmVtcHR5KSB7XG4gICAgICAgIEBhcHBseSBtdC1bN3B4XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmLmxnIHtcbiAgICAubGFiZWwge1xuICAgICAgJjpub3QoOmVtcHR5KSB7XG4gICAgICAgIEBhcHBseSBtdC1bMTFweF07XG4gICAgICB9XG4gICAgfVxuICB9XG59XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbmltcG9ydCBSdWlCdXR0b24gZnJvbSAnQC9jb21wb25lbnRzL2J1dHRvbnMvYnV0dG9uL1J1aUJ1dHRvbi52dWUnO1xuaW1wb3J0IFJ1aVRleHRGaWVsZCwgeyB0eXBlIFRleHRGaWVsZFByb3BzIH0gZnJvbSAnQC9jb21wb25lbnRzL2Zvcm1zL3RleHQtZmllbGQvUnVpVGV4dEZpZWxkLnZ1ZSc7XG5pbXBvcnQgUnVpSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvaWNvbnMvUnVpSWNvbi52dWUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BzIGV4dGVuZHMgVGV4dEZpZWxkUHJvcHMge31cblxuZGVmaW5lT3B0aW9ucyh7XG4gIG5hbWU6ICdSdWlSZXZlYWxhYmxlVGV4dEZpZWxkJyxcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbn0pO1xuXG5jb25zdCBtb2RlbFZhbHVlID0gZGVmaW5lTW9kZWw8c3RyaW5nPih7IHJlcXVpcmVkOiB0cnVlIH0pO1xuXG5jb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICBsYWJlbDogJycsXG4gIHBsYWNlaG9sZGVyOiAnJyxcbiAgZGlzYWJsZWQ6IGZhbHNlLFxuICB2YXJpYW50OiAnZGVmYXVsdCcsXG4gIGNvbG9yOiB1bmRlZmluZWQsXG4gIHRleHRDb2xvcjogdW5kZWZpbmVkLFxuICBkZW5zZTogZmFsc2UsXG4gIGhpbnQ6ICcnLFxuICBhczogdW5kZWZpbmVkLFxuICBlcnJvck1lc3NhZ2VzOiAoKSA9PiBbXSxcbiAgc3VjY2Vzc01lc3NhZ2VzOiAoKSA9PiBbXSxcbiAgaGlkZURldGFpbHM6IGZhbHNlLFxuICBwcmVwZW5kSWNvbjogdW5kZWZpbmVkLFxuICBhcHBlbmRJY29uOiB1bmRlZmluZWQsXG4gIHJlYWRvbmx5OiBmYWxzZSxcbiAgY2xlYXJhYmxlOiBmYWxzZSxcbn0pO1xuXG5jb25zdCBoaWRkZW4gPSByZWY8Ym9vbGVhbj4odHJ1ZSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8UnVpVGV4dEZpZWxkXG4gICAgdi1iaW5kPVwieyAuLi5wcm9wcywgLi4uJGF0dHJzIH1cIlxuICAgIHYtbW9kZWw9XCJtb2RlbFZhbHVlXCJcbiAgICA6dHlwZT1cImhpZGRlbiA/ICdwYXNzd29yZCcgOiAndGV4dCdcIlxuICA+XG4gICAgPHRlbXBsYXRlXG4gICAgICB2LWlmPVwiJHNsb3RzLnByZXBlbmRcIlxuICAgICAgI3ByZXBlbmRcbiAgICA+XG4gICAgICA8c2xvdCBuYW1lPVwicHJlcGVuZFwiIC8+XG4gICAgPC90ZW1wbGF0ZT5cbiAgICA8dGVtcGxhdGUgI2FwcGVuZD5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICA8UnVpQnV0dG9uXG4gICAgICAgICAgOmRpc2FibGVkPVwiZGlzYWJsZWRcIlxuICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBpY29uXG4gICAgICAgICAgY2xhc3M9XCItbXItMSAhcC0yXCJcbiAgICAgICAgICBAY2xpY2s9XCJoaWRkZW4gPSAhaGlkZGVuXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxSdWlJY29uXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtYmxhY2svWy41NF0gZGFyazp0ZXh0LXdoaXRlL1suNTZdXCJcbiAgICAgICAgICAgIHNpemU9XCIyMFwiXG4gICAgICAgICAgICA6bmFtZT1cImhpZGRlbiA/ICdsdS1leWUtb2ZmJyA6ICdsdS1leWUnXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L1J1aUJ1dHRvbj5cblxuICAgICAgICA8c2xvdCBuYW1lPVwiYXBwZW5kXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvdGVtcGxhdGU+XG4gIDwvUnVpVGV4dEZpZWxkPlxuPC90ZW1wbGF0ZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXAgZ2VuZXJpYz1cIlRWYWx1ZSwgVEl0ZW1cIj5cbmltcG9ydCBSdWlCdXR0b24gZnJvbSAnQC9jb21wb25lbnRzL2J1dHRvbnMvYnV0dG9uL1J1aUJ1dHRvbi52dWUnO1xuaW1wb3J0IFJ1aUljb24gZnJvbSAnQC9jb21wb25lbnRzL2ljb25zL1J1aUljb24udnVlJztcbmltcG9ydCBSdWlNZW51LCB7IHR5cGUgTWVudVByb3BzIH0gZnJvbSAnQC9jb21wb25lbnRzL292ZXJsYXlzL21lbnUvUnVpTWVudS52dWUnO1xuaW1wb3J0IFJ1aVByb2dyZXNzIGZyb20gJ0AvY29tcG9uZW50cy9wcm9ncmVzcy9SdWlQcm9ncmVzcy52dWUnO1xuaW1wb3J0IHsgdHlwZSBLZXlPZlR5cGUsIHVzZURyb3Bkb3duTWVudSB9IGZyb20gJ0AvY29tcG9zYWJsZXMvZHJvcGRvd24tbWVudSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvcHM8VFZhbHVlLCBUSXRlbT4ge1xuICBvcHRpb25zOiBUSXRlbVtdO1xuICBrZXlBdHRyPzogS2V5T2ZUeXBlPFRJdGVtLCBUVmFsdWUgZXh0ZW5kcyBBcnJheTxpbmZlciBVPiA/IFUgOiBUVmFsdWU+O1xuICB0ZXh0QXR0cj86IGtleW9mIFRJdGVtO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGxvYWRpbmc/OiBib29sZWFuO1xuICByZWFkT25seT86IGJvb2xlYW47XG4gIGRlbnNlPzogYm9vbGVhbjtcbiAgY2xlYXJhYmxlPzogYm9vbGVhbjtcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIG1lbnVPcHRpb25zPzogTWVudVByb3BzO1xuICBsYWJlbENsYXNzPzogc3RyaW5nO1xuICBtZW51Q2xhc3M/OiBzdHJpbmc7XG4gIG9wdGlvbkNsYXNzPzogc3RyaW5nO1xuICBwcmVwZW5kV2lkdGg/OiBudW1iZXI7IC8vIGluIHJlbVxuICBhcHBlbmRXaWR0aD86IG51bWJlcjsgLy8gaW4gcmVtXG4gIGl0ZW1IZWlnaHQ/OiBudW1iZXI7IC8vIGluIHB4XG4gIHZhcmlhbnQ/OiAnZGVmYXVsdCcgfCAnZmlsbGVkJyB8ICdvdXRsaW5lZCc7XG4gIGhpbnQ/OiBzdHJpbmc7XG4gIGVycm9yTWVzc2FnZXM/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgc3VjY2Vzc01lc3NhZ2VzPzogc3RyaW5nIHwgc3RyaW5nW107XG4gIGhpZGVEZXRhaWxzPzogYm9vbGVhbjtcbiAgYXV0b1NlbGVjdEZpcnN0PzogYm9vbGVhbjtcbiAgaGlkZU5vRGF0YT86IGJvb2xlYW47XG4gIG5vRGF0YVRleHQ/OiBzdHJpbmc7XG59XG5cbmRlZmluZU9wdGlvbnMoe1xuICBuYW1lOiAnUnVpTWVudVNlbGVjdCcsXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG59KTtcblxuY29uc3QgbW9kZWxWYWx1ZSA9IGRlZmluZU1vZGVsPFRWYWx1ZSB8IHVuZGVmaW5lZD4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM8VFZhbHVlLCBUSXRlbT4+KCksIHtcbiAgZGlzYWJsZWQ6IGZhbHNlLFxuICBsb2FkaW5nOiBmYWxzZSxcbiAgcmVhZE9ubHk6IGZhbHNlLFxuICBkZW5zZTogZmFsc2UsXG4gIGNsZWFyYWJsZTogZmFsc2UsXG4gIGhpZGVEZXRhaWxzOiBmYWxzZSxcbiAgbGFiZWw6ICdTZWxlY3QnLFxuICBwcmVwZW5kV2lkdGg6IDAsXG4gIGFwcGVuZFdpZHRoOiAwLFxuICB2YXJpYW50OiAnZGVmYXVsdCcsXG4gIGhpbnQ6IHVuZGVmaW5lZCxcbiAga2V5QXR0cjogdW5kZWZpbmVkLFxuICB0ZXh0QXR0cjogdW5kZWZpbmVkLFxuICBpdGVtSGVpZ2h0OiB1bmRlZmluZWQsXG4gIGVycm9yTWVzc2FnZXM6ICgpID0+IFtdLFxuICBzdWNjZXNzTWVzc2FnZXM6ICgpID0+IFtdLFxuICBhdXRvU2VsZWN0Rmlyc3Q6IGZhbHNlLFxuICBoaWRlTm9EYXRhOiBmYWxzZSxcbiAgbm9EYXRhVGV4dDogJ05vIGRhdGEgYXZhaWxhYmxlJyxcbn0pO1xuXG5jb25zdCB7IGRlbnNlLCBvcHRpb25zLCBkaXNhYmxlZCB9ID0gdG9SZWZzKHByb3BzKTtcblxuY29uc3QgbWVudVJlZiA9IHJlZigpO1xuY29uc3QgYWN0aXZhdG9yID0gcmVmKCk7XG5jb25zdCB7IGZvY3VzZWQgfSA9IHVzZUZvY3VzKGFjdGl2YXRvcik7XG5cbmNvbnN0IHZhbHVlID0gY29tcHV0ZWQ8VEl0ZW0gfCB1bmRlZmluZWQ+KHtcbiAgZ2V0OiAoKSA9PiB7XG4gICAgY29uc3Qga2V5QXR0ciA9IHByb3BzLmtleUF0dHI7XG4gICAgY29uc3QgdmFsdWUgPSBnZXQobW9kZWxWYWx1ZSk7XG4gICAgaWYgKGtleUF0dHIpXG4gICAgICByZXR1cm4gcHJvcHMub3B0aW9ucy5maW5kKG9wdGlvbiA9PiBvcHRpb25ba2V5QXR0cl0gPT09IHZhbHVlKTtcbiAgICByZXR1cm4gdmFsdWUgYXMgdW5rbm93biBhcyBUSXRlbTtcbiAgfSxcbiAgc2V0OiAoc2VsZWN0ZWQ/OiBUSXRlbSkgPT4ge1xuICAgIGNvbnN0IGtleUF0dHIgPSBwcm9wcy5rZXlBdHRyO1xuICAgIGNvbnN0IHNlbGVjdGlvbiA9IGtleUF0dHIgJiYgc2VsZWN0ZWQgPyBzZWxlY3RlZFtrZXlBdHRyXSA6IHNlbGVjdGVkO1xuICAgIHNldChtb2RlbFZhbHVlLCBzZWxlY3Rpb24gYXMgVFZhbHVlKTtcbiAgfSxcbn0pO1xuXG5jb25zdCBsYWJlbFdpdGhRdW90ZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgaWYgKCFwcm9wcy5sYWJlbClcbiAgICByZXR1cm4gJ1wiXFxcXDIwMEJcIic7XG5cbiAgcmV0dXJuIGAnICAke3Byb3BzLmxhYmVsfSAgJ2A7XG59KTtcblxuY29uc3Qge1xuICBjb250YWluZXJQcm9wcyxcbiAgd3JhcHBlclByb3BzLFxuICByZW5kZXJlZERhdGEsXG4gIGlzT3BlbixcbiAgbWVudVdpZHRoLFxuICBnZXRUZXh0LFxuICBnZXRJZGVudGlmaWVyLFxuICBpc0FjdGl2ZUl0ZW0sXG4gIGhpZ2hsaWdodGVkSW5kZXgsXG4gIG1vdmVIaWdobGlnaHQsXG4gIHZhbHVlS2V5LFxufSA9IHVzZURyb3Bkb3duTWVudTxUVmFsdWUsIFRJdGVtPih7XG4gIGl0ZW1IZWlnaHQ6IHByb3BzLml0ZW1IZWlnaHQgPz8gKHByb3BzLmRlbnNlID8gMzAgOiA0OCksXG4gIGtleUF0dHI6IHByb3BzLmtleUF0dHIsXG4gIHRleHRBdHRyOiBwcm9wcy50ZXh0QXR0cixcbiAgb3B0aW9ucyxcbiAgYXV0b0ZvY3VzOiB0cnVlLFxuICBkZW5zZSxcbiAgdmFsdWUsXG4gIG1lbnVSZWYsXG4gIGRpc2FibGVkLFxuICBhdXRvU2VsZWN0Rmlyc3Q6IHByb3BzLmF1dG9TZWxlY3RGaXJzdCxcbn0pO1xuXG5jb25zdCBvdXRsaW5lZCA9IGNvbXB1dGVkKCgpID0+IHByb3BzLnZhcmlhbnQgPT09ICdvdXRsaW5lZCcpO1xuXG5jb25zdCBmbG9hdCA9IGNvbXB1dGVkKCgpID0+IChnZXQoaXNPcGVuKSB8fCAhIWdldCh2YWx1ZSkpICYmIGdldChvdXRsaW5lZCkpO1xuXG5jb25zdCB2aXJ0dWFsQ29udGFpbmVyUHJvcHMgPSBjb21wdXRlZCgoKSA9PiAoe1xuICBzdHlsZTogY29udGFpbmVyUHJvcHMuc3R5bGUgYXMgYW55LFxuICByZWY6IGNvbnRhaW5lclByb3BzLnJlZiBhcyBhbnksXG59KSk7XG5cbmZ1bmN0aW9uIHNldFZhbHVlKHZhbDogVEl0ZW0sIGluZGV4PzogbnVtYmVyKSB7XG4gIGlmIChpc0RlZmluZWQoaW5kZXgpKVxuICAgIHNldChoaWdobGlnaHRlZEluZGV4LCBpbmRleCk7XG5cbiAgc2V0KHZhbHVlLCB2YWwpO1xuICBzZXQoZm9jdXNlZCwgdHJ1ZSk7XG59XG5cbmZ1bmN0aW9uIGNsZWFyKCkge1xuICBzZXQobW9kZWxWYWx1ZSwgdW5kZWZpbmVkKTtcbn1cbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxSdWlNZW51XG4gICAgdi1tb2RlbD1cImlzT3BlblwiXG4gICAgOmNsYXNzPVwiJHN0eWxlLndyYXBwZXJcIlxuICAgIGRpc2FibGUtYXV0by1mb2N1c1xuICAgIHYtYmluZD1cIntcbiAgICAgIC4uLmdldFJvb3RBdHRycygkYXR0cnMpLFxuICAgICAgcGxhY2VtZW50OiAnYm90dG9tLXN0YXJ0JyxcbiAgICAgIGNsb3NlT25Db250ZW50Q2xpY2s6IHRydWUsXG4gICAgICBmdWxsV2lkdGg6IHRydWUsXG4gICAgICAuLi5tZW51T3B0aW9ucyxcbiAgICAgIGVycm9yTWVzc2FnZXMsXG4gICAgICBzdWNjZXNzTWVzc2FnZXMsXG4gICAgICBoaW50LFxuICAgICAgZGVuc2UsXG4gICAgICBzaG93RGV0YWlsczogIWhpZGVEZXRhaWxzLFxuICAgICAgZGlzYWJsZWQsXG4gICAgfVwiXG4gID5cbiAgICA8dGVtcGxhdGUgI2FjdGl2YXRvcj1cInsgYXR0cnMsIG9wZW4sIGhhc0Vycm9yLCBoYXNTdWNjZXNzIH1cIj5cbiAgICAgIDxzbG90XG4gICAgICAgIG5hbWU9XCJhY3RpdmF0b3JcIlxuICAgICAgICB2LWJpbmQ9XCJ7IGRpc2FibGVkLCB2YWx1ZSwgdmFyaWFudCwgcmVhZE9ubHksIGF0dHJzLCBvcGVuLCBoYXNFcnJvciwgaGFzU3VjY2VzcyB9XCJcbiAgICAgID5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHJlZj1cImFjdGl2YXRvclwiXG4gICAgICAgICAgOmRpc2FibGVkPVwiZGlzYWJsZWRcIlxuICAgICAgICAgIDphcmlhLWRpc2FibGVkPVwiZGlzYWJsZWRcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIDp0YWJpbmRleD1cImRpc2FibGVkIHx8IHJlYWRPbmx5ID8gLTEgOiAwXCJcbiAgICAgICAgICBjbGFzcz1cImdyb3VwXCJcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAkc3R5bGUuYWN0aXZhdG9yLFxuICAgICAgICAgICAgbGFiZWxDbGFzcyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgWyRzdHlsZS5kaXNhYmxlZF06IGRpc2FibGVkLFxuICAgICAgICAgICAgICBbJHN0eWxlLnJlYWRvbmx5XTogcmVhZE9ubHksXG4gICAgICAgICAgICAgIFskc3R5bGUub3V0bGluZWRdOiBvdXRsaW5lZCxcbiAgICAgICAgICAgICAgWyRzdHlsZS5kZW5zZV06IGRlbnNlLFxuICAgICAgICAgICAgICBbJHN0eWxlLmZsb2F0XTogZmxvYXQsXG4gICAgICAgICAgICAgIFskc3R5bGUub3BlbmVkXTogb3BlbixcbiAgICAgICAgICAgICAgWyRzdHlsZVsnd2l0aC12YWx1ZSddXTogISF2YWx1ZSxcbiAgICAgICAgICAgICAgWyRzdHlsZVsnd2l0aC1lcnJvciddXTogaGFzRXJyb3IsXG4gICAgICAgICAgICAgIFskc3R5bGVbJ3dpdGgtc3VjY2VzcyddXTogaGFzU3VjY2VzcyAmJiAhaGFzRXJyb3IsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIHYtYmluZD1cInsgLi4uZ2V0Tm9uUm9vdEF0dHJzKCRhdHRycyksIC4uLihyZWFkT25seSA/IHt9IDogYXR0cnMpIH1cIlxuICAgICAgICAgIGRhdGEtaWQ9XCJhY3RpdmF0b3JcIlxuICAgICAgICAgIEBrZXlkb3duLnVwLnByZXZlbnQ9XCJtb3ZlSGlnaGxpZ2h0KHRydWUpXCJcbiAgICAgICAgICBAa2V5ZG93bi5kb3duLnByZXZlbnQ9XCJtb3ZlSGlnaGxpZ2h0KGZhbHNlKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgdi1pZj1cIm91dGxpbmVkIHx8ICF2YWx1ZVwiXG4gICAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAgICRzdHlsZS5sYWJlbCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICdhYnNvbHV0ZSc6IG91dGxpbmVkLFxuICAgICAgICAgICAgICAgICdwci0yJzogIXZhbHVlICYmICFvcGVuICYmIG91dGxpbmVkLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNsb3RcbiAgICAgICAgICAgICAgbmFtZT1cImFjdGl2YXRvci5sYWJlbFwiXG4gICAgICAgICAgICAgIHYtYmluZD1cInsgdmFsdWUgfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IGxhYmVsIH19XG4gICAgICAgICAgICA8L3Nsb3Q+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICB2LWlmPVwidmFsdWVcIlxuICAgICAgICAgICAgY2xhc3M9XCJ3LWZ1bGxcIlxuICAgICAgICAgICAgOmNsYXNzPVwiJHN0eWxlLnZhbHVlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c2xvdFxuICAgICAgICAgICAgICBuYW1lPVwic2VsZWN0aW9uLnByZXBlbmRcIlxuICAgICAgICAgICAgICB2LWJpbmQ9XCJ7IGl0ZW06IHZhbHVlIH1cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzbG90XG4gICAgICAgICAgICAgIG5hbWU9XCJzZWxlY3Rpb25cIlxuICAgICAgICAgICAgICB2LWJpbmQ9XCJ7IGl0ZW06IHZhbHVlIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBnZXRUZXh0KHZhbHVlKSB9fVxuICAgICAgICAgICAgPC9zbG90PlxuICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICB2LWlmPVwiY2xlYXJhYmxlICYmIHZhbHVlICYmICFkaXNhYmxlZFwiXG4gICAgICAgICAgICBjbGFzcz1cImdyb3VwLWhvdmVyOiF2aXNpYmxlXCJcbiAgICAgICAgICAgIDpjbGFzcz1cIlskc3R5bGUuY2xlYXIsIGZvY3VzZWQgJiYgJyF2aXNpYmxlJ11cIlxuICAgICAgICAgICAgQGNsaWNrLnN0b3AucHJldmVudD1cImNsZWFyKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxSdWlJY29uXG4gICAgICAgICAgICAgIGNvbG9yPVwiZXJyb3JcIlxuICAgICAgICAgICAgICBuYW1lPVwibHUteFwiXG4gICAgICAgICAgICAgIHNpemU9XCIxOFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgIDxzcGFuIDpjbGFzcz1cIiRzdHlsZS5pY29uX193cmFwcGVyXCI+XG4gICAgICAgICAgICA8UnVpSWNvblxuICAgICAgICAgICAgICA6Y2xhc3M9XCJbJHN0eWxlLmljb24sIHsgJ3JvdGF0ZS0xODAnOiBvcGVuIH1dXCJcbiAgICAgICAgICAgICAgOnNpemU9XCJkZW5zZSA/IDE2IDogMjRcIlxuICAgICAgICAgICAgICBuYW1lPVwibHUtY2hldnJvbi1kb3duXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgPFJ1aVByb2dyZXNzXG4gICAgICAgICAgICB2LWlmPVwibG9hZGluZ1wiXG4gICAgICAgICAgICBjbGFzcz1cImFic29sdXRlIGxlZnQtMCBib3R0b20tMCB3LWZ1bGxcIlxuICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgIHRoaWNrbmVzcz1cIjNcIlxuICAgICAgICAgICAgdmFyaWFudD1cImluZGV0ZXJtaW5hdGVcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8ZmllbGRzZXRcbiAgICAgICAgICB2LWlmPVwib3V0bGluZWRcIlxuICAgICAgICAgIDpjbGFzcz1cIiRzdHlsZS5maWVsZHNldFwiXG4gICAgICAgID5cbiAgICAgICAgICA8bGVnZW5kIDpjbGFzcz1cInsgJ3B4LTInOiBmbG9hdCB9XCIgLz5cbiAgICAgICAgPC9maWVsZHNldD5cbiAgICAgIDwvc2xvdD5cbiAgICAgIDxpbnB1dFxuICAgICAgICA6dmFsdWU9XCJ2YWx1ZUtleVwiXG4gICAgICAgIGNsYXNzPVwiaGlkZGVuXCJcbiAgICAgICAgdHlwZT1cImhpZGRlblwiXG4gICAgICAvPlxuICAgIDwvdGVtcGxhdGU+XG4gICAgPHRlbXBsYXRlICNkZWZhdWx0PVwieyB3aWR0aCB9XCI+XG4gICAgICA8ZGl2XG4gICAgICAgIHYtaWY9XCJvcHRpb25zLmxlbmd0aCA+IDBcIlxuICAgICAgICA6Y2xhc3M9XCJbJHN0eWxlLm1lbnUsIG1lbnVDbGFzc11cIlxuICAgICAgICA6c3R5bGU9XCJ7IHdpZHRoOiBgJHt3aWR0aH1weGAsIG1pbldpZHRoOiBtZW51V2lkdGggfVwiXG4gICAgICAgIHYtYmluZD1cInZpcnR1YWxDb250YWluZXJQcm9wc1wiXG4gICAgICAgIEBzY3JvbGw9XCJjb250YWluZXJQcm9wcy5vblNjcm9sbFwiXG4gICAgICAgIEBrZXlkb3duLnVwLnByZXZlbnQ9XCJtb3ZlSGlnaGxpZ2h0KHRydWUpXCJcbiAgICAgICAgQGtleWRvd24uZG93bi5wcmV2ZW50PVwibW92ZUhpZ2hsaWdodChmYWxzZSlcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgdi1iaW5kPVwid3JhcHBlclByb3BzXCJcbiAgICAgICAgICByZWY9XCJtZW51UmVmXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxSdWlCdXR0b25cbiAgICAgICAgICAgIHYtZm9yPVwiKHsgaXRlbSwgX2luZGV4IH0pIGluIHJlbmRlcmVkRGF0YVwiXG4gICAgICAgICAgICA6a2V5PVwiX2luZGV4XCJcbiAgICAgICAgICAgIDphY3RpdmU9XCJpc0FjdGl2ZUl0ZW0oaXRlbSlcIlxuICAgICAgICAgICAgOnNpemU9XCJkZW5zZSA/ICdzbScgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgOm1vZGVsLXZhbHVlPVwiZ2V0SWRlbnRpZmllcihpdGVtKVwiXG4gICAgICAgICAgICB2YXJpYW50PVwibGlzdFwiXG4gICAgICAgICAgICA6Y2xhc3M9XCJ7XG4gICAgICAgICAgICAgIGhpZ2hsaWdodGVkOiBoaWdobGlnaHRlZEluZGV4ID09PSBfaW5kZXgsXG4gICAgICAgICAgICAgIFskc3R5bGUuaGlnaGxpZ2h0ZWRdOiAhaXNBY3RpdmVJdGVtKGl0ZW0pICYmIGhpZ2hsaWdodGVkSW5kZXggPT09IF9pbmRleCxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgQHVwZGF0ZTptb2RlbC12YWx1ZT1cInNldFZhbHVlKGl0ZW0sIF9pbmRleClcIlxuICAgICAgICAgICAgQG1vdXNlZG93bj1cImhpZ2hsaWdodGVkSW5kZXggPSBfaW5kZXhcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDx0ZW1wbGF0ZSAjcHJlcGVuZD5cbiAgICAgICAgICAgICAgPHNsb3RcbiAgICAgICAgICAgICAgICBuYW1lPVwiaXRlbS5wcmVwZW5kXCJcbiAgICAgICAgICAgICAgICB2LWJpbmQ9XCJ7IGRpc2FibGVkLCBpdGVtLCBhY3RpdmU6IGlzQWN0aXZlSXRlbShpdGVtKSB9XCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICA8c2xvdFxuICAgICAgICAgICAgICBuYW1lPVwiaXRlbVwiXG4gICAgICAgICAgICAgIHYtYmluZD1cInsgZGlzYWJsZWQsIGl0ZW0sIGFjdGl2ZTogaXNBY3RpdmVJdGVtKGl0ZW0pIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBnZXRUZXh0KGl0ZW0pIH19XG4gICAgICAgICAgICA8L3Nsb3Q+XG4gICAgICAgICAgICA8dGVtcGxhdGUgI2FwcGVuZD5cbiAgICAgICAgICAgICAgPHNsb3RcbiAgICAgICAgICAgICAgICBuYW1lPVwiaXRlbS5hcHBlbmRcIlxuICAgICAgICAgICAgICAgIHYtYmluZD1cInsgZGlzYWJsZWQsIGl0ZW0sIGFjdGl2ZTogaXNBY3RpdmVJdGVtKGl0ZW0pIH1cIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICA8L1J1aUJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICB2LWVsc2UtaWY9XCIhaGlkZU5vRGF0YVwiXG4gICAgICAgIDpzdHlsZT1cInsgd2lkdGg6IGAke3dpZHRofXB4YCwgbWluV2lkdGg6IG1lbnVXaWR0aCB9XCJcbiAgICAgICAgOmNsYXNzPVwibWVudUNsYXNzXCJcbiAgICAgID5cbiAgICAgICAgPHNsb3QgbmFtZT1cIm5vLWRhdGFcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicC00XCI+XG4gICAgICAgICAgICB7eyBub0RhdGFUZXh0IH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2xvdD5cbiAgICAgIDwvZGl2PlxuICAgIDwvdGVtcGxhdGU+XG4gIDwvUnVpTWVudT5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBsYW5nPVwic2Nzc1wiIG1vZHVsZT5cbi53cmFwcGVyIHtcbiAgQGFwcGx5IHctZnVsbCBpbmxpbmUtZmxleCBmbGV4LWNvbDtcblxuICAuYWN0aXZhdG9yIHtcbiAgICBAYXBwbHkgcmVsYXRpdmUgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHctZnVsbDtcbiAgICBAYXBwbHkgb3V0bGluZS1ub25lIGZvY3VzOm91dGxpbmUtbm9uZSBjdXJzb3ItcG9pbnRlciBtaW4taC0xNCBwbC0zIHB5LTIgcHItOCByb3VuZGVkO1xuICAgIEBhcHBseSBtLTAgYmctd2hpdGUgdHJhbnNpdGlvbi1hbGwgdGV4dC1ib2R5LTEgdGV4dC1sZWZ0IGhvdmVyOmJvcmRlci1ibGFjaztcblxuICAgICY6bm90KC5vdXRsaW5lZCkge1xuICAgICAgQGFwcGx5IGhvdmVyOmJnLWdyYXktMTAwIGZvY3VzLXdpdGhpbjpiZy1ncmF5LTEwMDtcbiAgICB9XG5cbiAgICAmLmRlbnNlIHtcbiAgICAgIEBhcHBseSBweS0xLjUgbWluLWgtMTA7XG5cbiAgICAgIH4gLmZpZWxkc2V0IHtcbiAgICAgICAgQGFwcGx5IHB4LTI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5kaXNhYmxlZCB7XG4gICAgICBAYXBwbHkgb3BhY2l0eS02NSB0ZXh0LXJ1aS10ZXh0LWRpc2FibGVkIGFjdGl2ZTp0ZXh0LXJ1aS10ZXh0LWRpc2FibGVkIGN1cnNvci1kZWZhdWx0IHBvaW50ZXItZXZlbnRzLW5vbmU7XG4gICAgfVxuXG4gICAgJi5yZWFkb25seSB7XG4gICAgICBAYXBwbHkgb3BhY2l0eS04MCBwb2ludGVyLWV2ZW50cy1ub25lIGN1cnNvci1kZWZhdWx0IGJnLWdyYXktNTA7XG4gICAgfVxuXG4gICAgJi5vdXRsaW5lZCB7XG4gICAgICBAYXBwbHkgYm9yZGVyLW5vbmUgaG92ZXI6Ym9yZGVyLW5vbmU7XG5cbiAgICAgICYub3BlbmVkLFxuICAgICAgJjpmb2N1cyB7XG4gICAgICAgIEBhcHBseSBib3JkZXItcnVpLXByaW1hcnk7XG5cbiAgICAgICAgfiAuZmllbGRzZXQge1xuICAgICAgICAgIEBhcHBseSBib3JkZXItcnVpLXByaW1hcnkgI3shaW1wb3J0YW50fTtcbiAgICAgICAgICBAYXBwbHkgYm9yZGVyLTIgI3shaW1wb3J0YW50fTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB+IC5maWVsZHNldCB7XG4gICAgICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLWJsYWNrL1swLjIzXTtcbiAgICAgIH1cblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIH4gLmZpZWxkc2V0IHtcbiAgICAgICAgICBAYXBwbHkgYm9yZGVyLWJsYWNrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYuZGlzYWJsZWQge1xuICAgICAgICB+IC5maWVsZHNldCB7XG4gICAgICAgICAgQGFwcGx5IGJvcmRlci1kb3R0ZWQ7XG4gICAgICAgICAgQGFwcGx5IGJvcmRlci1ibGFjay9bMC4yM10gI3shaW1wb3J0YW50fTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmLndpdGgtc3VjY2VzcyB7XG4gICAgICAgIC5sYWJlbCB7XG4gICAgICAgICAgQGFwcGx5IHRleHQtcnVpLXN1Y2Nlc3MgI3shaW1wb3J0YW50fTtcbiAgICAgICAgfVxuXG4gICAgICAgIH4gLmZpZWxkc2V0IHtcbiAgICAgICAgICBAYXBwbHkgYm9yZGVyLXJ1aS1zdWNjZXNzICN7IWltcG9ydGFudH07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJi53aXRoLWVycm9yIHtcbiAgICAgICAgLmxhYmVsIHtcbiAgICAgICAgICBAYXBwbHkgdGV4dC1ydWktZXJyb3IgI3shaW1wb3J0YW50fTtcbiAgICAgICAgfVxuXG4gICAgICAgIH4gLmZpZWxkc2V0IHtcbiAgICAgICAgICBAYXBwbHkgYm9yZGVyLXJ1aS1lcnJvciAjeyFpbXBvcnRhbnR9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmxhYmVsIHtcbiAgICAgIEBhcHBseSB0ZXh0LXJ1aS10ZXh0LXNlY29uZGFyeTtcbiAgICAgIG1heC13aWR0aDogY2FsYygxMDAlIC0gMi41cmVtKTtcbiAgICB9XG5cbiAgICAubGFiZWwsXG4gICAgLnZhbHVlIHtcbiAgICAgIEBhcHBseSBibG9jayB0cnVuY2F0ZSB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi03NTtcbiAgICB9XG5cbiAgICAuY2xlYXIge1xuICAgICAgQGFwcGx5IG1sLWF1dG8gc2hyaW5rLTAgaW52aXNpYmxlO1xuICAgIH1cblxuICAgIC5pY29uIHtcbiAgICAgIEBhcHBseSB0ZXh0LXJ1aS10ZXh0IHRyYW5zaXRpb247XG5cbiAgICAgICZfX3dyYXBwZXIge1xuICAgICAgICBAYXBwbHkgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmQ7XG4gICAgICAgIEBhcHBseSBhYnNvbHV0ZSByaWdodC0zIHRvcC1weCBib3R0b20tMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmZsb2F0IHtcbiAgICAgIC5sYWJlbCB7XG4gICAgICAgIEBhcHBseSAtdHJhbnNsYXRlLXktMiB0b3AtMCB0ZXh0LXhzIHB4LTE7XG4gICAgICB9XG5cbiAgICAgIH4gLmZpZWxkc2V0IHtcbiAgICAgICAgbGVnZW5kIHtcbiAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IHYtYmluZChsYWJlbFdpdGhRdW90ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYub3BlbmVkLFxuICAgICAgJi5vcGVuZWQud2l0aC12YWx1ZSxcbiAgICAgICY6Zm9jdXMsXG4gICAgICAmOmZvY3VzLndpdGgtdmFsdWUge1xuICAgICAgICAubGFiZWwge1xuICAgICAgICAgIEBhcHBseSB0ZXh0LXJ1aS1wcmltYXJ5O1xuICAgICAgICB9XG5cbiAgICAgICAgfiAuZmllbGRzZXQge1xuICAgICAgICAgIEBhcHBseSBib3JkZXItcnVpLXByaW1hcnk7XG4gICAgICAgICAgQGFwcGx5IGJvcmRlci0yICN7IWltcG9ydGFudH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuZmllbGRzZXQge1xuICAgIEBhcHBseSBhYnNvbHV0ZSB3LWZ1bGwgbWluLXctMCBoLVtjYWxjKDEwMCUrMC41cmVtKV0gdG9wLTAgbGVmdC0wIHJvdW5kZWQgcG9pbnRlci1ldmVudHMtbm9uZSBweC0yIHRyYW5zaXRpb24tYWxsIC1tdC0yO1xuXG4gICAgbGVnZW5kIHtcbiAgICAgIEBhcHBseSBvcGFjaXR5LTAgdGV4dC14cyB0cnVuY2F0ZTtcbiAgICAgIG1heC13aWR0aDogY2FsYygxMDAlIC0gMXJlbSk7XG5cbiAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogJyAnO1xuICAgICAgfVxuXG4gICAgICAmOmFmdGVyIHtcbiAgICAgICAgQGFwcGx5IHRydW5jYXRlIG1heC13LWZ1bGwgbGVhZGluZy1bMF07XG4gICAgICAgIGNvbnRlbnQ6ICdcXDIwMEInO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4ubWVudSB7XG4gIEBhcHBseSBvdmVyZmxvdy15LWF1dG8gbWF4LWgtNjAgbWluLXctWzIuNXJlbV07XG59XG5cbi5oaWdobGlnaHRlZCB7XG4gIEBhcHBseSBiZy1ydWktZ3JleS0yMDAgI3shaW1wb3J0YW50fTtcblxuICAmLmFjdGl2ZSB7XG4gICAgQGFwcGx5IGJnLXJ1aS1ncmV5LTMwMCAjeyFpbXBvcnRhbnR9O1xuICB9XG59XG5cbjpnbG9iYWwoLmRhcmspIHtcbiAgLndyYXBwZXIge1xuICAgIC5hY3RpdmF0b3Ige1xuICAgICAgQGFwcGx5IGJnLXRyYW5zcGFyZW50IHRleHQtcnVpLXRleHQ7XG5cbiAgICAgICY6bm90KC5vdXRsaW5lZCkge1xuICAgICAgICBAYXBwbHkgaG92ZXI6Ymctd2hpdGUvMTAgZm9jdXMtd2l0aGluOmJnLXdoaXRlLzEwO1xuXG4gICAgICAgICYuZGlzYWJsZWQge1xuICAgICAgICAgIEBhcHBseSBiZy13aGl0ZS8xMDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmLnJlYWRvbmx5IHtcbiAgICAgICAgQGFwcGx5IGJnLXdoaXRlLzEwO1xuICAgICAgfVxuXG4gICAgICAmLm91dGxpbmVkIHtcbiAgICAgICAgfiAuZmllbGRzZXQge1xuICAgICAgICAgIEBhcHBseSBib3JkZXItd2hpdGUvWzAuMjNdO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5kaXNhYmxlZCB7XG4gICAgICAgICAgfiAuZmllbGRzZXQge1xuICAgICAgICAgICAgQGFwcGx5IGJvcmRlci13aGl0ZS9bMC4yM10gI3shaW1wb3J0YW50fTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICB+IC5maWVsZHNldCB7XG4gICAgICAgICAgICBAYXBwbHkgYm9yZGVyLXdoaXRlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5oaWdobGlnaHRlZCB7XG4gICAgQGFwcGx5IGJnLXJ1aS1ncmV5LTgwMCAjeyFpbXBvcnRhbnR9O1xuXG4gICAgJi5hY3RpdmUge1xuICAgICAgQGFwcGx5IGJnLXJ1aS1ncmV5LTcwMCAjeyFpbXBvcnRhbnR9O1xuICAgIH1cbiAgfVxufVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG5pbXBvcnQgUnVpSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvaWNvbnMvUnVpSWNvbi52dWUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BzIHtcbiAgbW9kZWxWYWx1ZTogc3RyaW5nIHwgbnVtYmVyO1xuICBvcHRpb25zOiBzdHJpbmdbXSB8IG51bWJlcltdO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHZhcmlhbnQ/OiAnZGVmYXVsdCcgfCAnb3V0bGluZWQnO1xufVxuXG5kZWZpbmVPcHRpb25zKHtcbiAgbmFtZTogJ1J1aVNpbXBsZVNlbGVjdCcsXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG59KTtcblxuY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgZGlzYWJsZWQ6IGZhbHNlLFxuICBuYW1lOiAnJyxcbiAgdmFyaWFudDogJ2RlZmF1bHQnLFxufSk7XG5cbmNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czx7XG4gIChlOiAndXBkYXRlOm1vZGVsLXZhbHVlJywgdmFsdWU/OiBzdHJpbmcgfCBudW1iZXIpOiB2b2lkO1xufT4oKTtcblxuY29uc3QgeyBtb2RlbFZhbHVlIH0gPSB0b1JlZnMocHJvcHMpO1xuXG5jb25zdCB2YWx1ZSA9IGNvbXB1dGVkKHtcbiAgZ2V0OiAoKSA9PiBnZXQobW9kZWxWYWx1ZSksXG4gIHNldDogdmFsdWUgPT4gZW1pdCgndXBkYXRlOm1vZGVsLXZhbHVlJywgdmFsdWUpLFxufSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiJHN0eWxlLndyYXBwZXJcIlxuICAgIHYtYmluZD1cIiRhdHRyc1wiXG4gID5cbiAgICA8c2VsZWN0XG4gICAgICB2LW1vZGVsPVwidmFsdWVcIlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAkc3R5bGUuc2VsZWN0LFxuICAgICAgICAkc3R5bGVbdmFyaWFudCA/PyAnZGVmYXVsdCddLFxuICAgICAgICB7IFskc3R5bGUuZGlzYWJsZWQgPz8gJyddOiBkaXNhYmxlZCB9LFxuICAgICAgXVwiXG4gICAgICA6bmFtZT1cIm5hbWVcIlxuICAgICAgOmRpc2FibGVkPVwiZGlzYWJsZWRcIlxuICAgID5cbiAgICAgIDxvcHRpb25cbiAgICAgICAgdi1mb3I9XCIob3B0aW9uLCBpKSBpbiBvcHRpb25zXCJcbiAgICAgICAgOmtleT1cImlcIlxuICAgICAgICA6dmFsdWU9XCJvcHRpb25cIlxuICAgICAgPlxuICAgICAgICB7eyBvcHRpb24gfX1cbiAgICAgIDwvb3B0aW9uPlxuICAgIDwvc2VsZWN0PlxuICAgIDxzcGFuIDpjbGFzcz1cIiRzdHlsZS5pY29uX193cmFwcGVyXCI+XG4gICAgICA8UnVpSWNvblxuICAgICAgICA6Y2xhc3M9XCIkc3R5bGUuaWNvblwiXG4gICAgICAgIG5hbWU9XCJsdS1jaGV2cm9uLWRvd25cIlxuICAgICAgICBzaXplPVwiMTZcIlxuICAgICAgLz5cbiAgICA8L3NwYW4+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIG1vZHVsZSBsYW5nPVwic2Nzc1wiPlxuLndyYXBwZXIge1xuICBAYXBwbHkgcmVsYXRpdmUgaW5saW5lLWZsZXg7XG5cbiAgLnNlbGVjdCB7XG4gICAgQGFwcGx5IG91dGxpbmUtbm9uZSBmb2N1czpvdXRsaW5lLW5vbmUgYXBwZWFyYW5jZS1ub25lIGN1cnNvci1wb2ludGVyIHBsLTIgcHktMSBwci04IHJvdW5kZWQ7XG4gICAgQGFwcGx5IG0tMCB3LWZ1bGwgYmctd2hpdGUgaG92ZXI6YmctZ3JheS01MCB0cmFuc2l0aW9uO1xuICAgIEBhcHBseSBkaXNhYmxlZDpiZy1ibGFjay9bLjEyXSBkaXNhYmxlZDp0ZXh0LXJ1aS10ZXh0LWRpc2FibGVkIGRpc2FibGVkOmFjdGl2ZTp0ZXh0LXJ1aS10ZXh0LWRpc2FibGVkIGRpc2FibGVkOmN1cnNvci1kZWZhdWx0O1xuXG4gICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gICAgZm9udC1zaXplOiBpbmhlcml0O1xuICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuXG4gICAgJjo6LW1zLWV4cGFuZCB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgICYub3V0bGluZWQge1xuICAgICAgQGFwcGx5IGJvcmRlciBib3JkZXItcnVpLXRleHQtZGlzYWJsZWQgZGlzYWJsZWQ6Ym9yZGVyLXRyYW5zcGFyZW50O1xuICAgIH1cbiAgfVxuXG4gIC5pY29uIHtcbiAgICBAYXBwbHkgdGV4dC1ydWktdGV4dC1kaXNhYmxlZCBwb2ludGVyLWV2ZW50cy1ub25lO1xuXG4gICAgJl9fd3JhcHBlciB7XG4gICAgICBAYXBwbHkgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmQ7XG4gICAgICBAYXBwbHkgYWJzb2x1dGUgcmlnaHQtMSB0b3AtcHggYm90dG9tLTAgcG9pbnRlci1ldmVudHMtbm9uZTtcbiAgICB9XG4gIH1cbn1cblxuOmdsb2JhbCguZGFyaykge1xuICAud3JhcHBlciB7XG4gICAgLnNlbGVjdCB7XG4gICAgICBAYXBwbHkgYmctdHJhbnNwYXJlbnQgaG92ZXI6Ymctd2hpdGUvMTAgZGlzYWJsZWQ6Ymctd2hpdGUvMTAgdGV4dC1ydWktdGV4dC1kaXNhYmxlZDtcblxuICAgICAgJi5vdXRsaW5lZCB7XG4gICAgICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLXJ1aS10ZXh0LWRpc2FibGVkO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5pY29uIHtcbiAgICAgIEBhcHBseSB0ZXh0LXJ1aS10ZXh0LWRpc2FibGVkO1xuICAgIH1cbiAgfVxufVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XG5pbXBvcnQgdHlwZSB7IENvbnRleHRDb2xvcnNUeXBlIH0gZnJvbSAnQC9jb25zdHMvY29sb3JzJztcbmltcG9ydCBSdWlGb3JtVGV4dERldGFpbCBmcm9tICdAL2NvbXBvbmVudHMvaGVscGVycy9SdWlGb3JtVGV4dERldGFpbC52dWUnO1xuaW1wb3J0IHsgZ2V0Tm9uUm9vdEF0dHJzLCBnZXRSb290QXR0cnMgfSBmcm9tICdAL3V0aWxzL2hlbHBlcnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BzIHtcbiAgbW9kZWxWYWx1ZT86IG51bWJlcjtcbiAgbWluPzogbnVtYmVyO1xuICBtYXg/OiBudW1iZXI7XG4gIHN0ZXA/OiBudW1iZXI7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgc2hvd1RodW1iTGFiZWw/OiBib29sZWFuO1xuICBzaG93VGlja3M/OiBib29sZWFuO1xuICBoaWRlVHJhY2s/OiBib29sZWFuO1xuICB0aWNrU2l6ZT86IG51bWJlcjtcbiAgdmVydGljYWw/OiBib29sZWFuO1xuICBjb2xvcj86IENvbnRleHRDb2xvcnNUeXBlO1xuICBsYWJlbD86IHN0cmluZztcbiAgaGludD86IHN0cmluZztcbiAgZXJyb3JNZXNzYWdlcz86IHN0cmluZyB8IHN0cmluZ1tdO1xuICBzdWNjZXNzTWVzc2FnZXM/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgaGlkZURldGFpbHM/OiBib29sZWFuO1xuICBzbGlkZXJDbGFzcz86IHN0cmluZztcbiAgdGlja0NsYXNzPzogc3RyaW5nO1xufVxuXG5kZWZpbmVPcHRpb25zKHtcbiAgbmFtZTogJ1J1aVNsaWRlcicsXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG59KTtcblxuY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgbW9kZWxWYWx1ZTogMCxcbiAgbWluOiAwLFxuICBtYXg6IDEwMCxcbiAgc3RlcDogMSxcbiAgZGlzYWJsZWQ6IGZhbHNlLFxuICBzaG93VGh1bWJMYWJlbDogZmFsc2UsXG4gIHNob3dUaWNrczogZmFsc2UsXG4gIGhpZGVUcmFjazogZmFsc2UsXG4gIHZlcnRpY2FsOiBmYWxzZSxcbiAgdGlja1NpemU6IDIsXG4gIGNvbG9yOiAncHJpbWFyeScsXG4gIGxhYmVsOiAnJyxcbiAgaGludDogJycsXG4gIGVycm9yTWVzc2FnZXM6ICgpID0+IFtdLFxuICBzdWNjZXNzTWVzc2FnZXM6ICgpID0+IFtdLFxuICBoaWRlRGV0YWlsczogZmFsc2UsXG4gIHNsaWRlckNsYXNzOiAnJyxcbiAgdGlja0NsYXNzOiAnJyxcbn0pO1xuXG5jb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8e1xuICAoZTogJ3VwZGF0ZTptb2RlbC12YWx1ZScsIHZhbHVlOiBudW1iZXIpOiB2b2lkO1xufT4oKTtcblxuY29uc3QgeyBtb2RlbFZhbHVlLCBtYXgsIG1pbiwgc3RlcCwgZXJyb3JNZXNzYWdlcywgc3VjY2Vzc01lc3NhZ2VzLCB2ZXJ0aWNhbCwgdGlja1NpemUgfSA9IHRvUmVmcyhwcm9wcyk7XG5cbmNvbnN0IHZNb2RlbCA9IGNvbXB1dGVkKHtcbiAgZ2V0KCkge1xuICAgIHJldHVybiBnZXQobW9kZWxWYWx1ZSk7XG4gIH0sXG4gIHNldCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgZW1pdCgndXBkYXRlOm1vZGVsLXZhbHVlJywgdmFsdWUpO1xuICB9LFxufSk7XG5cbmNvbnN0IHRpY2tzRGF0YSA9IGNvbXB1dGVkPFtudW1iZXIsIG51bWJlcl0+KCgpID0+IHtcbiAgY29uc3QgbWluVmFsID0gZ2V0KG1pbik7XG4gIGNvbnN0IHN0ZXBWYWwgPSBnZXQoc3RlcCk7XG4gIGNvbnN0IHJhbmdlID0gZ2V0KG1heCkgLSBtaW5WYWw7XG4gIGNvbnN0IHRvdGFsID0gcmFuZ2UgLyBzdGVwVmFsO1xuICBjb25zdCBjdXJyZW50ID0gTWF0aC5yb3VuZCgoZ2V0KG1vZGVsVmFsdWUpIC0gbWluVmFsKSAvIHN0ZXBWYWwpO1xuXG4gIHJldHVybiBbY3VycmVudCwgdG90YWxdO1xufSk7XG5cbmNvbnN0IHRyYWNrV2lkdGggPSBjb21wdXRlZCgoKSA9PiB7XG4gIGNvbnN0IFtjdXJyZW50LCB0b3RhbF0gPSBnZXQodGlja3NEYXRhKTtcbiAgY29uc3QgcGVyY2VudGFnZSA9IE1hdGgubWluKDEwMCwgTWF0aC5tYXgoMCwgTWF0aC5yb3VuZChjdXJyZW50IC8gdG90YWwgKiAxMDApKSk7XG4gIHJldHVybiBgJHtwZXJjZW50YWdlfSVgO1xufSk7XG5cbmNvbnN0IHsgaGFzRXJyb3IsIGhhc1N1Y2Nlc3MgfSA9IHVzZUZvcm1UZXh0RGV0YWlsKFxuICBlcnJvck1lc3NhZ2VzLFxuICBzdWNjZXNzTWVzc2FnZXMsXG4pO1xuXG5jb25zdCBvdXRlciA9IHJlZjxIVE1MRGl2RWxlbWVudD4oKTtcbmNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gdXNlRWxlbWVudEJvdW5kaW5nKG91dGVyKTtcblxuY29uc3Qgc2xpZGVyV2lkdGggPSBjb21wdXRlZCgoKSA9PiBgJHtnZXQod2lkdGgpfXB4YCk7XG5jb25zdCBzbGlkZXJIZWlnaHQgPSBjb21wdXRlZCgoKSA9PiBgJHtnZXQoaGVpZ2h0KX1weGApO1xuY29uc3QgdGlja1NpemVJblB4ID0gY29tcHV0ZWQoKCkgPT4gYCR7Z2V0KHRpY2tTaXplKX1weGApO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiB2LWJpbmQ9XCJnZXRSb290QXR0cnMoJGF0dHJzKVwiPlxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAkc3R5bGUud3JhcHBlcixcbiAgICAgICAge1xuICAgICAgICAgIFskc3R5bGUuZGlzYWJsZWQgPz8gJyddOiBkaXNhYmxlZCxcbiAgICAgICAgICBbJHN0eWxlLnZlcnRpY2FsID8/ICcnXTogdmVydGljYWwsXG4gICAgICAgICAgWyRzdHlsZVtjb2xvcl0gPz8gJyddOiBjb2xvcixcbiAgICAgICAgICBbJHN0eWxlWydoaWRlLXRyYWNrJ10gPz8gJyddOiBoaWRlVHJhY2ssXG4gICAgICAgICAgWyRzdHlsZVsnYmlnLXRpY2snXSA/PyAnJ106IHRpY2tTaXplID4gNCxcbiAgICAgICAgICBbJHN0eWxlWyd3aXRoLWVycm9yJ10gPz8gJyddOiBoYXNFcnJvcixcbiAgICAgICAgICBbJHN0eWxlWyd3aXRoLXN1Y2Nlc3MnXSA/PyAnJ106IGhhc1N1Y2Nlc3MgJiYgIWhhc0Vycm9yLFxuICAgICAgICB9LFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgICA6Y2xhc3M9XCIkc3R5bGUubGFiZWxcIlxuICAgICAgICBjbGFzcz1cInRleHQtYm9keS0xXCJcbiAgICAgID5cbiAgICAgICAge3sgbGFiZWwgfX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICByZWY9XCJvdXRlclwiXG4gICAgICAgIDpjbGFzcz1cIiRzdHlsZS5vdXRlclwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgOmNsYXNzPVwiJHN0eWxlLmlubmVyXCI+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB2LW1vZGVsPVwidk1vZGVsXCJcbiAgICAgICAgICAgIDpjbGFzcz1cIiRzdHlsZS5pbnB1dFwiXG4gICAgICAgICAgICB0eXBlPVwicmFuZ2VcIlxuICAgICAgICAgICAgOm1heD1cIm1heFwiXG4gICAgICAgICAgICA6bWluPVwibWluXCJcbiAgICAgICAgICAgIDpzdGVwPVwic3RlcFwiXG4gICAgICAgICAgICA6ZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICB2LWJpbmQ9XCJnZXROb25Sb290QXR0cnMoJGF0dHJzKVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8ZGl2IDpjbGFzcz1cIiRzdHlsZS5zbGlkZXJcIj5cbiAgICAgICAgICAgIDxkaXYgOmNsYXNzPVwiJHN0eWxlLnNsaWRlcl9faW5uZXJcIj5cbiAgICAgICAgICAgICAgPGRpdiA6Y2xhc3M9XCJbJHN0eWxlLnNsaWRlcl9fY29udGFpbmVyLCBzbGlkZXJDbGFzc11cIj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICB2LWlmPVwiIWhpZGVUcmFja1wiXG4gICAgICAgICAgICAgICAgICA6Y2xhc3M9XCIkc3R5bGUuc2xpZGVyX19jb250YWluZXJfX3RyYWNrXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIHYtaWY9XCJzaG93VGlja3MgJiYgIWRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgIDpjbGFzcz1cIiRzdHlsZS5zbGlkZXJfX3RpY2tzXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICB2LWZvcj1cImkgaW4gKHRpY2tzRGF0YVsxXSArIDEpXCJcbiAgICAgICAgICAgICAgICAgICAgOmtleT1cImlcIlxuICAgICAgICAgICAgICAgICAgICA6Y2xhc3M9XCJoaWRlVHJhY2sgPyBbdGlja0NsYXNzXSA6IHsgWyRzdHlsZS5oaWdobGlnaHRlZF06IGkgLSAxIDw9IHRpY2tzRGF0YVswXSwgW3RpY2tDbGFzc106IGkgLSAxID4gdGlja3NEYXRhWzBdIH1cIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgOmNsYXNzPVwiJHN0eWxlLnNsaWRlcl9fdGh1bWJcIiAvPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgdi1pZj1cInNob3dUaHVtYkxhYmVsICYmICFkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgOmNsYXNzPVwiJHN0eWxlLnNsaWRlcl9fdGh1bWJfbGFiZWxcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgbW9kZWxWYWx1ZSB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbGFiZWw+XG4gICAgPFJ1aUZvcm1UZXh0RGV0YWlsXG4gICAgICB2LWlmPVwiIWhpZGVEZXRhaWxzXCJcbiAgICAgIGNsYXNzPVwicHQtMVwiXG4gICAgICA6ZXJyb3ItbWVzc2FnZXM9XCJlcnJvck1lc3NhZ2VzXCJcbiAgICAgIDpzdWNjZXNzLW1lc3NhZ2VzPVwic3VjY2Vzc01lc3NhZ2VzXCJcbiAgICAgIDpoaW50PVwiaGludFwiXG4gICAgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIiBtb2R1bGU+XG5AdXNlICdAL3N0eWxlcy9jb2xvcnMuc2NzcycgYXMgYztcblxuOmdsb2JhbCguZGFyaykge1xuICAud3JhcHBlciB7XG4gICAgJi5kaXNhYmxlZCB7XG4gICAgICAuaW5uZXIge1xuICAgICAgICAuc2xpZGVyIHtcbiAgICAgICAgICAmX19jb250YWluZXIge1xuICAgICAgICAgICAgQGFwcGx5IGJnLXJ1aS1ncmV5LTgwMCAjeyFpbXBvcnRhbnR9O1xuXG4gICAgICAgICAgICAmX190cmFjayB7XG4gICAgICAgICAgICAgIEBhcHBseSBiZy1ydWktZ3JleS03MDAgI3shaW1wb3J0YW50fTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICAmX190aHVtYiB7XG4gICAgICAgICAgICBAYXBwbHkgYmctcnVpLWdyZXktNzAwICN7IWltcG9ydGFudH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmlubmVyIHtcbiAgICAgIC5zbGlkZXIge1xuICAgICAgICAmX190aWNrcyB7XG4gICAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICAmLmhpZ2hsaWdodGVkIHtcbiAgICAgICAgICAgICAgQGFwcGx5IGJnLVsjMTIxMjEyXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLndyYXBwZXIge1xuICBAYXBwbHkgZmxleCBpdGVtcy1zdGFydCBnYXAtMztcblxuICAmLmRpc2FibGVkIHtcbiAgICAubGFiZWwge1xuICAgICAgQGFwcGx5IHRleHQtcnVpLXRleHQtZGlzYWJsZWQ7XG4gICAgfVxuICAgIC5pbm5lciB7XG4gICAgICAuc2xpZGVyIHtcbiAgICAgICAgJl9fY29udGFpbmVyIHtcbiAgICAgICAgICBAYXBwbHkgYmctcnVpLWdyZXktMzAwICN7IWltcG9ydGFudH07XG5cbiAgICAgICAgICAmX190cmFjayB7XG4gICAgICAgICAgICBAYXBwbHkgYmctcnVpLWdyZXktNDAwICN7IWltcG9ydGFudH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJl9fdGh1bWIge1xuICAgICAgICAgIEBhcHBseSBiZy1ydWktZ3JleS00MDAgI3shaW1wb3J0YW50fTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBlYWNoICRjb2xvciBpbiBjLiRjb250ZXh0LWNvbG9ycyB7XG4gICAgJi4jeyRjb2xvcn0sXG4gICAgJi53aXRoLSN7JGNvbG9yfSB7XG4gICAgICAuaW5uZXIge1xuICAgICAgICAuc2xpZGVyIHtcbiAgICAgICAgICAmX19jb250YWluZXIge1xuICAgICAgICAgICAgQGFwcGx5IGJnLXJ1aS0jeyRjb2xvcn0gYmctb3BhY2l0eS00MDtcblxuICAgICAgICAgICAgJl9fdHJhY2sge1xuICAgICAgICAgICAgICBAYXBwbHkgYmctcnVpLSN7JGNvbG9yfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICAmX190aHVtYiB7XG4gICAgICAgICAgICBAYXBwbHkgYmctcnVpLSN7JGNvbG9yfTtcblxuICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICBAYXBwbHkgYmctcnVpLSN7JGNvbG9yfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICAmX190aWNrcyB7XG4gICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgQGFwcGx5IGJnLXJ1aS0jeyRjb2xvcn07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYuYmlnLXRpY2sge1xuICAgICAgICAuaW5uZXIge1xuICAgICAgICAgIC5zbGlkZXIge1xuICAgICAgICAgICAgJl9fdGlja3Mge1xuICAgICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgICBAYXBwbHkgYmctcnVpLSN7JGNvbG9yfS1saWdodGVyO1xuXG4gICAgICAgICAgICAgICAgJi5oaWdobGlnaHRlZCB7XG4gICAgICAgICAgICAgICAgICBAYXBwbHkgYmctcnVpLSN7JGNvbG9yfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAZWFjaCAkY29sb3IgaW4gKCdlcnJvcicsICdzdWNjZXNzJykge1xuICAgICYud2l0aC0jeyRjb2xvcn0ge1xuICAgICAgLmxhYmVsIHtcbiAgICAgICAgQGFwcGx5IHRleHQtcnVpLSN7JGNvbG9yfTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmLnZlcnRpY2FsIHtcbiAgICBAYXBwbHkgZmxleC1jb2wtcmV2ZXJzZSBpdGVtcy1jZW50ZXIgaC1mdWxsO1xuXG4gICAgLmxhYmVsIHtcbiAgICAgIEBhcHBseSBtYi0yIHRleHQtY2VudGVyO1xuICAgIH1cblxuICAgIC5vdXRlciB7XG4gICAgICBAYXBwbHkgbWluLXctMCBtaW4taC1bMTIwcHhdIHctODtcbiAgICB9XG5cbiAgICAuaW5uZXIge1xuICAgICAgd2lkdGg6IHYtYmluZChzbGlkZXJIZWlnaHQpO1xuICAgICAgaGVpZ2h0OiB2LWJpbmQoc2xpZGVyV2lkdGgpO1xuICAgICAgQGFwcGx5IC1yb3RhdGUtOTA7XG4gICAgICB0cmFuc2Zvcm0tb3JpZ2luOiAwIDA7XG4gICAgICAtLXR3LXRyYW5zbGF0ZS15OiB2LWJpbmQoc2xpZGVySGVpZ2h0KTtcblxuICAgICAgLnNsaWRlciB7XG4gICAgICAgICZfX3RodW1iIHtcbiAgICAgICAgICAmX2xhYmVsIHtcbiAgICAgICAgICAgIEBhcHBseSBtdC02O1xuICAgICAgICAgICAgQGFwcGx5IHJvdGF0ZS05MCB0cmFuc2xhdGUteC0wO1xuICAgICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogMCA1MCU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmxhYmVsIHtcbiAgICBAYXBwbHkgbXQtMSB0ZXh0LXJ1aS10ZXh0O1xuICB9XG5cbiAgLm91dGVyIHtcbiAgICBAYXBwbHkgcmVsYXRpdmUgaC04IGZsZXgtMSBtaW4tdy1bMTIwcHhdO1xuICB9XG5cbiAgLmlubmVyIHtcbiAgICB3aWR0aDogdi1iaW5kKHNsaWRlcldpZHRoKTtcbiAgICBoZWlnaHQ6IHYtYmluZChzbGlkZXJIZWlnaHQpO1xuICAgIEBhcHBseSByZWxhdGl2ZTtcblxuICAgIC5pbnB1dCB7XG4gICAgICBAYXBwbHkgaC1mdWxsIHctZnVsbCBvcGFjaXR5LTAgY3Vyc29yLXBvaW50ZXI7XG5cbiAgICAgICY6bm90KDpkaXNhYmxlZCkge1xuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICB+IC5zbGlkZXIge1xuICAgICAgICAgICAgLnNsaWRlciB7XG4gICAgICAgICAgICAgICZfX3RodW1iIHtcbiAgICAgICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICBAYXBwbHkgc2NhbGUtMTAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgIH4gLnNsaWRlciB7XG4gICAgICAgICAgICAuc2xpZGVyIHtcbiAgICAgICAgICAgICAgJl9fdGh1bWIge1xuICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgIEBhcHBseSBzY2FsZS0xMDAgb3BhY2l0eS0xNTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmOmFjdGl2ZSB7XG4gICAgICAgICAgfiAuc2xpZGVyIHtcbiAgICAgICAgICAgIC5zbGlkZXIge1xuICAgICAgICAgICAgICAmX190aHVtYiB7XG4gICAgICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgQGFwcGx5IHNjYWxlLTEwMCBvcGFjaXR5LTMwO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICZfbGFiZWwge1xuICAgICAgICAgICAgICAgICAgQGFwcGx5IG9wYWNpdHktMTAwIHZpc2libGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLnNsaWRlciB7XG4gICAgICBAYXBwbHkgYWJzb2x1dGUgaC1mdWxsIHctZnVsbCB0b3AtMCBweC0yIHBvaW50ZXItZXZlbnRzLW5vbmU7XG5cbiAgICAgICZfX2lubmVyIHtcbiAgICAgICAgQGFwcGx5IHJlbGF0aXZlIGgtZnVsbCB3LWZ1bGwgY3Vyc29yLXBvaW50ZXI7XG4gICAgICB9XG5cbiAgICAgICZfX2NvbnRhaW5lciB7XG4gICAgICAgIEBhcHBseSBhYnNvbHV0ZSB0b3AtMS8yIHRyYW5zZm9ybSAtdHJhbnNsYXRlLXktMS8yO1xuICAgICAgICBAYXBwbHkgdy1mdWxsIGgtMSByb3VuZGVkLWZ1bGw7XG5cbiAgICAgICAgJl9fdHJhY2sge1xuICAgICAgICAgIHdpZHRoOiB2LWJpbmQodHJhY2tXaWR0aCk7XG4gICAgICAgICAgQGFwcGx5IHRyYW5zaXRpb24tYWxsIGVhc2UtbGluZWFyIGR1cmF0aW9uLTc1IGRlbGF5LTA7XG4gICAgICAgICAgQGFwcGx5IGgtZnVsbCByb3VuZGVkLWZ1bGw7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJl9fdGlja3Mge1xuICAgICAgICBAYXBwbHkgaC1mdWxsIGFic29sdXRlIHRvcC0wO1xuICAgICAgICBAYXBwbHkgZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyO1xuICAgICAgICBtYXJnaW46IDAgY2FsYyh2LWJpbmQodGlja1NpemVJblB4KSAvIC0yKTtcbiAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSArIHYtYmluZCh0aWNrU2l6ZUluUHgpKTtcblxuICAgICAgICBzcGFuIHtcbiAgICAgICAgICBAYXBwbHkgcm91bmRlZC1mdWxsO1xuICAgICAgICAgIHdpZHRoOiBjYWxjKHYtYmluZCh0aWNrU2l6ZUluUHgpKTtcbiAgICAgICAgICBoZWlnaHQ6IGNhbGModi1iaW5kKHRpY2tTaXplSW5QeCkpO1xuXG4gICAgICAgICAgJi5oaWdobGlnaHRlZCB7XG4gICAgICAgICAgICBAYXBwbHkgYmctcnVpLWdyZXktMTAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmX190aHVtYiB7XG4gICAgICAgIEBhcHBseSBhYnNvbHV0ZSB0b3AtMS8yIHRyYW5zaXRpb24tYWxsIGVhc2UtbGluZWFyIGR1cmF0aW9uLTc1IGRlbGF5LTAgdHJhbnNmb3JtIC10cmFuc2xhdGUteS0xLzIgLXRyYW5zbGF0ZS14LTEvMjtcbiAgICAgICAgQGFwcGx5IHctMyBoLTMgcm91bmRlZC1mdWxsIHNoYWRvdy0yO1xuICAgICAgICBsZWZ0OiB2LWJpbmQodHJhY2tXaWR0aCk7XG5cbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgIEBhcHBseSB3LTggaC04IHJvdW5kZWQtZnVsbCBhYnNvbHV0ZSB0b3AtMS8yIGxlZnQtMS8yO1xuICAgICAgICAgIEBhcHBseSBvcGFjaXR5LTEwO1xuICAgICAgICAgIEBhcHBseSB0cmFuc2l0aW9uIHRyYW5zZm9ybSAtdHJhbnNsYXRlLXgtMS8yIC10cmFuc2xhdGUteS0xLzIgc2NhbGUtMDtcbiAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgfVxuXG4gICAgICAgICZfbGFiZWwge1xuICAgICAgICAgIGxlZnQ6IHYtYmluZCh0cmFja1dpZHRoKTtcbiAgICAgICAgICBAYXBwbHkgaW52aXNpYmxlIG9wYWNpdHktMDtcbiAgICAgICAgICBAYXBwbHkgYWJzb2x1dGUgLW10LTcgdHJhbnNpdGlvbi1hbGwgZWFzZS1saW5lYXIgZHVyYXRpb24tNzUgZGVsYXktMCB0cmFuc2Zvcm0gLXRyYW5zbGF0ZS14LTEvMjtcbiAgICAgICAgICBAYXBwbHkgcHgtMiBweS0xIHRleHQteHMgZm9udC1ub3JtYWw7XG4gICAgICAgICAgQGFwcGx5IGJnLXJ1aS1ncmV5LTcwMC85MCB0ZXh0LXdoaXRlIHJvdW5kZWQgc2hhZG93O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbmltcG9ydCB0eXBlIHsgQ29udGV4dENvbG9yc1R5cGUgfSBmcm9tICdAL2NvbnN0cy9jb2xvcnMnO1xuaW1wb3J0IFJ1aUZvcm1UZXh0RGV0YWlsIGZyb20gJ0AvY29tcG9uZW50cy9oZWxwZXJzL1J1aUZvcm1UZXh0RGV0YWlsLnZ1ZSc7XG5pbXBvcnQgeyBnZXROb25Sb290QXR0cnMsIGdldFJvb3RBdHRycyB9IGZyb20gJ0AvdXRpbHMvaGVscGVycyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvcHMge1xuICBtb2RlbFZhbHVlPzogYm9vbGVhbjtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBjb2xvcj86IENvbnRleHRDb2xvcnNUeXBlO1xuICBzaXplPzogJ3NtJztcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIGhpbnQ/OiBzdHJpbmc7XG4gIGVycm9yTWVzc2FnZXM/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgc3VjY2Vzc01lc3NhZ2VzPzogc3RyaW5nIHwgc3RyaW5nW107XG4gIGhpZGVEZXRhaWxzPzogYm9vbGVhbjtcbn1cblxuZGVmaW5lT3B0aW9ucyh7XG4gIG5hbWU6ICdSdWlTd2l0Y2gnLFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxufSk7XG5cbmNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gIG1vZGVsVmFsdWU6IGZhbHNlLFxuICBkaXNhYmxlZDogZmFsc2UsXG4gIGNvbG9yOiB1bmRlZmluZWQsXG4gIHNpemU6IHVuZGVmaW5lZCxcbiAgbGFiZWw6ICcnLFxuICBoaW50OiAnJyxcbiAgZXJyb3JNZXNzYWdlczogKCkgPT4gW10sXG4gIHN1Y2Nlc3NNZXNzYWdlczogKCkgPT4gW10sXG4gIGhpZGVEZXRhaWxzOiBmYWxzZSxcbn0pO1xuXG5jb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8e1xuICAoZTogJ3VwZGF0ZTptb2RlbFZhbHVlJywgbW9kZWxWYWx1ZTogYm9vbGVhbik6IHZvaWQ7XG59PigpO1xuXG5jb25zdCB7IHNpemUsIG1vZGVsVmFsdWUsIGVycm9yTWVzc2FnZXMsIHN1Y2Nlc3NNZXNzYWdlcyB9ID0gdG9SZWZzKHByb3BzKTtcblxuZnVuY3Rpb24gaW5wdXQoZXZlbnQ6IEV2ZW50KSB7XG4gIGNvbnN0IGNoZWNrZWQgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmNoZWNrZWQ7XG4gIGVtaXQoJ3VwZGF0ZTptb2RlbFZhbHVlJywgY2hlY2tlZCk7XG59XG5cbmNvbnN0IHsgaGFzRXJyb3IsIGhhc1N1Y2Nlc3MgfSA9IHVzZUZvcm1UZXh0RGV0YWlsKFxuICBlcnJvck1lc3NhZ2VzLFxuICBzdWNjZXNzTWVzc2FnZXMsXG4pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiB2LWJpbmQ9XCJnZXRSb290QXR0cnMoJGF0dHJzKVwiPlxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAkc3R5bGUud3JhcHBlcixcbiAgICAgICAgJHN0eWxlW3NpemUgPz8gJyddLFxuICAgICAgICAkc3R5bGVbY29sb3IgPz8gJyddLFxuICAgICAgICB7XG4gICAgICAgICAgWyRzdHlsZS5jaGVja2VkXTogbW9kZWxWYWx1ZSxcbiAgICAgICAgICBbJHN0eWxlLmRpc2FibGVkXTogZGlzYWJsZWQsXG4gICAgICAgICAgWyRzdHlsZVsnd2l0aC1lcnJvciddXTogaGFzRXJyb3IsXG4gICAgICAgICAgWyRzdHlsZVsnd2l0aC1zdWNjZXNzJ11dOiBoYXNTdWNjZXNzICYmICFoYXNFcnJvcixcbiAgICAgICAgfSxcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxkaXYgOmNsYXNzPVwiJHN0eWxlLmlubmVyXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIDpjaGVja2VkPVwibW9kZWxWYWx1ZVwiXG4gICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICA6Y2xhc3M9XCIkc3R5bGUuaW5wdXRcIlxuICAgICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgICAgICB2LWJpbmQ9XCJnZXROb25Sb290QXR0cnMoJGF0dHJzKVwiXG4gICAgICAgICAgQGlucHV0PVwiaW5wdXQoJGV2ZW50KVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCIkc3R5bGUudG9nZ2xlXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNwYW5cbiAgICAgICAgdi1pZj1cImxhYmVsIHx8ICRzbG90cy5kZWZhdWx0XCJcbiAgICAgICAgOmNsYXNzPVwiJHN0eWxlLmxhYmVsXCJcbiAgICAgICAgY2xhc3M9XCJ0ZXh0LWJvZHktMVwiXG4gICAgICA+XG4gICAgICAgIDxzbG90Pnt7IGxhYmVsIH19PC9zbG90PlxuICAgICAgPC9zcGFuPlxuICAgIDwvbGFiZWw+XG4gICAgPFJ1aUZvcm1UZXh0RGV0YWlsXG4gICAgICB2LWlmPVwiIWhpZGVEZXRhaWxzXCJcbiAgICAgIGNsYXNzPVwicHQtMVwiXG4gICAgICA6ZXJyb3ItbWVzc2FnZXM9XCJlcnJvck1lc3NhZ2VzXCJcbiAgICAgIDpzdWNjZXNzLW1lc3NhZ2VzPVwic3VjY2Vzc01lc3NhZ2VzXCJcbiAgICAgIDpoaW50PVwiaGludFwiXG4gICAgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIiBtb2R1bGU+XG5AdXNlICdAL3N0eWxlcy9jb2xvcnMuc2NzcycgYXMgYztcblxuLndyYXBwZXIge1xuICBAYXBwbHkgcmVsYXRpdmUgZmxleCBnYXAtMiBpdGVtcy1zdGFydCBjdXJzb3ItcG9pbnRlcjtcblxuICAmLmRpc2FibGVkIHtcbiAgICBAYXBwbHkgY3Vyc29yLW5vdC1hbGxvd2VkO1xuXG4gICAgLmlucHV0IHtcbiAgICAgIEBhcHBseSBiZy1ydWktZ3JleS0zMDAgY3Vyc29yLW5vdC1hbGxvd2VkO1xuICAgIH1cblxuICAgIC5sYWJlbCB7XG4gICAgICBAYXBwbHkgdGV4dC1ydWktdGV4dC1kaXNhYmxlZDtcbiAgICB9XG5cbiAgICAudG9nZ2xlIHtcbiAgICAgIEBhcHBseSBiZy1ydWktZ3JleS01MDA7XG4gICAgfVxuICB9XG5cbiAgJjpob3ZlciB7XG4gICAgJjpub3QoLmRpc2FibGVkKSB7XG4gICAgICAudG9nZ2xlIHtcbiAgICAgICAgQGFwcGx5IHNoYWRvdy0xO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICYuY2hlY2tlZCB7XG4gICAgJjpub3QoLmRpc2FibGVkKSB7XG4gICAgICAuaW5wdXQge1xuICAgICAgICBAYXBwbHkgYmctYmxhY2s7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLnRvZ2dsZSB7XG4gICAgICBAYXBwbHkgbGVmdC1bMjFweF07XG4gICAgfVxuICB9XG5cbiAgJi5zbSB7XG4gICAgLmlubmVyIHtcbiAgICAgIEBhcHBseSB3LTEwIGgtNSBtdC0wLjU7XG4gICAgfVxuICAgIC50b2dnbGUge1xuICAgICAgQGFwcGx5IHctNCBoLTQ7XG5cbiAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgQGFwcGx5IHctNiBoLTY7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5jaGVja2VkIHtcbiAgICAgIC50b2dnbGUge1xuICAgICAgICBAYXBwbHkgbGVmdC1bMjJweF07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJi5jaGVja2VkIHtcbiAgICAmOm5vdCguZGlzYWJsZWQpIHtcbiAgICAgIEBlYWNoICRjb2xvciBpbiBjLiRjb250ZXh0LWNvbG9ycyB7XG4gICAgICAgICYuI3skY29sb3J9IHtcbiAgICAgICAgICAuaW5wdXQge1xuICAgICAgICAgICAgQGFwcGx5IGJnLXJ1aS0jeyRjb2xvcn07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJi53aXRoLWVycm9yIHtcbiAgICAuaW5wdXQge1xuICAgICAgQGFwcGx5IGJnLXJ1aS1lcnJvciAjeyFpbXBvcnRhbnR9O1xuICAgIH1cblxuICAgIC5sYWJlbCB7XG4gICAgICBAYXBwbHkgdGV4dC1ydWktZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgJi53aXRoLXN1Y2Nlc3Mge1xuICAgIC5pbnB1dCB7XG4gICAgICBAYXBwbHkgYmctcnVpLXN1Y2Nlc3MgI3shaW1wb3J0YW50fTtcbiAgICB9XG5cbiAgICAubGFiZWwge1xuICAgICAgQGFwcGx5IHRleHQtcnVpLXN1Y2Nlc3M7XG4gICAgfVxuICB9XG5cbiAgLmlubmVyIHtcbiAgICBAYXBwbHkgcmVsYXRpdmUgdy1bNDNweF0gaC1bMjRweF0gc2hyaW5rLTA7XG4gIH1cblxuICAuaW5wdXQge1xuICAgIEBhcHBseSBhcHBlYXJhbmNlLW5vbmUgcmVsYXRpdmUgdy1mdWxsIGgtZnVsbCByb3VuZGVkLWZ1bGwgYmctcnVpLWdyZXktNDAwIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTc1IGVhc2UtaW4tb3V0IGN1cnNvci1wb2ludGVyO1xuXG4gICAgJjphY3RpdmU6bm90KDpkaXNhYmxlZCkge1xuICAgICAgKyAudG9nZ2xlIHtcbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgIEBhcHBseSBvcGFjaXR5LTIwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLnRvZ2dsZSB7XG4gICAgQGFwcGx5IGFic29sdXRlIHctNSBoLTUgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tNzUgZWFzZS1pbi1vdXQgdHJhbnNmb3JtIC10cmFuc2xhdGUteS0xLzIgdG9wLTEvMiByb3VuZGVkLWZ1bGwgcG9pbnRlci1ldmVudHMtbm9uZTtcbiAgICBAYXBwbHkgYmctd2hpdGUgbGVmdC1bMnB4XTtcblxuICAgICY6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgQGFwcGx5IGFic29sdXRlIHctMTAgaC0xMCBiZy1ibGFjayByb3VuZGVkLWZ1bGwgdG9wLTEvMiBsZWZ0LTEvMiB0cmFuc2Zvcm0gLXRyYW5zbGF0ZS14LTEvMiAtdHJhbnNsYXRlLXktMS8yIHRyYW5zaXRpb24tYWxsIGVhc2UtaW4tb3V0IG9wYWNpdHktMDtcbiAgICB9XG4gIH1cbn1cblxuOmdsb2JhbCguZGFyaykge1xuICAud3JhcHBlciB7XG4gICAgJi5kaXNhYmxlZCB7XG4gICAgICAuaW5wdXQge1xuICAgICAgICBAYXBwbHkgYmctcnVpLWdyZXktODAwO1xuICAgICAgfVxuXG4gICAgICAudG9nZ2xlIHtcbiAgICAgICAgQGFwcGx5IGJnLXJ1aS1ncmV5LTYwMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmNoZWNrZWQge1xuICAgICAgJjpub3QoLmRpc2FibGVkKSB7XG4gICAgICAgIC5pbnB1dCB7XG4gICAgICAgICAgQGFwcGx5IGJnLXdoaXRlO1xuICAgICAgICB9XG4gICAgICAgIC50b2dnbGUge1xuICAgICAgICAgIEBhcHBseSBiZy1ibGFjaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICYuY2hlY2tlZCB7XG4gICAgICAmOm5vdCguZGlzYWJsZWQpIHtcbiAgICAgICAgQGVhY2ggJGNvbG9yIGluIGMuJGNvbnRleHQtY29sb3JzIHtcbiAgICAgICAgICAmLiN7JGNvbG9yfSB7XG4gICAgICAgICAgICAuaW5wdXQge1xuICAgICAgICAgICAgICBAYXBwbHkgYmctcnVpLSN7JGNvbG9yfS9bMC41XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC50b2dnbGUge1xuICAgICAgICAgICAgICBAYXBwbHkgYmctcnVpLSN7JGNvbG9yfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLndpdGgtZXJyb3Ige1xuICAgICAgLmlucHV0IHtcbiAgICAgICAgQGFwcGx5IGJnLXJ1aS1lcnJvci9bMC41XSAjeyFpbXBvcnRhbnR9O1xuICAgICAgfVxuICAgICAgLnRvZ2dsZSB7XG4gICAgICAgIEBhcHBseSBiZy1ydWktZXJyb3IgI3shaW1wb3J0YW50fTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLndpdGgtc3VjY2VzcyB7XG4gICAgICAuaW5wdXQge1xuICAgICAgICBAYXBwbHkgYmctcnVpLXN1Y2Nlc3MvWzAuNV0gI3shaW1wb3J0YW50fTtcbiAgICAgIH1cbiAgICAgIC50b2dnbGUge1xuICAgICAgICBAYXBwbHkgYmctcnVpLXN1Y2Nlc3MgI3shaW1wb3J0YW50fTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuaW5wdXQge1xuICAgIEBhcHBseSBiZy1ydWktZ3JleS03MDA7XG4gIH1cblxuICAudG9nZ2xlIHtcbiAgICAmOmJlZm9yZSB7XG4gICAgICBAYXBwbHkgYmctd2hpdGU7XG4gICAgfVxuICB9XG59XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbmltcG9ydCB0eXBlIHsgQ29udGV4dENvbG9yc1R5cGUgfSBmcm9tICdAL2NvbnN0cy9jb2xvcnMnO1xuaW1wb3J0IHR5cGUgeyBSdWlJY29ucyB9IGZyb20gJ0AvaWNvbnMnO1xuaW1wb3J0IHsgbG9naWNBbmQsIGxvZ2ljTm90IH0gZnJvbSAnQHZ1ZXVzZS9tYXRoJztcbmltcG9ydCBSdWlCdXR0b24gZnJvbSAnQC9jb21wb25lbnRzL2J1dHRvbnMvYnV0dG9uL1J1aUJ1dHRvbi52dWUnO1xuaW1wb3J0IFJ1aUZvcm1UZXh0RGV0YWlsIGZyb20gJ0AvY29tcG9uZW50cy9oZWxwZXJzL1J1aUZvcm1UZXh0RGV0YWlsLnZ1ZSc7XG5pbXBvcnQgUnVpSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvaWNvbnMvUnVpSWNvbi52dWUnO1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSAnQC91dGlscy9hc3NlcnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BzIHtcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIHZhcmlhbnQ/OiAnZGVmYXVsdCcgfCAnZmlsbGVkJyB8ICdvdXRsaW5lZCc7XG4gIGNvbG9yPzogQ29udGV4dENvbG9yc1R5cGU7XG4gIHRleHRDb2xvcj86IENvbnRleHRDb2xvcnNUeXBlO1xuICBkZW5zZT86IGJvb2xlYW47XG4gIGhpbnQ/OiBzdHJpbmc7XG4gIGVycm9yTWVzc2FnZXM/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgc3VjY2Vzc01lc3NhZ2VzPzogc3RyaW5nIHwgc3RyaW5nW107XG4gIGhpZGVEZXRhaWxzPzogYm9vbGVhbjtcbiAgcHJlcGVuZEljb24/OiBSdWlJY29ucztcbiAgYXBwZW5kSWNvbj86IFJ1aUljb25zO1xuICByZWFkb25seT86IGJvb2xlYW47XG4gIGNsZWFyYWJsZT86IGJvb2xlYW47XG4gIG5vUmVzaXplPzogYm9vbGVhbjtcbiAgbWluUm93cz86IG51bWJlciB8IHN0cmluZztcbiAgbWF4Um93cz86IG51bWJlciB8IHN0cmluZztcbiAgcm93SGVpZ2h0PzogbnVtYmVyIHwgc3RyaW5nO1xuICBhdXRvR3Jvdz86IGJvb2xlYW47XG59XG5cbmRlZmluZU9wdGlvbnMoe1xuICBuYW1lOiAnUnVpVGV4dEFyZWEnLFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxufSk7XG5cbmNvbnN0IG1vZGVsVmFsdWUgPSBkZWZpbmVNb2RlbDxzdHJpbmc+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbmNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gIGxhYmVsOiAnJyxcbiAgcGxhY2Vob2xkZXI6ICcnLFxuICBkaXNhYmxlZDogZmFsc2UsXG4gIHZhcmlhbnQ6ICdkZWZhdWx0JyxcbiAgY29sb3I6IHVuZGVmaW5lZCxcbiAgdGV4dENvbG9yOiB1bmRlZmluZWQsXG4gIGRlbnNlOiBmYWxzZSxcbiAgaGludDogJycsXG4gIGVycm9yTWVzc2FnZXM6ICgpID0+IFtdLFxuICBzdWNjZXNzTWVzc2FnZXM6ICgpID0+IFtdLFxuICBoaWRlRGV0YWlsczogZmFsc2UsXG4gIHByZXBlbmRJY29uOiB1bmRlZmluZWQsXG4gIGFwcGVuZEljb246IHVuZGVmaW5lZCxcbiAgcmVhZG9ubHk6IGZhbHNlLFxuICBjbGVhcmFibGU6IGZhbHNlLFxuICBub1Jlc2l6ZTogZmFsc2UsXG4gIG1pblJvd3M6IDIsXG4gIHJvd0hlaWdodDogMS41LCAvLyBpbiByZW1zXG4gIG1heFJvd3M6IHVuZGVmaW5lZCxcbiAgYXV0b0dyb3c6IGZhbHNlLFxufSk7XG5cbmNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czx7XG4gIChlOiAnY2xpY2s6Y2xlYXInKTogdm9pZDtcbn0+KCk7XG5cbmNvbnN0IHtcbiAgbGFiZWwsXG4gIGF1dG9Hcm93LFxuICBjbGVhcmFibGUsXG4gIGRpc2FibGVkLFxuICByZWFkb25seSxcbiAgbWluUm93cyxcbiAgbWF4Um93cyxcbiAgbm9SZXNpemUsXG4gIHJvd0hlaWdodCxcbiAgZXJyb3JNZXNzYWdlcyxcbiAgc3VjY2Vzc01lc3NhZ2VzLFxufSA9IHRvUmVmcyhwcm9wcyk7XG5cbmNvbnN0IHByZXBlbmQgPSByZWY8SFRNTERpdkVsZW1lbnQ+KCk7XG5jb25zdCBhcHBlbmQgPSByZWY8SFRNTERpdkVsZW1lbnQ+KCk7XG5jb25zdCB0ZXh0YXJlYSA9IHJlZjxIVE1MVGV4dEFyZWFFbGVtZW50PigpO1xuY29uc3QgdGV4dGFyZWFTaXplciA9IHJlZjxIVE1MVGV4dEFyZWFFbGVtZW50PigpO1xuXG5jb25zdCBjc3MgPSB1c2VDc3NNb2R1bGUoKTtcblxuY29uc3QgbGFiZWxXaXRoUXVvdGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gIGNvbnN0IGxhYmVsVmFsID0gZ2V0KGxhYmVsKTtcbiAgaWYgKCFsYWJlbFZhbClcbiAgICByZXR1cm4gJ1wiXFxcXDIwMEJcIic7XG5cbiAgcmV0dXJuIGAnICAke2dldChsYWJlbCl9ICAnYDtcbn0pO1xuXG5jb25zdCBmaWVsZFN0eWxlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgY29uc3QgaGVpZ2h0ID0gTnVtYmVyKGdldChyb3dIZWlnaHQpKTtcbiAgY29uc3QgbWluID0gTnVtYmVyKGdldChtaW5Sb3dzKSk7XG4gIGNvbnN0IG1heCA9IE51bWJlcihnZXQobWF4Um93cykpO1xuICBjb25zdCB2YWx1ZTogeyBtaW5IZWlnaHQ6IHN0cmluZzsgbWF4SGVpZ2h0Pzogc3RyaW5nIH0gPSB7XG4gICAgbWluSGVpZ2h0OiBgJHttaW4gKiBoZWlnaHQgKyAwLjc1fXJlbWAsXG4gIH07XG4gIGlmIChtYXgpXG4gICAgdmFsdWUubWF4SGVpZ2h0ID0gYCR7bWF4ICogaGVpZ2h0ICsgMC43NX1yZW1gO1xuXG4gIHJldHVybiB2YWx1ZTtcbn0pO1xuXG5jb25zdCBwcmVwZW5kV2lkdGggPSByZWYoJzBweCcpO1xuY29uc3QgYXBwZW5kV2lkdGggPSByZWYoJzBweCcpO1xuXG51c2VSZXNpemVPYnNlcnZlcihwcmVwZW5kLCAoZW50cmllcykgPT4ge1xuICBjb25zdCBbZW50cnldID0gZW50cmllcztcbiAgYXNzZXJ0KGVudHJ5KTtcbiAgY29uc3QgeyB3aWR0aCwgbGVmdCB9ID0gZW50cnkuY29udGVudFJlY3Q7XG4gIHNldChwcmVwZW5kV2lkdGgsIGAke3dpZHRoICsgbGVmdCArIDI0fXB4YCk7XG59KTtcblxudXNlUmVzaXplT2JzZXJ2ZXIoYXBwZW5kLCAoZW50cmllcykgPT4ge1xuICBjb25zdCBbZW50cnldID0gZW50cmllcztcbiAgYXNzZXJ0KGVudHJ5KTtcbiAgY29uc3QgeyB3aWR0aCwgcmlnaHQgfSA9IGVudHJ5LmNvbnRlbnRSZWN0O1xuICBzZXQoYXBwZW5kV2lkdGgsIGAke3dpZHRoICsgcmlnaHQgKyAyNH1weGApO1xufSk7XG5cbmNvbnN0IGNvbG9yQ2xhc3MgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMuY29sb3IgPyBjc3NbcHJvcHMuY29sb3JdIDogdW5kZWZpbmVkKSk7XG5cbmNvbnN0IHNob3dDbGVhckljb24gPSBsb2dpY0FuZChcbiAgY2xlYXJhYmxlLFxuICBtb2RlbFZhbHVlLFxuICBsb2dpY05vdChkaXNhYmxlZCksXG4gIGxvZ2ljTm90KHJlYWRvbmx5KSxcbik7XG5cbmNvbnN0IHsgaGFzRXJyb3IsIGhhc1N1Y2Nlc3MsIGhhc01lc3NhZ2VzIH0gPSB1c2VGb3JtVGV4dERldGFpbChcbiAgZXJyb3JNZXNzYWdlcyxcbiAgc3VjY2Vzc01lc3NhZ2VzLFxuKTtcblxuZnVuY3Rpb24gY2xlYXJJY29uQ2xpY2tlZCgpIHtcbiAgc2V0KG1vZGVsVmFsdWUsICcnKTtcbiAgZW1pdCgnY2xpY2s6Y2xlYXInKTtcbn1cblxuZnVuY3Rpb24gY29tcHV0ZUZpZWxkSGVpZ2h0KG5ld1ZhbD86IHN0cmluZywgb2xkVmFsPzogc3RyaW5nKSB7XG4gIGlmICghZ2V0KGF1dG9Hcm93KSlcbiAgICByZXR1cm47XG5cbiAgY29uc3QgZmllbGQgPSBnZXQodGV4dGFyZWEpO1xuICBjb25zdCBmaWVsZFZhbHVlID0gbmV3VmFsID8/IGdldChtb2RlbFZhbHVlKTtcbiAgY29uc3QgZmllbGRTaXplciA9IGdldCh0ZXh0YXJlYVNpemVyKTtcbiAgaWYgKCEoZmllbGQgJiYgZmllbGRTaXplcikpXG4gICAgcmV0dXJuO1xuXG4gIG5leHRUaWNrKCgpID0+IHtcbiAgICBmaWVsZC5zdHlsZS5taW5IZWlnaHQgPSBnZXQoZmllbGRTdHlsZXMpLm1pbkhlaWdodDtcbiAgICBjb25zdCBzaXplckhlaWdodCA9IGZpZWxkU2l6ZXIuc2Nyb2xsSGVpZ2h0O1xuICAgIGNvbnN0IGZpZWxkSGVpZ2h0ID0gZmllbGQuc2Nyb2xsSGVpZ2h0O1xuICAgIGxldCBoZWlnaHQgPSBgJHtNYXRoLm1heChzaXplckhlaWdodCwgZmllbGRIZWlnaHQpIC8gMTZ9cmVtYDtcbiAgICBpZiAob2xkVmFsICYmIG9sZFZhbC5sZW5ndGggPiBmaWVsZFZhbHVlLmxlbmd0aClcbiAgICAgIGhlaWdodCA9IGAke01hdGgubWluKHNpemVySGVpZ2h0LCBmaWVsZEhlaWdodCkgLyAxNn1yZW1gO1xuXG4gICAgZmllbGQuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0O1xuICB9KTtcbn1cblxuY29uc3QgeyBmb2N1c2VkIH0gPSB1c2VGb2N1cyh0ZXh0YXJlYSk7XG5jb25zdCBmb2N1c2VkRGVib3VuY2VkID0gcmVmRGVib3VuY2VkKGZvY3VzZWQsIDUwMCk7XG5cbndhdGNoKG1vZGVsVmFsdWUsIGNvbXB1dGVGaWVsZEhlaWdodCk7XG5vbk1vdW50ZWQoY29tcHV0ZUZpZWxkSGVpZ2h0KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgdi1iaW5kPVwiZ2V0Um9vdEF0dHJzKCRhdHRycylcIj5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgIGNzcy53cmFwcGVyLFxuICAgICAgICBjb2xvckNsYXNzLFxuICAgICAgICBjc3NbdmFyaWFudCA/PyAnJ10sXG4gICAgICAgIHtcbiAgICAgICAgICBbY3NzLmRlbnNlXTogZGVuc2UsXG4gICAgICAgICAgW2Nzcy5kaXNhYmxlZF06IGRpc2FibGVkLFxuICAgICAgICAgIFtjc3NbJ25vLWxhYmVsJ11dOiAhbGFiZWwsXG4gICAgICAgICAgW2Nzc1snd2l0aC1lcnJvciddID8/ICcnXTogaGFzRXJyb3IsXG4gICAgICAgICAgW2Nzc1snd2l0aC1zdWNjZXNzJ10gPz8gJyddOiBoYXNTdWNjZXNzICYmICFoYXNFcnJvcixcbiAgICAgICAgICBbY3NzW2B0ZXh0XyR7dGV4dENvbG9yfWBdID8/ICcnXTogdGV4dENvbG9yICYmICFoYXNNZXNzYWdlcyxcbiAgICAgICAgfSxcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgdi1pZj1cIiRzbG90cy5wcmVwZW5kIHx8IHByZXBlbmRJY29uXCJcbiAgICAgICAgcmVmPVwicHJlcGVuZFwiXG4gICAgICAgIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEgc2hyaW5rLTBcIlxuICAgICAgICA6Y2xhc3M9XCJjc3MucHJlcGVuZFwiXG4gICAgICA+XG4gICAgICAgIDxzbG90XG4gICAgICAgICAgdi1pZj1cIiRzbG90cy5wcmVwZW5kXCJcbiAgICAgICAgICBuYW1lPVwicHJlcGVuZFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICB2LWVsc2UtaWY9XCJwcmVwZW5kSWNvblwiXG4gICAgICAgICAgOmNsYXNzPVwiW2Nzcy5pY29uXVwiXG4gICAgICAgID5cbiAgICAgICAgICA8UnVpSWNvbiA6bmFtZT1cInByZXBlbmRJY29uXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgOmNsYXNzPVwiY3NzLmlubmVyX3dyYXBwZXJcIj5cbiAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgdi1pZj1cImF1dG9Hcm93XCJcbiAgICAgICAgICByZWY9XCJ0ZXh0YXJlYVNpemVyXCJcbiAgICAgICAgICA6dmFsdWU9XCJtb2RlbFZhbHVlXCJcbiAgICAgICAgICA6Y2xhc3M9XCJbY3NzLnRleHRhcmVhX3NpemVyXVwiXG4gICAgICAgICAgOnN0eWxlPVwiZmllbGRTdHlsZXNcIlxuICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgZGlzYWJsZWRcbiAgICAgICAgICByZWFkb25seVxuICAgICAgICAvPlxuICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICByZWY9XCJ0ZXh0YXJlYVwiXG4gICAgICAgICAgdi1tb2RlbD1cIm1vZGVsVmFsdWVcIlxuICAgICAgICAgIDpwbGFjZWhvbGRlcj1cInBsYWNlaG9sZGVyIHx8ICcgJ1wiXG4gICAgICAgICAgOmNsYXNzPVwiW2Nzcy50ZXh0YXJlYSwgbm9SZXNpemUgPyAncmVzaXplLW5vbmUnIDogJ3Jlc2l6ZS15J11cIlxuICAgICAgICAgIDpzdHlsZT1cImZpZWxkU3R5bGVzXCJcbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXG4gICAgICAgICAgOnJlYWRvbmx5PVwicmVhZG9ubHlcIlxuICAgICAgICAgIHYtYmluZD1cImdldE5vblJvb3RBdHRycygkYXR0cnMpXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGxhYmVsIDpjbGFzcz1cImNzcy5sYWJlbFwiPlxuICAgICAgICAgIHt7IGxhYmVsIH19XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxmaWVsZHNldFxuICAgICAgICAgIHYtaWY9XCJ2YXJpYW50ID09PSAnb3V0bGluZWQnXCJcbiAgICAgICAgICA6Y2xhc3M9XCJjc3MuZmllbGRzZXRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGxlZ2VuZCAvPlxuICAgICAgICA8L2ZpZWxkc2V0PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIHYtaWY9XCIkc2xvdHMuYXBwZW5kIHx8IGFwcGVuZEljb24gfHwgc2hvd0NsZWFySWNvblwiXG4gICAgICAgIHJlZj1cImFwcGVuZFwiXG4gICAgICAgIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEgc2hyaW5rLTBcIlxuICAgICAgICA6Y2xhc3M9XCJjc3MuYXBwZW5kXCJcbiAgICAgID5cbiAgICAgICAgPFJ1aUJ1dHRvblxuICAgICAgICAgIHYtaWY9XCJzaG93Q2xlYXJJY29uXCJcbiAgICAgICAgICA6Y2xhc3M9XCJ7IGhpZGRlbjogIWZvY3VzZWREZWJvdW5jZWQgfVwiXG4gICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGljb25cbiAgICAgICAgICBjbGFzcz1cIiFwLTIgY2xlYXItYnRuXCJcbiAgICAgICAgICBjb2xvcj1cImVycm9yXCJcbiAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICBAY2xpY2suc3RvcD1cImNsZWFySWNvbkNsaWNrZWQoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8UnVpSWNvblxuICAgICAgICAgICAgbmFtZT1cImx1LXhcIlxuICAgICAgICAgICAgc2l6ZT1cIjIwXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L1J1aUJ1dHRvbj5cbiAgICAgICAgPHNsb3RcbiAgICAgICAgICB2LWlmPVwiJHNsb3RzLmFwcGVuZFwiXG4gICAgICAgICAgbmFtZT1cImFwcGVuZFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICB2LWVsc2UtaWY9XCJhcHBlbmRJY29uXCJcbiAgICAgICAgICA6Y2xhc3M9XCJbY3NzLmljb25dXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxSdWlJY29uIDpuYW1lPVwiYXBwZW5kSWNvblwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPFJ1aUZvcm1UZXh0RGV0YWlsXG4gICAgICB2LWlmPVwiIWhpZGVEZXRhaWxzXCJcbiAgICAgIGNsYXNzPVwicHQtMSBweC0zXCJcbiAgICAgIDplcnJvci1tZXNzYWdlcz1cImVycm9yTWVzc2FnZXNcIlxuICAgICAgOnN1Y2Nlc3MtbWVzc2FnZXM9XCJzdWNjZXNzTWVzc2FnZXNcIlxuICAgICAgOmhpbnQ9XCJoaW50XCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBsYW5nPVwic2Nzc1wiIG1vZHVsZT5cbkB1c2UgJ0Avc3R5bGVzL2NvbG9ycy5zY3NzJyBhcyBjO1xuXG46Z2xvYmFsKC5kYXJrKSB7XG4gIC53cmFwcGVyIHtcbiAgICAubGFiZWwge1xuICAgICAgQGFwcGx5IGJvcmRlci13aGl0ZS9bMC40Ml07XG5cbiAgICAgICY6YWZ0ZXIge1xuICAgICAgICBAYXBwbHkgYm9yZGVyLXdoaXRlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5pY29uIHtcbiAgICAgIEBhcHBseSB0ZXh0LXdoaXRlL1swLjU2XTtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIC5sYWJlbCB7XG4gICAgICAgIEBhcHBseSBib3JkZXItd2hpdGU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5maWxsZWQge1xuICAgICAgLnRleHRhcmVhIHtcbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgKyAubGFiZWwge1xuICAgICAgICAgICAgQGFwcGx5IGJnLXdoaXRlL1swLjEzXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmxhYmVsIHtcbiAgICAgICAgQGFwcGx5IGJnLXdoaXRlL1swLjA5XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLm91dGxpbmVkIHtcbiAgICAgIC5maWVsZHNldCB7XG4gICAgICAgIEBhcHBseSBib3JkZXItd2hpdGUvWzAuMjNdO1xuICAgICAgfVxuXG4gICAgICAmOm5vdCguZGlzYWJsZWQpIHtcbiAgICAgICAgLnRleHRhcmVhIHtcbiAgICAgICAgICAmOmhvdmVyLFxuICAgICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgfiAuZmllbGRzZXQge1xuICAgICAgICAgICAgICBAYXBwbHkgYm9yZGVyLXdoaXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4ud3JhcHBlciB7XG4gIEBhcHBseSByZWxhdGl2ZSB3LWZ1bGwgbWluLXctWzEyLjVyZW1dIGZsZXggaXRlbXMtc3RhcnQ7XG5cbiAgLmlubmVyX3dyYXBwZXIge1xuICAgIEBhcHBseSBmbGV4IGZsZXgtMSBwdC00O1xuICB9XG5cbiAgLmFwcGVuZCB7XG4gICAgQGFwcGx5IGFic29sdXRlIHJpZ2h0LTA7XG4gIH1cblxuICAudGV4dGFyZWEge1xuICAgIEBhcHBseSBsZWFkaW5nLTYgdGV4dC1ydWktdGV4dCB3LWZ1bGwgYmctdHJhbnNwYXJlbnQgcGItMiBwdC0wO1xuICAgIEBhcHBseSBvdXRsaW5lLTAgb3V0bGluZS1ub25lIHBsYWNlaG9sZGVyOm9wYWNpdHktMCBmb2N1czpwbGFjZWhvbGRlcjpvcGFjaXR5LTEwMDtcblxuICAgIC0teC1wYWRkaW5nOiAwLjc1cmVtO1xuICAgIHBhZGRpbmctcmlnaHQ6IGNhbGModmFyKC0teC1wYWRkaW5nKSArIHYtYmluZChhcHBlbmRXaWR0aCkpICFpbXBvcnRhbnQ7XG5cbiAgICAmX3NpemVyIHtcbiAgICAgIEBhcHBseSBpbnZpc2libGUgYWJzb2x1dGUgdG9wLTAgbGVmdC0wIHctZnVsbCBoLTAgLXotMTAgcG9pbnRlci1ldmVudHMtbm9uZSBweS0yIHB4LTMgI3shaW1wb3J0YW50fTtcblxuICAgICAgcGFkZGluZy1yaWdodDogY2FsYyh2YXIoLS14LXBhZGRpbmcpICsgdi1iaW5kKGFwcGVuZFdpZHRoKSkgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgIEBhcHBseSBvdXRsaW5lLTA7XG4gICAgICArIC5sYWJlbCB7XG4gICAgICAgIEBhcHBseSBhZnRlcjpzY2FsZS14LTEwMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOm5vdCg6cGxhY2Vob2xkZXItc2hvd24pLFxuICAgICY6YXV0b2ZpbGwsXG4gICAgJjotd2Via2l0LWF1dG9maWxsLFxuICAgICZbZGF0YS1oYXMtdmFsdWU9J3RydWUnXSxcbiAgICAmOmZvY3VzIHtcbiAgICAgICsgLmxhYmVsIHtcbiAgICAgICAgQGFwcGx5IHRleHQteHMgbGVhZGluZy10aWdodDtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiB2YXIoLS14LXBhZGRpbmcpO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS14LXBhZGRpbmcpO1xuICAgICAgfVxuICAgIH1cblxuICAgICY6ZGlzYWJsZWQge1xuICAgICAgQGFwcGx5IGJvcmRlci1kb3R0ZWQ7XG5cbiAgICAgICYsXG4gICAgICArIC5sYWJlbCB7XG4gICAgICAgIEBhcHBseSB0ZXh0LXJ1aS10ZXh0LWRpc2FibGVkO1xuICAgICAgfVxuXG4gICAgICB+IC5maWVsZHNldCB7XG4gICAgICAgIEBhcHBseSBib3JkZXItZG90dGVkO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5sYWJlbCB7XG4gICAgQGFwcGx5IGxlZnQtMCB0ZXh0LWJhc2UgbGVhZGluZy1bMy4yXSB0ZXh0LXJ1aS10ZXh0LXNlY29uZGFyeSBwb2ludGVyLWV2ZW50cy1ub25lIGFic29sdXRlIHRvcC0wIGZsZXggaC1mdWxsIHctZnVsbCBzZWxlY3Qtbm9uZSB0cmFuc2l0aW9uLWFsbCBib3JkZXItYiBib3JkZXItYmxhY2svWzAuNDJdO1xuXG4gICAgLS14LXBhZGRpbmc6IDByZW07XG5cbiAgICBwYWRkaW5nLWxlZnQ6IGNhbGModmFyKC0teC1wYWRkaW5nKSArIHYtYmluZChwcmVwZW5kV2lkdGgpKTtcbiAgICBwYWRkaW5nLXJpZ2h0OiBjYWxjKHZhcigtLXgtcGFkZGluZykgKyB2LWJpbmQoYXBwZW5kV2lkdGgpKTtcblxuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBAYXBwbHkgYWJzb2x1dGUgYm90dG9tLTAgbGVmdC0wIGJsb2NrIHctZnVsbCBzY2FsZS14LTAgYm9yZGVyLWItMiBtYi1bLTFweF0gdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMzAwIGJvcmRlci1ibGFjaztcbiAgICB9XG4gIH1cblxuICAmOmhvdmVyIHtcbiAgICAubGFiZWwge1xuICAgICAgQGFwcGx5IGJvcmRlci1ibGFjaztcbiAgICB9XG4gIH1cblxuICAuaWNvbiB7XG4gICAgQGFwcGx5IHRleHQtYmxhY2svWzAuNTRdO1xuICB9XG5cbiAgLnByZXBlbmQsXG4gIC5hcHBlbmQge1xuICAgIEBhcHBseSBtdC00IG14LTM7XG5cbiAgICAudGV4dGFyZWEge1xuICAgICAgLS14LXBhZGRpbmc6IDByZW07XG4gICAgfVxuICB9XG5cbiAgQGVhY2ggJGNvbG9yIGluIGMuJGNvbnRleHQtY29sb3JzIHtcbiAgICAmLiN7JGNvbG9yfSB7XG4gICAgICAudGV4dGFyZWEge1xuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICArIC5sYWJlbCB7XG4gICAgICAgICAgICBAYXBwbHkgdGV4dC1ydWktI3skY29sb3J9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAubGFiZWwge1xuICAgICAgICBAYXBwbHkgYWZ0ZXI6Ym9yZGVyLXJ1aS0jeyRjb2xvcn07XG4gICAgICB9XG5cbiAgICAgICYub3V0bGluZWQge1xuICAgICAgICAmOm5vdCguZGlzYWJsZWQpIHtcbiAgICAgICAgICAudGV4dGFyZWEge1xuICAgICAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICAgIH4gLmZpZWxkc2V0IHtcbiAgICAgICAgICAgICAgICBAYXBwbHkgYm9yZGVyLXJ1aS0jeyRjb2xvcn07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLnRleHRfI3skY29sb3J9LFxuICAgICYud2l0aC0jeyRjb2xvcn0ge1xuICAgICAgLnByZXBlbmQsXG4gICAgICAuYXBwZW5kLFxuICAgICAgLnRleHRhcmVhIHtcbiAgICAgICAgQGFwcGx5IHRleHQtcnVpLSN7JGNvbG9yfTtcbiAgICAgIH1cblxuICAgICAgJjpub3QoLmRpc2FibGVkKSAucHJlcGVuZCBzdmcsXG4gICAgICAmOm5vdCguZGlzYWJsZWQpIC5hcHBlbmQgc3ZnIHtcbiAgICAgICAgQGFwcGx5IHRleHQtcnVpLSN7JGNvbG9yfTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAZWFjaCAkY29sb3IgaW4gJ2Vycm9yJywgJ3N1Y2Nlc3MnIHtcbiAgICAmLndpdGgtI3skY29sb3J9IHtcbiAgICAgIC50ZXh0YXJlYSB7XG4gICAgICAgIEBhcHBseSBib3JkZXItcnVpLSN7JGNvbG9yfSAjeyFpbXBvcnRhbnR9O1xuICAgICAgfVxuXG4gICAgICAubGFiZWwge1xuICAgICAgICBAYXBwbHkgdGV4dC1ydWktI3skY29sb3J9IGFmdGVyOmJvcmRlci1ydWktI3skY29sb3J9ICN7IWltcG9ydGFudH07XG4gICAgICB9XG5cbiAgICAgIC5maWVsZHNldCB7XG4gICAgICAgIEBhcHBseSBib3JkZXItcnVpLSN7JGNvbG9yfSAjeyFpbXBvcnRhbnR9O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICYuZGVuc2Uge1xuICAgIC5pbm5lcl93cmFwcGVyIHtcbiAgICAgIEBhcHBseSBwdC0yO1xuXG4gICAgICAudGV4dGFyZWEge1xuICAgICAgICBAYXBwbHkgcHktMTtcbiAgICAgICAgJl9zaXplciB7XG4gICAgICAgICAgQGFwcGx5IHB5LTE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmLmZpbGxlZCxcbiAgJi5vdXRsaW5lZCB7XG4gICAgLnRleHRhcmVhIHtcbiAgICAgIEBhcHBseSBweC0zO1xuICAgIH1cblxuICAgIC5wcmVwZW5kIHtcbiAgICAgIEBhcHBseSBtci0wO1xuXG4gICAgICArIC5pbm5lcl93cmFwcGVyIC50ZXh0YXJlYSB7XG4gICAgICAgICY6bm90KDpwbGFjZWhvbGRlci1zaG93biksXG4gICAgICAgICY6YXV0b2ZpbGwsXG4gICAgICAgICY6LXdlYmtpdC1hdXRvZmlsbCxcbiAgICAgICAgJltkYXRhLWhhcy12YWx1ZT0ndHJ1ZSddLFxuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICArIC5sYWJlbCB7XG4gICAgICAgICAgICAtLXgtcGFkZGluZzogMC43NXJlbTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAuYXBwZW5kIHtcbiAgICAgIEBhcHBseSBtbC0wO1xuICAgIH1cblxuICAgIC5wcmVwZW5kLFxuICAgIC5hcHBlbmQge1xuICAgICAgKyAuaW5uZXJfd3JhcHBlciA+IC5sYWJlbCB7XG4gICAgICAgIC0teC1wYWRkaW5nOiAwcmVtO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5sYWJlbCB7XG4gICAgICAtLXgtcGFkZGluZzogMC43NXJlbTtcbiAgICB9XG4gIH1cblxuICAmLmZpbGxlZCB7XG4gICAgLmxhYmVsIHtcbiAgICAgIEBhcHBseSByb3VuZGVkLXQgYmctYmxhY2svWzAuMDZdO1xuICAgIH1cblxuICAgICYubm8tbGFiZWwge1xuICAgICAgLnRleHRhcmVhIHtcbiAgICAgICAgQGFwcGx5IHB5LTQ7XG4gICAgICAgICZfc2l6ZXIge1xuICAgICAgICAgIEBhcHBseSBweS00O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYuZGVuc2Uge1xuICAgICAgICAudGV4dGFyZWEge1xuICAgICAgICAgIEBhcHBseSBweS0zO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJi5vdXRsaW5lZCB7XG4gICAgLnRleHRhcmVhIHtcbiAgICAgICY6bm90KDpwbGFjZWhvbGRlci1zaG93biksXG4gICAgICAmOmF1dG9maWxsLFxuICAgICAgJjotd2Via2l0LWF1dG9maWxsLFxuICAgICAgJltkYXRhLWhhcy12YWx1ZT0ndHJ1ZSddLFxuICAgICAgJjpmb2N1cyB7XG4gICAgICAgIEBhcHBseSBib3JkZXItdC10cmFuc3BhcmVudDtcblxuICAgICAgICArIC5sYWJlbCB7XG4gICAgICAgICAgQGFwcGx5IGxlYWRpbmctWzBdIHBsLTQ7XG4gICAgICAgIH1cblxuICAgICAgICB+IC5maWVsZHNldCB7XG4gICAgICAgICAgbGVnZW5kIHtcbiAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICBjb250ZW50OiB2LWJpbmQobGFiZWxXaXRoUXVvdGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC5maWVsZHNldCB7XG4gICAgICBAYXBwbHkgYWJzb2x1dGUgdy1mdWxsIGgtW2NhbGMoMTAwJSswLjVyZW0pXSB0b3AtMCBsZWZ0LTAgcG9pbnRlci1ldmVudHMtbm9uZSByb3VuZGVkIGJvcmRlciBib3JkZXItYmxhY2svWzAuMjNdIHB4LTIgdHJhbnNpdGlvbi1hbGwgLW10LTI7XG5cbiAgICAgIGxlZ2VuZCB7XG4gICAgICAgIEBhcHBseSBvcGFjaXR5LTAgdGV4dC14cztcblxuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICBAYXBwbHkgd2hpdGVzcGFjZS1icmVhay1zcGFjZXM7XG4gICAgICAgICAgY29udGVudDogJ1xcMjAwQic7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOm5vdCguZGlzYWJsZWQpIHtcbiAgICAgIC50ZXh0YXJlYSB7XG4gICAgICAgICY6aG92ZXIsXG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgIH4gLmZpZWxkc2V0IHtcbiAgICAgICAgICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLWJsYWNrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgIH4gLmZpZWxkc2V0IHtcbiAgICAgICAgICAgIEBhcHBseSBib3JkZXItMjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAubGFiZWwge1xuICAgICAgQGFwcGx5IGJvcmRlci0wIGJvcmRlci10cmFuc3BhcmVudDtcblxuICAgICAgJjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmRlbnNlIHtcbiAgICAgIC5sYWJlbCB7XG4gICAgICAgIEBhcHBseSBsZWFkaW5nLVsyLjVdO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG5leHBvcnQgaW50ZXJmYWNlIFByb3BzIHtcbiAgcm91bmRlZD86ICdub25lJyB8ICdzbScgfCAnbWQnIHwgJ2xnJyB8ICdmdWxsJztcbn1cblxuZGVmaW5lT3B0aW9ucyh7XG4gIG5hbWU6ICdSdWlTa2VsZXRvbkxvYWRlckJhc2UnLFxufSk7XG5cbndpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICByb3VuZGVkOiB1bmRlZmluZWQsXG59KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbJHN0eWxlLnNrZWxldG9uLCB7IFtgcm91bmRlZC0ke3JvdW5kZWR9YF06ICEhcm91bmRlZCB9XVwiXG4gICAgcm9sZT1cImFsZXJ0XCJcbiAgLz5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBsYW5nPVwic2Nzc1wiIG1vZHVsZT5cbi5za2VsZXRvbiB7XG4gIEBhcHBseSBhbmltYXRlLXB1bHNlIGJnLWJsYWNrL1suMTJdO1xufVxuXG46Z2xvYmFsKC5kYXJrKSB7XG4gIC5za2VsZXRvbiB7XG4gICAgQGFwcGx5IGJnLXdoaXRlL1suMTZdO1xuICB9XG59XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbmltcG9ydCBSdWlTa2VsZXRvbkJhc2UsIHsgdHlwZSBQcm9wcyBhcyBTa2VsZXRvbkJhc2VQcm9wcyB9IGZyb20gJ0AvY29tcG9uZW50cy9sb2FkZXJzL1J1aVNrZWxldG9uQmFzZS52dWUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BzIGV4dGVuZHMgU2tlbGV0b25CYXNlUHJvcHMge1xuICB0eXBlPzpcbiAgICB8ICd0ZXh0J1xuICAgIHwgJ3BhcmFncmFwaCdcbiAgICB8ICdoZWFkaW5nJ1xuICAgIHwgJ2FydGljbGUnXG4gICAgfCAnYnV0dG9uJ1xuICAgIHwgJ2ljb24nXG4gICAgfCAnYXZhdGFyJ1xuICAgIHwgJ3RodW1ibmFpbCdcbiAgICB8ICdjdXN0b20nO1xufVxuXG5kZWZpbmVPcHRpb25zKHtcbiAgbmFtZTogJ1J1aVNrZWxldG9uTG9hZGVyJyxcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbn0pO1xuXG53aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgdHlwZTogJ3RleHQnLFxuICByb3VuZGVkOiB1bmRlZmluZWQsXG59KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxSdWlTa2VsZXRvbkJhc2VcbiAgICB2LWlmPVwiIVsncGFyYWdyYXBoJywgJ2FydGljbGUnXS5pbmNsdWRlcyh0eXBlKVwiXG4gICAgOmNsYXNzPVwiJHN0eWxlW2Bza2VsZXRvbl8ke3R5cGV9YF1cIlxuICAgIDpyb3VuZGVkPVwicm91bmRlZFwiXG4gICAgdi1iaW5kPVwiJGF0dHJzXCJcbiAgLz5cbiAgPGRpdlxuICAgIHYtZWxzZVxuICAgIDpjbGFzcz1cIiRzdHlsZVtgc2tlbGV0b25fJHt0eXBlfWBdXCJcbiAgICB2LWJpbmQ9XCIkYXR0cnNcIlxuICA+XG4gICAgPFJ1aVNrZWxldG9uQmFzZVxuICAgICAgdi1pZj1cInR5cGUgPT09ICdhcnRpY2xlJ1wiXG4gICAgICA6Y2xhc3M9XCIkc3R5bGUuc2tlbGV0b25faGVhZGluZ1wiXG4gICAgICA6cm91bmRlZD1cInJvdW5kZWRcIlxuICAgIC8+XG4gICAgPFJ1aVNrZWxldG9uQmFzZVxuICAgICAgOmNsYXNzPVwiJHN0eWxlLnNrZWxldG9uX3RleHRcIlxuICAgICAgOnJvdW5kZWQ9XCJyb3VuZGVkXCJcbiAgICAvPlxuICAgIDxSdWlTa2VsZXRvbkJhc2VcbiAgICAgIDpjbGFzcz1cIiRzdHlsZS5za2VsZXRvbl90ZXh0XCJcbiAgICAgIDpyb3VuZGVkPVwicm91bmRlZFwiXG4gICAgLz5cbiAgICA8UnVpU2tlbGV0b25CYXNlXG4gICAgICA6Y2xhc3M9XCIkc3R5bGUuc2tlbGV0b25fdGV4dFwiXG4gICAgICA6cm91bmRlZD1cInJvdW5kZWRcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgbW9kdWxlPlxuLnNrZWxldG9uIHtcbiAgJl9jdXN0b20ge1xuICAgIEBhcHBseSBib3gtYm9yZGVyO1xuICB9XG5cbiAgJl90ZXh0IHtcbiAgICBAYXBwbHkgdy1mdWxsIGgtNCByb3VuZGVkLW1kO1xuICB9XG5cbiAgJl9oZWFkaW5nIHtcbiAgICBAYXBwbHkgdy1mdWxsIGgtNiByb3VuZGVkLW1kO1xuICB9XG5cbiAgJl9idXR0b24ge1xuICAgIEBhcHBseSB3LWZ1bGwgbWF4LXctWzZyZW1dIGgtWzIuMjVyZW1dIHJvdW5kZWQtbWQ7XG4gIH1cblxuICAmX2ljb24ge1xuICAgIEBhcHBseSB3LTYgaC02IHJvdW5kZWQtZnVsbDtcbiAgfVxuXG4gICZfYXZhdGFyIHtcbiAgICBAYXBwbHkgdy0xMCBoLTEwIHJvdW5kZWQtZnVsbDtcbiAgfVxuXG4gICZfdGh1bWJuYWlsIHtcbiAgICBAYXBwbHkgdy0xNCBoLTE0IHJvdW5kZWQtc207XG4gIH1cblxuICAmX3BhcmFncmFwaCxcbiAgJl9hcnRpY2xlIHtcbiAgICBAYXBwbHkgZmxleCBmbGV4LWNvbCBnYXAtMjtcblxuICAgIC5za2VsZXRvbl9oZWFkaW5nIHtcbiAgICAgIEBhcHBseSBtYi0xO1xuICAgIH1cblxuICAgIC5za2VsZXRvbl90ZXh0IHtcbiAgICAgIEBhcHBseSBoLTM7XG5cbiAgICAgICY6bnRoLWNoaWxkKDIpIHtcbiAgICAgICAgQGFwcGx5IG1heC13LVs4MCVdO1xuICAgICAgfVxuXG4gICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBAYXBwbHkgbWF4LXctWzkwJV07XG4gICAgICB9XG4gICAgfVxuICB9XG59XG48L3N0eWxlPlxuIiwiZXhwb3J0IGRlZmF1bHQgXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNjc3ZnJTIweG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUyMHdpZHRoPSc4NiclMjBoZWlnaHQ9Jzg4JyUyMGZpbGw9J25vbmUnJTNlJTNjcGF0aCUyMGQ9J004NS42NyUyMDc0LjcyOEguMDA3djUuMzNIODUuNjd2LTUuMzN6JyUyMGZpbGw9JyUyMzRlMzUyZScvJTNlJTNjcGF0aCUyMGQ9J00yMS44NTYlMjA4Ni45NzFjLTYuMzkxJTIwMC02LjQyMS0xOC44ODIlMjAwLTE4Ljg4MnM2LjQyMSUyMDE4Ljg4MiUyMDAlMjAxOC44ODJ6bTQ1LjE5LTE3LjA1NWMtLjItLjI3OC0uNDYtLjUwNy0uNzYxLS42Ny41MTclMjAyLjE2MiUyMDEuMDM1JTIwNy4zNC0xLjAzNSUyMDcuMzQtLjA2MS0xLjY0NS0uMDMxLTYuNDI2LTEuNDkxLTcuNzk3LS45MTMuMjc0LTIuNTg3JTIwMS4wOTYtMy40OTklMjAzLjQ0MS0uMjg4LjkzNC0uNDkxJTIwMS44OTItLjYwOSUyMDIuODYzdi4wOTFjLS42MzklMjA1LjM2LjkxMyUyMDExLjgxNyUyMDQuNjU2JTIwMTEuODE3JTIwMy44OTUlMjAwJTIwNS40MTctNy4wMzUlMjA0LjU2NS0xMi40ODdhMSUyMDElMjAwJTIwMCUyMDEtLjY2OS4yNDRjLjA2MS0xLjU1My0uMzk2LTMuNzQ2LTEuMTU2LTQuODQyem0xMi4zMjUtMS44MjdjLTYuNDIxJTIwMC02LjM5MSUyMDE4Ljg4MiUyMDAlMjAxOC44ODJzNi4zOS0xOC44ODIlMjAwLTE4Ljg4MnptLTY4LjY1MiUyMDBjLTYuNDIxJTIwMC02LjM5MSUyMDE4Ljg4MiUyMDAlMjAxOC44ODJzNi40MjEtMTguODgyJTIwMC0xOC44ODJ6JyUyMGZpbGw9JyUyM2U0NTMyNScvJTNlJTNjcGF0aCUyMGQ9J00xMy4wNjIlMjA4Mi43NjhhMy4wNCUyMDMuMDQlMjAwJTIwMCUyMDAlMjAxLjk0OC0uN2MtLjclMjAyLjgwMi0yLjEzJTIwNC45MDMtNC4yNiUyMDQuOTAzLTUuNjYlMjAwLTYuMzMtMTQuODAxLTEuOTQ4LTE4LjE4Mi0xLjQzJTIwNS42MDQtLjAzJTIwMTMuOTc5JTIwNC4yNiUyMDEzLjk3OXptNjguNjIyJTIwMGMtNC4yNiUyMDAtNS42OTEtOC40MDYtNC4yNi0xMy45NzktNC4zODIlMjAzLjM4LTMuNzEzJTIwMTguMTgyJTIwMS45NDglMjAxOC4xODIlMjAyLjEzJTIwMCUyMDMuNTYtMi4xMDElMjA0LjI2LTQuOTAzYTMuMDQlMjAzLjA0JTIwMCUyMDAlMjAxLTEuOTQ4Ljd6TTYwLjI1NSUyMDcyLjE3OWMtMS43OTYlMjA1LjU0My0uNDU3JTIwMTQuODAxJTIwNC4wMTclMjAxNC44MDElMjAyLjEzJTIwMCUyMDMuNTYtMi4xMDElMjA0LjI2LTQuOTAzYTMuMjQlMjAzLjI0JTIwMCUyMDAlMjAxLTEuOTQ4LjcwMWMtNC4wNzglMjAwLTUuNTM4LTcuNjE0LTQuNDQzLTEzLjE1N2E2LjA5JTIwNi4wOSUyMDAlMjAwJTIwMC0xLjg4NyUyMDIuNTU4em0tNDAuMzUxLTMuMzgxYy00LjM4MiUyMDMuMzgxLTMuNzEzJTIwMTguMTgyJTIwMS45NDglMjAxOC4xODIlMjAyLjEzJTIwMCUyMDMuNTYtMi4xMDElMjA0LjI2LTQuOTAzYTMuMjQlMjAzLjI0JTIwMCUyMDAlMjAxLTEuOTQ4LjcwMWMtNC4yNTQtLjAwOS01LjY4NC04LjM4NC00LjI1NC0xMy45ODhsLS4wMDYuMDA5eiclMjBmaWxsPSclMjNiZTNhMjYnLyUzZSUzY3BhdGglMjBkPSdNMzcuMTI3JTIwNzMuMzU4Yy0uMzM1LS4wOTEtNC4zODItMTAuMDItNC4zODItMTAuMDJzMi44My0yLjAxJTIwMi45ODItMi42MTljLS44MjItLjgyMi0xLjYxMy0yLjQ2Ny0xLjYxMy0yLjQ2N2ExMi4zMyUyMDEyLjMzJTIwMCUyMDAlMjAwJTIwLjQ1NyUyMDIuMDFzLTEuMjE3LS41NDgtMS42MTMtMS41MjNsLTIuNjQ4JTIwMy43NzdzNC40NzMlMjAxMC4yOTQlMjA0LjQ0MyUyMDEwLjg0MmMtMS42NzQtLjM2NS0zLjIyNiUyMDEuNDAxLTMuMjI2JTIwMS40MDElMjAzLjI1Ni4zMzUlMjAyLjE5MSUyMDUuOTM5JTIwMCUyMDUuMzMlMjAxLjU1MiUyMDMuNTYzJTIwMy40MDglMjAxLjQ2MiUyMDMuNTYtNC41OTkuNy40ODclMjAzLjE2NSUyMDMuOTU5LjMwNCUyMDQuNTk5JTIwMi42NDglMjA0Ljg0MiUyMDUuNTM4LTEuMzQlMjAxLjYxMy00Ljg3MyUyMDIuMDM5LjE1MiUyMDUuMjA0JTIwMi42MTklMjAyLjc2OSUyMDQuODczLjg4MiUyMDIuMzE1JTIwMi42MTclMjAxLjA5NiUyMDIuODkxLS42MzkuNDAyLTMuMjI4LTIuNjExLTUuMzYtNS41MzgtNi4wOTF6bTI5LjMxMS01Ljc4N2MtLjgyMi0xLjE4OC0yLjAzOS0xLjE4OC0zLjMxNy0uNDI2LTIuOC4wOTEtNC41MzQtLjI3NC0xMy4xNzcuODUzJTIwMCUyMDAtLjA2MS0uNjctLjEyMi0xLjYxNC0uNzMuMDkxLTEuNDYxLjEyMi0yLjIyMS4xNTJsLjc5MSUyMDQuMDJjMi4zMTMtLjA5MSUyMDkuMjgyLTEuNzM2JTIwMTIuNjI5LTEuNzM2LTEuMjE3JTIwMS4zMS0zLjA3NCUyMDQuODQyLTEuMzM5JTIwNi4zNjUuMjc0LTQuNjI5JTIwMi44OTEtNi4wMjQlMjA0LjA3OC02LjM5NSUyMDEuMTY5JTIwMS40MTMlMjAxLjQzJTIwNi4xODIlMjAxLjQ5MSUyMDcuNzk2JTIwMi4wNjklMjAwJTIwMS42MTMtNS4xNDclMjAxLjA5Ni03LjMwOS4yNjQuMTc4LjQ5OS4zOTMuNy42NC43NjElMjAxLjA2NiUyMDEuMDI5JTIwMy4zMDclMjAxLjE1NiUyMDQuODQyJTIwMi4zNzQlMjAwJTIwLjg3Ni03LjEyNi0xLjc2NS03LjE4N3onJTIwZmlsbD0nJTIzMmQxZTFjJy8lM2UlM2NwYXRoJTIwZD0nTTYxLjg3MyUyMDU4LjIyMWMtNy4xODIlMjAzLjY1NS0xNi4zNDElMjAzLjc0Ni0xMS42NTUtNS4yOTlhMTUuOTMlMjAxNS45MyUyMDAlMjAwJTIwMC0xLjAzNSUyMDEuMjE4Yy44NTItMy4wMTUlMjAzLjQzOS01LjcyNiUyMDUuODQzLTcuNTgzLTEuMTgyLjYtMi4zMjElMjAxLjI4Mi0zLjQwOCUyMDIuMDQlMjAzLjkyNi01LjUxMiUyMDcuNzktMy44MDclMjA5LjYxNi0xMS42OTUtMS40MyUyMDUuMTE3LTcuMjEyJTIwOC41MjgtMTIuMzU1JTIwOS44OTgtNC44OTklMjAyLjgwMi0xOC4zOC0uMzk2LTIyLjczMi0xLjc2NiUyMDMuMDQzLS4yNDQlMjA0LjE2OS0uNDI2JTIwNC4xNjktLjQyNi0zLjE2NS0uOTc1LTYuNjY0LTIuODAyLTEwLjEzNC00LjA1MS4xNTIlMjAyLjQ5Ny43MyUyMDUuMDg2JTIwMS43MDQlMjA3LjA5Ni0uNTE3LTIuODAyJTIwMC00LjIwMyUyMDAtNC4yMDNzMS4wMDQlMjA1LjkzOSUyMDMuMzQ3JTIwOS4zOGMtLjkxMy0zLjY4NS0uNTE3LTQuOTM0LS41MTctNC45MzRzMS44ODclMjA3LjA5NiUyMDQuNjU2JTIwOS41MzJjLS4zNjYtMS4zMDctLjQ2OS0yLjY3My0uMzA0LTQuMDIlMjAwJTIwMCUyMC41MTclMjAxLjQwMSUyMDMuNzczJTIwNC4wMi0uODIyLTEuOTglMjAxLjEyNi0xLjI3OSUyMDIuNjQ4LjgyMnMyLjQzNSUyMDIuMjg0JTIwNi42MDQlMjAxLjQ2MmMtMy4wNDMlMjAxLjczNiUyMDEuODI2JTIwMi45NTQlMjA0Ljk2JTIwMi41NTgtMi4yNTIlMjAxLjQzMSUyMDQuODY5JTIwMS4wNjYlMjA4LjkxNi4wOTEtMi4xMyUyMDEuNjQ1JTIwNS4yNjQuOTQ0JTIwNi40ODIuMTIyLjM2NS0uMjQ0JTIwMS4xODctLjI0NCUyMDIuMS0uMDYxYTMwLjM5JTIwMzAuMzklMjAwJTIwMCUyMDAlMjAxLjAzNS0uNzMxYy0yLjI4OCUyMDEuMTU3JTIwMS42NjgtNi4yNDMtMy43MTMtMy40NzJ6JyUyMGZpbGw9JyUyM2YyZjJmMicvJTNlJTNjcGF0aCUyMGQ9J001NC40NDglMjA2NS4yODdjLTUuNjkxJTIwMi4xOTMtMTQuMzMzJTIwMS4yNzktMjEuNTQ1LTEuNjE0LS4wNDgtLjEwOS0uMDg5LS4yMjEtLjEyMi0uMzM1JTIwMCUyMDAlMjAyLjgzLTIuMDElMjAyLjk4Mi0yLjYxOS0uODIyLS44MjItMS42MTMtMi40NjctMS42MTMtMi40NjdhMTIuMzMlMjAxMi4zMyUyMDAlMjAwJTIwMCUyMC40NTYlMjAyLjAxcy0xLjIxNy0uNTQ4LTEuNjEzLTEuNTIzbC0yLjY0OCUyMDMuNzc2YzAlMjAuMDA4LjAwMy4wMTYuMDA5LjAyMnMuMDEzLjAwOS4wMjEuMDA5Yy0yLjgzLTEuNDAxLTUuMzI1LTMuMTA2LTcuMTgyLTUuMDI1LjQyNiUyMDEuMTU3Ljc5MSUyMDIuMjg0Ljk3NCUyMDIuODMyLTEuMjE3LTEuNTIzLTYuMTE3LTYuNTc4LTcuOTczLTEzLjczNWEzMS4zNyUyMDMxLjM3JTIwMCUyMDAlMjAwJTIwLjE4MyUyMDMuMzhjLTEuMTM5LTIuNzktMS44NDctNS43MzctMi4xLTguNzQxYTIxLjYlMjAyMS42JTIwMCUyMDAlMjAwLS4yMTMlMjAyLjc0MWMtLjc2MS0yLjE2Mi0xLjA5Ni01LjAyNS0xLjE1Ni03LjE1N3YtMi4wMWExMC4zNiUyMDEwLjM2JTIwMCUyMDAlMjAwLS41NDglMjAxLjQwMWMtLjAzLjEyMi0uMDYxLjIxMy0uMDkxLjMzNXYuMDNjLS4wMzUuMTE5LS4wNTYuMjQyLS4wNjEuMzY2LS4zMTUtMi4zMTgtLjI2NC00LjY3Mi4xNTItNi45NzQlMjA2LjQ1MSUyMDMuNTMzJTIwMTMuNjk0JTIwNy45NzklMjAxOC4xNjclMjAxMS4xNDcuNzkxLjU0OC03LjAyOS0yLjEwMS02LjIzOC0xLjU1MyUyMDYuNjM0JTIwNC40NzclMjAxMy41NzIlMjA4LjEzMiUyMDIwLjI2NyUyMDcuOTE4JTIwMS40ODMtLjA2JTIwMi45NTQtLjI5NiUyMDQuMzgyLS43LTQuODk5JTIwMi44MDItMTguMzgtLjM5Ni0yMi43MzItMS43NjYlMjAzLjA0My0uMjQ0JTIwNC4xNjktLjQyNiUyMDQuMTY5LS40MjYtMy4xNjUtLjk3NS02LjY2NC0yLjgwMi0xMC4xMzMtNC4wNS4xNTIlMjAyLjQ5Ny43MyUyMDUuMDg2JTIwMS43MDQlMjA3LjA5Ni0uNTE3LTIuODAyJTIwMC00LjIwMyUyMDAtNC4yMDNzMS4wMDQlMjA1LjkzOSUyMDMuMzQ3JTIwOS4zOGMtLjkxMy0zLjY4NS0uNTE3LTQuOTM0LS41MTctNC45MzRzMS44ODclMjA3LjA5NiUyMDQuNjU2JTIwOS41MzJjLS4zNjYtMS4zMDctLjQ2OS0yLjY3My0uMzA0LTQuMDIlMjAwJTIwMCUyMC41MTclMjAxLjQwMSUyMDMuNzczJTIwNC4wMi0uODIyLTEuOTglMjAxLjEyNi0xLjI3OSUyMDIuNjQ4LjgyMnMyLjQzNSUyMDIuMjg0JTIwNi42MDQlMjAxLjQ2MmMtMy4wNDMlMjAxLjczNiUyMDEuODI2JTIwMi45NTQlMjA0Ljk2JTIwMi41NTgtMi4yNTIlMjAxLjQzMSUyMDQuODY5JTIwMS4wNjYlMjA4LjkxNi4wOTEtMi4xMyUyMDEuNjQ0JTIwNS4yNjQuOTQ0JTIwNi40ODIuMTIyLjM2NS0uMjQ0JTIwMS4xODctLjI0NCUyMDIuMS0uMDYxLTMuMDEzJTIwMi4wMS02LjgxNyUyMDMuNTAyLTExLjcxNiUyMDQuMjAzLS4wNjEtLjAzMSUyMDEuMDA0LS41MTglMjAxLjU1Mi0xLjM0em0tMTQuOTcyLTExLjM2YzEuNTIyLjY0JTIwMy41LS4yMTMlMjA1LjExMi0yLjM3Ni0xLjA3MS45MTQtMy4yMDElMjAyLjEzMi01LjExMiUyMDIuMzc2em0wJTIwNC44NzNjMS4xMjYuMzY1JTIwMi42MTctLjEyMiUyMDMuODA0LTEuMzctMS4xNTkuNzE4LTIuNDU0JTIwMS4xODQtMy44MDQlMjAxLjM3ek0yNy4zMzQlMjA0Ni45MDFjLS4zNjUlMjAxLjY3NS4zNjUlMjAzLjc3NiUyMDIuMDM5JTIwNS40MjFhMTUuNTQlMjAxNS41NCUyMDAlMjAwJTIwMS0yLjAzOS01LjQyMXonJTIwZmlsbD0nJTIzYjNiM2IzJy8lM2UlM2NwYXRoJTIwZD0nTTEuMTk0JTIwMjQuNjY5QzIuNzQ2JTIwMjcuOTI4JTIwNy4zMSUyMDMxLjQlMjAxMS45MzYlMjAzNC4wOGExOS4yNyUyMDE5LjI3JTIwMCUyMDAlMjAxJTIwLjM2NS00LjA4MWMtNC41MzQtMi41MDYtOC42NDgtNC41NDctMTEuMTA3LTUuMzN6TTEyLjM5MiUyMDIuMTUzQzguNDA2LTEuMDc1JTIwNi4xMjMlMjAxLjM2MiUyMDcuMzcxJTIwNC42MiUyMDYuMTU0JTIwNC4wNDItLjIzNy0yLjk2My4wMDclMjAxLjQ1My4xNTklMjAzLjk4MSUyMDYuMDMyJTIwMTEuNTk0JTIwMTEuOTM2JTIwMTkuMTE3YzMuMjExLTEuNDU3JTIwNi41MjctMi42NjklMjA5LjkyMS0zLjYyNC0zLjY4Mi01Ljk2OS03LjU3Ny0xMS44MTctOS40NjQtMTMuMzM5eiclMjBmaWxsPSclMjMyZDFlMWMnLyUzZSUzY3BhdGglMjBkPSdNODMuNzgzJTIwNDUuNjQzYzMuNTYtMTEuMjA4LS40ODctMjkuODc2LTM1LjUxMy0yOC44NDEtMTYuODg5LTcuOTE4LTM1LjIzOSUyMDEuMDk2LTQ3LjA3NyUyMDcuODU3JTIwNS45MDQlMjAxLjkxOSUyMDIxLjY2NyUyMDExLjA4NiUyMDI5LjI3NSUyMDE2LjQ0Ni43OTEuNTQ4LTcuMDMtMi4xMDEtNi4yMzgtMS41NTMlMjA2LjYzNCUyMDQuNDc3JTIwMTMuNTcyJTIwOC4xMzIlMjAyMC4yNjclMjA3LjkxOCUyMDUuOTY0LS4xODMlMjAxNi4wMDctNC4zODUlMjAxNi45OC0xMS44NzglMjAzLjAxMy41NzklMjA0LjEzOSUyMDYuNDg3JTIwMy44MzQlMjA2Ljk0NC4zOTYtLjQyNi44NTItNC45MzQlMjAyLjk4Mi02LjAzJTIwMCUyMDAtLjg4MiUyMDIuNTI4LS42MzklMjAzLjE5OCUyMDEuMTI2LTMuNTYzJTIwOS44MjktNC4xMTIlMjA4LjQyOSUyMDQuNjkuMzk2LS4zOTYlMjAxLjEyNi0zLjAxNSUyMDEuMTI2LTMuMDE1LTEuMDM1JTIwNi41MTclMjAxLjQ5MSUyMDkuMTM2JTIwMy45NTYlMjA5LjU2MyUyMDEuMTU2LS4yMTMlMjAzLjQwOC00LjM1NSUyMDMuNjgyLTYuOTQ0YTcuNjklMjA3LjY5JTIwMCUyMDAlMjAxLTEuMDY1JTIwMS42NDV6JyUyMGZpbGw9JyUyMzRlMzUyZScvJTNlJTNjcGF0aCUyMGQ9J00xMy45NDQlMjAyMC4xYzMuMTk1LTEuOTglMjAxNC4zNjQtNi44NTIlMjAyNS45MjctNC41NjhDMjguNDklMjAxNC45MjMlMjAxMy45NDQlMjAyMC4xJTIwMTMuOTQ0JTIwMjAuMXptMzQuMzI2LTMuMjg5YTI0LjMzJTIwMjQuMzMlMjAwJTIwMCUyMDAtMi42NDgtMS4wOTYlMjA0NS4zJTIwNDUuMyUyMDAlMjAwJTIwMSUyMDkuNTU1JTIwOC40MDZjLS45NzQtMS43MDYtMi4xMy00Ljc1MS00LjE5OS03LjM0LS44ODMtLjAwOS0xLjc5NS0uMDA5LTIuNzA4LjAyMXYuMDA5eiclMjBmaWxsPSclMjMyZDFlMWMnLyUzZSUzY3BhdGglMjBkPSdNNTEuMjIyJTIwNDIuOTkzYy0xMy4wMjQlMjAxLjc2Ni0xOC42ODUtMS45OC0xOC4xNjctMi41MjglMjA1Ljg0MyUyMDMuMTA2JTIwMTYuNDMzJTIwMi40MDYlMjAxOC4xNjclMjAyLjUyOHptLTIxLjYwNi04LjgzMmMtLjUxNy41MTglMjA1LjE0MyUyMDQuMjk0JTIwMTguMTY3JTIwMi41MjgtMS43MzUtLjEyMi0xMi4yOTQuNTc5LTE4LjE2Ny0yLjUyOHptMjguMzAxJTIwMi44MDJjLjYwOS4yNDQlMjAzLjQzOS0yLjcxMS0uMjc0LTkuMTY3LjEyMi44ODMlMjAyLjQwNCUyMDYuMTIxLjI3NCUyMDkuMTY3em0yMy4zNDEtNS4xNDdjLTYuMDI1LTkuMzUtMTUuNjcyLTEwLjE3Mi0xNy44MzMtOS41NjMlMjAxMS43NCUyMDEuNTg0JTIwMTYuNDk0JTIwOC44MTElMjAxNy44MjYlMjA5LjU2M2guMDA2eiclMjBmaWxsPSclMjM2ZDRkNDInLyUzZSUzY3BhdGglMjBkPSdNODAuMjg0JTIwNTIuNTg3Yy41NzgtLjY0JTIwMi4wMDgtMS4xODglMjAyLjU4Ny0xLjQ2Mi0uMzM1LS4wMy0xLjMwOS4yNDQtMi4yNTIuNTQ4bC41NDgtLjczMWMtMi40OTUtLjQyNi00Ljk5MS0zLjA0Ni0zLjk1Ni05LjU2MyUyMDAlMjAwLS43NjElMjAyLjYxOS0xLjEyNiUyMDMuMDE1JTIwMS40LTguODMyLTcuMzAzLTguMjUzLTguNDI5LTQuNjktLjI0My0uNjcuNjM5LTMuMTk4LjYzOS0zLjE5OC0yLjEzJTIwMS4wOTYtMi41ODclMjA1LjYwNC0yLjk4MiUyMDYuMDMuMzA0LS40NTctLjg1Mi02LjM2NS0zLjgzNC02Ljk0NC0uMDYyLjQzMi0uMTU0Ljg2LS4yNzQlMjAxLjI3OS0xLjgyNiUyMDcuODg4LTUuNjkxJTIwNi4xODItOS42MTYlMjAxMS42OTVhMjguNDclMjAyOC40NyUyMDAlMjAwJTIwMSUyMDMuNDA4LTIuMDQxYy0yLjQzNCUyMDEuODU4LTQuOTkxJTIwNC41NjgtNS44NDMlMjA3LjU4My4zMjQtLjQyMy42Ny0uODMlMjAxLjAzNS0xLjIxOC00LjY1NiUyMDkuMDQ1JTIwNC40NzMlMjA4Ljk1NCUyMDExLjY1NSUyMDUuMjk5JTIwNS40MTctMi43NzElMjAxLjQlMjA0LjY5JTIwMy43MTMlMjAzLjQ0MSUyMDMuMzE3LTEuNzY2JTIwNC44MDgtNC41OTklMjA1LjY5MS02LjE4MmwtMS4wNjUlMjAyLjI1NGMyLjEzLTEuNjE0JTIwMi45MjEtNC40MTYlMjA0LjYyNi00Ljc1MS0uNTE3LTEuMjE4LS43NjEtMi4xNjItLjM5Ni0yLjQwNi41NDgtLjMzNSUyMDIuMjgyJTIwMS4zNCUyMDMuMDEzJTIwMS43MzYuMTgzLS4xMjIuMTUyLS41MTguMTUyLS41MTguMzYyLjUzNS44MjcuOTklMjAxLjM2OSUyMDEuMzQuMTUyLS4zNjUuMzY1LS4xNTIuMzk2LS4xNTJhMy4zMSUyMDMuMzElMjAwJTIwMCUyMDElMjAxLjc5NS41NzljLS4yMzUtLjM1Ni0uNTIyLS42NzQtLjg1Mi0uOTQ0eiclMjBmaWxsPSclMjNlNDUzMjUnLyUzZSUzY3BhdGglMjBkPSdNNzQuODM3JTIwMzkuODU3Yy0yLjI1Mi0yLjEzMi00Ljg5OS0xLjI3OS02LjA1Ni4xODMuOTA3LTIuNzExJTIwNC44MzktMy4wNzYlMjA2LjA1Ni0uMTgzem0tNS4wMjElMjAxNS4zNDljLS4zNjUlMjAxLjAzNS0zLjA3MyUyMDQuMjY0LTQuODk5JTIwNC40NDYuODE2LjQ1NyUyMDQuNzQ3LTEuNzA2JTIwNC44OTktNC40NDZ6bS0xMS40NDItNS44MTdjLS43My43MzEtMi4zNDMlMjAxLjkxOS0zLjg2NSUyMDIuMTAxLjQ1Ni4yODMlMjAyLjU1Ni0uMjQ0JTIwMy44NjUtMi4xMDF6bS01Ljk5NSUyMDUuNjA0Yy0uMzk2LjUxOC0xLjMwOSUyMDEuMjc5LTIuMzc0JTIwMS4xODguMzY1LjMzNSUyMDEuNzY1LjI0NCUyMDIuMzc0LTEuMTg4em03LjM2NC0xLjA2NmMtLjM5Ni41MTgtMS4zMDklMjAxLjI3OS0yLjM3NCUyMDEuMTg4LjM2NS4zMzUlMjAxLjc2NS4yNDQlMjAyLjM3NC0xLjE4OHptNy44NTEtLjM5NmMtLjM5Ni41MTgtMS4zMDklMjAxLjI3OS0yLjM3NCUyMDEuMTg4LjM2NS4zMzUlMjAxLjc2NS4yNDQlMjAyLjM3NC0xLjE4OHptLTcuMDklMjAyLjQ5N2MtLjUxNyUyMDEuMDY2LTUuMjM0JTIwMy45OS03LjMzNCUyMDMuMjU5Ljg1Mi45NzQlMjA2Ljg0NyUyMDAlMjA3LjMzNC0zLjI1di0uMDA5eiclMjBmaWxsPSclMjNiZTNhMjYnLyUzZSUzY3BhdGglMjBkPSdNNzQuNTkzJTIwNDQuOTQzYy0xLjcwNCUyMDEuMDM1LTMuNzQzJTIwMS4xMjctNS4yMzQtLjA5MS4zMDQuOTc0JTIwMy4yODclMjAyLjE5MyUyMDUuMjM0LjA5MXonJTIwZmlsbD0nJTIzZWQ2ZDIzJy8lM2UlM2NwYXRoJTIwZD0nTTEzLjQ4OCUyMDE5LjQ5MUM3LjA5NyUyMDEyLjA5MS45NSUyMDIuMjg0Ljk1Ljg1M2MwLS4wMDklMjA0LjkzJTIwNy45MDklMjAxMi41MzglMjAxOC42Mzh6bTMuMTk1LTQuODQyYy0uMDYxLS45MTQtNC4yMy03LjAwNS04LjM5OS0xMS41NDIlMjA1LjA4MiUyMDYuNjM5JTIwOC4zOTklMjAxMS41MzMlMjA4LjM5OSUyMDExLjUzM3YuMDA5eiclMjBmaWxsPSclMjM0ZTM1MmUnLyUzZSUzY3BhdGglMjBkPSdNNzguOTc1JTIwNTMuMTM1YTQuMTElMjA0LjExJTIwMCUyMDAlMjAxLTEuMzY5LTEuMzRzLjAzLjM5Ni0uMTUyLjUxOGMtLjczLS4zOTYtMi40NjUtMi4wNzEtMy4wMTMtMS43MzYtLjM2NS4yNDQtLjEyMiUyMDEuMTg4LjM5NiUyMDIuNDA2bDIuNzA4JTIwNS43NTZjLjI3NC42NCUyMDEuOTc4JTIwMi44NjMlMjAxLjgyNi01Ljc1Ni0uMDMtLjAzLS4yNS0uMjQ0LS4zOTYuMTUyem0tNy4xNTEtNy42NDRhMy4zNSUyMDMuMzUlMjAwJTIwMSUyMDAlMjAwLTYuNyUyMDMuMzUlMjAzLjM1JTIwMCUyMDElMjAwJTIwMCUyMDYuN3onJTIwZmlsbD0nJTIzMDAwJy8lM2UlM2NwYXRoJTIwZD0nTTcyLjg4OSUyMDQwLjIwMWMuMDYxLjQyNi0uNDI2Ljg1My0xLjA2NS45NDRzLTEuMjQ4LS4xODMtMS4zMDgtLjU3OS40MjYtLjg1MyUyMDEuMDY1LS45NDQlMjAxLjIxNy4xNDMlMjAxLjMwOC41Nzl6bS45NDMlMjAzLjcxNWEyLjM4JTIwMi4zOCUyMDAlMjAwJTIwMS0xLjQ5MS44MjJjLS4wNjEtLjA2MS0uMTUyLS4wNjEtLjI3NC0uMDYxLS4wNzkuMDA1LS4xNTUuMDM3LS4yMTMuMDkxLS42NDguMDE0LTEuMjg4LS4xNDQtMS44NTYtLjQ1N2EyLjM4JTIwMi4zOCUyMDAlMjAwJTIwMCUyMDEuODI2LjcwMWMuMDg3LjA2Ni4xOTUuMDk5LjMwNC4wOTEuMTIyLS4wMy4yMTMtLjA2MS4yNDMtLjE1Mi43OTEtLjE4MyUyMDEuNDMtLjU4OCUyMDEuNDYxLTEuMDQ1di4wMDl6JyUyMGZpbGw9JyUyM2ZmZicvJTNlJTNjL3N2ZyUzZVwiIiwiPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IGlzQ2xpZW50IH0gZnJvbSAnQHZ1ZXVzZS9zaGFyZWQnO1xuaW1wb3J0IHsgdXNlU1NSQ29udGV4dCB9IGZyb20gJ3Z1ZSc7XG5pbXBvcnQgZmFsbGJhY2sgZnJvbSAnQC9jb21wb25lbnRzL2xvZ29zL2xvZ28uc3ZnJztcbmltcG9ydCB7IHRyYW5zZm9ybUNhc2UgfSBmcm9tICdAL3V0aWxzL2hlbHBlcnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEV4dGVybmFsTGlua3Mge1xuICBkcmF3ZXI/OiBzdHJpbmc7XG4gIGFwcD86IHN0cmluZztcbiAgd2Vic2l0ZT86IHN0cmluZztcbiAgYWJvdXQ/OiBzdHJpbmc7XG4gIGVtcHR5U2NyZWVuPzogc3RyaW5nO1xuICBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvcHMge1xuICB0ZXh0PzogYm9vbGVhbjtcbiAgYnJhbmNoPzogJ2RldmVsb3AnIHwgJ21haW4nIHwgc3RyaW5nO1xuICBsb2dvPzoga2V5b2YgRXh0ZXJuYWxMaW5rcztcbiAgc2l6ZT86IHN0cmluZyB8IG51bWJlcjsgLy8gaW4gcmVtc1xuICB1bmlxdWVLZXk/OiBzdHJpbmcgfCBudW1iZXI7XG59XG5cbmRlZmluZU9wdGlvbnMoe1xuICBuYW1lOiAnUnVpTG9nbycsXG59KTtcblxuY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgdGV4dDogZmFsc2UsXG4gIGJyYW5jaDogJ2RldmVsb3AnLFxuICBsb2dvOiB1bmRlZmluZWQsXG4gIHNpemU6IDMsXG4gIHVuaXF1ZUtleTogdW5kZWZpbmVkLFxufSk7XG5cbmNvbnN0IGN1c3RvbUltYWdlUmVmID0gcmVmPEhUTUxJbWFnZUVsZW1lbnQ+KCk7XG5jb25zdCBlcnJvciA9IHJlZihmYWxzZSk7XG5jb25zdCBkZWNvZGluZyA9IHJlZighIXByb3BzLmxvZ28pO1xuY29uc3QgcGVuZGluZ1NvdXJjZXMgPSByZWYoZmFsc2UpO1xuY29uc3QgYXBwTmFtZSA9ICdyb3RraSc7XG5jb25zdCBlbXB0eUxpbmtzOiBFeHRlcm5hbExpbmtzID0ge1xuICBhcHA6IHVuZGVmaW5lZCxcbiAgd2Vic2l0ZTogdW5kZWZpbmVkLFxuICBhYm91dDogdW5kZWZpbmVkLFxuICBlbXB0eVNjcmVlbjogdW5kZWZpbmVkLFxufTtcbmNvbnN0IGV4dGVybmFsU291cmNlcyA9IHJlZihlbXB0eUxpbmtzKTtcblxuY29uc3QgZXh0ZXJuYWxTb3VyY2UgPSBjb21wdXRlZCgoKSA9PiB7XG4gIGNvbnN0IHNvdXJjZXMgPSBnZXQoZXh0ZXJuYWxTb3VyY2VzKTtcbiAgY29uc3QgeyBsb2dvIH0gPSBwcm9wcztcbiAgaWYgKCFsb2dvIHx8ICFzb3VyY2VzW2xvZ29dKSB7XG4gICAgc2V0KGRlY29kaW5nLCBnZXQocGVuZGluZ1NvdXJjZXMpKTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgY29uc3QgdXJsID0gYGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9yb3RraS9kYXRhLyR7cHJvcHMuYnJhbmNofS9hc3NldHMvaWNvbnMvJHtzb3VyY2VzW2xvZ29dfWA7XG5cbiAgaWYgKHByb3BzLnVuaXF1ZUtleSAhPT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiBgJHt1cmx9P2tleT0ke3Byb3BzLnVuaXF1ZUtleX1gO1xuXG4gIHJldHVybiB1cmw7XG59KTtcblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hTb3VyY2VzKCkge1xuICBpZiAoIXByb3BzLmxvZ28pXG4gICAgcmV0dXJuO1xuXG4gIHNldChwZW5kaW5nU291cmNlcywgdHJ1ZSk7XG4gIHRyeSB7XG4gICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCB1c2VGZXRjaDxzdHJpbmc+KFxuICAgICAgYGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9yb3RraS9kYXRhLyR7cHJvcHMuYnJhbmNofS9jb25zdGFudHMvYXNzZXQtbWFwcGluZ3MuanNvbmAsXG4gICAgKTtcblxuICAgIGNvbnN0IGxpbmtzID0gdHJhbnNmb3JtQ2FzZShKU09OLnBhcnNlKGdldChkYXRhKSA/PyAnbnVsbCcpPy5sb2dvLCAnY2FtZWxDYXNlJyk7XG5cbiAgICBpZiAobGlua3MpXG4gICAgICBzZXQoZXh0ZXJuYWxTb3VyY2VzLCBsaW5rcyk7XG4gIH1cbiAgY2F0Y2gge31cbiAgc2V0KHBlbmRpbmdTb3VyY2VzLCBmYWxzZSk7XG59XG5cbndhdGNoKFxuICAoKSA9PiBnZXQoY3VzdG9tSW1hZ2VSZWYpPy5jb21wbGV0ZSxcbiAgKGNvbXBsZXRlKSA9PiB7XG4gICAgaWYgKGNvbXBsZXRlKSB7XG4gICAgICBnZXQoY3VzdG9tSW1hZ2VSZWYpXG4gICAgICAgID8uZGVjb2RlKClcbiAgICAgICAgLmNhdGNoKCgpID0+IHNldChlcnJvciwgdHJ1ZSkpXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHNldChkZWNvZGluZywgZmFsc2UpKTtcbiAgICB9XG4gIH0sXG4pO1xuXG53YXRjaEVmZmVjdChmZXRjaFNvdXJjZXMpO1xuXG5pZiAoIWlzQ2xpZW50KVxuICB1c2VTU1JDb250ZXh0KCk7XG5cbm9uU2VydmVyUHJlZmV0Y2goYXN5bmMgKCkgPT4ge1xuICBhd2FpdCBmZXRjaFNvdXJjZXMoKTtcbn0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZ2FwLXgtNCBmbGV4IGl0ZW1zLWNlbnRlciByZWxhdGl2ZVwiXG4gICAgOnN0eWxlPVwieyBoZWlnaHQ6IGAke3NpemV9cmVtYCB9XCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIHYtaWY9XCIhZXh0ZXJuYWxTb3VyY2UgJiYgZGVjb2RpbmdcIlxuICAgICAgY2xhc3M9XCJoLWZ1bGwgdHJhbnNpdGlvbiBkZWxheS0wIG9wYWNpdHktMFwiXG4gICAgICA6c3R5bGU9XCJ7IHdpZHRoOiBgJHtzaXplfXJlbWAgfVwiXG4gICAgLz5cbiAgICA8aW1nXG4gICAgICB2LWVsc2UtaWY9XCJleHRlcm5hbFNvdXJjZSAmJiAoIWVycm9yIHx8IGRlY29kaW5nKVwiXG4gICAgICByZWY9XCJjdXN0b21JbWFnZVJlZlwiXG4gICAgICA6c3JjPVwiZXh0ZXJuYWxTb3VyY2VcIlxuICAgICAgOmFsdD1cImFwcE5hbWVcIlxuICAgICAgZGF0YS1pbWFnZT1cImN1c3RvbVwiXG4gICAgICBjbGFzcz1cImgtZnVsbCB0cmFuc2l0aW9uIGVhc2Utb3V0IGR1cmF0aW9uLTIwMCBkZWxheS0xMDBcIlxuICAgICAgOnN0eWxlPVwieyB3aWR0aDogYCR7c2l6ZX1yZW1gIH1cIlxuICAgICAgQGVycm9yPVwiZXJyb3IgPSB0cnVlXCJcbiAgICAvPlxuICAgIDxpbWdcbiAgICAgIHYtZWxzZVxuICAgICAgOnNyYz1cImZhbGxiYWNrXCJcbiAgICAgIDphbHQ9XCJhcHBOYW1lXCJcbiAgICAgIGRhdGEtaW1hZ2U9XCJmYWxsYmFja1wiXG4gICAgICBjbGFzcz1cImgtZnVsbCB0cmFuc2l0aW9uIGVhc2Utb3V0IGR1cmF0aW9uLTIwMCBkZWxheS0xMDBcIlxuICAgICAgOnN0eWxlPVwieyB3aWR0aDogYCR7c2l6ZX1yZW1gIH1cIlxuICAgIC8+XG4gICAgPGRpdlxuICAgICAgdi1pZj1cInRleHRcIlxuICAgICAgY2xhc3M9XCJ0ZXh0LWg0IHRleHQtcnVpLXByaW1hcnkgZGFyazp0ZXh0LXdoaXRlXCJcbiAgICA+XG4gICAgICB7eyBhcHBOYW1lIH19XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbiIsIjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XG5pbXBvcnQgdHlwZSB7IENvbnRleHRDb2xvcnNUeXBlIH0gZnJvbSAnQC9jb25zdHMvY29sb3JzJztcbmltcG9ydCB0eXBlIHsgUnVpSWNvbnMgfSBmcm9tICdAL2ljb25zJztcbmltcG9ydCB7IGxvZ2ljQW5kLCBsb2dpY09yIH0gZnJvbSAnQHZ1ZXVzZS9tYXRoJztcbmltcG9ydCBSdWlJY29uIGZyb20gJ0AvY29tcG9uZW50cy9pY29ucy9SdWlJY29uLnZ1ZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvcHMge1xuICB0ZXh0Pzogc3RyaW5nIHwgbnVsbDtcbiAgaWNvbj86IFJ1aUljb25zIHwgbnVsbDtcbiAgbW9kZWxWYWx1ZT86IGJvb2xlYW47XG4gIGRvdD86IGJvb2xlYW47XG4gIGxlZnQ/OiBib29sZWFuO1xuICBvZmZzZXRYPzogc3RyaW5nIHwgbnVtYmVyO1xuICBvZmZzZXRZPzogc3RyaW5nIHwgbnVtYmVyO1xuICBwbGFjZW1lbnQ/OiAndG9wJyB8ICdjZW50ZXInIHwgJ2JvdHRvbSc7XG4gIHNpemU/OiAnc20nIHwgJ21kJyB8ICdsZyc7XG4gIHJvdW5kZWQ/OiAnc20nIHwgJ21kJyB8ICdsZycgfCAnZnVsbCc7XG4gIGNvbG9yPzogJ2RlZmF1bHQnIHwgQ29udGV4dENvbG9yc1R5cGU7XG59XG5cbmRlZmluZU9wdGlvbnMoe1xuICBuYW1lOiAnUnVpQmFkZ2UnLFxufSk7XG5cbmNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gIHRleHQ6IG51bGwsXG4gIGljb246IG51bGwsXG4gIG1vZGVsVmFsdWU6IHRydWUsXG4gIGRvdDogZmFsc2UsXG4gIHBsYWNlbWVudDogJ3RvcCcsXG4gIGxlZnQ6IGZhbHNlLFxuICBzaXplOiAnbWQnLFxuICByb3VuZGVkOiAnZnVsbCcsXG4gIGNvbG9yOiAncHJpbWFyeScsXG4gIG9mZnNldFg6IDAsXG4gIG9mZnNldFk6IDAsXG59KTtcblxuY29uc3Qgc2xvdHMgPSB1c2VTbG90cygpO1xuXG5jb25zdCB7IG1vZGVsVmFsdWUsIG9mZnNldFgsIG9mZnNldFksIGljb24sIHRleHQgfSA9IHRvUmVmcyhwcm9wcyk7XG5cbmNvbnN0IGhhc0ljb24gPSBsb2dpY09yKGljb24sIHNsb3RzLmljb24pO1xuXG5jb25zdCBoYXNUZXh0ID0gbG9naWNPcih0ZXh0LCBzbG90cy5iYWRnZSk7XG5cbmNvbnN0IGhhc0ljb25BbmRUZXh0ID0gbG9naWNBbmQoaGFzSWNvbiwgaGFzVGV4dCk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IDpjbGFzcz1cIiRzdHlsZS53cmFwcGVyXCI+XG4gICAgPHNsb3QgLz5cbiAgICA8VHJhbnNpdGlvblxuICAgICAgYXBwZWFyXG4gICAgICBlbnRlci1hY3RpdmUtY2xhc3M9XCJ0cmFuc2Zvcm0gZWFzZS1vdXQgZHVyYXRpb24tMjAwXCJcbiAgICAgIGVudGVyLWZyb20tY2xhc3M9XCJzY2FsZS0wXCJcbiAgICAgIGVudGVyLXRvLWNsYXNzPVwic2NhbGUtMTAwXCJcbiAgICAgIGxlYXZlLWFjdGl2ZS1jbGFzcz1cInRyYW5zZm9ybSBlYXNlLWluIGR1cmF0aW9uLTE1MFwiXG4gICAgICBsZWF2ZS1mcm9tLWNsYXNzPVwic2NhbGUtMTAwXCJcbiAgICAgIGxlYXZlLXRvLWNsYXNzPVwic2NhbGUtMFwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICB2LWlmPVwibW9kZWxWYWx1ZVwiXG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAkc3R5bGUuYmFkZ2UsXG4gICAgICAgICAgJHN0eWxlW2NvbG9yID8/ICdwcmltYXJ5J10sXG4gICAgICAgICAgJHN0eWxlW2BwbGFjZW1lbnRfXyR7cGxhY2VtZW50fWBdLFxuICAgICAgICAgICRzdHlsZVtgcm91bmRlZF9fJHtyb3VuZGVkfWBdLFxuICAgICAgICAgICRzdHlsZVtgc2l6ZV9fJHtzaXplfWBdLFxuICAgICAgICAgIHsgWyRzdHlsZS5sZWZ0XTogbGVmdCwgWyRzdHlsZS5kb3RdOiBkb3QgfSxcbiAgICAgICAgXVwiXG4gICAgICAgIGFyaWEtYXRvbWljPVwidHJ1ZVwiXG4gICAgICAgIGFyaWEtbGFiZWw9XCJCYWRnZVwiXG4gICAgICAgIGFyaWEtbGl2ZT1cInBvbGl0ZVwiXG4gICAgICAgIHJvbGU9XCJzdGF0dXNcIlxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIHYtaWY9XCIhZG90XCJcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAkc3R5bGUuY29udGVudCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgWyRzdHlsZS50ZXh0X2ljb25dOiBoYXNJY29uQW5kVGV4dCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2xvdCBuYW1lPVwiYmFkZ2VcIj5cbiAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICB7eyB0ZXh0IH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9zbG90PlxuICAgICAgICAgIDxzbG90IG5hbWU9XCJpY29uXCI+XG4gICAgICAgICAgICA8UnVpSWNvblxuICAgICAgICAgICAgICB2LWlmPVwiaWNvblwiXG4gICAgICAgICAgICAgIDpuYW1lPVwiaWNvblwiXG4gICAgICAgICAgICAgIHNpemU9XCIxNlwiXG4gICAgICAgICAgICAgIDpjbGFzcz1cInsgJ21sLTAuNSc6IGhhc1RleHQgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvc2xvdD5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9UcmFuc2l0aW9uPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBsYW5nPVwic2Nzc1wiIG1vZHVsZT5cbkB1c2UgJ0Avc3R5bGVzL2NvbG9ycy5zY3NzJyBhcyBjO1xuQHVzZSAnc2FzczpsaXN0JztcblxuJGJvcmRlcnM6IGZ1bGwsIHNtLCBtZCwgbGc7XG4kc2l6ZXM6IHNtLCBtZCwgbGc7XG5cbi53cmFwcGVyIHtcbiAgQGFwcGx5IHJlbGF0aXZlIGlubGluZS1ibG9jaztcblxuICAuYmFkZ2Uge1xuICAgIEBhcHBseSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LXhzIGZvbnQtbWVkaXVtIGFic29sdXRlO1xuICAgIEBhcHBseSBiZy10cmFuc3BhcmVudCB0ZXh0LXJ1aS1saWdodC10ZXh0O1xuXG4gICAgbGVmdDogY2FsYygxMDAlIC0gMC41cmVtICsgdi1iaW5kKG9mZnNldFgpICogMC4wNjI1cmVtKTtcblxuICAgIC5jb250ZW50IHtcbiAgICAgIEBhcHBseSBmbGV4IGl0ZW1zLWNlbnRlciBweC0xO1xuXG4gICAgICAmLnRleHRfaWNvbiB7XG4gICAgICAgIEBhcHBseSBweC0yO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBlYWNoICRjb2xvciBpbiBjLiRjb250ZXh0LWNvbG9ycyB7XG4gICAgICAmLiN7JGNvbG9yfSB7XG4gICAgICAgIEBhcHBseSB0ZXh0LXdoaXRlIGJnLXJ1aS0jeyRjb2xvcn07XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGVhY2ggJGJvcmRlciBpbiAkYm9yZGVycyB7XG4gICAgICAmLnJvdW5kZWRfXyN7JGJvcmRlcn0ge1xuICAgICAgICBAYXBwbHkgcm91bmRlZC0jeyRib3JkZXJ9O1xuICAgICAgfVxuICAgIH1cblxuICAgICYuc2l6ZV9fc20ge1xuICAgICAgQGFwcGx5IG1pbi1oLVsxLjI1cmVtXSBtaW4tdy1bMS4yNXJlbV07XG5cbiAgICAgICYubGVmdCB7XG4gICAgICAgIGxlZnQ6IGNhbGMoLTAuOTVyZW0gKyB2LWJpbmQob2Zmc2V0WCkgKiAwLjA2MjVyZW0pO1xuICAgICAgfVxuXG4gICAgICAmLnBsYWNlbWVudF9fY2VudGVyIHtcbiAgICAgICAgdG9wOiBjYWxjKDUwJSAtIDAuNjVyZW0gLSB2LWJpbmQob2Zmc2V0WSkgKiAwLjA2MjVyZW0pO1xuICAgICAgfVxuICAgIH1cblxuICAgICYuc2l6ZV9fbWQge1xuICAgICAgQGFwcGx5IG1pbi1oLVsxLjVyZW1dIG1pbi13LVsxLjVyZW1dO1xuXG4gICAgICAmLmxlZnQge1xuICAgICAgICBsZWZ0OiBjYWxjKC0xLjA1cmVtICsgdi1iaW5kKG9mZnNldFgpICogMC4wNjI1cmVtKTtcbiAgICAgIH1cblxuICAgICAgJi5wbGFjZW1lbnRfX2NlbnRlciB7XG4gICAgICAgIHRvcDogY2FsYyg1MCUgLSAwLjc1cmVtIC0gdi1iaW5kKG9mZnNldFkpICogMC4wNjI1cmVtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLnNpemVfX2xnIHtcbiAgICAgIEBhcHBseSBtaW4taC1bMS43NXJlbV0gbWluLXctWzEuNzVyZW1dO1xuXG4gICAgICAmLmxlZnQge1xuICAgICAgICBsZWZ0OiBjYWxjKC0xLjE1cmVtICsgdi1iaW5kKG9mZnNldFgpICogMC4wNjI1cmVtKTtcbiAgICAgIH1cblxuICAgICAgJi5wbGFjZW1lbnRfX2NlbnRlciB7XG4gICAgICAgIHRvcDogY2FsYyg1MCUgLSAwLjg1cmVtIC0gdi1iaW5kKG9mZnNldFkpICogMC4wNjI1cmVtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLnBsYWNlbWVudF9fdG9wIHtcbiAgICAgIGJvdHRvbTogY2FsYygxMDAlIC0gMC41cmVtIC0gdi1iaW5kKG9mZnNldFkpICogMC4wNjI1cmVtKTtcbiAgICB9XG5cbiAgICAmLnBsYWNlbWVudF9fYm90dG9tIHtcbiAgICAgIHRvcDogY2FsYygxMDAlIC0gMC41cmVtIC0gdi1iaW5kKG9mZnNldFkpICogMC4wNjI1cmVtKTtcbiAgICB9XG5cbiAgICAmLmRvdCB7XG4gICAgICBsZWZ0OiBjYWxjKDEwMCUgKyAwLjEyNXJlbSArIHYtYmluZChvZmZzZXRYKSAqIDAuMDYyNXJlbSk7XG5cbiAgICAgICYuZGVmYXVsdCB7XG4gICAgICAgIEBhcHBseSBiZy1ncmF5LTUwMDtcbiAgICAgIH1cblxuICAgICAgJi5zaXplX19zbSB7XG4gICAgICAgIEBhcHBseSBtaW4tdy1bMC4zNzVyZW1dIG1pbi1oLVswLjM3NXJlbV07XG4gICAgICB9XG5cbiAgICAgICYuc2l6ZV9fbWQge1xuICAgICAgICBAYXBwbHkgbWluLXctWzAuNXJlbV0gbWluLWgtWzAuNXJlbV07XG4gICAgICB9XG5cbiAgICAgICYuc2l6ZV9fbGcge1xuICAgICAgICBAYXBwbHkgbWluLXctWzAuNjI1cmVtXSBtaW4taC1bMC42MjVyZW1dO1xuICAgICAgfVxuXG4gICAgICAmLmxlZnQge1xuICAgICAgICBsZWZ0OiBjYWxjKC0wLjY1cmVtICsgdi1iaW5kKG9mZnNldFgpICogMC4wNjI1cmVtKTtcbiAgICAgIH1cblxuICAgICAgJi5wbGFjZW1lbnRfX3RvcCB7XG4gICAgICAgIGJvdHRvbTogY2FsYygxMDAlICsgMC4yNXJlbSAtIHYtYmluZChvZmZzZXRZKSAqIDAuMDYyNXJlbSk7XG4gICAgICB9XG5cbiAgICAgICYucGxhY2VtZW50X19jZW50ZXIge1xuICAgICAgICB0b3A6IGNhbGMoNTAlIC0gMC4yNXJlbSAtIHYtYmluZChvZmZzZXRZKSAqIDAuMDYyNXJlbSk7XG4gICAgICB9XG5cbiAgICAgICYucGxhY2VtZW50X19ib3R0b20ge1xuICAgICAgICB0b3A6IGNhbGMoMTAwJSArIDAuMjVyZW0gLSB2LWJpbmQob2Zmc2V0WSkgKiAwLjA2MjVyZW0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG46Z2xvYmFsKC5kYXJrKSB7XG4gIC53cmFwcGVyIHtcbiAgICAuYmFkZ2Uge1xuICAgICAgQGFwcGx5IHRleHQtcnVpLXRleHQ7XG5cbiAgICAgIEBlYWNoICRjb2xvciBpbiBjLiRjb250ZXh0LWNvbG9ycyB7XG4gICAgICAgIEBpZiBsaXN0LmluZGV4KCh3YXJuaW5nLCBzdWNjZXNzLCBpbmZvKSwgJGNvbG9yKSB7XG4gICAgICAgICAgJi4jeyRjb2xvcn0ge1xuICAgICAgICAgICAgQGFwcGx5IHRleHQtcnVpLWxpZ2h0LXRleHQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbmV4cG9ydCBpbnRlcmZhY2UgRGlhbG9nUHJvcHMge1xuICBtb2RlbFZhbHVlPzogYm9vbGVhbjtcbiAgcGVyc2lzdGVudD86IGJvb2xlYW47XG4gIHdpZHRoPzogc3RyaW5nIHwgbnVtYmVyO1xuICBtYXhXaWR0aD86IHN0cmluZyB8IG51bWJlcjtcbiAgYm90dG9tU2hlZXQ/OiBib29sZWFuO1xuICBjb250ZW50Q2xhc3M/OiBhbnk7XG4gIHpJbmRleD86IHN0cmluZyB8IG51bWJlcjtcbn1cblxuZGVmaW5lT3B0aW9ucyh7XG4gIG5hbWU6ICdSdWlEaWFsb2cnLFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxufSk7XG5cbmNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPERpYWxvZ1Byb3BzPigpLCB7XG4gIG1vZGVsVmFsdWU6IGZhbHNlLFxuICBwZXJzaXN0ZW50OiBmYWxzZSxcbiAgd2lkdGg6ICc5OCUnLFxuICBib3R0b21TaGVldDogZmFsc2UsXG4gIGNvbnRlbnRDbGFzczogJycsXG4gIHpJbmRleDogOTk5OSxcbn0pO1xuXG5jb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8e1xuICAoZTogJ3VwZGF0ZTptb2RlbC12YWx1ZScsIHZhbHVlOiBib29sZWFuKTogdm9pZDtcbiAgKGU6ICdjbG9zZWQnKTogdm9pZDtcbiAgKGU6ICdjbGljazpvdXRzaWRlJyk6IHZvaWQ7XG4gIChlOiAnY2xpY2s6ZXNjJyk6IHZvaWQ7XG59PigpO1xuXG5jb25zdCB7XG4gIG1vZGVsVmFsdWUsXG4gIHdpZHRoLFxuICBtYXhXaWR0aCxcbiAgYm90dG9tU2hlZXQsXG59ID0gdG9SZWZzKHByb3BzKTtcblxuY29uc3QgaW50ZXJuYWxWYWx1ZSA9IHJlZjxib29sZWFuPihmYWxzZSk7XG5jb25zdCBpc09wZW4gPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuXG53YXRjaEltbWVkaWF0ZShtb2RlbFZhbHVlLCAodmFsdWUpID0+IHtcbiAgbmV4dFRpY2soKCkgPT4ge1xuICAgIHNldChpbnRlcm5hbFZhbHVlLCB2YWx1ZSk7XG4gIH0pO1xufSk7XG5cbndhdGNoKGludGVybmFsVmFsdWUsICh2YWx1ZSkgPT4ge1xuICBpZiAodmFsdWUpIHtcbiAgICBuZXh0VGljaygoKSA9PiB7XG4gICAgICBzZXQoaXNPcGVuLCB2YWx1ZSk7XG4gICAgfSk7XG4gIH1cbiAgZWxzZSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBzZXQoaXNPcGVuLCB2YWx1ZSk7XG4gICAgfSwgMTAwKTtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIG9uVXBkYXRlTW9kZWxWYWx1ZSh2YWx1ZTogYm9vbGVhbikge1xuICBlbWl0KCd1cGRhdGU6bW9kZWwtdmFsdWUnLCB2YWx1ZSk7XG5cbiAgaWYgKCF2YWx1ZSlcbiAgICBlbWl0KCdjbG9zZWQnKTtcbn1cblxud2F0Y2goaXNPcGVuLCAoaXNPcGVuKSA9PiB7XG4gIGlmIChpc09wZW4pIHtcbiAgICBvblVwZGF0ZU1vZGVsVmFsdWUoaXNPcGVuKTtcbiAgICBzZXQoaW50ZXJuYWxWYWx1ZSwgaXNPcGVuKTtcbiAgfVxuICBlbHNlIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIG9uVXBkYXRlTW9kZWxWYWx1ZShpc09wZW4pO1xuICAgICAgc2V0KGludGVybmFsVmFsdWUsIGlzT3Blbik7XG4gICAgfSwgMTAwKTtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIGNsb3NlKCkge1xuICBzZXQoaXNPcGVuLCBmYWxzZSk7XG59XG5cbmNvbnN0IHN0eWxlID0gY29tcHV0ZWQoKCkgPT4gKHtcbiAgd2lkdGg6IHRyYW5zZm9ybVByb3BzVW5pdChnZXQod2lkdGgpKSxcbiAgbWF4V2lkdGg6IHRyYW5zZm9ybVByb3BzVW5pdChnZXQobWF4V2lkdGgpKSxcbn0pKTtcblxuY29uc3QgY29udGVudFJlZiA9IHJlZjxIVE1MRGl2RWxlbWVudD4oKTtcblxud2F0Y2goY29udGVudFJlZiwgKGNvbnRlbnRSZWYpID0+IHtcbiAgaWYgKGNvbnRlbnRSZWYpIHtcbiAgICBuZXh0VGljaygoKSA9PiB7XG4gICAgICBjb250ZW50UmVmLmZvY3VzKCk7XG4gICAgfSk7XG4gIH1cbn0pO1xuXG5jb25zdCBkaWFsb2dBdHRycyA9IGNvbXB1dGVkKCgpID0+ICh7XG4gIG9uQ2xpY2s6ICgpID0+IHtcbiAgICBjb25zdCBuZXdWYWx1ZSA9ICFnZXQoaW50ZXJuYWxWYWx1ZSk7XG4gICAgc2V0KGludGVybmFsVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICBvblVwZGF0ZU1vZGVsVmFsdWUobmV3VmFsdWUpO1xuICB9LFxufSkpO1xuXG5jb25zdCBjb250ZW50VHJhbnNpdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgaWYgKCFnZXQoYm90dG9tU2hlZXQpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVudGVyRnJvbUNsYXNzOiAnb3BhY2l0eS0wIHNjYWxlLTc1JyxcbiAgICAgIGVudGVyQWN0aXZlQ2xhc3M6ICdlYXNlLW91dCBkdXJhdGlvbi0xNTAnLFxuICAgICAgZW50ZXJUb0NsYXNzOiAnb3BhY2l0eS0xMDAgc2NhbGUtMTAwJyxcbiAgICAgIGxlYXZlRnJvbUNsYXNzOiAnb3BhY2l0eS0xMDAgc2NhbGUtMTAwJyxcbiAgICAgIGxlYXZlQWN0aXZlQ2xhc3M6ICdlYXNlLWluIGR1cmF0aW9uLTEwMCcsXG4gICAgICBsZWF2ZVRvQ2xhc3M6ICdvcGFjaXR5LTAgc2NhbGUtNzUnLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGVudGVyRnJvbUNsYXNzOiAndHJhbnNsYXRlLXktZnVsbCcsXG4gICAgZW50ZXJBY3RpdmVDbGFzczogJ2Vhc2Utb3V0IGR1cmF0aW9uLTE1MCcsXG4gICAgZW50ZXJUb0NsYXNzOiAndHJhbnNsYXRlLXktMCcsXG4gICAgbGVhdmVGcm9tQ2xhc3M6ICd0cmFuc2xhdGUteS0wJyxcbiAgICBsZWF2ZUFjdGl2ZUNsYXNzOiAnZWFzZS1pbiBkdXJhdGlvbi0xMDAnLFxuICAgIGxlYXZlVG9DbGFzczogJ3RyYW5zbGF0ZS15LWZ1bGwnLFxuICB9O1xufSk7XG5cbmZ1bmN0aW9uIG9uRXNjQ2xpY2soKSB7XG4gIGlmICghcHJvcHMucGVyc2lzdGVudCkge1xuICAgIGNsb3NlKCk7XG4gIH1cbiAgZW1pdCgnY2xpY2s6ZXNjJyk7XG59XG5cbmZ1bmN0aW9uIG9uQ2xpY2tPdXRzaWRlKCkge1xuICBpZiAoIXByb3BzLnBlcnNpc3RlbnQpIHtcbiAgICBjbG9zZSgpO1xuICB9XG4gIGVtaXQoJ2NsaWNrOm91dHNpZGUnKTtcbn1cbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgdi1iaW5kPVwiZ2V0Um9vdEF0dHJzKCRhdHRycylcIj5cbiAgICA8c2xvdFxuICAgICAgbmFtZT1cImFjdGl2YXRvclwiXG4gICAgICB2LWJpbmQ9XCJ7IGF0dHJzOiBkaWFsb2dBdHRycywgaXNPcGVuIH1cIlxuICAgIC8+XG4gICAgPFRlbGVwb3J0IHRvPVwiYm9keVwiPlxuICAgICAgPGRpdlxuICAgICAgICB2LWlmPVwiaXNPcGVuIHx8IGludGVybmFsVmFsdWVcIlxuICAgICAgICA6Y2xhc3M9XCIkc3R5bGUud3JhcHBlclwiXG4gICAgICAgIDpzdHlsZT1cInsgekluZGV4IH1cIlxuICAgICAgICByb2xlPVwiZGlhbG9nXCJcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgdi1iaW5kPVwiZ2V0Tm9uUm9vdEF0dHJzKCRhdHRycylcIlxuICAgICAgICBAa2V5ZG93bi5lc2Muc3RvcD1cIm9uRXNjQ2xpY2soKVwiXG4gICAgICA+XG4gICAgICAgIDxUcmFuc2l0aW9uXG4gICAgICAgICAgZW50ZXItZnJvbS1jbGFzcz1cIm9wYWNpdHktMFwiXG4gICAgICAgICAgZW50ZXItYWN0aXZlLWNsYXNzPVwiZWFzZS1vdXQgZHVyYXRpb24tMTUwXCJcbiAgICAgICAgICBlbnRlci10by1jbGFzcz1cIm9wYWNpdHktMTAwXCJcbiAgICAgICAgICBsZWF2ZS1mcm9tLWNsYXNzPVwib3BhY2l0eS0xMDBcIlxuICAgICAgICAgIGxlYXZlLWFjdGl2ZS1jbGFzcz1cImVhc2UtaW4gZHVyYXRpb24tMTAwXCJcbiAgICAgICAgICBsZWF2ZS10by1jbGFzcz1cIm9wYWNpdHktMFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICB2LWlmPVwiaXNPcGVuICYmIGludGVybmFsVmFsdWVcIlxuICAgICAgICAgICAgOmNsYXNzPVwiJHN0eWxlLm92ZXJsYXlcIlxuICAgICAgICAgICAgQGNsaWNrLnN0b3A9XCJvbkNsaWNrT3V0c2lkZSgpXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L1RyYW5zaXRpb24+XG4gICAgICAgIDxUcmFuc2l0aW9uIHYtYmluZD1cImNvbnRlbnRUcmFuc2l0aW9uXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgdi1pZj1cImlzT3BlbiAmJiBpbnRlcm5hbFZhbHVlXCJcbiAgICAgICAgICAgIHJlZj1cImNvbnRlbnRSZWZcIlxuICAgICAgICAgICAgOnN0eWxlPVwic3R5bGVcIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgIDpjbGFzcz1cIlskc3R5bGUuY29udGVudCwgY29udGVudENsYXNzLCB7IFskc3R5bGUuY2VudGVyXTogIWJvdHRvbVNoZWV0IH1dXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c2xvdCB2LWJpbmQ9XCJ7IGlzT3BlbiwgY2xvc2UgfVwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvVHJhbnNpdGlvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvVGVsZXBvcnQ+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgbW9kdWxlPlxuLndyYXBwZXIge1xuICBAYXBwbHkgZml4ZWQgdy1mdWxsIGgtZnVsbCB0b3AtMCBsZWZ0LTA7XG59XG5cbi5vdmVybGF5IHtcbiAgQGFwcGx5IGFic29sdXRlIHRvcC0wIGxlZnQtMCB3LWZ1bGwgaC1mdWxsIGJhY2tkcm9wLWJsdXIgYmctcnVpLWdyZXktNTAwL1swLjVdO1xufVxuXG4uY29udGVudCB7XG4gIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTEvMiBib3R0b20tMCB0cmFuc2Zvcm0gLXRyYW5zbGF0ZS14LTEvMiBvdXRsaW5lLW5vbmUgb3ZlcmZsb3cteS1hdXRvIG1heC1oLVs5MHZoXTtcblxuICAmLmNlbnRlciB7XG4gICAgQGFwcGx5IHRvcC0xLzIgLXRyYW5zbGF0ZS15LTEvMiBib3R0b20tYXV0bztcbiAgfVxufVxuXG46Z2xvYmFsKC5kYXJrKSB7XG4gIC5vdmVybGF5IHtcbiAgICBAYXBwbHkgYmctYmxhY2svWzAuNV07XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuaW1wb3J0IFJ1aURpYWxvZyBmcm9tICdAL2NvbXBvbmVudHMvb3ZlcmxheXMvZGlhbG9nL1J1aURpYWxvZy52dWUnO1xuXG4vLyBrZWVwIHRoZXNlIHByb3BzIGluIHN5bmMgd2l0aCBEaWFsb2cgcHJvcHNcbmV4cG9ydCBpbnRlcmZhY2UgQm90dG9tU2hlZXRQcm9wcyB7XG4gIG1vZGVsVmFsdWU/OiBib29sZWFuO1xuICBwZXJzaXN0ZW50PzogYm9vbGVhbjtcbiAgd2lkdGg/OiBzdHJpbmcgfCBudW1iZXI7XG4gIG1heFdpZHRoPzogc3RyaW5nIHwgbnVtYmVyO1xufVxuXG5kZWZpbmVPcHRpb25zKHtcbiAgbmFtZTogJ1J1aUJvdHRvbVNoZWV0JyxcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbn0pO1xuXG5jb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxCb3R0b21TaGVldFByb3BzPigpLCB7XG4gIG1vZGVsVmFsdWU6IGZhbHNlLFxuICBwZXJzaXN0ZW50OiBmYWxzZSxcbn0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPFJ1aURpYWxvZ1xuICAgIGJvdHRvbS1zaGVldFxuICAgIHYtYmluZD1cInsgLi4ucHJvcHMsIC4uLiRhdHRycyB9XCJcbiAgPlxuICAgIDx0ZW1wbGF0ZVxuICAgICAgdi1mb3I9XCJzbG90IGluIE9iamVjdC5rZXlzKCRzbG90cylcIlxuICAgICAgI1tzbG90XT1cInNjb3BlXCJcbiAgICA+XG4gICAgICA8c2xvdFxuICAgICAgICB2LWJpbmQ9XCJzY29wZVwiXG4gICAgICAgIDpuYW1lPVwic2xvdFwiXG4gICAgICAvPlxuICAgIDwvdGVtcGxhdGU+XG4gIDwvUnVpRGlhbG9nPlxuPC90ZW1wbGF0ZT5cbiIsIjxzY3JpcHQgc2V0dXAgbGFuZz0ndHMnPlxuaW1wb3J0IHR5cGUgeyBNYXliZUVsZW1lbnQgfSBmcm9tICdAdnVldXNlL2NvcmUnO1xuaW1wb3J0IHsgdHlwZSBSZWYsIHJlZiB9IGZyb20gJ3Z1ZSc7XG5pbXBvcnQgeyBnZXRSb290QXR0cnMgfSBmcm9tICdAL3V0aWxzL2hlbHBlcnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5hdmlnYXRpb25EcmF3ZXJQcm9wcyB7XG4gIG1vZGVsVmFsdWU/OiBib29sZWFuO1xuICB0ZW1wb3Jhcnk/OiBib29sZWFuO1xuICBzdGF0ZWxlc3M/OiBib29sZWFuO1xuICB3aWR0aD86IHN0cmluZyB8IG51bWJlcjtcbiAgbWluaVZhcmlhbnQ/OiBib29sZWFuO1xuICBvdmVybGF5PzogYm9vbGVhbjtcbiAgcG9zaXRpb24/OiAnbGVmdCcgfCAncmlnaHQnO1xuICBjb250ZW50Q2xhc3M/OiBzdHJpbmcgfCBvYmplY3QgfCBzdHJpbmdbXTtcbn1cblxuZGVmaW5lT3B0aW9ucyh7XG4gIG5hbWU6ICdSdWlOYXZpZ2F0aW9uRHJhd2VyJyxcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbn0pO1xuXG5jb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxOYXZpZ2F0aW9uRHJhd2VyUHJvcHM+KCksIHtcbiAgbW9kZWxWYWx1ZTogZmFsc2UsXG4gIHRlbXBvcmFyeTogZmFsc2UsXG4gIHN0YXRlbGVzczogZmFsc2UsXG4gIHdpZHRoOiAzNjAsXG4gIG1pbmlWYXJpYW50OiBmYWxzZSxcbiAgb3ZlcmxheTogZmFsc2UsXG4gIHBvc2l0aW9uOiAnbGVmdCcsXG4gIGNvbnRlbnRDbGFzczogJycsXG59KTtcblxuY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPHtcbiAgKGU6ICd1cGRhdGU6bW9kZWwtdmFsdWUnLCB2YWx1ZTogYm9vbGVhbik6IHZvaWQ7XG4gIChlOiAnY2xvc2VkJyk6IHZvaWQ7XG59PigpO1xuXG5jb25zdCB7XG4gIG1vZGVsVmFsdWUsXG4gIHBvc2l0aW9uLFxuICBtaW5pVmFyaWFudCxcbiAgd2lkdGgsXG59ID0gdG9SZWZzKHByb3BzKTtcblxuZnVuY3Rpb24gb25VcGRhdGVNb2RlbFZhbHVlKHZhbHVlOiBib29sZWFuKSB7XG4gIGVtaXQoJ3VwZGF0ZTptb2RlbC12YWx1ZScsIHZhbHVlKTtcblxuICBpZiAoIXZhbHVlKVxuICAgIGVtaXQoJ2Nsb3NlZCcpO1xufVxuXG5jb25zdCBpbnRlcm5hbFZhbHVlOiBSZWY8Ym9vbGVhbj4gPSByZWYoZmFsc2UpO1xuXG53YXRjaEltbWVkaWF0ZShtb2RlbFZhbHVlLCAodmFsdWUpID0+IHtcbiAgc2V0KGludGVybmFsVmFsdWUsIHZhbHVlKTtcbn0pO1xuXG53YXRjaChpbnRlcm5hbFZhbHVlLCAodmFsdWUpID0+IHtcbiAgb25VcGRhdGVNb2RlbFZhbHVlKHZhbHVlKTtcbn0pO1xuXG5mdW5jdGlvbiBjbG9zZSgpIHtcbiAgc2V0KGludGVybmFsVmFsdWUsIGZhbHNlKTtcbn1cblxuY29uc3Qgc3R5bGUgPSBjb21wdXRlZCgoKSA9PiAoe1xuICB3aWR0aDogdHJhbnNmb3JtUHJvcHNVbml0KGdldCh3aWR0aCkpLFxufSkpO1xuXG5jb25zdCBjb250ZW50OiBSZWY8TWF5YmVFbGVtZW50IHwgbnVsbD4gPSByZWYobnVsbCk7XG5cbm9uQ2xpY2tPdXRzaWRlKGNvbnRlbnQsICgpID0+IHtcbiAgaWYgKGdldChpbnRlcm5hbFZhbHVlKSAmJiBwcm9wcy50ZW1wb3JhcnkgJiYgIXByb3BzLnN0YXRlbGVzcykge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY2xvc2UoKTtcbiAgICB9LCA1MCk7XG4gIH1cbn0pO1xuXG5jb25zdCBhY3RpdmF0b3JBdHRycyA9IGNvbXB1dGVkKCgpID0+ICh7XG4gIG9uQ2xpY2s6ICgpID0+IHtcbiAgICBjb25zdCBuZXdWYWx1ZSA9ICFnZXQoaW50ZXJuYWxWYWx1ZSk7XG4gICAgc2V0KGludGVybmFsVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICBvblVwZGF0ZU1vZGVsVmFsdWUobmV3VmFsdWUpO1xuICB9LFxufSkpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdj5cbiAgICA8c2xvdFxuICAgICAgbmFtZT1cImFjdGl2YXRvclwiXG4gICAgICB2LWJpbmQ9XCJ7IG9wZW46IGludGVybmFsVmFsdWUsIGF0dHJzOiBhY3RpdmF0b3JBdHRycyB9XCJcbiAgICAvPlxuICAgIDxUZWxlcG9ydCB0bz1cImJvZHlcIj5cbiAgICAgIDxUcmFuc2l0aW9uXG4gICAgICAgIHYtaWY9XCJvdmVybGF5XCJcbiAgICAgICAgZW50ZXItZnJvbS1jbGFzcz1cIm9wYWNpdHktMFwiXG4gICAgICAgIGVudGVyLWFjdGl2ZS1jbGFzcz1cImVhc2Utb3V0IGR1cmF0aW9uLTE1MFwiXG4gICAgICAgIGVudGVyLXRvLWNsYXNzPVwib3BhY2l0eS0xMDBcIlxuICAgICAgICBsZWF2ZS1mcm9tLWNsYXNzPVwib3BhY2l0eS0xMDBcIlxuICAgICAgICBsZWF2ZS1hY3RpdmUtY2xhc3M9XCJlYXNlLWluIGR1cmF0aW9uLTEwMFwiXG4gICAgICAgIGxlYXZlLXRvLWNsYXNzPVwib3BhY2l0eS0wXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIHYtaWY9XCJpbnRlcm5hbFZhbHVlXCJcbiAgICAgICAgICA6Y2xhc3M9XCIkc3R5bGUub3ZlcmxheVwiXG4gICAgICAgICAgQGNsaWNrLnN0b3A9XCJjbG9zZSgpXCJcbiAgICAgICAgLz5cbiAgICAgIDwvVHJhbnNpdGlvbj5cbiAgICAgIDxhc2lkZVxuICAgICAgICByZWY9XCJjb250ZW50XCJcbiAgICAgICAgOnN0eWxlPVwic3R5bGVcIlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJHN0eWxlLmNvbnRlbnQsXG4gICAgICAgICAgY29udGVudENsYXNzLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFskc3R5bGUudmlzaWJsZV06IGludGVybmFsVmFsdWUsXG4gICAgICAgICAgICBbJHN0eWxlW3Bvc2l0aW9uXV06IHBvc2l0aW9uLFxuICAgICAgICAgICAgWyRzdHlsZS5taW5pXTogbWluaVZhcmlhbnQsXG4gICAgICAgICAgICBbJHN0eWxlLnRlbXBvcmFyeV06IHRlbXBvcmFyeSxcbiAgICAgICAgICAgIFskc3R5bGVbJ3dpdGgtb3ZlcmxheSddXTogb3ZlcmxheSxcbiAgICAgICAgICB9LFxuICAgICAgICBdXCJcbiAgICAgICAgdi1iaW5kPVwiZ2V0Um9vdEF0dHJzKCRhdHRycylcIlxuICAgICAgPlxuICAgICAgICA8c2xvdCB2LWJpbmQ9XCJ7IGF0dHJzOiBhY3RpdmF0b3JBdHRycywgY2xvc2UgfVwiIC8+XG4gICAgICA8L2FzaWRlPlxuICAgIDwvVGVsZXBvcnQ+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgbW9kdWxlPlxuLm92ZXJsYXkge1xuICBAYXBwbHkgYWJzb2x1dGUgdG9wLTAgbGVmdC0wIHctZnVsbCBoLWZ1bGwgYmFja2Ryb3AtYmx1ciBiZy1ydWktZ3JleS01MDAvWzAuNV0gei1bMTAwMDBdO1xufVxuXG4uY29udGVudCB7XG4gIEBhcHBseSB0cmFuc2l0aW9uLWFsbCB0b3AtMCBoLWZ1bGwgZml4ZWQgdGV4dC1ydWktdGV4dCBiZy13aGl0ZSB6LVs3XTtcblxuICAmLmxlZnQge1xuICAgIEBhcHBseSAtdHJhbnNsYXRlLXgtZnVsbCBsZWZ0LTA7XG4gIH1cblxuICAmLnJpZ2h0IHtcbiAgICBAYXBwbHkgdHJhbnNsYXRlLXgtZnVsbCByaWdodC0wO1xuICB9XG5cbiAgJi53aXRoLW92ZXJsYXkge1xuICAgIEBhcHBseSB6LVsxMDAwMF07XG4gIH1cblxuICAmLnZpc2libGUge1xuICAgIEBhcHBseSB0cmFuc2xhdGUteC0wO1xuICB9XG5cbiAgJi50ZW1wb3Jhcnkge1xuICAgICYudmlzaWJsZSB7XG4gICAgICBAYXBwbHkgc2hhZG93LTU7XG4gICAgfVxuICB9XG5cbiAgJi5taW5pIHtcbiAgICBAYXBwbHkgdHJhbnNsYXRlLXgtMDtcblxuICAgICY6bm90KC52aXNpYmxlKSB7XG4gICAgICBAYXBwbHkgdy0xNCAjeyFpbXBvcnRhbnR9O1xuICAgIH1cbiAgfVxufVxuXG46Z2xvYmFsKC5kYXJrKSB7XG4gIC5vdmVybGF5IHtcbiAgICBAYXBwbHkgYmctYmxhY2svWzAuNV07XG4gIH1cblxuICAuY29udGVudCB7XG4gICAgQGFwcGx5IGJnLVsjMzYzNjM2XTtcbiAgfVxufVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz0ndHMnIHNldHVwPlxuZXhwb3J0IGludGVyZmFjZSBOb3RpZmljYXRpb25Qcm9wcyB7XG4gIG1vZGVsVmFsdWU6IGJvb2xlYW47XG4gIHRpbWVvdXQ6IG51bWJlcjtcbiAgd2lkdGg/OiBudW1iZXIgfCBzdHJpbmc7XG4gIHRoZW1lPzogJ2xpZ2h0JyB8ICdkYXJrJztcbn1cblxuZGVmaW5lT3B0aW9ucyh7XG4gIG5hbWU6ICdSdWlOb3RpZmljYXRpb24nLFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxufSk7XG5cbmNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKFxuICBkZWZpbmVQcm9wczxOb3RpZmljYXRpb25Qcm9wcz4oKSxcbiAge1xuICAgIHdpZHRoOiA0MDAsXG4gICAgdGhlbWU6IHVuZGVmaW5lZCxcbiAgfSxcbik7XG5cbmNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czx7XG4gIChlOiAndXBkYXRlOm1vZGVsLXZhbHVlJywgdmFsdWU6IGJvb2xlYW4pOiB2b2lkO1xufT4oKTtcblxuY29uc3QgeyB0aW1lb3V0LCBtb2RlbFZhbHVlLCB3aWR0aCB9ID0gdG9SZWZzKHByb3BzKTtcblxuY29uc3Qgc3R5bGUgPSBjb21wdXRlZCgoKSA9PiAoe1xuICB3aWR0aDogdHJhbnNmb3JtUHJvcHNVbml0KGdldCh3aWR0aCkpLFxufSkpO1xuXG5mdW5jdGlvbiBkaXNtaXNzKCkge1xuICBpZiAoZ2V0KHRpbWVvdXQpIDwgMClcbiAgICByZXR1cm47XG5cbiAgZW1pdCgndXBkYXRlOm1vZGVsLXZhbHVlJywgZmFsc2UpO1xufVxuXG53YXRjaEltbWVkaWF0ZShtb2RlbFZhbHVlLCAoZGlzcGxheSkgPT4ge1xuICBpZiAoIWRpc3BsYXkpXG4gICAgcmV0dXJuO1xuXG4gIGNvbnN0IGR1cmF0aW9uID0gZ2V0KHRpbWVvdXQpO1xuICBpZiAoZHVyYXRpb24gPiAwKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBlbWl0KCd1cGRhdGU6bW9kZWwtdmFsdWUnLCBmYWxzZSk7XG4gICAgfSwgZHVyYXRpb24pO1xuICB9XG59KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxUZWxlcG9ydCB0bz1cImJvZHlcIj5cbiAgICA8VHJhbnNpdGlvblxuICAgICAgZW50ZXItZnJvbS1jbGFzcz1cIm9wYWNpdHktMFwiXG4gICAgICBlbnRlci1hY3RpdmUtY2xhc3M9XCJlYXNlLW91dCBkdXJhdGlvbi0xNTBcIlxuICAgICAgZW50ZXItdG8tY2xhc3M9XCJvcGFjaXR5LTEwMFwiXG4gICAgICBsZWF2ZS1mcm9tLWNsYXNzPVwib3BhY2l0eS0xMDBcIlxuICAgICAgbGVhdmUtYWN0aXZlLWNsYXNzPVwiZWFzZS1pbiBkdXJhdGlvbi0xMDBcIlxuICAgICAgbGVhdmUtdG8tY2xhc3M9XCJvcGFjaXR5LTBcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgdi1pZj1cIm1vZGVsVmFsdWVcIlxuICAgICAgICBjbGFzcz1cInRvcC0yIHJpZ2h0LTIgZml4ZWQgZHJvcC1zaGFkb3ctbGcgcm91bmRlZC1zbSB6LTUwXCJcbiAgICAgICAgOmNsYXNzPVwie1xuICAgICAgICAgICdiZy13aGl0ZSBkYXJrOmJnLVsjMzYzNjM2XSc6ICF0aGVtZSxcbiAgICAgICAgICAnYmctd2hpdGUgdGV4dC1ydWktbGlnaHQtdGV4dCc6IHRoZW1lID09PSAnbGlnaHQnLFxuICAgICAgICAgICdiZy1bIzM2MzYzNl0gdGV4dC1ydWktZGFyay10ZXh0JzogdGhlbWUgPT09ICdkYXJrJyxcbiAgICAgICAgfVwiXG4gICAgICAgIDpzdHlsZT1cInN0eWxlXCJcbiAgICAgICAgdi1iaW5kPVwiJGF0dHJzXCJcbiAgICAgICAgQGNsaWNrPVwiZGlzbWlzcygpXCJcbiAgICAgID5cbiAgICAgICAgPHNsb3QgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvVHJhbnNpdGlvbj5cbiAgPC9UZWxlcG9ydD5cbjwvdGVtcGxhdGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuaW1wb3J0IFJ1aUJ1dHRvbiBmcm9tICdAL2NvbXBvbmVudHMvYnV0dG9ucy9idXR0b24vUnVpQnV0dG9uLnZ1ZSc7XG5pbXBvcnQgUnVpSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvaWNvbnMvUnVpSWNvbi52dWUnO1xuaW1wb3J0IFJ1aVByb2dyZXNzIGZyb20gJ0AvY29tcG9uZW50cy9wcm9ncmVzcy9SdWlQcm9ncmVzcy52dWUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BzIHtcbiAgcGFnZXM6IG51bWJlcjtcbiAgbW9kZWxWYWx1ZT86IG51bWJlcjtcbiAgdmFyaWFudD86ICdudW1lcmljJyB8ICdidWxsZXQnIHwgJ3Byb2dyZXNzJyB8ICdwaWxsJztcbiAgYXJyb3dCdXR0b25zPzogYm9vbGVhbjtcbiAgaGlkZUJ1dHRvbnM/OiBib29sZWFuO1xufVxuXG5kZWZpbmVPcHRpb25zKHtcbiAgbmFtZTogJ1J1aUZvb3RlclN0ZXBwZXInLFxufSk7XG5cbmNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gIG1vZGVsVmFsdWU6IDEsXG4gIHZhcmlhbnQ6ICdudW1lcmljJyxcbiAgYXJyb3dCdXR0b25zOiBmYWxzZSxcbiAgaGlkZUJ1dHRvbnM6IGZhbHNlLFxufSk7XG5cbmNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czx7XG4gIChldmVudDogJ3VwZGF0ZTptb2RlbFZhbHVlJywgbW9kZWxWYWx1ZTogbnVtYmVyKTogdm9pZDtcbn0+KCk7XG5cbmNvbnN0IHsgbW9kZWxWYWx1ZSwgcGFnZXMgfSA9IHRvUmVmcyhwcm9wcyk7XG5cbmZ1bmN0aW9uIG9uQ2hhbmdlKGRlbHRhOiBudW1iZXIpIHtcbiAgZW1pdCgndXBkYXRlOm1vZGVsVmFsdWUnLCBnZXQobW9kZWxWYWx1ZSkgKyBkZWx0YSk7XG59XG5cbmZ1bmN0aW9uIG9uUHJldigpIHtcbiAgY29uc3QgdmFsdWUgPSBnZXQobW9kZWxWYWx1ZSk7XG4gIGlmICh2YWx1ZSlcbiAgICBvbkNoYW5nZSgtMSk7XG59XG5cbmZ1bmN0aW9uIG9uTmV4dCgpIHtcbiAgY29uc3QgdmFsdWUgPSBnZXQobW9kZWxWYWx1ZSk7XG4gIGlmICh2YWx1ZSA8IGdldChwYWdlcykpXG4gICAgb25DaGFuZ2UoMSk7XG59XG5cbmZ1bmN0aW9uIG9uQ2xpY2soaW5kZXg6IG51bWJlcikge1xuICBvbkNoYW5nZShpbmRleCAtIGdldChtb2RlbFZhbHVlKSk7XG59XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IDpjbGFzcz1cIlskc3R5bGVbJ2Zvb3Rlci1zdGVwcGVyJ10sICRzdHlsZVt2YXJpYW50ID8/ICcnXV1cIj5cbiAgICA8dGVtcGxhdGUgdi1pZj1cInZhcmlhbnQgPT09ICdwaWxsJ1wiPlxuICAgICAgPGRpdiA6Y2xhc3M9XCIkc3R5bGUucGlsbHNcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICB2LWZvcj1cImkgaW4gcGFnZXNcIlxuICAgICAgICAgIDprZXk9XCJpXCJcbiAgICAgICAgICA6Y2xhc3M9XCJbJHN0eWxlLnBpbGwsIHsgWyRzdHlsZS5hY3RpdmVdOiBtb2RlbFZhbHVlID09PSBpIH1dXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvdGVtcGxhdGU+XG4gICAgPHRlbXBsYXRlIHYtZWxzZT5cbiAgICAgIDxSdWlCdXR0b25cbiAgICAgICAgdi1pZj1cIiFoaWRlQnV0dG9uc1wiXG4gICAgICAgIDpjbGFzcz1cInsgWyRzdHlsZS5hcnJvd19fYnV0dG9uXTogYXJyb3dCdXR0b25zIH1cIlxuICAgICAgICA6ZGlzYWJsZWQ9XCJtb2RlbFZhbHVlIDw9IDFcIlxuICAgICAgICA6aWNvbj1cImFycm93QnV0dG9uc1wiXG4gICAgICAgIDp2YXJpYW50PVwiYXJyb3dCdXR0b25zID8gJ291dGxpbmVkJyA6ICd0ZXh0J1wiXG4gICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgIEBjbGljaz1cIm9uUHJldigpXCJcbiAgICAgID5cbiAgICAgICAgPHRlbXBsYXRlXG4gICAgICAgICAgdi1pZj1cIiFhcnJvd0J1dHRvbnNcIlxuICAgICAgICAgICNwcmVwZW5kXG4gICAgICAgID5cbiAgICAgICAgICA8UnVpSWNvblxuICAgICAgICAgICAgOnNpemU9XCIxOFwiXG4gICAgICAgICAgICBuYW1lPVwibHUtY2hldnJvbi1sZWZ0XCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICA8c3BhbiB2LWlmPVwiIWFycm93QnV0dG9uc1wiPkJhY2s8L3NwYW4+XG4gICAgICAgIDxSdWlJY29uXG4gICAgICAgICAgdi1lbHNlXG4gICAgICAgICAgOnNpemU9XCIyNFwiXG4gICAgICAgICAgbmFtZT1cImx1LWFycm93LWxlZnRcIlxuICAgICAgICAvPlxuICAgICAgPC9SdWlCdXR0b24+XG4gICAgICA8c3BhblxuICAgICAgICB2LWlmPVwidmFyaWFudCA9PT0gJ251bWVyaWMnXCJcbiAgICAgICAgOmNsYXNzPVwiJHN0eWxlLm51bWVyaWNcIlxuICAgICAgPlxuICAgICAgICB7eyBtb2RlbFZhbHVlIH19L3t7IHBhZ2VzIH19XG4gICAgICA8L3NwYW4+XG4gICAgICA8ZGl2XG4gICAgICAgIHYtZWxzZS1pZj1cInZhcmlhbnQgPT09ICdidWxsZXQnXCJcbiAgICAgICAgOmNsYXNzPVwiJHN0eWxlLmJ1bGxldHNcIlxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIHYtZm9yPVwiaSBpbiBwYWdlc1wiXG4gICAgICAgICAgOmtleT1cImlcIlxuICAgICAgICAgIDpjbGFzcz1cIlskc3R5bGUuYnVsbGV0LCB7IFskc3R5bGUuYWN0aXZlXTogbW9kZWxWYWx1ZSA9PT0gaSB9XVwiXG4gICAgICAgICAgQGNsaWNrPVwib25DbGljayhpKVwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxSdWlQcm9ncmVzc1xuICAgICAgICB2LWVsc2UtaWY9XCJ2YXJpYW50ID09PSAncHJvZ3Jlc3MnXCJcbiAgICAgICAgOmNsYXNzPVwiJHN0eWxlLnByb2dyZXNzXCJcbiAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgOnZhbHVlPVwiKG1vZGVsVmFsdWUgLyBwYWdlcykgKiAxMDBcIlxuICAgICAgLz5cbiAgICAgIDxSdWlCdXR0b25cbiAgICAgICAgdi1pZj1cIiFoaWRlQnV0dG9uc1wiXG4gICAgICAgIDpjbGFzcz1cInsgWyRzdHlsZS5hcnJvd19fYnV0dG9uXTogYXJyb3dCdXR0b25zIH1cIlxuICAgICAgICA6ZGlzYWJsZWQ9XCJtb2RlbFZhbHVlID49IHBhZ2VzXCJcbiAgICAgICAgOmljb249XCJhcnJvd0J1dHRvbnNcIlxuICAgICAgICA6dmFyaWFudD1cImFycm93QnV0dG9ucyA/ICdvdXRsaW5lZCcgOiAndGV4dCdcIlxuICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICBAY2xpY2s9XCJvbk5leHQoKVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIHYtaWY9XCIhYXJyb3dCdXR0b25zXCI+TmV4dDwvc3Bhbj5cbiAgICAgICAgPFJ1aUljb25cbiAgICAgICAgICB2LWVsc2VcbiAgICAgICAgICA6c2l6ZT1cIjI0XCJcbiAgICAgICAgICBuYW1lPVwibHUtYXJyb3ctcmlnaHRcIlxuICAgICAgICAvPlxuICAgICAgICA8dGVtcGxhdGVcbiAgICAgICAgICB2LWlmPVwiIWFycm93QnV0dG9uc1wiXG4gICAgICAgICAgI2FwcGVuZFxuICAgICAgICA+XG4gICAgICAgICAgPFJ1aUljb25cbiAgICAgICAgICAgIDpzaXplPVwiMThcIlxuICAgICAgICAgICAgbmFtZT1cImx1LWNoZXZyb24tcmlnaHRcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICA8L1J1aUJ1dHRvbj5cbiAgICA8L3RlbXBsYXRlPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBsYW5nPVwic2Nzc1wiIG1vZHVsZT5cbi5mb290ZXItc3RlcHBlciB7XG4gIEBhcHBseSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gZ2FwLXgtNCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0xNTA7XG5cbiAgLm51bWVyaWMge1xuICAgIEBhcHBseSB0ZXh0LXJ1aS10ZXh0O1xuICB9XG5cbiAgLmJ1bGxldHMsXG4gIC5waWxscyB7XG4gICAgQGFwcGx5IGZsZXg7XG5cbiAgICAuYnVsbGV0LFxuICAgIC5waWxsIHtcbiAgICAgIEBhcHBseSByb3VuZGVkLWZ1bGwgaC0yIGJnLWJsYWNrL1swLjI2XSB0cmFuc2l0aW9uLWNvbG9ycztcblxuICAgICAgJi5hY3RpdmUge1xuICAgICAgICBAYXBwbHkgYmctcnVpLXByaW1hcnk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmJ1bGxldCB7XG4gICAgICBAYXBwbHkgaG92ZXI6YmctcnVpLWdyZXktMzAwIGN1cnNvci1wb2ludGVyO1xuXG4gICAgICAmLmFjdGl2ZSB7XG4gICAgICAgIEBhcHBseSBob3ZlcjpiZy1ydWktcHJpbWFyeTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAucGlsbCB7XG4gICAgICBAYXBwbHkgYmctcnVpLWdyZXktMjAwO1xuICAgIH1cbiAgfVxuXG4gIC5idWxsZXRzIHtcbiAgICBAYXBwbHkgZ2FwLXgtMTtcblxuICAgIC5idWxsZXQge1xuICAgICAgQGFwcGx5IHctMjtcbiAgICB9XG4gIH1cblxuICAucGlsbHMge1xuICAgIEBhcHBseSB3LWZ1bGwgZ2FwLXgtMztcblxuICAgIC5waWxsIHtcbiAgICAgIEBhcHBseSB3LWZ1bGw7XG4gICAgfVxuICB9XG5cbiAgLnByb2dyZXNzIHtcbiAgICBAYXBwbHkgbWF4LXctWzYwJV07XG4gIH1cblxuICAuYXJyb3dfX2J1dHRvbiB7XG4gICAgQGFwcGx5IGJnLXdoaXRlIGRpc2FibGVkOmJnLXdoaXRlLzYwICN7IWltcG9ydGFudH07XG4gIH1cbn1cblxuOmdsb2JhbCguZGFyaykge1xuICAuZm9vdGVyLXN0ZXBwZXIge1xuICAgIC5idWxsZXRzLFxuICAgIC5waWxscyB7XG4gICAgICAuYnVsbGV0LFxuICAgICAgLnBpbGwge1xuICAgICAgICBAYXBwbHkgYmctcnVpLWdyZXktMzAwO1xuXG4gICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICBAYXBwbHkgYmctcnVpLXByaW1hcnk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmJ1bGxldCB7XG4gICAgICAgIEBhcHBseSBob3ZlcjpiZy1ydWktZ3JleS00MDA7XG5cbiAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgIEBhcHBseSBob3ZlcjpiZy1ydWktcHJpbWFyeTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC5idWxsZXRzIHtcbiAgICAgIC5idWxsZXQge1xuICAgICAgICBAYXBwbHkgYmctd2hpdGUvMzA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmFycm93X19idXR0b24ge1xuICAgICAgQGFwcGx5IGRpc2FibGVkOmJnLVtyZ2IoNTAsNTAsNTApXSAjeyFpbXBvcnRhbnR9O1xuICAgIH1cbiAgfVxufVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG5pbXBvcnQgUnVpSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvaWNvbnMvUnVpSWNvbi52dWUnO1xuaW1wb3J0IHsgU3RlcHBlclN0YXRlIH0gZnJvbSAnQC90eXBlcy9zdGVwcGVyJztcblxud2l0aERlZmF1bHRzKFxuICBkZWZpbmVQcm9wczx7XG4gICAgc3RhdGU/OiBTdGVwcGVyU3RhdGU7XG4gICAgaW5kZXg6IG51bWJlcjtcbiAgfT4oKSxcbiAge1xuICAgIHN0YXRlOiBTdGVwcGVyU3RhdGUuaW5hY3RpdmUsXG4gIH0sXG4pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPHNwYW4gOmNsYXNzPVwiWyRzdHlsZS5pbmRpY2F0b3IsICRzdHlsZVtzdGF0ZV1dXCI+XG4gICAgPHNwYW5cbiAgICAgIHYtaWY9XCJzdGF0ZSA9PT0gU3RlcHBlclN0YXRlLmluYWN0aXZlXCJcbiAgICAgIDpjbGFzcz1cIiRzdHlsZS50ZXh0XCJcbiAgICA+XG4gICAgICB7eyBpbmRleCB9fVxuICAgIDwvc3Bhbj5cbiAgICA8UnVpSWNvblxuICAgICAgdi1lbHNlLWlmPVwic3RhdGUgPT09IFN0ZXBwZXJTdGF0ZS5hY3RpdmVcIlxuICAgICAgbmFtZT1cImx1LWNoZWNrYm94LWJsYW5rLWNpcmNsZS1maWxsXCJcbiAgICAgIDpzaXplPVwiMjBcIlxuICAgIC8+XG4gICAgPFJ1aUljb25cbiAgICAgIHYtZWxzZS1pZj1cInN0YXRlID09PSBTdGVwcGVyU3RhdGUuZG9uZVwiXG4gICAgICA6Y2xhc3M9XCIkc3R5bGUudGV4dFwiXG4gICAgICA6c2l6ZT1cIjIwXCJcbiAgICAgIG5hbWU9XCJsdS1jaGVja1wiXG4gICAgLz5cbiAgICA8c3BhblxuICAgICAgdi1lbHNlXG4gICAgICA6Y2xhc3M9XCIkc3R5bGUudGV4dFwiXG4gICAgPlxuICAgICAge3sgaW5kZXggfX1cbiAgICA8L3NwYW4+XG4gIDwvc3Bhbj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBsYW5nPVwic2Nzc1wiIG1vZHVsZT5cbi5pbmRpY2F0b3Ige1xuICBAYXBwbHkgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtZnVsbCBoLTEwIHctMTAgc2hyaW5rLTAgYm9yZGVyIHRleHQtd2hpdGUgYmctcnVpLXByaW1hcnkgYm9yZGVyLXJ1aS1wcmltYXJ5O1xuXG4gICYuaW5hY3RpdmUge1xuICAgIEBhcHBseSB0ZXh0LXhzIGJnLXdoaXRlO1xuXG4gICAgLnRleHQge1xuICAgICAgQGFwcGx5IHRleHQtcnVpLXByaW1hcnk7XG4gICAgfVxuICB9XG59XG5cbjpnbG9iYWwoLmRhcmspIHtcbiAgLmluZGljYXRvciB7XG4gICAgQGFwcGx5IGJnLXdoaXRlIHRleHQtcnVpLXByaW1hcnk7XG5cbiAgICAmLmluYWN0aXZlIHtcbiAgICAgIEBhcHBseSB0ZXh0LXdoaXRlIGJvcmRlci13aGl0ZSBiZy1ydWktcHJpbWFyeTtcblxuICAgICAgLnRleHQge1xuICAgICAgICBAYXBwbHkgdGV4dC13aGl0ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuaW1wb3J0IFJ1aUljb24gZnJvbSAnQC9jb21wb25lbnRzL2ljb25zL1J1aUljb24udnVlJztcbmltcG9ydCB7IFN0ZXBwZXJTdGF0ZSB9IGZyb20gJ0AvdHlwZXMvc3RlcHBlcic7XG5cbndpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczx7XG4gIHN0YXRlPzogU3RlcHBlclN0YXRlO1xuICBpbmRleDogbnVtYmVyO1xufT4oKSwge1xuICBzdGF0ZTogU3RlcHBlclN0YXRlLmluYWN0aXZlLFxufSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8c3BhbiA6Y2xhc3M9XCJbJHN0eWxlLmluZGljYXRvciwgJHN0eWxlW3N0YXRlXV1cIj5cbiAgICA8c3BhblxuICAgICAgdi1pZj1cInN0YXRlID09PSBTdGVwcGVyU3RhdGUuaW5hY3RpdmUgfHwgc3RhdGUgPT09IFN0ZXBwZXJTdGF0ZS5hY3RpdmVcIlxuICAgICAgOmNsYXNzPVwiJHN0eWxlLnRleHRcIlxuICAgID5cbiAgICAgIHt7IGluZGV4IH19XG4gICAgPC9zcGFuPlxuICAgIDxSdWlJY29uXG4gICAgICB2LWVsc2UtaWY9XCJzdGF0ZSA9PT0gU3RlcHBlclN0YXRlLmRvbmVcIlxuICAgICAgOmNsYXNzPVwiJHN0eWxlLnRleHRcIlxuICAgICAgOnNpemU9XCIyMFwiXG4gICAgICBuYW1lPVwibHUtY2hlY2tcIlxuICAgIC8+XG4gICAgPFJ1aUljb25cbiAgICAgIHYtZWxzZS1pZj1cInN0YXRlID09PSBTdGVwcGVyU3RhdGUuc3VjY2Vzc1wiXG4gICAgICBuYW1lPVwibHUtY2lyY2xlLWNoZWNrXCJcbiAgICAvPlxuICAgIDxSdWlJY29uXG4gICAgICB2LWVsc2UtaWY9XCJzdGF0ZSA9PT0gU3RlcHBlclN0YXRlLmVycm9yXCJcbiAgICAgIG5hbWU9XCJsdS1jaXJjbGUtYWxlcnRcIlxuICAgIC8+XG4gICAgPFJ1aUljb25cbiAgICAgIHYtZWxzZS1pZj1cInN0YXRlID09PSBTdGVwcGVyU3RhdGUud2FybmluZ1wiXG4gICAgICBuYW1lPVwibHUtdHJpYW5nbGUtYWxlcnRcIlxuICAgIC8+XG4gICAgPFJ1aUljb25cbiAgICAgIHYtZWxzZS1pZj1cInN0YXRlID09PSBTdGVwcGVyU3RhdGUuaW5mb1wiXG4gICAgICBuYW1lPVwibHUtaW5mb1wiXG4gICAgLz5cbiAgPC9zcGFuPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgbW9kdWxlPlxuLmluZGljYXRvciB7XG4gIEBhcHBseSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1mdWxsIGgtNiB3LTY7XG5cbiAgLnRleHQge1xuICAgIEBhcHBseSB0ZXh0LXJ1aS1kYXJrLXRleHQ7XG4gIH1cblxuICAmLmluYWN0aXZlIHtcbiAgICBAYXBwbHkgYmctY3VycmVudCB0ZXh0LXhzO1xuICB9XG5cbiAgJi5hY3RpdmUsXG4gICYuZG9uZSB7XG4gICAgQGFwcGx5IGJnLXJ1aS1wcmltYXJ5IHJvdW5kZWQtZnVsbCB0ZXh0LXhzO1xuICB9XG59XG5cbjpnbG9iYWwoLmRhcmspIHtcbiAgLmluZGljYXRvciB7XG4gICAgJi5pbmFjdGl2ZSB7XG4gICAgICAudGV4dCB7XG4gICAgICAgIEBhcHBseSB0ZXh0LXJ1aS1saWdodC10ZXh0LXNlY29uZGFyeTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmFjdGl2ZSxcbiAgICAmLmRvbmUge1xuICAgICAgLnRleHQge1xuICAgICAgICBAYXBwbHkgdGV4dC1ydWktbGlnaHQtdGV4dDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuaW1wb3J0IFJ1aVByb2dyZXNzIGZyb20gJ0AvY29tcG9uZW50cy9wcm9ncmVzcy9SdWlQcm9ncmVzcy52dWUnO1xuaW1wb3J0IFJ1aVN0ZXBwZXJDdXN0b21JY29uIGZyb20gJ0AvY29tcG9uZW50cy9zdGVwcGVycy9SdWlTdGVwcGVyQ3VzdG9tSWNvbi52dWUnO1xuaW1wb3J0IFJ1aVN0ZXBwZXJJY29uIGZyb20gJ0AvY29tcG9uZW50cy9zdGVwcGVycy9SdWlTdGVwcGVySWNvbi52dWUnO1xuaW1wb3J0IHtcbiAgU3RlcHBlck9yaWVudGF0aW9uLFxuICBTdGVwcGVyU3RhdGUsXG4gIHR5cGUgU3RlcHBlclN0ZXAsXG59IGZyb20gJ0AvdHlwZXMvc3RlcHBlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvcHMge1xuICBzdGVwPzogbnVtYmVyO1xuICBzdGVwczogU3RlcHBlclN0ZXBbXTtcbiAgaWNvblRvcD86IGJvb2xlYW47XG4gIGN1c3RvbT86IGJvb2xlYW47XG4gIHRpdGxlQ2xhc3M/OiBzdHJpbmc7XG4gIHN1YnRpdGxlQ2xhc3M/OiBzdHJpbmc7XG4gIG9yaWVudGF0aW9uPzogU3RlcHBlck9yaWVudGF0aW9uO1xuICBrZWVwQWN0aXZlVmlzaWJsZT86IGJvb2xlYW47XG59XG5cbmRlZmluZU9wdGlvbnMoe1xuICBuYW1lOiAnUnVpU3RlcHBlcicsXG59KTtcblxuY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgc3RlcDogdW5kZWZpbmVkLFxuICBpY29uVG9wOiBmYWxzZSxcbiAgY3VzdG9tOiBmYWxzZSxcbiAgdGl0bGVDbGFzczogJycsXG4gIHN1YnRpdGxlQ2xhc3M6ICcnLFxuICBvcmllbnRhdGlvbjogU3RlcHBlck9yaWVudGF0aW9uLmhvcml6b250YWwsXG4gIGtlZXBBY3RpdmVWaXNpYmxlOiB0cnVlLFxufSk7XG5cbmNvbnN0IHsgY3VzdG9tLCBzdGVwcywgc3RlcCwgb3JpZW50YXRpb24sIGtlZXBBY3RpdmVWaXNpYmxlIH0gPSB0b1JlZnMocHJvcHMpO1xuXG4vLyBhdXRvbWF0aWNhbGx5IHNldCBzdGVwIHN0YXRlIHRvIHN0ZXBwZXIuXG5jb25zdCByZW5kZXJlZFN0ZXAgPSBjb21wdXRlZCgoKSA9PiB7XG4gIGNvbnN0IGN1cnJlbnRTdGVwID0gZ2V0KHN0ZXApO1xuICBjb25zdCBzdGVwc1ZhbCA9IGdldChzdGVwcyk7XG5cbiAgaWYgKCFpc0RlZmluZWQoY3VycmVudFN0ZXApKVxuICAgIHJldHVybiBzdGVwc1ZhbDtcblxuICByZXR1cm4gc3RlcHNWYWwubWFwKCh0ZXh0LCBpbmRleCkgPT4ge1xuICAgIGxldCBzdGVwU3RhdHVzOiBTdGVwcGVyU3RhdGUgPSBTdGVwcGVyU3RhdGUuaW5hY3RpdmU7XG5cbiAgICBpZiAoaW5kZXggKyAxID09PSBjdXJyZW50U3RlcClcbiAgICAgIHN0ZXBTdGF0dXMgPSBTdGVwcGVyU3RhdGUuYWN0aXZlO1xuXG4gICAgaWYgKGluZGV4ICsgMSA8IGN1cnJlbnRTdGVwKVxuICAgICAgc3RlcFN0YXR1cyA9IFN0ZXBwZXJTdGF0ZS5kb25lO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnRleHQsXG4gICAgICBzdGF0ZTogc3RlcFN0YXR1cyxcbiAgICB9O1xuICB9KTtcbn0pO1xuXG5jb25zdCB3cmFwcGVyUmVmID0gcmVmPEhUTUxEaXZFbGVtZW50PigpO1xuXG53YXRjaChzdGVwLCAoKSA9PiB7XG4gIGlmIChcbiAgICAhZ2V0KGtlZXBBY3RpdmVWaXNpYmxlKVxuICAgIHx8IGdldChvcmllbnRhdGlvbikgIT09IFN0ZXBwZXJPcmllbnRhdGlvbi5ob3Jpem9udGFsXG4gICkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIG5leHRUaWNrKCgpID0+IHtcbiAgICBjb25zdCBlbGVtID0gZ2V0KHdyYXBwZXJSZWYpO1xuICAgIGlmIChlbGVtKSB7XG4gICAgICBjb25zdCBhY3RpdmVTdGVwID0gZWxlbS5xdWVyeVNlbGVjdG9yKCcuYWN0aXZlLXN0ZXAnKTtcbiAgICAgIGFjdGl2ZVN0ZXA/LnNjcm9sbEludG9WaWV3Py4oe1xuICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgICAgIGlubGluZTogJ2NlbnRlcicsXG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xufSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgcmVmPVwid3JhcHBlclJlZlwiXG4gICAgOmNsYXNzPVwiW1xuICAgICAgJHN0eWxlLnN0ZXBwZXIsXG4gICAgICAkc3R5bGVbb3JpZW50YXRpb24gPz8gJyddLFxuICAgICAgeyBbJHN0eWxlWydpY29uLXRvcCddXTogaWNvblRvcCwgWyRzdHlsZS5jdXN0b21dOiBjdXN0b20gfSxcbiAgICBdXCJcbiAgICBjbGFzcz1cIm5vLXNjcm9sbGJhciBvdmVyZmxvdy1hdXRvXCJcbiAgPlxuICAgIDx0ZW1wbGF0ZVxuICAgICAgdi1mb3I9XCIoeyB0aXRsZSwgZGVzY3JpcHRpb24sIHN0YXRlLCBsb2FkaW5nIH0sIGluZGV4KSBpbiByZW5kZXJlZFN0ZXBcIlxuICAgICAgOmtleT1cImluZGV4XCJcbiAgICA+XG4gICAgICA8aHJcbiAgICAgICAgdi1pZj1cImluZGV4ID4gMFwiXG4gICAgICAgIDpjbGFzcz1cIiRzdHlsZS5kaXZpZGVyXCJcbiAgICAgIC8+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAkc3R5bGUuc3RlcCxcbiAgICAgICAgICAkc3R5bGVbc3RhdGUgPz8gU3RlcHBlclN0YXRlLmluYWN0aXZlXSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICAnYWN0aXZlLXN0ZXAnOiBzdGF0ZSA9PT0gU3RlcHBlclN0YXRlLmFjdGl2ZSxcbiAgICAgICAgICB9LFxuICAgICAgICBdXCJcbiAgICAgID5cbiAgICAgICAgPHNsb3RcbiAgICAgICAgICBuYW1lPVwiaWNvblwiXG4gICAgICAgICAgdi1iaW5kPVwieyBzdGF0ZSwgaW5kZXg6IGluZGV4ICsgMSB9XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSBmbGV4IHB5LTJcIj5cbiAgICAgICAgICAgIDxSdWlTdGVwcGVyQ3VzdG9tSWNvblxuICAgICAgICAgICAgICB2LWlmPVwiY3VzdG9tXCJcbiAgICAgICAgICAgICAgOmluZGV4PVwiaW5kZXggKyAxXCJcbiAgICAgICAgICAgICAgOnN0YXRlPVwic3RhdGVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxSdWlTdGVwcGVySWNvblxuICAgICAgICAgICAgICB2LWVsc2VcbiAgICAgICAgICAgICAgOmluZGV4PVwiaW5kZXggKyAxXCJcbiAgICAgICAgICAgICAgOnN0YXRlPVwic3RhdGVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxSdWlQcm9ncmVzc1xuICAgICAgICAgICAgICB2LWlmPVwibG9hZGluZ1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYWJzb2x1dGUgbGVmdC0xLzIgdG9wLTEvMiB0cmFuc2Zvcm0gLXRyYW5zbGF0ZS14LTEvMiAtdHJhbnNsYXRlLXktMS8yXCJcbiAgICAgICAgICAgICAgc2l6ZT1cIjMyXCJcbiAgICAgICAgICAgICAgdmFyaWFudD1cImluZGV0ZXJtaW5hdGVcIlxuICAgICAgICAgICAgICBjaXJjdWxhclxuICAgICAgICAgICAgICB0aGlja25lc3M9XCIyXCJcbiAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2xvdD5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIHYtaWY9XCJ0aXRsZSB8fCBkZXNjcmlwdGlvblwiXG4gICAgICAgICAgOmNsYXNzPVwiJHN0eWxlLmxhYmVsXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICB2LWlmPVwidGl0bGVcIlxuICAgICAgICAgICAgOmNsYXNzPVwiWyRzdHlsZS50aXRsZSwgeyBbdGl0bGVDbGFzc106IGN1c3RvbSB9XVwiXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtc3VidGl0bGUtMlwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgdGl0bGUgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIHYtaWY9XCJkZXNjcmlwdGlvblwiXG4gICAgICAgICAgICA6Y2xhc3M9XCJbJHN0eWxlLnN1YnRpdGxlLCB7IFtzdWJ0aXRsZUNsYXNzXTogY3VzdG9tIH1dXCJcbiAgICAgICAgICAgIGNsYXNzPVwidGV4dC1jYXB0aW9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBkZXNjcmlwdGlvbiB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L3RlbXBsYXRlPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBsYW5nPVwic2Nzc1wiIG1vZHVsZT5cbiRjb2xvcnM6ICdlcnJvcicsICd3YXJuaW5nJywgJ2luZm8nLCAnc3VjY2Vzcyc7XG4uc3RlcHBlciB7XG4gIEBhcHBseSBmbGV4O1xuXG4gICYuaG9yaXpvbnRhbCB7XG4gICAgQGFwcGx5IHdoaXRlc3BhY2Utbm93cmFwIGxnOndoaXRlc3BhY2Utbm9ybWFsO1xuICB9XG5cbiAgJi52ZXJ0aWNhbCB7XG4gICAgQGFwcGx5IGZsZXgtY29sIGlubGluZS1mbGV4O1xuXG4gICAgLnN0ZXAge1xuICAgICAgQGFwcGx5IHB4LTAgcHktNjtcbiAgICB9XG5cbiAgICAuZGl2aWRlciB7XG4gICAgICBAYXBwbHkgYmxvY2sgbWluLWgtWzNyZW1dIG1pbi13LTAgbWF4LWgtZnVsbCBoLWZ1bGwgc2VsZi1zdGFydCAtbXktNCBteC0zIGJvcmRlci1sIGJvcmRlci1ydWktZ3JleS00MDA7XG4gICAgfVxuXG4gICAgJi5jdXN0b20ge1xuICAgICAgLmRpdmlkZXIge1xuICAgICAgICBAYXBwbHkgbXgtNTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmljb24tdG9wIHtcbiAgICAgIC5kaXZpZGVyIHtcbiAgICAgICAgQGFwcGx5IHNlbGYtY2VudGVyIG14LWF1dG87XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLnN0ZXAge1xuICAgIEBhcHBseSBmbGV4IGl0ZW1zLWNlbnRlciBweC02IHJlbGF0aXZlO1xuXG4gICAgLmluZGljYXRvciB7XG4gICAgICBAYXBwbHkgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtZnVsbCBoLTYgdy02IG1pbi13LVsxLjVyZW1dO1xuICAgIH1cblxuICAgIC5sYWJlbCB7XG4gICAgICBAYXBwbHkgZmxleCBmbGV4LWNvbCBpdGVtcy1zdGFydCB0ZXh0LWxlZnQgbWwtMjtcbiAgICB9XG5cbiAgICAmLmluYWN0aXZlIHtcbiAgICAgIEBhcHBseSB0ZXh0LXJ1aS10ZXh0LWRpc2FibGVkO1xuXG4gICAgICAudGl0bGUge1xuICAgICAgICBAYXBwbHkgdGV4dC1ydWktdGV4dC1zZWNvbmRhcnk7XG4gICAgICB9XG5cbiAgICAgIC5zdWJ0aXRsZSB7XG4gICAgICAgIEBhcHBseSB0ZXh0LXJ1aS10ZXh0O1xuICAgICAgfVxuICAgIH1cblxuICAgICYuYWN0aXZlLFxuICAgICYuZG9uZSB7XG4gICAgICBAYXBwbHkgdGV4dC1ydWktdGV4dDtcblxuICAgICAgLnN1YnRpdGxlIHtcbiAgICAgICAgQGFwcGx5IHRleHQtcnVpLXRleHQtc2Vjb25kYXJ5O1xuICAgICAgfVxuICAgIH1cblxuICAgIEBlYWNoICRjb2xvciBpbiAkY29sb3JzIHtcbiAgICAgICYuI3skY29sb3J9IHtcbiAgICAgICAgQGFwcGx5IHRleHQtcnVpLSN7JGNvbG9yfTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmLmljb24tdG9wIHtcbiAgICAuc3RlcCB7XG4gICAgICBAYXBwbHkgZmxleC1jb2w7XG5cbiAgICAgIC5sYWJlbCB7XG4gICAgICAgIEBhcHBseSBtbC0wIG10LTQgaXRlbXMtY2VudGVyIHRleHQtY2VudGVyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5kaXZpZGVyIHtcbiAgICBAYXBwbHkgYmxvY2sgbWF4LXctZnVsbCBtaW4tdy1bMXJlbV0gaC0wIG1heC1oLTAgc2VsZi1jZW50ZXIgLW14LTQgbXktMCBib3JkZXItdCBib3JkZXItcnVpLWdyZXktNDAwO1xuICAgIGZsZXg6IDEgMSAwO1xuICB9XG5cbiAgJi5jdXN0b20ge1xuICAgIC5zdGVwIHtcbiAgICAgIC5kaXZpZGVyIHtcbiAgICAgICAgQGFwcGx5IGJvcmRlci1ydWktcHJpbWFyeS1saWdodGVyO1xuICAgICAgfVxuXG4gICAgICAmLmluYWN0aXZlIHtcbiAgICAgICAgQGFwcGx5IHRleHQtcnVpLXRleHQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbmltcG9ydCB0eXBlIHsgUnVpSWNvbnMgfSBmcm9tICdAL2ljb25zJztcbmltcG9ydCBSdWlCdXR0b24gZnJvbSAnQC9jb21wb25lbnRzL2J1dHRvbnMvYnV0dG9uL1J1aUJ1dHRvbi52dWUnO1xuaW1wb3J0IFJ1aUljb24gZnJvbSAnQC9jb21wb25lbnRzL2ljb25zL1J1aUljb24udnVlJztcblxuZXhwb3J0IGludGVyZmFjZSBQcm9wcyB7XG4gIGV4cGFuZGVkOiBib29sZWFuO1xuICBpY29uPzogUnVpSWNvbnM7XG59XG5cbmRlZmluZU9wdGlvbnMoe1xuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxufSk7XG5cbndpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwgeyBpY29uOiAnbHUtY2hldnJvbi1kb3duJyB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxSdWlCdXR0b25cbiAgICA6Y2xhc3M9XCJbXG4gICAgICAkc3R5bGUudHJfX2V4cGFuZGVyX2J1dHRvbixcbiAgICAgIHtcbiAgICAgICAgWyRzdHlsZS50cl9fZXhwYW5kZXJfYnV0dG9uX29wZW4gPz8gJyddOiBleHBhbmRlZCxcbiAgICAgIH0sXG4gICAgXVwiXG4gICAgaWNvblxuICAgIHNpemU9XCJzbVwiXG4gICAgdmFyaWFudD1cInRleHRcIlxuICAgIHYtYmluZD1cIiRhdHRyc1wiXG4gID5cbiAgICA8c2xvdD5cbiAgICAgIDxSdWlJY29uXG4gICAgICAgIDpjbGFzcz1cIiRzdHlsZS50cl9fZXhwYW5kZXJfYnV0dG9uX2ljb25cIlxuICAgICAgICA6bmFtZT1cImljb25cIlxuICAgICAgLz5cbiAgICA8L3Nsb3Q+XG4gIDwvUnVpQnV0dG9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgbW9kdWxlPlxuLnRyX19leHBhbmRlciB7XG4gICZfYnV0dG9uIHtcbiAgICBAYXBwbHkgcmVsYXRpdmU7XG5cbiAgICAmX2ljb24ge1xuICAgICAgQGFwcGx5IHRyYW5zaXRpb24gcm90YXRlLTA7XG4gICAgfVxuXG4gICAgJl9vcGVuIC50cl9fZXhwYW5kZXJfYnV0dG9uX2ljb24ge1xuICAgICAgQGFwcGx5IHJvdGF0ZS0xODA7XG4gICAgfVxuICB9XG59XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cCBnZW5lcmljPVwiVCBleHRlbmRzIG9iamVjdCwgSyBleHRlbmRzIGtleW9mIFQgPSBrZXlvZiBUXCI+XG5pbXBvcnQgUnVpQnV0dG9uIGZyb20gJ0AvY29tcG9uZW50cy9idXR0b25zL2J1dHRvbi9SdWlCdXR0b24udnVlJztcbmltcG9ydCBSdWlDaGVja2JveCBmcm9tICdAL2NvbXBvbmVudHMvZm9ybXMvY2hlY2tib3gvUnVpQ2hlY2tib3gudnVlJztcbmltcG9ydCBSdWlJY29uIGZyb20gJ0AvY29tcG9uZW50cy9pY29ucy9SdWlJY29uLnZ1ZSc7XG5pbXBvcnQgUnVpQmFkZ2UgZnJvbSAnQC9jb21wb25lbnRzL292ZXJsYXlzL2JhZGdlL1J1aUJhZGdlLnZ1ZSc7XG5pbXBvcnQgUnVpUHJvZ3Jlc3MgZnJvbSAnQC9jb21wb25lbnRzL3Byb2dyZXNzL1J1aVByb2dyZXNzLnZ1ZSc7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHNvcnRhYmxlIGNvbHVtbiBuYW1lIGZvciBhIGdpdmVuIHR5cGUuXG4gKiBUaGUgY29sdW1uIG5hbWUgbXVzdCBiZSBhIGtleSBvZiB0aGUgcGFzc2VkIGRhdGEgb2JqZWN0IHR5cGUuXG4gKiBAdGVtcGxhdGUgVCAtIFRoZSB0eXBlIG9mIHRoZSBkYXRhIGluIHRoZSBjb2x1bW4uXG4gKi9cbmV4cG9ydCB0eXBlIFRhYmxlUm93S2V5PFQ+ID0ga2V5b2YgVCBleHRlbmRzIHN0cmluZyA/IGtleW9mIFQgOiBuZXZlcjtcblxuZXhwb3J0IGludGVyZmFjZSBCYXNlVGFibGVDb2x1bW48VD4ge1xuICBrZXk6IFRhYmxlUm93S2V5PFQ+IHwgc3RyaW5nO1xuICBzb3J0YWJsZT86IGJvb2xlYW47XG4gIGRpcmVjdGlvbj86ICdhc2MnIHwgJ2Rlc2MnO1xuICBhbGlnbj86ICdzdGFydCcgfCAnY2VudGVyJyB8ICdlbmQnO1xuICBjbGFzcz86IHN0cmluZztcbiAgY2VsbENsYXNzPzogc3RyaW5nO1xuICBjb2xzcGFuPzogc3RyaW5nIHwgbnVtYmVyO1xuICByb3dzcGFuPzogc3RyaW5nIHwgbnVtYmVyO1xuXG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgc29ydGFibGUgdGFibGUgY29sdW1uLlxuICogVGhpcyBpcyB1c2VkIHRvIGVuc3VyZSB0aGF0IHdoZW4gdXNpbmcgc29ydGFibGUgd2l0aCBhIHRydWUgdmFsdWUsXG4gKiB0aGUga2V5IG1hdGNoZXMgdG8gYW4gYWN0dWFsIHByb3BlcnR5IG9mIHRoZSBvYmplY3QgcGFzc2VkLlxuICpcbiAqIEB0ZW1wbGF0ZSBUIC0gVGhlIHR5cGUgb2YgZGF0YSBpbiB0aGUgdGFibGUgY29sdW1uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNvcnRhYmxlVGFibGVDb2x1bW48VD4gZXh0ZW5kcyBCYXNlVGFibGVDb2x1bW48VD4ge1xuICBzb3J0YWJsZTogdHJ1ZTtcbn1cblxuLyoqXG4gKiBBbiBpbnRlcmZhY2UgcmVwcmVzZW50aW5nIGEgY29sdW1uIGluIGEgdGFibGUgdGhhdCBjYW5ub3QgYmUgc29ydGVkLlxuICogVGhpcyBjYW4gYmUgbWFwcGVkIHRvIGFuIGFjdHVhbCBwcm9wZXJ0eSBvZiB0aGUgb2JqZWN0IG9yIHRvIGEgdmlydHVhbCBjb2x1bW4uXG4gKlxuICogQHR5cGVwYXJhbSBUIC0gVGhlIHR5cGUgb2YgZGF0YSBpbiB0aGUgdGFibGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTm9uZVNvcnRhYmxlVGFibGVDb2x1bW48VD4gZXh0ZW5kcyBCYXNlVGFibGVDb2x1bW48VD4ge1xuICBzb3J0YWJsZT86IGZhbHNlO1xufVxuXG5leHBvcnQgdHlwZSBUYWJsZUNvbHVtbjxUPiA9XG4gIHwgU29ydGFibGVUYWJsZUNvbHVtbjxUPlxuICB8IE5vbmVTb3J0YWJsZVRhYmxlQ29sdW1uPFQ+O1xuXG5leHBvcnQgaW50ZXJmYWNlIFNvcnRDb2x1bW48VD4ge1xuICBjb2x1bW4/OiBUYWJsZVJvd0tleTxUPjtcbiAgZGlyZWN0aW9uOiAnYXNjJyB8ICdkZXNjJztcbn1cblxuZXhwb3J0IHR5cGUgVGFibGVTb3J0RGF0YTxUPiA9IFNvcnRDb2x1bW48VD4gfCBTb3J0Q29sdW1uPFQ+W10gfCB1bmRlZmluZWQ7XG5cbmV4cG9ydCB0eXBlIFRhYmxlUm93S2V5RGF0YTxUPiA9IFRhYmxlUm93S2V5PFQ+IHwgVGFibGVSb3dLZXk8VD5bXSB8IHVuZGVmaW5lZDtcblxuZXhwb3J0IGludGVyZmFjZSBHcm91cERhdGE8VD4ge1xuICBrZXk6IHN0cmluZztcbiAgdmFsdWU/OiBQYXJ0aWFsPFQ+O1xufVxuXG5leHBvcnQgdHlwZSBHcm91cEtleTxUPiA9IFRhYmxlQ29sdW1uPFQ+WydrZXknXTtcblxuZXhwb3J0IHR5cGUgR3JvdXBLZXlzPFQ+ID0gR3JvdXBLZXk8VD4gfCBHcm91cEtleTxUPltdIHwgdW5kZWZpbmVkO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BzPFQ+IHtcbiAgbG9hZGluZz86IGJvb2xlYW47XG4gIHN0aWNreUhlYWRlcj86IGJvb2xlYW47XG4gIHN0aWNrPzogYm9vbGVhbjtcbiAgc2VsZWN0YWJsZT86IGJvb2xlYW47XG4gIGRpc2FibGVDaGVja0FsbD86IGJvb2xlYW47XG4gIG5vRGF0YT86IGJvb2xlYW47XG4gIGNvbHNwYW4/OiBudW1iZXI7XG4gIGNvbHVtbnM/OiBUYWJsZUNvbHVtbjxUPltdO1xuICBjYXBpdGFsaXplSGVhZGVycz86IGJvb2xlYW47XG4gIGlzQWxsU2VsZWN0ZWQ/OiBib29sZWFuO1xuICBpbmRldGVybWluYXRlPzogYm9vbGVhbjtcbiAgZGVuc2U/OiBib29sZWFuO1xuICBzb3J0ZWRNYXA/OiBQYXJ0aWFsPFJlY29yZDxUYWJsZVJvd0tleTxUPiwgU29ydENvbHVtbjxUPj4+O1xuICBzb3J0RGF0YT86IFRhYmxlU29ydERhdGE8VD47XG4gIGNvbHVtbkF0dHI/OiBrZXlvZiBUYWJsZUNvbHVtbjxUPjtcbiAgZGF0YUlkPzogc3RyaW5nO1xufVxuXG5jb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wczxUPj4oKSwge1xuICBsb2FkaW5nOiBmYWxzZSxcbiAgc3RpY2t5SGVhZGVyOiBmYWxzZSxcbiAgc3RpY2s6IGZhbHNlLFxuICBzZWxlY3RhYmxlOiBmYWxzZSxcbiAgZGlzYWJsZUNoZWNrQWxsOiBmYWxzZSxcbiAgbm9EYXRhOiBmYWxzZSxcbiAgY29sc3BhbjogMCxcbiAgY29sdW1uczogdW5kZWZpbmVkLFxuICBjYXBpdGFsaXplSGVhZGVyczogZmFsc2UsXG4gIGlzQWxsU2VsZWN0ZWQ6IGZhbHNlLFxuICBpbmRldGVybWluYXRlOiBmYWxzZSxcbiAgZGVuc2U6IGZhbHNlLFxuICBzb3J0ZWRNYXA6ICgpID0+ICh7fSksXG4gIGNvbHVtbkF0dHI6ICdsYWJlbCcsXG4gIHNvcnREYXRhOiB1bmRlZmluZWQsXG4gIGRhdGFJZDogJ2hlYWQtbWFpbicsXG59KTtcblxuY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPHtcbiAgKGU6ICdzZWxlY3Q6YWxsJywgdmFsdWU6IGJvb2xlYW4pOiB2b2lkO1xuICAoXG4gICAgZTogJ3NvcnQnLFxuICAgIHZhbHVlOiB7XG4gICAgICBrZXk6IFRhYmxlUm93S2V5PFQ+O1xuICAgICAgZGlyZWN0aW9uPzogJ2FzYycgfCAnZGVzYyc7XG4gICAgfSxcbiAgKTogdm9pZDtcbn0+KCk7XG5cbmZ1bmN0aW9uIG9uU29ydCh7IGtleSwgZGlyZWN0aW9uIH06IFRhYmxlQ29sdW1uPFQ+KSB7XG4gIHJldHVybiBlbWl0KCdzb3J0Jywge1xuICAgIGtleToga2V5IGFzIFRhYmxlUm93S2V5PFQ+LFxuICAgIGRpcmVjdGlvbjogZGlyZWN0aW9uID8/ICdhc2MnLFxuICB9KTtcbn1cblxuY29uc3Qgb25Ub2dnbGVBbGwgPSAoY2hlY2tlZDogYm9vbGVhbikgPT4gZW1pdCgnc2VsZWN0OmFsbCcsIGNoZWNrZWQpO1xuXG5jb25zdCBpc1NvcnRlZEJ5ID0gKGtleTogVGFibGVDb2x1bW48VD5bJ2tleSddKSA9PiBrZXkgaW4gcHJvcHMuc29ydGVkTWFwO1xuXG5mdW5jdGlvbiBnZXRTb3J0SW5kZXgoa2V5OiBUYWJsZUNvbHVtbjxUPlsna2V5J10pOiBudW1iZXIge1xuICBjb25zdCBzb3J0QnkgPSBwcm9wcy5zb3J0RGF0YTtcblxuICBpZiAoIXNvcnRCeSB8fCAhQXJyYXkuaXNBcnJheShzb3J0QnkpIHx8ICFpc1NvcnRlZEJ5KGtleSkpXG4gICAgcmV0dXJuIC0xO1xuXG4gIHJldHVybiBzb3J0QnkuZmluZEluZGV4KHNvcnQgPT4gc29ydC5jb2x1bW4gPT09IGtleSk7XG59XG5cbmZ1bmN0aW9uIGdldFNvcnREaXJlY3Rpb24oa2V5OiBUYWJsZUNvbHVtbjxUPlsna2V5J10pIHtcbiAgcmV0dXJuIHByb3BzLnNvcnRlZE1hcFtrZXldPy5kaXJlY3Rpb247XG59XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8dGhlYWRcbiAgICA6ZGF0YS1pZD1cImRhdGFJZFwiXG4gICAgOmNsYXNzPVwiW1xuICAgICAgJHN0eWxlLnRoZWFkLFxuICAgICAge1xuICAgICAgICBbJHN0eWxlLnN0aWNreV9faGVhZGVyXTogc3RpY2t5SGVhZGVyLFxuICAgICAgICBbJHN0eWxlLnN0aWNrX190b3BdOiBzdGljayxcbiAgICAgICAgWyRzdHlsZS5kZW5zZV06IGRlbnNlLFxuICAgICAgfSxcbiAgICBdXCJcbiAgPlxuICAgIDx0ciA6Y2xhc3M9XCIkc3R5bGUudHJcIj5cbiAgICAgIDx0aFxuICAgICAgICB2LWlmPVwic2VsZWN0YWJsZVwiXG4gICAgICAgIDpjbGFzcz1cIiRzdHlsZS5jaGVja2JveFwiXG4gICAgICAgIHNjb3BlPVwiY29sXCJcbiAgICAgICAgY29sc3Bhbj1cIjFcIlxuICAgICAgICByb3dzcGFuPVwiMVwiXG4gICAgICA+XG4gICAgICAgIDxSdWlDaGVja2JveFxuICAgICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVDaGVja0FsbFwiXG4gICAgICAgICAgOmluZGV0ZXJtaW5hdGU9XCJpbmRldGVybWluYXRlXCJcbiAgICAgICAgICA6bW9kZWwtdmFsdWU9XCJpc0FsbFNlbGVjdGVkXCJcbiAgICAgICAgICA6c2l6ZT1cImRlbnNlID8gJ3NtJyA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICBkYXRhLWN5PVwidGFibGUtdG9nZ2xlLWNoZWNrLWFsbFwiXG4gICAgICAgICAgaGlkZS1kZXRhaWxzXG4gICAgICAgICAgQHVwZGF0ZTptb2RlbC12YWx1ZT1cIm9uVG9nZ2xlQWxsKCRldmVudClcIlxuICAgICAgICAvPlxuICAgICAgPC90aD5cblxuICAgICAgPHRoXG4gICAgICAgIHYtZm9yPVwiKGNvbHVtbiwgaW5kZXgpIGluIGNvbHVtbnNcIlxuICAgICAgICA6a2V5PVwiaW5kZXhcIlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJHN0eWxlLnRoLFxuICAgICAgICAgIGNvbHVtbi5jbGFzcyxcbiAgICAgICAgICAkc3R5bGVbYGFsaWduX18ke2NvbHVtbi5hbGlnbiA/PyAnc3RhcnQnfWBdLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNhcGl0YWxpemU6ICFjYXBpdGFsaXplSGVhZGVycyxcbiAgICAgICAgICAgIFskc3R5bGUuc29ydGFibGVdOiBjb2x1bW4uc29ydGFibGUsXG4gICAgICAgICAgfSxcbiAgICAgICAgXVwiXG4gICAgICAgIHNjb3BlPVwiY29sXCJcbiAgICAgICAgOmNvbHNwYW49XCJjb2x1bW4uY29sc3BhbiA/PyAxXCJcbiAgICAgICAgOnJvd3NwYW49XCJjb2x1bW4ucm93c3BhbiA/PyAxXCJcbiAgICAgID5cbiAgICAgICAgPHNsb3RcbiAgICAgICAgICA6Y29sdW1uPVwiY29sdW1uXCJcbiAgICAgICAgICA6bmFtZT1cImBoZWFkZXIuJHtjb2x1bW4ua2V5LnRvU3RyaW5nKCl9YFwiXG4gICAgICAgID5cbiAgICAgICAgICA8UnVpQmFkZ2VcbiAgICAgICAgICAgIHYtaWY9XCJjb2x1bW4uc29ydGFibGVcIlxuICAgICAgICAgICAgOm1vZGVsLXZhbHVlPVwiZ2V0U29ydEluZGV4KGNvbHVtbi5rZXkpID49IDBcIlxuICAgICAgICAgICAgOnRleHQ9XCJgJHtnZXRTb3J0SW5kZXgoY29sdW1uLmtleSkgKyAxfWBcIlxuICAgICAgICAgICAgOm9mZnNldC15PVwiZGVuc2UgPyA4IDogMFwiXG4gICAgICAgICAgICBjb2xvcj1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICBzaXplPVwic21cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxSdWlCdXR0b25cbiAgICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgICAgICRzdHlsZS5zb3J0X19idXR0b24sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgWyRzdHlsZS5zb3J0X19hY3RpdmUgPz8gJyddOiBpc1NvcnRlZEJ5KGNvbHVtbi5rZXkpLFxuICAgICAgICAgICAgICAgICAgWyRzdHlsZVtgc29ydF9fJHtnZXRTb3J0RGlyZWN0aW9uKGNvbHVtbi5rZXkpfWBdID8/ICcnXTogaXNTb3J0ZWRCeShcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uLmtleSxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXVwiXG4gICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgQGNsaWNrPVwib25Tb3J0KGNvbHVtbilcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiA6Y2xhc3M9XCIkc3R5bGUuY29sdW1uX190ZXh0XCI+XG4gICAgICAgICAgICAgICAgPHNsb3RcbiAgICAgICAgICAgICAgICAgIDpuYW1lPVwiYGhlYWRlci50ZXh0LiR7Y29sdW1uLmtleS50b1N0cmluZygpfWBcIlxuICAgICAgICAgICAgICAgICAgOmNvbHVtbj1cImNvbHVtblwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgY29sdW1uW2NvbHVtbkF0dHJdIH19XG4gICAgICAgICAgICAgICAgPC9zbG90PlxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPHRlbXBsYXRlXG4gICAgICAgICAgICAgICAgdi1pZj1cImNvbHVtbi5hbGlnbiA9PT0gJ2VuZCdcIlxuICAgICAgICAgICAgICAgICNwcmVwZW5kXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8UnVpSWNvblxuICAgICAgICAgICAgICAgICAgOmNsYXNzPVwiJHN0eWxlLnNvcnRfX2ljb25cIlxuICAgICAgICAgICAgICAgICAgbmFtZT1cImx1LWFycm93LWRvd25cIlxuICAgICAgICAgICAgICAgICAgc2l6ZT1cIjE4XCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuXG4gICAgICAgICAgICAgIDx0ZW1wbGF0ZSAjYXBwZW5kPlxuICAgICAgICAgICAgICAgIDxSdWlJY29uXG4gICAgICAgICAgICAgICAgICB2LWlmPVwiY29sdW1uLmFsaWduICE9PSAnZW5kJ1wiXG4gICAgICAgICAgICAgICAgICA6Y2xhc3M9XCIkc3R5bGUuc29ydF9faWNvblwiXG4gICAgICAgICAgICAgICAgICBuYW1lPVwibHUtYXJyb3ctZG93blwiXG4gICAgICAgICAgICAgICAgICBzaXplPVwiMThcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICA8L1J1aUJ1dHRvbj5cbiAgICAgICAgICA8L1J1aUJhZGdlPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICB2LWVsc2VcbiAgICAgICAgICAgIDpjbGFzcz1cIiRzdHlsZS5jb2x1bW5fX3RleHRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzbG90XG4gICAgICAgICAgICAgIDpuYW1lPVwiYGhlYWRlci50ZXh0LiR7Y29sdW1uLmtleS50b1N0cmluZygpfWBcIlxuICAgICAgICAgICAgICA6Y29sdW1uPVwiY29sdW1uXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgY29sdW1uW2NvbHVtbkF0dHJdIH19XG4gICAgICAgICAgICA8L3Nsb3Q+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L3Nsb3Q+XG4gICAgICA8L3RoPlxuICAgIDwvdHI+XG4gICAgPHRyXG4gICAgICB2LWlmPVwibG9hZGluZ1wiXG4gICAgICA6Y2xhc3M9XCJbJHN0eWxlLnRoZWFkX19sb2FkZXIsICRzdHlsZS50aGVhZF9fbG9hZGVyX2xpbmVhcl1cIlxuICAgID5cbiAgICAgIDx0aFxuICAgICAgICA6Y2xhc3M9XCIkc3R5bGUucHJvZ3Jlc3NcIlxuICAgICAgICA6Y29sc3Bhbj1cImNvbHNwYW5cIlxuICAgICAgICBzY29wZT1cImNvbFwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgOmNsYXNzPVwiJHN0eWxlLnByb2dyZXNzX193cmFwcGVyXCI+XG4gICAgICAgICAgPFJ1aVByb2dyZXNzXG4gICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgdmFyaWFudD1cImluZGV0ZXJtaW5hdGVcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC90aD5cbiAgICA8L3RyPlxuICA8L3RoZWFkPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIG1vZHVsZSBsYW5nPVwic2Nzc1wiPlxuLnRoZWFkIHtcbiAgQGFwcGx5IGRpdmlkZS15IGRpdmlkZS1ibGFjay9bMC4xMl07XG5cbiAgJi5zdGlja3lfX2hlYWRlciB7XG4gICAgQGFwcGx5IHRvcC0wIHotMTAgYWJzb2x1dGU7XG5cbiAgICAmLnN0aWNrX190b3Age1xuICAgICAgQGFwcGx5IGZpeGVkO1xuXG4gICAgICB0ciB7XG4gICAgICAgIHRoIHtcbiAgICAgICAgICBAYXBwbHkgYmctd2hpdGUgYm9yZGVyLWIgYm9yZGVyLWItYmxhY2svWzAuMTJdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJi5kZW5zZSB7XG4gICAgLnRyIHtcbiAgICAgIC50aCB7XG4gICAgICAgIEBhcHBseSBweS1bMC4zOHJlbV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLnRyIHtcbiAgICAudGgge1xuICAgICAgQGFwcGx5IHAtNDtcblxuICAgICAgJi5hbGlnbl9fc3RhcnQge1xuICAgICAgICBAYXBwbHkgdGV4dC1sZWZ0IHJ0bDp0ZXh0LXJpZ2h0O1xuICAgICAgfVxuXG4gICAgICAmLmFsaWduX19jZW50ZXIge1xuICAgICAgICBAYXBwbHkgdGV4dC1jZW50ZXI7XG4gICAgICB9XG5cbiAgICAgICYuYWxpZ25fX2VuZCB7XG4gICAgICAgIEBhcHBseSB0ZXh0LXJpZ2h0IHJ0bDp0ZXh0LWxlZnQ7XG4gICAgICB9XG5cbiAgICAgICYuc29ydGFibGUge1xuICAgICAgICAmLmFsaWduX19zdGFydCB7XG4gICAgICAgICAgQGFwcGx5IHBsLTM7XG4gICAgICAgIH1cblxuICAgICAgICAmLmFsaWduX19jZW50ZXIge1xuICAgICAgICAgIEBhcHBseSBweC0zO1xuICAgICAgICAgIC5zb3J0X19idXR0b24ge1xuICAgICAgICAgICAgQGFwcGx5IG1sLTY7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi5hbGlnbl9fZW5kIHtcbiAgICAgICAgICBAYXBwbHkgcHItMztcbiAgICAgICAgfVxuXG4gICAgICAgIC5zb3J0X19idXR0b24ge1xuICAgICAgICAgIEBhcHBseSBpbmxpbmUtZmxleDtcblxuICAgICAgICAgICY6aG92ZXIgLnNvcnRfX2ljb24ge1xuICAgICAgICAgICAgQGFwcGx5IG9wYWNpdHktNjA7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgJi5zb3J0IHtcbiAgICAgICAgICAgICZfX2FjdGl2ZSB7XG4gICAgICAgICAgICAgIC5zb3J0X19pY29uIHtcbiAgICAgICAgICAgICAgICBAYXBwbHkgb3BhY2l0eS0xMDA7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJl9fZGVzYyB7XG4gICAgICAgICAgICAgIC5zb3J0X19pY29uIHtcbiAgICAgICAgICAgICAgICBAYXBwbHkgcm90YXRlLTA7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJl9fYXNjIHtcbiAgICAgICAgICAgICAgLnNvcnRfX2ljb24ge1xuICAgICAgICAgICAgICAgIEBhcHBseSByb3RhdGUtMTgwO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLnNvcnRfX2ljb24ge1xuICAgICAgICAgIEBhcHBseSB0cmFuc2l0aW9uIG9wYWNpdHktMCByb3RhdGUtMTgwO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jb2x1bW5fX3RleHQge1xuICAgICAgICBAYXBwbHkgdGV4dC1ydWktdGV4dCBmb250LW1lZGl1bSB0ZXh0LXNtIGxlYWRpbmctNjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAuY2hlY2tib3gge1xuICAgICAgQGFwcGx5IHB4LTIgdy1bMy42MjVyZW1dIG1heC13LVszLjYyNXJlbV07XG4gICAgICBsYWJlbCB7XG4gICAgICAgIEBhcHBseSBtbC0wO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICZfX2xvYWRlciB7XG4gICAgLnByb2dyZXNzIHtcbiAgICAgIEBhcHBseSByZWxhdGl2ZSBweS04O1xuICAgIH1cblxuICAgICZfbGluZWFyIHtcbiAgICAgIEBhcHBseSBib3JkZXItbm9uZTtcblxuICAgICAgLnByb2dyZXNzIHtcbiAgICAgICAgQGFwcGx5IHAtMCBoLTA7XG4gICAgICB9XG5cbiAgICAgIC5wcm9ncmVzc19fd3JhcHBlciB7XG4gICAgICAgIEBhcHBseSBoLTAgLW10LTE7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbjpnbG9iYWwoLmRhcmspIHtcbiAgLnRoZWFkIHtcbiAgICBAYXBwbHkgZGl2aWRlLXkgZGl2aWRlLXdoaXRlL1swLjEyXTtcblxuICAgICYuc3RpY2t5X19oZWFkZXIuc3RpY2tfX3RvcCB7XG4gICAgICB0aCB7XG4gICAgICAgIEBhcHBseSBiZy1bIzEyMTIxMl0gYm9yZGVyLWIgYm9yZGVyLWItd2hpdGUvWzAuMTJdO1xuICAgICAgfVxuICAgIH1cblxuICAgIC50ciB7XG4gICAgICAudGgge1xuICAgICAgICBAYXBwbHkgdGV4dC13aGl0ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuaW1wb3J0IFJ1aUJ1dHRvbiBmcm9tICdAL2NvbXBvbmVudHMvYnV0dG9ucy9idXR0b24vUnVpQnV0dG9uLnZ1ZSc7XG5pbXBvcnQgUnVpTWVudVNlbGVjdCBmcm9tICdAL2NvbXBvbmVudHMvZm9ybXMvc2VsZWN0L1J1aU1lbnVTZWxlY3QudnVlJztcbmltcG9ydCBSdWlJY29uIGZyb20gJ0AvY29tcG9uZW50cy9pY29ucy9SdWlJY29uLnZ1ZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVQYWdpbmF0aW9uRGF0YSB7XG4gIHBhZ2U6IG51bWJlcjtcbiAgdG90YWw6IG51bWJlcjtcbiAgbGltaXQ6IG51bWJlcjtcbiAgbGltaXRzPzogbnVtYmVyW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvcHMge1xuICBtb2RlbFZhbHVlOiBUYWJsZVBhZ2luYXRpb25EYXRhO1xuICBkZW5zZT86IGJvb2xlYW47XG4gIGRpc2FibGVQZXJQYWdlPzogYm9vbGVhbjtcbiAgbG9hZGluZz86IGJvb2xlYW47XG59XG5cbmNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gIGRlbnNlOiBmYWxzZSxcbiAgbG9hZGluZzogZmFsc2UsXG4gIGRpc2FibGVQZXJQYWdlOiBmYWxzZSxcbn0pO1xuXG5jb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8e1xuICAoZTogJ3VwZGF0ZTptb2RlbC12YWx1ZScsIHZhbHVlOiBUYWJsZVBhZ2luYXRpb25EYXRhKTogdm9pZDtcbn0+KCk7XG5cbmNvbnN0IHsgbW9kZWxWYWx1ZSB9ID0gdG9SZWZzKHByb3BzKTtcblxuY29uc3QgdGFibGVEZWZhdWx0cyA9IHVzZVRhYmxlKCk7XG5cbmNvbnN0IGxpbWl0cyA9IGNvbXB1dGVkKCgpID0+IChnZXQobW9kZWxWYWx1ZSkubGltaXRzID8/IGdldCh0YWJsZURlZmF1bHRzLmxpbWl0cykpLm1hcChsaW1pdCA9PiAoeyBsaW1pdCB9KSkpO1xuXG5jb25zdCBjdXJyZW50TGltaXQgPSBjb21wdXRlZCh7XG4gIGdldDogKCkgPT4gZ2V0KG1vZGVsVmFsdWUpLmxpbWl0LFxuICBzZXQ6IGxpbWl0ID0+XG4gICAgZW1pdCgndXBkYXRlOm1vZGVsLXZhbHVlJywge1xuICAgICAgLi4uZ2V0KG1vZGVsVmFsdWUpLFxuICAgICAgbGltaXQ6IE51bWJlcihsaW1pdCksXG4gICAgICBwYWdlOiAxLFxuICAgIH0pLFxufSk7XG5cbmNvbnN0IHBhZ2VzID0gY29tcHV0ZWQoKCkgPT4ge1xuICBjb25zdCB7IGxpbWl0LCB0b3RhbCB9ID0gZ2V0KG1vZGVsVmFsdWUpO1xuICBpZiAoIXRvdGFsKVxuICAgIHJldHVybiAwO1xuXG4gIHJldHVybiBNYXRoLmNlaWwodG90YWwgLyBsaW1pdCk7XG59KTtcblxuY29uc3QgcmFuZ2VzID0gY29tcHV0ZWQoKCkgPT4ge1xuICBjb25zdCBzZWdtZW50cyA9IFtdO1xuXG4gIGZvciAobGV0IHBhZ2UgPSAxOyBwYWdlIDw9IGdldChwYWdlcyk7IHBhZ2UrKylcbiAgICBzZWdtZW50cy5wdXNoKHsgcGFnZSwgdGV4dDogcGFnZVJhbmdlVGV4dChwYWdlKSB9KTtcblxuICByZXR1cm4gc2VnbWVudHM7XG59KTtcblxuY29uc3QgaW5kaWNhdG9yVGV4dCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgY29uc3QgeyB0b3RhbCB9ID0gZ2V0KG1vZGVsVmFsdWUpO1xuICByZXR1cm4gYCR7IXRvdGFsID8gJzAgJyA6ICcnfW9mICR7Zm9ybWF0SW50ZWdlcih0b3RhbCl9YDtcbn0pO1xuXG5jb25zdCBjdXJyZW50UmFuZ2UgPSBjb21wdXRlZCh7XG4gIGdldDogKCkgPT4gZ2V0KG1vZGVsVmFsdWUpLnBhZ2UsXG4gIHNldDogcGFnZSA9PlxuICAgIGVtaXQoJ3VwZGF0ZTptb2RlbC12YWx1ZScsIHtcbiAgICAgIC4uLmdldChtb2RlbFZhbHVlKSxcbiAgICAgIHBhZ2UsXG4gICAgfSksXG59KTtcblxuY29uc3QgaGFzUHJldiA9IGNvbXB1dGVkKCgpID0+IGdldChtb2RlbFZhbHVlKS5wYWdlID4gMSk7XG5jb25zdCBoYXNOZXh0ID0gY29tcHV0ZWQoKCkgPT4gZ2V0KHBhZ2VzKSA+IGdldChtb2RlbFZhbHVlKS5wYWdlKTtcblxuZnVuY3Rpb24gZ29Ub1BhZ2UocGFnZTogbnVtYmVyKSB7XG4gIGVtaXQoJ3VwZGF0ZTptb2RlbC12YWx1ZScsIHtcbiAgICAuLi5nZXQobW9kZWxWYWx1ZSksXG4gICAgcGFnZSxcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHBhZ2VSYW5nZVRleHQocGFnZTogbnVtYmVyKSB7XG4gIGNvbnN0IHsgbGltaXQsIHRvdGFsIH0gPSBnZXQobW9kZWxWYWx1ZSk7XG4gIHJldHVybiBgJHtmb3JtYXRJbnRlZ2VyKChwYWdlIC0gMSkgKiBsaW1pdCArIDEpfSAtICR7Zm9ybWF0SW50ZWdlcihcbiAgICBNYXRoLm1pbihwYWdlICogbGltaXQsIHRvdGFsKSxcbiAgKX1gO1xufVxuXG5mdW5jdGlvbiBvbk5hdmlnYXRlKGRlbHRhOiBudW1iZXIpIHtcbiAgZ29Ub1BhZ2UoZ2V0KG1vZGVsVmFsdWUpLnBhZ2UgKyBkZWx0YSk7XG59XG5cbmZ1bmN0aW9uIG9uUHJldigpIHtcbiAgaWYgKCFnZXQoaGFzUHJldikpXG4gICAgcmV0dXJuO1xuXG4gIG9uTmF2aWdhdGUoLTEpO1xufVxuXG5mdW5jdGlvbiBvbk5leHQoKSB7XG4gIGlmICghZ2V0KGhhc05leHQpKVxuICAgIHJldHVybjtcblxuICBvbk5hdmlnYXRlKDEpO1xufVxuXG5mdW5jdGlvbiBvbkZpcnN0KCkge1xuICBpZiAoIWdldChoYXNQcmV2KSlcbiAgICByZXR1cm47XG5cbiAgZ29Ub1BhZ2UoMSk7XG59XG5cbmZ1bmN0aW9uIG9uTGFzdCgpIHtcbiAgaWYgKCFnZXQoaGFzTmV4dCkpXG4gICAgcmV0dXJuO1xuXG4gIGdvVG9QYWdlKGdldChwYWdlcykpO1xufVxuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiA6Y2xhc3M9XCJbJHN0eWxlLndyYXBwZXIsIHsgWyRzdHlsZVsnd3JhcHBlci1kZW5zZSddID8/ICcnXTogZGVuc2UgfV1cIj5cbiAgICA8ZGl2IDpjbGFzcz1cIiRzdHlsZS5saW1pdFwiPlxuICAgICAgPHNwYW4gOmNsYXNzPVwiJHN0eWxlLmxpbWl0X190ZXh0XCI+Um93cyBwZXIgcGFnZTo8L3NwYW4+XG4gICAgICA8UnVpTWVudVNlbGVjdFxuICAgICAgICB2LW1vZGVsPVwiY3VycmVudExpbWl0XCJcbiAgICAgICAgOm9wdGlvbnM9XCJsaW1pdHNcIlxuICAgICAgICA6ZGlzYWJsZWQ9XCJsb2FkaW5nIHx8IGRpc2FibGVQZXJQYWdlXCJcbiAgICAgICAgbGFiZWwtY2xhc3M9XCIhdGV4dC14cyAhbWluLWgtOFwiXG4gICAgICAgIG5hbWU9XCJsaW1pdFwiXG4gICAgICAgIGtleS1hdHRyPVwibGltaXRcIlxuICAgICAgICB0ZXh0LWF0dHI9XCJsaW1pdFwiXG4gICAgICAgIGhpZGUtZGV0YWlsc1xuICAgICAgICBkZW5zZVxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IDpjbGFzcz1cIiRzdHlsZS5yYW5nZXNcIj5cbiAgICAgIDxzcGFuIDpjbGFzcz1cIiRzdHlsZS5yYW5nZXNfX3RleHRcIj5JdGVtcyAjPC9zcGFuPlxuICAgICAgPFJ1aU1lbnVTZWxlY3RcbiAgICAgICAgdi1pZj1cInJhbmdlcy5sZW5ndGggPiAwXCJcbiAgICAgICAgdi1tb2RlbD1cImN1cnJlbnRSYW5nZVwiXG4gICAgICAgIDpvcHRpb25zPVwicmFuZ2VzXCJcbiAgICAgICAgOmRpc2FibGVkPVwibG9hZGluZ1wiXG4gICAgICAgIGxhYmVsLWNsYXNzPVwiIXRleHQteHMgIW1pbi1oLThcIlxuICAgICAgICBuYW1lPVwicmFuZ2VzXCJcbiAgICAgICAga2V5LWF0dHI9XCJwYWdlXCJcbiAgICAgICAgdGV4dC1hdHRyPVwidGV4dFwiXG4gICAgICAgIGhpZGUtZGV0YWlsc1xuICAgICAgICBkZW5zZVxuICAgICAgLz5cbiAgICAgIDxzcGFuIDpjbGFzcz1cIiRzdHlsZS5pbmRpY2F0b3JcIj5cbiAgICAgICAge3sgaW5kaWNhdG9yVGV4dCB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgOmNsYXNzPVwiJHN0eWxlLm5hdmlnYXRpb25cIj5cbiAgICAgIDxSdWlCdXR0b25cbiAgICAgICAgOnNpemU9XCJkZW5zZSA/ICdzbScgOiB1bmRlZmluZWRcIlxuICAgICAgICA6ZGlzYWJsZWQ9XCIhaGFzUHJldiB8fCBsb2FkaW5nXCJcbiAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICBpY29uXG4gICAgICAgIEBjbGljaz1cIm9uRmlyc3QoKVwiXG4gICAgICA+XG4gICAgICAgIDxSdWlJY29uIG5hbWU9XCJsdS1jaGV2cm9ucy1sZWZ0XCIgLz5cbiAgICAgIDwvUnVpQnV0dG9uPlxuICAgICAgPFJ1aUJ1dHRvblxuICAgICAgICA6c2l6ZT1cImRlbnNlID8gJ3NtJyA6IHVuZGVmaW5lZFwiXG4gICAgICAgIDpkaXNhYmxlZD1cIiFoYXNQcmV2IHx8IGxvYWRpbmdcIlxuICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgIGljb25cbiAgICAgICAgQGNsaWNrPVwib25QcmV2KClcIlxuICAgICAgPlxuICAgICAgICA8UnVpSWNvbiBuYW1lPVwibHUtY2hldnJvbi1sZWZ0XCIgLz5cbiAgICAgIDwvUnVpQnV0dG9uPlxuICAgICAgPFJ1aUJ1dHRvblxuICAgICAgICA6c2l6ZT1cImRlbnNlID8gJ3NtJyA6IHVuZGVmaW5lZFwiXG4gICAgICAgIDpkaXNhYmxlZD1cIiFoYXNOZXh0IHx8IGxvYWRpbmdcIlxuICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgIGljb25cbiAgICAgICAgQGNsaWNrPVwib25OZXh0KClcIlxuICAgICAgPlxuICAgICAgICA8UnVpSWNvbiBuYW1lPVwibHUtY2hldnJvbi1yaWdodFwiIC8+XG4gICAgICA8L1J1aUJ1dHRvbj5cbiAgICAgIDxSdWlCdXR0b25cbiAgICAgICAgOnNpemU9XCJkZW5zZSA/ICdzbScgOiB1bmRlZmluZWRcIlxuICAgICAgICA6ZGlzYWJsZWQ9XCIhaGFzTmV4dCB8fCBsb2FkaW5nXCJcbiAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICBpY29uXG4gICAgICAgIEBjbGljaz1cIm9uTGFzdCgpXCJcbiAgICAgID5cbiAgICAgICAgPFJ1aUljb24gbmFtZT1cImx1LWNoZXZyb25zLXJpZ2h0XCIgLz5cbiAgICAgIDwvUnVpQnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBtb2R1bGUgbGFuZz1cInNjc3NcIj5cbi53cmFwcGVyIHtcbiAgQGFwcGx5IHJlbGF0aXZlIGZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWVuZCBnYXAteC00IGdhcC15LTA7XG5cbiAgLmxpbWl0IHtcbiAgICBAYXBwbHkgZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0yIHRleHQtY2FwdGlvbjtcblxuICAgICZfX3RleHQge1xuICAgICAgQGFwcGx5IHRleHQtcnVpLXRleHQtc2Vjb25kYXJ5IHdoaXRlc3BhY2Utbm93cmFwIHB5LTM7XG4gICAgfVxuICB9XG5cbiAgLnJhbmdlcyB7XG4gICAgQGFwcGx5IGZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMiB0ZXh0LWNhcHRpb24gcHItMjtcblxuICAgICZfX3RleHQge1xuICAgICAgQGFwcGx5IHRleHQtcnVpLXRleHQtc2Vjb25kYXJ5IHdoaXRlc3BhY2Utbm93cmFwIHB5LTM7XG4gICAgfVxuICB9XG5cbiAgLmluZGljYXRvciB7XG4gICAgQGFwcGx5IHRleHQtcnVpLXRleHQgdGV4dC1jYXB0aW9uIHdoaXRlc3BhY2Utbm93cmFwO1xuICB9XG5cbiAgLm5hdmlnYXRpb24ge1xuICAgIEBhcHBseSBmbGV4IGl0ZW1zLWNlbnRlcjtcbiAgfVxuXG4gICYtZGVuc2Uge1xuICAgIEBhcHBseSBnYXAteC0yO1xuICB9XG59XG48L3N0eWxlPlxuIiwiZXhwb3J0IGRlZmF1bHQgXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNjc3ZnJTIweG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUyMHdpZHRoPScxNTInJTIwaGVpZ2h0PScxMjQnJTIwZmlsbD0nbm9uZSclM2UlM2NjaXJjbGUlMjBjeD0nNzYnJTIwY3k9JzU4JyUyMHI9JzUyJyUyMGZpbGw9JyUyM2VhZWFlYicvJTNlJTNjZyUyMGZpbGw9JyUyM2YyZjJmMyclM2UlM2NjaXJjbGUlMjBjeD0nMjEnJTIwY3k9JzI1JyUyMHI9JzUnLyUzZSUzY2NpcmNsZSUyMGN4PScxOCclMjBjeT0nMTA5JyUyMHI9JzcnLyUzZSUzY2NpcmNsZSUyMGN4PScxNDUnJTIwY3k9JzQxJyUyMHI9JzcnLyUzZSUzY2NpcmNsZSUyMGN4PScxMzQnJTIwY3k9JzE0JyUyMHI9JzQnLyUzZSUzYy9nJTNlJTNjZyUyMGZpbHRlcj0ndXJsKCUyM0IpJyUzZSUzY3BhdGglMjBkPSdNNzYlMjAzNi4wNjNsNC41MzYtMS45LTQuNTM1JTIwMS45MzJWOTAuMTlsNDEuNzk1LTE3LjUxNFYxOC41NTdsLjIwNC0uMDg1LS4yMDQtLjA5di0uMDkxbC0uMTA0LjA0NUw3Ni4zMyUyMDAlMjAzNCUyMDE4LjAzMWwuMi4wODYtLjIlMjA1My44OTklMjA0MiUyMDE4LjE0MVYzNi4wNjN6JyUyMGZpbGw9JyUyM2ZhZmFmYScvJTNlJTNjcGF0aCUyMGQ9J003NiUyMDM2LjA2M3Y1NC4wOTVMMzQlMjA3Mi4wMTdsLjItNTMuODk5TDc2JTIwMzYuMDYzeiclMjBmaWxsPSd1cmwoJTIzQyknLyUzZSUzY3BhdGglMjBkPSdNNzYuMDAxJTIwMzYuMDk1VjkwLjE5bDQxLjc5Ni0xNy41MTRWMTguMjlMNzYuMDAxJTIwMzYuMDk1eiclMjBmaWxsPSd1cmwoJTIzRCknLyUzZSUzY3BhdGglMjBkPSdNNzYlMjAzNi4wNjNsNDItMTcuNTkyTDc2LjMzJTIwMCUyMDM0JTIwMTguMDMxbDQyJTIwMTguMDMxeiclMjBmaWxsPSclMjNmMmYyZjMnLyUzZSUzY3BhdGglMjBkPSdNNDkuODMyJTIwMTEuMjg3bDQxLjg0JTIwMTguMjExLjM4JTIwMTMuMjcxJTIwMTEuNzA2LTQuODMtLjM1NC0xMy4zNTVMNjAuMzI3JTIwNi44MTdsLTEwLjQ5NSUyMDQuNDd6JyUyMGZpbGw9JyUyM2VhZWFlYicvJTNlJTNjL2clM2UlM2NtYXNrJTIwaWQ9J0EnJTIwbWFza1VuaXRzPSd1c2VyU3BhY2VPblVzZSclMjB4PSc1MiclMjB5PSc2OCclMjB3aWR0aD0nNDgnJTIwaGVpZ2h0PSc0OCclMjBtYXNrLXR5cGU9J2FscGhhJyUzZSUzY3BhdGglMjB0cmFuc2Zvcm09J3RyYW5zbGF0ZSg1MiUyMDY4KSclMjBmaWxsPSd1cmwoJTIzRSknJTIwZD0nTTAlMjAwaDQ4djQ4SDB6Jy8lM2UlM2MvbWFzayUzZSUzY2clMjBtYXNrPSd1cmwoJTIzQSknJTNlJTNjY2lyY2xlJTIwY3g9Jzc2JyUyMGN5PSc5MiclMjByPScyMy41JyUyMGZpbGw9JyUyM2ZhZmFmYSclMjBzdHJva2U9JyUyM2VhZWFlYicvJTNlJTNjL2clM2UlM2NyZWN0JTIweD0nNjAnJTIweT0nNzYnJTIwd2lkdGg9JzMyJyUyMGhlaWdodD0nMzInJTIwcng9JzE2JyUyMGZpbGw9JyUyMzAwMCclMjBmaWxsLW9wYWNpdHk9Jy4zJy8lM2UlM2NnJTIwY2xpcC1wYXRoPSd1cmwoJTIzRiknJTNlJTNjcGF0aCUyMGQ9J003NiUyMDg4LjY2N1Y5Mm0wJTIwMy4zMzNoLjAwOE04NC4zMzQlMjA5MmMwJTIwNC42MDItMy43MzElMjA4LjMzMy04LjMzMyUyMDguMzMzcy04LjMzMy0zLjczLTguMzMzLTguMzMzJTIwMy43MzEtOC4zMzMlMjA4LjMzMy04LjMzMyUyMDguMzMzJTIwMy43MzElMjA4LjMzMyUyMDguMzMzeiclMjBzdHJva2U9JyUyM2ZmZiclMjBzdHJva2Utd2lkdGg9JzEuNjcnJTIwc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyUyMHN0cm9rZS1saW5lam9pbj0ncm91bmQnLyUzZSUzYy9nJTNlJTNjZGVmcyUzZSUzY2ZpbHRlciUyMGlkPSdCJyUyMHg9JzE0JyUyMHk9JzAnJTIwd2lkdGg9JzEyNCclMjBoZWlnaHQ9JzEzMC4xOSclMjBmaWx0ZXJVbml0cz0ndXNlclNwYWNlT25Vc2UnJTIwY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSdzUkdCJyUzZSUzY2ZlRmxvb2QlMjBmbG9vZC1vcGFjaXR5PScwJyUyMHJlc3VsdD0nQScvJTNlJTNjZmVDb2xvck1hdHJpeCUyMGluPSdTb3VyY2VBbHBoYSclMjB2YWx1ZXM9JzAlMjAwJTIwMCUyMDAlMjAwJTIwMCUyMDAlMjAwJTIwMCUyMDAlMjAwJTIwMCUyMDAlMjAwJTIwMCUyMDAlMjAwJTIwMCUyMDEyNyUyMDAnJTIwcmVzdWx0PSdCJy8lM2UlM2NmZU1vcnBob2xvZ3klMjByYWRpdXM9JzQnJTIwaW49J1NvdXJjZUFscGhhJyUyMHJlc3VsdD0nQycvJTNlJTNjZmVPZmZzZXQlMjBkeT0nOCcvJTNlJTNjZmVHYXVzc2lhbkJsdXIlMjBzdGREZXZpYXRpb249JzQnLyUzZSUzY2ZlQ29tcG9zaXRlJTIwaW4yPSdCJyUyMG9wZXJhdG9yPSdvdXQnLyUzZSUzY2ZlQ29sb3JNYXRyaXglMjB2YWx1ZXM9JzAlMjAwJTIwMCUyMDAlMjAwLjA2Mjc0NTElMjAwJTIwMCUyMDAlMjAwJTIwMC4wOTQxMTc2JTIwMCUyMDAlMjAwJTIwMCUyMDAuMTU2ODYzJTIwMCUyMDAlMjAwJTIwMC4wMyUyMDAnLyUzZSUzY2ZlQmxlbmQlMjBpbjI9J0EnJTIwcmVzdWx0PSdDJy8lM2UlM2NmZUNvbG9yTWF0cml4JTIwaW49J1NvdXJjZUFscGhhJyUyMHZhbHVlcz0nMCUyMDAlMjAwJTIwMCUyMDAlMjAwJTIwMCUyMDAlMjAwJTIwMCUyMDAlMjAwJTIwMCUyMDAlMjAwJTIwMCUyMDAlMjAwJTIwMTI3JTIwMCclMjByZXN1bHQ9J0InLyUzZSUzY2ZlTW9ycGhvbG9neSUyMHJhZGl1cz0nNCclMjBpbj0nU291cmNlQWxwaGEnLyUzZSUzY2ZlT2Zmc2V0JTIwZHk9JzIwJy8lM2UlM2NmZUdhdXNzaWFuQmx1ciUyMHN0ZERldmlhdGlvbj0nMTInLyUzZSUzY2ZlQ29tcG9zaXRlJTIwaW4yPSdCJyUyMG9wZXJhdG9yPSdvdXQnLyUzZSUzY2ZlQ29sb3JNYXRyaXglMjB2YWx1ZXM9JzAlMjAwJTIwMCUyMDAlMjAwLjA2Mjc0NTElMjAwJTIwMCUyMDAlMjAwJTIwMC4wOTQxMTc2JTIwMCUyMDAlMjAwJTIwMCUyMDAuMTU2ODYzJTIwMCUyMDAlMjAwJTIwMC4wOCUyMDAnLyUzZSUzY2ZlQmxlbmQlMjBpbjI9J0MnLyUzZSUzY2ZlQmxlbmQlMjBpbj0nU291cmNlR3JhcGhpYycvJTNlJTNjL2ZpbHRlciUzZSUzY2xpbmVhckdyYWRpZW50JTIwaWQ9J0MnJTIweDE9JzM0JyUyMHkxPSc3Mi4yODknJTIweDI9JzUwLjU4NyclMjB5Mj0nMjcuMzY3JyUyMGdyYWRpZW50VW5pdHM9J3VzZXJTcGFjZU9uVXNlJyUzZSUzY3N0b3AlMjBzdG9wLWNvbG9yPSclMjNkZWUxZTgnLyUzZSUzY3N0b3AlMjBvZmZzZXQ9JzEnJTIwc3RvcC1jb2xvcj0nJTIzZWZmMWY1Jy8lM2UlM2MvbGluZWFyR3JhZGllbnQlM2UlM2NsaW5lYXJHcmFkaWVudCUyMGlkPSdEJyUyMHgxPSc3NiclMjB5MT0nMzcuMTU0JyUyMHgyPScxMjMuMzU5JyUyMHkyPSc0Ni41ODMnJTIwZ3JhZGllbnRVbml0cz0ndXNlclNwYWNlT25Vc2UnJTNlJTNjc3RvcCUyMHN0b3AtY29sb3I9JyUyM2U0ZTdlYycvJTNlJTNjc3RvcCUyMG9mZnNldD0nMSclMjBzdG9wLWNvbG9yPSclMjNmMmY0ZjcnLyUzZSUzYy9saW5lYXJHcmFkaWVudCUzZSUzY2xpbmVhckdyYWRpZW50JTIwaWQ9J0UnJTIweDE9JzI0JyUyMHkxPScwJyUyMHgyPScyNCclMjB5Mj0nNDgnJTIwZ3JhZGllbnRVbml0cz0ndXNlclNwYWNlT25Vc2UnJTNlJTNjc3RvcC8lM2UlM2NzdG9wJTIwb2Zmc2V0PScxJyUyMHN0b3Atb3BhY2l0eT0nMCcvJTNlJTNjL2xpbmVhckdyYWRpZW50JTNlJTNjY2xpcFBhdGglMjBpZD0nRiclM2UlM2NwYXRoJTIwZmlsbD0nJTIzZmZmJyUyMHRyYW5zZm9ybT0ndHJhbnNsYXRlKDY2JTIwODIpJyUyMGQ9J00wJTIwMGgyMHYyMEgweicvJTNlJTNjL2NsaXBQYXRoJTNlJTNjL2RlZnMlM2UlM2Mvc3ZnJTNlXCIiLCJleHBvcnQgZGVmYXVsdCBcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM2NzdmclMjB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTIwd2lkdGg9JzE1MiclMjBoZWlnaHQ9JzEyNCclMjBmaWxsPSdub25lJyUzZSUzY2NpcmNsZSUyMGN4PSc3NiclMjBjeT0nNTgnJTIwcj0nNTInJTIwZmlsbD0nJTIzMzMzNzQxJy8lM2UlM2NnJTIwZmlsbD0nJTIzMWYyNDJmJyUzZSUzY2NpcmNsZSUyMGN4PScyMSclMjBjeT0nMjUnJTIwcj0nNScvJTNlJTNjY2lyY2xlJTIwY3g9JzE4JyUyMGN5PScxMDknJTIwcj0nNycvJTNlJTNjY2lyY2xlJTIwY3g9JzE0NSclMjBjeT0nNDEnJTIwcj0nNycvJTNlJTNjY2lyY2xlJTIwY3g9JzEzNCclMjBjeT0nMTQnJTIwcj0nNCcvJTNlJTNjL2clM2UlM2NwYXRoJTIwZD0nTTc2JTIwMzYuMDYzbDQuNTM2LTEuOS00LjUzNSUyMDEuOTMyVjkwLjE5bDQxLjc5NS0xNy41MTRWMTguNTU3bC4yMDQtLjA4NS0uMjA0LS4wOXYtLjA5MWwtLjEwNC4wNDVMNzYuMzMlMjAwJTIwMzQlMjAxOC4wMzFsLjIuMDg2LS4yJTIwNTMuODk5JTIwNDIlMjAxOC4xNDFWMzYuMDYzeiclMjBmaWxsPSclMjNmYWZhZmEnLyUzZSUzY3BhdGglMjBkPSdNNzYlMjAzNi4wNjN2NTQuMDk1TDM0JTIwNzIuMDE3bC4yLTUzLjg5OUw3NiUyMDM2LjA2M3onJTIwZmlsbD0ndXJsKCUyM0IpJy8lM2UlM2NwYXRoJTIwZD0nTTc2LjAwMSUyMDM2LjA5NVY5MC4xOWw0MS43OTYtMTcuNTE0VjE4LjI5TDc2LjAwMSUyMDM2LjA5NXonJTIwZmlsbD0ndXJsKCUyM0MpJy8lM2UlM2NwYXRoJTIwZD0nTTc2JTIwMzYuMDYzbDQyLTE3LjU5Mkw3Ni4zMyUyMDAlMjAzNCUyMDE4LjAzMWw0MiUyMDE4LjAzMXonJTIwZmlsbD0nJTIzMWYyNDJmJy8lM2UlM2NwYXRoJTIwZD0nTTQ5LjgzMiUyMDExLjI4N2w0MS44NCUyMDE4LjIxMS4zOCUyMDEzLjI3MSUyMDExLjcwNi00LjgzLS4zNTQtMTMuMzU1TDYwLjMyNyUyMDYuODE3bC0xMC40OTUlMjA0LjQ3eiclMjBmaWxsPSclMjMzMzM3NDEnLyUzZSUzY21hc2slMjBpZD0nQSclMjBtYXNrVW5pdHM9J3VzZXJTcGFjZU9uVXNlJyUyMHg9JzUyJyUyMHk9JzY4JyUyMHdpZHRoPSc0OCclMjBoZWlnaHQ9JzQ4JyUyMG1hc2stdHlwZT0nYWxwaGEnJTNlJTNjcGF0aCUyMHRyYW5zZm9ybT0ndHJhbnNsYXRlKDUyJTIwNjgpJyUyMGZpbGw9J3VybCglMjNEKSclMjBkPSdNMCUyMDBoNDh2NDhIMHonLyUzZSUzYy9tYXNrJTNlJTNjZyUyMG1hc2s9J3VybCglMjNBKSclM2UlM2NjaXJjbGUlMjBjeD0nNzYnJTIwY3k9JzkyJyUyMHI9JzIzLjUnJTIwZmlsbD0nJTIzMTYxYjI2JyUyMHN0cm9rZT0nJTIzMzMzNzQxJy8lM2UlM2MvZyUzZSUzY3JlY3QlMjB4PSc2MCclMjB5PSc3NiclMjB3aWR0aD0nMzInJTIwaGVpZ2h0PSczMiclMjByeD0nMTYnJTIwZmlsbD0nJTIzMTYxYjI2Jy8lM2UlM2NnJTIwY2xpcC1wYXRoPSd1cmwoJTIzRSknJTNlJTNjcGF0aCUyMGQ9J003NiUyMDg4LjY2N1Y5Mm0wJTIwMy4zMzNoLjAwOE04NC4zMzQlMjA5MmMwJTIwNC42MDItMy43MzElMjA4LjMzMy04LjMzMyUyMDguMzMzcy04LjMzMy0zLjczLTguMzMzLTguMzMzJTIwMy43MzEtOC4zMzMlMjA4LjMzMy04LjMzMyUyMDguMzMzJTIwMy43MzElMjA4LjMzMyUyMDguMzMzeiclMjBzdHJva2U9JyUyM2ZmZiclMjBzdHJva2Utd2lkdGg9JzEuNjcnJTIwc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyUyMHN0cm9rZS1saW5lam9pbj0ncm91bmQnLyUzZSUzYy9nJTNlJTNjZGVmcyUzZSUzY2xpbmVhckdyYWRpZW50JTIwaWQ9J0InJTIweDE9JzM0JyUyMHkxPSc3Mi4yODknJTIweDI9JzUwLjU4NyclMjB5Mj0nMjcuMzY3JyUyMGdyYWRpZW50VW5pdHM9J3VzZXJTcGFjZU9uVXNlJyUzZSUzY3N0b3AlMjBzdG9wLWNvbG9yPSclMjMzYjQzNTQnLyUzZSUzY3N0b3AlMjBvZmZzZXQ9JzEnJTIwc3RvcC1jb2xvcj0nJTIzMWYyNDJmJy8lM2UlM2MvbGluZWFyR3JhZGllbnQlM2UlM2NsaW5lYXJHcmFkaWVudCUyMGlkPSdDJyUyMHgxPSc3NiclMjB5MT0nMzcuMTU0JyUyMHgyPScxMjMuMzU5JyUyMHkyPSc0Ni41ODMnJTIwZ3JhZGllbnRVbml0cz0ndXNlclNwYWNlT25Vc2UnJTNlJTNjc3RvcCUyMHN0b3AtY29sb3I9JyUyMzNiNDM1NCcvJTNlJTNjc3RvcCUyMG9mZnNldD0nMSclMjBzdG9wLWNvbG9yPSclMjMxZjI0MmYnLyUzZSUzYy9saW5lYXJHcmFkaWVudCUzZSUzY2xpbmVhckdyYWRpZW50JTIwaWQ9J0QnJTIweDE9JzI0JyUyMHkxPScwJyUyMHgyPScyNCclMjB5Mj0nNDgnJTIwZ3JhZGllbnRVbml0cz0ndXNlclNwYWNlT25Vc2UnJTNlJTNjc3RvcC8lM2UlM2NzdG9wJTIwb2Zmc2V0PScxJyUyMHN0b3Atb3BhY2l0eT0nMCcvJTNlJTNjL2xpbmVhckdyYWRpZW50JTNlJTNjY2xpcFBhdGglMjBpZD0nRSclM2UlM2NwYXRoJTIwZmlsbD0nJTIzZmZmJyUyMHRyYW5zZm9ybT0ndHJhbnNsYXRlKDY2JTIwODIpJyUyMGQ9J00wJTIwMGgyMHYyMEgweicvJTNlJTNjL2NsaXBQYXRoJTNlJTNjL2RlZnMlM2UlM2Mvc3ZnJTNlXCIiLCI8c2NyaXB0XG4gIGxhbmc9XCJ0c1wiXG4gIHNldHVwXG4gIGdlbmVyaWM9XCJUIGV4dGVuZHMgb2JqZWN0LCBJZFR5cGUgZXh0ZW5kcyBrZXlvZiBUID0ga2V5b2YgVFwiXG4+XG5pbXBvcnQgUnVpQnV0dG9uIGZyb20gJ0AvY29tcG9uZW50cy9idXR0b25zL2J1dHRvbi9SdWlCdXR0b24udnVlJztcbmltcG9ydCBSdWlDaGVja2JveCBmcm9tICdAL2NvbXBvbmVudHMvZm9ybXMvY2hlY2tib3gvUnVpQ2hlY2tib3gudnVlJztcbmltcG9ydCBSdWlJY29uIGZyb20gJ0AvY29tcG9uZW50cy9pY29ucy9SdWlJY29uLnZ1ZSc7XG5pbXBvcnQgUnVpVG9vbHRpcCBmcm9tICdAL2NvbXBvbmVudHMvb3ZlcmxheXMvdG9vbHRpcC9SdWlUb29sdGlwLnZ1ZSc7XG5pbXBvcnQgUnVpUHJvZ3Jlc3MgZnJvbSAnQC9jb21wb25lbnRzL3Byb2dyZXNzL1J1aVByb2dyZXNzLnZ1ZSc7XG5pbXBvcnQgUnVpRXhwYW5kQnV0dG9uIGZyb20gJ0AvY29tcG9uZW50cy90YWJsZXMvUnVpRXhwYW5kQnV0dG9uLnZ1ZSc7XG5pbXBvcnQgUnVpVGFibGVIZWFkLCB7IHR5cGUgR3JvdXBEYXRhLCB0eXBlIEdyb3VwS2V5cywgdHlwZSBOb25lU29ydGFibGVUYWJsZUNvbHVtbiwgdHlwZSBTb3J0Q29sdW1uLCB0eXBlIFRhYmxlQ29sdW1uLCB0eXBlIFRhYmxlUm93S2V5LCB0eXBlIFRhYmxlUm93S2V5RGF0YSwgdHlwZSBUYWJsZVNvcnREYXRhIH0gZnJvbSAnQC9jb21wb25lbnRzL3RhYmxlcy9SdWlUYWJsZUhlYWQudnVlJztcbmltcG9ydCBSdWlUYWJsZVBhZ2luYXRpb24sIHsgdHlwZSBUYWJsZVBhZ2luYXRpb25EYXRhIH0gZnJvbSAnQC9jb21wb25lbnRzL3RhYmxlcy9SdWlUYWJsZVBhZ2luYXRpb24udnVlJztcbmltcG9ydCBub0RhdGFQbGFjZWhvbGRlciBmcm9tICdAL2NvbXBvbmVudHMvdGFibGVzL3RhYmxlX25vX2RhdGFfcGxhY2Vob2xkZXIuc3ZnJztcbmltcG9ydCBub0RhdGFQbGFjZWhvbGRlckRhcmsgZnJvbSAnQC9jb21wb25lbnRzL3RhYmxlcy90YWJsZV9ub19kYXRhX3BsYWNlaG9sZGVyX2Rhcmsuc3ZnJztcbmltcG9ydCB7IGFzc2VydCB9IGZyb20gJ0AvdXRpbHMvYXNzZXJ0JztcblxuZXhwb3J0IGludGVyZmFjZSBUYWJsZU9wdGlvbnM8VD4ge1xuICBwYWdpbmF0aW9uPzogVGFibGVQYWdpbmF0aW9uRGF0YTtcbiAgc29ydD86IFRhYmxlU29ydERhdGE8VD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR3JvdXBIZWFkZXI8VD4ge1xuICBfX2hlYWRlcl9fOiB0cnVlO1xuICBpZGVudGlmaWVyOiBzdHJpbmc7XG4gIGdyb3VwOiBQYXJ0aWFsPFQ+O1xufVxuXG5leHBvcnQgdHlwZSBHcm91cGVkVGFibGVSb3c8VD4gPSBUIHwgR3JvdXBIZWFkZXI8VD47XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvcHM8VCwgSyBleHRlbmRzIGtleW9mIFQ+IHtcbiAgLyoqXG4gICAqIGxpc3Qgb2YgaXRlbXMgZm9yIGVhY2ggcm93XG4gICAqL1xuICByb3dzOiBUW107XG4gIC8qKlxuICAgKiB0aGUgYXR0cmlidXRlIHVzZWQgdG8gaWRlbnRpZnkgZWFjaCByb3cgdW5pcXVlbHkgZm9yIHNlbGVjdGlvbiwgdXN1YWxseSBgaWRgXG4gICAqL1xuICByb3dBdHRyOiBLO1xuICAvKipcbiAgICogbW9kZWwgZm9yIHNlbGVjdGVkIHJvd3MsIGFkZCBhIHYtbW9kZWwgdG8gc3VwcG9ydCByb3cgc2VsZWN0aW9uXG4gICAqL1xuICBtb2RlbFZhbHVlPzogVFtLXVtdO1xuICAvKipcbiAgICogbW9kZWwgZm9yIGludGVybmFsIHNlYXJjaGluZ1xuICAgKi9cbiAgc2VhcmNoPzogc3RyaW5nO1xuICAvKipcbiAgICogbW9kZWwgZm9yIGl0ZW1zIHBlciBwYWdlXG4gICAqIHdpbGwgYmUgdXNlZCBpZiB0aGUgYHBhZ2luYXRpb25gIG1vZGVsIGlzbid0IHNwZWNpZmllZFxuICAgKi9cbiAgaXRlbXNQZXJQYWdlPzogbnVtYmVyO1xuICAvKipcbiAgICogbW9kZWwgZm9yIHBhZ2luYXRpbmcgZGF0YVxuICAgKiBAZXhhbXBsZSB2LW1vZGVsOnBhZ2luYXRpb249XCJ7IHRvdGFsOiAxMCwgbGltaXQ6IDUsIHBhZ2U6IDEgfVwiXG4gICAqL1xuICBwYWdpbmF0aW9uPzogVGFibGVQYWdpbmF0aW9uRGF0YTtcbiAgLyoqXG4gICAqIG1vZGlmaWVycyBmb3Igc3BlY2lmeWluZyBleHRlcm5hbGx5IHBhZ2luYXRlZCB0YWJsZXNcbiAgICogdXNlIHRoaXMgd2hlbiBhcGkgY29udHJvbHMgcGFnaW5hdGlvblxuICAgKiBAZXhhbXBsZSB2LW1vZGVsOnBhZ2luYXRpb24uZXh0ZXJuYWw9XCJ7IHRvdGFsOiAxMCwgbGltaXQ6IDUsIHBhZ2U6IDEgfVwiXG4gICAqL1xuICBwYWdpbmF0aW9uTW9kaWZpZXJzPzoge1xuICAgIGV4dGVybmFsOiBib29sZWFuO1xuICB9O1xuICAvKipcbiAgICogbW9kZWwgZm9yIHNvcnQgY29sdW1uL2NvbHVtbnMgZGF0YVxuICAgKiBzaW5nbGUgY29sdW1uIHNvcnRcbiAgICogQGV4YW1wbGUgdi1tb2RlbDpzb3J0PVwieyBjb2x1bW46ICduYW1lJywgZGlyZWN0aW9uOiAnYXNjJyB9XCJcbiAgICogbXVsdGkgY29sdW1ucyBzb3J0XG4gICAqIEBleGFtcGxlIHYtbW9kZWw6c29ydD1cIlt7IGNvbHVtbjogJ25hbWUnLCBkaXJlY3Rpb246ICdhc2MnIH1dXCJcbiAgICovXG4gIHNvcnQ/OiBUYWJsZVNvcnREYXRhPFQ+O1xuICAvKipcbiAgICogbW9kaWZpZXJzIGZvciBzcGVjaWZ5aW5nIGV4dGVybmFsbHkgc29ydGVkIHRhYmxlc1xuICAgKiB1c2UgdGhpcyB3aGVuIGFwaSBjb250cm9scyBzb3J0aW5nXG4gICAqIHNpbmdsZSBjb2x1bW4gc29ydFxuICAgKiBAZXhhbXBsZSB2LW1vZGVsOnNvcnQuZXh0ZXJuYWw9XCJ7IGNvbHVtbjogJ25hbWUnLCBkaXJlY3Rpb246ICdhc2MnIH1cIlxuICAgKiBtdWx0aSBjb2x1bW5zIHNvcnRcbiAgICogQGV4YW1wbGUgdi1tb2RlbDpzb3J0LmV4dGVybmFsPVwiW3sgY29sdW1uOiAnbmFtZScsIGRpcmVjdGlvbjogJ2FzYycgfV1cIlxuICAgKi9cbiAgc29ydE1vZGlmaWVycz86IHtcbiAgICBleHRlcm5hbDogYm9vbGVhbjtcbiAgfTtcbiAgLyoqXG4gICAqIGxpc3Qgb2YgY29sdW1uIGRlZmluaXRpb25zXG4gICAqL1xuICBjb2xzPzogVGFibGVDb2x1bW48VD5bXTtcbiAgLyoqXG4gICAqIGF0dHJpYnV0ZSB0byB1c2UgZnJvbSBjb2x1bW4gZGVmaW5pdGlvbnMgdG8gZGlzcGxheSBjb2x1bW4gdGl0bGVzXG4gICAqL1xuICBjb2x1bW5BdHRyPzoga2V5b2YgVGFibGVDb2x1bW48VD47XG4gIC8qKlxuICAgKiBmbGFnIHRvIHNob3cgYSBtb3JlIG9yIGxlc3Mgc3BhY2lvdXMgdGFibGVcbiAgICovXG4gIGRlbnNlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIGZsYWcgdG8gb3V0bGluZSB0aGUgZmxhZyB3aXRoIGEgYm9yZGVyXG4gICAqL1xuICBvdXRsaW5lZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBzaG91bGQgYWRkIHplYnJhLXN0cmlwaW5nIHRvIHRoZSB0YWJsZSByb3dcbiAgICovXG4gIHN0cmlwZWQ/OiBib29sZWFuO1xuICAvKipcbiAgICogZmxhZyB0byBzaG93IGxvYWRpbmcgc3RhdGUgb2YgdGhlIHRhYmxlXG4gICAqIHRyaWdnZXJzIGluZGVmaW5pdGUgcHJvZ3Jlc3MgYXQgdGhlIGJvdHRvbSBvZiB0aGUgdGFibGUgaGVhZGVyXG4gICAqL1xuICBsb2FkaW5nPzogYm9vbGVhbjtcbiAgZGlzYWJsZVBlclBhZ2U/OiBib29sZWFuO1xuICAvKipcbiAgICogZGF0YSB0byBkaXNwbGF5IGZvciBlbXB0eSBzdGF0ZVxuICAgKiB0ZXh0IGFuZCBpY29uXG4gICAqIEBleGFtcGxlIDplbXB0eT1cInsgaWNvbjogJ3RyYW5zYWN0aW9ucy1saW5lJywgbGFiZWw6ICdObyB0cmFuc2FjdGlvbnMgZm91bmQnIH1cIlxuICAgKi9cbiAgZW1wdHk/OiB7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIH07XG4gIC8qKlxuICAgKiBzaG91bGQgaGlkZSB0aGUgaGVhZGVyIG5hdmlnYXRpb25cbiAgICovXG4gIGhpZGVEZWZhdWx0SGVhZGVyPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIHNob3VsZCBoaWRlIHRoZSBmb290ZXIgbmF2aWdhdGlvblxuICAgKi9cbiAgaGlkZURlZmF1bHRGb290ZXI/OiBib29sZWFuO1xuXG4gIHJvdW5kZWQ/OiAnc20nIHwgJ21kJyB8ICdsZyc7XG4gIC8qKlxuICAgKiBtb2RlbCBmb3IgZXhwYW5kZWQgcm93c1xuICAgKi9cbiAgZXhwYW5kZWQ/OiBUW107XG4gIC8qKlxuICAgKiBtYWtlIGV4cGFuc2lvbiB3b3JrIGxpa2UgYWNjb3JkaW9uXG4gICAqL1xuICBzaW5nbGVFeHBhbmQ/OiBib29sZWFuO1xuICAvKipcbiAgICogbWFrZSB0YWJsZSBoZWFkIHN0aWNrIHRvIHRvcCBvbiBzY3JvbGxcbiAgICovXG4gIHN0aWNreUhlYWRlcj86IGJvb2xlYW47XG4gIHN0aWNreU9mZnNldD86IG51bWJlcjtcbiAgLyoqXG4gICAqIEFmZmVjdHMgaG93IHRoZSBpdGVtcyBwZXIgcGFnZSB3b3JrIGFjcm9zcyB0aGUgYXBwLlxuICAgKiBXaGVuIHRydWUsIGNoYW5naW5nIHRoZSBpdGVtcyBwZXIgcGFnZSBzZXR0aW5nIGluIG9uZSB0YWJsZSB3aWxsIGFmZmVjdCBvdGhlciB0YWJsZXMuXG4gICAqL1xuICBnbG9iYWxJdGVtc1BlclBhZ2U/OiBib29sZWFuO1xuICAvKipcbiAgICogbW9kZWwgZm9yIGdyb3VwaW5nIGNvbHVtbi9jb2x1bW5zIGRhdGFcbiAgICogc2luZ2xlIGNvbHVtbiBncm91cGluZ1xuICAgKiBAZXhhbXBsZSB2LW1vZGVsOmdyb3VwPVwiJ25hbWUnXCJcbiAgICogbXVsdGkgY29sdW1ucyBncm91cGluZ1xuICAgKiBAZXhhbXBsZSB2LW1vZGVsOmdyb3VwPVwiWyduYW1lJywgJ2NvdW50cnknXVwiXG4gICAqL1xuICBncm91cD86IFRhYmxlUm93S2V5RGF0YTxUPjtcbiAgZ3JvdXBFeHBhbmRCdXR0b25Qb3NpdGlvbj86ICdzdGFydCcgfCAnZW5kJztcbiAgY29sbGFwc2VkPzogVFtdO1xuICBkaXNhYmxlZFJvd3M/OiBUW107XG4gIG11bHRpUGFnZVNlbGVjdD86IGJvb2xlYW47XG4gIHNjcm9sbGVyPzogSFRNTEVsZW1lbnQgfCBudWxsO1xuICBpdGVtQ2xhc3M/OiAoKGl0ZW06IFQpID0+IHN0cmluZykgfCBzdHJpbmc7XG59XG5cbmRlZmluZU9wdGlvbnMoe1xuICBuYW1lOiAnUnVpRGF0YVRhYmxlJyxcbn0pO1xuXG5jb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wczxULCBJZFR5cGU+PigpLCB7XG4gIG1vZGVsVmFsdWU6IHVuZGVmaW5lZCxcbiAgc2VhcmNoOiAnJyxcbiAgY29sczogdW5kZWZpbmVkLFxuICBpdGVtc1BlclBhZ2U6IDEwLFxuICBwYWdpbmF0aW9uOiB1bmRlZmluZWQsXG4gIGNvbHVtbkF0dHI6ICdsYWJlbCcsXG4gIHNvcnQ6IHVuZGVmaW5lZCxcbiAgbG9hZGluZzogZmFsc2UsXG4gIGRlbnNlOiBmYWxzZSxcbiAgb3V0bGluZWQ6IGZhbHNlLFxuICBwYWdpbmF0aW9uTW9kaWZpZXJzOiB1bmRlZmluZWQsXG4gIHNvcnRNb2RpZmllcnM6IHVuZGVmaW5lZCxcbiAgZW1wdHk6ICgpID0+ICh7IGxhYmVsOiAnTm8gaXRlbSBmb3VuZCcgfSksXG4gIHJvdW5kZWQ6ICdtZCcsXG4gIGhpZGVEZWZhdWx0SGVhZGVyOiBmYWxzZSxcbiAgaGlkZURlZmF1bHRGb290ZXI6IGZhbHNlLFxuICBkaXNhYmxlUGVyUGFnZTogZmFsc2UsXG4gIHN0cmlwZWQ6IGZhbHNlLFxuICBleHBhbmRlZDogdW5kZWZpbmVkLFxuICBzaW5nbGVFeHBhbmQ6IGZhbHNlLFxuICBzdGlja3lIZWFkZXI6IGZhbHNlLFxuICBzdGlja3lPZmZzZXQ6IHVuZGVmaW5lZCxcbiAgZ2xvYmFsSXRlbXNQZXJQYWdlOiB1bmRlZmluZWQsXG4gIGdyb3VwOiB1bmRlZmluZWQsXG4gIGNvbGxhcHNlZDogdW5kZWZpbmVkLFxuICBkaXNhYmxlZFJvd3M6IHVuZGVmaW5lZCxcbiAgbXVsdGlQYWdlU2VsZWN0OiBmYWxzZSxcbiAgZ3JvdXBFeHBhbmRCdXR0b25Qb3NpdGlvbjogJ3N0YXJ0JyxcbiAgc2Nyb2xsZXI6IHVuZGVmaW5lZCxcbiAgaXRlbUNsYXNzOiAnJyxcbn0pO1xuXG5jb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8e1xuICAoZTogJ3VwZGF0ZTptb2RlbC12YWx1ZScsIHZhbHVlPzogVFtJZFR5cGVdW10pOiB2b2lkO1xuICAoZTogJ3VwZGF0ZTpleHBhbmRlZCcsIHZhbHVlOiBUW10pOiB2b2lkO1xuICAoZTogJ3VwZGF0ZTpwYWdpbmF0aW9uJywgdmFsdWU6IFRhYmxlUGFnaW5hdGlvbkRhdGEpOiB2b2lkO1xuICAoZTogJ3VwZGF0ZTpzb3J0JywgdmFsdWU/OiBUYWJsZVNvcnREYXRhPFQ+KTogdm9pZDtcbiAgKGU6ICd1cGRhdGU6b3B0aW9ucycsIHZhbHVlOiBUYWJsZU9wdGlvbnM8VD4pOiB2b2lkO1xuICAoZTogJ3VwZGF0ZTpncm91cCcsIHZhbHVlPzogR3JvdXBLZXlzPFQ+KTogdm9pZDtcbiAgKGU6ICd1cGRhdGU6Y29sbGFwc2VkJywgdmFsdWU/OiBUW10pOiB2b2lkO1xuICAoZTogJ2NvcHk6Z3JvdXAnLCB2YWx1ZTogR3JvdXBEYXRhPFQ+KTogdm9pZDtcbn0+KCk7XG5cbmNvbnN0IHNsb3RzID0gZGVmaW5lU2xvdHM8XG4gIFBhcnRpYWw8UmVjb3JkPGBoZWFkZXIuJHtzdHJpbmd9YCwgKHByb3BzOiB7XG4gICAgY29sdW1uOiBUYWJsZUNvbHVtbjxUPjtcbiAgfSkgPT4gYW55PlxuICAmIFJlY29yZDxgaXRlbS4ke3N0cmluZ31gLCAocHJvcHM6IHtcbiAgICBjb2x1bW46IFRhYmxlQ29sdW1uPFQ+O1xuICAgIHJvdzogVDtcbiAgICBpbmRleDogbnVtYmVyO1xuICB9KSA9PiBhbnk+XG4gICYge1xuICAgICdib2R5LnByZXBlbmQnOiAocHJvcHM6IHsgY29sc3BhbjogbnVtYmVyIH0pID0+IGFueTtcbiAgICAnYm9keS5hcHBlbmQnOiAocHJvcHM6IHsgY29sc3BhbjogbnVtYmVyIH0pID0+IGFueTtcbiAgICAnZ3JvdXAuaGVhZGVyJzogKHByb3BzOiB7XG4gICAgICBjb2xzcGFuOiBudW1iZXI7XG4gICAgICBoZWFkZXI6IEdyb3VwSGVhZGVyPFQ+O1xuICAgICAgaXNPcGVuOiBib29sZWFuO1xuICAgICAgdG9nZ2xlOiAoKSA9PiB2b2lkO1xuICAgIH0pID0+IGFueTtcbiAgICAnZ3JvdXAuaGVhZGVyLmNvbnRlbnQnOiAocHJvcHM6IHtcbiAgICAgIGhlYWRlcjogR3JvdXBIZWFkZXI8VD47XG4gICAgICBncm91cEtleTogc3RyaW5nO1xuICAgIH0pID0+IGFueTtcbiAgICAnZXhwYW5kZWQtaXRlbSc6IChwcm9wczogeyByb3c6IFQ7IGluZGV4OiBudW1iZXIgfSkgPT4gYW55O1xuICAgICduby1kYXRhJzogKCkgPT4gYW55O1xuICAgICdlbXB0eS1kZXNjcmlwdGlvbic6ICgpID0+IGFueTtcbiAgICAndGZvb3QnOiAoKSA9PiBhbnk7XG4gIH0+XG4+KCk7XG5cbmNvbnN0IHsgc3RpY2t5SGVhZGVyLCBjb2xsYXBzZWQsIG1vZGVsVmFsdWUsIGRpc2FibGVkUm93cyB9ID0gdG9SZWZzKHByb3BzKTtcbmNvbnN0IHRhYmxlRGVmYXVsdHMgPSB1c2VUYWJsZSgpO1xuXG5jb25zdCB7IGlzRGFyayB9ID0gdXNlUm90a2lUaGVtZSgpO1xuXG5jb25zdCBzdGlja3lIZWFkZXJPZmZzZXQgPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5zdGlja3lPZmZzZXQgIT09IHVuZGVmaW5lZCA/IHByb3BzLnN0aWNreU9mZnNldCA6IGdldCh0YWJsZURlZmF1bHRzLnN0aWNreU9mZnNldCkpO1xuXG5mdW5jdGlvbiBpc1JvdzxUIGV4dGVuZHMgb2JqZWN0PihpdGVtOiBHcm91cGVkVGFibGVSb3c8VD4pOiBpdGVtIGlzIFQge1xuICByZXR1cm4gISgnX19oZWFkZXJfXycgaW4gaXRlbSk7XG59XG5cbmZ1bmN0aW9uIGlzSGVhZGVyU2xvdChzbG90TmFtZTogc3RyaW5nKTogc2xvdE5hbWUgaXMgYGhlYWRlci4ke3N0cmluZ31gIHtcbiAgcmV0dXJuIHNsb3ROYW1lLnN0YXJ0c1dpdGgoJ2hlYWRlci4nKTtcbn1cblxuY29uc3QgeyBzdGljaywgdGFibGUsIHRhYmxlU2Nyb2xsZXIgfSA9IHVzZVN0aWNreVRhYmxlSGVhZGVyKFxuICBzdGlja3lIZWFkZXIsXG4gIGdldChzdGlja3lIZWFkZXJPZmZzZXQpLFxuKTtcblxuY29uc3QgZXhwYW5kYWJsZSA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmV4cGFuZGVkICYmIHNsb3RzWydleHBhbmRlZC1pdGVtJ10pO1xuXG5jb25zdCBoZWFkZXJTbG90cyA9IGNvbXB1dGVkPGBoZWFkZXIuJHtzdHJpbmd9YFtdPigoKSA9PlxuICBPYmplY3Qua2V5cyhzbG90cykuZmlsdGVyKGlzSGVhZGVyU2xvdCksXG4pO1xuXG5jb25zdCBnbG9iYWxJdGVtc1BlclBhZ2VTZXR0aW5ncyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgaWYgKHByb3BzLmdsb2JhbEl0ZW1zUGVyUGFnZSAhPT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiBwcm9wcy5nbG9iYWxJdGVtc1BlclBhZ2U7XG5cbiAgcmV0dXJuIGdldCh0YWJsZURlZmF1bHRzLmdsb2JhbEl0ZW1zUGVyUGFnZSk7XG59KTtcblxuY29uc3QgZ2V0S2V5cyA9IDxUIGV4dGVuZHMgb2JqZWN0Pih0OiBUKSA9PiBPYmplY3Qua2V5cyh0KSBhcyBUYWJsZVJvd0tleTxUPltdO1xuXG5jb25zdCBncm91cEtleXM6IENvbXB1dGVkUmVmPFRhYmxlUm93S2V5PFQ+W10+ID0gY29tcHV0ZWQoKCkgPT4ge1xuICBjb25zdCBncm91cEJ5ID0gcHJvcHMuZ3JvdXA7XG5cbiAgaWYgKCFncm91cEJ5KSB7XG4gICAgLy8gbm8gZ3JvdXBpbmdcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBpZiAoIUFycmF5LmlzQXJyYXkoZ3JvdXBCeSkpIHtcbiAgICAvLyBjdXJyZW50bHkgb25seSBzdXBwb3J0cyBhIHNpbmdsZSBncm91cGluZ1xuICAgIC8vIG9ubHkgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGFycmF5IGlzIHVzZWRcbiAgICByZXR1cm4gW2dyb3VwQnldO1xuICB9XG5cbiAgcmV0dXJuIGdyb3VwQnk7XG59KTtcblxuY29uc3QgZ3JvdXBLZXkgPSBjb21wdXRlZCgoKSA9PiBnZXQoZ3JvdXBLZXlzKS5qb2luKCc6JykpO1xuXG5jb25zdCBpc0dyb3VwZWQgPSBjb21wdXRlZCgoKSA9PiAhIWdldChncm91cEtleSkpO1xuXG4vKipcbiAqIFByZXBhcmUgdGhlIGNvbHVtbnMgZnJvbSBwcm9wcyBvciBnZW5lcmF0ZSB1c2luZyBmaXJzdCBpdGVtIGluIHRoZSBsaXN0XG4gKi9cbmNvbnN0IGNvbHVtbnMgPSBjb21wdXRlZDxUYWJsZUNvbHVtbjxUPltdPigoKSA9PiB7XG4gIGNvbnN0IGRhdGFcbiAgICA9IHByb3BzLmNvbHNcbiAgICAgID8/IGdldEtleXMocHJvcHMucm93c1swXSA/PyB7fSkubWFwKFxuICAgICAgICBrZXkgPT5cbiAgICAgICAgKHtcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgW3Byb3BzLmNvbHVtbkF0dHJdOiBTdHJpbmcoa2V5KSxcbiAgICAgICAgfSkgc2F0aXNmaWVzIE5vbmVTb3J0YWJsZVRhYmxlQ29sdW1uPFQ+LFxuICAgICAgKTtcblxuICBjb25zdCBoYXNFeHBhbmRDb2x1bW4gPSBkYXRhLnNvbWUocm93ID0+IHJvdy5rZXkgPT09ICdleHBhbmQnKTtcblxuICBpZiAoZ2V0KGV4cGFuZGFibGUpICYmICFoYXNFeHBhbmRDb2x1bW4pIHtcbiAgICByZXR1cm4gW1xuICAgICAgLi4uZGF0YSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAnZXhwYW5kJyBhcyBUYWJsZVJvd0tleTxUPixcbiAgICAgICAgc29ydGFibGU6IGZhbHNlLFxuICAgICAgICBjbGFzczogJ3ctMTYnLFxuICAgICAgICBjZWxsQ2xhc3M6ICchcHktMCB3LTE2JyxcbiAgICAgICAgYWxpZ246ICdlbmQnLFxuICAgICAgfSBzYXRpc2ZpZXMgTm9uZVNvcnRhYmxlVGFibGVDb2x1bW48VD4sXG4gICAgXTtcbiAgfVxuXG4gIGNvbnN0IGdyb3VwQnlLZXlzID0gZ2V0KGdyb3VwS2V5cyk7XG5cbiAgaWYgKGdyb3VwQnlLZXlzLmxlbmd0aCA9PT0gMClcbiAgICByZXR1cm4gZGF0YTtcblxuICByZXR1cm4gZGF0YS5maWx0ZXIoXG4gICAgY29sdW1uID0+ICFncm91cEJ5S2V5cy5pbmNsdWRlcyhjb2x1bW4ua2V5IGFzIFRhYmxlUm93S2V5PFQ+KSxcbiAgKTtcbn0pO1xuXG5jb25zdCBpdGVtc0xlbmd0aCA9IHJlZigwKTtcblxuY29uc3Qgc2VsZWN0ZWREYXRhID0gY29tcHV0ZWQ8VFtJZFR5cGVdW10gfCB1bmRlZmluZWQ+KHtcbiAgZ2V0KCkge1xuICAgIHJldHVybiBnZXQobW9kZWxWYWx1ZSk7XG4gIH0sXG4gIHNldCh2YWx1ZSkge1xuICAgIGVtaXQoJ3VwZGF0ZTptb2RlbC12YWx1ZScsIHZhbHVlKTtcbiAgfSxcbn0pO1xuXG5jb25zdCBpbnRlcm5hbFNlbGVjdGVkRGF0YTogUmVmPFRbSWRUeXBlXVtdPiA9IHJlZihbXSk7XG5cbndhdGNoSW1tZWRpYXRlKG1vZGVsVmFsdWUsIChtb2RlbFZhbHVlKSA9PiB7XG4gIHNldChpbnRlcm5hbFNlbGVjdGVkRGF0YSwgbW9kZWxWYWx1ZSk7XG59KTtcblxuY29uc3Qgcm93SWRlbnRpZmllciA9IGNvbXB1dGVkKCgpID0+IHByb3BzLnJvd0F0dHIpO1xuXG5jb25zdCBpbnRlcm5hbFBhZ2luYXRpb25TdGF0ZTogUmVmPFRhYmxlUGFnaW5hdGlvbkRhdGEgfCB1bmRlZmluZWQ+ID0gcmVmKCk7XG5jb25zdCBjb2xsYXBzZWRSb3dzOiBSZWY8VFtdPiA9IHJlZihbXSk7XG5cbmNvbnN0IHBhZ2luYXRpb24gPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5wYWdpbmF0aW9uKTtcblxud2F0Y2hJbW1lZGlhdGUocGFnaW5hdGlvbiwgKHBhZ2luYXRpb24pID0+IHtcbiAgc2V0KGludGVybmFsUGFnaW5hdGlvblN0YXRlLCBwYWdpbmF0aW9uKTtcbn0pO1xuXG53YXRjaEltbWVkaWF0ZShjb2xsYXBzZWQsICh2YWx1ZSkgPT4ge1xuICBzZXQoY29sbGFwc2VkUm93cywgdmFsdWUgPz8gW10pO1xufSk7XG5cbi8qKlxuICogUGFnaW5hdGlvbiBpcyBkaWZmZXJlbnQgZm9yIHNlYXJjaFxuICogc2luY2Ugc2VhcmNoIGlzIG9ubHkgdXNlZCBmb3IgaW50ZXJuYWwgZmlsdGVyaW5nXG4gKiB3ZSByZXR1cm4gdGhlIGxlbmd0aCBvZiBzZWFyY2ggcmVzdWx0cyBhcyB0b3RhbFxuICovXG5jb25zdCBwYWdpbmF0aW9uRGF0YTogUmVmPFRhYmxlUGFnaW5hdGlvbkRhdGE+ID0gY29tcHV0ZWQoe1xuICBnZXQoKSB7XG4gICAgY29uc3QgcGFnaW5hdGVkID0gZ2V0KGludGVybmFsUGFnaW5hdGlvblN0YXRlKTtcbiAgICBpZiAoIXBhZ2luYXRlZCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdG90YWw6IGdldChpdGVtc0xlbmd0aCksXG4gICAgICAgIGxpbWl0OiBwcm9wcy5pdGVtc1BlclBhZ2UsXG4gICAgICAgIHBhZ2U6IDEsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5wYWdpbmF0aW9uTW9kaWZpZXJzPy5leHRlcm5hbClcbiAgICAgIHJldHVybiBwYWdpbmF0ZWQ7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdG90YWw6IGdldChpdGVtc0xlbmd0aCksXG4gICAgICBsaW1pdDogcGFnaW5hdGVkLmxpbWl0LFxuICAgICAgcGFnZTogcGFnaW5hdGVkLnBhZ2UsXG4gICAgICBsaW1pdHM6IHBhZ2luYXRlZC5saW1pdHMsXG4gICAgfTtcbiAgfSxcbiAgc2V0KHZhbHVlOiBUYWJsZVBhZ2luYXRpb25EYXRhKSB7XG4gICAgc2V0KGludGVybmFsUGFnaW5hdGlvblN0YXRlLCB2YWx1ZSk7XG4gICAgZW1pdCgndXBkYXRlOnBhZ2luYXRpb24nLCB2YWx1ZSk7XG4gICAgZW1pdCgndXBkYXRlOm9wdGlvbnMnLCB7XG4gICAgICBwYWdpbmF0aW9uOiB2YWx1ZSxcbiAgICAgIHNvcnQ6IHByb3BzLnNvcnQsXG4gICAgfSk7XG4gIH0sXG59KTtcblxuY29uc3Qgc29ydERhdGEgPSBjb21wdXRlZCh7XG4gIGdldCgpIHtcbiAgICByZXR1cm4gcHJvcHMuc29ydDtcbiAgfSxcbiAgc2V0KHZhbHVlKSB7XG4gICAgaWYgKCFwcm9wcy5tdWx0aVBhZ2VTZWxlY3QpXG4gICAgICBvblRvZ2dsZUFsbChmYWxzZSk7XG4gICAgcmVzZXRDaGVja2JveFNoaWZ0U3RhdGUoKTtcbiAgICBlbWl0KCd1cGRhdGU6c29ydCcsIHZhbHVlKTtcbiAgICBlbWl0KCd1cGRhdGU6b3B0aW9ucycsIHtcbiAgICAgIHNvcnQ6IHZhbHVlLFxuICAgICAgcGFnaW5hdGlvbjogZ2V0KHBhZ2luYXRpb24pLFxuICAgIH0pO1xuICB9LFxufSk7XG5cbi8qKlxuICogQSBtYXBwaW5nIG9mIHRoZSBzb3J0IGNvbHVtbnNcbiAqIGZvciBlYXNpbHkgY2hlY2tpbmcgaWYgYSBjb2x1bW4gaXMgc29ydGVkIGluc3RlYWQgb2YgbG9vcGluZyB0aHJvdWdoIHRoZSBhcnJheVxuICovXG5jb25zdCBzb3J0ZWRNYXAgPSBjb21wdXRlZCgoKSA9PiB7XG4gIGNvbnN0IG1hcHBlZDogUGFydGlhbDxSZWNvcmQ8VGFibGVSb3dLZXk8VD4sIFNvcnRDb2x1bW48VD4+PiA9IHt9O1xuICBjb25zdCBzb3J0QnkgPSBnZXQoc29ydERhdGEpO1xuICBpZiAoIXNvcnRCeSlcbiAgICByZXR1cm4gbWFwcGVkO1xuXG4gIGlmICghQXJyYXkuaXNBcnJheShzb3J0QnkpKSB7XG4gICAgaWYgKHNvcnRCeS5jb2x1bW4pXG4gICAgICBtYXBwZWRbc29ydEJ5LmNvbHVtbl0gPSBzb3J0Qnk7XG5cbiAgICByZXR1cm4gbWFwcGVkO1xuICB9XG5cbiAgcmV0dXJuIHNvcnRCeS5yZWR1Y2UoKGFjYywgY3VycikgPT4ge1xuICAgIGlmICghY3Vyci5jb2x1bW4pXG4gICAgICByZXR1cm4gYWNjO1xuXG4gICAgcmV0dXJuIHsgLi4uYWNjLCBbY3Vyci5jb2x1bW5dOiBjdXJyIH07XG4gIH0sIG1hcHBlZCk7XG59KTtcblxuLyoqXG4gKiByb3dzIGZpbHRlcmVkIGJhc2VkIG9uIHNlYXJjaCBxdWVyeSBpZiBpdCBleGlzdHNcbiAqL1xuY29uc3Qgc2VhcmNoRGF0YSA9IGNvbXB1dGVkPFRbXT4oKCkgPT4ge1xuICBjb25zdCBxdWVyeSA9IHByb3BzLnNlYXJjaD8udG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgaWYgKCFxdWVyeSlcbiAgICByZXR1cm4gcHJvcHMucm93cztcblxuICByZXR1cm4gcHJvcHMucm93cy5maWx0ZXIocm93ID0+XG4gICAgZ2V0S2V5cyhyb3cpLnNvbWUoa2V5ID0+XG4gICAgICBgJHtyb3dba2V5XX1gLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXMocXVlcnkpLFxuICAgICksXG4gICk7XG59KTtcblxuLyoqXG4gKiBzb3J0IHRoZSBzZWFyY2ggcmVzdWx0c1xuICovXG5jb25zdCBzb3J0ZWQ6IENvbXB1dGVkUmVmPFRbXT4gPSBjb21wdXRlZCgoKSA9PiB7XG4gIGNvbnN0IHNvcnRCeSA9IGdldChzb3J0RGF0YSk7XG4gIGNvbnN0IGRhdGEgPSBbLi4uZ2V0KHNlYXJjaERhdGEpXTtcbiAgaWYgKCFzb3J0QnkgfHwgcHJvcHMuc29ydE1vZGlmaWVycz8uZXh0ZXJuYWwpXG4gICAgcmV0dXJuIGRhdGE7XG5cbiAgY29uc3Qgc29ydE9wdGlvbnM6IEludGwuQ29sbGF0b3JPcHRpb25zID0geyBzZW5zaXRpdml0eTogJ2FjY2VudCcsIHVzYWdlOiAnc29ydCcgfTtcblxuICBjb25zdCBzb3J0ID0gKGJ5OiBTb3J0Q29sdW1uPFQ+KSA9PiB7XG4gICAgZGF0YS5zb3J0KChhLCBiKSA9PiB7XG4gICAgICBjb25zdCBjb2x1bW4gPSBieS5jb2x1bW47XG4gICAgICBpZiAoIWNvbHVtbilcbiAgICAgICAgcmV0dXJuIDA7XG5cbiAgICAgIGxldCBbYVZhbHVlLCBiVmFsdWVdID0gW2FbY29sdW1uXSwgYltjb2x1bW5dXTtcbiAgICAgIGlmIChieS5kaXJlY3Rpb24gPT09ICdkZXNjJylcbiAgICAgICAgW2FWYWx1ZSwgYlZhbHVlXSA9IFtiVmFsdWUsIGFWYWx1ZV07XG5cbiAgICAgIGNvbnN0IGFOdW1iZXIgPSBOdW1iZXIoYVZhbHVlKTtcbiAgICAgIGNvbnN0IGJOdW1iZXIgPSBOdW1iZXIoYlZhbHVlKTtcbiAgICAgIGlmICghaXNOYU4oYU51bWJlcikgJiYgIWlzTmFOKGJOdW1iZXIpKVxuICAgICAgICByZXR1cm4gYU51bWJlciAtIGJOdW1iZXI7XG5cbiAgICAgIHJldHVybiBgJHthVmFsdWV9YC5sb2NhbGVDb21wYXJlKFxuICAgICAgICBgJHtiVmFsdWV9YCxcbiAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICBzb3J0T3B0aW9ucyxcbiAgICAgICk7XG4gICAgfSk7XG4gIH07XG5cbiAgaWYgKCFBcnJheS5pc0FycmF5KHNvcnRCeSkpXG4gICAgc29ydChzb3J0QnkpO1xuICBlbHNlXG4gICAgWy4uLnNvcnRCeV0ucmV2ZXJzZSgpLmZvckVhY2goc29ydCk7XG5cbiAgcmV0dXJuIGRhdGE7XG59KTtcblxuLyoqXG4gKiBjb21wcmlzZXMgc2VhcmNoLCBzb3J0ZWQgcGFnaW5hdGVkLCBhbmQgZ3JvdXBlZCBkYXRhXG4gKi9cbmNvbnN0IG1hcHBlZEdyb3VwcyA9IGNvbXB1dGVkPFJlY29yZDxzdHJpbmcsIEdyb3VwZWRUYWJsZVJvdzxUPltdPj4oKCkgPT4ge1xuICBpZiAoIWdldChpc0dyb3VwZWQpKSB7XG4gICAgLy8gbm8gZ3JvdXBpbmdcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjb25zdCByZXN1bHQgPSBnZXQoc29ydGVkKTtcbiAgY29uc3QgaWRlbnRpZmllciA9IHByb3BzLnJvd0F0dHI7XG5cbiAgcmV0dXJuIHJlc3VsdC5yZWR1Y2UoKGFjYzogUmVjb3JkPHN0cmluZywgR3JvdXBlZFRhYmxlUm93PFQ+W10+LCByb3cpID0+IHtcbiAgICBpZiAoIWlzRGVmaW5lZChyb3dbaWRlbnRpZmllcl0pIHx8IHJvd1tpZGVudGlmaWVyXSA9PT0gJycpXG4gICAgICByZXR1cm4gYWNjO1xuXG4gICAgY29uc3QgZ3JvdXAgPSBnZXRSb3dHcm91cChyb3cpO1xuICAgIGNvbnN0IGdyb3VwVmFsID0gT2JqZWN0LnZhbHVlcyhncm91cCkuZmlsdGVyKGlzRGVmaW5lZCkuam9pbignLCcpO1xuICAgIGlmICghYWNjW2dyb3VwVmFsXSkge1xuICAgICAgYWNjW2dyb3VwVmFsXSA9IFtcbiAgICAgICAge1xuICAgICAgICAgIF9faGVhZGVyX186IHRydWUsXG4gICAgICAgICAgZ3JvdXAsXG4gICAgICAgICAgaWRlbnRpZmllcjogZ3JvdXBWYWwsXG4gICAgICAgIH0gc2F0aXNmaWVzIEdyb3VwSGVhZGVyPFQ+LFxuICAgICAgXTtcbiAgICB9XG5cbiAgICBhY2NbZ3JvdXBWYWxdLnB1c2gocm93KTtcblxuICAgIHJldHVybiBhY2M7XG4gIH0sIHt9KTtcbn0pO1xuXG4vKipcbiAqIGNvbXByaXNlcyBzZWFyY2gsIHNvcnRlZCBwYWdpbmF0ZWQsIGFuZCBncm91cGVkIGRhdGFcbiAqL1xuY29uc3QgZ3JvdXBlZCA9IGNvbXB1dGVkPEdyb3VwZWRUYWJsZVJvdzxUPltdPigoKSA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IGdldChzb3J0ZWQpO1xuICBjb25zdCBncm91cEJ5S2V5ID0gZ2V0KGdyb3VwS2V5KTtcblxuICBpZiAoIWdyb3VwQnlLZXkpIHtcbiAgICAvLyBubyBncm91cGluZ1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICByZXR1cm4gT2JqZWN0LnZhbHVlcyhnZXQobWFwcGVkR3JvdXBzKSkuZmxhdE1hcChncm91cGVkID0+IGdyb3VwZWQpO1xufSk7XG5cbi8qKlxuICogY29tcHJpc2VzIHNlYXJjaCwgc29ydGVkIGFuZCBwYWdpbmF0ZWQgZGF0YVxuICovXG5jb25zdCBmaWx0ZXJlZCA9IGNvbXB1dGVkPEdyb3VwZWRUYWJsZVJvdzxUPltdPigoKSA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IGdldChncm91cGVkKTtcblxuICBjb25zdCBwYWdpbmF0ZWQgPSBnZXQocGFnaW5hdGlvbkRhdGEpO1xuICBjb25zdCBsaW1pdCA9IHBhZ2luYXRlZC5saW1pdDtcbiAgaWYgKHBhZ2luYXRlZCAmJiAhcHJvcHMucGFnaW5hdGlvbk1vZGlmaWVycz8uZXh0ZXJuYWwpIHtcbiAgICBjb25zdCBzdGFydCA9IChwYWdpbmF0ZWQucGFnZSAtIDEpICogbGltaXQ7XG4gICAgY29uc3QgZW5kID0gc3RhcnQgKyBsaW1pdDtcbiAgICBjb25zdCBwcmVHcm91cHMgPSByZXN1bHQuc2xpY2UoMCwgc3RhcnQgKyAxKS5maWx0ZXIoaXRlbSA9PiAhaXNSb3coaXRlbSkpO1xuICAgIGNvbnN0IHBvc3RHcm91cHMgPSByZXN1bHQuc2xpY2Uoc3RhcnQgKyAxLCBlbmQgKyBwcmVHcm91cHMubGVuZ3RoKS5maWx0ZXIoaXRlbSA9PiAhaXNSb3coaXRlbSkpO1xuICAgIGNvbnN0IGRhdGEgPSByZXN1bHQuc2xpY2Uoc3RhcnQgKyBwcmVHcm91cHMubGVuZ3RoLCBlbmQgKyBwcmVHcm91cHMubGVuZ3RoICsgcG9zdEdyb3Vwcy5sZW5ndGgpO1xuICAgIGNvbnN0IG5lYXJlc3RHcm91cCA9IHByZUdyb3Vwcy5hdCgtMSk7XG4gICAgaWYgKGRhdGEubGVuZ3RoID4gMCkge1xuICAgICAgLy8gaWYgb3VyIGZpcnN0IGl0ZW0gaXMgbm90IGEgZ3JvdXAsIHB1c2ggaW4gdGhlIG5lYXJlc3QgZ3JvdXBcbiAgICAgIGNvbnN0IGZpcnN0SXRlbSA9IGRhdGFbMF07XG4gICAgICBhc3NlcnQoZmlyc3RJdGVtKTtcbiAgICAgIGlmIChpc1JvdyhmaXJzdEl0ZW0pICYmIG5lYXJlc3RHcm91cClcbiAgICAgICAgZGF0YS51bnNoaWZ0KG5lYXJlc3RHcm91cCk7XG4gICAgICBjb25zdCBsYXN0SXRlbSA9IGRhdGEuYXQoLTEpO1xuICAgICAgLy8gaWYgb3VyIGxhc3QgaXRlbSBpcyBhIGdyb3VwLCByZW1vdmUgaXRcbiAgICAgIGlmIChsYXN0SXRlbSAmJiAhaXNSb3cobGFzdEl0ZW0pKVxuICAgICAgICBkYXRhLnBvcCgpO1xuICAgIH1cblxuICAgIHJldHVybiBkYXRhLmZpbHRlcihyb3cgPT4gIWlzSGlkZGVuUm93KHJvdykpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdC5maWx0ZXIocm93ID0+ICFpc0hpZGRlblJvdyhyb3cpKTtcbn0pO1xuXG4vKipcbiAqIGxpc3QgaWYgaWRzIG9mIHRoZSB2aXNpYmxlIHRhYmxlIHJvd3MgdXNlZCBmb3IgY2hlY2stYWxsIGFuZCB1bmNoZWNrLWFsbFxuICovXG5jb25zdCB2aXNpYmxlSWRlbnRpZmllcnMgPSBjb21wdXRlZDxUW0lkVHlwZV1bXT4oKCkgPT4ge1xuICBjb25zdCBzZWxlY3RCeSA9IHByb3BzLnJvd0F0dHI7XG5cbiAgaWYgKCFzZWxlY3RCeSlcbiAgICByZXR1cm4gW107XG5cbiAgcmV0dXJuIGdldChmaWx0ZXJlZClcbiAgICAuZmlsdGVyKGlzUm93KVxuICAgIC5tYXAocm93ID0+IHJvd1tzZWxlY3RCeV0pO1xufSk7XG5cbi8qKlxuICogRmxhZyB0byBrbm93IHdoZW4gYWxsIHJvd3MgYXJlIHNlbGVjdGVkIGZvciB0aGUgY3VycmVudCBzY3JlZW5cbiAqL1xuY29uc3QgaXNBbGxTZWxlY3RlZCA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHtcbiAgY29uc3Qgc2VsZWN0ZWRSb3dzID0gZ2V0KHNlbGVjdGVkRGF0YSk7XG4gIGlmICghc2VsZWN0ZWRSb3dzKVxuICAgIHJldHVybiBmYWxzZTtcblxuICByZXR1cm4gKFxuICAgIHNlbGVjdGVkUm93cy5sZW5ndGggPiAwXG4gICAgJiYgZ2V0KHZpc2libGVJZGVudGlmaWVycykuZXZlcnkoaWQgPT4gc2VsZWN0ZWRSb3dzLmluY2x1ZGVzKGlkKSlcbiAgKTtcbn0pO1xuXG5jb25zdCBpbmRldGVybWluYXRlID0gY29tcHV0ZWQoKCkgPT4ge1xuICBjb25zdCBzZWxlY3RlZFJvd3MgPSBnZXQoc2VsZWN0ZWREYXRhKTtcbiAgaWYgKCFzZWxlY3RlZFJvd3MpXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIHJldHVybiBzZWxlY3RlZFJvd3MubGVuZ3RoID4gMCAmJiAhZ2V0KGlzQWxsU2VsZWN0ZWQpO1xufSk7XG5cbmNvbnN0IG5vRGF0YSA9IGNvbXB1dGVkKCgpID0+IGdldChmaWx0ZXJlZCkubGVuZ3RoID09PSAwKTtcblxuY29uc3QgY29sc3BhbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgbGV0IGNvbHVtbkxlbmd0aCA9IGdldChjb2x1bW5zKS5sZW5ndGg7XG4gIGlmIChnZXQoc2VsZWN0ZWREYXRhKSlcbiAgICBjb2x1bW5MZW5ndGgrKztcblxuICByZXR1cm4gY29sdW1uTGVuZ3RoO1xufSk7XG5cbmNvbnN0IGlzU29ydGVkQnkgPSAoa2V5OiBUYWJsZVJvd0tleTxUPikgPT4ga2V5IGluIGdldChzb3J0ZWRNYXApO1xuXG5mdW5jdGlvbiBnZXRTb3J0SW5kZXgoa2V5OiBUYWJsZVJvd0tleTxUPikge1xuICBjb25zdCBzb3J0QnkgPSBnZXQoc29ydERhdGEpO1xuXG4gIGlmICghc29ydEJ5IHx8ICFBcnJheS5pc0FycmF5KHNvcnRCeSkgfHwgIWlzU29ydGVkQnkoa2V5KSlcbiAgICByZXR1cm4gLTE7XG5cbiAgcmV0dXJuIHNvcnRCeS5maW5kSW5kZXgoc29ydCA9PiBzb3J0LmNvbHVtbiA9PT0ga2V5KSA/PyAtMTtcbn1cblxuZnVuY3Rpb24gaXNTZWxlY3RlZChpZGVudGlmaWVyOiBUW0lkVHlwZV0pIHtcbiAgY29uc3Qgc2VsZWN0aW9uID0gZ2V0KHNlbGVjdGVkRGF0YSk7XG4gIGlmICghc2VsZWN0aW9uKVxuICAgIHJldHVybiBmYWxzZTtcblxuICByZXR1cm4gc2VsZWN0aW9uLmluY2x1ZGVzKGlkZW50aWZpZXIpO1xufVxuXG5mdW5jdGlvbiBpc0Rpc2FibGVkUm93KHJvd0tleTogVFtJZFR5cGVdKSB7XG4gIGNvbnN0IGlkZW50aWZpZXIgPSBwcm9wcy5yb3dBdHRyO1xuICBpZiAoIWlkZW50aWZpZXIpXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIHJldHVybiAhIWdldChkaXNhYmxlZFJvd3MpPy5zb21lKChkaXNhYmxlZFJvdzogVCkgPT4gcm93S2V5ID09PSBkaXNhYmxlZFJvd1tpZGVudGlmaWVyXSk7XG59XG5cbmZ1bmN0aW9uIGlzRXhwYW5kZWQoaWRlbnRpZmllcjogVFtJZFR5cGVdKSB7XG4gIGNvbnN0IHsgZXhwYW5kZWQgfSA9IHByb3BzO1xuICBpZiAoIWV4cGFuZGVkPy5sZW5ndGgpXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIHJldHVybiBleHBhbmRlZC5zb21lKGRhdGEgPT4gZGF0YVtwcm9wcy5yb3dBdHRyXSA9PT0gaWRlbnRpZmllcik7XG59XG5cbmZ1bmN0aW9uIG9uVG9nZ2xlRXhwYW5kKHJvdzogVCkge1xuICBjb25zdCB7IGV4cGFuZGVkIH0gPSBwcm9wcztcbiAgaWYgKCFleHBhbmRlZClcbiAgICByZXR1cm47XG5cbiAgY29uc3Qga2V5ID0gcHJvcHMucm93QXR0cjtcbiAgY29uc3Qgcm93RXhwYW5kZWQgPSBpc0V4cGFuZGVkKHJvd1trZXldKTtcblxuICBpZiAocHJvcHMuc2luZ2xlRXhwYW5kKVxuICAgIHJldHVybiBlbWl0KCd1cGRhdGU6ZXhwYW5kZWQnLCByb3dFeHBhbmRlZCA/IFtdIDogW3Jvd10pO1xuXG4gIHJldHVybiBlbWl0KFxuICAgICd1cGRhdGU6ZXhwYW5kZWQnLFxuICAgIHJvd0V4cGFuZGVkXG4gICAgICA/IGV4cGFuZGVkLmZpbHRlcihpdGVtID0+IGl0ZW1ba2V5XSAhPT0gcm93W2tleV0pXG4gICAgICA6IFsuLi5leHBhbmRlZCwgcm93XSxcbiAgKTtcbn1cblxuZnVuY3Rpb24gZ2V0Um93R3JvdXAocm93OiBUKTogUGFydGlhbDxUPiB7XG4gIHJldHVybiBnZXQoZ3JvdXBLZXlzKS5yZWR1Y2UoKGFjYywga2V5KSA9PiAoeyAuLi5hY2MsIFtrZXldOiByb3dba2V5XSB9KSwge30pO1xufVxuXG5mdW5jdGlvbiBnZXRHcm91cFJvd3MoZ3JvdXBWYWw6IHN0cmluZykge1xuICBpZiAoIWdldChpc0dyb3VwZWQpKVxuICAgIHJldHVybiBbXTtcblxuICBjb25zdCBncm91cFJvd3MgPSBnZXQobWFwcGVkR3JvdXBzKVtncm91cFZhbF07XG4gIGFzc2VydChncm91cFJvd3MpO1xuICByZXR1cm4gZ3JvdXBSb3dzLmZpbHRlcihpc1Jvdyk7XG59XG5cbmZ1bmN0aW9uIGNvbXBhcmVHcm91cHNGbihhOiBULCBiOiBQYXJ0aWFsPFQ+KSB7XG4gIGNvbnN0IGdyb3VwID0gZ2V0KGdyb3VwS2V5cyk7XG4gIGlmIChncm91cC5sZW5ndGggPT09IDApXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIHJldHVybiBncm91cC5ldmVyeShrZXkgPT4gYVtrZXldID09PSBiW2tleV0pO1xufVxuXG5mdW5jdGlvbiBpc0V4cGFuZGVkR3JvdXAodmFsdWU6IFBhcnRpYWw8VD4pIHtcbiAgcmV0dXJuIGdldChjb2xsYXBzZWRSb3dzKS5ldmVyeShyb3cgPT4gIWNvbXBhcmVHcm91cHNGbihyb3csIHZhbHVlKSk7XG59XG5cbmZ1bmN0aW9uIGlzSGlkZGVuUm93KHJvdzogR3JvdXBlZFRhYmxlUm93PFQ+KSB7XG4gIGNvbnN0IGlkZW50aWZpZXIgPSBwcm9wcy5yb3dBdHRyO1xuICByZXR1cm4gKFxuICAgIGdldChpc0dyb3VwZWQpXG4gICAgJiYgZ2V0KGNvbGxhcHNlZFJvd3MpLnNvbWUoXG4gICAgICB2YWx1ZSA9PiBpc1Jvdyhyb3cpICYmIHJvd1tpZGVudGlmaWVyXSA9PT0gdmFsdWVbaWRlbnRpZmllcl0sXG4gICAgKVxuICApO1xufVxuXG5mdW5jdGlvbiBvblRvZ2dsZUV4cGFuZEdyb3VwKGdyb3VwOiBQYXJ0aWFsPFQ+LCB2YWx1ZT86IHN0cmluZykge1xuICBpZiAoIXZhbHVlKVxuICAgIHJldHVybjtcblxuICBjb25zdCBjb2xsYXBzZWQgPSBnZXQoY29sbGFwc2VkUm93cyk7XG5cbiAgY29uc3QgZ3JvdXBFeHBhbmRlZCA9IGlzRXhwYW5kZWRHcm91cChncm91cCk7XG5cbiAgY29uc3QgZ3JvdXBSb3dzID0gZ2V0R3JvdXBSb3dzKHZhbHVlKTtcblxuICBzZXQoXG4gICAgY29sbGFwc2VkUm93cyxcbiAgICBncm91cEV4cGFuZGVkXG4gICAgICA/IFsuLi5jb2xsYXBzZWQsIC4uLmdyb3VwUm93c11cbiAgICAgIDogY29sbGFwc2VkLmZpbHRlcihyb3cgPT4gIWNvbXBhcmVHcm91cHNGbihyb3csIGdyb3VwKSksXG4gICk7XG5cbiAgZW1pdCgndXBkYXRlOmNvbGxhcHNlZCcsIGdldChjb2xsYXBzZWRSb3dzKSk7XG59XG5cbmZ1bmN0aW9uIG9uVW5ncm91cCgpIHtcbiAgc2V0KGNvbGxhcHNlZFJvd3MsIFtdKTtcblxuICBlbWl0KCd1cGRhdGU6Y29sbGFwc2VkJywgW10pO1xuICBlbWl0KCd1cGRhdGU6Z3JvdXAnLCBBcnJheS5pc0FycmF5KHByb3BzLmdyb3VwKSA/IFtdIDogdW5kZWZpbmVkKTtcbn1cblxuZnVuY3Rpb24gb25Db3B5R3JvdXAodmFsdWU6IEdyb3VwRGF0YTxUPikge1xuICBlbWl0KCdjb3B5Omdyb3VwJywgdmFsdWUpO1xufVxuXG4vKipcbiAqIFNvcnQgdG8gaGFuZGxlIHNpbmdsZSBzb3J0IG9yIG11bHRpcGxlIHNvcnQgY29sdW1uc1xuICovXG5mdW5jdGlvbiBvblNvcnQoe1xuICBrZXksXG4gIGRpcmVjdGlvbixcbn06IHtcbiAga2V5OiBUYWJsZVJvd0tleTxUPjtcbiAgZGlyZWN0aW9uPzogJ2FzYycgfCAnZGVzYyc7XG59KSB7XG4gIGNvbnN0IHNvcnRCeSA9IGdldChzb3J0RGF0YSk7XG4gIGlmICghc29ydEJ5KVxuICAgIHJldHVybjtcblxuICBpZiAoIUFycmF5LmlzQXJyYXkoc29ydEJ5KSkge1xuICAgIGlmIChpc1NvcnRlZEJ5KGtleSkpIHtcbiAgICAgIGNvbnN0IG5ld0RpcmVjdGlvbiA9ICFkaXJlY3Rpb24gfHwgZGlyZWN0aW9uID09PSAnYXNjJyA/ICdkZXNjJyA6ICdhc2MnO1xuXG4gICAgICBpZiAoc29ydEJ5LmRpcmVjdGlvbiA9PT0gbmV3RGlyZWN0aW9uKSB7XG4gICAgICAgIHNldChzb3J0RGF0YSwgeyAuLi5zb3J0QnksIGNvbHVtbjogdW5kZWZpbmVkLCBkaXJlY3Rpb246ICdhc2MnIH0pO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHNldChzb3J0RGF0YSwge1xuICAgICAgICAgIC4uLnNvcnRCeSxcbiAgICAgICAgICBkaXJlY3Rpb246IHNvcnRCeS5kaXJlY3Rpb24gPT09ICdhc2MnID8gJ2Rlc2MnIDogJ2FzYycsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHNldChzb3J0RGF0YSwgeyBjb2x1bW46IGtleSwgZGlyZWN0aW9uOiBkaXJlY3Rpb24gfHwgJ2FzYycgfSk7XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChpc1NvcnRlZEJ5KGtleSkpIHtcbiAgICBjb25zdCBuZXdEaXJlY3Rpb24gPSAhZGlyZWN0aW9uIHx8IGRpcmVjdGlvbiA9PT0gJ2FzYycgPyAnZGVzYycgOiAnYXNjJztcblxuICAgIGNvbnN0IGluZGV4ID0gZ2V0U29ydEluZGV4KGtleSk7XG4gICAgY29uc3Qgc29ydEJ5Q29sID0gc29ydEJ5W2luZGV4XTtcbiAgICBhc3NlcnQoc29ydEJ5Q29sKTtcblxuICAgIGlmIChzb3J0QnlDb2wuZGlyZWN0aW9uID09PSBuZXdEaXJlY3Rpb24pXG4gICAgICBzb3J0Qnkuc3BsaWNlKGluZGV4LCAxKTtcbiAgICBlbHNlXG4gICAgICBzb3J0QnlDb2wuZGlyZWN0aW9uID0gc29ydEJ5Q29sLmRpcmVjdGlvbiA9PT0gJ2FzYycgPyAnZGVzYycgOiAnYXNjJztcblxuICAgIHNldChzb3J0RGF0YSwgc29ydEJ5KTtcbiAgfVxuICBlbHNlIHtcbiAgICBzZXQoc29ydERhdGEsIFsuLi5zb3J0QnksIHsgY29sdW1uOiBrZXksIGRpcmVjdGlvbjogZGlyZWN0aW9uIHx8ICdhc2MnIH1dKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc1NlbGVjdGFibGUocm93S2V5OiBUW0lkVHlwZV0pOiBib29sZWFuIHtcbiAgcmV0dXJuIGlzU2VsZWN0ZWQocm93S2V5KSB8fCAhaXNEaXNhYmxlZFJvdyhyb3dLZXkpO1xufVxuXG5mdW5jdGlvbiBtdXN0U2VsZWN0KHJvd0tleTogVFtJZFR5cGVdKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc1NlbGVjdGVkKHJvd0tleSkgJiYgaXNEaXNhYmxlZFJvdyhyb3dLZXkpO1xufVxuXG4vKipcbiAqIHRvZ2dsZXMgc2VsZWN0ZWQgcm93c1xuICogQHBhcmFtIHtib29sZWFufSBjaGVja2VkIGNoZWNrYm94IHN0YXRlXG4gKi9cbmZ1bmN0aW9uIG9uVG9nZ2xlQWxsKGNoZWNrZWQ6IGJvb2xlYW4pIHtcbiAgY29uc3Qgc2VsZWN0ZWRSb3dzID0gZ2V0KHNlbGVjdGVkRGF0YSkgPz8gW107XG4gIGlmICghcHJvcHMubXVsdGlQYWdlU2VsZWN0KSB7XG4gICAgaWYgKGNoZWNrZWQpXG4gICAgICBzZXQoc2VsZWN0ZWREYXRhLCBnZXQodmlzaWJsZUlkZW50aWZpZXJzKS5maWx0ZXIoaXNTZWxlY3RhYmxlKSk7XG4gICAgZWxzZVxuICAgICAgc2V0KHNlbGVjdGVkRGF0YSwgZ2V0KHZpc2libGVJZGVudGlmaWVycykuZmlsdGVyKG11c3RTZWxlY3QpKTtcbiAgfVxuICBlbHNlIHtcbiAgICBpZiAoY2hlY2tlZCkge1xuICAgICAgc2V0KFxuICAgICAgICBzZWxlY3RlZERhdGEsXG4gICAgICAgIEFycmF5LmZyb20obmV3IFNldChcbiAgICAgICAgICBbXG4gICAgICAgICAgICAuLi5zZWxlY3RlZFJvd3MsXG4gICAgICAgICAgICAuLi5nZXQodmlzaWJsZUlkZW50aWZpZXJzKS5maWx0ZXIoaXNTZWxlY3RhYmxlKSxcbiAgICAgICAgICBdLFxuICAgICAgICApKSxcbiAgICAgICk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgc2V0KFxuICAgICAgICBzZWxlY3RlZERhdGEsXG4gICAgICAgIHNlbGVjdGVkUm93cy5maWx0ZXIocm93S2V5ID0+ICFnZXQodmlzaWJsZUlkZW50aWZpZXJzKS5pbmNsdWRlcyhyb3dLZXkpIHx8IGdldCh2aXNpYmxlSWRlbnRpZmllcnMpLmZpbHRlcihtdXN0U2VsZWN0KS5pbmNsdWRlcyhyb3dLZXkpKSxcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbmNvbnN0IHNoaWZ0Q2xpY2tlZDogUmVmPGJvb2xlYW4+ID0gcmVmKGZhbHNlKTtcbmNvbnN0IGxhc3RTZWxlY3RlZEluZGV4OiBSZWY8bnVtYmVyPiA9IHJlZigtMSk7XG5cbmZ1bmN0aW9uIHJlc2V0Q2hlY2tib3hTaGlmdFN0YXRlKCkge1xuICBzZXQoc2hpZnRDbGlja2VkLCBmYWxzZSk7XG4gIHNldChsYXN0U2VsZWN0ZWRJbmRleCwgLTEpO1xufVxuXG4vKipcbiAqIHRvZ2dsZXMgYSBzaW5nbGUgcm93XG4gKiBAcGFyYW0ge2Jvb2xlYW59IGNoZWNrZWQgY2hlY2tib3ggc3RhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSB0aGUgaWQgb2YgdGhlIHNlbGVjdGVkIHJvd1xuICogQHBhcmFtIHtib29sZWFufSB1c2VyQWN0aW9uIHdoZXRoZXIgdGhlIHNlbGVjdCB0cmlnZ2VyZWQgYnkgdXNlciBtYW51YWxseVxuICpcbiAqL1xuZnVuY3Rpb24gb25TZWxlY3QoY2hlY2tlZDogYm9vbGVhbiwgdmFsdWU6IFRbdHlwZW9mIHByb3BzLnJvd0F0dHJdLCB1c2VyQWN0aW9uID0gZmFsc2UpIHtcbiAgaWYgKGdldChzaGlmdENsaWNrZWQpICYmIHVzZXJBY3Rpb24pXG4gICAgcmV0dXJuO1xuXG4gIGNvbnN0IHNlbGVjdGVkUm93cyA9IGdldChpbnRlcm5hbFNlbGVjdGVkRGF0YSk7XG4gIGlmICghc2VsZWN0ZWRSb3dzKVxuICAgIHJldHVybiBmYWxzZTtcblxuICBjb25zdCBzZWxlY3RlZCA9IGlzU2VsZWN0ZWQodmFsdWUpO1xuXG4gIGlmIChjaGVja2VkICYmICFzZWxlY3RlZCkge1xuICAgIHNldChpbnRlcm5hbFNlbGVjdGVkRGF0YSwgWy4uLnNlbGVjdGVkUm93cywgdmFsdWVdKTtcbiAgfVxuICBlbHNlIGlmICghY2hlY2tlZCAmJiBzZWxlY3RlZCkge1xuICAgIHNldChcbiAgICAgIGludGVybmFsU2VsZWN0ZWREYXRhLFxuICAgICAgWy4uLnNlbGVjdGVkUm93c10uZmlsdGVyKHIgPT4gciAhPT0gdmFsdWUpLFxuICAgICk7XG4gIH1cblxuICBpZiAodXNlckFjdGlvbilcbiAgICBzZXQoc2VsZWN0ZWREYXRhLCBnZXQoaW50ZXJuYWxTZWxlY3RlZERhdGEpKTtcbn1cblxuZnVuY3Rpb24gb25DaGVja2JveENsaWNrKGV2ZW50OiBhbnksIHZhbHVlOiBUW3R5cGVvZiBwcm9wcy5yb3dBdHRyXSwgaW5kZXg6IG51bWJlcikge1xuICBjb25zdCBpbnB1dCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQucXVlcnlTZWxlY3RvcignaW5wdXQnKTtcbiAgY29uc3Qgbm9kZU5hbWUgPSBldmVudC50YXJnZXQubm9kZU5hbWU7XG5cbiAgY29uc3Qgc2hpZnRLZXkgPSBldmVudC5zaGlmdEtleTtcbiAgc2V0KHNoaWZ0Q2xpY2tlZCwgc2hpZnRLZXkpO1xuXG4gIGlmIChpbnB1dCAmJiBub2RlTmFtZSAhPT0gJ0lOUFVUJykge1xuICAgIGlmIChzaGlmdEtleSkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGxldCBsYXN0SW5kZXggPSBnZXQobGFzdFNlbGVjdGVkSW5kZXgpO1xuICAgICAgICBpZiAobGFzdEluZGV4ID09PSAtMSlcbiAgICAgICAgICBsYXN0SW5kZXggPSBpbmRleDtcbiAgICAgICAgY29uc3QgdGFibGVEYXRhID0gZ2V0KGZpbHRlcmVkKTtcbiAgICAgICAgY29uc3QgbGFzdFNlbGVjdGVkRGF0YSA9IHRhYmxlRGF0YVtsYXN0SW5kZXhdO1xuICAgICAgICBhc3NlcnQobGFzdFNlbGVjdGVkRGF0YSk7XG5cbiAgICAgICAgaWYgKGlzUm93KGxhc3RTZWxlY3RlZERhdGEpKSB7XG4gICAgICAgICAgY29uc3QgaWQgPSBnZXQocm93SWRlbnRpZmllcik7XG4gICAgICAgICAgY29uc3QgdmFsdWVUb0FwcGx5ID0gaXNTZWxlY3RlZChsYXN0U2VsZWN0ZWREYXRhW2lkXSk7XG5cbiAgICAgICAgICBpZiAobGFzdEluZGV4ID09PSBpbmRleCkge1xuICAgICAgICAgICAgb25TZWxlY3QoIXZhbHVlVG9BcHBseSwgdmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGZyb20gPSBNYXRoLm1pbihsYXN0SW5kZXgsIGluZGV4KTtcbiAgICAgICAgICAgIGNvbnN0IHRvID0gTWF0aC5tYXgobGFzdEluZGV4LCBpbmRleCk7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBmcm9tOyBpIDw9IHRvOyBpKyspIHtcbiAgICAgICAgICAgICAgY29uc3QgY3VyclNlbGVjdGVkRGF0YSA9IHRhYmxlRGF0YVtpXTtcbiAgICAgICAgICAgICAgYXNzZXJ0KGN1cnJTZWxlY3RlZERhdGEpO1xuICAgICAgICAgICAgICBpZiAoaXNSb3coY3VyclNlbGVjdGVkRGF0YSkgJiYgIWlzRGlzYWJsZWRSb3coY3VyclNlbGVjdGVkRGF0YVtpZF0pKVxuICAgICAgICAgICAgICAgIG9uU2VsZWN0KHZhbHVlVG9BcHBseSwgY3VyclNlbGVjdGVkRGF0YVtpZF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHNldChsYXN0U2VsZWN0ZWRJbmRleCwgaW5kZXgpO1xuICAgICAgICAgIHNldChzZWxlY3RlZERhdGEsIGdldChpbnRlcm5hbFNlbGVjdGVkRGF0YSkpO1xuICAgICAgICB9XG4gICAgICB9LCAxKTtcbiAgICB9XG5cbiAgICBlbHNlIHsgc2V0KGxhc3RTZWxlY3RlZEluZGV4LCBpbmRleCk7IH1cbiAgfVxufVxuXG5jb25zdCBzZWFyY2ggPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5zZWFyY2gpO1xuXG5mdW5jdGlvbiBkZXNlbGVjdFJlbW92ZWRSb3dzKCkge1xuICBnZXQoc2VsZWN0ZWREYXRhKT8uZm9yRWFjaCgoa2V5OiBUW0lkVHlwZV0pID0+IHtcbiAgICBpZiAoaXNTZWxlY3RlZChrZXkpICYmICFnZXQodmlzaWJsZUlkZW50aWZpZXJzKS5pbmNsdWRlcyhrZXkpKVxuICAgICAgb25TZWxlY3QoZmFsc2UsIGtleSwgdHJ1ZSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBvblBhZ2luYXRlKCkge1xuICBlbWl0KCd1cGRhdGU6ZXhwYW5kZWQnLCBbXSk7XG4gIGlmICghcHJvcHMubXVsdGlQYWdlU2VsZWN0KVxuICAgIG9uVG9nZ2xlQWxsKGZhbHNlKTtcbiAgcmVzZXRDaGVja2JveFNoaWZ0U3RhdGUoKTtcbn1cblxuZnVuY3Rpb24gc2V0SW50ZXJuYWxUb3RhbChpdGVtczogR3JvdXBlZFRhYmxlUm93PFQ+W10pIHtcbiAgaWYgKCFwcm9wcy5wYWdpbmF0aW9uTW9kaWZpZXJzPy5leHRlcm5hbClcbiAgICBzZXQoaXRlbXNMZW5ndGgsIGl0ZW1zLmZpbHRlcihpc1JvdykubGVuZ3RoKTtcbn1cblxuZnVuY3Rpb24gY2VsbFZhbHVlKHJvdzogVCwga2V5OiBUYWJsZUNvbHVtbjxUPlsna2V5J10pIHtcbiAgcmV0dXJuIHJvd1trZXkgYXMgVGFibGVSb3dLZXk8VD5dO1xufVxuXG4vKipcbiAqIEtlZXBzIHRoZSBnbG9iYWwgaXRlbXMgcGVyIHBhZ2UgaW4gc3luYyB3aXRoIHRoZSBpbnRlcm5hbCBzdGF0ZS5cbiAqL1xud2F0Y2goaW50ZXJuYWxQYWdpbmF0aW9uU3RhdGUsIChwYWdpbmF0aW9uKSA9PiB7XG4gIGlmIChwYWdpbmF0aW9uPy5saW1pdCAmJiBnZXQoZ2xvYmFsSXRlbXNQZXJQYWdlU2V0dGluZ3MpKVxuICAgIHNldCh0YWJsZURlZmF1bHRzLml0ZW1zUGVyUGFnZSwgcGFnaW5hdGlvbi5saW1pdCk7XG59KTtcblxud2F0Y2godGFibGVEZWZhdWx0cy5pdGVtc1BlclBhZ2UsIChpdGVtc1BlclBhZ2UpID0+IHtcbiAgaWYgKCFnZXQoZ2xvYmFsSXRlbXNQZXJQYWdlU2V0dGluZ3MpKVxuICAgIHJldHVybjtcblxuICBzZXQocGFnaW5hdGlvbkRhdGEsIHtcbiAgICAuLi5nZXQocGFnaW5hdGlvbkRhdGEpLFxuICAgIGxpbWl0OiBpdGVtc1BlclBhZ2UsXG4gIH0pO1xufSk7XG5cbi8qKlxuICogb24gY2hhbmdpbmcgc2VhcmNoIHF1ZXJ5LCBuZWVkIHRvIHJlc2V0IHBhZ2luYXRpb24gcGFnZSB0byAxXG4gKi9cbndhdGNoKHNlYXJjaCwgKCkgPT4ge1xuICBzZXQocGFnaW5hdGlvbkRhdGEsIHtcbiAgICAuLi5nZXQocGFnaW5hdGlvbkRhdGEpLFxuICAgIHBhZ2U6IDEsXG4gIH0pO1xuICBvblRvZ2dsZUFsbChmYWxzZSk7XG4gIHJlc2V0Q2hlY2tib3hTaGlmdFN0YXRlKCk7XG59KTtcblxud2F0Y2goc29ydGVkLCAoaXRlbXMpID0+IHtcbiAgaWYgKCFwcm9wcy5tdWx0aVBhZ2VTZWxlY3QpXG4gICAgZGVzZWxlY3RSZW1vdmVkUm93cygpO1xuICBzZXRJbnRlcm5hbFRvdGFsKGl0ZW1zKTtcbn0pO1xuXG4vKipcbiAqIEF1dG9tYXRpY2FsbHkgYWRqdXN0IHBhZ2Ugd2hlbiBjdXJyZW50IHBhZ2UgZXhjZWVkcyBtYXhpbXVtIGF2YWlsYWJsZSBwYWdlc1xuICogVGhpcyBjYW4gaGFwcGVuIHdoZW4gdG90YWwgZGF0YSBkZWNyZWFzZXMgd2hpbGUgdXNlciBpcyBvbiBhIGhpZ2hlciBwYWdlXG4gKi9cbndhdGNoKHBhZ2luYXRpb25EYXRhLCAocGFnaW5hdGlvbikgPT4ge1xuICBjb25zdCB7IHRvdGFsLCBsaW1pdCwgcGFnZSB9ID0gcGFnaW5hdGlvbjtcbiAgY29uc3QgbWF4UGFnZXMgPSBNYXRoLmNlaWwodG90YWwgLyBsaW1pdCk7XG5cbiAgaWYgKG1heFBhZ2VzID4gMCAmJiBwYWdlID4gbWF4UGFnZXMpIHtcbiAgICBzZXQocGFnaW5hdGlvbkRhdGEsIHtcbiAgICAgIC4uLnBhZ2luYXRpb24sXG4gICAgICBwYWdlOiBtYXhQYWdlcyxcbiAgICB9KTtcbiAgfVxufSk7XG5cbm9uTW91bnRlZCgoKSA9PiB7XG4gIHNldEludGVybmFsVG90YWwoZ2V0KHNvcnRlZCkpO1xuXG4gIGlmICghZ2V0KGdsb2JhbEl0ZW1zUGVyUGFnZVNldHRpbmdzKSlcbiAgICByZXR1cm47XG5cbiAgc2V0KHBhZ2luYXRpb25EYXRhLCB7XG4gICAgLi4uZ2V0KHBhZ2luYXRpb25EYXRhKSxcbiAgICBsaW1pdDogZ2V0KHRhYmxlRGVmYXVsdHMuaXRlbXNQZXJQYWdlKSxcbiAgfSk7XG59KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAkc3R5bGUud3JhcHBlcixcbiAgICAgICRzdHlsZVtgcm91bmRlZF9fJHtyb3VuZGVkfWBdLFxuICAgICAgeyBbJHN0eWxlLm91dGxpbmVkXTogb3V0bGluZWQgfSxcbiAgICBdXCJcbiAgPlxuICAgIDxSdWlUYWJsZVBhZ2luYXRpb25cbiAgICAgIHYtaWY9XCJwYWdpbmF0aW9uRGF0YSAmJiAhaGlkZURlZmF1bHRIZWFkZXJcIlxuICAgICAgdi1tb2RlbD1cInBhZ2luYXRpb25EYXRhXCJcbiAgICAgIDpkZW5zZT1cImRlbnNlXCJcbiAgICAgIDpsb2FkaW5nPVwibG9hZGluZ1wiXG4gICAgICA6ZGlzYWJsZS1wZXItcGFnZT1cImRpc2FibGVQZXJQYWdlXCJcbiAgICAgIGRhdGEtY3k9XCJ0YWJsZS1wYWdpbmF0aW9uXCJcbiAgICAgIEB1cGRhdGU6bW9kZWwtdmFsdWU9XCJvblBhZ2luYXRlKClcIlxuICAgIC8+XG4gICAgPGRpdlxuICAgICAgcmVmPVwidGFibGVTY3JvbGxlclwiXG4gICAgICA6Y2xhc3M9XCIkc3R5bGUuc2Nyb2xsZXJcIlxuICAgID5cbiAgICAgIDx0YWJsZVxuICAgICAgICByZWY9XCJ0YWJsZVwiXG4gICAgICAgIDpjbGFzcz1cIlskc3R5bGUudGFibGUsIHsgWyRzdHlsZS5kZW5zZV06IGRlbnNlIH1dXCJcbiAgICAgICAgYXJpYS1sYWJlbD1cIlwiXG4gICAgICA+XG4gICAgICAgIDxSdWlUYWJsZUhlYWRcbiAgICAgICAgICA6bG9hZGluZz1cImxvYWRpbmdcIlxuICAgICAgICAgIDppbmRldGVybWluYXRlPVwiaW5kZXRlcm1pbmF0ZVwiXG4gICAgICAgICAgOmNhcGl0YWxpemUtaGVhZGVycz1cIiFjb2xzXCJcbiAgICAgICAgICA6Y29sc3Bhbj1cImNvbHNwYW5cIlxuICAgICAgICAgIDpjb2x1bW4tYXR0cj1cImNvbHVtbkF0dHJcIlxuICAgICAgICAgIDpjb2x1bW5zPVwiY29sdW1uc1wiXG4gICAgICAgICAgOmRlbnNlPVwiZGVuc2VcIlxuICAgICAgICAgIDpkaXNhYmxlLWNoZWNrLWFsbD1cIiFmaWx0ZXJlZD8ubGVuZ3RoXCJcbiAgICAgICAgICA6aXMtYWxsLXNlbGVjdGVkPVwiaXNBbGxTZWxlY3RlZFwiXG4gICAgICAgICAgOm5vLWRhdGE9XCJub0RhdGFcIlxuICAgICAgICAgIDpzZWxlY3RhYmxlPVwiISFzZWxlY3RlZERhdGFcIlxuICAgICAgICAgIDpzb3J0LWRhdGE9XCJzb3J0RGF0YVwiXG4gICAgICAgICAgOnNvcnRlZC1tYXA9XCJzb3J0ZWRNYXBcIlxuICAgICAgICAgIDpzdGljaz1cInN0aWNrXCJcbiAgICAgICAgICA6c3RpY2t5LWhlYWRlcj1cInN0aWNreUhlYWRlclwiXG4gICAgICAgICAgQHNvcnQ9XCJvblNvcnQoJGV2ZW50KVwiXG4gICAgICAgICAgQHNlbGVjdDphbGw9XCJvblRvZ2dsZUFsbCgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx0ZW1wbGF0ZVxuICAgICAgICAgICAgdi1mb3I9XCJoZWFkZXJTbG90IGluIGhlYWRlclNsb3RzXCJcbiAgICAgICAgICAgICNbaGVhZGVyU2xvdF09XCJzbG90RGF0YVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNsb3RcbiAgICAgICAgICAgICAgOm5hbWU9XCJoZWFkZXJTbG90XCJcbiAgICAgICAgICAgICAgdi1iaW5kPVwic2xvdERhdGFcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICA8L1J1aVRhYmxlSGVhZD5cbiAgICAgICAgPFJ1aVRhYmxlSGVhZFxuICAgICAgICAgIHYtaWY9XCJzdGlja3lIZWFkZXJcIlxuICAgICAgICAgIDpsb2FkaW5nPVwibG9hZGluZ1wiXG4gICAgICAgICAgOmNhcGl0YWxpemUtaGVhZGVycz1cIiFjb2xzXCJcbiAgICAgICAgICA6Y29sc3Bhbj1cImNvbHNwYW5cIlxuICAgICAgICAgIDpjb2x1bW4tYXR0cj1cImNvbHVtbkF0dHJcIlxuICAgICAgICAgIDpjb2x1bW5zPVwiY29sdW1uc1wiXG4gICAgICAgICAgOmRlbnNlPVwiZGVuc2VcIlxuICAgICAgICAgIDpuby1kYXRhPVwibm9EYXRhXCJcbiAgICAgICAgICA6c2VsZWN0YWJsZT1cIiEhc2VsZWN0ZWREYXRhXCJcbiAgICAgICAgICA6c29ydC1kYXRhPVwic29ydERhdGFcIlxuICAgICAgICAgIDpzb3J0ZWQtbWFwPVwic29ydGVkTWFwXCJcbiAgICAgICAgICBkYXRhLWlkPVwiaGVhZC1jbG9uZVwiXG4gICAgICAgICAgY2xhc3M9XCJvcGFjaXR5LTAgaW52aXNpYmxlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx0ZW1wbGF0ZVxuICAgICAgICAgICAgdi1mb3I9XCJoZWFkZXJTbG90IGluIGhlYWRlclNsb3RzXCJcbiAgICAgICAgICAgICNbaGVhZGVyU2xvdF09XCJzbG90RGF0YVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNsb3RcbiAgICAgICAgICAgICAgOm5hbWU9XCJoZWFkZXJTbG90XCJcbiAgICAgICAgICAgICAgdi1iaW5kPVwic2xvdERhdGFcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICA8L1J1aVRhYmxlSGVhZD5cbiAgICAgICAgPHRib2R5IDpjbGFzcz1cIlskc3R5bGUudGJvZHksIHsgWyRzdHlsZVsndGJvZHktLXN0cmlwZWQnXSA/PyAnJ106IHN0cmlwZWQgfV1cIj5cbiAgICAgICAgICA8c2xvdFxuICAgICAgICAgICAgdi1pZj1cInNsb3RzWydib2R5LnByZXBlbmQnXVwiXG4gICAgICAgICAgICA6Y29sc3Bhbj1cImNvbHNwYW5cIlxuICAgICAgICAgICAgbmFtZT1cImJvZHkucHJlcGVuZFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8dGVtcGxhdGUgdi1mb3I9XCIocm93LCBpbmRleCkgaW4gZmlsdGVyZWRcIj5cbiAgICAgICAgICAgIDx0clxuICAgICAgICAgICAgICB2LWlmPVwiIWlzUm93KHJvdylcIlxuICAgICAgICAgICAgICA6a2V5PVwiYHJvdy0ke2luZGV4fWBcIlxuICAgICAgICAgICAgICA6Y2xhc3M9XCJbJHN0eWxlLnRyLCAkc3R5bGUudHJfX2dyb3VwXVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzbG90XG4gICAgICAgICAgICAgICAgbmFtZT1cImdyb3VwLmhlYWRlclwiXG4gICAgICAgICAgICAgICAgOmNvbHNwYW49XCJjb2xzcGFuXCJcbiAgICAgICAgICAgICAgICA6aGVhZGVyPVwicm93XCJcbiAgICAgICAgICAgICAgICA6aXMtb3Blbj1cImlzRXhwYW5kZWRHcm91cChyb3cuZ3JvdXApXCJcbiAgICAgICAgICAgICAgICA6dG9nZ2xlPVwiKCkgPT4gb25Ub2dnbGVFeHBhbmRHcm91cChyb3cuZ3JvdXAsIHJvdy5pZGVudGlmaWVyKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICAgIDpjbGFzcz1cIlskc3R5bGUudGRdXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiIXAtMlwiXG4gICAgICAgICAgICAgICAgICA6Y29sc3Bhbj1cImNvbHNwYW5cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICA8UnVpRXhwYW5kQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgdi1pZj1cImdyb3VwRXhwYW5kQnV0dG9uUG9zaXRpb24gPT09ICdzdGFydCdcIlxuICAgICAgICAgICAgICAgICAgICAgIDpleHBhbmRlZD1cImlzRXhwYW5kZWRHcm91cChyb3cuZ3JvdXApXCJcbiAgICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XCJvblRvZ2dsZUV4cGFuZEdyb3VwKHJvdy5ncm91cCwgcm93LmlkZW50aWZpZXIpXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPHNsb3RcbiAgICAgICAgICAgICAgICAgICAgICA6Z3JvdXAta2V5PVwiZ3JvdXBLZXlcIlxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJncm91cC5oZWFkZXIuY29udGVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgOmhlYWRlcj1cInJvd1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBncm91cEtleSB9fToge3sgcm93LmlkZW50aWZpZXIgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPFJ1aUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIEBjbGljaz1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNvcHlHcm91cCh7IGtleTogZ3JvdXBLZXksIHZhbHVlOiByb3cuZ3JvdXAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFJ1aUljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImx1LWNvcHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwiMTZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L1J1aUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zbG90PlxuICAgICAgICAgICAgICAgICAgICA8UnVpVG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICAgIDpwb3BwZXI9XCJ7IHBsYWNlbWVudDogJ3RvcCcgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtbC1hdXRvIG1yLTJcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlICNhY3RpdmF0b3I+XG4gICAgICAgICAgICAgICAgICAgICAgICA8UnVpQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XCJvblVuZ3JvdXAoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxSdWlJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImx1LXRyYXNoLTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCIxNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1J1aUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgIFVuZ3JvdXBcbiAgICAgICAgICAgICAgICAgICAgPC9SdWlUb29sdGlwPlxuICAgICAgICAgICAgICAgICAgICA8UnVpRXhwYW5kQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgdi1pZj1cImdyb3VwRXhwYW5kQnV0dG9uUG9zaXRpb24gPT09ICdlbmQnXCJcbiAgICAgICAgICAgICAgICAgICAgICA6ZXhwYW5kZWQ9XCJpc0V4cGFuZGVkR3JvdXAocm93Lmdyb3VwKVwiXG4gICAgICAgICAgICAgICAgICAgICAgQGNsaWNrPVwib25Ub2dnbGVFeHBhbmRHcm91cChyb3cuZ3JvdXAsIHJvdy5pZGVudGlmaWVyKVwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8L3Nsb3Q+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPHRlbXBsYXRlIHYtZWxzZT5cbiAgICAgICAgICAgICAgPHRyXG4gICAgICAgICAgICAgICAgOmtleT1cImByb3ctJHtpbmRleH1gXCJcbiAgICAgICAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAgICAgICAkc3R5bGUudHIsXG4gICAgICAgICAgICAgICAgICB7IFskc3R5bGUudHJfX3NlbGVjdGVkID8/ICcnXTogaXNTZWxlY3RlZChyb3dbcm93SWRlbnRpZmllcl0pIH0sXG4gICAgICAgICAgICAgICAgICB0eXBlb2YgaXRlbUNsYXNzID09PSAnc3RyaW5nJyA/IGl0ZW1DbGFzcyA6IGl0ZW1DbGFzcyhyb3cpLFxuICAgICAgICAgICAgICAgIF1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICAgICB2LWlmPVwic2VsZWN0ZWREYXRhXCJcbiAgICAgICAgICAgICAgICAgIDpjbGFzcz1cIiRzdHlsZS5jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICBjb2xzcGFuPVwiMVwiXG4gICAgICAgICAgICAgICAgICByb3dzcGFuPVwiMVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFJ1aUNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgIDpkYXRhLWN5PVwiYHRhYmxlLXRvZ2dsZS1jaGVjay0ke2luZGV4fWBcIlxuICAgICAgICAgICAgICAgICAgICA6bW9kZWwtdmFsdWU9XCJpc1NlbGVjdGVkKHJvd1tyb3dJZGVudGlmaWVyXSlcIlxuICAgICAgICAgICAgICAgICAgICA6ZGlzYWJsZWQ9XCJpc0Rpc2FibGVkUm93KHJvd1tyb3dJZGVudGlmaWVyXSlcIlxuICAgICAgICAgICAgICAgICAgICA6c2l6ZT1cImRlbnNlID8gJ3NtJyA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0LW5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBoaWRlLWRldGFpbHNcbiAgICAgICAgICAgICAgICAgICAgQHVwZGF0ZTptb2RlbC12YWx1ZT1cIm9uU2VsZWN0KCRldmVudCwgcm93W3Jvd0lkZW50aWZpZXJdLCB0cnVlKVwiXG4gICAgICAgICAgICAgICAgICAgIEBjbGljaz1cIm9uQ2hlY2tib3hDbGljaygkZXZlbnQsIHJvd1tyb3dJZGVudGlmaWVyXSwgaW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC90ZD5cblxuICAgICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAgICAgdi1mb3I9XCIoY29sdW1uLCBzdWJJbmRleCkgaW4gY29sdW1uc1wiXG4gICAgICAgICAgICAgICAgICA6a2V5PVwic3ViSW5kZXhcIlxuICAgICAgICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgICAgICAgICAkc3R5bGUudGQsXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbi5jZWxsQ2xhc3MsXG4gICAgICAgICAgICAgICAgICAgICRzdHlsZVtgYWxpZ25fXyR7Y29sdW1uLmFsaWduID8/ICdzdGFydCd9YF0sXG4gICAgICAgICAgICAgICAgICBdXCJcbiAgICAgICAgICAgICAgICAgIDpjb2xzcGFuPVwiY29sdW1uLmNvbHNwYW4gPz8gMVwiXG4gICAgICAgICAgICAgICAgICA6cm93c3Bhbj1cImNvbHVtbi5yb3dzcGFuID8/IDFcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxzbG90XG4gICAgICAgICAgICAgICAgICAgIHYtaWY9XCJjb2x1bW4ua2V5ID09PSAnZXhwYW5kJ1wiXG4gICAgICAgICAgICAgICAgICAgIDpuYW1lPVwiYGl0ZW0uJHtjb2x1bW4ua2V5LnRvU3RyaW5nKCl9YFwiXG4gICAgICAgICAgICAgICAgICAgIDpjb2x1bW49XCJjb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICA6cm93PVwicm93XCJcbiAgICAgICAgICAgICAgICAgICAgOmluZGV4PVwiaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8UnVpRXhwYW5kQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgdi1pZj1cIiFzbG90c1snaXRlbS5leHBhbmQnXVwiXG4gICAgICAgICAgICAgICAgICAgICAgOmV4cGFuZGVkPVwiaXNFeHBhbmRlZChyb3dbcm93SWRlbnRpZmllcl0pXCJcbiAgICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XCJvblRvZ2dsZUV4cGFuZChyb3cpXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvc2xvdD5cbiAgICAgICAgICAgICAgICAgIDxzbG90XG4gICAgICAgICAgICAgICAgICAgIHYtZWxzZVxuICAgICAgICAgICAgICAgICAgICA6Y29sdW1uPVwiY29sdW1uXCJcbiAgICAgICAgICAgICAgICAgICAgOmluZGV4PVwiaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICA6bmFtZT1cImBpdGVtLiR7Y29sdW1uLmtleS50b1N0cmluZygpfWBcIlxuICAgICAgICAgICAgICAgICAgICA6cm93PVwicm93XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgY2VsbFZhbHVlKHJvdywgY29sdW1uLmtleSkgfX1cbiAgICAgICAgICAgICAgICAgIDwvc2xvdD5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8L3RyPlxuXG4gICAgICAgICAgICAgIDx0clxuICAgICAgICAgICAgICAgIHYtaWY9XCJleHBhbmRhYmxlICYmIGlzRXhwYW5kZWQocm93W3Jvd0lkZW50aWZpZXJdKVwiXG4gICAgICAgICAgICAgICAgOmtleT1cImByb3ctZXhwYW5kLSR7aW5kZXh9YFwiXG4gICAgICAgICAgICAgICAgOmNsYXNzPVwiWyRzdHlsZS50ciwgJHN0eWxlLnRyX19leHBhbmRhYmxlXVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICAgIDpjb2xzcGFuPVwiY29sc3BhblwiXG4gICAgICAgICAgICAgICAgICA6Y2xhc3M9XCJbJHN0eWxlLnRkXVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHNsb3RcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cImV4cGFuZGVkLWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICA6cm93PVwicm93XCJcbiAgICAgICAgICAgICAgICAgICAgOmluZGV4PVwiaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgIDx0clxuICAgICAgICAgICAgdi1pZj1cImxvYWRpbmcgJiYgbm9EYXRhXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgOmNsYXNzPVwiJHN0eWxlLnRib2R5X19sb2FkZXJcIlxuICAgICAgICAgICAgICA6Y29sc3Bhbj1cImNvbHNwYW5cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8UnVpUHJvZ3Jlc3NcbiAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJpbmRldGVybWluYXRlXCJcbiAgICAgICAgICAgICAgICBjaXJjdWxhclxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDx0clxuICAgICAgICAgICAgdi1pZj1cIm5vRGF0YSAmJiBlbXB0eSAmJiAhbG9hZGluZ1wiXG4gICAgICAgICAgICA6Y2xhc3M9XCJbJHN0eWxlLnRyLCAkc3R5bGUudHJfX2VtcHR5XVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFRyYW5zaXRpb25cbiAgICAgICAgICAgICAgYXBwZWFyXG4gICAgICAgICAgICAgIGVudGVyLWFjdGl2ZS1jbGFzcz1cInRyYW5zaXRpb24gZWFzZS1vdXQgZHVyYXRpb24tMjAwIGRlbGF5LTIwMFwiXG4gICAgICAgICAgICAgIGVudGVyLWZyb20tY2xhc3M9XCJvcGFjaXR5LTAgdHJhbnNsYXRlLXktMVwiXG4gICAgICAgICAgICAgIGVudGVyLXRvLWNsYXNzPVwib3BhY2l0eS0xMDAgdHJhbnNsYXRlLXktMFwiXG4gICAgICAgICAgICAgIGxlYXZlLWFjdGl2ZS1jbGFzcz1cInRyYW5zaXRpb24gZWFzZS1pbiBkdXJhdGlvbi0xNTBcIlxuICAgICAgICAgICAgICBsZWF2ZS1mcm9tLWNsYXNzPVwib3BhY2l0eS0xMDAgdHJhbnNsYXRlLXktMFwiXG4gICAgICAgICAgICAgIGxlYXZlLXRvLWNsYXNzPVwib3BhY2l0eS0wIHRyYW5zbGF0ZS15LTFcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICA6Y2xhc3M9XCIkc3R5bGUudGRcIlxuICAgICAgICAgICAgICAgIDpjb2xzcGFuPVwiY29sc3BhblwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c2xvdCBuYW1lPVwibm8tZGF0YVwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiA6Y2xhc3M9XCIkc3R5bGUuZW1wdHlcIj5cbiAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgIDpzcmM9XCJpc0RhcmsgPyBub0RhdGFQbGFjZWhvbGRlckRhcmsgOiBub0RhdGFQbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgOmFsdD1cImVtcHR5LmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImgtMzJcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8cFxuICAgICAgICAgICAgICAgICAgICAgIHYtaWY9XCJlbXB0eS5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgOmNsYXNzPVwiJHN0eWxlLmVtcHR5X19sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBlbXB0eS5sYWJlbCB9fVxuICAgICAgICAgICAgICAgICAgICA8L3A+XG5cbiAgICAgICAgICAgICAgICAgICAgPHNsb3QgbmFtZT1cImVtcHR5LWRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHBcbiAgICAgICAgICAgICAgICAgICAgICAgIHYtaWY9XCJlbXB0eS5kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M9XCIkc3R5bGUuZW1wdHlfX2Rlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBlbXB0eS5kZXNjcmlwdGlvbiB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgPC9zbG90PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9zbG90PlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC9UcmFuc2l0aW9uPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPHNsb3RcbiAgICAgICAgICAgIHYtaWY9XCJzbG90c1snYm9keS5hcHBlbmQnXVwiXG4gICAgICAgICAgICA6Y29sc3Bhbj1cImNvbHNwYW5cIlxuICAgICAgICAgICAgbmFtZT1cImJvZHkuYXBwZW5kXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L3Rib2R5PlxuICAgICAgICA8dGZvb3Q+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cInRmb290XCIgLz5cbiAgICAgICAgPC90Zm9vdD5cbiAgICAgIDwvdGFibGU+XG4gICAgPC9kaXY+XG4gICAgPFJ1aVRhYmxlUGFnaW5hdGlvblxuICAgICAgdi1pZj1cInBhZ2luYXRpb25EYXRhICYmICFoaWRlRGVmYXVsdEZvb3RlclwiXG4gICAgICB2LW1vZGVsPVwicGFnaW5hdGlvbkRhdGFcIlxuICAgICAgOmRlbnNlPVwiZGVuc2VcIlxuICAgICAgOmxvYWRpbmc9XCJsb2FkaW5nXCJcbiAgICAgIDpkaXNhYmxlLXBlci1wYWdlPVwiZGlzYWJsZVBlclBhZ2VcIlxuICAgICAgZGF0YS1jeT1cInRhYmxlLXBhZ2luYXRpb25cIlxuICAgICAgQHVwZGF0ZTptb2RlbC12YWx1ZT1cIm9uUGFnaW5hdGUoKVwiXG4gICAgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgbW9kdWxlIGxhbmc9XCJzY3NzXCI+XG4ud3JhcHBlciB7XG4gIEBhcHBseSByZWxhdGl2ZSBkaXZpZGUteSBkaXZpZGUtYmxhY2svWzAuMTJdIG92ZXJmbG93LWhpZGRlbjtcbiAgJi5vdXRsaW5lZCB7XG4gICAgQGFwcGx5IGJvcmRlciBib3JkZXItYmxhY2svWzAuMTJdO1xuICB9XG5cbiAgJi5yb3VuZGVkX19zbSB7XG4gICAgQGFwcGx5IHJvdW5kZWQtWy4yNXJlbV07XG5cbiAgICAuaW1hZ2Uge1xuICAgICAgQGFwcGx5IHJvdW5kZWQtdC1bLjI1cmVtXTtcbiAgICB9XG4gIH1cblxuICAmLnJvdW5kZWRfX21kIHtcbiAgICBAYXBwbHkgcm91bmRlZC1bLjc1cmVtXTtcblxuICAgIC5pbWFnZSB7XG4gICAgICBAYXBwbHkgcm91bmRlZC10LVsuNzVyZW1dO1xuICAgIH1cbiAgfVxuXG4gICYucm91bmRlZF9fbGcge1xuICAgIEBhcHBseSByb3VuZGVkLVsxcmVtXTtcblxuICAgIC5pbWFnZSB7XG4gICAgICBAYXBwbHkgcm91bmRlZC10LVsxcmVtXTtcbiAgICB9XG4gIH1cblxuICAuc2Nyb2xsZXIge1xuICAgIEBhcHBseSBvdmVyZmxvdy14LWF1dG8gb3ZlcmZsb3cteS1oaWRkZW47XG4gICAgY2xpcC1wYXRoOiBpbnNldCgwIDAgMCAwKTtcbiAgfVxuXG4gIC50YWJsZSB7XG4gICAgQGFwcGx5IG1pbi13LWZ1bGwgdGFibGUtZml4ZWQgZGl2aWRlLXkgZGl2aWRlLWJsYWNrL1swLjEyXSB3aGl0ZXNwYWNlLW5vd3JhcCBteC1hdXRvIG15LTAgbWF4LXctZml0IHJlbGF0aXZlIGJvcmRlci1ibGFjay9bMC4xMl07XG5cbiAgICAudGJvZHkge1xuICAgICAgQGFwcGx5IGRpdmlkZS15IGRpdmlkZS1ibGFjay9bMC4xMl07XG5cbiAgICAgICYtLXN0cmlwZWQge1xuICAgICAgICA+IC50ciB7XG4gICAgICAgICAgJjpudGgtY2hpbGQoZXZlbikge1xuICAgICAgICAgICAgQGFwcGx5IGJnLXJ1aS1ncmV5LTUwO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICA+IC50ciB7XG4gICAgICAgIEBhcHBseSBob3ZlcjpiZy1ibGFjay9bMC4wNF07XG5cbiAgICAgICAgJl9fc2VsZWN0ZWQge1xuICAgICAgICAgIEBhcHBseSBiZy1ydWktcHJpbWFyeS9bMC4wOF07XG4gICAgICAgIH1cblxuICAgICAgICAmX19lbXB0eSB7XG4gICAgICAgICAgQGFwcGx5IGhvdmVyOmJnLXRyYW5zcGFyZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgJl9fZXhwYW5kYWJsZSB7XG4gICAgICAgICAgQGFwcGx5IGJnLVsjZjlmYWZiXSBob3ZlcjpiZy1bI2Y5ZmFmYl07XG4gICAgICAgIH1cblxuICAgICAgICAmX19ncm91cCB7XG4gICAgICAgICAgQGFwcGx5IGJnLWJsYWNrL1swLjAyXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC50ZCB7XG4gICAgICAgICAgQGFwcGx5IHAtNCB0ZXh0LXJ1aS10ZXh0IHRleHQtYm9keS0yO1xuICAgICAgICAgIHRleHQtd3JhcDogaW5pdGlhbDtcblxuICAgICAgICAgICYuYWxpZ25fX3N0YXJ0IHtcbiAgICAgICAgICAgIEBhcHBseSB0ZXh0LWxlZnQgcnRsOnRleHQtcmlnaHQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgJi5hbGlnbl9fY2VudGVyIHtcbiAgICAgICAgICAgIEBhcHBseSB0ZXh0LWNlbnRlcjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAmLmFsaWduX19lbmQge1xuICAgICAgICAgICAgQGFwcGx5IHRleHQtcmlnaHQgcnRsOnRleHQtbGVmdDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAuZW1wdHkge1xuICAgICAgICAgICAgQGFwcGx5IGZsZXggZmxleC1jb2wgZ2FwLTMgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGZsZXgtMSBtaW4taC1bNC40cmVtXSBteS00O1xuXG4gICAgICAgICAgICAmX19sYWJlbCB7XG4gICAgICAgICAgICAgIEBhcHBseSB0ZXh0LWJvZHktMSBsZWFkaW5nLW5vbmUgZm9udC1ib2xkIHRleHQtY2VudGVyIHRleHQtY3VycmVudCBwYi0wIG1iLTA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICZfX2Rlc2NyaXB0aW9uIHtcbiAgICAgICAgICAgICAgQGFwcGx5IHRleHQtYm9keS0yIHRleHQtY2VudGVyIHRleHQtcnVpLXRleHQtc2Vjb25kYXJ5IHBiLTAgbWItMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJl9fbG9hZGVyIHtcbiAgICAgICAgQGFwcGx5IHB5LTggdGV4dC1jZW50ZXI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmNoZWNrYm94IHtcbiAgICAgIEBhcHBseSBweC0yIHctWzMuNjI1cmVtXSBtYXgtdy1bMy42MjVyZW1dO1xuICAgICAgbGFiZWwge1xuICAgICAgICBAYXBwbHkgbWwtMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmRlbnNlIHtcbiAgICAgIC50Ym9keSB7XG4gICAgICAgIC50ZCB7XG4gICAgICAgICAgQGFwcGx5IHB5LVswLjM4cmVtXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG46Z2xvYmFsKC5kYXJrKSB7XG4gIC53cmFwcGVyIHtcbiAgICBAYXBwbHkgZGl2aWRlLXdoaXRlL1swLjEyXTtcblxuICAgICYub3V0bGluZWQge1xuICAgICAgQGFwcGx5IGJvcmRlci13aGl0ZS9bMC4xMl07XG4gICAgfVxuXG4gICAgLnRhYmxlIHtcbiAgICAgIEBhcHBseSBkaXZpZGUtd2hpdGUvWzAuMTJdIGJvcmRlci13aGl0ZS9bMC4xMl07XG5cbiAgICAgIC50Ym9keSB7XG4gICAgICAgIEBhcHBseSBkaXZpZGUtd2hpdGUvWzAuMTJdO1xuXG4gICAgICAgICYtLXN0cmlwZWQge1xuICAgICAgICAgID4gLnRyIHtcbiAgICAgICAgICAgICY6bnRoLWNoaWxkKGV2ZW4pIHtcbiAgICAgICAgICAgICAgQGFwcGx5IGJnLXJ1aS1ncmV5LTkwMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICA+IC50ciB7XG4gICAgICAgICAgQGFwcGx5IGhvdmVyOmJnLXdoaXRlL1swLjA0XTtcblxuICAgICAgICAgICZfX3NlbGVjdGVkIHtcbiAgICAgICAgICAgIEBhcHBseSBiZy1ydWktZGFyay1wcmltYXJ5L1swLjA4XTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAmX19leHBhbmRhYmxlIHtcbiAgICAgICAgICAgIEBhcHBseSBiZy1bIzEyMTIxMl0gaG92ZXI6YmctWyMxMjEyMTJdO1xuICAgICAgICAgIH1cblxuICAgICAgICAgICZfX2dyb3VwIHtcbiAgICAgICAgICAgIEBhcHBseSBiZy13aGl0ZS9bMC4wMl07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvcHMge1xuICBhY3RpdmU/OiBib29sZWFuO1xuICB2YWx1ZT86IG51bWJlciB8IHN0cmluZztcbiAgZWFnZXI/OiBib29sZWFuO1xuICByZXZlcnNlPzogYm9vbGVhbjtcbn1cblxuZGVmaW5lT3B0aW9ucyh7XG4gIG5hbWU6ICdSdWlUYWJJdGVtJyxcbn0pO1xuXG53aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgZWFnZXI6IGZhbHNlLFxuICBhY3RpdmU6IGZhbHNlLFxuICByZXZlcnNlOiBmYWxzZSxcbn0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiA6Y2xhc3M9XCJbJHN0eWxlLnRhYiwgeyAnYWN0aXZlLXRhYi1pdGVtJzogYWN0aXZlIH1dXCI+XG4gICAgPFRyYW5zaXRpb25cbiAgICAgIDplbnRlci1mcm9tLWNsYXNzPVwiYG9wYWNpdHktMCAke3JldmVyc2UgPyAnLXRyYW5zbGF0ZS14LTgnIDogJ3RyYW5zbGF0ZS14LTgnfWBcIlxuICAgICAgOmxlYXZlLXRvLWNsYXNzPVwiYG9wYWNpdHktMCAhaC0wIG92ZXJmbG93LWhpZGRlbiAke1xuICAgICAgICByZXZlcnNlID8gJ3RyYW5zbGF0ZS14LTgnIDogJy10cmFuc2xhdGUteC04J1xuICAgICAgfWBcIlxuICAgICAgZW50ZXItYWN0aXZlLWNsYXNzPVwidy1mdWxsIHRyYW5zZm9ybSBkdXJhdGlvbi0zMDAgdHJhbnNpdGlvblwiXG4gICAgICBlbnRlci10by1jbGFzcz1cIm9wYWNpdHktMTAwIHRyYW5zbGF0ZS14LTBcIlxuICAgICAgbGVhdmUtYWN0aXZlLWNsYXNzPVwidy1mdWxsIHRyYW5zZm9ybSBkdXJhdGlvbi0zMDAgdHJhbnNpdGlvbiAhaC0wIG92ZXJmbG93LWhpZGRlblwiXG4gICAgICBsZWF2ZS1mcm9tLWNsYXNzPVwib3BhY2l0eS0xMDAgdHJhbnNsYXRlLXgtMCAhaC0wIG92ZXJmbG93LWhpZGRlblwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICB2LWlmPVwiYWN0aXZlXCJcbiAgICAgICAgY2xhc3M9XCJ3LWZ1bGxcIlxuICAgICAgPlxuICAgICAgICA8c2xvdCAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9UcmFuc2l0aW9uPlxuICAgIDxkaXZcbiAgICAgIHYtaWY9XCJlYWdlciAmJiAhYWN0aXZlXCJcbiAgICAgIGNsYXNzPVwiaGlkZGVuXCJcbiAgICA+XG4gICAgICA8c2xvdCAvPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBsYW5nPVwic2Nzc1wiIG1vZHVsZT5cbi50YWIge1xuICBAYXBwbHkgdy1mdWxsO1xufVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXAgZ2VuZXJpYz0nVCBleHRlbmRzIHN0cmluZyB8IG51bWJlcic+XG5pbXBvcnQgeyBGcmFnbWVudCwgaXNWTm9kZSB9IGZyb20gJ3Z1ZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvcHM8VD4ge1xuICBtb2RlbFZhbHVlPzogVDtcbn1cblxuZGVmaW5lT3B0aW9ucyh7XG4gIG5hbWU6ICdSdWlUYWJJdGVtcycsXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG59KTtcblxuY29uc3QgbW9kZWxWYWx1ZSA9IGRlZmluZU1vZGVsPFByb3BzPFQ+Wydtb2RlbFZhbHVlJ10+KCk7XG5cbmNvbnN0IHNsb3RzID0gdXNlU2xvdHMoKTtcbmNvbnN0IHJldmVyc2UgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuY29uc3QgY3VyckluZGV4ID0gcmVmPG51bWJlcj4oLTEpO1xuY29uc3QgYWN0aXZlSW5kZXggPSByZWY8bnVtYmVyPigtMSk7XG5cbndhdGNoKGN1cnJJbmRleCwgKGluZGV4KSA9PiB7XG4gIG5leHRUaWNrKCgpID0+IHtcbiAgICBzZXQoYWN0aXZlSW5kZXgsIGluZGV4KTtcbiAgfSk7XG59KTtcblxuLy8gV2hlbiB1c2luZyBkeW5hbWljIGNvbnRlbnQgd2l0aCB2LWZvciB0aGUgc2xvdCBjb250ZW50IGNhbiBjb250YWluIGZyYWdtZW50LFxuLy8gR28gdGhyb3VnaCB0aGUgZnJhZ21lbnQgYW5kIGFsd2F5cyByZXR1cm4gUnVpVGFiSXRlbSBvbmx5XG5mdW5jdGlvbiBnZXRDaGlsZHJlblRhYnMoY2hpbGRyZW46IFZOb2RlW10pOiBWTm9kZVtdIHtcbiAgcmV0dXJuIGNoaWxkcmVuLmZsYXRNYXAoKGl0ZW0pID0+IHtcbiAgICBpZiAoaXRlbS50eXBlID09PSBGcmFnbWVudCAmJiBBcnJheS5pc0FycmF5KGl0ZW0uY2hpbGRyZW4pICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoID4gMClcbiAgICAgIHJldHVybiBnZXRDaGlsZHJlblRhYnMoaXRlbS5jaGlsZHJlbi5maWx0ZXIoaXNWTm9kZSkpO1xuXG4gICAgcmV0dXJuIFtpdGVtXTtcbiAgfSkuZmxhdCgpO1xufVxuXG5jb25zdCBjaGlsZHJlbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgY29uc3Qgc2xvdENvbnRlbnQgPSBzbG90cy5kZWZhdWx0Py4oKSA/PyBbXTtcblxuICBjb25zdCB0YWJzID0gZ2V0Q2hpbGRyZW5UYWJzKHNsb3RDb250ZW50KTtcblxuICBsZXQgYW55QWN0aXZlID0gZmFsc2U7XG4gIGNvbnN0IGNoaWxkcmVuID0gdGFicy5tYXAoKHRhYiwgaW5kZXgpID0+IHtcbiAgICBjb25zdCB2YWx1ZSA9IHRhYi5wcm9wcz8udmFsdWUgPz8gaW5kZXg7XG4gICAgY29uc3QgYWN0aXZlID0gZ2V0KG1vZGVsVmFsdWUpID09PSB2YWx1ZTtcbiAgICBpZiAoYWN0aXZlKSB7XG4gICAgICBhbnlBY3RpdmUgPSB0cnVlO1xuICAgICAgaWYgKGluZGV4ICE9PSBnZXQoY3VyckluZGV4KSkge1xuICAgICAgICBzZXQocmV2ZXJzZSwgaW5kZXggPCBnZXQoY3VyckluZGV4KSk7XG4gICAgICAgIHNldChjdXJySW5kZXgsIGluZGV4KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udGFiLFxuICAgICAgcHJvcHM6IHtcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIC4uLnRhYi5wcm9wcyxcbiAgICAgIH0sXG4gICAgfTtcbiAgfSk7XG5cbiAgaWYgKCFhbnlBY3RpdmUpXG4gICAgc2V0KGN1cnJJbmRleCwgLTEpO1xuXG4gIHJldHVybiBjaGlsZHJlbjtcbn0pO1xuXG5jb25zdCB3cmFwcGVyID0gcmVmPEhUTUxEaXZFbGVtZW50PigpO1xuY29uc3QgaW5uZXIgPSByZWY8SFRNTERpdkVsZW1lbnQ+KCk7XG5cbmNvbnN0IHsgaGVpZ2h0OiBpbm5lckhlaWdodCB9ID0gdXNlRWxlbWVudFNpemUoaW5uZXIpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIHJlZj1cIndyYXBwZXJcIlxuICAgIDpjbGFzcz1cIiRzdHlsZS50YWJzXCJcbiAgICB2LWJpbmQ9XCIkYXR0cnNcIlxuICA+XG4gICAgPGRpdiByZWY9XCJpbm5lclwiPlxuICAgICAgPENvbXBvbmVudFxuICAgICAgICA6aXM9XCJjaGlsZFwiXG4gICAgICAgIHYtZm9yPVwiKGNoaWxkLCBpKSBpbiBjaGlsZHJlblwiXG4gICAgICAgIDprZXk9XCJpXCJcbiAgICAgICAgOnJldmVyc2U9XCJyZXZlcnNlXCJcbiAgICAgICAgOmFjdGl2ZT1cImkgPT09IGFjdGl2ZUluZGV4XCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgbW9kdWxlPlxuLnRhYnMge1xuICBAYXBwbHkgZ3JvdyB0cmFuc2l0aW9uLWFsbCBvdmVyZmxvdy1oaWRkZW47XG4gIGhlaWdodDogY2FsYyh2LWJpbmQoaW5uZXJIZWlnaHQpICogMXB4KTtcbn1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuaW1wb3J0IHR5cGUgeyBSb3V0ZUxvY2F0aW9uUmF3IH0gZnJvbSAndnVlLXJvdXRlcic7XG5pbXBvcnQgdHlwZSB7IENvbnRleHRDb2xvcnNUeXBlIH0gZnJvbSAnQC9jb25zdHMvY29sb3JzJztcbmltcG9ydCBSdWlCdXR0b24gZnJvbSAnQC9jb21wb25lbnRzL2J1dHRvbnMvYnV0dG9uL1J1aUJ1dHRvbi52dWUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BzIHtcbiAgY29sb3I/OiBDb250ZXh0Q29sb3JzVHlwZTtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBncm93PzogYm9vbGVhbjtcbiAgdmFsdWU/OiBudW1iZXIgfCBzdHJpbmc7XG4gIGFjdGl2ZT86IGJvb2xlYW47XG4gIGFjdGl2ZUNsYXNzPzogc3RyaW5nO1xuICBsaW5rPzogYm9vbGVhbjtcbiAgdGFyZ2V0Pzogc3RyaW5nO1xuICB0bz86IFJvdXRlTG9jYXRpb25SYXc7XG4gIGV4YWN0PzogYm9vbGVhbjtcbiAgZXhhY3RQYXRoPzogYm9vbGVhbjtcbiAgdmVydGljYWw/OiBib29sZWFuO1xuICBhbGlnbj86ICdzdGFydCcgfCAnY2VudGVyJyB8ICdlbmQnO1xuICBpbmRpY2F0b3JQb3NpdGlvbj86ICdzdGFydCcgfCAnZW5kJztcbn1cblxuZGVmaW5lT3B0aW9ucyh7XG4gIG5hbWU6ICdSdWlUYWInLFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxufSk7XG5cbmNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gIGNvbG9yOiB1bmRlZmluZWQsXG4gIGRpc2FibGVkOiBmYWxzZSxcbiAgZ3JvdzogZmFsc2UsXG4gIHZhbHVlOiBnZW5lcmF0ZUlkKCksXG4gIGFjdGl2ZTogZmFsc2UsXG4gIGFjdGl2ZUNsYXNzOiAnJyxcbiAgbGluazogZmFsc2UsXG4gIHRvOiAnJyxcbiAgdGFyZ2V0OiAnX3NlbGYnLFxuICBleGFjdDogZmFsc2UsXG4gIGV4YWN0UGF0aDogZmFsc2UsXG4gIHZlcnRpY2FsOiBmYWxzZSxcbiAgYWxpZ246ICdjZW50ZXInLFxuICBpbmRpY2F0b3JQb3NpdGlvbjogJ2VuZCcsXG59KTtcblxuY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPHtcbiAgKGU6ICdjbGljaycsIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiB2b2lkO1xufT4oKTtcblxuY29uc3Qgc2xvdHMgPSBkZWZpbmVTbG90czx7XG4gIGRlZmF1bHQ/OiAocHJvcHM/OiBvYmplY3QpID0+IGFueTtcbiAgcHJlcGVuZD86IChwcm9wcz86IG9iamVjdCkgPT4gYW55O1xuICBhcHBlbmQ/OiAocHJvcHM/OiBvYmplY3QpID0+IGFueTtcbn0+KCk7XG5cbmNvbnN0IHsgdGFyZ2V0LCBncm93LCBhY3RpdmUsIGFjdGl2ZUNsYXNzLCBkaXNhYmxlZCwgdmVydGljYWwsIGFsaWduLCB2YWx1ZSwgaW5kaWNhdG9yUG9zaXRpb24gfVxuICA9IHRvUmVmcyhwcm9wcyk7XG5cbmNvbnN0IGNzcyA9IHVzZUNzc01vZHVsZSgpO1xuXG5jb25zdCBpc1NlbGYgPSBjb21wdXRlZCgoKSA9PiBnZXQodGFyZ2V0KSA9PT0gJ19zZWxmJyk7XG5cbmNvbnN0IHRhYkNsYXNzID0gY29tcHV0ZWQoKCkgPT4gW1xuICBjc3MudGFiLFxuICBjc3NbYHRhYi0tJHtnZXQoYWxpZ24pfWBdLFxuICBjc3NbYHRhYi1pbmRpY2F0b3ItLSR7Z2V0KGluZGljYXRvclBvc2l0aW9uKX1gXSxcbiAge1xuICAgIFtjc3NbJ3RhYi0tZ3JvdyddID8/ICcnXTogZ2V0KGdyb3cpLFxuICAgIFtgJHtjc3NbJ3RhYi0tYWN0aXZlJ119IGFjdGl2ZS10YWIgJHtnZXQoYWN0aXZlQ2xhc3MpfWBdOiBnZXQoYWN0aXZlKSxcbiAgICBbY3NzWyd0YWItLWRpc2FibGVkJ10gPz8gJyddOiBnZXQoZGlzYWJsZWQpLFxuICAgIFtjc3NbJ3RhYi0tdmVydGljYWwnXSA/PyAnJ106IGdldCh2ZXJ0aWNhbCksXG4gIH0sXG5dKTtcblxuZnVuY3Rpb24gY2xpY2soKSB7XG4gIGVtaXQoJ2NsaWNrJywgZ2V0KHZhbHVlKSk7XG59XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8UnVpQnV0dG9uXG4gICAgdi1pZj1cImRpc2FibGVkXCJcbiAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgZGlzYWJsZWRcbiAgICA6Y2xhc3M9XCJ0YWJDbGFzc1wiXG4gICAgaGlkZS1mb2N1cy1pbmRpY2F0b3JcbiAgICB0YWJpbmRleD1cIi0xXCJcbiAgICByb2xlPVwidGFiXCJcbiAgICB2LWJpbmQ9XCIkYXR0cnNcIlxuICA+XG4gICAgPHRlbXBsYXRlXG4gICAgICB2LWZvcj1cIihfLCBuYW1lKSBpbiBzbG90c1wiXG4gICAgICAjW25hbWVdPVwic2xvdERhdGFcIlxuICAgID5cbiAgICAgIDxzbG90XG4gICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgIHYtYmluZD1cInNsb3REYXRhXCJcbiAgICAgIC8+XG4gICAgPC90ZW1wbGF0ZT5cbiAgPC9SdWlCdXR0b24+XG4gIDxSdWlCdXR0b25cbiAgICB2LWVsc2UtaWY9XCIhbGlua1wiXG4gICAgOmNsYXNzPVwidGFiQ2xhc3NcIlxuICAgIDpjb2xvcj1cImFjdGl2ZSA/IGNvbG9yIDogdW5kZWZpbmVkXCJcbiAgICByb2xlPVwidGFiXCJcbiAgICB2LWJpbmQ9XCIkYXR0cnNcIlxuICAgIHRhYmluZGV4PVwiLTFcIlxuICAgIGhpZGUtZm9jdXMtaW5kaWNhdG9yXG4gICAgdmFyaWFudD1cInRleHRcIlxuICAgIEBjbGljaz1cImNsaWNrKClcIlxuICA+XG4gICAgPHRlbXBsYXRlXG4gICAgICB2LWZvcj1cIihfLCBuYW1lKSBpbiBzbG90c1wiXG4gICAgICAjW25hbWVdPVwic2xvdERhdGFcIlxuICAgID5cbiAgICAgIDxzbG90XG4gICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgIHYtYmluZD1cInNsb3REYXRhXCJcbiAgICAgIC8+XG4gICAgPC90ZW1wbGF0ZT5cbiAgPC9SdWlCdXR0b24+XG4gIDxSb3V0ZXJMaW5rXG4gICAgdi1lbHNlXG4gICAgI2RlZmF1bHQ9XCJ7IGhyZWYsIG5hdmlnYXRlLCBpc0FjdGl2ZSwgaXNFeGFjdEFjdGl2ZSB9XCJcbiAgICA6dG89XCJ0b1wiXG4gICAgOmV4YWN0PVwiZXhhY3RcIlxuICAgIDpleGFjdC1wYXRoPVwiZXhhY3RQYXRoXCJcbiAgICBjdXN0b21cbiAgPlxuICAgIDxSdWlCdXR0b25cbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgLi4udGFiQ2xhc3MsXG4gICAgICAgIHtcbiAgICAgICAgICBbYCR7Y3NzWyd0YWItLWFjdGl2ZSddfSBhY3RpdmUtdGFiLWxpbmtgXTogZXhhY3RcbiAgICAgICAgICAgID8gaXNFeGFjdEFjdGl2ZVxuICAgICAgICAgICAgOiBpc0FjdGl2ZSxcbiAgICAgICAgfSxcbiAgICAgIF1cIlxuICAgICAgOmNvbG9yPVwiYWN0aXZlIHx8IChleGFjdCA/IGlzRXhhY3RBY3RpdmUgOiBpc0FjdGl2ZSkgPyBjb2xvciA6IHVuZGVmaW5lZFwiXG4gICAgICA6aHJlZj1cImlzU2VsZiA/IHVuZGVmaW5lZCA6IGhyZWZcIlxuICAgICAgOnRhcmdldD1cInRhcmdldFwiXG4gICAgICByb2xlPVwidGFiXCJcbiAgICAgIG5vLW91dGxpbmVcbiAgICAgIHRhZz1cImFcIlxuICAgICAgaGlkZS1mb2N1cy1pbmRpY2F0b3JcbiAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgdi1iaW5kPVwiJGF0dHJzXCJcbiAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgIEBjbGljaz1cIlxuICAgICAgICBjbGljaygpO1xuICAgICAgICBpc1NlbGYgPyBuYXZpZ2F0ZSgkZXZlbnQpIDogdW5kZWZpbmVkO1xuICAgICAgXCJcbiAgICA+XG4gICAgICA8dGVtcGxhdGVcbiAgICAgICAgdi1mb3I9XCIoXywgbmFtZSkgaW4gc2xvdHNcIlxuICAgICAgICAjW25hbWVdPVwic2xvdERhdGFcIlxuICAgICAgPlxuICAgICAgICA8c2xvdFxuICAgICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgICAgdi1iaW5kPVwic2xvdERhdGFcIlxuICAgICAgICAvPlxuICAgICAgPC90ZW1wbGF0ZT5cbiAgICA8L1J1aUJ1dHRvbj5cbiAgPC9Sb3V0ZXJMaW5rPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgbW9kdWxlPlxuLnRhYiB7XG4gIEBhcHBseSBoLWZ1bGwgbWluLXctWzkwcHhdIG1heC13LVszNjBweF0gZmxleCBpdGVtcy1jZW50ZXIgcm91bmRlZC1ub25lIGN1cnNvci1wb2ludGVyIHJlbGF0aXZlIHdoaXRlc3BhY2Utbm93cmFwIHNocmluay0wO1xuICBAYXBwbHkgcHgtNCAjeyFpbXBvcnRhbnR9O1xuXG4gICYtLXZlcnRpY2FsIHtcbiAgICBAYXBwbHkgaC1bMi42MjVyZW1dIHctZnVsbCBtYXgtdy1ub25lO1xuICB9XG5cbiAgJi0tZ3JvdyB7XG4gICAgQGFwcGx5IGdyb3cgbWF4LXctbm9uZTtcbiAgfVxuXG4gICYtLWFjdGl2ZSB7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIEBhcHBseSBhYnNvbHV0ZSBoLTAgdy1mdWxsIGJvdHRvbS0wIGxlZnQtMCBib3JkZXItYi0yIGJvcmRlci1jdXJyZW50O1xuICAgIH1cblxuICAgICYudGFiLWluZGljYXRvci0tc3RhcnQge1xuICAgICAgJjphZnRlciB7XG4gICAgICAgIEBhcHBseSB0b3AtMCBib3R0b20tYXV0bztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLnRhYi0tdmVydGljYWwge1xuICAgICAgJjphZnRlciB7XG4gICAgICAgIEBhcHBseSBoLWZ1bGwgdy0wIHJpZ2h0LTAgbGVmdC1hdXRvIGJvcmRlci1iLTAgYm9yZGVyLXItMjtcbiAgICAgIH1cblxuICAgICAgJi50YWItaW5kaWNhdG9yLS1zdGFydCB7XG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgIEBhcHBseSBsZWZ0LTAgcmlnaHQtYXV0bztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICYtLWRpc2FibGVkIHtcbiAgICBAYXBwbHkgY3Vyc29yLW5vdC1hbGxvd2VkO1xuICB9XG5cbiAgJi0tc3RhcnQge1xuICAgIEBhcHBseSBqdXN0aWZ5LXN0YXJ0IHRleHQtbGVmdCBydGw6anVzdGlmeS1lbmQgcnRsOnRleHQtcmlnaHQ7XG4gIH1cblxuICAmLS1jZW50ZXIge1xuICAgIEBhcHBseSBqdXN0aWZ5LWNlbnRlciB0ZXh0LWNlbnRlcjtcbiAgfVxuXG4gICYtLWVuZCB7XG4gICAgQGFwcGx5IGp1c3RpZnktZW5kIHRleHQtcmlnaHQgcnRsOmp1c3RpZnktc3RhcnQgcnRsOnRleHQtbGVmdDtcbiAgfVxufVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG5pbXBvcnQgdHlwZSB7IFByb3BzIGFzIFRhYlByb3BzIH0gZnJvbSAnQC9jb21wb25lbnRzL3RhYnMvdGFiL1J1aVRhYi52dWUnO1xuaW1wb3J0IHR5cGUgeyBDb250ZXh0Q29sb3JzVHlwZSB9IGZyb20gJ0AvY29uc3RzL2NvbG9ycyc7XG5pbXBvcnQgeyB0aHJvdHRsZUZpbHRlciB9IGZyb20gJ0B2dWV1c2Uvc2hhcmVkJztcbmltcG9ydCB7IEZyYWdtZW50LCBpc1ZOb2RlLCB0eXBlIFZOb2RlIH0gZnJvbSAndnVlJztcbmltcG9ydCB7IHVzZVJvdXRlLCB1c2VSb3V0ZXIgfSBmcm9tICd2dWUtcm91dGVyJztcbmltcG9ydCBSdWlCdXR0b24gZnJvbSAnQC9jb21wb25lbnRzL2J1dHRvbnMvYnV0dG9uL1J1aUJ1dHRvbi52dWUnO1xuaW1wb3J0IFJ1aUljb24gZnJvbSAnQC9jb21wb25lbnRzL2ljb25zL1J1aUljb24udnVlJztcblxuZXhwb3J0IGludGVyZmFjZSBQcm9wcyB7XG4gIGNvbG9yPzogQ29udGV4dENvbG9yc1R5cGU7XG4gIHZlcnRpY2FsPzogYm9vbGVhbjtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBncm93PzogYm9vbGVhbjtcbiAgbW9kZWxWYWx1ZT86IG51bWJlciB8IHN0cmluZztcbiAgYWxpZ24/OiAnc3RhcnQnIHwgJ2NlbnRlcicgfCAnZW5kJztcbiAgaW5kaWNhdG9yUG9zaXRpb24/OiAnc3RhcnQnIHwgJ2VuZCc7XG59XG5cbmRlZmluZU9wdGlvbnMoe1xuICBuYW1lOiAnUnVpVGFicycsXG59KTtcblxuY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgY29sb3I6IHVuZGVmaW5lZCxcbiAgdmVydGljYWw6IGZhbHNlLFxuICBkaXNhYmxlZDogZmFsc2UsXG4gIGdyb3c6IGZhbHNlLFxuICBtb2RlbFZhbHVlOiB1bmRlZmluZWQsXG4gIGFsaWduOiAnY2VudGVyJyxcbiAgaW5kaWNhdG9yUG9zaXRpb246ICdlbmQnLFxufSk7XG5cbmNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czx7XG4gIChlOiAndXBkYXRlOm1vZGVsVmFsdWUnLCBtb2RlbFZhbHVlOiBudW1iZXIgfCBzdHJpbmcpOiB2b2lkO1xufT4oKTtcblxuY29uc3QgeyBjb2xvciwgZ3JvdywgbW9kZWxWYWx1ZSwgZGlzYWJsZWQsIHZlcnRpY2FsLCBhbGlnbiwgaW5kaWNhdG9yUG9zaXRpb24gfSA9IHRvUmVmcyhwcm9wcyk7XG5cbmNvbnN0IGludGVybmFsTW9kZWxWYWx1ZSA9IHJlZigpO1xuY29uc3QgYmFyID0gcmVmPEhUTUxEaXZFbGVtZW50PigpO1xuY29uc3Qgd3JhcHBlciA9IHJlZjxIVE1MRGl2RWxlbWVudD4oKTtcbmNvbnN0IHNob3dBcnJvd3M6IFJlZjxib29sZWFuPiA9IHJlZihmYWxzZSk7XG5cbi8vIFdoZW4gdXNpbmcgZHluYW1pYyBjb250ZW50IHdpdGggdi1mb3IgdGhlIHNsb3QgY29udGVudCBjYW4gY29udGFpbiBmcmFnbWVudCxcbi8vIEdvIHRocm91Z2ggdGhlIGZyYWdtZW50IGFuZCBhbHdheXMgcmV0dXJuIFJ1aVRhYiBvbmx5XG5mdW5jdGlvbiBnZXRDaGlsZHJlblRhYnMoY2hpbGRyZW46IFZOb2RlW10pOiBWTm9kZVtdIHtcbiAgcmV0dXJuIGNoaWxkcmVuLmZsYXRNYXAoKGl0ZW0pID0+IHtcbiAgICBpZiAoaXRlbS50eXBlID09PSBGcmFnbWVudCAmJiBBcnJheS5pc0FycmF5KGl0ZW0uY2hpbGRyZW4pICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoID4gMClcbiAgICAgIHJldHVybiBnZXRDaGlsZHJlblRhYnMoaXRlbS5jaGlsZHJlbi5maWx0ZXIoaXNWTm9kZSkpO1xuXG4gICAgcmV0dXJuIFtpdGVtXTtcbiAgfSkuZmxhdCgpO1xufVxuXG5jb25zdCBzbG90cyA9IHVzZVNsb3RzKCk7XG5jb25zdCBjaGlsZHJlbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgY29uc3Qgc2xvdENvbnRlbnQgPSBzbG90cy5kZWZhdWx0Py4oKSA/PyBbXTtcblxuICBjb25zdCB0YWJzID0gZ2V0Q2hpbGRyZW5UYWJzKHNsb3RDb250ZW50KTtcblxuICBjb25zdCBjdXJyZW50TW9kZWxWYWx1ZSA9IGdldChpbnRlcm5hbE1vZGVsVmFsdWUpO1xuICBjb25zdCBpbmhlcml0ZWRQcm9wcyA9IHtcbiAgICBjb2xvcjogZ2V0KGNvbG9yKSxcbiAgICBncm93OiBnZXQoZ3JvdyksXG4gICAgZGlzYWJsZWQ6IGdldChkaXNhYmxlZCksXG4gICAgdmVydGljYWw6IGdldCh2ZXJ0aWNhbCksXG4gICAgYWxpZ246IGdldChhbGlnbiksXG4gICAgaW5kaWNhdG9yUG9zaXRpb246IGdldChpbmRpY2F0b3JQb3NpdGlvbiksXG4gIH07XG4gIHJldHVybiB0YWJzLm1hcCgodGFiLCBpbmRleCkgPT4ge1xuICAgIGxldCB0YWJWYWx1ZSA9IHRhYi5wcm9wcz8udmFsdWUgPz8gaW5kZXg7XG4gICAgaWYgKHRhYi5wcm9wcz8ubGluayAhPT0gZmFsc2UgJiYgdGFiLnByb3BzPy50bylcbiAgICAgIHRhYlZhbHVlID0gdGFiLnByb3BzLnRvO1xuXG4gICAgY29uc3QgYWN0aXZlID0gY3VycmVudE1vZGVsVmFsdWUgPT09IHRhYlZhbHVlO1xuICAgIHJldHVybiB7XG4gICAgICAuLi50YWIsXG4gICAgICBwcm9wczoge1xuICAgICAgICB2YWx1ZTogdGFiVmFsdWUsXG4gICAgICAgIGFjdGl2ZSxcbiAgICAgICAgLi4uaW5oZXJpdGVkUHJvcHMsXG4gICAgICAgIC4uLnRhYi5wcm9wcyxcbiAgICAgIH0sXG4gICAgfTtcbiAgfSk7XG59KTtcblxuZnVuY3Rpb24gdXBkYXRlTW9kZWxWYWx1ZShuZXdNb2RlbFZhbHVlOiBzdHJpbmcgfCBudW1iZXIpIHtcbiAgZW1pdCgndXBkYXRlOm1vZGVsVmFsdWUnLCBuZXdNb2RlbFZhbHVlKTtcbiAgc2V0KGludGVybmFsTW9kZWxWYWx1ZSwgbmV3TW9kZWxWYWx1ZSk7XG59XG5cbmNvbnN0IHJvdXRlID0gdXNlUm91dGUoKTtcblxuZnVuY3Rpb24gaXNQYXRoTWF0Y2gocGF0aDogc3RyaW5nLCB7IGV4YWN0UGF0aCwgZXhhY3QgfTogeyBleGFjdFBhdGg/OiBib29sZWFuOyBleGFjdD86IGJvb2xlYW4gfSkge1xuICBjb25zdCBjdXJyZW50Um91dGUgPSByb3V0ZS5mdWxsUGF0aDtcblxuICBpZiAoZXhhY3RQYXRoKVxuICAgIHJldHVybiBjdXJyZW50Um91dGUgPT09IHBhdGg7XG5cbiAgY29uc3Qgcm91dGVXaXRob3V0UXVlcnlQYXJhbXMgPSBuZXcgVVJMKHBhdGgsIHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4pXG4gICAgLnBhdGhuYW1lO1xuXG4gIGlmIChleGFjdClcbiAgICByZXR1cm4gY3VycmVudFJvdXRlID09PSByb3V0ZVdpdGhvdXRRdWVyeVBhcmFtcztcblxuICByZXR1cm4gY3VycmVudFJvdXRlLnN0YXJ0c1dpdGgocm91dGVXaXRob3V0UXVlcnlQYXJhbXMpO1xufVxuXG5mdW5jdGlvbiBrZWVwQWN0aXZlVGFiVmlzaWJsZSgpIHtcbiAgbmV4dFRpY2soKCkgPT4ge1xuICAgIGlmICghZ2V0KHNob3dBcnJvd3MpKVxuICAgICAgcmV0dXJuO1xuXG4gICAgY29uc3QgZWxlbSA9IGdldCh3cmFwcGVyKTtcbiAgICBjb25zdCBiYXJFbGVtID0gZ2V0KGJhcik7XG4gICAgaWYgKGVsZW0pIHtcbiAgICAgIGNvbnN0IGFjdGl2ZVRhYiA9IChlbGVtLnF1ZXJ5U2VsZWN0b3IoJy5hY3RpdmUtdGFiJylcbiAgICAgICAgPz8gZWxlbS5xdWVyeVNlbGVjdG9yKCcuYWN0aXZlLXRhYi1saW5rJykpIGFzIEhUTUxFbGVtZW50O1xuXG4gICAgICBpZiAoIWFjdGl2ZVRhYiB8fCAhYmFyRWxlbSlcbiAgICAgICAgcmV0dXJuO1xuXG4gICAgICBjb25zdCBjaGlsZExlZnQgPSBhY3RpdmVUYWIub2Zmc2V0TGVmdCAtIGVsZW0ub2Zmc2V0TGVmdDtcbiAgICAgIGNvbnN0IGNoaWxkVG9wID0gYWN0aXZlVGFiLm9mZnNldFRvcCAtIGVsZW0ub2Zmc2V0VG9wO1xuICAgICAgY29uc3QgY2hpbGRXaWR0aCA9IGFjdGl2ZVRhYi5vZmZzZXRXaWR0aDtcbiAgICAgIGNvbnN0IGNoaWxkSGVpZ2h0ID0gYWN0aXZlVGFiLm9mZnNldEhlaWdodDtcbiAgICAgIGNvbnN0IHBhcmVudFNjcm9sbExlZnQgPSBiYXJFbGVtLnNjcm9sbExlZnQ7XG4gICAgICBjb25zdCBwYXJlbnRTY3JvbGxUb3AgPSBiYXJFbGVtLnNjcm9sbFRvcDtcbiAgICAgIGNvbnN0IHBhcmVudFdpZHRoID0gYmFyRWxlbS5vZmZzZXRXaWR0aDtcbiAgICAgIGNvbnN0IHBhcmVudEhlaWdodCA9IGJhckVsZW0ub2Zmc2V0SGVpZ2h0O1xuXG4gICAgICBjb25zdCBzY3JvbGxMZWZ0ID0gTWF0aC5tYXgoXG4gICAgICAgIE1hdGgubWluKHBhcmVudFNjcm9sbExlZnQsIGNoaWxkTGVmdCksXG4gICAgICAgIGNoaWxkTGVmdCArIGNoaWxkV2lkdGggLSBwYXJlbnRXaWR0aCxcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHNjcm9sbFRvcCA9IE1hdGgubWF4KFxuICAgICAgICBNYXRoLm1pbihwYXJlbnRTY3JvbGxUb3AsIGNoaWxkVG9wKSxcbiAgICAgICAgY2hpbGRUb3AgKyBjaGlsZEhlaWdodCAtIHBhcmVudEhlaWdodCxcbiAgICAgICk7XG5cbiAgICAgIGJhckVsZW0uc2Nyb2xsVG8oe1xuICAgICAgICBsZWZ0OiBzY3JvbGxMZWZ0LFxuICAgICAgICB0b3A6IHNjcm9sbFRvcCxcbiAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxuICAgICAgfSk7XG4gICAgfVxuICB9KTtcbn1cblxuY29uc3Qgcm91dGVyID0gdXNlUm91dGVyKCk7XG5cbmZ1bmN0aW9uIGFwcGx5TmV3VmFsdWUob25seUxpbmsgPSBmYWxzZSkge1xuICBjb25zdCBlbmFibGVkQ2hpbGRyZW4gPSBnZXQoY2hpbGRyZW4pLmZpbHRlcihcbiAgICBjaGlsZCA9PiAhY2hpbGQucHJvcHMuZGlzYWJsZWQsXG4gICk7XG4gIGlmIChlbmFibGVkQ2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgIGxldCBuZXdNb2RlbFZhbHVlOiBzdHJpbmcgfCBudW1iZXIgPSBnZXQobW9kZWxWYWx1ZSkgfHwgMDtcbiAgICBlbmFibGVkQ2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBwcm9wcyA9IGNoaWxkLnByb3BzIGFzIFRhYlByb3BzO1xuICAgICAgaWYgKCFvbmx5TGluayAmJiBpbmRleCA9PT0gMCAmJiBwcm9wcy52YWx1ZSlcbiAgICAgICAgbmV3TW9kZWxWYWx1ZSA9IHByb3BzLnZhbHVlO1xuXG4gICAgICBjb25zdCB0byA9IHByb3BzLnRvID8gcm91dGVyLnJlc29sdmUocHJvcHMudG8pIDogdW5kZWZpbmVkO1xuXG4gICAgICBpZiAocHJvcHMubGluayAhPT0gZmFsc2UgJiYgdG8gJiYgaXNQYXRoTWF0Y2godG8uZnVsbFBhdGgsIHByb3BzKSlcbiAgICAgICAgbmV3TW9kZWxWYWx1ZSA9IHRvLmZ1bGxQYXRoO1xuICAgIH0pO1xuICAgIHVwZGF0ZU1vZGVsVmFsdWUobmV3TW9kZWxWYWx1ZSk7XG4gIH1cbiAga2VlcEFjdGl2ZVRhYlZpc2libGUoKTtcbn1cblxub25Nb3VudGVkKCgpID0+IHtcbiAgaWYgKGdldChtb2RlbFZhbHVlKSAhPT0gdW5kZWZpbmVkKVxuICAgIHJldHVybjtcblxuICBhcHBseU5ld1ZhbHVlKCk7XG59KTtcblxud2F0Y2gocm91dGUsICgpID0+IHtcbiAgYXBwbHlOZXdWYWx1ZSh0cnVlKTtcbn0pO1xuXG5jb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IHVzZUVsZW1lbnRTaXplKGJhcik7XG5jb25zdCB7IHdpZHRoOiB3cmFwcGVyV2lkdGgsIGhlaWdodDogd3JhcHBlckhlaWdodCB9ID0gdXNlRWxlbWVudFNpemUod3JhcHBlcik7XG5jb25zdCB7IGFycml2ZWRTdGF0ZSwgeCwgeSB9ID0gdXNlU2Nyb2xsKGJhciwgeyBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG5cbmNvbnN0IHsgdG9wLCBib3R0b20sIGxlZnQsIHJpZ2h0IH0gPSB0b1JlZnMoYXJyaXZlZFN0YXRlKTtcblxuY29uc3QgeyB0cmlnZ2VyOiB0cmlnZ2VySG9yaXpvbnRhbCwgc3RvcDogc3RvcEhvcml6b250YWwgfSA9IHdhdGNoVHJpZ2dlcmFibGUoXG4gIFt3cmFwcGVyV2lkdGgsIHdpZHRoXSxcbiAgKFt3dywgd10pID0+IHtcbiAgICBpZiAodyA+IDApXG4gICAgICBzZXQoc2hvd0Fycm93cywgd3cgPiB3KTtcbiAgfSxcbiAge1xuICAgIGV2ZW50RmlsdGVyOiB0aHJvdHRsZUZpbHRlcig1MCksXG4gIH0sXG4pO1xuXG5jb25zdCB7IHRyaWdnZXI6IHRyaWdnZXJWZXJ0aWNhbCwgc3RvcDogc3RvcFZlcnRpY2FsIH0gPSB3YXRjaFRyaWdnZXJhYmxlKFxuICBbd3JhcHBlckhlaWdodCwgaGVpZ2h0XSxcbiAgKFt3aCwgaF0pID0+IHtcbiAgICBpZiAoaCA+IDApXG4gICAgICBzZXQoc2hvd0Fycm93cywgd2ggPiBoKTtcbiAgfSxcbiAge1xuICAgIGV2ZW50RmlsdGVyOiB0aHJvdHRsZUZpbHRlcig1MDApLFxuICB9LFxuKTtcblxud2F0Y2hJbW1lZGlhdGUodmVydGljYWwsICh2ZXJ0aWNhbCkgPT4ge1xuICBpZiAodmVydGljYWwpIHtcbiAgICB0cmlnZ2VyVmVydGljYWwoKTtcbiAgICBzdG9wSG9yaXpvbnRhbCgpO1xuICB9XG4gIGVsc2Uge1xuICAgIHRyaWdnZXJIb3Jpem9udGFsKCk7XG4gICAgc3RvcFZlcnRpY2FsKCk7XG4gIH1cbn0pO1xuXG5jb25zdCBwcmV2QXJyb3dEaXNhYmxlZCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgaWYgKCFnZXQodmVydGljYWwpKVxuICAgIHJldHVybiBnZXQobGVmdCk7XG5cbiAgcmV0dXJuIGdldCh0b3ApO1xufSk7XG5cbmNvbnN0IG5leHRBcnJvd0Rpc2FibGVkID0gY29tcHV0ZWQoKCkgPT4ge1xuICBpZiAoIWdldCh2ZXJ0aWNhbCkpXG4gICAgcmV0dXJuIGdldChyaWdodCk7XG5cbiAgcmV0dXJuIGdldChib3R0b20pO1xufSk7XG5cbmZ1bmN0aW9uIG9uUHJldlNsaWRlckNsaWNrKCkge1xuICBpZiAoIWdldCh2ZXJ0aWNhbCkpXG4gICAgc2V0KHgsIGdldCh4KSAtIGdldCh3aWR0aCkpO1xuICBlbHNlXG4gICAgc2V0KHksIGdldCh5KSAtIGdldChoZWlnaHQpKTtcbn1cblxuZnVuY3Rpb24gb25OZXh0U2xpZGVyQ2xpY2soKSB7XG4gIGlmICghZ2V0KHZlcnRpY2FsKSlcbiAgICBzZXQoeCwgZ2V0KHgpICsgZ2V0KHdpZHRoKSk7XG4gIGVsc2VcbiAgICBzZXQoeSwgZ2V0KHkpICsgZ2V0KGhlaWdodCkpO1xufVxuXG51c2VSZXNpemVPYnNlcnZlcihiYXIsICgpID0+IHtcbiAga2VlcEFjdGl2ZVRhYlZpc2libGUoKTtcbn0pO1xuXG53YXRjaEltbWVkaWF0ZShtb2RlbFZhbHVlLCAobW9kZWxWYWx1ZSkgPT4ge1xuICBzZXQoaW50ZXJuYWxNb2RlbFZhbHVlLCBtb2RlbFZhbHVlKTtcbn0pO1xuXG53YXRjaChpbnRlcm5hbE1vZGVsVmFsdWUsICgpID0+IHtcbiAga2VlcEFjdGl2ZVRhYlZpc2libGUoKTtcbn0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiA6Y2xhc3M9XCJbJHN0eWxlLnRhYnMsIHsgWyRzdHlsZVsndGFicy0tdmVydGljYWwnXSA/PyAnJ106IHZlcnRpY2FsIH1dXCI+XG4gICAgPGRpdlxuICAgICAgdi1pZj1cInNob3dBcnJvd3NcIlxuICAgICAgOmNsYXNzPVwiWyRzdHlsZS5hcnJvdywgeyBbJHN0eWxlWydhcnJvdy0tdmVydGljYWwnXSA/PyAnJ106IHZlcnRpY2FsIH1dXCJcbiAgICA+XG4gICAgICA8UnVpQnV0dG9uXG4gICAgICAgIGNsYXNzPVwidy1mdWxsIGgtZnVsbCAhcm91bmRlZC1ub25lXCJcbiAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICA6Y29sb3I9XCJjb2xvclwiXG4gICAgICAgIDpkaXNhYmxlZD1cInByZXZBcnJvd0Rpc2FibGVkXCJcbiAgICAgICAgQGNsaWNrPVwib25QcmV2U2xpZGVyQ2xpY2soKVwiXG4gICAgICA+XG4gICAgICAgIDxSdWlJY29uIDpuYW1lPVwidmVydGljYWwgPyAnbHUtY2hldnJvbi11cCcgOiAnbHUtY2hldnJvbi1sZWZ0J1wiIC8+XG4gICAgICA8L1J1aUJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICByZWY9XCJiYXJcIlxuICAgICAgY2xhc3M9XCJuby1zY3JvbGxiYXJcIlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAkc3R5bGVbJ3RhYnMtYmFyJ10sXG4gICAgICAgIHsgWyRzdHlsZVsndGFicy1iYXItLXZlcnRpY2FsJ10gPz8gJyddOiB2ZXJ0aWNhbCB9LFxuICAgICAgICB7IFskc3R5bGVbJ3RhYnMtYmFyLS1ncm93J10gPz8gJyddOiBncm93IH0sXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIHJlZj1cIndyYXBwZXJcIlxuICAgICAgICByb2xlPVwidGFibGlzdFwiXG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAkc3R5bGVbJ3RhYnMtd3JhcHBlciddLFxuICAgICAgICAgIHsgWyRzdHlsZVsndGFicy13cmFwcGVyLS12ZXJ0aWNhbCddID8/ICcnXTogdmVydGljYWwgfSxcbiAgICAgICAgICB7IFskc3R5bGVbJ3RhYnMtd3JhcHBlci0tZ3JvdyddID8/ICcnXTogZ3JvdyB9LFxuICAgICAgICBdXCJcbiAgICAgID5cbiAgICAgICAgPENvbXBvbmVudFxuICAgICAgICAgIDppcz1cImNoaWxkXCJcbiAgICAgICAgICB2LWZvcj1cIihjaGlsZCwgaSkgaW4gY2hpbGRyZW5cIlxuICAgICAgICAgIDprZXk9XCJpXCJcbiAgICAgICAgICBAY2xpY2s9XCJ1cGRhdGVNb2RlbFZhbHVlKCRldmVudClcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgdi1pZj1cInNob3dBcnJvd3NcIlxuICAgICAgOmNsYXNzPVwiWyRzdHlsZS5hcnJvdywgeyBbJHN0eWxlWydhcnJvdy0tdmVydGljYWwnXSA/PyAnJ106IHZlcnRpY2FsIH1dXCJcbiAgICA+XG4gICAgICA8UnVpQnV0dG9uXG4gICAgICAgIGNsYXNzPVwidy1mdWxsIGgtZnVsbCAhcm91bmRlZC1ub25lXCJcbiAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICA6Y29sb3I9XCJjb2xvclwiXG4gICAgICAgIDpkaXNhYmxlZD1cIm5leHRBcnJvd0Rpc2FibGVkXCJcbiAgICAgICAgQGNsaWNrPVwib25OZXh0U2xpZGVyQ2xpY2soKVwiXG4gICAgICA+XG4gICAgICAgIDxSdWlJY29uIDpuYW1lPVwidmVydGljYWwgPyAnbHUtY2hldnJvbi1kb3duJyA6ICdsdS1jaGV2cm9uLXJpZ2h0J1wiIC8+XG4gICAgICA8L1J1aUJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIiBtb2R1bGU+XG4udGFicyB7XG4gIEBhcHBseSBmbGV4IGgtWzIuNjI1cmVtXTtcblxuICAmLS12ZXJ0aWNhbCB7XG4gICAgQGFwcGx5IGgtYXV0byBtYXgtaC1mdWxsIGZsZXgtY29sO1xuICB9XG5cbiAgJi1iYXIge1xuICAgIEBhcHBseSBtYXgtaC1mdWxsIG92ZXJmbG93LWF1dG87XG5cbiAgICAmLS12ZXJ0aWNhbCxcbiAgICAmLS1ncm93IHtcbiAgICAgIEBhcHBseSB3LWZ1bGw7XG4gICAgfVxuICB9XG5cbiAgJi13cmFwcGVyIHtcbiAgICBAYXBwbHkgaC1mdWxsIGlubGluZS1mbGV4IG1heC13LW5vbmU7XG5cbiAgICAmLS12ZXJ0aWNhbCB7XG4gICAgICBAYXBwbHkgZmxleC1jb2wgaC1hdXRvO1xuICAgIH1cblxuICAgICYtLXZlcnRpY2FsLFxuICAgICYtLWdyb3cge1xuICAgICAgQGFwcGx5IG1pbi13LWZ1bGw7XG4gICAgfVxuICB9XG59XG5cbi5hcnJvdyB7XG4gIEBhcHBseSBoLWZ1bGwgdy0xMDtcblxuICAmLS12ZXJ0aWNhbCB7XG4gICAgQGFwcGx5IG1pbi1oLVsyLjYyNXJlbV0gdy1mdWxsIGgtYXV0bztcbiAgfVxufVxuPC9zdHlsZT5cbiJdLCJuYW1lcyI6WyJwcm9wcyIsIl9fcHJvcHMiLCJyZWdpc3RlcmVkSWNvbnMiLCJ1c2VJY29ucyIsImlzRmlsbCIsImNvbXB1dGVkIiwiY29tcG9uZW50cyIsIm5hbWUiLCJpc1J1aUljb24iLCJmb3VuZCIsIl9jcmVhdGVFbGVtZW50QmxvY2siLCJfbm9ybWFsaXplQ2xhc3MiLCIkc3R5bGUiLCJfb3BlbkJsb2NrIiwiX0ZyYWdtZW50IiwiX3JlbmRlckxpc3QiLCJfdW5yZWYiLCJjb21wb25lbnQiLCJpbmRleCIsIl9jcmVhdGVCbG9jayIsIl9yZXNvbHZlRHluYW1pY0NvbXBvbmVudCIsIl9tZXJnZVByb3BzIiwiZW1pdCIsIl9fZW1pdCIsImNsaWNrIiwiaW5uZXIiLCJyZWYiLCJpbm5lckhlaWdodCIsInVzZUVsZW1lbnRTaXplIiwiJGF0dHJzIiwiJHNsb3RzIiwiX2NyZWF0ZUVsZW1lbnRWTm9kZSIsIl9yZW5kZXJTbG90IiwiX2N0eCIsIl9jcmVhdGVWTm9kZSIsIkljb24iLCJtb2RlbFZhbHVlIiwibXVsdGlwbGUiLCJ0b1JlZnMiLCJpbnRlcm5hbFZhbHVlIiwic2xvdHMiLCJ1c2VTbG90cyIsImNoaWxkcmVuIiwiYWNjb3JkaW9ucyIsImN1cnJlbnRWYWx1ZSIsImdldCIsIm11bHRpcGxlVmFsIiwiYWNjb3JkaW9uIiwib3BlbiIsInVwZGF0ZVZhbHVlIiwibmV3TW9kZWxWYWx1ZSIsIm5ld1ZhbHVlIiwiaW50ZXJuYWwiLCJ0ZW1wIiwic2V0Iiwid2F0Y2giLCJ2YWx1ZSIsImNoaWxkIiwiaSIsIiRldmVudCIsInZhcmlhbnQiLCJidWZmZXJWYWx1ZSIsInRoaWNrbmVzcyIsInNpemUiLCJsYWJlbCIsInByb2dyZXNzIiwidmFsdWVQZXJjZW50IiwiYnVmZmVyUGVyY2VudCIsImNpcmN1bGFyU2NhbGVkVGhpY2tuZXNzIiwiY2lyY3VsYXJWaWV3U2l6ZSIsImJ0blZhbHVlIiwidXNlZEVsZXZhdGlvbiIsInNwaW5uZXJTaXplIiwiX2NhY2hlIiwiUnVpUHJvZ3Jlc3MiLCJpY29uIiwidHlwZSIsInVzZWRJY29uIiwiaWNvblZhbCIsIl9ob2lzdGVkXzEiLCJSdWlJY29uIiwiX2hvaXN0ZWRfMiIsIl9ob2lzdGVkXzMiLCJSdWlCdXR0b24iLCJfaG9pc3RlZF80IiwicmVxdWlyZWQiLCJkaXNhYmxlZCIsImNvbG9yIiwiZ2V0Q2hpbGRyZW4iLCJpdGVtIiwiRnJhZ21lbnQiLCJpc1ZOb2RlIiwiaXNEaXNhYmxlZCIsInJvb3RDb2xvciIsInNlbGVjdGVkVmFsdWUiLCJzbG90Q29udGVudCIsImFjdGl2ZUl0ZW0iLCJpZCIsInNlbGVjdGVkIiwib25DbGljayIsIm1hbmRhdG9yeSIsImNzcyIsInVzZUNzc01vZHVsZSIsImNvbG9yQ2xhc3MiLCJ2YXJpYW50Q2xhc3MiLCJDYWxlbmRhclN0YXRlU3ltYm9sIiwiZ2V0RGF5c09mV2VlayIsImxvY2FsZSIsImZvcm1hdCIsImRheXNPZldlZWsiLCJkYXRlIiwiZGF5TmFtZSIsImdldFNob3J0TW9udGhOYW1lcyIsIm1vbnRoTmFtZXMiLCJtb250aCIsIm1vbnRoTmFtZSIsIm1vZGVsIiwiX3VzZU1vZGVsIiwiY2FsZW5kYXJTdGF0ZSIsImluamVjdCIsImNyZWF0ZURhdGVLZXkiLCJ0b2RheUtleSIsImNhbGVuZGFyRGF5cyIsImNyZWF0ZURheURhdGEiLCJpc0N1cnJlbnRNb250aCIsIm1heERhdGVWYWx1ZSIsIm1pbkRhdGVWYWx1ZSIsImtleSIsImlzRGF0ZUluUmFuZ2VDaGVjayIsImlzRGF0ZVNlbGVjdGVkQ2hlY2siLCJjYWxjdWxhdGVDYWxlbmRhckRheXMiLCJmaXJzdERheU9mTW9udGgiLCJkYXlzSW5Nb250aCIsInN0YXJ0aW5nRGF5T2ZXZWVrIiwibWF4RGF0ZSIsIm1pbkRhdGUiLCJpc0RlZmluZWQiLCJyZXN1bHQiLCJwcmV2TW9udGhMYXN0RGF5IiwiZGF5c1RvQWRkIiwic2VsZWN0RGF0ZSIsImRheURhdGEiLCJ1cGRhdGVNb2RlbCIsIm5ld0RhdGUiLCJkYXkiLCJfd2l0aE1vZGlmaWVycyIsIl90b0Rpc3BsYXlTdHJpbmciLCJlcnJvck1lc3NhZ2VzIiwic3VjY2Vzc01lc3NhZ2VzIiwiZm9ybWF0dGVkRXJyb3JNZXNzYWdlcyIsImZvcm1hdHRlZFN1Y2Nlc3NNZXNzYWdlcyIsImhhc0Vycm9yIiwiaGFzU3VjY2VzcyIsInVzZUZvcm1UZXh0RGV0YWlsIiwiX1RyYW5zaXRpb25Hcm91cCIsIkZPQ1VTQUJMRV9FTEVNRU5UU19TRUxFQ1RPUiIsImNsb3NlRGVsYXkiLCJvcGVuRGVsYXkiLCJwb3BwZXIiLCJwZXJzaXN0T25BY3RpdmF0b3JDbGljayIsImNsb3NlT25Db250ZW50Q2xpY2siLCJvcGVuT25Ib3ZlciIsInBlcnNpc3RlbnQiLCJkaXNhYmxlQXV0b0ZvY3VzIiwiYWN0aXZhdG9yIiwibWVudSIsInBvcHBlckVudGVyIiwibGVhdmVQZW5kaW5nIiwib25MZWF2ZVBlbmRpbmciLCJvbk9wZW4iLCJvbkNsb3NlIiwib25Qb3BwZXJMZWF2ZSIsInVwZGF0ZVBvcHBlciIsInVzZVBvcHBlciIsIndpZHRoIiwibWVudUNvbnRlbnQiLCJmb2N1c01lbnUiLCJuZXh0VGljayIsImNvbnRlbnQiLCJvbkxlYXZlIiwiZXZlbnQiLCJhY3RpdmF0b3JFbCIsImZvY3VzYWJsZUVsIiwiY2hlY2tDbGljayIsIm9uQ2xpY2tPdXRzaWRlIiwiYmFzZU1lbnVBdHRycyIsIm9wZW5PbkhvdmVyVmFsIiwiY2xpY2tWYWwiLCJtZW51QXR0cnMiLCJfbm9ybWFsaXplUHJvcHMiLCJfZ3VhcmRSZWFjdGl2ZVByb3BzIiwiX1RlbGVwb3J0IiwiUnVpRm9ybVRleHREZXRhaWwiLCJ2aWV3TW9kZSIsInN0YXJ0WWVhciIsIm1vbnRocyIsInllYXJSYW5nZSIsIm1vbnRoc0luUmFuZ2UiLCJ5ZWFyc0luUmFuZ2UiLCJ0aXRsZSIsImNhbkdvVG9OZXh0IiwiY2FuR29Ub1ByZXYiLCJjYWxjdWxhdGVZZWFyUmFuZ2UiLCJzdGFydCIsIl8iLCJjYWxjdWxhdGVUaXRsZSIsInJhbmdlIiwiY2FsY3VsYXRlTmF2aWdhdGlvbiIsIm5leHRZZWFyIiwicHJldmlvdXNZZWFyIiwibGFzdFllYXJJblJhbmdlIiwiZmlyc3RZZWFySW5SYW5nZSIsIm5leHRSYW5nZVN0YXJ0IiwicHJldlJhbmdlRW5kIiwiY2FsY3VsYXRlTW9udGhzSW5SYW5nZSIsImN1cnJlbnRZZWFyIiwiY2FsY3VsYXRlWWVhcnNJblJhbmdlIiwiY3VycmVudE1vbnRoIiwieWVhciIsInRvZ2dsZVNlbGVjdGlvbiIsInNlbGVjdE1vbnRoIiwic2VsZWN0WWVhciIsInllYXJJbmRleCIsImhhbmRsZU5leHQiLCJoYW5kbGVQcmV2IiwiUnVpTWVudSIsIl9ob2lzdGVkXzUiLCJfaG9pc3RlZF82IiwiaXNNZW51T3BlbiIsImFuY2hvckVsIiwiaGFuZGxlVGl0bGVDbGljayIsImUiLCJoYW5kbGVEYXRlU2VsZWN0aW9uIiwic2VsZWN0aW9uIiwiX2NyZWF0ZVRleHRWTm9kZSIsIlJ1aUNhbGVuZGFyTWVudSIsImN1cnJlbnREYXRlIiwic2VsZWN0ZWREYXRlIiwidmlld01vbnRoIiwidmlld1llYXIiLCJpc0RhcmsiLCJ1c2VSb3RraVRoZW1lIiwibW9udGhUaXRsZSIsInByb3ZpZGUiLCJtb3ZlTW9udGgiLCJkZWx0YSIsIm5ld01vbnRoIiwibmV3WWVhciIsIm1vdmUiLCJfX2V4cG9zZSIsIlJ1aUNhbGVuZGFySGVhZGVyIiwiUnVpQ2FsZW5kYXJHcmlkIiwiaGFzSGVhZENvbnRlbnQiLCJSdWlDYXJkSGVhZGVyIiwiY2xpY2thYmxlIiwiYmdDb2xvciIsInRleHRDb2xvciIsImxvZ2ljT3IiLCJsb2dpY05vdCIsInN0eWxlIiwiYmciLCJ0ZXh0Iiwib2JqZWN0T21pdCIsInJvdW5kVHdvRGVjaW1hbCIsIm51bSIsIkNvbG9yIiwiaW5wdXQiLCJ0aW55Y29sb3IiLCJpbml0QWxwaGEiLCJzIiwiYiIsImciLCJoIiwidiIsImhleFN0cmluZyIsInJnYiIsInVzZUVsZW1lbnREcmFnIiwiaGFuZGxlciIsImhhbmRsZUNsaWNrIiwib25Nb3VzZURvd24iLCJoYW5kbGVNb3VzZVVwIiwib25Vbm1vdW50ZWQiLCJodWVUb0hleCIsImh1ZSIsInN0YXRlIiwicmVhY3RpdmUiLCJjdXJzb3JUb3AiLCJjdXJzb3JMZWZ0IiwiY3Vyc29yU3R5bGUiLCJ3cmFwcGVyIiwidXBkYXRlUG9zaXRpb24iLCJpbnN0YW5jZSIsImdldEN1cnJlbnRJbnN0YW5jZSIsImVtaXRDb2xvciIsIngiLCJ5IiwicmVjdCIsImhlaWdodCIsImxlZnQiLCJ0b3AiLCJjYWxjdWxhdGVkWCIsImNhbGN1bGF0ZWRZIiwiY2xhbXAiLCJzYXR1cmF0aW9uIiwiYnJpZ2h0bmVzcyIsIm9uTW91bnRlZCIsIndoZW5ldmVyIiwidG9vbHRpcCIsImNvcHkiLCJjb3BpZWQiLCJ1c2VDbGlwYm9hcmQiLCJSdWlUb29sdGlwIiwiY3Vyc29yV2lkdGgiLCJiYXJFbGVtZW50IiwiZ2V0TGltaXQiLCJsb3dlckxpbWl0IiwidXBwZXJMaW1pdCIsImF2YWlsYWJsZVdpZHRoIiwiZ2V0Q3Vyc29yTGVmdCIsImFjdHVhbFdpZHRoIiwiaHVlVmFsIiwidXNlZEh1ZSIsImVtaXRIdWUiLCJjbGVhcmFibGUiLCJyZWFkb25seSIsImxhYmVsV2l0aFF1b3RlIiwibGFiZWxWYWwiLCJwcmVwZW5kIiwiYXBwZW5kIiwiaW5uZXJXcmFwcGVyIiwiaW5wdXRSZWYiLCJwcmVwZW5kV2lkdGgiLCJhcHBlbmRXaWR0aCIsInVzZUVsZW1lbnRCb3VuZGluZyIsInVzZVJlc2l6ZU9ic2VydmVyIiwiZW50cmllcyIsImVudHJ5IiwiYXNzZXJ0IiwicmlnaHQiLCJoYXNNZXNzYWdlcyIsImZvY3VzZWQiLCJ1c2VGb2N1cyIsImZvY3VzZWREZWJvdW5jZWQiLCJyZWZEZWJvdW5jZWQiLCJzaG93Q2xlYXJJY29uIiwibG9naWNBbmQiLCJjbGVhckljb25DbGlja2VkIiwiZW5kIiwiZ2V0Um9vdEF0dHJzIiwiZ2V0Tm9uUm9vdEF0dHJzIiwiaW5wdXRUeXBlIiwib25JbnB1dFR5cGVDaGFuZ2UiLCJvbkJsdXJDaGFuZ2UiLCJ1c2VEZWJvdW5jZUZuIiwiX2hleCIsInZhbHVlSW5OdW1iZXIiLCJyIiwib25JbnB1dENoYW5nZSIsIlJ1aVRleHRGaWVsZCIsIm9uQm9hcmRDaGFuZ2UiLCJSdWlDb2xvckJvYXJkIiwiUnVpQ29sb3JEaXNwbGF5IiwiUnVpQ29sb3JIdWUiLCJSdWlDb2xvcklucHV0IiwidGltZXpvbmVzIiwic2VhcmNoSW5wdXRNb2RlbCIsImRlbnNlIiwib3B0aW9ucyIsImdldFRleHQiLCJnZXRJZGVudGlmaWVyIiwidXNlRHJvcGRvd25PcHRpb25Qcm9wZXJ0eSIsInRleHRJbnB1dCIsIm1lbnVSZWYiLCJtZW51V3JhcHBlclJlZiIsImFjdGl2YXRvckZvY3VzZWRXaXRoaW4iLCJ1c2VGb2N1c1dpdGhpbiIsIm1lbnVXcmFwcGVyRm9jdXNlZFdpdGhpbiIsInNlYXJjaElucHV0Rm9jdXNlZCIsImFjdGl2YXRvckZvY3VzZWQiLCJyZW5kZXJlZE9wdGlvbnMiLCJpbnRlcm5hbFNlYXJjaCIsImZpbHRlcmVkT3B0aW9ucyIsImp1c3RPcGVuZWQiLCJ1cGRhdGVJbnRlcm5hbFNlYXJjaCIsInRleHRWYWx1ZVRvUHJvcGVyVmFsdWUiLCJ1c2VBdXRvQ29tcGxldGVTZWFyY2giLCJ0b1JlZiIsInNob3VsZEFwcGx5VmFsdWVBc1NlYXJjaCIsInRlbXBJc09wZW4iLCJzZXRTZWxlY3RlZCIsInVzZUF1dG9Db21wbGV0ZVZhbHVlIiwiY29udGFpbmVyUHJvcHMiLCJ3cmFwcGVyUHJvcHMiLCJyZW5kZXJlZERhdGEiLCJpc09wZW4iLCJtZW51V2lkdGgiLCJpc0FjdGl2ZUl0ZW0iLCJpdGVtSW5kZXhJblZhbHVlIiwiaGlnaGxpZ2h0ZWRJbmRleCIsIm1vdmVIaWdobGlnaHQiLCJhcHBseUhpZ2hsaWdodGVkIiwib3B0aW9uc1dpdGhTZWxlY3RlZEhpZGRlbiIsInVzZURyb3Bkb3duTWVudSIsInNldFZhbHVlIiwic3luY1JlZiIsImZvY3VzZWRWYWx1ZUluZGV4IiwibW92ZVNlbGVjdGVkVmFsdWVIaWdobGlnaHQiLCJvbkVudGVyIiwib25JbnB1dERlbGV0ZVByZXNzZWQiLCJvblRhYiIsInNldFZhbHVlRm9jdXMiLCJ1c2VBdXRvQ29tcGxldGVLZXlib2FyZE5hdmlnYXRpb24iLCJjbGVhciIsInNldFNlYXJjaEFzVmFsdWUiLCJmb2N1c0FueUZvY3VzZWQiLCJmb2N1c0lucHV0Q2xhc3MiLCJmb2N1c09uQWN0aXZhdG9yRm9jdXNlZCIsImZvY3VzT25JbnB1dEZvY3VzZWQiLCJmb2N1c1NldElucHV0Rm9jdXMiLCJ1c2VBdXRvQ29tcGxldGVGb2N1cyIsInZhbHVlU2V0IiwibWVudU1pbkhlaWdodCIsInJlbmRlcmVkT3B0aW9uc0RhdGEiLCJvdXRsaW5lZCIsImZsb2F0IiwidmlydHVhbENvbnRhaW5lclByb3BzIiwidXBkYXRlU2VhcmNoSW5wdXQiLCJ2YWwiLCJza2lwUmVmb2N1c2VkIiwiaXNNdWx0aXBsZSIsImluZGV4SW5WYWx1ZSIsInNlYXJjaFRvQmVWYWx1ZSIsImNoaXBBdHRycyIsInNldFNlbGVjdGlvblJhbmdlIiwiY3VyciIsIm9sZCIsImlzRXF1YWwiLCJhcnJvd0NsaWNrZWQiLCJfd2l0aEN0eCIsImF0dHJzIiwiX3dpdGhLZXlzIiwiUnVpQ2hpcCIsImdldFRleHRUb2tlbiIsImFyZ3MiLCJfaW5kZXgiLCJfbm9ybWFsaXplU3R5bGUiLCJGVUxMX0NJUkNMRSIsIlRXRUxWRV9IT1VSUyIsInNlbGVjdGVkSG91ciIsInNlbGVjdGVkTWludXRlIiwic2VsZWN0ZWRTZWNvbmQiLCJzZWxlY3RlZE1pbGxpc2Vjb25kIiwiZWRpdE1vZGUiLCJ0b3RhbEl0ZW1zUGVyTW9kZSIsImludGVydmFscyIsImlzRHJhZ2dpbmciLCJjbG9ja0ZhY2UiLCJ1c2VUZW1wbGF0ZVJlZiIsInNob3dTZWNvbmQiLCJUaW1lQWNjdXJhY3kiLCJzaG93TWlsbGlzZWNvbmQiLCJwZXJpb2QiLCJkaXNwbGF5SG91ciIsImhvdXIiLCJlZGl0ZWRWYWx1ZSIsIm1vZGUiLCJkaXNwbGF5Q2xvY2tIYW5kQ2lyY2xlIiwiaW50ZXJ2YWwiLCJkb3RTdHlsZSIsImNsb2NrSGFuZFN0eWxlIiwidG90YWxJdGVtcyIsImNsb2NrSGFuZENpcmNsZVN0eWxlIiwicmFkaXVzIiwicmFkaWFucyIsImNsb2NrTnVtYmVycyIsInRvdGFsIiwibnVtYmVycyIsImdlbmVyYXRlTnVtYmVycyIsImdldE1vZGVsSG91cnMiLCJnZXRNb2RlbE1pbnV0ZXMiLCJnZXRNb2RlbFNlY29uZHMiLCJnZXRNb2RlbE1pbGxpc2Vjb25kcyIsImZvcm1hdFZhbHVlIiwicGFkZGluZyIsIm51bWJlclN0eWxlIiwiaXNTZWxlY3RlZE51bWJlciIsInRvZ2dsZUFtUG0iLCJ1cGRhdGVNb2RlbFZhbHVlIiwic3RhcnREcmFnIiwiaGFuZGxlTW92ZSIsIm1vdmVFdmVudCIsImNlbnRlclgiLCJjZW50ZXJZIiwiY2xpZW50WCIsImNsaWVudFkiLCJ0b3VjaCIsImFuZ2xlIiwidW5pdCIsImhhbmRsZUVuZCIsInNlbGVjdEJ5Q2xpY2siLCJuZXdIb3VyIiwic2VsZWN0ZWRUaW1lIiwidGltZVNlbGVjdGlvbiIsInNlbGVjdGVkVGltZXpvbmUiLCJjYWxlbmRhck1lbnVPcGVuIiwic2V0Tm93IiwiUnVpQ2FsZW5kYXIiLCJSdWlUaW1lUGlja2VyIiwiUnVpQXV0b0NvbXBsZXRlIiwiZ3Vlc3NUaW1lem9uZSIsInRpbWV6b25lIiwiZGF5anMiLCJ0eiIsImluY2x1ZGVTZWNvbmRzIiwiYWNjdXJhY3kiLCJpbmNsdWRlTWlsbGlzZWNvbmRzIiwidXNlSW5wdXRIYW5kbGVyIiwiZGF0YSIsInNlZ21lbnQiLCJvbmx5U2V0IiwidXBkYXRlIiwiZ2V0Q3VycmVudCIsIkRBVEVfVElNRV9TRUdNRU5UX1RZUEVTIiwiaXNEYXRlVGltZVNlZ21lbnRUeXBlIiwidXNlS2V5Ym9hcmRIYW5kbGVyIiwiY3Vyc29yUG9zaXRpb24iLCJkYXRlRm9ybWF0IiwiZ2V0RGF0ZVRpbWUiLCJmb3JtYXRTZWdtZW50cyIsInNlZ21lbnRQb3NpdGlvbnMiLCJzZWdtZW50cyIsInBvc2l0aW9ucyIsImN1cnJlbnRQb3NpdGlvbiIsImdldEN1cnJlbnRTZWdtZW50IiwicG9zaXRpb24iLCJzZXRDdXJzb3JQb3NpdGlvbiIsInNldFNlZ21lbnQiLCJzZWdtZW50VHlwZSIsImN1cnJlbnRTZWdtZW50IiwidHlwZVRvVXNlIiwiY2hhbmdlU2VnbWVudFZhbHVlIiwiaW5jcmVtZW50Iiwic2VnbWVudE1ldGhvZHMiLCJtZXRob2QiLCJ1cGRhdGVkRGF0ZSIsIm5hdmlnYXRlU2VnbWVudHMiLCJjdXJyZW50U2VnbWVudEluZGV4IiwibmV4dFNlZ21lbnRJbmRleCIsIm5leHRTZWdtZW50IiwiaGFuZGxlRGlnaXRQcmVzc2VkIiwiZGlnaXQiLCJudW1iZXIiLCJzZWdtZW50Q29uZmlnIiwiY29uZmlnIiwiY29tYmluZWRWYWx1ZSIsIm5leHRDb21iaW5lZFZhbHVlIiwibWF4TGVuZ3RoIiwibWluVmFsdWUiLCJ3aWxsRXhjZWVkTWF4IiwicmVhY2hlZE1heExlbmd0aCIsImhhbmRsZUtleWJvYXJkTmF2aWdhdGlvbiIsImhhbmRsZUJhY2tzcGFjZSIsInVwZGF0ZWRWYWx1ZSIsInNlbGVjdGlvblN0YXJ0IiwiaGFuZGxlS2V5RG93biIsImV2ZW50VGFyZ2V0IiwiaGFuZGxlSW5wdXRTZWxlY3Rpb24iLCJ0YXJnZXQiLCJoYW5kbGVGb2N1cyIsImZpcnN0U2VnbWVudCIsInBhcnNlQW5kU2V0RGF0ZVZhbHVlcyIsInBhc3RlZFRleHQiLCJwYXJzZWREYXRlIiwiaGFuZGxlUGFzdGUiLCJoYW5kbGVJbnB1dCIsImlucHV0VGV4dCIsIk1JTExJU0VDT05EUyIsImJhc2VGb3JtYXRzIiwiaW50ZXJuYWxFcnJvck1lc3NhZ2VzIiwic2VsZWN0ZWRZZWFyIiwic2VsZWN0ZWRNb250aCIsInNlbGVjdGVkRGF5Iiwibm93IiwibWluQWxsb3dlZERhdGUiLCJtYXhBbGxvd2VkRGF0ZSIsInQiLCJ1c2VSdWlJOG4iLCJhbnlGb2N1c2VkIiwiaXNPdXRsaW5lZCIsImZvcm1hdHRlZERpc3BsYXkiLCJyZXBsYWNlbWVudHMiLCJnZXREaXNwbGF5VmFsdWUiLCJwYXR0ZXJuIiwiY29tYmluZWRFcnJvck1lc3NhZ2VzIiwicHJvcEVycm9ycyIsInNldElucHV0Rm9jdXMiLCJkYXRlVGltZSIsImlzRGF0ZVZhbGlkIiwibWluIiwibWF4IiwiZXJyb3JNZXNzYWdlIiwiUlVJX0kxOE5fS0VZUyIsIm5vd0Vycm9yIiwibWF4RXJyb3IiLCJlbWl0VXBkYXRlIiwidXBkYXRlZE1vZGVsIiwidGltZSIsImlnbm9yZVVwZGF0ZXMiLCJ3YXRjaElnbm9yYWJsZSIsInByZXZTZWxlY3RlZERhdGUiLCJwcmV2U2VsZWN0ZWRUaW1lIiwiY3VycmVudFRpbWV6b25lIiwibmV3U2VsZWN0ZWREYXRlIiwib2xkU2VsZWN0ZWREYXRlIiwibmV3U2VsZWN0ZWRUaW1lIiwib2xkU2VsZWN0ZWRUaW1lIiwidXBkYXRlSW50ZXJuYWxNb2RlbCIsIm5ld1RpbWV6b25lIiwiUnVpRGF0ZVRpbWVQaWNrZXJNZW51IiwiaW5kZXRlcm1pbmF0ZSIsImVsIiwiaW50ZXJuYWxNb2RlbFZhbHVlIiwiY2hlY2tlZCIsImljb25TaXplIiwic2l6ZVZhbCIsIm9iamVjdFBpY2siLCJfd2l0aERpcmVjdGl2ZXMiLCJyYWRpb0dyb3VwTmFtZSIsImdlbmVyYXRlSWQiLCJmaXJzdENoaWxkIiwiJHByb3BzIiwiaGlkZGVuIiwia2V5QXR0ciIsIm9wdGlvbiIsInZhbHVlS2V5Iiwic3RlcCIsInZlcnRpY2FsIiwidGlja1NpemUiLCJ2TW9kZWwiLCJ0aWNrc0RhdGEiLCJtaW5WYWwiLCJzdGVwVmFsIiwidHJhY2tXaWR0aCIsImN1cnJlbnQiLCJvdXRlciIsInNsaWRlcldpZHRoIiwic2xpZGVySGVpZ2h0IiwidGlja1NpemVJblB4IiwiYXV0b0dyb3ciLCJtaW5Sb3dzIiwibWF4Um93cyIsIm5vUmVzaXplIiwicm93SGVpZ2h0IiwidGV4dGFyZWEiLCJ0ZXh0YXJlYVNpemVyIiwiZmllbGRTdHlsZXMiLCJjb21wdXRlRmllbGRIZWlnaHQiLCJuZXdWYWwiLCJvbGRWYWwiLCJmaWVsZCIsImZpZWxkVmFsdWUiLCJmaWVsZFNpemVyIiwic2l6ZXJIZWlnaHQiLCJmaWVsZEhlaWdodCIsIlJ1aVNrZWxldG9uQmFzZSIsImZhbGxiYWNrIiwiYXBwTmFtZSIsImN1c3RvbUltYWdlUmVmIiwiZXJyb3IiLCJkZWNvZGluZyIsInBlbmRpbmdTb3VyY2VzIiwiZXh0ZXJuYWxTb3VyY2VzIiwiZXh0ZXJuYWxTb3VyY2UiLCJzb3VyY2VzIiwibG9nbyIsInVybCIsImZldGNoU291cmNlcyIsInVzZUZldGNoIiwibGlua3MiLCJ0cmFuc2Zvcm1DYXNlIiwiY29tcGxldGUiLCJ3YXRjaEVmZmVjdCIsImlzQ2xpZW50IiwidXNlU1NSQ29udGV4dCIsIm9uU2VydmVyUHJlZmV0Y2giLCJvZmZzZXRYIiwib2Zmc2V0WSIsImhhc0ljb24iLCJoYXNUZXh0IiwiaGFzSWNvbkFuZFRleHQiLCJfVHJhbnNpdGlvbiIsIm1heFdpZHRoIiwiYm90dG9tU2hlZXQiLCJ3YXRjaEltbWVkaWF0ZSIsIm9uVXBkYXRlTW9kZWxWYWx1ZSIsImNsb3NlIiwidHJhbnNmb3JtUHJvcHNVbml0IiwiY29udGVudFJlZiIsImRpYWxvZ0F0dHJzIiwiY29udGVudFRyYW5zaXRpb24iLCJvbkVzY0NsaWNrIiwiUnVpRGlhbG9nIiwiX2NyZWF0ZVNsb3RzIiwic2xvdCIsInNjb3BlIiwibWluaVZhcmlhbnQiLCJhY3RpdmF0b3JBdHRycyIsInRpbWVvdXQiLCJkaXNtaXNzIiwiZGlzcGxheSIsImR1cmF0aW9uIiwicGFnZXMiLCJvbkNoYW5nZSIsIm9uUHJldiIsIm9uTmV4dCIsIlN0ZXBwZXJTdGF0ZSIsImN1c3RvbSIsInN0ZXBzIiwib3JpZW50YXRpb24iLCJrZWVwQWN0aXZlVmlzaWJsZSIsInJlbmRlcmVkU3RlcCIsImN1cnJlbnRTdGVwIiwic3RlcHNWYWwiLCJzdGVwU3RhdHVzIiwid3JhcHBlclJlZiIsIlN0ZXBwZXJPcmllbnRhdGlvbiIsImVsZW0iLCJkZXNjcmlwdGlvbiIsImxvYWRpbmciLCJSdWlTdGVwcGVyQ3VzdG9tSWNvbiIsIlJ1aVN0ZXBwZXJJY29uIiwib25Tb3J0IiwiZGlyZWN0aW9uIiwib25Ub2dnbGVBbGwiLCJpc1NvcnRlZEJ5IiwiZ2V0U29ydEluZGV4Iiwic29ydEJ5Iiwic29ydCIsImdldFNvcnREaXJlY3Rpb24iLCJSdWlDaGVja2JveCIsImNvbHVtbiIsIlJ1aUJhZGdlIiwidGFibGVEZWZhdWx0cyIsInVzZVRhYmxlIiwibGltaXRzIiwibGltaXQiLCJjdXJyZW50TGltaXQiLCJyYW5nZXMiLCJwYWdlIiwicGFnZVJhbmdlVGV4dCIsImluZGljYXRvclRleHQiLCJmb3JtYXRJbnRlZ2VyIiwiY3VycmVudFJhbmdlIiwiaGFzUHJldiIsImhhc05leHQiLCJnb1RvUGFnZSIsIm9uTmF2aWdhdGUiLCJvbkZpcnN0Iiwib25MYXN0IiwiUnVpTWVudVNlbGVjdCIsIm5vRGF0YVBsYWNlaG9sZGVyIiwibm9EYXRhUGxhY2Vob2xkZXJEYXJrIiwiX3VzZVNsb3RzIiwic3RpY2t5SGVhZGVyIiwiY29sbGFwc2VkIiwiZGlzYWJsZWRSb3dzIiwic3RpY2t5SGVhZGVyT2Zmc2V0IiwiaXNSb3ciLCJpc0hlYWRlclNsb3QiLCJzbG90TmFtZSIsInN0aWNrIiwidGFibGUiLCJ0YWJsZVNjcm9sbGVyIiwidXNlU3RpY2t5VGFibGVIZWFkZXIiLCJleHBhbmRhYmxlIiwiaGVhZGVyU2xvdHMiLCJnbG9iYWxJdGVtc1BlclBhZ2VTZXR0aW5ncyIsImdldEtleXMiLCJncm91cEtleXMiLCJncm91cEJ5IiwiZ3JvdXBLZXkiLCJpc0dyb3VwZWQiLCJjb2x1bW5zIiwiaGFzRXhwYW5kQ29sdW1uIiwicm93IiwiZ3JvdXBCeUtleXMiLCJpdGVtc0xlbmd0aCIsInNlbGVjdGVkRGF0YSIsImludGVybmFsU2VsZWN0ZWREYXRhIiwicm93SWRlbnRpZmllciIsImludGVybmFsUGFnaW5hdGlvblN0YXRlIiwiY29sbGFwc2VkUm93cyIsInBhZ2luYXRpb24iLCJwYWdpbmF0aW9uRGF0YSIsInBhZ2luYXRlZCIsInNvcnREYXRhIiwicmVzZXRDaGVja2JveFNoaWZ0U3RhdGUiLCJzb3J0ZWRNYXAiLCJtYXBwZWQiLCJhY2MiLCJzZWFyY2hEYXRhIiwicXVlcnkiLCJzb3J0ZWQiLCJzb3J0T3B0aW9ucyIsImJ5IiwiYSIsImFWYWx1ZSIsImJWYWx1ZSIsImFOdW1iZXIiLCJiTnVtYmVyIiwibWFwcGVkR3JvdXBzIiwiaWRlbnRpZmllciIsImdyb3VwIiwiZ2V0Um93R3JvdXAiLCJncm91cFZhbCIsImdyb3VwZWQiLCJmaWx0ZXJlZCIsInByZUdyb3VwcyIsInBvc3RHcm91cHMiLCJuZWFyZXN0R3JvdXAiLCJmaXJzdEl0ZW0iLCJsYXN0SXRlbSIsImlzSGlkZGVuUm93IiwidmlzaWJsZUlkZW50aWZpZXJzIiwic2VsZWN0QnkiLCJpc0FsbFNlbGVjdGVkIiwic2VsZWN0ZWRSb3dzIiwibm9EYXRhIiwiY29sc3BhbiIsImNvbHVtbkxlbmd0aCIsImlzU2VsZWN0ZWQiLCJpc0Rpc2FibGVkUm93Iiwicm93S2V5IiwiZGlzYWJsZWRSb3ciLCJpc0V4cGFuZGVkIiwiZXhwYW5kZWQiLCJvblRvZ2dsZUV4cGFuZCIsInJvd0V4cGFuZGVkIiwiZ2V0R3JvdXBSb3dzIiwiZ3JvdXBSb3dzIiwiY29tcGFyZUdyb3Vwc0ZuIiwiaXNFeHBhbmRlZEdyb3VwIiwib25Ub2dnbGVFeHBhbmRHcm91cCIsImdyb3VwRXhwYW5kZWQiLCJvblVuZ3JvdXAiLCJvbkNvcHlHcm91cCIsIm5ld0RpcmVjdGlvbiIsInNvcnRCeUNvbCIsImlzU2VsZWN0YWJsZSIsIm11c3RTZWxlY3QiLCJzaGlmdENsaWNrZWQiLCJsYXN0U2VsZWN0ZWRJbmRleCIsIm9uU2VsZWN0IiwidXNlckFjdGlvbiIsIm9uQ2hlY2tib3hDbGljayIsIm5vZGVOYW1lIiwic2hpZnRLZXkiLCJsYXN0SW5kZXgiLCJ0YWJsZURhdGEiLCJsYXN0U2VsZWN0ZWREYXRhIiwidmFsdWVUb0FwcGx5IiwiZnJvbSIsInRvIiwiY3VyclNlbGVjdGVkRGF0YSIsInNlYXJjaCIsImRlc2VsZWN0UmVtb3ZlZFJvd3MiLCJvblBhZ2luYXRlIiwic2V0SW50ZXJuYWxUb3RhbCIsIml0ZW1zIiwiY2VsbFZhbHVlIiwiaXRlbXNQZXJQYWdlIiwibWF4UGFnZXMiLCJSdWlUYWJsZVBhZ2luYXRpb24iLCJSdWlUYWJsZUhlYWQiLCJoZWFkZXJTbG90Iiwic2xvdERhdGEiLCJzdWJJbmRleCIsIlJ1aUV4cGFuZEJ1dHRvbiIsInJldmVyc2UiLCJjdXJySW5kZXgiLCJhY3RpdmVJbmRleCIsImdldENoaWxkcmVuVGFicyIsInRhYnMiLCJhbnlBY3RpdmUiLCJ0YWIiLCJncm93IiwiYWN0aXZlIiwiYWN0aXZlQ2xhc3MiLCJhbGlnbiIsImluZGljYXRvclBvc2l0aW9uIiwiaXNTZWxmIiwidGFiQ2xhc3MiLCJfY29tcG9uZW50X1JvdXRlckxpbmsiLCJocmVmIiwibmF2aWdhdGUiLCJpc0FjdGl2ZSIsImlzRXhhY3RBY3RpdmUiLCJiYXIiLCJzaG93QXJyb3dzIiwiY3VycmVudE1vZGVsVmFsdWUiLCJpbmhlcml0ZWRQcm9wcyIsInRhYlZhbHVlIiwicm91dGUiLCJ1c2VSb3V0ZSIsImlzUGF0aE1hdGNoIiwicGF0aCIsImV4YWN0UGF0aCIsImV4YWN0IiwiY3VycmVudFJvdXRlIiwicm91dGVXaXRob3V0UXVlcnlQYXJhbXMiLCJrZWVwQWN0aXZlVGFiVmlzaWJsZSIsImJhckVsZW0iLCJhY3RpdmVUYWIiLCJjaGlsZExlZnQiLCJjaGlsZFRvcCIsImNoaWxkV2lkdGgiLCJjaGlsZEhlaWdodCIsInBhcmVudFNjcm9sbExlZnQiLCJwYXJlbnRTY3JvbGxUb3AiLCJwYXJlbnRXaWR0aCIsInBhcmVudEhlaWdodCIsInNjcm9sbExlZnQiLCJzY3JvbGxUb3AiLCJyb3V0ZXIiLCJ1c2VSb3V0ZXIiLCJhcHBseU5ld1ZhbHVlIiwib25seUxpbmsiLCJlbmFibGVkQ2hpbGRyZW4iLCJ3cmFwcGVyV2lkdGgiLCJ3cmFwcGVySGVpZ2h0IiwiYXJyaXZlZFN0YXRlIiwidXNlU2Nyb2xsIiwiYm90dG9tIiwidHJpZ2dlckhvcml6b250YWwiLCJzdG9wSG9yaXpvbnRhbCIsIndhdGNoVHJpZ2dlcmFibGUiLCJ3dyIsInciLCJ0aHJvdHRsZUZpbHRlciIsInRyaWdnZXJWZXJ0aWNhbCIsInN0b3BWZXJ0aWNhbCIsIndoIiwicHJldkFycm93RGlzYWJsZWQiLCJuZXh0QXJyb3dEaXNhYmxlZCIsIm9uUHJldlNsaWRlckNsaWNrIiwib25OZXh0U2xpZGVyQ2xpY2siXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFjQSxVQUFNQSxJQUFRQyxHQUtSLEVBQUUsaUJBQUFDLEVBQUEsSUFBb0JDLEdBQUEsR0FFdEJDLElBQVNDLEVBQVMsTUFBTUwsRUFBTSxLQUFLLFNBQVMsT0FBTyxDQUFDLEdBRXBETSxJQUEwRUQsRUFBUyxNQUFNO0FBQzdGLFlBQU1FLElBQU9QLEVBQU07QUFDbkIsTUFBS1EsR0FBVUQsQ0FBSSxLQUNqQixRQUFRLEtBQUssUUFBUUEsQ0FBSSwwQkFBMEI7QUFFckQsWUFBTUUsSUFBUVAsRUFBZ0JLLENBQUk7QUFFbEMsYUFBS0UsS0FDSCxRQUFRLE1BQU0sVUFBVUYsQ0FBSSxzRkFBc0YsR0FFN0dFO0FBQUEsSUFDVCxDQUFDOzJCQUlDQyxFQW9CTSxPQUFBO0FBQUEsTUFuQkgsT0FBS0MsRUFBQSxDQUFHQyxFQUFBQSxPQUFNLFVBQUEsR0FBY0EsRUFBQUEsT0FBT1gsRUFBQSxTQUFLLEVBQUEsQ0FBQSxDQUFBO0FBQUEsTUFDeEMsUUFBUUEsRUFBQTtBQUFBLE1BQ1IsT0FBT0EsRUFBQTtBQUFBLE1BQ1IsU0FBUTtBQUFBLE1BQ1IsT0FBTTtBQUFBLElBQUE7T0FFTlksRUFBQSxFQUFBLEdBQUFILEVBWUVJLElBQUEsTUFBQUMsR0FWNkJDLEVBQUFWLENBQUEsR0FB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QUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUNGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM5aEJBLFVBQU14VSxJQUFh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
|