@kaspernj/api-maker 1.0.2036 → 1.0.2037
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/build/table/model-row.js +4 -4
- package/build/table/table.js +7 -4
- package/build/utils/icon.js +18 -2
- package/package.json +1 -1
- package/src/table/model-row.jsx +2 -2
- package/src/table/table.jsx +6 -1
- package/src/utils/icon.jsx +16 -6
package/build/table/model-row.js
CHANGED
|
@@ -71,10 +71,10 @@ export default memo(shapeComponent(class ApiMakerBootStrapLiveTableModelRow exte
|
|
|
71
71
|
viewPath = viewModelPath(this.modelCallbackArgs);
|
|
72
72
|
}
|
|
73
73
|
return /*#__PURE__*/React.createElement(Row, {
|
|
74
|
-
dataSet: {
|
|
74
|
+
dataSet: this.cache("rowDataSet", {
|
|
75
75
|
class: `${inflection.dasherize(modelClass.modelClassData().paramKey)}-row`,
|
|
76
76
|
modelId: model.id()
|
|
77
|
-
},
|
|
77
|
+
}, [model.id(), modelClass.modelClassData().paramKey]),
|
|
78
78
|
style: styleForRow({
|
|
79
79
|
even
|
|
80
80
|
})
|
|
@@ -95,7 +95,7 @@ export default memo(shapeComponent(class ApiMakerBootStrapLiveTableModelRow exte
|
|
|
95
95
|
marginHorizontal: "auto"
|
|
96
96
|
}
|
|
97
97
|
})), columns && this.columnsContentFromColumns(model, even), /*#__PURE__*/React.createElement(Column, {
|
|
98
|
-
dataSet: {
|
|
98
|
+
dataSet: this.actionsColumnDataSet ||= {
|
|
99
99
|
class: "actions-column"
|
|
100
100
|
},
|
|
101
101
|
style: styleForColumn({
|
|
@@ -190,4 +190,4 @@ export default memo(shapeComponent(class ApiMakerBootStrapLiveTableModelRow exte
|
|
|
190
190
|
}
|
|
191
191
|
};
|
|
192
192
|
}));
|
|
193
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQcmVzc2FibGUiLCJCYXNlQ29tcG9uZW50IiwiQ29sdW1uIiwiY29sdW1uSWRlbnRpZmllciIsIkV2ZW50RW1pdHRlciIsIkZsYXNoTWVzc2FnZSIsIkljb24iLCJpbmZsZWN0aW9uIiwibW9kZWxDYWxsYmFja0FyZ3MiLCJMaW5rIiwiTW9kZWxDb2x1bW4iLCJQcm9wVHlwZXMiLCJwcm9wVHlwZXNFeGFjdCIsIlJlYWN0IiwiUm93IiwibWVtbyIsInNoYXBlQ29tcG9uZW50IiwidXNlSTE4biIsIldvcmtlclBsdWdpbnNDaGVja2JveCIsImxhenkiLCJBcGlNYWtlckJvb3RTdHJhcExpdmVUYWJsZU1vZGVsUm93IiwicHJvcFR5cGVzIiwiY2FjaGVLZXkiLCJzdHJpbmciLCJpc1JlcXVpcmVkIiwiY29sdW1ucyIsImFycmF5IiwiY29sdW1uV2lkdGhzIiwib2JqZWN0IiwiZXZlbnRzIiwiaW5zdGFuY2VPZiIsImluZGV4IiwibnVtYmVyIiwibW9kZWwiLCJ0YWJsZSIsInRhYmxlU2V0dGluZ0Z1bGxDYWNoZUtleSIsInNldHVwIiwidCIsIm5hbWVzcGFjZSIsInJlbmRlciIsInAiLCJtb2RlbENsYXNzIiwid29ya3BsYWNlIiwiYWN0aW9uc0NvbnRlbnQiLCJkZXN0cm95RW5hYmxlZCIsImVkaXRNb2RlbFBhdGgiLCJ2aWV3TW9kZWxQYXRoIiwicHJvcHMiLCJjdXJyZW50V29ya3BsYWNlIiwic3RhdGUiLCJzdHlsZUZvckNvbHVtbiIsInN0eWxlRm9yUm93IiwidHQiLCJldmVuIiwiZWRpdFBhdGgiLCJ2aWV3UGF0aCIsImNhbiIsImNyZWF0ZUVsZW1lbnQiLCJkYXRhU2V0IiwiY2xhc3MiLCJkYXNoZXJpemUiLCJtb2RlbENsYXNzRGF0YSIsInBhcmFtS2V5IiwibW9kZWxJZCIsImlkIiwic3R5bGUiLCJjb2x1bW5EYXRhU2V0Iiwid2lkdGgiLCJ3b3JrZXJQbHVnaW5zQ2hlY2tib3hTdHlsZSIsIm1hcmdpbkhvcml6b250YWwiLCJjb2x1bW5zQ29udGVudEZyb21Db2x1bW5zIiwidHlwZSIsInZpZXdCdXR0b25EYXRhU2V0Iiwic2VhcmNoTGlua1N0eWxlIiwibWFyZ2luTGVmdCIsIm1hcmdpblJpZ2h0IiwidG8iLCJuYW1lIiwic2l6ZSIsImVkaXRCdXR0b25EYXRhU2V0IiwiZWRpdEJ1dHRvblN0eWxlIiwiZGVzdHJveUJ1dHRvbkRhdGFTZXQiLCJkZXN0cm95QnV0dG9uU3R5bGUiLCJvblByZXNzIiwib25EZXN0cm95Q2xpY2tlZCIsIm1hcCIsImFuaW1hdGVkUG9zaXRpb24iLCJhbmltYXRlZFdpZHRoIiwiYW5pbWF0ZWRaSW5kZXgiLCJjb2x1bW4iLCJ0YWJsZVNldHRpbmdDb2x1bW4iLCJjb2x1bW5JbmRleCIsImtleSIsImRlc3Ryb3lNZXNzYWdlIiwiY29uZmlybSIsImRlc3Ryb3kiLCJzdWNjZXNzIiwiZXJyb3IiLCJlcnJvclJlc3BvbnNlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RhYmxlL21vZGVsLXJvdy5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQcmVzc2FibGV9IGZyb20gXCJyZWFjdC1uYXRpdmVcIlxuaW1wb3J0IEJhc2VDb21wb25lbnQgZnJvbSBcIi4uL2Jhc2UtY29tcG9uZW50XCJcbmltcG9ydCBDb2x1bW4gZnJvbSBcIi4vY29tcG9uZW50cy9jb2x1bW5cIlxuaW1wb3J0IGNvbHVtbklkZW50aWZpZXIgZnJvbSBcIi4vY29sdW1uLWlkZW50aWZpZXJcIlxuaW1wb3J0IEV2ZW50RW1pdHRlciBmcm9tIFwiZXZlbnRzXCJcbmltcG9ydCBGbGFzaE1lc3NhZ2UgZnJvbSBcIi4uL2ZsYXNoLW1lc3NhZ2VcIlxuaW1wb3J0IEljb24gZnJvbSBcIi4uL3V0aWxzL2ljb25cIlxuaW1wb3J0ICogYXMgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiXG5pbXBvcnQgbW9kZWxDYWxsYmFja0FyZ3MgZnJvbSBcIi4vbW9kZWwtY2FsbGJhY2stYXJnc1wiXG5pbXBvcnQgTGluayBmcm9tIFwiLi4vbGlua1wiXG5pbXBvcnQgTW9kZWxDb2x1bW4gZnJvbSBcIi4vbW9kZWwtY29sdW1uXCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IHByb3BUeXBlc0V4YWN0IGZyb20gXCJwcm9wLXR5cGVzLWV4YWN0XCJcbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IFJvdyBmcm9tIFwiLi9jb21wb25lbnRzL3Jvd1wiXG5pbXBvcnQgbWVtbyBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvc3JjL21lbW9cIlxuaW1wb3J0IHtzaGFwZUNvbXBvbmVudH0gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL3NyYy9zaGFwZS1jb21wb25lbnRcIlxuaW1wb3J0IHVzZUkxOG4gZnJvbSBcImkxOG4tb24tc3Rlcm9pZHMvc3JjL3VzZS1pMThuXCJcblxuY29uc3QgV29ya2VyUGx1Z2luc0NoZWNrYm94ID0gUmVhY3QubGF6eSgoKSA9PiBpbXBvcnQoXCIuL3dvcmtlci1wbHVnaW5zLWNoZWNrYm94XCIpKVxuXG5leHBvcnQgZGVmYXVsdCBtZW1vKHNoYXBlQ29tcG9uZW50KGNsYXNzIEFwaU1ha2VyQm9vdFN0cmFwTGl2ZVRhYmxlTW9kZWxSb3cgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHByb3BUeXBlc0V4YWN0KHtcbiAgICBjYWNoZUtleTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIGNvbHVtbnM6IFByb3BUeXBlcy5hcnJheSxcbiAgICBjb2x1bW5XaWR0aHM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICBldmVudHM6IFByb3BUeXBlcy5pbnN0YW5jZU9mKEV2ZW50RW1pdHRlcikuaXNSZXF1aXJlZCxcbiAgICBpbmRleDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICAgIG1vZGVsOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgdGFibGU6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICB0YWJsZVNldHRpbmdGdWxsQ2FjaGVLZXk6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZFxuICB9KVxuXG4gIHNldHVwKCkge1xuICAgIGNvbnN0IHt0fSA9IHVzZUkxOG4oe25hbWVzcGFjZTogXCJqcy5hcGlfbWFrZXIudGFibGUubW9kZWxfcm93XCJ9KVxuXG4gICAgdGhpcy50ID0gdFxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtpbmRleCwgdGFibGUsIG1vZGVsfSA9IHRoaXMucFxuICAgIGNvbnN0IHttb2RlbENsYXNzLCB3b3JrcGxhY2V9ID0gdGFibGUucFxuICAgIGNvbnN0IHthY3Rpb25zQ29udGVudCwgZGVzdHJveUVuYWJsZWQsIGVkaXRNb2RlbFBhdGgsIHZpZXdNb2RlbFBhdGh9ID0gdGFibGUucHJvcHNcbiAgICBjb25zdCB7Y29sdW1ucywgY3VycmVudFdvcmtwbGFjZX0gPSB0YWJsZS5zdGF0ZVxuICAgIGNvbnN0IHtzdHlsZUZvckNvbHVtbiwgc3R5bGVGb3JSb3d9ID0gdGFibGUudHRcbiAgICBjb25zdCBldmVuID0gaW5kZXggJSAyID09IDBcblxuICAgIHRoaXMubW9kZWxDYWxsYmFja0FyZ3MgPSBtb2RlbENhbGxiYWNrQXJncyh0YWJsZSwgbW9kZWwpIC8vICdtb2RlbCcgY2FuIGNoYW5nZSBzbyB0aGlzIG5lZWRzIHRvIGJlIHJlLWNhY2hlZCBmb3IgZXZlcnkgcmVuZGVyXG5cbiAgICBsZXQgZWRpdFBhdGgsIHZpZXdQYXRoXG5cbiAgICBpZiAoZWRpdE1vZGVsUGF0aCAmJiBtb2RlbC5jYW4oXCJlZGl0XCIpKSB7XG4gICAgICBlZGl0UGF0aCA9IGVkaXRNb2RlbFBhdGgodGhpcy5tb2RlbENhbGxiYWNrQXJncylcbiAgICB9XG5cbiAgICBpZiAodmlld01vZGVsUGF0aCAmJiBtb2RlbC5jYW4oXCJzaG93XCIpKSB7XG4gICAgICB2aWV3UGF0aCA9IHZpZXdNb2RlbFBhdGgodGhpcy5tb2RlbENhbGxiYWNrQXJncylcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFJvd1xuICAgICAgICBkYXRhU2V0PXt7Y2xhc3M6IGAke2luZmxlY3Rpb24uZGFzaGVyaXplKG1vZGVsQ2xhc3MubW9kZWxDbGFzc0RhdGEoKS5wYXJhbUtleSl9LXJvd2AsIG1vZGVsSWQ6IG1vZGVsLmlkKCl9fVxuICAgICAgICBzdHlsZT17c3R5bGVGb3JSb3coe2V2ZW59KX1cbiAgICAgID5cbiAgICAgICAge3dvcmtwbGFjZSAmJlxuICAgICAgICAgIDxDb2x1bW4gZGF0YVNldD17dGhpcy5jb2x1bW5EYXRhU2V0IHx8PSB7Y2xhc3M6IFwid29ya3BsYWNlLWNvbHVtblwifX0gc3R5bGU9e3N0eWxlRm9yQ29sdW1uKHtldmVuLCBzdHlsZToge3dpZHRoOiA0MX19KX0+XG4gICAgICAgICAgICA8V29ya2VyUGx1Z2luc0NoZWNrYm94XG4gICAgICAgICAgICAgIGN1cnJlbnRXb3JrcGxhY2U9e2N1cnJlbnRXb3JrcGxhY2V9XG4gICAgICAgICAgICAgIG1vZGVsPXttb2RlbH1cbiAgICAgICAgICAgICAgc3R5bGU9e3RoaXMud29ya2VyUGx1Z2luc0NoZWNrYm94U3R5bGUgfHw9IHttYXJnaW5Ib3Jpem9udGFsOiBcImF1dG9cIn19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvQ29sdW1uPlxuICAgICAgICB9XG4gICAgICAgIHtjb2x1bW5zICYmIHRoaXMuY29sdW1uc0NvbnRlbnRGcm9tQ29sdW1ucyhtb2RlbCwgZXZlbil9XG4gICAgICAgIDxDb2x1bW4gZGF0YVNldD17e2NsYXNzOiBcImFjdGlvbnMtY29sdW1uXCJ9fSBzdHlsZT17c3R5bGVGb3JDb2x1bW4oe2V2ZW4sIHN0eWxlOiB7fSwgdHlwZTogXCJhY3Rpb25zXCJ9KX0+XG4gICAgICAgICAge2FjdGlvbnNDb250ZW50ICYmIGFjdGlvbnNDb250ZW50KHRoaXMudHQubW9kZWxDYWxsYmFja0FyZ3MpfVxuICAgICAgICAgIHt2aWV3UGF0aCAmJlxuICAgICAgICAgICAgPExpbmsgZGF0YVNldD17dGhpcy52aWV3QnV0dG9uRGF0YVNldCB8fD0ge2NsYXNzOiBcInZpZXctYnV0dG9uXCJ9fSBzdHlsZT17dGhpcy5zZWFyY2hMaW5rU3R5bGUgfHw9IHttYXJnaW5MZWZ0OiAyLCBtYXJnaW5SaWdodDogMn19IHRvPXt2aWV3UGF0aH0+XG4gICAgICAgICAgICAgIDxJY29uIG5hbWU9XCJzZWFyY2hcIiBzaXplPXsxOH0gLz5cbiAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICB9XG4gICAgICAgICAge2VkaXRQYXRoICYmXG4gICAgICAgICAgICA8TGluayBkYXRhU2V0PXt0aGlzLmVkaXRCdXR0b25EYXRhU2V0IHx8PSB7Y2xhc3M6IFwiZWRpdC1idXR0b25cIn19IHN0eWxlPXt0aGlzLmVkaXRCdXR0b25TdHlsZSB8fD0ge21hcmdpbkxlZnQ6IDIsIG1hcmdpblJpZ2h0OiAyfX0gdG89e2VkaXRQYXRofT5cbiAgICAgICAgICAgICAgPEljb24gbmFtZT1cInBlbmNpbFwiIHNpemU9ezIwfSAvPlxuICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgIH1cbiAgICAgICAgICB7ZGVzdHJveUVuYWJsZWQgJiYgbW9kZWwuY2FuKFwiZGVzdHJveVwiKSAmJlxuICAgICAgICAgICAgPFByZXNzYWJsZVxuICAgICAgICAgICAgICBkYXRhU2V0PXt0aGlzLmRlc3Ryb3lCdXR0b25EYXRhU2V0IHx8PSB7Y2xhc3M6IFwiZGVzdHJveS1idXR0b25cIn19XG4gICAgICAgICAgICAgIHN0eWxlPXt0aGlzLmRlc3Ryb3lCdXR0b25TdHlsZSB8fD0ge21hcmdpbkxlZnQ6IDIsIG1hcmdpblJpZ2h0OiAyfX1cbiAgICAgICAgICAgICAgb25QcmVzcz17dGhpcy50dC5vbkRlc3Ryb3lDbGlja2VkfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8SWNvbiBuYW1lPVwicmVtb3ZlXCIgc2l6ZT17MjJ9IC8+XG4gICAgICAgICAgICA8L1ByZXNzYWJsZT5cbiAgICAgICAgICB9XG4gICAgICAgIDwvQ29sdW1uPlxuICAgICAgPC9Sb3c+XG4gICAgKVxuICB9XG5cbiAgY29sdW1uc0NvbnRlbnRGcm9tQ29sdW1ucyhtb2RlbCwgZXZlbikge1xuICAgIGNvbnN0IHtjb2x1bW5zLCBldmVudHMsIHRhYmxlfSA9IHRoaXMucFxuXG4gICAgcmV0dXJuIGNvbHVtbnM/Lm1hcCgoe2FuaW1hdGVkUG9zaXRpb24sIGFuaW1hdGVkV2lkdGgsIGFuaW1hdGVkWkluZGV4LCBjb2x1bW4sIHRhYmxlU2V0dGluZ0NvbHVtbn0sIGNvbHVtbkluZGV4KSA9PlxuICAgICAgPE1vZGVsQ29sdW1uXG4gICAgICAgIGFuaW1hdGVkUG9zaXRpb249e2FuaW1hdGVkUG9zaXRpb259XG4gICAgICAgIGFuaW1hdGVkV2lkdGg9e2FuaW1hdGVkV2lkdGh9XG4gICAgICAgIGFuaW1hdGVkWkluZGV4PXthbmltYXRlZFpJbmRleH1cbiAgICAgICAgY29sdW1uPXtjb2x1bW59XG4gICAgICAgIGNvbHVtbkluZGV4PXtjb2x1bW5JbmRleH1cbiAgICAgICAgZXZlbj17ZXZlbn1cbiAgICAgICAgZXZlbnRzPXtldmVudHN9XG4gICAgICAgIGtleT17Y29sdW1uSWRlbnRpZmllcihjb2x1bW4pfVxuICAgICAgICBtb2RlbD17bW9kZWx9XG4gICAgICAgIHRhYmxlPXt0YWJsZX1cbiAgICAgICAgdGFibGVTZXR0aW5nQ29sdW1uPXt0YWJsZVNldHRpbmdDb2x1bW59XG4gICAgICAvPlxuICAgIClcbiAgfVxuXG4gIG9uRGVzdHJveUNsaWNrZWQgPSBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qge3R9ID0gdGhpcy50dFxuICAgIGNvbnN0IHtkZXN0cm95TWVzc2FnZX0gPSB0aGlzLnAudGFibGUucHJvcHNcbiAgICBjb25zdCB7bW9kZWx9ID0gdGhpcy5wXG5cbiAgICBpZiAoIWNvbmZpcm0odChcImpzLnNoYXJlZC5hcmVfeW91X3N1cmVcIikpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgbW9kZWwuZGVzdHJveSgpXG5cbiAgICAgIGlmIChkZXN0cm95TWVzc2FnZSkge1xuICAgICAgICBGbGFzaE1lc3NhZ2Uuc3VjY2VzcyhkZXN0cm95TWVzc2FnZSlcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgRmxhc2hNZXNzYWdlLmVycm9yUmVzcG9uc2UoZXJyb3IpXG4gICAgfVxuICB9XG59KSlcbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUUEsU0FBUyxRQUFPLGNBQWM7QUFDdEMsT0FBT0MsYUFBYSxNQUFNLG1CQUFtQjtBQUM3QyxPQUFPQyxNQUFNLE1BQU0scUJBQXFCO0FBQ3hDLE9BQU9DLGdCQUFnQixNQUFNLHFCQUFxQjtBQUNsRCxPQUFPQyxZQUFZLE1BQU0sUUFBUTtBQUNqQyxPQUFPQyxZQUFZLE1BQU0sa0JBQWtCO0FBQzNDLE9BQU9DLElBQUksTUFBTSxlQUFlO0FBQ2hDLE9BQU8sS0FBS0MsVUFBVSxNQUFNLFlBQVk7QUFDeEMsT0FBT0MsaUJBQWlCLE1BQU0sdUJBQXVCO0FBQ3JELE9BQU9DLElBQUksTUFBTSxTQUFTO0FBQzFCLE9BQU9DLFdBQVcsTUFBTSxnQkFBZ0I7QUFDeEMsT0FBT0MsU0FBUyxNQUFNLFlBQVk7QUFDbEMsT0FBT0MsY0FBYyxNQUFNLGtCQUFrQjtBQUM3QyxPQUFPQyxLQUFLLE1BQU0sT0FBTztBQUN6QixPQUFPQyxHQUFHLE1BQU0sa0JBQWtCO0FBQ2xDLE9BQU9DLElBQUksTUFBTSw0QkFBNEI7QUFDN0MsU0FBUUMsY0FBYyxRQUFPLHVDQUF1QztBQUNwRSxPQUFPQyxPQUFPLE1BQU0sK0JBQStCO0FBRW5ELE1BQU1DLHFCQUFxQixnQkFBR0wsS0FBSyxDQUFDTSxJQUFJLENBQUMsTUFBTSxNQUFNLENBQUMsMkJBQTJCLENBQUMsQ0FBQztBQUVuRixlQUFlSixJQUFJLENBQUNDLGNBQWMsQ0FBQyxNQUFNSSxrQ0FBa0MsU0FBU25CLGFBQWEsQ0FBQztFQUNoRyxPQUFPb0IsU0FBUyxHQUFHVCxjQUFjLENBQUM7SUFD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
|
|
193
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQcmVzc2FibGUiLCJCYXNlQ29tcG9uZW50IiwiQ29sdW1uIiwiY29sdW1uSWRlbnRpZmllciIsIkV2ZW50RW1pdHRlciIsIkZsYXNoTWVzc2FnZSIsIkljb24iLCJpbmZsZWN0aW9uIiwibW9kZWxDYWxsYmFja0FyZ3MiLCJMaW5rIiwiTW9kZWxDb2x1bW4iLCJQcm9wVHlwZXMiLCJwcm9wVHlwZXNFeGFjdCIsIlJlYWN0IiwiUm93IiwibWVtbyIsInNoYXBlQ29tcG9uZW50IiwidXNlSTE4biIsIldvcmtlclBsdWdpbnNDaGVja2JveCIsImxhenkiLCJBcGlNYWtlckJvb3RTdHJhcExpdmVUYWJsZU1vZGVsUm93IiwicHJvcFR5cGVzIiwiY2FjaGVLZXkiLCJzdHJpbmciLCJpc1JlcXVpcmVkIiwiY29sdW1ucyIsImFycmF5IiwiY29sdW1uV2lkdGhzIiwib2JqZWN0IiwiZXZlbnRzIiwiaW5zdGFuY2VPZiIsImluZGV4IiwibnVtYmVyIiwibW9kZWwiLCJ0YWJsZSIsInRhYmxlU2V0dGluZ0Z1bGxDYWNoZUtleSIsInNldHVwIiwidCIsIm5hbWVzcGFjZSIsInJlbmRlciIsInAiLCJtb2RlbENsYXNzIiwid29ya3BsYWNlIiwiYWN0aW9uc0NvbnRlbnQiLCJkZXN0cm95RW5hYmxlZCIsImVkaXRNb2RlbFBhdGgiLCJ2aWV3TW9kZWxQYXRoIiwicHJvcHMiLCJjdXJyZW50V29ya3BsYWNlIiwic3RhdGUiLCJzdHlsZUZvckNvbHVtbiIsInN0eWxlRm9yUm93IiwidHQiLCJldmVuIiwiZWRpdFBhdGgiLCJ2aWV3UGF0aCIsImNhbiIsImNyZWF0ZUVsZW1lbnQiLCJkYXRhU2V0IiwiY2FjaGUiLCJjbGFzcyIsImRhc2hlcml6ZSIsIm1vZGVsQ2xhc3NEYXRhIiwicGFyYW1LZXkiLCJtb2RlbElkIiwiaWQiLCJzdHlsZSIsImNvbHVtbkRhdGFTZXQiLCJ3aWR0aCIsIndvcmtlclBsdWdpbnNDaGVja2JveFN0eWxlIiwibWFyZ2luSG9yaXpvbnRhbCIsImNvbHVtbnNDb250ZW50RnJvbUNvbHVtbnMiLCJhY3Rpb25zQ29sdW1uRGF0YVNldCIsInR5cGUiLCJ2aWV3QnV0dG9uRGF0YVNldCIsInNlYXJjaExpbmtTdHlsZSIsIm1hcmdpbkxlZnQiLCJtYXJnaW5SaWdodCIsInRvIiwibmFtZSIsInNpemUiLCJlZGl0QnV0dG9uRGF0YVNldCIsImVkaXRCdXR0b25TdHlsZSIsImRlc3Ryb3lCdXR0b25EYXRhU2V0IiwiZGVzdHJveUJ1dHRvblN0eWxlIiwib25QcmVzcyIsIm9uRGVzdHJveUNsaWNrZWQiLCJtYXAiLCJhbmltYXRlZFBvc2l0aW9uIiwiYW5pbWF0ZWRXaWR0aCIsImFuaW1hdGVkWkluZGV4IiwiY29sdW1uIiwidGFibGVTZXR0aW5nQ29sdW1uIiwiY29sdW1uSW5kZXgiLCJrZXkiLCJkZXN0cm95TWVzc2FnZSIsImNvbmZpcm0iLCJkZXN0cm95Iiwic3VjY2VzcyIsImVycm9yIiwiZXJyb3JSZXNwb25zZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90YWJsZS9tb2RlbC1yb3cuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UHJlc3NhYmxlfSBmcm9tIFwicmVhY3QtbmF0aXZlXCJcbmltcG9ydCBCYXNlQ29tcG9uZW50IGZyb20gXCIuLi9iYXNlLWNvbXBvbmVudFwiXG5pbXBvcnQgQ29sdW1uIGZyb20gXCIuL2NvbXBvbmVudHMvY29sdW1uXCJcbmltcG9ydCBjb2x1bW5JZGVudGlmaWVyIGZyb20gXCIuL2NvbHVtbi1pZGVudGlmaWVyXCJcbmltcG9ydCBFdmVudEVtaXR0ZXIgZnJvbSBcImV2ZW50c1wiXG5pbXBvcnQgRmxhc2hNZXNzYWdlIGZyb20gXCIuLi9mbGFzaC1tZXNzYWdlXCJcbmltcG9ydCBJY29uIGZyb20gXCIuLi91dGlscy9pY29uXCJcbmltcG9ydCAqIGFzIGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIlxuaW1wb3J0IG1vZGVsQ2FsbGJhY2tBcmdzIGZyb20gXCIuL21vZGVsLWNhbGxiYWNrLWFyZ3NcIlxuaW1wb3J0IExpbmsgZnJvbSBcIi4uL2xpbmtcIlxuaW1wb3J0IE1vZGVsQ29sdW1uIGZyb20gXCIuL21vZGVsLWNvbHVtblwiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCBwcm9wVHlwZXNFeGFjdCBmcm9tIFwicHJvcC10eXBlcy1leGFjdFwiXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCJcbmltcG9ydCBSb3cgZnJvbSBcIi4vY29tcG9uZW50cy9yb3dcIlxuaW1wb3J0IG1lbW8gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL3NyYy9tZW1vXCJcbmltcG9ydCB7c2hhcGVDb21wb25lbnR9IGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9zcmMvc2hhcGUtY29tcG9uZW50XCJcbmltcG9ydCB1c2VJMThuIGZyb20gXCJpMThuLW9uLXN0ZXJvaWRzL3NyYy91c2UtaTE4blwiXG5cbmNvbnN0IFdvcmtlclBsdWdpbnNDaGVja2JveCA9IFJlYWN0LmxhenkoKCkgPT4gaW1wb3J0KFwiLi93b3JrZXItcGx1Z2lucy1jaGVja2JveFwiKSlcblxuZXhwb3J0IGRlZmF1bHQgbWVtbyhzaGFwZUNvbXBvbmVudChjbGFzcyBBcGlNYWtlckJvb3RTdHJhcExpdmVUYWJsZU1vZGVsUm93IGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSBwcm9wVHlwZXNFeGFjdCh7XG4gICAgY2FjaGVLZXk6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICBjb2x1bW5zOiBQcm9wVHlwZXMuYXJyYXksXG4gICAgY29sdW1uV2lkdGhzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgZXZlbnRzOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihFdmVudEVtaXR0ZXIpLmlzUmVxdWlyZWQsXG4gICAgaW5kZXg6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgICBtb2RlbDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgIHRhYmxlOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgdGFibGVTZXR0aW5nRnVsbENhY2hlS2V5OiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWRcbiAgfSlcblxuICBzZXR1cCgpIHtcbiAgICBjb25zdCB7dH0gPSB1c2VJMThuKHtuYW1lc3BhY2U6IFwianMuYXBpX21ha2VyLnRhYmxlLm1vZGVsX3Jvd1wifSlcblxuICAgIHRoaXMudCA9IHRcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7aW5kZXgsIHRhYmxlLCBtb2RlbH0gPSB0aGlzLnBcbiAgICBjb25zdCB7bW9kZWxDbGFzcywgd29ya3BsYWNlfSA9IHRhYmxlLnBcbiAgICBjb25zdCB7YWN0aW9uc0NvbnRlbnQsIGRlc3Ryb3lFbmFibGVkLCBlZGl0TW9kZWxQYXRoLCB2aWV3TW9kZWxQYXRofSA9IHRhYmxlLnByb3BzXG4gICAgY29uc3Qge2NvbHVtbnMsIGN1cnJlbnRXb3JrcGxhY2V9ID0gdGFibGUuc3RhdGVcbiAgICBjb25zdCB7c3R5bGVGb3JDb2x1bW4sIHN0eWxlRm9yUm93fSA9IHRhYmxlLnR0XG4gICAgY29uc3QgZXZlbiA9IGluZGV4ICUgMiA9PSAwXG5cbiAgICB0aGlzLm1vZGVsQ2FsbGJhY2tBcmdzID0gbW9kZWxDYWxsYmFja0FyZ3ModGFibGUsIG1vZGVsKSAvLyAnbW9kZWwnIGNhbiBjaGFuZ2Ugc28gdGhpcyBuZWVkcyB0byBiZSByZS1jYWNoZWQgZm9yIGV2ZXJ5IHJlbmRlclxuXG4gICAgbGV0IGVkaXRQYXRoLCB2aWV3UGF0aFxuXG4gICAgaWYgKGVkaXRNb2RlbFBhdGggJiYgbW9kZWwuY2FuKFwiZWRpdFwiKSkge1xuICAgICAgZWRpdFBhdGggPSBlZGl0TW9kZWxQYXRoKHRoaXMubW9kZWxDYWxsYmFja0FyZ3MpXG4gICAgfVxuXG4gICAgaWYgKHZpZXdNb2RlbFBhdGggJiYgbW9kZWwuY2FuKFwic2hvd1wiKSkge1xuICAgICAgdmlld1BhdGggPSB2aWV3TW9kZWxQYXRoKHRoaXMubW9kZWxDYWxsYmFja0FyZ3MpXG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxSb3dcbiAgICAgICAgZGF0YVNldD17dGhpcy5jYWNoZShcInJvd0RhdGFTZXRcIiwge2NsYXNzOiBgJHtpbmZsZWN0aW9uLmRhc2hlcml6ZShtb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKCkucGFyYW1LZXkpfS1yb3dgLCBtb2RlbElkOiBtb2RlbC5pZCgpfSwgW21vZGVsLmlkKCksIG1vZGVsQ2xhc3MubW9kZWxDbGFzc0RhdGEoKS5wYXJhbUtleV0pfVxuICAgICAgICBzdHlsZT17c3R5bGVGb3JSb3coe2V2ZW59KX1cbiAgICAgID5cbiAgICAgICAge3dvcmtwbGFjZSAmJlxuICAgICAgICAgIDxDb2x1bW4gZGF0YVNldD17dGhpcy5jb2x1bW5EYXRhU2V0IHx8PSB7Y2xhc3M6IFwid29ya3BsYWNlLWNvbHVtblwifX0gc3R5bGU9e3N0eWxlRm9yQ29sdW1uKHtldmVuLCBzdHlsZToge3dpZHRoOiA0MX19KX0+XG4gICAgICAgICAgICA8V29ya2VyUGx1Z2luc0NoZWNrYm94XG4gICAgICAgICAgICAgIGN1cnJlbnRXb3JrcGxhY2U9e2N1cnJlbnRXb3JrcGxhY2V9XG4gICAgICAgICAgICAgIG1vZGVsPXttb2RlbH1cbiAgICAgICAgICAgICAgc3R5bGU9e3RoaXMud29ya2VyUGx1Z2luc0NoZWNrYm94U3R5bGUgfHw9IHttYXJnaW5Ib3Jpem9udGFsOiBcImF1dG9cIn19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvQ29sdW1uPlxuICAgICAgICB9XG4gICAgICAgIHtjb2x1bW5zICYmIHRoaXMuY29sdW1uc0NvbnRlbnRGcm9tQ29sdW1ucyhtb2RlbCwgZXZlbil9XG4gICAgICAgIDxDb2x1bW4gZGF0YVNldD17dGhpcy5hY3Rpb25zQ29sdW1uRGF0YVNldCB8fD0ge2NsYXNzOiBcImFjdGlvbnMtY29sdW1uXCJ9fSBzdHlsZT17c3R5bGVGb3JDb2x1bW4oe2V2ZW4sIHN0eWxlOiB7fSwgdHlwZTogXCJhY3Rpb25zXCJ9KX0+XG4gICAgICAgICAge2FjdGlvbnNDb250ZW50ICYmIGFjdGlvbnNDb250ZW50KHRoaXMudHQubW9kZWxDYWxsYmFja0FyZ3MpfVxuICAgICAgICAgIHt2aWV3UGF0aCAmJlxuICAgICAgICAgICAgPExpbmsgZGF0YVNldD17dGhpcy52aWV3QnV0dG9uRGF0YVNldCB8fD0ge2NsYXNzOiBcInZpZXctYnV0dG9uXCJ9fSBzdHlsZT17dGhpcy5zZWFyY2hMaW5rU3R5bGUgfHw9IHttYXJnaW5MZWZ0OiAyLCBtYXJnaW5SaWdodDogMn19IHRvPXt2aWV3UGF0aH0+XG4gICAgICAgICAgICAgIDxJY29uIG5hbWU9XCJzZWFyY2hcIiBzaXplPXsxOH0gLz5cbiAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICB9XG4gICAgICAgICAge2VkaXRQYXRoICYmXG4gICAgICAgICAgICA8TGluayBkYXRhU2V0PXt0aGlzLmVkaXRCdXR0b25EYXRhU2V0IHx8PSB7Y2xhc3M6IFwiZWRpdC1idXR0b25cIn19IHN0eWxlPXt0aGlzLmVkaXRCdXR0b25TdHlsZSB8fD0ge21hcmdpbkxlZnQ6IDIsIG1hcmdpblJpZ2h0OiAyfX0gdG89e2VkaXRQYXRofT5cbiAgICAgICAgICAgICAgPEljb24gbmFtZT1cInBlbmNpbFwiIHNpemU9ezIwfSAvPlxuICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgIH1cbiAgICAgICAgICB7ZGVzdHJveUVuYWJsZWQgJiYgbW9kZWwuY2FuKFwiZGVzdHJveVwiKSAmJlxuICAgICAgICAgICAgPFByZXNzYWJsZVxuICAgICAgICAgICAgICBkYXRhU2V0PXt0aGlzLmRlc3Ryb3lCdXR0b25EYXRhU2V0IHx8PSB7Y2xhc3M6IFwiZGVzdHJveS1idXR0b25cIn19XG4gICAgICAgICAgICAgIHN0eWxlPXt0aGlzLmRlc3Ryb3lCdXR0b25TdHlsZSB8fD0ge21hcmdpbkxlZnQ6IDIsIG1hcmdpblJpZ2h0OiAyfX1cbiAgICAgICAgICAgICAgb25QcmVzcz17dGhpcy50dC5vbkRlc3Ryb3lDbGlja2VkfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8SWNvbiBuYW1lPVwicmVtb3ZlXCIgc2l6ZT17MjJ9IC8+XG4gICAgICAgICAgICA8L1ByZXNzYWJsZT5cbiAgICAgICAgICB9XG4gICAgICAgIDwvQ29sdW1uPlxuICAgICAgPC9Sb3c+XG4gICAgKVxuICB9XG5cbiAgY29sdW1uc0NvbnRlbnRGcm9tQ29sdW1ucyhtb2RlbCwgZXZlbikge1xuICAgIGNvbnN0IHtjb2x1bW5zLCBldmVudHMsIHRhYmxlfSA9IHRoaXMucFxuXG4gICAgcmV0dXJuIGNvbHVtbnM/Lm1hcCgoe2FuaW1hdGVkUG9zaXRpb24sIGFuaW1hdGVkV2lkdGgsIGFuaW1hdGVkWkluZGV4LCBjb2x1bW4sIHRhYmxlU2V0dGluZ0NvbHVtbn0sIGNvbHVtbkluZGV4KSA9PlxuICAgICAgPE1vZGVsQ29sdW1uXG4gICAgICAgIGFuaW1hdGVkUG9zaXRpb249e2FuaW1hdGVkUG9zaXRpb259XG4gICAgICAgIGFuaW1hdGVkV2lkdGg9e2FuaW1hdGVkV2lkdGh9XG4gICAgICAgIGFuaW1hdGVkWkluZGV4PXthbmltYXRlZFpJbmRleH1cbiAgICAgICAgY29sdW1uPXtjb2x1bW59XG4gICAgICAgIGNvbHVtbkluZGV4PXtjb2x1bW5JbmRleH1cbiAgICAgICAgZXZlbj17ZXZlbn1cbiAgICAgICAgZXZlbnRzPXtldmVudHN9XG4gICAgICAgIGtleT17Y29sdW1uSWRlbnRpZmllcihjb2x1bW4pfVxuICAgICAgICBtb2RlbD17bW9kZWx9XG4gICAgICAgIHRhYmxlPXt0YWJsZX1cbiAgICAgICAgdGFibGVTZXR0aW5nQ29sdW1uPXt0YWJsZVNldHRpbmdDb2x1bW59XG4gICAgICAvPlxuICAgIClcbiAgfVxuXG4gIG9uRGVzdHJveUNsaWNrZWQgPSBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qge3R9ID0gdGhpcy50dFxuICAgIGNvbnN0IHtkZXN0cm95TWVzc2FnZX0gPSB0aGlzLnAudGFibGUucHJvcHNcbiAgICBjb25zdCB7bW9kZWx9ID0gdGhpcy5wXG5cbiAgICBpZiAoIWNvbmZpcm0odChcImpzLnNoYXJlZC5hcmVfeW91X3N1cmVcIikpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgbW9kZWwuZGVzdHJveSgpXG5cbiAgICAgIGlmIChkZXN0cm95TWVzc2FnZSkge1xuICAgICAgICBGbGFzaE1lc3NhZ2Uuc3VjY2VzcyhkZXN0cm95TWVzc2FnZSlcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgRmxhc2hNZXNzYWdlLmVycm9yUmVzcG9uc2UoZXJyb3IpXG4gICAgfVxuICB9XG59KSlcbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUUEsU0FBUyxRQUFPLGNBQWM7QUFDdEMsT0FBT0MsYUFBYSxNQUFNLG1CQUFtQjtBQUM3QyxPQUFPQyxNQUFNLE1BQU0scUJBQXFCO0FBQ3hDLE9BQU9DLGdCQUFnQixNQUFNLHFCQUFxQjtBQUNsRCxPQUFPQyxZQUFZLE1BQU0sUUFBUTtBQUNqQyxPQUFPQyxZQUFZLE1BQU0sa0JBQWtCO0FBQzNDLE9BQU9DLElBQUksTUFBTSxlQUFlO0FBQ2hDLE9BQU8sS0FBS0MsVUFBVSxNQUFNLFlBQVk7QUFDeEMsT0FBT0MsaUJBQWlCLE1BQU0sdUJBQXVCO0FBQ3JELE9BQU9DLElBQUksTUFBTSxTQUFTO0FBQzFCLE9BQU9DLFdBQVcsTUFBTSxnQkFBZ0I7QUFDeEMsT0FBT0MsU0FBUyxNQUFNLFlBQVk7QUFDbEMsT0FBT0MsY0FBYyxNQUFNLGtCQUFrQjtBQUM3QyxPQUFPQyxLQUFLLE1BQU0sT0FBTztBQUN6QixPQUFPQyxHQUFHLE1BQU0sa0JBQWtCO0FBQ2xDLE9BQU9DLElBQUksTUFBTSw0QkFBNEI7QUFDN0MsU0FBUUMsY0FBYyxRQUFPLHVDQUF1QztBQUNwRSxPQUFPQyxPQUFPLE1BQU0sK0JBQStCO0FBRW5ELE1BQU1DLHFCQUFxQixnQkFBR0wsS0FBSyxDQUFDTSxJ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
|
package/build/table/table.js
CHANGED
|
@@ -943,9 +943,12 @@ export default memo(shapeComponent(class ApiMakerTable extends BaseComponent {
|
|
|
943
943
|
onRequestCloseSettings = () => this.setState({
|
|
944
944
|
showSettings: false
|
|
945
945
|
});
|
|
946
|
-
onSettingsClicked = e =>
|
|
947
|
-
|
|
948
|
-
|
|
946
|
+
onSettingsClicked = e => {
|
|
947
|
+
e.preventDefault();
|
|
948
|
+
this.setState({
|
|
949
|
+
showSettings: !this.s.showSettings
|
|
950
|
+
});
|
|
951
|
+
};
|
|
949
952
|
submitFilter = () => {
|
|
950
953
|
const {
|
|
951
954
|
appHistory
|
|
@@ -967,4 +970,4 @@ export default memo(shapeComponent(class ApiMakerTable extends BaseComponent {
|
|
|
967
970
|
};
|
|
968
971
|
submitFilterDebounce = debounce(this.tt.submitFilter);
|
|
969
972
|
}));
|
|
970
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkaWdnIiwiZGlncyIsIlJlYWN0IiwiY3JlYXRlQ29udGV4dCIsInVzZUNvbnRleHQiLCJ1c2VNZW1vIiwidXNlUmVmIiwiQW5pbWF0ZWQiLCJQbGF0Zm9ybSIsIlByZXNzYWJsZSIsIlZpZXciLCJCYXNlQ29tcG9uZW50IiwiQ2FyZCIsImNsYXNzTmFtZXMiLCJDb2xsZWN0aW9uIiwiY29sdW1uVmlzaWJsZSIsImRlYm91bmNlIiwiRHJhZ2dhYmxlU29ydCIsIkV2ZW50RW1pdHRlciIsIkZpbHRlcnMiLCJGbGF0TGlzdCIsIkZvcm0iLCJIZWFkZXIiLCJIZWFkZXJDb2x1bW4iLCJIZWFkZXJTZWxlY3QiLCJJY29uIiwiaW5jb3Jwb3JhdGUiLCJpbmZsZWN0aW9uIiwibWVtbyIsIm1vZGVsQ2xhc3NSZXF1aXJlIiwiTW9kZWxSb3ciLCJQYWdpbmF0ZSIsIlBhcmFtcyIsIlByb3BUeXBlcyIsIlJvdyIsInNlbGVjdENhbGN1bGF0b3IiLCJTZWxlY3QiLCJTZXR0aW5ncyIsInNoYXBlQ29tcG9uZW50IiwiVGFibGVTZXR0aW5ncyIsIlRleHQiLCJ1bmlxdW5pemUiLCJ1c2VCcmVha3BvaW50IiwidXNlQ29sbGVjdGlvbiIsInVzZUkxOG4iLCJ1c2VFdmVudEVtaXR0ZXIiLCJ1c2VNb2RlbEV2ZW50IiwidXNlUXVlcnlQYXJhbXMiLCJXaWR0aHMiLCJwYWdpbmF0aW9uT3B0aW9ucyIsIldvcmtlclBsdWdpbnNDaGVja0FsbENoZWNrYm94IiwibGF6eSIsIlRhYmxlQ29udGV4dCIsIkxpc3RIZWFkZXJDb21wb25lbnQiLCJzZXR1cCIsInVzZVN0YXRlcyIsImxhc3RVcGRhdGUiLCJEYXRlIiwicmVuZGVyIiwibWRVcCIsInRhYmxlQ29udGV4dFZhbHVlIiwidGFibGUiLCJjb2xsZWN0aW9uIiwiZXZlbnRzIiwicXVlcnlXaXRob3V0UGFnaW5hdGlvbiIsInQiLCJ0dCIsInF1ZXJ5Iiwib25Db2x1bW5WaXNpYmlsaXR5VXBkYXRlZCIsImNyZWF0ZUVsZW1lbnQiLCJkYXRhU2V0IiwiY2xhc3MiLCJzdHlsZSIsInN0eWxlRm9yUm93SGVhZGVyIiwicCIsIndvcmtwbGFjZSIsInMiLCJjdXJyZW50V29ya3BsYWNlIiwic3R5bGVGb3JIZWFkZXIiLCJ3aWR0aCIsInVuZGVmaW5lZCIsIndvcmtlclBsZ3VpbnNDaGVja0FsbENoZWNrYm94U3R5bGUiLCJtYXJnaW5Ib3Jpem9udGFsIiwic2VsZWN0QWxsRm91bmRUZXh0U3R5bGUiLCJtYXJnaW5MZWZ0IiwiZGVmYXVsdFZhbHVlIiwicHJlcGFyZWRDb2x1bW5zIiwiRnJhZ21lbnQiLCJoZWFkZXJzQ29udGVudEZyb21Db2x1bW5zIiwidHlwZSIsInNldFN0YXRlIiwiQXBpTWFrZXJUYWJsZSIsImRlZmF1bHRQcm9wcyIsImNhcmQiLCJjdXJyZW50VXNlciIsImRlc3Ryb3lFbmFibGVkIiwiZmlsdGVyQ2FyZCIsImZpbHRlclN1Ym1pdEJ1dHRvbiIsIm5vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnQiLCJub1JlY29yZHNGb3VuZENvbnRlbnQiLCJwcmVsb2FkcyIsInNlbGVjdCIsInN0eWxlVUkiLCJwcm9wVHlwZXMiLCJhYmlsaXRpZXMiLCJvYmplY3QiLCJhY3Rpb25zQ29udGVudCIsImZ1bmMiLCJhcHBIaXN0b3J5IiwiYm9vbCIsImlzUmVxdWlyZWQiLCJjbGFzc05hbWUiLCJzdHJpbmciLCJpbnN0YW5jZU9mIiwiY29sdW1ucyIsIm9uZU9mVHlwZSIsImFycmF5IiwiY29udHJvbHMiLCJkZWZhdWx0RGF0ZUZvcm1hdE5hbWUiLCJkZWZhdWx0RGF0ZVRpbWVGb3JtYXROYW1lIiwiZGVmYXVsdFBhcmFtcyIsImRlc3Ryb3lNZXNzYWdlIiwiZWRpdE1vZGVsUGF0aCIsImZpbHRlckNvbnRlbnQiLCJmaWx0ZXJTdWJtaXRMYWJlbCIsIm5vZGUiLCJncm91cEJ5IiwiaGVhZGVyIiwiaWRlbnRpZmllciIsIm1vZGVsQ2xhc3MiLCJvbk1vZGVsc0xvYWRlZCIsInBhZ2luYXRlQ29udGVudCIsInBhZ2luYXRpb25Db21wb25lbnQiLCJxdWVyeU1ldGhvZCIsInF1ZXJ5TmFtZSIsInNlbGVjdENvbHVtbnMiLCJzdHlsZXMiLCJ2aWV3TW9kZWxQYXRoIiwiZHJhZ2dhYmxlU29ydEV2ZW50cyIsInRhYmxlU2V0dGluZ3MiLCJuYW1lc3BhY2UiLCJuYW1lIiwiYnJlYWtwb2ludCIsInF1ZXJ5UGFyYW1zIiwic2V0SW5zdGFuY2UiLCJmaWx0ZXJGb3JtUmVmIiwiY29sbGVjdGlvbktleSIsIm1vZGVsQ2xhc3NEYXRhIiwicHJvcHMiLCJxdWVyeVNOYW1lIiwiY29sdW1uc0FzQXJyYXkiLCJjdXJyZW50V29ya3BsYWNlQ291bnQiLCJmaWx0ZXJGb3JtIiwiY29sdW1uc1RvU2hvdyIsImRyYWdnZWRDb2x1bW4iLCJwcmVsb2FkIiwicXVlcnlRTmFtZSIsInF1ZXJ5UGFnZU5hbWUiLCJyZXNpemluZyIsInNob3dGaWx0ZXJzIiwiQm9vbGVhbiIsInNob3dTZXR0aW5ncyIsInRhYmxlU2V0dGluZyIsInRhYmxlU2V0dGluZ0xvYWRlZCIsInRhYmxlU2V0dGluZ0Z1bGxDYWNoZUtleSIsIndpZHRocyIsImNhY2hlS2V5IiwibG9hZEN1cnJlbnRXb3JrcGxhY2UiLCJ0aGVuIiwibG9hZEN1cnJlbnRXb3JrcGxhY2VDb3VudCIsImlkIiwibG9hZFRhYmxlU2V0dGluZyIsIm9uTGlua3NDcmVhdGVkIiwib25MaW5rc0Rlc3Ryb3llZCIsImNvbGxlY3Rpb25SZWFkeSIsImFiaWxpdGllc1RvTG9hZCIsImlmQ29uZGl0aW9uIiwicGFnaW5hdGlvbiIsInN0YXRlIiwiY2xvbmUiLCJleGNlcHQiLCJvbkRyYWdTdGFydCIsIm9uRHJhZ0VuZEFuaW1hdGlvbiIsImdldENvbHVtbnNUb1Nob3ciLCJpdGVtIiwiYW5pbWF0ZWRaSW5kZXgiLCJzZXRWYWx1ZSIsIldvcmtwbGFjZSIsInJlc3VsdCIsImN1cnJlbnQiLCJXb3JrcGxhY2VMaW5rIiwicmFuc2FjayIsInJlc291cmNlX3R5cGVfZXEiLCJ3b3JrcGxhY2VfaWRfZXEiLCJjb3VudCIsImZpbHRlciIsImNvbHVtbiIsInRhYmxlU2V0dGluZ0NvbHVtbiIsInNvcnQiLCJhIiwiYiIsInBvc2l0aW9uIiwibG9hZEV4aXN0aW5nT3JDcmVhdGVUYWJsZVNldHRpbmdzIiwibWVyZ2VkUHJlbG9hZHMiLCJmdWxsQ2FjaGVLZXkiLCJ1cGRhdGVTZXR0aW5nc0Z1bGxDYWNoZUtleSIsImNvbmNhdCIsIm1vZGVscyIsIm92ZXJhbGxDb3VudCIsInFQYXJhbXMiLCJzaG93Tm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudCIsInNob3dOb1JlY29yZHNGb3VuZENvbnRlbnQiLCJhcmdzIiwiRXJyb3IiLCJvbkxheW91dCIsIm9uQ29udGFpbmVyTGF5b3V0IiwiY29udGFpbmVyIiwiY2FyZE9yVGFibGUiLCJvd25BYmlsaXRpZXMiLCJwdXNoIiwibGVuZ3RoIiwibW9kZWxDbGFzc05hbWUiLCJtb2RlbE5hbWUiLCJhYmlsaXR5IiwicmVzdFByb3BzIiwiaGVhZGVyQ29udGVudCIsIlBhZ2luYXRpb25Db21wb25lbnQiLCJodW1hbiIsImZsYXRMaXN0U3R5bGUiLCJvdmVyZmxvd1giLCJib3JkZXIiLCJib3JkZXJSYWRpdXMiLCJmbGF0TGlzdCIsIlByb3ZpZGVyIiwidmFsdWUiLCJfZXh0ZW5kcyIsImRhdGEiLCJleHRyYURhdGEiLCJrZXlFeHRyYWN0b3IiLCJrZXlFeHRyYXRvciIsInJlbmRlckl0ZW0iLCJzaG93c0hvcml6b250YWxTY3JvbGxJbmRpY2F0b3IiLCJ0YWJsZUNvbnRyb2xzIiwiZm9vdGVyIiwidGFibGVGb290ZXIiLCJlIiwibmF0aXZlRXZlbnQiLCJsYXlvdXQiLCJ0YWJsZVdpZHRoIiwiY3JlYXRlZCIsImFtb3VudENyZWF0ZWQiLCJwcmV2U3RhdGUiLCJkZXN0cm95ZWQiLCJhbW91bnREZXN0cm95ZWQiLCJtb2RlbCIsInN1Ym1pdEZpbHRlciIsInN1Ym1pdEZpbHRlckRlYm91bmNlIiwiZm9ybVJlZiIsIm9uU3VibWl0Iiwib25GaWx0ZXJGb3JtU3VibWl0Iiwic2V0Rm9ybSIsInNldFN0YXRlcyIsIm9uRmlsdGVyQ2hhbmdlZCIsIm9uRmlsdGVyQ2hhbmdlZFdpdGhEZWxheSIsIm1hcmdpblRvcCIsIm9uRmlsdGVyQ2xpY2tlZCIsInByZXZlbnREZWZhdWx0Iiwib25QZXJQYWdlQ2hhbmdlZCIsIm5ld1BlclBhZ2VWYWx1ZSIsInBlcktleSIsInBhcmFtc0NoYW5nZSIsImNoYW5nZVBhcmFtcyIsImluZGV4IiwiY29sdW1uV2lkdGhzIiwia2V5Iiwic3R5bGVGb3JDb2x1bW4iLCJjb2x1bW5JbmRleCIsImV2ZW4iLCJkZWZhdWx0U3R5bGUiLCJqdXN0aWZ5Q29udGVudCIsInBhZGRpbmciLCJvdmVyZmxvdyIsIk9iamVjdCIsImFzc2lnbiIsImJhY2tncm91bmRDb2xvciIsImZsZXhEaXJlY3Rpb24iLCJhbGlnbkl0ZW1zIiwibWFyZ2luUmlnaHQiLCJib3JkZXJSaWdodCIsImFjdHVhbFN0eWxlIiwic3R5bGVGb3JIZWFkZXJUZXh0IiwiZm9udFdlaWdodCIsInN0eWxlRm9yUm93IiwiZmxleCIsInJvb3RWaWV3U3R5bGUiLCJvblByZXNzIiwic2l6ZSIsIm9uUmVxdWVzdENsb3NlIiwib25SZXF1ZXN0Q2xvc2VTZXR0aW5ncyIsInNldHRpbmdzQnV0dG9uRGF0YVNldCIsIm9uU2V0dGluZ3NDbGlja2VkIiwiY3VycmVudFBhZ2UiLCJ0b3RhbENvdW50IiwicGVyUGFnZSIsInRvIiwiTWF0aCIsIm1pbiIsImZyb20iLCJzaG93aW5nQ291bnRzRGF0YVNldCIsInNob3dpbmdDb3VudHNTdHlsZSIsInRvdGFsX2NvdW50IiwieFNlbGVjdGVkVGV4dFN0eWxlIiwic2VsZWN0ZWQiLCJvbkNoYW5nZSIsIm9wdGlvbnMiLCJqb2luIiwiY29sdW1uUHJvcHMiLCJ0ZXh0Q2VudGVyIiwidGV4dEFsaWduIiwidGV4dFJpZ2h0IiwiaGVhZGVyUHJvcHMiLCJob3Jpem9udGFsIiwiZHJhZ0xpc3RrZXlFeHRyYWN0b3IiLCJvbkl0ZW1Nb3ZlZCIsIm9uUmVvcmRlcmVkIiwiZHJhZ0xpc3RSZW5kZXJJdGVtQ29udGVudCIsImRyYWdMaXN0Q2FjaGVLZXlFeHRyYWN0b3IiLCJhbmltYXRpb25BcmdzIiwiaXRlbUluZGV4IiwieCIsInkiLCJhbmltYXRlZFBvc2l0aW9uIiwidGltaW5nIiwic3RhcnQiLCJmcm9tSXRlbSIsImZyb21Qb3NpdGlvbiIsInRvSXRlbSIsInRvUG9zaXRpb24iLCJUYWJsZVNldHRpbmdDb2x1bW4iLCJjb25zdHJ1Y3RvciIsInRvQ29sdW1uIiwiZmluZCIsInVwZGF0ZSIsImlzQWN0aXZlIiwidG91Y2hQcm9wcyIsImFuaW1hdGVkV2lkdGgiLCJhY3RpdmUiLCJoZWFkZXJDbGFzc05hbWVGb3JDb2x1bW4iLCJjb21tb25Qcm9wcyIsImhlYWRlckxhYmVsRm9yQ29sdW1uIiwibGFiZWwiLCJjdXJyZW50TW9kZWxDbGFzcyIsInBhdGgiLCJwYXRoUGFydCIsInJlbGF0aW9uc2hpcHMiLCJyZWxhdGlvbnNoaXAiLCJyZWxhdGlvbnNoaXBJbkFycmF5IiwidW5kZXJzY29yZSIsImF0dHJpYnV0ZSIsImh1bWFuQXR0cmlidXRlTmFtZSIsImNoYW5nZVBhcmFtc1BhcmFtcyIsImFzT2JqZWN0IiwiT1MiLCJuYXZ0aXZlRm9ybVBhcmFtcyIsInNlcmlhbGl6ZUZvcm0iLCJKU09OIiwic3RyaW5naWZ5Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RhYmxlL3RhYmxlLmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2RpZ2csIGRpZ3N9IGZyb20gXCJkaWdnZXJpemVcIlxuaW1wb3J0IFJlYWN0LCB7Y3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCwgdXNlTWVtbywgdXNlUmVmfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHtBbmltYXRlZCwgUGxhdGZvcm0sIFByZXNzYWJsZSwgVmlld30gZnJvbSBcInJlYWN0LW5hdGl2ZVwiXG5pbXBvcnQgQmFzZUNvbXBvbmVudCBmcm9tIFwiLi4vYmFzZS1jb21wb25lbnRcIlxuaW1wb3J0IENhcmQgZnJvbSBcIi4uL2Jvb3RzdHJhcC9jYXJkXCJcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gXCJjbGFzc25hbWVzXCJcbmltcG9ydCBDb2xsZWN0aW9uIGZyb20gXCIuLi9jb2xsZWN0aW9uXCJcbmltcG9ydCBjb2x1bW5WaXNpYmxlIGZyb20gXCIuL2NvbHVtbi12aXNpYmxlXCJcbmltcG9ydCBkZWJvdW5jZSBmcm9tIFwiZGVib3VuY2VcIlxuaW1wb3J0IERyYWdnYWJsZVNvcnQgZnJvbSBcIi4uL2RyYWdnYWJsZS1zb3J0L2luZGV4XCJcbmltcG9ydCBFdmVudEVtaXR0ZXIgZnJvbSBcImV2ZW50c1wiXG5pbXBvcnQgRmlsdGVycyBmcm9tIFwiLi9maWx0ZXJzXCJcbmltcG9ydCBGbGF0TGlzdCBmcm9tIFwiLi9jb21wb25lbnRzL2ZsYXQtbGlzdFwiXG5pbXBvcnQge0Zvcm19IGZyb20gXCIuLi9mb3JtXCJcbmltcG9ydCBIZWFkZXIgZnJvbSBcIi4vY29tcG9uZW50cy9oZWFkZXJcIlxuaW1wb3J0IEhlYWRlckNvbHVtbiBmcm9tIFwiLi9oZWFkZXItY29sdW1uXCJcbmltcG9ydCBIZWFkZXJTZWxlY3QgZnJvbSBcIi4vaGVhZGVyLXNlbGVjdFwiXG5pbXBvcnQgSWNvbiBmcm9tIFwiLi4vdXRpbHMvaWNvblwiXG5pbXBvcnQge2luY29ycG9yYXRlfSBmcm9tIFwiaW5jb3Jwb3JhdG9yXCJcbmltcG9ydCAqIGFzIGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIlxuaW1wb3J0IG1lbW8gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL3NyYy9tZW1vXCJcbmltcG9ydCBtb2RlbENsYXNzUmVxdWlyZSBmcm9tIFwiLi4vbW9kZWwtY2xhc3MtcmVxdWlyZVwiXG5pbXBvcnQgTW9kZWxSb3cgZnJvbSBcIi4vbW9kZWwtcm93XCJcbmltcG9ydCBQYWdpbmF0ZSBmcm9tIFwiLi4vYm9vdHN0cmFwL3BhZ2luYXRlXCJcbmltcG9ydCBQYXJhbXMgZnJvbSBcIi4uL3BhcmFtc1wiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCBSb3cgZnJvbSBcIi4vY29tcG9uZW50cy9yb3dcIlxuaW1wb3J0IHNlbGVjdENhbGN1bGF0b3IgZnJvbSBcIi4vc2VsZWN0LWNhbGN1bGF0b3JcIlxuaW1wb3J0IFNlbGVjdCBmcm9tIFwiLi4vaW5wdXRzL3NlbGVjdFwiXG5pbXBvcnQgU2V0dGluZ3MgZnJvbSBcIi4vc2V0dGluZ3MvaW5kZXhcIlxuaW1wb3J0IHtzaGFwZUNvbXBvbmVudH0gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL3NyYy9zaGFwZS1jb21wb25lbnRcIlxuaW1wb3J0IFRhYmxlU2V0dGluZ3MgZnJvbSBcIi4vdGFibGUtc2V0dGluZ3NcIlxuaW1wb3J0IFRleHQgZnJvbSBcIi4uL3V0aWxzL3RleHRcIlxuaW1wb3J0IHVuaXF1bml6ZSBmcm9tIFwidW5pcXVuaXplXCJcbmltcG9ydCB1c2VCcmVha3BvaW50IGZyb20gXCIuLi91c2UtYnJlYWtwb2ludFwiXG5pbXBvcnQgdXNlQ29sbGVjdGlvbiBmcm9tIFwiLi4vdXNlLWNvbGxlY3Rpb25cIlxuaW1wb3J0IHVzZUkxOG4gZnJvbSBcImkxOG4tb24tc3Rlcm9pZHMvc3JjL3VzZS1pMThuXCJcbmltcG9ydCB1c2VFdmVudEVtaXR0ZXIgZnJvbSBcIi4uL3VzZS1ldmVudC1lbWl0dGVyXCJcbmltcG9ydCB1c2VNb2RlbEV2ZW50IGZyb20gXCIuLi91c2UtbW9kZWwtZXZlbnRcIlxuaW1wb3J0IHVzZVF1ZXJ5UGFyYW1zIGZyb20gXCJvbi1sb2NhdGlvbi1jaGFuZ2VkL2J1aWxkL3VzZS1xdWVyeS1wYXJhbXNcIlxuaW1wb3J0IFdpZHRocyBmcm9tIFwiLi93aWR0aHNcIlxuXG5jb25zdCBwYWdpbmF0aW9uT3B0aW9ucyA9IFszMCwgNjAsIDkwLCBbXCJBbGxcIiwgXCJhbGxcIl1dXG5jb25zdCBXb3JrZXJQbHVnaW5zQ2hlY2tBbGxDaGVja2JveCA9IFJlYWN0LmxhenkoKCkgPT4gaW1wb3J0KFwiLi93b3JrZXItcGx1Z2lucy1jaGVjay1hbGwtY2hlY2tib3hcIikpXG5jb25zdCBUYWJsZUNvbnRleHQgPSBjcmVhdGVDb250ZXh0KClcblxuY29uc3QgTGlzdEhlYWRlckNvbXBvbmVudCA9IG1lbW8oc2hhcGVDb21wb25lbnQoY2xhc3MgTGlzdEhlYWRlckNvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICBzZXR1cCgpIHtcbiAgICB0aGlzLnVzZVN0YXRlcyh7XG4gICAgICBsYXN0VXBkYXRlOiBuZXcgRGF0ZSgpXG4gICAgfSlcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7bWRVcH0gPSB1c2VCcmVha3BvaW50KClcbiAgICBjb25zdCB0YWJsZUNvbnRleHRWYWx1ZSA9IHVzZUNvbnRleHQoVGFibGVDb250ZXh0KVxuICAgIGNvbnN0IHRhYmxlID0gdGFibGVDb250ZXh0VmFsdWUudGFibGVcbiAgICBjb25zdCB7Y29sbGVjdGlvbiwgZXZlbnRzLCBxdWVyeVdpdGhvdXRQYWdpbmF0aW9uLCB0fSA9IHRhYmxlLnR0XG4gICAgY29uc3Qge3F1ZXJ5fSA9IGRpZ3MoY29sbGVjdGlvbiwgXCJxdWVyeVwiKVxuXG4gICAgdXNlRXZlbnRFbWl0dGVyKGV2ZW50cywgXCJjb2x1bW5WaXNpYmlsaXR5VXBkYXRlZFwiLCB0aGlzLnR0Lm9uQ29sdW1uVmlzaWJpbGl0eVVwZGF0ZWQpXG5cbiAgICByZXR1cm4gKFxuICAgICAgPFJvdyBkYXRhU2V0PXt7Y2xhc3M6IFwiYXBpLW1ha2VyL3RhYmxlL2hlYWRlci1yb3dcIn19IHN0eWxlPXt0YWJsZS5zdHlsZUZvclJvd0hlYWRlcigpfT5cbiAgICAgICAge3RhYmxlLnAud29ya3BsYWNlICYmIHRhYmxlLnMuY3VycmVudFdvcmtwbGFjZSAmJlxuICAgICAgICAgIDxIZWFkZXIgc3R5bGU9e3RhYmxlLnN0eWxlRm9ySGVhZGVyKHtzdHlsZToge3dpZHRoOiBtZFVwID8gNDEgOiB1bmRlZmluZWR9fSl9PlxuICAgICAgICAgICAgPFdvcmtlclBsdWdpbnNDaGVja0FsbENoZWNrYm94XG4gICAgICAgICAgICAgIGN1cnJlbnRXb3JrcGxhY2U9e3RhYmxlLnMuY3VycmVudFdvcmtwbGFjZX1cbiAgICAgICAgICAgICAgcXVlcnk9e3F1ZXJ5V2l0aG91dFBhZ2luYXRpb259XG4gICAgICAgICAgICAgIHN0eWxlPXt0aGlzLndvcmtlclBsZ3VpbnNDaGVja0FsbENoZWNrYm94U3R5bGUgfHw9IHttYXJnaW5Ib3Jpem9udGFsOiBcImF1dG9cIn19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgeyFtZFVwICYmXG4gICAgICAgICAgICAgIDxUZXh0IHN0eWxlPXt0aGlzLnNlbGVjdEFsbEZvdW5kVGV4dFN0eWxlIHx8PSB7bWFyZ2luTGVmdDogM319PlxuICAgICAgICAgICAgICAgIHt0KFwiLnNlbGVjdF9hbGxfZm91bmRcIiwge2RlZmF1bHRWYWx1ZTogXCJTZWxlY3QgYWxsIGZvdW5kXCJ9KX1cbiAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvSGVhZGVyPlxuICAgICAgICB9XG4gICAgICAgIHshbWRVcCAmJlxuICAgICAgICAgIDxIZWFkZXIgc3R5bGU9e3RhYmxlLnN0eWxlRm9ySGVhZGVyKHtzdHlsZToge319KX0+XG4gICAgICAgICAgICA8SGVhZGVyU2VsZWN0IHByZXBhcmVkQ29sdW1ucz17dGFibGUucy5wcmVwYXJlZENvbHVtbnN9IHF1ZXJ5PXtxdWVyeX0gdGFibGU9e3RhYmxlfSAvPlxuICAgICAgICAgIDwvSGVhZGVyPlxuICAgICAgICB9XG4gICAgICAgIHttZFVwICYmXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIHt0YWJsZS5oZWFkZXJzQ29udGVudEZyb21Db2x1bW5zKCl9XG4gICAgICAgICAgICA8SGVhZGVyIHN0eWxlPXt0YWJsZS5zdHlsZUZvckhlYWRlcih7c3R5bGU6IHt9LCB0eXBlOiBcImFjdGlvbnNcIn0pfSAvPlxuICAgICAgICAgIDwvPlxuICAgICAgICB9XG4gICAgICA8L1Jvdz5cbiAgICApXG4gIH1cblxuICBvbkNvbHVtblZpc2liaWxpdHlVcGRhdGVkID0gKCkgPT4gdGhpcy5zZXRTdGF0ZSh7bGFzdFVwZGF0ZTogbmV3IERhdGUoKX0pXG59KSlcblxuZXhwb3J0IGRlZmF1bHQgbWVtbyhzaGFwZUNvbXBvbmVudChjbGFzcyBBcGlNYWtlclRhYmxlIGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgY2FyZDogdHJ1ZSxcbiAgICBjdXJyZW50VXNlcjogbnVsbCxcbiAgICBkZXN0cm95RW5hYmxlZDogdHJ1ZSxcbiAgICBmaWx0ZXJDYXJkOiB0cnVlLFxuICAgIGZpbHRlclN1Ym1pdEJ1dHRvbjogdHJ1ZSxcbiAgICBub1JlY29yZHNBdmFpbGFibGVDb250ZW50OiB1bmRlZmluZWQsXG4gICAgbm9SZWNvcmRzRm91bmRDb250ZW50OiB1bmRlZmluZWQsXG4gICAgcHJlbG9hZHM6IFtdLFxuICAgIHNlbGVjdDoge30sXG4gICAgc3R5bGVVSTogdHJ1ZSxcbiAgICB3b3JrcGxhY2U6IGZhbHNlXG4gIH1cblxuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIGFiaWxpdGllczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBhY3Rpb25zQ29udGVudDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgYXBwSGlzdG9yeTogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBjYXJkOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICAgIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBjb2xsZWN0aW9uOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihDb2xsZWN0aW9uKSxcbiAgICBjb2x1bW5zOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXksIFByb3BUeXBlcy5mdW5jXSksXG4gICAgY29udHJvbHM6IFByb3BUeXBlcy5mdW5jLFxuICAgIGN1cnJlbnRVc2VyOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGRlZmF1bHREYXRlRm9ybWF0TmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBkZWZhdWx0RGF0ZVRpbWVGb3JtYXROYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGRlZmF1bHRQYXJhbXM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgZGVzdHJveUVuYWJsZWQ6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gICAgZGVzdHJveU1lc3NhZ2U6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZWRpdE1vZGVsUGF0aDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgZmlsdGVyQ2FyZDogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgICBmaWx0ZXJDb250ZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgICBmaWx0ZXJTdWJtaXRMYWJlbDogUHJvcFR5cGVzLm5vZGUsXG4gICAgZ3JvdXBCeTogUHJvcFR5cGVzLmFycmF5LFxuICAgIGhlYWRlcjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgICBpZGVudGlmaWVyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIG1vZGVsQ2xhc3M6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgbm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgbm9SZWNvcmRzRm91bmRDb250ZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvbk1vZGVsc0xvYWRlZDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgcGFnaW5hdGVDb250ZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgICBwYWdpbmF0aW9uQ29tcG9uZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgICBwcmVsb2FkczogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gICAgcXVlcnlNZXRob2Q6IFByb3BUeXBlcy5mdW5jLFxuICAgIHF1ZXJ5TmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBzZWxlY3Q6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgc2VsZWN0Q29sdW1uczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBzdHlsZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgc3R5bGVVSTogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgICB2aWV3TW9kZWxQYXRoOiBQcm9wVHlwZXMuZnVuYyxcbiAgICB3b3JrcGxhY2U6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWRcbiAgfVxuXG4gIGRyYWdnYWJsZVNvcnRFdmVudHMgPSBuZXcgRXZlbnRFbWl0dGVyKClcbiAgZXZlbnRzID0gbmV3IEV2ZW50RW1pdHRlcigpXG4gIHRhYmxlU2V0dGluZ3MgPSBudWxsXG5cbiAgc2V0dXAoKSB7XG4gICAgY29uc3Qge3R9ID0gdXNlSTE4bih7bmFtZXNwYWNlOiBcImpzLmFwaV9tYWtlci50YWJsZVwifSlcbiAgICBjb25zdCB7bmFtZTogYnJlYWtwb2ludCwgbWRVcH0gPSB1c2VCcmVha3BvaW50KClcbiAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHVzZVF1ZXJ5UGFyYW1zKClcblxuICAgIHRoaXMuc2V0SW5zdGFuY2Uoe1xuICAgICAgYnJlYWtwb2ludCxcbiAgICAgIGZpbHRlckZvcm1SZWY6IHVzZVJlZigpLFxuICAgICAgbWRVcCxcbiAgICAgIHRcbiAgICB9KVxuXG4gICAgY29uc3QgY29sbGVjdGlvbktleSA9IGRpZ2codGhpcy5wLm1vZGVsQ2xhc3MubW9kZWxDbGFzc0RhdGEoKSwgXCJjb2xsZWN0aW9uS2V5XCIpXG4gICAgbGV0IHF1ZXJ5TmFtZSA9IHRoaXMucHJvcHMucXVlcnlOYW1lXG5cbiAgICBpZiAoIXF1ZXJ5TmFtZSkgcXVlcnlOYW1lID0gY29sbGVjdGlvbktleVxuXG4gICAgY29uc3QgcXVlcnlTTmFtZSA9IGAke3F1ZXJ5TmFtZX1fc2BcblxuICAgIHRoaXMudXNlU3RhdGVzKHtcbiAgICAgIGNvbHVtbnM6ICgpID0+IHRoaXMuY29sdW1uc0FzQXJyYXkoKSxcbiAgICAgIGN1cnJlbnRXb3JrcGxhY2U6IHVuZGVmaW5lZCxcbiAgICAgIGN1cnJlbnRXb3JrcGxhY2VDb3VudDogbnVsbCxcbiAgICAgIGZpbHRlckZvcm06IG51bGwsXG4gICAgICBjb2x1bW5zVG9TaG93OiBudWxsLFxuICAgICAgZHJhZ2dlZENvbHVtbjogbnVsbCxcbiAgICAgIGlkZW50aWZpZXI6ICgpID0+IHRoaXMucHJvcHMuaWRlbnRpZmllciB8fCBgJHtjb2xsZWN0aW9uS2V5fS1kZWZhdWx0YCxcbiAgICAgIGxhc3RVcGRhdGU6ICgpID0+IG5ldyBEYXRlKCksXG4gICAgICBwcmVsb2FkOiB1bmRlZmluZWQsXG4gICAgICBwcmVwYXJlZENvbHVtbnM6IHVuZGVmaW5lZCxcbiAgICAgIHF1ZXJ5TmFtZSxcbiAgICAgIHF1ZXJ5UU5hbWU6ICgpID0+IGAke3F1ZXJ5TmFtZX1fcWAsXG4gICAgICBxdWVyeVBhZ2VOYW1lOiAoKSA9PiBgJHtxdWVyeU5hbWV9X3BhZ2VgLFxuICAgICAgcXVlcnlTTmFtZSxcbiAgICAgIHJlc2l6aW5nOiBmYWxzZSxcbiAgICAgIHNob3dGaWx0ZXJzOiAoKSA9PiBCb29sZWFuKHF1ZXJ5UGFyYW1zW3F1ZXJ5U05hbWVdKSxcbiAgICAgIHNob3dTZXR0aW5nczogZmFsc2UsXG4gICAgICB0YWJsZVNldHRpbmc6IHVuZGVmaW5lZCxcbiAgICAgIHRhYmxlU2V0dGluZ0xvYWRlZDogZmFsc2UsXG4gICAgICB0YWJsZVNldHRpbmdGdWxsQ2FjaGVLZXk6IHVuZGVmaW5lZCxcbiAgICAgIHdpZHRoOiB1bmRlZmluZWQsXG4gICAgICB3aWR0aHM6IG51bGxcbiAgICB9KVxuXG4gICAgdGhpcy50YWJsZUNvbnRleHRWYWx1ZSA9IHVzZU1lbW8oXG4gICAgICAoKSA9PiAoe1xuICAgICAgICBjYWNoZUtleTogdGhpcy5zLnRhYmxlU2V0dGluZ0Z1bGxDYWNoZUtleSxcbiAgICAgICAgbGFzdFVwZGF0ZTogdGhpcy5zLmxhc3RVcGRhdGUsXG4gICAgICAgIHJlc2l6aW5nOiB0aGlzLnMucmVzaXppbmcsXG4gICAgICAgIHRhYmxlOiB0aGlzXG4gICAgICB9KSxcbiAgICAgIFt0aGlzLnMubGFzdFVwZGF0ZSwgdGhpcy5zLnJlc2l6aW5nLCB0aGlzLnMudGFibGVTZXR0aW5nRnVsbENhY2hlS2V5XVxuICAgIClcblxuICAgIHVzZU1lbW8oKCkgPT4ge1xuICAgICAgaWYgKHRoaXMucHJvcHMud29ya3BsYWNlKSB7XG4gICAgICAgIHRoaXMubG9hZEN1cnJlbnRXb3JrcGxhY2UoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmxvYWRDdXJyZW50V29ya3BsYWNlQ291bnQoKVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0sIFt0aGlzLnAuY3VycmVudFVzZXI/LmlkKCldKVxuXG4gICAgdXNlTWVtbygoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMudHQudGFibGVTZXR0aW5ncyAmJiB0aGlzLnMud2lkdGgpIHtcbiAgICAgICAgdGhpcy5sb2FkVGFibGVTZXR0aW5nKClcbiAgICAgIH1cbiAgICB9LCBbdGhpcy5wLmN1cnJlbnRVc2VyPy5pZCgpLCB0aGlzLnMud2lkdGhdKVxuXG4gICAgdXNlTW9kZWxFdmVudCh0aGlzLnMuY3VycmVudFdvcmtwbGFjZSwgXCJ3b3JrcGxhY2VfbGlua3NfY3JlYXRlZFwiLCB0aGlzLnR0Lm9uTGlua3NDcmVhdGVkKVxuICAgIHVzZU1vZGVsRXZlbnQodGhpcy5zLmN1cnJlbnRXb3JrcGxhY2UsIFwid29ya3BsYWNlX2xpbmtzX2Rlc3Ryb3llZFwiLCB0aGlzLnR0Lm9uTGlua3NEZXN0cm95ZWQpXG5cbiAgICBsZXQgY29sbGVjdGlvblJlYWR5ID0gdHJ1ZVxuICAgIGxldCBzZWxlY3RcblxuICAgIGlmICghdGhpcy5zLnByZXBhcmVkQ29sdW1ucykge1xuICAgICAgY29sbGVjdGlvblJlYWR5ID0gZmFsc2VcbiAgICB9XG5cbiAgICBpZiAoY29sbGVjdGlvblJlYWR5KSB7XG4gICAgICBzZWxlY3QgPSBzZWxlY3RDYWxjdWxhdG9yKHt0YWJsZTogdGhpc30pXG4gICAgfVxuXG4gICAgdGhpcy5jb2xsZWN0aW9uID0gdXNlQ29sbGVjdGlvbih7XG4gICAgICBhYmlsaXRpZXM6IHRoaXMuYWJpbGl0aWVzVG9Mb2FkKCksXG4gICAgICBkZWZhdWx0UGFyYW1zOiB0aGlzLnByb3BzLmRlZmF1bHRQYXJhbXMsXG4gICAgICBjb2xsZWN0aW9uOiB0aGlzLnByb3BzLmNvbGxlY3Rpb24sXG4gICAgICBncm91cEJ5OiB0aGlzLnByb3BzLmdyb3VwQnksXG4gICAgICBpZkNvbmRpdGlvbjogY29sbGVjdGlvblJlYWR5LFxuICAgICAgbW9kZWxDbGFzczogdGhpcy5wcm9wcy5tb2RlbENsYXNzLFxuICAgICAgb25Nb2RlbHNMb2FkZWQ6IHRoaXMucHJvcHMub25Nb2RlbHNMb2FkZWQsXG4gICAgICBub1JlY29yZHNBdmFpbGFibGVDb250ZW50OiB0aGlzLnByb3BzLm5vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnQsXG4gICAgICBub1JlY29yZHNGb3VuZENvbnRlbnQ6IHRoaXMucHJvcHMubm9SZWNvcmRzRm91bmRDb250ZW50LFxuICAgICAgcGFnaW5hdGlvbjogdHJ1ZSxcbiAgICAgIHByZWxvYWRzOiB0aGlzLnN0YXRlLnByZWxvYWQsXG4gICAgICBxdWVyeU1ldGhvZDogdGhpcy5wcm9wcy5xdWVyeU1ldGhvZCxcbiAgICAgIHF1ZXJ5TmFtZSxcbiAgICAgIHNlbGVjdCxcbiAgICAgIHNlbGVjdENvbHVtbnM6IHRoaXMucHJvcHMuc2VsZWN0Q29sdW1uc1xuICAgIH0pXG4gICAgdGhpcy5xdWVyeVdpdGhvdXRQYWdpbmF0aW9uID0gdXNlTWVtbyhcbiAgICAgICgpID0+IHRoaXMuY29sbGVjdGlvbj8ucXVlcnk/LmNsb25lKCk/LmV4Y2VwdChcInBhZ2VcIiksXG4gICAgICBbdGhpcy5jb2xsZWN0aW9uLnF1ZXJ5XVxuICAgIClcblxuICAgIHVzZUV2ZW50RW1pdHRlcih0aGlzLnR0LmRyYWdnYWJsZVNvcnRFdmVudHMsIFwib25EcmFnU3RhcnRcIiwgdGhpcy50dC5vbkRyYWdTdGFydClcbiAgICB1c2VFdmVudEVtaXR0ZXIodGhpcy50dC5kcmFnZ2FibGVTb3J0RXZlbnRzLCBcIm9uRHJhZ0VuZEFuaW1hdGlvblwiLCB0aGlzLnR0Lm9uRHJhZ0VuZEFuaW1hdGlvbilcbiAgICB1c2VFdmVudEVtaXR0ZXIodGhpcy50dC5ldmVudHMsIFwiY29sdW1uVmlzaWJpbGl0eVVwZGF0ZWRcIiwgdGhpcy50dC5vbkNvbHVtblZpc2liaWxpdHlVcGRhdGVkKVxuICB9XG5cbiAgb25Db2x1bW5WaXNpYmlsaXR5VXBkYXRlZCA9ICgpID0+IHRoaXMuc2V0U3RhdGUoe2NvbHVtbnNUb1Nob3c6IHRoaXMuZ2V0Q29sdW1uc1RvU2hvdyh0aGlzLnMuY29sdW1ucyksIGxhc3RVcGRhdGU6IG5ldyBEYXRlKCl9KVxuICBvbkRyYWdTdGFydCA9ICh7aXRlbX0pID0+IGl0ZW0uYW5pbWF0ZWRaSW5kZXguc2V0VmFsdWUoOTk5OSlcbiAgb25EcmFnRW5kQW5pbWF0aW9uID0gKHtpdGVtfSkgPT4gaXRlbS5hbmltYXRlZFpJbmRleC5zZXRWYWx1ZSgwKVxuXG4gIGFzeW5jIGxvYWRDdXJyZW50V29ya3BsYWNlKCkge1xuICAgIGNvbnN0IFdvcmtwbGFjZSA9IG1vZGVsQ2xhc3NSZXF1aXJlKFwiV29ya3BsYWNlXCIpXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgV29ya3BsYWNlLmN1cnJlbnQoKVxuICAgIGNvbnN0IGN1cnJlbnRXb3JrcGxhY2UgPSBkaWdnKHJlc3VsdCwgXCJjdXJyZW50XCIsIDApXG5cbiAgICB0aGlzLnNldFN0YXRlKHtjdXJyZW50V29ya3BsYWNlfSlcbiAgfVxuXG4gIGFzeW5jIGxvYWRDdXJyZW50V29ya3BsYWNlQ291bnQoKSB7XG4gICAgY29uc3QgV29ya3BsYWNlTGluayA9IG1vZGVsQ2xhc3NSZXF1aXJlKFwiV29ya3BsYWNlTGlua1wiKVxuICAgIGNvbnN0IGN1cnJlbnRXb3JrcGxhY2VDb3VudCA9IGF3YWl0IFdvcmtwbGFjZUxpbmtcbiAgICAgIC5yYW5zYWNrKHtcbiAgICAgICAgcmVzb3VyY2VfdHlwZV9lcTogdGhpcy5wLm1vZGVsQ2xhc3MubW9kZWxDbGFzc0RhdGEoKS5uYW1lLFxuICAgICAgICB3b3JrcGxhY2VfaWRfZXE6IHRoaXMucy5jdXJyZW50V29ya3BsYWNlLmlkKClcbiAgICAgIH0pXG4gICAgICAuY291bnQoKVxuXG4gICAgdGhpcy5zZXRTdGF0ZSh7Y3VycmVudFdvcmtwbGFjZUNvdW50fSlcbiAgfVxuXG4gIGdldENvbHVtbnNUb1Nob3coY29sdW1ucykge1xuICAgIHJldHVybiBjb2x1bW5zXG4gICAgICAuZmlsdGVyKCh7Y29sdW1uLCB0YWJsZVNldHRpbmdDb2x1bW59KSA9PiBjb2x1bW5WaXNpYmxlKGNvbHVtbiwgdGFibGVTZXR0aW5nQ29sdW1uKSlcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBhLnRhYmxlU2V0dGluZ0NvbHVtbi5wb3NpdGlvbigpIC0gYi50YWJsZVNldHRpbmdDb2x1bW4ucG9zaXRpb24oKSlcbiAgfVxuXG4gIGFzeW5jIGxvYWRUYWJsZVNldHRpbmcoKSB7XG4gICAgdGhpcy50YWJsZVNldHRpbmdzID0gbmV3IFRhYmxlU2V0dGluZ3Moe3RhYmxlOiB0aGlzfSlcblxuICAgIGNvbnN0IHRhYmxlU2V0dGluZyA9IGF3YWl0IHRoaXMudGFibGVTZXR0aW5ncy5sb2FkRXhpc3RpbmdPckNyZWF0ZVRhYmxlU2V0dGluZ3MoKVxuICAgIGNvbnN0IHtjb2x1bW5zLCBwcmVsb2FkfSA9IHRoaXMudGFibGVTZXR0aW5ncy5wcmVwYXJlZENvbHVtbnModGFibGVTZXR0aW5nKVxuICAgIGNvbnN0IHt3aWR0aH0gPSB0aGlzLnNcbiAgICBjb25zdCB3aWR0aHMgPSBuZXcgV2lkdGhzKHtjb2x1bW5zLCB0YWJsZTogdGhpcywgd2lkdGh9KVxuICAgIGNvbnN0IGNvbHVtbnNUb1Nob3cgPSB0aGlzLmdldENvbHVtbnNUb1Nob3coY29sdW1ucylcblxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgY29sdW1ucyxcbiAgICAgIGNvbHVtbnNUb1Nob3csXG4gICAgICBwcmVwYXJlZENvbHVtbnM6IGNvbHVtbnMsXG4gICAgICBwcmVsb2FkOiB0aGlzLm1lcmdlZFByZWxvYWRzKHByZWxvYWQpLFxuICAgICAgdGFibGVTZXR0aW5nLFxuICAgICAgdGFibGVTZXR0aW5nTG9hZGVkOiB0cnVlLFxuICAgICAgdGFibGVTZXR0aW5nRnVsbENhY2hlS2V5OiB0YWJsZVNldHRpbmcuZnVsbENhY2hlS2V5KCksXG4gICAgICB3aWR0aHNcbiAgICB9KVxuICB9XG5cbiAgdXBkYXRlU2V0dGluZ3NGdWxsQ2FjaGVLZXkgPSAoKSA9PiB0aGlzLnNldFN0YXRlKHt0YWJsZVNldHRpbmdGdWxsQ2FjaGVLZXk6IHRoaXMuc3RhdGUudGFibGVTZXR0aW5nLmZ1bGxDYWNoZUtleSgpfSlcblxuICBjb2x1bW5zQXNBcnJheSA9ICgpID0+IHtcbiAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMuY29sdW1ucyA9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLmNvbHVtbnMoKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnByb3BzLmNvbHVtbnNcbiAgfVxuXG4gIG1lcmdlZFByZWxvYWRzKHByZWxvYWQpIHtcbiAgICBjb25zdCB7cHJlbG9hZHN9ID0gdGhpcy5wcm9wc1xuICAgIGxldCBtZXJnZWRQcmVsb2FkcyA9IFtdXG5cbiAgICBpZiAocHJlbG9hZHMpIG1lcmdlZFByZWxvYWRzID0gbWVyZ2VkUHJlbG9hZHMuY29uY2F0KHByZWxvYWRzKVxuICAgIGlmIChwcmVsb2FkKSBtZXJnZWRQcmVsb2FkcyA9IG1lcmdlZFByZWxvYWRzLmNvbmNhdChwcmVsb2FkKVxuXG4gICAgcmV0dXJuIHVuaXF1bml6ZShtZXJnZWRQcmVsb2FkcylcbiAgfVxuXG4gIHJlbmRlciAoKSB7XG4gICAgY29uc3Qge21vZGVsQ2xhc3MsIG5vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnQsIG5vUmVjb3Jkc0ZvdW5kQ29udGVudH0gPSB0aGlzLnBcbiAgICBjb25zdCB7Y29sbGVjdGlvbiwgY3VycmVudFVzZXJ9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IHtxdWVyeU5hbWUsIHF1ZXJ5U05hbWUsIHNob3dGaWx0ZXJzfSA9IHRoaXMuc1xuICAgIGNvbnN0IHtcbiAgICAgIG1vZGVscyxcbiAgICAgIG92ZXJhbGxDb3VudCxcbiAgICAgIHFQYXJhbXMsXG4gICAgICBxdWVyeSxcbiAgICAgIHJlc3VsdCxcbiAgICAgIHNob3dOb1JlY29yZHNBdmFpbGFibGVDb250ZW50LFxuICAgICAgc2hvd05vUmVjb3Jkc0ZvdW5kQ29udGVudFxuICAgIH0gPSBkaWdzKFxuICAgICAgdGhpcy5jb2xsZWN0aW9uLFxuICAgICAgXCJtb2RlbHNcIixcbiAgICAgIFwib3ZlcmFsbENvdW50XCIsXG4gICAgICBcInFQYXJhbXNcIixcbiAgICAgIFwicXVlcnlcIixcbiAgICAgIFwicmVzdWx0XCIsXG4gICAgICBcInNob3dOb1JlY29yZHNBdmFpbGFibGVDb250ZW50XCIsXG4gICAgICBcInNob3dOb1JlY29yZHNGb3VuZENvbnRlbnRcIlxuICAgIClcblxuICAgIGlmIChjb2xsZWN0aW9uICYmIGNvbGxlY3Rpb24uYXJncy5tb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKCkubmFtZSAhPSBtb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKCkubmFtZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgTW9kZWwgY2xhc3MgZnJvbSBjb2xsZWN0aW9uICcke2NvbGxlY3Rpb24uYXJncy5tb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKCkubmFtZX0nIGAgK1xuICAgICAgICBgZGlkbid0IG1hdGNoIG1vZGVsIGNsYXNzIG9uIHRhYmxlOiAnJHttb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKCkubmFtZX0nYFxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8VmlldyBkYXRhU2V0PXt7Y2xhc3M6IHRoaXMuY2xhc3NOYW1lKCl9fSBvbkxheW91dD17dGhpcy50dC5vbkNvbnRhaW5lckxheW91dH0gc3R5bGU9e3RoaXMucHJvcHMuc3R5bGVzPy5jb250YWluZXJ9PlxuICAgICAgICB7c2hvd05vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnQgJiZcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxpdmUtdGFibGUtLW5vLXJlY29yZHMtYXZhaWxhYmxlLWNvbnRlbnRcIj5cbiAgICAgICAgICAgIHtub1JlY29yZHNBdmFpbGFibGVDb250ZW50KHttb2RlbHMsIHFQYXJhbXMsIG92ZXJhbGxDb3VudH0pfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIHtzaG93Tm9SZWNvcmRzRm91bmRDb250ZW50ICYmXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsaXZlLXRhYmxlLS1uby1yZWNvcmRzLWZvdW5kLWNvbnRlbnRcIj5cbiAgICAgICAgICAgIHtub1JlY29yZHNGb3VuZENvbnRlbnQoe21vZGVscywgcVBhcmFtcywgb3ZlcmFsbENvdW50fSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgICAge3Nob3dGaWx0ZXJzICYmXG4gICAgICAgICAgPEZpbHRlcnMgY3VycmVudFVzZXI9e2N1cnJlbnRVc2VyfSBtb2RlbENsYXNzPXttb2RlbENsYXNzfSBxdWVyeU5hbWU9e3F1ZXJ5TmFtZX0gcXVlcnlTTmFtZT17cXVlcnlTTmFtZX0gLz5cbiAgICAgICAgfVxuICAgICAgICB7cVBhcmFtcyAmJiBxdWVyeSAmJiByZXN1bHQgJiYgbW9kZWxzICYmICFzaG93Tm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudCAmJiAhc2hvd05vUmVjb3Jkc0ZvdW5kQ29udGVudCAmJlxuICAgICAgICAgIHRoaXMuY2FyZE9yVGFibGUoKVxuICAgICAgICB9XG4gICAgICA8L1ZpZXc+XG4gICAgKVxuICB9XG5cbiAgYWJpbGl0aWVzVG9Mb2FkICgpIHtcbiAgICBjb25zdCBhYmlsaXRpZXNUb0xvYWQgPSB7fVxuICAgIGNvbnN0IHthYmlsaXRpZXMsIG1vZGVsQ2xhc3N9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IG93bkFiaWxpdGllcyA9IFtdXG5cbiAgICBpZiAodGhpcy5wcm9wcy5kZXN0cm95RW5hYmxlZCkgb3duQWJpbGl0aWVzLnB1c2goXCJkZXN0cm95XCIpXG4gICAgaWYgKHRoaXMucHJvcHMuZWRpdE1vZGVsUGF0aCkgb3duQWJpbGl0aWVzLnB1c2goXCJlZGl0XCIpXG4gICAgaWYgKHRoaXMucHJvcHMudmlld01vZGVsUGF0aCkgb3duQWJpbGl0aWVzLnB1c2goXCJzaG93XCIpXG5cbiAgICBpZiAob3duQWJpbGl0aWVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IG1vZGVsQ2xhc3NOYW1lID0gZGlnZyhtb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKCksIFwibmFtZVwiKVxuXG4gICAgICBhYmlsaXRpZXNUb0xvYWRbbW9kZWxDbGFzc05hbWVdID0gb3duQWJpbGl0aWVzXG4gICAgfVxuXG4gICAgaWYgKGFiaWxpdGllcykge1xuICAgICAgZm9yIChjb25zdCBtb2RlbE5hbWUgaW4gYWJpbGl0aWVzKSB7XG4gICAgICAgIGlmICghKG1vZGVsTmFtZSBpbiBhYmlsaXRpZXNUb0xvYWQpKSB7XG4gICAgICAgICAgYWJpbGl0aWVzVG9Mb2FkW21vZGVsTmFtZV0gPSBbXVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBhYmlsaXR5IG9mIGFiaWxpdGllc1ttb2RlbE5hbWVdKSB7XG4gICAgICAgICAgYWJpbGl0aWVzVG9Mb2FkW21vZGVsTmFtZV0ucHVzaChhYmlsaXR5KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGFiaWxpdGllc1RvTG9hZFxuICB9XG5cbiAgY2FyZE9yVGFibGUgKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIGFiaWxpdGllcyxcbiAgICAgIGFjdGlvbnNDb250ZW50LFxuICAgICAgYXBwSGlzdG9yeSxcbiAgICAgIGNhcmQsXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBjb2xsZWN0aW9uLFxuICAgICAgY29sdW1ucyxcbiAgICAgIGNvbnRyb2xzLFxuICAgICAgY3VycmVudFVzZXIsXG4gICAgICBkZWZhdWx0RGF0ZUZvcm1hdE5hbWUsXG4gICAgICBkZWZhdWx0RGF0ZVRpbWVGb3JtYXROYW1lLFxuICAgICAgZGVmYXVsdFBhcmFtcyxcbiAgICAgIGRlc3Ryb3lFbmFibGVkLFxuICAgICAgZGVzdHJveU1lc3NhZ2UsXG4gICAgICBlZGl0TW9kZWxQYXRoLFxuICAgICAgZmlsdGVyQ2FyZCxcbiAgICAgIGZpbHRlckNvbnRlbnQsXG4gICAgICBmaWx0ZXJTdWJtaXRCdXR0b24sXG4gICAgICBmaWx0ZXJTdWJtaXRMYWJlbCxcbiAgICAgIGdyb3VwQnksXG4gICAgICBoZWFkZXIsXG4gICAgICBpZGVudGlmaWVyLFxuICAgICAgbW9kZWxDbGFzcyxcbiAgICAgIG5vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnQsXG4gICAgICBub1JlY29yZHNGb3VuZENvbnRlbnQsXG4gICAgICBvbk1vZGVsc0xvYWRlZCxcbiAgICAgIHBhZ2luYXRlQ29udGVudCxcbiAgICAgIHBhZ2luYXRpb25Db21wb25lbnQsXG4gICAgICBwcmVsb2FkcyxcbiAgICAgIHF1ZXJ5TWV0aG9kLFxuICAgICAgcXVlcnlOYW1lLFxuICAgICAgc2VsZWN0LFxuICAgICAgc2VsZWN0Q29sdW1ucyxcbiAgICAgIHN0eWxlVUksXG4gICAgICB2aWV3TW9kZWxQYXRoLFxuICAgICAgd29ya3BsYWNlLFxuICAgICAgLi4ucmVzdFByb3BzXG4gICAgfSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCB7bW9kZWxzLCBxUGFyYW1zLCBxdWVyeSwgcmVzdWx0fSA9IGRpZ3ModGhpcy5jb2xsZWN0aW9uLCBcIm1vZGVsc1wiLCBcInFQYXJhbXNcIiwgXCJxdWVyeVwiLCBcInJlc3VsdFwiKVxuXG4gICAgbGV0IGhlYWRlckNvbnRlbnQsIFBhZ2luYXRpb25Db21wb25lbnRcblxuICAgIGlmICh0eXBlb2YgaGVhZGVyID09IFwiZnVuY3Rpb25cIikge1xuICAgICAgaGVhZGVyQ29udGVudCA9IGhlYWRlcih7bW9kZWxzLCBxUGFyYW1zLCBxdWVyeSwgcmVzdWx0fSlcbiAgICB9IGVsc2UgaWYgKGhlYWRlcikge1xuICAgICAgaGVhZGVyQ29udGVudCA9IGhlYWRlclxuICAgIH0gZWxzZSB7XG4gICAgICBoZWFkZXJDb250ZW50ID0gbW9kZWxDbGFzcy5tb2RlbE5hbWUoKS5odW1hbih7Y291bnQ6IDJ9KVxuICAgIH1cblxuICAgIGlmICghcGFnaW5hdGVDb250ZW50KSB7XG4gICAgICBpZiAocGFnaW5hdGlvbkNvbXBvbmVudCkge1xuICAgICAgICBQYWdpbmF0aW9uQ29tcG9uZW50ID0gcGFnaW5hdGlvbkNvbXBvbmVudFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgUGFnaW5hdGlvbkNvbXBvbmVudCA9IFBhZ2luYXRlXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZmxhdExpc3RTdHlsZSA9IHtcbiAgICAgIG92ZXJmbG93WDogXCJhdXRvXCJcbiAgICB9XG5cbiAgICBpZiAoc3R5bGVVSSkge1xuICAgICAgZmxhdExpc3RTdHlsZS5ib3JkZXIgPSBcIjFweCBzb2xpZCAjZGJkYmRiXCJcbiAgICAgIGZsYXRMaXN0U3R5bGUuYm9yZGVyUmFkaXVzID0gNVxuICAgIH1cblxuICAgIGNvbnN0IGZsYXRMaXN0ID0gKFxuICAgICAgPFRhYmxlQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17dGhpcy50dC50YWJsZUNvbnRleHRWYWx1ZX0+XG4gICAgICAgIDxGbGF0TGlzdFxuICAgICAgICAgIGRhdGE9e21vZGVsc31cbiAgICAgICAgICBkYXRhU2V0PXt7XG4gICAgICAgICAgICBjbGFzczogY2xhc3NOYW1lcyhcImFwaS1tYWtlci0tdGFibGVcIiwgY2xhc3NOYW1lKSxcbiAgICAgICAgICAgIGNhY2hlS2V5OiB0aGlzLnMudGFibGVTZXR0aW5nRnVsbENhY2hlS2V5LFxuICAgICAgICAgICAgbGFzdFVwZGF0ZTogdGhpcy5zLmxhc3RVcGRhdGVcbiAgICAgICAgICB9fVxuICAgICAgICAgIGV4dHJhRGF0YT17dGhpcy5zLmxhc3RVcGRhdGV9XG4gICAgICAgICAga2V5RXh0cmFjdG9yPXt0aGlzLnR0LmtleUV4dHJhdG9yfVxuICAgICAgICAgIExpc3RIZWFkZXJDb21wb25lbnQ9e0xpc3RIZWFkZXJDb21wb25lbnR9XG4gICAgICAgICAgcmVuZGVySXRlbT17dGhpcy50dC5yZW5kZXJJdGVtfVxuICAgICAgICAgIHNob3dzSG9yaXpvbnRhbFNjcm9sbEluZGljYXRvclxuICAgICAgICAgIHN0eWxlPXtmbGF0TGlzdFN0eWxlfVxuICAgICAgICAgIHsuLi5yZXN0UHJvcHN9XG4gICAgICAgIC8+XG4gICAgICA8L1RhYmxlQ29udGV4dC5Qcm92aWRlcj5cbiAgICApXG5cbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAge2ZpbHRlckNvbnRlbnQgJiYgZmlsdGVyQ2FyZCAmJlxuICAgICAgICAgIDxDYXJkIGNsYXNzTmFtZT1cImxpdmUtdGFibGUtLWZpbHRlci1jYXJkIG1iLTRcIj5cbiAgICAgICAgICAgIHt0aGlzLmZpbHRlckZvcm0oKX1cbiAgICAgICAgICA8L0NhcmQ+XG4gICAgICAgIH1cbiAgICAgICAge2ZpbHRlckNvbnRlbnQgJiYgIWZpbHRlckNhcmQgJiZcbiAgICAgICAgICB0aGlzLmZpbHRlckZvcm0oKVxuICAgICAgICB9XG4gICAgICAgIHtjYXJkICYmXG4gICAgICAgICAgPENhcmRcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhcImxpdmUtdGFibGUtLXRhYmxlLWNhcmRcIiwgXCJtYi00XCIsIGNsYXNzTmFtZSl9XG4gICAgICAgICAgICBjb250cm9scz17dGhpcy50YWJsZUNvbnRyb2xzKCl9XG4gICAgICAgICAgICBoZWFkZXI9e2hlYWRlckNvbnRlbnR9XG4gICAgICAgICAgICBmb290ZXI9e3RoaXMudGFibGVGb290ZXIoKX1cbiAgICAgICAgICAgIHsuLi5yZXN0UHJvcHN9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2ZsYXRMaXN0fVxuICAgICAgICAgIDwvQ2FyZD5cbiAgICAgICAgfVxuICAgICAgICB7IWNhcmQgJiYgZmxhdExpc3R9XG4gICAgICAgIHtyZXN1bHQgJiYgUGFnaW5hdGlvbkNvbXBvbmVudCAmJlxuICAgICAgICAgIDxQYWdpbmF0aW9uQ29tcG9uZW50IHJlc3VsdD17cmVzdWx0fSAvPlxuICAgICAgICB9XG4gICAgICAgIHtyZXN1bHQgJiYgcGFnaW5hdGVDb250ZW50ICYmXG4gICAgICAgICAgcGFnaW5hdGVDb250ZW50KHtyZXN1bHR9KVxuICAgICAgICB9XG4gICAgICA8Lz5cbiAgICApXG4gIH1cblxuICBvbkNvbnRhaW5lckxheW91dCA9IChlKSA9PiB7XG4gICAgY29uc3Qge3dpZHRofSA9IGUubmF0aXZlRXZlbnQubGF5b3V0XG4gICAgY29uc3Qge3dpZHRoc30gPSB0aGlzLnNcblxuICAgIHRoaXMuc2V0U3RhdGUoe3dpZHRofSlcbiAgICBpZiAod2lkdGhzKSB3aWR0aHMudGFibGVXaWR0aCA9IHdpZHRoXG4gIH1cblxuICBvbkxpbmtzQ3JlYXRlZCA9ICh7YXJnc30pID0+IHtcbiAgICBjb25zdCBtb2RlbENsYXNzTmFtZSA9IHRoaXMucC5tb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKCkubmFtZVxuXG4gICAgaWYgKGFyZ3MuY3JlYXRlZFttb2RlbENsYXNzTmFtZV0pIHtcbiAgICAgIGNvbnN0IGFtb3VudENyZWF0ZWQgPSBhcmdzLmNyZWF0ZWRbbW9kZWxDbGFzc05hbWVdLmxlbmd0aFxuXG4gICAgICB0aGlzLnNldFN0YXRlKChwcmV2U3RhdGUpID0+ICh7XG4gICAgICAgIGN1cnJlbnRXb3JrcGxhY2VDb3VudDogcHJldlN0YXRlLmN1cnJlbnRXb3JrcGxhY2VDb3VudCArIGFtb3VudENyZWF0ZWRcbiAgICAgIH0pKVxuICAgIH1cbiAgfVxuXG4gIG9uTGlua3NEZXN0cm95ZWQgPSAoe2FyZ3N9KSA9PiB7XG4gICAgY29uc3QgbW9kZWxDbGFzc05hbWUgPSB0aGlzLnAubW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLm5hbWVcblxuICAgIGlmIChhcmdzLmRlc3Ryb3llZFttb2RlbENsYXNzTmFtZV0pIHtcbiAgICAgIGNvbnN0IGFtb3VudERlc3Ryb3llZCA9IGFyZ3MuZGVzdHJveWVkW21vZGVsQ2xhc3NOYW1lXS5sZW5ndGhcblxuICAgICAgdGhpcy5zZXRTdGF0ZSgocHJldlN0YXRlKSA9PiAoe1xuICAgICAgICBjdXJyZW50V29ya3BsYWNlQ291bnQ6IHByZXZTdGF0ZS5jdXJyZW50V29ya3BsYWNlQ291bnQgLSBhbW91bnREZXN0cm95ZWRcbiAgICAgIH0pKVxuICAgIH1cbiAgfVxuXG4gIGtleUV4dHJhdG9yID0gKG1vZGVsKSA9PiBgJHt0aGlzLnMudGFibGVTZXR0aW5nRnVsbENhY2hlS2V5fS0ke21vZGVsLmlkKCl9YFxuXG4gIGZpbHRlckZvcm0gPSAoKSA9PiB7XG4gICAgY29uc3Qge2ZpbHRlckZvcm1SZWYsIHN1Ym1pdEZpbHRlciwgc3VibWl0RmlsdGVyRGVib3VuY2V9ID0gdGhpcy50dFxuICAgIGNvbnN0IHtmaWx0ZXJDb250ZW50LCBmaWx0ZXJTdWJtaXRCdXR0b259ID0gdGhpcy5wXG4gICAgY29uc3Qge3F1ZXJ5UU5hbWV9ID0gdGhpcy5zXG4gICAgY29uc3Qge2ZpbHRlclN1Ym1pdExhYmVsfSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCB7cVBhcmFtc30gPSBkaWdzKHRoaXMuY29sbGVjdGlvbiwgXCJxUGFyYW1zXCIpXG5cbiAgICByZXR1cm4gKFxuICAgICAgPEZvcm0gY2xhc3NOYW1lPVwibGl2ZS10YWJsZS0tZmlsdGVyLWZvcm1cIiBmb3JtUmVmPXtmaWx0ZXJGb3JtUmVmfSBvblN1Ym1pdD17dGhpcy50dC5vbkZpbHRlckZvcm1TdWJtaXR9IHNldEZvcm09e3RoaXMuc2V0U3RhdGVzLmZpbHRlckZvcm19PlxuICAgICAgICB7XCJzXCIgaW4gcVBhcmFtcyAmJlxuICAgICAgICAgIDxpbnB1dCBuYW1lPVwic1wiIHR5cGU9XCJoaWRkZW5cIiB2YWx1ZT17cVBhcmFtcy5zfSAvPlxuICAgICAgICB9XG4gICAgICAgIHtmaWx0ZXJDb250ZW50KHtcbiAgICAgICAgICBvbkZpbHRlckNoYW5nZWQ6IHN1Ym1pdEZpbHRlcixcbiAgICAgICAgICBvbkZpbHRlckNoYW5nZWRXaXRoRGVsYXk6IHN1Ym1pdEZpbHRlckRlYm91bmNlLFxuICAgICAgICAgIHFQYXJhbXMsXG4gICAgICAgICAgcXVlcnlRTmFtZVxuICAgICAgICB9KX1cbiAgICAgICAge2ZpbHRlclN1Ym1pdEJ1dHRvbiAmJlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiYnRuIGJ0bi1wcmltYXJ5IGxpdmUtdGFibGUtLXN1Ym1pdC1maWx0ZXItYnV0dG9uXCJcbiAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgc3R5bGU9e3ttYXJnaW5Ub3A6IFwiOHB4XCJ9fVxuICAgICAgICAgICAgdmFsdWU9e2ZpbHRlclN1Ym1pdExhYmVsIHx8IHRoaXMudChcIi5maWx0ZXJcIiwge2RlZmF1bHRWYWx1ZTogXCJGaWx0ZXJcIn0pfVxuICAgICAgICAgIC8+XG4gICAgICAgIH1cbiAgICAgIDwvRm9ybT5cbiAgICApXG4gIH1cblxuICBvbkZpbHRlckNsaWNrZWQgPSAoZSkgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIHRoaXMuc2V0U3RhdGUoe3Nob3dGaWx0ZXJzOiAhdGhpcy5zdGF0ZS5zaG93RmlsdGVyc30pXG4gIH1cblxuICBvblBlclBhZ2VDaGFuZ2VkID0gKGUpID0+IHtcbiAgICBjb25zdCB7cXVlcnlOYW1lfSA9IHRoaXMuc1xuICAgIGNvbnN0IG5ld1BlclBhZ2VWYWx1ZSA9IGRpZ2coZSwgXCJ0YXJnZXRcIiwgXCJ2YWx1ZVwiKVxuICAgIGNvbnN0IHBlcktleSA9IGAke3F1ZXJ5TmFtZX1fcGVyYFxuICAgIGNvbnN0IHBhcmFtc0NoYW5nZSA9IHt9XG5cbiAgICBwYXJhbXNDaGFuZ2VbcGVyS2V5XSA9IG5ld1BlclBhZ2VWYWx1ZVxuXG4gICAgUGFyYW1zLmNoYW5nZVBhcmFtcyhwYXJhbXNDaGFuZ2UpXG4gIH1cblxuICByZW5kZXJJdGVtID0gKHtpbmRleCwgaXRlbTogbW9kZWx9KSA9PiB7XG4gICAgaWYgKCF0aGlzLnMudGFibGVTZXR0aW5nTG9hZGVkKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8Vmlldz5cbiAgICAgICAgICA8VGV4dD5cbiAgICAgICAgICAgIHt0aGlzLnQoXCIubG9hZGluZ19kb3RfZG90X2RvdFwiLCB7ZGVmYXVsdFZhbHVlOiBcIkxvYWRpbmcuLi5cIn0pfVxuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgPC9WaWV3PlxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8TW9kZWxSb3dcbiAgICAgICAgY2FjaGVLZXk9e21vZGVsLmNhY2hlS2V5KCl9XG4gICAgICAgIGNvbHVtbnM9e3RoaXMucy5jb2x1bW5zVG9TaG93fVxuICAgICAgICBjb2x1bW5XaWR0aHM9e3RoaXMuY29sdW1uV2lkdGhzKCl9XG4gICAgICAgIGV2ZW50cz17dGhpcy50dC5ldmVudHN9XG4gICAgICAgIGluZGV4PXtpbmRleH1cbiAgICAgICAga2V5PXttb2RlbC5pZCgpfVxuICAgICAgICBtb2RlbD17bW9kZWx9XG4gICAgICAgIHRhYmxlPXt0aGlzfVxuICAgICAgICB0YWJsZVNldHRpbmdGdWxsQ2FjaGVLZXk9e3RoaXMucy50YWJsZVNldHRpbmdGdWxsQ2FjaGVLZXl9XG4gICAgICAvPlxuICAgIClcbiAgfVxuXG4gIHN0eWxlRm9yQ29sdW1uID0gKHtjb2x1bW4sIGNvbHVtbkluZGV4LCBldmVuLCBzdHlsZSwgdHlwZX0pID0+IHtcbiAgICBjb25zdCB7c3R5bGVVSX0gPSB0aGlzLnBcbiAgICBjb25zdCBkZWZhdWx0U3R5bGUgPSB7XG4gICAgICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcbiAgICAgIHBhZGRpbmc6IDgsXG4gICAgICBvdmVyZmxvdzogXCJoaWRkZW5cIlxuICAgIH1cblxuICAgIGlmIChzdHlsZVVJKSB7XG4gICAgICBPYmplY3QuYXNzaWduKGRlZmF1bHRTdHlsZSwge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGV2ZW4gPyBcIiNmNWY1ZjVcIiA6IFwiI2ZmZlwiXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmICh0eXBlID09IFwiYWN0aW9uc1wiKSB7XG4gICAgICBkZWZhdWx0U3R5bGUuZmxleERpcmVjdGlvbiA9IFwicm93XCJcbiAgICAgIGRlZmF1bHRTdHlsZS5hbGlnbkl0ZW1zID0gXCJjZW50ZXJcIlxuXG4gICAgICBpZiAodGhpcy50dC5tZFVwKSB7XG4gICAgICAgIGRlZmF1bHRTdHlsZS5tYXJnaW5MZWZ0ID0gXCJhdXRvXCJcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlZmF1bHRTdHlsZS5tYXJnaW5SaWdodCA9IFwiYXV0b1wiXG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLnR0Lm1kVXAgJiYgc3R5bGVVSSkge1xuICAgICAgZGVmYXVsdFN0eWxlLmJvcmRlclJpZ2h0ID0gXCIxcHggc29saWQgI2RiZGJkYlwiXG4gICAgfVxuXG4gICAgY29uc3QgYWN0dWFsU3R5bGUgPSBPYmplY3QuYXNzaWduKFxuICAgICAgZGVmYXVsdFN0eWxlLFxuICAgICAgc3R5bGVcbiAgICApXG5cbiAgICByZXR1cm4gYWN0dWFsU3R5bGVcbiAgfVxuXG4gIHN0eWxlRm9ySGVhZGVyID0gKHtjb2x1bW4sIGNvbHVtbkluZGV4LCBzdHlsZSwgdHlwZX0pID0+IHtcbiAgICBjb25zdCB7bWRVcH0gPSB0aGlzLnR0XG4gICAgY29uc3QgZGVmYXVsdFN0eWxlID0ge1xuICAgICAgZmxleERpcmVjdGlvbjogXCJyb3dcIixcbiAgICAgIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gICAgICBwYWRkaW5nOiA4XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgIT0gXCJhY3Rpb25zXCIgJiYgbWRVcCAmJiB0aGlzLnAuc3R5bGVVSSkge1xuICAgICAgZGVmYXVsdFN0eWxlLmJvcmRlclJpZ2h0ID0gXCIxcHggc29saWQgI2RiZGJkYlwiXG4gICAgfVxuXG4gICAgY29uc3QgYWN0dWFsU3R5bGUgPSBPYmplY3QuYXNzaWduKFxuICAgICAgZGVmYXVsdFN0eWxlLFxuICAgICAgc3R5bGVcbiAgICApXG5cbiAgICByZXR1cm4gYWN0dWFsU3R5bGVcbiAgfVxuXG4gIHN0eWxlRm9ySGVhZGVyVGV4dCgpIHtcbiAgICBjb25zdCBhY3R1YWxTdHlsZSA9IHtmb250V2VpZ2h0OiBcImJvbGRcIn1cblxuICAgIHJldHVybiBhY3R1YWxTdHlsZVxuICB9XG5cbiAgc3R5bGVGb3JSb3cgPSAoe2V2ZW59ID0ge30pID0+IHtcbiAgICBjb25zdCBhY3R1YWxTdHlsZSA9IHtcbiAgICAgIGZsZXg6IDEsXG4gICAgICBhbGlnbkl0ZW1zOiBcInN0cmV0Y2hcIlxuICAgIH1cblxuICAgIGlmIChldmVuICYmIHRoaXMucC5zdHlsZVVJKSB7XG4gICAgICBhY3R1YWxTdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBcIiNmNWY1ZjVcIlxuICAgIH1cblxuICAgIHJldHVybiBhY3R1YWxTdHlsZVxuICB9XG5cbiAgc3R5bGVGb3JSb3dIZWFkZXIgPSAoKSA9PiB7XG4gICAgY29uc3QgYWN0dWFsU3R5bGUgPSB7XG4gICAgICBmbGV4OiAxLFxuICAgICAgYWxpZ25JdGVtczogXCJzdHJldGNoXCJcbiAgICB9XG5cbiAgICByZXR1cm4gYWN0dWFsU3R5bGVcbiAgfVxuXG4gIHRhYmxlQ29udHJvbHMoKSB7XG4gICAgY29uc3Qge2NvbnRyb2xzfSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCB7c2hvd1NldHRpbmdzfSA9IHRoaXMuc1xuICAgIGNvbnN0IHttb2RlbHMsIHFQYXJhbXMsIHF1ZXJ5LCByZXN1bHR9ID0gZGlncyh0aGlzLmNvbGxlY3Rpb24sIFwibW9kZWxzXCIsIFwicVBhcmFtc1wiLCBcInF1ZXJ5XCIsIFwicmVzdWx0XCIpXG5cbiAgICByZXR1cm4gKFxuICAgICAgPFZpZXcgc3R5bGU9e3RoaXMucm9vdFZpZXdTdHlsZSB8fD0ge2ZsZXhEaXJlY3Rpb246IFwicm93XCJ9fT5cbiAgICAgICAge2NvbnRyb2xzICYmIGNvbnRyb2xzKHttb2RlbHMsIHFQYXJhbXMsIHF1ZXJ5LCByZXN1bHR9KX1cbiAgICAgICAgPFByZXNzYWJsZSBkYXRhU2V0PXt7Y2xhc3M6IFwiZmlsdGVyLWJ1dHRvblwifX0gb25QcmVzcz17dGhpcy50dC5vbkZpbHRlckNsaWNrZWR9PlxuICAgICAgICAgIDxJY29uIG5hbWU9XCJzZWFyY2hcIiBzaXplPXsyMH0gLz5cbiAgICAgICAgPC9QcmVzc2FibGU+XG4gICAgICAgIDxWaWV3PlxuICAgICAgICAgIHtzaG93U2V0dGluZ3MgJiZcbiAgICAgICAgICAgIDxTZXR0aW5ncyBvblJlcXVlc3RDbG9zZT17dGhpcy50dC5vblJlcXVlc3RDbG9zZVNldHRpbmdzfSB0YWJsZT17dGhpc30gLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgPFByZXNzYWJsZSBkYXRhU2V0PXt0aGlzLnNldHRpbmdzQnV0dG9uRGF0YVNldCB8fD0ge2NsYXNzOiBcInNldHRpbmdzLWJ1dHRvblwifX0gb25QcmVzcz17dGhpcy50dC5vblNldHRpbmdzQ2xpY2tlZH0+XG4gICAgICAgICAgICA8SWNvbiBuYW1lPVwiZ2VhclwiIHNpemU9ezIwfSAvPlxuICAgICAgICAgIDwvUHJlc3NhYmxlPlxuICAgICAgICA8L1ZpZXc+XG4gICAgICA8L1ZpZXc+XG4gICAgKVxuICB9XG5cbiAgdGFibGVGb290ZXIoKSB7XG4gICAgY29uc3Qge3Jlc3VsdH0gPSBkaWdzKHRoaXMuY29sbGVjdGlvbiwgXCJyZXN1bHRcIilcbiAgICBjb25zdCBjdXJyZW50UGFnZSA9IHJlc3VsdC5jdXJyZW50UGFnZSgpXG4gICAgY29uc3QgdG90YWxDb3VudCA9IHJlc3VsdC50b3RhbENvdW50KClcbiAgICBjb25zdCBwZXJQYWdlID0gcmVzdWx0LnBlclBhZ2UoKVxuICAgIGNvbnN0IHRvID0gTWF0aC5taW4oY3VycmVudFBhZ2UgKiBwZXJQYWdlLCB0b3RhbENvdW50KVxuICAgIGNvbnN0IGRlZmF1bHRWYWx1ZSA9IFwiU2hvd2luZyAle2Zyb219IHRvICV7dG99IG91dCBvZiAle3RvdGFsX2NvdW50fSB0b3RhbC5cIlxuICAgIGxldCBmcm9tID0gKChjdXJyZW50UGFnZSAtIDEpICogcGVyUGFnZSkgKyAxXG5cbiAgICBpZiAodG8gPT09IDApIGZyb20gPSAwXG5cbiAgICByZXR1cm4gKFxuICAgICAgPFZpZXcgc3R5bGU9e3RoaXMucm9vdFZpZXdTdHlsZSB8fD0ge2ZsZXhEaXJlY3Rpb246IFwicm93XCIsIGp1c3RpZnlDb250ZW50OiBcInNwYWNlLWJldHdlZW5cIiwgbWFyZ2luVG9wOiAxMH19PlxuICAgICAgICA8VmlldyBkYXRhU2V0PXt0aGlzLnNob3dpbmdDb3VudHNEYXRhU2V0IHx8PSB7Y2xhc3M6IFwic2hvd2luZy1jb3VudHNcIn19IHN0eWxlPXt0aGlzLnNob3dpbmdDb3VudHNTdHlsZSB8fD0ge2ZsZXhEaXJlY3Rpb246IFwicm93XCJ9fT5cbiAgICAgICAgICA8VGV4dD5cbiAgICAgICAgICAgIHt0aGlzLnQoXCIuc2hvd2luZ19mcm9tX3RvX291dF9vZl90b3RhbFwiLCB7ZGVmYXVsdFZhbHVlLCBmcm9tLCB0bywgdG90YWxfY291bnQ6IHRvdGFsQ291bnR9KX1cbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAge3RoaXMucC53b3JrcGxhY2UgJiYgdGhpcy5zLmN1cnJlbnRXb3JrcGxhY2VDb3VudCAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgPFRleHQgc3R5bGU9e3RoaXMueFNlbGVjdGVkVGV4dFN0eWxlIHx8PSB7bWFyZ2luTGVmdDogM319PlxuICAgICAgICAgICAgICB7dGhpcy50KFwiLnhfc2VsZWN0ZWRcIiwge2RlZmF1bHRWYWx1ZTogXCIle3NlbGVjdGVkfSBzZWxlY3RlZC5cIiwgc2VsZWN0ZWQ6IHRoaXMucy5jdXJyZW50V29ya3BsYWNlQ291bnR9KX1cbiAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICB9XG4gICAgICAgIDwvVmlldz5cbiAgICAgICAgPFZpZXc+XG4gICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgY2xhc3NOYW1lPVwicGVyLXBhZ2Utc2VsZWN0XCJcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZT17cGVyUGFnZX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLnR0Lm9uUGVyUGFnZUNoYW5nZWR9XG4gICAgICAgICAgICBvcHRpb25zPXtwYWdpbmF0aW9uT3B0aW9uc31cbiAgICAgICAgICAvPlxuICAgICAgICA8L1ZpZXc+XG4gICAgICA8L1ZpZXc+XG4gICAgKVxuICB9XG5cbiAgY2xhc3NOYW1lKCkge1xuICAgIGNvbnN0IGNsYXNzTmFtZXMgPSBbXCJhcGktbWFrZXItLXRhYmxlXCJdXG5cbiAgICBpZiAodGhpcy5wcm9wcy5jbGFzc05hbWUpIHtcbiAgICAgIGNsYXNzTmFtZXMucHVzaCh0aGlzLnByb3BzLmNsYXNzTmFtZSlcbiAgICB9XG5cbiAgICByZXR1cm4gY2xhc3NOYW1lcy5qb2luKFwiIFwiKVxuICB9XG5cbiAgY29sdW1uUHJvcHMoY29sdW1uKSB7XG4gICAgY29uc3QgcHJvcHMgPSB7fVxuXG4gICAgaWYgKGNvbHVtbi50ZXh0Q2VudGVyKSB7XG4gICAgICBwcm9wcy5zdHlsZSB8fD0ge31cbiAgICAgIHByb3BzLnN0eWxlLnRleHRBbGlnbiA9IFwiY2VudGVyXCJcbiAgICB9XG5cbiAgICBpZiAoY29sdW1uLnRleHRSaWdodCkge1xuICAgICAgcHJvcHMuc3R5bGUgfHw9IHt9XG4gICAgICBwcm9wcy5zdHlsZS50ZXh0QWxpZ24gPSBcInJpZ2h0XCJcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvcHNcbiAgfVxuXG4gIGhlYWRlclByb3BzKGNvbHVtbikge1xuICAgIGNvbnN0IHByb3BzID0ge31cblxuICAgIGlmIChjb2x1bW4udGV4dENlbnRlcikge1xuICAgICAgcHJvcHMuc3R5bGUgfHw9IHt9XG4gICAgICBwcm9wcy5zdHlsZS5qdXN0aWZ5Q29udGVudCA9IFwiY2VudGVyXCJcbiAgICB9XG5cbiAgICBpZiAoY29sdW1uLnRleHRSaWdodCkge1xuICAgICAgcHJvcHMuc3R5bGUgfHw9IHt9XG4gICAgICBwcm9wcy5zdHlsZS5qdXN0aWZ5Q29udGVudCA9IFwiZW5kXCJcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvcHNcbiAgfVxuXG4gIGNvbHVtbldpZHRocygpIHtcbiAgICBjb25zdCBjb2x1bW5XaWR0aHMgPSB7fVxuXG4gICAgZm9yIChjb25zdCBjb2x1bW4gb2YgdGhpcy5zLnByZXBhcmVkQ29sdW1ucykge1xuICAgICAgY29sdW1uV2lkdGhzW2NvbHVtbi50YWJsZVNldHRpbmdDb2x1bW4uaWRlbnRpZmllcigpXSA9IGNvbHVtbi53aWR0aFxuICAgIH1cblxuICAgIHJldHVybiBjb2x1bW5XaWR0aHNcbiAgfVxuXG4gIGhlYWRlcnNDb250ZW50RnJvbUNvbHVtbnMgPSAoKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxEcmFnZ2FibGVTb3J0XG4gICAgICAgIGRhdGE9e3RoaXMucy5jb2x1bW5zVG9TaG93fVxuICAgICAgICBldmVudHM9e3RoaXMudHQuZHJhZ2dhYmxlU29ydEV2ZW50c31cbiAgICAgICAgaG9yaXpvbnRhbFxuICAgICAgICBrZXlFeHRyYWN0b3I9e3RoaXMudHQuZHJhZ0xpc3RrZXlFeHRyYWN0b3J9XG4gICAgICAgIG9uSXRlbU1vdmVkPXt0aGlzLnR0Lm9uSXRlbU1vdmVkfVxuICAgICAgICBvblJlb3JkZXJlZD17dGhpcy50dC5vblJlb3JkZXJlZH1cbiAgICAgICAgcmVuZGVySXRlbT17dGhpcy50dC5kcmFnTGlzdFJlbmRlckl0ZW1Db250ZW50fVxuICAgICAgLz5cbiAgICApXG4gIH1cblxuICBkcmFnTGlzdENhY2hlS2V5RXh0cmFjdG9yID0gKGl0ZW0pID0+IGAke2l0ZW0udGFibGVTZXR0aW5nQ29sdW1uLmlkZW50aWZpZXIoKX0tJHt0aGlzLnMucmVzaXppbmd9YFxuICBkcmFnTGlzdGtleUV4dHJhY3RvciA9IChpdGVtKSA9PiBpdGVtLnRhYmxlU2V0dGluZ0NvbHVtbi5pZGVudGlmaWVyKClcblxuICBvbkl0ZW1Nb3ZlZCA9ICh7YW5pbWF0aW9uQXJncywgaXRlbUluZGV4LCB4LCB5fSkgPT4ge1xuICAgIGNvbnN0IGFuaW1hdGVkUG9zaXRpb24gPSBkaWdnKHRoaXMsIFwic1wiLCBcImNvbHVtbnNUb1Nob3dcIiwgaXRlbUluZGV4LCBcImFuaW1hdGVkUG9zaXRpb25cIilcblxuICAgIGlmIChhbmltYXRpb25BcmdzKSB7XG4gICAgICBBbmltYXRlZC50aW1pbmcoYW5pbWF0ZWRQb3NpdGlvbiwgYW5pbWF0aW9uQXJncykuc3RhcnQoKVxuICAgIH0gZWxzZSB7XG4gICAgICBhbmltYXRlZFBvc2l0aW9uLnNldFZhbHVlKHt4LCB5fSlcbiAgICB9XG4gIH1cblxuICBvblJlb3JkZXJlZCA9IGFzeW5jICh7ZnJvbUl0ZW0sIGZyb21Qb3NpdGlvbiwgdG9JdGVtLCB0b1Bvc2l0aW9ufSkgPT4ge1xuICAgIGlmIChmcm9tUG9zaXRpb24gPT0gdG9Qb3NpdGlvbikgcmV0dXJuIC8vIE9ubHkgZG8gcmVxdWVzdHMgYW5kIHF1ZXJpZXMgaWYgY2hhbmdlZFxuXG4gICAgY29uc3QgVGFibGVTZXR0aW5nQ29sdW1uID0gZnJvbUl0ZW0udGFibGVTZXR0aW5nQ29sdW1uLmNvbnN0cnVjdG9yXG4gICAgY29uc3QgdG9Db2x1bW4gPSBhd2FpdCBUYWJsZVNldHRpbmdDb2x1bW4uZmluZCh0b0l0ZW0udGFibGVTZXR0aW5nQ29sdW1uLmlkKCkpIC8vIE5lZWQgdG8gbG9hZCBsYXRlc3QgcG9zaXRpb24gYmVjYXVzZSBBY3RzQXNMaXN0IG1pZ2h0IGhhdmUgY2hhbmdlZCBpdFxuXG4gICAgYXdhaXQgZnJvbUl0ZW0udGFibGVTZXR0aW5nQ29sdW1uLnVwZGF0ZSh7cG9zaXRpb246IHRvQ29sdW1uLnBvc2l0aW9uKCl9KVxuICB9XG5cbiAgZHJhZ0xpc3RSZW5kZXJJdGVtQ29udGVudCA9ICh7aXNBY3RpdmUsIGl0ZW0sIHRvdWNoUHJvcHN9KSA9PiB7XG4gICAgY29uc3Qge2FuaW1hdGVkV2lkdGgsIGFuaW1hdGVkWkluZGV4LCBjb2x1bW4sIHRhYmxlU2V0dGluZ0NvbHVtbn0gPSBpdGVtXG5cbiAgICByZXR1cm4gKFxuICAgICAgPEhlYWRlckNvbHVtblxuICAgICAgICBhY3RpdmU9e2lzQWN0aXZlfVxuICAgICAgICBhbmltYXRlZFdpZHRoPXthbmltYXRlZFdpZHRofVxuICAgICAgICBhbmltYXRlZFpJbmRleD17YW5pbWF0ZWRaSW5kZXh9XG4gICAgICAgIGNvbHVtbj17Y29sdW1ufVxuICAgICAgICBrZXk9e3RhYmxlU2V0dGluZ0NvbHVtbi5pZGVudGlmaWVyKCl9XG4gICAgICAgIHJlc2l6aW5nPXt0aGlzLnMucmVzaXppbmd9XG4gICAgICAgIHRhYmxlPXt0aGlzfVxuICAgICAgICB0YWJsZVNldHRpbmdDb2x1bW49e3RhYmxlU2V0dGluZ0NvbHVtbn1cbiAgICAgICAgdG91Y2hQcm9wcz17dG91Y2hQcm9wc31cbiAgICAgICAgd2lkdGhzPXt0aGlzLnMud2lkdGhzfVxuICAgICAgLz5cbiAgICApXG4gIH1cblxuICBoZWFkZXJDbGFzc05hbWVGb3JDb2x1bW4oY29sdW1uKSB7XG4gICAgY29uc3QgY2xhc3NOYW1lcyA9IFtdXG5cbiAgICBpZiAoY29sdW1uLmNvbW1vblByb3BzICYmIGNvbHVtbi5jb21tb25Qcm9wcy5jbGFzc05hbWUpIGNsYXNzTmFtZXMucHVzaChjb2x1bW4uY29tbW9uUHJvcHMuY2xhc3NOYW1lKVxuICAgIGlmIChjb2x1bW4uaGVhZGVyUHJvcHMgJiYgY29sdW1uLmhlYWRlclByb3BzLmNsYXNzTmFtZSkgY2xhc3NOYW1lcy5wdXNoKGNvbHVtbi5oZWFkZXJQcm9wcy5jbGFzc05hbWUpXG5cbiAgICByZXR1cm4gY2xhc3NOYW1lc1xuICB9XG5cbiAgaGVhZGVyTGFiZWxGb3JDb2x1bW4oY29sdW1uKSB7XG4gICAgY29uc3Qge21vZGVsQ2xhc3N9ID0gdGhpcy5wXG5cbiAgICBpZiAoXCJsYWJlbFwiIGluIGNvbHVtbikge1xuICAgICAgaWYgKHR5cGVvZiBjb2x1bW4ubGFiZWwgPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHJldHVybiBjb2x1bW4ubGFiZWwoKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGNvbHVtbi5sYWJlbFxuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBjdXJyZW50TW9kZWxDbGFzcyA9IG1vZGVsQ2xhc3NcblxuICAgIC8vIENhbGN1bGF0ZSBjdXJyZW50IG1vZGVsIGNsYXNzIHRocm91Z2ggcGF0aFxuICAgIGlmIChjb2x1bW4ucGF0aCkge1xuICAgICAgZm9yIChjb25zdCBwYXRoUGFydCBvZiBjb2x1bW4ucGF0aCkge1xuICAgICAgICBjb25zdCByZWxhdGlvbnNoaXBzID0gZGlnZyhjdXJyZW50TW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLCBcInJlbGF0aW9uc2hpcHNcIilcbiAgICAgICAgY29uc3QgcmVsYXRpb25zaGlwID0gcmVsYXRpb25zaGlwcy5maW5kKChyZWxhdGlvbnNoaXBJbkFycmF5KSA9PiByZWxhdGlvbnNoaXBJbkFycmF5Lm5hbWUgPT0gaW5mbGVjdGlvbi51bmRlcnNjb3JlKHBhdGhQYXJ0KSlcblxuICAgICAgICBjdXJyZW50TW9kZWxDbGFzcyA9IG1vZGVsQ2xhc3NSZXF1aXJlKGRpZ2cocmVsYXRpb25zaGlwLCBcInJlc291cmNlX25hbWVcIikpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNvbHVtbi5hdHRyaWJ1dGUpIHJldHVybiBjdXJyZW50TW9kZWxDbGFzcy5odW1hbkF0dHJpYnV0ZU5hbWUoY29sdW1uLmF0dHJpYnV0ZSlcblxuICAgIHRocm93IG5ldyBFcnJvcihcIk5vICdsYWJlbCcgb3IgJ2F0dHJpYnV0ZScgd2FzIGdpdmVuXCIpXG4gIH1cblxuICBvbkZpbHRlckZvcm1TdWJtaXQgPSAoKSA9PiB0aGlzLnN1Ym1pdEZpbHRlcigpXG4gIG9uUmVxdWVzdENsb3NlU2V0dGluZ3MgPSAoKSA9PiB0aGlzLnNldFN0YXRlKHtzaG93U2V0dGluZ3M6IGZhbHNlfSlcbiAgb25TZXR0aW5nc0NsaWNrZWQgPSAoZSkgPT4gdGhpcy5zZXRTdGF0ZSh7c2hvd1NldHRpbmdzOiAhdGhpcy5zLnNob3dTZXR0aW5nc30pXG5cbiAgc3VibWl0RmlsdGVyID0gKCkgPT4ge1xuICAgIGNvbnN0IHthcHBIaXN0b3J5fSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCB7cXVlcnlRTmFtZX0gPSB0aGlzLnNcbiAgICBjb25zdCBjaGFuZ2VQYXJhbXNQYXJhbXMgPSB7fVxuICAgIGNvbnN0IHFQYXJhbXMgPSB0aGlzLnMuZmlsdGVyRm9ybS5hc09iamVjdCgpXG5cbiAgICBpZiAoUGxhdGZvcm0uT1MgPT0gXCJ3ZWJcIikge1xuICAgICAgY29uc3QgZmlsdGVyRm9ybSA9IGRpZ2codGhpcy50dC5maWx0ZXJGb3JtUmVmLCBcImN1cnJlbnRcIilcbiAgICAgIGNvbnN0IG5hdnRpdmVGb3JtUGFyYW1zID0gUGFyYW1zLnNlcmlhbGl6ZUZvcm0oZmlsdGVyRm9ybSlcblxuICAgICAgaW5jb3Jwb3JhdGUocVBhcmFtcywgbmF2dGl2ZUZvcm1QYXJhbXMpXG4gICAgfVxuXG4gICAgY2hhbmdlUGFyYW1zUGFyYW1zW3F1ZXJ5UU5hbWVdID0gSlNPTi5zdHJpbmdpZnkocVBhcmFtcylcblxuICAgIFBhcmFtcy5jaGFuZ2VQYXJhbXMoY2hhbmdlUGFyYW1zUGFyYW1zLCB7YXBwSGlzdG9yeX0pXG4gIH1cblxuICBzdWJtaXRGaWx0ZXJEZWJvdW5jZSA9IGRlYm91bmNlKHRoaXMudHQuc3VibWl0RmlsdGVyKVxufSkpXG4iXSwibWFwcGluZ3MiOiI7QUFBQSxTQUFRQSxJQUFJLEVBQUVDLElBQUksUUFBTyxXQUFXO0FBQ3BDLE9BQU9DLEtBQUssSUFBR0MsYUFBYSxFQUFFQyxVQUFVLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxRQUFPLE9BQU87QUFDdkUsU0FBUUMsUUFBUSxFQUFFQyxRQUFR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
|
|
973
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkaWdnIiwiZGlncyIsIlJlYWN0IiwiY3JlYXRlQ29udGV4dCIsInVzZUNvbnRleHQiLCJ1c2VNZW1vIiwidXNlUmVmIiwiQW5pbWF0ZWQiLCJQbGF0Zm9ybSIsIlByZXNzYWJsZSIsIlZpZXciLCJCYXNlQ29tcG9uZW50IiwiQ2FyZCIsImNsYXNzTmFtZXMiLCJDb2xsZWN0aW9uIiwiY29sdW1uVmlzaWJsZSIsImRlYm91bmNlIiwiRHJhZ2dhYmxlU29ydCIsIkV2ZW50RW1pdHRlciIsIkZpbHRlcnMiLCJGbGF0TGlzdCIsIkZvcm0iLCJIZWFkZXIiLCJIZWFkZXJDb2x1bW4iLCJIZWFkZXJTZWxlY3QiLCJJY29uIiwiaW5jb3Jwb3JhdGUiLCJpbmZsZWN0aW9uIiwibWVtbyIsIm1vZGVsQ2xhc3NSZXF1aXJlIiwiTW9kZWxSb3ciLCJQYWdpbmF0ZSIsIlBhcmFtcyIsIlByb3BUeXBlcyIsIlJvdyIsInNlbGVjdENhbGN1bGF0b3IiLCJTZWxlY3QiLCJTZXR0aW5ncyIsInNoYXBlQ29tcG9uZW50IiwiVGFibGVTZXR0aW5ncyIsIlRleHQiLCJ1bmlxdW5pemUiLCJ1c2VCcmVha3BvaW50IiwidXNlQ29sbGVjdGlvbiIsInVzZUkxOG4iLCJ1c2VFdmVudEVtaXR0ZXIiLCJ1c2VNb2RlbEV2ZW50IiwidXNlUXVlcnlQYXJhbXMiLCJXaWR0aHMiLCJwYWdpbmF0aW9uT3B0aW9ucyIsIldvcmtlclBsdWdpbnNDaGVja0FsbENoZWNrYm94IiwibGF6eSIsIlRhYmxlQ29udGV4dCIsIkxpc3RIZWFkZXJDb21wb25lbnQiLCJzZXR1cCIsInVzZVN0YXRlcyIsImxhc3RVcGRhdGUiLCJEYXRlIiwicmVuZGVyIiwibWRVcCIsInRhYmxlQ29udGV4dFZhbHVlIiwidGFibGUiLCJjb2xsZWN0aW9uIiwiZXZlbnRzIiwicXVlcnlXaXRob3V0UGFnaW5hdGlvbiIsInQiLCJ0dCIsInF1ZXJ5Iiwib25Db2x1bW5WaXNpYmlsaXR5VXBkYXRlZCIsImNyZWF0ZUVsZW1lbnQiLCJkYXRhU2V0IiwiY2xhc3MiLCJzdHlsZSIsInN0eWxlRm9yUm93SGVhZGVyIiwicCIsIndvcmtwbGFjZSIsInMiLCJjdXJyZW50V29ya3BsYWNlIiwic3R5bGVGb3JIZWFkZXIiLCJ3aWR0aCIsInVuZGVmaW5lZCIsIndvcmtlclBsZ3VpbnNDaGVja0FsbENoZWNrYm94U3R5bGUiLCJtYXJnaW5Ib3Jpem9udGFsIiwic2VsZWN0QWxsRm91bmRUZXh0U3R5bGUiLCJtYXJnaW5MZWZ0IiwiZGVmYXVsdFZhbHVlIiwicHJlcGFyZWRDb2x1bW5zIiwiRnJhZ21lbnQiLCJoZWFkZXJzQ29udGVudEZyb21Db2x1bW5zIiwidHlwZSIsInNldFN0YXRlIiwiQXBpTWFrZXJUYWJsZSIsImRlZmF1bHRQcm9wcyIsImNhcmQiLCJjdXJyZW50VXNlciIsImRlc3Ryb3lFbmFibGVkIiwiZmlsdGVyQ2FyZCIsImZpbHRlclN1Ym1pdEJ1dHRvbiIsIm5vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnQiLCJub1JlY29yZHNGb3VuZENvbnRlbnQiLCJwcmVsb2FkcyIsInNlbGVjdCIsInN0eWxlVUkiLCJwcm9wVHlwZXMiLCJhYmlsaXRpZXMiLCJvYmplY3QiLCJhY3Rpb25zQ29udGVudCIsImZ1bmMiLCJhcHBIaXN0b3J5IiwiYm9vbCIsImlzUmVxdWlyZWQiLCJjbGFzc05hbWUiLCJzdHJpbmciLCJpbnN0YW5jZU9mIiwiY29sdW1ucyIsIm9uZU9mVHlwZSIsImFycmF5IiwiY29udHJvbHMiLCJkZWZhdWx0RGF0ZUZvcm1hdE5hbWUiLCJkZWZhdWx0RGF0ZVRpbWVGb3JtYXROYW1lIiwiZGVmYXVsdFBhcmFtcyIsImRlc3Ryb3lNZXNzYWdlIiwiZWRpdE1vZGVsUGF0aCIsImZpbHRlckNvbnRlbnQiLCJmaWx0ZXJTdWJtaXRMYWJlbCIsIm5vZGUiLCJncm91cEJ5IiwiaGVhZGVyIiwiaWRlbnRpZmllciIsIm1vZGVsQ2xhc3MiLCJvbk1vZGVsc0xvYWRlZCIsInBhZ2luYXRlQ29udGVudCIsInBhZ2luYXRpb25Db21wb25lbnQiLCJxdWVyeU1ldGhvZCIsInF1ZXJ5TmFtZSIsInNlbGVjdENvbHVtbnMiLCJzdHlsZXMiLCJ2aWV3TW9kZWxQYXRoIiwiZHJhZ2dhYmxlU29ydEV2ZW50cyIsInRhYmxlU2V0dGluZ3MiLCJuYW1lc3BhY2UiLCJuYW1lIiwiYnJlYWtwb2ludCIsInF1ZXJ5UGFyYW1zIiwic2V0SW5zdGFuY2UiLCJmaWx0ZXJGb3JtUmVmIiwiY29sbGVjdGlvbktleSIsIm1vZGVsQ2xhc3NEYXRhIiwicHJvcHMiLCJxdWVyeVNOYW1lIiwiY29sdW1uc0FzQXJyYXkiLCJjdXJyZW50V29ya3BsYWNlQ291bnQiLCJmaWx0ZXJGb3JtIiwiY29sdW1uc1RvU2hvdyIsImRyYWdnZWRDb2x1bW4iLCJwcmVsb2FkIiwicXVlcnlRTmFtZSIsInF1ZXJ5UGFnZU5hbWUiLCJyZXNpemluZyIsInNob3dGaWx0ZXJzIiwiQm9vbGVhbiIsInNob3dTZXR0aW5ncyIsInRhYmxlU2V0dGluZyIsInRhYmxlU2V0dGluZ0xvYWRlZCIsInRhYmxlU2V0dGluZ0Z1bGxDYWNoZUtleSIsIndpZHRocyIsImNhY2hlS2V5IiwibG9hZEN1cnJlbnRXb3JrcGxhY2UiLCJ0aGVuIiwibG9hZEN1cnJlbnRXb3JrcGxhY2VDb3VudCIsImlkIiwibG9hZFRhYmxlU2V0dGluZyIsIm9uTGlua3NDcmVhdGVkIiwib25MaW5rc0Rlc3Ryb3llZCIsImNvbGxlY3Rpb25SZWFkeSIsImFiaWxpdGllc1RvTG9hZCIsImlmQ29uZGl0aW9uIiwicGFnaW5hdGlvbiIsInN0YXRlIiwiY2xvbmUiLCJleGNlcHQiLCJvbkRyYWdTdGFydCIsIm9uRHJhZ0VuZEFuaW1hdGlvbiIsImdldENvbHVtbnNUb1Nob3ciLCJpdGVtIiwiYW5pbWF0ZWRaSW5kZXgiLCJzZXRWYWx1ZSIsIldvcmtwbGFjZSIsInJlc3VsdCIsImN1cnJlbnQiLCJXb3JrcGxhY2VMaW5rIiwicmFuc2FjayIsInJlc291cmNlX3R5cGVfZXEiLCJ3b3JrcGxhY2VfaWRfZXEiLCJjb3VudCIsImZpbHRlciIsImNvbHVtbiIsInRhYmxlU2V0dGluZ0NvbHVtbiIsInNvcnQiLCJhIiwiYiIsInBvc2l0aW9uIiwibG9hZEV4aXN0aW5nT3JDcmVhdGVUYWJsZVNldHRpbmdzIiwibWVyZ2VkUHJlbG9hZHMiLCJmdWxsQ2FjaGVLZXkiLCJ1cGRhdGVTZXR0aW5nc0Z1bGxDYWNoZUtleSIsImNvbmNhdCIsIm1vZGVscyIsIm92ZXJhbGxDb3VudCIsInFQYXJhbXMiLCJzaG93Tm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudCIsInNob3dOb1JlY29yZHNGb3VuZENvbnRlbnQiLCJhcmdzIiwiRXJyb3IiLCJvbkxheW91dCIsIm9uQ29udGFpbmVyTGF5b3V0IiwiY29udGFpbmVyIiwiY2FyZE9yVGFibGUiLCJvd25BYmlsaXRpZXMiLCJwdXNoIiwibGVuZ3RoIiwibW9kZWxDbGFzc05hbWUiLCJtb2RlbE5hbWUiLCJhYmlsaXR5IiwicmVzdFByb3BzIiwiaGVhZGVyQ29udGVudCIsIlBhZ2luYXRpb25Db21wb25lbnQiLCJodW1hbiIsImZsYXRMaXN0U3R5bGUiLCJvdmVyZmxvd1giLCJib3JkZXIiLCJib3JkZXJSYWRpdXMiLCJmbGF0TGlzdCIsIlByb3ZpZGVyIiwidmFsdWUiLCJfZXh0ZW5kcyIsImRhdGEiLCJleHRyYURhdGEiLCJrZXlFeHRyYWN0b3IiLCJrZXlFeHRyYXRvciIsInJlbmRlckl0ZW0iLCJzaG93c0hvcml6b250YWxTY3JvbGxJbmRpY2F0b3IiLCJ0YWJsZUNvbnRyb2xzIiwiZm9vdGVyIiwidGFibGVGb290ZXIiLCJlIiwibmF0aXZlRXZlbnQiLCJsYXlvdXQiLCJ0YWJsZVdpZHRoIiwiY3JlYXRlZCIsImFtb3VudENyZWF0ZWQiLCJwcmV2U3RhdGUiLCJkZXN0cm95ZWQiLCJhbW91bnREZXN0cm95ZWQiLCJtb2RlbCIsInN1Ym1pdEZpbHRlciIsInN1Ym1pdEZpbHRlckRlYm91bmNlIiwiZm9ybVJlZiIsIm9uU3VibWl0Iiwib25GaWx0ZXJGb3JtU3VibWl0Iiwic2V0Rm9ybSIsInNldFN0YXRlcyIsIm9uRmlsdGVyQ2hhbmdlZCIsIm9uRmlsdGVyQ2hhbmdlZFdpdGhEZWxheSIsIm1hcmdpblRvcCIsIm9uRmlsdGVyQ2xpY2tlZCIsInByZXZlbnREZWZhdWx0Iiwib25QZXJQYWdlQ2hhbmdlZCIsIm5ld1BlclBhZ2VWYWx1ZSIsInBlcktleSIsInBhcmFtc0NoYW5nZSIsImNoYW5nZVBhcmFtcyIsImluZGV4IiwiY29sdW1uV2lkdGhzIiwia2V5Iiwic3R5bGVGb3JDb2x1bW4iLCJjb2x1bW5JbmRleCIsImV2ZW4iLCJkZWZhdWx0U3R5bGUiLCJqdXN0aWZ5Q29udGVudCIsInBhZGRpbmciLCJvdmVyZmxvdyIsIk9iamVjdCIsImFzc2lnbiIsImJhY2tncm91bmRDb2xvciIsImZsZXhEaXJlY3Rpb24iLCJhbGlnbkl0ZW1zIiwibWFyZ2luUmlnaHQiLCJib3JkZXJSaWdodCIsImFjdHVhbFN0eWxlIiwic3R5bGVGb3JIZWFkZXJUZXh0IiwiZm9udFdlaWdodCIsInN0eWxlRm9yUm93IiwiZmxleCIsInJvb3RWaWV3U3R5bGUiLCJvblByZXNzIiwic2l6ZSIsIm9uUmVxdWVzdENsb3NlIiwib25SZXF1ZXN0Q2xvc2VTZXR0aW5ncyIsInNldHRpbmdzQnV0dG9uRGF0YVNldCIsIm9uU2V0dGluZ3NDbGlja2VkIiwiY3VycmVudFBhZ2UiLCJ0b3RhbENvdW50IiwicGVyUGFnZSIsInRvIiwiTWF0aCIsIm1pbiIsImZyb20iLCJzaG93aW5nQ291bnRzRGF0YVNldCIsInNob3dpbmdDb3VudHNTdHlsZSIsInRvdGFsX2NvdW50IiwieFNlbGVjdGVkVGV4dFN0eWxlIiwic2VsZWN0ZWQiLCJvbkNoYW5nZSIsIm9wdGlvbnMiLCJqb2luIiwiY29sdW1uUHJvcHMiLCJ0ZXh0Q2VudGVyIiwidGV4dEFsaWduIiwidGV4dFJpZ2h0IiwiaGVhZGVyUHJvcHMiLCJob3Jpem9udGFsIiwiZHJhZ0xpc3RrZXlFeHRyYWN0b3IiLCJvbkl0ZW1Nb3ZlZCIsIm9uUmVvcmRlcmVkIiwiZHJhZ0xpc3RSZW5kZXJJdGVtQ29udGVudCIsImRyYWdMaXN0Q2FjaGVLZXlFeHRyYWN0b3IiLCJhbmltYXRpb25BcmdzIiwiaXRlbUluZGV4IiwieCIsInkiLCJhbmltYXRlZFBvc2l0aW9uIiwidGltaW5nIiwic3RhcnQiLCJmcm9tSXRlbSIsImZyb21Qb3NpdGlvbiIsInRvSXRlbSIsInRvUG9zaXRpb24iLCJUYWJsZVNldHRpbmdDb2x1bW4iLCJjb25zdHJ1Y3RvciIsInRvQ29sdW1uIiwiZmluZCIsInVwZGF0ZSIsImlzQWN0aXZlIiwidG91Y2hQcm9wcyIsImFuaW1hdGVkV2lkdGgiLCJhY3RpdmUiLCJoZWFkZXJDbGFzc05hbWVGb3JDb2x1bW4iLCJjb21tb25Qcm9wcyIsImhlYWRlckxhYmVsRm9yQ29sdW1uIiwibGFiZWwiLCJjdXJyZW50TW9kZWxDbGFzcyIsInBhdGgiLCJwYXRoUGFydCIsInJlbGF0aW9uc2hpcHMiLCJyZWxhdGlvbnNoaXAiLCJyZWxhdGlvbnNoaXBJbkFycmF5IiwidW5kZXJzY29yZSIsImF0dHJpYnV0ZSIsImh1bWFuQXR0cmlidXRlTmFtZSIsImNoYW5nZVBhcmFtc1BhcmFtcyIsImFzT2JqZWN0IiwiT1MiLCJuYXZ0aXZlRm9ybVBhcmFtcyIsInNlcmlhbGl6ZUZvcm0iLCJKU09OIiwic3RyaW5naWZ5Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RhYmxlL3RhYmxlLmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2RpZ2csIGRpZ3N9IGZyb20gXCJkaWdnZXJpemVcIlxuaW1wb3J0IFJlYWN0LCB7Y3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCwgdXNlTWVtbywgdXNlUmVmfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHtBbmltYXRlZCwgUGxhdGZvcm0sIFByZXNzYWJsZSwgVmlld30gZnJvbSBcInJlYWN0LW5hdGl2ZVwiXG5pbXBvcnQgQmFzZUNvbXBvbmVudCBmcm9tIFwiLi4vYmFzZS1jb21wb25lbnRcIlxuaW1wb3J0IENhcmQgZnJvbSBcIi4uL2Jvb3RzdHJhcC9jYXJkXCJcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gXCJjbGFzc25hbWVzXCJcbmltcG9ydCBDb2xsZWN0aW9uIGZyb20gXCIuLi9jb2xsZWN0aW9uXCJcbmltcG9ydCBjb2x1bW5WaXNpYmxlIGZyb20gXCIuL2NvbHVtbi12aXNpYmxlXCJcbmltcG9ydCBkZWJvdW5jZSBmcm9tIFwiZGVib3VuY2VcIlxuaW1wb3J0IERyYWdnYWJsZVNvcnQgZnJvbSBcIi4uL2RyYWdnYWJsZS1zb3J0L2luZGV4XCJcbmltcG9ydCBFdmVudEVtaXR0ZXIgZnJvbSBcImV2ZW50c1wiXG5pbXBvcnQgRmlsdGVycyBmcm9tIFwiLi9maWx0ZXJzXCJcbmltcG9ydCBGbGF0TGlzdCBmcm9tIFwiLi9jb21wb25lbnRzL2ZsYXQtbGlzdFwiXG5pbXBvcnQge0Zvcm19IGZyb20gXCIuLi9mb3JtXCJcbmltcG9ydCBIZWFkZXIgZnJvbSBcIi4vY29tcG9uZW50cy9oZWFkZXJcIlxuaW1wb3J0IEhlYWRlckNvbHVtbiBmcm9tIFwiLi9oZWFkZXItY29sdW1uXCJcbmltcG9ydCBIZWFkZXJTZWxlY3QgZnJvbSBcIi4vaGVhZGVyLXNlbGVjdFwiXG5pbXBvcnQgSWNvbiBmcm9tIFwiLi4vdXRpbHMvaWNvblwiXG5pbXBvcnQge2luY29ycG9yYXRlfSBmcm9tIFwiaW5jb3Jwb3JhdG9yXCJcbmltcG9ydCAqIGFzIGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIlxuaW1wb3J0IG1lbW8gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL3NyYy9tZW1vXCJcbmltcG9ydCBtb2RlbENsYXNzUmVxdWlyZSBmcm9tIFwiLi4vbW9kZWwtY2xhc3MtcmVxdWlyZVwiXG5pbXBvcnQgTW9kZWxSb3cgZnJvbSBcIi4vbW9kZWwtcm93XCJcbmltcG9ydCBQYWdpbmF0ZSBmcm9tIFwiLi4vYm9vdHN0cmFwL3BhZ2luYXRlXCJcbmltcG9ydCBQYXJhbXMgZnJvbSBcIi4uL3BhcmFtc1wiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCBSb3cgZnJvbSBcIi4vY29tcG9uZW50cy9yb3dcIlxuaW1wb3J0IHNlbGVjdENhbGN1bGF0b3IgZnJvbSBcIi4vc2VsZWN0LWNhbGN1bGF0b3JcIlxuaW1wb3J0IFNlbGVjdCBmcm9tIFwiLi4vaW5wdXRzL3NlbGVjdFwiXG5pbXBvcnQgU2V0dGluZ3MgZnJvbSBcIi4vc2V0dGluZ3MvaW5kZXhcIlxuaW1wb3J0IHtzaGFwZUNvbXBvbmVudH0gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL3NyYy9zaGFwZS1jb21wb25lbnRcIlxuaW1wb3J0IFRhYmxlU2V0dGluZ3MgZnJvbSBcIi4vdGFibGUtc2V0dGluZ3NcIlxuaW1wb3J0IFRleHQgZnJvbSBcIi4uL3V0aWxzL3RleHRcIlxuaW1wb3J0IHVuaXF1bml6ZSBmcm9tIFwidW5pcXVuaXplXCJcbmltcG9ydCB1c2VCcmVha3BvaW50IGZyb20gXCIuLi91c2UtYnJlYWtwb2ludFwiXG5pbXBvcnQgdXNlQ29sbGVjdGlvbiBmcm9tIFwiLi4vdXNlLWNvbGxlY3Rpb25cIlxuaW1wb3J0IHVzZUkxOG4gZnJvbSBcImkxOG4tb24tc3Rlcm9pZHMvc3JjL3VzZS1pMThuXCJcbmltcG9ydCB1c2VFdmVudEVtaXR0ZXIgZnJvbSBcIi4uL3VzZS1ldmVudC1lbWl0dGVyXCJcbmltcG9ydCB1c2VNb2RlbEV2ZW50IGZyb20gXCIuLi91c2UtbW9kZWwtZXZlbnRcIlxuaW1wb3J0IHVzZVF1ZXJ5UGFyYW1zIGZyb20gXCJvbi1sb2NhdGlvbi1jaGFuZ2VkL2J1aWxkL3VzZS1xdWVyeS1wYXJhbXNcIlxuaW1wb3J0IFdpZHRocyBmcm9tIFwiLi93aWR0aHNcIlxuXG5jb25zdCBwYWdpbmF0aW9uT3B0aW9ucyA9IFszMCwgNjAsIDkwLCBbXCJBbGxcIiwgXCJhbGxcIl1dXG5jb25zdCBXb3JrZXJQbHVnaW5zQ2hlY2tBbGxDaGVja2JveCA9IFJlYWN0LmxhenkoKCkgPT4gaW1wb3J0KFwiLi93b3JrZXItcGx1Z2lucy1jaGVjay1hbGwtY2hlY2tib3hcIikpXG5jb25zdCBUYWJsZUNvbnRleHQgPSBjcmVhdGVDb250ZXh0KClcblxuY29uc3QgTGlzdEhlYWRlckNvbXBvbmVudCA9IG1lbW8oc2hhcGVDb21wb25lbnQoY2xhc3MgTGlzdEhlYWRlckNvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICBzZXR1cCgpIHtcbiAgICB0aGlzLnVzZVN0YXRlcyh7XG4gICAgICBsYXN0VXBkYXRlOiBuZXcgRGF0ZSgpXG4gICAgfSlcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7bWRVcH0gPSB1c2VCcmVha3BvaW50KClcbiAgICBjb25zdCB0YWJsZUNvbnRleHRWYWx1ZSA9IHVzZUNvbnRleHQoVGFibGVDb250ZXh0KVxuICAgIGNvbnN0IHRhYmxlID0gdGFibGVDb250ZXh0VmFsdWUudGFibGVcbiAgICBjb25zdCB7Y29sbGVjdGlvbiwgZXZlbnRzLCBxdWVyeVdpdGhvdXRQYWdpbmF0aW9uLCB0fSA9IHRhYmxlLnR0XG4gICAgY29uc3Qge3F1ZXJ5fSA9IGRpZ3MoY29sbGVjdGlvbiwgXCJxdWVyeVwiKVxuXG4gICAgdXNlRXZlbnRFbWl0dGVyKGV2ZW50cywgXCJjb2x1bW5WaXNpYmlsaXR5VXBkYXRlZFwiLCB0aGlzLnR0Lm9uQ29sdW1uVmlzaWJpbGl0eVVwZGF0ZWQpXG5cbiAgICByZXR1cm4gKFxuICAgICAgPFJvdyBkYXRhU2V0PXt7Y2xhc3M6IFwiYXBpLW1ha2VyL3RhYmxlL2hlYWRlci1yb3dcIn19IHN0eWxlPXt0YWJsZS5zdHlsZUZvclJvd0hlYWRlcigpfT5cbiAgICAgICAge3RhYmxlLnAud29ya3BsYWNlICYmIHRhYmxlLnMuY3VycmVudFdvcmtwbGFjZSAmJlxuICAgICAgICAgIDxIZWFkZXIgc3R5bGU9e3RhYmxlLnN0eWxlRm9ySGVhZGVyKHtzdHlsZToge3dpZHRoOiBtZFVwID8gNDEgOiB1bmRlZmluZWR9fSl9PlxuICAgICAgICAgICAgPFdvcmtlclBsdWdpbnNDaGVja0FsbENoZWNrYm94XG4gICAgICAgICAgICAgIGN1cnJlbnRXb3JrcGxhY2U9e3RhYmxlLnMuY3VycmVudFdvcmtwbGFjZX1cbiAgICAgICAgICAgICAgcXVlcnk9e3F1ZXJ5V2l0aG91dFBhZ2luYXRpb259XG4gICAgICAgICAgICAgIHN0eWxlPXt0aGlzLndvcmtlclBsZ3VpbnNDaGVja0FsbENoZWNrYm94U3R5bGUgfHw9IHttYXJnaW5Ib3Jpem9udGFsOiBcImF1dG9cIn19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgeyFtZFVwICYmXG4gICAgICAgICAgICAgIDxUZXh0IHN0eWxlPXt0aGlzLnNlbGVjdEFsbEZvdW5kVGV4dFN0eWxlIHx8PSB7bWFyZ2luTGVmdDogM319PlxuICAgICAgICAgICAgICAgIHt0KFwiLnNlbGVjdF9hbGxfZm91bmRcIiwge2RlZmF1bHRWYWx1ZTogXCJTZWxlY3QgYWxsIGZvdW5kXCJ9KX1cbiAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvSGVhZGVyPlxuICAgICAgICB9XG4gICAgICAgIHshbWRVcCAmJlxuICAgICAgICAgIDxIZWFkZXIgc3R5bGU9e3RhYmxlLnN0eWxlRm9ySGVhZGVyKHtzdHlsZToge319KX0+XG4gICAgICAgICAgICA8SGVhZGVyU2VsZWN0IHByZXBhcmVkQ29sdW1ucz17dGFibGUucy5wcmVwYXJlZENvbHVtbnN9IHF1ZXJ5PXtxdWVyeX0gdGFibGU9e3RhYmxlfSAvPlxuICAgICAgICAgIDwvSGVhZGVyPlxuICAgICAgICB9XG4gICAgICAgIHttZFVwICYmXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIHt0YWJsZS5oZWFkZXJzQ29udGVudEZyb21Db2x1bW5zKCl9XG4gICAgICAgICAgICA8SGVhZGVyIHN0eWxlPXt0YWJsZS5zdHlsZUZvckhlYWRlcih7c3R5bGU6IHt9LCB0eXBlOiBcImFjdGlvbnNcIn0pfSAvPlxuICAgICAgICAgIDwvPlxuICAgICAgICB9XG4gICAgICA8L1Jvdz5cbiAgICApXG4gIH1cblxuICBvbkNvbHVtblZpc2liaWxpdHlVcGRhdGVkID0gKCkgPT4gdGhpcy5zZXRTdGF0ZSh7bGFzdFVwZGF0ZTogbmV3IERhdGUoKX0pXG59KSlcblxuZXhwb3J0IGRlZmF1bHQgbWVtbyhzaGFwZUNvbXBvbmVudChjbGFzcyBBcGlNYWtlclRhYmxlIGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgY2FyZDogdHJ1ZSxcbiAgICBjdXJyZW50VXNlcjogbnVsbCxcbiAgICBkZXN0cm95RW5hYmxlZDogdHJ1ZSxcbiAgICBmaWx0ZXJDYXJkOiB0cnVlLFxuICAgIGZpbHRlclN1Ym1pdEJ1dHRvbjogdHJ1ZSxcbiAgICBub1JlY29yZHNBdmFpbGFibGVDb250ZW50OiB1bmRlZmluZWQsXG4gICAgbm9SZWNvcmRzRm91bmRDb250ZW50OiB1bmRlZmluZWQsXG4gICAgcHJlbG9hZHM6IFtdLFxuICAgIHNlbGVjdDoge30sXG4gICAgc3R5bGVVSTogdHJ1ZSxcbiAgICB3b3JrcGxhY2U6IGZhbHNlXG4gIH1cblxuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIGFiaWxpdGllczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBhY3Rpb25zQ29udGVudDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgYXBwSGlzdG9yeTogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBjYXJkOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICAgIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBjb2xsZWN0aW9uOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihDb2xsZWN0aW9uKSxcbiAgICBjb2x1bW5zOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXksIFByb3BUeXBlcy5mdW5jXSksXG4gICAgY29udHJvbHM6IFByb3BUeXBlcy5mdW5jLFxuICAgIGN1cnJlbnRVc2VyOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGRlZmF1bHREYXRlRm9ybWF0TmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBkZWZhdWx0RGF0ZVRpbWVGb3JtYXROYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGRlZmF1bHRQYXJhbXM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgZGVzdHJveUVuYWJsZWQ6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gICAgZGVzdHJveU1lc3NhZ2U6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZWRpdE1vZGVsUGF0aDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgZmlsdGVyQ2FyZDogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgICBmaWx0ZXJDb250ZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgICBmaWx0ZXJTdWJtaXRMYWJlbDogUHJvcFR5cGVzLm5vZGUsXG4gICAgZ3JvdXBCeTogUHJvcFR5cGVzLmFycmF5LFxuICAgIGhlYWRlcjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgICBpZGVudGlmaWVyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIG1vZGVsQ2xhc3M6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgbm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgbm9SZWNvcmRzRm91bmRDb250ZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvbk1vZGVsc0xvYWRlZDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgcGFnaW5hdGVDb250ZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgICBwYWdpbmF0aW9uQ29tcG9uZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgICBwcmVsb2FkczogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gICAgcXVlcnlNZXRob2Q6IFByb3BUeXBlcy5mdW5jLFxuICAgIHF1ZXJ5TmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBzZWxlY3Q6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgc2VsZWN0Q29sdW1uczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBzdHlsZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgc3R5bGVVSTogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgICB2aWV3TW9kZWxQYXRoOiBQcm9wVHlwZXMuZnVuYyxcbiAgICB3b3JrcGxhY2U6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWRcbiAgfVxuXG4gIGRyYWdnYWJsZVNvcnRFdmVudHMgPSBuZXcgRXZlbnRFbWl0dGVyKClcbiAgZXZlbnRzID0gbmV3IEV2ZW50RW1pdHRlcigpXG4gIHRhYmxlU2V0dGluZ3MgPSBudWxsXG5cbiAgc2V0dXAoKSB7XG4gICAgY29uc3Qge3R9ID0gdXNlSTE4bih7bmFtZXNwYWNlOiBcImpzLmFwaV9tYWtlci50YWJsZVwifSlcbiAgICBjb25zdCB7bmFtZTogYnJlYWtwb2ludCwgbWRVcH0gPSB1c2VCcmVha3BvaW50KClcbiAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHVzZVF1ZXJ5UGFyYW1zKClcblxuICAgIHRoaXMuc2V0SW5zdGFuY2Uoe1xuICAgICAgYnJlYWtwb2ludCxcbiAgICAgIGZpbHRlckZvcm1SZWY6IHVzZVJlZigpLFxuICAgICAgbWRVcCxcbiAgICAgIHRcbiAgICB9KVxuXG4gICAgY29uc3QgY29sbGVjdGlvbktleSA9IGRpZ2codGhpcy5wLm1vZGVsQ2xhc3MubW9kZWxDbGFzc0RhdGEoKSwgXCJjb2xsZWN0aW9uS2V5XCIpXG4gICAgbGV0IHF1ZXJ5TmFtZSA9IHRoaXMucHJvcHMucXVlcnlOYW1lXG5cbiAgICBpZiAoIXF1ZXJ5TmFtZSkgcXVlcnlOYW1lID0gY29sbGVjdGlvbktleVxuXG4gICAgY29uc3QgcXVlcnlTTmFtZSA9IGAke3F1ZXJ5TmFtZX1fc2BcblxuICAgIHRoaXMudXNlU3RhdGVzKHtcbiAgICAgIGNvbHVtbnM6ICgpID0+IHRoaXMuY29sdW1uc0FzQXJyYXkoKSxcbiAgICAgIGN1cnJlbnRXb3JrcGxhY2U6IHVuZGVmaW5lZCxcbiAgICAgIGN1cnJlbnRXb3JrcGxhY2VDb3VudDogbnVsbCxcbiAgICAgIGZpbHRlckZvcm06IG51bGwsXG4gICAgICBjb2x1bW5zVG9TaG93OiBudWxsLFxuICAgICAgZHJhZ2dlZENvbHVtbjogbnVsbCxcbiAgICAgIGlkZW50aWZpZXI6ICgpID0+IHRoaXMucHJvcHMuaWRlbnRpZmllciB8fCBgJHtjb2xsZWN0aW9uS2V5fS1kZWZhdWx0YCxcbiAgICAgIGxhc3RVcGRhdGU6ICgpID0+IG5ldyBEYXRlKCksXG4gICAgICBwcmVsb2FkOiB1bmRlZmluZWQsXG4gICAgICBwcmVwYXJlZENvbHVtbnM6IHVuZGVmaW5lZCxcbiAgICAgIHF1ZXJ5TmFtZSxcbiAgICAgIHF1ZXJ5UU5hbWU6ICgpID0+IGAke3F1ZXJ5TmFtZX1fcWAsXG4gICAgICBxdWVyeVBhZ2VOYW1lOiAoKSA9PiBgJHtxdWVyeU5hbWV9X3BhZ2VgLFxuICAgICAgcXVlcnlTTmFtZSxcbiAgICAgIHJlc2l6aW5nOiBmYWxzZSxcbiAgICAgIHNob3dGaWx0ZXJzOiAoKSA9PiBCb29sZWFuKHF1ZXJ5UGFyYW1zW3F1ZXJ5U05hbWVdKSxcbiAgICAgIHNob3dTZXR0aW5nczogZmFsc2UsXG4gICAgICB0YWJsZVNldHRpbmc6IHVuZGVmaW5lZCxcbiAgICAgIHRhYmxlU2V0dGluZ0xvYWRlZDogZmFsc2UsXG4gICAgICB0YWJsZVNldHRpbmdGdWxsQ2FjaGVLZXk6IHVuZGVmaW5lZCxcbiAgICAgIHdpZHRoOiB1bmRlZmluZWQsXG4gICAgICB3aWR0aHM6IG51bGxcbiAgICB9KVxuXG4gICAgdGhpcy50YWJsZUNvbnRleHRWYWx1ZSA9IHVzZU1lbW8oXG4gICAgICAoKSA9PiAoe1xuICAgICAgICBjYWNoZUtleTogdGhpcy5zLnRhYmxlU2V0dGluZ0Z1bGxDYWNoZUtleSxcbiAgICAgICAgbGFzdFVwZGF0ZTogdGhpcy5zLmxhc3RVcGRhdGUsXG4gICAgICAgIHJlc2l6aW5nOiB0aGlzLnMucmVzaXppbmcsXG4gICAgICAgIHRhYmxlOiB0aGlzXG4gICAgICB9KSxcbiAgICAgIFt0aGlzLnMubGFzdFVwZGF0ZSwgdGhpcy5zLnJlc2l6aW5nLCB0aGlzLnMudGFibGVTZXR0aW5nRnVsbENhY2hlS2V5XVxuICAgIClcblxuICAgIHVzZU1lbW8oKCkgPT4ge1xuICAgICAgaWYgKHRoaXMucHJvcHMud29ya3BsYWNlKSB7XG4gICAgICAgIHRoaXMubG9hZEN1cnJlbnRXb3JrcGxhY2UoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmxvYWRDdXJyZW50V29ya3BsYWNlQ291bnQoKVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0sIFt0aGlzLnAuY3VycmVudFVzZXI/LmlkKCldKVxuXG4gICAgdXNlTWVtbygoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMudHQudGFibGVTZXR0aW5ncyAmJiB0aGlzLnMud2lkdGgpIHtcbiAgICAgICAgdGhpcy5sb2FkVGFibGVTZXR0aW5nKClcbiAgICAgIH1cbiAgICB9LCBbdGhpcy5wLmN1cnJlbnRVc2VyPy5pZCgpLCB0aGlzLnMud2lkdGhdKVxuXG4gICAgdXNlTW9kZWxFdmVudCh0aGlzLnMuY3VycmVudFdvcmtwbGFjZSwgXCJ3b3JrcGxhY2VfbGlua3NfY3JlYXRlZFwiLCB0aGlzLnR0Lm9uTGlua3NDcmVhdGVkKVxuICAgIHVzZU1vZGVsRXZlbnQodGhpcy5zLmN1cnJlbnRXb3JrcGxhY2UsIFwid29ya3BsYWNlX2xpbmtzX2Rlc3Ryb3llZFwiLCB0aGlzLnR0Lm9uTGlua3NEZXN0cm95ZWQpXG5cbiAgICBsZXQgY29sbGVjdGlvblJlYWR5ID0gdHJ1ZVxuICAgIGxldCBzZWxlY3RcblxuICAgIGlmICghdGhpcy5zLnByZXBhcmVkQ29sdW1ucykge1xuICAgICAgY29sbGVjdGlvblJlYWR5ID0gZmFsc2VcbiAgICB9XG5cbiAgICBpZiAoY29sbGVjdGlvblJlYWR5KSB7XG4gICAgICBzZWxlY3QgPSBzZWxlY3RDYWxjdWxhdG9yKHt0YWJsZTogdGhpc30pXG4gICAgfVxuXG4gICAgdGhpcy5jb2xsZWN0aW9uID0gdXNlQ29sbGVjdGlvbih7XG4gICAgICBhYmlsaXRpZXM6IHRoaXMuYWJpbGl0aWVzVG9Mb2FkKCksXG4gICAgICBkZWZhdWx0UGFyYW1zOiB0aGlzLnByb3BzLmRlZmF1bHRQYXJhbXMsXG4gICAgICBjb2xsZWN0aW9uOiB0aGlzLnByb3BzLmNvbGxlY3Rpb24sXG4gICAgICBncm91cEJ5OiB0aGlzLnByb3BzLmdyb3VwQnksXG4gICAgICBpZkNvbmRpdGlvbjogY29sbGVjdGlvblJlYWR5LFxuICAgICAgbW9kZWxDbGFzczogdGhpcy5wcm9wcy5tb2RlbENsYXNzLFxuICAgICAgb25Nb2RlbHNMb2FkZWQ6IHRoaXMucHJvcHMub25Nb2RlbHNMb2FkZWQsXG4gICAgICBub1JlY29yZHNBdmFpbGFibGVDb250ZW50OiB0aGlzLnByb3BzLm5vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnQsXG4gICAgICBub1JlY29yZHNGb3VuZENvbnRlbnQ6IHRoaXMucHJvcHMubm9SZWNvcmRzRm91bmRDb250ZW50LFxuICAgICAgcGFnaW5hdGlvbjogdHJ1ZSxcbiAgICAgIHByZWxvYWRzOiB0aGlzLnN0YXRlLnByZWxvYWQsXG4gICAgICBxdWVyeU1ldGhvZDogdGhpcy5wcm9wcy5xdWVyeU1ldGhvZCxcbiAgICAgIHF1ZXJ5TmFtZSxcbiAgICAgIHNlbGVjdCxcbiAgICAgIHNlbGVjdENvbHVtbnM6IHRoaXMucHJvcHMuc2VsZWN0Q29sdW1uc1xuICAgIH0pXG4gICAgdGhpcy5xdWVyeVdpdGhvdXRQYWdpbmF0aW9uID0gdXNlTWVtbyhcbiAgICAgICgpID0+IHRoaXMuY29sbGVjdGlvbj8ucXVlcnk/LmNsb25lKCk/LmV4Y2VwdChcInBhZ2VcIiksXG4gICAgICBbdGhpcy5jb2xsZWN0aW9uLnF1ZXJ5XVxuICAgIClcblxuICAgIHVzZUV2ZW50RW1pdHRlcih0aGlzLnR0LmRyYWdnYWJsZVNvcnRFdmVudHMsIFwib25EcmFnU3RhcnRcIiwgdGhpcy50dC5vbkRyYWdTdGFydClcbiAgICB1c2VFdmVudEVtaXR0ZXIodGhpcy50dC5kcmFnZ2FibGVTb3J0RXZlbnRzLCBcIm9uRHJhZ0VuZEFuaW1hdGlvblwiLCB0aGlzLnR0Lm9uRHJhZ0VuZEFuaW1hdGlvbilcbiAgICB1c2VFdmVudEVtaXR0ZXIodGhpcy50dC5ldmVudHMsIFwiY29sdW1uVmlzaWJpbGl0eVVwZGF0ZWRcIiwgdGhpcy50dC5vbkNvbHVtblZpc2liaWxpdHlVcGRhdGVkKVxuICB9XG5cbiAgb25Db2x1bW5WaXNpYmlsaXR5VXBkYXRlZCA9ICgpID0+IHRoaXMuc2V0U3RhdGUoe2NvbHVtbnNUb1Nob3c6IHRoaXMuZ2V0Q29sdW1uc1RvU2hvdyh0aGlzLnMuY29sdW1ucyksIGxhc3RVcGRhdGU6IG5ldyBEYXRlKCl9KVxuICBvbkRyYWdTdGFydCA9ICh7aXRlbX0pID0+IGl0ZW0uYW5pbWF0ZWRaSW5kZXguc2V0VmFsdWUoOTk5OSlcbiAgb25EcmFnRW5kQW5pbWF0aW9uID0gKHtpdGVtfSkgPT4gaXRlbS5hbmltYXRlZFpJbmRleC5zZXRWYWx1ZSgwKVxuXG4gIGFzeW5jIGxvYWRDdXJyZW50V29ya3BsYWNlKCkge1xuICAgIGNvbnN0IFdvcmtwbGFjZSA9IG1vZGVsQ2xhc3NSZXF1aXJlKFwiV29ya3BsYWNlXCIpXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgV29ya3BsYWNlLmN1cnJlbnQoKVxuICAgIGNvbnN0IGN1cnJlbnRXb3JrcGxhY2UgPSBkaWdnKHJlc3VsdCwgXCJjdXJyZW50XCIsIDApXG5cbiAgICB0aGlzLnNldFN0YXRlKHtjdXJyZW50V29ya3BsYWNlfSlcbiAgfVxuXG4gIGFzeW5jIGxvYWRDdXJyZW50V29ya3BsYWNlQ291bnQoKSB7XG4gICAgY29uc3QgV29ya3BsYWNlTGluayA9IG1vZGVsQ2xhc3NSZXF1aXJlKFwiV29ya3BsYWNlTGlua1wiKVxuICAgIGNvbnN0IGN1cnJlbnRXb3JrcGxhY2VDb3VudCA9IGF3YWl0IFdvcmtwbGFjZUxpbmtcbiAgICAgIC5yYW5zYWNrKHtcbiAgICAgICAgcmVzb3VyY2VfdHlwZV9lcTogdGhpcy5wLm1vZGVsQ2xhc3MubW9kZWxDbGFzc0RhdGEoKS5uYW1lLFxuICAgICAgICB3b3JrcGxhY2VfaWRfZXE6IHRoaXMucy5jdXJyZW50V29ya3BsYWNlLmlkKClcbiAgICAgIH0pXG4gICAgICAuY291bnQoKVxuXG4gICAgdGhpcy5zZXRTdGF0ZSh7Y3VycmVudFdvcmtwbGFjZUNvdW50fSlcbiAgfVxuXG4gIGdldENvbHVtbnNUb1Nob3coY29sdW1ucykge1xuICAgIHJldHVybiBjb2x1bW5zXG4gICAgICAuZmlsdGVyKCh7Y29sdW1uLCB0YWJsZVNldHRpbmdDb2x1bW59KSA9PiBjb2x1bW5WaXNpYmxlKGNvbHVtbiwgdGFibGVTZXR0aW5nQ29sdW1uKSlcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBhLnRhYmxlU2V0dGluZ0NvbHVtbi5wb3NpdGlvbigpIC0gYi50YWJsZVNldHRpbmdDb2x1bW4ucG9zaXRpb24oKSlcbiAgfVxuXG4gIGFzeW5jIGxvYWRUYWJsZVNldHRpbmcoKSB7XG4gICAgdGhpcy50YWJsZVNldHRpbmdzID0gbmV3IFRhYmxlU2V0dGluZ3Moe3RhYmxlOiB0aGlzfSlcblxuICAgIGNvbnN0IHRhYmxlU2V0dGluZyA9IGF3YWl0IHRoaXMudGFibGVTZXR0aW5ncy5sb2FkRXhpc3RpbmdPckNyZWF0ZVRhYmxlU2V0dGluZ3MoKVxuICAgIGNvbnN0IHtjb2x1bW5zLCBwcmVsb2FkfSA9IHRoaXMudGFibGVTZXR0aW5ncy5wcmVwYXJlZENvbHVtbnModGFibGVTZXR0aW5nKVxuICAgIGNvbnN0IHt3aWR0aH0gPSB0aGlzLnNcbiAgICBjb25zdCB3aWR0aHMgPSBuZXcgV2lkdGhzKHtjb2x1bW5zLCB0YWJsZTogdGhpcywgd2lkdGh9KVxuICAgIGNvbnN0IGNvbHVtbnNUb1Nob3cgPSB0aGlzLmdldENvbHVtbnNUb1Nob3coY29sdW1ucylcblxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgY29sdW1ucyxcbiAgICAgIGNvbHVtbnNUb1Nob3csXG4gICAgICBwcmVwYXJlZENvbHVtbnM6IGNvbHVtbnMsXG4gICAgICBwcmVsb2FkOiB0aGlzLm1lcmdlZFByZWxvYWRzKHByZWxvYWQpLFxuICAgICAgdGFibGVTZXR0aW5nLFxuICAgICAgdGFibGVTZXR0aW5nTG9hZGVkOiB0cnVlLFxuICAgICAgdGFibGVTZXR0aW5nRnVsbENhY2hlS2V5OiB0YWJsZVNldHRpbmcuZnVsbENhY2hlS2V5KCksXG4gICAgICB3aWR0aHNcbiAgICB9KVxuICB9XG5cbiAgdXBkYXRlU2V0dGluZ3NGdWxsQ2FjaGVLZXkgPSAoKSA9PiB0aGlzLnNldFN0YXRlKHt0YWJsZVNldHRpbmdGdWxsQ2FjaGVLZXk6IHRoaXMuc3RhdGUudGFibGVTZXR0aW5nLmZ1bGxDYWNoZUtleSgpfSlcblxuICBjb2x1bW5zQXNBcnJheSA9ICgpID0+IHtcbiAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMuY29sdW1ucyA9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLmNvbHVtbnMoKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnByb3BzLmNvbHVtbnNcbiAgfVxuXG4gIG1lcmdlZFByZWxvYWRzKHByZWxvYWQpIHtcbiAgICBjb25zdCB7cHJlbG9hZHN9ID0gdGhpcy5wcm9wc1xuICAgIGxldCBtZXJnZWRQcmVsb2FkcyA9IFtdXG5cbiAgICBpZiAocHJlbG9hZHMpIG1lcmdlZFByZWxvYWRzID0gbWVyZ2VkUHJlbG9hZHMuY29uY2F0KHByZWxvYWRzKVxuICAgIGlmIChwcmVsb2FkKSBtZXJnZWRQcmVsb2FkcyA9IG1lcmdlZFByZWxvYWRzLmNvbmNhdChwcmVsb2FkKVxuXG4gICAgcmV0dXJuIHVuaXF1bml6ZShtZXJnZWRQcmVsb2FkcylcbiAgfVxuXG4gIHJlbmRlciAoKSB7XG4gICAgY29uc3Qge21vZGVsQ2xhc3MsIG5vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnQsIG5vUmVjb3Jkc0ZvdW5kQ29udGVudH0gPSB0aGlzLnBcbiAgICBjb25zdCB7Y29sbGVjdGlvbiwgY3VycmVudFVzZXJ9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IHtxdWVyeU5hbWUsIHF1ZXJ5U05hbWUsIHNob3dGaWx0ZXJzfSA9IHRoaXMuc1xuICAgIGNvbnN0IHtcbiAgICAgIG1vZGVscyxcbiAgICAgIG92ZXJhbGxDb3VudCxcbiAgICAgIHFQYXJhbXMsXG4gICAgICBxdWVyeSxcbiAgICAgIHJlc3VsdCxcbiAgICAgIHNob3dOb1JlY29yZHNBdmFpbGFibGVDb250ZW50LFxuICAgICAgc2hvd05vUmVjb3Jkc0ZvdW5kQ29udGVudFxuICAgIH0gPSBkaWdzKFxuICAgICAgdGhpcy5jb2xsZWN0aW9uLFxuICAgICAgXCJtb2RlbHNcIixcbiAgICAgIFwib3ZlcmFsbENvdW50XCIsXG4gICAgICBcInFQYXJhbXNcIixcbiAgICAgIFwicXVlcnlcIixcbiAgICAgIFwicmVzdWx0XCIsXG4gICAgICBcInNob3dOb1JlY29yZHNBdmFpbGFibGVDb250ZW50XCIsXG4gICAgICBcInNob3dOb1JlY29yZHNGb3VuZENvbnRlbnRcIlxuICAgIClcblxuICAgIGlmIChjb2xsZWN0aW9uICYmIGNvbGxlY3Rpb24uYXJncy5tb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKCkubmFtZSAhPSBtb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKCkubmFtZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgTW9kZWwgY2xhc3MgZnJvbSBjb2xsZWN0aW9uICcke2NvbGxlY3Rpb24uYXJncy5tb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKCkubmFtZX0nIGAgK1xuICAgICAgICBgZGlkbid0IG1hdGNoIG1vZGVsIGNsYXNzIG9uIHRhYmxlOiAnJHttb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKCkubmFtZX0nYFxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8VmlldyBkYXRhU2V0PXt7Y2xhc3M6IHRoaXMuY2xhc3NOYW1lKCl9fSBvbkxheW91dD17dGhpcy50dC5vbkNvbnRhaW5lckxheW91dH0gc3R5bGU9e3RoaXMucHJvcHMuc3R5bGVzPy5jb250YWluZXJ9PlxuICAgICAgICB7c2hvd05vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnQgJiZcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxpdmUtdGFibGUtLW5vLXJlY29yZHMtYXZhaWxhYmxlLWNvbnRlbnRcIj5cbiAgICAgICAgICAgIHtub1JlY29yZHNBdmFpbGFibGVDb250ZW50KHttb2RlbHMsIHFQYXJhbXMsIG92ZXJhbGxDb3VudH0pfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIHtzaG93Tm9SZWNvcmRzRm91bmRDb250ZW50ICYmXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsaXZlLXRhYmxlLS1uby1yZWNvcmRzLWZvdW5kLWNvbnRlbnRcIj5cbiAgICAgICAgICAgIHtub1JlY29yZHNGb3VuZENvbnRlbnQoe21vZGVscywgcVBhcmFtcywgb3ZlcmFsbENvdW50fSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgICAge3Nob3dGaWx0ZXJzICYmXG4gICAgICAgICAgPEZpbHRlcnMgY3VycmVudFVzZXI9e2N1cnJlbnRVc2VyfSBtb2RlbENsYXNzPXttb2RlbENsYXNzfSBxdWVyeU5hbWU9e3F1ZXJ5TmFtZX0gcXVlcnlTTmFtZT17cXVlcnlTTmFtZX0gLz5cbiAgICAgICAgfVxuICAgICAgICB7cVBhcmFtcyAmJiBxdWVyeSAmJiByZXN1bHQgJiYgbW9kZWxzICYmICFzaG93Tm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudCAmJiAhc2hvd05vUmVjb3Jkc0ZvdW5kQ29udGVudCAmJlxuICAgICAgICAgIHRoaXMuY2FyZE9yVGFibGUoKVxuICAgICAgICB9XG4gICAgICA8L1ZpZXc+XG4gICAgKVxuICB9XG5cbiAgYWJpbGl0aWVzVG9Mb2FkICgpIHtcbiAgICBjb25zdCBhYmlsaXRpZXNUb0xvYWQgPSB7fVxuICAgIGNvbnN0IHthYmlsaXRpZXMsIG1vZGVsQ2xhc3N9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IG93bkFiaWxpdGllcyA9IFtdXG5cbiAgICBpZiAodGhpcy5wcm9wcy5kZXN0cm95RW5hYmxlZCkgb3duQWJpbGl0aWVzLnB1c2goXCJkZXN0cm95XCIpXG4gICAgaWYgKHRoaXMucHJvcHMuZWRpdE1vZGVsUGF0aCkgb3duQWJpbGl0aWVzLnB1c2goXCJlZGl0XCIpXG4gICAgaWYgKHRoaXMucHJvcHMudmlld01vZGVsUGF0aCkgb3duQWJpbGl0aWVzLnB1c2goXCJzaG93XCIpXG5cbiAgICBpZiAob3duQWJpbGl0aWVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IG1vZGVsQ2xhc3NOYW1lID0gZGlnZyhtb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKCksIFwibmFtZVwiKVxuXG4gICAgICBhYmlsaXRpZXNUb0xvYWRbbW9kZWxDbGFzc05hbWVdID0gb3duQWJpbGl0aWVzXG4gICAgfVxuXG4gICAgaWYgKGFiaWxpdGllcykge1xuICAgICAgZm9yIChjb25zdCBtb2RlbE5hbWUgaW4gYWJpbGl0aWVzKSB7XG4gICAgICAgIGlmICghKG1vZGVsTmFtZSBpbiBhYmlsaXRpZXNUb0xvYWQpKSB7XG4gICAgICAgICAgYWJpbGl0aWVzVG9Mb2FkW21vZGVsTmFtZV0gPSBbXVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBhYmlsaXR5IG9mIGFiaWxpdGllc1ttb2RlbE5hbWVdKSB7XG4gICAgICAgICAgYWJpbGl0aWVzVG9Mb2FkW21vZGVsTmFtZV0ucHVzaChhYmlsaXR5KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGFiaWxpdGllc1RvTG9hZFxuICB9XG5cbiAgY2FyZE9yVGFibGUgKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIGFiaWxpdGllcyxcbiAgICAgIGFjdGlvbnNDb250ZW50LFxuICAgICAgYXBwSGlzdG9yeSxcbiAgICAgIGNhcmQsXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBjb2xsZWN0aW9uLFxuICAgICAgY29sdW1ucyxcbiAgICAgIGNvbnRyb2xzLFxuICAgICAgY3VycmVudFVzZXIsXG4gICAgICBkZWZhdWx0RGF0ZUZvcm1hdE5hbWUsXG4gICAgICBkZWZhdWx0RGF0ZVRpbWVGb3JtYXROYW1lLFxuICAgICAgZGVmYXVsdFBhcmFtcyxcbiAgICAgIGRlc3Ryb3lFbmFibGVkLFxuICAgICAgZGVzdHJveU1lc3NhZ2UsXG4gICAgICBlZGl0TW9kZWxQYXRoLFxuICAgICAgZmlsdGVyQ2FyZCxcbiAgICAgIGZpbHRlckNvbnRlbnQsXG4gICAgICBmaWx0ZXJTdWJtaXRCdXR0b24sXG4gICAgICBmaWx0ZXJTdWJtaXRMYWJlbCxcbiAgICAgIGdyb3VwQnksXG4gICAgICBoZWFkZXIsXG4gICAgICBpZGVudGlmaWVyLFxuICAgICAgbW9kZWxDbGFzcyxcbiAgICAgIG5vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnQsXG4gICAgICBub1JlY29yZHNGb3VuZENvbnRlbnQsXG4gICAgICBvbk1vZGVsc0xvYWRlZCxcbiAgICAgIHBhZ2luYXRlQ29udGVudCxcbiAgICAgIHBhZ2luYXRpb25Db21wb25lbnQsXG4gICAgICBwcmVsb2FkcyxcbiAgICAgIHF1ZXJ5TWV0aG9kLFxuICAgICAgcXVlcnlOYW1lLFxuICAgICAgc2VsZWN0LFxuICAgICAgc2VsZWN0Q29sdW1ucyxcbiAgICAgIHN0eWxlVUksXG4gICAgICB2aWV3TW9kZWxQYXRoLFxuICAgICAgd29ya3BsYWNlLFxuICAgICAgLi4ucmVzdFByb3BzXG4gICAgfSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCB7bW9kZWxzLCBxUGFyYW1zLCBxdWVyeSwgcmVzdWx0fSA9IGRpZ3ModGhpcy5jb2xsZWN0aW9uLCBcIm1vZGVsc1wiLCBcInFQYXJhbXNcIiwgXCJxdWVyeVwiLCBcInJlc3VsdFwiKVxuXG4gICAgbGV0IGhlYWRlckNvbnRlbnQsIFBhZ2luYXRpb25Db21wb25lbnRcblxuICAgIGlmICh0eXBlb2YgaGVhZGVyID09IFwiZnVuY3Rpb25cIikge1xuICAgICAgaGVhZGVyQ29udGVudCA9IGhlYWRlcih7bW9kZWxzLCBxUGFyYW1zLCBxdWVyeSwgcmVzdWx0fSlcbiAgICB9IGVsc2UgaWYgKGhlYWRlcikge1xuICAgICAgaGVhZGVyQ29udGVudCA9IGhlYWRlclxuICAgIH0gZWxzZSB7XG4gICAgICBoZWFkZXJDb250ZW50ID0gbW9kZWxDbGFzcy5tb2RlbE5hbWUoKS5odW1hbih7Y291bnQ6IDJ9KVxuICAgIH1cblxuICAgIGlmICghcGFnaW5hdGVDb250ZW50KSB7XG4gICAgICBpZiAocGFnaW5hdGlvbkNvbXBvbmVudCkge1xuICAgICAgICBQYWdpbmF0aW9uQ29tcG9uZW50ID0gcGFnaW5hdGlvbkNvbXBvbmVudFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgUGFnaW5hdGlvbkNvbXBvbmVudCA9IFBhZ2luYXRlXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZmxhdExpc3RTdHlsZSA9IHtcbiAgICAgIG92ZXJmbG93WDogXCJhdXRvXCJcbiAgICB9XG5cbiAgICBpZiAoc3R5bGVVSSkge1xuICAgICAgZmxhdExpc3RTdHlsZS5ib3JkZXIgPSBcIjFweCBzb2xpZCAjZGJkYmRiXCJcbiAgICAgIGZsYXRMaXN0U3R5bGUuYm9yZGVyUmFkaXVzID0gNVxuICAgIH1cblxuICAgIGNvbnN0IGZsYXRMaXN0ID0gKFxuICAgICAgPFRhYmxlQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17dGhpcy50dC50YWJsZUNvbnRleHRWYWx1ZX0+XG4gICAgICAgIDxGbGF0TGlzdFxuICAgICAgICAgIGRhdGE9e21vZGVsc31cbiAgICAgICAgICBkYXRhU2V0PXt7XG4gICAgICAgICAgICBjbGFzczogY2xhc3NOYW1lcyhcImFwaS1tYWtlci0tdGFibGVcIiwgY2xhc3NOYW1lKSxcbiAgICAgICAgICAgIGNhY2hlS2V5OiB0aGlzLnMudGFibGVTZXR0aW5nRnVsbENhY2hlS2V5LFxuICAgICAgICAgICAgbGFzdFVwZGF0ZTogdGhpcy5zLmxhc3RVcGRhdGVcbiAgICAgICAgICB9fVxuICAgICAgICAgIGV4dHJhRGF0YT17dGhpcy5zLmxhc3RVcGRhdGV9XG4gICAgICAgICAga2V5RXh0cmFjdG9yPXt0aGlzLnR0LmtleUV4dHJhdG9yfVxuICAgICAgICAgIExpc3RIZWFkZXJDb21wb25lbnQ9e0xpc3RIZWFkZXJDb21wb25lbnR9XG4gICAgICAgICAgcmVuZGVySXRlbT17dGhpcy50dC5yZW5kZXJJdGVtfVxuICAgICAgICAgIHNob3dzSG9yaXpvbnRhbFNjcm9sbEluZGljYXRvclxuICAgICAgICAgIHN0eWxlPXtmbGF0TGlzdFN0eWxlfVxuICAgICAgICAgIHsuLi5yZXN0UHJvcHN9XG4gICAgICAgIC8+XG4gICAgICA8L1RhYmxlQ29udGV4dC5Qcm92aWRlcj5cbiAgICApXG5cbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAge2ZpbHRlckNvbnRlbnQgJiYgZmlsdGVyQ2FyZCAmJlxuICAgICAgICAgIDxDYXJkIGNsYXNzTmFtZT1cImxpdmUtdGFibGUtLWZpbHRlci1jYXJkIG1iLTRcIj5cbiAgICAgICAgICAgIHt0aGlzLmZpbHRlckZvcm0oKX1cbiAgICAgICAgICA8L0NhcmQ+XG4gICAgICAgIH1cbiAgICAgICAge2ZpbHRlckNvbnRlbnQgJiYgIWZpbHRlckNhcmQgJiZcbiAgICAgICAgICB0aGlzLmZpbHRlckZvcm0oKVxuICAgICAgICB9XG4gICAgICAgIHtjYXJkICYmXG4gICAgICAgICAgPENhcmRcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhcImxpdmUtdGFibGUtLXRhYmxlLWNhcmRcIiwgXCJtYi00XCIsIGNsYXNzTmFtZSl9XG4gICAgICAgICAgICBjb250cm9scz17dGhpcy50YWJsZUNvbnRyb2xzKCl9XG4gICAgICAgICAgICBoZWFkZXI9e2hlYWRlckNvbnRlbnR9XG4gICAgICAgICAgICBmb290ZXI9e3RoaXMudGFibGVGb290ZXIoKX1cbiAgICAgICAgICAgIHsuLi5yZXN0UHJvcHN9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2ZsYXRMaXN0fVxuICAgICAgICAgIDwvQ2FyZD5cbiAgICAgICAgfVxuICAgICAgICB7IWNhcmQgJiYgZmxhdExpc3R9XG4gICAgICAgIHtyZXN1bHQgJiYgUGFnaW5hdGlvbkNvbXBvbmVudCAmJlxuICAgICAgICAgIDxQYWdpbmF0aW9uQ29tcG9uZW50IHJlc3VsdD17cmVzdWx0fSAvPlxuICAgICAgICB9XG4gICAgICAgIHtyZXN1bHQgJiYgcGFnaW5hdGVDb250ZW50ICYmXG4gICAgICAgICAgcGFnaW5hdGVDb250ZW50KHtyZXN1bHR9KVxuICAgICAgICB9XG4gICAgICA8Lz5cbiAgICApXG4gIH1cblxuICBvbkNvbnRhaW5lckxheW91dCA9IChlKSA9PiB7XG4gICAgY29uc3Qge3dpZHRofSA9IGUubmF0aXZlRXZlbnQubGF5b3V0XG4gICAgY29uc3Qge3dpZHRoc30gPSB0aGlzLnNcblxuICAgIHRoaXMuc2V0U3RhdGUoe3dpZHRofSlcbiAgICBpZiAod2lkdGhzKSB3aWR0aHMudGFibGVXaWR0aCA9IHdpZHRoXG4gIH1cblxuICBvbkxpbmtzQ3JlYXRlZCA9ICh7YXJnc30pID0+IHtcbiAgICBjb25zdCBtb2RlbENsYXNzTmFtZSA9IHRoaXMucC5tb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKCkubmFtZVxuXG4gICAgaWYgKGFyZ3MuY3JlYXRlZFttb2RlbENsYXNzTmFtZV0pIHtcbiAgICAgIGNvbnN0IGFtb3VudENyZWF0ZWQgPSBhcmdzLmNyZWF0ZWRbbW9kZWxDbGFzc05hbWVdLmxlbmd0aFxuXG4gICAgICB0aGlzLnNldFN0YXRlKChwcmV2U3RhdGUpID0+ICh7XG4gICAgICAgIGN1cnJlbnRXb3JrcGxhY2VDb3VudDogcHJldlN0YXRlLmN1cnJlbnRXb3JrcGxhY2VDb3VudCArIGFtb3VudENyZWF0ZWRcbiAgICAgIH0pKVxuICAgIH1cbiAgfVxuXG4gIG9uTGlua3NEZXN0cm95ZWQgPSAoe2FyZ3N9KSA9PiB7XG4gICAgY29uc3QgbW9kZWxDbGFzc05hbWUgPSB0aGlzLnAubW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLm5hbWVcblxuICAgIGlmIChhcmdzLmRlc3Ryb3llZFttb2RlbENsYXNzTmFtZV0pIHtcbiAgICAgIGNvbnN0IGFtb3VudERlc3Ryb3llZCA9IGFyZ3MuZGVzdHJveWVkW21vZGVsQ2xhc3NOYW1lXS5sZW5ndGhcblxuICAgICAgdGhpcy5zZXRTdGF0ZSgocHJldlN0YXRlKSA9PiAoe1xuICAgICAgICBjdXJyZW50V29ya3BsYWNlQ291bnQ6IHByZXZTdGF0ZS5jdXJyZW50V29ya3BsYWNlQ291bnQgLSBhbW91bnREZXN0cm95ZWRcbiAgICAgIH0pKVxuICAgIH1cbiAgfVxuXG4gIGtleUV4dHJhdG9yID0gKG1vZGVsKSA9PiBgJHt0aGlzLnMudGFibGVTZXR0aW5nRnVsbENhY2hlS2V5fS0ke21vZGVsLmlkKCl9YFxuXG4gIGZpbHRlckZvcm0gPSAoKSA9PiB7XG4gICAgY29uc3Qge2ZpbHRlckZvcm1SZWYsIHN1Ym1pdEZpbHRlciwgc3VibWl0RmlsdGVyRGVib3VuY2V9ID0gdGhpcy50dFxuICAgIGNvbnN0IHtmaWx0ZXJDb250ZW50LCBmaWx0ZXJTdWJtaXRCdXR0b259ID0gdGhpcy5wXG4gICAgY29uc3Qge3F1ZXJ5UU5hbWV9ID0gdGhpcy5zXG4gICAgY29uc3Qge2ZpbHRlclN1Ym1pdExhYmVsfSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCB7cVBhcmFtc30gPSBkaWdzKHRoaXMuY29sbGVjdGlvbiwgXCJxUGFyYW1zXCIpXG5cbiAgICByZXR1cm4gKFxuICAgICAgPEZvcm0gY2xhc3NOYW1lPVwibGl2ZS10YWJsZS0tZmlsdGVyLWZvcm1cIiBmb3JtUmVmPXtmaWx0ZXJGb3JtUmVmfSBvblN1Ym1pdD17dGhpcy50dC5vbkZpbHRlckZvcm1TdWJtaXR9IHNldEZvcm09e3RoaXMuc2V0U3RhdGVzLmZpbHRlckZvcm19PlxuICAgICAgICB7XCJzXCIgaW4gcVBhcmFtcyAmJlxuICAgICAgICAgIDxpbnB1dCBuYW1lPVwic1wiIHR5cGU9XCJoaWRkZW5cIiB2YWx1ZT17cVBhcmFtcy5zfSAvPlxuICAgICAgICB9XG4gICAgICAgIHtmaWx0ZXJDb250ZW50KHtcbiAgICAgICAgICBvbkZpbHRlckNoYW5nZWQ6IHN1Ym1pdEZpbHRlcixcbiAgICAgICAgICBvbkZpbHRlckNoYW5nZWRXaXRoRGVsYXk6IHN1Ym1pdEZpbHRlckRlYm91bmNlLFxuICAgICAgICAgIHFQYXJhbXMsXG4gICAgICAgICAgcXVlcnlRTmFtZVxuICAgICAgICB9KX1cbiAgICAgICAge2ZpbHRlclN1Ym1pdEJ1dHRvbiAmJlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiYnRuIGJ0bi1wcmltYXJ5IGxpdmUtdGFibGUtLXN1Ym1pdC1maWx0ZXItYnV0dG9uXCJcbiAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgc3R5bGU9e3ttYXJnaW5Ub3A6IFwiOHB4XCJ9fVxuICAgICAgICAgICAgdmFsdWU9e2ZpbHRlclN1Ym1pdExhYmVsIHx8IHRoaXMudChcIi5maWx0ZXJcIiwge2RlZmF1bHRWYWx1ZTogXCJGaWx0ZXJcIn0pfVxuICAgICAgICAgIC8+XG4gICAgICAgIH1cbiAgICAgIDwvRm9ybT5cbiAgICApXG4gIH1cblxuICBvbkZpbHRlckNsaWNrZWQgPSAoZSkgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIHRoaXMuc2V0U3RhdGUoe3Nob3dGaWx0ZXJzOiAhdGhpcy5zdGF0ZS5zaG93RmlsdGVyc30pXG4gIH1cblxuICBvblBlclBhZ2VDaGFuZ2VkID0gKGUpID0+IHtcbiAgICBjb25zdCB7cXVlcnlOYW1lfSA9IHRoaXMuc1xuICAgIGNvbnN0IG5ld1BlclBhZ2VWYWx1ZSA9IGRpZ2coZSwgXCJ0YXJnZXRcIiwgXCJ2YWx1ZVwiKVxuICAgIGNvbnN0IHBlcktleSA9IGAke3F1ZXJ5TmFtZX1fcGVyYFxuICAgIGNvbnN0IHBhcmFtc0NoYW5nZSA9IHt9XG5cbiAgICBwYXJhbXNDaGFuZ2VbcGVyS2V5XSA9IG5ld1BlclBhZ2VWYWx1ZVxuXG4gICAgUGFyYW1zLmNoYW5nZVBhcmFtcyhwYXJhbXNDaGFuZ2UpXG4gIH1cblxuICByZW5kZXJJdGVtID0gKHtpbmRleCwgaXRlbTogbW9kZWx9KSA9PiB7XG4gICAgaWYgKCF0aGlzLnMudGFibGVTZXR0aW5nTG9hZGVkKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8Vmlldz5cbiAgICAgICAgICA8VGV4dD5cbiAgICAgICAgICAgIHt0aGlzLnQoXCIubG9hZGluZ19kb3RfZG90X2RvdFwiLCB7ZGVmYXVsdFZhbHVlOiBcIkxvYWRpbmcuLi5cIn0pfVxuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgPC9WaWV3PlxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8TW9kZWxSb3dcbiAgICAgICAgY2FjaGVLZXk9e21vZGVsLmNhY2hlS2V5KCl9XG4gICAgICAgIGNvbHVtbnM9e3RoaXMucy5jb2x1bW5zVG9TaG93fVxuICAgICAgICBjb2x1bW5XaWR0aHM9e3RoaXMuY29sdW1uV2lkdGhzKCl9XG4gICAgICAgIGV2ZW50cz17dGhpcy50dC5ldmVudHN9XG4gICAgICAgIGluZGV4PXtpbmRleH1cbiAgICAgICAga2V5PXttb2RlbC5pZCgpfVxuICAgICAgICBtb2RlbD17bW9kZWx9XG4gICAgICAgIHRhYmxlPXt0aGlzfVxuICAgICAgICB0YWJsZVNldHRpbmdGdWxsQ2FjaGVLZXk9e3RoaXMucy50YWJsZVNldHRpbmdGdWxsQ2FjaGVLZXl9XG4gICAgICAvPlxuICAgIClcbiAgfVxuXG4gIHN0eWxlRm9yQ29sdW1uID0gKHtjb2x1bW4sIGNvbHVtbkluZGV4LCBldmVuLCBzdHlsZSwgdHlwZX0pID0+IHtcbiAgICBjb25zdCB7c3R5bGVVSX0gPSB0aGlzLnBcbiAgICBjb25zdCBkZWZhdWx0U3R5bGUgPSB7XG4gICAgICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcbiAgICAgIHBhZGRpbmc6IDgsXG4gICAgICBvdmVyZmxvdzogXCJoaWRkZW5cIlxuICAgIH1cblxuICAgIGlmIChzdHlsZVVJKSB7XG4gICAgICBPYmplY3QuYXNzaWduKGRlZmF1bHRTdHlsZSwge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGV2ZW4gPyBcIiNmNWY1ZjVcIiA6IFwiI2ZmZlwiXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmICh0eXBlID09IFwiYWN0aW9uc1wiKSB7XG4gICAgICBkZWZhdWx0U3R5bGUuZmxleERpcmVjdGlvbiA9IFwicm93XCJcbiAgICAgIGRlZmF1bHRTdHlsZS5hbGlnbkl0ZW1zID0gXCJjZW50ZXJcIlxuXG4gICAgICBpZiAodGhpcy50dC5tZFVwKSB7XG4gICAgICAgIGRlZmF1bHRTdHlsZS5tYXJnaW5MZWZ0ID0gXCJhdXRvXCJcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlZmF1bHRTdHlsZS5tYXJnaW5SaWdodCA9IFwiYXV0b1wiXG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLnR0Lm1kVXAgJiYgc3R5bGVVSSkge1xuICAgICAgZGVmYXVsdFN0eWxlLmJvcmRlclJpZ2h0ID0gXCIxcHggc29saWQgI2RiZGJkYlwiXG4gICAgfVxuXG4gICAgY29uc3QgYWN0dWFsU3R5bGUgPSBPYmplY3QuYXNzaWduKFxuICAgICAgZGVmYXVsdFN0eWxlLFxuICAgICAgc3R5bGVcbiAgICApXG5cbiAgICByZXR1cm4gYWN0dWFsU3R5bGVcbiAgfVxuXG4gIHN0eWxlRm9ySGVhZGVyID0gKHtjb2x1bW4sIGNvbHVtbkluZGV4LCBzdHlsZSwgdHlwZX0pID0+IHtcbiAgICBjb25zdCB7bWRVcH0gPSB0aGlzLnR0XG4gICAgY29uc3QgZGVmYXVsdFN0eWxlID0ge1xuICAgICAgZmxleERpcmVjdGlvbjogXCJyb3dcIixcbiAgICAgIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gICAgICBwYWRkaW5nOiA4XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgIT0gXCJhY3Rpb25zXCIgJiYgbWRVcCAmJiB0aGlzLnAuc3R5bGVVSSkge1xuICAgICAgZGVmYXVsdFN0eWxlLmJvcmRlclJpZ2h0ID0gXCIxcHggc29saWQgI2RiZGJkYlwiXG4gICAgfVxuXG4gICAgY29uc3QgYWN0dWFsU3R5bGUgPSBPYmplY3QuYXNzaWduKFxuICAgICAgZGVmYXVsdFN0eWxlLFxuICAgICAgc3R5bGVcbiAgICApXG5cbiAgICByZXR1cm4gYWN0dWFsU3R5bGVcbiAgfVxuXG4gIHN0eWxlRm9ySGVhZGVyVGV4dCgpIHtcbiAgICBjb25zdCBhY3R1YWxTdHlsZSA9IHtmb250V2VpZ2h0OiBcImJvbGRcIn1cblxuICAgIHJldHVybiBhY3R1YWxTdHlsZVxuICB9XG5cbiAgc3R5bGVGb3JSb3cgPSAoe2V2ZW59ID0ge30pID0+IHtcbiAgICBjb25zdCBhY3R1YWxTdHlsZSA9IHtcbiAgICAgIGZsZXg6IDEsXG4gICAgICBhbGlnbkl0ZW1zOiBcInN0cmV0Y2hcIlxuICAgIH1cblxuICAgIGlmIChldmVuICYmIHRoaXMucC5zdHlsZVVJKSB7XG4gICAgICBhY3R1YWxTdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBcIiNmNWY1ZjVcIlxuICAgIH1cblxuICAgIHJldHVybiBhY3R1YWxTdHlsZVxuICB9XG5cbiAgc3R5bGVGb3JSb3dIZWFkZXIgPSAoKSA9PiB7XG4gICAgY29uc3QgYWN0dWFsU3R5bGUgPSB7XG4gICAgICBmbGV4OiAxLFxuICAgICAgYWxpZ25JdGVtczogXCJzdHJldGNoXCJcbiAgICB9XG5cbiAgICByZXR1cm4gYWN0dWFsU3R5bGVcbiAgfVxuXG4gIHRhYmxlQ29udHJvbHMoKSB7XG4gICAgY29uc3Qge2NvbnRyb2xzfSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCB7c2hvd1NldHRpbmdzfSA9IHRoaXMuc1xuICAgIGNvbnN0IHttb2RlbHMsIHFQYXJhbXMsIHF1ZXJ5LCByZXN1bHR9ID0gZGlncyh0aGlzLmNvbGxlY3Rpb24sIFwibW9kZWxzXCIsIFwicVBhcmFtc1wiLCBcInF1ZXJ5XCIsIFwicmVzdWx0XCIpXG5cbiAgICByZXR1cm4gKFxuICAgICAgPFZpZXcgc3R5bGU9e3RoaXMucm9vdFZpZXdTdHlsZSB8fD0ge2ZsZXhEaXJlY3Rpb246IFwicm93XCJ9fT5cbiAgICAgICAge2NvbnRyb2xzICYmIGNvbnRyb2xzKHttb2RlbHMsIHFQYXJhbXMsIHF1ZXJ5LCByZXN1bHR9KX1cbiAgICAgICAgPFByZXNzYWJsZSBkYXRhU2V0PXt7Y2xhc3M6IFwiZmlsdGVyLWJ1dHRvblwifX0gb25QcmVzcz17dGhpcy50dC5vbkZpbHRlckNsaWNrZWR9PlxuICAgICAgICAgIDxJY29uIG5hbWU9XCJzZWFyY2hcIiBzaXplPXsyMH0gLz5cbiAgICAgICAgPC9QcmVzc2FibGU+XG4gICAgICAgIDxWaWV3PlxuICAgICAgICAgIHtzaG93U2V0dGluZ3MgJiZcbiAgICAgICAgICAgIDxTZXR0aW5ncyBvblJlcXVlc3RDbG9zZT17dGhpcy50dC5vblJlcXVlc3RDbG9zZVNldHRpbmdzfSB0YWJsZT17dGhpc30gLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgPFByZXNzYWJsZSBkYXRhU2V0PXt0aGlzLnNldHRpbmdzQnV0dG9uRGF0YVNldCB8fD0ge2NsYXNzOiBcInNldHRpbmdzLWJ1dHRvblwifX0gb25QcmVzcz17dGhpcy50dC5vblNldHRpbmdzQ2xpY2tlZH0+XG4gICAgICAgICAgICA8SWNvbiBuYW1lPVwiZ2VhclwiIHNpemU9ezIwfSAvPlxuICAgICAgICAgIDwvUHJlc3NhYmxlPlxuICAgICAgICA8L1ZpZXc+XG4gICAgICA8L1ZpZXc+XG4gICAgKVxuICB9XG5cbiAgdGFibGVGb290ZXIoKSB7XG4gICAgY29uc3Qge3Jlc3VsdH0gPSBkaWdzKHRoaXMuY29sbGVjdGlvbiwgXCJyZXN1bHRcIilcbiAgICBjb25zdCBjdXJyZW50UGFnZSA9IHJlc3VsdC5jdXJyZW50UGFnZSgpXG4gICAgY29uc3QgdG90YWxDb3VudCA9IHJlc3VsdC50b3RhbENvdW50KClcbiAgICBjb25zdCBwZXJQYWdlID0gcmVzdWx0LnBlclBhZ2UoKVxuICAgIGNvbnN0IHRvID0gTWF0aC5taW4oY3VycmVudFBhZ2UgKiBwZXJQYWdlLCB0b3RhbENvdW50KVxuICAgIGNvbnN0IGRlZmF1bHRWYWx1ZSA9IFwiU2hvd2luZyAle2Zyb219IHRvICV7dG99IG91dCBvZiAle3RvdGFsX2NvdW50fSB0b3RhbC5cIlxuICAgIGxldCBmcm9tID0gKChjdXJyZW50UGFnZSAtIDEpICogcGVyUGFnZSkgKyAxXG5cbiAgICBpZiAodG8gPT09IDApIGZyb20gPSAwXG5cbiAgICByZXR1cm4gKFxuICAgICAgPFZpZXcgc3R5bGU9e3RoaXMucm9vdFZpZXdTdHlsZSB8fD0ge2ZsZXhEaXJlY3Rpb246IFwicm93XCIsIGp1c3RpZnlDb250ZW50OiBcInNwYWNlLWJldHdlZW5cIiwgbWFyZ2luVG9wOiAxMH19PlxuICAgICAgICA8VmlldyBkYXRhU2V0PXt0aGlzLnNob3dpbmdDb3VudHNEYXRhU2V0IHx8PSB7Y2xhc3M6IFwic2hvd2luZy1jb3VudHNcIn19IHN0eWxlPXt0aGlzLnNob3dpbmdDb3VudHNTdHlsZSB8fD0ge2ZsZXhEaXJlY3Rpb246IFwicm93XCJ9fT5cbiAgICAgICAgICA8VGV4dD5cbiAgICAgICAgICAgIHt0aGlzLnQoXCIuc2hvd2luZ19mcm9tX3RvX291dF9vZl90b3RhbFwiLCB7ZGVmYXVsdFZhbHVlLCBmcm9tLCB0bywgdG90YWxfY291bnQ6IHRvdGFsQ291bnR9KX1cbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAge3RoaXMucC53b3JrcGxhY2UgJiYgdGhpcy5zLmN1cnJlbnRXb3JrcGxhY2VDb3VudCAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgPFRleHQgc3R5bGU9e3RoaXMueFNlbGVjdGVkVGV4dFN0eWxlIHx8PSB7bWFyZ2luTGVmdDogM319PlxuICAgICAgICAgICAgICB7dGhpcy50KFwiLnhfc2VsZWN0ZWRcIiwge2RlZmF1bHRWYWx1ZTogXCIle3NlbGVjdGVkfSBzZWxlY3RlZC5cIiwgc2VsZWN0ZWQ6IHRoaXMucy5jdXJyZW50V29ya3BsYWNlQ291bnR9KX1cbiAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICB9XG4gICAgICAgIDwvVmlldz5cbiAgICAgICAgPFZpZXc+XG4gICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgY2xhc3NOYW1lPVwicGVyLXBhZ2Utc2VsZWN0XCJcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZT17cGVyUGFnZX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLnR0Lm9uUGVyUGFnZUNoYW5nZWR9XG4gICAgICAgICAgICBvcHRpb25zPXtwYWdpbmF0aW9uT3B0aW9uc31cbiAgICAgICAgICAvPlxuICAgICAgICA8L1ZpZXc+XG4gICAgICA8L1ZpZXc+XG4gICAgKVxuICB9XG5cbiAgY2xhc3NOYW1lKCkge1xuICAgIGNvbnN0IGNsYXNzTmFtZXMgPSBbXCJhcGktbWFrZXItLXRhYmxlXCJdXG5cbiAgICBpZiAodGhpcy5wcm9wcy5jbGFzc05hbWUpIHtcbiAgICAgIGNsYXNzTmFtZXMucHVzaCh0aGlzLnByb3BzLmNsYXNzTmFtZSlcbiAgICB9XG5cbiAgICByZXR1cm4gY2xhc3NOYW1lcy5qb2luKFwiIFwiKVxuICB9XG5cbiAgY29sdW1uUHJvcHMoY29sdW1uKSB7XG4gICAgY29uc3QgcHJvcHMgPSB7fVxuXG4gICAgaWYgKGNvbHVtbi50ZXh0Q2VudGVyKSB7XG4gICAgICBwcm9wcy5zdHlsZSB8fD0ge31cbiAgICAgIHByb3BzLnN0eWxlLnRleHRBbGlnbiA9IFwiY2VudGVyXCJcbiAgICB9XG5cbiAgICBpZiAoY29sdW1uLnRleHRSaWdodCkge1xuICAgICAgcHJvcHMuc3R5bGUgfHw9IHt9XG4gICAgICBwcm9wcy5zdHlsZS50ZXh0QWxpZ24gPSBcInJpZ2h0XCJcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvcHNcbiAgfVxuXG4gIGhlYWRlclByb3BzKGNvbHVtbikge1xuICAgIGNvbnN0IHByb3BzID0ge31cblxuICAgIGlmIChjb2x1bW4udGV4dENlbnRlcikge1xuICAgICAgcHJvcHMuc3R5bGUgfHw9IHt9XG4gICAgICBwcm9wcy5zdHlsZS5qdXN0aWZ5Q29udGVudCA9IFwiY2VudGVyXCJcbiAgICB9XG5cbiAgICBpZiAoY29sdW1uLnRleHRSaWdodCkge1xuICAgICAgcHJvcHMuc3R5bGUgfHw9IHt9XG4gICAgICBwcm9wcy5zdHlsZS5qdXN0aWZ5Q29udGVudCA9IFwiZW5kXCJcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvcHNcbiAgfVxuXG4gIGNvbHVtbldpZHRocygpIHtcbiAgICBjb25zdCBjb2x1bW5XaWR0aHMgPSB7fVxuXG4gICAgZm9yIChjb25zdCBjb2x1bW4gb2YgdGhpcy5zLnByZXBhcmVkQ29sdW1ucykge1xuICAgICAgY29sdW1uV2lkdGhzW2NvbHVtbi50YWJsZVNldHRpbmdDb2x1bW4uaWRlbnRpZmllcigpXSA9IGNvbHVtbi53aWR0aFxuICAgIH1cblxuICAgIHJldHVybiBjb2x1bW5XaWR0aHNcbiAgfVxuXG4gIGhlYWRlcnNDb250ZW50RnJvbUNvbHVtbnMgPSAoKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxEcmFnZ2FibGVTb3J0XG4gICAgICAgIGRhdGE9e3RoaXMucy5jb2x1bW5zVG9TaG93fVxuICAgICAgICBldmVudHM9e3RoaXMudHQuZHJhZ2dhYmxlU29ydEV2ZW50c31cbiAgICAgICAgaG9yaXpvbnRhbFxuICAgICAgICBrZXlFeHRyYWN0b3I9e3RoaXMudHQuZHJhZ0xpc3RrZXlFeHRyYWN0b3J9XG4gICAgICAgIG9uSXRlbU1vdmVkPXt0aGlzLnR0Lm9uSXRlbU1vdmVkfVxuICAgICAgICBvblJlb3JkZXJlZD17dGhpcy50dC5vblJlb3JkZXJlZH1cbiAgICAgICAgcmVuZGVySXRlbT17dGhpcy50dC5kcmFnTGlzdFJlbmRlckl0ZW1Db250ZW50fVxuICAgICAgLz5cbiAgICApXG4gIH1cblxuICBkcmFnTGlzdENhY2hlS2V5RXh0cmFjdG9yID0gKGl0ZW0pID0+IGAke2l0ZW0udGFibGVTZXR0aW5nQ29sdW1uLmlkZW50aWZpZXIoKX0tJHt0aGlzLnMucmVzaXppbmd9YFxuICBkcmFnTGlzdGtleUV4dHJhY3RvciA9IChpdGVtKSA9PiBpdGVtLnRhYmxlU2V0dGluZ0NvbHVtbi5pZGVudGlmaWVyKClcblxuICBvbkl0ZW1Nb3ZlZCA9ICh7YW5pbWF0aW9uQXJncywgaXRlbUluZGV4LCB4LCB5fSkgPT4ge1xuICAgIGNvbnN0IGFuaW1hdGVkUG9zaXRpb24gPSBkaWdnKHRoaXMsIFwic1wiLCBcImNvbHVtbnNUb1Nob3dcIiwgaXRlbUluZGV4LCBcImFuaW1hdGVkUG9zaXRpb25cIilcblxuICAgIGlmIChhbmltYXRpb25BcmdzKSB7XG4gICAgICBBbmltYXRlZC50aW1pbmcoYW5pbWF0ZWRQb3NpdGlvbiwgYW5pbWF0aW9uQXJncykuc3RhcnQoKVxuICAgIH0gZWxzZSB7XG4gICAgICBhbmltYXRlZFBvc2l0aW9uLnNldFZhbHVlKHt4LCB5fSlcbiAgICB9XG4gIH1cblxuICBvblJlb3JkZXJlZCA9IGFzeW5jICh7ZnJvbUl0ZW0sIGZyb21Qb3NpdGlvbiwgdG9JdGVtLCB0b1Bvc2l0aW9ufSkgPT4ge1xuICAgIGlmIChmcm9tUG9zaXRpb24gPT0gdG9Qb3NpdGlvbikgcmV0dXJuIC8vIE9ubHkgZG8gcmVxdWVzdHMgYW5kIHF1ZXJpZXMgaWYgY2hhbmdlZFxuXG4gICAgY29uc3QgVGFibGVTZXR0aW5nQ29sdW1uID0gZnJvbUl0ZW0udGFibGVTZXR0aW5nQ29sdW1uLmNvbnN0cnVjdG9yXG4gICAgY29uc3QgdG9Db2x1bW4gPSBhd2FpdCBUYWJsZVNldHRpbmdDb2x1bW4uZmluZCh0b0l0ZW0udGFibGVTZXR0aW5nQ29sdW1uLmlkKCkpIC8vIE5lZWQgdG8gbG9hZCBsYXRlc3QgcG9zaXRpb24gYmVjYXVzZSBBY3RzQXNMaXN0IG1pZ2h0IGhhdmUgY2hhbmdlZCBpdFxuXG4gICAgYXdhaXQgZnJvbUl0ZW0udGFibGVTZXR0aW5nQ29sdW1uLnVwZGF0ZSh7cG9zaXRpb246IHRvQ29sdW1uLnBvc2l0aW9uKCl9KVxuICB9XG5cbiAgZHJhZ0xpc3RSZW5kZXJJdGVtQ29udGVudCA9ICh7aXNBY3RpdmUsIGl0ZW0sIHRvdWNoUHJvcHN9KSA9PiB7XG4gICAgY29uc3Qge2FuaW1hdGVkV2lkdGgsIGFuaW1hdGVkWkluZGV4LCBjb2x1bW4sIHRhYmxlU2V0dGluZ0NvbHVtbn0gPSBpdGVtXG5cbiAgICByZXR1cm4gKFxuICAgICAgPEhlYWRlckNvbHVtblxuICAgICAgICBhY3RpdmU9e2lzQWN0aXZlfVxuICAgICAgICBhbmltYXRlZFdpZHRoPXthbmltYXRlZFdpZHRofVxuICAgICAgICBhbmltYXRlZFpJbmRleD17YW5pbWF0ZWRaSW5kZXh9XG4gICAgICAgIGNvbHVtbj17Y29sdW1ufVxuICAgICAgICBrZXk9e3RhYmxlU2V0dGluZ0NvbHVtbi5pZGVudGlmaWVyKCl9XG4gICAgICAgIHJlc2l6aW5nPXt0aGlzLnMucmVzaXppbmd9XG4gICAgICAgIHRhYmxlPXt0aGlzfVxuICAgICAgICB0YWJsZVNldHRpbmdDb2x1bW49e3RhYmxlU2V0dGluZ0NvbHVtbn1cbiAgICAgICAgdG91Y2hQcm9wcz17dG91Y2hQcm9wc31cbiAgICAgICAgd2lkdGhzPXt0aGlzLnMud2lkdGhzfVxuICAgICAgLz5cbiAgICApXG4gIH1cblxuICBoZWFkZXJDbGFzc05hbWVGb3JDb2x1bW4oY29sdW1uKSB7XG4gICAgY29uc3QgY2xhc3NOYW1lcyA9IFtdXG5cbiAgICBpZiAoY29sdW1uLmNvbW1vblByb3BzICYmIGNvbHVtbi5jb21tb25Qcm9wcy5jbGFzc05hbWUpIGNsYXNzTmFtZXMucHVzaChjb2x1bW4uY29tbW9uUHJvcHMuY2xhc3NOYW1lKVxuICAgIGlmIChjb2x1bW4uaGVhZGVyUHJvcHMgJiYgY29sdW1uLmhlYWRlclByb3BzLmNsYXNzTmFtZSkgY2xhc3NOYW1lcy5wdXNoKGNvbHVtbi5oZWFkZXJQcm9wcy5jbGFzc05hbWUpXG5cbiAgICByZXR1cm4gY2xhc3NOYW1lc1xuICB9XG5cbiAgaGVhZGVyTGFiZWxGb3JDb2x1bW4oY29sdW1uKSB7XG4gICAgY29uc3Qge21vZGVsQ2xhc3N9ID0gdGhpcy5wXG5cbiAgICBpZiAoXCJsYWJlbFwiIGluIGNvbHVtbikge1xuICAgICAgaWYgKHR5cGVvZiBjb2x1bW4ubGFiZWwgPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHJldHVybiBjb2x1bW4ubGFiZWwoKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGNvbHVtbi5sYWJlbFxuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBjdXJyZW50TW9kZWxDbGFzcyA9IG1vZGVsQ2xhc3NcblxuICAgIC8vIENhbGN1bGF0ZSBjdXJyZW50IG1vZGVsIGNsYXNzIHRocm91Z2ggcGF0aFxuICAgIGlmIChjb2x1bW4ucGF0aCkge1xuICAgICAgZm9yIChjb25zdCBwYXRoUGFydCBvZiBjb2x1bW4ucGF0aCkge1xuICAgICAgICBjb25zdCByZWxhdGlvbnNoaXBzID0gZGlnZyhjdXJyZW50TW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLCBcInJlbGF0aW9uc2hpcHNcIilcbiAgICAgICAgY29uc3QgcmVsYXRpb25zaGlwID0gcmVsYXRpb25zaGlwcy5maW5kKChyZWxhdGlvbnNoaXBJbkFycmF5KSA9PiByZWxhdGlvbnNoaXBJbkFycmF5Lm5hbWUgPT0gaW5mbGVjdGlvbi51bmRlcnNjb3JlKHBhdGhQYXJ0KSlcblxuICAgICAgICBjdXJyZW50TW9kZWxDbGFzcyA9IG1vZGVsQ2xhc3NSZXF1aXJlKGRpZ2cocmVsYXRpb25zaGlwLCBcInJlc291cmNlX25hbWVcIikpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNvbHVtbi5hdHRyaWJ1dGUpIHJldHVybiBjdXJyZW50TW9kZWxDbGFzcy5odW1hbkF0dHJpYnV0ZU5hbWUoY29sdW1uLmF0dHJpYnV0ZSlcblxuICAgIHRocm93IG5ldyBFcnJvcihcIk5vICdsYWJlbCcgb3IgJ2F0dHJpYnV0ZScgd2FzIGdpdmVuXCIpXG4gIH1cblxuICBvbkZpbHRlckZvcm1TdWJtaXQgPSAoKSA9PiB0aGlzLnN1Ym1pdEZpbHRlcigpXG4gIG9uUmVxdWVzdENsb3NlU2V0dGluZ3MgPSAoKSA9PiB0aGlzLnNldFN0YXRlKHtzaG93U2V0dGluZ3M6IGZhbHNlfSlcblxuICBvblNldHRpbmdzQ2xpY2tlZCA9IChlKSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG5cbiAgICB0aGlzLnNldFN0YXRlKHtzaG93U2V0dGluZ3M6ICF0aGlzLnMuc2hvd1NldHRpbmdzfSlcbiAgfVxuXG4gIHN1Ym1pdEZpbHRlciA9ICgpID0+IHtcbiAgICBjb25zdCB7YXBwSGlzdG9yeX0gPSB0aGlzLnByb3BzXG4gICAgY29uc3Qge3F1ZXJ5UU5hbWV9ID0gdGhpcy5zXG4gICAgY29uc3QgY2hhbmdlUGFyYW1zUGFyYW1zID0ge31cbiAgICBjb25zdCBxUGFyYW1zID0gdGhpcy5zLmZpbHRlckZvcm0uYXNPYmplY3QoKVxuXG4gICAgaWYgKFBsYXRmb3JtLk9TID09IFwid2ViXCIpIHtcbiAgICAgIGNvbnN0IGZpbHRlckZvcm0gPSBkaWdnKHRoaXMudHQuZmlsdGVyRm9ybVJlZiwgXCJjdXJyZW50XCIpXG4gICAgICBjb25zdCBuYXZ0aXZlRm9ybVBhcmFtcyA9IFBhcmFtcy5zZXJpYWxpemVGb3JtKGZpbHRlckZvcm0pXG5cbiAgICAgIGluY29ycG9yYXRlKHFQYXJhbXMsIG5hdnRpdmVGb3JtUGFyYW1zKVxuICAgIH1cblxuICAgIGNoYW5nZVBhcmFtc1BhcmFtc1txdWVyeVFOYW1lXSA9IEpTT04uc3RyaW5naWZ5KHFQYXJhbXMpXG5cbiAgICBQYXJhbXMuY2hhbmdlUGFyYW1zKGNoYW5nZVBhcmFtc1BhcmFtcywge2FwcEhpc3Rvcnl9KVxuICB9XG5cbiAgc3VibWl0RmlsdGVyRGVib3VuY2UgPSBkZWJvdW5jZSh0aGlzLnR0LnN1Ym1pdEZpbHRlcilcbn0pKVxuIl0sIm1hcHBpbmdzIjoiO0FBQUEsU0FBUUEsSUFBSSxFQUFFQyxJQUFJLFFBQU8sV0FBVztBQUNwQyxPQUFPQyxLQUFLLElBQUdDLGFBQWEsRUFBRUMsVUFBVSxFQUFFQyxPQUFPLEVBQUVDLE1B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
|
package/build/utils/icon.js
CHANGED
|
@@ -12,9 +12,15 @@ const FontAwesomeGlyphMap = FontAwesomeIcon.getRawGlyphMap();
|
|
|
12
12
|
const FontAwesome5GlyphMap = FontAwesome5Icon.getRawGlyphMap();
|
|
13
13
|
const FontAwesome6GlyphMap = FontAwesome6Icon.getRawGlyphMap();
|
|
14
14
|
const MaterialIconsGlyphMap = MaterialIconsIcon.getRawGlyphMap();
|
|
15
|
+
const iconMap = {
|
|
16
|
+
pencil: "FontAwesome",
|
|
17
|
+
remove: "FontAwesome",
|
|
18
|
+
search: "FontAwesome"
|
|
19
|
+
};
|
|
15
20
|
export default memo(shapeComponent(class ApiMakerUtilsIcon extends BaseComponent {
|
|
16
21
|
render() {
|
|
17
22
|
const {
|
|
23
|
+
dataSet,
|
|
18
24
|
name,
|
|
19
25
|
style,
|
|
20
26
|
version,
|
|
@@ -25,7 +31,9 @@ export default memo(shapeComponent(class ApiMakerUtilsIcon extends BaseComponent
|
|
|
25
31
|
} = useMergedStyle(style, "Text");
|
|
26
32
|
let actualVersion = version;
|
|
27
33
|
if (!actualVersion) {
|
|
28
|
-
if (name in
|
|
34
|
+
if (name in iconMap) {
|
|
35
|
+
actualVersion = iconMap[name];
|
|
36
|
+
} else if (name in FontAwesome6GlyphMap) {
|
|
29
37
|
actualVersion = "FontAwesome6";
|
|
30
38
|
} else if (name in FontAwesome5GlyphMap) {
|
|
31
39
|
actualVersion = "FontAwesome5";
|
|
@@ -54,23 +62,31 @@ export default memo(shapeComponent(class ApiMakerUtilsIcon extends BaseComponent
|
|
|
54
62
|
}
|
|
55
63
|
return actualStylesList;
|
|
56
64
|
}, [stylesList, style]);
|
|
65
|
+
const actualDataSet = useMemo(() => Object.assign({
|
|
66
|
+
name,
|
|
67
|
+
version: actualVersion
|
|
68
|
+
}, dataSet), [actualVersion, dataSet, name]);
|
|
57
69
|
if (actualVersion == "FontAwesome") {
|
|
58
70
|
return /*#__PURE__*/React.createElement(FontAwesomeIcon, _extends({
|
|
71
|
+
dataSet: actualDataSet,
|
|
59
72
|
name: name,
|
|
60
73
|
style: actualStylesList
|
|
61
74
|
}, restProps));
|
|
62
75
|
} else if (actualVersion == "FontAwesome5") {
|
|
63
76
|
return /*#__PURE__*/React.createElement(FontAwesome5Icon, _extends({
|
|
77
|
+
dataSet: actualDataSet,
|
|
64
78
|
name: name,
|
|
65
79
|
style: actualStylesList
|
|
66
80
|
}, restProps));
|
|
67
81
|
} else if (actualVersion == "FontAwesome6") {
|
|
68
82
|
return /*#__PURE__*/React.createElement(FontAwesome6Icon, _extends({
|
|
83
|
+
dataSet: actualDataSet,
|
|
69
84
|
name: name,
|
|
70
85
|
style: actualStylesList
|
|
71
86
|
}, restProps));
|
|
72
87
|
} else if (actualVersion == "MaterialIcons") {
|
|
73
88
|
return /*#__PURE__*/React.createElement(MaterialIconsIcon, _extends({
|
|
89
|
+
dataSet: actualDataSet,
|
|
74
90
|
name: name,
|
|
75
91
|
style: actualStylesList
|
|
76
92
|
}, restProps));
|
|
@@ -79,4 +95,4 @@ export default memo(shapeComponent(class ApiMakerUtilsIcon extends BaseComponent
|
|
|
79
95
|
}
|
|
80
96
|
}
|
|
81
97
|
}));
|
|
82
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
98
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCYXNlQ29tcG9uZW50IiwiRm9udEF3ZXNvbWVJY29uIiwiRm9udEF3ZXNvbWU1SWNvbiIsIkZvbnRBd2Vzb21lNkljb24iLCJNYXRlcmlhbEljb25zSWNvbiIsIm1lbW8iLCJSZWFjdCIsInVzZU1lbW8iLCJzaGFwZUNvbXBvbmVudCIsInVzZU1lcmdlZFN0eWxlIiwiRm9udEF3ZXNvbWVHbHlwaE1hcCIsImdldFJhd0dseXBoTWFwIiwiRm9udEF3ZXNvbWU1R2x5cGhNYXAiLCJGb250QXdlc29tZTZHbHlwaE1hcCIsIk1hdGVyaWFsSWNvbnNHbHlwaE1hcCIsImljb25NYXAiLCJwZW5jaWwiLCJyZW1vdmUiLCJzZWFyY2giLCJBcGlNYWtlclV0aWxzSWNvbiIsInJlbmRlciIsImRhdGFTZXQiLCJuYW1lIiwic3R5bGUiLCJ2ZXJzaW9uIiwicmVzdFByb3BzIiwicHJvcHMiLCJzdHlsZXNMaXN0IiwiYWN0dWFsVmVyc2lvbiIsImFjdHVhbFN0eWxlc0xpc3QiLCJuZXdTdHlsZSIsImNvdW50Iiwia2V5IiwicHVzaCIsImFjdHVhbERhdGFTZXQiLCJPYmplY3QiLCJhc3NpZ24iLCJjcmVhdGVFbGVtZW50IiwiX2V4dGVuZHMiLCJFcnJvciJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9pY29uLmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQmFzZUNvbXBvbmVudCBmcm9tIFwiLi4vYmFzZS1jb21wb25lbnRcIlxuaW1wb3J0IEZvbnRBd2Vzb21lSWNvbiBmcm9tIFwicmVhY3QtbmF0aXZlLXZlY3Rvci1pY29ucy9Gb250QXdlc29tZVwiXG5pbXBvcnQgRm9udEF3ZXNvbWU1SWNvbiBmcm9tIFwicmVhY3QtbmF0aXZlLXZlY3Rvci1pY29ucy9Gb250QXdlc29tZTVcIlxuaW1wb3J0IEZvbnRBd2Vzb21lNkljb24gZnJvbSBcInJlYWN0LW5hdGl2ZS12ZWN0b3ItaWNvbnMvRm9udEF3ZXNvbWU2XCJcbmltcG9ydCBNYXRlcmlhbEljb25zSWNvbiBmcm9tIFwicmVhY3QtbmF0aXZlLXZlY3Rvci1pY29ucy9NYXRlcmlhbEljb25zXCJcbmltcG9ydCBtZW1vIGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9zcmMvbWVtb1wiXG5pbXBvcnQgUmVhY3QsIHt1c2VNZW1vfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHtzaGFwZUNvbXBvbmVudH0gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL3NyYy9zaGFwZS1jb21wb25lbnRcIlxuaW1wb3J0IHt1c2VNZXJnZWRTdHlsZX0gZnJvbSBcIi4vZGVmYXVsdC1zdHlsZVwiXG5cbmNvbnN0IEZvbnRBd2Vzb21lR2x5cGhNYXAgPSBGb250QXdlc29tZUljb24uZ2V0UmF3R2x5cGhNYXAoKVxuY29uc3QgRm9udEF3ZXNvbWU1R2x5cGhNYXAgPSBGb250QXdlc29tZTVJY29uLmdldFJhd0dseXBoTWFwKClcbmNvbnN0IEZvbnRBd2Vzb21lNkdseXBoTWFwID0gRm9udEF3ZXNvbWU2SWNvbi5nZXRSYXdHbHlwaE1hcCgpXG5jb25zdCBNYXRlcmlhbEljb25zR2x5cGhNYXAgPSBNYXRlcmlhbEljb25zSWNvbi5nZXRSYXdHbHlwaE1hcCgpXG5cbmNvbnN0IGljb25NYXAgPSB7XG4gIHBlbmNpbDogXCJGb250QXdlc29tZVwiLFxuICByZW1vdmU6IFwiRm9udEF3ZXNvbWVcIixcbiAgc2VhcmNoOiBcIkZvbnRBd2Vzb21lXCJcbn1cblxuZXhwb3J0IGRlZmF1bHQgbWVtbyhzaGFwZUNvbXBvbmVudChjbGFzcyBBcGlNYWtlclV0aWxzSWNvbiBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge2RhdGFTZXQsIG5hbWUsIHN0eWxlLCB2ZXJzaW9uLCAuLi5yZXN0UHJvcHN9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IHtzdHlsZXNMaXN0fSA9IHVzZU1lcmdlZFN0eWxlKHN0eWxlLCBcIlRleHRcIilcbiAgICBsZXQgYWN0dWFsVmVyc2lvbiA9IHZlcnNpb25cblxuICAgIGlmICghYWN0dWFsVmVyc2lvbikge1xuICAgICAgaWYgKG5hbWUgaW4gaWNvbk1hcCkge1xuICAgICAgICBhY3R1YWxWZXJzaW9uID0gaWNvbk1hcFtuYW1lXVxuICAgICAgfSBlbHNlIGlmIChuYW1lIGluIEZvbnRBd2Vzb21lNkdseXBoTWFwKSB7XG4gICAgICAgIGFjdHVhbFZlcnNpb24gPSBcIkZvbnRBd2Vzb21lNlwiXG4gICAgICB9IGVsc2UgaWYgKG5hbWUgaW4gRm9udEF3ZXNvbWU1R2x5cGhNYXApIHtcbiAgICAgICAgYWN0dWFsVmVyc2lvbiA9IFwiRm9udEF3ZXNvbWU1XCJcbiAgICAgIH0gZWxzZSBpZiAobmFtZSBpbiBGb250QXdlc29tZUdseXBoTWFwKSB7XG4gICAgICAgIGFjdHVhbFZlcnNpb24gPSBcIkZvbnRBd2Vzb21lXCJcbiAgICAgIH0gZWxzZSBpZiAobmFtZSBpbiBNYXRlcmlhbEljb25zR2x5cGhNYXApIHtcbiAgICAgICAgYWN0dWFsVmVyc2lvbiA9ICBcIk1hdGVyaWFsSWNvbnNcIlxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIE9ubHkgZm9yd2FyZCBzb21lIHN0eWxlcyBsaWtlIGNvbG9yXG4gICAgY29uc3QgYWN0dWFsU3R5bGVzTGlzdCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgY29uc3QgYWN0dWFsU3R5bGVzTGlzdCA9IFtdXG5cbiAgICAgIGZvciAoY29uc3Qgc3R5bGUgb2Ygc3R5bGVzTGlzdCkge1xuICAgICAgICBjb25zdCBuZXdTdHlsZSA9IHt9XG4gICAgICAgIGxldCBjb3VudCA9IDBcblxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBzdHlsZSkge1xuICAgICAgICAgIGlmIChrZXkgPT0gXCJjb2xvclwiKSB7XG4gICAgICAgICAgICBuZXdTdHlsZVtrZXldID0gc3R5bGVba2V5XVxuICAgICAgICAgICAgY291bnQrK1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb3VudCA+IDApIHtcbiAgICAgICAgICBhY3R1YWxTdHlsZXNMaXN0LnB1c2gobmV3U3R5bGUpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGFjdHVhbFN0eWxlc0xpc3RcbiAgICB9LCBbc3R5bGVzTGlzdCwgc3R5bGVdKVxuXG4gICAgY29uc3QgYWN0dWFsRGF0YVNldCA9IHVzZU1lbW8oKCkgPT4gT2JqZWN0LmFzc2lnbih7bmFtZSwgdmVyc2lvbjogYWN0dWFsVmVyc2lvbn0sIGRhdGFTZXQpLCBbYWN0dWFsVmVyc2lvbiwgZGF0YVNldCwgbmFtZV0pXG5cbiAgICBpZiAoYWN0dWFsVmVyc2lvbiA9PSBcIkZvbnRBd2Vzb21lXCIpIHtcbiAgICAgIHJldHVybiA8Rm9udEF3ZXNvbWVJY29uIGRhdGFTZXQ9e2FjdHVhbERhdGFTZXR9IG5hbWU9e25hbWV9IHN0eWxlPXthY3R1YWxTdHlsZXNMaXN0fSB7Li4ucmVzdFByb3BzfSAvPlxuICAgIH0gZWxzZSBpZiAoYWN0dWFsVmVyc2lvbiA9PSBcIkZvbnRBd2Vzb21lNVwiKSB7XG4gICAgICByZXR1cm4gPEZvbnRBd2Vzb21lNUljb24gZGF0YVNldD17YWN0dWFsRGF0YVNldH0gbmFtZT17bmFtZX0gc3R5bGU9e2FjdHVhbFN0eWxlc0xpc3R9IHsuLi5yZXN0UHJvcHN9IC8+XG4gICAgfSBlbHNlIGlmIChhY3R1YWxWZXJzaW9uID09IFwiRm9udEF3ZXNvbWU2XCIpIHtcbiAgICAgIHJldHVybiA8Rm9udEF3ZXNvbWU2SWNvbiBkYXRhU2V0PXthY3R1YWxEYXRhU2V0fSBuYW1lPXtuYW1lfSBzdHlsZT17YWN0dWFsU3R5bGVzTGlzdH0gey4uLnJlc3RQcm9wc30gLz5cbiAgICB9IGVsc2UgaWYgKGFjdHVhbFZlcnNpb24gPT0gXCJNYXRlcmlhbEljb25zXCIpIHtcbiAgICAgIHJldHVybiA8TWF0ZXJpYWxJY29uc0ljb24gZGF0YVNldD17YWN0dWFsRGF0YVNldH0gbmFtZT17bmFtZX0gc3R5bGU9e2FjdHVhbFN0eWxlc0xpc3R9IHsuLi5yZXN0UHJvcHN9IC8+XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biB2ZXJzaW9uOiAke2FjdHVhbFZlcnNpb259YClcbiAgICB9XG4gIH1cbn0pKVxuIl0sIm1hcHBpbmdzIjoiO0FBQUEsT0FBT0EsYUFBYSxNQUFNLG1CQUFtQjtBQUM3QyxPQUFPQyxlQUFlLE1BQU0sdUNBQXVDO0FBQ25FLE9BQU9DLGdCQUFnQixNQUFNLHdDQUF3QztBQUNyRSxPQUFPQyxnQkFBZ0IsTUFBTSx3Q0FBd0M7QUFDckUsT0FBT0MsaUJBQWlCLE1BQU0seUNBQXlDO0FBQ3ZFLE9BQU9DLElBQUksTUFBTSw0QkFBNEI7QUFDN0MsT0FBT0MsS0FBSyxJQUFHQyxPQUFPLFFBQU8sT0FBTztBQUNwQyxTQUFRQyxjQUFjLFFBQU8sdUNBQXVDO0FBQ3BFLFNBQVFDLGNBQWMsUUFBTyxpQkFBaUI7QUFFOUMsTUFBTUMsbUJBQW1CLEdBQUdULGVBQWUsQ0FBQ1UsY0FBYyxDQUFDLENBQUM7QUFDNUQsTUFBTUMsb0JBQW9CLEdBQUdWLGdCQUFnQixDQUFDUyxjQUFjLENBQUMsQ0FBQztBQUM5RCxNQUFNRSxvQkFBb0IsR0FBR1YsZ0JBQWdCLENBQUNRLGNBQWMsQ0FBQyxDQUFDO0FBQzlELE1BQU1HLHFCQUFxQixHQUFHVixpQkFBaUIsQ0FBQ08sY0FBYyxDQUFDLENBQUM7QUFFaEUsTUFBTUksT0FBTyxHQUFHO0VBQ2RDLE1BQU0sRUFBRSxhQUFhO0VBQ3JCQyxNQUFNLEVBQUUsYUFBYTtFQUNyQkMsTUFBTSxFQUFFO0FBQ1YsQ0FBQztBQUVELGVBQWViLElBQUksQ0FBQ0csY0FBYyxDQUFDLE1BQU1XLGlCQUFpQixTQUFTbkIsYUFBYSxDQUFDO0VBQy9Fb0IsTUFBTUEsQ0FBQSxFQUFHO0lBQ1AsTUFBTTtNQUFDQyxPQUFPO01BQUVDLElBQUk7TUFBRUMsS0FBSztNQUFFQyxPQUFPO01BQUUsR0FBR0M7SUFBUyxDQUFDLEdBQUcsSUFBSSxDQUFDQyxLQUFLO0lBQ2hFLE1BQU07TUFBQ0M7SUFBVSxDQUFDLEdBQUdsQixjQUFjLENBQUNjLEtB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
|
package/package.json
CHANGED
package/src/table/model-row.jsx
CHANGED
|
@@ -59,7 +59,7 @@ export default memo(shapeComponent(class ApiMakerBootStrapLiveTableModelRow exte
|
|
|
59
59
|
|
|
60
60
|
return (
|
|
61
61
|
<Row
|
|
62
|
-
dataSet={{class: `${inflection.dasherize(modelClass.modelClassData().paramKey)}-row`, modelId: model.id()}}
|
|
62
|
+
dataSet={this.cache("rowDataSet", {class: `${inflection.dasherize(modelClass.modelClassData().paramKey)}-row`, modelId: model.id()}, [model.id(), modelClass.modelClassData().paramKey])}
|
|
63
63
|
style={styleForRow({even})}
|
|
64
64
|
>
|
|
65
65
|
{workplace &&
|
|
@@ -72,7 +72,7 @@ export default memo(shapeComponent(class ApiMakerBootStrapLiveTableModelRow exte
|
|
|
72
72
|
</Column>
|
|
73
73
|
}
|
|
74
74
|
{columns && this.columnsContentFromColumns(model, even)}
|
|
75
|
-
<Column dataSet={{class: "actions-column"}} style={styleForColumn({even, style: {}, type: "actions"})}>
|
|
75
|
+
<Column dataSet={this.actionsColumnDataSet ||= {class: "actions-column"}} style={styleForColumn({even, style: {}, type: "actions"})}>
|
|
76
76
|
{actionsContent && actionsContent(this.tt.modelCallbackArgs)}
|
|
77
77
|
{viewPath &&
|
|
78
78
|
<Link dataSet={this.viewButtonDataSet ||= {class: "view-button"}} style={this.searchLinkStyle ||= {marginLeft: 2, marginRight: 2}} to={viewPath}>
|
package/src/table/table.jsx
CHANGED
|
@@ -928,7 +928,12 @@ export default memo(shapeComponent(class ApiMakerTable extends BaseComponent {
|
|
|
928
928
|
|
|
929
929
|
onFilterFormSubmit = () => this.submitFilter()
|
|
930
930
|
onRequestCloseSettings = () => this.setState({showSettings: false})
|
|
931
|
-
|
|
931
|
+
|
|
932
|
+
onSettingsClicked = (e) => {
|
|
933
|
+
e.preventDefault()
|
|
934
|
+
|
|
935
|
+
this.setState({showSettings: !this.s.showSettings})
|
|
936
|
+
}
|
|
932
937
|
|
|
933
938
|
submitFilter = () => {
|
|
934
939
|
const {appHistory} = this.props
|
package/src/utils/icon.jsx
CHANGED
|
@@ -13,14 +13,22 @@ const FontAwesome5GlyphMap = FontAwesome5Icon.getRawGlyphMap()
|
|
|
13
13
|
const FontAwesome6GlyphMap = FontAwesome6Icon.getRawGlyphMap()
|
|
14
14
|
const MaterialIconsGlyphMap = MaterialIconsIcon.getRawGlyphMap()
|
|
15
15
|
|
|
16
|
+
const iconMap = {
|
|
17
|
+
pencil: "FontAwesome",
|
|
18
|
+
remove: "FontAwesome",
|
|
19
|
+
search: "FontAwesome"
|
|
20
|
+
}
|
|
21
|
+
|
|
16
22
|
export default memo(shapeComponent(class ApiMakerUtilsIcon extends BaseComponent {
|
|
17
23
|
render() {
|
|
18
|
-
const {name, style, version, ...restProps} = this.props
|
|
24
|
+
const {dataSet, name, style, version, ...restProps} = this.props
|
|
19
25
|
const {stylesList} = useMergedStyle(style, "Text")
|
|
20
26
|
let actualVersion = version
|
|
21
27
|
|
|
22
28
|
if (!actualVersion) {
|
|
23
|
-
if (name in
|
|
29
|
+
if (name in iconMap) {
|
|
30
|
+
actualVersion = iconMap[name]
|
|
31
|
+
} else if (name in FontAwesome6GlyphMap) {
|
|
24
32
|
actualVersion = "FontAwesome6"
|
|
25
33
|
} else if (name in FontAwesome5GlyphMap) {
|
|
26
34
|
actualVersion = "FontAwesome5"
|
|
@@ -54,14 +62,16 @@ export default memo(shapeComponent(class ApiMakerUtilsIcon extends BaseComponent
|
|
|
54
62
|
return actualStylesList
|
|
55
63
|
}, [stylesList, style])
|
|
56
64
|
|
|
65
|
+
const actualDataSet = useMemo(() => Object.assign({name, version: actualVersion}, dataSet), [actualVersion, dataSet, name])
|
|
66
|
+
|
|
57
67
|
if (actualVersion == "FontAwesome") {
|
|
58
|
-
return <FontAwesomeIcon name={name} style={actualStylesList} {...restProps} />
|
|
68
|
+
return <FontAwesomeIcon dataSet={actualDataSet} name={name} style={actualStylesList} {...restProps} />
|
|
59
69
|
} else if (actualVersion == "FontAwesome5") {
|
|
60
|
-
return <FontAwesome5Icon name={name} style={actualStylesList} {...restProps} />
|
|
70
|
+
return <FontAwesome5Icon dataSet={actualDataSet} name={name} style={actualStylesList} {...restProps} />
|
|
61
71
|
} else if (actualVersion == "FontAwesome6") {
|
|
62
|
-
return <FontAwesome6Icon name={name} style={actualStylesList} {...restProps} />
|
|
72
|
+
return <FontAwesome6Icon dataSet={actualDataSet} name={name} style={actualStylesList} {...restProps} />
|
|
63
73
|
} else if (actualVersion == "MaterialIcons") {
|
|
64
|
-
return <MaterialIconsIcon name={name} style={actualStylesList} {...restProps} />
|
|
74
|
+
return <MaterialIconsIcon dataSet={actualDataSet} name={name} style={actualStylesList} {...restProps} />
|
|
65
75
|
} else {
|
|
66
76
|
throw new Error(`Unknown version: ${actualVersion}`)
|
|
67
77
|
}
|