nsc-react-component 4.0.7 → 4.0.8
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/lib/page/BasePage/index.js +6 -128
- package/lib/page/BasePage/index.js.map +1 -1
- package/lib/page/BasePage/utils.d.ts +5 -0
- package/lib/page/BasePage/utils.js +178 -0
- package/lib/page/BasePage/utils.js.map +1 -0
- package/lib/page/FormPage/index.js +2 -2
- package/lib/page/FormPage/index.js.map +1 -1
- package/lib/page/SettingTab/index.less +2 -2
- package/package.json +1 -1
|
@@ -30,7 +30,7 @@ import request from "nsc-request";
|
|
|
30
30
|
import config from "../../config";
|
|
31
31
|
import { getStorage, getButtonPermissons } from "@bj-nsc/functions";
|
|
32
32
|
import HeaderSearch from "../HeaderSearch";
|
|
33
|
-
import
|
|
33
|
+
import { convertColumns, getNewColumns } from "./utils";
|
|
34
34
|
const styles = null;
|
|
35
35
|
class BasePage extends PureComponent {
|
|
36
36
|
constructor(props) {
|
|
@@ -795,9 +795,6 @@ class BasePage extends PureComponent {
|
|
|
795
795
|
filterColumn,
|
|
796
796
|
store: _objectSpread({}, newTableStore)
|
|
797
797
|
}, othertableParams);
|
|
798
|
-
let tableColumn = [];
|
|
799
|
-
const searchForms = [];
|
|
800
|
-
const editorForms = [];
|
|
801
798
|
const defaultValue = {};
|
|
802
799
|
const columnButtons = [];
|
|
803
800
|
const {
|
|
@@ -807,129 +804,10 @@ class BasePage extends PureComponent {
|
|
|
807
804
|
if (permission.has && permission.menuCode) {
|
|
808
805
|
permissionButtons = getButtonPermissons(permission.menuCode).permissons || [];
|
|
809
806
|
}
|
|
810
|
-
columns
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
}, item);
|
|
815
|
-
if (temp.search === true || ((_temp$search = temp.search) === null || _temp$search === void 0 ? void 0 : _temp$search.show) === true) {
|
|
816
|
-
var _temp$search2, _temp$search3, _temp$search4;
|
|
817
|
-
let props = temp.props ? _objectSpread({}, temp.props) : {};
|
|
818
|
-
delete props.onChange;
|
|
819
|
-
searchForms.push({
|
|
820
|
-
name: temp.field || temp.dataIndex,
|
|
821
|
-
label: ((_temp$search2 = temp.search) === null || _temp$search2 === void 0 ? void 0 : _temp$search2.label) || temp.title,
|
|
822
|
-
type: temp.type,
|
|
823
|
-
props: props,
|
|
824
|
-
labelCol: (_temp$search3 = temp.search) === null || _temp$search3 === void 0 ? void 0 : _temp$search3.labelCol,
|
|
825
|
-
wrapperCol: (_temp$search4 = temp.search) === null || _temp$search4 === void 0 ? void 0 : _temp$search4.wrapperCol,
|
|
826
|
-
rules: temp.searchRules ? temp.searchRules : []
|
|
827
|
-
});
|
|
828
|
-
}
|
|
829
|
-
delete temp.search;
|
|
830
|
-
temp.editor !== false && editorForms.push({
|
|
831
|
-
name: temp.field || temp.dataIndex,
|
|
832
|
-
label: temp.title,
|
|
833
|
-
rules: temp.rules ? temp.rules : [],
|
|
834
|
-
type: temp.type,
|
|
835
|
-
span: temp.span,
|
|
836
|
-
dictName: temp.dictName,
|
|
837
|
-
required: temp.required,
|
|
838
|
-
props: _objectSpread({}, temp.props)
|
|
839
|
-
});
|
|
840
|
-
if (((_temp$props = temp.props) === null || _temp$props === void 0 ? void 0 : _temp$props.defaultValue) !== undefined && ((_temp$props2 = temp.props) === null || _temp$props2 === void 0 ? void 0 : _temp$props2.defaultValue) !== null) {
|
|
841
|
-
var _temp$props3;
|
|
842
|
-
const name = temp.field || temp.dataIndex;
|
|
843
|
-
defaultValue[name] = (_temp$props3 = temp.props) === null || _temp$props3 === void 0 ? void 0 : _temp$props3.defaultValue;
|
|
844
|
-
}
|
|
845
|
-
delete temp.rules;
|
|
846
|
-
delete temp.span;
|
|
847
|
-
if (temp.columnSearch) {
|
|
848
|
-
temp.filterProps = {
|
|
849
|
-
type: temp.type,
|
|
850
|
-
props: temp.props
|
|
851
|
-
};
|
|
852
|
-
}
|
|
853
|
-
let tempProp = _objectSpread({}, temp.props);
|
|
854
|
-
if (tempProp !== null && tempProp !== void 0 && tempProp.data && (tempProp === null || tempProp === void 0 || (_tempProp$data = tempProp.data) === null || _tempProp$data === void 0 ? void 0 : _tempProp$data.length) > 0) {
|
|
855
|
-
temp = _objectSpread({
|
|
856
|
-
ellipsis: {
|
|
857
|
-
showTitle: false
|
|
858
|
-
},
|
|
859
|
-
render: text => {
|
|
860
|
-
return this.getText(tempProp, text);
|
|
861
|
-
}
|
|
862
|
-
}, temp);
|
|
863
|
-
}
|
|
864
|
-
delete temp.props;
|
|
865
|
-
if (temp.render && typeof temp.render == 'string') {
|
|
866
|
-
let renderStr = temp.render;
|
|
867
|
-
temp = _objectSpread(_objectSpread({}, temp), {}, {
|
|
868
|
-
render: (_text, _record, _index) => {
|
|
869
|
-
const eventOption = {
|
|
870
|
-
text: _text,
|
|
871
|
-
record: _record,
|
|
872
|
-
index: _index,
|
|
873
|
-
funcs: this.props.funcs
|
|
874
|
-
};
|
|
875
|
-
const func = new Function('eventOption,Utils', renderStr);
|
|
876
|
-
const res = func(eventOption, this.props.Utils);
|
|
877
|
-
return res;
|
|
878
|
-
}
|
|
879
|
-
});
|
|
880
|
-
}
|
|
881
|
-
if (temp.type == "Upload" && ((_temp = temp) === null || _temp === void 0 ? void 0 : _temp.columnShow) !== false) {
|
|
882
|
-
temp = _objectSpread({
|
|
883
|
-
render: (_text, record) => {
|
|
884
|
-
if (Array.isArray(record[temp.dataIndex])) {
|
|
885
|
-
const files = record[temp.dataIndex];
|
|
886
|
-
if (files.length == 1) {
|
|
887
|
-
var _files$;
|
|
888
|
-
return /*#__PURE__*/React.createElement(Button, {
|
|
889
|
-
type: "link",
|
|
890
|
-
onClick: () => {
|
|
891
|
-
nscfile.download(files[0].fileId);
|
|
892
|
-
}
|
|
893
|
-
}, (_files$ = files[0]) === null || _files$ === void 0 ? void 0 : _files$.fileName);
|
|
894
|
-
} else if (files.length > 1) {
|
|
895
|
-
return /*#__PURE__*/React.createElement(Button, {
|
|
896
|
-
type: "link",
|
|
897
|
-
onClick: () => {
|
|
898
|
-
let fileIds = [];
|
|
899
|
-
files.map(item => {
|
|
900
|
-
fileIds.push(item.fileId);
|
|
901
|
-
});
|
|
902
|
-
nscfile.downloadZip(fileIds.join(","));
|
|
903
|
-
}
|
|
904
|
-
}, "文件下载");
|
|
905
|
-
}
|
|
906
|
-
}
|
|
907
|
-
}
|
|
908
|
-
}, temp);
|
|
909
|
-
}
|
|
910
|
-
if (temp.type == "Image" && ((_temp2 = temp) === null || _temp2 === void 0 ? void 0 : _temp2.columnShow) !== false) {
|
|
911
|
-
temp = _objectSpread({
|
|
912
|
-
render: (_text, record) => {
|
|
913
|
-
if (Array.isArray(record[temp.dataIndex])) {
|
|
914
|
-
const files = record[temp.dataIndex];
|
|
915
|
-
if (files.length == 1) {
|
|
916
|
-
var _files$2;
|
|
917
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
918
|
-
className: "nsc-basepage-table-img"
|
|
919
|
-
}, (_files$2 = files[0]) === null || _files$2 === void 0 ? void 0 : _files$2.fileName);
|
|
920
|
-
} else if (files.length > 1) {
|
|
921
|
-
return /*#__PURE__*/React.createElement(Button, {
|
|
922
|
-
type: "link",
|
|
923
|
-
onClick: () => {}
|
|
924
|
-
}, "\u56FE\u7247\u67E5\u770B");
|
|
925
|
-
}
|
|
926
|
-
}
|
|
927
|
-
}
|
|
928
|
-
}, temp);
|
|
929
|
-
}
|
|
930
|
-
delete temp.type;
|
|
931
|
-
if (((_temp3 = temp) === null || _temp3 === void 0 ? void 0 : _temp3.columnShow) !== false) tableColumn.push(temp);
|
|
932
|
-
});
|
|
807
|
+
const obj = convertColumns(columns, {});
|
|
808
|
+
let tableColumn = getNewColumns(columns, this.props);
|
|
809
|
+
const searchForms = obj.searchForms || [];
|
|
810
|
+
const editorForms = obj.editorForms || [];
|
|
933
811
|
const toolButtons = [];
|
|
934
812
|
const {
|
|
935
813
|
baseActionColumn
|
|
@@ -1268,4 +1146,4 @@ class BasePage extends PureComponent {
|
|
|
1268
1146
|
}
|
|
1269
1147
|
}
|
|
1270
1148
|
export default BasePage;
|
|
1271
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJUYWJsZSIsIlRyZWUiLCJCdXR0b24iLCJNb2RhbCIsIlBvcG92ZXIiLCJtZXNzYWdlIiwiRWRpdG9yRm9ybSIsImNscyIsIkRvd25PdXRsaW5lZCIsIkV5ZU91dGxpbmVkIiwiRWRpdE91dGxpbmVkIiwiUmlnaHRPdXRsaW5lZCIsIlBsdXNPdXRsaW5lZCIsIkVsbGlwc2lzT3V0bGluZWQiLCJEZWxldGVPdXRsaW5lZCIsImNvbnZlckZ1bmN0aW9uIiwiZ2V0TGVzcyIsInJlcXVlc3QiLCJjb25maWciLCJnZXRTdG9yYWdlIiwiZ2V0QnV0dG9uUGVybWlzc29ucyIsIkhlYWRlclNlYXJjaCIsIm5zY2ZpbGUiLCJzdHlsZXMiLCJCYXNlUGFnZSIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJfdHlwZSIsIl9zaXplIiwiX2RlZmluZVByb3BlcnR5IiwiY3JlYXRlUmVmIiwiY2hlY2tlZFRyZWVLZXlzIiwibmFtZSIsInVzZXJUeXBlIiwiYWNjb3VudCIsInN0YXRlIiwidmFsdWUiLCJkZXB0SWQiLCJvblNlYXJjaCIsInNlbGVjdGVkIiwicmVzIiwia2V5Iiwia2V5cyIsImxlbmd0aCIsInN0b3JlUHJlZml4IiwidHlwZSIsImNvbnRlbnQiLCJzaXplIiwic2VsZWN0ZWRSb3dLZXlzIiwic2VsZWN0ZWRSb3dEYXRhcyIsInRyZWVTZWxlY3RlZEtleSIsImV4cGFuZCIsImZvcm1UeXBlIiwidGFibGVTaXplIiwidHJlZVNlYXJjaFByYW1zIiwicG9wb3BlbnMiLCJtb3JlT3BlbiIsImVsZW1lbnRIZWlnaHQiLCJwZXJtaXNzaW9uQnV0dG9ucyIsInF1ZXJ5UGFyYW1zIiwiY29tcG9uZW50RGlkTW91bnQiLCJfdGhpcyRwYWdlQ29udGVudFJlZiQiLCJpbml0RGF0YSIsInBlcm1pc3NvbiIsInBhZ2VDb250ZW50UmVmIiwiY3VycmVudCIsImNsaWVudEhlaWdodCIsInNldFN0YXRlIiwiY29tcG9uZW50RGlkVXBkYXRlIiwiX3RoaXMkcGFnZUNvbnRlbnRSZWYkMiIsInNldFNlYXJjaFBhcmFtcyIsInBhcmFtcyIsImNhbGxCYWNrIiwiX3RoaXMkc2VhcmNoUmVmJGN1cnJlIiwic2VhcmNoUmVmIiwiZG9TdWJtaXQiLCJkYXRhIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlIiwibGFiZWwiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJlZGl0b3JSZWYiLCJzaG93Rm9ybSIsIl90aGlzJGVkaXRvclJlZiIsImVkaXRvcmZsYWciLCJuZXdWYWx1ZSIsIl9vYmplY3RTcHJlYWQiLCJzaG93IiwiaGlkZUZvcm0iLCJfdGhpcyRlZGl0b3JSZWYkY3VycmUyIiwic2V0TG9hZGluZyIsImxvYWRpbmciLCJfdGhpcyRlZGl0b3JSZWYkY3VycmUzIiwic2V0RWRpdEZvcm1WYWx1ZXMiLCJfdGhpcyRlZGl0b3JSZWYkY3VycmU0Iiwic2V0Rm9ybVZhbHVlIiwiZ2V0RWRpdEZvcm1WYWx1ZXMiLCJfdGhpcyRlZGl0b3JSZWYkY3VycmU1IiwiZ2V0Rm9ybVZhbHVlIiwib25EZWxldGUiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW4iLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW4yIiwiZGVsZXRlVXJsIiwiZGVsZXRlUGFyYW1zIiwiZGVsZXRlUG9zaXRpb24iLCJidXR0b25DbGljayIsInJlcXVlc3RQYXJhbXMiLCJyZXF1ZXN0VXJscyIsInJlcXVlc3RDb25maWciLCJfdGhpcyIsInRhYmxlUmVmIiwiZ2V0U2VsZWN0ZWRSb3dLZXlzIiwiZ2V0U2VsZWN0ZWRSb3dEYXRhcyIsInVybCIsIndhcm5pbmciLCJjb25maXJtIiwib25PayIsInBhZ2VSZWYiLCJyZWNvcmQiLCJpZHMiLCJpZCIsImZ1bmNzIiwiVXRpbHMiLCJFcnJvciIsImRhdGFQYXJhbXMiLCJvdGhlclBhcmFtcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsImRlZmF1bHRQYXJhbXMiLCJtZXRob2QiLCJhdXRvUHJlZml4Iiwiam9pbiIsImZpbmFsUGFyYW1zIiwidGhlbiIsImNvZGUiLCJfdGhpcyRzZWFyY2hSZWYiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWMiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWMyIiwic3VjY2VzcyIsImdldFNlYXJjaFZhbHVlcyIsIm9uQ2FsbEJhY2tzIiwib25EZWxldGVDYWxsQmFjayIsInRhYmxlTG9hZCIsImVycm9yIiwiY2F0Y2giLCJjb25zb2xlIiwibG9nIiwiX3RhYmxlU3RvcmUkcmVxdWVzdENvIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuMyIsImRlZmF1bHRSZXF1ZXN0Q29uZmlnIiwidGFibGVQcm9wcyIsInN0b3JlIiwidGFibGVTdG9yZSIsImNvbnZlcnRRdWVyeVBhcmFtcyIsInJlcXVlc3RDb25pZyIsInN0b3JlQ29uZmlnIiwic3RvcmVQYXJhbXMiLCJvdGhlclN0b3JlQ29uZmlnIiwiX2V4Y2x1ZGVkMiIsImxvYWQiLCJfdGFibGVTdG9yZSRyZXF1ZXN0Q28yIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjMyIsIm9uUXVlcnlDYWxsQmFjayIsInRhYmxlUmVsb2FkIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNCIsImF1dG9Mb2FkIiwicmVsb2FkIiwiY2FsbGJhY2siLCJfcmVzJGRhdGEiLCJyZWNvcmRzIiwiY3VycmVudFBhZ2UiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW41IiwidHJlZUxvYWQiLCJfdGhpcyR0cmVlUmVmJGN1cnJlbnQiLCJ0cmVlUmVmIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNiIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjciLCJzZXRTZWxlY3RlZFJvd0tleXMiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW44Iiwic2V0U2VsZWN0ZWRSb3dEYXRhcyIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjkiLCJyZXNldFNlbGVjdGVkUm93S2V5cyIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjEwIiwiX3RoaXMkc2VhcmNoUmVmMiIsImZyb21WYWx1ZSIsImdldENoaWxkcmVuRGF0YSIsInJvd0tleSIsInJlc0tleSIsImNoaWxkTm9kZXMiLCJjaGlsZHJlbiIsIm1hcCIsIml0ZW0iLCJpbmRleCIsInJlbmRlclRvb2xCdXR0b25zIiwidG9vbGJ1dHRvbnMiLCJ0b29sYmFyRmxhZyIsImZsYWciLCJzaG93U2VhcmNoIiwiX2l0ZW0kcHJvcHMiLCJwYWdlVHlwZSIsIm9uQ2xpY2siLCJpY29uIiwiX2V4Y2x1ZGVkMyIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJfZXh0ZW5kcyIsInN0eWxlIiwibWFyZ2luTGVmdCIsIm1hcmdpblJpZ2h0IiwidGl0bGUiLCJwbGFjZW1lbnQiLCJvcGVuIiwib25PcGVuQ2hhbmdlIiwicmVuZGVyQ2xvdW1uQnV0dG9uIiwiY29sdW1uQnV0dG9ucyIsInJvd1JlY29yZCIsImFjdGlvblByb3BzIiwiYmFzZUFjdGlvbkNvbHVtbiIsIm5ld0J1dHRvbnMiLCJzaG93SWNvbiIsIl9pdGVtJHByb3BzMiIsInJlY29yZFNob3ciLCJfZXhjbHVkZWQ0IiwiZXZlbnRPcHRpb24iLCJVaXRscyIsImZ1bmMiLCJGdW5jdGlvbiIsInB1c2giLCJlIiwiZXZhbCIsIm51bWJlciIsImJ1dHRvbk51bWJlciIsIl9pdGVtJHByb3BzMyIsIl9leGNsdWRlZDUiLCJOdW1iZXIiLCJfaXRlbSRwcm9wczQiLCJfZXhjbHVkZWQ2IiwidHJpZ2dlciIsInRyZWVTZWxlY3QiLCJzZWxlY3RlZEtleXMiLCJvYmoiLCJfdGhpcyRzZWFyY2hSZWYzIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjNCIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzUiLCJrZXl3b3JkIiwic2VhcmNoS2V5Iiwic2VhcmNoRmllbGQiLCJwYXJhbnRTZWxlY3QiLCJ0cmVlUHJvcHMiLCJzZWxlY3RlZE5vZGVzIiwiZGF0YXJlZiIsImF0dHJpYnV0ZSIsImlzTGVhZiIsIm9uVHJlZVNlbGVjdCIsInRyZWVTZWxlY3RDYWxsQmFjayIsInJlc2V0U2VhcmNoIiwiX3RoaXMkc2VhcmNoUmVmJGN1cnJlMiIsInJlc2V0RmllbGRzIiwiZ2V0VGV4dCIsInRleHQiLCJfcHJvcHMkZGF0YSIsIm5ld1RleHQiLCJpIiwic2V0VGFibGVEYXRhIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuMTEiLCJzZXREYXRhIiwic2V0VHJlZURhdGEiLCJfdGhpcyR0cmVlUmVmJGN1cnJlbnQyIiwiY29udmVyUGFyYW1zIiwicmVuZGVyIiwiX3RoaXMyIiwiX3RhYmxlUHJvcHMkdG9vbGJhciIsIl90YWJsZVByb3BzJHRvb2xiYXIyIiwiY29sdW1ucyIsInN1Ym1pdFVybCIsImZvcm1Qcm9wcyIsImZvcm1QYWdlUHJvcHMiLCJzaG93TGVmdCIsInN1Ym1pdFBhcmFtcyIsInNob3dUb29sQnV0dG9uIiwiYnV0dG9ucyIsImVkaXRvckZvcm0iLCJvblNob3dGb3JtIiwiZm9ybUNoYW5nZVZhbGlkIiwidG9vbEJ1dHRvblBvc2l0aW9uIiwicGVybWlzc2lvbiIsImhhcyIsImZpbHRlckNvbHVtbiIsImFjdGlvbkNvbHVtbiIsInNob3dSb3dTZWxlY3Rpb24iLCJjb2x1bW5PcmRlciIsImV4cGFuZGFibGUiLCJ0YWJsZVRpdGxlIiwib3RoZXJ0YWJsZVBhcmFtcyIsIl9leGNsdWRlZDciLCJuZXdUYWJsZVN0b3JlIiwiX25ld1RhYmxlU3RvcmUkcmVxdWVzIiwidHJlZVN0b3JlIiwidHJlZVNlYXJjaCIsInRpdGxlQWxpYXMiLCJ0cmVlVGl0bGUiLCJvdGhlcnRyZWVQYXJhbXMiLCJfZXhjbHVkZWQ4IiwidGFibGVQYXJhbXMiLCJ0YWJsZUNvbHVtbiIsInNlYXJjaEZvcm1zIiwiZWRpdG9yRm9ybXMiLCJkZWZhdWx0VmFsdWUiLCJtZW51Q29kZSIsInBlcm1pc3NvbnMiLCJfdGVtcCRzZWFyY2giLCJfdGVtcCRwcm9wcyIsIl90ZW1wJHByb3BzMiIsIl90ZW1wUHJvcCRkYXRhIiwiX3RlbXAiLCJfdGVtcDIiLCJfdGVtcDMiLCJ0ZW1wIiwid2lkdGgiLCJzZWFyY2giLCJfdGVtcCRzZWFyY2gyIiwiX3RlbXAkc2VhcmNoMyIsIl90ZW1wJHNlYXJjaDQiLCJvbkNoYW5nZSIsImZpZWxkIiwiZGF0YUluZGV4IiwibGFiZWxDb2wiLCJ3cmFwcGVyQ29sIiwicnVsZXMiLCJzZWFyY2hSdWxlcyIsImVkaXRvciIsInNwYW4iLCJkaWN0TmFtZSIsInJlcXVpcmVkIiwiX3RlbXAkcHJvcHMzIiwiY29sdW1uU2VhcmNoIiwiZmlsdGVyUHJvcHMiLCJ0ZW1wUHJvcCIsImVsbGlwc2lzIiwic2hvd1RpdGxlIiwicmVuZGVyU3RyIiwiX3RleHQiLCJfcmVjb3JkIiwiX2luZGV4IiwiY29sdW1uU2hvdyIsIkFycmF5IiwiaXNBcnJheSIsImZpbGVzIiwiX2ZpbGVzJCIsImRvd25sb2FkIiwiZmlsZUlkIiwiZmlsZU5hbWUiLCJmaWxlSWRzIiwiZG93bmxvYWRaaXAiLCJfZmlsZXMkMiIsInRvb2xCdXR0b25zIiwiYnV0dG9uTWFwIiwiZGVsZXRlIiwicmV0dXJuQnV0dG9uIiwiX2J1dHRvbk1hcCRjb2RlIiwib25FZGl0b3IiLCJfdGhpczIkcHJvcHMkb25DYWxsQmEiLCJfdGhpczIkcHJvcHMkb25DYWxsQmEyIiwib25FZGl0b3JDYWxsQmFjayIsIm9uU2VhcmNoQ2FsbEJhY2siLCJjaGVja1BlcnNzaW9uIiwiaW5kZXhPZiIsIm9uQWRkIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjNiIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzciLCJvbkFkZENhbGxCYWNrIiwiYmluZCIsImRhbmdlciIsImNoaWxkIiwiX2NoaWxkJHByb3BzIiwiX2NoaWxkJHByb3BzMiIsIl9jaGlsZCRwcm9wczMiLCJfY2hpbGQkcHJvcHM0IiwiX2l0ZW0kcHJvcHM1IiwiX2l0ZW0kcHJvcHM2IiwiX2l0ZW0kcHJvcHM3IiwiX2l0ZW0kcHJvcHM4IiwiYWxpZ24iLCJ0ZXh0QWxpZ24iLCJmaXhlZCIsInJlYWNvcmQiLCJGcmFnbWVudCIsInNlYXJjaEZsYWciLCJ0YWJsZVRvb2wiLCJ0b29sRmxhZyIsInRvb2xiYXIiLCJ0b29scyIsInRhYmxlSGVhZGVySGVpZ2h0IiwidG9vbEhlaWdodCIsInBhZGRpbmdIZWlnaHQiLCJ0YWJsZUNvbnRlbnRIZWlnaHQiLCJQYWdpbmF0aW9uSGVpZ2h0IiwicGFnaW5hdGlvbiIsInRhYmxlSGVpZ2h0IiwidGFibGVTcm9sbEhlaWdodCIsInNjcm9sbCIsIngiLCJ5IiwicmVmIiwicGFnZVRpdGxlIiwiZGlzcGxheSIsImNoZWNrYWJsZSIsInNlYXJjaGFibGUiLCJvblNlbGVjdCIsIm9uUmVzZXQiLCJfdGhpcyRzZWFyY2hSZWYkY3VycmUzIiwic2VhcmNoRm9ybVByb3BzIiwiaGVpZ2h0IiwiZXhwYW5kSWNvbiIsIl9yZWYiLCJfcmVjb3JkJGNoaWxkTm9kZXMiLCJfcmVjb3JkJGNoaWxkTm9kZXMyIiwiZXhwYW5kZWQiLCJvbkV4cGFuZCIsIm9uVG9vbENsaWNrIiwib25SZWZyZXNoIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjOCIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzkiLCJvblN1bWJpdENhbGxCYWNrIiwiZm9ybXMiLCJvblN1Ym1pdCIsIm9uSGlkZUZvcm0iLCJvbkZvcm1DaGFuZ2UiLCJjaGFuZ2VWYWxpZCIsInJlcXVlc3RPYmplY3QiLCJhZGRVcmwiLCJlZGl0b3JVcmwiLCJhZGRQYXJhbXMiLCJlZGl0b3JQYXJhbXMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9wYWdlL0Jhc2VQYWdlL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUHVyZUNvbXBvbmVudCwgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBUYWJsZSBmcm9tIFwiLi4vLi4vYmFzZS90YWJsZVwiO1xyXG5pbXBvcnQgVHJlZSBmcm9tIFwiLi4vLi4vYmFzZS90cmVlXCI7XHJcbmltcG9ydCBCdXR0b24gZnJvbSBcIi4uLy4uL2Jhc2UvYnV0dG9uXCI7XHJcbmltcG9ydCBNb2RhbCBmcm9tIFwiLi4vLi4vYmFzZS9tb2RhbFwiO1xyXG5pbXBvcnQgUG9wb3ZlciBmcm9tIFwiLi4vLi4vYmFzZS9wb3BvdmVyXCI7XHJcbmltcG9ydCBtZXNzYWdlIGZyb20gXCIuLi8uLi9iYXNlL21lc3NhZ2VcIjtcclxuaW1wb3J0IEVkaXRvckZvcm0sIHsgRm9ybVBhZ2VQcm9wcyB9IGZyb20gXCIuLi9Gb3JtUGFnZS9pbmRleFwiO1xyXG5pbXBvcnQgY2xzIGZyb20gXCJjbGFzc25hbWVzXCI7XHJcbmltcG9ydCBcIi4vaW5kZXgubW9kdWxlLmxlc3NcIjtcclxuaW1wb3J0IFN0b3JlLCB7IFBhZ2VTdG9yZSwgU3RvcmVQcm9wcyB9IGZyb20gXCJAYmotbnNjL21zblwiO1xyXG5pbXBvcnQgeyB1dGlscyB9IGZyb20gXCJAYmotbnNjL21zbi9saWIvdXRpbHNcIjtcclxuaW1wb3J0IHtcclxuICBEb3duT3V0bGluZWQsXHJcbiAgRXllT3V0bGluZWQsXHJcbiAgRWRpdE91dGxpbmVkLFxyXG4gIFJpZ2h0T3V0bGluZWQsXHJcbiAgUGx1c091dGxpbmVkLFxyXG4gIEVsbGlwc2lzT3V0bGluZWQsXHJcbiAgRGVsZXRlT3V0bGluZWQsXHJcbn0gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zXCI7XHJcbmltcG9ydCB7IGNvbnZlckZ1bmN0aW9uLCBnZXRMZXNzLCBnZXROb2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbmltcG9ydCByZXF1ZXN0IGZyb20gXCJuc2MtcmVxdWVzdFwiO1xyXG5pbXBvcnQgY29uZmlnIGZyb20gXCIuLi8uLi9jb25maWdcIjtcclxuaW1wb3J0IHsgZ2V0U3RvcmFnZSwgcHgydncsIGdldEJ1dHRvblBlcm1pc3NvbnMgfSBmcm9tIFwiQGJqLW5zYy9mdW5jdGlvbnNcIjtcclxuaW1wb3J0IEhlYWRlclNlYXJjaCBmcm9tIFwiLi4vSGVhZGVyU2VhcmNoXCI7XHJcbmltcG9ydCB7IFBhZ2luYXRpb25Qcm9wcyB9IGZyb20gXCJhbnRkXCI7XHJcbmltcG9ydCBuc2NmaWxlIGZyb20gXCJuc2MtZmlsZVwiO1xyXG5pbnRlcmZhY2UgVGFibGVQcm9wcyB7XHJcbiAgYWN0aW9uQ29sdW1uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmk43kvZzliJdcclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgZmlsdGVyQ29sdW1uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrov4fmu6TmjInpkq5cclxuICBzaG93Um93U2VsZWN0aW9uPzogYm9vbGVhbjsgLy/mmK/lkKbooajmoLzli77pgInliJdcclxuICBwYWdpbmF0aW9uPzogYm9vbGVhbiB8IFBhZ2luYXRpb25Qcm9wczsgLy/mmK/lkKbmmL7npLrliIbpobVcclxuICBjb2x1bW5PcmRlcj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S66KGo5qC85bqP5YiXXHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcbmNvbnN0IHN0eWxlcyA9IG51bGw7XHJcbmludGVyZmFjZSBUcmVlUHJvcHMge1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBzaG93U2VhcmNoPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmkJzntKLmoYZcclxuICBzZWFyY2hLZXk/OiBzdHJpbmc7IC8v5pCc57SidmFsdWXlr7nlupTnmoRrZXlcclxuICBzZWFyY2hGaWVsZD86IHN0cmluZzsgLy/mn6Xor6Llr7nlupTnmoRrZXlcclxuICB0aXRsZUFsaWFzPzogc3RyaW5nOyAvL+agkXRpdGxl5a+55bqU55qEa2V5LOm7mOiupHRpdGxlXHJcbiAgbm9kZVBvcnBzPzogb2JqZWN0O1xyXG4gIHBhcmFudFNlbGVjdD86IGJvb2xlYW47XHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcbmludGVyZmFjZSBGb3JtUHJvcHMgZXh0ZW5kcyBGb3JtUGFnZVByb3BzIHsgfVxyXG5pbnRlcmZhY2UgTlNDQmFzZUJhZ2VQcm9wcyB7XHJcbiAgc2hvd1NlYXJjaD86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65aS06YOo5pCc57Si5qCPXHJcbiAgdGFibGVQcm9wcz86IFRhYmxlUHJvcHM7IC8v6KGo5qC85Y+C5pWwXHJcbiAgdHJlZVByb3BzPzogVHJlZVByb3BzOyAvL+W3puS+p+agkeWPguaVsFxyXG4gIHN1Ym1pdFBhcmFtcz86IE9iamVjdDsgLy/mt7vliqDlj4LmlbDvvIzpu5jorqRtb3Rob2Q6cG9zdO+8jCDlj4LmlbDpgJrov4dkYXRh5Lyg6YCSXHJcbiAgc3VibWl0VXJsPzogc3RyaW5nO1xyXG4gIG9uU3VibWl0PzogKHZhbHVlPzogYW55LCBsYWJlbD86IGFueSkgPT4gdm9pZDtcclxuICBjb2x1bW5zOiBBcnJheTxPYmplY3Q+O1xyXG4gIHNob3dMZWZ0PzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrlt6bkvqfnm67lvZXmoJFcclxuICBzaG93VG9vbEJ1dHRvbj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65oyJ6ZKu5qCPXHJcbiAgZWRpdG9yRm9ybT86IGJvb2xlYW47IC8v5piv5ZCm6ZyA6KaB6KGo5Y2V5Yqf6IO9ICwg5Li6ZmFsc2Ug57yW6L6R77yM5p+l55yL77yM5paw5aKe5Yqf6IO95Z2H5LiN5Y+v55SoXHJcbiAgZGVsZXRlVXJsPzogc3RyaW5nOyAvL+WIoOmZpHVybFxyXG4gIG9uRGVsZXRlPzogKHNlbGVjdGVkS2V5cz86IEFycmF5PHN0cmluZz4pID0+IHZvaWQ7IC8v5Yig6Zmk5Y+C5pWw77yM6buY6K6kbW90aG9kOnBvc3TvvIwg5Y+C5pWw6YCa6L+HaWRz5ou85o6l5Lyg6YCS57uZ5ZCO5Y+wXHJcbiAgZGVsZXRlUG9zaXRpb24/OiBcInRvb2xiYXJcIiB8IFwicm93XCI7XHJcbiAgZGVsZXRlUGFyYW1zPzogT2JqZWN0O1xyXG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xyXG4gIG9uU2VhcmNoPzogKHZhbHVlPzogYW55KSA9PiB2b2lkO1xyXG4gIG9uUmVzZXQ/OiAoKSA9PiB2b2lkO1xyXG4gIGluaXREYXRhPzogYW55OyAvL+WIneWni+WMluWbnuiwg+WHveaVsO+8jOWcqGNvbXBvbmVudERpZE1vdW505Lit6LCD55SoXHJcbiAgYnV0dG9ucz86XHJcbiAgfCBBcnJheTxzdHJpbmc+XHJcbiAgfCBBcnJheTx7IGNvZGU6IHN0cmluZzsgcmVjb3JkU2hvdz86IHN0cmluZyB8IEZ1bmN0aW9uIH0+OyAvL+aMiemSrumbhuWQiCAgWydhZGQnLCdkZWxldGUnLCdzZWFyY2gnLCdlZGl0b3InXVxyXG4gIG9uU2hvd0Zvcm0/OiAodmFsdWU/OiBhbnksIGVkaXRvckZsYWc/OiBzdHJpbmcpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25IaWRlRm9ybT86ICgpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25Gb3JtQ2hhbmdlPzogKGNoYW5nZWRWYWx1ZXM/OiBhbnksIGFsbFZhbHVlcz86IGFueSkgPT4gdm9pZDsgLy/ooajljZVvbkNoYW5nZeWbnuiwg1xyXG4gIGZvcm1UeXBlPzogXCJtb2RhbFwiIHwgXCJkcmF3ZXJcIjtcclxuICBmb3JtQ2hhbmdlVmFsaWQ/OiBib29sZWFuOyAvL+ihqOWNleagoemqjFxyXG4gIGNsYXNzTmFtZT86IGFueTtcclxuICB0b29sQnV0dG9uUG9zaXRpb24/OiBcInJpZ2h0XCIgfCBcImJ1dHRvbVwiO1xyXG4gIHBhZ2VUaXRsZT86IHN0cmluZyB8IFJlYWN0Tm9kZTtcclxuICBmb3JtUHJvcHM/OiBGb3JtUHJvcHM7XHJcbiAgYWN0aW9uUHJvcHM/OiB7XHJcbiAgICB0ZXh0QWxpZ24/OiBzdHJpbmc7XHJcbiAgICBzaG93SWNvbj86IGJvb2xlYW47XHJcbiAgICB3aWR0aD86IG51bWJlcjtcclxuICAgIGJ1dHRvbk51bWJlcj86IG51bWJlciB8IFwiYWxsXCI7XHJcbiAgfTtcclxuICBzZWFyY2hGb3JtUHJvcHM/OiB7IHdyYXBwZXJDb2w/OiBhbnk7IGxhYmVsQ29sPzogYW55IH07XHJcbiAgb25UcmVlU2VsZWN0PzogKHZhbHVlPzogYW55LCBlZGl0b3JGbGFnPzogc3RyaW5nKSA9PiB2b2lkOyAvL+aJk+W8gOihqOWNleWbnuiwg1xyXG4gIG9uQ2FsbEJhY2tzPzoge1xyXG4gICAgdHJlZVNlbGVjdENhbGxCYWNrPzogYW55OyAvL+agkeeCueWHu+afpeivouWQjuWbnuiwg1xyXG4gICAgb25RdWVyeUNhbGxCYWNrPzogYW55OyAvL+afpeivouWbnuiwg++8jOafpeivouaVsOaNruWQjuWbnuiwg1xyXG4gICAgb25TdW1iaXRDYWxsQmFjaz86IGFueTsgLy/kv53lrZjlm57osIPvvIzkv53lrZjmlbDmja7miJDlip/lkI7lm57osINcclxuICAgIG9uRGVsZXRlQ2FsbEJhY2s/OiBhbnk7IC8v5Yig6Zmk5oyJ6ZKu5Zue6LCD77yM5Yig6Zmk5pWw5o2u5ZCO5omn6KGMXHJcbiAgICBvbkVkaXRvckNhbGxCYWNrPzogYW55OyAvL+e8lui+keaMiemSruWbnuiwg++8jOaJk+W8gOW8ueahhuWQjuaJp+ihjFxyXG4gICAgb25BZGRDYWxsQmFjaz86IGFueTsgLy/mt7vliqDmjInpkq7lm57osIPvvIzmiZPlvIDlvLnmoYblkI7miafooYxcclxuICAgIG9uU2VhcmNoQ2FsbEJhY2s/OiBhbnk7IC8v5YiX6KGo5p+l6K+i5oyJ6ZKu5Zue6LCD77yM5omT5byA5by55qGG5ZCO5omn6KGMXHJcbiAgfTtcclxuICBwYWdlVHlwZT86IFwibm9ybWFsXCIgfCBcInRhYnNwYWdlXCI7XHJcbiAgZm9ybVBhZ2VQcm9wcz86IHt9O1xyXG4gIGJ1dHRvbkNsaWNrPzoge1xyXG4gICAgb25BZGQ/OiAoKSA9PiB2b2lkO1xyXG4gICAgb25FZGl0b3I/OiAodmFsdWU/OiBhbnkpID0+IHZvaWQ7XHJcbiAgICBvblNlYXJjaD86ICh2YWx1ZT86IGFueSkgPT4gdm9pZDtcclxuICAgIG9uRGVsZXRlPzogKHZhbHVlPzogYW55KSA9PiB2b2lkO1xyXG4gIH07XHJcbiAgcGVybWlzc2lvbj86IHtcclxuICAgIGhhcz86IGJvb2xlYW47XHJcbiAgICBtZW51Q29kZT86IHN0cmluZztcclxuICB9O1xyXG4gIHJlcXVlc3RQYXJhbXM/OiB7XHJcbiAgICAvL+mcgOimgemineWkluS8oOeahOWbuuWumuivt+axguWPguaVsFxyXG4gICAgYWRkUGFyYW1zPzogT2JqZWN0OyAvL+aWsOWinuWbuuWumuWPguaVsFxyXG4gICAgZWRpdG9yUGFyYW1zPzogT2JqZWN0OyAvL+e8lui+keWbuuWumuWPguaVsFxyXG4gICAgcXVlcnlQYXJhbXM/OiBPYmplY3Q7IC8v5p+l6K+i5Zu65a6a5Y+C5pWwXHJcbiAgICBkZWxldGVQYXJhbXM/OiBPYmplY3Q7IC8v5Yig6Zmk5Zu65a6a5Y+C5pWwXHJcbiAgfTtcclxuICByZXF1ZXN0VXJscz86IHtcclxuICAgIGFkZFVybD86IHN0cmluZzsgLy/mlrDlop51cmxcclxuICAgIGVkaXRvclVybD86IHN0cmluZzsgLy/nvJbovpF1cmxcclxuICAgIGRlbGV0ZVVybD86IHN0cmluZzsgLy/liKDpmaR1cmxcclxuICB9O1xyXG4gIGZ1bmNzPzogYW55O1xyXG4gIHJlcXVlc3RDb25maWc/OiBhbnk7XHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5jbGFzcyBCYXNlUGFnZSBleHRlbmRzIFB1cmVDb21wb25lbnQ8TlNDQmFzZUJhZ2VQcm9wcywgYW55PiB7XHJcbiAgdGFibGVSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHRyZWVSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHNlYXJjaFJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgZWRpdG9yUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBwYWdlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBwYWdlQ29udGVudFJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgZGF0ZUZvcm1hdCA9IHt9IGFzIGFueTtcclxuICBjb25zdHJ1Y3Rvcihwcm9wczogYW55KSB7XHJcbiAgICBzdXBlcihwcm9wcyk7XHJcbiAgICBsZXQgeyBzdG9yZVByZWZpeCB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgdHlwZSA9IGdldFN0b3JhZ2UoXHJcbiAgICAgIHN0b3JlUHJlZml4ID8gc3RvcmVQcmVmaXggKyBcIi1cIiArIFwiZm9ybVR5cGVcIiA6IFwiZm9ybVR5cGVcIlxyXG4gICAgKTtcclxuICAgIHR5cGUgPSB0eXBlPy5jb250ZW50O1xyXG4gICAgbGV0IHNpemUgPSBnZXRTdG9yYWdlKFxyXG4gICAgICBzdG9yZVByZWZpeCA/IHN0b3JlUHJlZml4ICsgXCItXCIgKyBcInRhYmxlU2l6ZVwiIDogXCJ0YWJsZVNpemVcIlxyXG4gICAgKTtcclxuICAgIHNpemUgPSBzaXplPy5jb250ZW50O1xyXG4gICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgdHlwZTogXCJhZGRcIixcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBbXSxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogW10sXHJcbiAgICAgIHRyZWVTZWxlY3RlZEtleTogXCJcIixcclxuICAgICAgZXhwYW5kOiBmYWxzZSxcclxuICAgICAgZm9ybVR5cGU6IHR5cGUgfHwgXCJtb2RhbFwiLFxyXG4gICAgICB0YWJsZVNpemU6IHNpemUgfHwgXCJkZWZhdWx0XCIsXHJcbiAgICAgIHRyZWVTZWFyY2hQcmFtczoge30sXHJcbiAgICAgIHBvcG9wZW5zOiB7fSxcclxuICAgICAgbW9yZU9wZW46IGZhbHNlLFxyXG4gICAgICBlbGVtZW50SGVpZ2h0OiAwLFxyXG4gICAgICBwZXJtaXNzaW9uQnV0dG9uczogW10sXHJcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7fSxcclxuICAgIH07XHJcbiAgfVxyXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgY29uc3QgeyBpbml0RGF0YSwgcGVybWlzc29uID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBlbGVtZW50SGVpZ2h0ID0gdGhpcy5wYWdlQ29udGVudFJlZi5jdXJyZW50Py5jbGllbnRIZWlnaHQ7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgZWxlbWVudEhlaWdodCxcclxuICAgIH0pO1xyXG4gICAgaW5pdERhdGEgJiYgaW5pdERhdGEoKTtcclxuICB9XHJcbiAgY29tcG9uZW50RGlkVXBkYXRlKCkge1xyXG4gICAgY29uc3QgZWxlbWVudEhlaWdodCA9IHRoaXMucGFnZUNvbnRlbnRSZWYuY3VycmVudD8uY2xpZW50SGVpZ2h0O1xyXG4gICAgaWYgKGVsZW1lbnRIZWlnaHQgPiB0aGlzLnN0YXRlLmVsZW1lbnRIZWlnaHQpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgZWxlbWVudEhlaWdodCxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNldFNlYXJjaFBhcmFtcyhwYXJhbXMsIGNhbGxCYWNrKSB7XHJcbiAgICB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5zZXRTZWFyY2hQYXJhbXMocGFyYW1zKTtcclxuICAgIGNhbGxCYWNrICYmIGNhbGxCYWNrKHBhcmFtcyk7XHJcbiAgfVxyXG4gIGRvU3VibWl0KGRhdGEsIGxhYmVsID0gXCLnvJbovpFcIikge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uZG9TdWJtaXQoZGF0YSwgbGFiZWwpO1xyXG4gIH1cclxuXHJcbiAgb25TZWxlY3QgPSAoY2hlY2tlZFRyZWVLZXlzOiBhbnkpID0+IHtcclxuICAgIGNvbnN0IHsgbmFtZSwgdXNlclR5cGUsIGFjY291bnQgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHsgbmFtZSwgdXNlclR5cGUsIGFjY291bnQsIGRlcHRJZDogY2hlY2tlZFRyZWVLZXlzWzBdIH07XHJcbiAgICBpZiAodGhpcy5wcm9wcy5vblNlYXJjaCkge1xyXG4gICAgICB0aGlzLnByb3BzLm9uU2VhcmNoKHZhbHVlKTtcclxuICAgIH1cclxuICAgIC8vIHRoaXMudGFibGVMb2FkKHZhbHVlKTtcclxuICB9O1xyXG5cclxuICAvL+aYvuekuuihqOWNlVxyXG4gIHNob3dGb3JtKHZhbHVlPzogYW55LCBlZGl0b3JmbGFnID0gXCJhZGRcIiwgY2FsbEJhY2s/OiBhbnkpIHtcclxuICAgIGxldCBuZXdWYWx1ZSA9IHZhbHVlID8geyAuLi52YWx1ZSB9IDogbnVsbDtcclxuICAgIHRoaXMuZWRpdG9yUmVmPy5jdXJyZW50Py5zaG93KG5ld1ZhbHVlLCBlZGl0b3JmbGFnLCBjYWxsQmFjayk7XHJcbiAgfVxyXG5cclxuICAvL+WFs+mXreihqOWNlVxyXG4gIGhpZGVGb3JtKCkge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uaGlkZUZvcm0oKTtcclxuICB9XHJcblxyXG4gIHNldExvYWRpbmcobG9hZGluZzogYm9vbGVhbikge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uc2V0TG9hZGluZyhsb2FkaW5nKTtcclxuICB9XHJcblxyXG4gIHNldEVkaXRGb3JtVmFsdWVzKHZhbHVlLCB0eXBlID0gXCLnvJbovpFcIikge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uc2V0Rm9ybVZhbHVlKHZhbHVlLCB0eXBlKTtcclxuICB9XHJcblxyXG4gIGdldEVkaXRGb3JtVmFsdWVzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LmdldEZvcm1WYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgLy/mibnph4/liKDpmaRcclxuICBvbkRlbGV0ZShkYXRhPzogYW55KSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGRlbGV0ZVVybCxcclxuICAgICAgb25EZWxldGUsXHJcbiAgICAgIGRlbGV0ZVBhcmFtcyA9IHt9LFxyXG4gICAgICBkZWxldGVQb3NpdGlvbiA9IFwidG9vbGJhclwiLFxyXG4gICAgICBidXR0b25DbGljayA9IHt9LFxyXG4gICAgICByZXF1ZXN0UGFyYW1zID0ge30sXHJcbiAgICAgIHJlcXVlc3RVcmxzID0ge30sXHJcbiAgICAgIHJlcXVlc3RDb25maWcgPSB7fSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIGNvbnN0IHNlbGVjdGVkUm93S2V5cyA9IHRoaXMudGFibGVSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dLZXlzKCk7XHJcbiAgICBjb25zdCBzZWxlY3RlZFJvd0RhdGFzID0gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5nZXRTZWxlY3RlZFJvd0RhdGFzKCk7XHJcbiAgICBsZXQgdXJsID0gcmVxdWVzdFVybHMuZGVsZXRlVXJsID8gcmVxdWVzdFVybHMuZGVsZXRlVXJsIDogZGVsZXRlVXJsO1xyXG4gICAgbGV0IHBhcmFtczogYW55ID0gcmVxdWVzdFBhcmFtcy5kZWxldGVQYXJhbXNcclxuICAgICAgPyByZXF1ZXN0UGFyYW1zLmRlbGV0ZVBhcmFtc1xyXG4gICAgICA6IGRlbGV0ZVBhcmFtcztcclxuICAgIGlmIChkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIikge1xyXG4gICAgICBpZiAoc2VsZWN0ZWRSb3dLZXlzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgbWVzc2FnZS53YXJuaW5nKFwi6K+36YCJ5oup6KaB5Yig6Zmk55qE5pWw5o2u77yBXCIpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgTW9kYWwuY29uZmlybSh7XHJcbiAgICAgIGNvbnRlbnQ6IFwi5piv5ZCm56Gu6K6k5Yig6Zmk5omA6YCJ6aG577yfXCIsXHJcbiAgICAgIC8vIGNlbnRlcmVkOnRydWUsXHJcbiAgICAgIG9uT2s6ICgpID0+IHtcclxuICAgICAgICBpZiAoYnV0dG9uQ2xpY2sub25EZWxldGUpIHtcclxuICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICBidXR0b25DbGljay5vbkRlbGV0ZSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICByZWNvcmQ6IGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiID8gc2VsZWN0ZWRSb3dEYXRhcyA6IGRhdGEsXHJcbiAgICAgICAgICAgICAgaWRzOiBkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIiA/IHNlbGVjdGVkUm93S2V5cyA6IGRhdGE/LmlkLFxyXG4gICAgICAgICAgICAgIGZ1bmNzOiB0aGlzLnByb3BzLmZ1bmNzLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAob25EZWxldGUpIHtcclxuICAgICAgICAgIG9uRGVsZXRlICYmXHJcbiAgICAgICAgICAgIG9uRGVsZXRlKGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiID8gc2VsZWN0ZWRSb3dLZXlzIDogZGF0YSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdXJsKSB7XHJcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1cmzkuI3og73kuLrnqbrvvIFcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHsgZGF0YTogZGF0YVBhcmFtcyA9IHt9LCAuLi5vdGhlclBhcmFtcyB9ID0gcGFyYW1zO1xyXG4gICAgICAgIGNvbnN0IGRlZmF1bHRQYXJhbXMgPSB7XHJcbiAgICAgICAgICBtZXRob2Q6IFwicG9zdFwiLFxyXG4gICAgICAgICAgYXV0b1ByZWZpeDogdHJ1ZSxcclxuICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICBpZHM6IGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiID8gc2VsZWN0ZWRSb3dLZXlzLmpvaW4oKSA6IGRhdGEuaWQsXHJcbiAgICAgICAgICAgIC4uLmRhdGFQYXJhbXMsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLi4ucmVxdWVzdENvbmZpZyxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGxldCBmaW5hbFBhcmFtcyA9IHt9IGFzIGFueTtcclxuICAgICAgICBmaW5hbFBhcmFtcyA9IHsgLi4uZGVmYXVsdFBhcmFtcywgLi4ub3RoZXJQYXJhbXMgfTtcclxuICAgICAgICByZXF1ZXN0KHVybCwge1xyXG4gICAgICAgICAgLi4uZmluYWxQYXJhbXMsXHJcbiAgICAgICAgfSlcclxuICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXM6IGFueSkge1xyXG4gICAgICAgICAgICBjb25zdCB7IGNvZGUgfSA9IHJlcztcclxuICAgICAgICAgICAgaWYgKGNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgIG1lc3NhZ2Uuc3VjY2VzcyhcIuWIoOmZpOaIkOWKn++8gVwiKTtcclxuICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBfdGhpcy5zZWFyY2hSZWY/LmN1cnJlbnQ/LmdldFNlYXJjaFZhbHVlcygpO1xyXG4gICAgICAgICAgICAgIF90aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vbkRlbGV0ZUNhbGxCYWNrICYmXHJcbiAgICAgICAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgX3RoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uRGVsZXRlQ2FsbEJhY2ssXHJcbiAgICAgICAgICAgICAgICAgIHsgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmIH0sXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgX3RoaXMudGFibGVMb2FkKHZhbHVlKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBtZXNzYWdlLmVycm9yKFwi5Yig6Zmk5aSx6LSl77yBXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcjogYW55KSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3JcIiwgZXJyb3IpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgdGFibGVMb2FkKHBhcmFtczogYW55LCByZXF1ZXN0Q29uZmlnID0ge30pIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgcmVxdWVzdENvbmZpZzogZGVmYXVsdFJlcXVlc3RDb25maWcgPSB7fSxcclxuICAgICAgcmVxdWVzdFBhcmFtcyA9IHt9LFxyXG4gICAgICB0YWJsZVByb3BzID0ge30sXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgc3RvcmU6IHRhYmxlU3RvcmUgfSA9IHRhYmxlUHJvcHM7XHJcbiAgICBsZXQgcXVlcnlQYXJhbXM6IGFueSA9IHRoaXMuY29udmVydFF1ZXJ5UGFyYW1zKClcclxuICAgIGxldCBkYXRhID0gcXVlcnlQYXJhbXMuZGF0YSB8fCBxdWVyeVBhcmFtcy5wYXJhbXMgfHwge307XHJcbiAgICBsZXQgZmluYWxQYXJhbXMgPSB7XHJcbiAgICAgIC4uLmRhdGEsXHJcbiAgICAgIC4uLnRhYmxlU3RvcmUucmVxdWVzdENvbmZpZz8ucGFyYW1zLFxyXG4gICAgICAuLi5wYXJhbXMsXHJcbiAgICB9O1xyXG4gICAgY29uc3QgeyByZXF1ZXN0Q29uaWc6IHN0b3JlQ29uZmlnID0ge30gfSA9IHRhYmxlU3RvcmU7XHJcbiAgICBjb25zdCB7IHBhcmFtczogc3RvcmVQYXJhbXMgPSB7fSwgLi4ub3RoZXJTdG9yZUNvbmZpZyB9ID0gc3RvcmVDb25maWc7XHJcbiAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlLmxvYWQoe1xyXG4gICAgICAuLi5kZWZhdWx0UmVxdWVzdENvbmZpZyxcclxuICAgICAgLi4ub3RoZXJTdG9yZUNvbmZpZyxcclxuICAgICAgLi4ucmVxdWVzdENvbmZpZyxcclxuICAgICAgcGFyYW1zOiB7IC4uLnN0b3JlUGFyYW1zLCAuLi5maW5hbFBhcmFtcyB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8v5p+l6K+iXHJcbiAgb25TZWFyY2gocGFyYW1zKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIG9uU2VhcmNoLFxyXG4gICAgICBvbkNhbGxCYWNrcyxcclxuICAgICAgcmVxdWVzdFBhcmFtcyA9IHt9LFxyXG4gICAgICB0YWJsZVByb3BzID0ge30sXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgc3RvcmU6IHRhYmxlU3RvcmUgfSA9IHRhYmxlUHJvcHM7XHJcbiAgICBsZXQgcXVlcnlQYXJhbXM6IGFueSA9IHRoaXMuY29udmVydFF1ZXJ5UGFyYW1zKClcclxuICAgIGxldCBkYXRhID0gcXVlcnlQYXJhbXMuZGF0YSB8fCBxdWVyeVBhcmFtcy5wYXJhbXMgfHwge307XHJcbiAgICBsZXQgZmluYWxQYXJhbXMgPSB7XHJcbiAgICAgIC4uLmRhdGEsXHJcbiAgICAgIC4uLnRhYmxlU3RvcmUucmVxdWVzdENvbmZpZz8ucGFyYW1zLFxyXG4gICAgICAuLi5wYXJhbXMsXHJcbiAgICB9O1xyXG4gICAgaWYgKG9uU2VhcmNoKSB7XHJcbiAgICAgIG9uU2VhcmNoKGZpbmFsUGFyYW1zKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKG9uU2VhcmNoKSB7XHJcbiAgICAgIG9uU2VhcmNoKHsgLi4uZmluYWxQYXJhbXMsIC4uLnRoaXMuc3RhdGUudHJlZVNlYXJjaFByYW1zIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnRhYmxlTG9hZCh7IC4uLmZpbmFsUGFyYW1zLCAuLi50aGlzLnN0YXRlLnRyZWVTZWFyY2hQcmFtcyB9KTtcclxuICAgIG9uQ2FsbEJhY2tzPy5vblF1ZXJ5Q2FsbEJhY2sgJiZcclxuICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25RdWVyeUNhbGxCYWNrLFxyXG4gICAgICAgIHsgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLCBwYXJhbXM6IHBhcmFtcyB9LFxyXG4gICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgKTtcclxuICB9XHJcbiAgLy/ooajmoLzph43mlrDliqDovb1cclxuICB0YWJsZVJlbG9hZChwYXJhbXMgPSB7fSwgYXV0b0xvYWQgPSB0cnVlKSB7XHJcbiAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlPy5yZWxvYWQoe1xyXG4gICAgICBjYWxsYmFjazogKHJlcykgPT4ge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGF1dG9Mb2FkICYmXHJcbiAgICAgICAgICByZXM/LmRhdGE/LnJlY29yZHM/Lmxlbmd0aCA9PSAwICYmXHJcbiAgICAgICAgICB0aGlzLnN0YXRlLmN1cnJlbnRQYWdlICE9PSAxXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlPy5yZWxvYWQoe1xyXG4gICAgICAgICAgICBwYXJhbXM6IHsgY3VycmVudDogMSwgLi4ucGFyYW1zIH0sXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgdHJlZUxvYWQocGFyYW1zOiBhbnksIHJlcXVlc3RDb25maWcgPSB7fSkge1xyXG4gICAgY29uc3QgeyByZXF1ZXN0Q29uZmlnOiBkZWZhdWx0UmVxdWVzdENvbmZpZyA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgdGhpcy50cmVlUmVmLmN1cnJlbnQ/LnN0b3JlLmxvYWQoe1xyXG4gICAgICAuLi5kZWZhdWx0UmVxdWVzdENvbmZpZyxcclxuICAgICAgLi4ucmVxdWVzdENvbmZpZyxcclxuICAgICAgcGFyYW1zOiBwYXJhbXMsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRSb3dLZXlzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dLZXlzKCk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93RGF0YXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5nZXRTZWxlY3RlZFJvd0RhdGFzKCk7XHJcbiAgfVxyXG4gIHNldFNlbGVjdGVkUm93S2V5cyhkYXRhOiBBcnJheTxTdHJpbmcgfCBOdW1iZXI+KSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zZXRTZWxlY3RlZFJvd0tleXMoZGF0YSk7XHJcbiAgfVxyXG4gIHNldFNlbGVjdGVkUm93RGF0YXMoZGF0YTogQXJyYXk8T2JqZWN0Pikge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8uc2V0U2VsZWN0ZWRSb3dEYXRhcyhkYXRhKTtcclxuICB9XHJcbiAgcmVzZXRTZWxlY3RlZFJvd0tleXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5yZXNldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VhcmNoVmFsdWVzKCkge1xyXG4gICAgY29uc3QgZnJvbVZhbHVlID0gdGhpcy5zZWFyY2hSZWY/LmN1cnJlbnQ/LmdldFNlYXJjaFZhbHVlcygpO1xyXG4gICAgcmV0dXJuIHsgLi4uZnJvbVZhbHVlLCAuLi50aGlzLnN0YXRlLnRyZWVTZWFyY2hQcmFtcyB9O1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2hpbGRyZW5EYXRhKGRhdGEsIGtleXMgPSBbXSkge1xyXG4gICAgY29uc3QgeyB0YWJsZVByb3BzIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyByb3dLZXkgPSBcImlkXCIgfSA9IHRhYmxlUHJvcHM7XHJcbiAgICBsZXQgcmVzS2V5ID0gW107XHJcbiAgICBsZXQga2V5ID0gXCJcIjtcclxuICAgIGlmIChkYXRhLmNoaWxkTm9kZXMpIHtcclxuICAgICAgY29uc3QgY2hpbGRyZW4gPSBkYXRhLmNoaWxkTm9kZXM7XHJcbiAgICAgIGNoaWxkcmVuLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgICBpZiAodHlwZW9mIHJvd0tleSA9PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICAgIGtleSA9IHJvd0tleShpdGVtKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAga2V5ID0gaXRlbVtyb3dLZXldO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXRlbS5jaGlsZE5vZGVzKSB7XHJcbiAgICAgICAgICB0aGlzLmdldENoaWxkcmVuRGF0YShpdGVtLmNoaWxkTm9kZXMsIGtleXMpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXNLZXkgPSBbLi4ua2V5cywga2V5XTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmVzS2V5ID0gWy4uLmtleXMsIGtleV07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzS2V5O1xyXG4gIH1cclxuXHJcbiAgcmVuZGVyVG9vbEJ1dHRvbnModG9vbGJ1dHRvbnM6IGFueSwgdG9vbGJhckZsYWcpIHtcclxuICAgIGNvbnN0IGZsYWcgPSB0b29sYnV0dG9ucy5sZW5ndGggPiA1O1xyXG4gICAgY29uc3QgeyBzaG93U2VhcmNoID0gdHJ1ZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGNvbnRlbnQgPSB0b29sYnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgaWNvbiwgc2hvdywgLi4ucGFyYW1zIH0gPSBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAoaW5kZXggPiAzKSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvclwiKSxcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtY29udGVudC1pdGVtXCIpXHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICBtb3JlT3BlbjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljaygpO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgICAgICB0eXBlPXtcImxpbmtcIn1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWljb25cIil9PlxyXG4gICAgICAgICAgICAgICAge2ljb259XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRleHRcIil9PlxyXG4gICAgICAgICAgICAgICAge2NoaWxkcmVufVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRvb2wtYnV0dG9uc1wiKSl9XHJcbiAgICAgICAgc3R5bGU9e3sgbWFyZ2luTGVmdDogMCB9fVxyXG4gICAgICA+XHJcbiAgICAgICAge3Rvb2xidXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZmxhZykge1xyXG4gICAgICAgICAgICBpZiAoaW5kZXggPCA0KSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcclxuICAgICAgICAgICAgICAgICAgICBtYXJnaW5SaWdodDogMTIsXHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIHtpdGVtfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChpbmRleCA9PSA0KSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIDxQb3BvdmVyXHJcbiAgICAgICAgICAgICAgICAgIGNvbnRlbnQ9e2NvbnRlbnR9XHJcbiAgICAgICAgICAgICAgICAgIHRpdGxlPXtudWxsfVxyXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgICBvcGVuPXt0aGlzLnN0YXRlLm1vcmVPcGVufVxyXG4gICAgICAgICAgICAgICAgICBvbk9wZW5DaGFuZ2U9eyhvcGVuKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wZW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb3JlT3BlbjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW9yZU9wZW46IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgLy8gb3Blbj17dHJ1ZX1cclxuICAgICAgICAgICAgICAgIC8vIG92ZXJsYXlDbGFzc05hbWU9e3N0eWxlc1sncG9wLWJveCddfVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIHR5cGU9XCJwcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAg5pu05aSaIDxEb3duT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgc3R5bGU9e3tcclxuICAgICAgICAgICAgICAgICAgbWFyZ2luUmlnaHQ6IGluZGV4ID09IHRvb2xidXR0b25zLmxlbmd0aCAtIDEgPyAwIDogMTIsXHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHtpdGVtfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG4gIHJlbmRlckNsb3VtbkJ1dHRvbihjb2x1bW5CdXR0b25zOiBhbnksIHJvd1JlY29yZDogYW55KSB7XHJcbiAgICBjb25zdCB7IGFjdGlvblByb3BzLCB0YWJsZVByb3BzID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGJhc2VBY3Rpb25Db2x1bW4gfSA9IGNvbmZpZygpO1xyXG4gICAgY29uc3QgbmV3QnV0dG9ucyA9IFtdO1xyXG4gICAgY29uc3QgeyByb3dLZXkgPSBcImlkXCIgfSA9IHRhYmxlUHJvcHM7XHJcblxyXG4gICAgbGV0IGtleSA9IFwiXCI7XHJcbiAgICBpZiAodHlwZW9mIHJvd0tleSA9PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAga2V5ID0gcm93S2V5KHJvd1JlY29yZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBrZXkgPSByb3dSZWNvcmRbcm93S2V5XTtcclxuICAgIH1cclxuICAgIGxldCBzaG93SWNvbiA9IHRydWU7XHJcbiAgICBpZiAoYWN0aW9uUHJvcHM/LnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGVsc2UgaWYgKGJhc2VBY3Rpb25Db2x1bW4uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG4gICAgY29sdW1uQnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgaWNvbiwgcmVjb3JkU2hvdywgLi4ucGFyYW1zIH0gPVxyXG4gICAgICAgIGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChyZWNvcmRTaG93KSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiByZWNvcmRTaG93ID09IFwic3RyaW5nXCIpIHtcclxuXHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCBldmVudE9wdGlvbiA9IHsgcmVjb3JkOiByb3dSZWNvcmQsIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZiwgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MgfTtcclxuICAgICAgICAgICAgY29uc3QgVXRpbHMgPSB7IC4uLnRoaXMucHJvcHMuVWl0bHMgfVxyXG4gICAgICAgICAgICBsZXQgZnVuYyA9IG5ldyBGdW5jdGlvbihcImV2ZW50T3B0aW9uLFV0aWxzXCIsIHJlY29yZFNob3cpO1xyXG4gICAgICAgICAgICBjb25zdCBzaG93ID0gZnVuYyhldmVudE9wdGlvbiwgVXRpbHMpO1xyXG4gICAgICAgICAgICBzaG93ICYmIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgbGV0IHJlY29yZCA9IHJvd1JlY29yZFxyXG4gICAgICAgICAgICBpZiAoZXZhbChyZWNvcmRTaG93KSkge1xyXG4gICAgICAgICAgICAgIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgLy8gICByZWNvcmRTaG93LFxyXG4gICAgICAgICAgLy8gICB7IHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZiwgcmVjb3JkOiByZWNvcmQsIH0sXHJcbiAgICAgICAgICAvLyAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgIC8vICk7XHJcbiAgICAgICAgICAvLyBpZiAoZXZhbChyZWNvcmRTaG93KSkge1xyXG4gICAgICAgICAgLy8gICBuZXdCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAvLyB9XHJcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcmVjb3JkU2hvdyA9PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICAgIGNvbnN0IHNob3cgPSByZWNvcmRTaG93KHJvd1JlY29yZCk7XHJcbiAgICAgICAgICBzaG93ICYmIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGxldCBudW1iZXIgPSBhY3Rpb25Qcm9wcz8uYnV0dG9uTnVtYmVyXHJcbiAgICAgID8gYWN0aW9uUHJvcHM/LmJ1dHRvbk51bWJlclxyXG4gICAgICA6IGJhc2VBY3Rpb25Db2x1bW4/LmJ1dHRvbk51bWJlclxyXG4gICAgICAgID8gYmFzZUFjdGlvbkNvbHVtbj8uYnV0dG9uTnVtYmVyXHJcbiAgICAgICAgOiAzO1xyXG4gICAgbGV0IGZsYWcgPSBmYWxzZTtcclxuICAgIGlmIChudW1iZXIgPT0gXCJhbGxcIikge1xyXG4gICAgICBmbGFnID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmbGFnID0gbmV3QnV0dG9ucy5sZW5ndGggPiBudW1iZXI7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IG5ld0J1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIHJlY29yZFNob3csIGljb24sIHNob3csIC4uLnBhcmFtcyB9ID1cclxuICAgICAgICBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAoaW5kZXggPiBOdW1iZXIobnVtYmVyKSAtIDEpIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpLFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1jb250ZW50LWl0ZW1cIilcclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIGxldCBkYXRhID0geyAuLi50aGlzLnN0YXRlLnBvcG9wZW5zIH07XHJcbiAgICAgICAgICAgICAgZGF0YVtyb3dSZWNvcmQuaWRdID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICBwb3BvcGVuczogZGF0YSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2socm93UmVjb3JkKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgICAgdHlwZT17XCJsaW5rXCJ9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHtzaG93SWNvbiAhPT0gZmFsc2UgJiYgKFxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWljb25cIil9PlxyXG4gICAgICAgICAgICAgICAge2ljb259XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIG5ld0J1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIHJlY29yZFNob3csIGljb24sIC4uLnBhcmFtcyB9ID1cclxuICAgICAgICBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAoZmxhZykge1xyXG4gICAgICAgIGlmIChpbmRleCA8IG51bWJlcikge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIiksIHtcclxuICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yLWZpcnN0XCIpXTogaW5kZXggPT09IDAsXHJcbiAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2socm93UmVjb3JkKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIGljb249e2ljb259XHJcbiAgICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgICAgICB0eXBlPXtcImxpbmtcIn1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHtzaG93SWNvbiAhPT0gZmFsc2UgJiYgKFxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaWNvblwiKX0+XHJcbiAgICAgICAgICAgICAgICAgIHtpY29ufVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGV4dFwiKX0+XHJcbiAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbmRleCA9PSBudW1iZXIpIHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxQb3BvdmVyXHJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICB0aXRsZT17bnVsbH1cclxuICAgICAgICAgICAgICBjb250ZW50PXtjb250ZW50fVxyXG4gICAgICAgICAgICAgIHRyaWdnZXI9e1tcImNsaWNrXCJdfVxyXG4gICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgb3Blbj17dGhpcy5zdGF0ZS5wb3BvcGVuc1trZXldIHx8IGZhbHNlfVxyXG4gICAgICAgICAgICAgIG9uT3BlbkNoYW5nZT17KG9wZW4pID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChvcGVuKSB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBkYXRhID0geyAuLi50aGlzLnN0YXRlLnBvcG9wZW5zIH07XHJcbiAgICAgICAgICAgICAgICAgIGRhdGFba2V5XSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHBvcG9wZW5zOiBkYXRhLFxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHBvcG9wZW5zOiB7fSxcclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgLy8gb3ZlcmxheUNsYXNzTmFtZT17c3R5bGVzWydwb3AnXX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxhIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvclwiKX0+XHJcbiAgICAgICAgICAgICAgICA8RWxsaXBzaXNPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgPC9Qb3BvdmVyPlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIiksIHtcclxuICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvci1maXJzdFwiKV06IGluZGV4ID09PSAwLFxyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljayhyb3dSZWNvcmQpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgICB0eXBlPVwibGlua1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHtzaG93SWNvbiAhPT0gZmFsc2UgJiYgKFxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWljb25cIil9PlxyXG4gICAgICAgICAgICAgICAge2ljb259XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuICAvL+agkeeCueWHu+S6i+S7tlxyXG4gIHRyZWVTZWxlY3Qoc2VsZWN0ZWRLZXlzOiBhbnksIG9iajogYW55KSB7XHJcbiAgICBsZXQga2V5d29yZCA9IFwiXCI7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHNlYXJjaEtleSA9IFwia2V5XCIsXHJcbiAgICAgIHNlYXJjaEZpZWxkID0gXCJcIixcclxuICAgICAgcGFyYW50U2VsZWN0ID0gdHJ1ZSxcclxuICAgIH0gPSB0aGlzLnByb3BzLnRyZWVQcm9wcztcclxuICAgIGNvbnN0IHsgdHJlZVNlbGVjdGVkS2V5IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgeyBzZWxlY3RlZCwgc2VsZWN0ZWROb2RlcyB9ID0gb2JqO1xyXG5cclxuICAgIGlmIChzZWxlY3RlZCkge1xyXG4gICAgICBrZXl3b3JkID0gc2VsZWN0ZWROb2Rlc1swXS5kYXRhcmVmLmF0dHJpYnV0ZVtzZWFyY2hLZXldO1xyXG4gICAgICBpZiAocGFyYW50U2VsZWN0KSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IHNlbGVjdGVkS2V5c1swXSxcclxuICAgICAgICAgIHRyZWVTZWFyY2hQcmFtczogeyBbc2VhcmNoRmllbGRdOiBrZXl3b3JkIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHNlbGVjdGVkTm9kZXNbMF0uaXNMZWFmIHx8ICFzZWxlY3RlZE5vZGVzWzBdLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICBpZiAoc2VsZWN0ZWRLZXlzWzBdICE9PSB0cmVlU2VsZWN0ZWRLZXkpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgdHJlZVNlbGVjdGVkS2V5OiBzZWxlY3RlZEtleXNbMF0sXHJcbiAgICAgICAgICAgICAgdHJlZVNlYXJjaFByYW1zOiB7IFtzZWFyY2hGaWVsZF06IGtleXdvcmQgfSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IGtleXdvcmQsXHJcbiAgICAgICAgdHJlZVNlYXJjaFByYW1zOiB7fSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5wcm9wcy5vblRyZWVTZWxlY3QpIHtcclxuICAgICAgdGhpcy5wcm9wcy5vblRyZWVTZWxlY3Qoc2VsZWN0ZWRLZXlzLCBvYmopO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBmcm9tVmFsdWUgPSB0aGlzLnNlYXJjaFJlZj8uY3VycmVudD8uZ2V0U2VhcmNoVmFsdWVzKCkgfHwge307XHJcbiAgICBzZWFyY2hGaWVsZCAmJiB0aGlzLnRhYmxlTG9hZCh7IC4uLmZyb21WYWx1ZSwgW3NlYXJjaEZpZWxkXToga2V5d29yZCB9KTtcclxuICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/LnRyZWVTZWxlY3RDYWxsQmFjayAmJlxyXG4gICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy50cmVlU2VsZWN0Q2FsbEJhY2ssXHJcbiAgICAgICAgeyBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsIHNlbGVjdGVkS2V5czogc2VsZWN0ZWRLZXlzLCBvYmo6IG9iaiB9LFxyXG4gICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgKTtcclxuICAgIC8vIHV0aWxzLmNhbGxiYWNrKHRoaXMucHJvcHMub25DYWxsQmFja3M/LnRyZWVTZWxlY3RDYWxsQmFjaywgdGhpcywgW1xyXG4gICAgLy8gICBzZWxlY3RlZEtleXMsXHJcbiAgICAvLyAgIG9iaixcclxuICAgIC8vIF0pO1xyXG4gIH1cclxuICByZXNldFNlYXJjaCgpIHtcclxuICAgIHRoaXMuc2VhcmNoUmVmLmN1cnJlbnQ/LnJlc2V0RmllbGRzKCk7XHJcbiAgfVxyXG4gIGdldFRleHQocHJvcHMsIHRleHQpIHtcclxuICAgIGxldCBuZXdUZXh0ID0gdGV4dDtcclxuICAgIGlmIChwcm9wcz8uZGF0YSAmJiBwcm9wcz8uZGF0YT8ubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgZGF0YSA9IHByb3BzLmRhdGE7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YT8ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoZGF0YVtpXS52YWx1ZSA9PSB0ZXh0KSB7XHJcbiAgICAgICAgICBuZXdUZXh0ID0gZGF0YVtpXS5sYWJlbDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBuZXdUZXh0O1xyXG4gIH1cclxuICBzZXRUYWJsZURhdGEoZGF0YSkge1xyXG4gICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZT8uc2V0RGF0YShkYXRhKTtcclxuICB9XHJcbiAgc2V0VHJlZURhdGEoZGF0YSkge1xyXG4gICAgdGhpcy50cmVlUmVmLmN1cnJlbnQ/LnN0b3JlPy5zZXREYXRhKGRhdGEpO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZEtleSA9IChzZWxlY3RlZCkgPT4ge1xyXG4gICAgbGV0IHJlcyA9IFtdO1xyXG4gICAgZm9yIChsZXQga2V5IGluIHNlbGVjdGVkKSB7XHJcbiAgICAgIGNvbnN0IGtleXMgPSBzZWxlY3RlZFtrZXldO1xyXG4gICAgICBpZiAoa2V5cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgcmVzID0gWy4uLnJlcywgLi4ua2V5c107XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXM7XHJcbiAgfTtcclxuXHJcbiAgY29udmVydFF1ZXJ5UGFyYW1zKCkge1xyXG4gICAgY29uc3QgeyByZXF1ZXN0UGFyYW1zID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBsZXQgcXVlcnlQYXJhbXM6IGFueSA9IHJlcXVlc3RQYXJhbXMucXVlcnlQYXJhbXM7XHJcbiAgICBpZiAocXVlcnlQYXJhbXMgJiYgdHlwZW9mIHF1ZXJ5UGFyYW1zID09IFwic3RyaW5nXCIpIHtcclxuICAgICAgY29uc3QgVXRpbHMgPSB0aGlzLnByb3BzLlV0aWxzIHx8IHt9O1xyXG4gICAgICBsZXQgZnVuYyA9IG5ldyBGdW5jdGlvbihcIlV0aWxzXCIsIHF1ZXJ5UGFyYW1zKTtcclxuICAgICAgbGV0IGNvbnZlclBhcmFtcyA9IGZ1bmMoVXRpbHMpO1xyXG4gICAgICBxdWVyeVBhcmFtcyA9IGNvbnZlclBhcmFtcztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHF1ZXJ5UGFyYW1zID0gcXVlcnlQYXJhbXMgfHwge307XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcXVlcnlQYXJhbXM7XHJcbiAgfVxyXG5cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGNvbHVtbnMgPSBbXSxcclxuICAgICAgc2hvd1NlYXJjaCA9IHRydWUsXHJcbiAgICAgIGNoaWxkcmVuLFxyXG4gICAgICBzdWJtaXRVcmwgPSBcIlwiLFxyXG4gICAgICB0YWJsZVByb3BzID0ge30sXHJcbiAgICAgIHRyZWVQcm9wcyA9IHt9LFxyXG4gICAgICBmb3JtUHJvcHMgPSB7fSxcclxuICAgICAgZm9ybVBhZ2VQcm9wcyA9IHt9LFxyXG4gICAgICBzaG93TGVmdCA9IGZhbHNlLFxyXG4gICAgICBzdWJtaXRQYXJhbXMgPSB7fSxcclxuICAgICAgc2hvd1Rvb2xCdXR0b24gPSB0cnVlLFxyXG4gICAgICBidXR0b25zID0gW10sXHJcbiAgICAgIGVkaXRvckZvcm0gPSB0cnVlLFxyXG4gICAgICBvblNob3dGb3JtLFxyXG4gICAgICBmb3JtQ2hhbmdlVmFsaWQgPSB0cnVlLFxyXG4gICAgICBjbGFzc05hbWUsXHJcbiAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbiA9IFwiYnV0dG9tXCIsXHJcbiAgICAgIGFjdGlvblByb3BzLFxyXG4gICAgICBkZWxldGVQb3NpdGlvbiA9IFwidG9vbGJhclwiLFxyXG4gICAgICBidXR0b25DbGljayA9IHt9LFxyXG4gICAgICBwZXJtaXNzaW9uID0geyBoYXM6IGZhbHNlIH0sXHJcbiAgICAgIHJlcXVlc3RQYXJhbXMgPSB7fSxcclxuICAgICAgcmVxdWVzdFVybHMgPSB7fSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBzdG9yZTogdGFibGVTdG9yZSA9IHt9LFxyXG4gICAgICBmaWx0ZXJDb2x1bW4gPSB0cnVlLFxyXG4gICAgICBhY3Rpb25Db2x1bW4gPSB0cnVlLFxyXG4gICAgICBzaG93Um93U2VsZWN0aW9uID0gdHJ1ZSxcclxuICAgICAgY29sdW1uT3JkZXIgPSB0cnVlLFxyXG4gICAgICBleHBhbmRhYmxlID0ge30sXHJcbiAgICAgIHBhcmFudFNlbGVjdCA9IHRydWUsXHJcbiAgICAgIHRpdGxlOiB0YWJsZVRpdGxlLFxyXG4gICAgICAuLi5vdGhlcnRhYmxlUGFyYW1zXHJcbiAgICB9ID0gdGFibGVQcm9wcztcclxuICAgIGxldCBuZXdUYWJsZVN0b3JlID0geyAuLi50YWJsZVN0b3JlIH1cclxuICAgIGlmIChyZXF1ZXN0UGFyYW1zLnF1ZXJ5UGFyYW1zKSB7XHJcbiAgICAgIGxldCBxdWVyeVBhcmFtczogYW55ID0gdGhpcy5jb252ZXJ0UXVlcnlQYXJhbXMoKTtcclxuICAgICAgbGV0IGRhdGEgPSBxdWVyeVBhcmFtcz8uZGF0YSB8fCBxdWVyeVBhcmFtcz8ucGFyYW1zIHx8IHt9O1xyXG4gICAgICBuZXdUYWJsZVN0b3JlLnJlcXVlc3RDb25maWcgPSB7XHJcbiAgICAgICAgcGFyYW1zOiB7IC4uLmRhdGEsIC4uLm5ld1RhYmxlU3RvcmUucmVxdWVzdENvbmZpZz8ucGFyYW1zIH0sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHN0b3JlOiB0cmVlU3RvcmUgPSB7fSxcclxuICAgICAgc2hvd1NlYXJjaDogdHJlZVNlYXJjaCA9IHRydWUsXHJcbiAgICAgIHRpdGxlQWxpYXMgPSBcInRpdGxlXCIsXHJcbiAgICAgIHRpdGxlOiB0cmVlVGl0bGUsXHJcbiAgICAgIC4uLm90aGVydHJlZVBhcmFtc1xyXG4gICAgfSA9IHRyZWVQcm9wcztcclxuXHJcbiAgICBsZXQgdGFibGVQYXJhbXMgPSB7XHJcbiAgICAgIGZpbHRlckNvbHVtbixcclxuICAgICAgc3RvcmU6IHsgLi4ubmV3VGFibGVTdG9yZSB9LFxyXG4gICAgICAuLi5vdGhlcnRhYmxlUGFyYW1zLFxyXG4gICAgfSBhcyBhbnk7XHJcbiAgICBsZXQgdGFibGVDb2x1bW46IGFueVtdID0gW107XHJcbiAgICBjb25zdCBzZWFyY2hGb3JtczogYW55ID0gW107XHJcbiAgICBjb25zdCBlZGl0b3JGb3JtczogYW55ID0gW107XHJcbiAgICBjb25zdCBkZWZhdWx0VmFsdWU6IGFueSA9IHt9O1xyXG4gICAgY29uc3QgY29sdW1uQnV0dG9uczogYW55ID0gW107XHJcbiAgICBjb25zdCB7IGVsZW1lbnRIZWlnaHQgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBsZXQgcGVybWlzc2lvbkJ1dHRvbnMgPSBbXTtcclxuICAgIGlmIChwZXJtaXNzaW9uLmhhcyAmJiBwZXJtaXNzaW9uLm1lbnVDb2RlKSB7XHJcbiAgICAgIHBlcm1pc3Npb25CdXR0b25zID1cclxuICAgICAgICBnZXRCdXR0b25QZXJtaXNzb25zKHBlcm1pc3Npb24ubWVudUNvZGUpLnBlcm1pc3NvbnMgfHwgW107XHJcbiAgICB9XHJcbiAgICBjb2x1bW5zLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIGxldCB0ZW1wID0geyB3aWR0aDogMTAwLCAuLi5pdGVtIH07XHJcbiAgICAgIGlmICh0ZW1wLnNlYXJjaCA9PT0gdHJ1ZSB8fCB0ZW1wLnNlYXJjaD8uc2hvdyA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIGxldCBwcm9wcyA9IHRlbXAucHJvcHMgPyB7IC4uLnRlbXAucHJvcHMgfSA6IHt9O1xyXG4gICAgICAgIGRlbGV0ZSBwcm9wcy5vbkNoYW5nZTtcclxuICAgICAgICBzZWFyY2hGb3Jtcy5wdXNoKHtcclxuICAgICAgICAgIG5hbWU6IHRlbXAuZmllbGQgfHwgdGVtcC5kYXRhSW5kZXgsXHJcbiAgICAgICAgICBsYWJlbDogdGVtcC5zZWFyY2g/LmxhYmVsIHx8IHRlbXAudGl0bGUsXHJcbiAgICAgICAgICB0eXBlOiB0ZW1wLnR5cGUsXHJcbiAgICAgICAgICBwcm9wczogcHJvcHMsXHJcbiAgICAgICAgICBsYWJlbENvbDogdGVtcC5zZWFyY2g/LmxhYmVsQ29sLFxyXG4gICAgICAgICAgd3JhcHBlckNvbDogdGVtcC5zZWFyY2g/LndyYXBwZXJDb2wsXHJcbiAgICAgICAgICBydWxlczogdGVtcC5zZWFyY2hSdWxlcyA/IHRlbXAuc2VhcmNoUnVsZXMgOiBbXSxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBkZWxldGUgdGVtcC5zZWFyY2g7XHJcbiAgICAgIHRlbXAuZWRpdG9yICE9PSBmYWxzZSAmJlxyXG4gICAgICAgIGVkaXRvckZvcm1zLnB1c2goe1xyXG4gICAgICAgICAgbmFtZTogdGVtcC5maWVsZCB8fCB0ZW1wLmRhdGFJbmRleCxcclxuICAgICAgICAgIGxhYmVsOiB0ZW1wLnRpdGxlLFxyXG4gICAgICAgICAgcnVsZXM6IHRlbXAucnVsZXMgPyB0ZW1wLnJ1bGVzIDogW10sXHJcbiAgICAgICAgICB0eXBlOiB0ZW1wLnR5cGUsXHJcbiAgICAgICAgICBzcGFuOiB0ZW1wLnNwYW4sXHJcbiAgICAgICAgICBkaWN0TmFtZTogdGVtcC5kaWN0TmFtZSxcclxuICAgICAgICAgIHJlcXVpcmVkOiB0ZW1wLnJlcXVpcmVkLFxyXG4gICAgICAgICAgcHJvcHM6IHsgLi4udGVtcC5wcm9wcyB9LFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRlbXAucHJvcHM/LmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkICYmXHJcbiAgICAgICAgdGVtcC5wcm9wcz8uZGVmYXVsdFZhbHVlICE9PSBudWxsXHJcbiAgICAgICkge1xyXG4gICAgICAgIGNvbnN0IG5hbWUgPSB0ZW1wLmZpZWxkIHx8IHRlbXAuZGF0YUluZGV4O1xyXG4gICAgICAgIGRlZmF1bHRWYWx1ZVtuYW1lXSA9IHRlbXAucHJvcHM/LmRlZmF1bHRWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgICBkZWxldGUgdGVtcC5ydWxlcztcclxuICAgICAgZGVsZXRlIHRlbXAuc3BhbjtcclxuICAgICAgaWYgKHRlbXAuY29sdW1uU2VhcmNoKSB7XHJcbiAgICAgICAgdGVtcC5maWx0ZXJQcm9wcyA9IHtcclxuICAgICAgICAgIHR5cGU6IHRlbXAudHlwZSxcclxuICAgICAgICAgIHByb3BzOiB0ZW1wLnByb3BzLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCB0ZW1wUHJvcCA9IHsgLi4udGVtcC5wcm9wcyB9O1xyXG5cclxuICAgICAgaWYgKHRlbXBQcm9wPy5kYXRhICYmIHRlbXBQcm9wPy5kYXRhPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGVtcCA9IHtcclxuICAgICAgICAgIGVsbGlwc2lzOiB7IHNob3dUaXRsZTogZmFsc2UgfSxcclxuICAgICAgICAgIHJlbmRlcjogKHRleHQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRUZXh0KHRlbXBQcm9wLCB0ZXh0KTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAuLi50ZW1wLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgICAgZGVsZXRlIHRlbXAucHJvcHM7XHJcblxyXG4gICAgICBpZiAodGVtcC5yZW5kZXIgJiYgdHlwZW9mIHRlbXAucmVuZGVyID09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgbGV0IHJlbmRlclN0ciA9IHRlbXAucmVuZGVyXHJcbiAgICAgICAgdGVtcCA9IHtcclxuICAgICAgICAgIC4uLnRlbXAsXHJcbiAgICAgICAgICByZW5kZXI6IChfdGV4dCwgX3JlY29yZCwgX2luZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50T3B0aW9uID0geyB0ZXh0OiBfdGV4dCwgcmVjb3JkOiBfcmVjb3JkLCBpbmRleDogX2luZGV4LCBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyB9XHJcbiAgICAgICAgICAgIGNvbnN0IGZ1bmMgPSBuZXcgRnVuY3Rpb24oJ2V2ZW50T3B0aW9uLFV0aWxzJywgcmVuZGVyU3RyKVxyXG4gICAgICAgICAgICBjb25zdCByZXMgPSBmdW5jKGV2ZW50T3B0aW9uLCB0aGlzLnByb3BzLlV0aWxzKVxyXG4gICAgICAgICAgICByZXR1cm4gcmVzXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0ZW1wLnR5cGUgPT0gXCJVcGxvYWRcIiAmJiB0ZW1wPy5jb2x1bW5TaG93ICE9PSBmYWxzZSkge1xyXG4gICAgICAgIHRlbXAgPSB7XHJcbiAgICAgICAgICByZW5kZXI6IChfdGV4dCwgcmVjb3JkKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlY29yZFt0ZW1wLmRhdGFJbmRleF0pKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgZmlsZXMgPSByZWNvcmRbdGVtcC5kYXRhSW5kZXhdO1xyXG4gICAgICAgICAgICAgIGlmIChmaWxlcy5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9e1wibGlua1wifVxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIG5zY2ZpbGUuZG93bmxvYWQoZmlsZXNbMF0uZmlsZUlkKTtcclxuICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAge2ZpbGVzWzBdPy5maWxlTmFtZX1cclxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoZmlsZXMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9e1wibGlua1wifVxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWxlSWRzID0gW10gYXMgYW55O1xyXG4gICAgICAgICAgICAgICAgICAgICAgZmlsZXMubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVJZHMucHVzaChpdGVtLmZpbGVJZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgIG5zY2ZpbGUuZG93bmxvYWRaaXAoZmlsZUlkcy5qb2luKFwiLFwiKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHtcIuaWh+S7tuS4i+i9vVwifVxyXG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLi4udGVtcCxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0ZW1wLnR5cGUgPT0gXCJJbWFnZVwiICYmIHRlbXA/LmNvbHVtblNob3cgIT09IGZhbHNlKSB7XHJcbiAgICAgICAgdGVtcCA9IHtcclxuICAgICAgICAgIHJlbmRlcjogKF90ZXh0LCByZWNvcmQpID0+IHtcclxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVjb3JkW3RlbXAuZGF0YUluZGV4XSkpIHtcclxuICAgICAgICAgICAgICBjb25zdCBmaWxlcyA9IHJlY29yZFt0ZW1wLmRhdGFJbmRleF07XHJcbiAgICAgICAgICAgICAgaWYgKGZpbGVzLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5zYy1iYXNlcGFnZS10YWJsZS1pbWdcIj5cclxuICAgICAgICAgICAgICAgICAgICB7ZmlsZXNbMF0/LmZpbGVOYW1lfVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChmaWxlcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIHR5cGU9e1wibGlua1wifSBvbkNsaWNrPXsoKSA9PiB7IH19PlxyXG4gICAgICAgICAgICAgICAgICAgIOWbvueJh+afpeeci1xyXG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLi4udGVtcCxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIGRlbGV0ZSB0ZW1wLnR5cGU7XHJcbiAgICAgIGlmICh0ZW1wPy5jb2x1bW5TaG93ICE9PSBmYWxzZSkgdGFibGVDb2x1bW4ucHVzaCh0ZW1wKTtcclxuICAgIH0pO1xyXG4gICAgY29uc3QgdG9vbEJ1dHRvbnM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgeyBiYXNlQWN0aW9uQ29sdW1uIH0gPSBjb25maWcoKTtcclxuICAgIGxldCBzaG93SWNvbiA9IHRydWU7XHJcbiAgICBpZiAoYWN0aW9uUHJvcHM/LnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGVsc2UgaWYgKGJhc2VBY3Rpb25Db2x1bW4uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG4gICAgY29uc3QgYnV0dG9uTWFwID0ge1xyXG4gICAgICAvLyBhZGQ6IHsgbmFtZTogXCLmlrDlop5cIiwgY29kZTogXCJhZGRcIiwgaWNvbjogPFBsdXNPdXRsaW5lZCAvPiB9LFxyXG4gICAgICBlZGl0b3I6IHsgbmFtZTogXCLnvJbovpFcIiwgY29kZTogXCJlZGl0b3JcIiwgaWNvbjogPEVkaXRPdXRsaW5lZCAvPiB9LFxyXG4gICAgICBkZWxldGU6IHsgbmFtZTogXCLliKDpmaRcIiwgY29kZTogXCJkZWxldGVcIiwgaWNvbjogPERlbGV0ZU91dGxpbmVkIC8+IH0sXHJcbiAgICAgIHNlYXJjaDogeyBuYW1lOiBcIuafpeeci1wiLCBjb2RlOiBcInNlYXJjaFwiLCBpY29uOiA8RXllT3V0bGluZWQgLz4gfSxcclxuICAgIH07XHJcbiAgICBjb25zdCByZXR1cm5CdXR0b24gPSAoY29kZSwgc2hvdyA9IFwiXCIpID0+IHtcclxuICAgICAgbGV0IHByb3BzID0ge307XHJcbiAgICAgIGlmIChzaG93KSB7XHJcbiAgICAgICAgcHJvcHMgPSB7IHJlY29yZFNob3c6IHNob3cgfTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIDxCdXR0b25cclxuICAgICAgICAgIG9uQ2xpY2s9eyhyZWNvcmQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY29kZSA9PSBcImRlbGV0ZVwiKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5vbkRlbGV0ZShyZWNvcmQpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGlmIChjb2RlID09IFwiZWRpdG9yXCIgJiYgYnV0dG9uQ2xpY2sub25FZGl0b3IpIHtcclxuICAgICAgICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICBidXR0b25DbGljay5vbkVkaXRvcixcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICAgICAgICByZWNvcmQ6IHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLFxyXG4gICAgICAgICAgICAgICAgICAgIGZ1bmNzOiB0aGlzLnByb3BzLmZ1bmNzLFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29kZSA9PSBcInNlYXJjaFwiICYmIGJ1dHRvbkNsaWNrLm9uU2VhcmNoKSB7XHJcbiAgICAgICAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgYnV0dG9uQ2xpY2sub25TZWFyY2gsXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkOiByZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCxcclxuICAgICAgICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKG9uU2hvd0Zvcm0pIHtcclxuICAgICAgICAgICAgICAgIG9uU2hvd0Zvcm0ocmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsIGNvZGUpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgdGhpcy5zaG93Rm9ybShyZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCwgY29kZSwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IGNhbGxCYWNrID0gY29kZSA9PSBcImVkaXRvclwiID8gdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25FZGl0b3JDYWxsQmFjayA6IHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uU2VhcmNoQ2FsbEJhY2tcclxuICAgICAgICAgICAgICAgIGNhbGxCYWNrICYmIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICBjYWxsQmFjayxcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICAgICAgICByZWNvcmQ6IHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLFxyXG4gICAgICAgICAgICAgICAgICAgIGZ1bmNzOiB0aGlzLnByb3BzLmZ1bmNzLFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgICAgaWNvbj17c2hvd0ljb24gPyBidXR0b25NYXBbY29kZV0uaWNvbiA6IG51bGx9XHJcbiAgICAgICAgICB0eXBlPVwibGlua1wiXHJcbiAgICAgICAgICB7Li4ucHJvcHN9XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge2J1dHRvbk1hcFtjb2RlXT8ubmFtZX1cclxuICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgKTtcclxuICAgIH07XHJcbiAgICBjb25zdCBjaGVja1BlcnNzaW9uID0gKGNvZGUpID0+IHtcclxuICAgICAgaWYgKCFwZXJtaXNzaW9uLmhhcykge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBwZXJtaXNzaW9uQnV0dG9ucy5pbmRleE9mKGNvZGUpID4gLTE7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICBidXR0b25zLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIGlmICgoaXRlbSA9PSBcImFkZFwiIHx8IGl0ZW0uY29kZSA9PSBcImFkZFwiKSAmJiBjaGVja1BlcnNzaW9uKFwiYWRkXCIpKSB7XHJcbiAgICAgICAgdG9vbEJ1dHRvbnMucHVzaChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgdHlwZT17XCJwcmltYXJ5XCJ9XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCB7IG9uU2hvd0Zvcm0sIGJ1dHRvbkNsaWNrID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgICAgICAgICAgaWYgKGJ1dHRvbkNsaWNrPy5vbkFkZCkge1xyXG4gICAgICAgICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgIGJ1dHRvbkNsaWNrLm9uQWRkLFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLFxyXG4gICAgICAgICAgICAgICAgICAgIGZ1bmNzOiB0aGlzLnByb3BzLmZ1bmNzLFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAob25TaG93Rm9ybSkge1xyXG4gICAgICAgICAgICAgICAgb25TaG93Rm9ybShudWxsLCBcImFkZFwiKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5zaG93Rm9ybShudWxsLCBudWxsLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vbkFkZENhbGxCYWNrICYmIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vbkFkZENhbGxCYWNrLFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLFxyXG4gICAgICAgICAgICAgICAgICAgIGZ1bmNzOiB0aGlzLnByb3BzLmZ1bmNzLFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG5cclxuXHJcblxyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICBpY29uPXs8UGx1c091dGxpbmVkIC8+fVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICDmt7vliqBcclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgKGl0ZW0gPT0gXCJkZWxldGVcIiB8fCBpdGVtLmNvZGUgPT0gXCJkZWxldGVcIikgJiZcclxuICAgICAgICBjaGVja1BlcnNzaW9uKFwiZGVsZXRlXCIpXHJcbiAgICAgICkge1xyXG4gICAgICAgIGlmIChkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIikge1xyXG4gICAgICAgICAgdG9vbEJ1dHRvbnMucHVzaChcclxuICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgIC8vIHR5cGU9e1wicHJpbWFyeVwifVxyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMub25EZWxldGUuYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgICBpY29uPXs8RGVsZXRlT3V0bGluZWQgLz59XHJcbiAgICAgICAgICAgICAgZGFuZ2VyXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICDliKDpmaRcclxuICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2gocmV0dXJuQnV0dG9uKGl0ZW0uY29kZSB8fCBpdGVtLCBpdGVtLnJlY29yZFNob3cpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKGNoZWNrUGVyc3Npb24oaXRlbS5jb2RlID8gaXRlbS5jb2RlIDogaXRlbSkpIHtcclxuICAgICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChcclxuICAgICAgICAgICAgcmV0dXJuQnV0dG9uKGl0ZW0uY29kZSA/IGl0ZW0uY29kZSA6IGl0ZW0sIGl0ZW0ucmVjb3JkU2hvdylcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcclxuICAgICAgY2hpbGRyZW4ubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtKSkge1xyXG4gICAgICAgICAgaXRlbS5tYXAoKGNoaWxkKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICBjaGlsZD8ucHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiICYmXHJcbiAgICAgICAgICAgICAgY2hlY2tQZXJzc2lvbihjaGlsZD8ucHJvcHM/LmNvZGUpXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgIHRvb2xCdXR0b25zLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgICAgIGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjb2x1bW5CdXR0b25cIiAmJlxyXG4gICAgICAgICAgICAgIGNoZWNrUGVyc3Npb24oY2hpbGQ/LnByb3BzPy5jb2RlKVxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBpdGVtPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIgJiZcclxuICAgICAgICAgICAgY2hlY2tQZXJzc2lvbihpdGVtPy5wcm9wcz8uY29kZSlcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICB0b29sQnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgICAgaXRlbT8ucHJvcHM/LnBhZ2VUeXBlID09IFwiY29sdW1uQnV0dG9uXCIgJiZcclxuICAgICAgICAgICAgY2hlY2tQZXJzc2lvbihpdGVtPy5wcm9wcz8uY29kZSlcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAoY2hpbGRyZW4pIHtcclxuICAgICAgY29uc3QgeyBwcm9wcyB9OiBhbnkgPSBjaGlsZHJlbjtcclxuICAgICAgaWYgKHByb3BzPy5wYWdlVHlwZSA9PSBcInRvb2xCdXR0b25cIiAmJiBjaGVja1BlcnNzaW9uKHByb3BzPy5jb2RlKSkge1xyXG4gICAgICAgIHRvb2xCdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgIHByb3BzPy5wYWdlVHlwZSA9PSBcImNvbHVtbkJ1dHRvblwiICYmXHJcbiAgICAgICAgY2hlY2tQZXJzc2lvbihwcm9wcz8uY29kZSlcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgYWN0aW9uQ29sdW1uICYmXHJcbiAgICAgIHRhYmxlQ29sdW1uLnB1c2goe1xyXG4gICAgICAgIHRpdGxlOiBcIuaTjeS9nFwiLFxyXG4gICAgICAgIGRhdGFJbmRleDogXCJhY3Rpb25cIixcclxuICAgICAgICBhbGlnbjogYWN0aW9uUHJvcHM/LnRleHRBbGlnblxyXG4gICAgICAgICAgPyBhY3Rpb25Qcm9wcz8udGV4dEFsaWduXHJcbiAgICAgICAgICA6IGJhc2VBY3Rpb25Db2x1bW4udGV4dEFsaWduXHJcbiAgICAgICAgICAgID8gYmFzZUFjdGlvbkNvbHVtbi50ZXh0QWxpZ25cclxuICAgICAgICAgICAgOiBcImxlZnRcIixcclxuICAgICAgICB3aWR0aDogYWN0aW9uUHJvcHM/LndpZHRoXHJcbiAgICAgICAgICA/IGFjdGlvblByb3BzPy53aWR0aFxyXG4gICAgICAgICAgOiBiYXNlQWN0aW9uQ29sdW1uLndpZHRoXHJcbiAgICAgICAgICAgID8gYmFzZUFjdGlvbkNvbHVtbi53aWR0aFxyXG4gICAgICAgICAgICA6IDIwMCxcclxuICAgICAgICBmaXhlZDogXCJyaWdodFwiLFxyXG4gICAgICAgIHJlbmRlcjogKHRleHQ6IGFueSwgcmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtYWN0aW9uXCIpfT5cclxuICAgICAgICAgICAgICB7dGhpcy5yZW5kZXJDbG91bW5CdXR0b24oY29sdW1uQnV0dG9ucywgcmVjb3JkKX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG5cclxuICAgIGlmIChjb2x1bW5PcmRlcilcclxuICAgICAgdGFibGVDb2x1bW4gPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdGl0bGU6IFwi5bqP5Y+3XCIsXHJcbiAgICAgICAgICB3aWR0aDogODAsXHJcbiAgICAgICAgICBhbGlnbjogXCJjZW50ZXJcIixcclxuICAgICAgICAgIHJlbmRlcjogKHRleHQsIHJlYWNvcmQsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiA8PntpbmRleCArIDF9PC8+O1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLnRhYmxlQ29sdW1uLFxyXG4gICAgICBdO1xyXG4gICAgbGV0IHNlYXJjaEZsYWcgPSBzaG93U2VhcmNoICYmIHNlYXJjaEZvcm1zLmxlbmd0aCA+IDA7XHJcbiAgICBsZXQgeyB0YWJsZVRvb2wgfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHRvb2xGbGFnID1cclxuICAgICAgc2hvd1Rvb2xCdXR0b24gJiZcclxuICAgICAgdG9vbEJ1dHRvbnMubGVuZ3RoID4gMCAmJlxyXG4gICAgICB0b29sQnV0dG9uUG9zaXRpb24gPT0gXCJidXR0b21cIjtcclxuICAgIGxldCB0b29sYmFyRmxhZyA9ICEoXHJcbiAgICAgIHRhYmxlUHJvcHMudG9vbGJhciA9PSBmYWxzZSB8fFxyXG4gICAgICB0YWJsZVByb3BzLnRvb2xiYXI/LnNob3cgPT0gZmFsc2UgfHxcclxuICAgICAgdGFibGVQcm9wcy50b29sYmFyPy50b29scz8ubGVuZ3RoID09IDAgfHxcclxuICAgICAgdGFibGVUb29sPy5zaG93ID09IGZhbHNlXHJcbiAgICApO1xyXG4gICAgbGV0IHRhYmxlSGVhZGVySGVpZ2h0ID0gNTU7XHJcbiAgICBsZXQgdG9vbEhlaWdodCA9IHRhYmxlVGl0bGUgfHwgdG9vbEZsYWcgPyA1MCA6IDA7XHJcbiAgICBsZXQgcGFkZGluZ0hlaWdodCA9IDIwICogMjsgLy/kuIrkuIvpl7Tot51cclxuICAgIGxldCB0YWJsZUNvbnRlbnRIZWlnaHQgPVxyXG4gICAgICBlbGVtZW50SGVpZ2h0IC0gdG9vbEhlaWdodCAtIHBhZGRpbmdIZWlnaHQ7XHJcbiAgICBsZXQgUGFnaW5hdGlvbkhlaWdodCA9IHRhYmxlUHJvcHMucGFnaW5hdGlvbiAhPT0gZmFsc2UgPyAoMzIgKyAxNikgOiAwIC8vMzIg5Li65YiG6aG15Zmo6auY5bqmLDE25Li6bWFyZ2lu6Ze06LedXHJcbiAgICBsZXQgdGFibGVIZWlnaHQgPSB0YWJsZUNvbnRlbnRIZWlnaHQgLSBQYWdpbmF0aW9uSGVpZ2h0O1xyXG4gICAgbGV0IHRhYmxlU3JvbGxIZWlnaHQgPSB0YWJsZUNvbnRlbnRIZWlnaHQgLSB0YWJsZUhlYWRlckhlaWdodCAtIFBhZ2luYXRpb25IZWlnaHQ7XHJcbiAgICAvLyBpZiAodGFibGVQcm9wcy5wYWdpbmF0aW9uICE9PSBmYWxzZSkge1xyXG4gICAgY29uc3Qgc2Nyb2xsID0gdGFibGVQYXJhbXMuc2Nyb2xsO1xyXG4gICAgdGFibGVQYXJhbXMgPSB7XHJcbiAgICAgIC4uLnRhYmxlUGFyYW1zLFxyXG4gICAgICBzY3JvbGw6IHsgeDogXCJtYXgtY29udGVudFwiLCB5OiB0YWJsZVNyb2xsSGVpZ2h0LCAuLi5zY3JvbGwgfSxcclxuICAgIH07XHJcbiAgICAvLyB9XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlXCIpLCBjbGFzc05hbWUpfVxyXG4gICAgICAgIHJlZj17dGhpcy5wYWdlUmVmfVxyXG4gICAgICA+XHJcbiAgICAgICAge3RoaXMucHJvcHMucGFnZVRpdGxlICYmIChcclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRpdGxlXCIpKX0+XHJcbiAgICAgICAgICAgIHt0aGlzLnByb3BzLnBhZ2VUaXRsZX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICl9XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXBhbmVcIikpfVxyXG4gICAgICAgICAgc3R5bGU9e3sgZGlzcGxheTogXCJmbGV4XCIgfX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICB7c2hvd0xlZnQgJiYgKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWxlZnRcIil9PlxyXG4gICAgICAgICAgICAgIHt0cmVlVGl0bGUgJiYgKFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInRyZWUtdGl0bGVcIil9Pnt0cmVlVGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJ0cmVlLWNvbnRlbnRcIiksIHtcclxuICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcInRyZWUtY29udGVudC1ub3RpdGxlXCIpXTogIXRyZWVUaXRsZSxcclxuICAgICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxUcmVlXHJcbiAgICAgICAgICAgICAgICAgIHN0b3JlPXt7IC4uLnRyZWVTdG9yZSB9fVxyXG4gICAgICAgICAgICAgICAgICBzaG93SWNvbj17ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICAgIGNoZWNrYWJsZT17ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaGFibGU9e3RyZWVTZWFyY2h9XHJcbiAgICAgICAgICAgICAgICAgIG9uU2VsZWN0PXt0aGlzLnRyZWVTZWxlY3QuYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRLZXlzPXtbdGhpcy5zdGF0ZS50cmVlU2VsZWN0ZWRLZXldfVxyXG4gICAgICAgICAgICAgICAgICB0aXRsZUFsaWFzPXt0aXRsZUFsaWFzfVxyXG4gICAgICAgICAgICAgICAgICByZWY9e3RoaXMudHJlZVJlZn1cclxuICAgICAgICAgICAgICAgICAgey4uLm90aGVydHJlZVBhcmFtc31cclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKX1cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXJpZ2h0XCIpLCB7XHJcbiAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1uby1sZWZ0LXJpZ2h0XCIpXTogIXNob3dMZWZ0LFxyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3Nob3dTZWFyY2ggJiYgc2VhcmNoRm9ybXMubGVuZ3RoID4gMCAmJiAoXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1oZWFkZXJzZWFyY2hcIil9PlxyXG4gICAgICAgICAgICAgICAgPEhlYWRlclNlYXJjaFxyXG4gICAgICAgICAgICAgICAgICBzZWFyY2hGb3Jtcz17c2VhcmNoRm9ybXN9XHJcbiAgICAgICAgICAgICAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbj17dG9vbEJ1dHRvblBvc2l0aW9ufVxyXG4gICAgICAgICAgICAgICAgICBvblNlYXJjaD17dGhpcy5vblNlYXJjaC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgICAgICBvblJlc2V0PXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMub25SZXNldCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vblJlc2V0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoUmVmLmN1cnJlbnQ/LnJlc2V0RmllbGRzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUxvYWQoe30pO1xyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICByZWY9e3RoaXMuc2VhcmNoUmVmfVxyXG4gICAgICAgICAgICAgICAgICBzZWFyY2hGb3JtUHJvcHM9e3RoaXMucHJvcHMuc2VhcmNoRm9ybVByb3BzfVxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1jb250ZW50XCIpLCB7XHJcbiAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWNvbnRlbnQtZ2FwXCIpXTogIXNlYXJjaEZsYWcsXHJcbiAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgcmVmPXt0aGlzLnBhZ2VDb250ZW50UmVmfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgeyh0YWJsZVRpdGxlIHx8IHRvb2xGbGFnKSAmJiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10YWJsZS10aXRsZVwiKSwge1xyXG4gICAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGl0bGUtd2lkdGhcIildOiAhdG9vbGJhckZsYWcsXHJcbiAgICAgICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2Pnt0YWJsZVRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICB7dG9vbEZsYWcgJiYgdGhpcy5yZW5kZXJUb29sQnV0dG9ucyh0b29sQnV0dG9ucywgdG9vbGJhckZsYWcpfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKX1cclxuXHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoXHJcbiAgICAgICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10YWJsZVwiKSxcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGFibGUtdG9wXCIpXTogIXRvb2xiYXJGbGFnLFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10YWJsZS10b3AyXCIpXTpcclxuICAgICAgICAgICAgICAgICAgICAgIHRvb2xiYXJGbGFnICYmICF0b29sRmxhZyxcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgIHN0eWxlPXt7IGhlaWdodDogdGFibGVDb250ZW50SGVpZ2h0IH19XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPFRhYmxlXHJcbiAgICAgICAgICAgICAgICAgIHJlZj17dGhpcy50YWJsZVJlZn1cclxuICAgICAgICAgICAgICAgICAgY29sdW1ucz17dGFibGVDb2x1bW59XHJcbiAgICAgICAgICAgICAgICAgIGV4cGFuZGFibGU9e3tcclxuICAgICAgICAgICAgICAgICAgICBleHBhbmRJY29uOiAoeyBleHBhbmRlZCwgb25FeHBhbmQsIHJlY29yZCB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtleHBhbmRlZCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNoaWxkTm9kZXMgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5jaGlsZE5vZGVzPy5sZW5ndGggPiAwID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPERvd25PdXRsaW5lZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4gb25FeHBhbmQocmVjb3JkLCBlKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJleHBhbmQtaWNvblwiKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IHJlY29yZC5jaGlsZE5vZGVzICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuY2hpbGROb2Rlcz8ubGVuZ3RoID4gMCA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWdodE91dGxpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiBvbkV4cGFuZChyZWNvcmQsIGUpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImV4cGFuZC1pY29uXCIpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgLi4uZXhwYW5kYWJsZSxcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgY29sdW1uT3JkZXI9e3RydWV9XHJcbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsocGFnaW5hdGlvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgY3VycmVudFBhZ2UgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRQYWdlICE9PSBwYWdpbmF0aW9uLmN1cnJlbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50UGFnZTogcGFnaW5hdGlvbi5jdXJyZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICB0b29sYmFyPXt7XHJcbiAgICAgICAgICAgICAgICAgICAgb25Ub29sQ2xpY2s6IHtcclxuICAgICAgICAgICAgICAgICAgICAgIG9uUmVmcmVzaDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB0aGlzLmdldFNlYXJjaFZhbHVlcygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlTG9hZChwYXJhbXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIC4uLnRhYmxlUHJvcHMudG9vbGJhcixcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgc2hvd1Jvd1NlbGVjdGlvbj17c2hvd1Jvd1NlbGVjdGlvbn1cclxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgaGVpZ2h0OiB0YWJsZUhlaWdodCB9fVxyXG4gICAgICAgICAgICAgICAgICB7Li4udGFibGVQYXJhbXN9XHJcbiAgICAgICAgICAgICAgICAvLyBwYWdpbmF0aW9uPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICB7LyogPGRpdj48L2Rpdj4gKi99XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICB7ZWRpdG9yRm9ybSAmJiAoXHJcbiAgICAgICAgICAgIDxFZGl0b3JGb3JtXHJcbiAgICAgICAgICAgICAgcmVmPXt0aGlzLmVkaXRvclJlZn1cclxuICAgICAgICAgICAgICBjYWxsQmFjaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25TdW1iaXRDYWxsQmFjayAmJlxyXG4gICAgICAgICAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vblN1bWJpdENhbGxCYWNrLFxyXG4gICAgICAgICAgICAgICAgICAgIHsgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZVJlbG9hZCgpO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgZm9ybXM9e2VkaXRvckZvcm1zfVxyXG4gICAgICAgICAgICAgIHN1Ym1pdFVybD17c3VibWl0VXJsfVxyXG4gICAgICAgICAgICAgIHN1Ym1pdFBhcmFtcz17c3VibWl0UGFyYW1zfVxyXG4gICAgICAgICAgICAgIG9uU3VibWl0PXt0aGlzLnByb3BzLm9uU3VibWl0fVxyXG4gICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZT17ZGVmYXVsdFZhbHVlfVxyXG4gICAgICAgICAgICAgIG9uSGlkZUZvcm09e3RoaXMucHJvcHMub25IaWRlRm9ybX1cclxuICAgICAgICAgICAgICBvbkZvcm1DaGFuZ2U9e3RoaXMucHJvcHMub25Gb3JtQ2hhbmdlfVxyXG4gICAgICAgICAgICAgIGZvcm1UeXBlPXt0aGlzLnByb3BzLmZvcm1UeXBlIHx8IFwiYXV0b1wifVxyXG4gICAgICAgICAgICAgIGNoYW5nZVZhbGlkPXtmb3JtQ2hhbmdlVmFsaWR9XHJcbiAgICAgICAgICAgICAgVXRpbHM9e3RoaXMucHJvcHMuVXRpbHN9XHJcbiAgICAgICAgICAgICAgcmVxdWVzdE9iamVjdD17e1xyXG4gICAgICAgICAgICAgICAgYWRkVXJsOiByZXF1ZXN0VXJscy5hZGRVcmwsXHJcbiAgICAgICAgICAgICAgICBlZGl0b3JVcmw6IHJlcXVlc3RVcmxzLmVkaXRvclVybCxcclxuICAgICAgICAgICAgICAgIGFkZFBhcmFtczogcmVxdWVzdFBhcmFtcy5hZGRQYXJhbXMsXHJcbiAgICAgICAgICAgICAgICBlZGl0b3JQYXJhbXM6IHJlcXVlc3RQYXJhbXMuZWRpdG9yUGFyYW1zLFxyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgZnVuY3M9e3RoaXMucHJvcHMuZnVuY3N9XHJcbiAgICAgICAgICAgICAgey4uLmZvcm1Qcm9wc31cclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgQmFzZVBhZ2U7XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU9BLEtBQUssSUFBSUMsYUFBYSxRQUFtQixPQUFPO0FBQ3ZELE9BQU9DLEtBQUssTUFBTSxrQkFBa0I7QUFDcEMsT0FBT0MsSUFBSSxNQUFNLGlCQUFpQjtBQUNsQyxPQUFPQyxNQUFNLE1BQU0sbUJBQW1CO0FBQ3RDLE9BQU9DLEtBQUssTUFBTSxrQkFBa0I7QUFDcEMsT0FBT0MsT0FBTyxNQUFNLG9CQUFvQjtBQUN4QyxPQUFPQyxPQUFPLE1BQU0sb0JBQW9CO0FBQ3hDLE9BQU9DLFVBQVUsTUFBeUIsbUJBQW1CO0FBQzdELE9BQU9DLEdBQUcsTUFBTSxZQUFZO0FBQzVCLE9BQU8scUJBQXFCO0FBRzVCLFNBQ0VDLFlBQVksRUFDWkMsV0FBVyxFQUNYQyxZQUFZLEVBQ1pDLGFBQWEsRUFDYkMsWUFBWSxFQUNaQyxnQkFBZ0IsRUFDaEJDLGNBQWMsUUFDVCxtQkFBbUI7QUFDMUIsU0FBU0MsY0FBYyxFQUFFQyxPQUFPLFFBQWlCLGFBQWE7QUFDOUQsT0FBT0MsT0FBTyxNQUFNLGFBQWE7QUFDakMsT0FBT0MsTUFBTSxNQUFNLGNBQWM7QUFDakMsU0FBU0MsVUFBVSxFQUFTQyxtQkFBbUIsUUFBUSxtQkFBbUI7QUFDMUUsT0FBT0MsWUFBWSxNQUFNLGlCQUFpQjtBQUUxQyxPQUFPQyxPQUFPLE1BQU0sVUFBVTtBQVU5QixNQUFNQyxNQUFNLEdBQUcsSUFBSTtBQXlGbkIsTUFBTUMsUUFBUSxTQUFTekIsYUFBYSxDQUF3QjtFQVExRDBCLFdBQVdBLENBQUNDLEtBQVUsRUFBRTtJQUFBLElBQUFDLEtBQUEsRUFBQUMsS0FBQTtJQUN0QixLQUFLLENBQUNGLEtBQUssQ0FBQztJQUFDRyxlQUFBLGdDQVJKL0IsS0FBSyxDQUFDZ0MsU0FBUyxDQUFNLENBQUM7SUFBQUQsZUFBQSwrQkFDdkIvQixLQUFLLENBQUNnQyxTQUFTLENBQU0sQ0FBQztJQUFBRCxlQUFBLGlDQUNwQi9CLEtBQUssQ0FBQ2dDLFNBQVMsQ0FBTSxDQUFDO0lBQUFELGVBQUEsaUNBQ3RCL0IsS0FBSyxDQUFDZ0MsU0FBUyxDQUFNLENBQUM7SUFBQUQsZUFBQSwrQkFDeEIvQixLQUFLLENBQUNnQyxTQUFTLENBQU0sQ0FBQztJQUFBRCxlQUFBLHNDQUNmL0IsS0FBSyxDQUFDZ0MsU0FBUyxDQUFNLENBQUM7SUFBQUQsZUFBQSxxQkFDMUIsQ0FBQyxDQUFDO0lBQUFBLGVBQUEsbUJBb0RIRSxlQUFvQixJQUFLO01BQ25DLE1BQU07UUFBRUMsSUFBSTtRQUFFQyxRQUFRO1FBQUVDO01BQVEsQ0FBQyxHQUFHLElBQUksQ0FBQ0MsS0FBSztNQUM5QyxNQUFNQyxLQUFLLEdBQUc7UUFBRUosSUFBSTtRQUFFQyxRQUFRO1FBQUVDLE9BQU87UUFBRUcsTUFBTSxFQUFFTixlQUFlLENBQUMsQ0FBQztNQUFFLENBQUM7TUFDckUsSUFBSSxJQUFJLENBQUNMLEtBQUssQ0FBQ1ksUUFBUSxFQUFFO1FBQ3ZCLElBQUksQ0FBQ1osS0FBSyxDQUFDWSxRQUFRLENBQUNGLEtBQUssQ0FBQztNQUM1QjtNQUNBO0lBQ0YsQ0FBQztJQUFBUCxlQUFBLHlCQWdsQmlCVSxRQUFRLElBQUs7TUFDN0IsSUFBSUMsR0FBRyxHQUFHLEVBQUU7TUFDWixLQUFLLElBQUlDLEdBQUcsSUFBSUYsUUFBUSxFQUFFO1FBQ3hCLE1BQU1HLElBQUksR0FBR0gsUUFBUSxDQUFDRSxHQUFHLENBQUM7UUFDMUIsSUFBSUMsSUFBSSxDQUFDQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1VBQ25CSCxHQUFHLEdBQUcsQ0FBQyxHQUFHQSxHQUFHLEVBQUUsR0FBR0UsSUFBSSxDQUFDO1FBQ3pCO01BQ0Y7TUFDQSxPQUFPRixHQUFHO0lBQ1osQ0FBQztJQWpwQkMsSUFBSTtNQUFFSTtJQUFZLENBQUMsR0FBRzFCLE1BQU0sQ0FBQyxDQUFDO0lBQzlCLElBQUkyQixJQUFJLEdBQUcxQixVQUFVLENBQ25CeUIsV0FBVyxHQUFHQSxXQUFXLEdBQUcsR0FBRyxHQUFHLFVBQVUsR0FBRyxVQUNqRCxDQUFDO0lBQ0RDLElBQUksSUFBQWxCLEtBQUEsR0FBR2tCLElBQUksY0FBQWxCLEtBQUEsdUJBQUpBLEtBQUEsQ0FBTW1CLE9BQU87SUFDcEIsSUFBSUMsSUFBSSxHQUFHNUIsVUFBVSxDQUNuQnlCLFdBQVcsR0FBR0EsV0FBVyxHQUFHLEdBQUcsR0FBRyxXQUFXLEdBQUcsV0FDbEQsQ0FBQztJQUNERyxJQUFJLElBQUFuQixLQUFBLEdBQUdtQixJQUFJLGNBQUFuQixLQUFBLHVCQUFKQSxLQUFBLENBQU1rQixPQUFPO0lBQ3BCLElBQUksQ0FBQ1gsS0FBSyxHQUFHO01BQ1hVLElBQUksRUFBRSxLQUFLO01BQ1hHLGVBQWUsRUFBRSxFQUFFO01BQ25CQyxnQkFBZ0IsRUFBRSxFQUFFO01BQ3BCQyxlQUFlLEVBQUUsRUFBRTtNQUNuQkMsTUFBTSxFQUFFLEtBQUs7TUFDYkMsUUFBUSxFQUFFUCxJQUFJLElBQUksT0FBTztNQUN6QlEsU0FBUyxFQUFFTixJQUFJLElBQUksU0FBUztNQUM1Qk8sZUFBZSxFQUFFLENBQUMsQ0FBQztNQUNuQkMsUUFBUSxFQUFFLENBQUMsQ0FBQztNQUNaQyxRQUFRLEVBQUUsS0FBSztNQUNmQyxhQUFhLEVBQUUsQ0FBQztNQUNoQkMsaUJBQWlCLEVBQUUsRUFBRTtNQUNyQkMsV0FBVyxFQUFFLENBQUM7SUFDaEIsQ0FBQztFQUNIO0VBQ0FDLGlCQUFpQkEsQ0FBQSxFQUFHO0lBQUEsSUFBQUMscUJBQUE7SUFDbEIsTUFBTTtNQUFFQyxRQUFRO01BQUVDLFNBQVMsR0FBRyxDQUFDO0lBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQ3JDLEtBQUs7SUFDL0MsTUFBTStCLGFBQWEsSUFBQUkscUJBQUEsR0FBRyxJQUFJLENBQUNHLGNBQWMsQ0FBQ0MsT0FBTyxjQUFBSixxQkFBQSx1QkFBM0JBLHFCQUFBLENBQTZCSyxZQUFZO0lBQy9ELElBQUksQ0FBQ0MsUUFBUSxDQUFDO01BQ1pWO0lBQ0YsQ0FBQyxDQUFDO0lBQ0ZLLFFBQVEsSUFBSUEsUUFBUSxDQUFDLENBQUM7RUFDeEI7RUFDQU0sa0JBQWtCQSxDQUFBLEVBQUc7SUFBQSxJQUFBQyxzQkFBQTtJQUNuQixNQUFNWixhQUFhLElBQUFZLHNCQUFBLEdBQUcsSUFBSSxDQUFDTCxjQUFjLENBQUNDLE9BQU8sY0FBQUksc0JBQUEsdUJBQTNCQSxzQkFBQSxDQUE2QkgsWUFBWTtJQUMvRCxJQUFJVCxhQUFhLEdBQUcsSUFBSSxDQUFDdEIsS0FBSyxDQUFDc0IsYUFBYSxFQUFFO01BQzVDLElBQUksQ0FBQ1UsUUFBUSxDQUFDO1FBQ1pWO01BQ0YsQ0FBQyxDQUFDO0lBQ0o7RUFDRjtFQUNBYSxlQUFlQSxDQUFDQyxNQUFNLEVBQUVDLFFBQVEsRUFBRTtJQUFBLElBQUFDLHFCQUFBO0lBQ2hDLENBQUFBLHFCQUFBLE9BQUksQ0FBQ0MsU0FBUyxDQUFDVCxPQUFPLGNBQUFRLHFCQUFBLGVBQXRCQSxxQkFBQSxDQUF3QkgsZUFBZSxDQUFDQyxNQUFNLENBQUM7SUFDL0NDLFFBQVEsSUFBSUEsUUFBUSxDQUFDRCxNQUFNLENBQUM7RUFDOUI7RUFDQUksUUFBUUEsQ0FBQ0MsSUFBSSxFQUFnQjtJQUFBLElBQUFDLHFCQUFBO0lBQUEsSUFBZEMsS0FBSyxHQUFBQyxTQUFBLENBQUFwQyxNQUFBLFFBQUFvQyxTQUFBLFFBQUFDLFNBQUEsR0FBQUQsU0FBQSxNQUFHLElBQUk7SUFDekIsQ0FBQUYscUJBQUEsT0FBSSxDQUFDSSxTQUFTLENBQUNoQixPQUFPLGNBQUFZLHFCQUFBLGVBQXRCQSxxQkFBQSxDQUF3QkYsUUFBUSxDQUFDQyxJQUFJLEVBQUVFLEtBQUssQ0FBQztFQUMvQztFQVdBO0VBQ0FJLFFBQVFBLENBQUM5QyxLQUFXLEVBQXNDO0lBQUEsSUFBQStDLGVBQUE7SUFBQSxJQUFwQ0MsVUFBVSxHQUFBTCxTQUFBLENBQUFwQyxNQUFBLFFBQUFvQyxTQUFBLFFBQUFDLFNBQUEsR0FBQUQsU0FBQSxNQUFHLEtBQUs7SUFBQSxJQUFFUCxRQUFjLEdBQUFPLFNBQUEsQ0FBQXBDLE1BQUEsT0FBQW9DLFNBQUEsTUFBQUMsU0FBQTtJQUN0RCxJQUFJSyxRQUFRLEdBQUdqRCxLQUFLLEdBQUFrRCxhQUFBLEtBQVFsRCxLQUFLLElBQUssSUFBSTtJQUMxQyxDQUFBK0MsZUFBQSxPQUFJLENBQUNGLFNBQVMsY0FBQUUsZUFBQSxnQkFBQUEsZUFBQSxHQUFkQSxlQUFBLENBQWdCbEIsT0FBTyxjQUFBa0IsZUFBQSxlQUF2QkEsZUFBQSxDQUF5QkksSUFBSSxDQUFDRixRQUFRLEVBQUVELFVBQVUsRUFBRVosUUFBUSxDQUFDO0VBQy9EOztFQUVBO0VBQ0FnQixRQUFRQSxDQUFBLEVBQUc7SUFBQSxJQUFBQyxzQkFBQTtJQUNULENBQUFBLHNCQUFBLE9BQUksQ0FBQ1IsU0FBUyxDQUFDaEIsT0FBTyxjQUFBd0Isc0JBQUEsZUFBdEJBLHNCQUFBLENBQXdCRCxRQUFRLENBQUMsQ0FBQztFQUNwQztFQUVBRSxVQUFVQSxDQUFDQyxPQUFnQixFQUFFO0lBQUEsSUFBQUMsc0JBQUE7SUFDM0IsQ0FBQUEsc0JBQUEsT0FBSSxDQUFDWCxTQUFTLENBQUNoQixPQUFPLGNBQUEyQixzQkFBQSxlQUF0QkEsc0JBQUEsQ0FBd0JGLFVBQVUsQ0FBQ0MsT0FBTyxDQUFDO0VBQzdDO0VBRUFFLGlCQUFpQkEsQ0FBQ3pELEtBQUssRUFBZTtJQUFBLElBQUEwRCxzQkFBQTtJQUFBLElBQWJqRCxJQUFJLEdBQUFrQyxTQUFBLENBQUFwQyxNQUFBLFFBQUFvQyxTQUFBLFFBQUFDLFNBQUEsR0FBQUQsU0FBQSxNQUFHLElBQUk7SUFDbEMsQ0FBQWUsc0JBQUEsT0FBSSxDQUFDYixTQUFTLENBQUNoQixPQUFPLGNBQUE2QixzQkFBQSxlQUF0QkEsc0JBQUEsQ0FBd0JDLFlBQVksQ0FBQzNELEtBQUssRUFBRVMsSUFBSSxDQUFDO0VBQ25EO0VBRUFtRCxpQkFBaUJBLENBQUEsRUFBRztJQUFBLElBQUFDLHNCQUFBO0lBQ2xCLFFBQUFBLHNCQUFBLEdBQU8sSUFBSSxDQUFDaEIsU0FBUyxDQUFDaEIsT0FBTyxjQUFBZ0Msc0JBQUEsdUJBQXRCQSxzQkFBQSxDQUF3QkMsWUFBWSxDQUFDLENBQUM7RUFDL0M7O0VBRUE7RUFDQUMsUUFBUUEsQ0FBQ3ZCLElBQVUsRUFBRTtJQUFBLElBQUF3QixxQkFBQSxFQUFBQyxzQkFBQTtJQUNuQixNQUFNO01BQ0pDLFNBQVM7TUFDVEgsUUFBUTtNQUNSSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO01BQ2pCQyxjQUFjLEdBQUcsU0FBUztNQUMxQkMsV0FBVyxHQUFHLENBQUMsQ0FBQztNQUNoQkMsYUFBYSxHQUFHLENBQUMsQ0FBQztNQUNsQkMsV0FBVyxHQUFHLENBQUMsQ0FBQztNQUNoQkMsYUFBYSxHQUFHLENBQUM7SUFDbkIsQ0FBQyxHQUFHLElBQUksQ0FBQ2xGLEtBQUs7SUFDZCxJQUFJbUYsS0FBSyxHQUFHLElBQUk7SUFDaEIsTUFBTTdELGVBQWUsSUFBQW9ELHFCQUFBLEdBQUcsSUFBSSxDQUFDVSxRQUFRLENBQUM3QyxPQUFPLGNBQUFtQyxxQkFBQSx1QkFBckJBLHFCQUFBLENBQXVCVyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ25FLE1BQU05RCxnQkFBZ0IsSUFBQW9ELHNCQUFBLEdBQUcsSUFBSSxDQUFDUyxRQUFRLENBQUM3QyxPQUFPLGNBQUFvQyxzQkFBQSx1QkFBckJBLHNCQUFBLENBQXVCVyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3JFLElBQUlDLEdBQUcsR0FBR04sV0FBVyxDQUFDTCxTQUFTLEdBQUdLLFdBQVcsQ0FBQ0wsU0FBUyxHQUFHQSxTQUFTO0lBQ25FLElBQUkvQixNQUFXLEdBQUdtQyxhQUFhLENBQUNILFlBQVksR0FDeENHLGFBQWEsQ0FBQ0gsWUFBWSxHQUMxQkEsWUFBWTtJQUNoQixJQUFJQyxjQUFjLElBQUksU0FBUyxFQUFFO01BQy9CLElBQUl4RCxlQUFlLENBQUNMLE1BQU0sSUFBSSxDQUFDLEVBQUU7UUFDL0J0QyxPQUFPLENBQUM2RyxPQUFPLENBQUMsWUFBWSxDQUFDO1FBQzdCO01BQ0Y7SUFDRjtJQUNBL0csS0FBSyxDQUFDZ0gsT0FBTyxDQUFDO01BQ1pyRSxPQUFPLEVBQUUsWUFBWTtNQUNyQjtNQUNBc0UsSUFBSSxFQUFFQSxDQUFBLEtBQU07UUFDVixJQUFJWCxXQUFXLENBQUNOLFFBQVEsRUFBRTtVQUN4QnBGLGNBQWMsQ0FDWjBGLFdBQVcsQ0FBQ04sUUFBUSxFQUNwQjtZQUNFa0IsT0FBTyxFQUFFLElBQUksQ0FBQzNGLEtBQUssQ0FBQzJGLE9BQU87WUFDM0JDLE1BQU0sRUFBRWQsY0FBYyxJQUFJLFNBQVMsR0FBR3ZELGdCQUFnQixHQUFHMkIsSUFBSTtZQUM3RDJDLEdBQUcsRUFBRWYsY0FBYyxJQUFJLFNBQVMsR0FBR3hELGVBQWUsR0FBRzRCLElBQUksYUFBSkEsSUFBSSx1QkFBSkEsSUFBSSxDQUFFNEMsRUFBRTtZQUM3REMsS0FBSyxFQUFFLElBQUksQ0FBQy9GLEtBQUssQ0FBQytGO1VBQ3BCLENBQUMsRUFDRCxJQUFJLENBQUMvRixLQUFLLENBQUNnRyxLQUNiLENBQUM7VUFDRDtRQUNGO1FBQ0EsSUFBSXZCLFFBQVEsRUFBRTtVQUNaQSxRQUFRLElBQ05BLFFBQVEsQ0FBQ0ssY0FBYyxJQUFJLFNBQVMsR0FBR3hELGVBQWUsR0FBRzRCLElBQUksQ0FBQztVQUNoRTtRQUNGO1FBQ0EsSUFBSSxDQUFDcUMsR0FBRyxFQUFFO1VBQ1IsTUFBTSxJQUFJVSxLQUFLLENBQUMsVUFBVSxDQUFDO1FBQzdCO1FBQ0EsTUFBTTtZQUFFL0MsSUFBSSxFQUFFZ0QsVUFBVSxHQUFHLENBQUM7VUFBa0IsQ0FBQyxHQUFHckQsTUFBTTtVQUF0QnNELFdBQVcsR0FBQUMsd0JBQUEsQ0FBS3ZELE1BQU0sRUFBQXdELFNBQUE7UUFDeEQsTUFBTUMsYUFBYSxHQUFBMUMsYUFBQTtVQUNqQjJDLE1BQU0sRUFBRSxNQUFNO1VBQ2RDLFVBQVUsRUFBRSxJQUFJO1VBQ2hCM0QsTUFBTSxFQUFBZSxhQUFBO1lBQ0ppQyxHQUFHLEVBQUVmLGNBQWMsSUFBSSxTQUFTLEdBQUd4RCxlQUFlLENBQUNtRixJQUFJLENBQUMsQ0FBQyxHQUFHdkQsSUFBSSxDQUFDNEM7VUFBRSxHQUNoRUksVUFBVTtRQUNkLEdBQ0VoQixhQUFhLENBQ2pCO1FBQ0QsSUFBSXdCLFdBQVcsR0FBRyxDQUFDLENBQVE7UUFDM0JBLFdBQVcsR0FBQTlDLGFBQUEsQ0FBQUEsYUFBQSxLQUFRMEMsYUFBYSxHQUFLSCxXQUFXLENBQUU7UUFDbEQ1RyxPQUFPLENBQUNnRyxHQUFHLEVBQUEzQixhQUFBLEtBQ044QyxXQUFXLENBQ2YsQ0FBQyxDQUNDQyxJQUFJLENBQUMsVUFBVTdGLEdBQVEsRUFBRTtVQUN4QixNQUFNO1lBQUU4RjtVQUFLLENBQUMsR0FBRzlGLEdBQUc7VUFDcEIsSUFBSThGLElBQUksS0FBSyxHQUFHLEVBQUU7WUFBQSxJQUFBQyxlQUFBLEVBQUFDLHFCQUFBLEVBQUFDLHNCQUFBO1lBQ2hCcEksT0FBTyxDQUFDcUksT0FBTyxDQUFDLE9BQU8sQ0FBQztZQUN4QixJQUFJdEcsS0FBSyxJQUFBbUcsZUFBQSxHQUFHMUIsS0FBSyxDQUFDbkMsU0FBUyxjQUFBNkQsZUFBQSxnQkFBQUEsZUFBQSxHQUFmQSxlQUFBLENBQWlCdEUsT0FBTyxjQUFBc0UsZUFBQSx1QkFBeEJBLGVBQUEsQ0FBMEJJLGVBQWUsQ0FBQyxDQUFDO1lBQ3ZELEVBQUFILHFCQUFBLEdBQUEzQixLQUFLLENBQUNuRixLQUFLLENBQUNrSCxXQUFXLGNBQUFKLHFCQUFBLHVCQUF2QkEscUJBQUEsQ0FBeUJLLGdCQUFnQixLQUN2QzlILGNBQWMsRUFBQTBILHNCQUFBLEdBQ1o1QixLQUFLLENBQUNuRixLQUFLLENBQUNrSCxXQUFXLGNBQUFILHNCQUFBLHVCQUF2QkEsc0JBQUEsQ0FBeUJJLGdCQUFnQixFQUN6QztjQUFFeEIsT0FBTyxFQUFFLElBQUksQ0FBQzNGLEtBQUssQ0FBQzJGO1lBQVEsQ0FBQyxFQUMvQixJQUFJLENBQUMzRixLQUFLLENBQUNnRyxLQUNiLENBQUM7WUFDSGIsS0FBSyxDQUFDaUMsU0FBUyxDQUFDMUcsS0FBSyxDQUFDO1VBQ3hCLENBQUMsTUFBTTtZQUNML0IsT0FBTyxDQUFDMEksS0FBSyxDQUFDLE9BQU8sQ0FBQztVQUN4QjtRQUNGLENBQUMsQ0FBQyxDQUNEQyxLQUFLLENBQUMsVUFBVUQsS0FBVSxFQUFFO1VBQzNCRSxPQUFPLENBQUNDLEdBQUcsQ0FBQyxPQUFPLEVBQUVILEtBQUssQ0FBQztRQUM3QixDQUFDLENBQUM7TUFDTjtJQUNGLENBQUMsQ0FBQztFQUNKO0VBQ0FELFNBQVNBLENBQUN2RSxNQUFXLEVBQXNCO0lBQUEsSUFBQTRFLHFCQUFBLEVBQUFDLHNCQUFBO0lBQUEsSUFBcEJ4QyxhQUFhLEdBQUE3QixTQUFBLENBQUFwQyxNQUFBLFFBQUFvQyxTQUFBLFFBQUFDLFNBQUEsR0FBQUQsU0FBQSxNQUFHLENBQUMsQ0FBQztJQUN2QyxNQUFNO01BQ0o2QixhQUFhLEVBQUV5QyxvQkFBb0IsR0FBRyxDQUFDLENBQUM7TUFDeEMzQyxhQUFhLEdBQUcsQ0FBQyxDQUFDO01BQ2xCNEMsVUFBVSxHQUFHLENBQUM7SUFDaEIsQ0FBQyxHQUFHLElBQUksQ0FBQzVILEtBQUs7SUFDZCxNQUFNO01BQUU2SCxLQUFLLEVBQUVDO0lBQVcsQ0FBQyxHQUFHRixVQUFVO0lBQ3hDLElBQUkzRixXQUFnQixHQUFHLElBQUksQ0FBQzhGLGtCQUFrQixDQUFDLENBQUM7SUFDaEQsSUFBSTdFLElBQUksR0FBR2pCLFdBQVcsQ0FBQ2lCLElBQUksSUFBSWpCLFdBQVcsQ0FBQ1ksTUFBTSxJQUFJLENBQUMsQ0FBQztJQUN2RCxJQUFJNkQsV0FBVyxHQUFBOUMsYUFBQSxDQUFBQSxhQUFBLENBQUFBLGFBQUEsS0FDVlYsSUFBSSxJQUFBdUUscUJBQUEsR0FDSkssVUFBVSxDQUFDNUMsYUFBYSxjQUFBdUMscUJBQUEsdUJBQXhCQSxxQkFBQSxDQUEwQjVFLE1BQU0sR0FDaENBLE1BQU0sQ0FDVjtJQUNELE1BQU07TUFBRW1GLFlBQVksRUFBRUMsV0FBVyxHQUFHLENBQUM7SUFBRSxDQUFDLEdBQUdILFVBQVU7SUFDckQsTUFBTTtRQUFFakYsTUFBTSxFQUFFcUYsV0FBVyxHQUFHLENBQUM7TUFBdUIsQ0FBQyxHQUFHRCxXQUFXO01BQWhDRSxnQkFBZ0IsR0FBQS9CLHdCQUFBLENBQUs2QixXQUFXLEVBQUFHLFVBQUE7SUFDckUsQ0FBQVYsc0JBQUEsT0FBSSxDQUFDdEMsUUFBUSxDQUFDN0MsT0FBTyxjQUFBbUYsc0JBQUEsZUFBckJBLHNCQUFBLENBQXVCRyxLQUFLLENBQUNRLElBQUksQ0FBQXpFLGFBQUEsQ0FBQUEsYUFBQSxDQUFBQSxhQUFBLENBQUFBLGFBQUEsS0FDNUIrRCxvQkFBb0IsR0FDcEJRLGdCQUFnQixHQUNoQmpELGFBQWE7TUFDaEJyQyxNQUFNLEVBQUFlLGFBQUEsQ0FBQUEsYUFBQSxLQUFPc0UsV0FBVyxHQUFLeEIsV0FBVztJQUFFLEVBQzNDLENBQUM7RUFDSjtFQUNBO0VBQ0E5RixRQUFRQSxDQUFDaUMsTUFBTSxFQUFFO0lBQUEsSUFBQXlGLHNCQUFBLEVBQUFDLHNCQUFBO0lBQ2YsTUFBTTtNQUNKM0gsUUFBUTtNQUNSc0csV0FBVztNQUNYbEMsYUFBYSxHQUFHLENBQUMsQ0FBQztNQUNsQjRDLFVBQVUsR0FBRyxDQUFDO0lBQ2hCLENBQUMsR0FBRyxJQUFJLENBQUM1SCxLQUFLO0lBQ2QsTUFBTTtNQUFFNkgsS0FBSyxFQUFFQztJQUFXLENBQUMsR0FBR0YsVUFBVTtJQUN4QyxJQUFJM0YsV0FBZ0IsR0FBRyxJQUFJLENBQUM4RixrQkFBa0IsQ0FBQyxDQUFDO0lBQ2hELElBQUk3RSxJQUFJLEdBQUdqQixXQUFXLENBQUNpQixJQUFJLElBQUlqQixXQUFXLENBQUNZLE1BQU0sSUFBSSxDQUFDLENBQUM7SUFDdkQsSUFBSTZELFdBQVcsR0FBQTlDLGFBQUEsQ0FBQUEsYUFBQSxDQUFBQSxhQUFBLEtBQ1ZWLElBQUksSUFBQW9GLHNCQUFBLEdBQ0pSLFVBQVUsQ0FBQzVDLGFBQWEsY0FBQW9ELHNCQUFBLHVCQUF4QkEsc0JBQUEsQ0FBMEJ6RixNQUFNLEdBQ2hDQSxNQUFNLENBQ1Y7SUFDRCxJQUFJakMsUUFBUSxFQUFFO01BQ1pBLFFBQVEsQ0FBQzhGLFdBQVcsQ0FBQztNQUNyQjtJQUNGO0lBQ0EsSUFBSTlGLFFBQVEsRUFBRTtNQUNaQSxRQUFRLENBQUFnRCxhQUFBLENBQUFBLGFBQUEsS0FBTThDLFdBQVcsR0FBSyxJQUFJLENBQUNqRyxLQUFLLENBQUNtQixlQUFlLENBQUUsQ0FBQztNQUMzRDtJQUNGO0lBQ0EsSUFBSSxDQUFDd0YsU0FBUyxDQUFBeEQsYUFBQSxDQUFBQSxhQUFBLEtBQU04QyxXQUFXLEdBQUssSUFBSSxDQUFDakcsS0FBSyxDQUFDbUIsZUFBZSxDQUFFLENBQUM7SUFDakUsQ0FBQXNGLFdBQVcsYUFBWEEsV0FBVyx1QkFBWEEsV0FBVyxDQUFFc0IsZUFBZSxLQUMxQm5KLGNBQWMsRUFBQWtKLHNCQUFBLEdBQ1osSUFBSSxDQUFDdkksS0FBSyxDQUFDa0gsV0FBVyxjQUFBcUIsc0JBQUEsdUJBQXRCQSxzQkFBQSxDQUF3QkMsZUFBZSxFQUN2QztNQUFFN0MsT0FBTyxFQUFFLElBQUksQ0FBQzNGLEtBQUssQ0FBQzJGLE9BQU87TUFBRTlDLE1BQU0sRUFBRUE7SUFBTyxDQUFDLEVBQy9DLElBQUksQ0FBQzdDLEtBQUssQ0FBQ2dHLEtBQ2IsQ0FBQztFQUNMO0VBQ0E7RUFDQXlDLFdBQVdBLENBQUEsRUFBK0I7SUFBQSxJQUFBQyxzQkFBQTtJQUFBLElBQTlCN0YsTUFBTSxHQUFBUSxTQUFBLENBQUFwQyxNQUFBLFFBQUFvQyxTQUFBLFFBQUFDLFNBQUEsR0FBQUQsU0FBQSxNQUFHLENBQUMsQ0FBQztJQUFBLElBQUVzRixRQUFRLEdBQUF0RixTQUFBLENBQUFwQyxNQUFBLFFBQUFvQyxTQUFBLFFBQUFDLFNBQUEsR0FBQUQsU0FBQSxNQUFHLElBQUk7SUFDdEMsQ0FBQXFGLHNCQUFBLE9BQUksQ0FBQ3RELFFBQVEsQ0FBQzdDLE9BQU8sY0FBQW1HLHNCQUFBLGdCQUFBQSxzQkFBQSxHQUFyQkEsc0JBQUEsQ0FBdUJiLEtBQUssY0FBQWEsc0JBQUEsZUFBNUJBLHNCQUFBLENBQThCRSxNQUFNLENBQUM7TUFDbkNDLFFBQVEsRUFBRy9ILEdBQUcsSUFBSztRQUFBLElBQUFnSSxTQUFBO1FBQ2pCLElBQ0VILFFBQVEsSUFDUixDQUFBN0gsR0FBRyxhQUFIQSxHQUFHLGdCQUFBZ0ksU0FBQSxHQUFIaEksR0FBRyxDQUFFb0MsSUFBSSxjQUFBNEYsU0FBQSxnQkFBQUEsU0FBQSxHQUFUQSxTQUFBLENBQVdDLE9BQU8sY0FBQUQsU0FBQSx1QkFBbEJBLFNBQUEsQ0FBb0I3SCxNQUFNLEtBQUksQ0FBQyxJQUMvQixJQUFJLENBQUNSLEtBQUssQ0FBQ3VJLFdBQVcsS0FBSyxDQUFDLEVBQzVCO1VBQUEsSUFBQUMsc0JBQUE7VUFDQSxDQUFBQSxzQkFBQSxPQUFJLENBQUM3RCxRQUFRLENBQUM3QyxPQUFPLGNBQUEwRyxzQkFBQSxnQkFBQUEsc0JBQUEsR0FBckJBLHNCQUFBLENBQXVCcEIsS0FBSyxjQUFBb0Isc0JBQUEsZUFBNUJBLHNCQUFBLENBQThCTCxNQUFNLENBQUM7WUFDbkMvRixNQUFNLEVBQUFlLGFBQUE7Y0FBSXJCLE9BQU8sRUFBRTtZQUFDLEdBQUtNLE1BQU07VUFDakMsQ0FBQyxDQUFDO1FBQ0o7TUFDRjtJQUNGLENBQUMsQ0FBQztFQUNKO0VBQ0FxRyxRQUFRQSxDQUFDckcsTUFBVyxFQUFzQjtJQUFBLElBQUFzRyxxQkFBQTtJQUFBLElBQXBCakUsYUFBYSxHQUFBN0IsU0FBQSxDQUFBcEMsTUFBQSxRQUFBb0MsU0FBQSxRQUFBQyxTQUFBLEdBQUFELFNBQUEsTUFBRyxDQUFDLENBQUM7SUFDdEMsTUFBTTtNQUFFNkIsYUFBYSxFQUFFeUMsb0JBQW9CLEdBQUcsQ0FBQztJQUFFLENBQUMsR0FBRyxJQUFJLENBQUMzSCxLQUFLO0lBQy9ELENBQUFtSixxQkFBQSxPQUFJLENBQUNDLE9BQU8sQ0FBQzdHLE9BQU8sY0FBQTRHLHFCQUFBLGVBQXBCQSxxQkFBQSxDQUFzQnRCLEtBQUssQ0FBQ1EsSUFBSSxDQUFBekUsYUFBQSxDQUFBQSxhQUFBLENBQUFBLGFBQUEsS0FDM0IrRCxvQkFBb0IsR0FDcEJ6QyxhQUFhO01BQ2hCckMsTUFBTSxFQUFFQTtJQUFNLEVBQ2YsQ0FBQztFQUNKO0VBQ0F3QyxrQkFBa0JBLENBQUEsRUFBRztJQUFBLElBQUFnRSxzQkFBQTtJQUNuQixRQUFBQSxzQkFBQSxHQUFPLElBQUksQ0FBQ2pFLFFBQVEsQ0FBQzdDLE9BQU8sY0FBQThHLHNCQUFBLHVCQUFyQkEsc0JBQUEsQ0FBdUJoRSxrQkFBa0IsQ0FBQyxDQUFDO0VBQ3BEO0VBQ0FDLG1CQUFtQkEsQ0FBQSxFQUFHO0lBQUEsSUFBQWdFLHNCQUFBO0lBQ3BCLFFBQUFBLHNCQUFBLEdBQU8sSUFBSSxDQUFDbEUsUUFBUSxDQUFDN0MsT0FBTyxjQUFBK0csc0JBQUEsdUJBQXJCQSxzQkFBQSxDQUF1QmhFLG1CQUFtQixDQUFDLENBQUM7RUFDckQ7RUFDQWlFLGtCQUFrQkEsQ0FBQ3JHLElBQTRCLEVBQUU7SUFBQSxJQUFBc0csc0JBQUE7SUFDL0MsUUFBQUEsc0JBQUEsR0FBTyxJQUFJLENBQUNwRSxRQUFRLENBQUM3QyxPQUFPLGNBQUFpSCxzQkFBQSx1QkFBckJBLHNCQUFBLENBQXVCRCxrQkFBa0IsQ0FBQ3JHLElBQUksQ0FBQztFQUN4RDtFQUNBdUcsbUJBQW1CQSxDQUFDdkcsSUFBbUIsRUFBRTtJQUFBLElBQUF3RyxzQkFBQTtJQUN2QyxRQUFBQSxzQkFBQSxHQUFPLElBQUksQ0FBQ3RFLFFBQVEsQ0FBQzdDLE9BQU8sY0FBQW1ILHNCQUFBLHVCQUFyQkEsc0JBQUEsQ0FBdUJELG1CQUFtQixDQUFDdkcsSUFBSSxDQUFDO0VBQ3pEO0VBQ0F5RyxvQkFBb0JBLENBQUEsRUFBRztJQUFBLElBQUFDLHVCQUFBO0lBQ3JCLFFBQUFBLHVCQUFBLEdBQU8sSUFBSSxDQUFDeEUsUUFBUSxDQUFDN0MsT0FBTyxjQUFBcUgsdUJBQUEsdUJBQXJCQSx1QkFBQSxDQUF1QkQsb0JBQW9CLENBQUMsQ0FBQztFQUN0RDtFQUVBMUMsZUFBZUEsQ0FBQSxFQUFHO0lBQUEsSUFBQTRDLGdCQUFBO0lBQ2hCLE1BQU1DLFNBQVMsSUFBQUQsZ0JBQUEsR0FBRyxJQUFJLENBQUM3RyxTQUFTLGNBQUE2RyxnQkFBQSxnQkFBQUEsZ0JBQUEsR0FBZEEsZ0JBQUEsQ0FBZ0J0SCxPQUFPLGNBQUFzSCxnQkFBQSx1QkFBdkJBLGdCQUFBLENBQXlCNUMsZUFBZSxDQUFDLENBQUM7SUFDNUQsT0FBQXJELGFBQUEsQ0FBQUEsYUFBQSxLQUFZa0csU0FBUyxHQUFLLElBQUksQ0FBQ3JKLEtBQUssQ0FBQ21CLGVBQWU7RUFDdEQ7RUFFQW1JLGVBQWVBLENBQUM3RyxJQUFJLEVBQWE7SUFBQSxJQUFYbEMsSUFBSSxHQUFBcUMsU0FBQSxDQUFBcEMsTUFBQSxRQUFBb0MsU0FBQSxRQUFBQyxTQUFBLEdBQUFELFNBQUEsTUFBRyxFQUFFO0lBQzdCLE1BQU07TUFBRXVFO0lBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQzVILEtBQUs7SUFDakMsTUFBTTtNQUFFZ0ssTUFBTSxHQUFHO0lBQUssQ0FBQyxHQUFHcEMsVUFBVTtJQUNwQyxJQUFJcUMsTUFBTSxHQUFHLEVBQUU7SUFDZixJQUFJbEosR0FBRyxHQUFHLEVBQUU7SUFDWixJQUFJbUMsSUFBSSxDQUFDZ0gsVUFBVSxFQUFFO01BQ25CLE1BQU1DLFFBQVEsR0FBR2pILElBQUksQ0FBQ2dILFVBQVU7TUFDaENDLFFBQVEsQ0FBQ0MsR0FBRyxDQUFDLENBQUNDLElBQUksRUFBRUMsS0FBSyxLQUFLO1FBQzVCLElBQUksT0FBT04sTUFBTSxJQUFJLFVBQVUsRUFBRTtVQUMvQmpKLEdBQUcsR0FBR2lKLE1BQU0sQ0FBQ0ssSUFBSSxDQUFDO1FBQ3BCLENBQUMsTUFBTTtVQUNMdEosR0FBRyxHQUFHc0osSUFBSSxDQUFDTCxNQUFNLENBQUM7UUFDcEI7UUFDQSxJQUFJSyxJQUFJLENBQUNILFVBQVUsRUFBRTtVQUNuQixJQUFJLENBQUNILGVBQWUsQ0FBQ00sSUFBSSxDQUFDSCxVQUFVLEVBQUVsSixJQUFJLENBQUM7UUFDN0MsQ0FBQyxNQUFNO1VBQ0xpSixNQUFNLEdBQUcsQ0FBQyxHQUFHakosSUFBSSxFQUFFRCxHQUFHLENBQUM7UUFDekI7TUFDRixDQUFDLENBQUM7SUFDSixDQUFDLE1BQU07TUFDTGtKLE1BQU0sR0FBRyxDQUFDLEdBQUdqSixJQUFJLEVBQUVELEdBQUcsQ0FBQztJQUN6QjtJQUNBLE9BQU9rSixNQUFNO0VBQ2Y7RUFFQU0saUJBQWlCQSxDQUFDQyxXQUFnQixFQUFFQyxXQUFXLEVBQUU7SUFDL0MsTUFBTUMsSUFBSSxHQUFHRixXQUFXLENBQUN2SixNQUFNLEdBQUcsQ0FBQztJQUNuQyxNQUFNO01BQUUwSixVQUFVLEdBQUc7SUFBSyxDQUFDLEdBQUcsSUFBSSxDQUFDM0ssS0FBSztJQUN4QyxNQUFNb0IsT0FBTyxHQUFHb0osV0FBVyxDQUFDSixHQUFHLENBQUMsQ0FBQ0MsSUFBUyxFQUFFQyxLQUFVLEtBQUs7TUFDekQsTUFBQU0sV0FBQSxHQUErRFAsSUFBSSxDQUFDckssS0FBSztRQUFuRTtVQUFFbUssUUFBUTtVQUFFVSxRQUFRO1VBQUVDLE9BQU87VUFBRUMsSUFBSTtVQUFFbEg7UUFBZ0IsQ0FBQyxHQUFBK0csV0FBQTtRQUFSL0gsTUFBTSxHQUFBdUQsd0JBQUEsQ0FBQXdFLFdBQUEsRUFBQUksVUFBQTtNQUMxRCxJQUFJVixLQUFLLEdBQUcsQ0FBQyxFQUFFO1FBQ2Isb0JBQ0VsTSxLQUFBLENBQUE2TSxhQUFBO1VBQ0VDLFNBQVMsRUFBRXJNLEdBQUcsQ0FDWlMsT0FBTyxDQUFDTyxNQUFNLEVBQUUscUJBQXFCLENBQUMsRUFDdENQLE9BQU8sQ0FBQ08sTUFBTSxFQUFFLDJCQUEyQixDQUM3QztRQUFFLGdCQUVGekIsS0FBQSxDQUFBNk0sYUFBQSxDQUFDek0sTUFBTSxFQUFBMk0sUUFBQTtVQUNMcEssR0FBRyxFQUFFdUosS0FBTTtVQUNYUSxPQUFPLEVBQUVBLENBQUEsS0FBTTtZQUNiLElBQUksQ0FBQ3JJLFFBQVEsQ0FBQztjQUNaWCxRQUFRLEVBQUU7WUFDWixDQUFDLENBQUM7WUFDRmdKLE9BQU8sSUFBSUEsT0FBTyxDQUFDLENBQUM7VUFDdEI7UUFBRSxHQUNFakksTUFBTTtVQUNWMUIsSUFBSSxFQUFFO1FBQU8saUJBRWIvQyxLQUFBLENBQUE2TSxhQUFBO1VBQU1DLFNBQVMsRUFBRTVMLE9BQU8sQ0FBQ08sTUFBTSxFQUFFLG1CQUFtQjtRQUFFLEdBQ25Ea0wsSUFDRyxDQUFDLGVBQ1AzTSxLQUFBLENBQUE2TSxhQUFBO1VBQU1DLFNBQVMsRUFBRTVMLE9BQU8sQ0FBQ08sTUFBTSxFQUFFLG1CQUFtQjtRQUFFLEdBQ25Ec0ssUUFDRyxDQUNBLENBQ0wsQ0FBQztNQUVWO0lBQ0YsQ0FBQyxDQUFDO0lBRUYsb0JBQ0UvTCxLQUFBLENBQUE2TSxhQUFBO01BQ0VDLFNBQVMsRUFBRXJNLEdBQUcsQ0FBQ1MsT0FBTyxDQUFDTyxNQUFNLEVBQUUsMkJBQTJCLENBQUMsQ0FBRTtNQUM3RHVMLEtBQUssRUFBRTtRQUFFQyxVQUFVLEVBQUU7TUFBRTtJQUFFLEdBRXhCYixXQUFXLENBQUNKLEdBQUcsQ0FBQyxDQUFDQyxJQUFTLEVBQUVDLEtBQVUsS0FBSztNQUMxQyxJQUFJSSxJQUFJLEVBQUU7UUFDUixJQUFJSixLQUFLLEdBQUcsQ0FBQyxFQUFFO1VBQ2Isb0JBQ0VsTSxLQUFBLENBQUE2TSxhQUFBO1lBQ0VsSyxHQUFHLEVBQUV1SixLQUFNO1lBQ1hjLEtBQUssRUFBRTtjQUNMRSxXQUFXLEVBQUU7WUFDZjtVQUFFLEdBRURqQixJQUNFLENBQUM7UUFFVixDQUFDLE1BQU0sSUFBSUMsS0FBSyxJQUFJLENBQUMsRUFBRTtVQUNyQixvQkFDRWxNLEtBQUEsQ0FBQTZNLGFBQUEsQ0FBQ3ZNLE9BQU87WUFDTjBDLE9BQU8sRUFBRUEsT0FBUTtZQUNqQm1LLEtBQUssRUFBRSxJQUFLO1lBQ1pDLFNBQVMsRUFBQyxRQUFRO1lBQ2xCekssR0FBRyxFQUFFdUosS0FBTTtZQUNYbUIsSUFBSSxFQUFFLElBQUksQ0FBQ2hMLEtBQUssQ0FBQ3FCLFFBQVM7WUFDMUI0SixZQUFZLEVBQUdELElBQUksSUFBSztjQUN0QixJQUFJQSxJQUFJLEVBQUU7Z0JBQ1IsSUFBSSxDQUFDaEosUUFBUSxDQUFDO2tCQUNaWCxRQUFRLEVBQUU7Z0JBQ1osQ0FBQyxDQUFDO2NBQ0osQ0FBQyxNQUFNO2dCQUNMLElBQUksQ0FBQ1csUUFBUSxDQUFDO2tCQUNaWCxRQUFRLEVBQUU7Z0JBQ1osQ0FBQyxDQUFDO2NBQ0o7WUFDRjtZQUNGO1lBQ0E7VUFBQSxnQkFFRTFELEtBQUEsQ0FBQTZNLGFBQUEsQ0FBQ3pNLE1BQU07WUFBQzJDLElBQUksRUFBQztVQUFTLEdBQUMsZUFDbEIsZUFBQS9DLEtBQUEsQ0FBQTZNLGFBQUEsQ0FBQ25NLFlBQVksTUFBRSxDQUNaLENBQ0QsQ0FBQztRQUVkLENBQUMsTUFBTTtVQUNMLE9BQU8sSUFBSTtRQUNiO01BQ0YsQ0FBQyxNQUFNO1FBQ0wsb0JBQ0VWLEtBQUEsQ0FBQTZNLGFBQUE7VUFDRWxLLEdBQUcsRUFBRXVKLEtBQU07VUFDWGMsS0FBSyxFQUFFO1lBQ0xFLFdBQVcsRUFBRWhCLEtBQUssSUFBSUUsV0FBVyxDQUFDdkosTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUc7VUFDckQ7UUFBRSxHQUVEb0osSUFDRSxDQUFDO01BRVY7SUFDRixDQUFDLENBQ0UsQ0FBQztFQUVWO0VBQ0FzQixrQkFBa0JBLENBQUNDLGFBQWtCLEVBQUVDLFNBQWMsRUFBRTtJQUNyRCxNQUFNO01BQUVDLFdBQVc7TUFBRWxFLFVBQVUsR0FBRyxDQUFDO0lBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQzVILEtBQUs7SUFDbkQsTUFBTTtNQUFFK0w7SUFBaUIsQ0FBQyxHQUFHdk0sTUFBTSxDQUFDLENBQUM7SUFDckMsTUFBTXdNLFVBQVUsR0FBRyxFQUFFO0lBQ3JCLE1BQU07TUFBRWhDLE1BQU0sR0FBRztJQUFLLENBQUMsR0FBR3BDLFVBQVU7SUFFcEMsSUFBSTdHLEdBQUcsR0FBRyxFQUFFO0lBQ1osSUFBSSxPQUFPaUosTUFBTSxJQUFJLFVBQVUsRUFBRTtNQUMvQmpKLEdBQUcsR0FBR2lKLE1BQU0sQ0FBQzZCLFNBQVMsQ0FBQztJQUN6QixDQUFDLE1BQU07TUFDTDlLLEdBQUcsR0FBRzhLLFNBQVMsQ0FBQzdCLE1BQU0sQ0FBQztJQUN6QjtJQUNBLElBQUlpQyxRQUFRLEdBQUcsSUFBSTtJQUNuQixJQUFJLENBQUFILFdBQVcsYUFBWEEsV0FBVyx1QkFBWEEsV0FBVyxDQUFFRyxRQUFRLE1BQUssS0FBSyxFQUFFQSxRQUFRLEdBQUcsS0FBSyxDQUFDLEtBQ2pELElBQUlGLGdCQUFnQixDQUFDRSxRQUFRLEtBQUssS0FBSyxFQUFFQSxRQUFRLEdBQUcsS0FBSztJQUM5REwsYUFBYSxDQUFDeEIsR0FBRyxDQUFDLENBQUNDLElBQVMsRUFBRUMsS0FBVSxLQUFLO01BQzNDLE1BQUE0QixZQUFBLEdBQ0U3QixJQUFJLENBQUNySyxLQUFLO1FBRE47VUFBRW1LLFFBQVE7VUFBRVUsUUFBUTtVQUFFQyxPQUFPO1VBQUVDLElBQUk7VUFBRW9CO1FBQXNCLENBQUMsR0FBQUQsWUFBQTtRQUFSckosTUFBTSxHQUFBdUQsd0JBQUEsQ0FBQThGLFlBQUEsRUFBQUUsVUFBQTtNQUVoRSxJQUFJRCxVQUFVLEVBQUU7UUFDZCxJQUFJLE9BQU9BLFVBQVUsSUFBSSxRQUFRLEVBQUU7VUFFakMsSUFBSTtZQUNGLE1BQU1FLFdBQVcsR0FBRztjQUFFekcsTUFBTSxFQUFFaUcsU0FBUztjQUFFbEcsT0FBTyxFQUFFLElBQUksQ0FBQzNGLEtBQUssQ0FBQzJGLE9BQU87Y0FBRUksS0FBSyxFQUFFLElBQUksQ0FBQy9GLEtBQUssQ0FBQytGO1lBQU0sQ0FBQztZQUMvRixNQUFNQyxLQUFLLEdBQUFwQyxhQUFBLEtBQVEsSUFBSSxDQUFDNUQsS0FBSyxDQUFDc00sS0FBSyxDQUFFO1lBQ3JDLElBQUlDLElBQUksR0FBRyxJQUFJQyxRQUFRLENBQUMsbUJBQW1CLEVBQUVMLFVBQVUsQ0FBQztZQUN4RCxNQUFNdEksSUFBSSxHQUFHMEksSUFBSSxDQUFDRixXQUFXLEVBQUVyRyxLQUFLLENBQUM7WUFDckNuQyxJQUFJLElBQUltSSxVQUFVLENBQUNTLElBQUksQ0FBQ3BDLElBQUksQ0FBQztVQUMvQixDQUFDLENBQUMsT0FBT3FDLENBQUMsRUFBRTtZQUNWLElBQUk5RyxNQUFNLEdBQUdpRyxTQUFTO1lBQ3RCLElBQUljLElBQUksQ0FBQ1IsVUFBVSxDQUFDLEVBQUU7Y0FDcEJILFVBQVUsQ0FBQ1MsSUFBSSxDQUFDcEMsSUFBSSxDQUFDO1lBQ3ZCO1VBQ0Y7O1VBRUE7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtRQUNGLENBQUMsTUFBTSxJQUFJLE9BQU84QixVQUFVLElBQUksVUFBVSxFQUFFO1VBQzFDLE1BQU10SSxJQUFJLEdBQUdzSSxVQUFVLENBQUNOLFNBQVMsQ0FBQztVQUNsQ2hJLElBQUksSUFBSW1JLFVBQVUsQ0FBQ1MsSUFBSSxDQUFDcEMsSUFBSSxDQUFDO1FBQy9CO01BQ0YsQ0FBQyxNQUFNO1FBQ0wyQixVQUFVLENBQUNTLElBQUksQ0FBQ3BDLElBQUksQ0FBQztNQUN2QjtJQUNGLENBQUMsQ0FBQztJQUNGLElBQUl1QyxNQUFNLEdBQUdkLFdBQVcsYUFBWEEsV0FBVyxlQUFYQSxXQUFXLENBQUVlLFlBQVksR0FDbENmLFdBQVcsYUFBWEEsV0FBVyx1QkFBWEEsV0FBVyxDQUFFZSxZQUFZLEdBQ3pCZCxnQkFBZ0IsYUFBaEJBLGdCQUFnQixlQUFoQkEsZ0JBQWdCLENBQUVjLFlBQVksR0FDNUJkLGdCQUFnQixhQUFoQkEsZ0JBQWdCLHVCQUFoQkEsZ0JBQWdCLENBQUVjLFlBQVksR0FDOUIsQ0FBQztJQUNQLElBQUluQyxJQUFJLEdBQUcsS0FBSztJQUNoQixJQUFJa0MsTUFBTSxJQUFJLEtBQUssRUFBRTtNQUNuQmxDLElBQUksR0FBRyxLQUFLO0lBQ2QsQ0FBQyxNQUFNO01BQ0xBLElBQUksR0FBR3NCLFVBQVUsQ0FBQy9LLE1BQU0sR0FBRzJMLE1BQU07SUFDbkM7SUFFQSxNQUFNeEwsT0FBTyxHQUFHNEssVUFBVSxDQUFDNUIsR0FBRyxDQUFDLENBQUNDLElBQVMsRUFBRUMsS0FBVSxLQUFLO01BQ3hELE1BQUF3QyxZQUFBLEdBQ0V6QyxJQUFJLENBQUNySyxLQUFLO1FBRE47VUFBRW1LLFFBQVE7VUFBRVUsUUFBUTtVQUFFQyxPQUFPO1VBQUVxQixVQUFVO1VBQUVwQixJQUFJO1VBQUVsSDtRQUFnQixDQUFDLEdBQUFpSixZQUFBO1FBQVJqSyxNQUFNLEdBQUF1RCx3QkFBQSxDQUFBMEcsWUFBQSxFQUFBQyxVQUFBO01BRXRFLElBQUl6QyxLQUFLLEdBQUcwQyxNQUFNLENBQUNKLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUM5QixvQkFDRXhPLEtBQUEsQ0FBQTZNLGFBQUEsQ0FBQ3pNLE1BQU0sRUFBQTJNLFFBQUE7VUFDTEQsU0FBUyxFQUFFck0sR0FBRyxDQUNaUyxPQUFPLENBQUNPLE1BQU0sRUFBRSxxQkFBcUIsQ0FBQyxFQUN0Q1AsT0FBTyxDQUFDTyxNQUFNLEVBQUUsMkJBQTJCLENBQzdDLENBQUU7VUFDRmtCLEdBQUcsRUFBRXVKLEtBQU07VUFDWFEsT0FBTyxFQUFFQSxDQUFBLEtBQU07WUFDYixJQUFJNUgsSUFBSSxHQUFBVSxhQUFBLEtBQVEsSUFBSSxDQUFDbkQsS0FBSyxDQUFDb0IsUUFBUSxDQUFFO1lBQ3JDcUIsSUFBSSxDQUFDMkksU0FBUyxDQUFDL0YsRUFBRSxDQUFDLEdBQUcsS0FBSztZQUMxQixJQUFJLENBQUNyRCxRQUFRLENBQUM7Y0FDWlosUUFBUSxFQUFFcUI7WUFDWixDQUFDLENBQUM7WUFDRjRILE9BQU8sSUFBSUEsT0FBTyxDQUFDZSxTQUFTLENBQUM7VUFDL0I7UUFBRSxHQUNFaEosTUFBTTtVQUNWMUIsSUFBSSxFQUFFO1FBQU8sSUFFWjhLLFFBQVEsS0FBSyxLQUFLLGlCQUNqQjdOLEtBQUEsQ0FBQTZNLGFBQUE7VUFBTUMsU0FBUyxFQUFFNUwsT0FBTyxDQUFDTyxNQUFNLEVBQUUsbUJBQW1CO1FBQUUsR0FDbkRrTCxJQUNHLENBQ1AsZUFDRDNNLEtBQUEsQ0FBQTZNLGFBQUE7VUFBTUMsU0FBUyxFQUFFNUwsT0FBTyxDQUFDTyxNQUFNLEVBQUUsbUJBQW1CO1FBQUUsR0FDbkRzSyxRQUNHLENBQ0EsQ0FBQztNQUViO0lBQ0YsQ0FBQyxDQUFDO0lBQ0YsT0FBTzZCLFVBQVUsQ0FBQzVCLEdBQUcsQ0FBQyxDQUFDQyxJQUFTLEVBQUVDLEtBQVUsS0FBSztNQUMvQyxNQUFBMkMsWUFBQSxHQUNFNUMsSUFBSSxDQUFDckssS0FBSztRQUROO1VBQUVtSyxRQUFRO1VBQUVVLFFBQVE7VUFBRUMsT0FBTztVQUFFcUIsVUFBVTtVQUFFcEI7UUFBZ0IsQ0FBQyxHQUFBa0MsWUFBQTtRQUFScEssTUFBTSxHQUFBdUQsd0JBQUEsQ0FBQTZHLFlBQUEsRUFBQUMsVUFBQTtNQUVoRSxJQUFJeEMsSUFBSSxFQUFFO1FBQ1IsSUFBSUosS0FBSyxHQUFHc0MsTUFBTSxFQUFFO1VBQ2xCLG9CQUNFeE8sS0FBQSxDQUFBNk0sYUFBQSxDQUFDek0sTUFBTSxFQUFBMk0sUUFBQTtZQUNMRCxTQUFTLEVBQUVyTSxHQUFHLENBQUNTLE9BQU8sQ0FBQ08sTUFBTSxFQUFFLHFCQUFxQixDQUFDLEVBQUU7Y0FDckQsQ0FBQ1AsT0FBTyxDQUFDTyxNQUFNLEVBQUUsMkJBQTJCLENBQUMsR0FBR3lLLEtBQUssS0FBSztZQUM1RCxDQUFDLENBQUU7WUFDSHZKLEdBQUcsRUFBRXVKLEtBQU07WUFDWFEsT0FBTyxFQUFFQSxDQUFBLEtBQU07Y0FDYkEsT0FBTyxJQUFJQSxPQUFPLENBQUNlLFNBQVMsQ0FBQztZQUMvQixDQUFFO1lBQ0ZkLElBQUksRUFBRUE7VUFBSyxHQUNQbEksTUFBTTtZQUNWMUIsSUFBSSxFQUFFO1VBQU8sSUFFWjhLLFFBQVEsS0FBSyxLQUFLLGlCQUNqQjdOLEtBQUEsQ0FBQTZNLGFBQUE7WUFBTUMsU0FBUyxFQUFFNUwsT0FBTyxDQUFDTyxNQUFNLEVBQUUsbUJBQW1CO1VBQUUsR0FDbkRrTCxJQUNHLENBQ1AsZUFDRDNNLEtBQUEsQ0FBQTZNLGFBQUE7WUFBTUMsU0FBUyxFQUFFNUwsT0FBTyxDQUFDTyxNQUFNLEVBQUUsbUJBQW1CO1VBQUUsR0FDbkRzSyxRQUNHLENBQ0EsQ0FBQztRQUViLENBQUMsTUFBTSxJQUFJRyxLQUFLLElBQUlzQyxNQUFNLEVBQUU7VUFDMUIsb0JBQ0V4TyxLQUFBLENBQUE2TSxhQUFBLENBQUN2TSxPQUFPO1lBQ044TSxTQUFTLEVBQUMsUUFBUTtZQUNsQkQsS0FBSyxFQUFFLElBQUs7WUFDWm5LLE9BQU8sRUFBRUEsT0FBUTtZQUNqQitMLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBRTtZQUNuQnBNLEdBQUcsRUFBRXVKLEtBQU07WUFDWG1CLElBQUksRUFBRSxJQUFJLENBQUNoTCxLQUFLLENBQUNvQixRQUFRLENBQUNkLEdBQUcsQ0FBQyxJQUFJLEtBQU07WUFDeEMySyxZQUFZLEVBQUdELElBQUksSUFBSztjQUN0QixJQUFJQSxJQUFJLEVBQUU7Z0JBQ1IsSUFBSXZJLElBQUksR0FBQVUsYUFBQSxLQUFRLElBQUksQ0FBQ25ELEtBQUssQ0FBQ29CLFFBQVEsQ0FBRTtnQkFDckNxQixJQUFJLENBQUNuQyxHQUFHLENBQUMsR0FBRyxJQUFJO2dCQUNoQixJQUFJLENBQUMwQixRQUFRLENBQUM7a0JBQ1paLFFBQVEsRUFBRXFCO2dCQUNaLENBQUMsQ0FBQztjQUNKLENBQUMsTUFBTTtnQkFDTCxJQUFJLENBQUNULFFBQVEsQ0FBQztrQkFDWlosUUFBUSxFQUFFLENBQUM7Z0JBQ2IsQ0FBQyxDQUFDO2NBQ0o7WUFDRjtZQUNGO1VBQUEsZ0JBRUV6RCxLQUFBLENBQUE2TSxhQUFBO1lBQUdDLFNBQVMsRUFBRTVMLE9BQU8sQ0FBQ08sTUFBTSxFQUFFLHFCQUFxQjtVQUFFLGdCQUNuRHpCLEtBQUEsQ0FBQTZNLGFBQUEsQ0FBQzlMLGdCQUFnQixNQUFFLENBQ2xCLENBQ0ksQ0FBQztRQUVkLENBQUMsTUFBTTtVQUNMLE9BQU8sSUFBSTtRQUNiO01BQ0YsQ0FBQyxNQUFNO1FBQ0wsb0JBQ0VmLEtBQUEsQ0FBQTZNLGFBQUEsQ0FBQ3pNLE1BQU0sRUFBQTJNLFFBQUE7VUFDTEQsU0FBUyxFQUFFck0sR0FBRyxDQUFDUyxPQUFPLENBQUNPLE1BQU0sRUFBRSxxQkFBcUIsQ0FBQyxFQUFFO1lBQ3JELENBQUNQLE9BQU8sQ0FBQ08sTUFBTSxFQUFFLDJCQUEyQixDQUFDLEdBQUd5SyxLQUFLLEtBQUs7VUFDNUQsQ0FBQyxDQUFFO1VBQ0h2SixHQUFHLEVBQUV1SixLQUFNO1VBQ1hRLE9BQU8sRUFBRUEsQ0FBQSxLQUFNO1lBQ2JBLE9BQU8sSUFBSUEsT0FBTyxDQUFDZSxTQUFTLENBQUM7VUFDL0I7UUFBRSxHQUNFaEosTUFBTTtVQUNWMUIsSUFBSSxFQUFDO1FBQU0sSUFFVjhLLFFBQVEsS0FBSyxLQUFLLGlCQUNqQjdOLEtBQUEsQ0FBQTZNLGFBQUE7VUFBTUMsU0FBUyxFQUFFNUwsT0FBTyxDQUFDTyxNQUFNLEVBQUUsbUJBQW1CO1FBQUUsR0FDbkRrTCxJQUNHLENBQ1AsZUFDRDNNLEtBQUEsQ0FBQTZNLGFBQUE7VUFBTUMsU0FBUyxFQUFFNUwsT0FBTyxDQUFDTyxNQUFNLEVBQUUsbUJBQW1CO1FBQUUsR0FDbkRzSyxRQUNHLENBQ0EsQ0FBQztNQUViO0lBQ0YsQ0FBQyxDQUFDO0lBQ0Y7RUFDRjtFQUNBO0VBQ0FpRCxVQUFVQSxDQUFDQyxZQUFpQixFQUFFQyxHQUFRLEVBQUU7SUFBQSxJQUFBQyxnQkFBQSxFQUFBQyxzQkFBQSxFQUFBQyxzQkFBQTtJQUN0QyxJQUFJQyxPQUFPLEdBQUcsRUFBRTtJQUNoQixNQUFNO01BQ0pDLFNBQVMsR0FBRyxLQUFLO01BQ2pCQyxXQUFXLEdBQUcsRUFBRTtNQUNoQkMsWUFBWSxHQUFHO0lBQ2pCLENBQUMsR0FBRyxJQUFJLENBQUM3TixLQUFLLENBQUM4TixTQUFTO0lBQ3hCLE1BQU07TUFBRXRNO0lBQWdCLENBQUMsR0FBRyxJQUFJLENBQUNmLEtBQUs7SUFDdEMsTUFBTTtNQUFFSSxRQUFRO01BQUVrTjtJQUFjLENBQUMsR0FBR1QsR0FBRztJQUV2QyxJQUFJek0sUUFBUSxFQUFFO01BQ1o2TSxPQUFPLEdBQUdLLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQ0MsT0FBTyxDQUFDQyxTQUFTLENBQUNOLFNBQVMsQ0FBQztNQUN2RCxJQUFJRSxZQUFZLEVBQUU7UUFDaEIsSUFBSSxDQUFDcEwsUUFBUSxDQUFDO1VBQ1pqQixlQUFlLEVBQUU2TCxZQUFZLENBQUMsQ0FBQyxDQUFDO1VBQ2hDekwsZUFBZSxFQUFFO1lBQUUsQ0FBQ2dNLFdBQVcsR0FBR0Y7VUFBUTtRQUM1QyxDQUFDLENBQUM7TUFDSixDQUFDLE1BQU07UUFDTCxJQUFJSyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUNHLE1BQU0sSUFBSSxDQUFDSCxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM1RCxRQUFRLEVBQUU7VUFDekQsSUFBSWtELFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSzdMLGVBQWUsRUFBRTtZQUN2QyxJQUFJLENBQUNpQixRQUFRLENBQUM7Y0FDWmpCLGVBQWUsRUFBRTZMLFlBQVksQ0FBQyxDQUFDLENBQUM7Y0FDaEN6TCxlQUFlLEVBQUU7Z0JBQUUsQ0FBQ2dNLFdBQVcsR0FBR0Y7Y0FBUTtZQUM1QyxDQUFDLENBQUM7VUFDSjtRQUNGO01BQ0Y7SUFDRixDQUFDLE1BQU07TUFDTCxJQUFJLENBQUNqTCxRQUFRLENBQUM7UUFDWmpCLGVBQWUsRUFBRWtNLE9BQU87UUFDeEI5TCxlQUFlLEVBQUUsQ0FBQztNQUNwQixDQUFDLENBQUM7SUFDSjtJQUNBLElBQUksSUFBSSxDQUFDNUIsS0FBSyxDQUFDbU8sWUFBWSxFQUFFO01BQzNCLElBQUksQ0FBQ25PLEtBQUssQ0FBQ21PLFlBQVksQ0FBQ2QsWUFBWSxFQUFFQyxHQUFHLENBQUM7TUFDMUM7SUFDRjtJQUNBLE1BQU14RCxTQUFTLEdBQUcsRUFBQXlELGdCQUFBLE9BQUksQ0FBQ3ZLLFNBQVMsY0FBQXVLLGdCQUFBLGdCQUFBQSxnQkFBQSxHQUFkQSxnQkFBQSxDQUFnQmhMLE9BQU8sY0FBQWdMLGdCQUFBLHVCQUF2QkEsZ0JBQUEsQ0FBeUJ0RyxlQUFlLENBQUMsQ0FBQyxLQUFJLENBQUMsQ0FBQztJQUNsRTJHLFdBQVcsSUFBSSxJQUFJLENBQUN4RyxTQUFTLENBQUF4RCxhQUFBLENBQUFBLGFBQUEsS0FBTWtHLFNBQVM7TUFBRSxDQUFDOEQsV0FBVyxHQUFHRjtJQUFPLEVBQUUsQ0FBQztJQUN2RSxFQUFBRixzQkFBQSxPQUFJLENBQUN4TixLQUFLLENBQUNrSCxXQUFXLGNBQUFzRyxzQkFBQSx1QkFBdEJBLHNCQUFBLENBQXdCWSxrQkFBa0IsS0FDeEMvTyxjQUFjLEVBQUFvTyxzQkFBQSxHQUNaLElBQUksQ0FBQ3pOLEtBQUssQ0FBQ2tILFdBQVcsY0FBQXVHLHNCQUFBLHVCQUF0QkEsc0JBQUEsQ0FBd0JXLGtCQUFrQixFQUMxQztNQUFFekksT0FBTyxFQUFFLElBQUksQ0FBQzNGLEtBQUssQ0FBQzJGLE9BQU87TUFBRTBILFlBQVksRUFBRUEsWUFBWTtNQUFFQyxHQUFHLEVBQUVBO0lBQUksQ0FBQyxFQUNyRSxJQUFJLENBQUN0TixLQUFLLENBQUNnRyxLQUNiLENBQUM7SUFDSDtJQUNBO0lBQ0E7SUFDQTtFQUNGO0VBQ0FxSSxXQUFXQSxDQUFBLEVBQUc7SUFBQSxJQUFBQyxzQkFBQTtJQUNaLENBQUFBLHNCQUFBLE9BQUksQ0FBQ3RMLFNBQVMsQ0FBQ1QsT0FBTyxjQUFBK0wsc0JBQUEsZUFBdEJBLHNCQUFBLENBQXdCQyxXQUFXLENBQUMsQ0FBQztFQUN2QztFQUNBQyxPQUFPQSxDQUFDeE8sS0FBSyxFQUFFeU8sSUFBSSxFQUFFO0lBQUEsSUFBQUMsV0FBQTtJQUNuQixJQUFJQyxPQUFPLEdBQUdGLElBQUk7SUFDbEIsSUFBSXpPLEtBQUssYUFBTEEsS0FBSyxlQUFMQSxLQUFLLENBQUVrRCxJQUFJLElBQUksQ0FBQWxELEtBQUssYUFBTEEsS0FBSyxnQkFBQTBPLFdBQUEsR0FBTDFPLEtBQUssQ0FBRWtELElBQUksY0FBQXdMLFdBQUEsdUJBQVhBLFdBQUEsQ0FBYXpOLE1BQU0sSUFBRyxDQUFDLEVBQUU7TUFDMUMsSUFBSWlDLElBQUksR0FBR2xELEtBQUssQ0FBQ2tELElBQUk7TUFDckIsS0FBSyxJQUFJMEwsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxJQUFHMUwsSUFBSSxhQUFKQSxJQUFJLHVCQUFKQSxJQUFJLENBQUVqQyxNQUFNLEdBQUUyTixDQUFDLEVBQUUsRUFBRTtRQUNyQyxJQUFJMUwsSUFBSSxDQUFDMEwsQ0FBQyxDQUFDLENBQUNsTyxLQUFLLElBQUkrTixJQUFJLEVBQUU7VUFDekJFLE9BQU8sR0FBR3pMLElBQUksQ0FBQzBMLENBQUMsQ0FBQyxDQUFDeEwsS0FBSztRQUN6QjtNQUNGO0lBQ0Y7SUFDQSxPQUFPdUwsT0FBTztFQUNoQjtFQUNBRSxZQUFZQSxDQUFDM0wsSUFBSSxFQUFFO0lBQUEsSUFBQTRMLHVCQUFBO0lBQ2pCLENBQUFBLHVCQUFBLE9BQUksQ0FBQzFKLFFBQVEsQ0FBQzdDLE9BQU8sY0FBQXVNLHVCQUFBLGdCQUFBQSx1QkFBQSxHQUFyQkEsdUJBQUEsQ0FBdUJqSCxLQUFLLGNBQUFpSCx1QkFBQSxlQUE1QkEsdUJBQUEsQ0FBOEJDLE9BQU8sQ0FBQzdMLElBQUksQ0FBQztFQUM3QztFQUNBOEwsV0FBV0EsQ0FBQzlMLElBQUksRUFBRTtJQUFBLElBQUErTCxzQkFBQTtJQUNoQixDQUFBQSxzQkFBQSxPQUFJLENBQUM3RixPQUFPLENBQUM3RyxPQUFPLGNBQUEwTSxzQkFBQSxnQkFBQUEsc0JBQUEsR0FBcEJBLHNCQUFBLENBQXNCcEgsS0FBSyxjQUFBb0gsc0JBQUEsZUFBM0JBLHNCQUFBLENBQTZCRixPQUFPLENBQUM3TCxJQUFJLENBQUM7RUFDNUM7RUFZQTZFLGtCQUFrQkEsQ0FBQSxFQUFHO0lBQ25CLE1BQU07TUFBRS9DLGFBQWEsR0FBRyxDQUFDO0lBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQ2hGLEtBQUs7SUFDekMsSUFBSWlDLFdBQWdCLEdBQUcrQyxhQUFhLENBQUMvQyxXQUFXO0lBQ2hELElBQUlBLFdBQVcsSUFBSSxPQUFPQSxXQUFXLElBQUksUUFBUSxFQUFFO01BQ2pELE1BQU0rRCxLQUFLLEdBQUcsSUFBSSxDQUFDaEcsS0FBSyxDQUFDZ0csS0FBSyxJQUFJLENBQUMsQ0FBQztNQUNwQyxJQUFJdUcsSUFBSSxHQUFHLElBQUlDLFFBQVEsQ0FBQyxPQUFPLEVBQUV2SyxXQUFXLENBQUM7TUFDN0MsSUFBSWlOLFlBQVksR0FBRzNDLElBQUksQ0FBQ3ZHLEtBQUssQ0FBQztNQUM5Qi9ELFdBQVcsR0FBR2lOLFlBQVk7SUFDNUIsQ0FBQyxNQUFNO01BQ0xqTixXQUFXLEdBQUdBLFdBQVcsSUFBSSxDQUFDLENBQUM7SUFDakM7SUFDQSxPQUFPQSxXQUFXO0VBQ3BCO0VBRUFrTixNQUFNQSxDQUFBLEVBQUc7SUFBQSxJQUFBQyxNQUFBO01BQUFDLG1CQUFBO01BQUFDLG9CQUFBO0lBQ1AsTUFBTTtNQUNKQyxPQUFPLEdBQUcsRUFBRTtNQUNaNUUsVUFBVSxHQUFHLElBQUk7TUFDakJSLFFBQVE7TUFDUnFGLFNBQVMsR0FBRyxFQUFFO01BQ2Q1SCxVQUFVLEdBQUcsQ0FBQyxDQUFDO01BQ2ZrRyxTQUFTLEdBQUcsQ0FBQyxDQUFDO01BQ2QyQixTQUFTLEdBQUcsQ0FBQyxDQUFDO01BQ2RDLGFBQWEsR0FBRyxDQUFDLENBQUM7TUFDbEJDLFFBQVEsR0FBRyxLQUFLO01BQ2hCQyxZQUFZLEdBQUcsQ0FBQyxDQUFDO01BQ2pCQyxjQUFjLEdBQUcsSUFBSTtNQUNyQkMsT0FBTyxHQUFHLEVBQUU7TUFDWkMsVUFBVSxHQUFHLElBQUk7TUFDakJDLFVBQVU7TUFDVkMsZUFBZSxHQUFHLElBQUk7TUFDdEIvRSxTQUFTO01BQ1RnRixrQkFBa0IsR0FBRyxRQUFRO01BQzdCcEUsV0FBVztNQUNYaEgsY0FBYyxHQUFHLFNBQVM7TUFDMUJDLFdBQVcsR0FBRyxDQUFDLENBQUM7TUFDaEJvTCxVQUFVLEdBQUc7UUFBRUMsR0FBRyxFQUFFO01BQU0sQ0FBQztNQUMzQnBMLGFBQWEsR0FBRyxDQUFDLENBQUM7TUFDbEJDLFdBQVcsR0FBRyxDQUFDO0lBQ2pCLENBQUMsR0FBRyxJQUFJLENBQUNqRixLQUFLO0lBQ2QsTUFBTTtRQUNKNkgsS0FBSyxFQUFFQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCdUksWUFBWSxHQUFHLElBQUk7UUFDbkJDLFlBQVksR0FBRyxJQUFJO1FBQ25CQyxnQkFBZ0IsR0FBRyxJQUFJO1FBQ3ZCQyxXQUFXLEdBQUcsSUFBSTtRQUNsQkMsVUFBVSxHQUFHLENBQUMsQ0FBQztRQUNmNUMsWUFBWSxHQUFHLElBQUk7UUFDbkJ0QyxLQUFLLEVBQUVtRjtNQUVULENBQUMsR0FBRzlJLFVBQVU7TUFEVCtJLGdCQUFnQixHQUFBdkssd0JBQUEsQ0FDakJ3QixVQUFVLEVBQUFnSixVQUFBO0lBQ2QsSUFBSUMsYUFBYSxHQUFBak4sYUFBQSxLQUFRa0UsVUFBVSxDQUFFO0lBQ3JDLElBQUk5QyxhQUFhLENBQUMvQyxXQUFXLEVBQUU7TUFBQSxJQUFBNk8scUJBQUE7TUFDN0IsSUFBSTdPLFdBQWdCLEdBQUcsSUFBSSxDQUFDOEYsa0JBQWtCLENBQUMsQ0FBQztNQUNoRCxJQUFJN0UsSUFBSSxHQUFHLENBQUFqQixXQUFXLGFBQVhBLFdBQVcsdUJBQVhBLFdBQVcsQ0FBRWlCLElBQUksTUFBSWpCLFdBQVcsYUFBWEEsV0FBVyx1QkFBWEEsV0FBVyxDQUFFWSxNQUFNLEtBQUksQ0FBQyxDQUFDO01BQ3pEZ08sYUFBYSxDQUFDM0wsYUFBYSxHQUFHO1FBQzVCckMsTUFBTSxFQUFBZSxhQUFBLENBQUFBLGFBQUEsS0FBT1YsSUFBSSxJQUFBNE4scUJBQUEsR0FBS0QsYUFBYSxDQUFDM0wsYUFBYSxjQUFBNEwscUJBQUEsdUJBQTNCQSxxQkFBQSxDQUE2QmpPLE1BQU07TUFDM0QsQ0FBQztJQUNIO0lBQ0EsTUFBTTtRQUNKZ0YsS0FBSyxFQUFFa0osU0FBUyxHQUFHLENBQUMsQ0FBQztRQUNyQnBHLFVBQVUsRUFBRXFHLFVBQVUsR0FBRyxJQUFJO1FBQzdCQyxVQUFVLEdBQUcsT0FBTztRQUNwQjFGLEtBQUssRUFBRTJGO01BRVQsQ0FBQyxHQUFHcEQsU0FBUztNQURScUQsZUFBZSxHQUFBL0ssd0JBQUEsQ0FDaEIwSCxTQUFTLEVBQUFzRCxVQUFBO0lBRWIsSUFBSUMsV0FBVyxHQUFBek4sYUFBQTtNQUNieU0sWUFBWTtNQUNaeEksS0FBSyxFQUFBakUsYUFBQSxLQUFPaU4sYUFBYTtJQUFFLEdBQ3hCRixnQkFBZ0IsQ0FDYjtJQUNSLElBQUlXLFdBQWtCLEdBQUcsRUFBRTtJQUMzQixNQUFNQyxXQUFnQixHQUFHLEVBQUU7SUFDM0IsTUFBTUMsV0FBZ0IsR0FBRyxFQUFFO0lBQzNCLE1BQU1DLFlBQWlCLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLE1BQU03RixhQUFrQixHQUFHLEVBQUU7SUFDN0IsTUFBTTtNQUFFN0o7SUFBYyxDQUFDLEdBQUcsSUFBSSxDQUFDdEIsS0FBSztJQUNwQyxJQUFJdUIsaUJBQWlCLEdBQUcsRUFBRTtJQUMxQixJQUFJbU8sVUFBVSxDQUFDQyxHQUFHLElBQUlELFVBQVUsQ0FBQ3VCLFFBQVEsRUFBRTtNQUN6QzFQLGlCQUFpQixHQUNmdEMsbUJBQW1CLENBQUN5USxVQUFVLENBQUN1QixRQUFRLENBQUMsQ0FBQ0MsVUFBVSxJQUFJLEVBQUU7SUFDN0Q7SUFDQXBDLE9BQU8sQ0FBQ25GLEdBQUcsQ0FBRUMsSUFBUyxJQUFLO01BQUEsSUFBQXVILFlBQUEsRUFBQUMsV0FBQSxFQUFBQyxZQUFBLEVBQUFDLGNBQUEsRUFBQUMsS0FBQSxFQUFBQyxNQUFBLEVBQUFDLE1BQUE7TUFDekIsSUFBSUMsSUFBSSxHQUFBdk8sYUFBQTtRQUFLd08sS0FBSyxFQUFFO01BQUcsR0FBSy9ILElBQUksQ0FBRTtNQUNsQyxJQUFJOEgsSUFBSSxDQUFDRSxNQUFNLEtBQUssSUFBSSxJQUFJLEVBQUFULFlBQUEsR0FBQU8sSUFBSSxDQUFDRSxNQUFNLGNBQUFULFlBQUEsdUJBQVhBLFlBQUEsQ0FBYS9OLElBQUksTUFBSyxJQUFJLEVBQUU7UUFBQSxJQUFBeU8sYUFBQSxFQUFBQyxhQUFBLEVBQUFDLGFBQUE7UUFDdEQsSUFBSXhTLEtBQUssR0FBR21TLElBQUksQ0FBQ25TLEtBQUssR0FBQTRELGFBQUEsS0FBUXVPLElBQUksQ0FBQ25TLEtBQUssSUFBSyxDQUFDLENBQUM7UUFDL0MsT0FBT0EsS0FBSyxDQUFDeVMsUUFBUTtRQUNyQmxCLFdBQVcsQ0FBQzlFLElBQUksQ0FBQztVQUNmbk0sSUFBSSxFQUFFNlIsSUFBSSxDQUFDTyxLQUFLLElBQUlQLElBQUksQ0FBQ1EsU0FBUztVQUNsQ3ZQLEtBQUssRUFBRSxFQUFBa1AsYUFBQSxHQUFBSCxJQUFJLENBQUNFLE1BQU0sY0FBQUMsYUFBQSx1QkFBWEEsYUFBQSxDQUFhbFAsS0FBSyxLQUFJK08sSUFBSSxDQUFDNUcsS0FBSztVQUN2Q3BLLElBQUksRUFBRWdSLElBQUksQ0FBQ2hSLElBQUk7VUFDZm5CLEtBQUssRUFBRUEsS0FBSztVQUNaNFMsUUFBUSxHQUFBTCxhQUFBLEdBQUVKLElBQUksQ0FBQ0UsTUFBTSxjQUFBRSxhQUFBLHVCQUFYQSxhQUFBLENBQWFLLFFBQVE7VUFDL0JDLFVBQVUsR0FBQUwsYUFBQSxHQUFFTCxJQUFJLENBQUNFLE1BQU0sY0FBQUcsYUFBQSx1QkFBWEEsYUFBQSxDQUFhSyxVQUFVO1VBQ25DQyxLQUFLLEVBQUVYLElBQUksQ0FBQ1ksV0FBVyxHQUFHWixJQUFJLENBQUNZLFdBQVcsR0FBRztRQUMvQyxDQUFDLENBQUM7TUFDSjtNQUNBLE9BQU9aLElBQUksQ0FBQ0UsTUFBTTtNQUNsQkYsSUFBSSxDQUFDYSxNQUFNLEtBQUssS0FBSyxJQUNuQnhCLFdBQVcsQ0FBQy9FLElBQUksQ0FBQztRQUNmbk0sSUFBSSxFQUFFNlIsSUFBSSxDQUFDTyxLQUFLLElBQUlQLElBQUksQ0FBQ1EsU0FBUztRQUNsQ3ZQLEtBQUssRUFBRStPLElBQUksQ0FBQzVHLEtBQUs7UUFDakJ1SCxLQUFLLEVBQUVYLElBQUksQ0FBQ1csS0FBSyxHQUFHWCxJQUFJLENBQUNXLEtBQUssR0FBRyxFQUFFO1FBQ25DM1IsSUFBSSxFQUFFZ1IsSUFBSSxDQUFDaFIsSUFBSTtRQUNmOFIsSUFBSSxFQUFFZCxJQUFJLENBQUNjLElBQUk7UUFDZkMsUUFBUSxFQUFFZixJQUFJLENBQUNlLFFBQVE7UUFDdkJDLFFBQVEsRUFBRWhCLElBQUksQ0FBQ2dCLFFBQVE7UUFDdkJuVCxLQUFLLEVBQUE0RCxhQUFBLEtBQU91TyxJQUFJLENBQUNuUyxLQUFLO01BQ3hCLENBQUMsQ0FBQztNQUVKLElBQ0UsRUFBQTZSLFdBQUEsR0FBQU0sSUFBSSxDQUFDblMsS0FBSyxjQUFBNlIsV0FBQSx1QkFBVkEsV0FBQSxDQUFZSixZQUFZLE1BQUtuTyxTQUFTLElBQ3RDLEVBQUF3TyxZQUFBLEdBQUFLLElBQUksQ0FBQ25TLEtBQUssY0FBQThSLFlBQUEsdUJBQVZBLFlBQUEsQ0FBWUwsWUFBWSxNQUFLLElBQUksRUFDakM7UUFBQSxJQUFBMkIsWUFBQTtRQUNBLE1BQU05UyxJQUFJLEdBQUc2UixJQUFJLENBQUNPLEtBQUssSUFBSVAsSUFBSSxDQUFDUSxTQUFTO1FBQ3pDbEIsWUFBWSxDQUFDblIsSUFBSSxDQUFDLElBQUE4UyxZQUFBLEdBQUdqQixJQUFJLENBQUNuUyxLQUFLLGNBQUFvVCxZQUFBLHVCQUFWQSxZQUFBLENBQVkzQixZQUFZO01BQy9DO01BQ0EsT0FBT1UsSUFBSSxDQUFDVyxLQUFLO01BQ2pCLE9BQU9YLElBQUksQ0FBQ2MsSUFBSTtNQUNoQixJQUFJZCxJQUFJLENBQUNrQixZQUFZLEVBQUU7UUFDckJsQixJQUFJLENBQUNtQixXQUFXLEdBQUc7VUFDakJuUyxJQUFJLEVBQUVnUixJQUFJLENBQUNoUixJQUFJO1VBQ2ZuQixLQUFLLEVBQUVtUyxJQUFJLENBQUNuUztRQUNkLENBQUM7TUFDSDtNQUVBLElBQUl1VCxRQUFRLEdBQUEzUCxhQUFBLEtBQVF1TyxJQUFJLENBQUNuUyxLQUFLLENBQUU7TUFFaEMsSUFBSXVULFFBQVEsYUFBUkEsUUFBUSxlQUFSQSxRQUFRLENBQUVyUSxJQUFJLElBQUksQ0FBQXFRLFFBQVEsYUFBUkEsUUFBUSxnQkFBQXhCLGNBQUEsR0FBUndCLFFBQVEsQ0FBRXJRLElBQUksY0FBQTZPLGNBQUEsdUJBQWRBLGNBQUEsQ0FBZ0I5USxNQUFNLElBQUcsQ0FBQyxFQUFFO1FBQ2hEa1IsSUFBSSxHQUFBdk8sYUFBQTtVQUNGNFAsUUFBUSxFQUFFO1lBQUVDLFNBQVMsRUFBRTtVQUFNLENBQUM7VUFDOUJ0RSxNQUFNLEVBQUdWLElBQVMsSUFBSztZQUNyQixPQUFPLElBQUksQ0FBQ0QsT0FBTyxDQUFDK0UsUUFBUSxFQUFFOUUsSUFBSSxDQUFDO1VBQ3JDO1FBQUMsR0FDRTBELElBQUksQ0FDUjtNQUNIO01BQ0EsT0FBT0EsSUFBSSxDQUFDblMsS0FBSztNQUVqQixJQUFJbVMsSUFBSSxDQUFDaEQsTUFBTSxJQUFJLE9BQU9nRCxJQUFJLENBQUNoRCxNQUFNLElBQUksUUFBUSxFQUFFO1FBQ2pELElBQUl1RSxTQUFTLEdBQUd2QixJQUFJLENBQUNoRCxNQUFNO1FBQzNCZ0QsSUFBSSxHQUFBdk8sYUFBQSxDQUFBQSxhQUFBLEtBQ0N1TyxJQUFJO1VBQ1BoRCxNQUFNLEVBQUVBLENBQUN3RSxLQUFLLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxLQUFLO1lBQ2xDLE1BQU14SCxXQUFXLEdBQUc7Y0FBRW9DLElBQUksRUFBRWtGLEtBQUs7Y0FBRS9OLE1BQU0sRUFBRWdPLE9BQU87Y0FBRXRKLEtBQUssRUFBRXVKLE1BQU07Y0FBRTlOLEtBQUssRUFBRSxJQUFJLENBQUMvRixLQUFLLENBQUMrRjtZQUFNLENBQUM7WUFDNUYsTUFBTXdHLElBQUksR0FBRyxJQUFJQyxRQUFRLENBQUMsbUJBQW1CLEVBQUVrSCxTQUFTLENBQUM7WUFDekQsTUFBTTVTLEdBQUcsR0FBR3lMLElBQUksQ0FBQ0YsV0FBVyxFQUFFLElBQUksQ0FBQ3JNLEtBQUssQ0FBQ2dHLEtBQUssQ0FBQztZQUMvQyxPQUFPbEYsR0FBRztVQUNaO1FBQUMsRUFDRjtNQUNIO01BQ0EsSUFBSXFSLElBQUksQ0FBQ2hSLElBQUksSUFBSSxRQUFRLElBQUksRUFBQTZRLEtBQUEsR0FBQUcsSUFBSSxjQUFBSCxLQUFBLHVCQUFKQSxLQUFBLENBQU04QixVQUFVLE1BQUssS0FBSyxFQUFFO1FBQ3ZEM0IsSUFBSSxHQUFBdk8sYUFBQTtVQUNGdUwsTUFBTSxFQUFFQSxDQUFDd0UsS0FBSyxFQUFFL04sTUFBTSxLQUFLO1lBQ3pCLElBQUltTyxLQUFLLENBQUNDLE9BQU8sQ0FBQ3BPLE1BQU0sQ0FBQ3VNLElBQUksQ0FBQ1EsU0FBUyxDQUFDLENBQUMsRUFBRTtjQUN6QyxNQUFNc0IsS0FBSyxHQUFHck8sTUFBTSxDQUFDdU0sSUFBSSxDQUFDUSxTQUFTLENBQUM7Y0FDcEMsSUFBSXNCLEtBQUssQ0FBQ2hULE1BQU0sSUFBSSxDQUFDLEVBQUU7Z0JBQUEsSUFBQWlULE9BQUE7Z0JBQ3JCLG9CQUNFOVYsS0FBQSxDQUFBNk0sYUFBQSxDQUFDek0sTUFBTTtrQkFDTDJDLElBQUksRUFBRSxNQUFPO2tCQUNiMkosT0FBTyxFQUFFQSxDQUFBLEtBQU07b0JBQ2JsTCxPQUFPLENBQUN1VSxRQUFRLENBQUNGLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQ0csTUFBTSxDQUFDO2tCQUNuQztnQkFBRSxJQUFBRixPQUFBLEdBRURELEtBQUssQ0FBQyxDQUFDLENBQUMsY0FBQUMsT0FBQSx1QkFBUkEsT0FBQSxDQUFVRyxRQUNMLENBQUM7Y0FFYixDQUFDLE1BQU0sSUFBSUosS0FBSyxDQUFDaFQsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDM0Isb0JBQ0U3QyxLQUFBLENBQUE2TSxhQUFBLENBQUN6TSxNQUFNO2tCQUNMMkMsSUFBSSxFQUFFLE1BQU87a0JBQ2IySixPQUFPLEVBQUVBLENBQUEsS0FBTTtvQkFDYixJQUFJd0osT0FBTyxHQUFHLEVBQVM7b0JBQ3ZCTCxLQUFLLENBQUM3SixHQUFHLENBQUVDLElBQUksSUFBSztzQkFDbEJpSyxPQUFPLENBQUM3SCxJQUFJLENBQUNwQyxJQUFJLENBQUMrSixNQUFNLENBQUM7b0JBQzNCLENBQUMsQ0FBQztvQkFDRnhVLE9BQU8sQ0FBQzJVLFdBQVcsQ0FBQ0QsT0FBTyxDQUFDN04sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2tCQUN4QztnQkFBRSxHQUVELE1BQ0ssQ0FBQztjQUViO1lBQ0Y7VUFDRjtRQUFDLEdBQ0UwTCxJQUFJLENBQ1I7TUFDSDtNQUNBLElBQUlBLElBQUksQ0FBQ2hSLElBQUksSUFBSSxPQUFPLElBQUksRUFBQThRLE1BQUEsR0FBQUUsSUFBSSxjQUFBRixNQUFBLHVCQUFKQSxNQUFBLENBQU02QixVQUFVLE1BQUssS0FBSyxFQUFFO1FBQ3REM0IsSUFBSSxHQUFBdk8sYUFBQTtVQUNGdUwsTUFBTSxFQUFFQSxDQUFDd0UsS0FBSyxFQUFFL04sTUFBTSxLQUFLO1lBQ3pCLElBQUltTyxLQUFLLENBQUNDLE9BQU8sQ0FBQ3BPLE1BQU0sQ0FBQ3VNLElBQUksQ0FBQ1EsU0FBUyxDQUFDLENBQUMsRUFBRTtjQUN6QyxNQUFNc0IsS0FBSyxHQUFHck8sTUFBTSxDQUFDdU0sSUFBSSxDQUFDUSxTQUFTLENBQUM7Y0FDcEMsSUFBSXNCLEtBQUssQ0FBQ2hULE1BQU0sSUFBSSxDQUFDLEVBQUU7Z0JBQUEsSUFBQXVULFFBQUE7Z0JBQ3JCLG9CQUNFcFcsS0FBQSxDQUFBNk0sYUFBQTtrQkFBS0MsU0FBUyxFQUFDO2dCQUF3QixJQUFBc0osUUFBQSxHQUNwQ1AsS0FBSyxDQUFDLENBQUMsQ0FBQyxjQUFBTyxRQUFBLHVCQUFSQSxRQUFBLENBQVVILFFBQ1IsQ0FBQztjQUVWLENBQUMsTUFBTSxJQUFJSixLQUFLLENBQUNoVCxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUMzQixvQkFDRTdDLEtBQUEsQ0FBQTZNLGFBQUEsQ0FBQ3pNLE1BQU07a0JBQUMyQyxJQUFJLEVBQUUsTUFBTztrQkFBQzJKLE9BQU8sRUFBRUEsQ0FBQSxLQUFNLENBQUU7Z0JBQUUsR0FBQywwQkFFbEMsQ0FBQztjQUViO1lBQ0Y7VUFDRjtRQUFDLEdBQ0VxSCxJQUFJLENBQ1I7TUFDSDtNQUNBLE9BQU9BLElBQUksQ0FBQ2hSLElBQUk7TUFDaEIsSUFBSSxFQUFBK1EsTUFBQSxHQUFBQyxJQUFJLGNBQUFELE1BQUEsdUJBQUpBLE1BQUEsQ0FBTTRCLFVBQVUsTUFBSyxLQUFLLEVBQUV4QyxXQUFXLENBQUM3RSxJQUFJLENBQUMwRixJQUFJLENBQUM7SUFDeEQsQ0FBQyxDQUFDO0lBQ0YsTUFBTXNDLFdBQWdCLEdBQUcsRUFBRTtJQUMzQixNQUFNO01BQUUxSTtJQUFpQixDQUFDLEdBQUd2TSxNQUFNLENBQUMsQ0FBQztJQUNyQyxJQUFJeU0sUUFBUSxHQUFHLElBQUk7SUFDbkIsSUFBSSxDQUFBSCxXQUFXLGFBQVhBLFdBQVcsdUJBQVhBLFdBQVcsQ0FBRUcsUUFBUSxNQUFLLEtBQUssRUFBRUEsUUFBUSxHQUFHLEtBQUssQ0FBQyxLQUNqRCxJQUFJRixnQkFBZ0IsQ0FBQ0UsUUFBUSxLQUFLLEtBQUssRUFBRUEsUUFBUSxHQUFHLEtBQUs7SUFDOUQsTUFBTXlJLFNBQVMsR0FBRztNQUNoQjtNQUNBMUIsTUFBTSxFQUFFO1FBQUUxUyxJQUFJLEVBQUUsSUFBSTtRQUFFc0csSUFBSSxFQUFFLFFBQVE7UUFBRW1FLElBQUksZUFBRTNNLEtBQUEsQ0FBQTZNLGFBQUEsQ0FBQ2pNLFlBQVksTUFBRTtNQUFFLENBQUM7TUFDOUQyVixNQUFNLEVBQUU7UUFBRXJVLElBQUksRUFBRSxJQUFJO1FBQUVzRyxJQUFJLEVBQUUsUUFBUTtRQUFFbUUsSUFBSSxlQUFFM00sS0FBQSxDQUFBNk0sYUFBQSxDQUFDN0wsY0FBYyxNQUFFO01BQUUsQ0FBQztNQUNoRWlULE1BQU0sRUFBRTtRQUFFL1IsSUFBSSxFQUFFLElBQUk7UUFBRXNHLElBQUksRUFBRSxRQUFRO1FBQUVtRSxJQUFJLGVBQUUzTSxLQUFBLENBQUE2TSxhQUFBLENBQUNsTSxXQUFXLE1BQUU7TUFBRTtJQUM5RCxDQUFDO0lBQ0QsTUFBTTZWLFlBQVksR0FBRyxTQUFBQSxDQUFDaE8sSUFBSSxFQUFnQjtNQUFBLElBQUFpTyxlQUFBO01BQUEsSUFBZGhSLElBQUksR0FBQVIsU0FBQSxDQUFBcEMsTUFBQSxRQUFBb0MsU0FBQSxRQUFBQyxTQUFBLEdBQUFELFNBQUEsTUFBRyxFQUFFO01BQ25DLElBQUlyRCxLQUFLLEdBQUcsQ0FBQyxDQUFDO01BQ2QsSUFBSTZELElBQUksRUFBRTtRQUNSN0QsS0FBSyxHQUFHO1VBQUVtTSxVQUFVLEVBQUV0STtRQUFLLENBQUM7TUFDOUI7TUFDQSxvQkFDRXpGLEtBQUEsQ0FBQTZNLGFBQUEsQ0FBQ3pNLE1BQU0sRUFBQTJNLFFBQUE7UUFDTEwsT0FBTyxFQUFHbEYsTUFBVyxJQUFLO1VBQ3hCLElBQUlnQixJQUFJLElBQUksUUFBUSxFQUFFO1lBQ3BCd0ksTUFBSSxDQUFDM0ssUUFBUSxDQUFDbUIsTUFBTSxDQUFDO1VBQ3ZCLENBQUMsTUFBTTtZQUNMLElBQUlnQixJQUFJLElBQUksUUFBUSxJQUFJN0IsV0FBVyxDQUFDK1AsUUFBUSxFQUFFO2NBQzVDelYsY0FBYyxDQUNaMEYsV0FBVyxDQUFDK1AsUUFBUSxFQUNwQjtnQkFDRW5QLE9BQU8sRUFBRXlKLE1BQUksQ0FBQ3BQLEtBQUssQ0FBQzJGLE9BQU87Z0JBQzNCQyxNQUFNLEVBQUVBLE1BQU0sQ0FBQ3FJLFNBQVMsSUFBSXJJLE1BQU07Z0JBQ2xDRyxLQUFLLEVBQUVxSixNQUFJLENBQUNwUCxLQUFLLENBQUMrRjtjQUNwQixDQUFDLEVBQ0RxSixNQUFJLENBQUNwUCxLQUFLLENBQUNnRyxLQUNiLENBQUM7Y0FDRDtZQUNGLENBQUMsTUFBTSxJQUFJWSxJQUFJLElBQUksUUFBUSxJQUFJN0IsV0FBVyxDQUFDbkUsUUFBUSxFQUFFO2NBQ25EdkIsY0FBYyxDQUNaMEYsV0FBVyxDQUFDbkUsUUFBUSxFQUNwQjtnQkFDRStFLE9BQU8sRUFBRXlKLE1BQUksQ0FBQ3BQLEtBQUssQ0FBQzJGLE9BQU87Z0JBQzNCQyxNQUFNLEVBQUVBLE1BQU0sQ0FBQ3FJLFNBQVMsSUFBSXJJLE1BQU07Z0JBQ2xDRyxLQUFLLEVBQUVxSixNQUFJLENBQUNwUCxLQUFLLENBQUMrRjtjQUNwQixDQUFDLEVBQ0RxSixNQUFJLENBQUNwUCxLQUFLLENBQUNnRyxLQUNiLENBQUM7Y0FDRDtZQUNGO1lBQ0EsSUFBSWdLLFVBQVUsRUFBRTtjQUNkQSxVQUFVLENBQUNwSyxNQUFNLENBQUNxSSxTQUFTLElBQUlySSxNQUFNLEVBQUVnQixJQUFJLENBQUM7Y0FDNUM7WUFDRjtZQUVBd0ksTUFBSSxDQUFDNUwsUUFBUSxDQUFDb0MsTUFBTSxDQUFDcUksU0FBUyxJQUFJckksTUFBTSxFQUFFZ0IsSUFBSSxFQUFFLE1BQU07Y0FBQSxJQUFBbU8scUJBQUEsRUFBQUMsc0JBQUE7Y0FDcEQsSUFBSWxTLFFBQVEsR0FBRzhELElBQUksSUFBSSxRQUFRLElBQUFtTyxxQkFBQSxHQUFHM0YsTUFBSSxDQUFDcFAsS0FBSyxDQUFDa0gsV0FBVyxjQUFBNk4scUJBQUEsdUJBQXRCQSxxQkFBQSxDQUF3QkUsZ0JBQWdCLElBQUFELHNCQUFBLEdBQUc1RixNQUFJLENBQUNwUCxLQUFLLENBQUNrSCxXQUFXLGNBQUE4TixzQkFBQSx1QkFBdEJBLHNCQUFBLENBQXdCRSxnQkFBZ0I7Y0FDckhwUyxRQUFRLElBQUl6RCxjQUFjLENBQ3hCeUQsUUFBUSxFQUNSO2dCQUNFNkMsT0FBTyxFQUFFeUosTUFBSSxDQUFDcFAsS0FBSyxDQUFDMkYsT0FBTztnQkFDM0JDLE1BQU0sRUFBRUEsTUFBTSxDQUFDcUksU0FBUyxJQUFJckksTUFBTTtnQkFDbENHLEtBQUssRUFBRXFKLE1BQUksQ0FBQ3BQLEtBQUssQ0FBQytGO2NBQ3BCLENBQUMsRUFDRHFKLE1BQUksQ0FBQ3BQLEtBQUssQ0FBQ2dHLEtBQ2IsQ0FBQztZQUNILENBQUMsQ0FBQztVQUNKO1FBQ0YsQ0FBRTtRQUNGK0UsSUFBSSxFQUFFa0IsUUFBUSxHQUFHeUksU0FBUyxDQUFDOU4sSUFBSSxDQUFDLENBQUNtRSxJQUFJLEdBQUcsSUFBSztRQUM3QzVKLElBQUksRUFBQztNQUFNLEdBQ1BuQixLQUFLLElBQUE2VSxlQUFBLEdBRVJILFNBQVMsQ0FBQzlOLElBQUksQ0FBQyxjQUFBaU8sZUFBQSx1QkFBZkEsZUFBQSxDQUFpQnZVLElBQ1osQ0FBQztJQUViLENBQUM7SUFDRCxNQUFNNlUsYUFBYSxHQUFJdk8sSUFBSSxJQUFLO01BQzlCLElBQUksQ0FBQ3VKLFVBQVUsQ0FBQ0MsR0FBRyxFQUFFO1FBQ25CLE9BQU8sSUFBSTtNQUNiLENBQUMsTUFBTTtRQUNMLE9BQU9wTyxpQkFBaUIsQ0FBQ29ULE9BQU8sQ0FBQ3hPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztNQUM3QztJQUNGLENBQUM7SUFDRGtKLE9BQU8sQ0FBQzFGLEdBQUcsQ0FBRUMsSUFBUyxJQUFLO01BQ3pCLElBQUksQ0FBQ0EsSUFBSSxJQUFJLEtBQUssSUFBSUEsSUFBSSxDQUFDekQsSUFBSSxJQUFJLEtBQUssS0FBS3VPLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUNqRVYsV0FBVyxDQUFDaEksSUFBSSxlQUNkck8sS0FBQSxDQUFBNk0sYUFBQSxDQUFDek0sTUFBTTtVQUNMMkMsSUFBSSxFQUFFLFNBQVU7VUFDaEIySixPQUFPLEVBQUVBLENBQUEsS0FBTTtZQUNiLE1BQU07Y0FBRWtGLFVBQVU7Y0FBRWpMLFdBQVcsR0FBRyxDQUFDO1lBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQy9FLEtBQUs7WUFDbkQsSUFBSStFLFdBQVcsYUFBWEEsV0FBVyxlQUFYQSxXQUFXLENBQUVzUSxLQUFLLEVBQUU7Y0FDdEJoVyxjQUFjLENBQ1owRixXQUFXLENBQUNzUSxLQUFLLEVBQ2pCO2dCQUNFMVAsT0FBTyxFQUFFLElBQUksQ0FBQzNGLEtBQUssQ0FBQzJGLE9BQU87Z0JBQzNCSSxLQUFLLEVBQUUsSUFBSSxDQUFDL0YsS0FBSyxDQUFDK0Y7Y0FDcEIsQ0FBQyxFQUNELElBQUksQ0FBQy9GLEtBQUssQ0FBQ2dHLEtBQ2IsQ0FBQztjQUNEO1lBQ0Y7WUFDQSxJQUFJZ0ssVUFBVSxFQUFFO2NBQ2RBLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO2NBQ3ZCO1lBQ0Y7WUFDQSxJQUFJLENBQUN4TSxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNO2NBQUEsSUFBQThSLHNCQUFBLEVBQUFDLHNCQUFBO2NBQzlCLEVBQUFELHNCQUFBLE9BQUksQ0FBQ3RWLEtBQUssQ0FBQ2tILFdBQVcsY0FBQW9PLHNCQUFBLHVCQUF0QkEsc0JBQUEsQ0FBd0JFLGFBQWEsS0FBSW5XLGNBQWMsRUFBQWtXLHNCQUFBLEdBQ3JELElBQUksQ0FBQ3ZWLEtBQUssQ0FBQ2tILFdBQVcsY0FBQXFPLHNCQUFBLHVCQUF0QkEsc0JBQUEsQ0FBd0JDLGFBQWEsRUFDckM7Z0JBQ0U3UCxPQUFPLEVBQUUsSUFBSSxDQUFDM0YsS0FBSyxDQUFDMkYsT0FBTztnQkFDM0JJLEtBQUssRUFBRSxJQUFJLENBQUMvRixLQUFLLENBQUMrRjtjQUNwQixDQUFDLEVBQ0QsSUFBSSxDQUFDL0YsS0FBSyxDQUFDZ0csS0FDYixDQUFDO1lBQ0gsQ0FBQyxDQUFDO1VBSUosQ0FBRTtVQUNGK0UsSUFBSSxlQUFFM00sS0FBQSxDQUFBNk0sYUFBQSxDQUFDL0wsWUFBWSxNQUFFO1FBQUUsR0FDeEIsY0FFTyxDQUNWLENBQUM7TUFDSCxDQUFDLE1BQU0sSUFDTCxDQUFDbUwsSUFBSSxJQUFJLFFBQVEsSUFBSUEsSUFBSSxDQUFDekQsSUFBSSxJQUFJLFFBQVEsS0FDMUN1TyxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQ3ZCO1FBQ0EsSUFBSXJRLGNBQWMsSUFBSSxTQUFTLEVBQUU7VUFDL0IyUCxXQUFXLENBQUNoSSxJQUFJLGVBQ2RyTyxLQUFBLENBQUE2TSxhQUFBLENBQUN6TTtVQUNDO1VBQUE7WUFDQXNNLE9BQU8sRUFBRSxJQUFJLENBQUNyRyxRQUFRLENBQUNnUixJQUFJLENBQUMsSUFBSSxDQUFFO1lBQ2xDMUssSUFBSSxlQUFFM00sS0FBQSxDQUFBNk0sYUFBQSxDQUFDN0wsY0FBYyxNQUFFLENBQUU7WUFDekJzVyxNQUFNO1VBQUEsR0FDUCxjQUVPLENBQ1YsQ0FBQztRQUNILENBQUMsTUFBTTtVQUNMOUosYUFBYSxDQUFDYSxJQUFJLENBQUNtSSxZQUFZLENBQUN2SyxJQUFJLENBQUN6RCxJQUFJLElBQUl5RCxJQUFJLEVBQUVBLElBQUksQ0FBQzhCLFVBQVUsQ0FBQyxDQUFDO1FBQ3RFO01BQ0YsQ0FBQyxNQUFNO1FBQ0wsSUFBSWdKLGFBQWEsQ0FBQzlLLElBQUksQ0FBQ3pELElBQUksR0FBR3lELElBQUksQ0FBQ3pELElBQUksR0FBR3lELElBQUksQ0FBQyxFQUFFO1VBQy9DdUIsYUFBYSxDQUFDYSxJQUFJLENBQ2hCbUksWUFBWSxDQUFDdkssSUFBSSxDQUFDekQsSUFBSSxHQUFHeUQsSUFBSSxDQUFDekQsSUFBSSxHQUFHeUQsSUFBSSxFQUFFQSxJQUFJLENBQUM4QixVQUFVLENBQzVELENBQUM7UUFDSDtNQUNGO0lBQ0YsQ0FBQyxDQUFDO0lBRUYsSUFBSTRILEtBQUssQ0FBQ0MsT0FBTyxDQUFDN0osUUFBUSxDQUFDLEVBQUU7TUFDM0JBLFFBQVEsQ0FBQ0MsR0FBRyxDQUFFQyxJQUFTLElBQUs7UUFDMUIsSUFBSTBKLEtBQUssQ0FBQ0MsT0FBTyxDQUFDM0osSUFBSSxDQUFDLEVBQUU7VUFDdkJBLElBQUksQ0FBQ0QsR0FBRyxDQUFFdUwsS0FBSyxJQUFLO1lBQUEsSUFBQUMsWUFBQSxFQUFBQyxhQUFBLEVBQUFDLGFBQUEsRUFBQUMsYUFBQTtZQUNsQixJQUNFLENBQUFKLEtBQUssYUFBTEEsS0FBSyxnQkFBQUMsWUFBQSxHQUFMRCxLQUFLLENBQUUzVixLQUFLLGNBQUE0VixZQUFBLHVCQUFaQSxZQUFBLENBQWMvSyxRQUFRLEtBQUksWUFBWSxJQUN0Q3NLLGFBQWEsQ0FBQ1EsS0FBSyxhQUFMQSxLQUFLLGdCQUFBRSxhQUFBLEdBQUxGLEtBQUssQ0FBRTNWLEtBQUssY0FBQTZWLGFBQUEsdUJBQVpBLGFBQUEsQ0FBY2pQLElBQUksQ0FBQyxFQUNqQztjQUNBNk4sV0FBVyxDQUFDaEksSUFBSSxDQUFDa0osS0FBSyxDQUFDO1lBQ3pCLENBQUMsTUFBTSxJQUNMLENBQUFBLEtBQUssYUFBTEEsS0FBSyxnQkFBQUcsYUFBQSxHQUFMSCxLQUFLLENBQUUzVixLQUFLLGNBQUE4VixhQUFBLHVCQUFaQSxhQUFBLENBQWNqTCxRQUFRLEtBQUksY0FBYyxJQUN4Q3NLLGFBQWEsQ0FBQ1EsS0FBSyxhQUFMQSxLQUFLLGdCQUFBSSxhQUFBLEdBQUxKLEtBQUssQ0FBRTNWLEtBQUssY0FBQStWLGFBQUEsdUJBQVpBLGFBQUEsQ0FBY25QLElBQUksQ0FBQyxFQUNqQztjQUNBZ0YsYUFBYSxDQUFDYSxJQUFJLENBQUNrSixLQUFLLENBQUM7WUFDM0I7VUFDRixDQUFDLENBQUM7UUFDSixDQUFDLE1BQU07VUFBQSxJQUFBSyxZQUFBLEVBQUFDLFlBQUEsRUFBQUMsWUFBQSxFQUFBQyxZQUFBO1VBQ0wsSUFDRSxDQUFBOUwsSUFBSSxhQUFKQSxJQUFJLGdCQUFBMkwsWUFBQSxHQUFKM0wsSUFBSSxDQUFFckssS0FBSyxjQUFBZ1csWUFBQSx1QkFBWEEsWUFBQSxDQUFhbkwsUUFBUSxLQUFJLFlBQVksSUFDckNzSyxhQUFhLENBQUM5SyxJQUFJLGFBQUpBLElBQUksZ0JBQUE0TCxZQUFBLEdBQUo1TCxJQUFJLENBQUVySyxLQUFLLGNBQUFpVyxZQUFBLHVCQUFYQSxZQUFBLENBQWFyUCxJQUFJLENBQUMsRUFDaEM7WUFDQTZOLFdBQVcsQ0FBQ2hJLElBQUksQ0FBQ3BDLElBQUksQ0FBQztVQUN4QixDQUFDLE1BQU0sSUFDTCxDQUFBQSxJQUFJLGFBQUpBLElBQUksZ0JBQUE2TCxZQUFBLEdBQUo3TCxJQUFJLENBQUVySyxLQUFLLGNBQUFrVyxZQUFBLHVCQUFYQSxZQUFBLENBQWFyTCxRQUFRLEtBQUksY0FBYyxJQUN2Q3NLLGFBQWEsQ0FBQzlLLElBQUksYUFBSkEsSUFBSSxnQkFBQThMLFlBQUEsR0FBSjlMLElBQUksQ0FBRXJLLEtBQUssY0FBQW1XLFlBQUEsdUJBQVhBLFlBQUEsQ0FBYXZQLElBQUksQ0FBQyxFQUNoQztZQUNBZ0YsYUFBYSxDQUFDYSxJQUFJLENBQUNwQyxJQUFJLENBQUM7VUFDMUI7UUFDRjtNQUNGLENBQUMsQ0FBQztJQUNKLENBQUMsTUFBTSxJQUFJRixRQUFRLEVBQUU7TUFDbkIsTUFBTTtRQUFFbks7TUFBVyxDQUFDLEdBQUdtSyxRQUFRO01BQy9CLElBQUksQ0FBQW5LLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFNkssUUFBUSxLQUFJLFlBQVksSUFBSXNLLGFBQWEsQ0FBQ25WLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFNEcsSUFBSSxDQUFDLEVBQUU7UUFDakU2TixXQUFXLENBQUNoSSxJQUFJLENBQUN0QyxRQUFRLENBQUM7TUFDNUIsQ0FBQyxNQUFNLElBQ0wsQ0FBQW5LLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFNkssUUFBUSxLQUFJLGNBQWMsSUFDakNzSyxhQUFhLENBQUNuVixLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRTRHLElBQUksQ0FBQyxFQUMxQjtRQUNBZ0YsYUFBYSxDQUFDYSxJQUFJLENBQUN0QyxRQUFRLENBQUM7TUFDOUI7SUFDRjtJQUNBbUcsWUFBWSxJQUNWZ0IsV0FBVyxDQUFDN0UsSUFBSSxDQUFDO01BQ2ZsQixLQUFLLEVBQUUsSUFBSTtNQUNYb0gsU0FBUyxFQUFFLFFBQVE7TUFDbkJ5RCxLQUFLLEVBQUV0SyxXQUFXLGFBQVhBLFdBQVcsZUFBWEEsV0FBVyxDQUFFdUssU0FBUyxHQUN6QnZLLFdBQVcsYUFBWEEsV0FBVyx1QkFBWEEsV0FBVyxDQUFFdUssU0FBUyxHQUN0QnRLLGdCQUFnQixDQUFDc0ssU0FBUyxHQUN4QnRLLGdCQUFnQixDQUFDc0ssU0FBUyxHQUMxQixNQUFNO01BQ1pqRSxLQUFLLEVBQUV0RyxXQUFXLGFBQVhBLFdBQVcsZUFBWEEsV0FBVyxDQUFFc0csS0FBSyxHQUNyQnRHLFdBQVcsYUFBWEEsV0FBVyx1QkFBWEEsV0FBVyxDQUFFc0csS0FBSyxHQUNsQnJHLGdCQUFnQixDQUFDcUcsS0FBSyxHQUNwQnJHLGdCQUFnQixDQUFDcUcsS0FBSyxHQUN0QixHQUFHO01BQ1RrRSxLQUFLLEVBQUUsT0FBTztNQUNkbkgsTUFBTSxFQUFFQSxDQUFDVixJQUFTLEVBQUU3SSxNQUFXLEtBQUs7UUFDbEMsb0JBQ0V4SCxLQUFBLENBQUE2TSxhQUFBO1VBQUtDLFNBQVMsRUFBRTVMLE9BQU8sQ0FBQ08sTUFBTSxFQUFFLHFCQUFxQjtRQUFFLEdBQ3BELElBQUksQ0FBQzhMLGtCQUFrQixDQUFDQyxhQUFhLEVBQUVoRyxNQUFNLENBQzNDLENBQUM7TUFFVjtJQUNGLENBQUMsQ0FBQztJQUVKLElBQUk0SyxXQUFXLEVBQ2JjLFdBQVcsR0FBRyxDQUNaO01BQ0UvRixLQUFLLEVBQUUsSUFBSTtNQUNYNkcsS0FBSyxFQUFFLEVBQUU7TUFDVGdFLEtBQUssRUFBRSxRQUFRO01BQ2ZqSCxNQUFNLEVBQUVBLENBQUNWLElBQUksRUFBRThILE9BQU8sRUFBRWpNLEtBQUssS0FBSztRQUNoQyxvQkFBT2xNLEtBQUEsQ0FBQTZNLGFBQUEsQ0FBQTdNLEtBQUEsQ0FBQW9ZLFFBQUEsUUFBR2xNLEtBQUssR0FBRyxDQUFJLENBQUM7TUFDekI7SUFDRixDQUFDLEVBQ0QsR0FBR2dILFdBQVcsQ0FDZjtJQUNILElBQUltRixVQUFVLEdBQUc5TCxVQUFVLElBQUk0RyxXQUFXLENBQUN0USxNQUFNLEdBQUcsQ0FBQztJQUNyRCxJQUFJO01BQUV5VjtJQUFVLENBQUMsR0FBR2xYLE1BQU0sQ0FBQyxDQUFDO0lBQzVCLElBQUltWCxRQUFRLEdBQ1Y5RyxjQUFjLElBQ2Q0RSxXQUFXLENBQUN4VCxNQUFNLEdBQUcsQ0FBQyxJQUN0QmlQLGtCQUFrQixJQUFJLFFBQVE7SUFDaEMsSUFBSXpGLFdBQVcsR0FBRyxFQUNoQjdDLFVBQVUsQ0FBQ2dQLE9BQU8sSUFBSSxLQUFLLElBQzNCLEVBQUF2SCxtQkFBQSxHQUFBekgsVUFBVSxDQUFDZ1AsT0FBTyxjQUFBdkgsbUJBQUEsdUJBQWxCQSxtQkFBQSxDQUFvQnhMLElBQUksS0FBSSxLQUFLLElBQ2pDLEVBQUF5TCxvQkFBQSxHQUFBMUgsVUFBVSxDQUFDZ1AsT0FBTyxjQUFBdEgsb0JBQUEsZ0JBQUFBLG9CQUFBLEdBQWxCQSxvQkFBQSxDQUFvQnVILEtBQUssY0FBQXZILG9CQUFBLHVCQUF6QkEsb0JBQUEsQ0FBMkJyTyxNQUFNLEtBQUksQ0FBQyxJQUN0QyxDQUFBeVYsU0FBUyxhQUFUQSxTQUFTLHVCQUFUQSxTQUFTLENBQUU3UyxJQUFJLEtBQUksS0FBSyxDQUN6QjtJQUNELElBQUlpVCxpQkFBaUIsR0FBRyxFQUFFO0lBQzFCLElBQUlDLFVBQVUsR0FBR3JHLFVBQVUsSUFBSWlHLFFBQVEsR0FBRyxFQUFFLEdBQUcsQ0FBQztJQUNoRCxJQUFJSyxhQUFhLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzVCLElBQUlDLGtCQUFrQixHQUNwQmxWLGFBQWEsR0FBR2dWLFVBQVUsR0FBR0MsYUFBYTtJQUM1QyxJQUFJRSxnQkFBZ0IsR0FBR3RQLFVBQVUsQ0FBQ3VQLFVBQVUsS0FBSyxLQUFLLEdBQUksRUFBRSxHQUFHLEVBQUUsR0FBSSxDQUFDLEVBQUM7SUFDdkUsSUFBSUMsV0FBVyxHQUFHSCxrQkFBa0IsR0FBR0MsZ0JBQWdCO0lBQ3ZELElBQUlHLGdCQUFnQixHQUFHSixrQkFBa0IsR0FBR0gsaUJBQWlCLEdBQUdJLGdCQUFnQjtJQUNoRjtJQUNBLE1BQU1JLE1BQU0sR0FBR2pHLFdBQVcsQ0FBQ2lHLE1BQU07SUFDakNqRyxXQUFXLEdBQUF6TixhQUFBLENBQUFBLGFBQUEsS0FDTnlOLFdBQVc7TUFDZGlHLE1BQU0sRUFBQTFULGFBQUE7UUFBSTJULENBQUMsRUFBRSxhQUFhO1FBQUVDLENBQUMsRUFBRUg7TUFBZ0IsR0FBS0MsTUFBTTtJQUFFLEVBQzdEO0lBQ0Q7SUFDQSxvQkFDRWxaLEtBQUEsQ0FBQTZNLGFBQUE7TUFDRUMsU0FBUyxFQUFFck0sR0FBRyxDQUFDUyxPQUFPLENBQUNPLE1BQU0sRUFBRSxjQUFjLENBQUMsRUFBRXFMLFNBQVMsQ0FBRTtNQUMzRHVNLEdBQUcsRUFBRSxJQUFJLENBQUM5UjtJQUFRLEdBRWpCLElBQUksQ0FBQzNGLEtBQUssQ0FBQzBYLFNBQVMsaUJBQ25CdFosS0FBQSxDQUFBNk0sYUFBQTtNQUFLQyxTQUFTLEVBQUVyTSxHQUFHLENBQUNTLE9BQU8sQ0FBQ08sTUFBTSxFQUFFLG9CQUFvQixDQUFDO0lBQUUsR0FDeEQsSUFBSSxDQUFDRyxLQUFLLENBQUMwWCxTQUNULENBQ04sZUFDRHRaLEtBQUEsQ0FBQTZNLGFBQUE7TUFDRUMsU0FBUyxFQUFFck0sR0FBRyxDQUFDUyxPQUFPLENBQUNPLE1BQU0sRUFBRSxtQkFBbUIsQ0FBQyxDQUFFO01BQ3JEdUwsS0FBSyxFQUFFO1FBQUV1TSxPQUFPLEVBQUU7TUFBTztJQUFFLEdBRTFCaEksUUFBUSxpQkFDUHZSLEtBQUEsQ0FBQTZNLGFBQUE7TUFBS0MsU0FBUyxFQUFFNUwsT0FBTyxDQUFDTyxNQUFNLEVBQUUsbUJBQW1CO0lBQUUsR0FDbERxUixTQUFTLGlCQUNSOVMsS0FBQSxDQUFBNk0sYUFBQTtNQUFLQyxTQUFTLEVBQUU1TCxPQUFPLENBQUNPLE1BQU0sRUFBRSxZQUFZO0lBQUUsR0FBRXFSLFNBQWUsQ0FDaEUsZUFDRDlTLEtBQUEsQ0FBQTZNLGFBQUE7TUFDRUMsU0FBUyxFQUFFck0sR0FBRyxDQUFDUyxPQUFPLENBQUNPLE1BQU0sRUFBRSxjQUFjLENBQUMsRUFBRTtRQUM5QyxDQUFDUCxPQUFPLENBQUNPLE1BQU0sRUFBRSxzQkFBc0IsQ0FBQyxHQUFHLENBQUNxUjtNQUM5QyxDQUFDO0lBQUUsZ0JBRUg5UyxLQUFBLENBQUE2TSxhQUFBLENBQUMxTSxJQUFJLEVBQUE0TSxRQUFBO01BQ0h0RCxLQUFLLEVBQUFqRSxhQUFBLEtBQU9tTixTQUFTLENBQUc7TUFDeEI5RSxRQUFRLEVBQUUsS0FBTTtNQUNoQjJMLFNBQVMsRUFBRSxLQUFNO01BQ2pCQyxVQUFVLEVBQUU3RyxVQUFXO01BQ3ZCOEcsUUFBUSxFQUFFLElBQUksQ0FBQzFLLFVBQVUsQ0FBQ3FJLElBQUksQ0FBQyxJQUFJLENBQUU7TUFDckNwSSxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUM1TSxLQUFLLENBQUNlLGVBQWUsQ0FBRTtNQUMzQ3lQLFVBQVUsRUFBRUEsVUFBVztNQUN2QndHLEdBQUcsRUFBRSxJQUFJLENBQUNyTztJQUFRLEdBQ2QrSCxlQUFlLENBQ3BCLENBQ0UsQ0FDRixDQUNOLGVBQ0QvUyxLQUFBLENBQUE2TSxhQUFBO01BQ0VDLFNBQVMsRUFBRXJNLEdBQUcsQ0FBQ1MsT0FBTyxDQUFDTyxNQUFNLEVBQUUsb0JBQW9CLENBQUMsRUFBRTtRQUNwRCxDQUFDUCxPQUFPLENBQUNPLE1BQU0sRUFBRSw0QkFBNEIsQ0FBQyxHQUFHLENBQUM4UDtNQUNwRCxDQUFDO0lBQUUsR0FFRmhGLFVBQVUsSUFBSTRHLFdBQVcsQ0FBQ3RRLE1BQU0sR0FBRyxDQUFDLGlCQUNuQzdDLEtBQUEsQ0FBQTZNLGFBQUE7TUFBS0MsU0FBUyxFQUFFNUwsT0FBTyxDQUFDTyxNQUFNLEVBQUUsMkJBQTJCO0lBQUUsZ0JBQzNEekIsS0FBQSxDQUFBNk0sYUFBQSxDQUFDdEwsWUFBWTtNQUNYNFIsV0FBVyxFQUFFQSxXQUFZO01BQ3pCckIsa0JBQWtCLEVBQUVBLGtCQUFtQjtNQUN2Q3RQLFFBQVEsRUFBRSxJQUFJLENBQUNBLFFBQVEsQ0FBQzZVLElBQUksQ0FBQyxJQUFJLENBQUU7TUFDbkNzQyxPQUFPLEVBQUVBLENBQUEsS0FBTTtRQUFBLElBQUFDLHNCQUFBO1FBQ2IsSUFBSSxJQUFJLENBQUNoWSxLQUFLLENBQUMrWCxPQUFPLEVBQUU7VUFDdEIsSUFBSSxDQUFDL1gsS0FBSyxDQUFDK1gsT0FBTyxDQUFDLENBQUM7VUFDcEI7UUFDRjtRQUNBLENBQUFDLHNCQUFBLE9BQUksQ0FBQ2hWLFNBQVMsQ0FBQ1QsT0FBTyxjQUFBeVYsc0JBQUEsZUFBdEJBLHNCQUFBLENBQXdCekosV0FBVyxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDbkgsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO01BQ3BCLENBQUU7TUFDRnFRLEdBQUcsRUFBRSxJQUFJLENBQUN6VSxTQUFVO01BQ3BCaVYsZUFBZSxFQUFFLElBQUksQ0FBQ2pZLEtBQUssQ0FBQ2lZO0lBQWdCLENBQzdDLENBQ0UsQ0FDTixlQUNEN1osS0FBQSxDQUFBNk0sYUFBQTtNQUNFQyxTQUFTLEVBQUVyTSxHQUFHLENBQUNTLE9BQU8sQ0FBQ08sTUFBTSxFQUFFLHNCQUFzQixDQUFDLEVBQUU7UUFDdEQsQ0FBQ1AsT0FBTyxDQUFDTyxNQUFNLEVBQUUsMEJBQTBCLENBQUMsR0FBRyxDQUFDNFc7TUFDbEQsQ0FBQyxDQUFFO01BQ0hnQixHQUFHLEVBQUUsSUFBSSxDQUFDblY7SUFBZSxHQUV4QixDQUFDb08sVUFBVSxJQUFJaUcsUUFBUSxrQkFDdEJ2WSxLQUFBLENBQUE2TSxhQUFBO01BQ0VDLFNBQVMsRUFBRXJNLEdBQUcsQ0FBQ1MsT0FBTyxDQUFDTyxNQUFNLEVBQUUsMEJBQTBCLENBQUMsRUFBRTtRQUMxRCxDQUFDUCxPQUFPLENBQUNPLE1BQU0sRUFBRSwwQkFBMEIsQ0FBQyxHQUFHLENBQUM0SztNQUNsRCxDQUFDO0lBQUUsZ0JBRUhyTSxLQUFBLENBQUE2TSxhQUFBLGNBQU15RixVQUFnQixDQUFDLEVBQ3RCaUcsUUFBUSxJQUFJLElBQUksQ0FBQ3BNLGlCQUFpQixDQUFDa0ssV0FBVyxFQUFFaEssV0FBVyxDQUN6RCxDQUNOLGVBRURyTSxLQUFBLENBQUE2TSxhQUFBO01BQ0VDLFNBQVMsRUFBRXJNLEdBQUcsQ0FDWlMsT0FBTyxDQUFDTyxNQUFNLEVBQUUsb0JBQW9CLENBQUMsRUFDckM7UUFDRSxDQUFDUCxPQUFPLENBQUNPLE1BQU0sRUFBRSx3QkFBd0IsQ0FBQyxHQUFHLENBQUM0SztNQUNoRCxDQUFDLEVBQ0Q7UUFDRSxDQUFDbkwsT0FBTyxDQUFDTyxNQUFNLEVBQUUseUJBQXlCLENBQUMsR0FDekM0SyxXQUFXLElBQUksQ0FBQ2tNO01BQ3BCLENBQ0YsQ0FBRTtNQUNGdkwsS0FBSyxFQUFFO1FBQUU4TSxNQUFNLEVBQUVqQjtNQUFtQjtJQUFFLGdCQUV0QzdZLEtBQUEsQ0FBQTZNLGFBQUEsQ0FBQzNNLEtBQUssRUFBQTZNLFFBQUE7TUFDSnNNLEdBQUcsRUFBRSxJQUFJLENBQUNyUyxRQUFTO01BQ25CbUssT0FBTyxFQUFFK0IsV0FBWTtNQUNyQmIsVUFBVSxFQUFBN00sYUFBQTtRQUNSdVUsVUFBVSxFQUFFQyxJQUFBLElBQW9DO1VBQUEsSUFBQUMsa0JBQUEsRUFBQUMsbUJBQUE7VUFBQSxJQUFuQztZQUFFQyxRQUFRO1lBQUVDLFFBQVE7WUFBRTVTO1VBQU8sQ0FBQyxHQUFBd1MsSUFBQTtVQUN6QyxvQkFDRWhhLEtBQUEsQ0FBQTZNLGFBQUEsQ0FBQTdNLEtBQUEsQ0FBQW9ZLFFBQUEsUUFDRytCLFFBQVEsSUFDUDNTLE1BQU0sQ0FBQ3NFLFVBQVUsSUFDakIsRUFBQW1PLGtCQUFBLEdBQUF6UyxNQUFNLENBQUNzRSxVQUFVLGNBQUFtTyxrQkFBQSx1QkFBakJBLGtCQUFBLENBQW1CcFgsTUFBTSxJQUFHLENBQUMsZ0JBQzdCN0MsS0FBQSxDQUFBNk0sYUFBQSxDQUFDbk0sWUFBWTtZQUNYZ00sT0FBTyxFQUFHNEIsQ0FBQyxJQUFLOEwsUUFBUSxDQUFDNVMsTUFBTSxFQUFFOEcsQ0FBQyxDQUFFO1lBQ3BDeEIsU0FBUyxFQUFFNUwsT0FBTyxDQUFDTyxNQUFNLEVBQUUsYUFBYTtVQUFFLENBQzNDLENBQUMsR0FDQStGLE1BQU0sQ0FBQ3NFLFVBQVUsSUFDbkIsRUFBQW9PLG1CQUFBLEdBQUExUyxNQUFNLENBQUNzRSxVQUFVLGNBQUFvTyxtQkFBQSx1QkFBakJBLG1CQUFBLENBQW1CclgsTUFBTSxJQUFHLENBQUMsZ0JBQzdCN0MsS0FBQSxDQUFBNk0sYUFBQSxDQUFDaE0sYUFBYTtZQUNaNkwsT0FBTyxFQUFHNEIsQ0FBQyxJQUFLOEwsUUFBUSxDQUFDNVMsTUFBTSxFQUFFOEcsQ0FBQyxDQUFFO1lBQ3BDeEIsU0FBUyxFQUFFNUwsT0FBTyxDQUFDTyxNQUFNLEVBQUUsYUFBYTtVQUFFLENBQzNDLENBQUMsR0FDQSxJQUNKLENBQUM7UUFFUDtNQUFDLEdBQ0U0USxVQUFVLENBQ2I7TUFDRkQsV0FBVyxFQUFFLElBQUs7TUFDbEJpQyxRQUFRLEVBQUcwRSxVQUFVLElBQUs7UUFDeEIsTUFBTTtVQUFFbk87UUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDdkksS0FBSztRQUNsQyxJQUFJdUksV0FBVyxLQUFLbU8sVUFBVSxDQUFDNVUsT0FBTyxFQUFFO1VBQ3RDLElBQUksQ0FBQ0UsUUFBUSxDQUFDO1lBQ1p1RyxXQUFXLEVBQUVtTyxVQUFVLENBQUM1VTtVQUMxQixDQUFDLENBQUM7UUFDSjtNQUNGLENBQUU7TUFDRnFVLE9BQU8sRUFBQWhULGFBQUE7UUFDTDZVLFdBQVcsRUFBRTtVQUNYQyxTQUFTLEVBQUVBLENBQUEsS0FBTTtZQUNmLE1BQU03VixNQUFNLEdBQUcsSUFBSSxDQUFDb0UsZUFBZSxDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDRyxTQUFTLENBQUN2RSxNQUFNLENBQUM7VUFDeEI7UUFDRjtNQUFDLEdBQ0UrRSxVQUFVLENBQUNnUCxPQUFPLENBQ3JCO01BQ0ZyRyxnQkFBZ0IsRUFBRUEsZ0JBQWlCO01BQ25DbkYsS0FBSyxFQUFFO1FBQUU4TSxNQUFNLEVBQUVkO01BQVk7SUFBRSxHQUMzQi9GLFdBQVcsQ0FFaEIsQ0FFRSxDQUNGLENBQ0YsQ0FBQyxFQUNMdEIsVUFBVSxpQkFDVDNSLEtBQUEsQ0FBQTZNLGFBQUEsQ0FBQ3JNLFVBQVUsRUFBQXVNLFFBQUE7TUFDVHNNLEdBQUcsRUFBRSxJQUFJLENBQUNsVSxTQUFVO01BQ3BCVCxRQUFRLEVBQUVBLENBQUEsS0FBTTtRQUFBLElBQUE2VixzQkFBQSxFQUFBQyxzQkFBQTtRQUNkLEVBQUFELHNCQUFBLE9BQUksQ0FBQzNZLEtBQUssQ0FBQ2tILFdBQVcsY0FBQXlSLHNCQUFBLHVCQUF0QkEsc0JBQUEsQ0FBd0JFLGdCQUFnQixLQUN0Q3haLGNBQWMsRUFBQXVaLHNCQUFBLEdBQ1osSUFBSSxDQUFDNVksS0FBSyxDQUFDa0gsV0FBVyxjQUFBMFIsc0JBQUEsdUJBQXRCQSxzQkFBQSxDQUF3QkMsZ0JBQWdCLEVBQ3hDO1VBQUVsVCxPQUFPLEVBQUUsSUFBSSxDQUFDM0YsS0FBSyxDQUFDMkY7UUFBUSxDQUFDLEVBQy9CLElBQUksQ0FBQzNGLEtBQUssQ0FBQ2dHLEtBQ2IsQ0FBQztRQUNILElBQUksQ0FBQ3lDLFdBQVcsQ0FBQyxDQUFDO01BQ3BCLENBQUU7TUFDRnFRLEtBQUssRUFBRXRILFdBQVk7TUFDbkJoQyxTQUFTLEVBQUVBLFNBQVU7TUFDckJJLFlBQVksRUFBRUEsWUFBYTtNQUMzQm1KLFFBQVEsRUFBRSxJQUFJLENBQUMvWSxLQUFLLENBQUMrWSxRQUFTO01BQzlCdEgsWUFBWSxFQUFFQSxZQUFhO01BQzNCdUgsVUFBVSxFQUFFLElBQUksQ0FBQ2haLEtBQUssQ0FBQ2daLFVBQVc7TUFDbENDLFlBQVksRUFBRSxJQUFJLENBQUNqWixLQUFLLENBQUNpWixZQUFhO01BQ3RDdlgsUUFBUSxFQUFFLElBQUksQ0FBQzFCLEtBQUssQ0FBQzBCLFFBQVEsSUFBSSxNQUFPO01BQ3hDd1gsV0FBVyxFQUFFakosZUFBZ0I7TUFDN0JqSyxLQUFLLEVBQUUsSUFBSSxDQUFDaEcsS0FBSyxDQUFDZ0csS0FBTTtNQUN4Qm1ULGFBQWEsRUFBRTtRQUNiQyxNQUFNLEVBQUVuVSxXQUFXLENBQUNtVSxNQUFNO1FBQzFCQyxTQUFTLEVBQUVwVSxXQUFXLENBQUNvVSxTQUFTO1FBQ2hDQyxTQUFTLEVBQUV0VSxhQUFhLENBQUNzVSxTQUFTO1FBQ2xDQyxZQUFZLEVBQUV2VSxhQUFhLENBQUN1VTtNQUM5QixDQUFFO01BQ0Z4VCxLQUFLLEVBQUUsSUFBSSxDQUFDL0YsS0FBSyxDQUFDK0Y7SUFBTSxHQUNwQjBKLFNBQVMsQ0FDZCxDQUVBLENBQ0YsQ0FBQztFQUVWO0FBQ0Y7QUFDQSxlQUFlM1AsUUFBUSJ9
|
|
1149
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJUYWJsZSIsIlRyZWUiLCJCdXR0b24iLCJNb2RhbCIsIlBvcG92ZXIiLCJtZXNzYWdlIiwiRWRpdG9yRm9ybSIsImNscyIsIkRvd25PdXRsaW5lZCIsIkV5ZU91dGxpbmVkIiwiRWRpdE91dGxpbmVkIiwiUmlnaHRPdXRsaW5lZCIsIlBsdXNPdXRsaW5lZCIsIkVsbGlwc2lzT3V0bGluZWQiLCJEZWxldGVPdXRsaW5lZCIsImNvbnZlckZ1bmN0aW9uIiwiZ2V0TGVzcyIsInJlcXVlc3QiLCJjb25maWciLCJnZXRTdG9yYWdlIiwiZ2V0QnV0dG9uUGVybWlzc29ucyIsIkhlYWRlclNlYXJjaCIsImNvbnZlcnRDb2x1bW5zIiwiZ2V0TmV3Q29sdW1ucyIsInN0eWxlcyIsIkJhc2VQYWdlIiwiY29uc3RydWN0b3IiLCJwcm9wcyIsIl90eXBlIiwiX3NpemUiLCJfZGVmaW5lUHJvcGVydHkiLCJjcmVhdGVSZWYiLCJjaGVja2VkVHJlZUtleXMiLCJuYW1lIiwidXNlclR5cGUiLCJhY2NvdW50Iiwic3RhdGUiLCJ2YWx1ZSIsImRlcHRJZCIsIm9uU2VhcmNoIiwic2VsZWN0ZWQiLCJyZXMiLCJrZXkiLCJrZXlzIiwibGVuZ3RoIiwic3RvcmVQcmVmaXgiLCJ0eXBlIiwiY29udGVudCIsInNpemUiLCJzZWxlY3RlZFJvd0tleXMiLCJzZWxlY3RlZFJvd0RhdGFzIiwidHJlZVNlbGVjdGVkS2V5IiwiZXhwYW5kIiwiZm9ybVR5cGUiLCJ0YWJsZVNpemUiLCJ0cmVlU2VhcmNoUHJhbXMiLCJwb3BvcGVucyIsIm1vcmVPcGVuIiwiZWxlbWVudEhlaWdodCIsInBlcm1pc3Npb25CdXR0b25zIiwicXVlcnlQYXJhbXMiLCJjb21wb25lbnREaWRNb3VudCIsIl90aGlzJHBhZ2VDb250ZW50UmVmJCIsImluaXREYXRhIiwicGVybWlzc29uIiwicGFnZUNvbnRlbnRSZWYiLCJjdXJyZW50IiwiY2xpZW50SGVpZ2h0Iiwic2V0U3RhdGUiLCJjb21wb25lbnREaWRVcGRhdGUiLCJfdGhpcyRwYWdlQ29udGVudFJlZiQyIiwic2V0U2VhcmNoUGFyYW1zIiwicGFyYW1zIiwiY2FsbEJhY2siLCJfdGhpcyRzZWFyY2hSZWYkY3VycmUiLCJzZWFyY2hSZWYiLCJkb1N1Ym1pdCIsImRhdGEiLCJfdGhpcyRlZGl0b3JSZWYkY3VycmUiLCJsYWJlbCIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsImVkaXRvclJlZiIsInNob3dGb3JtIiwiX3RoaXMkZWRpdG9yUmVmIiwiZWRpdG9yZmxhZyIsIm5ld1ZhbHVlIiwiX29iamVjdFNwcmVhZCIsInNob3ciLCJoaWRlRm9ybSIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTIiLCJzZXRMb2FkaW5nIiwibG9hZGluZyIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTMiLCJzZXRFZGl0Rm9ybVZhbHVlcyIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTQiLCJzZXRGb3JtVmFsdWUiLCJnZXRFZGl0Rm9ybVZhbHVlcyIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTUiLCJnZXRGb3JtVmFsdWUiLCJvbkRlbGV0ZSIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbiIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjIiLCJkZWxldGVVcmwiLCJkZWxldGVQYXJhbXMiLCJkZWxldGVQb3NpdGlvbiIsImJ1dHRvbkNsaWNrIiwicmVxdWVzdFBhcmFtcyIsInJlcXVlc3RVcmxzIiwicmVxdWVzdENvbmZpZyIsIl90aGlzIiwidGFibGVSZWYiLCJnZXRTZWxlY3RlZFJvd0tleXMiLCJnZXRTZWxlY3RlZFJvd0RhdGFzIiwidXJsIiwid2FybmluZyIsImNvbmZpcm0iLCJvbk9rIiwicGFnZVJlZiIsInJlY29yZCIsImlkcyIsImlkIiwiZnVuY3MiLCJVdGlscyIsIkVycm9yIiwiZGF0YVBhcmFtcyIsIm90aGVyUGFyYW1zIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwiZGVmYXVsdFBhcmFtcyIsIm1ldGhvZCIsImF1dG9QcmVmaXgiLCJqb2luIiwiZmluYWxQYXJhbXMiLCJ0aGVuIiwiY29kZSIsIl90aGlzJHNlYXJjaFJlZiIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYyIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzIiLCJzdWNjZXNzIiwiZ2V0U2VhcmNoVmFsdWVzIiwib25DYWxsQmFja3MiLCJvbkRlbGV0ZUNhbGxCYWNrIiwidGFibGVMb2FkIiwiZXJyb3IiLCJjYXRjaCIsImNvbnNvbGUiLCJsb2ciLCJfdGFibGVTdG9yZSRyZXF1ZXN0Q28iLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW4zIiwiZGVmYXVsdFJlcXVlc3RDb25maWciLCJ0YWJsZVByb3BzIiwic3RvcmUiLCJ0YWJsZVN0b3JlIiwiY29udmVydFF1ZXJ5UGFyYW1zIiwicmVxdWVzdENvbmlnIiwic3RvcmVDb25maWciLCJzdG9yZVBhcmFtcyIsIm90aGVyU3RvcmVDb25maWciLCJfZXhjbHVkZWQyIiwibG9hZCIsIl90YWJsZVN0b3JlJHJlcXVlc3RDbzIiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWMzIiwib25RdWVyeUNhbGxCYWNrIiwidGFibGVSZWxvYWQiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW40IiwiYXV0b0xvYWQiLCJyZWxvYWQiLCJjYWxsYmFjayIsIl9yZXMkZGF0YSIsInJlY29yZHMiLCJjdXJyZW50UGFnZSIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjUiLCJ0cmVlTG9hZCIsIl90aGlzJHRyZWVSZWYkY3VycmVudCIsInRyZWVSZWYiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW42IiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNyIsInNldFNlbGVjdGVkUm93S2V5cyIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjgiLCJzZXRTZWxlY3RlZFJvd0RhdGFzIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuOSIsInJlc2V0U2VsZWN0ZWRSb3dLZXlzIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuMTAiLCJfdGhpcyRzZWFyY2hSZWYyIiwiZnJvbVZhbHVlIiwiZ2V0Q2hpbGRyZW5EYXRhIiwicm93S2V5IiwicmVzS2V5IiwiY2hpbGROb2RlcyIsImNoaWxkcmVuIiwibWFwIiwiaXRlbSIsImluZGV4IiwicmVuZGVyVG9vbEJ1dHRvbnMiLCJ0b29sYnV0dG9ucyIsInRvb2xiYXJGbGFnIiwiZmxhZyIsInNob3dTZWFyY2giLCJfaXRlbSRwcm9wcyIsInBhZ2VUeXBlIiwib25DbGljayIsImljb24iLCJfZXhjbHVkZWQzIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsIl9leHRlbmRzIiwic3R5bGUiLCJtYXJnaW5MZWZ0IiwibWFyZ2luUmlnaHQiLCJ0aXRsZSIsInBsYWNlbWVudCIsIm9wZW4iLCJvbk9wZW5DaGFuZ2UiLCJyZW5kZXJDbG91bW5CdXR0b24iLCJjb2x1bW5CdXR0b25zIiwicm93UmVjb3JkIiwiYWN0aW9uUHJvcHMiLCJiYXNlQWN0aW9uQ29sdW1uIiwibmV3QnV0dG9ucyIsInNob3dJY29uIiwiX2l0ZW0kcHJvcHMyIiwicmVjb3JkU2hvdyIsIl9leGNsdWRlZDQiLCJldmVudE9wdGlvbiIsIlVpdGxzIiwiZnVuYyIsIkZ1bmN0aW9uIiwicHVzaCIsImUiLCJldmFsIiwibnVtYmVyIiwiYnV0dG9uTnVtYmVyIiwiX2l0ZW0kcHJvcHMzIiwiX2V4Y2x1ZGVkNSIsIk51bWJlciIsIl9pdGVtJHByb3BzNCIsIl9leGNsdWRlZDYiLCJ0cmlnZ2VyIiwidHJlZVNlbGVjdCIsInNlbGVjdGVkS2V5cyIsIm9iaiIsIl90aGlzJHNlYXJjaFJlZjMiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM0IiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjNSIsImtleXdvcmQiLCJzZWFyY2hLZXkiLCJzZWFyY2hGaWVsZCIsInBhcmFudFNlbGVjdCIsInRyZWVQcm9wcyIsInNlbGVjdGVkTm9kZXMiLCJkYXRhcmVmIiwiYXR0cmlidXRlIiwiaXNMZWFmIiwib25UcmVlU2VsZWN0IiwidHJlZVNlbGVjdENhbGxCYWNrIiwicmVzZXRTZWFyY2giLCJfdGhpcyRzZWFyY2hSZWYkY3VycmUyIiwicmVzZXRGaWVsZHMiLCJnZXRUZXh0IiwidGV4dCIsIl9wcm9wcyRkYXRhIiwibmV3VGV4dCIsImkiLCJzZXRUYWJsZURhdGEiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW4xMSIsInNldERhdGEiLCJzZXRUcmVlRGF0YSIsIl90aGlzJHRyZWVSZWYkY3VycmVudDIiLCJjb252ZXJQYXJhbXMiLCJyZW5kZXIiLCJfdGhpczIiLCJfdGFibGVQcm9wcyR0b29sYmFyIiwiX3RhYmxlUHJvcHMkdG9vbGJhcjIiLCJjb2x1bW5zIiwic3VibWl0VXJsIiwiZm9ybVByb3BzIiwiZm9ybVBhZ2VQcm9wcyIsInNob3dMZWZ0Iiwic3VibWl0UGFyYW1zIiwic2hvd1Rvb2xCdXR0b24iLCJidXR0b25zIiwiZWRpdG9yRm9ybSIsIm9uU2hvd0Zvcm0iLCJmb3JtQ2hhbmdlVmFsaWQiLCJ0b29sQnV0dG9uUG9zaXRpb24iLCJwZXJtaXNzaW9uIiwiaGFzIiwiZmlsdGVyQ29sdW1uIiwiYWN0aW9uQ29sdW1uIiwic2hvd1Jvd1NlbGVjdGlvbiIsImNvbHVtbk9yZGVyIiwiZXhwYW5kYWJsZSIsInRhYmxlVGl0bGUiLCJvdGhlcnRhYmxlUGFyYW1zIiwiX2V4Y2x1ZGVkNyIsIm5ld1RhYmxlU3RvcmUiLCJfbmV3VGFibGVTdG9yZSRyZXF1ZXMiLCJ0cmVlU3RvcmUiLCJ0cmVlU2VhcmNoIiwidGl0bGVBbGlhcyIsInRyZWVUaXRsZSIsIm90aGVydHJlZVBhcmFtcyIsIl9leGNsdWRlZDgiLCJ0YWJsZVBhcmFtcyIsImRlZmF1bHRWYWx1ZSIsIm1lbnVDb2RlIiwicGVybWlzc29ucyIsInRhYmxlQ29sdW1uIiwic2VhcmNoRm9ybXMiLCJlZGl0b3JGb3JtcyIsInRvb2xCdXR0b25zIiwiYnV0dG9uTWFwIiwiZWRpdG9yIiwiZGVsZXRlIiwic2VhcmNoIiwicmV0dXJuQnV0dG9uIiwiX2J1dHRvbk1hcCRjb2RlIiwib25FZGl0b3IiLCJfdGhpczIkcHJvcHMkb25DYWxsQmEiLCJfdGhpczIkcHJvcHMkb25DYWxsQmEyIiwib25FZGl0b3JDYWxsQmFjayIsIm9uU2VhcmNoQ2FsbEJhY2siLCJjaGVja1BlcnNzaW9uIiwiaW5kZXhPZiIsIm9uQWRkIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjNiIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzciLCJvbkFkZENhbGxCYWNrIiwiYmluZCIsImRhbmdlciIsIkFycmF5IiwiaXNBcnJheSIsImNoaWxkIiwiX2NoaWxkJHByb3BzIiwiX2NoaWxkJHByb3BzMiIsIl9jaGlsZCRwcm9wczMiLCJfY2hpbGQkcHJvcHM0IiwiX2l0ZW0kcHJvcHM1IiwiX2l0ZW0kcHJvcHM2IiwiX2l0ZW0kcHJvcHM3IiwiX2l0ZW0kcHJvcHM4IiwiZGF0YUluZGV4IiwiYWxpZ24iLCJ0ZXh0QWxpZ24iLCJ3aWR0aCIsImZpeGVkIiwicmVhY29yZCIsIkZyYWdtZW50Iiwic2VhcmNoRmxhZyIsInRhYmxlVG9vbCIsInRvb2xGbGFnIiwidG9vbGJhciIsInRvb2xzIiwidGFibGVIZWFkZXJIZWlnaHQiLCJ0b29sSGVpZ2h0IiwicGFkZGluZ0hlaWdodCIsInRhYmxlQ29udGVudEhlaWdodCIsIlBhZ2luYXRpb25IZWlnaHQiLCJwYWdpbmF0aW9uIiwidGFibGVIZWlnaHQiLCJ0YWJsZVNyb2xsSGVpZ2h0Iiwic2Nyb2xsIiwieCIsInkiLCJyZWYiLCJwYWdlVGl0bGUiLCJkaXNwbGF5IiwiY2hlY2thYmxlIiwic2VhcmNoYWJsZSIsIm9uU2VsZWN0Iiwib25SZXNldCIsIl90aGlzJHNlYXJjaFJlZiRjdXJyZTMiLCJzZWFyY2hGb3JtUHJvcHMiLCJoZWlnaHQiLCJleHBhbmRJY29uIiwiX3JlZiIsIl9yZWNvcmQkY2hpbGROb2RlcyIsIl9yZWNvcmQkY2hpbGROb2RlczIiLCJleHBhbmRlZCIsIm9uRXhwYW5kIiwib25DaGFuZ2UiLCJvblRvb2xDbGljayIsIm9uUmVmcmVzaCIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzgiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM5Iiwib25TdW1iaXRDYWxsQmFjayIsImZvcm1zIiwib25TdWJtaXQiLCJvbkhpZGVGb3JtIiwib25Gb3JtQ2hhbmdlIiwiY2hhbmdlVmFsaWQiLCJyZXF1ZXN0T2JqZWN0IiwiYWRkVXJsIiwiZWRpdG9yVXJsIiwiYWRkUGFyYW1zIiwiZWRpdG9yUGFyYW1zIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcGFnZS9CYXNlUGFnZS9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQsIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgVGFibGUgZnJvbSBcIi4uLy4uL2Jhc2UvdGFibGVcIjtcclxuaW1wb3J0IFRyZWUgZnJvbSBcIi4uLy4uL2Jhc2UvdHJlZVwiO1xyXG5pbXBvcnQgQnV0dG9uIGZyb20gXCIuLi8uLi9iYXNlL2J1dHRvblwiO1xyXG5pbXBvcnQgTW9kYWwgZnJvbSBcIi4uLy4uL2Jhc2UvbW9kYWxcIjtcclxuaW1wb3J0IFBvcG92ZXIgZnJvbSBcIi4uLy4uL2Jhc2UvcG9wb3ZlclwiO1xyXG5pbXBvcnQgbWVzc2FnZSBmcm9tIFwiLi4vLi4vYmFzZS9tZXNzYWdlXCI7XHJcbmltcG9ydCBFZGl0b3JGb3JtLCB7IEZvcm1QYWdlUHJvcHMgfSBmcm9tIFwiLi4vRm9ybVBhZ2UvaW5kZXhcIjtcclxuaW1wb3J0IGNscyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xyXG5pbXBvcnQgXCIuL2luZGV4Lm1vZHVsZS5sZXNzXCI7XHJcbmltcG9ydCBTdG9yZSwgeyBQYWdlU3RvcmUsIFN0b3JlUHJvcHMgfSBmcm9tIFwiQGJqLW5zYy9tc25cIjtcclxuaW1wb3J0IHsgdXRpbHMgfSBmcm9tIFwiQGJqLW5zYy9tc24vbGliL3V0aWxzXCI7XHJcbmltcG9ydCB7XHJcbiAgRG93bk91dGxpbmVkLFxyXG4gIEV5ZU91dGxpbmVkLFxyXG4gIEVkaXRPdXRsaW5lZCxcclxuICBSaWdodE91dGxpbmVkLFxyXG4gIFBsdXNPdXRsaW5lZCxcclxuICBFbGxpcHNpc091dGxpbmVkLFxyXG4gIERlbGV0ZU91dGxpbmVkLFxyXG59IGZyb20gXCJAYW50LWRlc2lnbi9pY29uc1wiO1xyXG5pbXBvcnQgeyBjb252ZXJGdW5jdGlvbiwgZ2V0TGVzcywgZ2V0Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQgcmVxdWVzdCBmcm9tIFwibnNjLXJlcXVlc3RcIjtcclxuaW1wb3J0IGNvbmZpZyBmcm9tIFwiLi4vLi4vY29uZmlnXCI7XHJcbmltcG9ydCB7IGdldFN0b3JhZ2UsIHB4MnZ3LCBnZXRCdXR0b25QZXJtaXNzb25zIH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCBIZWFkZXJTZWFyY2ggZnJvbSBcIi4uL0hlYWRlclNlYXJjaFwiO1xyXG5pbXBvcnQgeyBQYWdpbmF0aW9uUHJvcHMgfSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgbnNjZmlsZSBmcm9tIFwibnNjLWZpbGVcIjtcclxuaW1wb3J0IHsgY29udmVydENvbHVtbnMsIGdldE5ld0NvbHVtbnMgfSBmcm9tIFwiLi91dGlsc1wiO1xyXG5pbnRlcmZhY2UgVGFibGVQcm9wcyB7XHJcbiAgYWN0aW9uQ29sdW1uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmk43kvZzliJdcclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgZmlsdGVyQ29sdW1uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrov4fmu6TmjInpkq5cclxuICBzaG93Um93U2VsZWN0aW9uPzogYm9vbGVhbjsgLy/mmK/lkKbooajmoLzli77pgInliJdcclxuICBwYWdpbmF0aW9uPzogYm9vbGVhbiB8IFBhZ2luYXRpb25Qcm9wczsgLy/mmK/lkKbmmL7npLrliIbpobVcclxuICBjb2x1bW5PcmRlcj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S66KGo5qC85bqP5YiXXHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcbmNvbnN0IHN0eWxlcyA9IG51bGw7XHJcbmludGVyZmFjZSBUcmVlUHJvcHMge1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBzaG93U2VhcmNoPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmkJzntKLmoYZcclxuICBzZWFyY2hLZXk/OiBzdHJpbmc7IC8v5pCc57SidmFsdWXlr7nlupTnmoRrZXlcclxuICBzZWFyY2hGaWVsZD86IHN0cmluZzsgLy/mn6Xor6Llr7nlupTnmoRrZXlcclxuICB0aXRsZUFsaWFzPzogc3RyaW5nOyAvL+agkXRpdGxl5a+55bqU55qEa2V5LOm7mOiupHRpdGxlXHJcbiAgbm9kZVBvcnBzPzogb2JqZWN0O1xyXG4gIHBhcmFudFNlbGVjdD86IGJvb2xlYW47XHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcbmludGVyZmFjZSBGb3JtUHJvcHMgZXh0ZW5kcyBGb3JtUGFnZVByb3BzIHsgfVxyXG5pbnRlcmZhY2UgTlNDQmFzZUJhZ2VQcm9wcyB7XHJcbiAgc2hvd1NlYXJjaD86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65aS06YOo5pCc57Si5qCPXHJcbiAgdGFibGVQcm9wcz86IFRhYmxlUHJvcHM7IC8v6KGo5qC85Y+C5pWwXHJcbiAgdHJlZVByb3BzPzogVHJlZVByb3BzOyAvL+W3puS+p+agkeWPguaVsFxyXG4gIHN1Ym1pdFBhcmFtcz86IE9iamVjdDsgLy/mt7vliqDlj4LmlbDvvIzpu5jorqRtb3Rob2Q6cG9zdO+8jCDlj4LmlbDpgJrov4dkYXRh5Lyg6YCSXHJcbiAgc3VibWl0VXJsPzogc3RyaW5nO1xyXG4gIG9uU3VibWl0PzogKHZhbHVlPzogYW55LCBsYWJlbD86IGFueSkgPT4gdm9pZDtcclxuICBjb2x1bW5zOiBBcnJheTxPYmplY3Q+O1xyXG4gIHNob3dMZWZ0PzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrlt6bkvqfnm67lvZXmoJFcclxuICBzaG93VG9vbEJ1dHRvbj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65oyJ6ZKu5qCPXHJcbiAgZWRpdG9yRm9ybT86IGJvb2xlYW47IC8v5piv5ZCm6ZyA6KaB6KGo5Y2V5Yqf6IO9ICwg5Li6ZmFsc2Ug57yW6L6R77yM5p+l55yL77yM5paw5aKe5Yqf6IO95Z2H5LiN5Y+v55SoXHJcbiAgZGVsZXRlVXJsPzogc3RyaW5nOyAvL+WIoOmZpHVybFxyXG4gIG9uRGVsZXRlPzogKHNlbGVjdGVkS2V5cz86IEFycmF5PHN0cmluZz4pID0+IHZvaWQ7IC8v5Yig6Zmk5Y+C5pWw77yM6buY6K6kbW90aG9kOnBvc3TvvIwg5Y+C5pWw6YCa6L+HaWRz5ou85o6l5Lyg6YCS57uZ5ZCO5Y+wXHJcbiAgZGVsZXRlUG9zaXRpb24/OiBcInRvb2xiYXJcIiB8IFwicm93XCI7XHJcbiAgZGVsZXRlUGFyYW1zPzogT2JqZWN0O1xyXG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xyXG4gIG9uU2VhcmNoPzogKHZhbHVlPzogYW55KSA9PiB2b2lkO1xyXG4gIG9uUmVzZXQ/OiAoKSA9PiB2b2lkO1xyXG4gIGluaXREYXRhPzogYW55OyAvL+WIneWni+WMluWbnuiwg+WHveaVsO+8jOWcqGNvbXBvbmVudERpZE1vdW505Lit6LCD55SoXHJcbiAgYnV0dG9ucz86XHJcbiAgfCBBcnJheTxzdHJpbmc+XHJcbiAgfCBBcnJheTx7IGNvZGU6IHN0cmluZzsgcmVjb3JkU2hvdz86IHN0cmluZyB8IEZ1bmN0aW9uIH0+OyAvL+aMiemSrumbhuWQiCAgWydhZGQnLCdkZWxldGUnLCdzZWFyY2gnLCdlZGl0b3InXVxyXG4gIG9uU2hvd0Zvcm0/OiAodmFsdWU/OiBhbnksIGVkaXRvckZsYWc/OiBzdHJpbmcpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25IaWRlRm9ybT86ICgpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25Gb3JtQ2hhbmdlPzogKGNoYW5nZWRWYWx1ZXM/OiBhbnksIGFsbFZhbHVlcz86IGFueSkgPT4gdm9pZDsgLy/ooajljZVvbkNoYW5nZeWbnuiwg1xyXG4gIGZvcm1UeXBlPzogXCJtb2RhbFwiIHwgXCJkcmF3ZXJcIjtcclxuICBmb3JtQ2hhbmdlVmFsaWQ/OiBib29sZWFuOyAvL+ihqOWNleagoemqjFxyXG4gIGNsYXNzTmFtZT86IGFueTtcclxuICB0b29sQnV0dG9uUG9zaXRpb24/OiBcInJpZ2h0XCIgfCBcImJ1dHRvbVwiO1xyXG4gIHBhZ2VUaXRsZT86IHN0cmluZyB8IFJlYWN0Tm9kZTtcclxuICBmb3JtUHJvcHM/OiBGb3JtUHJvcHM7XHJcbiAgYWN0aW9uUHJvcHM/OiB7XHJcbiAgICB0ZXh0QWxpZ24/OiBzdHJpbmc7XHJcbiAgICBzaG93SWNvbj86IGJvb2xlYW47XHJcbiAgICB3aWR0aD86IG51bWJlcjtcclxuICAgIGJ1dHRvbk51bWJlcj86IG51bWJlciB8IFwiYWxsXCI7XHJcbiAgfTtcclxuICBzZWFyY2hGb3JtUHJvcHM/OiB7IHdyYXBwZXJDb2w/OiBhbnk7IGxhYmVsQ29sPzogYW55IH07XHJcbiAgb25UcmVlU2VsZWN0PzogKHZhbHVlPzogYW55LCBlZGl0b3JGbGFnPzogc3RyaW5nKSA9PiB2b2lkOyAvL+aJk+W8gOihqOWNleWbnuiwg1xyXG4gIG9uQ2FsbEJhY2tzPzoge1xyXG4gICAgdHJlZVNlbGVjdENhbGxCYWNrPzogYW55OyAvL+agkeeCueWHu+afpeivouWQjuWbnuiwg1xyXG4gICAgb25RdWVyeUNhbGxCYWNrPzogYW55OyAvL+afpeivouWbnuiwg++8jOafpeivouaVsOaNruWQjuWbnuiwg1xyXG4gICAgb25TdW1iaXRDYWxsQmFjaz86IGFueTsgLy/kv53lrZjlm57osIPvvIzkv53lrZjmlbDmja7miJDlip/lkI7lm57osINcclxuICAgIG9uRGVsZXRlQ2FsbEJhY2s/OiBhbnk7IC8v5Yig6Zmk5oyJ6ZKu5Zue6LCD77yM5Yig6Zmk5pWw5o2u5ZCO5omn6KGMXHJcbiAgICBvbkVkaXRvckNhbGxCYWNrPzogYW55OyAvL+e8lui+keaMiemSruWbnuiwg++8jOaJk+W8gOW8ueahhuWQjuaJp+ihjFxyXG4gICAgb25BZGRDYWxsQmFjaz86IGFueTsgLy/mt7vliqDmjInpkq7lm57osIPvvIzmiZPlvIDlvLnmoYblkI7miafooYxcclxuICAgIG9uU2VhcmNoQ2FsbEJhY2s/OiBhbnk7IC8v5YiX6KGo5p+l6K+i5oyJ6ZKu5Zue6LCD77yM5omT5byA5by55qGG5ZCO5omn6KGMXHJcbiAgfTtcclxuICBwYWdlVHlwZT86IFwibm9ybWFsXCIgfCBcInRhYnNwYWdlXCI7XHJcbiAgZm9ybVBhZ2VQcm9wcz86IHt9O1xyXG4gIGJ1dHRvbkNsaWNrPzoge1xyXG4gICAgb25BZGQ/OiAoKSA9PiB2b2lkO1xyXG4gICAgb25FZGl0b3I/OiAodmFsdWU/OiBhbnkpID0+IHZvaWQ7XHJcbiAgICBvblNlYXJjaD86ICh2YWx1ZT86IGFueSkgPT4gdm9pZDtcclxuICAgIG9uRGVsZXRlPzogKHZhbHVlPzogYW55KSA9PiB2b2lkO1xyXG4gIH07XHJcbiAgcGVybWlzc2lvbj86IHtcclxuICAgIGhhcz86IGJvb2xlYW47XHJcbiAgICBtZW51Q29kZT86IHN0cmluZztcclxuICB9O1xyXG4gIHJlcXVlc3RQYXJhbXM/OiB7XHJcbiAgICAvL+mcgOimgemineWkluS8oOeahOWbuuWumuivt+axguWPguaVsFxyXG4gICAgYWRkUGFyYW1zPzogT2JqZWN0OyAvL+aWsOWinuWbuuWumuWPguaVsFxyXG4gICAgZWRpdG9yUGFyYW1zPzogT2JqZWN0OyAvL+e8lui+keWbuuWumuWPguaVsFxyXG4gICAgcXVlcnlQYXJhbXM/OiBPYmplY3Q7IC8v5p+l6K+i5Zu65a6a5Y+C5pWwXHJcbiAgICBkZWxldGVQYXJhbXM/OiBPYmplY3Q7IC8v5Yig6Zmk5Zu65a6a5Y+C5pWwXHJcbiAgfTtcclxuICByZXF1ZXN0VXJscz86IHtcclxuICAgIGFkZFVybD86IHN0cmluZzsgLy/mlrDlop51cmxcclxuICAgIGVkaXRvclVybD86IHN0cmluZzsgLy/nvJbovpF1cmxcclxuICAgIGRlbGV0ZVVybD86IHN0cmluZzsgLy/liKDpmaR1cmxcclxuICB9O1xyXG4gIGZ1bmNzPzogYW55O1xyXG4gIHJlcXVlc3RDb25maWc/OiBhbnk7XHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5jbGFzcyBCYXNlUGFnZSBleHRlbmRzIFB1cmVDb21wb25lbnQ8TlNDQmFzZUJhZ2VQcm9wcywgYW55PiB7XHJcbiAgdGFibGVSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHRyZWVSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHNlYXJjaFJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgZWRpdG9yUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBwYWdlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBwYWdlQ29udGVudFJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgZGF0ZUZvcm1hdCA9IHt9IGFzIGFueTtcclxuICBjb25zdHJ1Y3Rvcihwcm9wczogYW55KSB7XHJcbiAgICBzdXBlcihwcm9wcyk7XHJcbiAgICBsZXQgeyBzdG9yZVByZWZpeCB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgdHlwZSA9IGdldFN0b3JhZ2UoXHJcbiAgICAgIHN0b3JlUHJlZml4ID8gc3RvcmVQcmVmaXggKyBcIi1cIiArIFwiZm9ybVR5cGVcIiA6IFwiZm9ybVR5cGVcIlxyXG4gICAgKTtcclxuICAgIHR5cGUgPSB0eXBlPy5jb250ZW50O1xyXG4gICAgbGV0IHNpemUgPSBnZXRTdG9yYWdlKFxyXG4gICAgICBzdG9yZVByZWZpeCA/IHN0b3JlUHJlZml4ICsgXCItXCIgKyBcInRhYmxlU2l6ZVwiIDogXCJ0YWJsZVNpemVcIlxyXG4gICAgKTtcclxuICAgIHNpemUgPSBzaXplPy5jb250ZW50O1xyXG4gICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgdHlwZTogXCJhZGRcIixcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBbXSxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogW10sXHJcbiAgICAgIHRyZWVTZWxlY3RlZEtleTogXCJcIixcclxuICAgICAgZXhwYW5kOiBmYWxzZSxcclxuICAgICAgZm9ybVR5cGU6IHR5cGUgfHwgXCJtb2RhbFwiLFxyXG4gICAgICB0YWJsZVNpemU6IHNpemUgfHwgXCJkZWZhdWx0XCIsXHJcbiAgICAgIHRyZWVTZWFyY2hQcmFtczoge30sXHJcbiAgICAgIHBvcG9wZW5zOiB7fSxcclxuICAgICAgbW9yZU9wZW46IGZhbHNlLFxyXG4gICAgICBlbGVtZW50SGVpZ2h0OiAwLFxyXG4gICAgICBwZXJtaXNzaW9uQnV0dG9uczogW10sXHJcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7fSxcclxuICAgIH07XHJcbiAgfVxyXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgY29uc3QgeyBpbml0RGF0YSwgcGVybWlzc29uID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBlbGVtZW50SGVpZ2h0ID0gdGhpcy5wYWdlQ29udGVudFJlZi5jdXJyZW50Py5jbGllbnRIZWlnaHQ7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgZWxlbWVudEhlaWdodCxcclxuICAgIH0pO1xyXG4gICAgaW5pdERhdGEgJiYgaW5pdERhdGEoKTtcclxuICB9XHJcbiAgY29tcG9uZW50RGlkVXBkYXRlKCkge1xyXG4gICAgY29uc3QgZWxlbWVudEhlaWdodCA9IHRoaXMucGFnZUNvbnRlbnRSZWYuY3VycmVudD8uY2xpZW50SGVpZ2h0O1xyXG4gICAgaWYgKGVsZW1lbnRIZWlnaHQgPiB0aGlzLnN0YXRlLmVsZW1lbnRIZWlnaHQpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgZWxlbWVudEhlaWdodCxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNldFNlYXJjaFBhcmFtcyhwYXJhbXMsIGNhbGxCYWNrKSB7XHJcbiAgICB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5zZXRTZWFyY2hQYXJhbXMocGFyYW1zKTtcclxuICAgIGNhbGxCYWNrICYmIGNhbGxCYWNrKHBhcmFtcyk7XHJcbiAgfVxyXG4gIGRvU3VibWl0KGRhdGEsIGxhYmVsID0gXCLnvJbovpFcIikge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uZG9TdWJtaXQoZGF0YSwgbGFiZWwpO1xyXG4gIH1cclxuXHJcbiAgb25TZWxlY3QgPSAoY2hlY2tlZFRyZWVLZXlzOiBhbnkpID0+IHtcclxuICAgIGNvbnN0IHsgbmFtZSwgdXNlclR5cGUsIGFjY291bnQgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHsgbmFtZSwgdXNlclR5cGUsIGFjY291bnQsIGRlcHRJZDogY2hlY2tlZFRyZWVLZXlzWzBdIH07XHJcbiAgICBpZiAodGhpcy5wcm9wcy5vblNlYXJjaCkge1xyXG4gICAgICB0aGlzLnByb3BzLm9uU2VhcmNoKHZhbHVlKTtcclxuICAgIH1cclxuICAgIC8vIHRoaXMudGFibGVMb2FkKHZhbHVlKTtcclxuICB9O1xyXG5cclxuICAvL+aYvuekuuihqOWNlVxyXG4gIHNob3dGb3JtKHZhbHVlPzogYW55LCBlZGl0b3JmbGFnID0gXCJhZGRcIiwgY2FsbEJhY2s/OiBhbnkpIHtcclxuICAgIGxldCBuZXdWYWx1ZSA9IHZhbHVlID8geyAuLi52YWx1ZSB9IDogbnVsbDtcclxuICAgIHRoaXMuZWRpdG9yUmVmPy5jdXJyZW50Py5zaG93KG5ld1ZhbHVlLCBlZGl0b3JmbGFnLCBjYWxsQmFjayk7XHJcbiAgfVxyXG5cclxuICAvL+WFs+mXreihqOWNlVxyXG4gIGhpZGVGb3JtKCkge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uaGlkZUZvcm0oKTtcclxuICB9XHJcblxyXG4gIHNldExvYWRpbmcobG9hZGluZzogYm9vbGVhbikge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uc2V0TG9hZGluZyhsb2FkaW5nKTtcclxuICB9XHJcblxyXG4gIHNldEVkaXRGb3JtVmFsdWVzKHZhbHVlLCB0eXBlID0gXCLnvJbovpFcIikge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uc2V0Rm9ybVZhbHVlKHZhbHVlLCB0eXBlKTtcclxuICB9XHJcblxyXG4gIGdldEVkaXRGb3JtVmFsdWVzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LmdldEZvcm1WYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgLy/mibnph4/liKDpmaRcclxuICBvbkRlbGV0ZShkYXRhPzogYW55KSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGRlbGV0ZVVybCxcclxuICAgICAgb25EZWxldGUsXHJcbiAgICAgIGRlbGV0ZVBhcmFtcyA9IHt9LFxyXG4gICAgICBkZWxldGVQb3NpdGlvbiA9IFwidG9vbGJhclwiLFxyXG4gICAgICBidXR0b25DbGljayA9IHt9LFxyXG4gICAgICByZXF1ZXN0UGFyYW1zID0ge30sXHJcbiAgICAgIHJlcXVlc3RVcmxzID0ge30sXHJcbiAgICAgIHJlcXVlc3RDb25maWcgPSB7fSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIGNvbnN0IHNlbGVjdGVkUm93S2V5cyA9IHRoaXMudGFibGVSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dLZXlzKCk7XHJcbiAgICBjb25zdCBzZWxlY3RlZFJvd0RhdGFzID0gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5nZXRTZWxlY3RlZFJvd0RhdGFzKCk7XHJcbiAgICBsZXQgdXJsID0gcmVxdWVzdFVybHMuZGVsZXRlVXJsID8gcmVxdWVzdFVybHMuZGVsZXRlVXJsIDogZGVsZXRlVXJsO1xyXG4gICAgbGV0IHBhcmFtczogYW55ID0gcmVxdWVzdFBhcmFtcy5kZWxldGVQYXJhbXNcclxuICAgICAgPyByZXF1ZXN0UGFyYW1zLmRlbGV0ZVBhcmFtc1xyXG4gICAgICA6IGRlbGV0ZVBhcmFtcztcclxuICAgIGlmIChkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIikge1xyXG4gICAgICBpZiAoc2VsZWN0ZWRSb3dLZXlzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgbWVzc2FnZS53YXJuaW5nKFwi6K+36YCJ5oup6KaB5Yig6Zmk55qE5pWw5o2u77yBXCIpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgTW9kYWwuY29uZmlybSh7XHJcbiAgICAgIGNvbnRlbnQ6IFwi5piv5ZCm56Gu6K6k5Yig6Zmk5omA6YCJ6aG577yfXCIsXHJcbiAgICAgIC8vIGNlbnRlcmVkOnRydWUsXHJcbiAgICAgIG9uT2s6ICgpID0+IHtcclxuICAgICAgICBpZiAoYnV0dG9uQ2xpY2sub25EZWxldGUpIHtcclxuICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICBidXR0b25DbGljay5vbkRlbGV0ZSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICByZWNvcmQ6IGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiID8gc2VsZWN0ZWRSb3dEYXRhcyA6IGRhdGEsXHJcbiAgICAgICAgICAgICAgaWRzOiBkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIiA/IHNlbGVjdGVkUm93S2V5cyA6IGRhdGE/LmlkLFxyXG4gICAgICAgICAgICAgIGZ1bmNzOiB0aGlzLnByb3BzLmZ1bmNzLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAob25EZWxldGUpIHtcclxuICAgICAgICAgIG9uRGVsZXRlICYmXHJcbiAgICAgICAgICAgIG9uRGVsZXRlKGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiID8gc2VsZWN0ZWRSb3dLZXlzIDogZGF0YSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdXJsKSB7XHJcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1cmzkuI3og73kuLrnqbrvvIFcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHsgZGF0YTogZGF0YVBhcmFtcyA9IHt9LCAuLi5vdGhlclBhcmFtcyB9ID0gcGFyYW1zO1xyXG4gICAgICAgIGNvbnN0IGRlZmF1bHRQYXJhbXMgPSB7XHJcbiAgICAgICAgICBtZXRob2Q6IFwicG9zdFwiLFxyXG4gICAgICAgICAgYXV0b1ByZWZpeDogdHJ1ZSxcclxuICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICBpZHM6IGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiID8gc2VsZWN0ZWRSb3dLZXlzLmpvaW4oKSA6IGRhdGEuaWQsXHJcbiAgICAgICAgICAgIC4uLmRhdGFQYXJhbXMsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLi4ucmVxdWVzdENvbmZpZyxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGxldCBmaW5hbFBhcmFtcyA9IHt9IGFzIGFueTtcclxuICAgICAgICBmaW5hbFBhcmFtcyA9IHsgLi4uZGVmYXVsdFBhcmFtcywgLi4ub3RoZXJQYXJhbXMgfTtcclxuICAgICAgICByZXF1ZXN0KHVybCwge1xyXG4gICAgICAgICAgLi4uZmluYWxQYXJhbXMsXHJcbiAgICAgICAgfSlcclxuICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXM6IGFueSkge1xyXG4gICAgICAgICAgICBjb25zdCB7IGNvZGUgfSA9IHJlcztcclxuICAgICAgICAgICAgaWYgKGNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgIG1lc3NhZ2Uuc3VjY2VzcyhcIuWIoOmZpOaIkOWKn++8gVwiKTtcclxuICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBfdGhpcy5zZWFyY2hSZWY/LmN1cnJlbnQ/LmdldFNlYXJjaFZhbHVlcygpO1xyXG4gICAgICAgICAgICAgIF90aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vbkRlbGV0ZUNhbGxCYWNrICYmXHJcbiAgICAgICAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgX3RoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uRGVsZXRlQ2FsbEJhY2ssXHJcbiAgICAgICAgICAgICAgICAgIHsgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmIH0sXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgX3RoaXMudGFibGVMb2FkKHZhbHVlKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBtZXNzYWdlLmVycm9yKFwi5Yig6Zmk5aSx6LSl77yBXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcjogYW55KSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3JcIiwgZXJyb3IpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgdGFibGVMb2FkKHBhcmFtczogYW55LCByZXF1ZXN0Q29uZmlnID0ge30pIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgcmVxdWVzdENvbmZpZzogZGVmYXVsdFJlcXVlc3RDb25maWcgPSB7fSxcclxuICAgICAgcmVxdWVzdFBhcmFtcyA9IHt9LFxyXG4gICAgICB0YWJsZVByb3BzID0ge30sXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgc3RvcmU6IHRhYmxlU3RvcmUgfSA9IHRhYmxlUHJvcHM7XHJcbiAgICBsZXQgcXVlcnlQYXJhbXM6IGFueSA9IHRoaXMuY29udmVydFF1ZXJ5UGFyYW1zKClcclxuICAgIGxldCBkYXRhID0gcXVlcnlQYXJhbXMuZGF0YSB8fCBxdWVyeVBhcmFtcy5wYXJhbXMgfHwge307XHJcbiAgICBsZXQgZmluYWxQYXJhbXMgPSB7XHJcbiAgICAgIC4uLmRhdGEsXHJcbiAgICAgIC4uLnRhYmxlU3RvcmUucmVxdWVzdENvbmZpZz8ucGFyYW1zLFxyXG4gICAgICAuLi5wYXJhbXMsXHJcbiAgICB9O1xyXG4gICAgY29uc3QgeyByZXF1ZXN0Q29uaWc6IHN0b3JlQ29uZmlnID0ge30gfSA9IHRhYmxlU3RvcmU7XHJcbiAgICBjb25zdCB7IHBhcmFtczogc3RvcmVQYXJhbXMgPSB7fSwgLi4ub3RoZXJTdG9yZUNvbmZpZyB9ID0gc3RvcmVDb25maWc7XHJcbiAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlLmxvYWQoe1xyXG4gICAgICAuLi5kZWZhdWx0UmVxdWVzdENvbmZpZyxcclxuICAgICAgLi4ub3RoZXJTdG9yZUNvbmZpZyxcclxuICAgICAgLi4ucmVxdWVzdENvbmZpZyxcclxuICAgICAgcGFyYW1zOiB7IC4uLnN0b3JlUGFyYW1zLCAuLi5maW5hbFBhcmFtcyB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8v5p+l6K+iXHJcbiAgb25TZWFyY2gocGFyYW1zKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIG9uU2VhcmNoLFxyXG4gICAgICBvbkNhbGxCYWNrcyxcclxuICAgICAgcmVxdWVzdFBhcmFtcyA9IHt9LFxyXG4gICAgICB0YWJsZVByb3BzID0ge30sXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgc3RvcmU6IHRhYmxlU3RvcmUgfSA9IHRhYmxlUHJvcHM7XHJcbiAgICBsZXQgcXVlcnlQYXJhbXM6IGFueSA9IHRoaXMuY29udmVydFF1ZXJ5UGFyYW1zKClcclxuICAgIGxldCBkYXRhID0gcXVlcnlQYXJhbXMuZGF0YSB8fCBxdWVyeVBhcmFtcy5wYXJhbXMgfHwge307XHJcbiAgICBsZXQgZmluYWxQYXJhbXMgPSB7XHJcbiAgICAgIC4uLmRhdGEsXHJcbiAgICAgIC4uLnRhYmxlU3RvcmUucmVxdWVzdENvbmZpZz8ucGFyYW1zLFxyXG4gICAgICAuLi5wYXJhbXMsXHJcbiAgICB9O1xyXG4gICAgaWYgKG9uU2VhcmNoKSB7XHJcbiAgICAgIG9uU2VhcmNoKGZpbmFsUGFyYW1zKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKG9uU2VhcmNoKSB7XHJcbiAgICAgIG9uU2VhcmNoKHsgLi4uZmluYWxQYXJhbXMsIC4uLnRoaXMuc3RhdGUudHJlZVNlYXJjaFByYW1zIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnRhYmxlTG9hZCh7IC4uLmZpbmFsUGFyYW1zLCAuLi50aGlzLnN0YXRlLnRyZWVTZWFyY2hQcmFtcyB9KTtcclxuICAgIG9uQ2FsbEJhY2tzPy5vblF1ZXJ5Q2FsbEJhY2sgJiZcclxuICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25RdWVyeUNhbGxCYWNrLFxyXG4gICAgICAgIHsgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLCBwYXJhbXM6IHBhcmFtcyB9LFxyXG4gICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgKTtcclxuICB9XHJcbiAgLy/ooajmoLzph43mlrDliqDovb1cclxuICB0YWJsZVJlbG9hZChwYXJhbXMgPSB7fSwgYXV0b0xvYWQgPSB0cnVlKSB7XHJcbiAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlPy5yZWxvYWQoe1xyXG4gICAgICBjYWxsYmFjazogKHJlcykgPT4ge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGF1dG9Mb2FkICYmXHJcbiAgICAgICAgICByZXM/LmRhdGE/LnJlY29yZHM/Lmxlbmd0aCA9PSAwICYmXHJcbiAgICAgICAgICB0aGlzLnN0YXRlLmN1cnJlbnRQYWdlICE9PSAxXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlPy5yZWxvYWQoe1xyXG4gICAgICAgICAgICBwYXJhbXM6IHsgY3VycmVudDogMSwgLi4ucGFyYW1zIH0sXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgdHJlZUxvYWQocGFyYW1zOiBhbnksIHJlcXVlc3RDb25maWcgPSB7fSkge1xyXG4gICAgY29uc3QgeyByZXF1ZXN0Q29uZmlnOiBkZWZhdWx0UmVxdWVzdENvbmZpZyA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgdGhpcy50cmVlUmVmLmN1cnJlbnQ/LnN0b3JlLmxvYWQoe1xyXG4gICAgICAuLi5kZWZhdWx0UmVxdWVzdENvbmZpZyxcclxuICAgICAgLi4ucmVxdWVzdENvbmZpZyxcclxuICAgICAgcGFyYW1zOiBwYXJhbXMsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRSb3dLZXlzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dLZXlzKCk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93RGF0YXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5nZXRTZWxlY3RlZFJvd0RhdGFzKCk7XHJcbiAgfVxyXG4gIHNldFNlbGVjdGVkUm93S2V5cyhkYXRhOiBBcnJheTxTdHJpbmcgfCBOdW1iZXI+KSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zZXRTZWxlY3RlZFJvd0tleXMoZGF0YSk7XHJcbiAgfVxyXG4gIHNldFNlbGVjdGVkUm93RGF0YXMoZGF0YTogQXJyYXk8T2JqZWN0Pikge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8uc2V0U2VsZWN0ZWRSb3dEYXRhcyhkYXRhKTtcclxuICB9XHJcbiAgcmVzZXRTZWxlY3RlZFJvd0tleXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5yZXNldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VhcmNoVmFsdWVzKCkge1xyXG4gICAgY29uc3QgZnJvbVZhbHVlID0gdGhpcy5zZWFyY2hSZWY/LmN1cnJlbnQ/LmdldFNlYXJjaFZhbHVlcygpO1xyXG4gICAgcmV0dXJuIHsgLi4uZnJvbVZhbHVlLCAuLi50aGlzLnN0YXRlLnRyZWVTZWFyY2hQcmFtcyB9O1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2hpbGRyZW5EYXRhKGRhdGEsIGtleXMgPSBbXSkge1xyXG4gICAgY29uc3QgeyB0YWJsZVByb3BzIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyByb3dLZXkgPSBcImlkXCIgfSA9IHRhYmxlUHJvcHM7XHJcbiAgICBsZXQgcmVzS2V5ID0gW107XHJcbiAgICBsZXQga2V5ID0gXCJcIjtcclxuICAgIGlmIChkYXRhLmNoaWxkTm9kZXMpIHtcclxuICAgICAgY29uc3QgY2hpbGRyZW4gPSBkYXRhLmNoaWxkTm9kZXM7XHJcbiAgICAgIGNoaWxkcmVuLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgICBpZiAodHlwZW9mIHJvd0tleSA9PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICAgIGtleSA9IHJvd0tleShpdGVtKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAga2V5ID0gaXRlbVtyb3dLZXldO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXRlbS5jaGlsZE5vZGVzKSB7XHJcbiAgICAgICAgICB0aGlzLmdldENoaWxkcmVuRGF0YShpdGVtLmNoaWxkTm9kZXMsIGtleXMpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXNLZXkgPSBbLi4ua2V5cywga2V5XTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmVzS2V5ID0gWy4uLmtleXMsIGtleV07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzS2V5O1xyXG4gIH1cclxuXHJcbiAgcmVuZGVyVG9vbEJ1dHRvbnModG9vbGJ1dHRvbnM6IGFueSwgdG9vbGJhckZsYWcpIHtcclxuICAgIGNvbnN0IGZsYWcgPSB0b29sYnV0dG9ucy5sZW5ndGggPiA1O1xyXG4gICAgY29uc3QgeyBzaG93U2VhcmNoID0gdHJ1ZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGNvbnRlbnQgPSB0b29sYnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgaWNvbiwgc2hvdywgLi4ucGFyYW1zIH0gPSBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAoaW5kZXggPiAzKSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvclwiKSxcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtY29udGVudC1pdGVtXCIpXHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICBtb3JlT3BlbjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljaygpO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgICAgICB0eXBlPXtcImxpbmtcIn1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWljb25cIil9PlxyXG4gICAgICAgICAgICAgICAge2ljb259XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRleHRcIil9PlxyXG4gICAgICAgICAgICAgICAge2NoaWxkcmVufVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRvb2wtYnV0dG9uc1wiKSl9XHJcbiAgICAgICAgc3R5bGU9e3sgbWFyZ2luTGVmdDogMCB9fVxyXG4gICAgICA+XHJcbiAgICAgICAge3Rvb2xidXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZmxhZykge1xyXG4gICAgICAgICAgICBpZiAoaW5kZXggPCA0KSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcclxuICAgICAgICAgICAgICAgICAgICBtYXJnaW5SaWdodDogMTIsXHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIHtpdGVtfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChpbmRleCA9PSA0KSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIDxQb3BvdmVyXHJcbiAgICAgICAgICAgICAgICAgIGNvbnRlbnQ9e2NvbnRlbnR9XHJcbiAgICAgICAgICAgICAgICAgIHRpdGxlPXtudWxsfVxyXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgICBvcGVuPXt0aGlzLnN0YXRlLm1vcmVPcGVufVxyXG4gICAgICAgICAgICAgICAgICBvbk9wZW5DaGFuZ2U9eyhvcGVuKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wZW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb3JlT3BlbjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW9yZU9wZW46IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgLy8gb3Blbj17dHJ1ZX1cclxuICAgICAgICAgICAgICAgIC8vIG92ZXJsYXlDbGFzc05hbWU9e3N0eWxlc1sncG9wLWJveCddfVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIHR5cGU9XCJwcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAg5pu05aSaIDxEb3duT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgc3R5bGU9e3tcclxuICAgICAgICAgICAgICAgICAgbWFyZ2luUmlnaHQ6IGluZGV4ID09IHRvb2xidXR0b25zLmxlbmd0aCAtIDEgPyAwIDogMTIsXHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHtpdGVtfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG4gIHJlbmRlckNsb3VtbkJ1dHRvbihjb2x1bW5CdXR0b25zOiBhbnksIHJvd1JlY29yZDogYW55KSB7XHJcbiAgICBjb25zdCB7IGFjdGlvblByb3BzLCB0YWJsZVByb3BzID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGJhc2VBY3Rpb25Db2x1bW4gfSA9IGNvbmZpZygpO1xyXG4gICAgY29uc3QgbmV3QnV0dG9ucyA9IFtdO1xyXG4gICAgY29uc3QgeyByb3dLZXkgPSBcImlkXCIgfSA9IHRhYmxlUHJvcHM7XHJcblxyXG4gICAgbGV0IGtleSA9IFwiXCI7XHJcbiAgICBpZiAodHlwZW9mIHJvd0tleSA9PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAga2V5ID0gcm93S2V5KHJvd1JlY29yZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBrZXkgPSByb3dSZWNvcmRbcm93S2V5XTtcclxuICAgIH1cclxuICAgIGxldCBzaG93SWNvbiA9IHRydWU7XHJcbiAgICBpZiAoYWN0aW9uUHJvcHM/LnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGVsc2UgaWYgKGJhc2VBY3Rpb25Db2x1bW4uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG4gICAgY29sdW1uQnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgaWNvbiwgcmVjb3JkU2hvdywgLi4ucGFyYW1zIH0gPVxyXG4gICAgICAgIGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChyZWNvcmRTaG93KSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiByZWNvcmRTaG93ID09IFwic3RyaW5nXCIpIHtcclxuXHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCBldmVudE9wdGlvbiA9IHsgcmVjb3JkOiByb3dSZWNvcmQsIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZiwgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MgfTtcclxuICAgICAgICAgICAgY29uc3QgVXRpbHMgPSB7IC4uLnRoaXMucHJvcHMuVWl0bHMgfVxyXG4gICAgICAgICAgICBsZXQgZnVuYyA9IG5ldyBGdW5jdGlvbihcImV2ZW50T3B0aW9uLFV0aWxzXCIsIHJlY29yZFNob3cpO1xyXG4gICAgICAgICAgICBjb25zdCBzaG93ID0gZnVuYyhldmVudE9wdGlvbiwgVXRpbHMpO1xyXG4gICAgICAgICAgICBzaG93ICYmIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgbGV0IHJlY29yZCA9IHJvd1JlY29yZFxyXG4gICAgICAgICAgICBpZiAoZXZhbChyZWNvcmRTaG93KSkge1xyXG4gICAgICAgICAgICAgIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgLy8gICByZWNvcmRTaG93LFxyXG4gICAgICAgICAgLy8gICB7IHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZiwgcmVjb3JkOiByZWNvcmQsIH0sXHJcbiAgICAgICAgICAvLyAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgIC8vICk7XHJcbiAgICAgICAgICAvLyBpZiAoZXZhbChyZWNvcmRTaG93KSkge1xyXG4gICAgICAgICAgLy8gICBuZXdCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAvLyB9XHJcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcmVjb3JkU2hvdyA9PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICAgIGNvbnN0IHNob3cgPSByZWNvcmRTaG93KHJvd1JlY29yZCk7XHJcbiAgICAgICAgICBzaG93ICYmIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGxldCBudW1iZXIgPSBhY3Rpb25Qcm9wcz8uYnV0dG9uTnVtYmVyXHJcbiAgICAgID8gYWN0aW9uUHJvcHM/LmJ1dHRvbk51bWJlclxyXG4gICAgICA6IGJhc2VBY3Rpb25Db2x1bW4/LmJ1dHRvbk51bWJlclxyXG4gICAgICAgID8gYmFzZUFjdGlvbkNvbHVtbj8uYnV0dG9uTnVtYmVyXHJcbiAgICAgICAgOiAzO1xyXG4gICAgbGV0IGZsYWcgPSBmYWxzZTtcclxuICAgIGlmIChudW1iZXIgPT0gXCJhbGxcIikge1xyXG4gICAgICBmbGFnID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmbGFnID0gbmV3QnV0dG9ucy5sZW5ndGggPiBudW1iZXI7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IG5ld0J1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIHJlY29yZFNob3csIGljb24sIHNob3csIC4uLnBhcmFtcyB9ID1cclxuICAgICAgICBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAoaW5kZXggPiBOdW1iZXIobnVtYmVyKSAtIDEpIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpLFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1jb250ZW50LWl0ZW1cIilcclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIGxldCBkYXRhID0geyAuLi50aGlzLnN0YXRlLnBvcG9wZW5zIH07XHJcbiAgICAgICAgICAgICAgZGF0YVtyb3dSZWNvcmQuaWRdID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICBwb3BvcGVuczogZGF0YSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2socm93UmVjb3JkKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgICAgdHlwZT17XCJsaW5rXCJ9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHtzaG93SWNvbiAhPT0gZmFsc2UgJiYgKFxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWljb25cIil9PlxyXG4gICAgICAgICAgICAgICAge2ljb259XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIG5ld0J1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIHJlY29yZFNob3csIGljb24sIC4uLnBhcmFtcyB9ID1cclxuICAgICAgICBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAoZmxhZykge1xyXG4gICAgICAgIGlmIChpbmRleCA8IG51bWJlcikge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIiksIHtcclxuICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yLWZpcnN0XCIpXTogaW5kZXggPT09IDAsXHJcbiAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2socm93UmVjb3JkKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIGljb249e2ljb259XHJcbiAgICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgICAgICB0eXBlPXtcImxpbmtcIn1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHtzaG93SWNvbiAhPT0gZmFsc2UgJiYgKFxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaWNvblwiKX0+XHJcbiAgICAgICAgICAgICAgICAgIHtpY29ufVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGV4dFwiKX0+XHJcbiAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbmRleCA9PSBudW1iZXIpIHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxQb3BvdmVyXHJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICB0aXRsZT17bnVsbH1cclxuICAgICAgICAgICAgICBjb250ZW50PXtjb250ZW50fVxyXG4gICAgICAgICAgICAgIHRyaWdnZXI9e1tcImNsaWNrXCJdfVxyXG4gICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgb3Blbj17dGhpcy5zdGF0ZS5wb3BvcGVuc1trZXldIHx8IGZhbHNlfVxyXG4gICAgICAgICAgICAgIG9uT3BlbkNoYW5nZT17KG9wZW4pID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChvcGVuKSB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBkYXRhID0geyAuLi50aGlzLnN0YXRlLnBvcG9wZW5zIH07XHJcbiAgICAgICAgICAgICAgICAgIGRhdGFba2V5XSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHBvcG9wZW5zOiBkYXRhLFxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHBvcG9wZW5zOiB7fSxcclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgLy8gb3ZlcmxheUNsYXNzTmFtZT17c3R5bGVzWydwb3AnXX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxhIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvclwiKX0+XHJcbiAgICAgICAgICAgICAgICA8RWxsaXBzaXNPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgPC9Qb3BvdmVyPlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIiksIHtcclxuICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvci1maXJzdFwiKV06IGluZGV4ID09PSAwLFxyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljayhyb3dSZWNvcmQpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgICB0eXBlPVwibGlua1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHtzaG93SWNvbiAhPT0gZmFsc2UgJiYgKFxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWljb25cIil9PlxyXG4gICAgICAgICAgICAgICAge2ljb259XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuICAvL+agkeeCueWHu+S6i+S7tlxyXG4gIHRyZWVTZWxlY3Qoc2VsZWN0ZWRLZXlzOiBhbnksIG9iajogYW55KSB7XHJcbiAgICBsZXQga2V5d29yZCA9IFwiXCI7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHNlYXJjaEtleSA9IFwia2V5XCIsXHJcbiAgICAgIHNlYXJjaEZpZWxkID0gXCJcIixcclxuICAgICAgcGFyYW50U2VsZWN0ID0gdHJ1ZSxcclxuICAgIH0gPSB0aGlzLnByb3BzLnRyZWVQcm9wcztcclxuICAgIGNvbnN0IHsgdHJlZVNlbGVjdGVkS2V5IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgeyBzZWxlY3RlZCwgc2VsZWN0ZWROb2RlcyB9ID0gb2JqO1xyXG5cclxuICAgIGlmIChzZWxlY3RlZCkge1xyXG4gICAgICBrZXl3b3JkID0gc2VsZWN0ZWROb2Rlc1swXS5kYXRhcmVmLmF0dHJpYnV0ZVtzZWFyY2hLZXldO1xyXG4gICAgICBpZiAocGFyYW50U2VsZWN0KSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IHNlbGVjdGVkS2V5c1swXSxcclxuICAgICAgICAgIHRyZWVTZWFyY2hQcmFtczogeyBbc2VhcmNoRmllbGRdOiBrZXl3b3JkIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHNlbGVjdGVkTm9kZXNbMF0uaXNMZWFmIHx8ICFzZWxlY3RlZE5vZGVzWzBdLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICBpZiAoc2VsZWN0ZWRLZXlzWzBdICE9PSB0cmVlU2VsZWN0ZWRLZXkpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgdHJlZVNlbGVjdGVkS2V5OiBzZWxlY3RlZEtleXNbMF0sXHJcbiAgICAgICAgICAgICAgdHJlZVNlYXJjaFByYW1zOiB7IFtzZWFyY2hGaWVsZF06IGtleXdvcmQgfSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IGtleXdvcmQsXHJcbiAgICAgICAgdHJlZVNlYXJjaFByYW1zOiB7fSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5wcm9wcy5vblRyZWVTZWxlY3QpIHtcclxuICAgICAgdGhpcy5wcm9wcy5vblRyZWVTZWxlY3Qoc2VsZWN0ZWRLZXlzLCBvYmopO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBmcm9tVmFsdWUgPSB0aGlzLnNlYXJjaFJlZj8uY3VycmVudD8uZ2V0U2VhcmNoVmFsdWVzKCkgfHwge307XHJcbiAgICBzZWFyY2hGaWVsZCAmJiB0aGlzLnRhYmxlTG9hZCh7IC4uLmZyb21WYWx1ZSwgW3NlYXJjaEZpZWxkXToga2V5d29yZCB9KTtcclxuICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/LnRyZWVTZWxlY3RDYWxsQmFjayAmJlxyXG4gICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy50cmVlU2VsZWN0Q2FsbEJhY2ssXHJcbiAgICAgICAgeyBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsIHNlbGVjdGVkS2V5czogc2VsZWN0ZWRLZXlzLCBvYmo6IG9iaiB9LFxyXG4gICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgKTtcclxuICAgIC8vIHV0aWxzLmNhbGxiYWNrKHRoaXMucHJvcHMub25DYWxsQmFja3M/LnRyZWVTZWxlY3RDYWxsQmFjaywgdGhpcywgW1xyXG4gICAgLy8gICBzZWxlY3RlZEtleXMsXHJcbiAgICAvLyAgIG9iaixcclxuICAgIC8vIF0pO1xyXG4gIH1cclxuICByZXNldFNlYXJjaCgpIHtcclxuICAgIHRoaXMuc2VhcmNoUmVmLmN1cnJlbnQ/LnJlc2V0RmllbGRzKCk7XHJcbiAgfVxyXG4gIGdldFRleHQocHJvcHMsIHRleHQpIHtcclxuICAgIGxldCBuZXdUZXh0ID0gdGV4dDtcclxuICAgIGlmIChwcm9wcz8uZGF0YSAmJiBwcm9wcz8uZGF0YT8ubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgZGF0YSA9IHByb3BzLmRhdGE7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YT8ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoZGF0YVtpXS52YWx1ZSA9PSB0ZXh0KSB7XHJcbiAgICAgICAgICBuZXdUZXh0ID0gZGF0YVtpXS5sYWJlbDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBuZXdUZXh0O1xyXG4gIH1cclxuICBzZXRUYWJsZURhdGEoZGF0YSkge1xyXG4gICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZT8uc2V0RGF0YShkYXRhKTtcclxuICB9XHJcbiAgc2V0VHJlZURhdGEoZGF0YSkge1xyXG4gICAgdGhpcy50cmVlUmVmLmN1cnJlbnQ/LnN0b3JlPy5zZXREYXRhKGRhdGEpO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZEtleSA9IChzZWxlY3RlZCkgPT4ge1xyXG4gICAgbGV0IHJlcyA9IFtdO1xyXG4gICAgZm9yIChsZXQga2V5IGluIHNlbGVjdGVkKSB7XHJcbiAgICAgIGNvbnN0IGtleXMgPSBzZWxlY3RlZFtrZXldO1xyXG4gICAgICBpZiAoa2V5cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgcmVzID0gWy4uLnJlcywgLi4ua2V5c107XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXM7XHJcbiAgfTtcclxuXHJcbiAgY29udmVydFF1ZXJ5UGFyYW1zKCkge1xyXG4gICAgY29uc3QgeyByZXF1ZXN0UGFyYW1zID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBsZXQgcXVlcnlQYXJhbXM6IGFueSA9IHJlcXVlc3RQYXJhbXMucXVlcnlQYXJhbXM7XHJcbiAgICBpZiAocXVlcnlQYXJhbXMgJiYgdHlwZW9mIHF1ZXJ5UGFyYW1zID09IFwic3RyaW5nXCIpIHtcclxuICAgICAgY29uc3QgVXRpbHMgPSB0aGlzLnByb3BzLlV0aWxzIHx8IHt9O1xyXG4gICAgICBsZXQgZnVuYyA9IG5ldyBGdW5jdGlvbihcIlV0aWxzXCIsIHF1ZXJ5UGFyYW1zKTtcclxuICAgICAgbGV0IGNvbnZlclBhcmFtcyA9IGZ1bmMoVXRpbHMpO1xyXG4gICAgICBxdWVyeVBhcmFtcyA9IGNvbnZlclBhcmFtcztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHF1ZXJ5UGFyYW1zID0gcXVlcnlQYXJhbXMgfHwge307XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcXVlcnlQYXJhbXM7XHJcbiAgfVxyXG5cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGNvbHVtbnMgPSBbXSxcclxuICAgICAgc2hvd1NlYXJjaCA9IHRydWUsXHJcbiAgICAgIGNoaWxkcmVuLFxyXG4gICAgICBzdWJtaXRVcmwgPSBcIlwiLFxyXG4gICAgICB0YWJsZVByb3BzID0ge30sXHJcbiAgICAgIHRyZWVQcm9wcyA9IHt9LFxyXG4gICAgICBmb3JtUHJvcHMgPSB7fSxcclxuICAgICAgZm9ybVBhZ2VQcm9wcyA9IHt9LFxyXG4gICAgICBzaG93TGVmdCA9IGZhbHNlLFxyXG4gICAgICBzdWJtaXRQYXJhbXMgPSB7fSxcclxuICAgICAgc2hvd1Rvb2xCdXR0b24gPSB0cnVlLFxyXG4gICAgICBidXR0b25zID0gW10sXHJcbiAgICAgIGVkaXRvckZvcm0gPSB0cnVlLFxyXG4gICAgICBvblNob3dGb3JtLFxyXG4gICAgICBmb3JtQ2hhbmdlVmFsaWQgPSB0cnVlLFxyXG4gICAgICBjbGFzc05hbWUsXHJcbiAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbiA9IFwiYnV0dG9tXCIsXHJcbiAgICAgIGFjdGlvblByb3BzLFxyXG4gICAgICBkZWxldGVQb3NpdGlvbiA9IFwidG9vbGJhclwiLFxyXG4gICAgICBidXR0b25DbGljayA9IHt9LFxyXG4gICAgICBwZXJtaXNzaW9uID0geyBoYXM6IGZhbHNlIH0sXHJcbiAgICAgIHJlcXVlc3RQYXJhbXMgPSB7fSxcclxuICAgICAgcmVxdWVzdFVybHMgPSB7fSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBzdG9yZTogdGFibGVTdG9yZSA9IHt9LFxyXG4gICAgICBmaWx0ZXJDb2x1bW4gPSB0cnVlLFxyXG4gICAgICBhY3Rpb25Db2x1bW4gPSB0cnVlLFxyXG4gICAgICBzaG93Um93U2VsZWN0aW9uID0gdHJ1ZSxcclxuICAgICAgY29sdW1uT3JkZXIgPSB0cnVlLFxyXG4gICAgICBleHBhbmRhYmxlID0ge30sXHJcbiAgICAgIHBhcmFudFNlbGVjdCA9IHRydWUsXHJcbiAgICAgIHRpdGxlOiB0YWJsZVRpdGxlLFxyXG4gICAgICAuLi5vdGhlcnRhYmxlUGFyYW1zXHJcbiAgICB9ID0gdGFibGVQcm9wcztcclxuICAgIGxldCBuZXdUYWJsZVN0b3JlID0geyAuLi50YWJsZVN0b3JlIH1cclxuICAgIGlmIChyZXF1ZXN0UGFyYW1zLnF1ZXJ5UGFyYW1zKSB7XHJcbiAgICAgIGxldCBxdWVyeVBhcmFtczogYW55ID0gdGhpcy5jb252ZXJ0UXVlcnlQYXJhbXMoKTtcclxuICAgICAgbGV0IGRhdGEgPSBxdWVyeVBhcmFtcz8uZGF0YSB8fCBxdWVyeVBhcmFtcz8ucGFyYW1zIHx8IHt9O1xyXG4gICAgICBuZXdUYWJsZVN0b3JlLnJlcXVlc3RDb25maWcgPSB7XHJcbiAgICAgICAgcGFyYW1zOiB7IC4uLmRhdGEsIC4uLm5ld1RhYmxlU3RvcmUucmVxdWVzdENvbmZpZz8ucGFyYW1zIH0sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHN0b3JlOiB0cmVlU3RvcmUgPSB7fSxcclxuICAgICAgc2hvd1NlYXJjaDogdHJlZVNlYXJjaCA9IHRydWUsXHJcbiAgICAgIHRpdGxlQWxpYXMgPSBcInRpdGxlXCIsXHJcbiAgICAgIHRpdGxlOiB0cmVlVGl0bGUsXHJcbiAgICAgIC4uLm90aGVydHJlZVBhcmFtc1xyXG4gICAgfSA9IHRyZWVQcm9wcztcclxuXHJcbiAgICBsZXQgdGFibGVQYXJhbXMgPSB7XHJcbiAgICAgIGZpbHRlckNvbHVtbixcclxuICAgICAgc3RvcmU6IHsgLi4ubmV3VGFibGVTdG9yZSB9LFxyXG4gICAgICAuLi5vdGhlcnRhYmxlUGFyYW1zLFxyXG4gICAgfSBhcyBhbnk7XHJcbiAgICBjb25zdCBkZWZhdWx0VmFsdWU6IGFueSA9IHt9O1xyXG4gICAgY29uc3QgY29sdW1uQnV0dG9uczogYW55ID0gW107XHJcbiAgICBjb25zdCB7IGVsZW1lbnRIZWlnaHQgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBsZXQgcGVybWlzc2lvbkJ1dHRvbnMgPSBbXTtcclxuICAgIGlmIChwZXJtaXNzaW9uLmhhcyAmJiBwZXJtaXNzaW9uLm1lbnVDb2RlKSB7XHJcbiAgICAgIHBlcm1pc3Npb25CdXR0b25zID1cclxuICAgICAgICBnZXRCdXR0b25QZXJtaXNzb25zKHBlcm1pc3Npb24ubWVudUNvZGUpLnBlcm1pc3NvbnMgfHwgW107XHJcbiAgICB9XHJcbiAgICBjb25zdCBvYmogPSBjb252ZXJ0Q29sdW1ucyhjb2x1bW5zLCB7fSlcclxuICAgIGxldCB0YWJsZUNvbHVtbjogYW55W10gPSBnZXROZXdDb2x1bW5zKGNvbHVtbnMsIHRoaXMucHJvcHMpXHJcbiAgICBjb25zdCBzZWFyY2hGb3JtcyA9IG9iai5zZWFyY2hGb3JtcyB8fCBbXVxyXG4gICAgY29uc3QgZWRpdG9yRm9ybXMgPSBvYmouZWRpdG9yRm9ybXMgfHwgW11cclxuICAgIGNvbnN0IHRvb2xCdXR0b25zOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IHsgYmFzZUFjdGlvbkNvbHVtbiB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgc2hvd0ljb24gPSB0cnVlO1xyXG4gICAgaWYgKGFjdGlvblByb3BzPy5zaG93SWNvbiA9PT0gZmFsc2UpIHNob3dJY29uID0gZmFsc2U7XHJcbiAgICBlbHNlIGlmIChiYXNlQWN0aW9uQ29sdW1uLnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGNvbnN0IGJ1dHRvbk1hcCA9IHtcclxuICAgICAgLy8gYWRkOiB7IG5hbWU6IFwi5paw5aKeXCIsIGNvZGU6IFwiYWRkXCIsIGljb246IDxQbHVzT3V0bGluZWQgLz4gfSxcclxuICAgICAgZWRpdG9yOiB7IG5hbWU6IFwi57yW6L6RXCIsIGNvZGU6IFwiZWRpdG9yXCIsIGljb246IDxFZGl0T3V0bGluZWQgLz4gfSxcclxuICAgICAgZGVsZXRlOiB7IG5hbWU6IFwi5Yig6ZmkXCIsIGNvZGU6IFwiZGVsZXRlXCIsIGljb246IDxEZWxldGVPdXRsaW5lZCAvPiB9LFxyXG4gICAgICBzZWFyY2g6IHsgbmFtZTogXCLmn6XnnItcIiwgY29kZTogXCJzZWFyY2hcIiwgaWNvbjogPEV5ZU91dGxpbmVkIC8+IH0sXHJcbiAgICB9O1xyXG4gICAgY29uc3QgcmV0dXJuQnV0dG9uID0gKGNvZGUsIHNob3cgPSBcIlwiKSA9PiB7XHJcbiAgICAgIGxldCBwcm9wcyA9IHt9O1xyXG4gICAgICBpZiAoc2hvdykge1xyXG4gICAgICAgIHByb3BzID0geyByZWNvcmRTaG93OiBzaG93IH07XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICBvbkNsaWNrPXsocmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKGNvZGUgPT0gXCJkZWxldGVcIikge1xyXG4gICAgICAgICAgICAgIHRoaXMub25EZWxldGUocmVjb3JkKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBpZiAoY29kZSA9PSBcImVkaXRvclwiICYmIGJ1dHRvbkNsaWNrLm9uRWRpdG9yKSB7XHJcbiAgICAgICAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgYnV0dG9uQ2xpY2sub25FZGl0b3IsXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkOiByZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCxcclxuICAgICAgICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPT0gXCJzZWFyY2hcIiAmJiBidXR0b25DbGljay5vblNlYXJjaCkge1xyXG4gICAgICAgICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgIGJ1dHRvbkNsaWNrLm9uU2VhcmNoLFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZDogcmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsXHJcbiAgICAgICAgICAgICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChvblNob3dGb3JtKSB7XHJcbiAgICAgICAgICAgICAgICBvblNob3dGb3JtKHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLCBjb2RlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd0Zvcm0ocmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsIGNvZGUsICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBjYWxsQmFjayA9IGNvZGUgPT0gXCJlZGl0b3JcIiA/IHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uRWRpdG9yQ2FsbEJhY2sgOiB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vblNlYXJjaENhbGxCYWNrXHJcbiAgICAgICAgICAgICAgICBjYWxsQmFjayAmJiBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgY2FsbEJhY2ssXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkOiByZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCxcclxuICAgICAgICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIGljb249e3Nob3dJY29uID8gYnV0dG9uTWFwW2NvZGVdLmljb24gOiBudWxsfVxyXG4gICAgICAgICAgdHlwZT1cImxpbmtcIlxyXG4gICAgICAgICAgey4uLnByb3BzfVxyXG4gICAgICAgID5cclxuICAgICAgICAgIHtidXR0b25NYXBbY29kZV0/Lm5hbWV9XHJcbiAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICk7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgY2hlY2tQZXJzc2lvbiA9IChjb2RlKSA9PiB7XHJcbiAgICAgIGlmICghcGVybWlzc2lvbi5oYXMpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gcGVybWlzc2lvbkJ1dHRvbnMuaW5kZXhPZihjb2RlKSA+IC0xO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgYnV0dG9ucy5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBpZiAoKGl0ZW0gPT0gXCJhZGRcIiB8fCBpdGVtLmNvZGUgPT0gXCJhZGRcIikgJiYgY2hlY2tQZXJzc2lvbihcImFkZFwiKSkge1xyXG4gICAgICAgIHRvb2xCdXR0b25zLnB1c2goXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIHR5cGU9e1wicHJpbWFyeVwifVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgeyBvblNob3dGb3JtLCBidXR0b25DbGljayA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICAgICAgICAgIGlmIChidXR0b25DbGljaz8ub25BZGQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICBidXR0b25DbGljay5vbkFkZCxcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKG9uU2hvd0Zvcm0pIHtcclxuICAgICAgICAgICAgICAgIG9uU2hvd0Zvcm0obnVsbCwgXCJhZGRcIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd0Zvcm0obnVsbCwgbnVsbCwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25BZGRDYWxsQmFjayAmJiBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25BZGRDYWxsQmFjayxcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9KTtcclxuXHJcblxyXG5cclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgaWNvbj17PFBsdXNPdXRsaW5lZCAvPn1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg5re75YqgXHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgIChpdGVtID09IFwiZGVsZXRlXCIgfHwgaXRlbS5jb2RlID09IFwiZGVsZXRlXCIpICYmXHJcbiAgICAgICAgY2hlY2tQZXJzc2lvbihcImRlbGV0ZVwiKVxyXG4gICAgICApIHtcclxuICAgICAgICBpZiAoZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIpIHtcclxuICAgICAgICAgIHRvb2xCdXR0b25zLnB1c2goXHJcbiAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICAvLyB0eXBlPXtcInByaW1hcnlcIn1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXt0aGlzLm9uRGVsZXRlLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgaWNvbj17PERlbGV0ZU91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICAgIGRhbmdlclxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAg5Yig6ZmkXHJcbiAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKHJldHVybkJ1dHRvbihpdGVtLmNvZGUgfHwgaXRlbSwgaXRlbS5yZWNvcmRTaG93KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChjaGVja1BlcnNzaW9uKGl0ZW0uY29kZSA/IGl0ZW0uY29kZSA6IGl0ZW0pKSB7XHJcbiAgICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goXHJcbiAgICAgICAgICAgIHJldHVybkJ1dHRvbihpdGVtLmNvZGUgPyBpdGVtLmNvZGUgOiBpdGVtLCBpdGVtLnJlY29yZFNob3cpXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XHJcbiAgICAgIGNoaWxkcmVuLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbSkpIHtcclxuICAgICAgICAgIGl0ZW0ubWFwKChjaGlsZCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgY2hpbGQ/LnByb3BzPy5wYWdlVHlwZSA9PSBcInRvb2xCdXR0b25cIiAmJlxyXG4gICAgICAgICAgICAgIGNoZWNrUGVyc3Npb24oY2hpbGQ/LnByb3BzPy5jb2RlKVxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICB0b29sQnV0dG9ucy5wdXNoKGNoaWxkKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgICAgICBjaGlsZD8ucHJvcHM/LnBhZ2VUeXBlID09IFwiY29sdW1uQnV0dG9uXCIgJiZcclxuICAgICAgICAgICAgICBjaGVja1BlcnNzaW9uKGNoaWxkPy5wcm9wcz8uY29kZSlcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKGNoaWxkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgaXRlbT8ucHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiICYmXHJcbiAgICAgICAgICAgIGNoZWNrUGVyc3Npb24oaXRlbT8ucHJvcHM/LmNvZGUpXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgdG9vbEJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgIGl0ZW0/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNvbHVtbkJ1dHRvblwiICYmXHJcbiAgICAgICAgICAgIGNoZWNrUGVyc3Npb24oaXRlbT8ucHJvcHM/LmNvZGUpXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgIGNvbnN0IHsgcHJvcHMgfTogYW55ID0gY2hpbGRyZW47XHJcbiAgICAgIGlmIChwcm9wcz8ucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIgJiYgY2hlY2tQZXJzc2lvbihwcm9wcz8uY29kZSkpIHtcclxuICAgICAgICB0b29sQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICBwcm9wcz8ucGFnZVR5cGUgPT0gXCJjb2x1bW5CdXR0b25cIiAmJlxyXG4gICAgICAgIGNoZWNrUGVyc3Npb24ocHJvcHM/LmNvZGUpXHJcbiAgICAgICkge1xyXG4gICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChjaGlsZHJlbik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGFjdGlvbkNvbHVtbiAmJlxyXG4gICAgICB0YWJsZUNvbHVtbi5wdXNoKHtcclxuICAgICAgICB0aXRsZTogXCLmk43kvZxcIixcclxuICAgICAgICBkYXRhSW5kZXg6IFwiYWN0aW9uXCIsXHJcbiAgICAgICAgYWxpZ246IGFjdGlvblByb3BzPy50ZXh0QWxpZ25cclxuICAgICAgICAgID8gYWN0aW9uUHJvcHM/LnRleHRBbGlnblxyXG4gICAgICAgICAgOiBiYXNlQWN0aW9uQ29sdW1uLnRleHRBbGlnblxyXG4gICAgICAgICAgICA/IGJhc2VBY3Rpb25Db2x1bW4udGV4dEFsaWduXHJcbiAgICAgICAgICAgIDogXCJsZWZ0XCIsXHJcbiAgICAgICAgd2lkdGg6IGFjdGlvblByb3BzPy53aWR0aFxyXG4gICAgICAgICAgPyBhY3Rpb25Qcm9wcz8ud2lkdGhcclxuICAgICAgICAgIDogYmFzZUFjdGlvbkNvbHVtbi53aWR0aFxyXG4gICAgICAgICAgICA/IGJhc2VBY3Rpb25Db2x1bW4ud2lkdGhcclxuICAgICAgICAgICAgOiAyMDAsXHJcbiAgICAgICAgZml4ZWQ6IFwicmlnaHRcIixcclxuICAgICAgICByZW5kZXI6ICh0ZXh0OiBhbnksIHJlY29yZDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWFjdGlvblwiKX0+XHJcbiAgICAgICAgICAgICAge3RoaXMucmVuZGVyQ2xvdW1uQnV0dG9uKGNvbHVtbkJ1dHRvbnMsIHJlY29yZCl9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuXHJcbiAgICBpZiAoY29sdW1uT3JkZXIpXHJcbiAgICAgIHRhYmxlQ29sdW1uID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIHRpdGxlOiBcIuW6j+WPt1wiLFxyXG4gICAgICAgICAgd2lkdGg6IDgwLFxyXG4gICAgICAgICAgYWxpZ246IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICByZW5kZXI6ICh0ZXh0LCByZWFjb3JkLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gPD57aW5kZXggKyAxfTwvPjtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi50YWJsZUNvbHVtbixcclxuICAgICAgXTtcclxuICAgIGxldCBzZWFyY2hGbGFnID0gc2hvd1NlYXJjaCAmJiBzZWFyY2hGb3Jtcy5sZW5ndGggPiAwO1xyXG4gICAgbGV0IHsgdGFibGVUb29sIH0gPSBjb25maWcoKTtcclxuICAgIGxldCB0b29sRmxhZyA9XHJcbiAgICAgIHNob3dUb29sQnV0dG9uICYmXHJcbiAgICAgIHRvb2xCdXR0b25zLmxlbmd0aCA+IDAgJiZcclxuICAgICAgdG9vbEJ1dHRvblBvc2l0aW9uID09IFwiYnV0dG9tXCI7XHJcbiAgICBsZXQgdG9vbGJhckZsYWcgPSAhKFxyXG4gICAgICB0YWJsZVByb3BzLnRvb2xiYXIgPT0gZmFsc2UgfHxcclxuICAgICAgdGFibGVQcm9wcy50b29sYmFyPy5zaG93ID09IGZhbHNlIHx8XHJcbiAgICAgIHRhYmxlUHJvcHMudG9vbGJhcj8udG9vbHM/Lmxlbmd0aCA9PSAwIHx8XHJcbiAgICAgIHRhYmxlVG9vbD8uc2hvdyA9PSBmYWxzZVxyXG4gICAgKTtcclxuICAgIGxldCB0YWJsZUhlYWRlckhlaWdodCA9IDU1O1xyXG4gICAgbGV0IHRvb2xIZWlnaHQgPSB0YWJsZVRpdGxlIHx8IHRvb2xGbGFnID8gNTAgOiAwO1xyXG4gICAgbGV0IHBhZGRpbmdIZWlnaHQgPSAyMCAqIDI7IC8v5LiK5LiL6Ze06LedXHJcbiAgICBsZXQgdGFibGVDb250ZW50SGVpZ2h0ID1cclxuICAgICAgZWxlbWVudEhlaWdodCAtIHRvb2xIZWlnaHQgLSBwYWRkaW5nSGVpZ2h0O1xyXG4gICAgbGV0IFBhZ2luYXRpb25IZWlnaHQgPSB0YWJsZVByb3BzLnBhZ2luYXRpb24gIT09IGZhbHNlID8gKDMyICsgMTYpIDogMCAvLzMyIOS4uuWIhumhteWZqOmrmOW6piwxNuS4um1hcmdpbumXtOi3nVxyXG4gICAgbGV0IHRhYmxlSGVpZ2h0ID0gdGFibGVDb250ZW50SGVpZ2h0IC0gUGFnaW5hdGlvbkhlaWdodDtcclxuICAgIGxldCB0YWJsZVNyb2xsSGVpZ2h0ID0gdGFibGVDb250ZW50SGVpZ2h0IC0gdGFibGVIZWFkZXJIZWlnaHQgLSBQYWdpbmF0aW9uSGVpZ2h0O1xyXG4gICAgLy8gaWYgKHRhYmxlUHJvcHMucGFnaW5hdGlvbiAhPT0gZmFsc2UpIHtcclxuICAgIGNvbnN0IHNjcm9sbCA9IHRhYmxlUGFyYW1zLnNjcm9sbDtcclxuICAgIHRhYmxlUGFyYW1zID0ge1xyXG4gICAgICAuLi50YWJsZVBhcmFtcyxcclxuICAgICAgc2Nyb2xsOiB7IHg6IFwibWF4LWNvbnRlbnRcIiwgeTogdGFibGVTcm9sbEhlaWdodCwgLi4uc2Nyb2xsIH0sXHJcbiAgICB9O1xyXG4gICAgLy8gfVxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZVwiKSwgY2xhc3NOYW1lKX1cclxuICAgICAgICByZWY9e3RoaXMucGFnZVJlZn1cclxuICAgICAgPlxyXG4gICAgICAgIHt0aGlzLnByb3BzLnBhZ2VUaXRsZSAmJiAoXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10aXRsZVwiKSl9PlxyXG4gICAgICAgICAgICB7dGhpcy5wcm9wcy5wYWdlVGl0bGV9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1wYW5lXCIpKX1cclxuICAgICAgICAgIHN0eWxlPXt7IGRpc3BsYXk6IFwiZmxleFwiIH19XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3Nob3dMZWZ0ICYmIChcclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1sZWZ0XCIpfT5cclxuICAgICAgICAgICAgICB7dHJlZVRpdGxlICYmIChcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJ0cmVlLXRpdGxlXCIpfT57dHJlZVRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwidHJlZS1jb250ZW50XCIpLCB7XHJcbiAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJ0cmVlLWNvbnRlbnQtbm90aXRsZVwiKV06ICF0cmVlVGl0bGUsXHJcbiAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8VHJlZVxyXG4gICAgICAgICAgICAgICAgICBzdG9yZT17eyAuLi50cmVlU3RvcmUgfX1cclxuICAgICAgICAgICAgICAgICAgc2hvd0ljb249e2ZhbHNlfVxyXG4gICAgICAgICAgICAgICAgICBjaGVja2FibGU9e2ZhbHNlfVxyXG4gICAgICAgICAgICAgICAgICBzZWFyY2hhYmxlPXt0cmVlU2VhcmNofVxyXG4gICAgICAgICAgICAgICAgICBvblNlbGVjdD17dGhpcy50cmVlU2VsZWN0LmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkS2V5cz17W3RoaXMuc3RhdGUudHJlZVNlbGVjdGVkS2V5XX1cclxuICAgICAgICAgICAgICAgICAgdGl0bGVBbGlhcz17dGl0bGVBbGlhc31cclxuICAgICAgICAgICAgICAgICAgcmVmPXt0aGlzLnRyZWVSZWZ9XHJcbiAgICAgICAgICAgICAgICAgIHsuLi5vdGhlcnRyZWVQYXJhbXN9XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1yaWdodFwiKSwge1xyXG4gICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2Utbm8tbGVmdC1yaWdodFwiKV06ICFzaG93TGVmdCxcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHtzaG93U2VhcmNoICYmIHNlYXJjaEZvcm1zLmxlbmd0aCA+IDAgJiYgKFxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaGVhZGVyc2VhcmNoXCIpfT5cclxuICAgICAgICAgICAgICAgIDxIZWFkZXJTZWFyY2hcclxuICAgICAgICAgICAgICAgICAgc2VhcmNoRm9ybXM9e3NlYXJjaEZvcm1zfVxyXG4gICAgICAgICAgICAgICAgICB0b29sQnV0dG9uUG9zaXRpb249e3Rvb2xCdXR0b25Qb3NpdGlvbn1cclxuICAgICAgICAgICAgICAgICAgb25TZWFyY2g9e3RoaXMub25TZWFyY2guYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgICAgICAgb25SZXNldD17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb3BzLm9uUmVzZXQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25SZXNldCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5yZXNldEZpZWxkcygpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVMb2FkKHt9KTtcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgcmVmPXt0aGlzLnNlYXJjaFJlZn1cclxuICAgICAgICAgICAgICAgICAgc2VhcmNoRm9ybVByb3BzPXt0aGlzLnByb3BzLnNlYXJjaEZvcm1Qcm9wc31cclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtY29udGVudFwiKSwge1xyXG4gICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1jb250ZW50LWdhcFwiKV06ICFzZWFyY2hGbGFnLFxyXG4gICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgIHJlZj17dGhpcy5wYWdlQ29udGVudFJlZn1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHsodGFibGVUaXRsZSB8fCB0b29sRmxhZykgJiYgKFxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGFibGUtdGl0bGVcIiksIHtcclxuICAgICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRpdGxlLXdpZHRoXCIpXTogIXRvb2xiYXJGbGFnLFxyXG4gICAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGRpdj57dGFibGVUaXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAge3Rvb2xGbGFnICYmIHRoaXMucmVuZGVyVG9vbEJ1dHRvbnModG9vbEJ1dHRvbnMsIHRvb2xiYXJGbGFnKX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICl9XHJcblxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKFxyXG4gICAgICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGFibGVcIiksXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRhYmxlLXRvcFwiKV06ICF0b29sYmFyRmxhZyxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGFibGUtdG9wMlwiKV06XHJcbiAgICAgICAgICAgICAgICAgICAgICB0b29sYmFyRmxhZyAmJiAhdG9vbEZsYWcsXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICBzdHlsZT17eyBoZWlnaHQ6IHRhYmxlQ29udGVudEhlaWdodCB9fVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxUYWJsZVxyXG4gICAgICAgICAgICAgICAgICByZWY9e3RoaXMudGFibGVSZWZ9XHJcbiAgICAgICAgICAgICAgICAgIGNvbHVtbnM9e3RhYmxlQ29sdW1ufVxyXG4gICAgICAgICAgICAgICAgICBleHBhbmRhYmxlPXt7XHJcbiAgICAgICAgICAgICAgICAgICAgZXhwYW5kSWNvbjogKHsgZXhwYW5kZWQsIG9uRXhwYW5kLCByZWNvcmQgfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7ZXhwYW5kZWQgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5jaGlsZE5vZGVzICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuY2hpbGROb2Rlcz8ubGVuZ3RoID4gMCA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEb3duT3V0bGluZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IG9uRXhwYW5kKHJlY29yZCwgZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiZXhwYW5kLWljb25cIil9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkgOiByZWNvcmQuY2hpbGROb2RlcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNoaWxkTm9kZXM/Lmxlbmd0aCA+IDAgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmlnaHRPdXRsaW5lZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4gb25FeHBhbmQocmVjb3JkLCBlKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJleHBhbmQtaWNvblwiKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIC4uLmV4cGFuZGFibGUsXHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIGNvbHVtbk9yZGVyPXt0cnVlfVxyXG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHBhZ2luYXRpb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGN1cnJlbnRQYWdlIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UGFnZSAhPT0gcGFnaW5hdGlvbi5jdXJyZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFBhZ2U6IHBhZ2luYXRpb24uY3VycmVudCxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgdG9vbGJhcj17e1xyXG4gICAgICAgICAgICAgICAgICAgIG9uVG9vbENsaWNrOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBvblJlZnJlc2g6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyYW1zID0gdGhpcy5nZXRTZWFyY2hWYWx1ZXMoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUxvYWQocGFyYW1zKTtcclxuICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAuLi50YWJsZVByb3BzLnRvb2xiYXIsXHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIHNob3dSb3dTZWxlY3Rpb249e3Nob3dSb3dTZWxlY3Rpb259XHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IGhlaWdodDogdGFibGVIZWlnaHQgfX1cclxuICAgICAgICAgICAgICAgICAgey4uLnRhYmxlUGFyYW1zfVxyXG4gICAgICAgICAgICAgICAgLy8gcGFnaW5hdGlvbj17ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgey8qIDxkaXY+PC9kaXY+ICovfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAge2VkaXRvckZvcm0gJiYgKFxyXG4gICAgICAgICAgICA8RWRpdG9yRm9ybVxyXG4gICAgICAgICAgICAgIHJlZj17dGhpcy5lZGl0b3JSZWZ9XHJcbiAgICAgICAgICAgICAgY2FsbEJhY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uU3VtYml0Q2FsbEJhY2sgJiZcclxuICAgICAgICAgICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25TdW1iaXRDYWxsQmFjayxcclxuICAgICAgICAgICAgICAgICAgICB7IHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZiB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHRoaXMudGFibGVSZWxvYWQoKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIGZvcm1zPXtlZGl0b3JGb3Jtc31cclxuICAgICAgICAgICAgICBzdWJtaXRVcmw9e3N1Ym1pdFVybH1cclxuICAgICAgICAgICAgICBzdWJtaXRQYXJhbXM9e3N1Ym1pdFBhcmFtc31cclxuICAgICAgICAgICAgICBvblN1Ym1pdD17dGhpcy5wcm9wcy5vblN1Ym1pdH1cclxuICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU9e2RlZmF1bHRWYWx1ZX1cclxuICAgICAgICAgICAgICBvbkhpZGVGb3JtPXt0aGlzLnByb3BzLm9uSGlkZUZvcm19XHJcbiAgICAgICAgICAgICAgb25Gb3JtQ2hhbmdlPXt0aGlzLnByb3BzLm9uRm9ybUNoYW5nZX1cclxuICAgICAgICAgICAgICBmb3JtVHlwZT17dGhpcy5wcm9wcy5mb3JtVHlwZSB8fCBcImF1dG9cIn1cclxuICAgICAgICAgICAgICBjaGFuZ2VWYWxpZD17Zm9ybUNoYW5nZVZhbGlkfVxyXG4gICAgICAgICAgICAgIFV0aWxzPXt0aGlzLnByb3BzLlV0aWxzfVxyXG4gICAgICAgICAgICAgIHJlcXVlc3RPYmplY3Q9e3tcclxuICAgICAgICAgICAgICAgIGFkZFVybDogcmVxdWVzdFVybHMuYWRkVXJsLFxyXG4gICAgICAgICAgICAgICAgZWRpdG9yVXJsOiByZXF1ZXN0VXJscy5lZGl0b3JVcmwsXHJcbiAgICAgICAgICAgICAgICBhZGRQYXJhbXM6IHJlcXVlc3RQYXJhbXMuYWRkUGFyYW1zLFxyXG4gICAgICAgICAgICAgICAgZWRpdG9yUGFyYW1zOiByZXF1ZXN0UGFyYW1zLmVkaXRvclBhcmFtcyxcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIGZ1bmNzPXt0aGlzLnByb3BzLmZ1bmNzfVxyXG4gICAgICAgICAgICAgIHsuLi5mb3JtUHJvcHN9XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IEJhc2VQYWdlO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPQSxLQUFLLElBQUlDLGFBQWEsUUFBbUIsT0FBTztBQUN2RCxPQUFPQyxLQUFLLE1BQU0sa0JBQWtCO0FBQ3BDLE9BQU9DLElBQUksTUFBTSxpQkFBaUI7QUFDbEMsT0FBT0MsTUFBTSxNQUFNLG1CQUFtQjtBQUN0QyxPQUFPQyxLQUFLLE1BQU0sa0JBQWtCO0FBQ3BDLE9BQU9DLE9BQU8sTUFBTSxvQkFBb0I7QUFDeEMsT0FBT0MsT0FBTyxNQUFNLG9CQUFvQjtBQUN4QyxPQUFPQyxVQUFVLE1BQXlCLG1CQUFtQjtBQUM3RCxPQUFPQyxHQUFHLE1BQU0sWUFBWTtBQUM1QixPQUFPLHFCQUFxQjtBQUc1QixTQUNFQyxZQUFZLEVBQ1pDLFdBQVcsRUFDWEMsWUFBWSxFQUNaQyxhQUFhLEVBQ2JDLFlBQVksRUFDWkMsZ0JBQWdCLEVBQ2hCQyxjQUFjLFFBQ1QsbUJBQW1CO0FBQzFCLFNBQVNDLGNBQWMsRUFBRUMsT0FBTyxRQUFpQixhQUFhO0FBQzlELE9BQU9DLE9BQU8sTUFBTSxhQUFhO0FBQ2pDLE9BQU9DLE1BQU0sTUFBTSxjQUFjO0FBQ2pDLFNBQVNDLFVBQVUsRUFBU0MsbUJBQW1CLFFBQVEsbUJBQW1CO0FBQzFFLE9BQU9DLFlBQVksTUFBTSxp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
|