@kaspernj/api-maker 1.0.462 → 1.0.463
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/bootstrap/sort-link.js +2 -2
- package/build/cable-subscription-pool.js +3 -3
- package/build/channels-consumer.js +7 -2
- package/build/collection.js +2 -1
- package/build/config.js +7 -1
- package/build/devise.js +9 -6
- package/build/history-expo.js +24 -0
- package/build/history-react-native.js +20 -0
- package/build/router.js +2 -2
- package/build/session-status-updater.js +11 -3
- package/build/super-admin/edit-page.js +2 -2
- package/build/super-admin/index.js +2 -2
- package/build/super-admin/layout/index.js +6 -5
- package/build/super-admin/show-nav.js +2 -2
- package/build/super-admin/show-reflection-page.js +2 -2
- package/build/table/filters/index.js +2 -2
- package/build/table/table.js +2 -2
- package/build/table/use-sorting.js +2 -2
- package/build/use-collection.js +2 -2
- package/build/use-current-user.js +6 -2
- package/build/use-model.js +2 -2
- package/package.json +2 -1
- package/src/bootstrap/sort-link.jsx +1 -1
- package/src/cable-subscription-pool.js +2 -2
- package/src/channels-consumer.js +7 -1
- package/src/collection.js +1 -0
- package/src/config.js +2 -0
- package/src/devise.js +7 -7
- package/src/history-expo.js +25 -0
- package/src/history-react-native.js +25 -0
- package/src/router.jsx +1 -1
- package/src/session-status-updater.js +12 -2
- package/src/super-admin/edit-page.jsx +1 -1
- package/src/super-admin/index.jsx +1 -1
- package/src/super-admin/layout/index.jsx +5 -4
- package/src/super-admin/show-nav.jsx +1 -1
- package/src/super-admin/show-reflection-page.jsx +1 -1
- package/src/table/filters/index.jsx +1 -1
- package/src/table/table.jsx +1 -1
- package/src/table/use-sorting.js +1 -1
- package/src/use-collection.js +1 -1
- package/src/use-current-user.js +5 -2
- package/src/use-model.js +1 -1
- package/build/historyExpo.js +0 -10
- package/src/historyExpo.js +0 -9
package/build/table/table.js
CHANGED
|
@@ -37,7 +37,7 @@ import useCollection from "../use-collection";
|
|
|
37
37
|
import useI18n from "i18n-on-steroids/src/use-i18n";
|
|
38
38
|
import useEventEmitter from "../use-event-emitter";
|
|
39
39
|
import useModelEvent from "../use-model-event";
|
|
40
|
-
import useQueryParams from "on-location-changed/
|
|
40
|
+
import useQueryParams from "on-location-changed/build/use-query-params";
|
|
41
41
|
import Widths from "./widths";
|
|
42
42
|
const paginationOptions = [30, 60, 90, ["All", "all"]];
|
|
43
43
|
const WorkerPluginsCheckAllCheckbox = /*#__PURE__*/React.lazy(() => import("./worker-plugins-check-all-checkbox"));
|
|
@@ -969,4 +969,4 @@ export default memo(shapeComponent(class ApiMakerTable extends BaseComponent {
|
|
|
969
969
|
};
|
|
970
970
|
submitFilterDebounce = debounce(this.tt.submitFilter);
|
|
971
971
|
}));
|
|
972
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkaWdnIiwiZGlncyIsIlJlYWN0IiwiY3JlYXRlQ29udGV4dCIsInVzZUNvbnRleHQiLCJ1c2VNZW1vIiwidXNlUmVmIiwiQW5pbWF0ZWQiLCJQcmVzc2FibGUiLCJWaWV3IiwiQmFzZUNvbXBvbmVudCIsIkNhcmQiLCJjbGFzc05hbWVzIiwiQ29sbGVjdGlvbiIsImNvbHVtblZpc2libGUiLCJkZWJvdW5jZSIsIkRyYWdnYWJsZVNvcnQiLCJFdmVudEVtaXR0ZXIiLCJGaWx0ZXJzIiwiRmxhdExpc3QiLCJGb3JtIiwiSGVhZGVyIiwiSGVhZGVyQ29sdW1uIiwiSGVhZGVyU2VsZWN0IiwiSWNvbiIsImluZmxlY3Rpb24iLCJtZW1vIiwibW9kZWxDbGFzc1JlcXVpcmUiLCJNb2RlbFJvdyIsIlBhZ2luYXRlIiwiUGFyYW1zIiwiUHJvcFR5cGVzIiwiUm93Iiwic2VsZWN0Q2FsY3VsYXRvciIsIlNlbGVjdCIsIlNldHRpbmdzIiwic2hhcGVDb21wb25lbnQiLCJUYWJsZVNldHRpbmdzIiwiVGV4dCIsInVuaXF1bml6ZSIsInVzZUJyZWFrcG9pbnQiLCJ1c2VDb2xsZWN0aW9uIiwidXNlSTE4biIsInVzZUV2ZW50RW1pdHRlciIsInVzZU1vZGVsRXZlbnQiLCJ1c2VRdWVyeVBhcmFtcyIsIldpZHRocyIsInBhZ2luYXRpb25PcHRpb25zIiwiV29ya2VyUGx1Z2luc0NoZWNrQWxsQ2hlY2tib3giLCJsYXp5IiwiVGFibGVDb250ZXh0IiwiTGlzdEhlYWRlckNvbXBvbmVudCIsInNldHVwIiwidXNlU3RhdGVzIiwibGFzdFVwZGF0ZSIsIkRhdGUiLCJyZW5kZXIiLCJtZFVwIiwidGFibGVDb250ZXh0VmFsdWUiLCJ0YWJsZSIsImNvbGxlY3Rpb24iLCJldmVudHMiLCJxdWVyeVdpdGhvdXRQYWdpbmF0aW9uIiwidCIsInR0IiwicXVlcnkiLCJvbkNvbHVtblZpc2liaWxpdHlVcGRhdGVkIiwiY3JlYXRlRWxlbWVudCIsImRhdGFTZXQiLCJjbGFzcyIsInN0eWxlIiwic3R5bGVGb3JSb3dIZWFkZXIiLCJwIiwid29ya3BsYWNlIiwicyIsImN1cnJlbnRXb3JrcGxhY2UiLCJzdHlsZUZvckhlYWRlciIsIndpZHRoIiwidW5kZWZpbmVkIiwibWFyZ2luSG9yaXpvbnRhbCIsIm1hcmdpbkxlZnQiLCJkZWZhdWx0VmFsdWUiLCJwcmVwYXJlZENvbHVtbnMiLCJGcmFnbWVudCIsImhlYWRlcnNDb250ZW50RnJvbUNvbHVtbnMiLCJ0eXBlIiwic2V0U3RhdGUiLCJBcGlNYWtlclRhYmxlIiwiZGVmYXVsdFByb3BzIiwiY2FyZCIsImN1cnJlbnRVc2VyIiwiZGVzdHJveUVuYWJsZWQiLCJmaWx0ZXJDYXJkIiwiZmlsdGVyU3VibWl0QnV0dG9uIiwibm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudCIsIm5vUmVjb3Jkc0ZvdW5kQ29udGVudCIsInByZWxvYWRzIiwic2VsZWN0Iiwic3R5bGVVSSIsInByb3BUeXBlcyIsImFiaWxpdGllcyIsIm9iamVjdCIsImFjdGlvbnNDb250ZW50IiwiZnVuYyIsImFwcEhpc3RvcnkiLCJib29sIiwiaXNSZXF1aXJlZCIsImNsYXNzTmFtZSIsInN0cmluZyIsImluc3RhbmNlT2YiLCJjb2x1bW5zIiwib25lT2ZUeXBlIiwiYXJyYXkiLCJjb250cm9scyIsImRlZmF1bHREYXRlRm9ybWF0TmFtZSIsImRlZmF1bHREYXRlVGltZUZvcm1hdE5hbWUiLCJkZWZhdWx0UGFyYW1zIiwiZGVzdHJveU1lc3NhZ2UiLCJlZGl0TW9kZWxQYXRoIiwiZmlsdGVyQ29udGVudCIsImZpbHRlclN1Ym1pdExhYmVsIiwibm9kZSIsImdyb3VwQnkiLCJoZWFkZXIiLCJpZGVudGlmaWVyIiwibW9kZWxDbGFzcyIsIm9uTW9kZWxzTG9hZGVkIiwicGFnaW5hdGVDb250ZW50IiwicGFnaW5hdGlvbkNvbXBvbmVudCIsInF1ZXJ5TWV0aG9kIiwicXVlcnlOYW1lIiwic2VsZWN0Q29sdW1ucyIsInN0eWxlcyIsInZpZXdNb2RlbFBhdGgiLCJkcmFnZ2FibGVTb3J0RXZlbnRzIiwidGFibGVTZXR0aW5ncyIsIm5hbWVzcGFjZSIsIm5hbWUiLCJicmVha3BvaW50IiwicXVlcnlQYXJhbXMiLCJzZXRJbnN0YW5jZSIsImZpbHRlckZvcm1SZWYiLCJjb2xsZWN0aW9uS2V5IiwibW9kZWxDbGFzc0RhdGEiLCJwcm9wcyIsInF1ZXJ5U05hbWUiLCJjb2x1bW5zQXNBcnJheSIsImN1cnJlbnRXb3JrcGxhY2VDb3VudCIsImZpbHRlckZvcm0iLCJjb2x1bW5zVG9TaG93IiwiZHJhZ2dlZENvbHVtbiIsInByZWxvYWQiLCJxdWVyeVFOYW1lIiwicXVlcnlQYWdlTmFtZSIsInJlc2l6aW5nIiwic2hvd0ZpbHRlcnMiLCJCb29sZWFuIiwic2hvd1NldHRpbmdzIiwidGFibGVTZXR0aW5nIiwidGFibGVTZXR0aW5nTG9hZGVkIiwidGFibGVTZXR0aW5nRnVsbENhY2hlS2V5Iiwid2lkdGhzIiwiY2FjaGVLZXkiLCJsb2FkQ3VycmVudFdvcmtwbGFjZSIsInRoZW4iLCJsb2FkQ3VycmVudFdvcmtwbGFjZUNvdW50IiwiaWQiLCJsb2FkVGFibGVTZXR0aW5nIiwib25MaW5rc0NyZWF0ZWQiLCJvbkxpbmtzRGVzdHJveWVkIiwiY29sbGVjdGlvblJlYWR5IiwiYWJpbGl0aWVzVG9Mb2FkIiwiaWZDb25kaXRpb24iLCJwYWdpbmF0aW9uIiwic3RhdGUiLCJjbG9uZSIsImV4Y2VwdCIsIm9uRHJhZ1N0YXJ0Iiwib25EcmFnRW5kQW5pbWF0aW9uIiwiZ2V0Q29sdW1uc1RvU2hvdyIsIml0ZW0iLCJhbmltYXRlZFpJbmRleCIsInNldFZhbHVlIiwiV29ya3BsYWNlIiwicmVzdWx0IiwiY3VycmVudCIsIldvcmtwbGFjZUxpbmsiLCJyYW5zYWNrIiwicmVzb3VyY2VfdHlwZV9lcSIsIndvcmtwbGFjZV9pZF9lcSIsImNvdW50IiwiZmlsdGVyIiwiY29sdW1uIiwidGFibGVTZXR0aW5nQ29sdW1uIiwic29ydCIsImEiLCJiIiwicG9zaXRpb24iLCJsb2FkRXhpc3RpbmdPckNyZWF0ZVRhYmxlU2V0dGluZ3MiLCJtZXJnZWRQcmVsb2FkcyIsImZ1bGxDYWNoZUtleSIsInVwZGF0ZVNldHRpbmdzRnVsbENhY2hlS2V5IiwiY29uY2F0IiwibW9kZWxzIiwib3ZlcmFsbENvdW50IiwicVBhcmFtcyIsInNob3dOb1JlY29yZHNBdmFpbGFibGVDb250ZW50Iiwic2hvd05vUmVjb3Jkc0ZvdW5kQ29udGVudCIsImFyZ3MiLCJFcnJvciIsIm9uTGF5b3V0Iiwib25Db250YWluZXJMYXlvdXQiLCJjb250YWluZXIiLCJjYXJkT3JUYWJsZSIsIm93bkFiaWxpdGllcyIsInB1c2giLCJsZW5ndGgiLCJtb2RlbENsYXNzTmFtZSIsIm1vZGVsTmFtZSIsImFiaWxpdHkiLCJyZXN0UHJvcHMiLCJoZWFkZXJDb250ZW50IiwiUGFnaW5hdGlvbkNvbXBvbmVudCIsImh1bWFuIiwiZmxhdExpc3RTdHlsZSIsIm92ZXJmbG93WCIsImJvcmRlciIsImJvcmRlclJhZGl1cyIsImZsYXRMaXN0IiwiUHJvdmlkZXIiLCJ2YWx1ZSIsIl9leHRlbmRzIiwiZGF0YSIsImV4dHJhRGF0YSIsImtleUV4dHJhY3RvciIsImtleUV4dHJhdG9yIiwicmVuZGVySXRlbSIsInNob3dzSG9yaXpvbnRhbFNjcm9sbEluZGljYXRvciIsInRhYmxlQ29udHJvbHMiLCJmb290ZXIiLCJ0YWJsZUZvb3RlciIsImUiLCJuYXRpdmVFdmVudCIsImxheW91dCIsInRhYmxlV2lkdGgiLCJjcmVhdGVkIiwiYW1vdW50Q3JlYXRlZCIsInByZXZTdGF0ZSIsImRlc3Ryb3llZCIsImFtb3VudERlc3Ryb3llZCIsIm1vZGVsIiwic3VibWl0RmlsdGVyIiwic3VibWl0RmlsdGVyRGVib3VuY2UiLCJmb3JtUmVmIiwib25TdWJtaXQiLCJvbkZpbHRlckZvcm1TdWJtaXQiLCJzZXRGb3JtIiwic2V0U3RhdGVzIiwib25GaWx0ZXJDaGFuZ2VkIiwib25GaWx0ZXJDaGFuZ2VkV2l0aERlbGF5IiwibWFyZ2luVG9wIiwib25GaWx0ZXJDbGlja2VkIiwicHJldmVudERlZmF1bHQiLCJvblBlclBhZ2VDaGFuZ2VkIiwibmV3UGVyUGFnZVZhbHVlIiwicGVyS2V5IiwicGFyYW1zQ2hhbmdlIiwiY2hhbmdlUGFyYW1zIiwiaW5kZXgiLCJjb2x1bW5XaWR0aHMiLCJrZXkiLCJzdHlsZUZvckNvbHVtbiIsImNvbHVtbkluZGV4IiwiZXZlbiIsImRlZmF1bHRTdHlsZSIsImp1c3RpZnlDb250ZW50IiwicGFkZGluZyIsIm92ZXJmbG93IiwiT2JqZWN0IiwiYXNzaWduIiwiYmFja2dyb3VuZENvbG9yIiwiZmxleERpcmVjdGlvbiIsImFsaWduSXRlbXMiLCJtYXJnaW5SaWdodCIsImJvcmRlclJpZ2h0IiwiYWN0dWFsU3R5bGUiLCJzdHlsZUZvckhlYWRlclRleHQiLCJmb250V2VpZ2h0Iiwic3R5bGVGb3JSb3ciLCJmbGV4Iiwib25QcmVzcyIsInNpemUiLCJvblJlcXVlc3RDbG9zZSIsIm9uUmVxdWVzdENsb3NlU2V0dGluZ3MiLCJvblNldHRpbmdzQ2xpY2tlZCIsImN1cnJlbnRQYWdlIiwidG90YWxDb3VudCIsInBlclBhZ2UiLCJ0byIsIk1hdGgiLCJtaW4iLCJmcm9tIiwidG90YWxfY291bnQiLCJzZWxlY3RlZCIsIm9uQ2hhbmdlIiwib3B0aW9ucyIsImpvaW4iLCJjb2x1bW5Qcm9wcyIsInRleHRDZW50ZXIiLCJ0ZXh0QWxpZ24iLCJ0ZXh0UmlnaHQiLCJoZWFkZXJQcm9wcyIsImhvcml6b250YWwiLCJkcmFnTGlzdGtleUV4dHJhY3RvciIsIm9uSXRlbU1vdmVkIiwib25SZW9yZGVyZWQiLCJkcmFnTGlzdFJlbmRlckl0ZW1Db250ZW50IiwiZHJhZ0xpc3RDYWNoZUtleUV4dHJhY3RvciIsImFuaW1hdGlvbkFyZ3MiLCJpdGVtSW5kZXgiLCJ4IiwieSIsImFuaW1hdGVkUG9zaXRpb24iLCJ0aW1pbmciLCJzdGFydCIsImZyb21JdGVtIiwiZnJvbVBvc2l0aW9uIiwidG9JdGVtIiwidG9Qb3NpdGlvbiIsIlRhYmxlU2V0dGluZ0NvbHVtbiIsImNvbnN0cnVjdG9yIiwidG9Db2x1bW4iLCJmaW5kIiwidXBkYXRlIiwiaXNBY3RpdmUiLCJ0b3VjaFByb3BzIiwiYW5pbWF0ZWRXaWR0aCIsImFjdGl2ZSIsImhlYWRlckNsYXNzTmFtZUZvckNvbHVtbiIsImNvbW1vblByb3BzIiwiaGVhZGVyTGFiZWxGb3JDb2x1bW4iLCJsYWJlbCIsImN1cnJlbnRNb2RlbENsYXNzIiwicGF0aCIsInBhdGhQYXJ0IiwicmVsYXRpb25zaGlwcyIsInJlbGF0aW9uc2hpcCIsInJlbGF0aW9uc2hpcEluQXJyYXkiLCJ1bmRlcnNjb3JlIiwiYXR0cmlidXRlIiwiaHVtYW5BdHRyaWJ1dGVOYW1lIiwic2VyaWFsaXplRm9ybSIsImNoYW5nZVBhcmFtc1BhcmFtcyIsIkpTT04iLCJzdHJpbmdpZnkiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdGFibGUvdGFibGUuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZGlnZywgZGlnc30gZnJvbSBcImRpZ2dlcml6ZVwiXG5pbXBvcnQgUmVhY3QsIHtjcmVhdGVDb250ZXh0LCB1c2VDb250ZXh0LCB1c2VNZW1vLCB1c2VSZWZ9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQge0FuaW1hdGVkLCBQcmVzc2FibGUsIFZpZXd9IGZyb20gXCJyZWFjdC1uYXRpdmVcIlxuaW1wb3J0IEJhc2VDb21wb25lbnQgZnJvbSBcIi4uL2Jhc2UtY29tcG9uZW50XCJcbmltcG9ydCBDYXJkIGZyb20gXCIuLi9ib290c3RyYXAvY2FyZFwiXG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tIFwiY2xhc3NuYW1lc1wiXG5pbXBvcnQgQ29sbGVjdGlvbiBmcm9tIFwiLi4vY29sbGVjdGlvblwiXG5pbXBvcnQgY29sdW1uVmlzaWJsZSBmcm9tIFwiLi9jb2x1bW4tdmlzaWJsZVwiXG5pbXBvcnQgZGVib3VuY2UgZnJvbSBcImRlYm91bmNlXCJcbmltcG9ydCBEcmFnZ2FibGVTb3J0IGZyb20gXCIuLi9kcmFnZ2FibGUtc29ydC9pbmRleFwiXG5pbXBvcnQgRXZlbnRFbWl0dGVyIGZyb20gXCJldmVudHNcIlxuaW1wb3J0IEZpbHRlcnMgZnJvbSBcIi4vZmlsdGVyc1wiXG5pbXBvcnQgRmxhdExpc3QgZnJvbSBcIi4vY29tcG9uZW50cy9mbGF0LWxpc3RcIlxuaW1wb3J0IHtGb3JtfSBmcm9tIFwiLi4vZm9ybVwiXG5pbXBvcnQgSGVhZGVyIGZyb20gXCIuL2NvbXBvbmVudHMvaGVhZGVyXCJcbmltcG9ydCBIZWFkZXJDb2x1bW4gZnJvbSBcIi4vaGVhZGVyLWNvbHVtblwiXG5pbXBvcnQgSGVhZGVyU2VsZWN0IGZyb20gXCIuL2hlYWRlci1zZWxlY3RcIlxuaW1wb3J0IEljb24gZnJvbSBcIi4uL3V0aWxzL2ljb25cIlxuaW1wb3J0ICogYXMgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiXG5pbXBvcnQgbWVtbyBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvc3JjL21lbW9cIlxuaW1wb3J0IG1vZGVsQ2xhc3NSZXF1aXJlIGZyb20gXCIuLi9tb2RlbC1jbGFzcy1yZXF1aXJlXCJcbmltcG9ydCBNb2RlbFJvdyBmcm9tIFwiLi9tb2RlbC1yb3dcIlxuaW1wb3J0IFBhZ2luYXRlIGZyb20gXCIuLi9ib290c3RyYXAvcGFnaW5hdGVcIlxuaW1wb3J0IFBhcmFtcyBmcm9tIFwiLi4vcGFyYW1zXCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IFJvdyBmcm9tIFwiLi9jb21wb25lbnRzL3Jvd1wiXG5pbXBvcnQgc2VsZWN0Q2FsY3VsYXRvciBmcm9tIFwiLi9zZWxlY3QtY2FsY3VsYXRvclwiXG5pbXBvcnQgU2VsZWN0IGZyb20gXCIuLi9pbnB1dHMvc2VsZWN0XCJcbmltcG9ydCBTZXR0aW5ncyBmcm9tIFwiLi9zZXR0aW5ncy9pbmRleFwiXG5pbXBvcnQge3NoYXBlQ29tcG9uZW50fSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvc3JjL3NoYXBlLWNvbXBvbmVudFwiXG5pbXBvcnQgVGFibGVTZXR0aW5ncyBmcm9tIFwiLi90YWJsZS1zZXR0aW5nc1wiXG5pbXBvcnQgVGV4dCBmcm9tIFwiLi4vdXRpbHMvdGV4dFwiXG5pbXBvcnQgdW5pcXVuaXplIGZyb20gXCJ1bmlxdW5pemVcIlxuaW1wb3J0IHVzZUJyZWFrcG9pbnQgZnJvbSBcIi4uL3VzZS1icmVha3BvaW50XCJcbmltcG9ydCB1c2VDb2xsZWN0aW9uIGZyb20gXCIuLi91c2UtY29sbGVjdGlvblwiXG5pbXBvcnQgdXNlSTE4biBmcm9tIFwiaTE4bi1vbi1zdGVyb2lkcy9zcmMvdXNlLWkxOG5cIlxuaW1wb3J0IHVzZUV2ZW50RW1pdHRlciBmcm9tIFwiLi4vdXNlLWV2ZW50LWVtaXR0ZXJcIlxuaW1wb3J0IHVzZU1vZGVsRXZlbnQgZnJvbSBcIi4uL3VzZS1tb2RlbC1ldmVudFwiXG5pbXBvcnQgdXNlUXVlcnlQYXJhbXMgZnJvbSBcIm9uLWxvY2F0aW9uLWNoYW5nZWQvc3JjL3VzZS1xdWVyeS1wYXJhbXNcIlxuaW1wb3J0IFdpZHRocyBmcm9tIFwiLi93aWR0aHNcIlxuXG5jb25zdCBwYWdpbmF0aW9uT3B0aW9ucyA9IFszMCwgNjAsIDkwLCBbXCJBbGxcIiwgXCJhbGxcIl1dXG5jb25zdCBXb3JrZXJQbHVnaW5zQ2hlY2tBbGxDaGVja2JveCA9IFJlYWN0LmxhenkoKCkgPT4gaW1wb3J0KFwiLi93b3JrZXItcGx1Z2lucy1jaGVjay1hbGwtY2hlY2tib3hcIikpXG5jb25zdCBUYWJsZUNvbnRleHQgPSBjcmVhdGVDb250ZXh0KClcblxuY29uc3QgTGlzdEhlYWRlckNvbXBvbmVudCA9IG1lbW8oc2hhcGVDb21wb25lbnQoY2xhc3MgTGlzdEhlYWRlckNvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICBzZXR1cCgpIHtcbiAgICB0aGlzLnVzZVN0YXRlcyh7XG4gICAgICBsYXN0VXBkYXRlOiBuZXcgRGF0ZSgpXG4gICAgfSlcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7bWRVcH0gPSB1c2VCcmVha3BvaW50KClcbiAgICBjb25zdCB0YWJsZUNvbnRleHRWYWx1ZSA9IHVzZUNvbnRleHQoVGFibGVDb250ZXh0KVxuICAgIGNvbnN0IHRhYmxlID0gdGFibGVDb250ZXh0VmFsdWUudGFibGVcbiAgICBjb25zdCB7Y29sbGVjdGlvbiwgZXZlbnRzLCBxdWVyeVdpdGhvdXRQYWdpbmF0aW9uLCB0fSA9IHRhYmxlLnR0XG4gICAgY29uc3Qge3F1ZXJ5fSA9IGRpZ3MoY29sbGVjdGlvbiwgXCJxdWVyeVwiKVxuXG4gICAgdXNlRXZlbnRFbWl0dGVyKGV2ZW50cywgXCJjb2x1bW5WaXNpYmlsaXR5VXBkYXRlZFwiLCB0aGlzLnR0Lm9uQ29sdW1uVmlzaWJpbGl0eVVwZGF0ZWQpXG5cbiAgICByZXR1cm4gKFxuICAgICAgPFJvdyBkYXRhU2V0PXt7Y2xhc3M6IFwiYXBpLW1ha2VyL3RhYmxlL2hlYWRlci1yb3dcIn19IHN0eWxlPXt0YWJsZS5zdHlsZUZvclJvd0hlYWRlcigpfT5cbiAgICAgICAge3RhYmxlLnAud29ya3BsYWNlICYmIHRhYmxlLnMuY3VycmVudFdvcmtwbGFjZSAmJlxuICAgICAgICAgIDxIZWFkZXIgc3R5bGU9e3RhYmxlLnN0eWxlRm9ySGVhZGVyKHtzdHlsZToge3dpZHRoOiBtZFVwID8gNDEgOiB1bmRlZmluZWR9fSl9PlxuICAgICAgICAgICAgPFdvcmtlclBsdWdpbnNDaGVja0FsbENoZWNrYm94XG4gICAgICAgICAgICAgIGN1cnJlbnRXb3JrcGxhY2U9e3RhYmxlLnMuY3VycmVudFdvcmtwbGFjZX1cbiAgICAgICAgICAgICAgcXVlcnk9e3F1ZXJ5V2l0aG91dFBhZ2luYXRpb259XG4gICAgICAgICAgICAgIHN0eWxlPXt7bWFyZ2luSG9yaXpvbnRhbDogXCJhdXRvXCJ9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIHshbWRVcCAmJlxuICAgICAgICAgICAgICA8VGV4dCBzdHlsZT17e21hcmdpbkxlZnQ6IDN9fT5cbiAgICAgICAgICAgICAgICB7dChcIi5zZWxlY3RfYWxsX2ZvdW5kXCIsIHtkZWZhdWx0VmFsdWU6IFwiU2VsZWN0IGFsbCBmb3VuZFwifSl9XG4gICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L0hlYWRlcj5cbiAgICAgICAgfVxuICAgICAgICB7IW1kVXAgJiZcbiAgICAgICAgICA8SGVhZGVyIHN0eWxlPXt0YWJsZS5zdHlsZUZvckhlYWRlcih7c3R5bGU6IHt9fSl9PlxuICAgICAgICAgICAgPEhlYWRlclNlbGVjdCBwcmVwYXJlZENvbHVtbnM9e3RhYmxlLnMucHJlcGFyZWRDb2x1bW5zfSBxdWVyeT17cXVlcnl9IHRhYmxlPXt0YWJsZX0gLz5cbiAgICAgICAgICA8L0hlYWRlcj5cbiAgICAgICAgfVxuICAgICAgICB7bWRVcCAmJlxuICAgICAgICAgIDw+XG4gICAgICAgICAgICB7dGFibGUuaGVhZGVyc0NvbnRlbnRGcm9tQ29sdW1ucygpfVxuICAgICAgICAgICAgPEhlYWRlciBzdHlsZT17dGFibGUuc3R5bGVGb3JIZWFkZXIoe3N0eWxlOiB7fSwgdHlwZTogXCJhY3Rpb25zXCJ9KX0gLz5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgfVxuICAgICAgPC9Sb3c+XG4gICAgKVxuICB9XG5cbiAgb25Db2x1bW5WaXNpYmlsaXR5VXBkYXRlZCA9ICgpID0+IHRoaXMuc2V0U3RhdGUoe2xhc3RVcGRhdGU6IG5ldyBEYXRlKCl9KVxufSkpXG5cbmV4cG9ydCBkZWZhdWx0IG1lbW8oc2hhcGVDb21wb25lbnQoY2xhc3MgQXBpTWFrZXJUYWJsZSBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIGNhcmQ6IHRydWUsXG4gICAgY3VycmVudFVzZXI6IG51bGwsXG4gICAgZGVzdHJveUVuYWJsZWQ6IHRydWUsXG4gICAgZmlsdGVyQ2FyZDogdHJ1ZSxcbiAgICBmaWx0ZXJTdWJtaXRCdXR0b246IHRydWUsXG4gICAgbm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudDogdW5kZWZpbmVkLFxuICAgIG5vUmVjb3Jkc0ZvdW5kQ29udGVudDogdW5kZWZpbmVkLFxuICAgIHByZWxvYWRzOiBbXSxcbiAgICBzZWxlY3Q6IHt9LFxuICAgIHN0eWxlVUk6IHRydWUsXG4gICAgd29ya3BsYWNlOiBmYWxzZVxuICB9XG5cbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBhYmlsaXRpZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgYWN0aW9uc0NvbnRlbnQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIGFwcEhpc3Rvcnk6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgY2FyZDogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgY29sbGVjdGlvbjogUHJvcFR5cGVzLmluc3RhbmNlT2YoQ29sbGVjdGlvbiksXG4gICAgY29sdW1uczogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5LCBQcm9wVHlwZXMuZnVuY10pLFxuICAgIGNvbnRyb2xzOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBjdXJyZW50VXNlcjogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBkZWZhdWx0RGF0ZUZvcm1hdE5hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZGVmYXVsdERhdGVUaW1lRm9ybWF0TmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBkZWZhdWx0UGFyYW1zOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGRlc3Ryb3lFbmFibGVkOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICAgIGRlc3Ryb3lNZXNzYWdlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGVkaXRNb2RlbFBhdGg6IFByb3BUeXBlcy5mdW5jLFxuICAgIGZpbHRlckNhcmQ6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gICAgZmlsdGVyQ29udGVudDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgZmlsdGVyU3VibWl0TGFiZWw6IFByb3BUeXBlcy5ub2RlLFxuICAgIGdyb3VwQnk6IFByb3BUeXBlcy5hcnJheSxcbiAgICBoZWFkZXI6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gICAgaWRlbnRpZmllcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBtb2RlbENsYXNzOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIG5vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIG5vUmVjb3Jkc0ZvdW5kQ29udGVudDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25Nb2RlbHNMb2FkZWQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIHBhZ2luYXRlQ29udGVudDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgcGFnaW5hdGlvbkNvbXBvbmVudDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgcHJlbG9hZHM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICAgIHF1ZXJ5TWV0aG9kOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBxdWVyeU5hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgc2VsZWN0OiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIHNlbGVjdENvbHVtbnM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgc3R5bGVzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIHN0eWxlVUk6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gICAgdmlld01vZGVsUGF0aDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgd29ya3BsYWNlOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkXG4gIH1cblxuICBkcmFnZ2FibGVTb3J0RXZlbnRzID0gbmV3IEV2ZW50RW1pdHRlcigpXG4gIGV2ZW50cyA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuICB0YWJsZVNldHRpbmdzID0gbnVsbFxuXG4gIHNldHVwKCkge1xuICAgIGNvbnN0IHt0fSA9IHVzZUkxOG4oe25hbWVzcGFjZTogXCJqcy5hcGlfbWFrZXIudGFibGVcIn0pXG4gICAgY29uc3Qge25hbWU6IGJyZWFrcG9pbnQsIG1kVXB9ID0gdXNlQnJlYWtwb2ludCgpXG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSB1c2VRdWVyeVBhcmFtcygpXG5cbiAgICB0aGlzLnNldEluc3RhbmNlKHtcbiAgICAgIGJyZWFrcG9pbnQsXG4gICAgICBmaWx0ZXJGb3JtUmVmOiB1c2VSZWYoKSxcbiAgICAgIG1kVXAsXG4gICAgICB0XG4gICAgfSlcblxuICAgIGNvbnN0IGNvbGxlY3Rpb25LZXkgPSBkaWdnKHRoaXMucC5tb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKCksIFwiY29sbGVjdGlvbktleVwiKVxuICAgIGxldCBxdWVyeU5hbWUgPSB0aGlzLnByb3BzLnF1ZXJ5TmFtZVxuXG4gICAgaWYgKCFxdWVyeU5hbWUpIHF1ZXJ5TmFtZSA9IGNvbGxlY3Rpb25LZXlcblxuICAgIGNvbnN0IHF1ZXJ5U05hbWUgPSBgJHtxdWVyeU5hbWV9X3NgXG5cbiAgICB0aGlzLnVzZVN0YXRlcyh7XG4gICAgICBjb2x1bW5zOiAoKSA9PiB0aGlzLmNvbHVtbnNBc0FycmF5KCksXG4gICAgICBjdXJyZW50V29ya3BsYWNlOiB1bmRlZmluZWQsXG4gICAgICBjdXJyZW50V29ya3BsYWNlQ291bnQ6IG51bGwsXG4gICAgICBmaWx0ZXJGb3JtOiBudWxsLFxuICAgICAgY29sdW1uc1RvU2hvdzogbnVsbCxcbiAgICAgIGRyYWdnZWRDb2x1bW46IG51bGwsXG4gICAgICBpZGVudGlmaWVyOiAoKSA9PiB0aGlzLnByb3BzLmlkZW50aWZpZXIgfHwgYCR7Y29sbGVjdGlvbktleX0tZGVmYXVsdGAsXG4gICAgICBsYXN0VXBkYXRlOiAoKSA9PiBuZXcgRGF0ZSgpLFxuICAgICAgcHJlbG9hZDogdW5kZWZpbmVkLFxuICAgICAgcHJlcGFyZWRDb2x1bW5zOiB1bmRlZmluZWQsXG4gICAgICBxdWVyeU5hbWUsXG4gICAgICBxdWVyeVFOYW1lOiAoKSA9PiBgJHtxdWVyeU5hbWV9X3FgLFxuICAgICAgcXVlcnlQYWdlTmFtZTogKCkgPT4gYCR7cXVlcnlOYW1lfV9wYWdlYCxcbiAgICAgIHF1ZXJ5U05hbWUsXG4gICAgICByZXNpemluZzogZmFsc2UsXG4gICAgICBzaG93RmlsdGVyczogKCkgPT4gQm9vbGVhbihxdWVyeVBhcmFtc1txdWVyeVNOYW1lXSksXG4gICAgICBzaG93U2V0dGluZ3M6IGZhbHNlLFxuICAgICAgdGFibGVTZXR0aW5nOiB1bmRlZmluZWQsXG4gICAgICB0YWJsZVNldHRpbmdMb2FkZWQ6IGZhbHNlLFxuICAgICAgdGFibGVTZXR0aW5nRnVsbENhY2hlS2V5OiB1bmRlZmluZWQsXG4gICAgICB3aWR0aDogdW5kZWZpbmVkLFxuICAgICAgd2lkdGhzOiBudWxsXG4gICAgfSlcblxuICAgIHRoaXMudGFibGVDb250ZXh0VmFsdWUgPSB1c2VNZW1vKFxuICAgICAgKCkgPT4gKHtcbiAgICAgICAgY2FjaGVLZXk6IHRoaXMucy50YWJsZVNldHRpbmdGdWxsQ2FjaGVLZXksXG4gICAgICAgIGxhc3RVcGRhdGU6IHRoaXMucy5sYXN0VXBkYXRlLFxuICAgICAgICByZXNpemluZzogdGhpcy5zLnJlc2l6aW5nLFxuICAgICAgICB0YWJsZTogdGhpc1xuICAgICAgfSksXG4gICAgICBbdGhpcy5zLmxhc3RVcGRhdGUsIHRoaXMucy5yZXNpemluZywgdGhpcy5zLnRhYmxlU2V0dGluZ0Z1bGxDYWNoZUtleV1cbiAgICApXG5cbiAgICB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLnByb3BzLndvcmtwbGFjZSkge1xuICAgICAgICB0aGlzLmxvYWRDdXJyZW50V29ya3BsYWNlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkQ3VycmVudFdvcmtwbGFjZUNvdW50KClcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9LCBbdGhpcy5wLmN1cnJlbnRVc2VyPy5pZCgpXSlcblxuICAgIHVzZU1lbW8oKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLnR0LnRhYmxlU2V0dGluZ3MgJiYgdGhpcy5zLndpZHRoKSB7XG4gICAgICAgIHRoaXMubG9hZFRhYmxlU2V0dGluZygpXG4gICAgICB9XG4gICAgfSwgW3RoaXMucC5jdXJyZW50VXNlcj8uaWQoKSwgdGhpcy5zLndpZHRoXSlcblxuICAgIHVzZU1vZGVsRXZlbnQodGhpcy5zLmN1cnJlbnRXb3JrcGxhY2UsIFwid29ya3BsYWNlX2xpbmtzX2NyZWF0ZWRcIiwgdGhpcy50dC5vbkxpbmtzQ3JlYXRlZClcbiAgICB1c2VNb2RlbEV2ZW50KHRoaXMucy5jdXJyZW50V29ya3BsYWNlLCBcIndvcmtwbGFjZV9saW5rc19kZXN0cm95ZWRcIiwgdGhpcy50dC5vbkxpbmtzRGVzdHJveWVkKVxuXG4gICAgbGV0IGNvbGxlY3Rpb25SZWFkeSA9IHRydWVcbiAgICBsZXQgc2VsZWN0XG5cbiAgICBpZiAoIXRoaXMucy5wcmVwYXJlZENvbHVtbnMpIHtcbiAgICAgIGNvbGxlY3Rpb25SZWFkeSA9IGZhbHNlXG4gICAgfVxuXG4gICAgaWYgKGNvbGxlY3Rpb25SZWFkeSkge1xuICAgICAgc2VsZWN0ID0gc2VsZWN0Q2FsY3VsYXRvcih7dGFibGU6IHRoaXN9KVxuICAgIH1cblxuICAgIHRoaXMuY29sbGVjdGlvbiA9IHVzZUNvbGxlY3Rpb24oe1xuICAgICAgYWJpbGl0aWVzOiB0aGlzLmFiaWxpdGllc1RvTG9hZCgpLFxuICAgICAgZGVmYXVsdFBhcmFtczogdGhpcy5wcm9wcy5kZWZhdWx0UGFyYW1zLFxuICAgICAgY29sbGVjdGlvbjogdGhpcy5wcm9wcy5jb2xsZWN0aW9uLFxuICAgICAgZ3JvdXBCeTogdGhpcy5wcm9wcy5ncm91cEJ5LFxuICAgICAgaWZDb25kaXRpb246IGNvbGxlY3Rpb25SZWFkeSxcbiAgICAgIG1vZGVsQ2xhc3M6IHRoaXMucHJvcHMubW9kZWxDbGFzcyxcbiAgICAgIG9uTW9kZWxzTG9hZGVkOiB0aGlzLnByb3BzLm9uTW9kZWxzTG9hZGVkLFxuICAgICAgbm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudDogdGhpcy5wcm9wcy5ub1JlY29yZHNBdmFpbGFibGVDb250ZW50LFxuICAgICAgbm9SZWNvcmRzRm91bmRDb250ZW50OiB0aGlzLnByb3BzLm5vUmVjb3Jkc0ZvdW5kQ29udGVudCxcbiAgICAgIHBhZ2luYXRpb246IHRydWUsXG4gICAgICBwcmVsb2FkczogdGhpcy5zdGF0ZS5wcmVsb2FkLFxuICAgICAgcXVlcnlNZXRob2Q6IHRoaXMucHJvcHMucXVlcnlNZXRob2QsXG4gICAgICBxdWVyeU5hbWUsXG4gICAgICBzZWxlY3QsXG4gICAgICBzZWxlY3RDb2x1bW5zOiB0aGlzLnByb3BzLnNlbGVjdENvbHVtbnNcbiAgICB9KVxuICAgIHRoaXMucXVlcnlXaXRob3V0UGFnaW5hdGlvbiA9IHVzZU1lbW8oXG4gICAgICAoKSA9PiB0aGlzLmNvbGxlY3Rpb24/LnF1ZXJ5Py5jbG9uZSgpPy5leGNlcHQoXCJwYWdlXCIpLFxuICAgICAgW3RoaXMuY29sbGVjdGlvbi5xdWVyeV1cbiAgICApXG5cbiAgICB1c2VFdmVudEVtaXR0ZXIodGhpcy50dC5kcmFnZ2FibGVTb3J0RXZlbnRzLCBcIm9uRHJhZ1N0YXJ0XCIsIHRoaXMudHQub25EcmFnU3RhcnQpXG4gICAgdXNlRXZlbnRFbWl0dGVyKHRoaXMudHQuZHJhZ2dhYmxlU29ydEV2ZW50cywgXCJvbkRyYWdFbmRBbmltYXRpb25cIiwgdGhpcy50dC5vbkRyYWdFbmRBbmltYXRpb24pXG4gICAgdXNlRXZlbnRFbWl0dGVyKHRoaXMudHQuZXZlbnRzLCBcImNvbHVtblZpc2liaWxpdHlVcGRhdGVkXCIsIHRoaXMudHQub25Db2x1bW5WaXNpYmlsaXR5VXBkYXRlZClcbiAgfVxuXG4gIG9uQ29sdW1uVmlzaWJpbGl0eVVwZGF0ZWQgPSAoKSA9PiB0aGlzLnNldFN0YXRlKHtjb2x1bW5zVG9TaG93OiB0aGlzLmdldENvbHVtbnNUb1Nob3codGhpcy5zLmNvbHVtbnMpLCBsYXN0VXBkYXRlOiBuZXcgRGF0ZSgpfSlcbiAgb25EcmFnU3RhcnQgPSAoe2l0ZW19KSA9PiBpdGVtLmFuaW1hdGVkWkluZGV4LnNldFZhbHVlKDk5OTkpXG4gIG9uRHJhZ0VuZEFuaW1hdGlvbiA9ICh7aXRlbX0pID0+IGl0ZW0uYW5pbWF0ZWRaSW5kZXguc2V0VmFsdWUoMClcblxuICBhc3luYyBsb2FkQ3VycmVudFdvcmtwbGFjZSgpIHtcbiAgICBjb25zdCBXb3JrcGxhY2UgPSBtb2RlbENsYXNzUmVxdWlyZShcIldvcmtwbGFjZVwiKVxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFdvcmtwbGFjZS5jdXJyZW50KClcbiAgICBjb25zdCBjdXJyZW50V29ya3BsYWNlID0gZGlnZyhyZXN1bHQsIFwiY3VycmVudFwiLCAwKVxuXG4gICAgdGhpcy5zZXRTdGF0ZSh7Y3VycmVudFdvcmtwbGFjZX0pXG4gIH1cblxuICBhc3luYyBsb2FkQ3VycmVudFdvcmtwbGFjZUNvdW50KCkge1xuICAgIGNvbnN0IFdvcmtwbGFjZUxpbmsgPSBtb2RlbENsYXNzUmVxdWlyZShcIldvcmtwbGFjZUxpbmtcIilcbiAgICBjb25zdCBjdXJyZW50V29ya3BsYWNlQ291bnQgPSBhd2FpdCBXb3JrcGxhY2VMaW5rXG4gICAgICAucmFuc2Fjayh7XG4gICAgICAgIHJlc291cmNlX3R5cGVfZXE6IHRoaXMucC5tb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKCkubmFtZSxcbiAgICAgICAgd29ya3BsYWNlX2lkX2VxOiB0aGlzLnMuY3VycmVudFdvcmtwbGFjZS5pZCgpXG4gICAgICB9KVxuICAgICAgLmNvdW50KClcblxuICAgIHRoaXMuc2V0U3RhdGUoe2N1cnJlbnRXb3JrcGxhY2VDb3VudH0pXG4gIH1cblxuICBnZXRDb2x1bW5zVG9TaG93KGNvbHVtbnMpIHtcbiAgICByZXR1cm4gY29sdW1uc1xuICAgICAgLmZpbHRlcigoe2NvbHVtbiwgdGFibGVTZXR0aW5nQ29sdW1ufSkgPT4gY29sdW1uVmlzaWJsZShjb2x1bW4sIHRhYmxlU2V0dGluZ0NvbHVtbikpXG4gICAgICAuc29ydCgoYSwgYikgPT4gYS50YWJsZVNldHRpbmdDb2x1bW4ucG9zaXRpb24oKSAtIGIudGFibGVTZXR0aW5nQ29sdW1uLnBvc2l0aW9uKCkpXG4gIH1cblxuICBhc3luYyBsb2FkVGFibGVTZXR0aW5nKCkge1xuICAgIHRoaXMudGFibGVTZXR0aW5ncyA9IG5ldyBUYWJsZVNldHRpbmdzKHt0YWJsZTogdGhpc30pXG5cbiAgICBjb25zdCB0YWJsZVNldHRpbmcgPSBhd2FpdCB0aGlzLnRhYmxlU2V0dGluZ3MubG9hZEV4aXN0aW5nT3JDcmVhdGVUYWJsZVNldHRpbmdzKClcbiAgICBjb25zdCB7Y29sdW1ucywgcHJlbG9hZH0gPSB0aGlzLnRhYmxlU2V0dGluZ3MucHJlcGFyZWRDb2x1bW5zKHRhYmxlU2V0dGluZylcbiAgICBjb25zdCB7d2lkdGh9ID0gdGhpcy5zXG4gICAgY29uc3Qgd2lkdGhzID0gbmV3IFdpZHRocyh7Y29sdW1ucywgdGFibGU6IHRoaXMsIHdpZHRofSlcbiAgICBjb25zdCBjb2x1bW5zVG9TaG93ID0gdGhpcy5nZXRDb2x1bW5zVG9TaG93KGNvbHVtbnMpXG5cbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGNvbHVtbnMsXG4gICAgICBjb2x1bW5zVG9TaG93LFxuICAgICAgcHJlcGFyZWRDb2x1bW5zOiBjb2x1bW5zLFxuICAgICAgcHJlbG9hZDogdGhpcy5tZXJnZWRQcmVsb2FkcyhwcmVsb2FkKSxcbiAgICAgIHRhYmxlU2V0dGluZyxcbiAgICAgIHRhYmxlU2V0dGluZ0xvYWRlZDogdHJ1ZSxcbiAgICAgIHRhYmxlU2V0dGluZ0Z1bGxDYWNoZUtleTogdGFibGVTZXR0aW5nLmZ1bGxDYWNoZUtleSgpLFxuICAgICAgd2lkdGhzXG4gICAgfSlcbiAgfVxuXG4gIHVwZGF0ZVNldHRpbmdzRnVsbENhY2hlS2V5ID0gKCkgPT4gdGhpcy5zZXRTdGF0ZSh7dGFibGVTZXR0aW5nRnVsbENhY2hlS2V5OiB0aGlzLnN0YXRlLnRhYmxlU2V0dGluZy5mdWxsQ2FjaGVLZXkoKX0pXG5cbiAgY29sdW1uc0FzQXJyYXkgPSAoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLmNvbHVtbnMgPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICByZXR1cm4gdGhpcy5wcm9wcy5jb2x1bW5zKClcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5wcm9wcy5jb2x1bW5zXG4gIH1cblxuICBtZXJnZWRQcmVsb2FkcyhwcmVsb2FkKSB7XG4gICAgY29uc3Qge3ByZWxvYWRzfSA9IHRoaXMucHJvcHNcbiAgICBsZXQgbWVyZ2VkUHJlbG9hZHMgPSBbXVxuXG4gICAgaWYgKHByZWxvYWRzKSBtZXJnZWRQcmVsb2FkcyA9IG1lcmdlZFByZWxvYWRzLmNvbmNhdChwcmVsb2FkcylcbiAgICBpZiAocHJlbG9hZCkgbWVyZ2VkUHJlbG9hZHMgPSBtZXJnZWRQcmVsb2Fkcy5jb25jYXQocHJlbG9hZClcblxuICAgIHJldHVybiB1bmlxdW5pemUobWVyZ2VkUHJlbG9hZHMpXG4gIH1cblxuICByZW5kZXIgKCkge1xuICAgIGNvbnN0IHttb2RlbENsYXNzLCBub1JlY29yZHNBdmFpbGFibGVDb250ZW50LCBub1JlY29yZHNGb3VuZENvbnRlbnR9ID0gdGhpcy5wXG4gICAgY29uc3Qge2NvbGxlY3Rpb24sIGN1cnJlbnRVc2VyfSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCB7cXVlcnlOYW1lLCBxdWVyeVNOYW1lLCBzaG93RmlsdGVyc30gPSB0aGlzLnNcbiAgICBjb25zdCB7XG4gICAgICBtb2RlbHMsXG4gICAgICBvdmVyYWxsQ291bnQsXG4gICAgICBxUGFyYW1zLFxuICAgICAgcXVlcnksXG4gICAgICByZXN1bHQsXG4gICAgICBzaG93Tm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudCxcbiAgICAgIHNob3dOb1JlY29yZHNGb3VuZENvbnRlbnRcbiAgICB9ID0gZGlncyhcbiAgICAgIHRoaXMuY29sbGVjdGlvbixcbiAgICAgIFwibW9kZWxzXCIsXG4gICAgICBcIm92ZXJhbGxDb3VudFwiLFxuICAgICAgXCJxUGFyYW1zXCIsXG4gICAgICBcInF1ZXJ5XCIsXG4gICAgICBcInJlc3VsdFwiLFxuICAgICAgXCJzaG93Tm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudFwiLFxuICAgICAgXCJzaG93Tm9SZWNvcmRzRm91bmRDb250ZW50XCJcbiAgICApXG5cbiAgICBpZiAoY29sbGVjdGlvbiAmJiBjb2xsZWN0aW9uLmFyZ3MubW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLm5hbWUgIT0gbW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLm5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYE1vZGVsIGNsYXNzIGZyb20gY29sbGVjdGlvbiAnJHtjb2xsZWN0aW9uLmFyZ3MubW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLm5hbWV9JyBgICtcbiAgICAgICAgYGRpZG4ndCBtYXRjaCBtb2RlbCBjbGFzcyBvbiB0YWJsZTogJyR7bW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLm5hbWV9J2BcbiAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFZpZXcgZGF0YVNldD17e2NsYXNzOiB0aGlzLmNsYXNzTmFtZSgpfX0gb25MYXlvdXQ9e3RoaXMudHQub25Db250YWluZXJMYXlvdXR9IHN0eWxlPXt0aGlzLnByb3BzLnN0eWxlcz8uY29udGFpbmVyfT5cbiAgICAgICAge3Nob3dOb1JlY29yZHNBdmFpbGFibGVDb250ZW50ICYmXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsaXZlLXRhYmxlLS1uby1yZWNvcmRzLWF2YWlsYWJsZS1jb250ZW50XCI+XG4gICAgICAgICAgICB7bm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudCh7bW9kZWxzLCBxUGFyYW1zLCBvdmVyYWxsQ291bnR9KX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICB7c2hvd05vUmVjb3Jkc0ZvdW5kQ29udGVudCAmJlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGl2ZS10YWJsZS0tbm8tcmVjb3Jkcy1mb3VuZC1jb250ZW50XCI+XG4gICAgICAgICAgICB7bm9SZWNvcmRzRm91bmRDb250ZW50KHttb2RlbHMsIHFQYXJhbXMsIG92ZXJhbGxDb3VudH0pfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIHtzaG93RmlsdGVycyAmJlxuICAgICAgICAgIDxGaWx0ZXJzIGN1cnJlbnRVc2VyPXtjdXJyZW50VXNlcn0gbW9kZWxDbGFzcz17bW9kZWxDbGFzc30gcXVlcnlOYW1lPXtxdWVyeU5hbWV9IHF1ZXJ5U05hbWU9e3F1ZXJ5U05hbWV9IC8+XG4gICAgICAgIH1cbiAgICAgICAge3FQYXJhbXMgJiYgcXVlcnkgJiYgcmVzdWx0ICYmIG1vZGVscyAmJiAhc2hvd05vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnQgJiYgIXNob3dOb1JlY29yZHNGb3VuZENvbnRlbnQgJiZcbiAgICAgICAgICB0aGlzLmNhcmRPclRhYmxlKClcbiAgICAgICAgfVxuICAgICAgPC9WaWV3PlxuICAgIClcbiAgfVxuXG4gIGFiaWxpdGllc1RvTG9hZCAoKSB7XG4gICAgY29uc3QgYWJpbGl0aWVzVG9Mb2FkID0ge31cbiAgICBjb25zdCB7YWJpbGl0aWVzLCBtb2RlbENsYXNzfSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCBvd25BYmlsaXRpZXMgPSBbXVxuXG4gICAgaWYgKHRoaXMucHJvcHMuZGVzdHJveUVuYWJsZWQpIG93bkFiaWxpdGllcy5wdXNoKFwiZGVzdHJveVwiKVxuICAgIGlmICh0aGlzLnByb3BzLmVkaXRNb2RlbFBhdGgpIG93bkFiaWxpdGllcy5wdXNoKFwiZWRpdFwiKVxuICAgIGlmICh0aGlzLnByb3BzLnZpZXdNb2RlbFBhdGgpIG93bkFiaWxpdGllcy5wdXNoKFwic2hvd1wiKVxuXG4gICAgaWYgKG93bkFiaWxpdGllcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBtb2RlbENsYXNzTmFtZSA9IGRpZ2cobW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLCBcIm5hbWVcIilcblxuICAgICAgYWJpbGl0aWVzVG9Mb2FkW21vZGVsQ2xhc3NOYW1lXSA9IG93bkFiaWxpdGllc1xuICAgIH1cblxuICAgIGlmIChhYmlsaXRpZXMpIHtcbiAgICAgIGZvciAoY29uc3QgbW9kZWxOYW1lIGluIGFiaWxpdGllcykge1xuICAgICAgICBpZiAoIShtb2RlbE5hbWUgaW4gYWJpbGl0aWVzVG9Mb2FkKSkge1xuICAgICAgICAgIGFiaWxpdGllc1RvTG9hZFttb2RlbE5hbWVdID0gW11cbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgYWJpbGl0eSBvZiBhYmlsaXRpZXNbbW9kZWxOYW1lXSkge1xuICAgICAgICAgIGFiaWxpdGllc1RvTG9hZFttb2RlbE5hbWVdLnB1c2goYWJpbGl0eSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBhYmlsaXRpZXNUb0xvYWRcbiAgfVxuXG4gIGNhcmRPclRhYmxlICgpIHtcbiAgICBjb25zdCB7XG4gICAgICBhYmlsaXRpZXMsXG4gICAgICBhY3Rpb25zQ29udGVudCxcbiAgICAgIGFwcEhpc3RvcnksXG4gICAgICBjYXJkLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgY29sbGVjdGlvbixcbiAgICAgIGNvbHVtbnMsXG4gICAgICBjb250cm9scyxcbiAgICAgIGN1cnJlbnRVc2VyLFxuICAgICAgZGVmYXVsdERhdGVGb3JtYXROYW1lLFxuICAgICAgZGVmYXVsdERhdGVUaW1lRm9ybWF0TmFtZSxcbiAgICAgIGRlZmF1bHRQYXJhbXMsXG4gICAgICBkZXN0cm95RW5hYmxlZCxcbiAgICAgIGRlc3Ryb3lNZXNzYWdlLFxuICAgICAgZWRpdE1vZGVsUGF0aCxcbiAgICAgIGZpbHRlckNhcmQsXG4gICAgICBmaWx0ZXJDb250ZW50LFxuICAgICAgZmlsdGVyU3VibWl0QnV0dG9uLFxuICAgICAgZmlsdGVyU3VibWl0TGFiZWwsXG4gICAgICBncm91cEJ5LFxuICAgICAgaGVhZGVyLFxuICAgICAgaWRlbnRpZmllcixcbiAgICAgIG1vZGVsQ2xhc3MsXG4gICAgICBub1JlY29yZHNBdmFpbGFibGVDb250ZW50LFxuICAgICAgbm9SZWNvcmRzRm91bmRDb250ZW50LFxuICAgICAgb25Nb2RlbHNMb2FkZWQsXG4gICAgICBwYWdpbmF0ZUNvbnRlbnQsXG4gICAgICBwYWdpbmF0aW9uQ29tcG9uZW50LFxuICAgICAgcHJlbG9hZHMsXG4gICAgICBxdWVyeU1ldGhvZCxcbiAgICAgIHF1ZXJ5TmFtZSxcbiAgICAgIHNlbGVjdCxcbiAgICAgIHNlbGVjdENvbHVtbnMsXG4gICAgICBzdHlsZVVJLFxuICAgICAgdmlld01vZGVsUGF0aCxcbiAgICAgIHdvcmtwbGFjZSxcbiAgICAgIC4uLnJlc3RQcm9wc1xuICAgIH0gPSB0aGlzLnByb3BzXG4gICAgY29uc3Qge21vZGVscywgcVBhcmFtcywgcXVlcnksIHJlc3VsdH0gPSBkaWdzKHRoaXMuY29sbGVjdGlvbiwgXCJtb2RlbHNcIiwgXCJxUGFyYW1zXCIsIFwicXVlcnlcIiwgXCJyZXN1bHRcIilcblxuICAgIGxldCBoZWFkZXJDb250ZW50LCBQYWdpbmF0aW9uQ29tcG9uZW50XG5cbiAgICBpZiAodHlwZW9mIGhlYWRlciA9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIGhlYWRlckNvbnRlbnQgPSBoZWFkZXIoe21vZGVscywgcVBhcmFtcywgcXVlcnksIHJlc3VsdH0pXG4gICAgfSBlbHNlIGlmIChoZWFkZXIpIHtcbiAgICAgIGhlYWRlckNvbnRlbnQgPSBoZWFkZXJcbiAgICB9IGVsc2Uge1xuICAgICAgaGVhZGVyQ29udGVudCA9IG1vZGVsQ2xhc3MubW9kZWxOYW1lKCkuaHVtYW4oe2NvdW50OiAyfSlcbiAgICB9XG5cbiAgICBpZiAoIXBhZ2luYXRlQ29udGVudCkge1xuICAgICAgaWYgKHBhZ2luYXRpb25Db21wb25lbnQpIHtcbiAgICAgICAgUGFnaW5hdGlvbkNvbXBvbmVudCA9IHBhZ2luYXRpb25Db21wb25lbnRcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIFBhZ2luYXRpb25Db21wb25lbnQgPSBQYWdpbmF0ZVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGZsYXRMaXN0U3R5bGUgPSB7XG4gICAgICBvdmVyZmxvd1g6IFwiYXV0b1wiXG4gICAgfVxuXG4gICAgaWYgKHN0eWxlVUkpIHtcbiAgICAgIGZsYXRMaXN0U3R5bGUuYm9yZGVyID0gXCIxcHggc29saWQgI2RiZGJkYlwiXG4gICAgICBmbGF0TGlzdFN0eWxlLmJvcmRlclJhZGl1cyA9IDVcbiAgICB9XG5cbiAgICBjb25zdCBmbGF0TGlzdCA9IChcbiAgICAgIDxUYWJsZUNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3RoaXMudHQudGFibGVDb250ZXh0VmFsdWV9PlxuICAgICAgICA8RmxhdExpc3RcbiAgICAgICAgICBkYXRhPXttb2RlbHN9XG4gICAgICAgICAgZGF0YVNldD17e1xuICAgICAgICAgICAgY2xhc3M6IGNsYXNzTmFtZXMoXCJhcGktbWFrZXItLXRhYmxlXCIsIGNsYXNzTmFtZSksXG4gICAgICAgICAgICBjYWNoZUtleTogdGhpcy5zLnRhYmxlU2V0dGluZ0Z1bGxDYWNoZUtleSxcbiAgICAgICAgICAgIGxhc3RVcGRhdGU6IHRoaXMucy5sYXN0VXBkYXRlXG4gICAgICAgICAgfX1cbiAgICAgICAgICBleHRyYURhdGE9e3RoaXMucy5sYXN0VXBkYXRlfVxuICAgICAgICAgIGtleUV4dHJhY3Rvcj17dGhpcy50dC5rZXlFeHRyYXRvcn1cbiAgICAgICAgICBMaXN0SGVhZGVyQ29tcG9uZW50PXtMaXN0SGVhZGVyQ29tcG9uZW50fVxuICAgICAgICAgIHJlbmRlckl0ZW09e3RoaXMudHQucmVuZGVySXRlbX1cbiAgICAgICAgICBzaG93c0hvcml6b250YWxTY3JvbGxJbmRpY2F0b3JcbiAgICAgICAgICBzdHlsZT17ZmxhdExpc3RTdHlsZX1cbiAgICAgICAgICB7Li4ucmVzdFByb3BzfVxuICAgICAgICAvPlxuICAgICAgPC9UYWJsZUNvbnRleHQuUHJvdmlkZXI+XG4gICAgKVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIHtmaWx0ZXJDb250ZW50ICYmIGZpbHRlckNhcmQgJiZcbiAgICAgICAgICA8Q2FyZCBjbGFzc05hbWU9XCJsaXZlLXRhYmxlLS1maWx0ZXItY2FyZCBtYi00XCI+XG4gICAgICAgICAgICB7dGhpcy5maWx0ZXJGb3JtKCl9XG4gICAgICAgICAgPC9DYXJkPlxuICAgICAgICB9XG4gICAgICAgIHtmaWx0ZXJDb250ZW50ICYmICFmaWx0ZXJDYXJkICYmXG4gICAgICAgICAgdGhpcy5maWx0ZXJGb3JtKClcbiAgICAgICAgfVxuICAgICAgICB7Y2FyZCAmJlxuICAgICAgICAgIDxDYXJkXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoXCJsaXZlLXRhYmxlLS10YWJsZS1jYXJkXCIsIFwibWItNFwiLCBjbGFzc05hbWUpfVxuICAgICAgICAgICAgY29udHJvbHM9e3RoaXMudGFibGVDb250cm9scygpfVxuICAgICAgICAgICAgaGVhZGVyPXtoZWFkZXJDb250ZW50fVxuICAgICAgICAgICAgZm9vdGVyPXt0aGlzLnRhYmxlRm9vdGVyKCl9XG4gICAgICAgICAgICB7Li4ucmVzdFByb3BzfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtmbGF0TGlzdH1cbiAgICAgICAgICA8L0NhcmQ+XG4gICAgICAgIH1cbiAgICAgICAgeyFjYXJkICYmIGZsYXRMaXN0fVxuICAgICAgICB7cmVzdWx0ICYmIFBhZ2luYXRpb25Db21wb25lbnQgJiZcbiAgICAgICAgICA8UGFnaW5hdGlvbkNvbXBvbmVudCByZXN1bHQ9e3Jlc3VsdH0gLz5cbiAgICAgICAgfVxuICAgICAgICB7cmVzdWx0ICYmIHBhZ2luYXRlQ29udGVudCAmJlxuICAgICAgICAgIHBhZ2luYXRlQ29udGVudCh7cmVzdWx0fSlcbiAgICAgICAgfVxuICAgICAgPC8+XG4gICAgKVxuICB9XG5cbiAgb25Db250YWluZXJMYXlvdXQgPSAoZSkgPT4ge1xuICAgIGNvbnN0IHt3aWR0aH0gPSBlLm5hdGl2ZUV2ZW50LmxheW91dFxuICAgIGNvbnN0IHt3aWR0aHN9ID0gdGhpcy5zXG5cbiAgICB0aGlzLnNldFN0YXRlKHt3aWR0aH0pXG4gICAgaWYgKHdpZHRocykgd2lkdGhzLnRhYmxlV2lkdGggPSB3aWR0aFxuICB9XG5cbiAgb25MaW5rc0NyZWF0ZWQgPSAoe2FyZ3N9KSA9PiB7XG4gICAgY29uc3QgbW9kZWxDbGFzc05hbWUgPSB0aGlzLnAubW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLm5hbWVcblxuICAgIGlmIChhcmdzLmNyZWF0ZWRbbW9kZWxDbGFzc05hbWVdKSB7XG4gICAgICBjb25zdCBhbW91bnRDcmVhdGVkID0gYXJncy5jcmVhdGVkW21vZGVsQ2xhc3NOYW1lXS5sZW5ndGhcblxuICAgICAgdGhpcy5zZXRTdGF0ZSgocHJldlN0YXRlKSA9PiAoe1xuICAgICAgICBjdXJyZW50V29ya3BsYWNlQ291bnQ6IHByZXZTdGF0ZS5jdXJyZW50V29ya3BsYWNlQ291bnQgKyBhbW91bnRDcmVhdGVkXG4gICAgICB9KSlcbiAgICB9XG4gIH1cblxuICBvbkxpbmtzRGVzdHJveWVkID0gKHthcmdzfSkgPT4ge1xuICAgIGNvbnN0IG1vZGVsQ2xhc3NOYW1lID0gdGhpcy5wLm1vZGVsQ2xhc3MubW9kZWxDbGFzc0RhdGEoKS5uYW1lXG5cbiAgICBpZiAoYXJncy5kZXN0cm95ZWRbbW9kZWxDbGFzc05hbWVdKSB7XG4gICAgICBjb25zdCBhbW91bnREZXN0cm95ZWQgPSBhcmdzLmRlc3Ryb3llZFttb2RlbENsYXNzTmFtZV0ubGVuZ3RoXG5cbiAgICAgIHRoaXMuc2V0U3RhdGUoKHByZXZTdGF0ZSkgPT4gKHtcbiAgICAgICAgY3VycmVudFdvcmtwbGFjZUNvdW50OiBwcmV2U3RhdGUuY3VycmVudFdvcmtwbGFjZUNvdW50IC0gYW1vdW50RGVzdHJveWVkXG4gICAgICB9KSlcbiAgICB9XG4gIH1cblxuICBrZXlFeHRyYXRvciA9IChtb2RlbCkgPT4gYCR7dGhpcy5zLnRhYmxlU2V0dGluZ0Z1bGxDYWNoZUtleX0tJHttb2RlbC5pZCgpfWBcblxuICBmaWx0ZXJGb3JtID0gKCkgPT4ge1xuICAgIGNvbnN0IHtmaWx0ZXJGb3JtUmVmLCBzdWJtaXRGaWx0ZXIsIHN1Ym1pdEZpbHRlckRlYm91bmNlfSA9IHRoaXMudHRcbiAgICBjb25zdCB7ZmlsdGVyQ29udGVudCwgZmlsdGVyU3VibWl0QnV0dG9ufSA9IHRoaXMucFxuICAgIGNvbnN0IHtxdWVyeVFOYW1lfSA9IHRoaXMuc1xuICAgIGNvbnN0IHtmaWx0ZXJTdWJtaXRMYWJlbH0gPSB0aGlzLnByb3BzXG4gICAgY29uc3Qge3FQYXJhbXN9ID0gZGlncyh0aGlzLmNvbGxlY3Rpb24sIFwicVBhcmFtc1wiKVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxGb3JtIGNsYXNzTmFtZT1cImxpdmUtdGFibGUtLWZpbHRlci1mb3JtXCIgZm9ybVJlZj17ZmlsdGVyRm9ybVJlZn0gb25TdWJtaXQ9e3RoaXMudHQub25GaWx0ZXJGb3JtU3VibWl0fSBzZXRGb3JtPXt0aGlzLnNldFN0YXRlcy5maWx0ZXJGb3JtfT5cbiAgICAgICAge1wic1wiIGluIHFQYXJhbXMgJiZcbiAgICAgICAgICA8aW5wdXQgbmFtZT1cInNcIiB0eXBlPVwiaGlkZGVuXCIgdmFsdWU9e3FQYXJhbXMuc30gLz5cbiAgICAgICAgfVxuICAgICAgICB7ZmlsdGVyQ29udGVudCh7XG4gICAgICAgICAgb25GaWx0ZXJDaGFuZ2VkOiBzdWJtaXRGaWx0ZXIsXG4gICAgICAgICAgb25GaWx0ZXJDaGFuZ2VkV2l0aERlbGF5OiBzdWJtaXRGaWx0ZXJEZWJvdW5jZSxcbiAgICAgICAgICBxUGFyYW1zLFxuICAgICAgICAgIHF1ZXJ5UU5hbWVcbiAgICAgICAgfSl9XG4gICAgICAgIHtmaWx0ZXJTdWJtaXRCdXR0b24gJiZcbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImJ0biBidG4tcHJpbWFyeSBsaXZlLXRhYmxlLS1zdWJtaXQtZmlsdGVyLWJ1dHRvblwiXG4gICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgIHN0eWxlPXt7bWFyZ2luVG9wOiBcIjhweFwifX1cbiAgICAgICAgICAgIHZhbHVlPXtmaWx0ZXJTdWJtaXRMYWJlbCB8fCB0aGlzLnQoXCIuZmlsdGVyXCIsIHtkZWZhdWx0VmFsdWU6IFwiRmlsdGVyXCJ9KX1cbiAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgICA8L0Zvcm0+XG4gICAgKVxuICB9XG5cbiAgb25GaWx0ZXJDbGlja2VkID0gKGUpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICB0aGlzLnNldFN0YXRlKHtzaG93RmlsdGVyczogIXRoaXMuc3RhdGUuc2hvd0ZpbHRlcnN9KVxuICB9XG5cbiAgb25QZXJQYWdlQ2hhbmdlZCA9IChlKSA9PiB7XG4gICAgY29uc3Qge3F1ZXJ5TmFtZX0gPSB0aGlzLnNcbiAgICBjb25zdCBuZXdQZXJQYWdlVmFsdWUgPSBkaWdnKGUsIFwidGFyZ2V0XCIsIFwidmFsdWVcIilcbiAgICBjb25zdCBwZXJLZXkgPSBgJHtxdWVyeU5hbWV9X3BlcmBcbiAgICBjb25zdCBwYXJhbXNDaGFuZ2UgPSB7fVxuXG4gICAgcGFyYW1zQ2hhbmdlW3BlcktleV0gPSBuZXdQZXJQYWdlVmFsdWVcblxuICAgIFBhcmFtcy5jaGFuZ2VQYXJhbXMocGFyYW1zQ2hhbmdlKVxuICB9XG5cbiAgcmVuZGVySXRlbSA9ICh7aW5kZXgsIGl0ZW06IG1vZGVsfSkgPT4ge1xuICAgIGlmICghdGhpcy5zLnRhYmxlU2V0dGluZ0xvYWRlZCkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFZpZXc+XG4gICAgICAgICAgPFRleHQ+XG4gICAgICAgICAgICB7dGhpcy50KFwiLmxvYWRpbmdfZG90X2RvdF9kb3RcIiwge2RlZmF1bHRWYWx1ZTogXCJMb2FkaW5nLi4uXCJ9KX1cbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgIDwvVmlldz5cbiAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPE1vZGVsUm93XG4gICAgICAgIGNhY2hlS2V5PXttb2RlbC5jYWNoZUtleSgpfVxuICAgICAgICBjb2x1bW5zPXt0aGlzLnMuY29sdW1uc1RvU2hvd31cbiAgICAgICAgY29sdW1uV2lkdGhzPXt0aGlzLmNvbHVtbldpZHRocygpfVxuICAgICAgICBldmVudHM9e3RoaXMudHQuZXZlbnRzfVxuICAgICAgICBpbmRleD17aW5kZXh9XG4gICAgICAgIGtleT17bW9kZWwuaWQoKX1cbiAgICAgICAgbW9kZWw9e21vZGVsfVxuICAgICAgICB0YWJsZT17dGhpc31cbiAgICAgICAgdGFibGVTZXR0aW5nRnVsbENhY2hlS2V5PXt0aGlzLnMudGFibGVTZXR0aW5nRnVsbENhY2hlS2V5fVxuICAgICAgLz5cbiAgICApXG4gIH1cblxuICBzdHlsZUZvckNvbHVtbiA9ICh7Y29sdW1uLCBjb2x1bW5JbmRleCwgZXZlbiwgc3R5bGUsIHR5cGV9KSA9PiB7XG4gICAgY29uc3Qge3N0eWxlVUl9ID0gdGhpcy5wXG4gICAgY29uc3QgZGVmYXVsdFN0eWxlID0ge1xuICAgICAganVzdGlmeUNvbnRlbnQ6IFwiY2VudGVyXCIsXG4gICAgICBwYWRkaW5nOiA4LFxuICAgICAgb3ZlcmZsb3c6IFwiaGlkZGVuXCJcbiAgICB9XG5cbiAgICBpZiAoc3R5bGVVSSkge1xuICAgICAgT2JqZWN0LmFzc2lnbihkZWZhdWx0U3R5bGUsIHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiBldmVuID8gXCIjZjVmNWY1XCIgOiBcIiNmZmZcIlxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAodHlwZSA9PSBcImFjdGlvbnNcIikge1xuICAgICAgZGVmYXVsdFN0eWxlLmZsZXhEaXJlY3Rpb24gPSBcInJvd1wiXG4gICAgICBkZWZhdWx0U3R5bGUuYWxpZ25JdGVtcyA9IFwiY2VudGVyXCJcblxuICAgICAgaWYgKHRoaXMudHQubWRVcCkge1xuICAgICAgICBkZWZhdWx0U3R5bGUubWFyZ2luTGVmdCA9IFwiYXV0b1wiXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWZhdWx0U3R5bGUubWFyZ2luUmlnaHQgPSBcImF1dG9cIlxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy50dC5tZFVwICYmIHN0eWxlVUkpIHtcbiAgICAgIGRlZmF1bHRTdHlsZS5ib3JkZXJSaWdodCA9IFwiMXB4IHNvbGlkICNkYmRiZGJcIlxuICAgIH1cblxuICAgIGNvbnN0IGFjdHVhbFN0eWxlID0gT2JqZWN0LmFzc2lnbihcbiAgICAgIGRlZmF1bHRTdHlsZSxcbiAgICAgIHN0eWxlXG4gICAgKVxuXG4gICAgcmV0dXJuIGFjdHVhbFN0eWxlXG4gIH1cblxuICBzdHlsZUZvckhlYWRlciA9ICh7Y29sdW1uLCBjb2x1bW5JbmRleCwgc3R5bGUsIHR5cGV9KSA9PiB7XG4gICAgY29uc3Qge21kVXB9ID0gdGhpcy50dFxuICAgIGNvbnN0IGRlZmF1bHRTdHlsZSA9IHtcbiAgICAgIGZsZXhEaXJlY3Rpb246IFwicm93XCIsXG4gICAgICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICAgICAgcGFkZGluZzogOFxuICAgIH1cblxuICAgIGlmICh0eXBlICE9IFwiYWN0aW9uc1wiICYmIG1kVXAgJiYgdGhpcy5wLnN0eWxlVUkpIHtcbiAgICAgIGRlZmF1bHRTdHlsZS5ib3JkZXJSaWdodCA9IFwiMXB4IHNvbGlkICNkYmRiZGJcIlxuICAgIH1cblxuICAgIGNvbnN0IGFjdHVhbFN0eWxlID0gT2JqZWN0LmFzc2lnbihcbiAgICAgIGRlZmF1bHRTdHlsZSxcbiAgICAgIHN0eWxlXG4gICAgKVxuXG4gICAgcmV0dXJuIGFjdHVhbFN0eWxlXG4gIH1cblxuICBzdHlsZUZvckhlYWRlclRleHQoKSB7XG4gICAgY29uc3QgYWN0dWFsU3R5bGUgPSB7Zm9udFdlaWdodDogXCJib2xkXCJ9XG5cbiAgICByZXR1cm4gYWN0dWFsU3R5bGVcbiAgfVxuXG4gIHN0eWxlRm9yUm93ID0gKHtldmVufSA9IHt9KSA9PiB7XG4gICAgY29uc3QgYWN0dWFsU3R5bGUgPSB7XG4gICAgICBmbGV4OiAxLFxuICAgICAgYWxpZ25JdGVtczogXCJzdHJldGNoXCJcbiAgICB9XG5cbiAgICBpZiAoZXZlbiAmJiB0aGlzLnAuc3R5bGVVSSkge1xuICAgICAgYWN0dWFsU3R5bGUuYmFja2dyb3VuZENvbG9yID0gXCIjZjVmNWY1XCJcbiAgICB9XG5cbiAgICByZXR1cm4gYWN0dWFsU3R5bGVcbiAgfVxuXG4gIHN0eWxlRm9yUm93SGVhZGVyID0gKCkgPT4ge1xuICAgIGNvbnN0IGFjdHVhbFN0eWxlID0ge1xuICAgICAgZmxleDogMSxcbiAgICAgIGFsaWduSXRlbXM6IFwic3RyZXRjaFwiXG4gICAgfVxuXG4gICAgcmV0dXJuIGFjdHVhbFN0eWxlXG4gIH1cblxuICB0YWJsZUNvbnRyb2xzKCkge1xuICAgIGNvbnN0IHtjb250cm9sc30gPSB0aGlzLnByb3BzXG4gICAgY29uc3Qge3Nob3dTZXR0aW5nc30gPSB0aGlzLnNcbiAgICBjb25zdCB7bW9kZWxzLCBxUGFyYW1zLCBxdWVyeSwgcmVzdWx0fSA9IGRpZ3ModGhpcy5jb2xsZWN0aW9uLCBcIm1vZGVsc1wiLCBcInFQYXJhbXNcIiwgXCJxdWVyeVwiLCBcInJlc3VsdFwiKVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxWaWV3IHN0eWxlPXt7ZmxleERpcmVjdGlvbjogXCJyb3dcIn19PlxuICAgICAgICB7Y29udHJvbHMgJiYgY29udHJvbHMoe21vZGVscywgcVBhcmFtcywgcXVlcnksIHJlc3VsdH0pfVxuICAgICAgICA8UHJlc3NhYmxlIGRhdGFTZXQ9e3tjbGFzczogXCJmaWx0ZXItYnV0dG9uXCJ9fSBvblByZXNzPXt0aGlzLnR0Lm9uRmlsdGVyQ2xpY2tlZH0+XG4gICAgICAgICAgPEljb24gbmFtZT1cInNlYXJjaFwiIHNpemU9ezIwfSAvPlxuICAgICAgICA8L1ByZXNzYWJsZT5cbiAgICAgICAgPFZpZXcgc3R5bGU9e3twb3NpdGlvbjogXCJyZWxhdGl2ZVwifX0+XG4gICAgICAgICAge3Nob3dTZXR0aW5ncyAmJlxuICAgICAgICAgICAgPFNldHRpbmdzIG9uUmVxdWVzdENsb3NlPXt0aGlzLnR0Lm9uUmVxdWVzdENsb3NlU2V0dGluZ3N9IHRhYmxlPXt0aGlzfSAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICA8UHJlc3NhYmxlIGRhdGFTZXQ9e3tjbGFzczogXCJzZXR0aW5ncy1idXR0b25cIn19IG9uUHJlc3M9e3RoaXMudHQub25TZXR0aW5nc0NsaWNrZWR9PlxuICAgICAgICAgICAgPEljb24gbmFtZT1cImdlYXJcIiBzaXplPXsyMH0gLz5cbiAgICAgICAgICA8L1ByZXNzYWJsZT5cbiAgICAgICAgPC9WaWV3PlxuICAgICAgPC9WaWV3PlxuICAgIClcbiAgfVxuXG4gIHRhYmxlRm9vdGVyKCkge1xuICAgIGNvbnN0IHtyZXN1bHR9ID0gZGlncyh0aGlzLmNvbGxlY3Rpb24sIFwicmVzdWx0XCIpXG4gICAgY29uc3QgY3VycmVudFBhZ2UgPSByZXN1bHQuY3VycmVudFBhZ2UoKVxuICAgIGNvbnN0IHRvdGFsQ291bnQgPSByZXN1bHQudG90YWxDb3VudCgpXG4gICAgY29uc3QgcGVyUGFnZSA9IHJlc3VsdC5wZXJQYWdlKClcbiAgICBjb25zdCB0byA9IE1hdGgubWluKGN1cnJlbnRQYWdlICogcGVyUGFnZSwgdG90YWxDb3VudClcbiAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSBcIlNob3dpbmcgJXtmcm9tfSB0byAle3RvfSBvdXQgb2YgJXt0b3RhbF9jb3VudH0gdG90YWwuXCJcbiAgICBsZXQgZnJvbSA9ICgoY3VycmVudFBhZ2UgLSAxKSAqIHBlclBhZ2UpICsgMVxuXG4gICAgaWYgKHRvID09PSAwKSBmcm9tID0gMFxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxWaWV3IHN0eWxlPXt7ZmxleERpcmVjdGlvbjogXCJyb3dcIiwganVzdGlmeUNvbnRlbnQ6IFwic3BhY2UtYmV0d2VlblwiLCBtYXJnaW5Ub3A6IDEwfX0+XG4gICAgICAgIDxWaWV3IGRhdGFTZXQ9e3tjbGFzczogXCJzaG93aW5nLWNvdW50c1wifX0gc3R5bGU9e3tmbGV4RGlyZWN0aW9uOiBcInJvd1wifX0+XG4gICAgICAgICAgPFRleHQ+XG4gICAgICAgICAgICB7dGhpcy50KFwiLnNob3dpbmdfZnJvbV90b19vdXRfb2ZfdG90YWxcIiwge2RlZmF1bHRWYWx1ZSwgZnJvbSwgdG8sIHRvdGFsX2NvdW50OiB0b3RhbENvdW50fSl9XG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgIHt0aGlzLnAud29ya3BsYWNlICYmIHRoaXMucy5jdXJyZW50V29ya3BsYWNlQ291bnQgIT09IG51bGwgJiZcbiAgICAgICAgICAgIDxUZXh0IHN0eWxlPXt7bWFyZ2luTGVmdDogM319PlxuICAgICAgICAgICAgICB7dGhpcy50KFwiLnhfc2VsZWN0ZWRcIiwge2RlZmF1bHRWYWx1ZTogXCIle3NlbGVjdGVkfSBzZWxlY3RlZC5cIiwgc2VsZWN0ZWQ6IHRoaXMucy5jdXJyZW50V29ya3BsYWNlQ291bnR9KX1cbiAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICB9XG4gICAgICAgIDwvVmlldz5cbiAgICAgICAgPFZpZXc+XG4gICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgY2xhc3NOYW1lPVwicGVyLXBhZ2Utc2VsZWN0XCJcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZT17cGVyUGFnZX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLnR0Lm9uUGVyUGFnZUNoYW5nZWR9XG4gICAgICAgICAgICBvcHRpb25zPXtwYWdpbmF0aW9uT3B0aW9uc31cbiAgICAgICAgICAvPlxuICAgICAgICA8L1ZpZXc+XG4gICAgICA8L1ZpZXc+XG4gICAgKVxuICB9XG5cbiAgY2xhc3NOYW1lKCkge1xuICAgIGNvbnN0IGNsYXNzTmFtZXMgPSBbXCJhcGktbWFrZXItLXRhYmxlXCJdXG5cbiAgICBpZiAodGhpcy5wcm9wcy5jbGFzc05hbWUpIHtcbiAgICAgIGNsYXNzTmFtZXMucHVzaCh0aGlzLnByb3BzLmNsYXNzTmFtZSlcbiAgICB9XG5cbiAgICByZXR1cm4gY2xhc3NOYW1lcy5qb2luKFwiIFwiKVxuICB9XG5cbiAgY29sdW1uUHJvcHMoY29sdW1uKSB7XG4gICAgY29uc3QgcHJvcHMgPSB7fVxuXG4gICAgaWYgKGNvbHVtbi50ZXh0Q2VudGVyKSB7XG4gICAgICBwcm9wcy5zdHlsZSB8fD0ge31cbiAgICAgIHByb3BzLnN0eWxlLnRleHRBbGlnbiA9IFwiY2VudGVyXCJcbiAgICB9XG5cbiAgICBpZiAoY29sdW1uLnRleHRSaWdodCkge1xuICAgICAgcHJvcHMuc3R5bGUgfHw9IHt9XG4gICAgICBwcm9wcy5zdHlsZS50ZXh0QWxpZ24gPSBcInJpZ2h0XCJcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvcHNcbiAgfVxuXG4gIGhlYWRlclByb3BzKGNvbHVtbikge1xuICAgIGNvbnN0IHByb3BzID0ge31cblxuICAgIGlmIChjb2x1bW4udGV4dENlbnRlcikge1xuICAgICAgcHJvcHMuc3R5bGUgfHw9IHt9XG4gICAgICBwcm9wcy5zdHlsZS5qdXN0aWZ5Q29udGVudCA9IFwiY2VudGVyXCJcbiAgICB9XG5cbiAgICBpZiAoY29sdW1uLnRleHRSaWdodCkge1xuICAgICAgcHJvcHMuc3R5bGUgfHw9IHt9XG4gICAgICBwcm9wcy5zdHlsZS5qdXN0aWZ5Q29udGVudCA9IFwiZW5kXCJcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvcHNcbiAgfVxuXG4gIGNvbHVtbldpZHRocygpIHtcbiAgICBjb25zdCBjb2x1bW5XaWR0aHMgPSB7fVxuXG4gICAgZm9yIChjb25zdCBjb2x1bW4gb2YgdGhpcy5zLnByZXBhcmVkQ29sdW1ucykge1xuICAgICAgY29sdW1uV2lkdGhzW2NvbHVtbi50YWJsZVNldHRpbmdDb2x1bW4uaWRlbnRpZmllcigpXSA9IGNvbHVtbi53aWR0aFxuICAgIH1cblxuICAgIHJldHVybiBjb2x1bW5XaWR0aHNcbiAgfVxuXG4gIGhlYWRlcnNDb250ZW50RnJvbUNvbHVtbnMgPSAoKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxEcmFnZ2FibGVTb3J0XG4gICAgICAgIGRhdGE9e3RoaXMucy5jb2x1bW5zVG9TaG93fVxuICAgICAgICBldmVudHM9e3RoaXMudHQuZHJhZ2dhYmxlU29ydEV2ZW50c31cbiAgICAgICAgaG9yaXpvbnRhbFxuICAgICAgICBrZXlFeHRyYWN0b3I9e3RoaXMudHQuZHJhZ0xpc3RrZXlFeHRyYWN0b3J9XG4gICAgICAgIG9uSXRlbU1vdmVkPXt0aGlzLnR0Lm9uSXRlbU1vdmVkfVxuICAgICAgICBvblJlb3JkZXJlZD17dGhpcy50dC5vblJlb3JkZXJlZH1cbiAgICAgICAgcmVuZGVySXRlbT17dGhpcy50dC5kcmFnTGlzdFJlbmRlckl0ZW1Db250ZW50fVxuICAgICAgLz5cbiAgICApXG4gIH1cblxuICBkcmFnTGlzdENhY2hlS2V5RXh0cmFjdG9yID0gKGl0ZW0pID0+IGAke2l0ZW0udGFibGVTZXR0aW5nQ29sdW1uLmlkZW50aWZpZXIoKX0tJHt0aGlzLnMucmVzaXppbmd9YFxuICBkcmFnTGlzdGtleUV4dHJhY3RvciA9IChpdGVtKSA9PiBpdGVtLnRhYmxlU2V0dGluZ0NvbHVtbi5pZGVudGlmaWVyKClcblxuICBvbkl0ZW1Nb3ZlZCA9ICh7YW5pbWF0aW9uQXJncywgaXRlbUluZGV4LCB4LCB5fSkgPT4ge1xuICAgIGNvbnN0IGFuaW1hdGVkUG9zaXRpb24gPSBkaWdnKHRoaXMsIFwic1wiLCBcImNvbHVtbnNUb1Nob3dcIiwgaXRlbUluZGV4LCBcImFuaW1hdGVkUG9zaXRpb25cIilcblxuICAgIGlmIChhbmltYXRpb25BcmdzKSB7XG4gICAgICBBbmltYXRlZC50aW1pbmcoYW5pbWF0ZWRQb3NpdGlvbiwgYW5pbWF0aW9uQXJncykuc3RhcnQoKVxuICAgIH0gZWxzZSB7XG4gICAgICBhbmltYXRlZFBvc2l0aW9uLnNldFZhbHVlKHt4LCB5fSlcbiAgICB9XG4gIH1cblxuICBvblJlb3JkZXJlZCA9IGFzeW5jICh7ZnJvbUl0ZW0sIGZyb21Qb3NpdGlvbiwgdG9JdGVtLCB0b1Bvc2l0aW9ufSkgPT4ge1xuICAgIGlmIChmcm9tUG9zaXRpb24gPT0gdG9Qb3NpdGlvbikgcmV0dXJuIC8vIE9ubHkgZG8gcmVxdWVzdHMgYW5kIHF1ZXJpZXMgaWYgY2hhbmdlZFxuXG4gICAgY29uc3QgVGFibGVTZXR0aW5nQ29sdW1uID0gZnJvbUl0ZW0udGFibGVTZXR0aW5nQ29sdW1uLmNvbnN0cnVjdG9yXG4gICAgY29uc3QgdG9Db2x1bW4gPSBhd2FpdCBUYWJsZVNldHRpbmdDb2x1bW4uZmluZCh0b0l0ZW0udGFibGVTZXR0aW5nQ29sdW1uLmlkKCkpIC8vIE5lZWQgdG8gbG9hZCBsYXRlc3QgcG9zaXRpb24gYmVjYXVzZSBBY3RzQXNMaXN0IG1pZ2h0IGhhdmUgY2hhbmdlZCBpdFxuXG4gICAgYXdhaXQgZnJvbUl0ZW0udGFibGVTZXR0aW5nQ29sdW1uLnVwZGF0ZSh7cG9zaXRpb246IHRvQ29sdW1uLnBvc2l0aW9uKCl9KVxuICB9XG5cbiAgZHJhZ0xpc3RSZW5kZXJJdGVtQ29udGVudCA9ICh7aXNBY3RpdmUsIGl0ZW0sIHRvdWNoUHJvcHN9KSA9PiB7XG4gICAgY29uc3Qge2FuaW1hdGVkV2lkdGgsIGFuaW1hdGVkWkluZGV4LCBjb2x1bW4sIHRhYmxlU2V0dGluZ0NvbHVtbn0gPSBpdGVtXG5cbiAgICByZXR1cm4gKFxuICAgICAgPEhlYWRlckNvbHVtblxuICAgICAgICBhY3RpdmU9e2lzQWN0aXZlfVxuICAgICAgICBhbmltYXRlZFdpZHRoPXthbmltYXRlZFdpZHRofVxuICAgICAgICBhbmltYXRlZFpJbmRleD17YW5pbWF0ZWRaSW5kZXh9XG4gICAgICAgIGNvbHVtbj17Y29sdW1ufVxuICAgICAgICBrZXk9e3RhYmxlU2V0dGluZ0NvbHVtbi5pZGVudGlmaWVyKCl9XG4gICAgICAgIHJlc2l6aW5nPXt0aGlzLnMucmVzaXppbmd9XG4gICAgICAgIHRhYmxlPXt0aGlzfVxuICAgICAgICB0YWJsZVNldHRpbmdDb2x1bW49e3RhYmxlU2V0dGluZ0NvbHVtbn1cbiAgICAgICAgdG91Y2hQcm9wcz17dG91Y2hQcm9wc31cbiAgICAgICAgd2lkdGhzPXt0aGlzLnMud2lkdGhzfVxuICAgICAgLz5cbiAgICApXG4gIH1cblxuICBoZWFkZXJDbGFzc05hbWVGb3JDb2x1bW4oY29sdW1uKSB7XG4gICAgY29uc3QgY2xhc3NOYW1lcyA9IFtdXG5cbiAgICBpZiAoY29sdW1uLmNvbW1vblByb3BzICYmIGNvbHVtbi5jb21tb25Qcm9wcy5jbGFzc05hbWUpIGNsYXNzTmFtZXMucHVzaChjb2x1bW4uY29tbW9uUHJvcHMuY2xhc3NOYW1lKVxuICAgIGlmIChjb2x1bW4uaGVhZGVyUHJvcHMgJiYgY29sdW1uLmhlYWRlclByb3BzLmNsYXNzTmFtZSkgY2xhc3NOYW1lcy5wdXNoKGNvbHVtbi5oZWFkZXJQcm9wcy5jbGFzc05hbWUpXG5cbiAgICByZXR1cm4gY2xhc3NOYW1lc1xuICB9XG5cbiAgaGVhZGVyTGFiZWxGb3JDb2x1bW4oY29sdW1uKSB7XG4gICAgY29uc3Qge21vZGVsQ2xhc3N9ID0gdGhpcy5wXG5cbiAgICBpZiAoXCJsYWJlbFwiIGluIGNvbHVtbikge1xuICAgICAgaWYgKHR5cGVvZiBjb2x1bW4ubGFiZWwgPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHJldHVybiBjb2x1bW4ubGFiZWwoKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGNvbHVtbi5sYWJlbFxuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBjdXJyZW50TW9kZWxDbGFzcyA9IG1vZGVsQ2xhc3NcblxuICAgIC8vIENhbGN1bGF0ZSBjdXJyZW50IG1vZGVsIGNsYXNzIHRocm91Z2ggcGF0aFxuICAgIGlmIChjb2x1bW4ucGF0aCkge1xuICAgICAgZm9yIChjb25zdCBwYXRoUGFydCBvZiBjb2x1bW4ucGF0aCkge1xuICAgICAgICBjb25zdCByZWxhdGlvbnNoaXBzID0gZGlnZyhjdXJyZW50TW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLCBcInJlbGF0aW9uc2hpcHNcIilcbiAgICAgICAgY29uc3QgcmVsYXRpb25zaGlwID0gcmVsYXRpb25zaGlwcy5maW5kKChyZWxhdGlvbnNoaXBJbkFycmF5KSA9PiByZWxhdGlvbnNoaXBJbkFycmF5Lm5hbWUgPT0gaW5mbGVjdGlvbi51bmRlcnNjb3JlKHBhdGhQYXJ0KSlcblxuICAgICAgICBjdXJyZW50TW9kZWxDbGFzcyA9IG1vZGVsQ2xhc3NSZXF1aXJlKGRpZ2cocmVsYXRpb25zaGlwLCBcInJlc291cmNlX25hbWVcIikpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNvbHVtbi5hdHRyaWJ1dGUpIHJldHVybiBjdXJyZW50TW9kZWxDbGFzcy5odW1hbkF0dHJpYnV0ZU5hbWUoY29sdW1uLmF0dHJpYnV0ZSlcblxuICAgIHRocm93IG5ldyBFcnJvcihcIk5vICdsYWJlbCcgb3IgJ2F0dHJpYnV0ZScgd2FzIGdpdmVuXCIpXG4gIH1cblxuICBvbkZpbHRlckZvcm1TdWJtaXQgPSAoKSA9PiB0aGlzLnN1Ym1pdEZpbHRlcigpXG4gIG9uUmVxdWVzdENsb3NlU2V0dGluZ3MgPSAoKSA9PiB0aGlzLnNldFN0YXRlKHtzaG93U2V0dGluZ3M6IGZhbHNlfSlcblxuICBvblNldHRpbmdzQ2xpY2tlZCA9IChlKSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG5cbiAgICB0aGlzLnNldFN0YXRlKHtzaG93U2V0dGluZ3M6ICF0aGlzLnMuc2hvd1NldHRpbmdzfSlcbiAgfVxuXG4gIHN1Ym1pdEZpbHRlciA9ICgpID0+IHtcbiAgICBjb25zdCBmaWx0ZXJGb3JtID0gZGlnZyh0aGlzLnR0LmZpbHRlckZvcm1SZWYsIFwiY3VycmVudFwiKVxuICAgIGNvbnN0IHthcHBIaXN0b3J5fSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCBxUGFyYW1zID0gUGFyYW1zLnNlcmlhbGl6ZUZvcm0oZmlsdGVyRm9ybSlcbiAgICBjb25zdCB7cXVlcnlRTmFtZX0gPSB0aGlzLnNcbiAgICBjb25zdCBjaGFuZ2VQYXJhbXNQYXJhbXMgPSB7fVxuXG4gICAgY2hhbmdlUGFyYW1zUGFyYW1zW3F1ZXJ5UU5hbWVdID0gSlNPTi5zdHJpbmdpZnkocVBhcmFtcylcblxuICAgIFBhcmFtcy5jaGFuZ2VQYXJhbXMoY2hhbmdlUGFyYW1zUGFyYW1zLCB7YXBwSGlzdG9yeX0pXG4gIH1cblxuICBzdWJtaXRGaWx0ZXJEZWJvdW5jZSA9IGRlYm91bmNlKHRoaXMudHQuc3VibWl0RmlsdGVyKVxufSkpXG4iXSwibWFwcGluZ3MiOiI7QUFBQSxTQUFRQSxJQUFJLEVBQUVDLElBQUksUUFBTyxXQUFXO0FBQ3BDLE9BQU9DLEtBQUssSUFBR0MsYUFBYSxFQUFFQyxVQUFVLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxRQUFPLE9BQU87QUFDdkUsU0FBUUMsUUFBUSxFQUFFQyxTQUFTLEVBQUVDLElBQUksUUFBTyxjQUFjO0FBQ3RELE9BQU9DLGFBQWEsTUFBTSxtQkFBbUI7QUFDN0MsT0FBT0MsSUFBSSxNQUFNLG1CQUFtQjtBQUNwQyxPQUFPQyxVQUFVLE1BQU0sWUFBWTtBQUNuQyxPQUFPQyxVQUFVLE1BQU0sZUFBZTtBQUN0QyxPQUFPQyxhQUFhLE1BQU0sa0JBQWtCO0FBQzVDLE9BQU9DLFFBQVEsTUFBTSxVQUFVO0FBQy9CLE9BQU9DLGFBQWEsTUFBTSx5QkFBeUI7QUFDbkQsT0FBT0MsWUFBWSxNQUFNLFFBQVE7QUFDakMsT0FBT0MsT0FBTyxNQUFNLFdBQVc7QUFDL0IsT0FBT0MsUUFBUSxNQUFNLHdCQUF3QjtBQUM3QyxTQUFRQyxJQUFJLFFBQU8sU0FBUztBQUM1QixPQUFPQyxNQUFNLE1BQU0scUJBQXFCO0FBQ3hDLE9BQU9DLFlBQVksTUFBTSxpQkFBaUI7QUFDMUMsT0FBT0MsWUFBWSxNQUFNLGlCQUFpQjtBQUMxQyxPQUFPQyxJQUFJLE1BQU0sZUFBZTtBQUNoQyxPQUFPLEtBQUtDLFVBQVUsTUFBTSxZQUFZO0FBQ3hDLE9BQU9DLElBQUksTUFBTSw0QkFBNEI7QUFDN0MsT0FBT0MsaUJBQWlCLE1BQU0sd0JBQXdCO0FBQ3RELE9BQU9DLFFBQVEsTUFBTSxhQUFhO0FBQ2xDLE9BQU9DLFFBQVEsTUFBTSx1QkFBdUI7QUFDNUMsT0FBT0MsTUFBTSxNQUFNLFdBQVc7QUFDOUIsT0FBT0MsU0FBUyxNQUFNLFlBQVk7QUFDbEMsT0FBT0MsR0FBRyxNQUFNLGtCQUFrQjtBQUNsQyxPQUFPQyxnQkFBZ0IsTUFBTSxxQkFBcUI7QUFDbEQsT0FBT0MsTUFBTSxNQUFNLGtCQUFrQjtBQUNyQyxPQUFPQyxRQUFRLE1BQU0sa0JBQWtCO0FBQ3ZDLFNBQVFDLGNBQWMsUUFBTyx1Q0FBdUM7QUFDcEUsT0FBT0MsYUFBYSxNQUFNLGtCQUFrQjtBQUM1QyxPQUFPQyxJQUFJLE1BQU0sZUFBZTtBQUNoQyxPQUFPQyxTQUFTLE1BQU0sV0FBVztBQUNqQyxPQUFPQyxhQUFhLE1BQU0sbUJBQW1CO0FBQzdDLE9BQU9DLGFBQWEsTUFBTSxtQkFBbUI7QUFDN0MsT0FBT0MsT0FBTyxNQUFNLCtCQUErQjtBQUNuRCxPQUFPQyxlQUFlLE1BQU0sc0JBQXNCO0FBQ2xELE9BQU9DLGFBQWEsTUFBTSxvQkFBb0I7QUFDOUMsT0FBT0MsY0FBYyxNQUFNLDBDQUEwQztBQUNyRSxPQUFPQyxNQUFNLE1BQU0sVUFBVTtBQUU3QixNQUFNQyxpQkFBaUIsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3RELE1BQU1DLDZCQUE2QixnQkFBRzlDLEtBQUssQ0FBQytDLElBQUksQ0FBQyxNQUFNLE1BQU0sQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO0FBQ3JHLE1BQU1DLFlBQVksZ0JBQUcvQyxhQUFhLENBQUMsQ0FBQztBQUVwQyxNQUFNZ0QsbUJBQW1CLEdBQUd6QixJQUFJLENBQUNVLGNBQWMsQ0FBQyxNQUFNZSxtQkFBbUIsU0FBU3pDLGFBQWEsQ0FBQztFQUM5RjBDLEtBQUtBLENBQUEsRUFBRztJQUNOLElBQUksQ0FBQ0MsU0FBUyxDQUFDO01BQ2JDLFVBQVUsRUFBRSxJQUFJQyxJQUFJLENBQUM7SUFDdkIsQ0FBQyxDQUFDO0VBQ0o7RUFFQUMsTUFBTUEsQ0FBQSxFQUFHO0lBQ1AsTUFBTTtNQUFDQztJQUFJLENBQUMsR0FBR2pCLGFBQWEsQ0FBQyxDQUFDO0lBQzlCLE1BQU1rQixpQkFBaUIsR0FBR3RELFVBQVUsQ0FBQzhDLFlBQVksQ0FBQztJQUNsRCxNQUFNUyxLQUFLLEdBQUdELGlCQUFpQixDQUFDQyxLQUFLO0lBQ3JDLE1BQU07TUFBQ0MsVUFBVTtNQUFFQyxNQUFNO01BQUVDLHNCQUFzQjtNQUFFQztJQUFDLENBQUMsR0FBR0osS0FBSyxDQUFDSyxFQUFFO0lBQ2hFLE1BQU07TUFBQ0M7SUFBSyxDQUFDLEdBQUdoRSxJQUFJLENBQUMyRCxVQUFVLEVBQUUsT0FBTyxDQUFDO0lBRXpDakIsZUFBZSxDQUFDa0IsTUFBTSxFQUFFLHlCQUF5QixFQUFFLElBQUksQ0FBQ0csRUFBRSxDQUFDRSx5QkFBeUIsQ0FBQztJQUVyRixvQkFDRWhFLEtBQUEsQ0FBQWlFLGFBQUEsQ0FBQ25DLEdBQUc7TUFBQ29DLE9BQU8sRUFBRTtRQUFDQyxLQUFLLEVBQUU7TUFBNEIsQ0FBRTtNQUFDQyxLQUFLLEVBQUVYLEtBQUssQ0FBQ1ksaUJBQWlCLENBQUM7SUFBRSxHQUNuRlosS0FBSyxDQUFDYSxDQUFDLENBQUNDLFNBQVMsSUFBSWQsS0FBSyxDQUFDZSxDQUFDLENBQUNDLGdCQUFnQixpQkFDNUN6RSxLQUFBLENBQUFpRSxhQUFBLENBQUM5QyxNQUFNO01BQUNpRCxLQUFLLEVBQUVYLEtBQUssQ0FBQ2lCLGNBQWMsQ0FBQztRQUFDTixLQUFLLEVBQUU7VUFBQ08sS0FBSyxFQUFFcEIsSUFBSSxHQUFHLEVBQUUsR0FBR3FCO1FBQVM7TUFBQyxDQUFDO0lBQUUsZ0JBQzNFNUUsS0FBQSxDQUFBaUUsYUFBQSxDQUFDbkIsNkJBQTZCO01BQzVCMkIsZ0JBQWdCLEVBQUVoQixLQUFLLENBQUNlLENBQUMsQ0FBQ0MsZ0JBQWlCO01BQzNDVixLQUFLLEVBQUVILHNCQUF1QjtNQUM5QlEsS0FBSyxFQUFFO1FBQUNTLGdCQUFnQixFQUFFO01BQU07SUFBRSxDQUNuQyxDQUFDLEVBQ0QsQ0FBQ3RCLElBQUksaUJBQ0p2RCxLQUFBLENBQUFpRSxhQUFBLENBQUM3QixJQUFJO01BQUNnQyxLQUFLLEVBQUU7UUFBQ1UsVUFBVSxFQUFFO01BQUM7SUFBRSxHQUMxQmpCLENBQUMsQ0FBQyxtQkFBbUIsRUFBRTtNQUFDa0IsWUFBWSxFQUFFO0lBQWtCLENBQUMsQ0FDdEQsQ0FFRixDQUFDLEVBRVYsQ0FBQ3hCLElBQUksaUJBQ0p2RCxLQUFBLENBQUFpRSxhQUFBLENBQUM5QyxNQUFNO01BQUNpRCxLQUFLLEVBQUVYLEtBQUssQ0FBQ2lCLGNBQWMsQ0FBQztRQUFDTixLQUFLLEVBQUUsQ0FBQztNQUFDLENBQUM7SUFBRSxnQkFDL0NwRSxLQUFBLENBQUFpRSxhQUFBLENBQUM1QyxZQUFZO01BQUMyRCxlQUFlLEVBQUV2QixLQUFLLENBQUNlLENBQUMsQ0FBQ1EsZUFBZ0I7TUFBQ2pCLEtBQUssRUFBRUEsS0FBTTtNQUFDTixLQUFLLEVBQUVBO0lBQU0sQ0FBRSxDQUMvRSxDQUFDLEVBRVZGLElBQUksaUJBQ0h2RCxLQUFBLENBQUFpRSxhQUFBLENBQUFqRSxLQUFBLENBQUFpRixRQUFBLFFBQ0d4QixLQUFLLENBQUN5Qix5QkFBeUIsQ0FBQyxDQUFDLGVBQ2xDbEYsS0FBQSxDQUFBaUUsYUFBQSxDQUFDOUMsTUFBTTtNQUFDaUQsS0FBSyxFQUFFWCxLQUFLLENBQUNpQixjQUFjLENBQUM7UUFBQ04sS0FBSyxFQUFFLENBQUMsQ0FBQztRQUFFZSxJQUFJLEVBQUU7TUFBUyxDQUFDO0lBQUUsQ0FBRSxDQUNwRSxDQUVELENBQUM7RUFFVjtFQUVBbkIseUJBQXlCLEdBQUdBLENBQUEsS0FBTSxJQUFJLENBQUNvQixRQUFRLENBQUM7SUFBQ2hDLFVBQVUsRUFBRSxJQUFJQyxJQUFJLENBQUM7RUFBQyxDQUFDLENBQUM7QUFDM0UsQ0FBQyxDQUFDLENBQUM7QUFFSCxlQUFlN0IsSUFBSSxDQUFDVSxjQUFjLENBQUMsTUFBTW1ELGFBQWEsU0FBUzdFLGFBQWEsQ0FBQztFQUMzRSxPQUFPOEUsWUFBWSxHQUFHO0lBQ3BCQyxJQUFJLEVBQUUsSUFBSTtJQUNWQyxXQUFXLEVBQUUsSUFBSTtJQUNqQkMsY0FBYyxFQUFFLElBQUk7SUFDcEJDLFVBQVUsRUFBRSxJQUFJO0lBQ2hCQyxrQkFBa0IsRUFBRSxJQUFJO0lBQ3hCQyx5QkFBeUIsRUFBRWhCLFNBQVM7SUFDcENpQixxQkFBcUIsRUFBRWpCLFNBQVM7SUFDaENrQixRQUFRLEVBQUUsRUFBRTtJQUNaQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ1ZDLE9BQU8sRUFBRSxJQUFJO0lBQ2J6QixTQUFTLEVBQUU7RUFDYixDQUFDO0VBRUQsT0FBTzBCLFNBQVMsR0FBRztJQUNqQkMsU0FBUyxFQUFFckUsU0FBUyxDQUFDc0UsTUFBTTtJQUMzQkMsY0FBYyxFQUFFdkUsU0FBUyxDQUFDd0UsSUFBSTtJQUM5QkMsVUFBVSxFQUFFekUsU0FBUyxDQUFDc0UsTUFBTTtJQUM1QlosSUFBSSxFQUFFMUQsU0FBUyxDQUFDMEUsSUFBSSxDQUFDQyxVQUFVO0lBQy9CQyxTQUFTLEVBQUU1RSxTQUFTLENBQUM2RSxNQUFNO0lBQzNCaEQsVUFBVSxFQUFFN0IsU0FBUyxDQUFDOEUsVUFBVSxDQUFDaEcsVUFBVSxDQUFDO0lBQzVDaUcsT0FBTyxFQUFFL0UsU0FBUyxDQUFDZ0YsU0FBUyxDQUFDLENBQUNoRixTQUFTLENBQUNpRixLQUFLLEVBQUVqRixTQUFTLENBQUN3RSxJQUFJLENBQUMsQ0FBQztJQUMvRFUsUUFBUSxFQUFFbEYsU0FBUyxDQUFDd0UsSUFBSTtJQUN4QmIsV0FBVyxFQUFFM0QsU0FBUyxDQUFDc0UsTUFBTTtJQUM3QmEscUJBQXFCLEVBQUVuRixTQUFTLENBQUM2RSxNQUFNO0lBQ3ZDTyx5QkFBeUIsRUFBRXBGLFNBQVMsQ0FBQzZFLE1BQU07SUFDM0NRLGFBQWEsRUFBRXJGLFNBQVMsQ0FBQ3NFLE1BQU07SUFDL0JWLGNBQWMsRUFBRTVELFNBQVMsQ0FBQzBFLElBQUksQ0FBQ0MsVUFBVTtJQUN6Q1csY0FBYyxFQUFFdEYsU0FBUyxDQUFDNkUsTUFBTTtJQUNoQ1UsYUFBYSxFQUFFdkYsU0FBUyxDQUFDd0UsSUFBSTtJQUM3QlgsVUFBVSxFQUFFN0QsU0FBUyxDQUFDMEUsSUFBSSxDQUFDQyxVQUFVO0lBQ3JDYSxhQUFhLEVBQUV4RixTQUFTLENBQUN3RSxJQUFJO0lBQzdCaUIsaUJBQWlCLEVBQUV6RixTQUFTLENBQUMwRixJQUFJO0lBQ2pDQyxPQUFPLEVBQUUzRixTQUFTLENBQUNpRixLQUFLO0lBQ3hCVyxNQUFNLEVBQUU1RixTQUFTLENBQUNnRixTQUFTLENBQUMsQ0FBQ2hGLFNBQVMsQ0FBQ3dFLElBQUksRUFBRXhFLFNBQVMsQ0FBQzZFLE1BQU0sQ0FBQyxDQUFDO0lBQy9EZ0IsVUFBVSxFQUFFN0YsU0FBUyxDQUFDNkUsTUFBTTtJQUM1QmlCLFVBQVUsRUFBRTlGLFNBQVMsQ0FBQ3dFLElBQUksQ0FBQ0csVUFBVTtJQUNyQ1oseUJBQXlCLEVBQUUvRCxTQUFTLENBQUN3RSxJQUFJO0lBQ3pDUixxQkFBcUIsRUFBRWhFLFNBQVMsQ0FBQ3dFLElBQUk7SUFDckN1QixjQUFjLEVBQUUvRixTQUFTLENBQUN3RSxJQUFJO0lBQzlCd0IsZUFBZSxFQUFFaEcsU0FBUyxDQUFDd0UsSUFBSTtJQUMvQnlCLG1CQUFtQixFQUFFakcsU0FBUyxDQUFDd0UsSUFBSTtJQUNuQ1AsUUFBUSxFQUFFakUsU0FBUyxDQUFDaUYsS0FBSyxDQUFDTixVQUFVO0lBQ3BDdUIsV0FBVyxFQUFFbEcsU0FBUyxDQUFDd0UsSUFBSTtJQUMzQjJCLFNBQVMsRUFBRW5HLFNBQVMsQ0FBQzZFLE1BQU07SUFDM0JYLE1BQU0sRUFBRWxFLFNBQVMsQ0FBQ3NFLE1BQU07SUFDeEI4QixhQUFhLEVBQUVwRyxTQUFTLENBQUNzRSxNQUFNO0lBQy9CK0IsTUFBTSxFQUFFckcsU0FBUyxDQUFDc0UsTUFBTTtJQUN4QkgsT0FBTyxFQUFFbkUsU0FBUyxDQUFDMEUsSUFBSSxDQUFDQyxVQUFVO0lBQ2xDMkIsYUFBYSxFQUFFdEcsU0FBUyxDQUFDd0UsSUFBSTtJQUM3QjlCLFNBQVMsRUFBRTFDLFNBQVMsQ0FBQzBFLElBQUksQ0FBQ0M7RUFDNUIsQ0FBQztFQUVENEIsbUJBQW1CLEdBQUcsSUFBSXJILFlBQVksQ0FBQyxDQUFDO0VBQ3hDNEMsTUFBTSxHQUFHLElBQUk1QyxZQUFZLENBQUMsQ0FBQztFQUMzQnNILGFBQWEsR0FBRyxJQUFJO0VBRXBCbkYsS0FBS0EsQ0FBQSxFQUFHO0lBQ04sTUFBTTtNQUFDVztJQUFDLENBQUMsR0FBR3JCLE9BQU8sQ0FBQztNQUFDOEYsU0FBUyxFQUFFO0lBQW9CLENBQUMsQ0FBQztJQUN0RCxNQUFNO01BQUNDLElBQUksRUFBRUMsVUFBVTtNQUFFakY7SUFBSSxDQUFDLEdBQUdqQixhQUFhLENBQUMsQ0FBQztJQUNoRCxNQUFNbUcsV0FBVyxHQUFHOUYsY0FBYyxDQUFDLENBQUM7SUFFcEMsSUFBSSxDQUFDK0YsV0FBVyxDQUFDO01BQ2ZGLFVBQVU7TUFDVkcsYUFBYSxFQUFFdkksTUFBTSxDQUFDLENBQUM7TUFDdkJtRCxJQUFJO01BQ0pNO0lBQ0YsQ0FBQyxDQUFDO0lBRUYsTUFBTStFLGFBQWEsR0FBRzlJLElBQUksQ0FBQyxJQUFJLENBQUN3RSxDQUFDLENBQUNxRCxVQUFVLENBQUNrQixjQUFjLENBQUMsQ0FBQyxFQUFFLGVBQWUsQ0FBQztJQUMvRSxJQUFJYixTQUFTLEdBQUcsSUFBSSxDQUFDYyxLQUFLLENBQUNkLFNBQVM7SUFFcEMsSUFBSSxDQUFDQSxTQUFTLEVBQUVBLFNBQVMsR0FBR1ksYUFBYTtJQUV6QyxNQUFNRyxVQUFVLEdBQUcsR0FBR2YsU0FBUyxJQUFJO0lBRW5DLElBQUksQ0FBQzdFLFNBQVMsQ0FBQztNQUNieUQsT0FBTyxFQUFFQSxDQUFBLEtBQU0sSUFBSSxDQUFDb0MsY0FBYyxDQUFDLENBQUM7TUFDcEN2RSxnQkFBZ0IsRUFBRUcsU0FBUztNQUMzQnFFLHFCQUFxQixFQUFFLElBQUk7TUFDM0JDLFVBQVUsRUFBRSxJQUFJO01BQ2hCQyxhQUFhLEVBQUUsSUFBSTtNQUNuQkMsYUFBYSxFQUFFLElBQUk7TUFDbkIxQixVQUFVLEVBQUVBLENBQUEsS0FBTSxJQUFJLENBQUNvQixLQUFLLENBQUNwQixVQUFVLElBQUksR0FBR2tCLGFBQWEsVUFBVTtNQUNyRXhGLFVBQVUsRUFBRUEsQ0FBQSxLQUFNLElBQUlDLElBQUksQ0FBQyxDQUFDO01BQzVCZ0csT0FBTyxFQUFFekUsU0FBUztNQUNsQkksZUFBZSxFQUFFSixTQUFTO01BQzFCb0QsU0FBUztNQUNUc0IsVUFBVSxFQUFFQSxDQUFBLEtBQU0sR0FBR3RCLFNBQVMsSUFBSTtNQUNsQ3VCLGFBQWEsRUFBRUEsQ0FBQSxLQUFNLEdBQUd2QixTQUFTLE9BQU87TUFDeENlLFVBQVU7TUFDVlMsUUFBUSxFQUFFLEtBQUs7TUFDZkMsV0FBVyxFQUFFQSxDQUFBLEtBQU1DLE9BQU8sQ0FBQ2pCLFdBQVcsQ0FBQ00sVUFBVSxDQUFDLENBQUM7TUFDbkRZLFlBQVksRUFBRSxLQUFLO01BQ25CQyxZQUFZLEVBQUVoRixTQUFTO01BQ3ZCaUYsa0JBQWtCLEVBQUUsS0FBSztNQUN6QkMsd0JBQXdCLEVBQUVsRixTQUFTO01BQ25DRCxLQUFLLEVBQUVDLFNBQVM7TUFDaEJtRixNQUFNLEVBQUU7SUFDVixDQUFDLENBQUM7SUFFRixJQUFJLENBQUN2RyxpQkFBaUIsR0FBR3JELE9BQU8sQ0FDOUIsT0FBTztNQUNMNkosUUFBUSxFQUFFLElBQUksQ0FBQ3hGLENBQUMsQ0FBQ3NGLHdCQUF3QjtNQUN6QzFHLFVBQVUsRUFBRSxJQUFJLENBQUNvQixDQUFDLENBQUNwQixVQUFVO01BQzdCb0csUUFBUSxFQUFFLElBQUksQ0FBQ2hGLENBQUMsQ0FBQ2dGLFFBQVE7TUFDekIvRixLQUFLLEVBQUU7SUFDVCxDQUFDLENBQUMsRUFDRixDQUFDLElBQUksQ0FBQ2UsQ0FBQyxDQUFDcEIsVUFBVSxFQUFFLElBQUksQ0FBQ29CLENBQUMsQ0FBQ2dGLFFBQVEsRUFBRSxJQUFJLENBQUNoRixDQUFDLENBQUNzRix3QkFBd0IsQ0FDdEUsQ0FBQztJQUVEM0osT0FBTyxDQUFDLE1BQU07TUFDWixJQUFJLElBQUksQ0FBQzJJLEtBQUssQ0FBQ3ZFLFNBQVMsRUFBRTtRQUN4QixJQUFJLENBQUMwRixvQkFBb0IsQ0FBQyxDQUFDLENBQUNDLElBQUksQ0FBQyxNQUFNO1VBQ3JDLElBQUksQ0FBQ0MseUJBQXlCLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUM7TUFDSjtJQUNGLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQzdGLENBQUMsQ0FBQ2tCLFdBQVcsRUFBRTRFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUU5QmpLLE9BQU8sQ0FBQyxNQUFNO01BQ1osSUFBSSxDQUFDLElBQUksQ0FBQzJELEVBQUUsQ0FBQ3VFLGFBQWEsSUFBSSxJQUFJLENBQUM3RCxDQUFDLENBQUNHLEtBQUssRUFBRTtRQUMxQyxJQUFJLENBQUMwRixnQkFBZ0IsQ0FBQyxDQUFDO01BQ3pCO0lBQ0YsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDL0YsQ0FBQyxDQUFDa0IsV0FBVyxFQUFFNEUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUM1RixDQUFDLENBQUNHLEtBQUssQ0FBQyxDQUFDO0lBRTVDakMsYUFBYSxDQUFDLElBQUksQ0FBQzhCLENBQUMsQ0FBQ0MsZ0JBQWdCLEVBQUUseUJBQXlCLEVBQUUsSUFBSSxDQUFDWCxFQUFFLENBQUN3RyxjQUFjLENBQUM7SUFDekY1SCxhQUFhLENBQUMsSUFBSSxDQUFDOEIsQ0FBQyxDQUFDQyxnQkFBZ0IsRUFBRSwyQkFBMkIsRUFBRSxJQUFJLENBQUNYLEVBQUUsQ0FBQ3lHLGdCQUFnQixDQUFDO0lBRTdGLElBQUlDLGVBQWUsR0FBRyxJQUFJO0lBQzFCLElBQUl6RSxNQUFNO0lBRVYsSUFBSSxDQUFDLElBQUksQ0FBQ3ZCLENBQUMsQ0FBQ1EsZUFBZSxFQUFFO01BQzNCd0YsZUFBZSxHQUFHLEtBQUs7SUFDekI7SUFFQSxJQUFJQSxlQUFlLEVBQUU7TUFDbkJ6RSxNQUFNLEdBQUdoRSxnQkFBZ0IsQ0FBQztRQUFDMEIsS0FBSyxFQUFFO01BQUksQ0FBQyxDQUFDO0lBQzFDO0lBRUEsSUFBSSxDQUFDQyxVQUFVLEdBQUduQixhQUFhLENBQUM7TUFDOUIyRCxTQUFTLEVBQUUsSUFBSSxDQUFDdUUsZUFBZSxDQUFDLENBQUM7TUFDakN2RCxhQUFhLEVBQUUsSUFBSSxDQUFDNEIsS0FBSyxDQUFDNUIsYUFBYTtNQUN2Q3hELFVBQVUsRUFBRSxJQUFJLENBQUNvRixLQUFLLENBQUNwRixVQUFVO01BQ2pDOEQsT0FBTyxFQUFFLElBQUksQ0FBQ3NCLEtBQUssQ0FBQ3RCLE9BQU87TUFDM0JrRCxXQUFXLEVBQUVGLGVBQWU7TUFDNUI3QyxVQUFVLEVBQUUsSUFBSSxDQUFDbUIsS0FBSyxDQUFDbkIsVUFBVTtNQUNqQ0MsY0FBYyxFQUFFLElBQUksQ0FBQ2tCLEtBQUssQ0FBQ2xCLGNBQWM7TUFDekNoQyx5QkFBeUIsRUFBRSxJQUFJLENBQUNrRCxLQUFLLENBQUNsRCx5QkFBeUI7TUFDL0RDLHFCQUFxQixFQUFFLElBQUksQ0FBQ2lELEtBQUssQ0FBQ2pELHFCQUFxQjtNQUN2RDhFLFVBQVUsRUFBRSxJQUFJO01BQ2hCN0UsUUFBUSxFQUFFLElBQUksQ0FBQzhFLEtBQUssQ0FBQ3ZCLE9BQU87TUFDNUJ0QixXQUFXLEVBQUUsSUFBSSxDQUFDZSxLQUFLLENBQUNmLFdBQVc7TUFDbkNDLFNBQVM7TUFDVGpDLE1BQU07TUFDTmtDLGFBQWEsRUFBRSxJQUFJLENBQUNhLEtBQUssQ0FBQ2I7SUFDNUIsQ0FBQyxDQUFDO0lBQ0YsSUFBSSxDQUFDckUsc0JBQXNCLEdBQUd6RCxPQUFPLENBQ25DLE1BQU0sSUFBSSxDQUFDdUQsVUFBVSxFQUFFSyxLQUFLLEVBQUU4RyxLQUFLLENBQUMsQ0FBQyxFQUFFQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQ3JELENBQUMsSUFBSSxDQUFDcEgsVUFBVSxDQUFDSyxLQUFLLENBQ3hCLENBQUM7SUFFRHRCLGVBQWUsQ0FBQyxJQUFJLENBQUNxQixFQUFFLENBQUNzRSxtQkFBbUIsRUFBRSxhQUFhLEVBQUUsSUFBSSxDQUFDdEUsRUFBRSxDQUFDaUgsV0FBVyxDQUFDO0lBQ2hGdEksZUFBZSxDQUFDLElBQUksQ0FBQ3FCLEVBQUUsQ0FBQ3NFLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLElBQUksQ0FBQ3RFLEVBQUUsQ0FBQ2tILGtCQUFrQixDQUFDO0lBQzlGdkksZUFBZSxDQUFDLElBQUksQ0FBQ3FCLEVBQUUsQ0FBQ0gsTUFBTSxFQUFFLHlCQUF5QixFQUFFLElBQUksQ0FBQ0csRUFBRSxDQUFDRSx5QkFBeUIsQ0FBQztFQUMvRjtFQUVBQSx5QkFBeUIsR0FBR0EsQ0FBQSxLQUFNLElBQUksQ0FBQ29CLFFBQVEsQ0FBQztJQUFDK0QsYUFBYSxFQUFFLElBQUksQ0FBQzhCLGdCQUFnQixDQUFDLElBQUksQ0FBQ3pHLENBQUMsQ0FBQ29DLE9BQU8sQ0FBQztJQUFFeEQsVUFBVSxFQUFFLElBQUlDLElBQUksQ0FBQztFQUFDLENBQUMsQ0FBQztFQUMvSDBILFdBQVcsR0FBR0EsQ0FBQztJQUFDRztFQUFJLENBQUMsS0FBS0EsSUFBSSxDQUFDQyxjQUFjLENBQUNDLFFBQVEsQ0FBQyxJQUFJLENBQUM7RUFDNURKLGtCQUFrQixHQUFHQSxDQUFDO0lBQUNFO0VBQUksQ0FBQyxLQUFLQSxJQUFJLENBQUNDLGNBQWMsQ0FBQ0MsUUFBUSxDQUFDLENBQUMsQ0FBQztFQUVoRSxNQUFNbkIsb0JBQW9CQSxDQUFBLEVBQUc7SUFDM0IsTUFBTW9CLFNBQVMsR0FBRzVKLGlCQUFpQixDQUFDLFdBQVcsQ0FBQztJQUNoRCxNQUFNNkosTUFBTSxHQUFHLE1BQU1ELFNBQVMsQ0FBQ0UsT0FBTyxDQUFDLENBQUM7SUFDeEMsTUFBTTlHLGdCQUFnQixHQUFHM0UsSUFBSSxDQUFDd0wsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFFbkQsSUFBSSxDQUFDbEcsUUFBUSxDQUFDO01BQUNYO0lBQWdCLENBQUMsQ0FBQztFQUNuQztFQUVBLE1BQU0wRix5QkFBeUJBLENBQUEsRUFBRztJQUNoQyxNQUFNcUIsYUFBYSxHQUFHL0osaUJBQWlCLENBQUMsZUFBZSxDQUFDO0lBQ3hELE1BQU13SCxxQkFBcUIsR0FBRyxNQUFNdUMsYUFBYSxDQUM5Q0MsT0FBTyxDQUFDO01BQ1BDLGdCQUFnQixFQUFFLElBQUksQ0FBQ3BILENBQUMsQ0FBQ3FELFVBQVUsQ0FBQ2tCLGNBQWMsQ0FBQyxDQUFDLENBQUNOLElBQUk7TUFDekRvRCxlQUFlLEVBQUUsSUFBSSxDQUFDbkgsQ0FBQyxDQUFDQyxnQkFBZ0IsQ0FBQzJGLEVBQUUsQ0FBQztJQUM5QyxDQUFDLENBQUMsQ0FDRHdCLEtBQUssQ0FBQyxDQUFDO0lBRVYsSUFBSSxDQUFDeEcsUUFBUSxDQUFDO01BQUM2RDtJQUFxQixDQUFDLENBQUM7RUFDeEM7RUFFQWdDLGdCQUFnQkEsQ0FBQ3JFLE9BQU8sRUFBRTtJQUN4QixPQUFPQSxPQUFPLENBQ1hpRixNQUFNLENBQUMsQ0FBQztNQUFDQyxNQUFNO01BQUVDO0lBQWtCLENBQUMsS0FBS25MLGFBQWEsQ0FBQ2tMLE1BQU0sRUFBRUMsa0JBQWtCLENBQUMsQ0FBQyxDQUNuRkMsSUFBSSxDQUFDLENBQUNDLENBQUMsRUFBRUMsQ0FBQyxLQUFLRCxDQUFDLENBQUNGLGtCQUFrQixDQUFDSSxRQUFRLENBQUMsQ0FBQyxHQUFHRCxDQUFDLENBQUNILGtCQUFrQixDQUFDSSxRQUFRLENBQUMsQ0FBQyxDQUFDO0VBQ3RGO0VBRUEsTUFBTTlCLGdCQUFnQkEsQ0FBQSxFQUFHO0lBQ3ZCLElBQUksQ0FBQ2hDLGFBQWEsR0FBRyxJQUFJbEcsYUFBYSxDQUFDO01BQUNzQixLQUFLLEVBQUU7SUFBSSxDQUFDLENBQUM7SUFFckQsTUFBTW1HLFlBQVksR0FBRyxNQUFNLElBQUksQ0FBQ3ZCLGFBQWEsQ0FBQytELGlDQUFpQyxDQUFDLENBQUM7SUFDakYsTUFBTTtNQUFDeEYsT0FBTztNQUFFeUM7SUFBTyxDQUFDLEdBQUcsSUFBSSxDQUFDaEIsYUFBYSxDQUFDckQsZUFBZSxDQUFDNEUsWUFBWSxDQUFDO0lBQzNFLE1BQU07TUFBQ2pGO0lBQUssQ0FBQyxHQUFHLElBQUksQ0FBQ0gsQ0FBQztJQUN0QixNQUFNdUYsTUFBTSxHQUFHLElBQUluSCxNQUFNLENBQUM7TUFBQ2dFLE9BQU87TUFBRW5ELEtBQUssRUFBRSxJQUFJO01BQUVrQjtJQUFLLENBQUMsQ0FBQztJQUN4RCxNQUFNd0UsYUFBYSxHQUFHLElBQUksQ0FBQzhCLGdCQUFnQixDQUFDckUsT0FBTyxDQUFDO0lBRXBELElBQUksQ0FBQ3hCLFFBQVEsQ0FBQztNQUNad0IsT0FBTztNQUNQdUMsYUFBYTtNQUNibkUsZUFBZSxFQUFFNEIsT0FBTztNQUN4QnlDLE9BQU8sRUFBRSxJQUFJLENBQUNnRCxjQUFjLENBQUNoRCxPQUFPLENBQUM7TUFDckNPLFlBQVk7TUFDWkMsa0JBQWtCLEVBQUUsSUFBSTtNQUN4QkMsd0JBQXdCLEVBQUVGLFlBQVksQ0FBQzBDLFlBQVksQ0FBQyxDQUFDO01BQ3JEdkM7SUFDRixDQUFDLENBQUM7RUFDSjtFQUVBd0MsMEJBQTBCLEdBQUdBLENBQUEsS0FBTSxJQUFJLENBQUNuSCxRQUFRLENBQUM7SUFBQzBFLHdCQUF3QixFQUFFLElBQUksQ0FBQ2MsS0FBSyxDQUFDaEIsWUFBWSxDQUFDMEMsWUFBWSxDQUFDO0VBQUMsQ0FBQyxDQUFDO0VBRXBIdEQsY0FBYyxHQUFHQSxDQUFBLEtBQU07SUFDckIsSUFBSSxPQUFPLElBQUksQ0FBQ0YsS0FBSyxDQUFDbEMsT0FBTyxJQUFJLFVBQVUsRUFBRTtNQUMzQyxPQUFPLElBQUksQ0FBQ2tDLEtBQUssQ0FBQ2xDLE9BQU8sQ0FBQyxDQUFDO0lBQzdCO0lBRUEsT0FBTyxJQUFJLENBQUNrQyxLQUFLLENBQUNsQyxPQUFPO0VBQzNCLENBQUM7RUFFRHlGLGNBQWNBLENBQUNoRCxPQUFPLEVBQUU7SUFDdEIsTUFBTTtNQUFDdkQ7SUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDZ0QsS0FBSztJQUM3QixJQUFJdUQsY0FBYyxHQUFHLEVBQUU7SUFFdkIsSUFBSXZHLFFBQVEsRUFBRXVHLGNBQWMsR0FBR0EsY0FBYyxDQUFDRyxNQUFNLENBQUMxRyxRQUFRLENBQUM7SUFDOUQsSUFBSXVELE9BQU8sRUFBRWdELGNBQWMsR0FBR0EsY0FBYyxDQUFDRyxNQUFNLENBQUNuRCxPQUFPLENBQUM7SUFFNUQsT0FBT2hILFNBQVMsQ0FBQ2dLLGNBQWMsQ0FBQztFQUNsQztFQUVBL0ksTUFBTUEsQ0FBQSxFQUFJO0lBQ1IsTUFBTTtNQUFDcUUsVUFBVTtNQUFFL0IseUJBQXlCO01BQUVDO0lBQXFCLENBQUMsR0FBRyxJQUFJLENBQUN2QixDQUFDO0lBQzdFLE1BQU07TUFBQ1osVUFBVTtNQUFFOEI7SUFBVyxDQUFDLEdBQUcsSUFBSSxDQUFDc0QsS0FBSztJQUM1QyxNQUFNO01BQUNkLFNBQVM7TUFBRWUsVUFBVTtNQUFFVTtJQUFXLENBQUMsR0FBRyxJQUFJLENBQUNqRixDQUFDO0lBQ25ELE1BQU07TUFDSmlJLE1BQU07TUFDTkMsWUFBWTtNQUNaQyxPQUFPO01BQ1A1SSxLQUFLO01BQ0x1SCxNQUFNO01BQ05zQiw2QkFBNkI7TUFDN0JDO0lBQ0YsQ0FBQyxHQUFHOU0sSUFBSSxDQUNOLElBQUksQ0FBQzJELFVBQVUsRUFDZixRQUFRLEVBQ1IsY0FBYyxFQUNkLFNBQVMsRUFDVCxPQUFPLEVBQ1AsUUFBUSxFQUNSLCtCQUErQixFQUMvQiwyQkFDRixDQUFDO0lBRUQsSUFBSUEsVUFBVSxJQUFJQSxVQUFVLENBQUNvSixJQUFJLENBQUNuRixVQUFVLENBQUNrQixjQUFjLENBQUMsQ0FBQyxDQUFDTixJQUFJLElBQUlaLFVBQVUsQ0FBQ2tCLGNBQWMsQ0FBQyxDQUFDLENBQUNOLElBQUksRUFBRTtNQUN0RyxNQUFNLElBQUl3RSxLQUFLLENBQ2IsZ0NBQWdDckosVUFBVSxDQUFDb0osSUFBSSxDQUFDbkYsVUFBVSxDQUFDa0IsY0FBYyxDQUFDLENBQUMsQ0FBQ04sSUFBSSxJQUFJLEdBQ3BGLHVDQUF1Q1osVUFBVSxDQUFDa0IsY0FBYyxDQUFDLENBQUMsQ0FBQ04sSUFBSSxHQUN6RSxDQUFDO0lBQ0g7SUFFQSxvQkFDRXZJLEtBQUEsQ0FBQWlFLGFBQUEsQ0FBQzFELElBQUk7TUFBQzJELE9BQU8sRUFBRTtRQUFDQyxLQUFLLEVBQUUsSUFBSSxDQUFDc0MsU0FBUyxDQUFDO01BQUMsQ0FBRTtNQUFDdUcsUUFBUSxFQUFFLElBQUksQ0FBQ2xKLEVBQUUsQ0FBQ21KLGlCQUFrQjtNQUFDN0ksS0FBSyxFQUFFLElBQUksQ0FBQzBFLEtBQUssQ0FBQ1osTUFBTSxFQUFFZ0Y7SUFBVSxHQUNoSE4sNkJBQTZCLGlCQUM1QjVNLEtBQUEsQ0FBQWlFLGFBQUE7TUFBS3dDLFNBQVMsRUFBQztJQUEwQyxHQUN0RGIseUJBQXlCLENBQUM7TUFBQzZHLE1BQU07TUFBRUUsT0FBTztNQUFFRDtJQUFZLENBQUMsQ0FDdkQsQ0FBQyxFQUVQRyx5QkFBeUIsaUJBQ3hCN00sS0FBQSxDQUFBaUUsYUFBQTtNQUFLd0MsU0FBUyxFQUFDO0lBQXNDLEdBQ2xEWixxQkFBcUIsQ0FBQztNQUFDNEcsTUFBTTtNQUFFRSxPQUFPO01BQUVEO0lBQVksQ0FBQyxDQUNuRCxDQUFDLEVBRVBqRCxXQUFXLGlCQUNWekosS0FBQSxDQUFBaUUsYUFBQSxDQUFDakQsT0FBTztNQUFDd0UsV0FBVyxFQUFFQSxXQUFZO01BQUNtQyxVQUFVLEVBQUVBLFVBQVc7TUFBQ0ssU0FBUyxFQUFFQSxTQUFVO01BQUNlLFVBQVUsRUFBRUE7SUFBVyxDQUFFLENBQUMsRUFFNUc0RCxPQUFPLElBQUk1SSxLQUFLLElBQUl1SCxNQUFNLElBQUltQixNQUFNLElBQUksQ0FBQ0csNkJBQTZCLElBQUksQ0FBQ0MseUJBQXlCLElBQ25HLElBQUksQ0FBQ00sV0FBVyxDQUFDLENBRWYsQ0FBQztFQUVYO0VBRUExQyxlQUFlQSxDQUFBLEVBQUk7SUFDakIsTUFBTUEsZUFBZSxHQUFHLENBQUMsQ0FBQztJQUMxQixNQUFNO01BQUN2RSxTQUFTO01BQUV5QjtJQUFVLENBQUMsR0FBRyxJQUFJLENBQUNtQixLQUFLO0lBQzFDLE1BQU1zRSxZQUFZLEdBQUcsRUFBRTtJQUV2QixJQUFJLElBQUksQ0FBQ3RFLEtBQUssQ0FBQ3JELGNBQWMsRUFBRTJILFlBQVksQ0FBQ0MsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMzRCxJQUFJLElBQUksQ0FBQ3ZFLEtBQUssQ0FBQzFCLGFBQWEsRUFBRWdHLFlBQVksQ0FBQ0MsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2RCxJQUFJLElBQUksQ0FBQ3ZFLEtBQUssQ0FBQ1gsYUFBYSxFQUFFaUYsWUFBWSxDQUFDQyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBRXZELElBQUlELFlBQVksQ0FBQ0UsTUFBTSxHQUFHLENBQUMsRUFBRTtNQUMzQixNQUFNQyxjQUFjLEdBQUd6TixJQUFJLENBQUM2SCxVQUFVLENBQUNrQixjQUFjLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQztNQUVoRTRCLGVBQWUsQ0FBQzhDLGNBQWMsQ0FBQyxHQUFHSCxZQUFZO0lBQ2hEO0lBRUEsSUFBSWxILFNBQVMsRUFBRTtNQUNiLEtBQUssTUFBTXNILFNBQVMsSUFBSXRILFNBQVMsRUFBRTtRQUNqQyxJQUFJLEVBQUVzSCxTQUFTLElBQUkvQyxlQUFlLENBQUMsRUFBRTtVQUNuQ0EsZUFBZSxDQUFDK0MsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUNqQztRQUVBLEtBQUssTUFBTUMsT0FBTyxJQUFJdkgsU0FBUyxDQUFDc0gsU0FBUyxDQUFDLEVBQUU7VUFDMUMvQyxlQUFlLENBQUMrQyxTQUFTLENBQUMsQ0FBQ0gsSUFBSSxDQUFDSSxPQUFPLENBQUM7UUFDMUM7TUFDRjtJQUNGO0lBRUEsT0FBT2hELGVBQWU7RUFDeEI7RUFFQTBDLFdBQVdBLENBQUEsRUFBSTtJQUNiLE1BQU07TUFDSmpILFNBQVM7TUFDVEUsY0FBYztNQUNkRSxVQUFVO01BQ1ZmLElBQUk7TUFDSmtCLFNBQVM7TUFDVC9DLFVBQVU7TUFDVmtELE9BQU87TUFDUEcsUUFBUTtNQUNSdkIsV0FBVztNQUNYd0IscUJBQXFCO01BQ3JCQyx5QkFBeUI7TUFDekJDLGFBQWE7TUFDYnpCLGNBQWM7TUFDZDBCLGNBQWM7TUFDZEMsYUFBYTtNQUNiMUIsVUFBVTtNQUNWMkIsYUFBYTtNQUNiMUIsa0JBQWtCO01BQ2xCMkIsaUJBQWlCO01BQ2pCRSxPQUFPO01BQ1BDLE1BQU07TUFDTkMsVUFBVTtNQUNWQyxVQUFVO01BQ1YvQix5QkFBeUI7TUFDekJDLHFCQUFxQjtNQUNyQitCLGNBQWM7TUFDZEMsZUFBZTtNQUNmQyxtQkFBbUI7TUFDbkJoQyxRQUFRO01BQ1JpQyxXQUFXO01BQ1hDLFNBQVM7TUFDVGpDLE1BQU07TUFDTmtDLGFBQWE7TUFDYmpDLE9BQU87TUFDUG1DLGFBQWE7TUFDYjVELFNBQVM7TUFDVCxHQUFHbUo7SUFDTCxDQUFDLEdBQUcsSUFBSSxDQUFDNUUsS0FBSztJQUNkLE1BQU07TUFBQzJELE1BQU07TUFBRUUsT0FBTztNQUFFNUksS0FBSztNQUFFdUg7SUFBTSxDQUFDLEdBQUd2TCxJQUFJLENBQUMsSUFBSSxDQUFDMkQsVUFBVSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQztJQUV0RyxJQUFJaUssYUFBYSxFQUFFQyxtQkFBbUI7SUFFdEMsSUFBSSxPQUFPbkcsTUFBTSxJQUFJLFVBQVUsRUFBRTtNQUMvQmtHLGFBQWEsR0FBR2xHLE1BQU0sQ0FBQztRQUFDZ0YsTUFBTTtRQUFFRSxPQUFPO1FBQUU1SSxLQUFLO1FBQUV1SDtNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sSUFBSTdELE1BQU0sRUFBRTtNQUNqQmtHLGFBQWEsR0FBR2xHLE1BQU07SUFDeEIsQ0FBQyxNQUFNO01BQ0xrRyxhQUFhLEdBQUdoRyxVQUFVLENBQUM2RixTQUFTLENBQUMsQ0FBQyxDQUFDSyxLQUFLLENBQUM7UUFBQ2pDLEtBQUssRUFBRTtNQUFDLENBQUMsQ0FBQztJQUMxRDtJQUVBLElBQUksQ0FBQy9ELGVBQWUsRUFBRTtNQUNwQixJQUFJQyxtQkFBbUIsRUFBRTtRQUN2QjhGLG1CQUFtQixHQUFHOUYsbUJBQW1CO01BQzNDLENBQUMsTUFBTTtRQUNMOEYsbUJBQW1CLEdBQUdqTSxRQUFRO01BQ2hDO0lBQ0Y7SUFFQSxNQUFNbU0sYUFBYSxHQUFHO01BQ3BCQyxTQUFTLEVBQUU7SUFDYixDQUFDO0lBRUQsSUFBSS9ILE9BQU8sRUFBRTtNQUNYOEgsYUFBYSxDQUFDRSxNQUFNLEdBQUcsbUJBQW1CO01BQzFDRixhQUFhLENBQUNHLFlBQVksR0FBRyxDQUFDO0lBQ2hDO0lBRUEsTUFBTUMsUUFBUSxnQkFDWmxPLEtBQUEsQ0FBQWlFLGFBQUEsQ0FBQ2pCLFlBQVksQ0FBQ21MLFFBQVE7TUFBQ0MsS0FBSyxFQUFFLElBQUksQ0FBQ3RLLEVBQUUsQ0FBQ047SUFBa0IsZ0JBQ3REeEQsS0FBQSxDQUFBaUUsYUFBQSxDQUFDaEQsUUFBUSxFQUFBb04sUUFBQTtNQUNQQyxJQUFJLEVBQUU3QixNQUFPO01BQ2J2SSxPQUFPLEVBQUU7UUFDUEMsS0FBSyxFQUFFekQsVUFBVSxDQUFDLGtCQUFrQixFQUFFK0YsU0FBUyxDQUFDO1FBQ2hEdUQsUUFBUSxFQUFFLElBQUksQ0FBQ3hGLENBQUMsQ0FBQ3NGLHdCQUF3QjtRQUN6QzFHLFVBQVUsRUFBRSxJQUFJLENBQUNvQixDQUFDLENBQUNwQjtNQUNyQixDQUFFO01BQ0ZtTCxTQUFTLEVBQUUsSUFBSSxDQUFDL0osQ0FBQyxDQUFDcEIsVUFBVztNQUM3Qm9MLFlBQVksRUFBRSxJQUFJLENBQUMxSyxFQUFFLENBQUMySyxXQUFZO01BQ2xDeEwsbUJBQW1CLEVBQUVBLG1CQUFvQjtNQUN6Q3lMLFVBQVUsRUFBRSxJQUFJLENBQUM1SyxFQUFFLENBQUM0SyxVQUFXO01BQy9CQyw4QkFBOEI7TUFDOUJ2SyxLQUFLLEVBQUUwSjtJQUFjLEdBQ2pCSixTQUFTLENBQ2QsQ0FDb0IsQ0FDeEI7SUFFRCxvQkFDRTFOLEtBQUEsQ0FBQWlFLGFBQUEsQ0FBQWpFLEtBQUEsQ0FBQWlGLFFBQUEsUUFDR29DLGFBQWEsSUFBSTNCLFVBQVUsaUJBQzFCMUYsS0FBQSxDQUFBaUUsYUFBQSxDQUFDeEQsSUFBSTtNQUFDZ0csU0FBUyxFQUFDO0lBQThCLEdBQzNDLElBQUksQ0FBQ3lDLFVBQVUsQ0FBQyxDQUNiLENBQUMsRUFFUjdCLGFBQWEsSUFBSSxDQUFDM0IsVUFBVSxJQUMzQixJQUFJLENBQUN3RCxVQUFVLENBQUMsQ0FBQyxFQUVsQjNELElBQUksaUJBQ0h2RixLQUFBLENBQUFpRSxhQUFBLENBQUN4RCxJQUFJLEVBQUE0TixRQUFBO01BQ0g1SCxTQUFTLEVBQUUvRixVQUFVLENBQUMsd0JBQXdCLEVBQUUsTUFBTSxFQUFFK0YsU0FBUyxDQUFFO01BQ25FTSxRQUFRLEVBQUUsSUFBSSxDQUFDNkgsYUFBYSxDQUFDLENBQUU7TUFDL0JuSCxNQUFNLEVBQUVrRyxhQUFjO01BQ3RCa0IsTUFBTSxFQUFFLElBQUksQ0FBQ0MsV0FBVyxDQUFDO0lBQUUsR0FDdkJwQixTQUFTLEdBRVpRLFFBQ0csQ0FBQyxFQUVSLENBQUMzSSxJQUFJLElBQUkySSxRQUFRLEVBQ2pCNUMsTUFBTSxJQUFJc0MsbUJBQW1CLGlCQUM1QjVOLEtBQUEsQ0FBQWlFLGFBQUEsQ0FBQzJKLG1CQUFtQjtNQUFDdEMsTUFBTSxFQUFFQTtJQUFPLENBQUUsQ0FBQyxFQUV4Q0EsTUFBTSxJQUFJekQsZUFBZSxJQUN4QkEsZUFBZSxDQUFDO01BQUN5RDtJQUFNLENBQUMsQ0FFMUIsQ0FBQztFQUVQO0VBRUEyQixpQkFBaUIsR0FBSThCLENBQUMsSUFBSztJQUN6QixNQUFNO01BQUNwSztJQUFLLENBQUMsR0FBR29LLENBQUMsQ0FBQ0MsV0FBVyxDQUFDQyxNQUFNO0lBQ3BDLE1BQU07TUFBQ2xGO0lBQU0sQ0FBQyxHQUFHLElBQUksQ0FBQ3ZGLENBQUM7SUFFdkIsSUFBSSxDQUFDWSxRQUFRLENBQUM7TUFBQ1Q7SUFBSyxDQUFDLENBQUM7SUFDdEIsSUFBSW9GLE1BQU0sRUFBRUEsTUFBTSxDQUFDbUYsVUFBVSxHQUFHdkssS0FBSztFQUN2QyxDQUFDO0VBRUQyRixjQUFjLEdBQUdBLENBQUM7SUFBQ3dDO0VBQUksQ0FBQyxLQUFLO0lBQzNCLE1BQU1TLGNBQWMsR0FBRyxJQUFJLENBQUNqSixDQUFDLENBQUNxRCxVQUFVLENBQUNrQixjQUFjLENBQUMsQ0FBQyxDQUFDTixJQUFJO0lBRTlELElBQUl1RSxJQUFJLENBQUNxQyxPQUFPLENBQUM1QixjQUFjLENBQUMsRUFBRTtNQUNoQyxNQUFNNkIsYUFBYSxHQUFHdEMsSUFBSSxDQUFDcUMsT0FBTyxDQUFDNUIsY0FBYyxDQUFDLENBQUNELE1BQU07TUFFekQsSUFBSSxDQUFDbEksUUFBUSxDQUFFaUssU0FBUyxLQUFNO1FBQzVCcEcscUJBQXFCLEVBQUVvRyxTQUFTLENBQUNwRyxxQkFBcUIsR0FBR21HO01BQzNELENBQUMsQ0FBQyxDQUFDO0lBQ0w7RUFDRixDQUFDO0VBRUQ3RSxnQkFBZ0IsR0FBR0EsQ0FBQztJQUFDdUM7RUFBSSxDQUFDLEtBQUs7SUFDN0IsTUFBTVMsY0FBYyxHQUFHLElBQUksQ0FBQ2pKLENBQUMsQ0FBQ3FELFVBQVUsQ0FBQ2tCLGNBQWMsQ0FBQyxDQUFDLENBQUNOLElBQUk7SUFFOUQsSUFBSXVFLElBQUksQ0FBQ3dDLFNBQVMsQ0FBQy9CLGNBQWMsQ0FBQyxFQUFFO01BQ2xDLE1BQU1nQyxlQUFlLEdBQUd6QyxJQUFJLENBQUN3QyxTQUFTLENBQUMvQixjQUFjLENBQUMsQ0FBQ0QsTUFBTTtNQUU3RCxJQUFJLENBQUNsSSxRQUFRLENBQUVpSyxTQUFTLEtBQU07UUFDNUJwRyxxQkFBcUIsRUFBRW9HLFNBQVMsQ0FBQ3BHLHFCQUFxQixHQUFHc0c7TUFDM0QsQ0FBQyxDQUFDLENBQUM7SUFDTDtFQUNGLENBQUM7RUFFRGQsV0FBVyxHQUFJZSxLQUFLLElBQUssR0FBRyxJQUFJLENBQUNoTCxDQUFDLENBQUNzRix3QkFBd0IsSUFBSTBGLEtBQUssQ0FBQ3BGLEVBQUUsQ0FBQyxDQUFDLEVBQUU7RUFFM0VsQixVQUFVLEdBQUdBLENBQUEsS0FBTTtJQUNqQixNQUFNO01BQUNQLGFBQWE7TUFBRThHLFlBQVk7TUFBRUM7SUFBb0IsQ0FBQyxHQUFHLElBQUksQ0FBQzVMLEVBQUU7SUFDbkUsTUFBTTtNQUFDdUQsYUFBYTtNQUFFMUI7SUFBa0IsQ0FBQyxHQUFHLElBQUksQ0FBQ3JCLENBQUM7SUFDbEQsTUFBTTtNQUFDZ0Y7SUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDOUUsQ0FBQztJQUMzQixNQUFNO01BQUM4QztJQUFpQixDQUFDLEdBQUcsSUFBSSxDQUFDd0IsS0FBSztJQUN0QyxNQUFNO01BQUM2RDtJQUFPLENBQUMsR0FBRzVNLElBQUksQ0FBQyxJQUFJLENBQUMyRCxVQUFVLEVBQUUsU0FBUyxDQUFDO0lBRWxELG9CQUNFMUQsS0FBQSxDQUFBaUUsYUFBQSxDQUFDL0MsSUFBSTtNQUFDdUYsU0FBUyxFQUFDLHlCQUF5QjtNQUFDa0osT0FBTyxFQUFFaEgsYUFBYztNQUFDaUgsUUFBUSxFQUFFLElBQUksQ0FBQzlMLEVBQUUsQ0FBQytMLGtCQUFtQjtNQUFDQyxPQUFPLEVBQUUsSUFBSSxDQUFDQyxTQUFTLENBQUM3RztJQUFXLEdBQ3hJLEdBQUcsSUFBSXlELE9BQU8saUJBQ2IzTSxLQUFBLENBQUFpRSxhQUFBO01BQU9zRSxJQUFJLEVBQUMsR0FBRztNQUFDcEQsSUFBSSxFQUFDLFFBQVE7TUFBQ2lKLEtBQUssRUFBRXpCLE9BQU8sQ0FBQ25JO0lBQUUsQ0FBRSxDQUFDLEVBRW5ENkMsYUFBYSxDQUFDO01BQ2IySSxlQUFlLEVBQUVQLFlBQVk7TUFDN0JRLHdCQUF3QixFQUFFUCxvQkFBb0I7TUFDOUMvQyxPQUFPO01BQ1ByRDtJQUNGLENBQUMsQ0FBQyxFQUNEM0Qsa0JBQWtCLGlCQUNqQjNGLEtBQUEsQ0FBQWlFLGFBQUE7TUFDRXdDLFNBQVMsRUFBQyxrREFBa0Q7TUFDNUR0QixJQUFJLEVBQUMsUUFBUTtNQUNiZixLQUFLLEVBQUU7UUFBQzhMLFNBQVMsRUFBRTtNQUFLLENBQUU7TUFDMUI5QixLQUFLLEVBQUU5RyxpQkFBaUIsSUFBSSxJQUFJLENBQUN6RCxDQUFDLENBQUMsU0FBUyxFQUFFO1FBQUNrQixZQUFZLEVBQUU7TUFBUSxDQUFDO0lBQUUsQ0FDekUsQ0FFQyxDQUFDO0VBRVgsQ0FBQztFQUVEb0wsZUFBZSxHQUFJcEIsQ0FBQyxJQUFLO0lBQ3ZCQSxDQUFDLENBQUNxQixjQUFjLENBQUMsQ0FBQztJQUNsQixJQUFJLENBQUNoTCxRQUFRLENBQUM7TUFBQ3FFLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FBQ21CLEtBQUssQ0FBQ25CO0lBQVcsQ0FBQyxDQUFDO0VBQ3ZELENBQUM7RUFFRDRHLGdCQUFnQixHQUFJdEIsQ0FBQyxJQUFLO0lBQ3hCLE1BQU07TUFBQy9HO0lBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQ3hELENBQUM7SUFDMUIsTUFBTThMLGVBQWUsR0FBR3hRLElBQUksQ0FBQ2lQLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDO0lBQ2xELE1BQU13QixNQUFNLEdBQUcsR0FBR3ZJLFNBQVMsTUFBTTtJQUNqQyxNQUFNd0ksWUFBWSxHQUFHLENBQUMsQ0FBQztJQUV2QkEsWUFBWSxDQUFDRCxNQUFNLENBQUMsR0FBR0QsZUFBZTtJQUV0QzFPLE1BQU0sQ0FBQzZPLFlBQVksQ0FBQ0QsWUFBWSxDQUFDO0VBQ25DLENBQUM7RUFFRDlCLFVBQVUsR0FBR0EsQ0FBQztJQUFDZ0MsS0FBSztJQUFFeEYsSUFBSSxFQUFFc0U7RUFBSyxDQUFDLEtBQUs7SUFDckMsSUFBSSxDQUFDLElBQUksQ0FBQ2hMLENBQUMsQ0FBQ3FGLGtCQUFrQixFQUFFO01BQzlCLG9CQUNFN0osS0FBQSxDQUFBaUUsYUFBQSxDQUFDMUQsSUFBSSxxQkFDSFAsS0FBQSxDQUFBaUUsYUFBQSxDQUFDN0IsSUFBSSxRQUNGLElBQUksQ0FBQ3lCLENBQUMsQ0FBQyxzQkFBc0IsRUFBRTtRQUFDa0IsWUFBWSxFQUFFO01BQVksQ0FBQyxDQUN4RCxDQUNGLENBQUM7SUFFWDtJQUVBLG9CQUNFL0UsS0FBQSxDQUFBaUUsYUFBQSxDQUFDdkMsUUFBUTtNQUNQc0ksUUFBUSxFQUFFd0YsS0FBSyxDQUFDeEYsUUFBUSxDQUFDLENBQUU7TUFDM0JwRCxPQUFPLEVBQUUsSUFBSSxDQUFDcEMsQ0FBQyxDQUFDMkUsYUFBYztNQUM5QndILFlBQVksRUFBRSxJQUFJLENBQUNBLFlBQVksQ0FBQyxDQUFFO01BQ2xDaE4sTUFBTSxFQUFFLElBQUksQ0FBQ0csRUFBRSxDQUFDSCxNQUFPO01BQ3ZCK00sS0FBSyxFQUFFQSxLQUFNO01BQ2JFLEdBQUcsRUFBRXBCLEtBQUssQ0FBQ3BGLEVBQUUsQ0FBQyxDQUFFO01BQ2hCb0YsS0FBSyxFQUFFQSxLQUFNO01BQ2IvTCxLQUFLLEVBQUUsSUFBSztNQUNacUcsd0JBQXdCLEVBQUUsSUFBSSxDQUFDdEYsQ0FBQyxDQUFDc0Y7SUFBeUIsQ0FDM0QsQ0FBQztFQUVOLENBQUM7RUFFRCtHLGNBQWMsR0FBR0EsQ0FBQztJQUFDL0UsTUFBTTtJQUFFZ0YsV0FBVztJQUFFQyxJQUFJO0lBQUUzTSxLQUFLO0lBQUVlO0VBQUksQ0FBQyxLQUFLO0lBQzdELE1BQU07TUFBQ2E7SUFBTyxDQUFDLEdBQUcsSUFBSSxDQUFDMUIsQ0FBQztJQUN4QixNQUFNME0sWUFBWSxHQUFHO01BQ25CQyxjQUFjLEVBQUUsUUFBUTtNQUN4QkMsT0FBTyxFQUFFLENBQUM7TUFDVkMsUUFBUSxFQUFFO0lBQ1osQ0FBQztJQUVELElBQUluTCxPQUFPLEVBQUU7TUFDWG9MLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDTCxZQUFZLEVBQUU7UUFDMUJNLGVBQWUsRUFBRVAsSUFBSSxHQUFHLFNBQVMsR0FBRztNQUN0QyxDQUFDLENBQUM7SUFDSjtJQUVBLElBQUk1TCxJQUFJLElBQUksU0FBUyxFQUFFO01BQ3JCNkwsWUFBWSxDQUFDTyxhQUFhLEdBQUcsS0FBSztNQUNsQ1AsWUFBWSxDQUFDUSxVQUFVLEdBQUcsUUFBUTtNQUVsQyxJQUFJLElBQUksQ0FBQzFOLEVBQUUsQ0FBQ1AsSUFBSSxFQUFFO1FBQ2hCeU4sWUFBWSxDQUFDbE0sVUFBVSxHQUFHLE1BQU07TUFDbEMsQ0FBQyxNQUFNO1FBQ0xrTSxZQUFZLENBQUNTLFdBQVcsR0FBRyxNQUFNO01BQ25DO0lBQ0YsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDM04sRUFBRSxDQUFDUCxJQUFJLElBQUl5QyxPQUFPLEVBQUU7TUFDbENnTCxZQUFZLENBQUNVLFdBQVcsR0FBRyxtQkFBbUI7SUFDaEQ7SUFFQSxNQUFNQyxXQUFXLEdBQUdQLE1BQU0sQ0FBQ0MsTUFBTSxDQUMvQkwsWUFBWSxFQUNaNU0sS0FDRixDQUFDO0lBRUQsT0FBT3VOLFdBQVc7RUFDcEIsQ0FBQztFQUVEak4sY0FBYyxHQUFHQSxDQUFDO0lBQUNvSCxNQUFNO0lBQUVnRixXQUFXO0lBQUUxTSxLQUFLO0lBQUVlO0VBQUksQ0FBQyxLQUFLO0lBQ3ZELE1BQU07TUFBQzVCO0lBQUksQ0FBQyxHQUFHLElBQUksQ0FBQ08sRUFBRTtJQUN0QixNQUFNa04sWUFBWSxHQUFHO01BQ25CTyxhQUFhLEVBQUUsS0FBSztNQUNwQkMsVUFBVSxFQUFFLFFBQVE7TUFDcEJOLE9BQU8sRUFBRTtJQUNYLENBQUM7SUFFRCxJQUFJL0wsSUFBSSxJQUFJLFNBQVMsSUFBSTVCLElBQUksSUFBSSxJQUFJLENBQUNlLENBQUMsQ0FBQzBCLE9BQU8sRUFBRTtNQUMvQ2dMLFlBQVksQ0FBQ1UsV0FBVyxHQUFHLG1CQUFtQjtJQUNoRDtJQUVBLE1BQU1DLFdBQVcsR0FBR1AsTUFBTSxDQUFDQyxNQUFNLENBQy9CTCxZQUFZLEVBQ1o1TSxLQUNGLENBQUM7SUFFRCxPQUFPdU4sV0FBVztFQUNwQixDQUFDO0VBRURDLGtCQUFrQkEsQ0FBQSxFQUFHO0lBQ25CLE1BQU1ELFdBQVcsR0FBRztNQUFDRSxVQUFVLEVBQUU7SUFBTSxDQUFDO0lBRXhDLE9BQU9GLFdBQVc7RUFDcEI7RUFFQUcsV0FBVyxHQUFHQSxDQUFDO0lBQUNmO0VBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLO0lBQzdCLE1BQU1ZLFdBQVcsR0FBRztNQUNsQkksSUFBSSxFQUFFLENBQUM7TUFDUFAsVUFBVSxFQUFFO0lBQ2QsQ0FBQztJQUVELElBQUlULElBQUksSUFBSSxJQUFJLENBQUN6TSxDQUFDLENBQUMwQixPQUFPLEVBQUU7TUFDMUIyTCxXQUFXLENBQUNMLGVBQWUsR0FBRyxTQUFTO0lBQ3pDO0lBRUEsT0FBT0ssV0FBVztFQUNwQixDQUFDO0VBRUR0TixpQkFBaUIsR0FBR0EsQ0FBQSxLQUFNO0lBQ3hCLE1BQU1zTixXQUFXLEdBQUc7TUFDbEJJLElBQUksRUFBRSxDQUFDO01BQ1BQLFVBQVUsRUFBRTtJQUNkLENBQUM7SUFFRCxPQUFPRyxXQUFXO0VBQ3BCLENBQUM7RUFFRC9DLGFBQWFBLENBQUEsRUFBRztJQUNkLE1BQU07TUFBQzdIO0lBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQytCLEtBQUs7SUFDN0IsTUFBTTtNQUFDYTtJQUFZLENBQUMsR0FBRyxJQUFJLENBQUNuRixDQUFDO0lBQzdCLE1BQU07TUFBQ2lJLE1BQU07TUFBRUUsT0FBTztNQUFFNUksS0FBSztNQUFFdUg7SUFBTSxDQUFDLEdBQUd2TCxJQUFJLENBQUMsSUFBSSxDQUFDMkQsVUFBVSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQztJQUV0RyxvQkFDRTFELEtBQUEsQ0FBQWlFLGFBQUEsQ0FBQzFELElBQUk7TUFBQzZELEtBQUssRUFBRTtRQUFDbU4sYUFBYSxFQUFFO01BQUs7SUFBRSxHQUNqQ3hLLFFBQVEsSUFBSUEsUUFBUSxDQUFDO01BQUMwRixNQUFNO01BQUVFLE9BQU87TUFBRTVJLEtBQUs7TUFBRXVIO0lBQU0sQ0FBQyxDQUFDLGVBQ3ZEdEwsS0FBQSxDQUFBaUUsYUFBQSxDQUFDM0QsU0FBUztNQUFDNEQsT0FBTyxFQUFFO1FBQUNDLEtBQUssRUFBRTtNQUFlLENBQUU7TUFBQzZOLE9BQU8sRUFBRSxJQUFJLENBQUNsTyxFQUFFLENBQUNxTTtJQUFnQixnQkFDN0VuUSxLQUFBLENBQUFpRSxhQUFBLENBQUMzQyxJQUFJO01BQUNpSCxJQUFJLEVBQUMsUUFBUTtNQUFDMEosSUFBSSxFQUFFO0lBQUcsQ0FBRSxDQUN0QixDQUFDLGVBQ1pqUyxLQUFBLENBQUFpRSxhQUFBLENBQUMxRCxJQUFJO01BQUM2RCxLQUFLLEVBQUU7UUFBQytILFFBQVEsRUFBRTtNQUFVO0lBQUUsR0FDakN4QyxZQUFZLGlCQUNYM0osS0FBQSxDQUFBaUUsYUFBQSxDQUFDaEMsUUFBUTtNQUFDaVEsY0FBYyxFQUFFLElBQUksQ0FBQ3BPLEVBQUUsQ0FBQ3FPLHNCQUF1QjtNQUFDMU8sS0FBSyxFQUFFO0lBQUssQ0FBRSxDQUFDLGVBRTNFekQsS0FBQSxDQUFBaUUsYUFBQSxDQUFDM0QsU0FBUztNQUFDNEQsT0FBTyxFQUFFO1FBQUNDLEtBQUssRUFBRTtNQUFpQixDQUFFO01BQUM2TixPQUFPLEVBQUUsSUFBSSxDQUFDbE8sRUFBRSxDQUFDc087SUFBa0IsZ0JBQ2pGcFMsS0FBQSxDQUFBaUUsYUFBQSxDQUFDM0MsSUFBSTtNQUFDaUgsSUFBSSxFQUFDLE1BQU07TUFBQzBKLElBQUksRUFBRTtJQUFHLENBQUUsQ0FDcEIsQ0FDUCxDQUNGLENBQUM7RUFFWDtFQUVBbkQsV0FBV0EsQ0FBQSxFQUFHO0lBQ1osTUFBTTtNQUFDeEQ7SUFBTSxDQUFDLEdBQUd2TCxJQUFJLENBQUMsSUFBSSxDQUFDMkQsVUFBVSxFQUFFLFFBQVEsQ0FBQztJQUNoRCxNQUFNMk8sV0FBVyxHQUFHL0csTUFBTSxDQUFDK0csV0FBVyxDQUFDLENBQUM7SUFDeEMsTUFBTUMsVUFBVSxHQUFHaEgsTUFBTSxDQUFDZ0gsVUFBVSxDQUFDLENBQUM7SUFDdEMsTUFBTUMsT0FBTyxHQUFHakgsTUFBTSxDQUFDaUgsT0FBTyxDQUFDLENBQUM7SUFDaEMsTUFBTUMsRUFBRSxHQUFHQyxJQUFJLENBQUNDLEdBQUcsQ0FBQ0wsV0FBVyxHQUFHRSxPQUFPLEVBQUVELFVBQVUsQ0FBQztJQUN0RCxNQUFNdk4sWUFBWSxHQUFHLHVEQUF1RDtJQUM1RSxJQUFJNE4sSUFBSSxHQUFJLENBQUNOLFdBQVcsR0FBRyxDQUFDLElBQUlFLE9BQU8sR0FBSSxDQUFDO0lBRTVDLElBQUlDLEVBQUUsS0FBSyxDQUFDLEVBQUVHLElBQUksR0FBRyxDQUFDO0lBRXRCLG9CQUNFM1MsS0FBQSxDQUFBaUUsYUFBQSxDQUFDMUQsSUFBSTtNQUFDNkQsS0FBSyxFQUFFO1FBQUNtTixhQUFhLEVBQUUsS0FBSztRQUFFTixjQUFjLEVBQUUsZUFBZTtRQUFFZixTQUFTLEVBQUU7TUFBRTtJQUFFLGdCQUNsRmxRLEtBQUEsQ0FBQWlFLGFBQUEsQ0FBQzFELElBQUk7TUFBQzJELE9BQU8sRUFBRTtRQUFDQyxLQUFLLEVBQUU7TUFBZ0IsQ0FBRTtNQUFDQyxLQUFLLEVBQUU7UUFBQ21OLGFBQWEsRUFBRTtNQUFLO0lBQUUsZ0JBQ3RFdlIsS0FBQSxDQUFBaUUsYUFBQSxDQUFDN0IsSUFBSSxRQUNGLElBQUksQ0FBQ3lCLENBQUMsQ0FBQywrQkFBK0IsRUFBRTtNQUFDa0IsWUFBWTtNQUFFNE4sSUFBSTtNQUFFSCxFQUFFO01BQUVJLFdBQVcsRUFBRU47SUFBVSxDQUFDLENBQ3RGLENBQUMsRUFDTixJQUFJLENBQUNoTyxDQUFDLENBQUNDLFNBQVMsSUFBSSxJQUFJLENBQUNDLENBQUMsQ0FBQ3lFLHFCQUFxQixLQUFLLElBQUksaUJBQ3hEakosS0FBQSxDQUFBaUUsYUFBQSxDQUFDN0IsSUFBSTtNQUFDZ0MsS0FBSyxFQUFFO1FBQUNVLFVBQVUsRUFBRTtNQUFDO0lBQUUsR0FDMUIsSUFBSSxDQUFDakIsQ0FBQyxDQUFDLGFBQWEsRUFBRTtNQUFDa0IsWUFBWSxFQUFFLHVCQUF1QjtNQUFFOE4sUUFBUSxFQUFFLElBQUksQ0FBQ3JPLENBQUMsQ0FBQ3lFO0lBQXFCLENBQUMsQ0FDbEcsQ0FFSixDQUFDLGVBQ1BqSixLQUFBLENBQUFpRSxhQUFBLENBQUMxRCxJQUFJLHFCQUNIUCxLQUFBLENBQUFpRSxhQUFBLENBQUNqQyxNQUFNO01BQ0x5RSxTQUFTLEVBQUMsaUJBQWlCO01BQzNCMUIsWUFBWSxFQUFFd04sT0FBUTtNQUN0Qk8sUUFBUSxFQUFFLElBQUksQ0FBQ2hQLEVBQUUsQ0FBQ3VNLGdCQUFpQjtNQUNuQzBDLE9BQU8sRUFBRWxRO0lBQWtCLENBQzVCLENBQ0csQ0FDRixDQUFDO0VBRVg7RUFFQTRELFNBQVNBLENBQUEsRUFBRztJQUNWLE1BQU0vRixVQUFVLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQztJQUV2QyxJQUFJLElBQUksQ0FBQ29JLEtBQUssQ0FBQ3JDLFNBQVMsRUFBRTtNQUN4Qi9GLFVBQVUsQ0FBQzJNLElBQUksQ0FBQyxJQUFJLENBQUN2RSxLQUFLLENBQUNyQyxTQUFTLENBQUM7SUFDdkM7SUFFQSxPQUFPL0YsVUFBVSxDQUFDc1MsSUFBSSxDQUFDLEdBQUcsQ0FBQztFQUM3QjtFQUVBQyxXQUFXQSxDQUFDbkgsTUFBTSxFQUFFO0lBQ2xCLE1BQU1oRCxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBRWhCLElBQUlnRCxNQUFNLENBQUNvSCxVQUFVLEVBQUU7TUFDckJwSyxLQUFLLENBQUMxRSxLQUFLLEtBQUssQ0FBQyxDQUFDO01BQ2xCMEUsS0FBSyxDQUFDMUUsS0FBSyxDQUFDK08sU0FBUyxHQUFHLFFBQVE7SUFDbEM7SUFFQSxJQUFJckgsTUFBTSxDQUFDc0gsU0FBUyxFQUFFO01BQ3BCdEssS0FBSyxDQUFDMUUsS0FBSyxLQUFLLENBQUMsQ0FBQztNQUNsQjBFLEtBQUssQ0FBQzFFLEtBQUssQ0FBQytPLFNBQVMsR0FBRyxPQUFPO0lBQ2pDO0lBRUEsT0FBT3JLLEtBQUs7RUFDZDtFQUVBdUssV0FBV0EsQ0FBQ3ZILE1BQU0sRUFBRTtJQUNsQixNQUFNaEQsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUVoQixJQUFJZ0QsTUFBTSxDQUFDb0gsVUFBVSxFQUFFO01BQ3JCcEssS0FBSyxDQUFDMUUsS0FBSyxLQUFLLENBQUMsQ0FBQztNQUNsQjBFLEtBQUssQ0FBQzFFLEtBQUssQ0FBQzZNLGNBQWMsR0FBRyxRQUFRO0lBQ3ZDO0lBRUEsSUFBSW5GLE1BQU0sQ0FBQ3NILFNBQVMsRUFBRTtNQUNwQnRLLEtBQUssQ0FBQzFFLEtBQUssS0FBSyxDQUFDLENBQUM7TUFDbEIwRSxLQUFLLENBQUMxRSxLQUFLLENBQUM2TSxjQUFjLEdBQUcsS0FBSztJQUNwQztJQUVBLE9BQU9uSSxLQUFLO0VBQ2Q7RUFFQTZILFlBQVlBLENBQUEsRUFBRztJQUNiLE1BQU1BLFlBQVksR0FBRyxDQUFDLENBQUM7SUFFdkIsS0FBSyxNQUFNN0UsTUFBTSxJQUFJLElBQUksQ0FBQ3RILENBQUMsQ0FBQ1EsZUFBZSxFQUFFO01BQzNDMkwsWUFBWSxDQUFDN0UsTUFBTSxDQUFDQyxrQkFBa0IsQ0FBQ3JFLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBR29FLE1BQU0sQ0FBQ25ILEtBQUs7SUFDckU7SUFFQSxPQUFPZ00sWUFBWTtFQUNyQjtFQUVBekwseUJBQXlCLEdBQUdBLENBQUEsS0FBTTtJQUNoQyxvQkFDRWxGLEtBQUEsQ0FBQWlFLGFBQUEsQ0FBQ25ELGFBQWE7TUFDWndOLElBQUksRUFBRSxJQUFJLENBQUM5SixDQUFDLENBQUMyRSxhQUFjO01BQzNCeEYsTUFBTSxFQUFFLElBQUksQ0FBQ0csRUFBRSxDQUFDc0UsbUJBQW9CO01BQ3BDa0wsVUFBVTtNQUNWOUUsWUFBWSxFQUFFLElBQUksQ0FBQzFLLEVBQUUsQ0FBQ3lQLG9CQUFxQjtNQUMzQ0MsV0FBVyxFQUFFLElBQUksQ0FBQzFQLEVBQUUsQ0FBQzBQLFdBQVk7TUFDakNDLFdBQVcsRUFBRSxJQUFJLENBQUMzUCxFQUFFLENBQUMyUCxXQUFZO01BQ2pDL0UsVUFBVSxFQUFFLElBQUksQ0FBQzVLLEVBQUUsQ0FBQzRQO0lBQTBCLENBQy9DLENBQUM7RUFFTixDQUFDO0VBRURDLHlCQUF5QixHQUFJekksSUFBSSxJQUFLLEdBQUdBLElBQUksQ0FBQ2Esa0JBQWtCLENBQUNyRSxVQUFVLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQ2xELENBQUMsQ0FBQ2dGLFFBQVEsRUFBRTtFQUNsRytKLG9CQUFvQixHQUFJckksSUFBSSxJQUFLQSxJQUFJLENBQUNhLGtCQUFrQixDQUFDckUsVUFBVSxDQUFDLENBQUM7RUFFckU4TCxXQUFXLEdBQUdBLENBQUM7SUFBQ0ksYUFBYTtJQUFFQyxTQUFTO0lBQUVDLENBQUM7SUFBRUM7RUFBQyxDQUFDLEtBQUs7SUFDbEQsTUFBTUMsZ0JBQWdCLEdBQUdsVSxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxlQUFlLEVBQUUrVCxTQUFTLEVBQUUsa0JBQWtCLENBQUM7SUFFeEYsSUFBSUQsYUFBYSxFQUFFO01BQ2pCdlQsUUFBUSxDQUFDNFQsTUFBTSxDQUFDRCxnQkFBZ0IsRUFBRUosYUFBYSxDQUFDLENBQUNNLEtBQUssQ0FBQyxDQUFDO0lBQzFELENBQUMsTUFBTTtNQUNMRixnQkFBZ0IsQ0FBQzVJLFFBQVEsQ0FBQztRQUFDMEksQ0FBQztRQUFFQztNQUFDLENBQUMsQ0FBQztJQUNuQztFQUNGLENBQUM7RUFFRE4sV0FBVyxHQUFHLE1BQUFBLENBQU87SUFBQ1UsUUFBUTtJQUFFQyxZQUFZO0lBQUVDLE1BQU07SUFBRUM7RUFBVSxDQUFDLEtBQUs7SUFDcEUsSUFBSUYsWUFBWSxJQUFJRSxVQUFVLEVBQUUsT0FBTSxDQUFDOztJQUV2QyxNQUFNQyxrQkFBa0IsR0FBR0osUUFBUSxDQUFDcEksa0JBQWtCLENBQUN5SSxXQUFXO0lBQ2xFLE1BQU1DLFFBQVEsR0FBRyxNQUFNRixrQkFBa0IsQ0FBQ0csSUFBSSxDQUFDTCxNQUFNLENBQUN0SSxrQkFBa0IsQ0FBQzNCLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQzs7SUFFL0UsTUFBTStKLFFBQVEsQ0FBQ3BJLGtCQUFrQixDQUFDNEksTUFBTSxDQUFDO01BQUN4SSxRQUFRLEVBQUVzSSxRQUFRLENBQUN0SSxRQUFRLENBQUM7SUFBQyxDQUFDLENBQUM7RUFDM0UsQ0FBQztFQUVEdUgseUJBQXlCLEdBQUdBLENBQUM7SUFBQ2tCLFFBQVE7SUFBRTFKLElBQUk7SUFBRTJKO0VBQVUsQ0FBQyxLQUFLO0lBQzVELE1BQU07TUFBQ0MsYUFBYTtNQUFFM0osY0FBYztNQUFFVyxNQUFNO01BQUVDO0lBQWtCLENBQUMsR0FBR2IsSUFBSTtJQUV4RSxvQkFDRWxMLEtBQUEsQ0FBQWlFLGFBQUEsQ0FBQzdDLFlBQVk7TUFDWDJULE1BQU0sRUFBRUgsUUFBUztNQUNqQkUsYUFBYSxFQUFFQSxhQUFjO01BQzdCM0osY0FBYyxFQUFFQSxjQUFlO01BQy9CVyxNQUFNLEVBQUVBLE1BQU87TUFDZjhFLEdBQUcsRUFBRTdFLGtCQUFrQixDQUFDckUsVUFBVSxDQUFDLENBQUU7TUFDckM4QixRQUFRLEVBQUUsSUFBSSxDQUFDaEYsQ0FBQyxDQUFDZ0YsUUFBUztNQUMxQi9GLEtBQUssRUFBRSxJQUFLO01BQ1pzSSxrQkFBa0IsRUFBRUEsa0JBQW1CO01BQ3ZDOEksVUFBVSxFQUFFQSxVQUFXO01BQ3ZCOUssTUFBTSxFQUFFLElBQUksQ0FBQ3ZGLENBQUMsQ0FBQ3VGO0lBQU8sQ0FDdkIsQ0FBQztFQUVOLENBQUM7RUFFRGlMLHdCQUF3QkEsQ0FBQ2xKLE1BQU0sRUFBRTtJQUMvQixNQUFNcEwsVUFBVSxHQUFHLEVBQUU7SUFFckIsSUFBSW9MLE1BQU0sQ0FBQ21KLFdBQVcsSUFBSW5KLE1BQU0sQ0FBQ21KLFdBQVcsQ0FBQ3hPLFNBQVMsRUFBRS9GLFVBQVUsQ0FBQzJNLElBQUksQ0FBQ3ZCLE1BQU0sQ0FBQ21KLFdBQVcsQ0FBQ3hPLFNBQVMsQ0FBQztJQUNyRyxJQUFJcUYsTUFBTSxDQUFDdUgsV0FBVyxJQUFJdkgsTUFBTSxDQUFDdUgsV0FBVyxDQUFDNU0sU0FBUyxFQUFFL0YsVUFBVSxDQUFDMk0sSUFBSSxDQUFDdkIsTUFBTSxDQUFDdUgsV0FBVyxDQUFDNU0sU0FBUyxDQUFDO0lBRXJHLE9BQU8vRixVQUFVO0VBQ25CO0VBRUF3VSxvQkFBb0JBLENBQUNwSixNQUFNLEVBQUU7SUFDM0IsTUFBTTtNQUFDbkU7SUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDckQsQ0FBQztJQUUzQixJQUFJLE9BQU8sSUFBSXdILE1BQU0sRUFBRTtNQUNyQixJQUFJLE9BQU9BLE1BQU0sQ0FBQ3FKLEtBQUssSUFBSSxVQUFVLEVBQUU7UUFDckMsT0FBT3JKLE1BQU0sQ0FBQ3FKLEtBQUssQ0FBQyxDQUFDO01BQ3ZCLENBQUMsTUFBTTtRQUNMLE9BQU9ySixNQUFNLENBQUNxSixLQUFLO01BQ3JCO0lBQ0Y7SUFFQSxJQUFJQyxpQkFBaUIsR0FBR3pOLFVBQVU7O0lBRWxDO0lBQ0EsSUFBSW1FLE1BQU0sQ0FBQ3VKLElBQUksRUFBRTtNQUNmLEtBQUssTUFBTUMsUUFBUSxJQUFJeEosTUFBTSxDQUFDdUosSUFBSSxFQUFFO1FBQ2xDLE1BQU1FLGFBQWEsR0FBR3pWLElBQUksQ0FBQ3NWLGlCQUFpQixDQUFDdk0sY0FBYyxDQUFDLENBQUMsRUFBRSxlQUFlLENBQUM7UUFDL0UsTUFBTTJNLFlBQVksR0FBR0QsYUFBYSxDQUFDYixJQUFJLENBQUVlLG1CQUFtQixJQUFLQSxtQkFBbUIsQ0FBQ2xOLElBQUksSUFBSWhILFVBQVUsQ0FBQ21VLFVBQVUsQ0FBQ0osUUFBUSxDQUFDLENBQUM7UUFFN0hGLGlCQUFpQixHQUFHM1QsaUJBQWlCLENBQUMzQixJQUFJLENBQUMwVixZQUFZLEVBQUUsZUFBZSxDQUFDLENBQUM7TUFDNUU7SUFDRjtJQUVBLElBQUkxSixNQUFNLENBQUM2SixTQUFTLEVBQUUsT0FBT1AsaUJBQWlCLENBQUNRLGtCQUFrQixDQUFDOUosTUFBTSxDQUFDNkosU0FBUyxDQUFDO0lBRW5GLE1BQU0sSUFBSTVJLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQztFQUN4RDtFQUVBOEMsa0JBQWtCLEdBQUdBLENBQUEsS0FBTSxJQUFJLENBQUNKLFlBQVksQ0FBQyxDQUFDO0VBQzlDMEMsc0JBQXNCLEdBQUdBLENBQUEsS0FBTSxJQUFJLENBQUMvTSxRQUFRLENBQUM7SUFBQ3VFLFlBQVksRUFBRTtFQUFLLENBQUMsQ0FBQztFQUVuRXlJLGlCQUFpQixHQUFJckQsQ0FBQyxJQUFLO0lBQ3pCQSxDQUFDLENBQUNxQixjQUFjLENBQUMsQ0FBQztJQUVsQixJQUFJLENBQUNoTCxRQUFRLENBQUM7TUFBQ3VFLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQ25GLENBQUMsQ0FBQ21GO0lBQVksQ0FBQyxDQUFDO0VBQ3JELENBQUM7RUFFRDhGLFlBQVksR0FBR0EsQ0FBQSxLQUFNO0lBQ25CLE1BQU12RyxVQUFVLEdBQUdwSixJQUFJLENBQUMsSUFBSSxDQUFDZ0UsRUFBRSxDQUFDNkUsYUFBYSxFQUFFLFNBQVMsQ0FBQztJQUN6RCxNQUFNO01BQUNyQztJQUFVLENBQUMsR0FBRyxJQUFJLENBQUN3QyxLQUFLO0lBQy9CLE1BQU02RCxPQUFPLEdBQUcvSyxNQUFNLENBQUNpVSxhQUFhLENBQUMzTSxVQUFVLENBQUM7SUFDaEQsTUFBTTtNQUFDSTtJQUFVLENBQUMsR0FBRyxJQUFJLENBQUM5RSxDQUFDO0lBQzNCLE1BQU1zUixrQkFBa0IsR0FBRyxDQUFDLENBQUM7SUFFN0JBLGtCQUFrQixDQUFDeE0sVUFBVSxDQUFDLEdBQUd5TSxJQUFJLENBQUNDLFNBQVMsQ0FBQ3JKLE9BQU8sQ0FBQztJQUV4RC9LLE1BQU0sQ0FBQzZPLFlBQVksQ0FBQ3FGLGtCQUFrQixFQUFFO01BQUN4UDtJQUFVLENBQUMsQ0FBQztFQUN2RCxDQUFDO0VBRURvSixvQkFBb0IsR0FBRzdPLFFBQVEsQ0FBQyxJQUFJLENBQUNpRCxFQUFFLENBQUMyTCxZQUFZLENBQUM7QUFDdkQsQ0FBQyxDQUFDLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
972
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkaWdnIiwiZGlncyIsIlJlYWN0IiwiY3JlYXRlQ29udGV4dCIsInVzZUNvbnRleHQiLCJ1c2VNZW1vIiwidXNlUmVmIiwiQW5pbWF0ZWQiLCJQcmVzc2FibGUiLCJWaWV3IiwiQmFzZUNvbXBvbmVudCIsIkNhcmQiLCJjbGFzc05hbWVzIiwiQ29sbGVjdGlvbiIsImNvbHVtblZpc2libGUiLCJkZWJvdW5jZSIsIkRyYWdnYWJsZVNvcnQiLCJFdmVudEVtaXR0ZXIiLCJGaWx0ZXJzIiwiRmxhdExpc3QiLCJGb3JtIiwiSGVhZGVyIiwiSGVhZGVyQ29sdW1uIiwiSGVhZGVyU2VsZWN0IiwiSWNvbiIsImluZmxlY3Rpb24iLCJtZW1vIiwibW9kZWxDbGFzc1JlcXVpcmUiLCJNb2RlbFJvdyIsIlBhZ2luYXRlIiwiUGFyYW1zIiwiUHJvcFR5cGVzIiwiUm93Iiwic2VsZWN0Q2FsY3VsYXRvciIsIlNlbGVjdCIsIlNldHRpbmdzIiwic2hhcGVDb21wb25lbnQiLCJUYWJsZVNldHRpbmdzIiwiVGV4dCIsInVuaXF1bml6ZSIsInVzZUJyZWFrcG9pbnQiLCJ1c2VDb2xsZWN0aW9uIiwidXNlSTE4biIsInVzZUV2ZW50RW1pdHRlciIsInVzZU1vZGVsRXZlbnQiLCJ1c2VRdWVyeVBhcmFtcyIsIldpZHRocyIsInBhZ2luYXRpb25PcHRpb25zIiwiV29ya2VyUGx1Z2luc0NoZWNrQWxsQ2hlY2tib3giLCJsYXp5IiwiVGFibGVDb250ZXh0IiwiTGlzdEhlYWRlckNvbXBvbmVudCIsInNldHVwIiwidXNlU3RhdGVzIiwibGFzdFVwZGF0ZSIsIkRhdGUiLCJyZW5kZXIiLCJtZFVwIiwidGFibGVDb250ZXh0VmFsdWUiLCJ0YWJsZSIsImNvbGxlY3Rpb24iLCJldmVudHMiLCJxdWVyeVdpdGhvdXRQYWdpbmF0aW9uIiwidCIsInR0IiwicXVlcnkiLCJvbkNvbHVtblZpc2liaWxpdHlVcGRhdGVkIiwiY3JlYXRlRWxlbWVudCIsImRhdGFTZXQiLCJjbGFzcyIsInN0eWxlIiwic3R5bGVGb3JSb3dIZWFkZXIiLCJwIiwid29ya3BsYWNlIiwicyIsImN1cnJlbnRXb3JrcGxhY2UiLCJzdHlsZUZvckhlYWRlciIsIndpZHRoIiwidW5kZWZpbmVkIiwibWFyZ2luSG9yaXpvbnRhbCIsIm1hcmdpbkxlZnQiLCJkZWZhdWx0VmFsdWUiLCJwcmVwYXJlZENvbHVtbnMiLCJGcmFnbWVudCIsImhlYWRlcnNDb250ZW50RnJvbUNvbHVtbnMiLCJ0eXBlIiwic2V0U3RhdGUiLCJBcGlNYWtlclRhYmxlIiwiZGVmYXVsdFByb3BzIiwiY2FyZCIsImN1cnJlbnRVc2VyIiwiZGVzdHJveUVuYWJsZWQiLCJmaWx0ZXJDYXJkIiwiZmlsdGVyU3VibWl0QnV0dG9uIiwibm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudCIsIm5vUmVjb3Jkc0ZvdW5kQ29udGVudCIsInByZWxvYWRzIiwic2VsZWN0Iiwic3R5bGVVSSIsInByb3BUeXBlcyIsImFiaWxpdGllcyIsIm9iamVjdCIsImFjdGlvbnNDb250ZW50IiwiZnVuYyIsImFwcEhpc3RvcnkiLCJib29sIiwiaXNSZXF1aXJlZCIsImNsYXNzTmFtZSIsInN0cmluZyIsImluc3RhbmNlT2YiLCJjb2x1bW5zIiwib25lT2ZUeXBlIiwiYXJyYXkiLCJjb250cm9scyIsImRlZmF1bHREYXRlRm9ybWF0TmFtZSIsImRlZmF1bHREYXRlVGltZUZvcm1hdE5hbWUiLCJkZWZhdWx0UGFyYW1zIiwiZGVzdHJveU1lc3NhZ2UiLCJlZGl0TW9kZWxQYXRoIiwiZmlsdGVyQ29udGVudCIsImZpbHRlclN1Ym1pdExhYmVsIiwibm9kZSIsImdyb3VwQnkiLCJoZWFkZXIiLCJpZGVudGlmaWVyIiwibW9kZWxDbGFzcyIsIm9uTW9kZWxzTG9hZGVkIiwicGFnaW5hdGVDb250ZW50IiwicGFnaW5hdGlvbkNvbXBvbmVudCIsInF1ZXJ5TWV0aG9kIiwicXVlcnlOYW1lIiwic2VsZWN0Q29sdW1ucyIsInN0eWxlcyIsInZpZXdNb2RlbFBhdGgiLCJkcmFnZ2FibGVTb3J0RXZlbnRzIiwidGFibGVTZXR0aW5ncyIsIm5hbWVzcGFjZSIsIm5hbWUiLCJicmVha3BvaW50IiwicXVlcnlQYXJhbXMiLCJzZXRJbnN0YW5jZSIsImZpbHRlckZvcm1SZWYiLCJjb2xsZWN0aW9uS2V5IiwibW9kZWxDbGFzc0RhdGEiLCJwcm9wcyIsInF1ZXJ5U05hbWUiLCJjb2x1bW5zQXNBcnJheSIsImN1cnJlbnRXb3JrcGxhY2VDb3VudCIsImZpbHRlckZvcm0iLCJjb2x1bW5zVG9TaG93IiwiZHJhZ2dlZENvbHVtbiIsInByZWxvYWQiLCJxdWVyeVFOYW1lIiwicXVlcnlQYWdlTmFtZSIsInJlc2l6aW5nIiwic2hvd0ZpbHRlcnMiLCJCb29sZWFuIiwic2hvd1NldHRpbmdzIiwidGFibGVTZXR0aW5nIiwidGFibGVTZXR0aW5nTG9hZGVkIiwidGFibGVTZXR0aW5nRnVsbENhY2hlS2V5Iiwid2lkdGhzIiwiY2FjaGVLZXkiLCJsb2FkQ3VycmVudFdvcmtwbGFjZSIsInRoZW4iLCJsb2FkQ3VycmVudFdvcmtwbGFjZUNvdW50IiwiaWQiLCJsb2FkVGFibGVTZXR0aW5nIiwib25MaW5rc0NyZWF0ZWQiLCJvbkxpbmtzRGVzdHJveWVkIiwiY29sbGVjdGlvblJlYWR5IiwiYWJpbGl0aWVzVG9Mb2FkIiwiaWZDb25kaXRpb24iLCJwYWdpbmF0aW9uIiwic3RhdGUiLCJjbG9uZSIsImV4Y2VwdCIsIm9uRHJhZ1N0YXJ0Iiwib25EcmFnRW5kQW5pbWF0aW9uIiwiZ2V0Q29sdW1uc1RvU2hvdyIsIml0ZW0iLCJhbmltYXRlZFpJbmRleCIsInNldFZhbHVlIiwiV29ya3BsYWNlIiwicmVzdWx0IiwiY3VycmVudCIsIldvcmtwbGFjZUxpbmsiLCJyYW5zYWNrIiwicmVzb3VyY2VfdHlwZV9lcSIsIndvcmtwbGFjZV9pZF9lcSIsImNvdW50IiwiZmlsdGVyIiwiY29sdW1uIiwidGFibGVTZXR0aW5nQ29sdW1uIiwic29ydCIsImEiLCJiIiwicG9zaXRpb24iLCJsb2FkRXhpc3RpbmdPckNyZWF0ZVRhYmxlU2V0dGluZ3MiLCJtZXJnZWRQcmVsb2FkcyIsImZ1bGxDYWNoZUtleSIsInVwZGF0ZVNldHRpbmdzRnVsbENhY2hlS2V5IiwiY29uY2F0IiwibW9kZWxzIiwib3ZlcmFsbENvdW50IiwicVBhcmFtcyIsInNob3dOb1JlY29yZHNBdmFpbGFibGVDb250ZW50Iiwic2hvd05vUmVjb3Jkc0ZvdW5kQ29udGVudCIsImFyZ3MiLCJFcnJvciIsIm9uTGF5b3V0Iiwib25Db250YWluZXJMYXlvdXQiLCJjb250YWluZXIiLCJjYXJkT3JUYWJsZSIsIm93bkFiaWxpdGllcyIsInB1c2giLCJsZW5ndGgiLCJtb2RlbENsYXNzTmFtZSIsIm1vZGVsTmFtZSIsImFiaWxpdHkiLCJyZXN0UHJvcHMiLCJoZWFkZXJDb250ZW50IiwiUGFnaW5hdGlvbkNvbXBvbmVudCIsImh1bWFuIiwiZmxhdExpc3RTdHlsZSIsIm92ZXJmbG93WCIsImJvcmRlciIsImJvcmRlclJhZGl1cyIsImZsYXRMaXN0IiwiUHJvdmlkZXIiLCJ2YWx1ZSIsIl9leHRlbmRzIiwiZGF0YSIsImV4dHJhRGF0YSIsImtleUV4dHJhY3RvciIsImtleUV4dHJhdG9yIiwicmVuZGVySXRlbSIsInNob3dzSG9yaXpvbnRhbFNjcm9sbEluZGljYXRvciIsInRhYmxlQ29udHJvbHMiLCJmb290ZXIiLCJ0YWJsZUZvb3RlciIsImUiLCJuYXRpdmVFdmVudCIsImxheW91dCIsInRhYmxlV2lkdGgiLCJjcmVhdGVkIiwiYW1vdW50Q3JlYXRlZCIsInByZXZTdGF0ZSIsImRlc3Ryb3llZCIsImFtb3VudERlc3Ryb3llZCIsIm1vZGVsIiwic3VibWl0RmlsdGVyIiwic3VibWl0RmlsdGVyRGVib3VuY2UiLCJmb3JtUmVmIiwib25TdWJtaXQiLCJvbkZpbHRlckZvcm1TdWJtaXQiLCJzZXRGb3JtIiwic2V0U3RhdGVzIiwib25GaWx0ZXJDaGFuZ2VkIiwib25GaWx0ZXJDaGFuZ2VkV2l0aERlbGF5IiwibWFyZ2luVG9wIiwib25GaWx0ZXJDbGlja2VkIiwicHJldmVudERlZmF1bHQiLCJvblBlclBhZ2VDaGFuZ2VkIiwibmV3UGVyUGFnZVZhbHVlIiwicGVyS2V5IiwicGFyYW1zQ2hhbmdlIiwiY2hhbmdlUGFyYW1zIiwiaW5kZXgiLCJjb2x1bW5XaWR0aHMiLCJrZXkiLCJzdHlsZUZvckNvbHVtbiIsImNvbHVtbkluZGV4IiwiZXZlbiIsImRlZmF1bHRTdHlsZSIsImp1c3RpZnlDb250ZW50IiwicGFkZGluZyIsIm92ZXJmbG93IiwiT2JqZWN0IiwiYXNzaWduIiwiYmFja2dyb3VuZENvbG9yIiwiZmxleERpcmVjdGlvbiIsImFsaWduSXRlbXMiLCJtYXJnaW5SaWdodCIsImJvcmRlclJpZ2h0IiwiYWN0dWFsU3R5bGUiLCJzdHlsZUZvckhlYWRlclRleHQiLCJmb250V2VpZ2h0Iiwic3R5bGVGb3JSb3ciLCJmbGV4Iiwib25QcmVzcyIsInNpemUiLCJvblJlcXVlc3RDbG9zZSIsIm9uUmVxdWVzdENsb3NlU2V0dGluZ3MiLCJvblNldHRpbmdzQ2xpY2tlZCIsImN1cnJlbnRQYWdlIiwidG90YWxDb3VudCIsInBlclBhZ2UiLCJ0byIsIk1hdGgiLCJtaW4iLCJmcm9tIiwidG90YWxfY291bnQiLCJzZWxlY3RlZCIsIm9uQ2hhbmdlIiwib3B0aW9ucyIsImpvaW4iLCJjb2x1bW5Qcm9wcyIsInRleHRDZW50ZXIiLCJ0ZXh0QWxpZ24iLCJ0ZXh0UmlnaHQiLCJoZWFkZXJQcm9wcyIsImhvcml6b250YWwiLCJkcmFnTGlzdGtleUV4dHJhY3RvciIsIm9uSXRlbU1vdmVkIiwib25SZW9yZGVyZWQiLCJkcmFnTGlzdFJlbmRlckl0ZW1Db250ZW50IiwiZHJhZ0xpc3RDYWNoZUtleUV4dHJhY3RvciIsImFuaW1hdGlvbkFyZ3MiLCJpdGVtSW5kZXgiLCJ4IiwieSIsImFuaW1hdGVkUG9zaXRpb24iLCJ0aW1pbmciLCJzdGFydCIsImZyb21JdGVtIiwiZnJvbVBvc2l0aW9uIiwidG9JdGVtIiwidG9Qb3NpdGlvbiIsIlRhYmxlU2V0dGluZ0NvbHVtbiIsImNvbnN0cnVjdG9yIiwidG9Db2x1bW4iLCJmaW5kIiwidXBkYXRlIiwiaXNBY3RpdmUiLCJ0b3VjaFByb3BzIiwiYW5pbWF0ZWRXaWR0aCIsImFjdGl2ZSIsImhlYWRlckNsYXNzTmFtZUZvckNvbHVtbiIsImNvbW1vblByb3BzIiwiaGVhZGVyTGFiZWxGb3JDb2x1bW4iLCJsYWJlbCIsImN1cnJlbnRNb2RlbENsYXNzIiwicGF0aCIsInBhdGhQYXJ0IiwicmVsYXRpb25zaGlwcyIsInJlbGF0aW9uc2hpcCIsInJlbGF0aW9uc2hpcEluQXJyYXkiLCJ1bmRlcnNjb3JlIiwiYXR0cmlidXRlIiwiaHVtYW5BdHRyaWJ1dGVOYW1lIiwic2VyaWFsaXplRm9ybSIsImNoYW5nZVBhcmFtc1BhcmFtcyIsIkpTT04iLCJzdHJpbmdpZnkiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdGFibGUvdGFibGUuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZGlnZywgZGlnc30gZnJvbSBcImRpZ2dlcml6ZVwiXG5pbXBvcnQgUmVhY3QsIHtjcmVhdGVDb250ZXh0LCB1c2VDb250ZXh0LCB1c2VNZW1vLCB1c2VSZWZ9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQge0FuaW1hdGVkLCBQcmVzc2FibGUsIFZpZXd9IGZyb20gXCJyZWFjdC1uYXRpdmVcIlxuaW1wb3J0IEJhc2VDb21wb25lbnQgZnJvbSBcIi4uL2Jhc2UtY29tcG9uZW50XCJcbmltcG9ydCBDYXJkIGZyb20gXCIuLi9ib290c3RyYXAvY2FyZFwiXG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tIFwiY2xhc3NuYW1lc1wiXG5pbXBvcnQgQ29sbGVjdGlvbiBmcm9tIFwiLi4vY29sbGVjdGlvblwiXG5pbXBvcnQgY29sdW1uVmlzaWJsZSBmcm9tIFwiLi9jb2x1bW4tdmlzaWJsZVwiXG5pbXBvcnQgZGVib3VuY2UgZnJvbSBcImRlYm91bmNlXCJcbmltcG9ydCBEcmFnZ2FibGVTb3J0IGZyb20gXCIuLi9kcmFnZ2FibGUtc29ydC9pbmRleFwiXG5pbXBvcnQgRXZlbnRFbWl0dGVyIGZyb20gXCJldmVudHNcIlxuaW1wb3J0IEZpbHRlcnMgZnJvbSBcIi4vZmlsdGVyc1wiXG5pbXBvcnQgRmxhdExpc3QgZnJvbSBcIi4vY29tcG9uZW50cy9mbGF0LWxpc3RcIlxuaW1wb3J0IHtGb3JtfSBmcm9tIFwiLi4vZm9ybVwiXG5pbXBvcnQgSGVhZGVyIGZyb20gXCIuL2NvbXBvbmVudHMvaGVhZGVyXCJcbmltcG9ydCBIZWFkZXJDb2x1bW4gZnJvbSBcIi4vaGVhZGVyLWNvbHVtblwiXG5pbXBvcnQgSGVhZGVyU2VsZWN0IGZyb20gXCIuL2hlYWRlci1zZWxlY3RcIlxuaW1wb3J0IEljb24gZnJvbSBcIi4uL3V0aWxzL2ljb25cIlxuaW1wb3J0ICogYXMgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiXG5pbXBvcnQgbWVtbyBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvc3JjL21lbW9cIlxuaW1wb3J0IG1vZGVsQ2xhc3NSZXF1aXJlIGZyb20gXCIuLi9tb2RlbC1jbGFzcy1yZXF1aXJlXCJcbmltcG9ydCBNb2RlbFJvdyBmcm9tIFwiLi9tb2RlbC1yb3dcIlxuaW1wb3J0IFBhZ2luYXRlIGZyb20gXCIuLi9ib290c3RyYXAvcGFnaW5hdGVcIlxuaW1wb3J0IFBhcmFtcyBmcm9tIFwiLi4vcGFyYW1zXCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IFJvdyBmcm9tIFwiLi9jb21wb25lbnRzL3Jvd1wiXG5pbXBvcnQgc2VsZWN0Q2FsY3VsYXRvciBmcm9tIFwiLi9zZWxlY3QtY2FsY3VsYXRvclwiXG5pbXBvcnQgU2VsZWN0IGZyb20gXCIuLi9pbnB1dHMvc2VsZWN0XCJcbmltcG9ydCBTZXR0aW5ncyBmcm9tIFwiLi9zZXR0aW5ncy9pbmRleFwiXG5pbXBvcnQge3NoYXBlQ29tcG9uZW50fSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvc3JjL3NoYXBlLWNvbXBvbmVudFwiXG5pbXBvcnQgVGFibGVTZXR0aW5ncyBmcm9tIFwiLi90YWJsZS1zZXR0aW5nc1wiXG5pbXBvcnQgVGV4dCBmcm9tIFwiLi4vdXRpbHMvdGV4dFwiXG5pbXBvcnQgdW5pcXVuaXplIGZyb20gXCJ1bmlxdW5pemVcIlxuaW1wb3J0IHVzZUJyZWFrcG9pbnQgZnJvbSBcIi4uL3VzZS1icmVha3BvaW50XCJcbmltcG9ydCB1c2VDb2xsZWN0aW9uIGZyb20gXCIuLi91c2UtY29sbGVjdGlvblwiXG5pbXBvcnQgdXNlSTE4biBmcm9tIFwiaTE4bi1vbi1zdGVyb2lkcy9zcmMvdXNlLWkxOG5cIlxuaW1wb3J0IHVzZUV2ZW50RW1pdHRlciBmcm9tIFwiLi4vdXNlLWV2ZW50LWVtaXR0ZXJcIlxuaW1wb3J0IHVzZU1vZGVsRXZlbnQgZnJvbSBcIi4uL3VzZS1tb2RlbC1ldmVudFwiXG5pbXBvcnQgdXNlUXVlcnlQYXJhbXMgZnJvbSBcIm9uLWxvY2F0aW9uLWNoYW5nZWQvYnVpbGQvdXNlLXF1ZXJ5LXBhcmFtc1wiXG5pbXBvcnQgV2lkdGhzIGZyb20gXCIuL3dpZHRoc1wiXG5cbmNvbnN0IHBhZ2luYXRpb25PcHRpb25zID0gWzMwLCA2MCwgOTAsIFtcIkFsbFwiLCBcImFsbFwiXV1cbmNvbnN0IFdvcmtlclBsdWdpbnNDaGVja0FsbENoZWNrYm94ID0gUmVhY3QubGF6eSgoKSA9PiBpbXBvcnQoXCIuL3dvcmtlci1wbHVnaW5zLWNoZWNrLWFsbC1jaGVja2JveFwiKSlcbmNvbnN0IFRhYmxlQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQoKVxuXG5jb25zdCBMaXN0SGVhZGVyQ29tcG9uZW50ID0gbWVtbyhzaGFwZUNvbXBvbmVudChjbGFzcyBMaXN0SGVhZGVyQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gIHNldHVwKCkge1xuICAgIHRoaXMudXNlU3RhdGVzKHtcbiAgICAgIGxhc3RVcGRhdGU6IG5ldyBEYXRlKClcbiAgICB9KVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHttZFVwfSA9IHVzZUJyZWFrcG9pbnQoKVxuICAgIGNvbnN0IHRhYmxlQ29udGV4dFZhbHVlID0gdXNlQ29udGV4dChUYWJsZUNvbnRleHQpXG4gICAgY29uc3QgdGFibGUgPSB0YWJsZUNvbnRleHRWYWx1ZS50YWJsZVxuICAgIGNvbnN0IHtjb2xsZWN0aW9uLCBldmVudHMsIHF1ZXJ5V2l0aG91dFBhZ2luYXRpb24sIHR9ID0gdGFibGUudHRcbiAgICBjb25zdCB7cXVlcnl9ID0gZGlncyhjb2xsZWN0aW9uLCBcInF1ZXJ5XCIpXG5cbiAgICB1c2VFdmVudEVtaXR0ZXIoZXZlbnRzLCBcImNvbHVtblZpc2liaWxpdHlVcGRhdGVkXCIsIHRoaXMudHQub25Db2x1bW5WaXNpYmlsaXR5VXBkYXRlZClcblxuICAgIHJldHVybiAoXG4gICAgICA8Um93IGRhdGFTZXQ9e3tjbGFzczogXCJhcGktbWFrZXIvdGFibGUvaGVhZGVyLXJvd1wifX0gc3R5bGU9e3RhYmxlLnN0eWxlRm9yUm93SGVhZGVyKCl9PlxuICAgICAgICB7dGFibGUucC53b3JrcGxhY2UgJiYgdGFibGUucy5jdXJyZW50V29ya3BsYWNlICYmXG4gICAgICAgICAgPEhlYWRlciBzdHlsZT17dGFibGUuc3R5bGVGb3JIZWFkZXIoe3N0eWxlOiB7d2lkdGg6IG1kVXAgPyA0MSA6IHVuZGVmaW5lZH19KX0+XG4gICAgICAgICAgICA8V29ya2VyUGx1Z2luc0NoZWNrQWxsQ2hlY2tib3hcbiAgICAgICAgICAgICAgY3VycmVudFdvcmtwbGFjZT17dGFibGUucy5jdXJyZW50V29ya3BsYWNlfVxuICAgICAgICAgICAgICBxdWVyeT17cXVlcnlXaXRob3V0UGFnaW5hdGlvbn1cbiAgICAgICAgICAgICAgc3R5bGU9e3ttYXJnaW5Ib3Jpem9udGFsOiBcImF1dG9cIn19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgeyFtZFVwICYmXG4gICAgICAgICAgICAgIDxUZXh0IHN0eWxlPXt7bWFyZ2luTGVmdDogM319PlxuICAgICAgICAgICAgICAgIHt0KFwiLnNlbGVjdF9hbGxfZm91bmRcIiwge2RlZmF1bHRWYWx1ZTogXCJTZWxlY3QgYWxsIGZvdW5kXCJ9KX1cbiAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvSGVhZGVyPlxuICAgICAgICB9XG4gICAgICAgIHshbWRVcCAmJlxuICAgICAgICAgIDxIZWFkZXIgc3R5bGU9e3RhYmxlLnN0eWxlRm9ySGVhZGVyKHtzdHlsZToge319KX0+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+IHtcbiAgICBjb25zdCBhY3R1YWxTdHlsZSA9IHtcbiAgICAgIGZsZXg6IDEsXG4gICAgICBhbGlnbkl0ZW1zOiBcInN0cmV0Y2hcIlxuICAgIH1cblxuICAgIGlmIChldmVuICYmIHRoaXMucC5zdHlsZVVJKSB7XG4gICAgICBhY3R1YWxTdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBcIiNmNWY1ZjVcIlxuICAgIH1cblxuICAgIHJldHVybiBhY3R1YWxTdHlsZVxuICB9XG5cbiAgc3R5bGVGb3JSb3dIZWFkZXIgPSAoKSA9PiB7XG4gICAgY29uc3QgYWN0dWFsU3R5bGUgPSB7XG4gICAgICBmbGV4OiAxLFxuICAgICAgYWxpZ25JdGVtczogXCJzdHJldGNoXCJcbiAgICB9XG5cbiAgICByZXR1cm4gYWN0dWFsU3R5bGVcbiAgfVxuXG4gIHRhYmxlQ29udHJvbHMoKSB7XG4gICAgY29uc3Qge2NvbnRyb2xzfSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCB7c2hvd1NldHRpbmdzfSA9IHRoaXMuc1xuICAgIGNvbnN0IHttb2RlbHMsIHFQYXJhbXMsIHF1ZXJ5LCByZXN1bHR9ID0gZGlncyh0aGlzLmNvbGxlY3Rpb24sIFwibW9kZWxzXCIsIFwicVBhcmFtc1wiLCBcInF1ZXJ5XCIsIFwicmVzdWx0XCIpXG5cbiAgICByZXR1cm4gKFxuICAgICAgPFZpZXcgc3R5bGU9e3tmbGV4RGlyZWN0aW9uOiBcInJvd1wifX0+XG4gICAgICAgIHtjb250cm9scyAmJiBjb250cm9scyh7bW9kZWxzLCBxUGFyYW1zLCBxdWVyeSwgcmVzdWx0fSl9XG4gICAgICAgIDxQcmVzc2FibGUgZGF0YVNldD17e2NsYXNzOiBcImZpbHRlci1idXR0b25cIn19IG9uUHJlc3M9e3RoaXMudHQub25GaWx0ZXJDbGlja2VkfT5cbiAgICAgICAgICA8SWNvbiBuYW1lPVwic2VhcmNoXCIgc2l6ZT17MjB9IC8+XG4gICAgICAgIDwvUHJlc3NhYmxlPlxuICAgICAgICA8VmlldyBzdHlsZT17e3Bvc2l0aW9uOiBcInJlbGF0aXZlXCJ9fT5cbiAgICAgICAgICB7c2hvd1NldHRpbmdzICYmXG4gICAgICAgICAgICA8U2V0dGluZ3Mgb25SZXF1ZXN0Q2xvc2U9e3RoaXMudHQub25SZXF1ZXN0Q2xvc2VTZXR0aW5nc30gdGFibGU9e3RoaXN9IC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIDxQcmVzc2FibGUgZGF0YVNldD17e2NsYXNzOiBcInNldHRpbmdzLWJ1dHRvblwifX0gb25QcmVzcz17dGhpcy50dC5vblNldHRpbmdzQ2xpY2tlZH0+XG4gICAgICAgICAgICA8SWNvbiBuYW1lPVwiZ2VhclwiIHNpemU9ezIwfSAvPlxuICAgICAgICAgIDwvUHJlc3NhYmxlPlxuICAgICAgICA8L1ZpZXc+XG4gICAgICA8L1ZpZXc+XG4gICAgKVxuICB9XG5cbiAgdGFibGVGb290ZXIoKSB7XG4gICAgY29uc3Qge3Jlc3VsdH0gPSBkaWdzKHRoaXMuY29sbGVjdGlvbiwgXCJyZXN1bHRcIilcbiAgICBjb25zdCBjdXJyZW50UGFnZSA9IHJlc3VsdC5jdXJyZW50UGFnZSgpXG4gICAgY29uc3QgdG90YWxDb3VudCA9IHJlc3VsdC50b3RhbENvdW50KClcbiAgICBjb25zdCBwZXJQYWdlID0gcmVzdWx0LnBlclBhZ2UoKVxuICAgIGNvbnN0IHRvID0gTWF0aC5taW4oY3VycmVudFBhZ2UgKiBwZXJQYWdlLCB0b3RhbENvdW50KVxuICAgIGNvbnN0IGRlZmF1bHRWYWx1ZSA9IFwiU2hvd2luZyAle2Zyb219IHRvICV7dG99IG91dCBvZiAle3RvdGFsX2NvdW50fSB0b3RhbC5cIlxuICAgIGxldCBmcm9tID0gKChjdXJyZW50UGFnZSAtIDEpICogcGVyUGFnZSkgKyAxXG5cbiAgICBpZiAodG8gPT09IDApIGZyb20gPSAwXG5cbiAgICByZXR1cm4gKFxuICAgICAgPFZpZXcgc3R5bGU9e3tmbGV4RGlyZWN0aW9uOiBcInJvd1wiLCBqdXN0aWZ5Q29udGVudDogXCJzcGFjZS1iZXR3ZWVuXCIsIG1hcmdpblRvcDogMTB9fT5cbiAgICAgICAgPFZpZXcgZGF0YVNldD17e2NsYXNzOiBcInNob3dpbmctY291bnRzXCJ9fSBzdHlsZT17e2ZsZXhEaXJlY3Rpb246IFwicm93XCJ9fT5cbiAgICAgICAgICA8VGV4dD5cbiAgICAgICAgICAgIHt0aGlzLnQoXCIuc2hvd2luZ19mcm9tX3RvX291dF9vZl90b3RhbFwiLCB7ZGVmYXVsdFZhbHVlLCBmcm9tLCB0bywgdG90YWxfY291bnQ6IHRvdGFsQ291bnR9KX1cbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAge3RoaXMucC53b3JrcGxhY2UgJiYgdGhpcy5zLmN1cnJlbnRXb3JrcGxhY2VDb3VudCAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgPFRleHQgc3R5bGU9e3ttYXJnaW5MZWZ0OiAzfX0+XG4gICAgICAgICAgICAgIHt0aGlzLnQoXCIueF9zZWxlY3RlZFwiLCB7ZGVmYXVsdFZhbHVlOiBcIiV7c2VsZWN0ZWR9IHNlbGVjdGVkLlwiLCBzZWxlY3RlZDogdGhpcy5zLmN1cnJlbnRXb3JrcGxhY2VDb3VudH0pfVxuICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9WaWV3PlxuICAgICAgICA8Vmlldz5cbiAgICAgICAgICA8U2VsZWN0XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJwZXItcGFnZS1zZWxlY3RcIlxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlPXtwZXJQYWdlfVxuICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMudHQub25QZXJQYWdlQ2hhbmdlZH1cbiAgICAgICAgICAgIG9wdGlvbnM9e3BhZ2luYXRpb25PcHRpb25zfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvVmlldz5cbiAgICAgIDwvVmlldz5cbiAgICApXG4gIH1cblxuICBjbGFzc05hbWUoKSB7XG4gICAgY29uc3QgY2xhc3NOYW1lcyA9IFtcImFwaS1tYWtlci0tdGFibGVcIl1cblxuICAgIGlmICh0aGlzLnByb3BzLmNsYXNzTmFtZSkge1xuICAgICAgY2xhc3NOYW1lcy5wdXNoKHRoaXMucHJvcHMuY2xhc3NOYW1lKVxuICAgIH1cblxuICAgIHJldHVybiBjbGFzc05hbWVzLmpvaW4oXCIgXCIpXG4gIH1cblxuICBjb2x1bW5Qcm9wcyhjb2x1bW4pIHtcbiAgICBjb25zdCBwcm9wcyA9IHt9XG5cbiAgICBpZiAoY29sdW1uLnRleHRDZW50ZXIpIHtcbiAgICAgIHByb3BzLnN0eWxlIHx8PSB7fVxuICAgICAgcHJvcHMuc3R5bGUudGV4dEFsaWduID0gXCJjZW50ZXJcIlxuICAgIH1cblxuICAgIGlmIChjb2x1bW4udGV4dFJpZ2h0KSB7XG4gICAgICBwcm9wcy5zdHlsZSB8fD0ge31cbiAgICAgIHByb3BzLnN0eWxlLnRleHRBbGlnbiA9IFwicmlnaHRcIlxuICAgIH1cblxuICAgIHJldHVybiBwcm9wc1xuICB9XG5cbiAgaGVhZGVyUHJvcHMoY29sdW1uKSB7XG4gICAgY29uc3QgcHJvcHMgPSB7fVxuXG4gICAgaWYgKGNvbHVtbi50ZXh0Q2VudGVyKSB7XG4gICAgICBwcm9wcy5zdHlsZSB8fD0ge31cbiAgICAgIHByb3BzLnN0eWxlLmp1c3RpZnlDb250ZW50ID0gXCJjZW50ZXJcIlxuICAgIH1cblxuICAgIGlmIChjb2x1bW4udGV4dFJpZ2h0KSB7XG4gICAgICBwcm9wcy5zdHlsZSB8fD0ge31cbiAgICAgIHByb3BzLnN0eWxlLmp1c3RpZnlDb250ZW50ID0gXCJlbmRcIlxuICAgIH1cblxuICAgIHJldHVybiBwcm9wc1xuICB9XG5cbiAgY29sdW1uV2lkdGhzKCkge1xuICAgIGNvbnN0IGNvbHVtbldpZHRocyA9IHt9XG5cbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiB0aGlzLnMucHJlcGFyZWRDb2x1bW5zKSB7XG4gICAgICBjb2x1bW5XaWR0aHNbY29sdW1uLnRhYmxlU2V0dGluZ0NvbHVtbi5pZGVudGlmaWVyKCldID0gY29sdW1uLndpZHRoXG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbHVtbldpZHRoc1xuICB9XG5cbiAgaGVhZGVyc0NvbnRlbnRGcm9tQ29sdW1ucyA9ICgpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgPERyYWdnYWJsZVNvcnRcbiAgICAgICAgZGF0YT17dGhpcy5zLmNvbHVtbnNUb1Nob3d9XG4gICAgICAgIGV2ZW50cz17dGhpcy50dC5kcmFnZ2FibGVTb3J0RXZlbnRzfVxuICAgICAgICBob3Jpem9udGFsXG4gICAgICAgIGtleUV4dHJhY3Rvcj17dGhpcy50dC5kcmFnTGlzdGtleUV4dHJhY3Rvcn1cbiAgICAgICAgb25JdGVtTW92ZWQ9e3RoaXMudHQub25JdGVtTW92ZWR9XG4gICAgICAgIG9uUmVvcmRlcmVkPXt0aGlzLnR0Lm9uUmVvcmRlcmVkfVxuICAgICAgICByZW5kZXJJdGVtPXt0aGlzLnR0LmRyYWdMaXN0UmVuZGVySXRlbUNvbnRlbnR9XG4gICAgICAvPlxuICAgIClcbiAgfVxuXG4gIGRyYWdMaXN0Q2FjaGVLZXlFeHRyYWN0b3IgPSAoaXRlbSkgPT4gYCR7aXRlbS50YWJsZVNldHRpbmdDb2x1bW4uaWRlbnRpZmllcigpfS0ke3RoaXMucy5yZXNpemluZ31gXG4gIGRyYWdMaXN0a2V5RXh0cmFjdG9yID0gKGl0ZW0pID0+IGl0ZW0udGFibGVTZXR0aW5nQ29sdW1uLmlkZW50aWZpZXIoKVxuXG4gIG9uSXRlbU1vdmVkID0gKHthbmltYXRpb25BcmdzLCBpdGVtSW5kZXgsIHgsIHl9KSA9PiB7XG4gICAgY29uc3QgYW5pbWF0ZWRQb3NpdGlvbiA9IGRpZ2codGhpcywgXCJzXCIsIFwiY29sdW1uc1RvU2hvd1wiLCBpdGVtSW5kZXgsIFwiYW5pbWF0ZWRQb3NpdGlvblwiKVxuXG4gICAgaWYgKGFuaW1hdGlvbkFyZ3MpIHtcbiAgICAgIEFuaW1hdGVkLnRpbWluZyhhbmltYXRlZFBvc2l0aW9uLCBhbmltYXRpb25BcmdzKS5zdGFydCgpXG4gICAgfSBlbHNlIHtcbiAgICAgIGFuaW1hdGVkUG9zaXRpb24uc2V0VmFsdWUoe3gsIHl9KVxuICAgIH1cbiAgfVxuXG4gIG9uUmVvcmRlcmVkID0gYXN5bmMgKHtmcm9tSXRlbSwgZnJvbVBvc2l0aW9uLCB0b0l0ZW0sIHRvUG9zaXRpb259KSA9PiB7XG4gICAgaWYgKGZyb21Qb3NpdGlvbiA9PSB0b1Bvc2l0aW9uKSByZXR1cm4gLy8gT25seSBkbyByZXF1ZXN0cyBhbmQgcXVlcmllcyBpZiBjaGFuZ2VkXG5cbiAgICBjb25zdCBUYWJsZVNldHRpbmdDb2x1bW4gPSBmcm9tSXRlbS50YWJsZVNldHRpbmdDb2x1bW4uY29uc3RydWN0b3JcbiAgICBjb25zdCB0b0NvbHVtbiA9IGF3YWl0IFRhYmxlU2V0dGluZ0NvbHVtbi5maW5kKHRvSXRlbS50YWJsZVNldHRpbmdDb2x1bW4uaWQoKSkgLy8gTmVlZCB0byBsb2FkIGxhdGVzdCBwb3NpdGlvbiBiZWNhdXNlIEFjdHNBc0xpc3QgbWlnaHQgaGF2ZSBjaGFuZ2VkIGl0XG5cbiAgICBhd2FpdCBmcm9tSXRlbS50YWJsZVNldHRpbmdDb2x1bW4udXBkYXRlKHtwb3NpdGlvbjogdG9Db2x1bW4ucG9zaXRpb24oKX0pXG4gIH1cblxuICBkcmFnTGlzdFJlbmRlckl0ZW1Db250ZW50ID0gKHtpc0FjdGl2ZSwgaXRlbSwgdG91Y2hQcm9wc30pID0+IHtcbiAgICBjb25zdCB7YW5pbWF0ZWRXaWR0aCwgYW5pbWF0ZWRaSW5kZXgsIGNvbHVtbiwgdGFibGVTZXR0aW5nQ29sdW1ufSA9IGl0ZW1cblxuICAgIHJldHVybiAoXG4gICAgICA8SGVhZGVyQ29sdW1uXG4gICAgICAgIGFjdGl2ZT17aXNBY3RpdmV9XG4gICAgICAgIGFuaW1hdGVkV2lkdGg9e2FuaW1hdGVkV2lkdGh9XG4gICAgICAgIGFuaW1hdGVkWkluZGV4PXthbmltYXRlZFpJbmRleH1cbiAgICAgICAgY29sdW1uPXtjb2x1bW59XG4gICAgICAgIGtleT17dGFibGVTZXR0aW5nQ29sdW1uLmlkZW50aWZpZXIoKX1cbiAgICAgICAgcmVzaXppbmc9e3RoaXMucy5yZXNpemluZ31cbiAgICAgICAgdGFibGU9e3RoaXN9XG4gICAgICAgIHRhYmxlU2V0dGluZ0NvbHVtbj17dGFibGVTZXR0aW5nQ29sdW1ufVxuICAgICAgICB0b3VjaFByb3BzPXt0b3VjaFByb3BzfVxuICAgICAgICB3aWR0aHM9e3RoaXMucy53aWR0aHN9XG4gICAgICAvPlxuICAgIClcbiAgfVxuXG4gIGhlYWRlckNsYXNzTmFtZUZvckNvbHVtbihjb2x1bW4pIHtcbiAgICBjb25zdCBjbGFzc05hbWVzID0gW11cblxuICAgIGlmIChjb2x1bW4uY29tbW9uUHJvcHMgJiYgY29sdW1uLmNvbW1vblByb3BzLmNsYXNzTmFtZSkgY2xhc3NOYW1lcy5wdXNoKGNvbHVtbi5jb21tb25Qcm9wcy5jbGFzc05hbWUpXG4gICAgaWYgKGNvbHVtbi5oZWFkZXJQcm9wcyAmJiBjb2x1bW4uaGVhZGVyUHJvcHMuY2xhc3NOYW1lKSBjbGFzc05hbWVzLnB1c2goY29sdW1uLmhlYWRlclByb3BzLmNsYXNzTmFtZSlcblxuICAgIHJldHVybiBjbGFzc05hbWVzXG4gIH1cblxuICBoZWFkZXJMYWJlbEZvckNvbHVtbihjb2x1bW4pIHtcbiAgICBjb25zdCB7bW9kZWxDbGFzc30gPSB0aGlzLnBcblxuICAgIGlmIChcImxhYmVsXCIgaW4gY29sdW1uKSB7XG4gICAgICBpZiAodHlwZW9mIGNvbHVtbi5sYWJlbCA9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIGNvbHVtbi5sYWJlbCgpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gY29sdW1uLmxhYmVsXG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IGN1cnJlbnRNb2RlbENsYXNzID0gbW9kZWxDbGFzc1xuXG4gICAgLy8gQ2FsY3VsYXRlIGN1cnJlbnQgbW9kZWwgY2xhc3MgdGhyb3VnaCBwYXRoXG4gICAgaWYgKGNvbHVtbi5wYXRoKSB7XG4gICAgICBmb3IgKGNvbnN0IHBhdGhQYXJ0IG9mIGNvbHVtbi5wYXRoKSB7XG4gICAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcHMgPSBkaWdnKGN1cnJlbnRNb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKCksIFwicmVsYXRpb25zaGlwc1wiKVxuICAgICAgICBjb25zdCByZWxhdGlvbnNoaXAgPSByZWxhdGlvbnNoaXBzLmZpbmQoKHJlbGF0aW9uc2hpcEluQXJyYXkpID0+IHJlbGF0aW9uc2hpcEluQXJyYXkubmFtZSA9PSBpbmZsZWN0aW9uLnVuZGVyc2NvcmUocGF0aFBhcnQpKVxuXG4gICAgICAgIGN1cnJlbnRNb2RlbENsYXNzID0gbW9kZWxDbGFzc1JlcXVpcmUoZGlnZyhyZWxhdGlvbnNoaXAsIFwicmVzb3VyY2VfbmFtZVwiKSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY29sdW1uLmF0dHJpYnV0ZSkgcmV0dXJuIGN1cnJlbnRNb2RlbENsYXNzLmh1bWFuQXR0cmlidXRlTmFtZShjb2x1bW4uYXR0cmlidXRlKVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gJ2xhYmVsJyBvciAnYXR0cmlidXRlJyB3YXMgZ2l2ZW5cIilcbiAgfVxuXG4gIG9uRmlsdGVyRm9ybVN1Ym1pdCA9ICgpID0+IHRoaXMuc3VibWl0RmlsdGVyKClcbiAgb25SZXF1ZXN0Q2xvc2VTZXR0aW5ncyA9ICgpID0+IHRoaXMuc2V0U3RhdGUoe3Nob3dTZXR0aW5nczogZmFsc2V9KVxuXG4gIG9uU2V0dGluZ3NDbGlja2VkID0gKGUpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KClcblxuICAgIHRoaXMuc2V0U3RhdGUoe3Nob3dTZXR0aW5nczogIXRoaXMucy5zaG93U2V0dGluZ3N9KVxuICB9XG5cbiAgc3VibWl0RmlsdGVyID0gKCkgPT4ge1xuICAgIGNvbnN0IGZpbHRlckZvcm0gPSBkaWdnKHRoaXMudHQuZmlsdGVyRm9ybVJlZiwgXCJjdXJyZW50XCIpXG4gICAgY29uc3Qge2FwcEhpc3Rvcnl9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IHFQYXJhbXMgPSBQYXJhbXMuc2VyaWFsaXplRm9ybShmaWx0ZXJGb3JtKVxuICAgIGNvbnN0IHtxdWVyeVFOYW1lfSA9IHRoaXMuc1xuICAgIGNvbnN0IGNoYW5nZVBhcmFtc1BhcmFtcyA9IHt9XG5cbiAgICBjaGFuZ2VQYXJhbXNQYXJhbXNbcXVlcnlRTmFtZV0gPSBKU09OLnN0cmluZ2lmeShxUGFyYW1zKVxuXG4gICAgUGFyYW1zLmNoYW5nZVBhcmFtcyhjaGFuZ2VQYXJhbXNQYXJhbXMsIHthcHBIaXN0b3J5fSlcbiAgfVxuXG4gIHN1Ym1pdEZpbHRlckRlYm91bmNlID0gZGVib3VuY2UodGhpcy50dC5zdWJtaXRGaWx0ZXIpXG59KSlcbiJdLCJtYXBwaW5ncyI6IjtBQUFBLFNBQVFBLElBQUksRUFBRUMsSUFBSSxRQUFPLFdBQVc7QUFDcEMsT0FBT0MsS0FBSyxJQUFHQyxhQUFhLEVBQUVDLFVBQVUsRUFBRUMsT0FBTyxFQUFFQyxNQUFNLFFBQU8sT0FBTztBQUN2RSxTQUFRQyxRQUFRLEVBQUVDLFNBQVMsRUFBRUMsSUFBSSxRQUFPLGNBQWM7QUFDdEQsT0FBT0MsYUFBYSxNQUFNLG1CQUFtQjtBQUM3QyxPQUFPQyxJQUFJLE1BQU0sbUJBQW1CO0FBQ3BDLE9BQU9DLFVBQVUsTUFBTSxZQUFZO0FBQ25DLE9BQU9DLFVBQVUsTUFBTSxlQUFlO0FBQ3RDLE9BQU9DLGFBQWEsTUFBTSxrQkFBa0I7QUFDNUMsT0FBT0MsUUFBUSxNQUFNLFVBQVU7QUFDL0IsT0FBT0MsYUFBYSxNQUFNLHlCQUF5QjtBQUNuRCxPQUFPQyxZQUFZLE1BQU0sUUFBUTtBQUNqQyxPQUFPQyxPQUFPLE1BQU0sV0FBVztBQUMvQixPQUFPQyxRQUFRLE1BQU0sd0JBQXdCO0FBQzdDLFNBQVFDLElBQUksUUFBTyxTQUFTO0FBQzVCLE9BQU9DLE1BQU0sTUFBTSxxQkFBcUI7QUFDeEMsT0FBT0MsWUFBWSxNQUFNLGlCQUFpQjtBQUMxQyxPQUFPQyxZQUFZLE1BQU0saUJBQWlCO0FBQzFDLE9BQU9DLElBQUksTUFBTSxlQUFlO0FBQ2hDLE9BQU8sS0FBS0MsVUFBVSxNQUFNLFlBQVk7QUFDeEMsT0FBT0MsSUFBSSxNQUFNLDRCQUE0QjtBQUM3QyxPQUFPQyxpQkFBaUIsTUFBTSx3QkFBd0I7QUFDdEQsT0FBT0MsUUFBUSxNQUFNLGFBQWE7QUFDbEMsT0FBT0MsUUFBUSxNQUFNLHVCQUF1QjtBQUM1QyxPQUFPQyxNQUFN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
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { camelize } from "inflection";
|
|
2
|
-
import useQueryParams from "on-location-changed/
|
|
2
|
+
import useQueryParams from "on-location-changed/build/use-query-params";
|
|
3
3
|
const calculateQParams = (defaultParams, queryParams, searchKey) => {
|
|
4
4
|
if (searchKey in queryParams) {
|
|
5
5
|
return JSON.parse(queryParams[searchKey]);
|
|
@@ -31,4 +31,4 @@ const useSorting = ({
|
|
|
31
31
|
};
|
|
32
32
|
};
|
|
33
33
|
export default useSorting;
|
|
34
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjYW1lbGl6ZSIsInVzZVF1ZXJ5UGFyYW1zIiwiY2FsY3VsYXRlUVBhcmFtcyIsImRlZmF1bHRQYXJhbXMiLCJxdWVyeVBhcmFtcyIsInNlYXJjaEtleSIsIkpTT04iLCJwYXJzZSIsInVzZVNvcnRpbmciLCJxdWVyeSIsInF1ZXJ5QXJncyIsInFQYXJhbXMiLCJtYXRjaFNvcnRQYXJhbSIsInMiLCJtYXRjaCIsInNvcnRBdHRyaWJ1dGUiLCJzb3J0TW9kZSIsInRyaW0iXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdGFibGUvdXNlLXNvcnRpbmcuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjYW1lbGl6ZX0gZnJvbSBcImluZmxlY3Rpb25cIlxuaW1wb3J0IHVzZVF1ZXJ5UGFyYW1zIGZyb20gXCJvbi1sb2NhdGlvbi1jaGFuZ2VkL2J1aWxkL3VzZS1xdWVyeS1wYXJhbXNcIlxuXG5jb25zdCBjYWxjdWxhdGVRUGFyYW1zID0gKGRlZmF1bHRQYXJhbXMsIHF1ZXJ5UGFyYW1zLCBzZWFyY2hLZXkpID0+IHtcbiAgaWYgKHNlYXJjaEtleSBpbiBxdWVyeVBhcmFtcykge1xuICAgIHJldHVybiBKU09OLnBhcnNlKHF1ZXJ5UGFyYW1zW3NlYXJjaEtleV0pXG4gIH0gZWxzZSBpZiAoZGVmYXVsdFBhcmFtcykge1xuICAgIHJldHVybiB7Li4uZGVmYXVsdFBhcmFtc31cbiAgfVxuXG4gIHJldHVybiB7fVxufVxuXG5jb25zdCB1c2VTb3J0aW5nID0gKHtkZWZhdWx0UGFyYW1zLCBxdWVyeX0pID0+IHtcbiAgY29uc3QgcXVlcnlQYXJhbXMgPSB1c2VRdWVyeVBhcmFtcygpXG4gIGNvbnN0IHNlYXJjaEtleSA9IHF1ZXJ5LnF1ZXJ5QXJncy5zZWFyY2hLZXkgfHwgXCJxXCJcbiAgY29uc3QgcVBhcmFtcyA9IGNhbGN1bGF0ZVFQYXJhbXMoZGVmYXVsdFBhcmFtcywgcXVlcnlQYXJhbXMsIHNlYXJjaEtleSlcbiAgbGV0IG1hdGNoU29ydFBhcmFtXG5cbiAgaWYgKHR5cGVvZiBxUGFyYW1zLnMgPT0gXCJzdHJpbmdcIikge1xuICAgIG1hdGNoU29ydFBhcmFtID0gcVBhcmFtcy5zPy5tYXRjaCgvXiguKz8pKCBhc2N8IGRlc2N8KSQvKVxuICB9XG5cbiAgY29uc3Qgc29ydEF0dHJpYnV0ZSA9IG1hdGNoU29ydFBhcmFtID8gY2FtZWxpemUobWF0Y2hTb3J0UGFyYW1bMV0sIHRydWUpIDogbnVsbFxuICBjb25zdCBzb3J0TW9kZSA9IG1hdGNoU29ydFBhcmFtID8gbWF0Y2hTb3J0UGFyYW1bMl0udHJpbSgpIDogbnVsbFxuXG4gIHJldHVybiB7XG4gICAgcVBhcmFtcyxcbiAgICBzZWFyY2hLZXksXG4gICAgc29ydEF0dHJpYnV0ZSxcbiAgICBzb3J0TW9kZVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHVzZVNvcnRpbmdcbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUUEsUUFBUSxRQUFPLFlBQVk7QUFDbkMsT0FBT0MsY0FBYyxNQUFNLDRDQUE0QztBQUV2RSxNQUFNQyxnQkFBZ0IsR0FBR0EsQ0FBQ0MsYUFBYSxFQUFFQyxXQUFXLEVBQUVDLFNBQVMsS0FBSztFQUNsRSxJQUFJQSxTQUFTLElBQUlELFdBQVcsRUFBRTtJQUM1QixPQUFPRSxJQUFJLENBQUNDLEtBQUssQ0FBQ0gsV0FBVyxDQUFDQyxTQUFTLENBQUMsQ0FBQztFQUMzQyxDQUFDLE1BQU0sSUFBSUYsYUFBYSxFQUFFO0lBQ3hCLE9BQU87TUFBQyxHQUFHQTtJQUFhLENBQUM7RUFDM0I7RUFFQSxPQUFPLENBQUMsQ0FBQztBQUNYLENBQUM7QUFFRCxNQUFNSyxVQUFVLEdBQUdBLENBQUM7RUFBQ0wsYUFBYTtFQUFFTTtBQUFLLENBQUMsS0FBSztFQUM3QyxNQUFNTCxXQUFXLEdBQUdILGNBQWMsQ0FBQyxDQUFDO0VBQ3BDLE1BQU1JLFNBQVMsR0FBR0ksS0FBSyxDQUFDQyxTQUFTLENBQUNMLFNBQVMsSUFBSSxHQUFHO0VBQ2xELE1BQU1NLE9BQU8sR0FBR1QsZ0JBQWdCLENBQUNDLGFBQWEsRUFBRUMsV0FBVyxFQUFFQyxTQUFTLENBQUM7RUFDdkUsSUFBSU8sY0FBYztFQUVsQixJQUFJLE9BQU9ELE9BQU8sQ0FBQ0UsQ0FBQyxJQUFJLFFBQVEsRUFBRTtJQUNoQ0QsY0FBYyxHQUFHRCxPQUFPLENBQUNFLENBQUMsRUFBRUMsS0FBSyxDQUFDLHNCQUFzQixDQUFDO0VBQzNEO0VBRUEsTUFBTUMsYUFBYSxHQUFHSCxjQUFjLEdBQUdaLFFBQVEsQ0FBQ1ksY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLElBQUk7RUFDL0UsTUFBTUksUUFBUSxHQUFHSixjQUFjLEdBQUdBLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0ssSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJO0VBRWpFLE9BQU87SUFDTE4sT0FBTztJQUNQTixTQUFTO0lBQ1RVLGFBQWE7SUFDYkM7RUFDRixDQUFDO0FBQ0gsQ0FBQztBQUVELGVBQWVSLFVBQVUiLCJpZ25vcmVMaXN0IjpbXX0=
|
package/build/use-collection.js
CHANGED
|
@@ -5,7 +5,7 @@ import ModelEvents from "./model-events";
|
|
|
5
5
|
import { useCallback, useLayoutEffect, useMemo } from "react";
|
|
6
6
|
import useCreatedEvent from "./use-created-event";
|
|
7
7
|
import useShape from "set-state-compare/src/use-shape";
|
|
8
|
-
import useQueryParams from "on-location-changed/
|
|
8
|
+
import useQueryParams from "on-location-changed/build/use-query-params";
|
|
9
9
|
const useCollection = (props, cacheKeys = []) => {
|
|
10
10
|
const {
|
|
11
11
|
abilities,
|
|
@@ -222,4 +222,4 @@ const useCollection = (props, cacheKeys = []) => {
|
|
|
222
222
|
return result;
|
|
223
223
|
};
|
|
224
224
|
export default useCollection;
|
|
225
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkZWJvdW5jZSIsImRpZ2ciLCJpbmZsZWN0aW9uIiwiTW9kZWxFdmVudHMiLCJ1c2VDYWxsYmFjayIsInVzZUxheW91dEVmZmVjdCIsInVzZU1lbW8iLCJ1c2VDcmVhdGVkRXZlbnQiLCJ1c2VTaGFwZSIsInVzZVF1ZXJ5UGFyYW1zIiwidXNlQ29sbGVjdGlvbiIsInByb3BzIiwiY2FjaGVLZXlzIiwiYWJpbGl0aWVzIiwiY29sbGVjdGlvbiIsImRlZmF1bHRQYXJhbXMiLCJncm91cEJ5IiwiaWZDb25kaXRpb24iLCJsaW1pdCIsIm1vZGVsQ2xhc3MiLCJub1JlY29yZHNBdmFpbGFibGVDb250ZW50IiwidW5kZWZpbmVkIiwibm9SZWNvcmRzRm91bmRDb250ZW50Iiwib25Nb2RlbHNMb2FkZWQiLCJwYWdpbmF0aW9uIiwicHJlbG9hZHMiLCJxdWVyeU1ldGhvZCIsInF1ZXJ5TmFtZSIsImluaXRpYWxRdWVyeU5hbWUiLCJyYW5zYWNrIiwic2VsZWN0Iiwic2VsZWN0Q29sdW1ucyIsInJlc3RQcm9wcyIsIk9iamVjdCIsImtleXMiLCJsZW5ndGgiLCJFcnJvciIsImpvaW4iLCJzIiwibW9kZWxDbGFzc0RhdGEiLCJtZXRhIiwicXVlcnlQYXJhbXMiLCJoYXNRUGFyYW1zIiwicXVlcnlRTmFtZSIsIm0iLCJxUGFyYW1zIiwiSlNPTiIsInBhcnNlIiwidXNlU3RhdGVzIiwibW9kZWxzIiwib3ZlcmFsbENvdW50IiwicXVlcnkiLCJxdWVyeVBlcktleSIsInF1ZXJ5U05hbWUiLCJxdWVyeVBhZ2VOYW1lIiwicmVzdWx0Iiwic2VhcmNoUGFyYW1zIiwic2hvd05vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnQiLCJzaG93Tm9SZWNvcmRzRm91bmRDb250ZW50IiwibW9kZWxJZHNDYWNoZVN0cmluZyIsIm1hcCIsIm1vZGVsIiwiY2FjaGVLZXkiLCJsb2FkT3ZlcmFsbENvdW50IiwiYmFzZVF1ZXJ5IiwicCIsImFsbCIsImNvdW50Iiwic2V0IiwibG9hZFFQYXJhbXMiLCJxUGFyYW1zVG9TZXQiLCJhc3NpZ24iLCJyYXdTZWFyY2hQYXJhbSIsInBhcnNlZFNlYXJjaFBhcmFtIiwicHVzaCIsImxvYWRNb2RlbHMiLCJjbG9uZSIsInBhZ2UiLCJwZXIiLCJOdW1iZXIiLCJzZWFyY2giLCJzZWFyY2hLZXkiLCJwYWdlS2V5IiwicGVyS2V5IiwicHJlbG9hZCIsImxvYWRNb2RlbHNEZWJvdW5jZSIsIm9uTW9kZWxEZXN0cm95ZWQiLCJhcmdzIiwiZmlsdGVyIiwiaWQiLCJvbk1vZGVsVXBkYXRlZCIsInVwZGF0ZWRNb2RlbCIsImZvdW5kTW9kZWwiLCJmaW5kIiwib25DcmVhdGVkIiwiY29uY2F0IiwiY29ubmVjdGlvbnMiLCJjb25uZWN0VXBkYXRlZCIsImNvbm5lY3REZXN0cm95ZWQiLCJjb25uZWN0aW9uIiwidW5zdWJzY3JpYmUiLCJzdGF0ZSIsIm1vZGVsVmFyaWFibGVOYW1lIiwicGx1cmFsaXplIiwiY2FtZWxpemUiLCJuYW1lIl0sInNvdXJjZXMiOlsiLi4vc3JjL3VzZS1jb2xsZWN0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkZWJvdW5jZSBmcm9tIFwiZGVib3VuY2VcIlxuaW1wb3J0IHtkaWdnfSBmcm9tIFwiZGlnZ2VyaXplXCJcbmltcG9ydCAqIGFzIGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIlxuaW1wb3J0IE1vZGVsRXZlbnRzIGZyb20gXCIuL21vZGVsLWV2ZW50c1wiXG5pbXBvcnQge3VzZUNhbGxiYWNrLCB1c2VMYXlvdXRFZmZlY3QsIHVzZU1lbW99IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgdXNlQ3JlYXRlZEV2ZW50IGZyb20gXCIuL3VzZS1jcmVhdGVkLWV2ZW50XCJcbmltcG9ydCB1c2VTaGFwZSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvc3JjL3VzZS1zaGFwZVwiXG5pbXBvcnQgdXNlUXVlcnlQYXJhbXMgZnJvbSBcIm9uLWxvY2F0aW9uLWNoYW5nZWQvc3JjL3VzZS1xdWVyeS1wYXJhbXNcIlxuXG5jb25zdCB1c2VDb2xsZWN0aW9uID0gKHByb3BzLCBjYWNoZUtleXMgPSBbXSkgPT4ge1xuICBjb25zdCB7XG4gICAgYWJpbGl0aWVzLFxuICAgIGNvbGxlY3Rpb24sXG4gICAgZGVmYXVsdFBhcmFtcyxcbiAgICBncm91cEJ5LFxuICAgIGlmQ29uZGl0aW9uLFxuICAgIGxpbWl0LFxuICAgIG1vZGVsQ2xhc3MsXG4gICAgbm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudCA9IHVuZGVmaW5lZCxcbiAgICBub1JlY29yZHNGb3VuZENvbnRlbnQgPSB1bmRlZmluZWQsXG4gICAgb25Nb2RlbHNMb2FkZWQsXG4gICAgcGFnaW5hdGlvbiA9IGZhbHNlLFxuICAgIHByZWxvYWRzID0gW10sXG4gICAgcXVlcnlNZXRob2QsXG4gICAgcXVlcnlOYW1lOiBpbml0aWFsUXVlcnlOYW1lLFxuICAgIHJhbnNhY2ssXG4gICAgc2VsZWN0ID0ge30sXG4gICAgc2VsZWN0Q29sdW1ucyxcbiAgICAuLi5yZXN0UHJvcHNcbiAgfSA9IHByb3BzXG5cbiAgaWYgKE9iamVjdC5rZXlzKHJlc3RQcm9wcykubGVuZ3RoID4gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBwcm9wcyBnaXZlbiB0byB1c2VDb2xsZWN0aW9uOiAke09iamVjdC5rZXlzKHJlc3RQcm9wcykuam9pbihcIiwgXCIpfWApXG4gIH1cblxuICBjb25zdCBzID0gdXNlU2hhcGUocHJvcHMpXG4gIGNvbnN0IHF1ZXJ5TmFtZSA9IGluaXRpYWxRdWVyeU5hbWUgfHwgZGlnZyhtb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKCksIFwiY29sbGVjdGlvbktleVwiKVxuXG4gIHMubWV0YS5xdWVyeVBhcmFtcyA9IHVzZVF1ZXJ5UGFyYW1zKClcblxuICBjb25zdCBoYXNRUGFyYW1zID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChzLnMucXVlcnlRTmFtZSBpbiBzLm0ucXVlcnlQYXJhbXMpIHJldHVybiB0cnVlXG5cbiAgICByZXR1cm4gZmFsc2VcbiAgfSwgW10pXG5cbiAgY29uc3QgcVBhcmFtcyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoaGFzUVBhcmFtcygpKSByZXR1cm4gSlNPTi5wYXJzZShkaWdnKHMubS5xdWVyeVBhcmFtcywgcy5zLnF1ZXJ5UU5hbWUpKVxuXG4gICAgcmV0dXJuIHt9XG4gIH0sIFtdKVxuXG4gIHMudXNlU3RhdGVzKHtcbiAgICBtb2RlbHM6IHVuZGVmaW5lZCxcbiAgICBvdmVyYWxsQ291bnQ6IHVuZGVmaW5lZCxcbiAgICBxdWVyeTogdW5kZWZpbmVkLFxuICAgIHF1ZXJ5TmFtZSxcbiAgICBxdWVyeVBlcktleTogYCR7cXVlcnlOYW1lfV9wZXJgLFxuICAgIHF1ZXJ5UU5hbWU6IGAke3F1ZXJ5TmFtZX1fcWAsXG4gICAgcXVlcnlTTmFtZTogYCR7cXVlcnlOYW1lfV9zYCxcbiAgICBxdWVyeVBhZ2VOYW1lOiBgJHtxdWVyeU5hbWV9X3BhZ2VgLFxuICAgIHJlc3VsdDogdW5kZWZpbmVkLFxuICAgIHNlYXJjaFBhcmFtczogdW5kZWZpbmVkLFxuICAgIHNob3dOb1JlY29yZHNBdmFpbGFibGVDb250ZW50OiBmYWxzZSxcbiAgICBzaG93Tm9SZWNvcmRzRm91bmRDb250ZW50OiBmYWxzZVxuICB9KVxuICBzLnVzZVN0YXRlcyh7XG4gICAgcVBhcmFtczogKCkgPT4gcVBhcmFtcygpXG4gIH0pXG5cbiAgbGV0IG1vZGVsSWRzQ2FjaGVTdHJpbmdcblxuICBpZiAocy5zLm1vZGVscyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgbW9kZWxJZHNDYWNoZVN0cmluZyA9IFwibW9kZWxzLXVuZGVmaW5lZFwiXG4gIH0gZWxzZSBpZiAocy5zLm1vZGVscy5sZW5ndGggPT09IDApIHtcbiAgICBtb2RlbElkc0NhY2hlU3RyaW5nID0gXCJuby1tb2RlbHNcIlxuICB9IGVsc2Uge1xuICAgIG1vZGVsSWRzQ2FjaGVTdHJpbmcgPSBzLnMubW9kZWxzLm1hcCgobW9kZWwpID0+IG1vZGVsLmNhY2hlS2V5KCkpPy5qb2luKFwiLS0tXCIpXG4gIH1cblxuICBjb25zdCBsb2FkT3ZlcmFsbENvdW50ID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGJhc2VRdWVyeSA9IHMucC5jb2xsZWN0aW9uIHx8IHMucC5tb2RlbENsYXNzLmFsbCgpXG4gICAgY29uc3Qgb3ZlcmFsbENvdW50ID0gYXdhaXQgYmFzZVF1ZXJ5LmNvdW50KClcblxuICAgIHMuc2V0KHtcbiAgICAgIG92ZXJhbGxDb3VudCxcbiAgICAgIHNob3dOb1JlY29yZHNBdmFpbGFibGVDb250ZW50OiBzaG93Tm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudCh7b3ZlcmFsbENvdW50fSksXG4gICAgICBzaG93Tm9SZWNvcmRzRm91bmRDb250ZW50OiBzaG93Tm9SZWNvcmRzRm91bmRDb250ZW50KHtvdmVyYWxsQ291bnR9KVxuICAgIH0pXG4gIH0sIFtdKVxuXG4gIGNvbnN0IGxvYWRRUGFyYW1zID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHFQYXJhbXNUb1NldCA9IGhhc1FQYXJhbXMoKSA/IHFQYXJhbXMoKSA6IE9iamVjdC5hc3NpZ24oe30sIHMucHJvcHMuZGVmYXVsdFBhcmFtcylcbiAgICBjb25zdCBzZWFyY2hQYXJhbXMgPSBbXVxuXG4gICAgaWYgKHMubS5xdWVyeVBhcmFtc1tzLnMucXVlcnlTTmFtZV0pIHtcbiAgICAgIGZvciAoY29uc3QgcmF3U2VhcmNoUGFyYW0gb2Ygcy5tLnF1ZXJ5UGFyYW1zW3Mucy5xdWVyeVNOYW1lXSkge1xuICAgICAgICBjb25zdCBwYXJzZWRTZWFyY2hQYXJhbSA9IEpTT04ucGFyc2UocmF3U2VhcmNoUGFyYW0pXG5cbiAgICAgICAgc2VhcmNoUGFyYW1zLnB1c2gocGFyc2VkU2VhcmNoUGFyYW0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgcy5zZXQoe1xuICAgICAgcVBhcmFtczogcVBhcmFtc1RvU2V0LFxuICAgICAgc2VhcmNoUGFyYW1zXG4gICAgfSlcbiAgfSwgW10pXG5cbiAgY29uc3QgbG9hZE1vZGVscyA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBsZXQgcXVlcnkgPSBzLnByb3BzLmNvbGxlY3Rpb24/LmNsb25lKCkgfHwgcy5wLm1vZGVsQ2xhc3MucmFuc2FjaygpXG5cbiAgICBpZiAocy5wcm9wcy5wYWdpbmF0aW9uKSB7XG4gICAgICBjb25zdCBwYWdlID0gcy5tLnF1ZXJ5UGFyYW1zW3Mucy5xdWVyeVBhZ2VOYW1lXSB8fCAxXG4gICAgICBsZXQgcGVyID0gcy5tLnF1ZXJ5UGFyYW1zW3Mucy5xdWVyeVBlcktleV0gfHwgMzBcblxuICAgICAgaWYgKHBlciA9PSBcImFsbFwiKSB7XG4gICAgICAgIHBlciA9IDk5OV85OTlfOTk5XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZXIgPSBOdW1iZXIocGVyKVxuICAgICAgfVxuXG4gICAgICBxdWVyeS5wYWdlKHBhZ2UpLnBlcihwZXIpXG4gICAgfVxuXG4gICAgaWYgKHMucHJvcHMuZ3JvdXBCeSkgcXVlcnkgPSBxdWVyeS5ncm91cEJ5KC4uLnMucC5ncm91cEJ5KVxuXG4gICAgcXVlcnkgPSBxdWVyeVxuICAgICAgLnJhbnNhY2socy5zLnFQYXJhbXMpXG4gICAgICAuc2VhcmNoKHMucy5zZWFyY2hQYXJhbXMpXG4gICAgICAuc2VhcmNoS2V5KHMucy5xdWVyeVFOYW1lKVxuICAgICAgLnBhZ2VLZXkocy5zLnF1ZXJ5UGFnZU5hbWUpXG4gICAgICAucGVyS2V5KHMucy5xdWVyeVBlcktleSlcblxuICAgIGlmIChzLnByb3BzLmFiaWxpdGllcykgcXVlcnkuYWJpbGl0aWVzKHMucC5hYmlsaXRpZXMpXG4gICAgaWYgKHMucHJvcHMubGltaXQgIT09IHVuZGVmaW5lZCkgcXVlcnkubGltaXQocy5wLmxpbWl0KVxuICAgIGlmIChzLnByb3BzLnByZWxvYWRzKSBxdWVyeS5wcmVsb2FkKHMucC5wcmVsb2FkcylcbiAgICBpZiAocy5wcm9wcy5yYW5zYWNrKSBxdWVyeS5yYW5zYWNrKHMucHJvcHMucmFuc2FjaylcbiAgICBpZiAocy5wcm9wcy5zZWxlY3QpIHF1ZXJ5LnNlbGVjdChzLnAuc2VsZWN0KVxuICAgIGlmIChzLnByb3BzLnNlbGVjdENvbHVtbnMpIHF1ZXJ5LnNlbGVjdENvbHVtbnMocy5wLnNlbGVjdENvbHVtbnMpXG5cbiAgICBsZXQgcmVzdWx0XG5cbiAgICBpZiAocy5wcm9wcy5xdWVyeU1ldGhvZCkge1xuICAgICAgcmVzdWx0ID0gYXdhaXQgcy5wLnF1ZXJ5TWV0aG9kKHtxdWVyeX0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCA9IGF3YWl0IHF1ZXJ5LnJlc3VsdCgpXG4gICAgfVxuXG4gICAgY29uc3QgbW9kZWxzID0gcmVzdWx0Lm1vZGVscygpXG5cbiAgICBpZiAocy5wcm9wcy5vbk1vZGVsc0xvYWRlZCkge1xuICAgICAgcy5wLm9uTW9kZWxzTG9hZGVkKHtcbiAgICAgICAgbW9kZWxzLFxuICAgICAgICBxUGFyYW1zOiBzLnMucVBhcmFtcyxcbiAgICAgICAgcXVlcnksXG4gICAgICAgIHJlc3VsdFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBzLnNldCh7XG4gICAgICBtb2RlbHM6IHJlc3VsdC5tb2RlbHMoKSxcbiAgICAgIHF1ZXJ5LFxuICAgICAgcmVzdWx0LFxuICAgICAgc2hvd05vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnQ6IHNob3dOb1JlY29yZHNBdmFpbGFibGVDb250ZW50KHttb2RlbHN9KSxcbiAgICAgIHNob3dOb1JlY29yZHNGb3VuZENvbnRlbnQ6IHNob3dOb1JlY29yZHNGb3VuZENvbnRlbnQoe21vZGVsc30pXG4gICAgfSlcbiAgfSwgW10pXG5cbiAgY29uc3QgbG9hZE1vZGVsc0RlYm91bmNlID0gdXNlQ2FsbGJhY2soZGVib3VuY2UobG9hZE1vZGVscyksIFtdKVxuICBjb25zdCBvbk1vZGVsRGVzdHJveWVkID0gdXNlQ2FsbGJhY2soKGFyZ3MpID0+IHtcbiAgICBzLnNldCh7XG4gICAgICBtb2RlbHM6IHMucy5tb2RlbHMuZmlsdGVyKChtb2RlbCkgPT4gbW9kZWwuaWQoKSAhPSBhcmdzLm1vZGVsLmlkKCkpXG4gICAgfSlcbiAgfSwgW10pXG5cbiAgY29uc3Qgb25Nb2RlbFVwZGF0ZWQgPSB1c2VDYWxsYmFjaygoYXJncykgPT4ge1xuICAgIGNvbnN0IHVwZGF0ZWRNb2RlbCA9IGRpZ2coYXJncywgXCJtb2RlbFwiKVxuICAgIGNvbnN0IGZvdW5kTW9kZWwgPSBzLnMubW9kZWxzLmZpbmQoKG1vZGVsKSA9PiBtb2RlbC5pZCgpID09IHVwZGF0ZWRNb2RlbC5pZCgpKVxuXG4gICAgaWYgKGZvdW5kTW9kZWwpIGxvYWRNb2RlbHNEZWJvdW5jZSgpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IHNob3dOb1JlY29yZHNBdmFpbGFibGVDb250ZW50ID0gdXNlQ2FsbGJhY2soKGFyZ3MpID0+IHtcbiAgICBsZXQgbW9kZWxzLCBvdmVyYWxsQ291bnRcblxuICAgIGlmIChhcmdzLm1vZGVscyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBtb2RlbHMgPSBhcmdzLm1vZGVsc1xuICAgIH0gZWxzZSBpZiAocy5zLm1vZGVscyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBtb2RlbHMgPSBzLnMubW9kZWxzXG4gICAgfVxuXG4gICAgaWYgKGFyZ3Mub3ZlcmFsbENvdW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG92ZXJhbGxDb3VudCA9IGFyZ3Mub3ZlcmFsbENvdW50XG4gICAgfSBlbHNlIGlmIChzLnMub3ZlcmFsbENvdW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG92ZXJhbGxDb3VudCA9IHMucy5vdmVyYWxsQ291bnRcbiAgICB9XG5cbiAgICBpZiAobW9kZWxzID09PSB1bmRlZmluZWQgfHwgb3ZlcmFsbENvdW50ID09PSB1bmRlZmluZWQgfHwgcy5wLm5vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZhbHNlXG4gICAgaWYgKG1vZGVscy5sZW5ndGggPT09IDAgJiYgb3ZlcmFsbENvdW50ID09PSAwICYmIHMucC5ub1JlY29yZHNBdmFpbGFibGVDb250ZW50KSByZXR1cm4gdHJ1ZVxuICB9LCBbXSlcblxuICBjb25zdCBzaG93Tm9SZWNvcmRzRm91bmRDb250ZW50ID0gdXNlQ2FsbGJhY2soKGFyZ3MpID0+IHtcbiAgICBsZXQgbW9kZWxzLCBvdmVyYWxsQ291bnRcblxuICAgIGlmIChhcmdzLm1vZGVscyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBtb2RlbHMgPSBhcmdzLm1vZGVsc1xuICAgIH0gZWxzZSBpZiAocy5zLm1vZGVscyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBtb2RlbHMgPSBzLnMubW9kZWxzXG4gICAgfVxuXG4gICAgaWYgKGFyZ3Mub3ZlcmFsbENvdW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG92ZXJhbGxDb3VudCA9IGFyZ3Mub3ZlcmFsbENvdW50XG4gICAgfSBlbHNlIGlmIChzLnMub3ZlcmFsbENvdW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG92ZXJhbGxDb3VudCA9IHMucy5vdmVyYWxsQ291bnRcbiAgICB9XG5cbiAgICBpZiAobW9kZWxzID09PSB1bmRlZmluZWQgfHwgcy5wcm9wcy5ub1JlY29yZHNGb3VuZENvbnRlbnQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZhbHNlXG5cbiAgICAvLyBEb250IHNob3cgbm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudCB0b2dldGhlciB3aXRoIG5vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnRcbiAgICBpZiAobW9kZWxzLmxlbmd0aCA9PT0gMCAmJiBvdmVyYWxsQ291bnQgPT09IDAgJiYgcy5wcm9wcy5ub1JlY29yZHNBdmFpbGFibGVDb250ZW50KSByZXR1cm4gZmFsc2VcbiAgICBpZiAobW9kZWxzLmxlbmd0aCA9PT0gMCAmJiBzLnByb3BzLm5vUmVjb3Jkc0ZvdW5kQ29udGVudCkgcmV0dXJuIHRydWVcbiAgfSwgW10pXG5cbiAgY29uc3Qgb25DcmVhdGVkID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGxvYWRNb2RlbHMoKVxuICB9LCBbXSlcblxuICB1c2VNZW1vKFxuICAgICgpID0+IHtcbiAgICAgIGlmICghKFwiaWZDb25kaXRpb25cIiBpbiBzLnByb3BzKSB8fCBzLnByb3BzLmlmQ29uZGl0aW9uKSB7XG4gICAgICAgIGxvYWRRUGFyYW1zKClcbiAgICAgICAgbG9hZE1vZGVscygpXG4gICAgICB9XG4gICAgfSxcbiAgICBbXG4gICAgICBzLnByb3BzLmlmQ29uZGl0aW9uLFxuICAgICAgcy5tLnF1ZXJ5UGFyYW1zW3Mucy5xdWVyeVFOYW1lXSxcbiAgICAgIHMubS5xdWVyeVBhcmFtc1tzLnMucXVlcnlQYWdlTmFtZV0sXG4gICAgICBzLm0ucXVlcnlQYXJhbXNbcy5zLnF1ZXJ5UGVyS2V5XSxcbiAgICAgIHMubS5xdWVyeVBhcmFtc1tzLnMucXVlcnlTTmFtZV0sXG4gICAgICBjb2xsZWN0aW9uXG4gICAgXS5jb25jYXQoY2FjaGVLZXlzKVxuICApXG5cbiAgdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKHMucHJvcHMubm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudCkge1xuICAgICAgbG9hZE92ZXJhbGxDb3VudCgpXG4gICAgfVxuICB9LCBbXSlcblxuICB1c2VDcmVhdGVkRXZlbnQocy5wLm1vZGVsQ2xhc3MsIG9uQ3JlYXRlZClcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGNvbm5lY3Rpb25zID0gW11cblxuICAgIGlmIChzLnMubW9kZWxzKSB7XG4gICAgICBmb3IoY29uc3QgbW9kZWwgb2Ygcy5zLm1vZGVscykge1xuICAgICAgICBjb25uZWN0aW9ucy5wdXNoKE1vZGVsRXZlbnRzLmNvbm5lY3RVcGRhdGVkKG1vZGVsLCBvbk1vZGVsVXBkYXRlZCkpXG4gICAgICAgIGNvbm5lY3Rpb25zLnB1c2goTW9kZWxFdmVudHMuY29ubmVjdERlc3Ryb3llZChtb2RlbCwgb25Nb2RlbERlc3Ryb3llZCkpXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGZvcihjb25zdCBjb25uZWN0aW9uIG9mIGNvbm5lY3Rpb25zKSB7XG4gICAgICAgIGNvbm5lY3Rpb24udW5zdWJzY3JpYmUoKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW21vZGVsSWRzQ2FjaGVTdHJpbmddKVxuXG4gIGNvbnN0IHJlc3VsdCA9IE9iamVjdC5hc3NpZ24oe30sIHMuc3RhdGUpXG4gIGNvbnN0IG1vZGVsVmFyaWFibGVOYW1lID0gaW5mbGVjdGlvbi5wbHVyYWxpemUoaW5mbGVjdGlvbi5jYW1lbGl6ZShtb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKCkubmFtZSwgdHJ1ZSkpXG5cbiAgcmVzdWx0Lm1vZGVsSWRzQ2FjaGVTdHJpbmcgPSBtb2RlbElkc0NhY2hlU3RyaW5nXG4gIHJlc3VsdFttb2RlbFZhcmlhYmxlTmFtZV0gPSBzLnMubW9kZWxzXG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5leHBvcnQgZGVmYXVsdCB1c2VDb2xsZWN0aW9uXG4iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLFFBQVEsTUFBTSxVQUFVO0FBQy9CLFNBQVFDLElBQUksUUFBTyxXQUFXO0FBQzlCLE9BQU8sS0FBS0MsVUFBVSxNQUFNLFlBQVk7QUFDeEMsT0FBT0MsV0FBVyxNQUFNLGdCQUFnQjtBQUN4QyxTQUFRQyxXQUFXLEVBQUVDLGVBQWUsRUFBRUMsT0FBTyxRQUFPLE9BQU87QUFDM0QsT0FBT0MsZUFBZSxNQUFNLHFCQUFxQjtBQUNqRCxPQUFPQyxRQUFRLE1BQU0saUNBQWlDO0FBQ3RELE9BQU9DLGNBQWMsTUFBTSwwQ0FBMEM7QUFFckUsTUFBTUMsYUFBYSxHQUFHQSxDQUFDQyxLQUFLLEVBQUVDLFNBQVMsR0FBRyxFQUFFLEtBQUs7RUFDL0MsTUFBTTtJQUNKQyxTQUFTO0lBQ1RDLFVBQVU7SUFDVkMsYUFBYTtJQUNiQyxPQUFPO0lBQ1BDLFdBQVc7SUFDWEMsS0FBSztJQUNMQyxVQUFVO0lBQ1ZDLHlCQUF5QixHQUFHQyxTQUFTO0lBQ3JDQyxxQkFBcUIsR0FBR0QsU0FBUztJQUNqQ0UsY0FBYztJQUNkQyxVQUFVLEdBQUcsS0FBSztJ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
|
|
225
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkZWJvdW5jZSIsImRpZ2ciLCJpbmZsZWN0aW9uIiwiTW9kZWxFdmVudHMiLCJ1c2VDYWxsYmFjayIsInVzZUxheW91dEVmZmVjdCIsInVzZU1lbW8iLCJ1c2VDcmVhdGVkRXZlbnQiLCJ1c2VTaGFwZSIsInVzZVF1ZXJ5UGFyYW1zIiwidXNlQ29sbGVjdGlvbiIsInByb3BzIiwiY2FjaGVLZXlzIiwiYWJpbGl0aWVzIiwiY29sbGVjdGlvbiIsImRlZmF1bHRQYXJhbXMiLCJncm91cEJ5IiwiaWZDb25kaXRpb24iLCJsaW1pdCIsIm1vZGVsQ2xhc3MiLCJub1JlY29yZHNBdmFpbGFibGVDb250ZW50IiwidW5kZWZpbmVkIiwibm9SZWNvcmRzRm91bmRDb250ZW50Iiwib25Nb2RlbHNMb2FkZWQiLCJwYWdpbmF0aW9uIiwicHJlbG9hZHMiLCJxdWVyeU1ldGhvZCIsInF1ZXJ5TmFtZSIsImluaXRpYWxRdWVyeU5hbWUiLCJyYW5zYWNrIiwic2VsZWN0Iiwic2VsZWN0Q29sdW1ucyIsInJlc3RQcm9wcyIsIk9iamVjdCIsImtleXMiLCJsZW5ndGgiLCJFcnJvciIsImpvaW4iLCJzIiwibW9kZWxDbGFzc0RhdGEiLCJtZXRhIiwicXVlcnlQYXJhbXMiLCJoYXNRUGFyYW1zIiwicXVlcnlRTmFtZSIsIm0iLCJxUGFyYW1zIiwiSlNPTiIsInBhcnNlIiwidXNlU3RhdGVzIiwibW9kZWxzIiwib3ZlcmFsbENvdW50IiwicXVlcnkiLCJxdWVyeVBlcktleSIsInF1ZXJ5U05hbWUiLCJxdWVyeVBhZ2VOYW1lIiwicmVzdWx0Iiwic2VhcmNoUGFyYW1zIiwic2hvd05vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnQiLCJzaG93Tm9SZWNvcmRzRm91bmRDb250ZW50IiwibW9kZWxJZHNDYWNoZVN0cmluZyIsIm1hcCIsIm1vZGVsIiwiY2FjaGVLZXkiLCJsb2FkT3ZlcmFsbENvdW50IiwiYmFzZVF1ZXJ5IiwicCIsImFsbCIsImNvdW50Iiwic2V0IiwibG9hZFFQYXJhbXMiLCJxUGFyYW1zVG9TZXQiLCJhc3NpZ24iLCJyYXdTZWFyY2hQYXJhbSIsInBhcnNlZFNlYXJjaFBhcmFtIiwicHVzaCIsImxvYWRNb2RlbHMiLCJjbG9uZSIsInBhZ2UiLCJwZXIiLCJOdW1iZXIiLCJzZWFyY2giLCJzZWFyY2hLZXkiLCJwYWdlS2V5IiwicGVyS2V5IiwicHJlbG9hZCIsImxvYWRNb2RlbHNEZWJvdW5jZSIsIm9uTW9kZWxEZXN0cm95ZWQiLCJhcmdzIiwiZmlsdGVyIiwiaWQiLCJvbk1vZGVsVXBkYXRlZCIsInVwZGF0ZWRNb2RlbCIsImZvdW5kTW9kZWwiLCJmaW5kIiwib25DcmVhdGVkIiwiY29uY2F0IiwiY29ubmVjdGlvbnMiLCJjb25uZWN0VXBkYXRlZCIsImNvbm5lY3REZXN0cm95ZWQiLCJjb25uZWN0aW9uIiwidW5zdWJzY3JpYmUiLCJzdGF0ZSIsIm1vZGVsVmFyaWFibGVOYW1lIiwicGx1cmFsaXplIiwiY2FtZWxpemUiLCJuYW1lIl0sInNvdXJjZXMiOlsiLi4vc3JjL3VzZS1jb2xsZWN0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkZWJvdW5jZSBmcm9tIFwiZGVib3VuY2VcIlxuaW1wb3J0IHtkaWdnfSBmcm9tIFwiZGlnZ2VyaXplXCJcbmltcG9ydCAqIGFzIGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIlxuaW1wb3J0IE1vZGVsRXZlbnRzIGZyb20gXCIuL21vZGVsLWV2ZW50c1wiXG5pbXBvcnQge3VzZUNhbGxiYWNrLCB1c2VMYXlvdXRFZmZlY3QsIHVzZU1lbW99IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgdXNlQ3JlYXRlZEV2ZW50IGZyb20gXCIuL3VzZS1jcmVhdGVkLWV2ZW50XCJcbmltcG9ydCB1c2VTaGFwZSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvc3JjL3VzZS1zaGFwZVwiXG5pbXBvcnQgdXNlUXVlcnlQYXJhbXMgZnJvbSBcIm9uLWxvY2F0aW9uLWNoYW5nZWQvYnVpbGQvdXNlLXF1ZXJ5LXBhcmFtc1wiXG5cbmNvbnN0IHVzZUNvbGxlY3Rpb24gPSAocHJvcHMsIGNhY2hlS2V5cyA9IFtdKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBhYmlsaXRpZXMsXG4gICAgY29sbGVjdGlvbixcbiAgICBkZWZhdWx0UGFyYW1zLFxuICAgIGdyb3VwQnksXG4gICAgaWZDb25kaXRpb24sXG4gICAgbGltaXQsXG4gICAgbW9kZWxDbGFzcyxcbiAgICBub1JlY29yZHNBdmFpbGFibGVDb250ZW50ID0gdW5kZWZpbmVkLFxuICAgIG5vUmVjb3Jkc0ZvdW5kQ29udGVudCA9IHVuZGVmaW5lZCxcbiAgICBvbk1vZGVsc0xvYWRlZCxcbiAgICBwYWdpbmF0aW9uID0gZmFsc2UsXG4gICAgcHJlbG9hZHMgPSBbXSxcbiAgICBxdWVyeU1ldGhvZCxcbiAgICBxdWVyeU5hbWU6IGluaXRpYWxRdWVyeU5hbWUsXG4gICAgcmFuc2FjayxcbiAgICBzZWxlY3QgPSB7fSxcbiAgICBzZWxlY3RDb2x1bW5zLFxuICAgIC4uLnJlc3RQcm9wc1xuICB9ID0gcHJvcHNcblxuICBpZiAoT2JqZWN0LmtleXMocmVzdFByb3BzKS5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHByb3BzIGdpdmVuIHRvIHVzZUNvbGxlY3Rpb246ICR7T2JqZWN0LmtleXMocmVzdFByb3BzKS5qb2luKFwiLCBcIil9YClcbiAgfVxuXG4gIGNvbnN0IHMgPSB1c2VTaGFwZShwcm9wcylcbiAgY29uc3QgcXVlcnlOYW1lID0gaW5pdGlhbFF1ZXJ5TmFtZSB8fCBkaWdnKG1vZGVsQ2xhc3MubW9kZWxDbGFzc0RhdGEoKSwgXCJjb2xsZWN0aW9uS2V5XCIpXG5cbiAgcy5tZXRhLnF1ZXJ5UGFyYW1zID0gdXNlUXVlcnlQYXJhbXMoKVxuXG4gIGNvbnN0IGhhc1FQYXJhbXMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHMucy5xdWVyeVFOYW1lIGluIHMubS5xdWVyeVBhcmFtcykgcmV0dXJuIHRydWVcblxuICAgIHJldHVybiBmYWxzZVxuICB9LCBbXSlcblxuICBjb25zdCBxUGFyYW1zID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChoYXNRUGFyYW1zKCkpIHJldHVybiBKU09OLnBhcnNlKGRpZ2cocy5tLnF1ZXJ5UGFyYW1zLCBzLnMucXVlcnlRTmFtZSkpXG5cbiAgICByZXR1cm4ge31cbiAgfSwgW10pXG5cbiAgcy51c2VTdGF0ZXMoe1xuICAgIG1vZGVsczogdW5kZWZpbmVkLFxuICAgIG92ZXJhbGxDb3VudDogdW5kZWZpbmVkLFxuICAgIHF1ZXJ5OiB1bmRlZmluZWQsXG4gICAgcXVlcnlOYW1lLFxuICAgIHF1ZXJ5UGVyS2V5OiBgJHtxdWVyeU5hbWV9X3BlcmAsXG4gICAgcXVlcnlRTmFtZTogYCR7cXVlcnlOYW1lfV9xYCxcbiAgICBxdWVyeVNOYW1lOiBgJHtxdWVyeU5hbWV9X3NgLFxuICAgIHF1ZXJ5UGFnZU5hbWU6IGAke3F1ZXJ5TmFtZX1fcGFnZWAsXG4gICAgcmVzdWx0OiB1bmRlZmluZWQsXG4gICAgc2VhcmNoUGFyYW1zOiB1bmRlZmluZWQsXG4gICAgc2hvd05vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnQ6IGZhbHNlLFxuICAgIHNob3dOb1JlY29yZHNGb3VuZENvbnRlbnQ6IGZhbHNlXG4gIH0pXG4gIHMudXNlU3RhdGVzKHtcbiAgICBxUGFyYW1zOiAoKSA9PiBxUGFyYW1zKClcbiAgfSlcblxuICBsZXQgbW9kZWxJZHNDYWNoZVN0cmluZ1xuXG4gIGlmIChzLnMubW9kZWxzID09PSB1bmRlZmluZWQpIHtcbiAgICBtb2RlbElkc0NhY2hlU3RyaW5nID0gXCJtb2RlbHMtdW5kZWZpbmVkXCJcbiAgfSBlbHNlIGlmIChzLnMubW9kZWxzLmxlbmd0aCA9PT0gMCkge1xuICAgIG1vZGVsSWRzQ2FjaGVTdHJpbmcgPSBcIm5vLW1vZGVsc1wiXG4gIH0gZWxzZSB7XG4gICAgbW9kZWxJZHNDYWNoZVN0cmluZyA9IHMucy5tb2RlbHMubWFwKChtb2RlbCkgPT4gbW9kZWwuY2FjaGVLZXkoKSk/LmpvaW4oXCItLS1cIilcbiAgfVxuXG4gIGNvbnN0IGxvYWRPdmVyYWxsQ291bnQgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgYmFzZVF1ZXJ5ID0gcy5wLmNvbGxlY3Rpb24gfHwgcy5wLm1vZGVsQ2xhc3MuYWxsKClcbiAgICBjb25zdCBvdmVyYWxsQ291bnQgPSBhd2FpdCBiYXNlUXVlcnkuY291bnQoKVxuXG4gICAgcy5zZXQoe1xuICAgICAgb3ZlcmFsbENvdW50LFxuICAgICAgc2hvd05vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnQ6IHNob3dOb1JlY29yZHNBdmFpbGFibGVDb250ZW50KHtvdmVyYWxsQ291bnR9KSxcbiAgICAgIHNob3dOb1JlY29yZHNGb3VuZENvbnRlbnQ6IHNob3dOb1JlY29yZHNGb3VuZENvbnRlbnQoe292ZXJhbGxDb3VudH0pXG4gICAgfSlcbiAgfSwgW10pXG5cbiAgY29uc3QgbG9hZFFQYXJhbXMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgcVBhcmFtc1RvU2V0ID0gaGFzUVBhcmFtcygpID8gcVBhcmFtcygpIDogT2JqZWN0LmFzc2lnbih7fSwgcy5wcm9wcy5kZWZhdWx0UGFyYW1zKVxuICAgIGNvbnN0IHNlYXJjaFBhcmFtcyA9IFtdXG5cbiAgICBpZiAocy5tLnF1ZXJ5UGFyYW1zW3Mucy5xdWVyeVNOYW1lXSkge1xuICAgICAgZm9yIChjb25zdCByYXdTZWFyY2hQYXJhbSBvZiBzLm0ucXVlcnlQYXJhbXNbcy5zLnF1ZXJ5U05hbWVdKSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZFNlYXJjaFBhcmFtID0gSlNPTi5wYXJzZShyYXdTZWFyY2hQYXJhbSlcblxuICAgICAgICBzZWFyY2hQYXJhbXMucHVzaChwYXJzZWRTZWFyY2hQYXJhbSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzLnNldCh7XG4gICAgICBxUGFyYW1zOiBxUGFyYW1zVG9TZXQsXG4gICAgICBzZWFyY2hQYXJhbXNcbiAgICB9KVxuICB9LCBbXSlcblxuICBjb25zdCBsb2FkTW9kZWxzID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGxldCBxdWVyeSA9IHMucHJvcHMuY29sbGVjdGlvbj8uY2xvbmUoKSB8fCBzLnAubW9kZWxDbGFzcy5yYW5zYWNrKClcblxuICAgIGlmIChzLnByb3BzLnBhZ2luYXRpb24pIHtcbiAgICAgIGNvbnN0IHBhZ2UgPSBzLm0ucXVlcnlQYXJhbXNbcy5zLnF1ZXJ5UGFnZU5hbWVdIHx8IDFcbiAgICAgIGxldCBwZXIgPSBzLm0ucXVlcnlQYXJhbXNbcy5zLnF1ZXJ5UGVyS2V5XSB8fCAzMFxuXG4gICAgICBpZiAocGVyID09IFwiYWxsXCIpIHtcbiAgICAgICAgcGVyID0gOTk5Xzk5OV85OTlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlciA9IE51bWJlcihwZXIpXG4gICAgICB9XG5cbiAgICAgIHF1ZXJ5LnBhZ2UocGFnZSkucGVyKHBlcilcbiAgICB9XG5cbiAgICBpZiAocy5wcm9wcy5ncm91cEJ5KSBxdWVyeSA9IHF1ZXJ5Lmdyb3VwQnkoLi4ucy5wLmdyb3VwQnkpXG5cbiAgICBxdWVyeSA9IHF1ZXJ5XG4gICAgICAucmFuc2FjayhzLnMucVBhcmFtcylcbiAgICAgIC5zZWFyY2gocy5zLnNlYXJjaFBhcmFtcylcbiAgICAgIC5zZWFyY2hLZXkocy5zLnF1ZXJ5UU5hbWUpXG4gICAgICAucGFnZUtleShzLnMucXVlcnlQYWdlTmFtZSlcbiAgICAgIC5wZXJLZXkocy5zLnF1ZXJ5UGVyS2V5KVxuXG4gICAgaWYgKHMucHJvcHMuYWJpbGl0aWVzKSBxdWVyeS5hYmlsaXRpZXMocy5wLmFiaWxpdGllcylcbiAgICBpZiAocy5wcm9wcy5saW1pdCAhPT0gdW5kZWZpbmVkKSBxdWVyeS5saW1pdChzLnAubGltaXQpXG4gICAgaWYgKHMucHJvcHMucHJlbG9hZHMpIHF1ZXJ5LnByZWxvYWQocy5wLnByZWxvYWRzKVxuICAgIGlmIChzLnByb3BzLnJhbnNhY2spIHF1ZXJ5LnJhbnNhY2socy5wcm9wcy5yYW5zYWNrKVxuICAgIGlmIChzLnByb3BzLnNlbGVjdCkgcXVlcnkuc2VsZWN0KHMucC5zZWxlY3QpXG4gICAgaWYgKHMucHJvcHMuc2VsZWN0Q29sdW1ucykgcXVlcnkuc2VsZWN0Q29sdW1ucyhzLnAuc2VsZWN0Q29sdW1ucylcblxuICAgIGxldCByZXN1bHRcblxuICAgIGlmIChzLnByb3BzLnF1ZXJ5TWV0aG9kKSB7XG4gICAgICByZXN1bHQgPSBhd2FpdCBzLnAucXVlcnlNZXRob2Qoe3F1ZXJ5fSlcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gYXdhaXQgcXVlcnkucmVzdWx0KClcbiAgICB9XG5cbiAgICBjb25zdCBtb2RlbHMgPSByZXN1bHQubW9kZWxzKClcblxuICAgIGlmIChzLnByb3BzLm9uTW9kZWxzTG9hZGVkKSB7XG4gICAgICBzLnAub25Nb2RlbHNMb2FkZWQoe1xuICAgICAgICBtb2RlbHMsXG4gICAgICAgIHFQYXJhbXM6IHMucy5xUGFyYW1zLFxuICAgICAgICBxdWVyeSxcbiAgICAgICAgcmVzdWx0XG4gICAgICB9KVxuICAgIH1cblxuICAgIHMuc2V0KHtcbiAgICAgIG1vZGVsczogcmVzdWx0Lm1vZGVscygpLFxuICAgICAgcXVlcnksXG4gICAgICByZXN1bHQsXG4gICAgICBzaG93Tm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudDogc2hvd05vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnQoe21vZGVsc30pLFxuICAgICAgc2hvd05vUmVjb3Jkc0ZvdW5kQ29udGVudDogc2hvd05vUmVjb3Jkc0ZvdW5kQ29udGVudCh7bW9kZWxzfSlcbiAgICB9KVxuICB9LCBbXSlcblxuICBjb25zdCBsb2FkTW9kZWxzRGVib3VuY2UgPSB1c2VDYWxsYmFjayhkZWJvdW5jZShsb2FkTW9kZWxzKSwgW10pXG4gIGNvbnN0IG9uTW9kZWxEZXN0cm95ZWQgPSB1c2VDYWxsYmFjaygoYXJncykgPT4ge1xuICAgIHMuc2V0KHtcbiAgICAgIG1vZGVsczogcy5zLm1vZGVscy5maWx0ZXIoKG1vZGVsKSA9PiBtb2RlbC5pZCgpICE9IGFyZ3MubW9kZWwuaWQoKSlcbiAgICB9KVxuICB9LCBbXSlcblxuICBjb25zdCBvbk1vZGVsVXBkYXRlZCA9IHVzZUNhbGxiYWNrKChhcmdzKSA9PiB7XG4gICAgY29uc3QgdXBkYXRlZE1vZGVsID0gZGlnZyhhcmdzLCBcIm1vZGVsXCIpXG4gICAgY29uc3QgZm91bmRNb2RlbCA9IHMucy5tb2RlbHMuZmluZCgobW9kZWwpID0+IG1vZGVsLmlkKCkgPT0gdXBkYXRlZE1vZGVsLmlkKCkpXG5cbiAgICBpZiAoZm91bmRNb2RlbCkgbG9hZE1vZGVsc0RlYm91bmNlKClcbiAgfSwgW10pXG5cbiAgY29uc3Qgc2hvd05vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnQgPSB1c2VDYWxsYmFjaygoYXJncykgPT4ge1xuICAgIGxldCBtb2RlbHMsIG92ZXJhbGxDb3VudFxuXG4gICAgaWYgKGFyZ3MubW9kZWxzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG1vZGVscyA9IGFyZ3MubW9kZWxzXG4gICAgfSBlbHNlIGlmIChzLnMubW9kZWxzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG1vZGVscyA9IHMucy5tb2RlbHNcbiAgICB9XG5cbiAgICBpZiAoYXJncy5vdmVyYWxsQ291bnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgb3ZlcmFsbENvdW50ID0gYXJncy5vdmVyYWxsQ291bnRcbiAgICB9IGVsc2UgaWYgKHMucy5vdmVyYWxsQ291bnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgb3ZlcmFsbENvdW50ID0gcy5zLm92ZXJhbGxDb3VudFxuICAgIH1cblxuICAgIGlmIChtb2RlbHMgPT09IHVuZGVmaW5lZCB8fCBvdmVyYWxsQ291bnQgPT09IHVuZGVmaW5lZCB8fCBzLnAubm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZmFsc2VcbiAgICBpZiAobW9kZWxzLmxlbmd0aCA9PT0gMCAmJiBvdmVyYWxsQ291bnQgPT09IDAgJiYgcy5wLm5vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnQpIHJldHVybiB0cnVlXG4gIH0sIFtdKVxuXG4gIGNvbnN0IHNob3dOb1JlY29yZHNGb3VuZENvbnRlbnQgPSB1c2VDYWxsYmFjaygoYXJncykgPT4ge1xuICAgIGxldCBtb2RlbHMsIG92ZXJhbGxDb3VudFxuXG4gICAgaWYgKGFyZ3MubW9kZWxzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG1vZGVscyA9IGFyZ3MubW9kZWxzXG4gICAgfSBlbHNlIGlmIChzLnMubW9kZWxzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG1vZGVscyA9IHMucy5tb2RlbHNcbiAgICB9XG5cbiAgICBpZiAoYXJncy5vdmVyYWxsQ291bnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgb3ZlcmFsbENvdW50ID0gYXJncy5vdmVyYWxsQ291bnRcbiAgICB9IGVsc2UgaWYgKHMucy5vdmVyYWxsQ291bnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgb3ZlcmFsbENvdW50ID0gcy5zLm92ZXJhbGxDb3VudFxuICAgIH1cblxuICAgIGlmIChtb2RlbHMgPT09IHVuZGVmaW5lZCB8fCBzLnByb3BzLm5vUmVjb3Jkc0ZvdW5kQ29udGVudCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZmFsc2VcblxuICAgIC8vIERvbnQgc2hvdyBub1JlY29yZHNBdmFpbGFibGVDb250ZW50IHRvZ2V0aGVyIHdpdGggbm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudFxuICAgIGlmIChtb2RlbHMubGVuZ3RoID09PSAwICYmIG92ZXJhbGxDb3VudCA9PT0gMCAmJiBzLnByb3BzLm5vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnQpIHJldHVybiBmYWxzZVxuICAgIGlmIChtb2RlbHMubGVuZ3RoID09PSAwICYmIHMucHJvcHMubm9SZWNvcmRzRm91bmRDb250ZW50KSByZXR1cm4gdHJ1ZVxuICB9LCBbXSlcblxuICBjb25zdCBvbkNyZWF0ZWQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgbG9hZE1vZGVscygpXG4gIH0sIFtdKVxuXG4gIHVzZU1lbW8oXG4gICAgKCkgPT4ge1xuICAgICAgaWYgKCEoXCJpZkNvbmRpdGlvblwiIGluIHMucHJvcHMpIHx8IHMucHJvcHMuaWZDb25kaXRpb24pIHtcbiAgICAgICAgbG9hZFFQYXJhbXMoKVxuICAgICAgICBsb2FkTW9kZWxzKClcbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIHMucHJvcHMuaWZDb25kaXRpb24sXG4gICAgICBzLm0ucXVlcnlQYXJhbXNbcy5zLnF1ZXJ5UU5hbWVdLFxuICAgICAgcy5tLnF1ZXJ5UGFyYW1zW3Mucy5xdWVyeVBhZ2VOYW1lXSxcbiAgICAgIHMubS5xdWVyeVBhcmFtc1tzLnMucXVlcnlQZXJLZXldLFxuICAgICAgcy5tLnF1ZXJ5UGFyYW1zW3Mucy5xdWVyeVNOYW1lXSxcbiAgICAgIGNvbGxlY3Rpb25cbiAgICBdLmNvbmNhdChjYWNoZUtleXMpXG4gIClcblxuICB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAocy5wcm9wcy5ub1JlY29yZHNBdmFpbGFibGVDb250ZW50KSB7XG4gICAgICBsb2FkT3ZlcmFsbENvdW50KClcbiAgICB9XG4gIH0sIFtdKVxuXG4gIHVzZUNyZWF0ZWRFdmVudChzLnAubW9kZWxDbGFzcywgb25DcmVhdGVkKVxuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgY29ubmVjdGlvbnMgPSBbXVxuXG4gICAgaWYgKHMucy5tb2RlbHMpIHtcbiAgICAgIGZvcihjb25zdCBtb2RlbCBvZiBzLnMubW9kZWxzKSB7XG4gICAgICAgIGNvbm5lY3Rpb25zLnB1c2goTW9kZWxFdmVudHMuY29ubmVjdFVwZGF0ZWQobW9kZWwsIG9uTW9kZWxVcGRhdGVkKSlcbiAgICAgICAgY29ubmVjdGlvbnMucHVzaChNb2RlbEV2ZW50cy5jb25uZWN0RGVzdHJveWVkKG1vZGVsLCBvbk1vZGVsRGVzdHJveWVkKSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZm9yKGNvbnN0IGNvbm5lY3Rpb24gb2YgY29ubmVjdGlvbnMpIHtcbiAgICAgICAgY29ubmVjdGlvbi51bnN1YnNjcmliZSgpXG4gICAgICB9XG4gICAgfVxuICB9LCBbbW9kZWxJZHNDYWNoZVN0cmluZ10pXG5cbiAgY29uc3QgcmVzdWx0ID0gT2JqZWN0LmFzc2lnbih7fSwgcy5zdGF0ZSlcbiAgY29uc3QgbW9kZWxWYXJpYWJsZU5hbWUgPSBpbmZsZWN0aW9uLnBsdXJhbGl6ZShpbmZsZWN0aW9uLmNhbWVsaXplKG1vZGVsQ2xhc3MubW9kZWxDbGFzc0RhdGEoKS5uYW1lLCB0cnVlKSlcblxuICByZXN1bHQubW9kZWxJZHNDYWNoZVN0cmluZyA9IG1vZGVsSWRzQ2FjaGVTdHJpbmdcbiAgcmVzdWx0W21vZGVsVmFyaWFibGVOYW1lXSA9IHMucy5tb2RlbHNcblxuICByZXR1cm4gcmVzdWx0XG59XG5cbmV4cG9ydCBkZWZhdWx0IHVzZUNvbGxlY3Rpb25cbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsUUFBUSxNQUFNLFVBQVU7QUFDL0IsU0FBUUMsSUFBSSxRQUFPLFdBQVc7QUFDOUIsT0FBTyxLQUFLQyxVQUFVLE1BQU0sWUFBWTtBQUN4QyxPQUFPQyxXQUFXLE1BQU0sZ0JBQWdCO0FBQ3hDLFNBQVFDLFdBQVcsRUFBRUMsZUFBZSxFQUFFQyxPQUFPLFFBQU8sT0FBTztBQUMzRCxPQUFPQyxlQUFlLE1BQU0scUJBQXFCO0FBQ2pELE9BQU9DLFFBQVEsTUFBTSxpQ0FBaUM7QUFDdEQsT0FBT0MsY0FBYyxNQUFNLDRDQUE0QztBQUV2RSxNQUFNQyxhQUFhLEdBQUdBLENBQUNDLEtBQUssRUFBRUMsU0FBUyxHQUFHLEVBQUUsS0FBSztFQUMvQyxNQUFNO0lBQ0pDLFNBQVM7SUFDVEMsVUFBVTtJQUNWQyxhQUFhO0lBQ2JDLE9BQU87SUFDUEMsV0FBVztJQUNYQyxLQUFLO0lBQ0xDLFVBQVU7SUFDVkMseUJBQXlCLEdBQUdDLFNBQVM7SUFDckNDLHFCQUFxQixHQUFHRCxTQUFTO0lBQ2pDRSxjQUFjO0lBQ2RDLFVBQVUsR0FBRyxLQUFL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
|