@amboss/design-system 3.27.4 → 3.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/cjs/components/AccessCardItem/AccessCardItem.js +1 -1
- package/build/cjs/components/BulkActionsToolbar/BulkActionsToolbar.d.ts +1 -1
- package/build/cjs/components/BulkActionsToolbar/BulkActionsToolbar.js +1 -1
- package/build/cjs/components/IconTile/IconTile.d.ts +3 -4
- package/build/cjs/components/IconTile/IconTile.js +1 -1
- package/build/cjs/components/Link/Link.d.ts +2 -2
- package/build/cjs/components/Link/Link.js +1 -1
- package/build/cjs/components/Patterns/ButtonGroup/ButtonGroup.d.ts +3 -3
- package/build/cjs/components/Patterns/ButtonGroup/ButtonGroup.js +1 -1
- package/build/cjs/components/Patterns/EmptyState/EmptyState.d.ts +30 -0
- package/build/cjs/components/Patterns/EmptyState/EmptyState.js +1 -0
- package/build/cjs/components/PromptInput/PromptInput.d.ts +3 -0
- package/build/cjs/components/PromptInput/PromptInput.js +1 -1
- package/build/cjs/components/PromptInput/PromptInputHeader.d.ts +15 -0
- package/build/cjs/components/PromptInput/PromptInputHeader.js +1 -0
- package/build/cjs/index.d.ts +1 -0
- package/build/cjs/index.js +1 -1
- package/build/cjs/web-tokens/assets/icons.json +1 -0
- package/build/cjs/web-tokens/assets/icons16.json +1 -0
- package/build/esm/components/AccessCardItem/AccessCardItem.js +1 -1
- package/build/esm/components/BulkActionsToolbar/BulkActionsToolbar.d.ts +1 -1
- package/build/esm/components/BulkActionsToolbar/BulkActionsToolbar.js +1 -1
- package/build/esm/components/IconTile/IconTile.d.ts +3 -4
- package/build/esm/components/IconTile/IconTile.js +1 -1
- package/build/esm/components/Link/Link.d.ts +2 -2
- package/build/esm/components/Link/Link.js +1 -1
- package/build/esm/components/Patterns/ButtonGroup/ButtonGroup.d.ts +3 -3
- package/build/esm/components/Patterns/ButtonGroup/ButtonGroup.js +1 -1
- package/build/esm/components/Patterns/EmptyState/EmptyState.d.ts +30 -0
- package/build/esm/components/Patterns/EmptyState/EmptyState.js +1 -0
- package/build/esm/components/PromptInput/PromptInput.d.ts +3 -0
- package/build/esm/components/PromptInput/PromptInput.js +1 -1
- package/build/esm/components/PromptInput/PromptInputHeader.d.ts +15 -0
- package/build/esm/components/PromptInput/PromptInputHeader.js +1 -0
- package/build/esm/index.d.ts +1 -0
- package/build/esm/index.js +1 -1
- package/build/esm/web-tokens/assets/icons.json +1 -0
- package/build/esm/web-tokens/assets/icons16.json +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"PromptInput",{enumerable:!0,get:function(){return PromptInput}});const _interop_require_default=require("@swc/helpers/_/_interop_require_default"),_react=/*#__PURE__*/require("@swc/helpers/_/_interop_require_wildcard")._(require("react")),_styled=/*#__PURE__*/_interop_require_default._(require("@emotion/styled")),_PromptTextArea=require("./PromptTextArea"),_Container=require("../Container"),_AutocompleteList=require("./AutocompleteList"),_CategoryList=require("./CategoryList"),_Text=require("../Typography/Text"),_Button=require("../Button/Button"),_Inline=require("../Inline/Inline"),_RoundButton=require("../RoundButton/RoundButton"),_PictogramButton=require("../PictogramButton/PictogramButton"),_Stack=require("../Stack/Stack"),_useOutsideClick=require("../../shared/useOutsideClick"),_Icon=require("../Icon/Icon"),_SubThemeProvider=require("../SubThemeProvider/SubThemeProvider"),_AnimatedBorder=require("../Utilities/AnimatedBorder/AnimatedBorder"),CustomContainer=(0,_styled.default)(_Container.Container,{target:"e1jgljjd0",label:"CustomContainer"})(({theme,hideBorder,hasShadow})=>({border:`1px solid ${theme.values.color.border.primary.default}`,...hasShadow&&{boxShadow:theme.values.shadow.defaultRing,transitionProperty:"box-shadow, border-color, outline-color",transitionDuration:theme.variables.animation.promptInput.focus.duration,transitionTimingFunction:theme.variables.animation.promptInput.focus.timingFunction},...hideBorder&&{borderColor:"transparent"},cursor:"text",outlineColor:"transparent","&:has(textarea:focus-visible)":{outlineWidth:1,outlineStyle:"solid",outlineOffset:-1,boxShadow:theme.values.shadow.focusRing,outlineColor:theme.values.color.border.accent.default}}),"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvUHJvbXB0SW5wdXQvUHJvbXB0SW5wdXQudHN4Iiwic291cmNlcyI6WyJzcmMvY29tcG9uZW50cy9Qcm9tcHRJbnB1dC9Qcm9tcHRJbnB1dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBSZWFjdEVsZW1lbnQsXG4gIENoYW5nZUV2ZW50SGFuZGxlcixcbiAgS2V5Ym9hcmRFdmVudEhhbmRsZXIsXG4gIFJlZk9iamVjdCxcbiAgRm9jdXNFdmVudEhhbmRsZXIsXG4gIFN5bnRoZXRpY0V2ZW50LFxuICBNb3VzZUV2ZW50LFxufSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IFJlYWN0LCB7XG4gIHVzZVJlZixcbiAgdXNlTWVtbyxcbiAgdXNlU3RhdGUsXG4gIHVzZUVmZmVjdCxcbiAgdXNlQ2FsbGJhY2ssXG4gIGZvcndhcmRSZWYsXG59IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5cbmltcG9ydCB0eXBlIHsgUHJvbXB0VGV4dEFyZWFQcm9wcyB9IGZyb20gXCIuL1Byb21wdFRleHRBcmVhXCI7XG5pbXBvcnQge1xuICBQcm9tcHRUZXh0QXJlYSxcbiAgZ2V0UGFkZGluZ0hvcml6b250YWwsXG4gIGdldFBhZGRpbmdWZXJ0aWNhbCxcbn0gZnJvbSBcIi4vUHJvbXB0VGV4dEFyZWFcIjtcbmltcG9ydCB7IENvbnRhaW5lciB9IGZyb20gXCIuLi9Db250YWluZXJcIjtcbmltcG9ydCB0eXBlIHsgQXV0b2NvbXBsZXRlTGlzdFByb3BzIH0gZnJvbSBcIi4vQXV0b2NvbXBsZXRlTGlzdFwiO1xuXG5pbXBvcnQgeyBBdXRvY29tcGxldGVMaXN0IH0gZnJvbSBcIi4vQXV0b2NvbXBsZXRlTGlzdFwiO1xuaW1wb3J0IHtcbiAgZ2V0TGlzdEl0ZW1JZCxcbiAgdHlwZSBGbGF0dGVuZWRMaXN0SXRlbSxcbiAgdHlwZSBMaXN0SXRlbVZhbHVlLFxufSBmcm9tIFwiLi9DYXRlZ29yeUxpc3RcIjtcbmltcG9ydCB7IFRleHQgfSBmcm9tIFwiLi4vVHlwb2dyYXBoeS9UZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24sIHR5cGUgQnV0dG9uUHJvcHMgfSBmcm9tIFwiLi4vQnV0dG9uL0J1dHRvblwiO1xuaW1wb3J0IHR5cGUge1xuICBQb2x5bW9ycGhpY1JlZixcbiAgUG9seW1vcnBoaWNDb21wb25lbnRQcm9wc1dpdGhSZWYsXG59IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuaW1wb3J0IHsgSW5saW5lIH0gZnJvbSBcIi4uL0lubGluZS9JbmxpbmVcIjtcbmltcG9ydCB0eXBlIHsgUm91bmRCdXR0b25Qcm9wcyB9IGZyb20gXCIuLi9Sb3VuZEJ1dHRvbi9Sb3VuZEJ1dHRvblwiO1xuaW1wb3J0IHsgUm91bmRCdXR0b24gfSBmcm9tIFwiLi4vUm91bmRCdXR0b24vUm91bmRCdXR0b25cIjtcbmltcG9ydCB0eXBlIHsgUGljdG9ncmFtQnV0dG9uUHJvcHMgfSBmcm9tIFwiLi4vUGljdG9ncmFtQnV0dG9uL1BpY3RvZ3JhbUJ1dHRvblwiO1xuaW1wb3J0IHsgUGljdG9ncmFtQnV0dG9uIH0gZnJvbSBcIi4uL1BpY3RvZ3JhbUJ1dHRvbi9QaWN0b2dyYW1CdXR0b25cIjtcbmltcG9ydCB7IFN0YWNrIH0gZnJvbSBcIi4uL1N0YWNrL1N0YWNrXCI7XG5pbXBvcnQgeyB1c2VPdXRzaWRlQ2xpY2sgfSBmcm9tIFwiLi4vLi4vc2hhcmVkL3VzZU91dHNpZGVDbGlja1wiO1xuaW1wb3J0IHR5cGUgeyBJY29uTmFtZSB9IGZyb20gXCIuLi9JY29uL0ljb25cIjtcbmltcG9ydCB7IEljb24gfSBmcm9tIFwiLi4vSWNvbi9JY29uXCI7XG5pbXBvcnQgeyBTdWJUaGVtZVByb3ZpZGVyIH0gZnJvbSBcIi4uL1N1YlRoZW1lUHJvdmlkZXIvU3ViVGhlbWVQcm92aWRlclwiO1xuaW1wb3J0IHsgQW5pbWF0ZWRCb3JkZXIgfSBmcm9tIFwiLi4vVXRpbGl0aWVzL0FuaW1hdGVkQm9yZGVyL0FuaW1hdGVkQm9yZGVyXCI7XG5cbmNvbnN0IEN1c3RvbUNvbnRhaW5lciA9IHN0eWxlZChDb250YWluZXIpPHtcbiAgaGlkZUJvcmRlcjogYm9vbGVhbjtcbiAgaGFzU2hhZG93OiBib29sZWFuO1xufT4oKHsgdGhlbWUsIGhpZGVCb3JkZXIsIGhhc1NoYWRvdyB9KSA9PiAoe1xuICBib3JkZXI6IGAxcHggc29saWQgJHt0aGVtZS52YWx1ZXMuY29sb3IuYm9yZGVyLnByaW1hcnkuZGVmYXVsdH1gLFxuICAuLi4oaGFzU2hhZG93ICYmIHtcbiAgICBib3hTaGFkb3c6IHRoZW1lLnZhbHVlcy5zaGFkb3cuZGVmYXVsdFJpbmcsXG4gICAgdHJhbnNpdGlvblByb3BlcnR5OiBcImJveC1zaGFkb3csIGJvcmRlci1jb2xvciwgb3V0bGluZS1jb2xvclwiLFxuICAgIHRyYW5zaXRpb25EdXJhdGlvbjogdGhlbWUudmFyaWFibGVzLmFuaW1hdGlvbi5wcm9tcHRJbnB1dC5mb2N1cy5kdXJhdGlvbixcbiAgICB0cmFuc2l0aW9uVGltaW5nRnVuY3Rpb246XG4gICAgICB0aGVtZS52YXJpYWJsZXMuYW5pbWF0aW9uLnByb21wdElucHV0LmZvY3VzLnRpbWluZ0Z1bmN0aW9uLFxuICB9KSxcbiAgLi4uKGhpZGVCb3JkZXIgJiYge1xuICAgIGJvcmRlckNvbG9yOiBcInRyYW5zcGFyZW50XCIsXG4gIH0pLFxuICBjdXJzb3I6IFwidGV4dFwiLFxuICBvdXRsaW5lQ29sb3I6IFwidHJhbnNwYXJlbnRcIixcbiAgW2AmOmhhcyh0ZXh0YXJlYTpmb2N1cy12aXNpYmxlKWBdOiB7XG4gICAgb3V0bGluZVdpZHRoOiAxLFxuICAgIG91dGxpbmVTdHlsZTogXCJzb2xpZFwiLFxuICAgIG91dGxpbmVPZmZzZXQ6IC0xLFxuICAgIGJveFNoYWRvdzogdGhlbWUudmFsdWVzLnNoYWRvdy5mb2N1c1JpbmcsXG4gICAgb3V0bGluZUNvbG9yOiB0aGVtZS52YWx1ZXMuY29sb3IuYm9yZGVyLmFjY2VudC5kZWZhdWx0LFxuICB9LFxufSkpO1xuXG5jb25zdCBTdHlsZWRUZXh0QXJlYUNvbnRhaW5lciA9IHN0eWxlZC5kaXYoe1xuICBib3JkZXJSYWRpdXM6IFwiaW5oZXJpdFwiLFxuICBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiLFxuICB3aWR0aDogXCIxMDAlXCIsXG59KTtcblxuY29uc3QgU3R5bGVkTGVmdEljb25Db250YWluZXIgPSBzdHlsZWQuZGl2KCh7IHRoZW1lIH0pID0+ICh7XG4gIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gIHRvcDogZ2V0UGFkZGluZ1ZlcnRpY2FsKHRoZW1lKSxcbiAgbGVmdDogZ2V0UGFkZGluZ0hvcml6b250YWwodGhlbWUpLFxufSkpO1xuXG50eXBlIFN0eWxlZEVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnRDb250YWluZXJQcm9wcyA9IFBpY2s8XG4gIFByb21wdElucHV0UHJvcHMsXG4gIFwiaXNOYXZCYXJWYXJpYW50XCJcbj47XG5cbmNvbnN0IFN0eWxlZEVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnRDb250YWluZXIgPVxuICBzdHlsZWQuZGl2PFN0eWxlZEVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnRDb250YWluZXJQcm9wcz4oXG4gICAgKHsgdGhlbWUsIGlzTmF2QmFyVmFyaWFudCB9KSA9PiAoe1xuICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgIHRvcDogaXNOYXZCYXJWYXJpYW50XG4gICAgICAgID8gdGhlbWUudmFyaWFibGVzLnNpemUuc3BhY2luZy54eHNcbiAgICAgICAgOiBnZXRQYWRkaW5nVmVydGljYWwodGhlbWUpLFxuICAgICAgcmlnaHQ6IGdldFBhZGRpbmdIb3Jpem9udGFsKHRoZW1lKSxcbiAgICAgIHVzZXJTZWxlY3Q6IFwibm9uZVwiLFxuICAgICAgcG9pbnRlckV2ZW50czogXCJub25lXCIsXG4gICAgfSlcbiAgKTtcblxudHlwZSBTdHlsZWRDbGVhckJ1dHRvblByb3BzID0gUGljdG9ncmFtQnV0dG9uUHJvcHMgJlxuICBQaWNrPFByb21wdElucHV0UHJvcHMsIFwiaXNOYXZCYXJWYXJpYW50XCI+O1xuXG5jb25zdCBTdHlsZWRDbGVhckJ1dHRvbiA9IHN0eWxlZChQaWN0b2dyYW1CdXR0b24pPFN0eWxlZENsZWFyQnV0dG9uUHJvcHM+KFxuICAoeyB0aGVtZSwgaXNOYXZCYXJWYXJpYW50IH0pID0+ICh7XG4gICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICByaWdodDogdGhlbWUudmFyaWFibGVzLnNpemUuc3BhY2luZy5zLFxuICAgIHRvcDogaXNOYXZCYXJWYXJpYW50ID8gMCA6IHRoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcucyxcbiAgfSlcbik7XG5cbmNvbnN0IFN0eWxlZFNsb3RzQ29udGFpbmVyID0gc3R5bGVkLmRpdih7XG4gIGRpc3BsYXk6IFwiZmxleFwiLFxuICBmbGV4V3JhcDogXCJ3cmFwXCIsXG4gIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG59KTtcblxuLy8gSXQgbmVlZHMgbWFyZ2luIGR1ZSB0byBlbXB0eSBjbGlja2FibGUgc3BhY2UgdGhhdCBmb2N1c2VzIHRoZSB0ZXh0YXJlYVxuLy8gU2xvdHMgc2hvdWxkIG5vdCBiZSBpbiB0aGUgZGl2LCBiZWNhdXNlIGFyZWEgYmV0d2VlbiBzaG91bGQgYmUgY2xpY2thYmxlIGFsc29cbnR5cGUgU2xvdFByb3BzID0ge1xuICBzaWRlPzogXCJyaWdodFwiO1xufTtcbmNvbnN0IFN0eWxlZFNsb3QgPSBzdHlsZWQuZGl2PFNsb3RQcm9wcz4oKHsgdGhlbWUsIHNpZGUgfSkgPT4gKHtcbiAgbWFyZ2luOiBgMCAke3RoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcuc30gJHt0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnN9YCxcblxuICAuLi4oc2lkZSA9PT0gXCJyaWdodFwiICYmIHtcbiAgICBtYXJnaW5MZWZ0OiBcImF1dG9cIixcbiAgfSksXG59KSk7XG5cbnR5cGUgU2VuZEJ1dHRvblByb3BzID0gT21pdDxSb3VuZEJ1dHRvblByb3BzLCBcImljb25cIiB8IFwidmFyaWFudFwiPiAmIHtcbiAgaWNvbj86IFwiYXJyb3ctdXBcIiB8IFwic2VhcmNoXCIgfCBcImFycm93LXJpZ2h0XCIgfCBcInZvaWNlXCI7XG59O1xuXG50eXBlIEJvdHRvbVRvb2xiYXJDb25maWcgPSB7XG4gIC8qKiBUb29sYmFyIGVsZW1lbnRzIGJlbG93IHRleHQgYXJlYSAqL1xuICBsZWZ0Q29udGVudD86IFJlYWN0RWxlbWVudDtcbiAgcmlnaHRDb250ZW50PzogUmVhY3RFbGVtZW50O1xufTtcblxuZXhwb3J0IHR5cGUgUHJvbXB0SW5wdXRQcm9wcyA9IHtcbiAgXCJkYXRhLWUyZS10ZXN0LWlkXCI/OiBzdHJpbmc7XG4gIHZhcmlhbnQ/OiBcImFpXCI7XG4gIHNraXBBSUFuaW1hdGlvbj86IGJvb2xlYW47XG4gIGJvdHRvbVRvb2xiYXI/OiBCb3R0b21Ub29sYmFyQ29uZmlnO1xuICBzZW5kQnV0dG9uUHJvcHM/OiBTZW5kQnV0dG9uUHJvcHM7XG4gIC8qKiBDdXJyZW50bHkgc2hvd3Mgc2VuZCBidXR0b24gcHJvY2Vzc2luZyBzdGF0ZSAgKi9cbiAgaXNQcm9jZXNzaW5nPzogYm9vbGVhbjtcbiAgY2xlYXJCdXR0b25BcmlhTGFiZWw/OiBzdHJpbmc7XG4gIGhpbnQ/OiBSZWFjdEVsZW1lbnQ7XG4gIC8qKiBTaG93cyBpbiB0aGUgY2xlYXIgYnV0dG9uIHNwYWNlIGluIGVtcHR5IHN0YXRlICovXG4gIGVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnQ/OiBSZWFjdEVsZW1lbnQ7XG4gIG9uQ2xlYXI6ICgpID0+IHZvaWQ7XG4gIC8qKiBDYWxsZWQgd2hlbiB1c2VyIHNlbGVjdHMgKG9yIHJlamVjdHMpIGEgbGlzdCBpdGVtIGZyb20gYXV0b2NvbXBsZXRlIGxpc3QgKi9cbiAgb25Db21wbGV0ZT86ICh7XG4gICAgdmFsdWUsXG4gICAgY2F0ZWdvcnksXG4gICAgZXZ0LFxuICAgIGluZGV4LFxuICB9OiB7XG4gICAgdmFsdWU6IExpc3RJdGVtVmFsdWU7XG4gICAgY2F0ZWdvcnk/OiBzdHJpbmc7XG4gICAgZXZ0PzogU3ludGhldGljRXZlbnQ7XG4gICAgaW5kZXg/OiBudW1iZXI7XG4gIH0pID0+IHZvaWQ7XG4gIC8qKiBDYWxsZWQgb24gRW50ZXIga2V5IHRvIHN1Ym1pdCB0aGUgZm9ybSAgKi9cbiAgb25FbnRlcktleTogKCkgPT4gdm9pZDtcbiAgLyoqIFJlbmRlcnMgYW4gaWNvbiB0byB0aGUgbGVmdCBpbnNpZGUgdGhlIHRleHRhcmVhICovXG4gIGxlZnRJY29uPzogSWNvbk5hbWU7XG59ICYgT21pdDxcbiAgUHJvbXB0VGV4dEFyZWFQcm9wcyxcbiAgXCJpc0NvbGxhcHNlZFwiIHwgXCJpc0F1dG9jb21wbGV0ZUxpc3RPcGVuXCIgfCBcInNlbGVjdGVkTGlzdEl0ZW1cIiB8IFwiaGFzTGVmdEljb25cIlxuPiAmXG4gIFBpY2s8XG4gICAgQXV0b2NvbXBsZXRlTGlzdFByb3BzLFxuICAgIFwiYXV0b2NvbXBsZXRlTGlzdEl0ZW1zXCIgfCBcImF1dG9jb21wbGV0ZUxpc3RGb290ZXJcIiB8IFwicG9ydGFsQ29udGFpbmVyXCJcbiAgPjtcblxuY29uc3QgZGVmYXVsdFNlbmRCdXR0b25Qcm9wczogU2VuZEJ1dHRvblByb3BzID0ge1xuICB0eXBlOiBcInN1Ym1pdFwiIGFzIGNvbnN0LFxuICBpY29uOiBcImFycm93LXVwXCIgYXMgY29uc3QsXG59O1xuXG5jb25zdCBQcm9tcHRJbnB1dENvbXBvbmVudCA9IGZvcndhcmRSZWYoXG4gIChcbiAgICB7XG4gICAgICBcImRhdGEtZTJlLXRlc3QtaWRcIjogZGF0YUUyZVRlc3RJZCxcbiAgICAgIG5hbWUsXG4gICAgICBhdXRvY29tcGxldGVMaXN0SXRlbXMgPSBbXSxcbiAgICAgIHZhbHVlLFxuICAgICAgYm90dG9tVG9vbGJhcixcbiAgICAgIGlzUHJvY2Vzc2luZyxcbiAgICAgIHNlbmRCdXR0b25Qcm9wcyxcbiAgICAgIGF1dG9jb21wbGV0ZUxpc3RGb290ZXIsXG4gICAgICBjbGVhckJ1dHRvbkFyaWFMYWJlbCA9IFwiQ2xlYXIgaW5wdXRcIixcbiAgICAgIGhpbnQsXG4gICAgICBlbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50LFxuICAgICAgaXNOYXZCYXJWYXJpYW50LFxuICAgICAgcG9ydGFsQ29udGFpbmVyLFxuICAgICAgbGVmdEljb24sXG4gICAgICBvbkNoYW5nZSxcbiAgICAgIG9uQ29tcGxldGUsXG4gICAgICBvbkNsZWFyLFxuICAgICAgb25FbnRlcktleSxcbiAgICAgIG9uRm9jdXMsXG4gICAgICBvbkJsdXIsXG4gICAgICBvbktleURvd24sXG4gICAgICB2YXJpYW50LFxuICAgICAgc2tpcEFJQW5pbWF0aW9uID0gZmFsc2UsXG4gICAgICAuLi5yZXN0XG4gICAgfTogUHJvbXB0SW5wdXRQcm9wcyxcbiAgICByZWY6IFJlZk9iamVjdDxIVE1MVGV4dEFyZWFFbGVtZW50PlxuICApOiBSZWFjdEVsZW1lbnQgPT4ge1xuICAgIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gICAgY29uc3QgdGV4dEFyZWFDb250YWluZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICAgIGNvbnN0IGludGVybmFsUmVmID0gdXNlUmVmPEhUTUxUZXh0QXJlYUVsZW1lbnQ+KG51bGwpO1xuICAgIGNvbnN0IFtzZWxlY3RlZEluZGV4LCBzZXRTZWxlY3RlZEluZGV4XSA9IHVzZVN0YXRlKC0xKTtcbiAgICBjb25zdCBbaXNDb2xsYXBzZWQsIHNldElzQ29sbGFwc2VkXSA9IHVzZVN0YXRlKGlzTmF2QmFyVmFyaWFudCk7XG4gICAgY29uc3QgdXNlclR5cGVkUXVlcnkgPSB1c2VSZWYoXCJcIik7XG4gICAgY29uc3QgW2lzQXV0b2NvbXBsZXRlTGlzdE9wZW4sIHNldElzQXV0b2NvbXBsZXRlTGlzdE9wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IHRleHRBcmVhUmVmID0gcmVmIHx8IGludGVybmFsUmVmO1xuXG4gICAgY29uc3QgbWVyZ2VkU2VuZEJ1dHRvblByb3BzID0ge1xuICAgICAgLi4uZGVmYXVsdFNlbmRCdXR0b25Qcm9wcyxcbiAgICAgIC4uLihzZW5kQnV0dG9uUHJvcHMgPz8ge30pLFxuICAgIH07XG5cbiAgICB1c2VPdXRzaWRlQ2xpY2soXG4gICAgICBjb250YWluZXJSZWYsXG4gICAgICAoZXZ0KSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhY29udGFpbmVyUmVmLmN1cnJlbnQuY29udGFpbnMoZXZ0LnRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgICAgICFwb3J0YWxDb250YWluZXI/LmNvbnRhaW5zKGV2dC50YXJnZXQgYXMgTm9kZSkgJiZcbiAgICAgICAgICBldnQudGFyZ2V0ICE9PSBudWxsXG4gICAgICAgICkge1xuICAgICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgIWlzQ29sbGFwc2VkICYmIGlzTmF2QmFyVmFyaWFudFxuICAgICk7XG5cbiAgICBjb25zdCBjbG9zZUF1dG9jb21wbGV0ZUxpc3QgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBzZXRJc0F1dG9jb21wbGV0ZUxpc3RPcGVuKGZhbHNlKTtcbiAgICAgIHNldFNlbGVjdGVkSW5kZXgoLTEpO1xuICAgIH0sIFtdKTtcblxuICAgIGNvbnN0IG9wZW5BdXRvY29tcGxldGVMaXN0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgaWYgKGF1dG9jb21wbGV0ZUxpc3RJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgc2V0SXNBdXRvY29tcGxldGVMaXN0T3Blbih0cnVlKTtcbiAgICAgICAgc2V0U2VsZWN0ZWRJbmRleCgtMSk7XG4gICAgICB9XG4gICAgfSwgW2F1dG9jb21wbGV0ZUxpc3RJdGVtc10pO1xuXG4gICAgY29uc3QgYWNjZXB0VGV4dFNlbGVjdGlvbiA9ICgpID0+IHtcbiAgICAgIHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQgPSB2YWx1ZTtcbiAgICAgIGlmIChcbiAgICAgICAgdGV4dEFyZWFSZWYuY3VycmVudC5zZWxlY3Rpb25TdGFydCAhPT0gdGV4dEFyZWFSZWYuY3VycmVudC5zZWxlY3Rpb25FbmRcbiAgICAgICkge1xuICAgICAgICB0ZXh0QXJlYVJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKHZhbHVlLmxlbmd0aCwgdmFsdWUubGVuZ3RoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmIChhdXRvY29tcGxldGVMaXN0SXRlbXMubGVuZ3RoICYmICFpc0NvbGxhcHNlZCkge1xuICAgICAgICBvcGVuQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2xvc2VBdXRvY29tcGxldGVMaXN0KCk7XG4gICAgICB9XG4gICAgfSwgW1xuICAgICAgYXV0b2NvbXBsZXRlTGlzdEl0ZW1zLFxuICAgICAgb3BlbkF1dG9jb21wbGV0ZUxpc3QsXG4gICAgICBjbG9zZUF1dG9jb21wbGV0ZUxpc3QsXG4gICAgICBpc0NvbGxhcHNlZCxcbiAgICBdKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAodmFsdWUgJiYgdmFsdWUgIT09IHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQgJiYgaXNBdXRvY29tcGxldGVMaXN0T3Blbikge1xuICAgICAgICB0ZXh0QXJlYVJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKFxuICAgICAgICAgIHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQubGVuZ3RoLFxuICAgICAgICAgIHZhbHVlLmxlbmd0aFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0sIFt2YWx1ZSwgdGV4dEFyZWFSZWYsIGlzQXV0b2NvbXBsZXRlTGlzdE9wZW5dKTtcblxuICAgIC8vIERldGVybWluZSB3aGVuIGZvY3VzIGxlYXZlcyB0aGUgY29udGFpbmVyIHRvIGNvbGxhcHNlIGl0XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGxldCBoYW5kbGVyOiAoZXZ0OiBGb2N1c0V2ZW50KSA9PiB2b2lkO1xuICAgICAgY29uc3QgY29udGFpbmVyID0gY29udGFpbmVyUmVmLmN1cnJlbnQ7XG5cbiAgICAgIGlmIChpc05hdkJhclZhcmlhbnQgJiYgY29udGFpbmVyKSB7XG4gICAgICAgIGhhbmRsZXIgPSAoZXZ0OiBGb2N1c0V2ZW50KSA9PiB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgIWNvbnRhaW5lclJlZi5jdXJyZW50LmNvbnRhaW5zKGV2dC5yZWxhdGVkVGFyZ2V0IGFzIE5vZGUpICYmXG4gICAgICAgICAgICAhcG9ydGFsQ29udGFpbmVyPy5jb250YWlucyhldnQucmVsYXRlZFRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgICAgICAgZXZ0LnJlbGF0ZWRUYXJnZXQgIT09IG51bGxcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c291dFwiLCBoYW5kbGVyKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiZm9jdXNvdXRcIiwgaGFuZGxlcik7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSwgW2lzTmF2QmFyVmFyaWFudCwgY29udGFpbmVyUmVmLCBwb3J0YWxDb250YWluZXJdKTtcblxuICAgIGNvbnN0IGZsYXR0ZW5lZExpc3RJdGVtcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgY29uc3QgbGlzdDogRmxhdHRlbmVkTGlzdEl0ZW1bXSA9IFtdO1xuXG4gICAgICBhdXRvY29tcGxldGVMaXN0SXRlbXMuZm9yRWFjaCgobGlzdEl0ZW0pID0+IHtcbiAgICAgICAgbGlzdEl0ZW0uaXRlbXMuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICBsaXN0LnB1c2goe1xuICAgICAgICAgICAgY2F0ZWdvcnk6IGxpc3RJdGVtLmNhdGVnb3J5LFxuICAgICAgICAgICAgaW5kZXhJbkNhdGVnb3J5OiBpbmRleCxcbiAgICAgICAgICAgIHZhbHVlOiBpdGVtLnZhbHVlLFxuICAgICAgICAgICAgaWQ6IGdldExpc3RJdGVtSWQobmFtZSwgbGlzdEl0ZW0uY2F0ZWdvcnksIGluZGV4KSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBsaXN0O1xuICAgIH0sIFthdXRvY29tcGxldGVMaXN0SXRlbXMsIG5hbWVdKTtcblxuICAgIGNvbnN0IGhhbmRsZVNlbGVjdGVkSW5kZXhDaGFuZ2UgPSAoaW5kZXg6IG51bWJlciwgZXZ0PzogU3ludGhldGljRXZlbnQpID0+IHtcbiAgICAgIHNldFNlbGVjdGVkSW5kZXgoaW5kZXgpO1xuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBjb25zdCB7IGNhdGVnb3J5LCB2YWx1ZTogaXRlbVZhbHVlIH0gPSBmbGF0dGVuZWRMaXN0SXRlbXNbaW5kZXhdO1xuXG4gICAgICAgIG9uQ29tcGxldGUoeyB2YWx1ZTogaXRlbVZhbHVlLCBjYXRlZ29yeSwgZXZ0LCBpbmRleCB9KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlTGlzdEl0ZW1DbGljayA9IChcbiAgICAgIGNhdGVnb3J5OiBzdHJpbmcsXG4gICAgICBpbmRleEluQ2F0ZWdvcnk6IG51bWJlcixcbiAgICAgIGV2dD86IE1vdXNlRXZlbnRcbiAgICApID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ID0gZmxhdHRlbmVkTGlzdEl0ZW1zLmZpbmRJbmRleChcbiAgICAgICAgKGxpc3RJdGVtKSA9PlxuICAgICAgICAgIGxpc3RJdGVtLmNhdGVnb3J5ID09PSBjYXRlZ29yeSAmJlxuICAgICAgICAgIGxpc3RJdGVtLmluZGV4SW5DYXRlZ29yeSA9PT0gaW5kZXhJbkNhdGVnb3J5XG4gICAgICApO1xuXG4gICAgICBoYW5kbGVTZWxlY3RlZEluZGV4Q2hhbmdlKGluZGV4LCBldnQpO1xuICAgICAgY2xvc2VBdXRvY29tcGxldGVMaXN0KCk7XG4gICAgICBpZiAoaXNOYXZCYXJWYXJpYW50KSB7XG4gICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVLZXlEb3duOiBLZXlib2FyZEV2ZW50SGFuZGxlcjxIVE1MVGV4dEFyZWFFbGVtZW50PiA9IChldnQpID0+IHtcbiAgICAgIGlmIChpc0F1dG9jb21wbGV0ZUxpc3RPcGVuKSB7XG4gICAgICAgIHN3aXRjaCAoZXZ0LmtleSkge1xuICAgICAgICAgIGNhc2UgXCJFc2NhcGVcIjpcbiAgICAgICAgICAgIGNsb3NlQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgICAgICAgb25Db21wbGV0ZSh7IHZhbHVlOiB1c2VyVHlwZWRRdWVyeS5jdXJyZW50LCBldnQgfSk7XG4gICAgICAgICAgICBpZiAoaXNOYXZCYXJWYXJpYW50KSB7XG4gICAgICAgICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBcIkVudGVyXCI6XG4gICAgICAgICAgICBpZiAoIWV2dC5zaGlmdEtleSkge1xuICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgY2xvc2VBdXRvY29tcGxldGVMaXN0KCk7XG4gICAgICAgICAgICAgIGFjY2VwdFRleHRTZWxlY3Rpb24oKTtcblxuICAgICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBvbkVudGVyS2V5Py4oKTtcbiAgICAgICAgICAgICAgICBpZiAoaXNOYXZCYXJWYXJpYW50KSB7XG4gICAgICAgICAgICAgICAgICBzZXRJc0NvbGxhcHNlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgXCIgXCI6XG4gICAgICAgICAgICBhY2NlcHRUZXh0U2VsZWN0aW9uKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFwiQXJyb3dVcFwiOlxuICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgIGhhbmRsZVNlbGVjdGVkSW5kZXhDaGFuZ2Uoc2VsZWN0ZWRJbmRleCAtIDEsIGV2dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFwiQXJyb3dEb3duXCI6XG4gICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZEluZGV4IDwgZmxhdHRlbmVkTGlzdEl0ZW1zLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0ZWRJbmRleENoYW5nZShzZWxlY3RlZEluZGV4ICsgMSwgZXZ0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN3aXRjaCAoZXZ0LmtleSkge1xuICAgICAgICAgIGNhc2UgXCJFc2NhcGVcIjpcbiAgICAgICAgICAgIG9uQ2xlYXI/LigpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBcIkVudGVyXCI6XG4gICAgICAgICAgICBpZiAoIWV2dC5zaGlmdEtleSkge1xuICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgb25FbnRlcktleT8uKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBvbktleURvd24/LihldnQpO1xuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVDaGFuZ2U6IENoYW5nZUV2ZW50SGFuZGxlcjxIVE1MVGV4dEFyZWFFbGVtZW50PiA9IChldnQpID0+IHtcbiAgICAgIHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQgPSBldnQudGFyZ2V0LnZhbHVlO1xuICAgICAgb25DaGFuZ2UoZXZ0KTtcbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlRm9jdXM6IEZvY3VzRXZlbnRIYW5kbGVyPEhUTUxUZXh0QXJlYUVsZW1lbnQ+ID0gKGV2dCkgPT4ge1xuICAgICAgc2V0SXNDb2xsYXBzZWQoZmFsc2UpO1xuICAgICAgb25Gb2N1cz8uKGV2dCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZUJsdXI6IEZvY3VzRXZlbnRIYW5kbGVyPEhUTUxUZXh0QXJlYUVsZW1lbnQ+ID0gKGV2dCkgPT4ge1xuICAgICAgaWYgKHZhbHVlICE9PSB1c2VyVHlwZWRRdWVyeS5jdXJyZW50KSB7XG4gICAgICAgIG9uQ29tcGxldGU/Lih7IHZhbHVlOiB1c2VyVHlwZWRRdWVyeS5jdXJyZW50LCBldnQgfSk7XG4gICAgICB9XG4gICAgICBvbkJsdXI/LihldnQpO1xuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVTZW5kQnV0dG9uQ2xpY2sgPSAoZXZ0OiBNb3VzZUV2ZW50PEhUTUxCdXR0b25FbGVtZW50PikgPT4ge1xuICAgICAgbWVyZ2VkU2VuZEJ1dHRvblByb3BzLm9uQ2xpY2s/LihldnQpO1xuICAgICAgY2xvc2VBdXRvY29tcGxldGVMaXN0KCk7XG4gICAgICBpZiAoaXNOYXZCYXJWYXJpYW50KSB7XG4gICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVQcmV2ZW50Rm9jdXMgPSAoZXZ0OiBSZWFjdC5Qb2ludGVyRXZlbnQpID0+IHtcbiAgICAgIC8vIFByZXZlbnQgdGhlIHRleHRhcmVhIGZyb20gYmVpbmcgdW5mb2N1c2VkXG4gICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlT25Db250YWluZXJQb2ludGVyRG93biA9IChldnQ6IFJlYWN0LlBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgLy8gRm9jdXMgdGV4dGFyZWEgd2hlbiBjbGlja2luZyBvbiB0aGUgY29udGFpbmVyIG9ubHlcbiAgICAgIGlmIChldnQudGFyZ2V0ID09PSBldnQuY3VycmVudFRhcmdldCkge1xuICAgICAgICB0ZXh0QXJlYVJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3Qgc2VsZWN0ZWRMaXN0SXRlbSA9XG4gICAgICBzZWxlY3RlZEluZGV4ICE9PSAtMSA/IGZsYXR0ZW5lZExpc3RJdGVtc1tzZWxlY3RlZEluZGV4XSA6IG51bGw7XG5cbiAgICBjb25zdCBlbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50RWxtID0gZW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudCA/IChcbiAgICAgIDxTdHlsZWRFbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50Q29udGFpbmVyXG4gICAgICAgIGlzTmF2QmFyVmFyaWFudD17aXNOYXZCYXJWYXJpYW50fVxuICAgICAgPlxuICAgICAgICA8VGV4dCBjb2xvcj1cInRlcnRpYXJ5XCI+e2VtcHR5U3RhdGVUb3BSaWdodENvbnRlbnR9PC9UZXh0PlxuICAgICAgPC9TdHlsZWRFbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50Q29udGFpbmVyPlxuICAgICkgOiBudWxsO1xuXG4gICAgY29uc3QgY2xlYXJCdXR0b25FbG0gPSB2YWx1ZSA/IChcbiAgICAgIDxTdHlsZWRDbGVhckJ1dHRvblxuICAgICAgICBzaXplPVwic1wiXG4gICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgaWNvbj1cIngtY2lyY2xlLWZpbGxlZFwiXG4gICAgICAgIGFyaWEtbGFiZWw9e2NsZWFyQnV0dG9uQXJpYUxhYmVsfVxuICAgICAgICBpc05hdkJhclZhcmlhbnQ9e2lzTmF2QmFyVmFyaWFudH1cbiAgICAgICAgb25Qb2ludGVyRG93bj17aGFuZGxlUHJldmVudEZvY3VzfVxuICAgICAgICBvbkNsaWNrPXtvbkNsZWFyfVxuICAgICAgLz5cbiAgICApIDogKFxuICAgICAgZW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudEVsbVxuICAgICk7XG5cbiAgICBjb25zdCBoaW50RWxtID0gISFoaW50ICYmIChcbiAgICAgIDxJbmxpbmUgYWxpZ25JdGVtcz1cImNlbnRlclwiPlxuICAgICAgICA8VGV4dCBzaXplPVwic1wiIGNvbG9yPVwidGVydGlhcnlcIj5cbiAgICAgICAgICB7aGludH1cbiAgICAgICAgPC9UZXh0PlxuICAgICAgPC9JbmxpbmU+XG4gICAgKTtcblxuICAgIGNvbnN0IGJvdHRvbVRvb2xiYXJFbG0gPSAoYm90dG9tVG9vbGJhcj8ucmlnaHRDb250ZW50IHx8XG4gICAgICBib3R0b21Ub29sYmFyPy5sZWZ0Q29udGVudCB8fFxuICAgICAgISFzZW5kQnV0dG9uUHJvcHMpICYmXG4gICAgICAhaXNDb2xsYXBzZWQgJiYgKFxuICAgICAgICA8PlxuICAgICAgICAgIHtib3R0b21Ub29sYmFyPy5sZWZ0Q29udGVudCAmJiAoXG4gICAgICAgICAgICA8U3R5bGVkU2xvdD57Ym90dG9tVG9vbGJhci5sZWZ0Q29udGVudH08L1N0eWxlZFNsb3Q+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8U3R5bGVkU2xvdCBkYXRhLWUyZS10ZXN0LWlkPVwiYm90dG9tVG9vbGJhclwiIHNpZGU9XCJyaWdodFwiPlxuICAgICAgICAgICAgPElubGluZSBzcGFjZT1cInhzXCIgdkFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAgICAgICAge2JvdHRvbVRvb2xiYXI/LnJpZ2h0Q29udGVudH1cbiAgICAgICAgICAgICAge3NlbmRCdXR0b25Qcm9wcyAmJiAoXG4gICAgICAgICAgICAgICAgPFN1YlRoZW1lUHJvdmlkZXIgbmFtZT17dmFyaWFudH0+XG4gICAgICAgICAgICAgICAgICA8Um91bmRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgYXJpYUF0dHJpYnV0ZXM9e3tcbiAgICAgICAgICAgICAgICAgICAgICBcImFyaWEtbGFiZWxcIjogaXNQcm9jZXNzaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFwiUHJvY2Vzc2luZyBxdWVyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFwiU3VibWl0IHF1ZXJ5XCIsXG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIHsuLi5tZXJnZWRTZW5kQnV0dG9uUHJvcHN9XG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXttZXJnZWRTZW5kQnV0dG9uUHJvcHMuZGlzYWJsZWQgPz8gIXZhbHVlfVxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVTZW5kQnV0dG9uQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlckRvd249e2hhbmRsZVByZXZlbnRGb2N1c31cbiAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICBpY29uPXtcbiAgICAgICAgICAgICAgICAgICAgICBpc1Byb2Nlc3NpbmcgPyBcInN0b3AtZmlsbGVkXCIgOiBtZXJnZWRTZW5kQnV0dG9uUHJvcHMuaWNvblxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvU3ViVGhlbWVQcm92aWRlcj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvSW5saW5lPlxuICAgICAgICAgIDwvU3R5bGVkU2xvdD5cbiAgICAgICAgPC8+XG4gICAgICApO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBkYXRhLWUyZS10ZXN0LWlkPXtkYXRhRTJlVGVzdElkfVxuICAgICAgICAgIGRhdGEtZHMtaWQ9XCJQcm9tcHRJbnB1dFwiXG4gICAgICAgICAgcmVmPXtjb250YWluZXJSZWZ9XG4gICAgICAgICAgLy8gVHJhbnNsYXRpb24gZGlzYWJsZWQgZm9yIGNvbnNpc3RlbmN5IHdpdGggdGhlIGF1dG9jb21wbGV0ZSBsaXN0XG4gICAgICAgICAgdHJhbnNsYXRlPVwibm9cIlxuICAgICAgICA+XG4gICAgICAgICAgPFN0YWNrIHNwYWNlPVwic1wiPlxuICAgICAgICAgICAgPEFuaW1hdGVkQm9yZGVyXG4gICAgICAgICAgICAgIHNraXBBbmltYXRpb249e3NraXBBSUFuaW1hdGlvbiB8fCB2YXJpYW50ICE9PSBcImFpXCJ9XG4gICAgICAgICAgICAgIHJhZGl1cz17MTJ9XG4gICAgICAgICAgICAgIGl0ZXJhdGlvbnM9ezF9XG4gICAgICAgICAgICAgIHRoaWNrbmVzcz17Mn1cbiAgICAgICAgICAgICAgaGlkZUNoaWxkQm9yZGVyXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxTdWJUaGVtZVByb3ZpZGVyIG5hbWU9e3ZhcmlhbnR9PlxuICAgICAgICAgICAgICAgIDxDdXN0b21Db250YWluZXJcbiAgICAgICAgICAgICAgICAgIGVsZXZhdGlvbj17MH1cbiAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1cz17aXNDb2xsYXBzZWQgPyBcInhzXCIgOiBcIm1cIn1cbiAgICAgICAgICAgICAgICAgIGhpZGVCb3JkZXI9e2lzQ29sbGFwc2VkfVxuICAgICAgICAgICAgICAgICAgaGFzU2hhZG93PXshaXNOYXZCYXJWYXJpYW50fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTdWJUaGVtZVByb3ZpZGVyIG5hbWU9XCJ1bnNldFwiPlxuICAgICAgICAgICAgICAgICAgICA8U3R5bGVkU2xvdHNDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICByZWY9e3RleHRBcmVhQ29udGFpbmVyUmVmfVxuICAgICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlckRvd249e2hhbmRsZU9uQ29udGFpbmVyUG9pbnRlckRvd259XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U3R5bGVkVGV4dEFyZWFDb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7bGVmdEljb24gJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8U3R5bGVkTGVmdEljb25Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9e2xlZnRJY29ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJ0ZXJ0aWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3R5bGVkTGVmdEljb25Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPFByb21wdFRleHRBcmVhXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhRTJlVGVzdElkPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhRTJlVGVzdElkID8gYCR7ZGF0YUUyZVRlc3RJZH0taW5wdXRgIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e3RleHRBcmVhUmVmfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpc05hdkJhclZhcmlhbnQ9e2lzTmF2QmFyVmFyaWFudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRMaXN0SXRlbT17c2VsZWN0ZWRMaXN0SXRlbX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNBdXRvY29tcGxldGVMaXN0T3Blbj17aXNBdXRvY29tcGxldGVMaXN0T3Blbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNDb2xsYXBzZWQ9e2lzQ29sbGFwc2VkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNMZWZ0SWNvbj17ISFsZWZ0SWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25Gb2N1cz17aGFuZGxlRm9jdXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3dufVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtjbGVhckJ1dHRvbkVsbX1cbiAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZFRleHRBcmVhQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgIHtib3R0b21Ub29sYmFyRWxtfVxuICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZFNsb3RzQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPC9TdWJUaGVtZVByb3ZpZGVyPlxuICAgICAgICAgICAgICAgIDwvQ3VzdG9tQ29udGFpbmVyPlxuICAgICAgICAgICAgICA8L1N1YlRoZW1lUHJvdmlkZXI+XG4gICAgICAgICAgICA8L0FuaW1hdGVkQm9yZGVyPlxuICAgICAgICAgICAge2hpbnRFbG19XG4gICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPEF1dG9jb21wbGV0ZUxpc3RcbiAgICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICBhdXRvY29tcGxldGVMaXN0SXRlbXM9e2F1dG9jb21wbGV0ZUxpc3RJdGVtc31cbiAgICAgICAgICB0cmlnZ2VyUmVmPXt0ZXh0QXJlYUNvbnRhaW5lclJlZn1cbiAgICAgICAgICBzZWxlY3RlZExpc3RJdGVtPXtzZWxlY3RlZExpc3RJdGVtfVxuICAgICAgICAgIGlzT3Blbj17aXNBdXRvY29tcGxldGVMaXN0T3Blbn1cbiAgICAgICAgICBhdXRvY29tcGxldGVMaXN0Rm9vdGVyPXthdXRvY29tcGxldGVMaXN0Rm9vdGVyfVxuICAgICAgICAgIHBvcnRhbENvbnRhaW5lcj17cG9ydGFsQ29udGFpbmVyfVxuICAgICAgICAgIG9uTGlzdEl0ZW1DbGljaz17aGFuZGxlTGlzdEl0ZW1DbGlja31cbiAgICAgICAgLz5cbiAgICAgIDwvPlxuICAgICk7XG4gIH1cbik7XG5cbmNvbnN0IEN1c3RvbUJ1dHRvbiA9IHN0eWxlZChCdXR0b24pKCh7IHRoZW1lIH0pID0+ICh7XG4gIGJvcmRlclJhZGl1czogdGhlbWUudmFyaWFibGVzLnNpemUuYm9yZGVyUmFkaXVzLmwsXG59KSk7XG5cbi8vIG5lZWQgdG8gc2ltcGxpZnkgdGhpcyB0eXBlIGZvciByZXVzZVxuY29uc3QgU3VnZ2VzdGlvbkJ1dHRvbiA9IGZvcndhcmRSZWYoXG4gIDxDIGV4dGVuZHMgUmVhY3QuRWxlbWVudFR5cGUgPSBcImJ1dHRvblwiPihcbiAgICBwcm9wczogUG9seW1vcnBoaWNDb21wb25lbnRQcm9wc1dpdGhSZWY8XG4gICAgICBDLFxuICAgICAgT21pdDxCdXR0b25Qcm9wcywgXCJ2YXJpYW50XCIgfCBcInNpemVcIiB8IFwicmVmXCI+XG4gICAgPixcbiAgICByZWY6IFBvbHltb3JwaGljUmVmPEM+XG4gICkgPT4gPEN1c3RvbUJ1dHRvbiB7Li4ucHJvcHN9IHZhcmlhbnQ9XCJzZWNvbmRhcnlcIiBzaXplPVwic1wiIHJlZj17cmVmfSAvPlxuKTtcblxuZXhwb3J0IGNvbnN0IFByb21wdElucHV0ID0gT2JqZWN0LmFzc2lnbihQcm9tcHRJbnB1dENvbXBvbmVudCwge1xuICBTdWdnZXN0aW9uQnV0dG9uLFxufSkgYXMgdHlwZW9mIFByb21wdElucHV0Q29tcG9uZW50ICYge1xuICBTdWdnZXN0aW9uQnV0dG9uOiB0eXBlb2YgU3VnZ2VzdGlvbkJ1dHRvbjtcbn07XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBcUR3QiJ9 */"),StyledTextAreaContainer=(0,_styled.default)("div",{target:"e1jgljjd1",label:"StyledTextAreaContainer"})({borderRadius:"inherit",position:"relative",width:"100%"},"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvUHJvbXB0SW5wdXQvUHJvbXB0SW5wdXQudHN4Iiwic291cmNlcyI6WyJzcmMvY29tcG9uZW50cy9Qcm9tcHRJbnB1dC9Qcm9tcHRJbnB1dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBSZWFjdEVsZW1lbnQsXG4gIENoYW5nZUV2ZW50SGFuZGxlcixcbiAgS2V5Ym9hcmRFdmVudEhhbmRsZXIsXG4gIFJlZk9iamVjdCxcbiAgRm9jdXNFdmVudEhhbmRsZXIsXG4gIFN5bnRoZXRpY0V2ZW50LFxuICBNb3VzZUV2ZW50LFxufSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IFJlYWN0LCB7XG4gIHVzZVJlZixcbiAgdXNlTWVtbyxcbiAgdXNlU3RhdGUsXG4gIHVzZUVmZmVjdCxcbiAgdXNlQ2FsbGJhY2ssXG4gIGZvcndhcmRSZWYsXG59IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5cbmltcG9ydCB0eXBlIHsgUHJvbXB0VGV4dEFyZWFQcm9wcyB9IGZyb20gXCIuL1Byb21wdFRleHRBcmVhXCI7XG5pbXBvcnQge1xuICBQcm9tcHRUZXh0QXJlYSxcbiAgZ2V0UGFkZGluZ0hvcml6b250YWwsXG4gIGdldFBhZGRpbmdWZXJ0aWNhbCxcbn0gZnJvbSBcIi4vUHJvbXB0VGV4dEFyZWFcIjtcbmltcG9ydCB7IENvbnRhaW5lciB9IGZyb20gXCIuLi9Db250YWluZXJcIjtcbmltcG9ydCB0eXBlIHsgQXV0b2NvbXBsZXRlTGlzdFByb3BzIH0gZnJvbSBcIi4vQXV0b2NvbXBsZXRlTGlzdFwiO1xuXG5pbXBvcnQgeyBBdXRvY29tcGxldGVMaXN0IH0gZnJvbSBcIi4vQXV0b2NvbXBsZXRlTGlzdFwiO1xuaW1wb3J0IHtcbiAgZ2V0TGlzdEl0ZW1JZCxcbiAgdHlwZSBGbGF0dGVuZWRMaXN0SXRlbSxcbiAgdHlwZSBMaXN0SXRlbVZhbHVlLFxufSBmcm9tIFwiLi9DYXRlZ29yeUxpc3RcIjtcbmltcG9ydCB7IFRleHQgfSBmcm9tIFwiLi4vVHlwb2dyYXBoeS9UZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24sIHR5cGUgQnV0dG9uUHJvcHMgfSBmcm9tIFwiLi4vQnV0dG9uL0J1dHRvblwiO1xuaW1wb3J0IHR5cGUge1xuICBQb2x5bW9ycGhpY1JlZixcbiAgUG9seW1vcnBoaWNDb21wb25lbnRQcm9wc1dpdGhSZWYsXG59IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuaW1wb3J0IHsgSW5saW5lIH0gZnJvbSBcIi4uL0lubGluZS9JbmxpbmVcIjtcbmltcG9ydCB0eXBlIHsgUm91bmRCdXR0b25Qcm9wcyB9IGZyb20gXCIuLi9Sb3VuZEJ1dHRvbi9Sb3VuZEJ1dHRvblwiO1xuaW1wb3J0IHsgUm91bmRCdXR0b24gfSBmcm9tIFwiLi4vUm91bmRCdXR0b24vUm91bmRCdXR0b25cIjtcbmltcG9ydCB0eXBlIHsgUGljdG9ncmFtQnV0dG9uUHJvcHMgfSBmcm9tIFwiLi4vUGljdG9ncmFtQnV0dG9uL1BpY3RvZ3JhbUJ1dHRvblwiO1xuaW1wb3J0IHsgUGljdG9ncmFtQnV0dG9uIH0gZnJvbSBcIi4uL1BpY3RvZ3JhbUJ1dHRvbi9QaWN0b2dyYW1CdXR0b25cIjtcbmltcG9ydCB7IFN0YWNrIH0gZnJvbSBcIi4uL1N0YWNrL1N0YWNrXCI7XG5pbXBvcnQgeyB1c2VPdXRzaWRlQ2xpY2sgfSBmcm9tIFwiLi4vLi4vc2hhcmVkL3VzZU91dHNpZGVDbGlja1wiO1xuaW1wb3J0IHR5cGUgeyBJY29uTmFtZSB9IGZyb20gXCIuLi9JY29uL0ljb25cIjtcbmltcG9ydCB7IEljb24gfSBmcm9tIFwiLi4vSWNvbi9JY29uXCI7XG5pbXBvcnQgeyBTdWJUaGVtZVByb3ZpZGVyIH0gZnJvbSBcIi4uL1N1YlRoZW1lUHJvdmlkZXIvU3ViVGhlbWVQcm92aWRlclwiO1xuaW1wb3J0IHsgQW5pbWF0ZWRCb3JkZXIgfSBmcm9tIFwiLi4vVXRpbGl0aWVzL0FuaW1hdGVkQm9yZGVyL0FuaW1hdGVkQm9yZGVyXCI7XG5cbmNvbnN0IEN1c3RvbUNvbnRhaW5lciA9IHN0eWxlZChDb250YWluZXIpPHtcbiAgaGlkZUJvcmRlcjogYm9vbGVhbjtcbiAgaGFzU2hhZG93OiBib29sZWFuO1xufT4oKHsgdGhlbWUsIGhpZGVCb3JkZXIsIGhhc1NoYWRvdyB9KSA9PiAoe1xuICBib3JkZXI6IGAxcHggc29saWQgJHt0aGVtZS52YWx1ZXMuY29sb3IuYm9yZGVyLnByaW1hcnkuZGVmYXVsdH1gLFxuICAuLi4oaGFzU2hhZG93ICYmIHtcbiAgICBib3hTaGFkb3c6IHRoZW1lLnZhbHVlcy5zaGFkb3cuZGVmYXVsdFJpbmcsXG4gICAgdHJhbnNpdGlvblByb3BlcnR5OiBcImJveC1zaGFkb3csIGJvcmRlci1jb2xvciwgb3V0bGluZS1jb2xvclwiLFxuICAgIHRyYW5zaXRpb25EdXJhdGlvbjogdGhlbWUudmFyaWFibGVzLmFuaW1hdGlvbi5wcm9tcHRJbnB1dC5mb2N1cy5kdXJhdGlvbixcbiAgICB0cmFuc2l0aW9uVGltaW5nRnVuY3Rpb246XG4gICAgICB0aGVtZS52YXJpYWJsZXMuYW5pbWF0aW9uLnByb21wdElucHV0LmZvY3VzLnRpbWluZ0Z1bmN0aW9uLFxuICB9KSxcbiAgLi4uKGhpZGVCb3JkZXIgJiYge1xuICAgIGJvcmRlckNvbG9yOiBcInRyYW5zcGFyZW50XCIsXG4gIH0pLFxuICBjdXJzb3I6IFwidGV4dFwiLFxuICBvdXRsaW5lQ29sb3I6IFwidHJhbnNwYXJlbnRcIixcbiAgW2AmOmhhcyh0ZXh0YXJlYTpmb2N1cy12aXNpYmxlKWBdOiB7XG4gICAgb3V0bGluZVdpZHRoOiAxLFxuICAgIG91dGxpbmVTdHlsZTogXCJzb2xpZFwiLFxuICAgIG91dGxpbmVPZmZzZXQ6IC0xLFxuICAgIGJveFNoYWRvdzogdGhlbWUudmFsdWVzLnNoYWRvdy5mb2N1c1JpbmcsXG4gICAgb3V0bGluZUNvbG9yOiB0aGVtZS52YWx1ZXMuY29sb3IuYm9yZGVyLmFjY2VudC5kZWZhdWx0LFxuICB9LFxufSkpO1xuXG5jb25zdCBTdHlsZWRUZXh0QXJlYUNvbnRhaW5lciA9IHN0eWxlZC5kaXYoe1xuICBib3JkZXJSYWRpdXM6IFwiaW5oZXJpdFwiLFxuICBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiLFxuICB3aWR0aDogXCIxMDAlXCIsXG59KTtcblxuY29uc3QgU3R5bGVkTGVmdEljb25Db250YWluZXIgPSBzdHlsZWQuZGl2KCh7IHRoZW1lIH0pID0+ICh7XG4gIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gIHRvcDogZ2V0UGFkZGluZ1ZlcnRpY2FsKHRoZW1lKSxcbiAgbGVmdDogZ2V0UGFkZGluZ0hvcml6b250YWwodGhlbWUpLFxufSkpO1xuXG50eXBlIFN0eWxlZEVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnRDb250YWluZXJQcm9wcyA9IFBpY2s8XG4gIFByb21wdElucHV0UHJvcHMsXG4gIFwiaXNOYXZCYXJWYXJpYW50XCJcbj47XG5cbmNvbnN0IFN0eWxlZEVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnRDb250YWluZXIgPVxuICBzdHlsZWQuZGl2PFN0eWxlZEVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnRDb250YWluZXJQcm9wcz4oXG4gICAgKHsgdGhlbWUsIGlzTmF2QmFyVmFyaWFudCB9KSA9PiAoe1xuICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgIHRvcDogaXNOYXZCYXJWYXJpYW50XG4gICAgICAgID8gdGhlbWUudmFyaWFibGVzLnNpemUuc3BhY2luZy54eHNcbiAgICAgICAgOiBnZXRQYWRkaW5nVmVydGljYWwodGhlbWUpLFxuICAgICAgcmlnaHQ6IGdldFBhZGRpbmdIb3Jpem9udGFsKHRoZW1lKSxcbiAgICAgIHVzZXJTZWxlY3Q6IFwibm9uZVwiLFxuICAgICAgcG9pbnRlckV2ZW50czogXCJub25lXCIsXG4gICAgfSlcbiAgKTtcblxudHlwZSBTdHlsZWRDbGVhckJ1dHRvblByb3BzID0gUGljdG9ncmFtQnV0dG9uUHJvcHMgJlxuICBQaWNrPFByb21wdElucHV0UHJvcHMsIFwiaXNOYXZCYXJWYXJpYW50XCI+O1xuXG5jb25zdCBTdHlsZWRDbGVhckJ1dHRvbiA9IHN0eWxlZChQaWN0b2dyYW1CdXR0b24pPFN0eWxlZENsZWFyQnV0dG9uUHJvcHM+KFxuICAoeyB0aGVtZSwgaXNOYXZCYXJWYXJpYW50IH0pID0+ICh7XG4gICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICByaWdodDogdGhlbWUudmFyaWFibGVzLnNpemUuc3BhY2luZy5zLFxuICAgIHRvcDogaXNOYXZCYXJWYXJpYW50ID8gMCA6IHRoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcucyxcbiAgfSlcbik7XG5cbmNvbnN0IFN0eWxlZFNsb3RzQ29udGFpbmVyID0gc3R5bGVkLmRpdih7XG4gIGRpc3BsYXk6IFwiZmxleFwiLFxuICBmbGV4V3JhcDogXCJ3cmFwXCIsXG4gIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG59KTtcblxuLy8gSXQgbmVlZHMgbWFyZ2luIGR1ZSB0byBlbXB0eSBjbGlja2FibGUgc3BhY2UgdGhhdCBmb2N1c2VzIHRoZSB0ZXh0YXJlYVxuLy8gU2xvdHMgc2hvdWxkIG5vdCBiZSBpbiB0aGUgZGl2LCBiZWNhdXNlIGFyZWEgYmV0d2VlbiBzaG91bGQgYmUgY2xpY2thYmxlIGFsc29cbnR5cGUgU2xvdFByb3BzID0ge1xuICBzaWRlPzogXCJyaWdodFwiO1xufTtcbmNvbnN0IFN0eWxlZFNsb3QgPSBzdHlsZWQuZGl2PFNsb3RQcm9wcz4oKHsgdGhlbWUsIHNpZGUgfSkgPT4gKHtcbiAgbWFyZ2luOiBgMCAke3RoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcuc30gJHt0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnN9YCxcblxuICAuLi4oc2lkZSA9PT0gXCJyaWdodFwiICYmIHtcbiAgICBtYXJnaW5MZWZ0OiBcImF1dG9cIixcbiAgfSksXG59KSk7XG5cbnR5cGUgU2VuZEJ1dHRvblByb3BzID0gT21pdDxSb3VuZEJ1dHRvblByb3BzLCBcImljb25cIiB8IFwidmFyaWFudFwiPiAmIHtcbiAgaWNvbj86IFwiYXJyb3ctdXBcIiB8IFwic2VhcmNoXCIgfCBcImFycm93LXJpZ2h0XCIgfCBcInZvaWNlXCI7XG59O1xuXG50eXBlIEJvdHRvbVRvb2xiYXJDb25maWcgPSB7XG4gIC8qKiBUb29sYmFyIGVsZW1lbnRzIGJlbG93IHRleHQgYXJlYSAqL1xuICBsZWZ0Q29udGVudD86IFJlYWN0RWxlbWVudDtcbiAgcmlnaHRDb250ZW50PzogUmVhY3RFbGVtZW50O1xufTtcblxuZXhwb3J0IHR5cGUgUHJvbXB0SW5wdXRQcm9wcyA9IHtcbiAgXCJkYXRhLWUyZS10ZXN0LWlkXCI/OiBzdHJpbmc7XG4gIHZhcmlhbnQ/OiBcImFpXCI7XG4gIHNraXBBSUFuaW1hdGlvbj86IGJvb2xlYW47XG4gIGJvdHRvbVRvb2xiYXI/OiBCb3R0b21Ub29sYmFyQ29uZmlnO1xuICBzZW5kQnV0dG9uUHJvcHM/OiBTZW5kQnV0dG9uUHJvcHM7XG4gIC8qKiBDdXJyZW50bHkgc2hvd3Mgc2VuZCBidXR0b24gcHJvY2Vzc2luZyBzdGF0ZSAgKi9cbiAgaXNQcm9jZXNzaW5nPzogYm9vbGVhbjtcbiAgY2xlYXJCdXR0b25BcmlhTGFiZWw/OiBzdHJpbmc7XG4gIGhpbnQ/OiBSZWFjdEVsZW1lbnQ7XG4gIC8qKiBTaG93cyBpbiB0aGUgY2xlYXIgYnV0dG9uIHNwYWNlIGluIGVtcHR5IHN0YXRlICovXG4gIGVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnQ/OiBSZWFjdEVsZW1lbnQ7XG4gIG9uQ2xlYXI6ICgpID0+IHZvaWQ7XG4gIC8qKiBDYWxsZWQgd2hlbiB1c2VyIHNlbGVjdHMgKG9yIHJlamVjdHMpIGEgbGlzdCBpdGVtIGZyb20gYXV0b2NvbXBsZXRlIGxpc3QgKi9cbiAgb25Db21wbGV0ZT86ICh7XG4gICAgdmFsdWUsXG4gICAgY2F0ZWdvcnksXG4gICAgZXZ0LFxuICAgIGluZGV4LFxuICB9OiB7XG4gICAgdmFsdWU6IExpc3RJdGVtVmFsdWU7XG4gICAgY2F0ZWdvcnk/OiBzdHJpbmc7XG4gICAgZXZ0PzogU3ludGhldGljRXZlbnQ7XG4gICAgaW5kZXg/OiBudW1iZXI7XG4gIH0pID0+IHZvaWQ7XG4gIC8qKiBDYWxsZWQgb24gRW50ZXIga2V5IHRvIHN1Ym1pdCB0aGUgZm9ybSAgKi9cbiAgb25FbnRlcktleTogKCkgPT4gdm9pZDtcbiAgLyoqIFJlbmRlcnMgYW4gaWNvbiB0byB0aGUgbGVmdCBpbnNpZGUgdGhlIHRleHRhcmVhICovXG4gIGxlZnRJY29uPzogSWNvbk5hbWU7XG59ICYgT21pdDxcbiAgUHJvbXB0VGV4dEFyZWFQcm9wcyxcbiAgXCJpc0NvbGxhcHNlZFwiIHwgXCJpc0F1dG9jb21wbGV0ZUxpc3RPcGVuXCIgfCBcInNlbGVjdGVkTGlzdEl0ZW1cIiB8IFwiaGFzTGVmdEljb25cIlxuPiAmXG4gIFBpY2s8XG4gICAgQXV0b2NvbXBsZXRlTGlzdFByb3BzLFxuICAgIFwiYXV0b2NvbXBsZXRlTGlzdEl0ZW1zXCIgfCBcImF1dG9jb21wbGV0ZUxpc3RGb290ZXJcIiB8IFwicG9ydGFsQ29udGFpbmVyXCJcbiAgPjtcblxuY29uc3QgZGVmYXVsdFNlbmRCdXR0b25Qcm9wczogU2VuZEJ1dHRvblByb3BzID0ge1xuICB0eXBlOiBcInN1Ym1pdFwiIGFzIGNvbnN0LFxuICBpY29uOiBcImFycm93LXVwXCIgYXMgY29uc3QsXG59O1xuXG5jb25zdCBQcm9tcHRJbnB1dENvbXBvbmVudCA9IGZvcndhcmRSZWYoXG4gIChcbiAgICB7XG4gICAgICBcImRhdGEtZTJlLXRlc3QtaWRcIjogZGF0YUUyZVRlc3RJZCxcbiAgICAgIG5hbWUsXG4gICAgICBhdXRvY29tcGxldGVMaXN0SXRlbXMgPSBbXSxcbiAgICAgIHZhbHVlLFxuICAgICAgYm90dG9tVG9vbGJhcixcbiAgICAgIGlzUHJvY2Vzc2luZyxcbiAgICAgIHNlbmRCdXR0b25Qcm9wcyxcbiAgICAgIGF1dG9jb21wbGV0ZUxpc3RGb290ZXIsXG4gICAgICBjbGVhckJ1dHRvbkFyaWFMYWJlbCA9IFwiQ2xlYXIgaW5wdXRcIixcbiAgICAgIGhpbnQsXG4gICAgICBlbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50LFxuICAgICAgaXNOYXZCYXJWYXJpYW50LFxuICAgICAgcG9ydGFsQ29udGFpbmVyLFxuICAgICAgbGVmdEljb24sXG4gICAgICBvbkNoYW5nZSxcbiAgICAgIG9uQ29tcGxldGUsXG4gICAgICBvbkNsZWFyLFxuICAgICAgb25FbnRlcktleSxcbiAgICAgIG9uRm9jdXMsXG4gICAgICBvbkJsdXIsXG4gICAgICBvbktleURvd24sXG4gICAgICB2YXJpYW50LFxuICAgICAgc2tpcEFJQW5pbWF0aW9uID0gZmFsc2UsXG4gICAgICAuLi5yZXN0XG4gICAgfTogUHJvbXB0SW5wdXRQcm9wcyxcbiAgICByZWY6IFJlZk9iamVjdDxIVE1MVGV4dEFyZWFFbGVtZW50PlxuICApOiBSZWFjdEVsZW1lbnQgPT4ge1xuICAgIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gICAgY29uc3QgdGV4dEFyZWFDb250YWluZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICAgIGNvbnN0IGludGVybmFsUmVmID0gdXNlUmVmPEhUTUxUZXh0QXJlYUVsZW1lbnQ+KG51bGwpO1xuICAgIGNvbnN0IFtzZWxlY3RlZEluZGV4LCBzZXRTZWxlY3RlZEluZGV4XSA9IHVzZVN0YXRlKC0xKTtcbiAgICBjb25zdCBbaXNDb2xsYXBzZWQsIHNldElzQ29sbGFwc2VkXSA9IHVzZVN0YXRlKGlzTmF2QmFyVmFyaWFudCk7XG4gICAgY29uc3QgdXNlclR5cGVkUXVlcnkgPSB1c2VSZWYoXCJcIik7XG4gICAgY29uc3QgW2lzQXV0b2NvbXBsZXRlTGlzdE9wZW4sIHNldElzQXV0b2NvbXBsZXRlTGlzdE9wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IHRleHRBcmVhUmVmID0gcmVmIHx8IGludGVybmFsUmVmO1xuXG4gICAgY29uc3QgbWVyZ2VkU2VuZEJ1dHRvblByb3BzID0ge1xuICAgICAgLi4uZGVmYXVsdFNlbmRCdXR0b25Qcm9wcyxcbiAgICAgIC4uLihzZW5kQnV0dG9uUHJvcHMgPz8ge30pLFxuICAgIH07XG5cbiAgICB1c2VPdXRzaWRlQ2xpY2soXG4gICAgICBjb250YWluZXJSZWYsXG4gICAgICAoZXZ0KSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhY29udGFpbmVyUmVmLmN1cnJlbnQuY29udGFpbnMoZXZ0LnRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgICAgICFwb3J0YWxDb250YWluZXI/LmNvbnRhaW5zKGV2dC50YXJnZXQgYXMgTm9kZSkgJiZcbiAgICAgICAgICBldnQudGFyZ2V0ICE9PSBudWxsXG4gICAgICAgICkge1xuICAgICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgIWlzQ29sbGFwc2VkICYmIGlzTmF2QmFyVmFyaWFudFxuICAgICk7XG5cbiAgICBjb25zdCBjbG9zZUF1dG9jb21wbGV0ZUxpc3QgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBzZXRJc0F1dG9jb21wbGV0ZUxpc3RPcGVuKGZhbHNlKTtcbiAgICAgIHNldFNlbGVjdGVkSW5kZXgoLTEpO1xuICAgIH0sIFtdKTtcblxuICAgIGNvbnN0IG9wZW5BdXRvY29tcGxldGVMaXN0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgaWYgKGF1dG9jb21wbGV0ZUxpc3RJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgc2V0SXNBdXRvY29tcGxldGVMaXN0T3Blbih0cnVlKTtcbiAgICAgICAgc2V0U2VsZWN0ZWRJbmRleCgtMSk7XG4gICAgICB9XG4gICAgfSwgW2F1dG9jb21wbGV0ZUxpc3RJdGVtc10pO1xuXG4gICAgY29uc3QgYWNjZXB0VGV4dFNlbGVjdGlvbiA9ICgpID0+IHtcbiAgICAgIHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQgPSB2YWx1ZTtcbiAgICAgIGlmIChcbiAgICAgICAgdGV4dEFyZWFSZWYuY3VycmVudC5zZWxlY3Rpb25TdGFydCAhPT0gdGV4dEFyZWFSZWYuY3VycmVudC5zZWxlY3Rpb25FbmRcbiAgICAgICkge1xuICAgICAgICB0ZXh0QXJlYVJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKHZhbHVlLmxlbmd0aCwgdmFsdWUubGVuZ3RoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmIChhdXRvY29tcGxldGVMaXN0SXRlbXMubGVuZ3RoICYmICFpc0NvbGxhcHNlZCkge1xuICAgICAgICBvcGVuQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2xvc2VBdXRvY29tcGxldGVMaXN0KCk7XG4gICAgICB9XG4gICAgfSwgW1xuICAgICAgYXV0b2NvbXBsZXRlTGlzdEl0ZW1zLFxuICAgICAgb3BlbkF1dG9jb21wbGV0ZUxpc3QsXG4gICAgICBjbG9zZUF1dG9jb21wbGV0ZUxpc3QsXG4gICAgICBpc0NvbGxhcHNlZCxcbiAgICBdKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAodmFsdWUgJiYgdmFsdWUgIT09IHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQgJiYgaXNBdXRvY29tcGxldGVMaXN0T3Blbikge1xuICAgICAgICB0ZXh0QXJlYVJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKFxuICAgICAgICAgIHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQubGVuZ3RoLFxuICAgICAgICAgIHZhbHVlLmxlbmd0aFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0sIFt2YWx1ZSwgdGV4dEFyZWFSZWYsIGlzQXV0b2NvbXBsZXRlTGlzdE9wZW5dKTtcblxuICAgIC8vIERldGVybWluZSB3aGVuIGZvY3VzIGxlYXZlcyB0aGUgY29udGFpbmVyIHRvIGNvbGxhcHNlIGl0XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGxldCBoYW5kbGVyOiAoZXZ0OiBGb2N1c0V2ZW50KSA9PiB2b2lkO1xuICAgICAgY29uc3QgY29udGFpbmVyID0gY29udGFpbmVyUmVmLmN1cnJlbnQ7XG5cbiAgICAgIGlmIChpc05hdkJhclZhcmlhbnQgJiYgY29udGFpbmVyKSB7XG4gICAgICAgIGhhbmRsZXIgPSAoZXZ0OiBGb2N1c0V2ZW50KSA9PiB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgIWNvbnRhaW5lclJlZi5jdXJyZW50LmNvbnRhaW5zKGV2dC5yZWxhdGVkVGFyZ2V0IGFzIE5vZGUpICYmXG4gICAgICAgICAgICAhcG9ydGFsQ29udGFpbmVyPy5jb250YWlucyhldnQucmVsYXRlZFRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgICAgICAgZXZ0LnJlbGF0ZWRUYXJnZXQgIT09IG51bGxcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c291dFwiLCBoYW5kbGVyKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiZm9jdXNvdXRcIiwgaGFuZGxlcik7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSwgW2lzTmF2QmFyVmFyaWFudCwgY29udGFpbmVyUmVmLCBwb3J0YWxDb250YWluZXJdKTtcblxuICAgIGNvbnN0IGZsYXR0ZW5lZExpc3RJdGVtcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgY29uc3QgbGlzdDogRmxhdHRlbmVkTGlzdEl0ZW1bXSA9IFtdO1xuXG4gICAgICBhdXRvY29tcGxldGVMaXN0SXRlbXMuZm9yRWFjaCgobGlzdEl0ZW0pID0+IHtcbiAgICAgICAgbGlzdEl0ZW0uaXRlbXMuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICBsaXN0LnB1c2goe1xuICAgICAgICAgICAgY2F0ZWdvcnk6IGxpc3RJdGVtLmNhdGVnb3J5LFxuICAgICAgICAgICAgaW5kZXhJbkNhdGVnb3J5OiBpbmRleCxcbiAgICAgICAgICAgIHZhbHVlOiBpdGVtLnZhbHVlLFxuICAgICAgICAgICAgaWQ6IGdldExpc3RJdGVtSWQobmFtZSwgbGlzdEl0ZW0uY2F0ZWdvcnksIGluZGV4KSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBsaXN0O1xuICAgIH0sIFthdXRvY29tcGxldGVMaXN0SXRlbXMsIG5hbWVdKTtcblxuICAgIGNvbnN0IGhhbmRsZVNlbGVjdGVkSW5kZXhDaGFuZ2UgPSAoaW5kZXg6IG51bWJlciwgZXZ0PzogU3ludGhldGljRXZlbnQpID0+IHtcbiAgICAgIHNldFNlbGVjdGVkSW5kZXgoaW5kZXgpO1xuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBjb25zdCB7IGNhdGVnb3J5LCB2YWx1ZTogaXRlbVZhbHVlIH0gPSBmbGF0dGVuZWRMaXN0SXRlbXNbaW5kZXhdO1xuXG4gICAgICAgIG9uQ29tcGxldGUoeyB2YWx1ZTogaXRlbVZhbHVlLCBjYXRlZ29yeSwgZXZ0LCBpbmRleCB9KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlTGlzdEl0ZW1DbGljayA9IChcbiAgICAgIGNhdGVnb3J5OiBzdHJpbmcsXG4gICAgICBpbmRleEluQ2F0ZWdvcnk6IG51bWJlcixcbiAgICAgIGV2dD86IE1vdXNlRXZlbnRcbiAgICApID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ID0gZmxhdHRlbmVkTGlzdEl0ZW1zLmZpbmRJbmRleChcbiAgICAgICAgKGxpc3RJdGVtKSA9PlxuICAgICAgICAgIGxpc3RJdGVtLmNhdGVnb3J5ID09PSBjYXRlZ29yeSAmJlxuICAgICAgICAgIGxpc3RJdGVtLmluZGV4SW5DYXRlZ29yeSA9PT0gaW5kZXhJbkNhdGVnb3J5XG4gICAgICApO1xuXG4gICAgICBoYW5kbGVTZWxlY3RlZEluZGV4Q2hhbmdlKGluZGV4LCBldnQpO1xuICAgICAgY2xvc2VBdXRvY29tcGxldGVMaXN0KCk7XG4gICAgICBpZiAoaXNOYXZCYXJWYXJpYW50KSB7XG4gICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVLZXlEb3duOiBLZXlib2FyZEV2ZW50SGFuZGxlcjxIVE1MVGV4dEFyZWFFbGVtZW50PiA9IChldnQpID0+IHtcbiAgICAgIGlmIChpc0F1dG9jb21wbGV0ZUxpc3RPcGVuKSB7XG4gICAgICAgIHN3aXRjaCAoZXZ0LmtleSkge1xuICAgICAgICAgIGNhc2UgXCJFc2NhcGVcIjpcbiAgICAgICAgICAgIGNsb3NlQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgICAgICAgb25Db21wbGV0ZSh7IHZhbHVlOiB1c2VyVHlwZWRRdWVyeS5jdXJyZW50LCBldnQgfSk7XG4gICAgICAgICAgICBpZiAoaXNOYXZCYXJWYXJpYW50KSB7XG4gICAgICAgICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBcIkVudGVyXCI6XG4gICAgICAgICAgICBpZiAoIWV2dC5zaGlmdEtleSkge1xuICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgY2xvc2VBdXRvY29tcGxldGVMaXN0KCk7XG4gICAgICAgICAgICAgIGFjY2VwdFRleHRTZWxlY3Rpb24oKTtcblxuICAgICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBvbkVudGVyS2V5Py4oKTtcbiAgICAgICAgICAgICAgICBpZiAoaXNOYXZCYXJWYXJpYW50KSB7XG4gICAgICAgICAgICAgICAgICBzZXRJc0NvbGxhcHNlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgXCIgXCI6XG4gICAgICAgICAgICBhY2NlcHRUZXh0U2VsZWN0aW9uKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFwiQXJyb3dVcFwiOlxuICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgIGhhbmRsZVNlbGVjdGVkSW5kZXhDaGFuZ2Uoc2VsZWN0ZWRJbmRleCAtIDEsIGV2dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFwiQXJyb3dEb3duXCI6XG4gICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZEluZGV4IDwgZmxhdHRlbmVkTGlzdEl0ZW1zLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0ZWRJbmRleENoYW5nZShzZWxlY3RlZEluZGV4ICsgMSwgZXZ0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN3aXRjaCAoZXZ0LmtleSkge1xuICAgICAgICAgIGNhc2UgXCJFc2NhcGVcIjpcbiAgICAgICAgICAgIG9uQ2xlYXI/LigpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBcIkVudGVyXCI6XG4gICAgICAgICAgICBpZiAoIWV2dC5zaGlmdEtleSkge1xuICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgb25FbnRlcktleT8uKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBvbktleURvd24/LihldnQpO1xuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVDaGFuZ2U6IENoYW5nZUV2ZW50SGFuZGxlcjxIVE1MVGV4dEFyZWFFbGVtZW50PiA9IChldnQpID0+IHtcbiAgICAgIHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQgPSBldnQudGFyZ2V0LnZhbHVlO1xuICAgICAgb25DaGFuZ2UoZXZ0KTtcbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlRm9jdXM6IEZvY3VzRXZlbnRIYW5kbGVyPEhUTUxUZXh0QXJlYUVsZW1lbnQ+ID0gKGV2dCkgPT4ge1xuICAgICAgc2V0SXNDb2xsYXBzZWQoZmFsc2UpO1xuICAgICAgb25Gb2N1cz8uKGV2dCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZUJsdXI6IEZvY3VzRXZlbnRIYW5kbGVyPEhUTUxUZXh0QXJlYUVsZW1lbnQ+ID0gKGV2dCkgPT4ge1xuICAgICAgaWYgKHZhbHVlICE9PSB1c2VyVHlwZWRRdWVyeS5jdXJyZW50KSB7XG4gICAgICAgIG9uQ29tcGxldGU/Lih7IHZhbHVlOiB1c2VyVHlwZWRRdWVyeS5jdXJyZW50LCBldnQgfSk7XG4gICAgICB9XG4gICAgICBvbkJsdXI/LihldnQpO1xuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVTZW5kQnV0dG9uQ2xpY2sgPSAoZXZ0OiBNb3VzZUV2ZW50PEhUTUxCdXR0b25FbGVtZW50PikgPT4ge1xuICAgICAgbWVyZ2VkU2VuZEJ1dHRvblByb3BzLm9uQ2xpY2s/LihldnQpO1xuICAgICAgY2xvc2VBdXRvY29tcGxldGVMaXN0KCk7XG4gICAgICBpZiAoaXNOYXZCYXJWYXJpYW50KSB7XG4gICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVQcmV2ZW50Rm9jdXMgPSAoZXZ0OiBSZWFjdC5Qb2ludGVyRXZlbnQpID0+IHtcbiAgICAgIC8vIFByZXZlbnQgdGhlIHRleHRhcmVhIGZyb20gYmVpbmcgdW5mb2N1c2VkXG4gICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlT25Db250YWluZXJQb2ludGVyRG93biA9IChldnQ6IFJlYWN0LlBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgLy8gRm9jdXMgdGV4dGFyZWEgd2hlbiBjbGlja2luZyBvbiB0aGUgY29udGFpbmVyIG9ubHlcbiAgICAgIGlmIChldnQudGFyZ2V0ID09PSBldnQuY3VycmVudFRhcmdldCkge1xuICAgICAgICB0ZXh0QXJlYVJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3Qgc2VsZWN0ZWRMaXN0SXRlbSA9XG4gICAgICBzZWxlY3RlZEluZGV4ICE9PSAtMSA/IGZsYXR0ZW5lZExpc3RJdGVtc1tzZWxlY3RlZEluZGV4XSA6IG51bGw7XG5cbiAgICBjb25zdCBlbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50RWxtID0gZW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudCA/IChcbiAgICAgIDxTdHlsZWRFbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50Q29udGFpbmVyXG4gICAgICAgIGlzTmF2QmFyVmFyaWFudD17aXNOYXZCYXJWYXJpYW50fVxuICAgICAgPlxuICAgICAgICA8VGV4dCBjb2xvcj1cInRlcnRpYXJ5XCI+e2VtcHR5U3RhdGVUb3BSaWdodENvbnRlbnR9PC9UZXh0PlxuICAgICAgPC9TdHlsZWRFbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50Q29udGFpbmVyPlxuICAgICkgOiBudWxsO1xuXG4gICAgY29uc3QgY2xlYXJCdXR0b25FbG0gPSB2YWx1ZSA/IChcbiAgICAgIDxTdHlsZWRDbGVhckJ1dHRvblxuICAgICAgICBzaXplPVwic1wiXG4gICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgaWNvbj1cIngtY2lyY2xlLWZpbGxlZFwiXG4gICAgICAgIGFyaWEtbGFiZWw9e2NsZWFyQnV0dG9uQXJpYUxhYmVsfVxuICAgICAgICBpc05hdkJhclZhcmlhbnQ9e2lzTmF2QmFyVmFyaWFudH1cbiAgICAgICAgb25Qb2ludGVyRG93bj17aGFuZGxlUHJldmVudEZvY3VzfVxuICAgICAgICBvbkNsaWNrPXtvbkNsZWFyfVxuICAgICAgLz5cbiAgICApIDogKFxuICAgICAgZW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudEVsbVxuICAgICk7XG5cbiAgICBjb25zdCBoaW50RWxtID0gISFoaW50ICYmIChcbiAgICAgIDxJbmxpbmUgYWxpZ25JdGVtcz1cImNlbnRlclwiPlxuICAgICAgICA8VGV4dCBzaXplPVwic1wiIGNvbG9yPVwidGVydGlhcnlcIj5cbiAgICAgICAgICB7aGludH1cbiAgICAgICAgPC9UZXh0PlxuICAgICAgPC9JbmxpbmU+XG4gICAgKTtcblxuICAgIGNvbnN0IGJvdHRvbVRvb2xiYXJFbG0gPSAoYm90dG9tVG9vbGJhcj8ucmlnaHRDb250ZW50IHx8XG4gICAgICBib3R0b21Ub29sYmFyPy5sZWZ0Q29udGVudCB8fFxuICAgICAgISFzZW5kQnV0dG9uUHJvcHMpICYmXG4gICAgICAhaXNDb2xsYXBzZWQgJiYgKFxuICAgICAgICA8PlxuICAgICAgICAgIHtib3R0b21Ub29sYmFyPy5sZWZ0Q29udGVudCAmJiAoXG4gICAgICAgICAgICA8U3R5bGVkU2xvdD57Ym90dG9tVG9vbGJhci5sZWZ0Q29udGVudH08L1N0eWxlZFNsb3Q+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8U3R5bGVkU2xvdCBkYXRhLWUyZS10ZXN0LWlkPVwiYm90dG9tVG9vbGJhclwiIHNpZGU9XCJyaWdodFwiPlxuICAgICAgICAgICAgPElubGluZSBzcGFjZT1cInhzXCIgdkFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAgICAgICAge2JvdHRvbVRvb2xiYXI/LnJpZ2h0Q29udGVudH1cbiAgICAgICAgICAgICAge3NlbmRCdXR0b25Qcm9wcyAmJiAoXG4gICAgICAgICAgICAgICAgPFN1YlRoZW1lUHJvdmlkZXIgbmFtZT17dmFyaWFudH0+XG4gICAgICAgICAgICAgICAgICA8Um91bmRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgYXJpYUF0dHJpYnV0ZXM9e3tcbiAgICAgICAgICAgICAgICAgICAgICBcImFyaWEtbGFiZWxcIjogaXNQcm9jZXNzaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFwiUHJvY2Vzc2luZyBxdWVyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFwiU3VibWl0IHF1ZXJ5XCIsXG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIHsuLi5tZXJnZWRTZW5kQnV0dG9uUHJvcHN9XG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXttZXJnZWRTZW5kQnV0dG9uUHJvcHMuZGlzYWJsZWQgPz8gIXZhbHVlfVxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVTZW5kQnV0dG9uQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlckRvd249e2hhbmRsZVByZXZlbnRGb2N1c31cbiAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICBpY29uPXtcbiAgICAgICAgICAgICAgICAgICAgICBpc1Byb2Nlc3NpbmcgPyBcInN0b3AtZmlsbGVkXCIgOiBtZXJnZWRTZW5kQnV0dG9uUHJvcHMuaWNvblxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvU3ViVGhlbWVQcm92aWRlcj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvSW5saW5lPlxuICAgICAgICAgIDwvU3R5bGVkU2xvdD5cbiAgICAgICAgPC8+XG4gICAgICApO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBkYXRhLWUyZS10ZXN0LWlkPXtkYXRhRTJlVGVzdElkfVxuICAgICAgICAgIGRhdGEtZHMtaWQ9XCJQcm9tcHRJbnB1dFwiXG4gICAgICAgICAgcmVmPXtjb250YWluZXJSZWZ9XG4gICAgICAgICAgLy8gVHJhbnNsYXRpb24gZGlzYWJsZWQgZm9yIGNvbnNpc3RlbmN5IHdpdGggdGhlIGF1dG9jb21wbGV0ZSBsaXN0XG4gICAgICAgICAgdHJhbnNsYXRlPVwibm9cIlxuICAgICAgICA+XG4gICAgICAgICAgPFN0YWNrIHNwYWNlPVwic1wiPlxuICAgICAgICAgICAgPEFuaW1hdGVkQm9yZGVyXG4gICAgICAgICAgICAgIHNraXBBbmltYXRpb249e3NraXBBSUFuaW1hdGlvbiB8fCB2YXJpYW50ICE9PSBcImFpXCJ9XG4gICAgICAgICAgICAgIHJhZGl1cz17MTJ9XG4gICAgICAgICAgICAgIGl0ZXJhdGlvbnM9ezF9XG4gICAgICAgICAgICAgIHRoaWNrbmVzcz17Mn1cbiAgICAgICAgICAgICAgaGlkZUNoaWxkQm9yZGVyXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxTdWJUaGVtZVByb3ZpZGVyIG5hbWU9e3ZhcmlhbnR9PlxuICAgICAgICAgICAgICAgIDxDdXN0b21Db250YWluZXJcbiAgICAgICAgICAgICAgICAgIGVsZXZhdGlvbj17MH1cbiAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1cz17aXNDb2xsYXBzZWQgPyBcInhzXCIgOiBcIm1cIn1cbiAgICAgICAgICAgICAgICAgIGhpZGVCb3JkZXI9e2lzQ29sbGFwc2VkfVxuICAgICAgICAgICAgICAgICAgaGFzU2hhZG93PXshaXNOYXZCYXJWYXJpYW50fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTdWJUaGVtZVByb3ZpZGVyIG5hbWU9XCJ1bnNldFwiPlxuICAgICAgICAgICAgICAgICAgICA8U3R5bGVkU2xvdHNDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICByZWY9e3RleHRBcmVhQ29udGFpbmVyUmVmfVxuICAgICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlckRvd249e2hhbmRsZU9uQ29udGFpbmVyUG9pbnRlckRvd259XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U3R5bGVkVGV4dEFyZWFDb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7bGVmdEljb24gJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8U3R5bGVkTGVmdEljb25Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9e2xlZnRJY29ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJ0ZXJ0aWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3R5bGVkTGVmdEljb25Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPFByb21wdFRleHRBcmVhXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhRTJlVGVzdElkPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhRTJlVGVzdElkID8gYCR7ZGF0YUUyZVRlc3RJZH0taW5wdXRgIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e3RleHRBcmVhUmVmfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpc05hdkJhclZhcmlhbnQ9e2lzTmF2QmFyVmFyaWFudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRMaXN0SXRlbT17c2VsZWN0ZWRMaXN0SXRlbX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNBdXRvY29tcGxldGVMaXN0T3Blbj17aXNBdXRvY29tcGxldGVMaXN0T3Blbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNDb2xsYXBzZWQ9e2lzQ29sbGFwc2VkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNMZWZ0SWNvbj17ISFsZWZ0SWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25Gb2N1cz17aGFuZGxlRm9jdXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3dufVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtjbGVhckJ1dHRvbkVsbX1cbiAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZFRleHRBcmVhQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgIHtib3R0b21Ub29sYmFyRWxtfVxuICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZFNsb3RzQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPC9TdWJUaGVtZVByb3ZpZGVyPlxuICAgICAgICAgICAgICAgIDwvQ3VzdG9tQ29udGFpbmVyPlxuICAgICAgICAgICAgICA8L1N1YlRoZW1lUHJvdmlkZXI+XG4gICAgICAgICAgICA8L0FuaW1hdGVkQm9yZGVyPlxuICAgICAgICAgICAge2hpbnRFbG19XG4gICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPEF1dG9jb21wbGV0ZUxpc3RcbiAgICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICBhdXRvY29tcGxldGVMaXN0SXRlbXM9e2F1dG9jb21wbGV0ZUxpc3RJdGVtc31cbiAgICAgICAgICB0cmlnZ2VyUmVmPXt0ZXh0QXJlYUNvbnRhaW5lclJlZn1cbiAgICAgICAgICBzZWxlY3RlZExpc3RJdGVtPXtzZWxlY3RlZExpc3RJdGVtfVxuICAgICAgICAgIGlzT3Blbj17aXNBdXRvY29tcGxldGVMaXN0T3Blbn1cbiAgICAgICAgICBhdXRvY29tcGxldGVMaXN0Rm9vdGVyPXthdXRvY29tcGxldGVMaXN0Rm9vdGVyfVxuICAgICAgICAgIHBvcnRhbENvbnRhaW5lcj17cG9ydGFsQ29udGFpbmVyfVxuICAgICAgICAgIG9uTGlzdEl0ZW1DbGljaz17aGFuZGxlTGlzdEl0ZW1DbGlja31cbiAgICAgICAgLz5cbiAgICAgIDwvPlxuICAgICk7XG4gIH1cbik7XG5cbmNvbnN0IEN1c3RvbUJ1dHRvbiA9IHN0eWxlZChCdXR0b24pKCh7IHRoZW1lIH0pID0+ICh7XG4gIGJvcmRlclJhZGl1czogdGhlbWUudmFyaWFibGVzLnNpemUuYm9yZGVyUmFkaXVzLmwsXG59KSk7XG5cbi8vIG5lZWQgdG8gc2ltcGxpZnkgdGhpcyB0eXBlIGZvciByZXVzZVxuY29uc3QgU3VnZ2VzdGlvbkJ1dHRvbiA9IGZvcndhcmRSZWYoXG4gIDxDIGV4dGVuZHMgUmVhY3QuRWxlbWVudFR5cGUgPSBcImJ1dHRvblwiPihcbiAgICBwcm9wczogUG9seW1vcnBoaWNDb21wb25lbnRQcm9wc1dpdGhSZWY8XG4gICAgICBDLFxuICAgICAgT21pdDxCdXR0b25Qcm9wcywgXCJ2YXJpYW50XCIgfCBcInNpemVcIiB8IFwicmVmXCI+XG4gICAgPixcbiAgICByZWY6IFBvbHltb3JwaGljUmVmPEM+XG4gICkgPT4gPEN1c3RvbUJ1dHRvbiB7Li4ucHJvcHN9IHZhcmlhbnQ9XCJzZWNvbmRhcnlcIiBzaXplPVwic1wiIHJlZj17cmVmfSAvPlxuKTtcblxuZXhwb3J0IGNvbnN0IFByb21wdElucHV0ID0gT2JqZWN0LmFzc2lnbihQcm9tcHRJbnB1dENvbXBvbmVudCwge1xuICBTdWdnZXN0aW9uQnV0dG9uLFxufSkgYXMgdHlwZW9mIFByb21wdElucHV0Q29tcG9uZW50ICYge1xuICBTdWdnZXN0aW9uQnV0dG9uOiB0eXBlb2YgU3VnZ2VzdGlvbkJ1dHRvbjtcbn07XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBK0VnQyJ9 */"),StyledLeftIconContainer=(0,_styled.default)("div",{target:"e1jgljjd2",label:"StyledLeftIconContainer"})(({theme})=>({position:"absolute",top:(0,_PromptTextArea.getPaddingVertical)(theme),left:(0,_PromptTextArea.getPaddingHorizontal)(theme)}),"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvUHJvbXB0SW5wdXQvUHJvbXB0SW5wdXQudHN4Iiwic291cmNlcyI6WyJzcmMvY29tcG9uZW50cy9Qcm9tcHRJbnB1dC9Qcm9tcHRJbnB1dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBSZWFjdEVsZW1lbnQsXG4gIENoYW5nZUV2ZW50SGFuZGxlcixcbiAgS2V5Ym9hcmRFdmVudEhhbmRsZXIsXG4gIFJlZk9iamVjdCxcbiAgRm9jdXNFdmVudEhhbmRsZXIsXG4gIFN5bnRoZXRpY0V2ZW50LFxuICBNb3VzZUV2ZW50LFxufSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IFJlYWN0LCB7XG4gIHVzZVJlZixcbiAgdXNlTWVtbyxcbiAgdXNlU3RhdGUsXG4gIHVzZUVmZmVjdCxcbiAgdXNlQ2FsbGJhY2ssXG4gIGZvcndhcmRSZWYsXG59IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5cbmltcG9ydCB0eXBlIHsgUHJvbXB0VGV4dEFyZWFQcm9wcyB9IGZyb20gXCIuL1Byb21wdFRleHRBcmVhXCI7XG5pbXBvcnQge1xuICBQcm9tcHRUZXh0QXJlYSxcbiAgZ2V0UGFkZGluZ0hvcml6b250YWwsXG4gIGdldFBhZGRpbmdWZXJ0aWNhbCxcbn0gZnJvbSBcIi4vUHJvbXB0VGV4dEFyZWFcIjtcbmltcG9ydCB7IENvbnRhaW5lciB9IGZyb20gXCIuLi9Db250YWluZXJcIjtcbmltcG9ydCB0eXBlIHsgQXV0b2NvbXBsZXRlTGlzdFByb3BzIH0gZnJvbSBcIi4vQXV0b2NvbXBsZXRlTGlzdFwiO1xuXG5pbXBvcnQgeyBBdXRvY29tcGxldGVMaXN0IH0gZnJvbSBcIi4vQXV0b2NvbXBsZXRlTGlzdFwiO1xuaW1wb3J0IHtcbiAgZ2V0TGlzdEl0ZW1JZCxcbiAgdHlwZSBGbGF0dGVuZWRMaXN0SXRlbSxcbiAgdHlwZSBMaXN0SXRlbVZhbHVlLFxufSBmcm9tIFwiLi9DYXRlZ29yeUxpc3RcIjtcbmltcG9ydCB7IFRleHQgfSBmcm9tIFwiLi4vVHlwb2dyYXBoeS9UZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24sIHR5cGUgQnV0dG9uUHJvcHMgfSBmcm9tIFwiLi4vQnV0dG9uL0J1dHRvblwiO1xuaW1wb3J0IHR5cGUge1xuICBQb2x5bW9ycGhpY1JlZixcbiAgUG9seW1vcnBoaWNDb21wb25lbnRQcm9wc1dpdGhSZWYsXG59IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuaW1wb3J0IHsgSW5saW5lIH0gZnJvbSBcIi4uL0lubGluZS9JbmxpbmVcIjtcbmltcG9ydCB0eXBlIHsgUm91bmRCdXR0b25Qcm9wcyB9IGZyb20gXCIuLi9Sb3VuZEJ1dHRvbi9Sb3VuZEJ1dHRvblwiO1xuaW1wb3J0IHsgUm91bmRCdXR0b24gfSBmcm9tIFwiLi4vUm91bmRCdXR0b24vUm91bmRCdXR0b25cIjtcbmltcG9ydCB0eXBlIHsgUGljdG9ncmFtQnV0dG9uUHJvcHMgfSBmcm9tIFwiLi4vUGljdG9ncmFtQnV0dG9uL1BpY3RvZ3JhbUJ1dHRvblwiO1xuaW1wb3J0IHsgUGljdG9ncmFtQnV0dG9uIH0gZnJvbSBcIi4uL1BpY3RvZ3JhbUJ1dHRvbi9QaWN0b2dyYW1CdXR0b25cIjtcbmltcG9ydCB7IFN0YWNrIH0gZnJvbSBcIi4uL1N0YWNrL1N0YWNrXCI7XG5pbXBvcnQgeyB1c2VPdXRzaWRlQ2xpY2sgfSBmcm9tIFwiLi4vLi4vc2hhcmVkL3VzZU91dHNpZGVDbGlja1wiO1xuaW1wb3J0IHR5cGUgeyBJY29uTmFtZSB9IGZyb20gXCIuLi9JY29uL0ljb25cIjtcbmltcG9ydCB7IEljb24gfSBmcm9tIFwiLi4vSWNvbi9JY29uXCI7XG5pbXBvcnQgeyBTdWJUaGVtZVByb3ZpZGVyIH0gZnJvbSBcIi4uL1N1YlRoZW1lUHJvdmlkZXIvU3ViVGhlbWVQcm92aWRlclwiO1xuaW1wb3J0IHsgQW5pbWF0ZWRCb3JkZXIgfSBmcm9tIFwiLi4vVXRpbGl0aWVzL0FuaW1hdGVkQm9yZGVyL0FuaW1hdGVkQm9yZGVyXCI7XG5cbmNvbnN0IEN1c3RvbUNvbnRhaW5lciA9IHN0eWxlZChDb250YWluZXIpPHtcbiAgaGlkZUJvcmRlcjogYm9vbGVhbjtcbiAgaGFzU2hhZG93OiBib29sZWFuO1xufT4oKHsgdGhlbWUsIGhpZGVCb3JkZXIsIGhhc1NoYWRvdyB9KSA9PiAoe1xuICBib3JkZXI6IGAxcHggc29saWQgJHt0aGVtZS52YWx1ZXMuY29sb3IuYm9yZGVyLnByaW1hcnkuZGVmYXVsdH1gLFxuICAuLi4oaGFzU2hhZG93ICYmIHtcbiAgICBib3hTaGFkb3c6IHRoZW1lLnZhbHVlcy5zaGFkb3cuZGVmYXVsdFJpbmcsXG4gICAgdHJhbnNpdGlvblByb3BlcnR5OiBcImJveC1zaGFkb3csIGJvcmRlci1jb2xvciwgb3V0bGluZS1jb2xvclwiLFxuICAgIHRyYW5zaXRpb25EdXJhdGlvbjogdGhlbWUudmFyaWFibGVzLmFuaW1hdGlvbi5wcm9tcHRJbnB1dC5mb2N1cy5kdXJhdGlvbixcbiAgICB0cmFuc2l0aW9uVGltaW5nRnVuY3Rpb246XG4gICAgICB0aGVtZS52YXJpYWJsZXMuYW5pbWF0aW9uLnByb21wdElucHV0LmZvY3VzLnRpbWluZ0Z1bmN0aW9uLFxuICB9KSxcbiAgLi4uKGhpZGVCb3JkZXIgJiYge1xuICAgIGJvcmRlckNvbG9yOiBcInRyYW5zcGFyZW50XCIsXG4gIH0pLFxuICBjdXJzb3I6IFwidGV4dFwiLFxuICBvdXRsaW5lQ29sb3I6IFwidHJhbnNwYXJlbnRcIixcbiAgW2AmOmhhcyh0ZXh0YXJlYTpmb2N1cy12aXNpYmxlKWBdOiB7XG4gICAgb3V0bGluZVdpZHRoOiAxLFxuICAgIG91dGxpbmVTdHlsZTogXCJzb2xpZFwiLFxuICAgIG91dGxpbmVPZmZzZXQ6IC0xLFxuICAgIGJveFNoYWRvdzogdGhlbWUudmFsdWVzLnNoYWRvdy5mb2N1c1JpbmcsXG4gICAgb3V0bGluZUNvbG9yOiB0aGVtZS52YWx1ZXMuY29sb3IuYm9yZGVyLmFjY2VudC5kZWZhdWx0LFxuICB9LFxufSkpO1xuXG5jb25zdCBTdHlsZWRUZXh0QXJlYUNvbnRhaW5lciA9IHN0eWxlZC5kaXYoe1xuICBib3JkZXJSYWRpdXM6IFwiaW5oZXJpdFwiLFxuICBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiLFxuICB3aWR0aDogXCIxMDAlXCIsXG59KTtcblxuY29uc3QgU3R5bGVkTGVmdEljb25Db250YWluZXIgPSBzdHlsZWQuZGl2KCh7IHRoZW1lIH0pID0+ICh7XG4gIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gIHRvcDogZ2V0UGFkZGluZ1ZlcnRpY2FsKHRoZW1lKSxcbiAgbGVmdDogZ2V0UGFkZGluZ0hvcml6b250YWwodGhlbWUpLFxufSkpO1xuXG50eXBlIFN0eWxlZEVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnRDb250YWluZXJQcm9wcyA9IFBpY2s8XG4gIFByb21wdElucHV0UHJvcHMsXG4gIFwiaXNOYXZCYXJWYXJpYW50XCJcbj47XG5cbmNvbnN0IFN0eWxlZEVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnRDb250YWluZXIgPVxuICBzdHlsZWQuZGl2PFN0eWxlZEVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnRDb250YWluZXJQcm9wcz4oXG4gICAgKHsgdGhlbWUsIGlzTmF2QmFyVmFyaWFudCB9KSA9PiAoe1xuICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgIHRvcDogaXNOYXZCYXJWYXJpYW50XG4gICAgICAgID8gdGhlbWUudmFyaWFibGVzLnNpemUuc3BhY2luZy54eHNcbiAgICAgICAgOiBnZXRQYWRkaW5nVmVydGljYWwodGhlbWUpLFxuICAgICAgcmlnaHQ6IGdldFBhZGRpbmdIb3Jpem9udGFsKHRoZW1lKSxcbiAgICAgIHVzZXJTZWxlY3Q6IFwibm9uZVwiLFxuICAgICAgcG9pbnRlckV2ZW50czogXCJub25lXCIsXG4gICAgfSlcbiAgKTtcblxudHlwZSBTdHlsZWRDbGVhckJ1dHRvblByb3BzID0gUGljdG9ncmFtQnV0dG9uUHJvcHMgJlxuICBQaWNrPFByb21wdElucHV0UHJvcHMsIFwiaXNOYXZCYXJWYXJpYW50XCI+O1xuXG5jb25zdCBTdHlsZWRDbGVhckJ1dHRvbiA9IHN0eWxlZChQaWN0b2dyYW1CdXR0b24pPFN0eWxlZENsZWFyQnV0dG9uUHJvcHM+KFxuICAoeyB0aGVtZSwgaXNOYXZCYXJWYXJpYW50IH0pID0+ICh7XG4gICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICByaWdodDogdGhlbWUudmFyaWFibGVzLnNpemUuc3BhY2luZy5zLFxuICAgIHRvcDogaXNOYXZCYXJWYXJpYW50ID8gMCA6IHRoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcucyxcbiAgfSlcbik7XG5cbmNvbnN0IFN0eWxlZFNsb3RzQ29udGFpbmVyID0gc3R5bGVkLmRpdih7XG4gIGRpc3BsYXk6IFwiZmxleFwiLFxuICBmbGV4V3JhcDogXCJ3cmFwXCIsXG4gIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG59KTtcblxuLy8gSXQgbmVlZHMgbWFyZ2luIGR1ZSB0byBlbXB0eSBjbGlja2FibGUgc3BhY2UgdGhhdCBmb2N1c2VzIHRoZSB0ZXh0YXJlYVxuLy8gU2xvdHMgc2hvdWxkIG5vdCBiZSBpbiB0aGUgZGl2LCBiZWNhdXNlIGFyZWEgYmV0d2VlbiBzaG91bGQgYmUgY2xpY2thYmxlIGFsc29cbnR5cGUgU2xvdFByb3BzID0ge1xuICBzaWRlPzogXCJyaWdodFwiO1xufTtcbmNvbnN0IFN0eWxlZFNsb3QgPSBzdHlsZWQuZGl2PFNsb3RQcm9wcz4oKHsgdGhlbWUsIHNpZGUgfSkgPT4gKHtcbiAgbWFyZ2luOiBgMCAke3RoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcuc30gJHt0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnN9YCxcblxuICAuLi4oc2lkZSA9PT0gXCJyaWdodFwiICYmIHtcbiAgICBtYXJnaW5MZWZ0OiBcImF1dG9cIixcbiAgfSksXG59KSk7XG5cbnR5cGUgU2VuZEJ1dHRvblByb3BzID0gT21pdDxSb3VuZEJ1dHRvblByb3BzLCBcImljb25cIiB8IFwidmFyaWFudFwiPiAmIHtcbiAgaWNvbj86IFwiYXJyb3ctdXBcIiB8IFwic2VhcmNoXCIgfCBcImFycm93LXJpZ2h0XCIgfCBcInZvaWNlXCI7XG59O1xuXG50eXBlIEJvdHRvbVRvb2xiYXJDb25maWcgPSB7XG4gIC8qKiBUb29sYmFyIGVsZW1lbnRzIGJlbG93IHRleHQgYXJlYSAqL1xuICBsZWZ0Q29udGVudD86IFJlYWN0RWxlbWVudDtcbiAgcmlnaHRDb250ZW50PzogUmVhY3RFbGVtZW50O1xufTtcblxuZXhwb3J0IHR5cGUgUHJvbXB0SW5wdXRQcm9wcyA9IHtcbiAgXCJkYXRhLWUyZS10ZXN0LWlkXCI/OiBzdHJpbmc7XG4gIHZhcmlhbnQ/OiBcImFpXCI7XG4gIHNraXBBSUFuaW1hdGlvbj86IGJvb2xlYW47XG4gIGJvdHRvbVRvb2xiYXI/OiBCb3R0b21Ub29sYmFyQ29uZmlnO1xuICBzZW5kQnV0dG9uUHJvcHM/OiBTZW5kQnV0dG9uUHJvcHM7XG4gIC8qKiBDdXJyZW50bHkgc2hvd3Mgc2VuZCBidXR0b24gcHJvY2Vzc2luZyBzdGF0ZSAgKi9cbiAgaXNQcm9jZXNzaW5nPzogYm9vbGVhbjtcbiAgY2xlYXJCdXR0b25BcmlhTGFiZWw/OiBzdHJpbmc7XG4gIGhpbnQ/OiBSZWFjdEVsZW1lbnQ7XG4gIC8qKiBTaG93cyBpbiB0aGUgY2xlYXIgYnV0dG9uIHNwYWNlIGluIGVtcHR5IHN0YXRlICovXG4gIGVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnQ/OiBSZWFjdEVsZW1lbnQ7XG4gIG9uQ2xlYXI6ICgpID0+IHZvaWQ7XG4gIC8qKiBDYWxsZWQgd2hlbiB1c2VyIHNlbGVjdHMgKG9yIHJlamVjdHMpIGEgbGlzdCBpdGVtIGZyb20gYXV0b2NvbXBsZXRlIGxpc3QgKi9cbiAgb25Db21wbGV0ZT86ICh7XG4gICAgdmFsdWUsXG4gICAgY2F0ZWdvcnksXG4gICAgZXZ0LFxuICAgIGluZGV4LFxuICB9OiB7XG4gICAgdmFsdWU6IExpc3RJdGVtVmFsdWU7XG4gICAgY2F0ZWdvcnk/OiBzdHJpbmc7XG4gICAgZXZ0PzogU3ludGhldGljRXZlbnQ7XG4gICAgaW5kZXg/OiBudW1iZXI7XG4gIH0pID0+IHZvaWQ7XG4gIC8qKiBDYWxsZWQgb24gRW50ZXIga2V5IHRvIHN1Ym1pdCB0aGUgZm9ybSAgKi9cbiAgb25FbnRlcktleTogKCkgPT4gdm9pZDtcbiAgLyoqIFJlbmRlcnMgYW4gaWNvbiB0byB0aGUgbGVmdCBpbnNpZGUgdGhlIHRleHRhcmVhICovXG4gIGxlZnRJY29uPzogSWNvbk5hbWU7XG59ICYgT21pdDxcbiAgUHJvbXB0VGV4dEFyZWFQcm9wcyxcbiAgXCJpc0NvbGxhcHNlZFwiIHwgXCJpc0F1dG9jb21wbGV0ZUxpc3RPcGVuXCIgfCBcInNlbGVjdGVkTGlzdEl0ZW1cIiB8IFwiaGFzTGVmdEljb25cIlxuPiAmXG4gIFBpY2s8XG4gICAgQXV0b2NvbXBsZXRlTGlzdFByb3BzLFxuICAgIFwiYXV0b2NvbXBsZXRlTGlzdEl0ZW1zXCIgfCBcImF1dG9jb21wbGV0ZUxpc3RGb290ZXJcIiB8IFwicG9ydGFsQ29udGFpbmVyXCJcbiAgPjtcblxuY29uc3QgZGVmYXVsdFNlbmRCdXR0b25Qcm9wczogU2VuZEJ1dHRvblByb3BzID0ge1xuICB0eXBlOiBcInN1Ym1pdFwiIGFzIGNvbnN0LFxuICBpY29uOiBcImFycm93LXVwXCIgYXMgY29uc3QsXG59O1xuXG5jb25zdCBQcm9tcHRJbnB1dENvbXBvbmVudCA9IGZvcndhcmRSZWYoXG4gIChcbiAgICB7XG4gICAgICBcImRhdGEtZTJlLXRlc3QtaWRcIjogZGF0YUUyZVRlc3RJZCxcbiAgICAgIG5hbWUsXG4gICAgICBhdXRvY29tcGxldGVMaXN0SXRlbXMgPSBbXSxcbiAgICAgIHZhbHVlLFxuICAgICAgYm90dG9tVG9vbGJhcixcbiAgICAgIGlzUHJvY2Vzc2luZyxcbiAgICAgIHNlbmRCdXR0b25Qcm9wcyxcbiAgICAgIGF1dG9jb21wbGV0ZUxpc3RGb290ZXIsXG4gICAgICBjbGVhckJ1dHRvbkFyaWFMYWJlbCA9IFwiQ2xlYXIgaW5wdXRcIixcbiAgICAgIGhpbnQsXG4gICAgICBlbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50LFxuICAgICAgaXNOYXZCYXJWYXJpYW50LFxuICAgICAgcG9ydGFsQ29udGFpbmVyLFxuICAgICAgbGVmdEljb24sXG4gICAgICBvbkNoYW5nZSxcbiAgICAgIG9uQ29tcGxldGUsXG4gICAgICBvbkNsZWFyLFxuICAgICAgb25FbnRlcktleSxcbiAgICAgIG9uRm9jdXMsXG4gICAgICBvbkJsdXIsXG4gICAgICBvbktleURvd24sXG4gICAgICB2YXJpYW50LFxuICAgICAgc2tpcEFJQW5pbWF0aW9uID0gZmFsc2UsXG4gICAgICAuLi5yZXN0XG4gICAgfTogUHJvbXB0SW5wdXRQcm9wcyxcbiAgICByZWY6IFJlZk9iamVjdDxIVE1MVGV4dEFyZWFFbGVtZW50PlxuICApOiBSZWFjdEVsZW1lbnQgPT4ge1xuICAgIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gICAgY29uc3QgdGV4dEFyZWFDb250YWluZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICAgIGNvbnN0IGludGVybmFsUmVmID0gdXNlUmVmPEhUTUxUZXh0QXJlYUVsZW1lbnQ+KG51bGwpO1xuICAgIGNvbnN0IFtzZWxlY3RlZEluZGV4LCBzZXRTZWxlY3RlZEluZGV4XSA9IHVzZVN0YXRlKC0xKTtcbiAgICBjb25zdCBbaXNDb2xsYXBzZWQsIHNldElzQ29sbGFwc2VkXSA9IHVzZVN0YXRlKGlzTmF2QmFyVmFyaWFudCk7XG4gICAgY29uc3QgdXNlclR5cGVkUXVlcnkgPSB1c2VSZWYoXCJcIik7XG4gICAgY29uc3QgW2lzQXV0b2NvbXBsZXRlTGlzdE9wZW4sIHNldElzQXV0b2NvbXBsZXRlTGlzdE9wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IHRleHRBcmVhUmVmID0gcmVmIHx8IGludGVybmFsUmVmO1xuXG4gICAgY29uc3QgbWVyZ2VkU2VuZEJ1dHRvblByb3BzID0ge1xuICAgICAgLi4uZGVmYXVsdFNlbmRCdXR0b25Qcm9wcyxcbiAgICAgIC4uLihzZW5kQnV0dG9uUHJvcHMgPz8ge30pLFxuICAgIH07XG5cbiAgICB1c2VPdXRzaWRlQ2xpY2soXG4gICAgICBjb250YWluZXJSZWYsXG4gICAgICAoZXZ0KSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhY29udGFpbmVyUmVmLmN1cnJlbnQuY29udGFpbnMoZXZ0LnRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgICAgICFwb3J0YWxDb250YWluZXI/LmNvbnRhaW5zKGV2dC50YXJnZXQgYXMgTm9kZSkgJiZcbiAgICAgICAgICBldnQudGFyZ2V0ICE9PSBudWxsXG4gICAgICAgICkge1xuICAgICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgIWlzQ29sbGFwc2VkICYmIGlzTmF2QmFyVmFyaWFudFxuICAgICk7XG5cbiAgICBjb25zdCBjbG9zZUF1dG9jb21wbGV0ZUxpc3QgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBzZXRJc0F1dG9jb21wbGV0ZUxpc3RPcGVuKGZhbHNlKTtcbiAgICAgIHNldFNlbGVjdGVkSW5kZXgoLTEpO1xuICAgIH0sIFtdKTtcblxuICAgIGNvbnN0IG9wZW5BdXRvY29tcGxldGVMaXN0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgaWYgKGF1dG9jb21wbGV0ZUxpc3RJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgc2V0SXNBdXRvY29tcGxldGVMaXN0T3Blbih0cnVlKTtcbiAgICAgICAgc2V0U2VsZWN0ZWRJbmRleCgtMSk7XG4gICAgICB9XG4gICAgfSwgW2F1dG9jb21wbGV0ZUxpc3RJdGVtc10pO1xuXG4gICAgY29uc3QgYWNjZXB0VGV4dFNlbGVjdGlvbiA9ICgpID0+IHtcbiAgICAgIHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQgPSB2YWx1ZTtcbiAgICAgIGlmIChcbiAgICAgICAgdGV4dEFyZWFSZWYuY3VycmVudC5zZWxlY3Rpb25TdGFydCAhPT0gdGV4dEFyZWFSZWYuY3VycmVudC5zZWxlY3Rpb25FbmRcbiAgICAgICkge1xuICAgICAgICB0ZXh0QXJlYVJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKHZhbHVlLmxlbmd0aCwgdmFsdWUubGVuZ3RoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmIChhdXRvY29tcGxldGVMaXN0SXRlbXMubGVuZ3RoICYmICFpc0NvbGxhcHNlZCkge1xuICAgICAgICBvcGVuQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2xvc2VBdXRvY29tcGxldGVMaXN0KCk7XG4gICAgICB9XG4gICAgfSwgW1xuICAgICAgYXV0b2NvbXBsZXRlTGlzdEl0ZW1zLFxuICAgICAgb3BlbkF1dG9jb21wbGV0ZUxpc3QsXG4gICAgICBjbG9zZUF1dG9jb21wbGV0ZUxpc3QsXG4gICAgICBpc0NvbGxhcHNlZCxcbiAgICBdKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAodmFsdWUgJiYgdmFsdWUgIT09IHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQgJiYgaXNBdXRvY29tcGxldGVMaXN0T3Blbikge1xuICAgICAgICB0ZXh0QXJlYVJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKFxuICAgICAgICAgIHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQubGVuZ3RoLFxuICAgICAgICAgIHZhbHVlLmxlbmd0aFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0sIFt2YWx1ZSwgdGV4dEFyZWFSZWYsIGlzQXV0b2NvbXBsZXRlTGlzdE9wZW5dKTtcblxuICAgIC8vIERldGVybWluZSB3aGVuIGZvY3VzIGxlYXZlcyB0aGUgY29udGFpbmVyIHRvIGNvbGxhcHNlIGl0XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGxldCBoYW5kbGVyOiAoZXZ0OiBGb2N1c0V2ZW50KSA9PiB2b2lkO1xuICAgICAgY29uc3QgY29udGFpbmVyID0gY29udGFpbmVyUmVmLmN1cnJlbnQ7XG5cbiAgICAgIGlmIChpc05hdkJhclZhcmlhbnQgJiYgY29udGFpbmVyKSB7XG4gICAgICAgIGhhbmRsZXIgPSAoZXZ0OiBGb2N1c0V2ZW50KSA9PiB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgIWNvbnRhaW5lclJlZi5jdXJyZW50LmNvbnRhaW5zKGV2dC5yZWxhdGVkVGFyZ2V0IGFzIE5vZGUpICYmXG4gICAgICAgICAgICAhcG9ydGFsQ29udGFpbmVyPy5jb250YWlucyhldnQucmVsYXRlZFRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgICAgICAgZXZ0LnJlbGF0ZWRUYXJnZXQgIT09IG51bGxcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c291dFwiLCBoYW5kbGVyKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiZm9jdXNvdXRcIiwgaGFuZGxlcik7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSwgW2lzTmF2QmFyVmFyaWFudCwgY29udGFpbmVyUmVmLCBwb3J0YWxDb250YWluZXJdKTtcblxuICAgIGNvbnN0IGZsYXR0ZW5lZExpc3RJdGVtcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgY29uc3QgbGlzdDogRmxhdHRlbmVkTGlzdEl0ZW1bXSA9IFtdO1xuXG4gICAgICBhdXRvY29tcGxldGVMaXN0SXRlbXMuZm9yRWFjaCgobGlzdEl0ZW0pID0+IHtcbiAgICAgICAgbGlzdEl0ZW0uaXRlbXMuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICBsaXN0LnB1c2goe1xuICAgICAgICAgICAgY2F0ZWdvcnk6IGxpc3RJdGVtLmNhdGVnb3J5LFxuICAgICAgICAgICAgaW5kZXhJbkNhdGVnb3J5OiBpbmRleCxcbiAgICAgICAgICAgIHZhbHVlOiBpdGVtLnZhbHVlLFxuICAgICAgICAgICAgaWQ6IGdldExpc3RJdGVtSWQobmFtZSwgbGlzdEl0ZW0uY2F0ZWdvcnksIGluZGV4KSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBsaXN0O1xuICAgIH0sIFthdXRvY29tcGxldGVMaXN0SXRlbXMsIG5hbWVdKTtcblxuICAgIGNvbnN0IGhhbmRsZVNlbGVjdGVkSW5kZXhDaGFuZ2UgPSAoaW5kZXg6IG51bWJlciwgZXZ0PzogU3ludGhldGljRXZlbnQpID0+IHtcbiAgICAgIHNldFNlbGVjdGVkSW5kZXgoaW5kZXgpO1xuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBjb25zdCB7IGNhdGVnb3J5LCB2YWx1ZTogaXRlbVZhbHVlIH0gPSBmbGF0dGVuZWRMaXN0SXRlbXNbaW5kZXhdO1xuXG4gICAgICAgIG9uQ29tcGxldGUoeyB2YWx1ZTogaXRlbVZhbHVlLCBjYXRlZ29yeSwgZXZ0LCBpbmRleCB9KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlTGlzdEl0ZW1DbGljayA9IChcbiAgICAgIGNhdGVnb3J5OiBzdHJpbmcsXG4gICAgICBpbmRleEluQ2F0ZWdvcnk6IG51bWJlcixcbiAgICAgIGV2dD86IE1vdXNlRXZlbnRcbiAgICApID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ID0gZmxhdHRlbmVkTGlzdEl0ZW1zLmZpbmRJbmRleChcbiAgICAgICAgKGxpc3RJdGVtKSA9PlxuICAgICAgICAgIGxpc3RJdGVtLmNhdGVnb3J5ID09PSBjYXRlZ29yeSAmJlxuICAgICAgICAgIGxpc3RJdGVtLmluZGV4SW5DYXRlZ29yeSA9PT0gaW5kZXhJbkNhdGVnb3J5XG4gICAgICApO1xuXG4gICAgICBoYW5kbGVTZWxlY3RlZEluZGV4Q2hhbmdlKGluZGV4LCBldnQpO1xuICAgICAgY2xvc2VBdXRvY29tcGxldGVMaXN0KCk7XG4gICAgICBpZiAoaXNOYXZCYXJWYXJpYW50KSB7XG4gICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVLZXlEb3duOiBLZXlib2FyZEV2ZW50SGFuZGxlcjxIVE1MVGV4dEFyZWFFbGVtZW50PiA9IChldnQpID0+IHtcbiAgICAgIGlmIChpc0F1dG9jb21wbGV0ZUxpc3RPcGVuKSB7XG4gICAgICAgIHN3aXRjaCAoZXZ0LmtleSkge1xuICAgICAgICAgIGNhc2UgXCJFc2NhcGVcIjpcbiAgICAgICAgICAgIGNsb3NlQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgICAgICAgb25Db21wbGV0ZSh7IHZhbHVlOiB1c2VyVHlwZWRRdWVyeS5jdXJyZW50LCBldnQgfSk7XG4gICAgICAgICAgICBpZiAoaXNOYXZCYXJWYXJpYW50KSB7XG4gICAgICAgICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBcIkVudGVyXCI6XG4gICAgICAgICAgICBpZiAoIWV2dC5zaGlmdEtleSkge1xuICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgY2xvc2VBdXRvY29tcGxldGVMaXN0KCk7XG4gICAgICAgICAgICAgIGFjY2VwdFRleHRTZWxlY3Rpb24oKTtcblxuICAgICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBvbkVudGVyS2V5Py4oKTtcbiAgICAgICAgICAgICAgICBpZiAoaXNOYXZCYXJWYXJpYW50KSB7XG4gICAgICAgICAgICAgICAgICBzZXRJc0NvbGxhcHNlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgXCIgXCI6XG4gICAgICAgICAgICBhY2NlcHRUZXh0U2VsZWN0aW9uKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFwiQXJyb3dVcFwiOlxuICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgIGhhbmRsZVNlbGVjdGVkSW5kZXhDaGFuZ2Uoc2VsZWN0ZWRJbmRleCAtIDEsIGV2dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFwiQXJyb3dEb3duXCI6XG4gICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZEluZGV4IDwgZmxhdHRlbmVkTGlzdEl0ZW1zLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0ZWRJbmRleENoYW5nZShzZWxlY3RlZEluZGV4ICsgMSwgZXZ0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN3aXRjaCAoZXZ0LmtleSkge1xuICAgICAgICAgIGNhc2UgXCJFc2NhcGVcIjpcbiAgICAgICAgICAgIG9uQ2xlYXI/LigpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBcIkVudGVyXCI6XG4gICAgICAgICAgICBpZiAoIWV2dC5zaGlmdEtleSkge1xuICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgb25FbnRlcktleT8uKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBvbktleURvd24/LihldnQpO1xuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVDaGFuZ2U6IENoYW5nZUV2ZW50SGFuZGxlcjxIVE1MVGV4dEFyZWFFbGVtZW50PiA9IChldnQpID0+IHtcbiAgICAgIHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQgPSBldnQudGFyZ2V0LnZhbHVlO1xuICAgICAgb25DaGFuZ2UoZXZ0KTtcbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlRm9jdXM6IEZvY3VzRXZlbnRIYW5kbGVyPEhUTUxUZXh0QXJlYUVsZW1lbnQ+ID0gKGV2dCkgPT4ge1xuICAgICAgc2V0SXNDb2xsYXBzZWQoZmFsc2UpO1xuICAgICAgb25Gb2N1cz8uKGV2dCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZUJsdXI6IEZvY3VzRXZlbnRIYW5kbGVyPEhUTUxUZXh0QXJlYUVsZW1lbnQ+ID0gKGV2dCkgPT4ge1xuICAgICAgaWYgKHZhbHVlICE9PSB1c2VyVHlwZWRRdWVyeS5jdXJyZW50KSB7XG4gICAgICAgIG9uQ29tcGxldGU/Lih7IHZhbHVlOiB1c2VyVHlwZWRRdWVyeS5jdXJyZW50LCBldnQgfSk7XG4gICAgICB9XG4gICAgICBvbkJsdXI/LihldnQpO1xuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVTZW5kQnV0dG9uQ2xpY2sgPSAoZXZ0OiBNb3VzZUV2ZW50PEhUTUxCdXR0b25FbGVtZW50PikgPT4ge1xuICAgICAgbWVyZ2VkU2VuZEJ1dHRvblByb3BzLm9uQ2xpY2s/LihldnQpO1xuICAgICAgY2xvc2VBdXRvY29tcGxldGVMaXN0KCk7XG4gICAgICBpZiAoaXNOYXZCYXJWYXJpYW50KSB7XG4gICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVQcmV2ZW50Rm9jdXMgPSAoZXZ0OiBSZWFjdC5Qb2ludGVyRXZlbnQpID0+IHtcbiAgICAgIC8vIFByZXZlbnQgdGhlIHRleHRhcmVhIGZyb20gYmVpbmcgdW5mb2N1c2VkXG4gICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlT25Db250YWluZXJQb2ludGVyRG93biA9IChldnQ6IFJlYWN0LlBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgLy8gRm9jdXMgdGV4dGFyZWEgd2hlbiBjbGlja2luZyBvbiB0aGUgY29udGFpbmVyIG9ubHlcbiAgICAgIGlmIChldnQudGFyZ2V0ID09PSBldnQuY3VycmVudFRhcmdldCkge1xuICAgICAgICB0ZXh0QXJlYVJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3Qgc2VsZWN0ZWRMaXN0SXRlbSA9XG4gICAgICBzZWxlY3RlZEluZGV4ICE9PSAtMSA/IGZsYXR0ZW5lZExpc3RJdGVtc1tzZWxlY3RlZEluZGV4XSA6IG51bGw7XG5cbiAgICBjb25zdCBlbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50RWxtID0gZW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudCA/IChcbiAgICAgIDxTdHlsZWRFbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50Q29udGFpbmVyXG4gICAgICAgIGlzTmF2QmFyVmFyaWFudD17aXNOYXZCYXJWYXJpYW50fVxuICAgICAgPlxuICAgICAgICA8VGV4dCBjb2xvcj1cInRlcnRpYXJ5XCI+e2VtcHR5U3RhdGVUb3BSaWdodENvbnRlbnR9PC9UZXh0PlxuICAgICAgPC9TdHlsZWRFbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50Q29udGFpbmVyPlxuICAgICkgOiBudWxsO1xuXG4gICAgY29uc3QgY2xlYXJCdXR0b25FbG0gPSB2YWx1ZSA/IChcbiAgICAgIDxTdHlsZWRDbGVhckJ1dHRvblxuICAgICAgICBzaXplPVwic1wiXG4gICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgaWNvbj1cIngtY2lyY2xlLWZpbGxlZFwiXG4gICAgICAgIGFyaWEtbGFiZWw9e2NsZWFyQnV0dG9uQXJpYUxhYmVsfVxuICAgICAgICBpc05hdkJhclZhcmlhbnQ9e2lzTmF2QmFyVmFyaWFudH1cbiAgICAgICAgb25Qb2ludGVyRG93bj17aGFuZGxlUHJldmVudEZvY3VzfVxuICAgICAgICBvbkNsaWNrPXtvbkNsZWFyfVxuICAgICAgLz5cbiAgICApIDogKFxuICAgICAgZW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudEVsbVxuICAgICk7XG5cbiAgICBjb25zdCBoaW50RWxtID0gISFoaW50ICYmIChcbiAgICAgIDxJbmxpbmUgYWxpZ25JdGVtcz1cImNlbnRlclwiPlxuICAgICAgICA8VGV4dCBzaXplPVwic1wiIGNvbG9yPVwidGVydGlhcnlcIj5cbiAgICAgICAgICB7aGludH1cbiAgICAgICAgPC9UZXh0PlxuICAgICAgPC9JbmxpbmU+XG4gICAgKTtcblxuICAgIGNvbnN0IGJvdHRvbVRvb2xiYXJFbG0gPSAoYm90dG9tVG9vbGJhcj8ucmlnaHRDb250ZW50IHx8XG4gICAgICBib3R0b21Ub29sYmFyPy5sZWZ0Q29udGVudCB8fFxuICAgICAgISFzZW5kQnV0dG9uUHJvcHMpICYmXG4gICAgICAhaXNDb2xsYXBzZWQgJiYgKFxuICAgICAgICA8PlxuICAgICAgICAgIHtib3R0b21Ub29sYmFyPy5sZWZ0Q29udGVudCAmJiAoXG4gICAgICAgICAgICA8U3R5bGVkU2xvdD57Ym90dG9tVG9vbGJhci5sZWZ0Q29udGVudH08L1N0eWxlZFNsb3Q+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8U3R5bGVkU2xvdCBkYXRhLWUyZS10ZXN0LWlkPVwiYm90dG9tVG9vbGJhclwiIHNpZGU9XCJyaWdodFwiPlxuICAgICAgICAgICAgPElubGluZSBzcGFjZT1cInhzXCIgdkFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAgICAgICAge2JvdHRvbVRvb2xiYXI/LnJpZ2h0Q29udGVudH1cbiAgICAgICAgICAgICAge3NlbmRCdXR0b25Qcm9wcyAmJiAoXG4gICAgICAgICAgICAgICAgPFN1YlRoZW1lUHJvdmlkZXIgbmFtZT17dmFyaWFudH0+XG4gICAgICAgICAgICAgICAgICA8Um91bmRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgYXJpYUF0dHJpYnV0ZXM9e3tcbiAgICAgICAgICAgICAgICAgICAgICBcImFyaWEtbGFiZWxcIjogaXNQcm9jZXNzaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFwiUHJvY2Vzc2luZyBxdWVyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFwiU3VibWl0IHF1ZXJ5XCIsXG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIHsuLi5tZXJnZWRTZW5kQnV0dG9uUHJvcHN9XG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXttZXJnZWRTZW5kQnV0dG9uUHJvcHMuZGlzYWJsZWQgPz8gIXZhbHVlfVxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVTZW5kQnV0dG9uQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlckRvd249e2hhbmRsZVByZXZlbnRGb2N1c31cbiAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICBpY29uPXtcbiAgICAgICAgICAgICAgICAgICAgICBpc1Byb2Nlc3NpbmcgPyBcInN0b3AtZmlsbGVkXCIgOiBtZXJnZWRTZW5kQnV0dG9uUHJvcHMuaWNvblxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvU3ViVGhlbWVQcm92aWRlcj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvSW5saW5lPlxuICAgICAgICAgIDwvU3R5bGVkU2xvdD5cbiAgICAgICAgPC8+XG4gICAgICApO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBkYXRhLWUyZS10ZXN0LWlkPXtkYXRhRTJlVGVzdElkfVxuICAgICAgICAgIGRhdGEtZHMtaWQ9XCJQcm9tcHRJbnB1dFwiXG4gICAgICAgICAgcmVmPXtjb250YWluZXJSZWZ9XG4gICAgICAgICAgLy8gVHJhbnNsYXRpb24gZGlzYWJsZWQgZm9yIGNvbnNpc3RlbmN5IHdpdGggdGhlIGF1dG9jb21wbGV0ZSBsaXN0XG4gICAgICAgICAgdHJhbnNsYXRlPVwibm9cIlxuICAgICAgICA+XG4gICAgICAgICAgPFN0YWNrIHNwYWNlPVwic1wiPlxuICAgICAgICAgICAgPEFuaW1hdGVkQm9yZGVyXG4gICAgICAgICAgICAgIHNraXBBbmltYXRpb249e3NraXBBSUFuaW1hdGlvbiB8fCB2YXJpYW50ICE9PSBcImFpXCJ9XG4gICAgICAgICAgICAgIHJhZGl1cz17MTJ9XG4gICAgICAgICAgICAgIGl0ZXJhdGlvbnM9ezF9XG4gICAgICAgICAgICAgIHRoaWNrbmVzcz17Mn1cbiAgICAgICAgICAgICAgaGlkZUNoaWxkQm9yZGVyXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxTdWJUaGVtZVByb3ZpZGVyIG5hbWU9e3ZhcmlhbnR9PlxuICAgICAgICAgICAgICAgIDxDdXN0b21Db250YWluZXJcbiAgICAgICAgICAgICAgICAgIGVsZXZhdGlvbj17MH1cbiAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1cz17aXNDb2xsYXBzZWQgPyBcInhzXCIgOiBcIm1cIn1cbiAgICAgICAgICAgICAgICAgIGhpZGVCb3JkZXI9e2lzQ29sbGFwc2VkfVxuICAgICAgICAgICAgICAgICAgaGFzU2hhZG93PXshaXNOYXZCYXJWYXJpYW50fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTdWJUaGVtZVByb3ZpZGVyIG5hbWU9XCJ1bnNldFwiPlxuICAgICAgICAgICAgICAgICAgICA8U3R5bGVkU2xvdHNDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICByZWY9e3RleHRBcmVhQ29udGFpbmVyUmVmfVxuICAgICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlckRvd249e2hhbmRsZU9uQ29udGFpbmVyUG9pbnRlckRvd259XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U3R5bGVkVGV4dEFyZWFDb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7bGVmdEljb24gJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8U3R5bGVkTGVmdEljb25Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9e2xlZnRJY29ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJ0ZXJ0aWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3R5bGVkTGVmdEljb25Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPFByb21wdFRleHRBcmVhXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhRTJlVGVzdElkPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhRTJlVGVzdElkID8gYCR7ZGF0YUUyZVRlc3RJZH0taW5wdXRgIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e3RleHRBcmVhUmVmfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpc05hdkJhclZhcmlhbnQ9e2lzTmF2QmFyVmFyaWFudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRMaXN0SXRlbT17c2VsZWN0ZWRMaXN0SXRlbX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNBdXRvY29tcGxldGVMaXN0T3Blbj17aXNBdXRvY29tcGxldGVMaXN0T3Blbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNDb2xsYXBzZWQ9e2lzQ29sbGFwc2VkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNMZWZ0SWNvbj17ISFsZWZ0SWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25Gb2N1cz17aGFuZGxlRm9jdXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3dufVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtjbGVhckJ1dHRvbkVsbX1cbiAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZFRleHRBcmVhQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgIHtib3R0b21Ub29sYmFyRWxtfVxuICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZFNsb3RzQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPC9TdWJUaGVtZVByb3ZpZGVyPlxuICAgICAgICAgICAgICAgIDwvQ3VzdG9tQ29udGFpbmVyPlxuICAgICAgICAgICAgICA8L1N1YlRoZW1lUHJvdmlkZXI+XG4gICAgICAgICAgICA8L0FuaW1hdGVkQm9yZGVyPlxuICAgICAgICAgICAge2hpbnRFbG19XG4gICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPEF1dG9jb21wbGV0ZUxpc3RcbiAgICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICBhdXRvY29tcGxldGVMaXN0SXRlbXM9e2F1dG9jb21wbGV0ZUxpc3RJdGVtc31cbiAgICAgICAgICB0cmlnZ2VyUmVmPXt0ZXh0QXJlYUNvbnRhaW5lclJlZn1cbiAgICAgICAgICBzZWxlY3RlZExpc3RJdGVtPXtzZWxlY3RlZExpc3RJdGVtfVxuICAgICAgICAgIGlzT3Blbj17aXNBdXRvY29tcGxldGVMaXN0T3Blbn1cbiAgICAgICAgICBhdXRvY29tcGxldGVMaXN0Rm9vdGVyPXthdXRvY29tcGxldGVMaXN0Rm9vdGVyfVxuICAgICAgICAgIHBvcnRhbENvbnRhaW5lcj17cG9ydGFsQ29udGFpbmVyfVxuICAgICAgICAgIG9uTGlzdEl0ZW1DbGljaz17aGFuZGxlTGlzdEl0ZW1DbGlja31cbiAgICAgICAgLz5cbiAgICAgIDwvPlxuICAgICk7XG4gIH1cbik7XG5cbmNvbnN0IEN1c3RvbUJ1dHRvbiA9IHN0eWxlZChCdXR0b24pKCh7IHRoZW1lIH0pID0+ICh7XG4gIGJvcmRlclJhZGl1czogdGhlbWUudmFyaWFibGVzLnNpemUuYm9yZGVyUmFkaXVzLmwsXG59KSk7XG5cbi8vIG5lZWQgdG8gc2ltcGxpZnkgdGhpcyB0eXBlIGZvciByZXVzZVxuY29uc3QgU3VnZ2VzdGlvbkJ1dHRvbiA9IGZvcndhcmRSZWYoXG4gIDxDIGV4dGVuZHMgUmVhY3QuRWxlbWVudFR5cGUgPSBcImJ1dHRvblwiPihcbiAgICBwcm9wczogUG9seW1vcnBoaWNDb21wb25lbnRQcm9wc1dpdGhSZWY8XG4gICAgICBDLFxuICAgICAgT21pdDxCdXR0b25Qcm9wcywgXCJ2YXJpYW50XCIgfCBcInNpemVcIiB8IFwicmVmXCI+XG4gICAgPixcbiAgICByZWY6IFBvbHltb3JwaGljUmVmPEM+XG4gICkgPT4gPEN1c3RvbUJ1dHRvbiB7Li4ucHJvcHN9IHZhcmlhbnQ9XCJzZWNvbmRhcnlcIiBzaXplPVwic1wiIHJlZj17cmVmfSAvPlxuKTtcblxuZXhwb3J0IGNvbnN0IFByb21wdElucHV0ID0gT2JqZWN0LmFzc2lnbihQcm9tcHRJbnB1dENvbXBvbmVudCwge1xuICBTdWdnZXN0aW9uQnV0dG9uLFxufSkgYXMgdHlwZW9mIFByb21wdElucHV0Q29tcG9uZW50ICYge1xuICBTdWdnZXN0aW9uQnV0dG9uOiB0eXBlb2YgU3VnZ2VzdGlvbkJ1dHRvbjtcbn07XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBcUZnQyJ9 */"),StyledEmptyStateTopRightContentContainer=(0,_styled.default)("div",{target:"e1jgljjd3",label:"StyledEmptyStateTopRightContentContainer"})(({theme,isNavBarVariant})=>({position:"absolute",top:isNavBarVariant?theme.variables.size.spacing.xxs:(0,_PromptTextArea.getPaddingVertical)(theme),right:(0,_PromptTextArea.getPaddingHorizontal)(theme),userSelect:"none",pointerEvents:"none"}),"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvUHJvbXB0SW5wdXQvUHJvbXB0SW5wdXQudHN4Iiwic291cmNlcyI6WyJzcmMvY29tcG9uZW50cy9Qcm9tcHRJbnB1dC9Qcm9tcHRJbnB1dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBSZWFjdEVsZW1lbnQsXG4gIENoYW5nZUV2ZW50SGFuZGxlcixcbiAgS2V5Ym9hcmRFdmVudEhhbmRsZXIsXG4gIFJlZk9iamVjdCxcbiAgRm9jdXNFdmVudEhhbmRsZXIsXG4gIFN5bnRoZXRpY0V2ZW50LFxuICBNb3VzZUV2ZW50LFxufSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IFJlYWN0LCB7XG4gIHVzZVJlZixcbiAgdXNlTWVtbyxcbiAgdXNlU3RhdGUsXG4gIHVzZUVmZmVjdCxcbiAgdXNlQ2FsbGJhY2ssXG4gIGZvcndhcmRSZWYsXG59IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5cbmltcG9ydCB0eXBlIHsgUHJvbXB0VGV4dEFyZWFQcm9wcyB9IGZyb20gXCIuL1Byb21wdFRleHRBcmVhXCI7XG5pbXBvcnQge1xuICBQcm9tcHRUZXh0QXJlYSxcbiAgZ2V0UGFkZGluZ0hvcml6b250YWwsXG4gIGdldFBhZGRpbmdWZXJ0aWNhbCxcbn0gZnJvbSBcIi4vUHJvbXB0VGV4dEFyZWFcIjtcbmltcG9ydCB7IENvbnRhaW5lciB9IGZyb20gXCIuLi9Db250YWluZXJcIjtcbmltcG9ydCB0eXBlIHsgQXV0b2NvbXBsZXRlTGlzdFByb3BzIH0gZnJvbSBcIi4vQXV0b2NvbXBsZXRlTGlzdFwiO1xuXG5pbXBvcnQgeyBBdXRvY29tcGxldGVMaXN0IH0gZnJvbSBcIi4vQXV0b2NvbXBsZXRlTGlzdFwiO1xuaW1wb3J0IHtcbiAgZ2V0TGlzdEl0ZW1JZCxcbiAgdHlwZSBGbGF0dGVuZWRMaXN0SXRlbSxcbiAgdHlwZSBMaXN0SXRlbVZhbHVlLFxufSBmcm9tIFwiLi9DYXRlZ29yeUxpc3RcIjtcbmltcG9ydCB7IFRleHQgfSBmcm9tIFwiLi4vVHlwb2dyYXBoeS9UZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24sIHR5cGUgQnV0dG9uUHJvcHMgfSBmcm9tIFwiLi4vQnV0dG9uL0J1dHRvblwiO1xuaW1wb3J0IHR5cGUge1xuICBQb2x5bW9ycGhpY1JlZixcbiAgUG9seW1vcnBoaWNDb21wb25lbnRQcm9wc1dpdGhSZWYsXG59IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuaW1wb3J0IHsgSW5saW5lIH0gZnJvbSBcIi4uL0lubGluZS9JbmxpbmVcIjtcbmltcG9ydCB0eXBlIHsgUm91bmRCdXR0b25Qcm9wcyB9IGZyb20gXCIuLi9Sb3VuZEJ1dHRvbi9Sb3VuZEJ1dHRvblwiO1xuaW1wb3J0IHsgUm91bmRCdXR0b24gfSBmcm9tIFwiLi4vUm91bmRCdXR0b24vUm91bmRCdXR0b25cIjtcbmltcG9ydCB0eXBlIHsgUGljdG9ncmFtQnV0dG9uUHJvcHMgfSBmcm9tIFwiLi4vUGljdG9ncmFtQnV0dG9uL1BpY3RvZ3JhbUJ1dHRvblwiO1xuaW1wb3J0IHsgUGljdG9ncmFtQnV0dG9uIH0gZnJvbSBcIi4uL1BpY3RvZ3JhbUJ1dHRvbi9QaWN0b2dyYW1CdXR0b25cIjtcbmltcG9ydCB7IFN0YWNrIH0gZnJvbSBcIi4uL1N0YWNrL1N0YWNrXCI7XG5pbXBvcnQgeyB1c2VPdXRzaWRlQ2xpY2sgfSBmcm9tIFwiLi4vLi4vc2hhcmVkL3VzZU91dHNpZGVDbGlja1wiO1xuaW1wb3J0IHR5cGUgeyBJY29uTmFtZSB9IGZyb20gXCIuLi9JY29uL0ljb25cIjtcbmltcG9ydCB7IEljb24gfSBmcm9tIFwiLi4vSWNvbi9JY29uXCI7XG5pbXBvcnQgeyBTdWJUaGVtZVByb3ZpZGVyIH0gZnJvbSBcIi4uL1N1YlRoZW1lUHJvdmlkZXIvU3ViVGhlbWVQcm92aWRlclwiO1xuaW1wb3J0IHsgQW5pbWF0ZWRCb3JkZXIgfSBmcm9tIFwiLi4vVXRpbGl0aWVzL0FuaW1hdGVkQm9yZGVyL0FuaW1hdGVkQm9yZGVyXCI7XG5cbmNvbnN0IEN1c3RvbUNvbnRhaW5lciA9IHN0eWxlZChDb250YWluZXIpPHtcbiAgaGlkZUJvcmRlcjogYm9vbGVhbjtcbiAgaGFzU2hhZG93OiBib29sZWFuO1xufT4oKHsgdGhlbWUsIGhpZGVCb3JkZXIsIGhhc1NoYWRvdyB9KSA9PiAoe1xuICBib3JkZXI6IGAxcHggc29saWQgJHt0aGVtZS52YWx1ZXMuY29sb3IuYm9yZGVyLnByaW1hcnkuZGVmYXVsdH1gLFxuICAuLi4oaGFzU2hhZG93ICYmIHtcbiAgICBib3hTaGFkb3c6IHRoZW1lLnZhbHVlcy5zaGFkb3cuZGVmYXVsdFJpbmcsXG4gICAgdHJhbnNpdGlvblByb3BlcnR5OiBcImJveC1zaGFkb3csIGJvcmRlci1jb2xvciwgb3V0bGluZS1jb2xvclwiLFxuICAgIHRyYW5zaXRpb25EdXJhdGlvbjogdGhlbWUudmFyaWFibGVzLmFuaW1hdGlvbi5wcm9tcHRJbnB1dC5mb2N1cy5kdXJhdGlvbixcbiAgICB0cmFuc2l0aW9uVGltaW5nRnVuY3Rpb246XG4gICAgICB0aGVtZS52YXJpYWJsZXMuYW5pbWF0aW9uLnByb21wdElucHV0LmZvY3VzLnRpbWluZ0Z1bmN0aW9uLFxuICB9KSxcbiAgLi4uKGhpZGVCb3JkZXIgJiYge1xuICAgIGJvcmRlckNvbG9yOiBcInRyYW5zcGFyZW50XCIsXG4gIH0pLFxuICBjdXJzb3I6IFwidGV4dFwiLFxuICBvdXRsaW5lQ29sb3I6IFwidHJhbnNwYXJlbnRcIixcbiAgW2AmOmhhcyh0ZXh0YXJlYTpmb2N1cy12aXNpYmxlKWBdOiB7XG4gICAgb3V0bGluZVdpZHRoOiAxLFxuICAgIG91dGxpbmVTdHlsZTogXCJzb2xpZFwiLFxuICAgIG91dGxpbmVPZmZzZXQ6IC0xLFxuICAgIGJveFNoYWRvdzogdGhlbWUudmFsdWVzLnNoYWRvdy5mb2N1c1JpbmcsXG4gICAgb3V0bGluZUNvbG9yOiB0aGVtZS52YWx1ZXMuY29sb3IuYm9yZGVyLmFjY2VudC5kZWZhdWx0LFxuICB9LFxufSkpO1xuXG5jb25zdCBTdHlsZWRUZXh0QXJlYUNvbnRhaW5lciA9IHN0eWxlZC5kaXYoe1xuICBib3JkZXJSYWRpdXM6IFwiaW5oZXJpdFwiLFxuICBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiLFxuICB3aWR0aDogXCIxMDAlXCIsXG59KTtcblxuY29uc3QgU3R5bGVkTGVmdEljb25Db250YWluZXIgPSBzdHlsZWQuZGl2KCh7IHRoZW1lIH0pID0+ICh7XG4gIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gIHRvcDogZ2V0UGFkZGluZ1ZlcnRpY2FsKHRoZW1lKSxcbiAgbGVmdDogZ2V0UGFkZGluZ0hvcml6b250YWwodGhlbWUpLFxufSkpO1xuXG50eXBlIFN0eWxlZEVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnRDb250YWluZXJQcm9wcyA9IFBpY2s8XG4gIFByb21wdElucHV0UHJvcHMsXG4gIFwiaXNOYXZCYXJWYXJpYW50XCJcbj47XG5cbmNvbnN0IFN0eWxlZEVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnRDb250YWluZXIgPVxuICBzdHlsZWQuZGl2PFN0eWxlZEVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnRDb250YWluZXJQcm9wcz4oXG4gICAgKHsgdGhlbWUsIGlzTmF2QmFyVmFyaWFudCB9KSA9PiAoe1xuICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgIHRvcDogaXNOYXZCYXJWYXJpYW50XG4gICAgICAgID8gdGhlbWUudmFyaWFibGVzLnNpemUuc3BhY2luZy54eHNcbiAgICAgICAgOiBnZXRQYWRkaW5nVmVydGljYWwodGhlbWUpLFxuICAgICAgcmlnaHQ6IGdldFBhZGRpbmdIb3Jpem9udGFsKHRoZW1lKSxcbiAgICAgIHVzZXJTZWxlY3Q6IFwibm9uZVwiLFxuICAgICAgcG9pbnRlckV2ZW50czogXCJub25lXCIsXG4gICAgfSlcbiAgKTtcblxudHlwZSBTdHlsZWRDbGVhckJ1dHRvblByb3BzID0gUGljdG9ncmFtQnV0dG9uUHJvcHMgJlxuICBQaWNrPFByb21wdElucHV0UHJvcHMsIFwiaXNOYXZCYXJWYXJpYW50XCI+O1xuXG5jb25zdCBTdHlsZWRDbGVhckJ1dHRvbiA9IHN0eWxlZChQaWN0b2dyYW1CdXR0b24pPFN0eWxlZENsZWFyQnV0dG9uUHJvcHM+KFxuICAoeyB0aGVtZSwgaXNOYXZCYXJWYXJpYW50IH0pID0+ICh7XG4gICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICByaWdodDogdGhlbWUudmFyaWFibGVzLnNpemUuc3BhY2luZy5zLFxuICAgIHRvcDogaXNOYXZCYXJWYXJpYW50ID8gMCA6IHRoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcucyxcbiAgfSlcbik7XG5cbmNvbnN0IFN0eWxlZFNsb3RzQ29udGFpbmVyID0gc3R5bGVkLmRpdih7XG4gIGRpc3BsYXk6IFwiZmxleFwiLFxuICBmbGV4V3JhcDogXCJ3cmFwXCIsXG4gIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG59KTtcblxuLy8gSXQgbmVlZHMgbWFyZ2luIGR1ZSB0byBlbXB0eSBjbGlja2FibGUgc3BhY2UgdGhhdCBmb2N1c2VzIHRoZSB0ZXh0YXJlYVxuLy8gU2xvdHMgc2hvdWxkIG5vdCBiZSBpbiB0aGUgZGl2LCBiZWNhdXNlIGFyZWEgYmV0d2VlbiBzaG91bGQgYmUgY2xpY2thYmxlIGFsc29cbnR5cGUgU2xvdFByb3BzID0ge1xuICBzaWRlPzogXCJyaWdodFwiO1xufTtcbmNvbnN0IFN0eWxlZFNsb3QgPSBzdHlsZWQuZGl2PFNsb3RQcm9wcz4oKHsgdGhlbWUsIHNpZGUgfSkgPT4gKHtcbiAgbWFyZ2luOiBgMCAke3RoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcuc30gJHt0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnN9YCxcblxuICAuLi4oc2lkZSA9PT0gXCJyaWdodFwiICYmIHtcbiAgICBtYXJnaW5MZWZ0OiBcImF1dG9cIixcbiAgfSksXG59KSk7XG5cbnR5cGUgU2VuZEJ1dHRvblByb3BzID0gT21pdDxSb3VuZEJ1dHRvblByb3BzLCBcImljb25cIiB8IFwidmFyaWFudFwiPiAmIHtcbiAgaWNvbj86IFwiYXJyb3ctdXBcIiB8IFwic2VhcmNoXCIgfCBcImFycm93LXJpZ2h0XCIgfCBcInZvaWNlXCI7XG59O1xuXG50eXBlIEJvdHRvbVRvb2xiYXJDb25maWcgPSB7XG4gIC8qKiBUb29sYmFyIGVsZW1lbnRzIGJlbG93IHRleHQgYXJlYSAqL1xuICBsZWZ0Q29udGVudD86IFJlYWN0RWxlbWVudDtcbiAgcmlnaHRDb250ZW50PzogUmVhY3RFbGVtZW50O1xufTtcblxuZXhwb3J0IHR5cGUgUHJvbXB0SW5wdXRQcm9wcyA9IHtcbiAgXCJkYXRhLWUyZS10ZXN0LWlkXCI/OiBzdHJpbmc7XG4gIHZhcmlhbnQ/OiBcImFpXCI7XG4gIHNraXBBSUFuaW1hdGlvbj86IGJvb2xlYW47XG4gIGJvdHRvbVRvb2xiYXI/OiBCb3R0b21Ub29sYmFyQ29uZmlnO1xuICBzZW5kQnV0dG9uUHJvcHM/OiBTZW5kQnV0dG9uUHJvcHM7XG4gIC8qKiBDdXJyZW50bHkgc2hvd3Mgc2VuZCBidXR0b24gcHJvY2Vzc2luZyBzdGF0ZSAgKi9cbiAgaXNQcm9jZXNzaW5nPzogYm9vbGVhbjtcbiAgY2xlYXJCdXR0b25BcmlhTGFiZWw/OiBzdHJpbmc7XG4gIGhpbnQ/OiBSZWFjdEVsZW1lbnQ7XG4gIC8qKiBTaG93cyBpbiB0aGUgY2xlYXIgYnV0dG9uIHNwYWNlIGluIGVtcHR5IHN0YXRlICovXG4gIGVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnQ/OiBSZWFjdEVsZW1lbnQ7XG4gIG9uQ2xlYXI6ICgpID0+IHZvaWQ7XG4gIC8qKiBDYWxsZWQgd2hlbiB1c2VyIHNlbGVjdHMgKG9yIHJlamVjdHMpIGEgbGlzdCBpdGVtIGZyb20gYXV0b2NvbXBsZXRlIGxpc3QgKi9cbiAgb25Db21wbGV0ZT86ICh7XG4gICAgdmFsdWUsXG4gICAgY2F0ZWdvcnksXG4gICAgZXZ0LFxuICAgIGluZGV4LFxuICB9OiB7XG4gICAgdmFsdWU6IExpc3RJdGVtVmFsdWU7XG4gICAgY2F0ZWdvcnk/OiBzdHJpbmc7XG4gICAgZXZ0PzogU3ludGhldGljRXZlbnQ7XG4gICAgaW5kZXg/OiBudW1iZXI7XG4gIH0pID0+IHZvaWQ7XG4gIC8qKiBDYWxsZWQgb24gRW50ZXIga2V5IHRvIHN1Ym1pdCB0aGUgZm9ybSAgKi9cbiAgb25FbnRlcktleTogKCkgPT4gdm9pZDtcbiAgLyoqIFJlbmRlcnMgYW4gaWNvbiB0byB0aGUgbGVmdCBpbnNpZGUgdGhlIHRleHRhcmVhICovXG4gIGxlZnRJY29uPzogSWNvbk5hbWU7XG59ICYgT21pdDxcbiAgUHJvbXB0VGV4dEFyZWFQcm9wcyxcbiAgXCJpc0NvbGxhcHNlZFwiIHwgXCJpc0F1dG9jb21wbGV0ZUxpc3RPcGVuXCIgfCBcInNlbGVjdGVkTGlzdEl0ZW1cIiB8IFwiaGFzTGVmdEljb25cIlxuPiAmXG4gIFBpY2s8XG4gICAgQXV0b2NvbXBsZXRlTGlzdFByb3BzLFxuICAgIFwiYXV0b2NvbXBsZXRlTGlzdEl0ZW1zXCIgfCBcImF1dG9jb21wbGV0ZUxpc3RGb290ZXJcIiB8IFwicG9ydGFsQ29udGFpbmVyXCJcbiAgPjtcblxuY29uc3QgZGVmYXVsdFNlbmRCdXR0b25Qcm9wczogU2VuZEJ1dHRvblByb3BzID0ge1xuICB0eXBlOiBcInN1Ym1pdFwiIGFzIGNvbnN0LFxuICBpY29uOiBcImFycm93LXVwXCIgYXMgY29uc3QsXG59O1xuXG5jb25zdCBQcm9tcHRJbnB1dENvbXBvbmVudCA9IGZvcndhcmRSZWYoXG4gIChcbiAgICB7XG4gICAgICBcImRhdGEtZTJlLXRlc3QtaWRcIjogZGF0YUUyZVRlc3RJZCxcbiAgICAgIG5hbWUsXG4gICAgICBhdXRvY29tcGxldGVMaXN0SXRlbXMgPSBbXSxcbiAgICAgIHZhbHVlLFxuICAgICAgYm90dG9tVG9vbGJhcixcbiAgICAgIGlzUHJvY2Vzc2luZyxcbiAgICAgIHNlbmRCdXR0b25Qcm9wcyxcbiAgICAgIGF1dG9jb21wbGV0ZUxpc3RGb290ZXIsXG4gICAgICBjbGVhckJ1dHRvbkFyaWFMYWJlbCA9IFwiQ2xlYXIgaW5wdXRcIixcbiAgICAgIGhpbnQsXG4gICAgICBlbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50LFxuICAgICAgaXNOYXZCYXJWYXJpYW50LFxuICAgICAgcG9ydGFsQ29udGFpbmVyLFxuICAgICAgbGVmdEljb24sXG4gICAgICBvbkNoYW5nZSxcbiAgICAgIG9uQ29tcGxldGUsXG4gICAgICBvbkNsZWFyLFxuICAgICAgb25FbnRlcktleSxcbiAgICAgIG9uRm9jdXMsXG4gICAgICBvbkJsdXIsXG4gICAgICBvbktleURvd24sXG4gICAgICB2YXJpYW50LFxuICAgICAgc2tpcEFJQW5pbWF0aW9uID0gZmFsc2UsXG4gICAgICAuLi5yZXN0XG4gICAgfTogUHJvbXB0SW5wdXRQcm9wcyxcbiAgICByZWY6IFJlZk9iamVjdDxIVE1MVGV4dEFyZWFFbGVtZW50PlxuICApOiBSZWFjdEVsZW1lbnQgPT4ge1xuICAgIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gICAgY29uc3QgdGV4dEFyZWFDb250YWluZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICAgIGNvbnN0IGludGVybmFsUmVmID0gdXNlUmVmPEhUTUxUZXh0QXJlYUVsZW1lbnQ+KG51bGwpO1xuICAgIGNvbnN0IFtzZWxlY3RlZEluZGV4LCBzZXRTZWxlY3RlZEluZGV4XSA9IHVzZVN0YXRlKC0xKTtcbiAgICBjb25zdCBbaXNDb2xsYXBzZWQsIHNldElzQ29sbGFwc2VkXSA9IHVzZVN0YXRlKGlzTmF2QmFyVmFyaWFudCk7XG4gICAgY29uc3QgdXNlclR5cGVkUXVlcnkgPSB1c2VSZWYoXCJcIik7XG4gICAgY29uc3QgW2lzQXV0b2NvbXBsZXRlTGlzdE9wZW4sIHNldElzQXV0b2NvbXBsZXRlTGlzdE9wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IHRleHRBcmVhUmVmID0gcmVmIHx8IGludGVybmFsUmVmO1xuXG4gICAgY29uc3QgbWVyZ2VkU2VuZEJ1dHRvblByb3BzID0ge1xuICAgICAgLi4uZGVmYXVsdFNlbmRCdXR0b25Qcm9wcyxcbiAgICAgIC4uLihzZW5kQnV0dG9uUHJvcHMgPz8ge30pLFxuICAgIH07XG5cbiAgICB1c2VPdXRzaWRlQ2xpY2soXG4gICAgICBjb250YWluZXJSZWYsXG4gICAgICAoZXZ0KSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhY29udGFpbmVyUmVmLmN1cnJlbnQuY29udGFpbnMoZXZ0LnRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgICAgICFwb3J0YWxDb250YWluZXI/LmNvbnRhaW5zKGV2dC50YXJnZXQgYXMgTm9kZSkgJiZcbiAgICAgICAgICBldnQudGFyZ2V0ICE9PSBudWxsXG4gICAgICAgICkge1xuICAgICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgIWlzQ29sbGFwc2VkICYmIGlzTmF2QmFyVmFyaWFudFxuICAgICk7XG5cbiAgICBjb25zdCBjbG9zZUF1dG9jb21wbGV0ZUxpc3QgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBzZXRJc0F1dG9jb21wbGV0ZUxpc3RPcGVuKGZhbHNlKTtcbiAgICAgIHNldFNlbGVjdGVkSW5kZXgoLTEpO1xuICAgIH0sIFtdKTtcblxuICAgIGNvbnN0IG9wZW5BdXRvY29tcGxldGVMaXN0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgaWYgKGF1dG9jb21wbGV0ZUxpc3RJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgc2V0SXNBdXRvY29tcGxldGVMaXN0T3Blbih0cnVlKTtcbiAgICAgICAgc2V0U2VsZWN0ZWRJbmRleCgtMSk7XG4gICAgICB9XG4gICAgfSwgW2F1dG9jb21wbGV0ZUxpc3RJdGVtc10pO1xuXG4gICAgY29uc3QgYWNjZXB0VGV4dFNlbGVjdGlvbiA9ICgpID0+IHtcbiAgICAgIHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQgPSB2YWx1ZTtcbiAgICAgIGlmIChcbiAgICAgICAgdGV4dEFyZWFSZWYuY3VycmVudC5zZWxlY3Rpb25TdGFydCAhPT0gdGV4dEFyZWFSZWYuY3VycmVudC5zZWxlY3Rpb25FbmRcbiAgICAgICkge1xuICAgICAgICB0ZXh0QXJlYVJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKHZhbHVlLmxlbmd0aCwgdmFsdWUubGVuZ3RoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmIChhdXRvY29tcGxldGVMaXN0SXRlbXMubGVuZ3RoICYmICFpc0NvbGxhcHNlZCkge1xuICAgICAgICBvcGVuQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2xvc2VBdXRvY29tcGxldGVMaXN0KCk7XG4gICAgICB9XG4gICAgfSwgW1xuICAgICAgYXV0b2NvbXBsZXRlTGlzdEl0ZW1zLFxuICAgICAgb3BlbkF1dG9jb21wbGV0ZUxpc3QsXG4gICAgICBjbG9zZUF1dG9jb21wbGV0ZUxpc3QsXG4gICAgICBpc0NvbGxhcHNlZCxcbiAgICBdKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAodmFsdWUgJiYgdmFsdWUgIT09IHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQgJiYgaXNBdXRvY29tcGxldGVMaXN0T3Blbikge1xuICAgICAgICB0ZXh0QXJlYVJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKFxuICAgICAgICAgIHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQubGVuZ3RoLFxuICAgICAgICAgIHZhbHVlLmxlbmd0aFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0sIFt2YWx1ZSwgdGV4dEFyZWFSZWYsIGlzQXV0b2NvbXBsZXRlTGlzdE9wZW5dKTtcblxuICAgIC8vIERldGVybWluZSB3aGVuIGZvY3VzIGxlYXZlcyB0aGUgY29udGFpbmVyIHRvIGNvbGxhcHNlIGl0XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGxldCBoYW5kbGVyOiAoZXZ0OiBGb2N1c0V2ZW50KSA9PiB2b2lkO1xuICAgICAgY29uc3QgY29udGFpbmVyID0gY29udGFpbmVyUmVmLmN1cnJlbnQ7XG5cbiAgICAgIGlmIChpc05hdkJhclZhcmlhbnQgJiYgY29udGFpbmVyKSB7XG4gICAgICAgIGhhbmRsZXIgPSAoZXZ0OiBGb2N1c0V2ZW50KSA9PiB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgIWNvbnRhaW5lclJlZi5jdXJyZW50LmNvbnRhaW5zKGV2dC5yZWxhdGVkVGFyZ2V0IGFzIE5vZGUpICYmXG4gICAgICAgICAgICAhcG9ydGFsQ29udGFpbmVyPy5jb250YWlucyhldnQucmVsYXRlZFRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgICAgICAgZXZ0LnJlbGF0ZWRUYXJnZXQgIT09IG51bGxcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c291dFwiLCBoYW5kbGVyKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiZm9jdXNvdXRcIiwgaGFuZGxlcik7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSwgW2lzTmF2QmFyVmFyaWFudCwgY29udGFpbmVyUmVmLCBwb3J0YWxDb250YWluZXJdKTtcblxuICAgIGNvbnN0IGZsYXR0ZW5lZExpc3RJdGVtcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgY29uc3QgbGlzdDogRmxhdHRlbmVkTGlzdEl0ZW1bXSA9IFtdO1xuXG4gICAgICBhdXRvY29tcGxldGVMaXN0SXRlbXMuZm9yRWFjaCgobGlzdEl0ZW0pID0+IHtcbiAgICAgICAgbGlzdEl0ZW0uaXRlbXMuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICBsaXN0LnB1c2goe1xuICAgICAgICAgICAgY2F0ZWdvcnk6IGxpc3RJdGVtLmNhdGVnb3J5LFxuICAgICAgICAgICAgaW5kZXhJbkNhdGVnb3J5OiBpbmRleCxcbiAgICAgICAgICAgIHZhbHVlOiBpdGVtLnZhbHVlLFxuICAgICAgICAgICAgaWQ6IGdldExpc3RJdGVtSWQobmFtZSwgbGlzdEl0ZW0uY2F0ZWdvcnksIGluZGV4KSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBsaXN0O1xuICAgIH0sIFthdXRvY29tcGxldGVMaXN0SXRlbXMsIG5hbWVdKTtcblxuICAgIGNvbnN0IGhhbmRsZVNlbGVjdGVkSW5kZXhDaGFuZ2UgPSAoaW5kZXg6IG51bWJlciwgZXZ0PzogU3ludGhldGljRXZlbnQpID0+IHtcbiAgICAgIHNldFNlbGVjdGVkSW5kZXgoaW5kZXgpO1xuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBjb25zdCB7IGNhdGVnb3J5LCB2YWx1ZTogaXRlbVZhbHVlIH0gPSBmbGF0dGVuZWRMaXN0SXRlbXNbaW5kZXhdO1xuXG4gICAgICAgIG9uQ29tcGxldGUoeyB2YWx1ZTogaXRlbVZhbHVlLCBjYXRlZ29yeSwgZXZ0LCBpbmRleCB9KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlTGlzdEl0ZW1DbGljayA9IChcbiAgICAgIGNhdGVnb3J5OiBzdHJpbmcsXG4gICAgICBpbmRleEluQ2F0ZWdvcnk6IG51bWJlcixcbiAgICAgIGV2dD86IE1vdXNlRXZlbnRcbiAgICApID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ID0gZmxhdHRlbmVkTGlzdEl0ZW1zLmZpbmRJbmRleChcbiAgICAgICAgKGxpc3RJdGVtKSA9PlxuICAgICAgICAgIGxpc3RJdGVtLmNhdGVnb3J5ID09PSBjYXRlZ29yeSAmJlxuICAgICAgICAgIGxpc3RJdGVtLmluZGV4SW5DYXRlZ29yeSA9PT0gaW5kZXhJbkNhdGVnb3J5XG4gICAgICApO1xuXG4gICAgICBoYW5kbGVTZWxlY3RlZEluZGV4Q2hhbmdlKGluZGV4LCBldnQpO1xuICAgICAgY2xvc2VBdXRvY29tcGxldGVMaXN0KCk7XG4gICAgICBpZiAoaXNOYXZCYXJWYXJpYW50KSB7XG4gICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVLZXlEb3duOiBLZXlib2FyZEV2ZW50SGFuZGxlcjxIVE1MVGV4dEFyZWFFbGVtZW50PiA9IChldnQpID0+IHtcbiAgICAgIGlmIChpc0F1dG9jb21wbGV0ZUxpc3RPcGVuKSB7XG4gICAgICAgIHN3aXRjaCAoZXZ0LmtleSkge1xuICAgICAgICAgIGNhc2UgXCJFc2NhcGVcIjpcbiAgICAgICAgICAgIGNsb3NlQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgICAgICAgb25Db21wbGV0ZSh7IHZhbHVlOiB1c2VyVHlwZWRRdWVyeS5jdXJyZW50LCBldnQgfSk7XG4gICAgICAgICAgICBpZiAoaXNOYXZCYXJWYXJpYW50KSB7XG4gICAgICAgICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBcIkVudGVyXCI6XG4gICAgICAgICAgICBpZiAoIWV2dC5zaGlmdEtleSkge1xuICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgY2xvc2VBdXRvY29tcGxldGVMaXN0KCk7XG4gICAgICAgICAgICAgIGFjY2VwdFRleHRTZWxlY3Rpb24oKTtcblxuICAgICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBvbkVudGVyS2V5Py4oKTtcbiAgICAgICAgICAgICAgICBpZiAoaXNOYXZCYXJWYXJpYW50KSB7XG4gICAgICAgICAgICAgICAgICBzZXRJc0NvbGxhcHNlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgXCIgXCI6XG4gICAgICAgICAgICBhY2NlcHRUZXh0U2VsZWN0aW9uKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFwiQXJyb3dVcFwiOlxuICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgIGhhbmRsZVNlbGVjdGVkSW5kZXhDaGFuZ2Uoc2VsZWN0ZWRJbmRleCAtIDEsIGV2dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFwiQXJyb3dEb3duXCI6XG4gICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZEluZGV4IDwgZmxhdHRlbmVkTGlzdEl0ZW1zLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0ZWRJbmRleENoYW5nZShzZWxlY3RlZEluZGV4ICsgMSwgZXZ0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN3aXRjaCAoZXZ0LmtleSkge1xuICAgICAgICAgIGNhc2UgXCJFc2NhcGVcIjpcbiAgICAgICAgICAgIG9uQ2xlYXI/LigpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBcIkVudGVyXCI6XG4gICAgICAgICAgICBpZiAoIWV2dC5zaGlmdEtleSkge1xuICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgb25FbnRlcktleT8uKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBvbktleURvd24/LihldnQpO1xuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVDaGFuZ2U6IENoYW5nZUV2ZW50SGFuZGxlcjxIVE1MVGV4dEFyZWFFbGVtZW50PiA9IChldnQpID0+IHtcbiAgICAgIHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQgPSBldnQudGFyZ2V0LnZhbHVlO1xuICAgICAgb25DaGFuZ2UoZXZ0KTtcbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlRm9jdXM6IEZvY3VzRXZlbnRIYW5kbGVyPEhUTUxUZXh0QXJlYUVsZW1lbnQ+ID0gKGV2dCkgPT4ge1xuICAgICAgc2V0SXNDb2xsYXBzZWQoZmFsc2UpO1xuICAgICAgb25Gb2N1cz8uKGV2dCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZUJsdXI6IEZvY3VzRXZlbnRIYW5kbGVyPEhUTUxUZXh0QXJlYUVsZW1lbnQ+ID0gKGV2dCkgPT4ge1xuICAgICAgaWYgKHZhbHVlICE9PSB1c2VyVHlwZWRRdWVyeS5jdXJyZW50KSB7XG4gICAgICAgIG9uQ29tcGxldGU/Lih7IHZhbHVlOiB1c2VyVHlwZWRRdWVyeS5jdXJyZW50LCBldnQgfSk7XG4gICAgICB9XG4gICAgICBvbkJsdXI/LihldnQpO1xuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVTZW5kQnV0dG9uQ2xpY2sgPSAoZXZ0OiBNb3VzZUV2ZW50PEhUTUxCdXR0b25FbGVtZW50PikgPT4ge1xuICAgICAgbWVyZ2VkU2VuZEJ1dHRvblByb3BzLm9uQ2xpY2s/LihldnQpO1xuICAgICAgY2xvc2VBdXRvY29tcGxldGVMaXN0KCk7XG4gICAgICBpZiAoaXNOYXZCYXJWYXJpYW50KSB7XG4gICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVQcmV2ZW50Rm9jdXMgPSAoZXZ0OiBSZWFjdC5Qb2ludGVyRXZlbnQpID0+IHtcbiAgICAgIC8vIFByZXZlbnQgdGhlIHRleHRhcmVhIGZyb20gYmVpbmcgdW5mb2N1c2VkXG4gICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlT25Db250YWluZXJQb2ludGVyRG93biA9IChldnQ6IFJlYWN0LlBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgLy8gRm9jdXMgdGV4dGFyZWEgd2hlbiBjbGlja2luZyBvbiB0aGUgY29udGFpbmVyIG9ubHlcbiAgICAgIGlmIChldnQudGFyZ2V0ID09PSBldnQuY3VycmVudFRhcmdldCkge1xuICAgICAgICB0ZXh0QXJlYVJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3Qgc2VsZWN0ZWRMaXN0SXRlbSA9XG4gICAgICBzZWxlY3RlZEluZGV4ICE9PSAtMSA/IGZsYXR0ZW5lZExpc3RJdGVtc1tzZWxlY3RlZEluZGV4XSA6IG51bGw7XG5cbiAgICBjb25zdCBlbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50RWxtID0gZW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudCA/IChcbiAgICAgIDxTdHlsZWRFbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50Q29udGFpbmVyXG4gICAgICAgIGlzTmF2QmFyVmFyaWFudD17aXNOYXZCYXJWYXJpYW50fVxuICAgICAgPlxuICAgICAgICA8VGV4dCBjb2xvcj1cInRlcnRpYXJ5XCI+e2VtcHR5U3RhdGVUb3BSaWdodENvbnRlbnR9PC9UZXh0PlxuICAgICAgPC9TdHlsZWRFbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50Q29udGFpbmVyPlxuICAgICkgOiBudWxsO1xuXG4gICAgY29uc3QgY2xlYXJCdXR0b25FbG0gPSB2YWx1ZSA/IChcbiAgICAgIDxTdHlsZWRDbGVhckJ1dHRvblxuICAgICAgICBzaXplPVwic1wiXG4gICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgaWNvbj1cIngtY2lyY2xlLWZpbGxlZFwiXG4gICAgICAgIGFyaWEtbGFiZWw9e2NsZWFyQnV0dG9uQXJpYUxhYmVsfVxuICAgICAgICBpc05hdkJhclZhcmlhbnQ9e2lzTmF2QmFyVmFyaWFudH1cbiAgICAgICAgb25Qb2ludGVyRG93bj17aGFuZGxlUHJldmVudEZvY3VzfVxuICAgICAgICBvbkNsaWNrPXtvbkNsZWFyfVxuICAgICAgLz5cbiAgICApIDogKFxuICAgICAgZW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudEVsbVxuICAgICk7XG5cbiAgICBjb25zdCBoaW50RWxtID0gISFoaW50ICYmIChcbiAgICAgIDxJbmxpbmUgYWxpZ25JdGVtcz1cImNlbnRlclwiPlxuICAgICAgICA8VGV4dCBzaXplPVwic1wiIGNvbG9yPVwidGVydGlhcnlcIj5cbiAgICAgICAgICB7aGludH1cbiAgICAgICAgPC9UZXh0PlxuICAgICAgPC9JbmxpbmU+XG4gICAgKTtcblxuICAgIGNvbnN0IGJvdHRvbVRvb2xiYXJFbG0gPSAoYm90dG9tVG9vbGJhcj8ucmlnaHRDb250ZW50IHx8XG4gICAgICBib3R0b21Ub29sYmFyPy5sZWZ0Q29udGVudCB8fFxuICAgICAgISFzZW5kQnV0dG9uUHJvcHMpICYmXG4gICAgICAhaXNDb2xsYXBzZWQgJiYgKFxuICAgICAgICA8PlxuICAgICAgICAgIHtib3R0b21Ub29sYmFyPy5sZWZ0Q29udGVudCAmJiAoXG4gICAgICAgICAgICA8U3R5bGVkU2xvdD57Ym90dG9tVG9vbGJhci5sZWZ0Q29udGVudH08L1N0eWxlZFNsb3Q+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8U3R5bGVkU2xvdCBkYXRhLWUyZS10ZXN0LWlkPVwiYm90dG9tVG9vbGJhclwiIHNpZGU9XCJyaWdodFwiPlxuICAgICAgICAgICAgPElubGluZSBzcGFjZT1cInhzXCIgdkFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAgICAgICAge2JvdHRvbVRvb2xiYXI/LnJpZ2h0Q29udGVudH1cbiAgICAgICAgICAgICAge3NlbmRCdXR0b25Qcm9wcyAmJiAoXG4gICAgICAgICAgICAgICAgPFN1YlRoZW1lUHJvdmlkZXIgbmFtZT17dmFyaWFudH0+XG4gICAgICAgICAgICAgICAgICA8Um91bmRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgYXJpYUF0dHJpYnV0ZXM9e3tcbiAgICAgICAgICAgICAgICAgICAgICBcImFyaWEtbGFiZWxcIjogaXNQcm9jZXNzaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFwiUHJvY2Vzc2luZyBxdWVyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFwiU3VibWl0IHF1ZXJ5XCIsXG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIHsuLi5tZXJnZWRTZW5kQnV0dG9uUHJvcHN9XG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXttZXJnZWRTZW5kQnV0dG9uUHJvcHMuZGlzYWJsZWQgPz8gIXZhbHVlfVxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVTZW5kQnV0dG9uQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlckRvd249e2hhbmRsZVByZXZlbnRGb2N1c31cbiAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICBpY29uPXtcbiAgICAgICAgICAgICAgICAgICAgICBpc1Byb2Nlc3NpbmcgPyBcInN0b3AtZmlsbGVkXCIgOiBtZXJnZWRTZW5kQnV0dG9uUHJvcHMuaWNvblxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvU3ViVGhlbWVQcm92aWRlcj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvSW5saW5lPlxuICAgICAgICAgIDwvU3R5bGVkU2xvdD5cbiAgICAgICAgPC8+XG4gICAgICApO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBkYXRhLWUyZS10ZXN0LWlkPXtkYXRhRTJlVGVzdElkfVxuICAgICAgICAgIGRhdGEtZHMtaWQ9XCJQcm9tcHRJbnB1dFwiXG4gICAgICAgICAgcmVmPXtjb250YWluZXJSZWZ9XG4gICAgICAgICAgLy8gVHJhbnNsYXRpb24gZGlzYWJsZWQgZm9yIGNvbnNpc3RlbmN5IHdpdGggdGhlIGF1dG9jb21wbGV0ZSBsaXN0XG4gICAgICAgICAgdHJhbnNsYXRlPVwibm9cIlxuICAgICAgICA+XG4gICAgICAgICAgPFN0YWNrIHNwYWNlPVwic1wiPlxuICAgICAgICAgICAgPEFuaW1hdGVkQm9yZGVyXG4gICAgICAgICAgICAgIHNraXBBbmltYXRpb249e3NraXBBSUFuaW1hdGlvbiB8fCB2YXJpYW50ICE9PSBcImFpXCJ9XG4gICAgICAgICAgICAgIHJhZGl1cz17MTJ9XG4gICAgICAgICAgICAgIGl0ZXJhdGlvbnM9ezF9XG4gICAgICAgICAgICAgIHRoaWNrbmVzcz17Mn1cbiAgICAgICAgICAgICAgaGlkZUNoaWxkQm9yZGVyXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxTdWJUaGVtZVByb3ZpZGVyIG5hbWU9e3ZhcmlhbnR9PlxuICAgICAgICAgICAgICAgIDxDdXN0b21Db250YWluZXJcbiAgICAgICAgICAgICAgICAgIGVsZXZhdGlvbj17MH1cbiAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1cz17aXNDb2xsYXBzZWQgPyBcInhzXCIgOiBcIm1cIn1cbiAgICAgICAgICAgICAgICAgIGhpZGVCb3JkZXI9e2lzQ29sbGFwc2VkfVxuICAgICAgICAgICAgICAgICAgaGFzU2hhZG93PXshaXNOYXZCYXJWYXJpYW50fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTdWJUaGVtZVByb3ZpZGVyIG5hbWU9XCJ1bnNldFwiPlxuICAgICAgICAgICAgICAgICAgICA8U3R5bGVkU2xvdHNDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICByZWY9e3RleHRBcmVhQ29udGFpbmVyUmVmfVxuICAgICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlckRvd249e2hhbmRsZU9uQ29udGFpbmVyUG9pbnRlckRvd259XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U3R5bGVkVGV4dEFyZWFDb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7bGVmdEljb24gJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8U3R5bGVkTGVmdEljb25Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9e2xlZnRJY29ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJ0ZXJ0aWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3R5bGVkTGVmdEljb25Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPFByb21wdFRleHRBcmVhXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhRTJlVGVzdElkPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhRTJlVGVzdElkID8gYCR7ZGF0YUUyZVRlc3RJZH0taW5wdXRgIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e3RleHRBcmVhUmVmfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpc05hdkJhclZhcmlhbnQ9e2lzTmF2QmFyVmFyaWFudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRMaXN0SXRlbT17c2VsZWN0ZWRMaXN0SXRlbX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNBdXRvY29tcGxldGVMaXN0T3Blbj17aXNBdXRvY29tcGxldGVMaXN0T3Blbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNDb2xsYXBzZWQ9e2lzQ29sbGFwc2VkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNMZWZ0SWNvbj17ISFsZWZ0SWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25Gb2N1cz17aGFuZGxlRm9jdXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3dufVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtjbGVhckJ1dHRvbkVsbX1cbiAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZFRleHRBcmVhQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgIHtib3R0b21Ub29sYmFyRWxtfVxuICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZFNsb3RzQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPC9TdWJUaGVtZVByb3ZpZGVyPlxuICAgICAgICAgICAgICAgIDwvQ3VzdG9tQ29udGFpbmVyPlxuICAgICAgICAgICAgICA8L1N1YlRoZW1lUHJvdmlkZXI+XG4gICAgICAgICAgICA8L0FuaW1hdGVkQm9yZGVyPlxuICAgICAgICAgICAge2hpbnRFbG19XG4gICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPEF1dG9jb21wbGV0ZUxpc3RcbiAgICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICBhdXRvY29tcGxldGVMaXN0SXRlbXM9e2F1dG9jb21wbGV0ZUxpc3RJdGVtc31cbiAgICAgICAgICB0cmlnZ2VyUmVmPXt0ZXh0QXJlYUNvbnRhaW5lclJlZn1cbiAgICAgICAgICBzZWxlY3RlZExpc3RJdGVtPXtzZWxlY3RlZExpc3RJdGVtfVxuICAgICAgICAgIGlzT3Blbj17aXNBdXRvY29tcGxldGVMaXN0T3Blbn1cbiAgICAgICAgICBhdXRvY29tcGxldGVMaXN0Rm9vdGVyPXthdXRvY29tcGxldGVMaXN0Rm9vdGVyfVxuICAgICAgICAgIHBvcnRhbENvbnRhaW5lcj17cG9ydGFsQ29udGFpbmVyfVxuICAgICAgICAgIG9uTGlzdEl0ZW1DbGljaz17aGFuZGxlTGlzdEl0ZW1DbGlja31cbiAgICAgICAgLz5cbiAgICAgIDwvPlxuICAgICk7XG4gIH1cbik7XG5cbmNvbnN0IEN1c3RvbUJ1dHRvbiA9IHN0eWxlZChCdXR0b24pKCh7IHRoZW1lIH0pID0+ICh7XG4gIGJvcmRlclJhZGl1czogdGhlbWUudmFyaWFibGVzLnNpemUuYm9yZGVyUmFkaXVzLmwsXG59KSk7XG5cbi8vIG5lZWQgdG8gc2ltcGxpZnkgdGhpcyB0eXBlIGZvciByZXVzZVxuY29uc3QgU3VnZ2VzdGlvbkJ1dHRvbiA9IGZvcndhcmRSZWYoXG4gIDxDIGV4dGVuZHMgUmVhY3QuRWxlbWVudFR5cGUgPSBcImJ1dHRvblwiPihcbiAgICBwcm9wczogUG9seW1vcnBoaWNDb21wb25lbnRQcm9wc1dpdGhSZWY8XG4gICAgICBDLFxuICAgICAgT21pdDxCdXR0b25Qcm9wcywgXCJ2YXJpYW50XCIgfCBcInNpemVcIiB8IFwicmVmXCI+XG4gICAgPixcbiAgICByZWY6IFBvbHltb3JwaGljUmVmPEM+XG4gICkgPT4gPEN1c3RvbUJ1dHRvbiB7Li4ucHJvcHN9IHZhcmlhbnQ9XCJzZWNvbmRhcnlcIiBzaXplPVwic1wiIHJlZj17cmVmfSAvPlxuKTtcblxuZXhwb3J0IGNvbnN0IFByb21wdElucHV0ID0gT2JqZWN0LmFzc2lnbihQcm9tcHRJbnB1dENvbXBvbmVudCwge1xuICBTdWdnZXN0aW9uQnV0dG9uLFxufSkgYXMgdHlwZW9mIFByb21wdElucHV0Q29tcG9uZW50ICYge1xuICBTdWdnZXN0aW9uQnV0dG9uOiB0eXBlb2YgU3VnZ2VzdGlvbkJ1dHRvbjtcbn07XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBaUdFIn0= */"),StyledClearButton=(0,_styled.default)(_PictogramButton.PictogramButton,{target:"e1jgljjd4",label:"StyledClearButton"})(({theme,isNavBarVariant})=>({position:"absolute",right:theme.variables.size.spacing.s,top:isNavBarVariant?0:theme.variables.size.spacing.s}),"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvUHJvbXB0SW5wdXQvUHJvbXB0SW5wdXQudHN4Iiwic291cmNlcyI6WyJzcmMvY29tcG9uZW50cy9Qcm9tcHRJbnB1dC9Qcm9tcHRJbnB1dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBSZWFjdEVsZW1lbnQsXG4gIENoYW5nZUV2ZW50SGFuZGxlcixcbiAgS2V5Ym9hcmRFdmVudEhhbmRsZXIsXG4gIFJlZk9iamVjdCxcbiAgRm9jdXNFdmVudEhhbmRsZXIsXG4gIFN5bnRoZXRpY0V2ZW50LFxuICBNb3VzZUV2ZW50LFxufSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IFJlYWN0LCB7XG4gIHVzZVJlZixcbiAgdXNlTWVtbyxcbiAgdXNlU3RhdGUsXG4gIHVzZUVmZmVjdCxcbiAgdXNlQ2FsbGJhY2ssXG4gIGZvcndhcmRSZWYsXG59IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5cbmltcG9ydCB0eXBlIHsgUHJvbXB0VGV4dEFyZWFQcm9wcyB9IGZyb20gXCIuL1Byb21wdFRleHRBcmVhXCI7XG5pbXBvcnQge1xuICBQcm9tcHRUZXh0QXJlYSxcbiAgZ2V0UGFkZGluZ0hvcml6b250YWwsXG4gIGdldFBhZGRpbmdWZXJ0aWNhbCxcbn0gZnJvbSBcIi4vUHJvbXB0VGV4dEFyZWFcIjtcbmltcG9ydCB7IENvbnRhaW5lciB9IGZyb20gXCIuLi9Db250YWluZXJcIjtcbmltcG9ydCB0eXBlIHsgQXV0b2NvbXBsZXRlTGlzdFByb3BzIH0gZnJvbSBcIi4vQXV0b2NvbXBsZXRlTGlzdFwiO1xuXG5pbXBvcnQgeyBBdXRvY29tcGxldGVMaXN0IH0gZnJvbSBcIi4vQXV0b2NvbXBsZXRlTGlzdFwiO1xuaW1wb3J0IHtcbiAgZ2V0TGlzdEl0ZW1JZCxcbiAgdHlwZSBGbGF0dGVuZWRMaXN0SXRlbSxcbiAgdHlwZSBMaXN0SXRlbVZhbHVlLFxufSBmcm9tIFwiLi9DYXRlZ29yeUxpc3RcIjtcbmltcG9ydCB7IFRleHQgfSBmcm9tIFwiLi4vVHlwb2dyYXBoeS9UZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24sIHR5cGUgQnV0dG9uUHJvcHMgfSBmcm9tIFwiLi4vQnV0dG9uL0J1dHRvblwiO1xuaW1wb3J0IHR5cGUge1xuICBQb2x5bW9ycGhpY1JlZixcbiAgUG9seW1vcnBoaWNDb21wb25lbnRQcm9wc1dpdGhSZWYsXG59IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuaW1wb3J0IHsgSW5saW5lIH0gZnJvbSBcIi4uL0lubGluZS9JbmxpbmVcIjtcbmltcG9ydCB0eXBlIHsgUm91bmRCdXR0b25Qcm9wcyB9IGZyb20gXCIuLi9Sb3VuZEJ1dHRvbi9Sb3VuZEJ1dHRvblwiO1xuaW1wb3J0IHsgUm91bmRCdXR0b24gfSBmcm9tIFwiLi4vUm91bmRCdXR0b24vUm91bmRCdXR0b25cIjtcbmltcG9ydCB0eXBlIHsgUGljdG9ncmFtQnV0dG9uUHJvcHMgfSBmcm9tIFwiLi4vUGljdG9ncmFtQnV0dG9uL1BpY3RvZ3JhbUJ1dHRvblwiO1xuaW1wb3J0IHsgUGljdG9ncmFtQnV0dG9uIH0gZnJvbSBcIi4uL1BpY3RvZ3JhbUJ1dHRvbi9QaWN0b2dyYW1CdXR0b25cIjtcbmltcG9ydCB7IFN0YWNrIH0gZnJvbSBcIi4uL1N0YWNrL1N0YWNrXCI7XG5pbXBvcnQgeyB1c2VPdXRzaWRlQ2xpY2sgfSBmcm9tIFwiLi4vLi4vc2hhcmVkL3VzZU91dHNpZGVDbGlja1wiO1xuaW1wb3J0IHR5cGUgeyBJY29uTmFtZSB9IGZyb20gXCIuLi9JY29uL0ljb25cIjtcbmltcG9ydCB7IEljb24gfSBmcm9tIFwiLi4vSWNvbi9JY29uXCI7XG5pbXBvcnQgeyBTdWJUaGVtZVByb3ZpZGVyIH0gZnJvbSBcIi4uL1N1YlRoZW1lUHJvdmlkZXIvU3ViVGhlbWVQcm92aWRlclwiO1xuaW1wb3J0IHsgQW5pbWF0ZWRCb3JkZXIgfSBmcm9tIFwiLi4vVXRpbGl0aWVzL0FuaW1hdGVkQm9yZGVyL0FuaW1hdGVkQm9yZGVyXCI7XG5cbmNvbnN0IEN1c3RvbUNvbnRhaW5lciA9IHN0eWxlZChDb250YWluZXIpPHtcbiAgaGlkZUJvcmRlcjogYm9vbGVhbjtcbiAgaGFzU2hhZG93OiBib29sZWFuO1xufT4oKHsgdGhlbWUsIGhpZGVCb3JkZXIsIGhhc1NoYWRvdyB9KSA9PiAoe1xuICBib3JkZXI6IGAxcHggc29saWQgJHt0aGVtZS52YWx1ZXMuY29sb3IuYm9yZGVyLnByaW1hcnkuZGVmYXVsdH1gLFxuICAuLi4oaGFzU2hhZG93ICYmIHtcbiAgICBib3hTaGFkb3c6IHRoZW1lLnZhbHVlcy5zaGFkb3cuZGVmYXVsdFJpbmcsXG4gICAgdHJhbnNpdGlvblByb3BlcnR5OiBcImJveC1zaGFkb3csIGJvcmRlci1jb2xvciwgb3V0bGluZS1jb2xvclwiLFxuICAgIHRyYW5zaXRpb25EdXJhdGlvbjogdGhlbWUudmFyaWFibGVzLmFuaW1hdGlvbi5wcm9tcHRJbnB1dC5mb2N1cy5kdXJhdGlvbixcbiAgICB0cmFuc2l0aW9uVGltaW5nRnVuY3Rpb246XG4gICAgICB0aGVtZS52YXJpYWJsZXMuYW5pbWF0aW9uLnByb21wdElucHV0LmZvY3VzLnRpbWluZ0Z1bmN0aW9uLFxuICB9KSxcbiAgLi4uKGhpZGVCb3JkZXIgJiYge1xuICAgIGJvcmRlckNvbG9yOiBcInRyYW5zcGFyZW50XCIsXG4gIH0pLFxuICBjdXJzb3I6IFwidGV4dFwiLFxuICBvdXRsaW5lQ29sb3I6IFwidHJhbnNwYXJlbnRcIixcbiAgW2AmOmhhcyh0ZXh0YXJlYTpmb2N1cy12aXNpYmxlKWBdOiB7XG4gICAgb3V0bGluZVdpZHRoOiAxLFxuICAgIG91dGxpbmVTdHlsZTogXCJzb2xpZFwiLFxuICAgIG91dGxpbmVPZmZzZXQ6IC0xLFxuICAgIGJveFNoYWRvdzogdGhlbWUudmFsdWVzLnNoYWRvdy5mb2N1c1JpbmcsXG4gICAgb3V0bGluZUNvbG9yOiB0aGVtZS52YWx1ZXMuY29sb3IuYm9yZGVyLmFjY2VudC5kZWZhdWx0LFxuICB9LFxufSkpO1xuXG5jb25zdCBTdHlsZWRUZXh0QXJlYUNvbnRhaW5lciA9IHN0eWxlZC5kaXYoe1xuICBib3JkZXJSYWRpdXM6IFwiaW5oZXJpdFwiLFxuICBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiLFxuICB3aWR0aDogXCIxMDAlXCIsXG59KTtcblxuY29uc3QgU3R5bGVkTGVmdEljb25Db250YWluZXIgPSBzdHlsZWQuZGl2KCh7IHRoZW1lIH0pID0+ICh7XG4gIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gIHRvcDogZ2V0UGFkZGluZ1ZlcnRpY2FsKHRoZW1lKSxcbiAgbGVmdDogZ2V0UGFkZGluZ0hvcml6b250YWwodGhlbWUpLFxufSkpO1xuXG50eXBlIFN0eWxlZEVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnRDb250YWluZXJQcm9wcyA9IFBpY2s8XG4gIFByb21wdElucHV0UHJvcHMsXG4gIFwiaXNOYXZCYXJWYXJpYW50XCJcbj47XG5cbmNvbnN0IFN0eWxlZEVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnRDb250YWluZXIgPVxuICBzdHlsZWQuZGl2PFN0eWxlZEVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnRDb250YWluZXJQcm9wcz4oXG4gICAgKHsgdGhlbWUsIGlzTmF2QmFyVmFyaWFudCB9KSA9PiAoe1xuICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgIHRvcDogaXNOYXZCYXJWYXJpYW50XG4gICAgICAgID8gdGhlbWUudmFyaWFibGVzLnNpemUuc3BhY2luZy54eHNcbiAgICAgICAgOiBnZXRQYWRkaW5nVmVydGljYWwodGhlbWUpLFxuICAgICAgcmlnaHQ6IGdldFBhZGRpbmdIb3Jpem9udGFsKHRoZW1lKSxcbiAgICAgIHVzZXJTZWxlY3Q6IFwibm9uZVwiLFxuICAgICAgcG9pbnRlckV2ZW50czogXCJub25lXCIsXG4gICAgfSlcbiAgKTtcblxudHlwZSBTdHlsZWRDbGVhckJ1dHRvblByb3BzID0gUGljdG9ncmFtQnV0dG9uUHJvcHMgJlxuICBQaWNrPFByb21wdElucHV0UHJvcHMsIFwiaXNOYXZCYXJWYXJpYW50XCI+O1xuXG5jb25zdCBTdHlsZWRDbGVhckJ1dHRvbiA9IHN0eWxlZChQaWN0b2dyYW1CdXR0b24pPFN0eWxlZENsZWFyQnV0dG9uUHJvcHM+KFxuICAoeyB0aGVtZSwgaXNOYXZCYXJWYXJpYW50IH0pID0+ICh7XG4gICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICByaWdodDogdGhlbWUudmFyaWFibGVzLnNpemUuc3BhY2luZy5zLFxuICAgIHRvcDogaXNOYXZCYXJWYXJpYW50ID8gMCA6IHRoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcucyxcbiAgfSlcbik7XG5cbmNvbnN0IFN0eWxlZFNsb3RzQ29udGFpbmVyID0gc3R5bGVkLmRpdih7XG4gIGRpc3BsYXk6IFwiZmxleFwiLFxuICBmbGV4V3JhcDogXCJ3cmFwXCIsXG4gIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG59KTtcblxuLy8gSXQgbmVlZHMgbWFyZ2luIGR1ZSB0byBlbXB0eSBjbGlja2FibGUgc3BhY2UgdGhhdCBmb2N1c2VzIHRoZSB0ZXh0YXJlYVxuLy8gU2xvdHMgc2hvdWxkIG5vdCBiZSBpbiB0aGUgZGl2LCBiZWNhdXNlIGFyZWEgYmV0d2VlbiBzaG91bGQgYmUgY2xpY2thYmxlIGFsc29cbnR5cGUgU2xvdFByb3BzID0ge1xuICBzaWRlPzogXCJyaWdodFwiO1xufTtcbmNvbnN0IFN0eWxlZFNsb3QgPSBzdHlsZWQuZGl2PFNsb3RQcm9wcz4oKHsgdGhlbWUsIHNpZGUgfSkgPT4gKHtcbiAgbWFyZ2luOiBgMCAke3RoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcuc30gJHt0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnN9YCxcblxuICAuLi4oc2lkZSA9PT0gXCJyaWdodFwiICYmIHtcbiAgICBtYXJnaW5MZWZ0OiBcImF1dG9cIixcbiAgfSksXG59KSk7XG5cbnR5cGUgU2VuZEJ1dHRvblByb3BzID0gT21pdDxSb3VuZEJ1dHRvblByb3BzLCBcImljb25cIiB8IFwidmFyaWFudFwiPiAmIHtcbiAgaWNvbj86IFwiYXJyb3ctdXBcIiB8IFwic2VhcmNoXCIgfCBcImFycm93LXJpZ2h0XCIgfCBcInZvaWNlXCI7XG59O1xuXG50eXBlIEJvdHRvbVRvb2xiYXJDb25maWcgPSB7XG4gIC8qKiBUb29sYmFyIGVsZW1lbnRzIGJlbG93IHRleHQgYXJlYSAqL1xuICBsZWZ0Q29udGVudD86IFJlYWN0RWxlbWVudDtcbiAgcmlnaHRDb250ZW50PzogUmVhY3RFbGVtZW50O1xufTtcblxuZXhwb3J0IHR5cGUgUHJvbXB0SW5wdXRQcm9wcyA9IHtcbiAgXCJkYXRhLWUyZS10ZXN0LWlkXCI/OiBzdHJpbmc7XG4gIHZhcmlhbnQ/OiBcImFpXCI7XG4gIHNraXBBSUFuaW1hdGlvbj86IGJvb2xlYW47XG4gIGJvdHRvbVRvb2xiYXI/OiBCb3R0b21Ub29sYmFyQ29uZmlnO1xuICBzZW5kQnV0dG9uUHJvcHM/OiBTZW5kQnV0dG9uUHJvcHM7XG4gIC8qKiBDdXJyZW50bHkgc2hvd3Mgc2VuZCBidXR0b24gcHJvY2Vzc2luZyBzdGF0ZSAgKi9cbiAgaXNQcm9jZXNzaW5nPzogYm9vbGVhbjtcbiAgY2xlYXJCdXR0b25BcmlhTGFiZWw/OiBzdHJpbmc7XG4gIGhpbnQ/OiBSZWFjdEVsZW1lbnQ7XG4gIC8qKiBTaG93cyBpbiB0aGUgY2xlYXIgYnV0dG9uIHNwYWNlIGluIGVtcHR5IHN0YXRlICovXG4gIGVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnQ/OiBSZWFjdEVsZW1lbnQ7XG4gIG9uQ2xlYXI6ICgpID0+IHZvaWQ7XG4gIC8qKiBDYWxsZWQgd2hlbiB1c2VyIHNlbGVjdHMgKG9yIHJlamVjdHMpIGEgbGlzdCBpdGVtIGZyb20gYXV0b2NvbXBsZXRlIGxpc3QgKi9cbiAgb25Db21wbGV0ZT86ICh7XG4gICAgdmFsdWUsXG4gICAgY2F0ZWdvcnksXG4gICAgZXZ0LFxuICAgIGluZGV4LFxuICB9OiB7XG4gICAgdmFsdWU6IExpc3RJdGVtVmFsdWU7XG4gICAgY2F0ZWdvcnk/OiBzdHJpbmc7XG4gICAgZXZ0PzogU3ludGhldGljRXZlbnQ7XG4gICAgaW5kZXg/OiBudW1iZXI7XG4gIH0pID0+IHZvaWQ7XG4gIC8qKiBDYWxsZWQgb24gRW50ZXIga2V5IHRvIHN1Ym1pdCB0aGUgZm9ybSAgKi9cbiAgb25FbnRlcktleTogKCkgPT4gdm9pZDtcbiAgLyoqIFJlbmRlcnMgYW4gaWNvbiB0byB0aGUgbGVmdCBpbnNpZGUgdGhlIHRleHRhcmVhICovXG4gIGxlZnRJY29uPzogSWNvbk5hbWU7XG59ICYgT21pdDxcbiAgUHJvbXB0VGV4dEFyZWFQcm9wcyxcbiAgXCJpc0NvbGxhcHNlZFwiIHwgXCJpc0F1dG9jb21wbGV0ZUxpc3RPcGVuXCIgfCBcInNlbGVjdGVkTGlzdEl0ZW1cIiB8IFwiaGFzTGVmdEljb25cIlxuPiAmXG4gIFBpY2s8XG4gICAgQXV0b2NvbXBsZXRlTGlzdFByb3BzLFxuICAgIFwiYXV0b2NvbXBsZXRlTGlzdEl0ZW1zXCIgfCBcImF1dG9jb21wbGV0ZUxpc3RGb290ZXJcIiB8IFwicG9ydGFsQ29udGFpbmVyXCJcbiAgPjtcblxuY29uc3QgZGVmYXVsdFNlbmRCdXR0b25Qcm9wczogU2VuZEJ1dHRvblByb3BzID0ge1xuICB0eXBlOiBcInN1Ym1pdFwiIGFzIGNvbnN0LFxuICBpY29uOiBcImFycm93LXVwXCIgYXMgY29uc3QsXG59O1xuXG5jb25zdCBQcm9tcHRJbnB1dENvbXBvbmVudCA9IGZvcndhcmRSZWYoXG4gIChcbiAgICB7XG4gICAgICBcImRhdGEtZTJlLXRlc3QtaWRcIjogZGF0YUUyZVRlc3RJZCxcbiAgICAgIG5hbWUsXG4gICAgICBhdXRvY29tcGxldGVMaXN0SXRlbXMgPSBbXSxcbiAgICAgIHZhbHVlLFxuICAgICAgYm90dG9tVG9vbGJhcixcbiAgICAgIGlzUHJvY2Vzc2luZyxcbiAgICAgIHNlbmRCdXR0b25Qcm9wcyxcbiAgICAgIGF1dG9jb21wbGV0ZUxpc3RGb290ZXIsXG4gICAgICBjbGVhckJ1dHRvbkFyaWFMYWJlbCA9IFwiQ2xlYXIgaW5wdXRcIixcbiAgICAgIGhpbnQsXG4gICAgICBlbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50LFxuICAgICAgaXNOYXZCYXJWYXJpYW50LFxuICAgICAgcG9ydGFsQ29udGFpbmVyLFxuICAgICAgbGVmdEljb24sXG4gICAgICBvbkNoYW5nZSxcbiAgICAgIG9uQ29tcGxldGUsXG4gICAgICBvbkNsZWFyLFxuICAgICAgb25FbnRlcktleSxcbiAgICAgIG9uRm9jdXMsXG4gICAgICBvbkJsdXIsXG4gICAgICBvbktleURvd24sXG4gICAgICB2YXJpYW50LFxuICAgICAgc2tpcEFJQW5pbWF0aW9uID0gZmFsc2UsXG4gICAgICAuLi5yZXN0XG4gICAgfTogUHJvbXB0SW5wdXRQcm9wcyxcbiAgICByZWY6IFJlZk9iamVjdDxIVE1MVGV4dEFyZWFFbGVtZW50PlxuICApOiBSZWFjdEVsZW1lbnQgPT4ge1xuICAgIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gICAgY29uc3QgdGV4dEFyZWFDb250YWluZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICAgIGNvbnN0IGludGVybmFsUmVmID0gdXNlUmVmPEhUTUxUZXh0QXJlYUVsZW1lbnQ+KG51bGwpO1xuICAgIGNvbnN0IFtzZWxlY3RlZEluZGV4LCBzZXRTZWxlY3RlZEluZGV4XSA9IHVzZVN0YXRlKC0xKTtcbiAgICBjb25zdCBbaXNDb2xsYXBzZWQsIHNldElzQ29sbGFwc2VkXSA9IHVzZVN0YXRlKGlzTmF2QmFyVmFyaWFudCk7XG4gICAgY29uc3QgdXNlclR5cGVkUXVlcnkgPSB1c2VSZWYoXCJcIik7XG4gICAgY29uc3QgW2lzQXV0b2NvbXBsZXRlTGlzdE9wZW4sIHNldElzQXV0b2NvbXBsZXRlTGlzdE9wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IHRleHRBcmVhUmVmID0gcmVmIHx8IGludGVybmFsUmVmO1xuXG4gICAgY29uc3QgbWVyZ2VkU2VuZEJ1dHRvblByb3BzID0ge1xuICAgICAgLi4uZGVmYXVsdFNlbmRCdXR0b25Qcm9wcyxcbiAgICAgIC4uLihzZW5kQnV0dG9uUHJvcHMgPz8ge30pLFxuICAgIH07XG5cbiAgICB1c2VPdXRzaWRlQ2xpY2soXG4gICAgICBjb250YWluZXJSZWYsXG4gICAgICAoZXZ0KSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhY29udGFpbmVyUmVmLmN1cnJlbnQuY29udGFpbnMoZXZ0LnRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgICAgICFwb3J0YWxDb250YWluZXI/LmNvbnRhaW5zKGV2dC50YXJnZXQgYXMgTm9kZSkgJiZcbiAgICAgICAgICBldnQudGFyZ2V0ICE9PSBudWxsXG4gICAgICAgICkge1xuICAgICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgIWlzQ29sbGFwc2VkICYmIGlzTmF2QmFyVmFyaWFudFxuICAgICk7XG5cbiAgICBjb25zdCBjbG9zZUF1dG9jb21wbGV0ZUxpc3QgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBzZXRJc0F1dG9jb21wbGV0ZUxpc3RPcGVuKGZhbHNlKTtcbiAgICAgIHNldFNlbGVjdGVkSW5kZXgoLTEpO1xuICAgIH0sIFtdKTtcblxuICAgIGNvbnN0IG9wZW5BdXRvY29tcGxldGVMaXN0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgaWYgKGF1dG9jb21wbGV0ZUxpc3RJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgc2V0SXNBdXRvY29tcGxldGVMaXN0T3Blbih0cnVlKTtcbiAgICAgICAgc2V0U2VsZWN0ZWRJbmRleCgtMSk7XG4gICAgICB9XG4gICAgfSwgW2F1dG9jb21wbGV0ZUxpc3RJdGVtc10pO1xuXG4gICAgY29uc3QgYWNjZXB0VGV4dFNlbGVjdGlvbiA9ICgpID0+IHtcbiAgICAgIHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQgPSB2YWx1ZTtcbiAgICAgIGlmIChcbiAgICAgICAgdGV4dEFyZWFSZWYuY3VycmVudC5zZWxlY3Rpb25TdGFydCAhPT0gdGV4dEFyZWFSZWYuY3VycmVudC5zZWxlY3Rpb25FbmRcbiAgICAgICkge1xuICAgICAgICB0ZXh0QXJlYVJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKHZhbHVlLmxlbmd0aCwgdmFsdWUubGVuZ3RoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmIChhdXRvY29tcGxldGVMaXN0SXRlbXMubGVuZ3RoICYmICFpc0NvbGxhcHNlZCkge1xuICAgICAgICBvcGVuQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2xvc2VBdXRvY29tcGxldGVMaXN0KCk7XG4gICAgICB9XG4gICAgfSwgW1xuICAgICAgYXV0b2NvbXBsZXRlTGlzdEl0ZW1zLFxuICAgICAgb3BlbkF1dG9jb21wbGV0ZUxpc3QsXG4gICAgICBjbG9zZUF1dG9jb21wbGV0ZUxpc3QsXG4gICAgICBpc0NvbGxhcHNlZCxcbiAgICBdKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAodmFsdWUgJiYgdmFsdWUgIT09IHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQgJiYgaXNBdXRvY29tcGxldGVMaXN0T3Blbikge1xuICAgICAgICB0ZXh0QXJlYVJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKFxuICAgICAgICAgIHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQubGVuZ3RoLFxuICAgICAgICAgIHZhbHVlLmxlbmd0aFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0sIFt2YWx1ZSwgdGV4dEFyZWFSZWYsIGlzQXV0b2NvbXBsZXRlTGlzdE9wZW5dKTtcblxuICAgIC8vIERldGVybWluZSB3aGVuIGZvY3VzIGxlYXZlcyB0aGUgY29udGFpbmVyIHRvIGNvbGxhcHNlIGl0XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGxldCBoYW5kbGVyOiAoZXZ0OiBGb2N1c0V2ZW50KSA9PiB2b2lkO1xuICAgICAgY29uc3QgY29udGFpbmVyID0gY29udGFpbmVyUmVmLmN1cnJlbnQ7XG5cbiAgICAgIGlmIChpc05hdkJhclZhcmlhbnQgJiYgY29udGFpbmVyKSB7XG4gICAgICAgIGhhbmRsZXIgPSAoZXZ0OiBGb2N1c0V2ZW50KSA9PiB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgIWNvbnRhaW5lclJlZi5jdXJyZW50LmNvbnRhaW5zKGV2dC5yZWxhdGVkVGFyZ2V0IGFzIE5vZGUpICYmXG4gICAgICAgICAgICAhcG9ydGFsQ29udGFpbmVyPy5jb250YWlucyhldnQucmVsYXRlZFRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgICAgICAgZXZ0LnJlbGF0ZWRUYXJnZXQgIT09IG51bGxcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c291dFwiLCBoYW5kbGVyKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiZm9jdXNvdXRcIiwgaGFuZGxlcik7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSwgW2lzTmF2QmFyVmFyaWFudCwgY29udGFpbmVyUmVmLCBwb3J0YWxDb250YWluZXJdKTtcblxuICAgIGNvbnN0IGZsYXR0ZW5lZExpc3RJdGVtcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgY29uc3QgbGlzdDogRmxhdHRlbmVkTGlzdEl0ZW1bXSA9IFtdO1xuXG4gICAgICBhdXRvY29tcGxldGVMaXN0SXRlbXMuZm9yRWFjaCgobGlzdEl0ZW0pID0+IHtcbiAgICAgICAgbGlzdEl0ZW0uaXRlbXMuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICBsaXN0LnB1c2goe1xuICAgICAgICAgICAgY2F0ZWdvcnk6IGxpc3RJdGVtLmNhdGVnb3J5LFxuICAgICAgICAgICAgaW5kZXhJbkNhdGVnb3J5OiBpbmRleCxcbiAgICAgICAgICAgIHZhbHVlOiBpdGVtLnZhbHVlLFxuICAgICAgICAgICAgaWQ6IGdldExpc3RJdGVtSWQobmFtZSwgbGlzdEl0ZW0uY2F0ZWdvcnksIGluZGV4KSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBsaXN0O1xuICAgIH0sIFthdXRvY29tcGxldGVMaXN0SXRlbXMsIG5hbWVdKTtcblxuICAgIGNvbnN0IGhhbmRsZVNlbGVjdGVkSW5kZXhDaGFuZ2UgPSAoaW5kZXg6IG51bWJlciwgZXZ0PzogU3ludGhldGljRXZlbnQpID0+IHtcbiAgICAgIHNldFNlbGVjdGVkSW5kZXgoaW5kZXgpO1xuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBjb25zdCB7IGNhdGVnb3J5LCB2YWx1ZTogaXRlbVZhbHVlIH0gPSBmbGF0dGVuZWRMaXN0SXRlbXNbaW5kZXhdO1xuXG4gICAgICAgIG9uQ29tcGxldGUoeyB2YWx1ZTogaXRlbVZhbHVlLCBjYXRlZ29yeSwgZXZ0LCBpbmRleCB9KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlTGlzdEl0ZW1DbGljayA9IChcbiAgICAgIGNhdGVnb3J5OiBzdHJpbmcsXG4gICAgICBpbmRleEluQ2F0ZWdvcnk6IG51bWJlcixcbiAgICAgIGV2dD86IE1vdXNlRXZlbnRcbiAgICApID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ID0gZmxhdHRlbmVkTGlzdEl0ZW1zLmZpbmRJbmRleChcbiAgICAgICAgKGxpc3RJdGVtKSA9PlxuICAgICAgICAgIGxpc3RJdGVtLmNhdGVnb3J5ID09PSBjYXRlZ29yeSAmJlxuICAgICAgICAgIGxpc3RJdGVtLmluZGV4SW5DYXRlZ29yeSA9PT0gaW5kZXhJbkNhdGVnb3J5XG4gICAgICApO1xuXG4gICAgICBoYW5kbGVTZWxlY3RlZEluZGV4Q2hhbmdlKGluZGV4LCBldnQpO1xuICAgICAgY2xvc2VBdXRvY29tcGxldGVMaXN0KCk7XG4gICAgICBpZiAoaXNOYXZCYXJWYXJpYW50KSB7XG4gICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVLZXlEb3duOiBLZXlib2FyZEV2ZW50SGFuZGxlcjxIVE1MVGV4dEFyZWFFbGVtZW50PiA9IChldnQpID0+IHtcbiAgICAgIGlmIChpc0F1dG9jb21wbGV0ZUxpc3RPcGVuKSB7XG4gICAgICAgIHN3aXRjaCAoZXZ0LmtleSkge1xuICAgICAgICAgIGNhc2UgXCJFc2NhcGVcIjpcbiAgICAgICAgICAgIGNsb3NlQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgICAgICAgb25Db21wbGV0ZSh7IHZhbHVlOiB1c2VyVHlwZWRRdWVyeS5jdXJyZW50LCBldnQgfSk7XG4gICAgICAgICAgICBpZiAoaXNOYXZCYXJWYXJpYW50KSB7XG4gICAgICAgICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBcIkVudGVyXCI6XG4gICAgICAgICAgICBpZiAoIWV2dC5zaGlmdEtleSkge1xuICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgY2xvc2VBdXRvY29tcGxldGVMaXN0KCk7XG4gICAgICAgICAgICAgIGFjY2VwdFRleHRTZWxlY3Rpb24oKTtcblxuICAgICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBvbkVudGVyS2V5Py4oKTtcbiAgICAgICAgICAgICAgICBpZiAoaXNOYXZCYXJWYXJpYW50KSB7XG4gICAgICAgICAgICAgICAgICBzZXRJc0NvbGxhcHNlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgXCIgXCI6XG4gICAgICAgICAgICBhY2NlcHRUZXh0U2VsZWN0aW9uKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFwiQXJyb3dVcFwiOlxuICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgIGhhbmRsZVNlbGVjdGVkSW5kZXhDaGFuZ2Uoc2VsZWN0ZWRJbmRleCAtIDEsIGV2dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFwiQXJyb3dEb3duXCI6XG4gICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZEluZGV4IDwgZmxhdHRlbmVkTGlzdEl0ZW1zLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0ZWRJbmRleENoYW5nZShzZWxlY3RlZEluZGV4ICsgMSwgZXZ0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN3aXRjaCAoZXZ0LmtleSkge1xuICAgICAgICAgIGNhc2UgXCJFc2NhcGVcIjpcbiAgICAgICAgICAgIG9uQ2xlYXI/LigpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBcIkVudGVyXCI6XG4gICAgICAgICAgICBpZiAoIWV2dC5zaGlmdEtleSkge1xuICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgb25FbnRlcktleT8uKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBvbktleURvd24/LihldnQpO1xuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVDaGFuZ2U6IENoYW5nZUV2ZW50SGFuZGxlcjxIVE1MVGV4dEFyZWFFbGVtZW50PiA9IChldnQpID0+IHtcbiAgICAgIHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQgPSBldnQudGFyZ2V0LnZhbHVlO1xuICAgICAgb25DaGFuZ2UoZXZ0KTtcbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlRm9jdXM6IEZvY3VzRXZlbnRIYW5kbGVyPEhUTUxUZXh0QXJlYUVsZW1lbnQ+ID0gKGV2dCkgPT4ge1xuICAgICAgc2V0SXNDb2xsYXBzZWQoZmFsc2UpO1xuICAgICAgb25Gb2N1cz8uKGV2dCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZUJsdXI6IEZvY3VzRXZlbnRIYW5kbGVyPEhUTUxUZXh0QXJlYUVsZW1lbnQ+ID0gKGV2dCkgPT4ge1xuICAgICAgaWYgKHZhbHVlICE9PSB1c2VyVHlwZWRRdWVyeS5jdXJyZW50KSB7XG4gICAgICAgIG9uQ29tcGxldGU/Lih7IHZhbHVlOiB1c2VyVHlwZWRRdWVyeS5jdXJyZW50LCBldnQgfSk7XG4gICAgICB9XG4gICAgICBvbkJsdXI/LihldnQpO1xuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVTZW5kQnV0dG9uQ2xpY2sgPSAoZXZ0OiBNb3VzZUV2ZW50PEhUTUxCdXR0b25FbGVtZW50PikgPT4ge1xuICAgICAgbWVyZ2VkU2VuZEJ1dHRvblByb3BzLm9uQ2xpY2s/LihldnQpO1xuICAgICAgY2xvc2VBdXRvY29tcGxldGVMaXN0KCk7XG4gICAgICBpZiAoaXNOYXZCYXJWYXJpYW50KSB7XG4gICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVQcmV2ZW50Rm9jdXMgPSAoZXZ0OiBSZWFjdC5Qb2ludGVyRXZlbnQpID0+IHtcbiAgICAgIC8vIFByZXZlbnQgdGhlIHRleHRhcmVhIGZyb20gYmVpbmcgdW5mb2N1c2VkXG4gICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlT25Db250YWluZXJQb2ludGVyRG93biA9IChldnQ6IFJlYWN0LlBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgLy8gRm9jdXMgdGV4dGFyZWEgd2hlbiBjbGlja2luZyBvbiB0aGUgY29udGFpbmVyIG9ubHlcbiAgICAgIGlmIChldnQudGFyZ2V0ID09PSBldnQuY3VycmVudFRhcmdldCkge1xuICAgICAgICB0ZXh0QXJlYVJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3Qgc2VsZWN0ZWRMaXN0SXRlbSA9XG4gICAgICBzZWxlY3RlZEluZGV4ICE9PSAtMSA/IGZsYXR0ZW5lZExpc3RJdGVtc1tzZWxlY3RlZEluZGV4XSA6IG51bGw7XG5cbiAgICBjb25zdCBlbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50RWxtID0gZW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudCA/IChcbiAgICAgIDxTdHlsZWRFbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50Q29udGFpbmVyXG4gICAgICAgIGlzTmF2QmFyVmFyaWFudD17aXNOYXZCYXJWYXJpYW50fVxuICAgICAgPlxuICAgICAgICA8VGV4dCBjb2xvcj1cInRlcnRpYXJ5XCI+e2VtcHR5U3RhdGVUb3BSaWdodENvbnRlbnR9PC9UZXh0PlxuICAgICAgPC9TdHlsZWRFbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50Q29udGFpbmVyPlxuICAgICkgOiBudWxsO1xuXG4gICAgY29uc3QgY2xlYXJCdXR0b25FbG0gPSB2YWx1ZSA/IChcbiAgICAgIDxTdHlsZWRDbGVhckJ1dHRvblxuICAgICAgICBzaXplPVwic1wiXG4gICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgaWNvbj1cIngtY2lyY2xlLWZpbGxlZFwiXG4gICAgICAgIGFyaWEtbGFiZWw9e2NsZWFyQnV0dG9uQXJpYUxhYmVsfVxuICAgICAgICBpc05hdkJhclZhcmlhbnQ9e2lzTmF2QmFyVmFyaWFudH1cbiAgICAgICAgb25Qb2ludGVyRG93bj17aGFuZGxlUHJldmVudEZvY3VzfVxuICAgICAgICBvbkNsaWNrPXtvbkNsZWFyfVxuICAgICAgLz5cbiAgICApIDogKFxuICAgICAgZW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudEVsbVxuICAgICk7XG5cbiAgICBjb25zdCBoaW50RWxtID0gISFoaW50ICYmIChcbiAgICAgIDxJbmxpbmUgYWxpZ25JdGVtcz1cImNlbnRlclwiPlxuICAgICAgICA8VGV4dCBzaXplPVwic1wiIGNvbG9yPVwidGVydGlhcnlcIj5cbiAgICAgICAgICB7aGludH1cbiAgICAgICAgPC9UZXh0PlxuICAgICAgPC9JbmxpbmU+XG4gICAgKTtcblxuICAgIGNvbnN0IGJvdHRvbVRvb2xiYXJFbG0gPSAoYm90dG9tVG9vbGJhcj8ucmlnaHRDb250ZW50IHx8XG4gICAgICBib3R0b21Ub29sYmFyPy5sZWZ0Q29udGVudCB8fFxuICAgICAgISFzZW5kQnV0dG9uUHJvcHMpICYmXG4gICAgICAhaXNDb2xsYXBzZWQgJiYgKFxuICAgICAgICA8PlxuICAgICAgICAgIHtib3R0b21Ub29sYmFyPy5sZWZ0Q29udGVudCAmJiAoXG4gICAgICAgICAgICA8U3R5bGVkU2xvdD57Ym90dG9tVG9vbGJhci5sZWZ0Q29udGVudH08L1N0eWxlZFNsb3Q+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8U3R5bGVkU2xvdCBkYXRhLWUyZS10ZXN0LWlkPVwiYm90dG9tVG9vbGJhclwiIHNpZGU9XCJyaWdodFwiPlxuICAgICAgICAgICAgPElubGluZSBzcGFjZT1cInhzXCIgdkFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAgICAgICAge2JvdHRvbVRvb2xiYXI/LnJpZ2h0Q29udGVudH1cbiAgICAgICAgICAgICAge3NlbmRCdXR0b25Qcm9wcyAmJiAoXG4gICAgICAgICAgICAgICAgPFN1YlRoZW1lUHJvdmlkZXIgbmFtZT17dmFyaWFudH0+XG4gICAgICAgICAgICAgICAgICA8Um91bmRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgYXJpYUF0dHJpYnV0ZXM9e3tcbiAgICAgICAgICAgICAgICAgICAgICBcImFyaWEtbGFiZWxcIjogaXNQcm9jZXNzaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFwiUHJvY2Vzc2luZyBxdWVyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFwiU3VibWl0IHF1ZXJ5XCIsXG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIHsuLi5tZXJnZWRTZW5kQnV0dG9uUHJvcHN9XG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXttZXJnZWRTZW5kQnV0dG9uUHJvcHMuZGlzYWJsZWQgPz8gIXZhbHVlfVxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVTZW5kQnV0dG9uQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlckRvd249e2hhbmRsZVByZXZlbnRGb2N1c31cbiAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICBpY29uPXtcbiAgICAgICAgICAgICAgICAgICAgICBpc1Byb2Nlc3NpbmcgPyBcInN0b3AtZmlsbGVkXCIgOiBtZXJnZWRTZW5kQnV0dG9uUHJvcHMuaWNvblxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvU3ViVGhlbWVQcm92aWRlcj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvSW5saW5lPlxuICAgICAgICAgIDwvU3R5bGVkU2xvdD5cbiAgICAgICAgPC8+XG4gICAgICApO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBkYXRhLWUyZS10ZXN0LWlkPXtkYXRhRTJlVGVzdElkfVxuICAgICAgICAgIGRhdGEtZHMtaWQ9XCJQcm9tcHRJbnB1dFwiXG4gICAgICAgICAgcmVmPXtjb250YWluZXJSZWZ9XG4gICAgICAgICAgLy8gVHJhbnNsYXRpb24gZGlzYWJsZWQgZm9yIGNvbnNpc3RlbmN5IHdpdGggdGhlIGF1dG9jb21wbGV0ZSBsaXN0XG4gICAgICAgICAgdHJhbnNsYXRlPVwibm9cIlxuICAgICAgICA+XG4gICAgICAgICAgPFN0YWNrIHNwYWNlPVwic1wiPlxuICAgICAgICAgICAgPEFuaW1hdGVkQm9yZGVyXG4gICAgICAgICAgICAgIHNraXBBbmltYXRpb249e3NraXBBSUFuaW1hdGlvbiB8fCB2YXJpYW50ICE9PSBcImFpXCJ9XG4gICAgICAgICAgICAgIHJhZGl1cz17MTJ9XG4gICAgICAgICAgICAgIGl0ZXJhdGlvbnM9ezF9XG4gICAgICAgICAgICAgIHRoaWNrbmVzcz17Mn1cbiAgICAgICAgICAgICAgaGlkZUNoaWxkQm9yZGVyXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxTdWJUaGVtZVByb3ZpZGVyIG5hbWU9e3ZhcmlhbnR9PlxuICAgICAgICAgICAgICAgIDxDdXN0b21Db250YWluZXJcbiAgICAgICAgICAgICAgICAgIGVsZXZhdGlvbj17MH1cbiAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1cz17aXNDb2xsYXBzZWQgPyBcInhzXCIgOiBcIm1cIn1cbiAgICAgICAgICAgICAgICAgIGhpZGVCb3JkZXI9e2lzQ29sbGFwc2VkfVxuICAgICAgICAgICAgICAgICAgaGFzU2hhZG93PXshaXNOYXZCYXJWYXJpYW50fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTdWJUaGVtZVByb3ZpZGVyIG5hbWU9XCJ1bnNldFwiPlxuICAgICAgICAgICAgICAgICAgICA8U3R5bGVkU2xvdHNDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICByZWY9e3RleHRBcmVhQ29udGFpbmVyUmVmfVxuICAgICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlckRvd249e2hhbmRsZU9uQ29udGFpbmVyUG9pbnRlckRvd259XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U3R5bGVkVGV4dEFyZWFDb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7bGVmdEljb24gJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8U3R5bGVkTGVmdEljb25Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9e2xlZnRJY29ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJ0ZXJ0aWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3R5bGVkTGVmdEljb25Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPFByb21wdFRleHRBcmVhXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhRTJlVGVzdElkPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhRTJlVGVzdElkID8gYCR7ZGF0YUUyZVRlc3RJZH0taW5wdXRgIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e3RleHRBcmVhUmVmfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpc05hdkJhclZhcmlhbnQ9e2lzTmF2QmFyVmFyaWFudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRMaXN0SXRlbT17c2VsZWN0ZWRMaXN0SXRlbX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNBdXRvY29tcGxldGVMaXN0T3Blbj17aXNBdXRvY29tcGxldGVMaXN0T3Blbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNDb2xsYXBzZWQ9e2lzQ29sbGFwc2VkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNMZWZ0SWNvbj17ISFsZWZ0SWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25Gb2N1cz17aGFuZGxlRm9jdXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3dufVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtjbGVhckJ1dHRvbkVsbX1cbiAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZFRleHRBcmVhQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgIHtib3R0b21Ub29sYmFyRWxtfVxuICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZFNsb3RzQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPC9TdWJUaGVtZVByb3ZpZGVyPlxuICAgICAgICAgICAgICAgIDwvQ3VzdG9tQ29udGFpbmVyPlxuICAgICAgICAgICAgICA8L1N1YlRoZW1lUHJvdmlkZXI+XG4gICAgICAgICAgICA8L0FuaW1hdGVkQm9yZGVyPlxuICAgICAgICAgICAge2hpbnRFbG19XG4gICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPEF1dG9jb21wbGV0ZUxpc3RcbiAgICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICBhdXRvY29tcGxldGVMaXN0SXRlbXM9e2F1dG9jb21wbGV0ZUxpc3RJdGVtc31cbiAgICAgICAgICB0cmlnZ2VyUmVmPXt0ZXh0QXJlYUNvbnRhaW5lclJlZn1cbiAgICAgICAgICBzZWxlY3RlZExpc3RJdGVtPXtzZWxlY3RlZExpc3RJdGVtfVxuICAgICAgICAgIGlzT3Blbj17aXNBdXRvY29tcGxldGVMaXN0T3Blbn1cbiAgICAgICAgICBhdXRvY29tcGxldGVMaXN0Rm9vdGVyPXthdXRvY29tcGxldGVMaXN0Rm9vdGVyfVxuICAgICAgICAgIHBvcnRhbENvbnRhaW5lcj17cG9ydGFsQ29udGFpbmVyfVxuICAgICAgICAgIG9uTGlzdEl0ZW1DbGljaz17aGFuZGxlTGlzdEl0ZW1DbGlja31cbiAgICAgICAgLz5cbiAgICAgIDwvPlxuICAgICk7XG4gIH1cbik7XG5cbmNvbnN0IEN1c3RvbUJ1dHRvbiA9IHN0eWxlZChCdXR0b24pKCh7IHRoZW1lIH0pID0+ICh7XG4gIGJvcmRlclJhZGl1czogdGhlbWUudmFyaWFibGVzLnNpemUuYm9yZGVyUmFkaXVzLmwsXG59KSk7XG5cbi8vIG5lZWQgdG8gc2ltcGxpZnkgdGhpcyB0eXBlIGZvciByZXVzZVxuY29uc3QgU3VnZ2VzdGlvbkJ1dHRvbiA9IGZvcndhcmRSZWYoXG4gIDxDIGV4dGVuZHMgUmVhY3QuRWxlbWVudFR5cGUgPSBcImJ1dHRvblwiPihcbiAgICBwcm9wczogUG9seW1vcnBoaWNDb21wb25lbnRQcm9wc1dpdGhSZWY8XG4gICAgICBDLFxuICAgICAgT21pdDxCdXR0b25Qcm9wcywgXCJ2YXJpYW50XCIgfCBcInNpemVcIiB8IFwicmVmXCI+XG4gICAgPixcbiAgICByZWY6IFBvbHltb3JwaGljUmVmPEM+XG4gICkgPT4gPEN1c3RvbUJ1dHRvbiB7Li4ucHJvcHN9IHZhcmlhbnQ9XCJzZWNvbmRhcnlcIiBzaXplPVwic1wiIHJlZj17cmVmfSAvPlxuKTtcblxuZXhwb3J0IGNvbnN0IFByb21wdElucHV0ID0gT2JqZWN0LmFzc2lnbihQcm9tcHRJbnB1dENvbXBvbmVudCwge1xuICBTdWdnZXN0aW9uQnV0dG9uLFxufSkgYXMgdHlwZW9mIFByb21wdElucHV0Q29tcG9uZW50ICYge1xuICBTdWdnZXN0aW9uQnV0dG9uOiB0eXBlb2YgU3VnZ2VzdGlvbkJ1dHRvbjtcbn07XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZ0gwQiJ9 */"),StyledSlotsContainer=(0,_styled.default)("div",{target:"e1jgljjd5",label:"StyledSlotsContainer"})({display:"flex",flexWrap:"wrap",alignItems:"center"},"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvUHJvbXB0SW5wdXQvUHJvbXB0SW5wdXQudHN4Iiwic291cmNlcyI6WyJzcmMvY29tcG9uZW50cy9Qcm9tcHRJbnB1dC9Qcm9tcHRJbnB1dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBSZWFjdEVsZW1lbnQsXG4gIENoYW5nZUV2ZW50SGFuZGxlcixcbiAgS2V5Ym9hcmRFdmVudEhhbmRsZXIsXG4gIFJlZk9iamVjdCxcbiAgRm9jdXNFdmVudEhhbmRsZXIsXG4gIFN5bnRoZXRpY0V2ZW50LFxuICBNb3VzZUV2ZW50LFxufSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IFJlYWN0LCB7XG4gIHVzZVJlZixcbiAgdXNlTWVtbyxcbiAgdXNlU3RhdGUsXG4gIHVzZUVmZmVjdCxcbiAgdXNlQ2FsbGJhY2ssXG4gIGZvcndhcmRSZWYsXG59IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5cbmltcG9ydCB0eXBlIHsgUHJvbXB0VGV4dEFyZWFQcm9wcyB9IGZyb20gXCIuL1Byb21wdFRleHRBcmVhXCI7XG5pbXBvcnQge1xuICBQcm9tcHRUZXh0QXJlYSxcbiAgZ2V0UGFkZGluZ0hvcml6b250YWwsXG4gIGdldFBhZGRpbmdWZXJ0aWNhbCxcbn0gZnJvbSBcIi4vUHJvbXB0VGV4dEFyZWFcIjtcbmltcG9ydCB7IENvbnRhaW5lciB9IGZyb20gXCIuLi9Db250YWluZXJcIjtcbmltcG9ydCB0eXBlIHsgQXV0b2NvbXBsZXRlTGlzdFByb3BzIH0gZnJvbSBcIi4vQXV0b2NvbXBsZXRlTGlzdFwiO1xuXG5pbXBvcnQgeyBBdXRvY29tcGxldGVMaXN0IH0gZnJvbSBcIi4vQXV0b2NvbXBsZXRlTGlzdFwiO1xuaW1wb3J0IHtcbiAgZ2V0TGlzdEl0ZW1JZCxcbiAgdHlwZSBGbGF0dGVuZWRMaXN0SXRlbSxcbiAgdHlwZSBMaXN0SXRlbVZhbHVlLFxufSBmcm9tIFwiLi9DYXRlZ29yeUxpc3RcIjtcbmltcG9ydCB7IFRleHQgfSBmcm9tIFwiLi4vVHlwb2dyYXBoeS9UZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24sIHR5cGUgQnV0dG9uUHJvcHMgfSBmcm9tIFwiLi4vQnV0dG9uL0J1dHRvblwiO1xuaW1wb3J0IHR5cGUge1xuICBQb2x5bW9ycGhpY1JlZixcbiAgUG9seW1vcnBoaWNDb21wb25lbnRQcm9wc1dpdGhSZWYsXG59IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuaW1wb3J0IHsgSW5saW5lIH0gZnJvbSBcIi4uL0lubGluZS9JbmxpbmVcIjtcbmltcG9ydCB0eXBlIHsgUm91bmRCdXR0b25Qcm9wcyB9IGZyb20gXCIuLi9Sb3VuZEJ1dHRvbi9Sb3VuZEJ1dHRvblwiO1xuaW1wb3J0IHsgUm91bmRCdXR0b24gfSBmcm9tIFwiLi4vUm91bmRCdXR0b24vUm91bmRCdXR0b25cIjtcbmltcG9ydCB0eXBlIHsgUGljdG9ncmFtQnV0dG9uUHJvcHMgfSBmcm9tIFwiLi4vUGljdG9ncmFtQnV0dG9uL1BpY3RvZ3JhbUJ1dHRvblwiO1xuaW1wb3J0IHsgUGljdG9ncmFtQnV0dG9uIH0gZnJvbSBcIi4uL1BpY3RvZ3JhbUJ1dHRvbi9QaWN0b2dyYW1CdXR0b25cIjtcbmltcG9ydCB7IFN0YWNrIH0gZnJvbSBcIi4uL1N0YWNrL1N0YWNrXCI7XG5pbXBvcnQgeyB1c2VPdXRzaWRlQ2xpY2sgfSBmcm9tIFwiLi4vLi4vc2hhcmVkL3VzZU91dHNpZGVDbGlja1wiO1xuaW1wb3J0IHR5cGUgeyBJY29uTmFtZSB9IGZyb20gXCIuLi9JY29uL0ljb25cIjtcbmltcG9ydCB7IEljb24gfSBmcm9tIFwiLi4vSWNvbi9JY29uXCI7XG5pbXBvcnQgeyBTdWJUaGVtZVByb3ZpZGVyIH0gZnJvbSBcIi4uL1N1YlRoZW1lUHJvdmlkZXIvU3ViVGhlbWVQcm92aWRlclwiO1xuaW1wb3J0IHsgQW5pbWF0ZWRCb3JkZXIgfSBmcm9tIFwiLi4vVXRpbGl0aWVzL0FuaW1hdGVkQm9yZGVyL0FuaW1hdGVkQm9yZGVyXCI7XG5cbmNvbnN0IEN1c3RvbUNvbnRhaW5lciA9IHN0eWxlZChDb250YWluZXIpPHtcbiAgaGlkZUJvcmRlcjogYm9vbGVhbjtcbiAgaGFzU2hhZG93OiBib29sZWFuO1xufT4oKHsgdGhlbWUsIGhpZGVCb3JkZXIsIGhhc1NoYWRvdyB9KSA9PiAoe1xuICBib3JkZXI6IGAxcHggc29saWQgJHt0aGVtZS52YWx1ZXMuY29sb3IuYm9yZGVyLnByaW1hcnkuZGVmYXVsdH1gLFxuICAuLi4oaGFzU2hhZG93ICYmIHtcbiAgICBib3hTaGFkb3c6IHRoZW1lLnZhbHVlcy5zaGFkb3cuZGVmYXVsdFJpbmcsXG4gICAgdHJhbnNpdGlvblByb3BlcnR5OiBcImJveC1zaGFkb3csIGJvcmRlci1jb2xvciwgb3V0bGluZS1jb2xvclwiLFxuICAgIHRyYW5zaXRpb25EdXJhdGlvbjogdGhlbWUudmFyaWFibGVzLmFuaW1hdGlvbi5wcm9tcHRJbnB1dC5mb2N1cy5kdXJhdGlvbixcbiAgICB0cmFuc2l0aW9uVGltaW5nRnVuY3Rpb246XG4gICAgICB0aGVtZS52YXJpYWJsZXMuYW5pbWF0aW9uLnByb21wdElucHV0LmZvY3VzLnRpbWluZ0Z1bmN0aW9uLFxuICB9KSxcbiAgLi4uKGhpZGVCb3JkZXIgJiYge1xuICAgIGJvcmRlckNvbG9yOiBcInRyYW5zcGFyZW50XCIsXG4gIH0pLFxuICBjdXJzb3I6IFwidGV4dFwiLFxuICBvdXRsaW5lQ29sb3I6IFwidHJhbnNwYXJlbnRcIixcbiAgW2AmOmhhcyh0ZXh0YXJlYTpmb2N1cy12aXNpYmxlKWBdOiB7XG4gICAgb3V0bGluZVdpZHRoOiAxLFxuICAgIG91dGxpbmVTdHlsZTogXCJzb2xpZFwiLFxuICAgIG91dGxpbmVPZmZzZXQ6IC0xLFxuICAgIGJveFNoYWRvdzogdGhlbWUudmFsdWVzLnNoYWRvdy5mb2N1c1JpbmcsXG4gICAgb3V0bGluZUNvbG9yOiB0aGVtZS52YWx1ZXMuY29sb3IuYm9yZGVyLmFjY2VudC5kZWZhdWx0LFxuICB9LFxufSkpO1xuXG5jb25zdCBTdHlsZWRUZXh0QXJlYUNvbnRhaW5lciA9IHN0eWxlZC5kaXYoe1xuICBib3JkZXJSYWRpdXM6IFwiaW5oZXJpdFwiLFxuICBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiLFxuICB3aWR0aDogXCIxMDAlXCIsXG59KTtcblxuY29uc3QgU3R5bGVkTGVmdEljb25Db250YWluZXIgPSBzdHlsZWQuZGl2KCh7IHRoZW1lIH0pID0+ICh7XG4gIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gIHRvcDogZ2V0UGFkZGluZ1ZlcnRpY2FsKHRoZW1lKSxcbiAgbGVmdDogZ2V0UGFkZGluZ0hvcml6b250YWwodGhlbWUpLFxufSkpO1xuXG50eXBlIFN0eWxlZEVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnRDb250YWluZXJQcm9wcyA9IFBpY2s8XG4gIFByb21wdElucHV0UHJvcHMsXG4gIFwiaXNOYXZCYXJWYXJpYW50XCJcbj47XG5cbmNvbnN0IFN0eWxlZEVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnRDb250YWluZXIgPVxuICBzdHlsZWQuZGl2PFN0eWxlZEVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnRDb250YWluZXJQcm9wcz4oXG4gICAgKHsgdGhlbWUsIGlzTmF2QmFyVmFyaWFudCB9KSA9PiAoe1xuICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgIHRvcDogaXNOYXZCYXJWYXJpYW50XG4gICAgICAgID8gdGhlbWUudmFyaWFibGVzLnNpemUuc3BhY2luZy54eHNcbiAgICAgICAgOiBnZXRQYWRkaW5nVmVydGljYWwodGhlbWUpLFxuICAgICAgcmlnaHQ6IGdldFBhZGRpbmdIb3Jpem9udGFsKHRoZW1lKSxcbiAgICAgIHVzZXJTZWxlY3Q6IFwibm9uZVwiLFxuICAgICAgcG9pbnRlckV2ZW50czogXCJub25lXCIsXG4gICAgfSlcbiAgKTtcblxudHlwZSBTdHlsZWRDbGVhckJ1dHRvblByb3BzID0gUGljdG9ncmFtQnV0dG9uUHJvcHMgJlxuICBQaWNrPFByb21wdElucHV0UHJvcHMsIFwiaXNOYXZCYXJWYXJpYW50XCI+O1xuXG5jb25zdCBTdHlsZWRDbGVhckJ1dHRvbiA9IHN0eWxlZChQaWN0b2dyYW1CdXR0b24pPFN0eWxlZENsZWFyQnV0dG9uUHJvcHM+KFxuICAoeyB0aGVtZSwgaXNOYXZCYXJWYXJpYW50IH0pID0+ICh7XG4gICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICByaWdodDogdGhlbWUudmFyaWFibGVzLnNpemUuc3BhY2luZy5zLFxuICAgIHRvcDogaXNOYXZCYXJWYXJpYW50ID8gMCA6IHRoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcucyxcbiAgfSlcbik7XG5cbmNvbnN0IFN0eWxlZFNsb3RzQ29udGFpbmVyID0gc3R5bGVkLmRpdih7XG4gIGRpc3BsYXk6IFwiZmxleFwiLFxuICBmbGV4V3JhcDogXCJ3cmFwXCIsXG4gIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG59KTtcblxuLy8gSXQgbmVlZHMgbWFyZ2luIGR1ZSB0byBlbXB0eSBjbGlja2FibGUgc3BhY2UgdGhhdCBmb2N1c2VzIHRoZSB0ZXh0YXJlYVxuLy8gU2xvdHMgc2hvdWxkIG5vdCBiZSBpbiB0aGUgZGl2LCBiZWNhdXNlIGFyZWEgYmV0d2VlbiBzaG91bGQgYmUgY2xpY2thYmxlIGFsc29cbnR5cGUgU2xvdFByb3BzID0ge1xuICBzaWRlPzogXCJyaWdodFwiO1xufTtcbmNvbnN0IFN0eWxlZFNsb3QgPSBzdHlsZWQuZGl2PFNsb3RQcm9wcz4oKHsgdGhlbWUsIHNpZGUgfSkgPT4gKHtcbiAgbWFyZ2luOiBgMCAke3RoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcuc30gJHt0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnN9YCxcblxuICAuLi4oc2lkZSA9PT0gXCJyaWdodFwiICYmIHtcbiAgICBtYXJnaW5MZWZ0OiBcImF1dG9cIixcbiAgfSksXG59KSk7XG5cbnR5cGUgU2VuZEJ1dHRvblByb3BzID0gT21pdDxSb3VuZEJ1dHRvblByb3BzLCBcImljb25cIiB8IFwidmFyaWFudFwiPiAmIHtcbiAgaWNvbj86IFwiYXJyb3ctdXBcIiB8IFwic2VhcmNoXCIgfCBcImFycm93LXJpZ2h0XCIgfCBcInZvaWNlXCI7XG59O1xuXG50eXBlIEJvdHRvbVRvb2xiYXJDb25maWcgPSB7XG4gIC8qKiBUb29sYmFyIGVsZW1lbnRzIGJlbG93IHRleHQgYXJlYSAqL1xuICBsZWZ0Q29udGVudD86IFJlYWN0RWxlbWVudDtcbiAgcmlnaHRDb250ZW50PzogUmVhY3RFbGVtZW50O1xufTtcblxuZXhwb3J0IHR5cGUgUHJvbXB0SW5wdXRQcm9wcyA9IHtcbiAgXCJkYXRhLWUyZS10ZXN0LWlkXCI/OiBzdHJpbmc7XG4gIHZhcmlhbnQ/OiBcImFpXCI7XG4gIHNraXBBSUFuaW1hdGlvbj86IGJvb2xlYW47XG4gIGJvdHRvbVRvb2xiYXI/OiBCb3R0b21Ub29sYmFyQ29uZmlnO1xuICBzZW5kQnV0dG9uUHJvcHM/OiBTZW5kQnV0dG9uUHJvcHM7XG4gIC8qKiBDdXJyZW50bHkgc2hvd3Mgc2VuZCBidXR0b24gcHJvY2Vzc2luZyBzdGF0ZSAgKi9cbiAgaXNQcm9jZXNzaW5nPzogYm9vbGVhbjtcbiAgY2xlYXJCdXR0b25BcmlhTGFiZWw/OiBzdHJpbmc7XG4gIGhpbnQ/OiBSZWFjdEVsZW1lbnQ7XG4gIC8qKiBTaG93cyBpbiB0aGUgY2xlYXIgYnV0dG9uIHNwYWNlIGluIGVtcHR5IHN0YXRlICovXG4gIGVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnQ/OiBSZWFjdEVsZW1lbnQ7XG4gIG9uQ2xlYXI6ICgpID0+IHZvaWQ7XG4gIC8qKiBDYWxsZWQgd2hlbiB1c2VyIHNlbGVjdHMgKG9yIHJlamVjdHMpIGEgbGlzdCBpdGVtIGZyb20gYXV0b2NvbXBsZXRlIGxpc3QgKi9cbiAgb25Db21wbGV0ZT86ICh7XG4gICAgdmFsdWUsXG4gICAgY2F0ZWdvcnksXG4gICAgZXZ0LFxuICAgIGluZGV4LFxuICB9OiB7XG4gICAgdmFsdWU6IExpc3RJdGVtVmFsdWU7XG4gICAgY2F0ZWdvcnk/OiBzdHJpbmc7XG4gICAgZXZ0PzogU3ludGhldGljRXZlbnQ7XG4gICAgaW5kZXg/OiBudW1iZXI7XG4gIH0pID0+IHZvaWQ7XG4gIC8qKiBDYWxsZWQgb24gRW50ZXIga2V5IHRvIHN1Ym1pdCB0aGUgZm9ybSAgKi9cbiAgb25FbnRlcktleTogKCkgPT4gdm9pZDtcbiAgLyoqIFJlbmRlcnMgYW4gaWNvbiB0byB0aGUgbGVmdCBpbnNpZGUgdGhlIHRleHRhcmVhICovXG4gIGxlZnRJY29uPzogSWNvbk5hbWU7XG59ICYgT21pdDxcbiAgUHJvbXB0VGV4dEFyZWFQcm9wcyxcbiAgXCJpc0NvbGxhcHNlZFwiIHwgXCJpc0F1dG9jb21wbGV0ZUxpc3RPcGVuXCIgfCBcInNlbGVjdGVkTGlzdEl0ZW1cIiB8IFwiaGFzTGVmdEljb25cIlxuPiAmXG4gIFBpY2s8XG4gICAgQXV0b2NvbXBsZXRlTGlzdFByb3BzLFxuICAgIFwiYXV0b2NvbXBsZXRlTGlzdEl0ZW1zXCIgfCBcImF1dG9jb21wbGV0ZUxpc3RGb290ZXJcIiB8IFwicG9ydGFsQ29udGFpbmVyXCJcbiAgPjtcblxuY29uc3QgZGVmYXVsdFNlbmRCdXR0b25Qcm9wczogU2VuZEJ1dHRvblByb3BzID0ge1xuICB0eXBlOiBcInN1Ym1pdFwiIGFzIGNvbnN0LFxuICBpY29uOiBcImFycm93LXVwXCIgYXMgY29uc3QsXG59O1xuXG5jb25zdCBQcm9tcHRJbnB1dENvbXBvbmVudCA9IGZvcndhcmRSZWYoXG4gIChcbiAgICB7XG4gICAgICBcImRhdGEtZTJlLXRlc3QtaWRcIjogZGF0YUUyZVRlc3RJZCxcbiAgICAgIG5hbWUsXG4gICAgICBhdXRvY29tcGxldGVMaXN0SXRlbXMgPSBbXSxcbiAgICAgIHZhbHVlLFxuICAgICAgYm90dG9tVG9vbGJhcixcbiAgICAgIGlzUHJvY2Vzc2luZyxcbiAgICAgIHNlbmRCdXR0b25Qcm9wcyxcbiAgICAgIGF1dG9jb21wbGV0ZUxpc3RGb290ZXIsXG4gICAgICBjbGVhckJ1dHRvbkFyaWFMYWJlbCA9IFwiQ2xlYXIgaW5wdXRcIixcbiAgICAgIGhpbnQsXG4gICAgICBlbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50LFxuICAgICAgaXNOYXZCYXJWYXJpYW50LFxuICAgICAgcG9ydGFsQ29udGFpbmVyLFxuICAgICAgbGVmdEljb24sXG4gICAgICBvbkNoYW5nZSxcbiAgICAgIG9uQ29tcGxldGUsXG4gICAgICBvbkNsZWFyLFxuICAgICAgb25FbnRlcktleSxcbiAgICAgIG9uRm9jdXMsXG4gICAgICBvbkJsdXIsXG4gICAgICBvbktleURvd24sXG4gICAgICB2YXJpYW50LFxuICAgICAgc2tpcEFJQW5pbWF0aW9uID0gZmFsc2UsXG4gICAgICAuLi5yZXN0XG4gICAgfTogUHJvbXB0SW5wdXRQcm9wcyxcbiAgICByZWY6IFJlZk9iamVjdDxIVE1MVGV4dEFyZWFFbGVtZW50PlxuICApOiBSZWFjdEVsZW1lbnQgPT4ge1xuICAgIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gICAgY29uc3QgdGV4dEFyZWFDb250YWluZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICAgIGNvbnN0IGludGVybmFsUmVmID0gdXNlUmVmPEhUTUxUZXh0QXJlYUVsZW1lbnQ+KG51bGwpO1xuICAgIGNvbnN0IFtzZWxlY3RlZEluZGV4LCBzZXRTZWxlY3RlZEluZGV4XSA9IHVzZVN0YXRlKC0xKTtcbiAgICBjb25zdCBbaXNDb2xsYXBzZWQsIHNldElzQ29sbGFwc2VkXSA9IHVzZVN0YXRlKGlzTmF2QmFyVmFyaWFudCk7XG4gICAgY29uc3QgdXNlclR5cGVkUXVlcnkgPSB1c2VSZWYoXCJcIik7XG4gICAgY29uc3QgW2lzQXV0b2NvbXBsZXRlTGlzdE9wZW4sIHNldElzQXV0b2NvbXBsZXRlTGlzdE9wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IHRleHRBcmVhUmVmID0gcmVmIHx8IGludGVybmFsUmVmO1xuXG4gICAgY29uc3QgbWVyZ2VkU2VuZEJ1dHRvblByb3BzID0ge1xuICAgICAgLi4uZGVmYXVsdFNlbmRCdXR0b25Qcm9wcyxcbiAgICAgIC4uLihzZW5kQnV0dG9uUHJvcHMgPz8ge30pLFxuICAgIH07XG5cbiAgICB1c2VPdXRzaWRlQ2xpY2soXG4gICAgICBjb250YWluZXJSZWYsXG4gICAgICAoZXZ0KSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhY29udGFpbmVyUmVmLmN1cnJlbnQuY29udGFpbnMoZXZ0LnRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgICAgICFwb3J0YWxDb250YWluZXI/LmNvbnRhaW5zKGV2dC50YXJnZXQgYXMgTm9kZSkgJiZcbiAgICAgICAgICBldnQudGFyZ2V0ICE9PSBudWxsXG4gICAgICAgICkge1xuICAgICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgIWlzQ29sbGFwc2VkICYmIGlzTmF2QmFyVmFyaWFudFxuICAgICk7XG5cbiAgICBjb25zdCBjbG9zZUF1dG9jb21wbGV0ZUxpc3QgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBzZXRJc0F1dG9jb21wbGV0ZUxpc3RPcGVuKGZhbHNlKTtcbiAgICAgIHNldFNlbGVjdGVkSW5kZXgoLTEpO1xuICAgIH0sIFtdKTtcblxuICAgIGNvbnN0IG9wZW5BdXRvY29tcGxldGVMaXN0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgaWYgKGF1dG9jb21wbGV0ZUxpc3RJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgc2V0SXNBdXRvY29tcGxldGVMaXN0T3Blbih0cnVlKTtcbiAgICAgICAgc2V0U2VsZWN0ZWRJbmRleCgtMSk7XG4gICAgICB9XG4gICAgfSwgW2F1dG9jb21wbGV0ZUxpc3RJdGVtc10pO1xuXG4gICAgY29uc3QgYWNjZXB0VGV4dFNlbGVjdGlvbiA9ICgpID0+IHtcbiAgICAgIHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQgPSB2YWx1ZTtcbiAgICAgIGlmIChcbiAgICAgICAgdGV4dEFyZWFSZWYuY3VycmVudC5zZWxlY3Rpb25TdGFydCAhPT0gdGV4dEFyZWFSZWYuY3VycmVudC5zZWxlY3Rpb25FbmRcbiAgICAgICkge1xuICAgICAgICB0ZXh0QXJlYVJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKHZhbHVlLmxlbmd0aCwgdmFsdWUubGVuZ3RoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmIChhdXRvY29tcGxldGVMaXN0SXRlbXMubGVuZ3RoICYmICFpc0NvbGxhcHNlZCkge1xuICAgICAgICBvcGVuQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2xvc2VBdXRvY29tcGxldGVMaXN0KCk7XG4gICAgICB9XG4gICAgfSwgW1xuICAgICAgYXV0b2NvbXBsZXRlTGlzdEl0ZW1zLFxuICAgICAgb3BlbkF1dG9jb21wbGV0ZUxpc3QsXG4gICAgICBjbG9zZUF1dG9jb21wbGV0ZUxpc3QsXG4gICAgICBpc0NvbGxhcHNlZCxcbiAgICBdKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAodmFsdWUgJiYgdmFsdWUgIT09IHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQgJiYgaXNBdXRvY29tcGxldGVMaXN0T3Blbikge1xuICAgICAgICB0ZXh0QXJlYVJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKFxuICAgICAgICAgIHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQubGVuZ3RoLFxuICAgICAgICAgIHZhbHVlLmxlbmd0aFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0sIFt2YWx1ZSwgdGV4dEFyZWFSZWYsIGlzQXV0b2NvbXBsZXRlTGlzdE9wZW5dKTtcblxuICAgIC8vIERldGVybWluZSB3aGVuIGZvY3VzIGxlYXZlcyB0aGUgY29udGFpbmVyIHRvIGNvbGxhcHNlIGl0XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGxldCBoYW5kbGVyOiAoZXZ0OiBGb2N1c0V2ZW50KSA9PiB2b2lkO1xuICAgICAgY29uc3QgY29udGFpbmVyID0gY29udGFpbmVyUmVmLmN1cnJlbnQ7XG5cbiAgICAgIGlmIChpc05hdkJhclZhcmlhbnQgJiYgY29udGFpbmVyKSB7XG4gICAgICAgIGhhbmRsZXIgPSAoZXZ0OiBGb2N1c0V2ZW50KSA9PiB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgIWNvbnRhaW5lclJlZi5jdXJyZW50LmNvbnRhaW5zKGV2dC5yZWxhdGVkVGFyZ2V0IGFzIE5vZGUpICYmXG4gICAgICAgICAgICAhcG9ydGFsQ29udGFpbmVyPy5jb250YWlucyhldnQucmVsYXRlZFRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgICAgICAgZXZ0LnJlbGF0ZWRUYXJnZXQgIT09IG51bGxcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c291dFwiLCBoYW5kbGVyKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiZm9jdXNvdXRcIiwgaGFuZGxlcik7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSwgW2lzTmF2QmFyVmFyaWFudCwgY29udGFpbmVyUmVmLCBwb3J0YWxDb250YWluZXJdKTtcblxuICAgIGNvbnN0IGZsYXR0ZW5lZExpc3RJdGVtcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgY29uc3QgbGlzdDogRmxhdHRlbmVkTGlzdEl0ZW1bXSA9IFtdO1xuXG4gICAgICBhdXRvY29tcGxldGVMaXN0SXRlbXMuZm9yRWFjaCgobGlzdEl0ZW0pID0+IHtcbiAgICAgICAgbGlzdEl0ZW0uaXRlbXMuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICBsaXN0LnB1c2goe1xuICAgICAgICAgICAgY2F0ZWdvcnk6IGxpc3RJdGVtLmNhdGVnb3J5LFxuICAgICAgICAgICAgaW5kZXhJbkNhdGVnb3J5OiBpbmRleCxcbiAgICAgICAgICAgIHZhbHVlOiBpdGVtLnZhbHVlLFxuICAgICAgICAgICAgaWQ6IGdldExpc3RJdGVtSWQobmFtZSwgbGlzdEl0ZW0uY2F0ZWdvcnksIGluZGV4KSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBsaXN0O1xuICAgIH0sIFthdXRvY29tcGxldGVMaXN0SXRlbXMsIG5hbWVdKTtcblxuICAgIGNvbnN0IGhhbmRsZVNlbGVjdGVkSW5kZXhDaGFuZ2UgPSAoaW5kZXg6IG51bWJlciwgZXZ0PzogU3ludGhldGljRXZlbnQpID0+IHtcbiAgICAgIHNldFNlbGVjdGVkSW5kZXgoaW5kZXgpO1xuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBjb25zdCB7IGNhdGVnb3J5LCB2YWx1ZTogaXRlbVZhbHVlIH0gPSBmbGF0dGVuZWRMaXN0SXRlbXNbaW5kZXhdO1xuXG4gICAgICAgIG9uQ29tcGxldGUoeyB2YWx1ZTogaXRlbVZhbHVlLCBjYXRlZ29yeSwgZXZ0LCBpbmRleCB9KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlTGlzdEl0ZW1DbGljayA9IChcbiAgICAgIGNhdGVnb3J5OiBzdHJpbmcsXG4gICAgICBpbmRleEluQ2F0ZWdvcnk6IG51bWJlcixcbiAgICAgIGV2dD86IE1vdXNlRXZlbnRcbiAgICApID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ID0gZmxhdHRlbmVkTGlzdEl0ZW1zLmZpbmRJbmRleChcbiAgICAgICAgKGxpc3RJdGVtKSA9PlxuICAgICAgICAgIGxpc3RJdGVtLmNhdGVnb3J5ID09PSBjYXRlZ29yeSAmJlxuICAgICAgICAgIGxpc3RJdGVtLmluZGV4SW5DYXRlZ29yeSA9PT0gaW5kZXhJbkNhdGVnb3J5XG4gICAgICApO1xuXG4gICAgICBoYW5kbGVTZWxlY3RlZEluZGV4Q2hhbmdlKGluZGV4LCBldnQpO1xuICAgICAgY2xvc2VBdXRvY29tcGxldGVMaXN0KCk7XG4gICAgICBpZiAoaXNOYXZCYXJWYXJpYW50KSB7XG4gICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVLZXlEb3duOiBLZXlib2FyZEV2ZW50SGFuZGxlcjxIVE1MVGV4dEFyZWFFbGVtZW50PiA9IChldnQpID0+IHtcbiAgICAgIGlmIChpc0F1dG9jb21wbGV0ZUxpc3RPcGVuKSB7XG4gICAgICAgIHN3aXRjaCAoZXZ0LmtleSkge1xuICAgICAgICAgIGNhc2UgXCJFc2NhcGVcIjpcbiAgICAgICAgICAgIGNsb3NlQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgICAgICAgb25Db21wbGV0ZSh7IHZhbHVlOiB1c2VyVHlwZWRRdWVyeS5jdXJyZW50LCBldnQgfSk7XG4gICAgICAgICAgICBpZiAoaXNOYXZCYXJWYXJpYW50KSB7XG4gICAgICAgICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBcIkVudGVyXCI6XG4gICAgICAgICAgICBpZiAoIWV2dC5zaGlmdEtleSkge1xuICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgY2xvc2VBdXRvY29tcGxldGVMaXN0KCk7XG4gICAgICAgICAgICAgIGFjY2VwdFRleHRTZWxlY3Rpb24oKTtcblxuICAgICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBvbkVudGVyS2V5Py4oKTtcbiAgICAgICAgICAgICAgICBpZiAoaXNOYXZCYXJWYXJpYW50KSB7XG4gICAgICAgICAgICAgICAgICBzZXRJc0NvbGxhcHNlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgXCIgXCI6XG4gICAgICAgICAgICBhY2NlcHRUZXh0U2VsZWN0aW9uKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFwiQXJyb3dVcFwiOlxuICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgIGhhbmRsZVNlbGVjdGVkSW5kZXhDaGFuZ2Uoc2VsZWN0ZWRJbmRleCAtIDEsIGV2dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFwiQXJyb3dEb3duXCI6XG4gICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZEluZGV4IDwgZmxhdHRlbmVkTGlzdEl0ZW1zLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0ZWRJbmRleENoYW5nZShzZWxlY3RlZEluZGV4ICsgMSwgZXZ0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN3aXRjaCAoZXZ0LmtleSkge1xuICAgICAgICAgIGNhc2UgXCJFc2NhcGVcIjpcbiAgICAgICAgICAgIG9uQ2xlYXI/LigpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBcIkVudGVyXCI6XG4gICAgICAgICAgICBpZiAoIWV2dC5zaGlmdEtleSkge1xuICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgb25FbnRlcktleT8uKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBvbktleURvd24/LihldnQpO1xuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVDaGFuZ2U6IENoYW5nZUV2ZW50SGFuZGxlcjxIVE1MVGV4dEFyZWFFbGVtZW50PiA9IChldnQpID0+IHtcbiAgICAgIHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQgPSBldnQudGFyZ2V0LnZhbHVlO1xuICAgICAgb25DaGFuZ2UoZXZ0KTtcbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlRm9jdXM6IEZvY3VzRXZlbnRIYW5kbGVyPEhUTUxUZXh0QXJlYUVsZW1lbnQ+ID0gKGV2dCkgPT4ge1xuICAgICAgc2V0SXNDb2xsYXBzZWQoZmFsc2UpO1xuICAgICAgb25Gb2N1cz8uKGV2dCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZUJsdXI6IEZvY3VzRXZlbnRIYW5kbGVyPEhUTUxUZXh0QXJlYUVsZW1lbnQ+ID0gKGV2dCkgPT4ge1xuICAgICAgaWYgKHZhbHVlICE9PSB1c2VyVHlwZWRRdWVyeS5jdXJyZW50KSB7XG4gICAgICAgIG9uQ29tcGxldGU/Lih7IHZhbHVlOiB1c2VyVHlwZWRRdWVyeS5jdXJyZW50LCBldnQgfSk7XG4gICAgICB9XG4gICAgICBvbkJsdXI/LihldnQpO1xuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVTZW5kQnV0dG9uQ2xpY2sgPSAoZXZ0OiBNb3VzZUV2ZW50PEhUTUxCdXR0b25FbGVtZW50PikgPT4ge1xuICAgICAgbWVyZ2VkU2VuZEJ1dHRvblByb3BzLm9uQ2xpY2s/LihldnQpO1xuICAgICAgY2xvc2VBdXRvY29tcGxldGVMaXN0KCk7XG4gICAgICBpZiAoaXNOYXZCYXJWYXJpYW50KSB7XG4gICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVQcmV2ZW50Rm9jdXMgPSAoZXZ0OiBSZWFjdC5Qb2ludGVyRXZlbnQpID0+IHtcbiAgICAgIC8vIFByZXZlbnQgdGhlIHRleHRhcmVhIGZyb20gYmVpbmcgdW5mb2N1c2VkXG4gICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlT25Db250YWluZXJQb2ludGVyRG93biA9IChldnQ6IFJlYWN0LlBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgLy8gRm9jdXMgdGV4dGFyZWEgd2hlbiBjbGlja2luZyBvbiB0aGUgY29udGFpbmVyIG9ubHlcbiAgICAgIGlmIChldnQudGFyZ2V0ID09PSBldnQuY3VycmVudFRhcmdldCkge1xuICAgICAgICB0ZXh0QXJlYVJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3Qgc2VsZWN0ZWRMaXN0SXRlbSA9XG4gICAgICBzZWxlY3RlZEluZGV4ICE9PSAtMSA/IGZsYXR0ZW5lZExpc3RJdGVtc1tzZWxlY3RlZEluZGV4XSA6IG51bGw7XG5cbiAgICBjb25zdCBlbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50RWxtID0gZW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudCA/IChcbiAgICAgIDxTdHlsZWRFbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50Q29udGFpbmVyXG4gICAgICAgIGlzTmF2QmFyVmFyaWFudD17aXNOYXZCYXJWYXJpYW50fVxuICAgICAgPlxuICAgICAgICA8VGV4dCBjb2xvcj1cInRlcnRpYXJ5XCI+e2VtcHR5U3RhdGVUb3BSaWdodENvbnRlbnR9PC9UZXh0PlxuICAgICAgPC9TdHlsZWRFbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50Q29udGFpbmVyPlxuICAgICkgOiBudWxsO1xuXG4gICAgY29uc3QgY2xlYXJCdXR0b25FbG0gPSB2YWx1ZSA/IChcbiAgICAgIDxTdHlsZWRDbGVhckJ1dHRvblxuICAgICAgICBzaXplPVwic1wiXG4gICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgaWNvbj1cIngtY2lyY2xlLWZpbGxlZFwiXG4gICAgICAgIGFyaWEtbGFiZWw9e2NsZWFyQnV0dG9uQXJpYUxhYmVsfVxuICAgICAgICBpc05hdkJhclZhcmlhbnQ9e2lzTmF2QmFyVmFyaWFudH1cbiAgICAgICAgb25Qb2ludGVyRG93bj17aGFuZGxlUHJldmVudEZvY3VzfVxuICAgICAgICBvbkNsaWNrPXtvbkNsZWFyfVxuICAgICAgLz5cbiAgICApIDogKFxuICAgICAgZW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudEVsbVxuICAgICk7XG5cbiAgICBjb25zdCBoaW50RWxtID0gISFoaW50ICYmIChcbiAgICAgIDxJbmxpbmUgYWxpZ25JdGVtcz1cImNlbnRlclwiPlxuICAgICAgICA8VGV4dCBzaXplPVwic1wiIGNvbG9yPVwidGVydGlhcnlcIj5cbiAgICAgICAgICB7aGludH1cbiAgICAgICAgPC9UZXh0PlxuICAgICAgPC9JbmxpbmU+XG4gICAgKTtcblxuICAgIGNvbnN0IGJvdHRvbVRvb2xiYXJFbG0gPSAoYm90dG9tVG9vbGJhcj8ucmlnaHRDb250ZW50IHx8XG4gICAgICBib3R0b21Ub29sYmFyPy5sZWZ0Q29udGVudCB8fFxuICAgICAgISFzZW5kQnV0dG9uUHJvcHMpICYmXG4gICAgICAhaXNDb2xsYXBzZWQgJiYgKFxuICAgICAgICA8PlxuICAgICAgICAgIHtib3R0b21Ub29sYmFyPy5sZWZ0Q29udGVudCAmJiAoXG4gICAgICAgICAgICA8U3R5bGVkU2xvdD57Ym90dG9tVG9vbGJhci5sZWZ0Q29udGVudH08L1N0eWxlZFNsb3Q+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8U3R5bGVkU2xvdCBkYXRhLWUyZS10ZXN0LWlkPVwiYm90dG9tVG9vbGJhclwiIHNpZGU9XCJyaWdodFwiPlxuICAgICAgICAgICAgPElubGluZSBzcGFjZT1cInhzXCIgdkFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAgICAgICAge2JvdHRvbVRvb2xiYXI/LnJpZ2h0Q29udGVudH1cbiAgICAgICAgICAgICAge3NlbmRCdXR0b25Qcm9wcyAmJiAoXG4gICAgICAgICAgICAgICAgPFN1YlRoZW1lUHJvdmlkZXIgbmFtZT17dmFyaWFudH0+XG4gICAgICAgICAgICAgICAgICA8Um91bmRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgYXJpYUF0dHJpYnV0ZXM9e3tcbiAgICAgICAgICAgICAgICAgICAgICBcImFyaWEtbGFiZWxcIjogaXNQcm9jZXNzaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFwiUHJvY2Vzc2luZyBxdWVyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFwiU3VibWl0IHF1ZXJ5XCIsXG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIHsuLi5tZXJnZWRTZW5kQnV0dG9uUHJvcHN9XG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXttZXJnZWRTZW5kQnV0dG9uUHJvcHMuZGlzYWJsZWQgPz8gIXZhbHVlfVxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVTZW5kQnV0dG9uQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlckRvd249e2hhbmRsZVByZXZlbnRGb2N1c31cbiAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICBpY29uPXtcbiAgICAgICAgICAgICAgICAgICAgICBpc1Byb2Nlc3NpbmcgPyBcInN0b3AtZmlsbGVkXCIgOiBtZXJnZWRTZW5kQnV0dG9uUHJvcHMuaWNvblxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvU3ViVGhlbWVQcm92aWRlcj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvSW5saW5lPlxuICAgICAgICAgIDwvU3R5bGVkU2xvdD5cbiAgICAgICAgPC8+XG4gICAgICApO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBkYXRhLWUyZS10ZXN0LWlkPXtkYXRhRTJlVGVzdElkfVxuICAgICAgICAgIGRhdGEtZHMtaWQ9XCJQcm9tcHRJbnB1dFwiXG4gICAgICAgICAgcmVmPXtjb250YWluZXJSZWZ9XG4gICAgICAgICAgLy8gVHJhbnNsYXRpb24gZGlzYWJsZWQgZm9yIGNvbnNpc3RlbmN5IHdpdGggdGhlIGF1dG9jb21wbGV0ZSBsaXN0XG4gICAgICAgICAgdHJhbnNsYXRlPVwibm9cIlxuICAgICAgICA+XG4gICAgICAgICAgPFN0YWNrIHNwYWNlPVwic1wiPlxuICAgICAgICAgICAgPEFuaW1hdGVkQm9yZGVyXG4gICAgICAgICAgICAgIHNraXBBbmltYXRpb249e3NraXBBSUFuaW1hdGlvbiB8fCB2YXJpYW50ICE9PSBcImFpXCJ9XG4gICAgICAgICAgICAgIHJhZGl1cz17MTJ9XG4gICAgICAgICAgICAgIGl0ZXJhdGlvbnM9ezF9XG4gICAgICAgICAgICAgIHRoaWNrbmVzcz17Mn1cbiAgICAgICAgICAgICAgaGlkZUNoaWxkQm9yZGVyXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxTdWJUaGVtZVByb3ZpZGVyIG5hbWU9e3ZhcmlhbnR9PlxuICAgICAgICAgICAgICAgIDxDdXN0b21Db250YWluZXJcbiAgICAgICAgICAgICAgICAgIGVsZXZhdGlvbj17MH1cbiAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1cz17aXNDb2xsYXBzZWQgPyBcInhzXCIgOiBcIm1cIn1cbiAgICAgICAgICAgICAgICAgIGhpZGVCb3JkZXI9e2lzQ29sbGFwc2VkfVxuICAgICAgICAgICAgICAgICAgaGFzU2hhZG93PXshaXNOYXZCYXJWYXJpYW50fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTdWJUaGVtZVByb3ZpZGVyIG5hbWU9XCJ1bnNldFwiPlxuICAgICAgICAgICAgICAgICAgICA8U3R5bGVkU2xvdHNDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICByZWY9e3RleHRBcmVhQ29udGFpbmVyUmVmfVxuICAgICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlckRvd249e2hhbmRsZU9uQ29udGFpbmVyUG9pbnRlckRvd259XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U3R5bGVkVGV4dEFyZWFDb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7bGVmdEljb24gJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8U3R5bGVkTGVmdEljb25Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9e2xlZnRJY29ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJ0ZXJ0aWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3R5bGVkTGVmdEljb25Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPFByb21wdFRleHRBcmVhXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhRTJlVGVzdElkPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhRTJlVGVzdElkID8gYCR7ZGF0YUUyZVRlc3RJZH0taW5wdXRgIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e3RleHRBcmVhUmVmfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpc05hdkJhclZhcmlhbnQ9e2lzTmF2QmFyVmFyaWFudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRMaXN0SXRlbT17c2VsZWN0ZWRMaXN0SXRlbX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNBdXRvY29tcGxldGVMaXN0T3Blbj17aXNBdXRvY29tcGxldGVMaXN0T3Blbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNDb2xsYXBzZWQ9e2lzQ29sbGFwc2VkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNMZWZ0SWNvbj17ISFsZWZ0SWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25Gb2N1cz17aGFuZGxlRm9jdXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3dufVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtjbGVhckJ1dHRvbkVsbX1cbiAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZFRleHRBcmVhQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgIHtib3R0b21Ub29sYmFyRWxtfVxuICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZFNsb3RzQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPC9TdWJUaGVtZVByb3ZpZGVyPlxuICAgICAgICAgICAgICAgIDwvQ3VzdG9tQ29udGFpbmVyPlxuICAgICAgICAgICAgICA8L1N1YlRoZW1lUHJvdmlkZXI+XG4gICAgICAgICAgICA8L0FuaW1hdGVkQm9yZGVyPlxuICAgICAgICAgICAge2hpbnRFbG19XG4gICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPEF1dG9jb21wbGV0ZUxpc3RcbiAgICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICBhdXRvY29tcGxldGVMaXN0SXRlbXM9e2F1dG9jb21wbGV0ZUxpc3RJdGVtc31cbiAgICAgICAgICB0cmlnZ2VyUmVmPXt0ZXh0QXJlYUNvbnRhaW5lclJlZn1cbiAgICAgICAgICBzZWxlY3RlZExpc3RJdGVtPXtzZWxlY3RlZExpc3RJdGVtfVxuICAgICAgICAgIGlzT3Blbj17aXNBdXRvY29tcGxldGVMaXN0T3Blbn1cbiAgICAgICAgICBhdXRvY29tcGxldGVMaXN0Rm9vdGVyPXthdXRvY29tcGxldGVMaXN0Rm9vdGVyfVxuICAgICAgICAgIHBvcnRhbENvbnRhaW5lcj17cG9ydGFsQ29udGFpbmVyfVxuICAgICAgICAgIG9uTGlzdEl0ZW1DbGljaz17aGFuZGxlTGlzdEl0ZW1DbGlja31cbiAgICAgICAgLz5cbiAgICAgIDwvPlxuICAgICk7XG4gIH1cbik7XG5cbmNvbnN0IEN1c3RvbUJ1dHRvbiA9IHN0eWxlZChCdXR0b24pKCh7IHRoZW1lIH0pID0+ICh7XG4gIGJvcmRlclJhZGl1czogdGhlbWUudmFyaWFibGVzLnNpemUuYm9yZGVyUmFkaXVzLmwsXG59KSk7XG5cbi8vIG5lZWQgdG8gc2ltcGxpZnkgdGhpcyB0eXBlIGZvciByZXVzZVxuY29uc3QgU3VnZ2VzdGlvbkJ1dHRvbiA9IGZvcndhcmRSZWYoXG4gIDxDIGV4dGVuZHMgUmVhY3QuRWxlbWVudFR5cGUgPSBcImJ1dHRvblwiPihcbiAgICBwcm9wczogUG9seW1vcnBoaWNDb21wb25lbnRQcm9wc1dpdGhSZWY8XG4gICAgICBDLFxuICAgICAgT21pdDxCdXR0b25Qcm9wcywgXCJ2YXJpYW50XCIgfCBcInNpemVcIiB8IFwicmVmXCI+XG4gICAgPixcbiAgICByZWY6IFBvbHltb3JwaGljUmVmPEM+XG4gICkgPT4gPEN1c3RvbUJ1dHRvbiB7Li4ucHJvcHN9IHZhcmlhbnQ9XCJzZWNvbmRhcnlcIiBzaXplPVwic1wiIHJlZj17cmVmfSAvPlxuKTtcblxuZXhwb3J0IGNvbnN0IFByb21wdElucHV0ID0gT2JqZWN0LmFzc2lnbihQcm9tcHRJbnB1dENvbXBvbmVudCwge1xuICBTdWdnZXN0aW9uQnV0dG9uLFxufSkgYXMgdHlwZW9mIFByb21wdElucHV0Q29tcG9uZW50ICYge1xuICBTdWdnZXN0aW9uQnV0dG9uOiB0eXBlb2YgU3VnZ2VzdGlvbkJ1dHRvbjtcbn07XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd0g2QiJ9 */"),StyledSlot=(0,_styled.default)("div",{target:"e1jgljjd6",label:"StyledSlot"})(({theme,side})=>({margin:`0 ${theme.variables.size.spacing.s} ${theme.variables.size.spacing.s}`,..."right"===side&&{marginLeft:"auto"}}),"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvUHJvbXB0SW5wdXQvUHJvbXB0SW5wdXQudHN4Iiwic291cmNlcyI6WyJzcmMvY29tcG9uZW50cy9Qcm9tcHRJbnB1dC9Qcm9tcHRJbnB1dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBSZWFjdEVsZW1lbnQsXG4gIENoYW5nZUV2ZW50SGFuZGxlcixcbiAgS2V5Ym9hcmRFdmVudEhhbmRsZXIsXG4gIFJlZk9iamVjdCxcbiAgRm9jdXNFdmVudEhhbmRsZXIsXG4gIFN5bnRoZXRpY0V2ZW50LFxuICBNb3VzZUV2ZW50LFxufSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IFJlYWN0LCB7XG4gIHVzZVJlZixcbiAgdXNlTWVtbyxcbiAgdXNlU3RhdGUsXG4gIHVzZUVmZmVjdCxcbiAgdXNlQ2FsbGJhY2ssXG4gIGZvcndhcmRSZWYsXG59IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5cbmltcG9ydCB0eXBlIHsgUHJvbXB0VGV4dEFyZWFQcm9wcyB9IGZyb20gXCIuL1Byb21wdFRleHRBcmVhXCI7XG5pbXBvcnQge1xuICBQcm9tcHRUZXh0QXJlYSxcbiAgZ2V0UGFkZGluZ0hvcml6b250YWwsXG4gIGdldFBhZGRpbmdWZXJ0aWNhbCxcbn0gZnJvbSBcIi4vUHJvbXB0VGV4dEFyZWFcIjtcbmltcG9ydCB7IENvbnRhaW5lciB9IGZyb20gXCIuLi9Db250YWluZXJcIjtcbmltcG9ydCB0eXBlIHsgQXV0b2NvbXBsZXRlTGlzdFByb3BzIH0gZnJvbSBcIi4vQXV0b2NvbXBsZXRlTGlzdFwiO1xuXG5pbXBvcnQgeyBBdXRvY29tcGxldGVMaXN0IH0gZnJvbSBcIi4vQXV0b2NvbXBsZXRlTGlzdFwiO1xuaW1wb3J0IHtcbiAgZ2V0TGlzdEl0ZW1JZCxcbiAgdHlwZSBGbGF0dGVuZWRMaXN0SXRlbSxcbiAgdHlwZSBMaXN0SXRlbVZhbHVlLFxufSBmcm9tIFwiLi9DYXRlZ29yeUxpc3RcIjtcbmltcG9ydCB7IFRleHQgfSBmcm9tIFwiLi4vVHlwb2dyYXBoeS9UZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24sIHR5cGUgQnV0dG9uUHJvcHMgfSBmcm9tIFwiLi4vQnV0dG9uL0J1dHRvblwiO1xuaW1wb3J0IHR5cGUge1xuICBQb2x5bW9ycGhpY1JlZixcbiAgUG9seW1vcnBoaWNDb21wb25lbnRQcm9wc1dpdGhSZWYsXG59IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuaW1wb3J0IHsgSW5saW5lIH0gZnJvbSBcIi4uL0lubGluZS9JbmxpbmVcIjtcbmltcG9ydCB0eXBlIHsgUm91bmRCdXR0b25Qcm9wcyB9IGZyb20gXCIuLi9Sb3VuZEJ1dHRvbi9Sb3VuZEJ1dHRvblwiO1xuaW1wb3J0IHsgUm91bmRCdXR0b24gfSBmcm9tIFwiLi4vUm91bmRCdXR0b24vUm91bmRCdXR0b25cIjtcbmltcG9ydCB0eXBlIHsgUGljdG9ncmFtQnV0dG9uUHJvcHMgfSBmcm9tIFwiLi4vUGljdG9ncmFtQnV0dG9uL1BpY3RvZ3JhbUJ1dHRvblwiO1xuaW1wb3J0IHsgUGljdG9ncmFtQnV0dG9uIH0gZnJvbSBcIi4uL1BpY3RvZ3JhbUJ1dHRvbi9QaWN0b2dyYW1CdXR0b25cIjtcbmltcG9ydCB7IFN0YWNrIH0gZnJvbSBcIi4uL1N0YWNrL1N0YWNrXCI7XG5pbXBvcnQgeyB1c2VPdXRzaWRlQ2xpY2sgfSBmcm9tIFwiLi4vLi4vc2hhcmVkL3VzZU91dHNpZGVDbGlja1wiO1xuaW1wb3J0IHR5cGUgeyBJY29uTmFtZSB9IGZyb20gXCIuLi9JY29uL0ljb25cIjtcbmltcG9ydCB7IEljb24gfSBmcm9tIFwiLi4vSWNvbi9JY29uXCI7XG5pbXBvcnQgeyBTdWJUaGVtZVByb3ZpZGVyIH0gZnJvbSBcIi4uL1N1YlRoZW1lUHJvdmlkZXIvU3ViVGhlbWVQcm92aWRlclwiO1xuaW1wb3J0IHsgQW5pbWF0ZWRCb3JkZXIgfSBmcm9tIFwiLi4vVXRpbGl0aWVzL0FuaW1hdGVkQm9yZGVyL0FuaW1hdGVkQm9yZGVyXCI7XG5cbmNvbnN0IEN1c3RvbUNvbnRhaW5lciA9IHN0eWxlZChDb250YWluZXIpPHtcbiAgaGlkZUJvcmRlcjogYm9vbGVhbjtcbiAgaGFzU2hhZG93OiBib29sZWFuO1xufT4oKHsgdGhlbWUsIGhpZGVCb3JkZXIsIGhhc1NoYWRvdyB9KSA9PiAoe1xuICBib3JkZXI6IGAxcHggc29saWQgJHt0aGVtZS52YWx1ZXMuY29sb3IuYm9yZGVyLnByaW1hcnkuZGVmYXVsdH1gLFxuICAuLi4oaGFzU2hhZG93ICYmIHtcbiAgICBib3hTaGFkb3c6IHRoZW1lLnZhbHVlcy5zaGFkb3cuZGVmYXVsdFJpbmcsXG4gICAgdHJhbnNpdGlvblByb3BlcnR5OiBcImJveC1zaGFkb3csIGJvcmRlci1jb2xvciwgb3V0bGluZS1jb2xvclwiLFxuICAgIHRyYW5zaXRpb25EdXJhdGlvbjogdGhlbWUudmFyaWFibGVzLmFuaW1hdGlvbi5wcm9tcHRJbnB1dC5mb2N1cy5kdXJhdGlvbixcbiAgICB0cmFuc2l0aW9uVGltaW5nRnVuY3Rpb246XG4gICAgICB0aGVtZS52YXJpYWJsZXMuYW5pbWF0aW9uLnByb21wdElucHV0LmZvY3VzLnRpbWluZ0Z1bmN0aW9uLFxuICB9KSxcbiAgLi4uKGhpZGVCb3JkZXIgJiYge1xuICAgIGJvcmRlckNvbG9yOiBcInRyYW5zcGFyZW50XCIsXG4gIH0pLFxuICBjdXJzb3I6IFwidGV4dFwiLFxuICBvdXRsaW5lQ29sb3I6IFwidHJhbnNwYXJlbnRcIixcbiAgW2AmOmhhcyh0ZXh0YXJlYTpmb2N1cy12aXNpYmxlKWBdOiB7XG4gICAgb3V0bGluZVdpZHRoOiAxLFxuICAgIG91dGxpbmVTdHlsZTogXCJzb2xpZFwiLFxuICAgIG91dGxpbmVPZmZzZXQ6IC0xLFxuICAgIGJveFNoYWRvdzogdGhlbWUudmFsdWVzLnNoYWRvdy5mb2N1c1JpbmcsXG4gICAgb3V0bGluZUNvbG9yOiB0aGVtZS52YWx1ZXMuY29sb3IuYm9yZGVyLmFjY2VudC5kZWZhdWx0LFxuICB9LFxufSkpO1xuXG5jb25zdCBTdHlsZWRUZXh0QXJlYUNvbnRhaW5lciA9IHN0eWxlZC5kaXYoe1xuICBib3JkZXJSYWRpdXM6IFwiaW5oZXJpdFwiLFxuICBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiLFxuICB3aWR0aDogXCIxMDAlXCIsXG59KTtcblxuY29uc3QgU3R5bGVkTGVmdEljb25Db250YWluZXIgPSBzdHlsZWQuZGl2KCh7IHRoZW1lIH0pID0+ICh7XG4gIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gIHRvcDogZ2V0UGFkZGluZ1ZlcnRpY2FsKHRoZW1lKSxcbiAgbGVmdDogZ2V0UGFkZGluZ0hvcml6b250YWwodGhlbWUpLFxufSkpO1xuXG50eXBlIFN0eWxlZEVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnRDb250YWluZXJQcm9wcyA9IFBpY2s8XG4gIFByb21wdElucHV0UHJvcHMsXG4gIFwiaXNOYXZCYXJWYXJpYW50XCJcbj47XG5cbmNvbnN0IFN0eWxlZEVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnRDb250YWluZXIgPVxuICBzdHlsZWQuZGl2PFN0eWxlZEVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnRDb250YWluZXJQcm9wcz4oXG4gICAgKHsgdGhlbWUsIGlzTmF2QmFyVmFyaWFudCB9KSA9PiAoe1xuICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgIHRvcDogaXNOYXZCYXJWYXJpYW50XG4gICAgICAgID8gdGhlbWUudmFyaWFibGVzLnNpemUuc3BhY2luZy54eHNcbiAgICAgICAgOiBnZXRQYWRkaW5nVmVydGljYWwodGhlbWUpLFxuICAgICAgcmlnaHQ6IGdldFBhZGRpbmdIb3Jpem9udGFsKHRoZW1lKSxcbiAgICAgIHVzZXJTZWxlY3Q6IFwibm9uZVwiLFxuICAgICAgcG9pbnRlckV2ZW50czogXCJub25lXCIsXG4gICAgfSlcbiAgKTtcblxudHlwZSBTdHlsZWRDbGVhckJ1dHRvblByb3BzID0gUGljdG9ncmFtQnV0dG9uUHJvcHMgJlxuICBQaWNrPFByb21wdElucHV0UHJvcHMsIFwiaXNOYXZCYXJWYXJpYW50XCI+O1xuXG5jb25zdCBTdHlsZWRDbGVhckJ1dHRvbiA9IHN0eWxlZChQaWN0b2dyYW1CdXR0b24pPFN0eWxlZENsZWFyQnV0dG9uUHJvcHM+KFxuICAoeyB0aGVtZSwgaXNOYXZCYXJWYXJpYW50IH0pID0+ICh7XG4gICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICByaWdodDogdGhlbWUudmFyaWFibGVzLnNpemUuc3BhY2luZy5zLFxuICAgIHRvcDogaXNOYXZCYXJWYXJpYW50ID8gMCA6IHRoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcucyxcbiAgfSlcbik7XG5cbmNvbnN0IFN0eWxlZFNsb3RzQ29udGFpbmVyID0gc3R5bGVkLmRpdih7XG4gIGRpc3BsYXk6IFwiZmxleFwiLFxuICBmbGV4V3JhcDogXCJ3cmFwXCIsXG4gIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG59KTtcblxuLy8gSXQgbmVlZHMgbWFyZ2luIGR1ZSB0byBlbXB0eSBjbGlja2FibGUgc3BhY2UgdGhhdCBmb2N1c2VzIHRoZSB0ZXh0YXJlYVxuLy8gU2xvdHMgc2hvdWxkIG5vdCBiZSBpbiB0aGUgZGl2LCBiZWNhdXNlIGFyZWEgYmV0d2VlbiBzaG91bGQgYmUgY2xpY2thYmxlIGFsc29cbnR5cGUgU2xvdFByb3BzID0ge1xuICBzaWRlPzogXCJyaWdodFwiO1xufTtcbmNvbnN0IFN0eWxlZFNsb3QgPSBzdHlsZWQuZGl2PFNsb3RQcm9wcz4oKHsgdGhlbWUsIHNpZGUgfSkgPT4gKHtcbiAgbWFyZ2luOiBgMCAke3RoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcuc30gJHt0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnN9YCxcblxuICAuLi4oc2lkZSA9PT0gXCJyaWdodFwiICYmIHtcbiAgICBtYXJnaW5MZWZ0OiBcImF1dG9cIixcbiAgfSksXG59KSk7XG5cbnR5cGUgU2VuZEJ1dHRvblByb3BzID0gT21pdDxSb3VuZEJ1dHRvblByb3BzLCBcImljb25cIiB8IFwidmFyaWFudFwiPiAmIHtcbiAgaWNvbj86IFwiYXJyb3ctdXBcIiB8IFwic2VhcmNoXCIgfCBcImFycm93LXJpZ2h0XCIgfCBcInZvaWNlXCI7XG59O1xuXG50eXBlIEJvdHRvbVRvb2xiYXJDb25maWcgPSB7XG4gIC8qKiBUb29sYmFyIGVsZW1lbnRzIGJlbG93IHRleHQgYXJlYSAqL1xuICBsZWZ0Q29udGVudD86IFJlYWN0RWxlbWVudDtcbiAgcmlnaHRDb250ZW50PzogUmVhY3RFbGVtZW50O1xufTtcblxuZXhwb3J0IHR5cGUgUHJvbXB0SW5wdXRQcm9wcyA9IHtcbiAgXCJkYXRhLWUyZS10ZXN0LWlkXCI/OiBzdHJpbmc7XG4gIHZhcmlhbnQ/OiBcImFpXCI7XG4gIHNraXBBSUFuaW1hdGlvbj86IGJvb2xlYW47XG4gIGJvdHRvbVRvb2xiYXI/OiBCb3R0b21Ub29sYmFyQ29uZmlnO1xuICBzZW5kQnV0dG9uUHJvcHM/OiBTZW5kQnV0dG9uUHJvcHM7XG4gIC8qKiBDdXJyZW50bHkgc2hvd3Mgc2VuZCBidXR0b24gcHJvY2Vzc2luZyBzdGF0ZSAgKi9cbiAgaXNQcm9jZXNzaW5nPzogYm9vbGVhbjtcbiAgY2xlYXJCdXR0b25BcmlhTGFiZWw/OiBzdHJpbmc7XG4gIGhpbnQ/OiBSZWFjdEVsZW1lbnQ7XG4gIC8qKiBTaG93cyBpbiB0aGUgY2xlYXIgYnV0dG9uIHNwYWNlIGluIGVtcHR5IHN0YXRlICovXG4gIGVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnQ/OiBSZWFjdEVsZW1lbnQ7XG4gIG9uQ2xlYXI6ICgpID0+IHZvaWQ7XG4gIC8qKiBDYWxsZWQgd2hlbiB1c2VyIHNlbGVjdHMgKG9yIHJlamVjdHMpIGEgbGlzdCBpdGVtIGZyb20gYXV0b2NvbXBsZXRlIGxpc3QgKi9cbiAgb25Db21wbGV0ZT86ICh7XG4gICAgdmFsdWUsXG4gICAgY2F0ZWdvcnksXG4gICAgZXZ0LFxuICAgIGluZGV4LFxuICB9OiB7XG4gICAgdmFsdWU6IExpc3RJdGVtVmFsdWU7XG4gICAgY2F0ZWdvcnk/OiBzdHJpbmc7XG4gICAgZXZ0PzogU3ludGhldGljRXZlbnQ7XG4gICAgaW5kZXg/OiBudW1iZXI7XG4gIH0pID0+IHZvaWQ7XG4gIC8qKiBDYWxsZWQgb24gRW50ZXIga2V5IHRvIHN1Ym1pdCB0aGUgZm9ybSAgKi9cbiAgb25FbnRlcktleTogKCkgPT4gdm9pZDtcbiAgLyoqIFJlbmRlcnMgYW4gaWNvbiB0byB0aGUgbGVmdCBpbnNpZGUgdGhlIHRleHRhcmVhICovXG4gIGxlZnRJY29uPzogSWNvbk5hbWU7XG59ICYgT21pdDxcbiAgUHJvbXB0VGV4dEFyZWFQcm9wcyxcbiAgXCJpc0NvbGxhcHNlZFwiIHwgXCJpc0F1dG9jb21wbGV0ZUxpc3RPcGVuXCIgfCBcInNlbGVjdGVkTGlzdEl0ZW1cIiB8IFwiaGFzTGVmdEljb25cIlxuPiAmXG4gIFBpY2s8XG4gICAgQXV0b2NvbXBsZXRlTGlzdFByb3BzLFxuICAgIFwiYXV0b2NvbXBsZXRlTGlzdEl0ZW1zXCIgfCBcImF1dG9jb21wbGV0ZUxpc3RGb290ZXJcIiB8IFwicG9ydGFsQ29udGFpbmVyXCJcbiAgPjtcblxuY29uc3QgZGVmYXVsdFNlbmRCdXR0b25Qcm9wczogU2VuZEJ1dHRvblByb3BzID0ge1xuICB0eXBlOiBcInN1Ym1pdFwiIGFzIGNvbnN0LFxuICBpY29uOiBcImFycm93LXVwXCIgYXMgY29uc3QsXG59O1xuXG5jb25zdCBQcm9tcHRJbnB1dENvbXBvbmVudCA9IGZvcndhcmRSZWYoXG4gIChcbiAgICB7XG4gICAgICBcImRhdGEtZTJlLXRlc3QtaWRcIjogZGF0YUUyZVRlc3RJZCxcbiAgICAgIG5hbWUsXG4gICAgICBhdXRvY29tcGxldGVMaXN0SXRlbXMgPSBbXSxcbiAgICAgIHZhbHVlLFxuICAgICAgYm90dG9tVG9vbGJhcixcbiAgICAgIGlzUHJvY2Vzc2luZyxcbiAgICAgIHNlbmRCdXR0b25Qcm9wcyxcbiAgICAgIGF1dG9jb21wbGV0ZUxpc3RGb290ZXIsXG4gICAgICBjbGVhckJ1dHRvbkFyaWFMYWJlbCA9IFwiQ2xlYXIgaW5wdXRcIixcbiAgICAgIGhpbnQsXG4gICAgICBlbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50LFxuICAgICAgaXNOYXZCYXJWYXJpYW50LFxuICAgICAgcG9ydGFsQ29udGFpbmVyLFxuICAgICAgbGVmdEljb24sXG4gICAgICBvbkNoYW5nZSxcbiAgICAgIG9uQ29tcGxldGUsXG4gICAgICBvbkNsZWFyLFxuICAgICAgb25FbnRlcktleSxcbiAgICAgIG9uRm9jdXMsXG4gICAgICBvbkJsdXIsXG4gICAgICBvbktleURvd24sXG4gICAgICB2YXJpYW50LFxuICAgICAgc2tpcEFJQW5pbWF0aW9uID0gZmFsc2UsXG4gICAgICAuLi5yZXN0XG4gICAgfTogUHJvbXB0SW5wdXRQcm9wcyxcbiAgICByZWY6IFJlZk9iamVjdDxIVE1MVGV4dEFyZWFFbGVtZW50PlxuICApOiBSZWFjdEVsZW1lbnQgPT4ge1xuICAgIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gICAgY29uc3QgdGV4dEFyZWFDb250YWluZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICAgIGNvbnN0IGludGVybmFsUmVmID0gdXNlUmVmPEhUTUxUZXh0QXJlYUVsZW1lbnQ+KG51bGwpO1xuICAgIGNvbnN0IFtzZWxlY3RlZEluZGV4LCBzZXRTZWxlY3RlZEluZGV4XSA9IHVzZVN0YXRlKC0xKTtcbiAgICBjb25zdCBbaXNDb2xsYXBzZWQsIHNldElzQ29sbGFwc2VkXSA9IHVzZVN0YXRlKGlzTmF2QmFyVmFyaWFudCk7XG4gICAgY29uc3QgdXNlclR5cGVkUXVlcnkgPSB1c2VSZWYoXCJcIik7XG4gICAgY29uc3QgW2lzQXV0b2NvbXBsZXRlTGlzdE9wZW4sIHNldElzQXV0b2NvbXBsZXRlTGlzdE9wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IHRleHRBcmVhUmVmID0gcmVmIHx8IGludGVybmFsUmVmO1xuXG4gICAgY29uc3QgbWVyZ2VkU2VuZEJ1dHRvblByb3BzID0ge1xuICAgICAgLi4uZGVmYXVsdFNlbmRCdXR0b25Qcm9wcyxcbiAgICAgIC4uLihzZW5kQnV0dG9uUHJvcHMgPz8ge30pLFxuICAgIH07XG5cbiAgICB1c2VPdXRzaWRlQ2xpY2soXG4gICAgICBjb250YWluZXJSZWYsXG4gICAgICAoZXZ0KSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhY29udGFpbmVyUmVmLmN1cnJlbnQuY29udGFpbnMoZXZ0LnRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgICAgICFwb3J0YWxDb250YWluZXI/LmNvbnRhaW5zKGV2dC50YXJnZXQgYXMgTm9kZSkgJiZcbiAgICAgICAgICBldnQudGFyZ2V0ICE9PSBudWxsXG4gICAgICAgICkge1xuICAgICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgIWlzQ29sbGFwc2VkICYmIGlzTmF2QmFyVmFyaWFudFxuICAgICk7XG5cbiAgICBjb25zdCBjbG9zZUF1dG9jb21wbGV0ZUxpc3QgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBzZXRJc0F1dG9jb21wbGV0ZUxpc3RPcGVuKGZhbHNlKTtcbiAgICAgIHNldFNlbGVjdGVkSW5kZXgoLTEpO1xuICAgIH0sIFtdKTtcblxuICAgIGNvbnN0IG9wZW5BdXRvY29tcGxldGVMaXN0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgaWYgKGF1dG9jb21wbGV0ZUxpc3RJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgc2V0SXNBdXRvY29tcGxldGVMaXN0T3Blbih0cnVlKTtcbiAgICAgICAgc2V0U2VsZWN0ZWRJbmRleCgtMSk7XG4gICAgICB9XG4gICAgfSwgW2F1dG9jb21wbGV0ZUxpc3RJdGVtc10pO1xuXG4gICAgY29uc3QgYWNjZXB0VGV4dFNlbGVjdGlvbiA9ICgpID0+IHtcbiAgICAgIHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQgPSB2YWx1ZTtcbiAgICAgIGlmIChcbiAgICAgICAgdGV4dEFyZWFSZWYuY3VycmVudC5zZWxlY3Rpb25TdGFydCAhPT0gdGV4dEFyZWFSZWYuY3VycmVudC5zZWxlY3Rpb25FbmRcbiAgICAgICkge1xuICAgICAgICB0ZXh0QXJlYVJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKHZhbHVlLmxlbmd0aCwgdmFsdWUubGVuZ3RoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmIChhdXRvY29tcGxldGVMaXN0SXRlbXMubGVuZ3RoICYmICFpc0NvbGxhcHNlZCkge1xuICAgICAgICBvcGVuQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2xvc2VBdXRvY29tcGxldGVMaXN0KCk7XG4gICAgICB9XG4gICAgfSwgW1xuICAgICAgYXV0b2NvbXBsZXRlTGlzdEl0ZW1zLFxuICAgICAgb3BlbkF1dG9jb21wbGV0ZUxpc3QsXG4gICAgICBjbG9zZUF1dG9jb21wbGV0ZUxpc3QsXG4gICAgICBpc0NvbGxhcHNlZCxcbiAgICBdKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAodmFsdWUgJiYgdmFsdWUgIT09IHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQgJiYgaXNBdXRvY29tcGxldGVMaXN0T3Blbikge1xuICAgICAgICB0ZXh0QXJlYVJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKFxuICAgICAgICAgIHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQubGVuZ3RoLFxuICAgICAgICAgIHZhbHVlLmxlbmd0aFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0sIFt2YWx1ZSwgdGV4dEFyZWFSZWYsIGlzQXV0b2NvbXBsZXRlTGlzdE9wZW5dKTtcblxuICAgIC8vIERldGVybWluZSB3aGVuIGZvY3VzIGxlYXZlcyB0aGUgY29udGFpbmVyIHRvIGNvbGxhcHNlIGl0XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGxldCBoYW5kbGVyOiAoZXZ0OiBGb2N1c0V2ZW50KSA9PiB2b2lkO1xuICAgICAgY29uc3QgY29udGFpbmVyID0gY29udGFpbmVyUmVmLmN1cnJlbnQ7XG5cbiAgICAgIGlmIChpc05hdkJhclZhcmlhbnQgJiYgY29udGFpbmVyKSB7XG4gICAgICAgIGhhbmRsZXIgPSAoZXZ0OiBGb2N1c0V2ZW50KSA9PiB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgIWNvbnRhaW5lclJlZi5jdXJyZW50LmNvbnRhaW5zKGV2dC5yZWxhdGVkVGFyZ2V0IGFzIE5vZGUpICYmXG4gICAgICAgICAgICAhcG9ydGFsQ29udGFpbmVyPy5jb250YWlucyhldnQucmVsYXRlZFRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgICAgICAgZXZ0LnJlbGF0ZWRUYXJnZXQgIT09IG51bGxcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c291dFwiLCBoYW5kbGVyKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiZm9jdXNvdXRcIiwgaGFuZGxlcik7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSwgW2lzTmF2QmFyVmFyaWFudCwgY29udGFpbmVyUmVmLCBwb3J0YWxDb250YWluZXJdKTtcblxuICAgIGNvbnN0IGZsYXR0ZW5lZExpc3RJdGVtcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgY29uc3QgbGlzdDogRmxhdHRlbmVkTGlzdEl0ZW1bXSA9IFtdO1xuXG4gICAgICBhdXRvY29tcGxldGVMaXN0SXRlbXMuZm9yRWFjaCgobGlzdEl0ZW0pID0+IHtcbiAgICAgICAgbGlzdEl0ZW0uaXRlbXMuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICBsaXN0LnB1c2goe1xuICAgICAgICAgICAgY2F0ZWdvcnk6IGxpc3RJdGVtLmNhdGVnb3J5LFxuICAgICAgICAgICAgaW5kZXhJbkNhdGVnb3J5OiBpbmRleCxcbiAgICAgICAgICAgIHZhbHVlOiBpdGVtLnZhbHVlLFxuICAgICAgICAgICAgaWQ6IGdldExpc3RJdGVtSWQobmFtZSwgbGlzdEl0ZW0uY2F0ZWdvcnksIGluZGV4KSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBsaXN0O1xuICAgIH0sIFthdXRvY29tcGxldGVMaXN0SXRlbXMsIG5hbWVdKTtcblxuICAgIGNvbnN0IGhhbmRsZVNlbGVjdGVkSW5kZXhDaGFuZ2UgPSAoaW5kZXg6IG51bWJlciwgZXZ0PzogU3ludGhldGljRXZlbnQpID0+IHtcbiAgICAgIHNldFNlbGVjdGVkSW5kZXgoaW5kZXgpO1xuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBjb25zdCB7IGNhdGVnb3J5LCB2YWx1ZTogaXRlbVZhbHVlIH0gPSBmbGF0dGVuZWRMaXN0SXRlbXNbaW5kZXhdO1xuXG4gICAgICAgIG9uQ29tcGxldGUoeyB2YWx1ZTogaXRlbVZhbHVlLCBjYXRlZ29yeSwgZXZ0LCBpbmRleCB9KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlTGlzdEl0ZW1DbGljayA9IChcbiAgICAgIGNhdGVnb3J5OiBzdHJpbmcsXG4gICAgICBpbmRleEluQ2F0ZWdvcnk6IG51bWJlcixcbiAgICAgIGV2dD86IE1vdXNlRXZlbnRcbiAgICApID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ID0gZmxhdHRlbmVkTGlzdEl0ZW1zLmZpbmRJbmRleChcbiAgICAgICAgKGxpc3RJdGVtKSA9PlxuICAgICAgICAgIGxpc3RJdGVtLmNhdGVnb3J5ID09PSBjYXRlZ29yeSAmJlxuICAgICAgICAgIGxpc3RJdGVtLmluZGV4SW5DYXRlZ29yeSA9PT0gaW5kZXhJbkNhdGVnb3J5XG4gICAgICApO1xuXG4gICAgICBoYW5kbGVTZWxlY3RlZEluZGV4Q2hhbmdlKGluZGV4LCBldnQpO1xuICAgICAgY2xvc2VBdXRvY29tcGxldGVMaXN0KCk7XG4gICAgICBpZiAoaXNOYXZCYXJWYXJpYW50KSB7XG4gICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVLZXlEb3duOiBLZXlib2FyZEV2ZW50SGFuZGxlcjxIVE1MVGV4dEFyZWFFbGVtZW50PiA9IChldnQpID0+IHtcbiAgICAgIGlmIChpc0F1dG9jb21wbGV0ZUxpc3RPcGVuKSB7XG4gICAgICAgIHN3aXRjaCAoZXZ0LmtleSkge1xuICAgICAgICAgIGNhc2UgXCJFc2NhcGVcIjpcbiAgICAgICAgICAgIGNsb3NlQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgICAgICAgb25Db21wbGV0ZSh7IHZhbHVlOiB1c2VyVHlwZWRRdWVyeS5jdXJyZW50LCBldnQgfSk7XG4gICAgICAgICAgICBpZiAoaXNOYXZCYXJWYXJpYW50KSB7XG4gICAgICAgICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBcIkVudGVyXCI6XG4gICAgICAgICAgICBpZiAoIWV2dC5zaGlmdEtleSkge1xuICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgY2xvc2VBdXRvY29tcGxldGVMaXN0KCk7XG4gICAgICAgICAgICAgIGFjY2VwdFRleHRTZWxlY3Rpb24oKTtcblxuICAgICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBvbkVudGVyS2V5Py4oKTtcbiAgICAgICAgICAgICAgICBpZiAoaXNOYXZCYXJWYXJpYW50KSB7XG4gICAgICAgICAgICAgICAgICBzZXRJc0NvbGxhcHNlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgXCIgXCI6XG4gICAgICAgICAgICBhY2NlcHRUZXh0U2VsZWN0aW9uKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFwiQXJyb3dVcFwiOlxuICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgIGhhbmRsZVNlbGVjdGVkSW5kZXhDaGFuZ2Uoc2VsZWN0ZWRJbmRleCAtIDEsIGV2dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFwiQXJyb3dEb3duXCI6XG4gICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZEluZGV4IDwgZmxhdHRlbmVkTGlzdEl0ZW1zLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0ZWRJbmRleENoYW5nZShzZWxlY3RlZEluZGV4ICsgMSwgZXZ0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN3aXRjaCAoZXZ0LmtleSkge1xuICAgICAgICAgIGNhc2UgXCJFc2NhcGVcIjpcbiAgICAgICAgICAgIG9uQ2xlYXI/LigpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBcIkVudGVyXCI6XG4gICAgICAgICAgICBpZiAoIWV2dC5zaGlmdEtleSkge1xuICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgb25FbnRlcktleT8uKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBvbktleURvd24/LihldnQpO1xuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVDaGFuZ2U6IENoYW5nZUV2ZW50SGFuZGxlcjxIVE1MVGV4dEFyZWFFbGVtZW50PiA9IChldnQpID0+IHtcbiAgICAgIHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQgPSBldnQudGFyZ2V0LnZhbHVlO1xuICAgICAgb25DaGFuZ2UoZXZ0KTtcbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlRm9jdXM6IEZvY3VzRXZlbnRIYW5kbGVyPEhUTUxUZXh0QXJlYUVsZW1lbnQ+ID0gKGV2dCkgPT4ge1xuICAgICAgc2V0SXNDb2xsYXBzZWQoZmFsc2UpO1xuICAgICAgb25Gb2N1cz8uKGV2dCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZUJsdXI6IEZvY3VzRXZlbnRIYW5kbGVyPEhUTUxUZXh0QXJlYUVsZW1lbnQ+ID0gKGV2dCkgPT4ge1xuICAgICAgaWYgKHZhbHVlICE9PSB1c2VyVHlwZWRRdWVyeS5jdXJyZW50KSB7XG4gICAgICAgIG9uQ29tcGxldGU/Lih7IHZhbHVlOiB1c2VyVHlwZWRRdWVyeS5jdXJyZW50LCBldnQgfSk7XG4gICAgICB9XG4gICAgICBvbkJsdXI/LihldnQpO1xuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVTZW5kQnV0dG9uQ2xpY2sgPSAoZXZ0OiBNb3VzZUV2ZW50PEhUTUxCdXR0b25FbGVtZW50PikgPT4ge1xuICAgICAgbWVyZ2VkU2VuZEJ1dHRvblByb3BzLm9uQ2xpY2s/LihldnQpO1xuICAgICAgY2xvc2VBdXRvY29tcGxldGVMaXN0KCk7XG4gICAgICBpZiAoaXNOYXZCYXJWYXJpYW50KSB7XG4gICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVQcmV2ZW50Rm9jdXMgPSAoZXZ0OiBSZWFjdC5Qb2ludGVyRXZlbnQpID0+IHtcbiAgICAgIC8vIFByZXZlbnQgdGhlIHRleHRhcmVhIGZyb20gYmVpbmcgdW5mb2N1c2VkXG4gICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlT25Db250YWluZXJQb2ludGVyRG93biA9IChldnQ6IFJlYWN0LlBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgLy8gRm9jdXMgdGV4dGFyZWEgd2hlbiBjbGlja2luZyBvbiB0aGUgY29udGFpbmVyIG9ubHlcbiAgICAgIGlmIChldnQudGFyZ2V0ID09PSBldnQuY3VycmVudFRhcmdldCkge1xuICAgICAgICB0ZXh0QXJlYVJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3Qgc2VsZWN0ZWRMaXN0SXRlbSA9XG4gICAgICBzZWxlY3RlZEluZGV4ICE9PSAtMSA/IGZsYXR0ZW5lZExpc3RJdGVtc1tzZWxlY3RlZEluZGV4XSA6IG51bGw7XG5cbiAgICBjb25zdCBlbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50RWxtID0gZW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudCA/IChcbiAgICAgIDxTdHlsZWRFbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50Q29udGFpbmVyXG4gICAgICAgIGlzTmF2QmFyVmFyaWFudD17aXNOYXZCYXJWYXJpYW50fVxuICAgICAgPlxuICAgICAgICA8VGV4dCBjb2xvcj1cInRlcnRpYXJ5XCI+e2VtcHR5U3RhdGVUb3BSaWdodENvbnRlbnR9PC9UZXh0PlxuICAgICAgPC9TdHlsZWRFbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50Q29udGFpbmVyPlxuICAgICkgOiBudWxsO1xuXG4gICAgY29uc3QgY2xlYXJCdXR0b25FbG0gPSB2YWx1ZSA/IChcbiAgICAgIDxTdHlsZWRDbGVhckJ1dHRvblxuICAgICAgICBzaXplPVwic1wiXG4gICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgaWNvbj1cIngtY2lyY2xlLWZpbGxlZFwiXG4gICAgICAgIGFyaWEtbGFiZWw9e2NsZWFyQnV0dG9uQXJpYUxhYmVsfVxuICAgICAgICBpc05hdkJhclZhcmlhbnQ9e2lzTmF2QmFyVmFyaWFudH1cbiAgICAgICAgb25Qb2ludGVyRG93bj17aGFuZGxlUHJldmVudEZvY3VzfVxuICAgICAgICBvbkNsaWNrPXtvbkNsZWFyfVxuICAgICAgLz5cbiAgICApIDogKFxuICAgICAgZW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudEVsbVxuICAgICk7XG5cbiAgICBjb25zdCBoaW50RWxtID0gISFoaW50ICYmIChcbiAgICAgIDxJbmxpbmUgYWxpZ25JdGVtcz1cImNlbnRlclwiPlxuICAgICAgICA8VGV4dCBzaXplPVwic1wiIGNvbG9yPVwidGVydGlhcnlcIj5cbiAgICAgICAgICB7aGludH1cbiAgICAgICAgPC9UZXh0PlxuICAgICAgPC9JbmxpbmU+XG4gICAgKTtcblxuICAgIGNvbnN0IGJvdHRvbVRvb2xiYXJFbG0gPSAoYm90dG9tVG9vbGJhcj8ucmlnaHRDb250ZW50IHx8XG4gICAgICBib3R0b21Ub29sYmFyPy5sZWZ0Q29udGVudCB8fFxuICAgICAgISFzZW5kQnV0dG9uUHJvcHMpICYmXG4gICAgICAhaXNDb2xsYXBzZWQgJiYgKFxuICAgICAgICA8PlxuICAgICAgICAgIHtib3R0b21Ub29sYmFyPy5sZWZ0Q29udGVudCAmJiAoXG4gICAgICAgICAgICA8U3R5bGVkU2xvdD57Ym90dG9tVG9vbGJhci5sZWZ0Q29udGVudH08L1N0eWxlZFNsb3Q+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8U3R5bGVkU2xvdCBkYXRhLWUyZS10ZXN0LWlkPVwiYm90dG9tVG9vbGJhclwiIHNpZGU9XCJyaWdodFwiPlxuICAgICAgICAgICAgPElubGluZSBzcGFjZT1cInhzXCIgdkFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAgICAgICAge2JvdHRvbVRvb2xiYXI/LnJpZ2h0Q29udGVudH1cbiAgICAgICAgICAgICAge3NlbmRCdXR0b25Qcm9wcyAmJiAoXG4gICAgICAgICAgICAgICAgPFN1YlRoZW1lUHJvdmlkZXIgbmFtZT17dmFyaWFudH0+XG4gICAgICAgICAgICAgICAgICA8Um91bmRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgYXJpYUF0dHJpYnV0ZXM9e3tcbiAgICAgICAgICAgICAgICAgICAgICBcImFyaWEtbGFiZWxcIjogaXNQcm9jZXNzaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFwiUHJvY2Vzc2luZyBxdWVyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFwiU3VibWl0IHF1ZXJ5XCIsXG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIHsuLi5tZXJnZWRTZW5kQnV0dG9uUHJvcHN9XG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXttZXJnZWRTZW5kQnV0dG9uUHJvcHMuZGlzYWJsZWQgPz8gIXZhbHVlfVxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVTZW5kQnV0dG9uQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlckRvd249e2hhbmRsZVByZXZlbnRGb2N1c31cbiAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICBpY29uPXtcbiAgICAgICAgICAgICAgICAgICAgICBpc1Byb2Nlc3NpbmcgPyBcInN0b3AtZmlsbGVkXCIgOiBtZXJnZWRTZW5kQnV0dG9uUHJvcHMuaWNvblxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvU3ViVGhlbWVQcm92aWRlcj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvSW5saW5lPlxuICAgICAgICAgIDwvU3R5bGVkU2xvdD5cbiAgICAgICAgPC8+XG4gICAgICApO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBkYXRhLWUyZS10ZXN0LWlkPXtkYXRhRTJlVGVzdElkfVxuICAgICAgICAgIGRhdGEtZHMtaWQ9XCJQcm9tcHRJbnB1dFwiXG4gICAgICAgICAgcmVmPXtjb250YWluZXJSZWZ9XG4gICAgICAgICAgLy8gVHJhbnNsYXRpb24gZGlzYWJsZWQgZm9yIGNvbnNpc3RlbmN5IHdpdGggdGhlIGF1dG9jb21wbGV0ZSBsaXN0XG4gICAgICAgICAgdHJhbnNsYXRlPVwibm9cIlxuICAgICAgICA+XG4gICAgICAgICAgPFN0YWNrIHNwYWNlPVwic1wiPlxuICAgICAgICAgICAgPEFuaW1hdGVkQm9yZGVyXG4gICAgICAgICAgICAgIHNraXBBbmltYXRpb249e3NraXBBSUFuaW1hdGlvbiB8fCB2YXJpYW50ICE9PSBcImFpXCJ9XG4gICAgICAgICAgICAgIHJhZGl1cz17MTJ9XG4gICAgICAgICAgICAgIGl0ZXJhdGlvbnM9ezF9XG4gICAgICAgICAgICAgIHRoaWNrbmVzcz17Mn1cbiAgICAgICAgICAgICAgaGlkZUNoaWxkQm9yZGVyXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxTdWJUaGVtZVByb3ZpZGVyIG5hbWU9e3ZhcmlhbnR9PlxuICAgICAgICAgICAgICAgIDxDdXN0b21Db250YWluZXJcbiAgICAgICAgICAgICAgICAgIGVsZXZhdGlvbj17MH1cbiAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1cz17aXNDb2xsYXBzZWQgPyBcInhzXCIgOiBcIm1cIn1cbiAgICAgICAgICAgICAgICAgIGhpZGVCb3JkZXI9e2lzQ29sbGFwc2VkfVxuICAgICAgICAgICAgICAgICAgaGFzU2hhZG93PXshaXNOYXZCYXJWYXJpYW50fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTdWJUaGVtZVByb3ZpZGVyIG5hbWU9XCJ1bnNldFwiPlxuICAgICAgICAgICAgICAgICAgICA8U3R5bGVkU2xvdHNDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICByZWY9e3RleHRBcmVhQ29udGFpbmVyUmVmfVxuICAgICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlckRvd249e2hhbmRsZU9uQ29udGFpbmVyUG9pbnRlckRvd259XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U3R5bGVkVGV4dEFyZWFDb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7bGVmdEljb24gJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8U3R5bGVkTGVmdEljb25Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9e2xlZnRJY29ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJ0ZXJ0aWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3R5bGVkTGVmdEljb25Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPFByb21wdFRleHRBcmVhXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhRTJlVGVzdElkPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhRTJlVGVzdElkID8gYCR7ZGF0YUUyZVRlc3RJZH0taW5wdXRgIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e3RleHRBcmVhUmVmfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpc05hdkJhclZhcmlhbnQ9e2lzTmF2QmFyVmFyaWFudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRMaXN0SXRlbT17c2VsZWN0ZWRMaXN0SXRlbX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNBdXRvY29tcGxldGVMaXN0T3Blbj17aXNBdXRvY29tcGxldGVMaXN0T3Blbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNDb2xsYXBzZWQ9e2lzQ29sbGFwc2VkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNMZWZ0SWNvbj17ISFsZWZ0SWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25Gb2N1cz17aGFuZGxlRm9jdXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3dufVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtjbGVhckJ1dHRvbkVsbX1cbiAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZFRleHRBcmVhQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgIHtib3R0b21Ub29sYmFyRWxtfVxuICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZFNsb3RzQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPC9TdWJUaGVtZVByb3ZpZGVyPlxuICAgICAgICAgICAgICAgIDwvQ3VzdG9tQ29udGFpbmVyPlxuICAgICAgICAgICAgICA8L1N1YlRoZW1lUHJvdmlkZXI+XG4gICAgICAgICAgICA8L0FuaW1hdGVkQm9yZGVyPlxuICAgICAgICAgICAge2hpbnRFbG19XG4gICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPEF1dG9jb21wbGV0ZUxpc3RcbiAgICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICBhdXRvY29tcGxldGVMaXN0SXRlbXM9e2F1dG9jb21wbGV0ZUxpc3RJdGVtc31cbiAgICAgICAgICB0cmlnZ2VyUmVmPXt0ZXh0QXJlYUNvbnRhaW5lclJlZn1cbiAgICAgICAgICBzZWxlY3RlZExpc3RJdGVtPXtzZWxlY3RlZExpc3RJdGVtfVxuICAgICAgICAgIGlzT3Blbj17aXNBdXRvY29tcGxldGVMaXN0T3Blbn1cbiAgICAgICAgICBhdXRvY29tcGxldGVMaXN0Rm9vdGVyPXthdXRvY29tcGxldGVMaXN0Rm9vdGVyfVxuICAgICAgICAgIHBvcnRhbENvbnRhaW5lcj17cG9ydGFsQ29udGFpbmVyfVxuICAgICAgICAgIG9uTGlzdEl0ZW1DbGljaz17aGFuZGxlTGlzdEl0ZW1DbGlja31cbiAgICAgICAgLz5cbiAgICAgIDwvPlxuICAgICk7XG4gIH1cbik7XG5cbmNvbnN0IEN1c3RvbUJ1dHRvbiA9IHN0eWxlZChCdXR0b24pKCh7IHRoZW1lIH0pID0+ICh7XG4gIGJvcmRlclJhZGl1czogdGhlbWUudmFyaWFibGVzLnNpemUuYm9yZGVyUmFkaXVzLmwsXG59KSk7XG5cbi8vIG5lZWQgdG8gc2ltcGxpZnkgdGhpcyB0eXBlIGZvciByZXVzZVxuY29uc3QgU3VnZ2VzdGlvbkJ1dHRvbiA9IGZvcndhcmRSZWYoXG4gIDxDIGV4dGVuZHMgUmVhY3QuRWxlbWVudFR5cGUgPSBcImJ1dHRvblwiPihcbiAgICBwcm9wczogUG9seW1vcnBoaWNDb21wb25lbnRQcm9wc1dpdGhSZWY8XG4gICAgICBDLFxuICAgICAgT21pdDxCdXR0b25Qcm9wcywgXCJ2YXJpYW50XCIgfCBcInNpemVcIiB8IFwicmVmXCI+XG4gICAgPixcbiAgICByZWY6IFBvbHltb3JwaGljUmVmPEM+XG4gICkgPT4gPEN1c3RvbUJ1dHRvbiB7Li4ucHJvcHN9IHZhcmlhbnQ9XCJzZWNvbmRhcnlcIiBzaXplPVwic1wiIHJlZj17cmVmfSAvPlxuKTtcblxuZXhwb3J0IGNvbnN0IFByb21wdElucHV0ID0gT2JqZWN0LmFzc2lnbihQcm9tcHRJbnB1dENvbXBvbmVudCwge1xuICBTdWdnZXN0aW9uQnV0dG9uLFxufSkgYXMgdHlwZW9mIFByb21wdElucHV0Q29tcG9uZW50ICYge1xuICBTdWdnZXN0aW9uQnV0dG9uOiB0eXBlb2YgU3VnZ2VzdGlvbkJ1dHRvbjtcbn07XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBbUltQiJ9 */"),defaultSendButtonProps={type:"submit",icon:"arrow-up"},PromptInputComponent=(0,_react.forwardRef)(({"data-e2e-test-id":dataE2eTestId,name,autocompleteListItems=[],value,bottomToolbar,isProcessing,sendButtonProps,autocompleteListFooter,clearButtonAriaLabel="Clear input",hint,emptyStateTopRightContent,isNavBarVariant,portalContainer,leftIcon,onChange,onComplete,onClear,onEnterKey,onFocus,onBlur,onKeyDown,variant,skipAIAnimation=!1,...rest},ref)=>{let containerRef=(0,_react.useRef)(null),textAreaContainerRef=(0,_react.useRef)(null),internalRef=(0,_react.useRef)(null),[selectedIndex,setSelectedIndex]=(0,_react.useState)(-1),[isCollapsed,setIsCollapsed]=(0,_react.useState)(isNavBarVariant),userTypedQuery=(0,_react.useRef)(""),[isAutocompleteListOpen,setIsAutocompleteListOpen]=(0,_react.useState)(!1),textAreaRef=ref||internalRef,mergedSendButtonProps={...defaultSendButtonProps,...sendButtonProps??{}};(0,_useOutsideClick.useOutsideClick)(containerRef,evt=>{containerRef.current.contains(evt.target)||portalContainer?.contains(evt.target)||null===evt.target||setIsCollapsed(!0)},!isCollapsed&&isNavBarVariant);let closeAutocompleteList=(0,_react.useCallback)(()=>{setIsAutocompleteListOpen(!1),setSelectedIndex(-1)},[]),openAutocompleteList=(0,_react.useCallback)(()=>{autocompleteListItems.length&&(setIsAutocompleteListOpen(!0),setSelectedIndex(-1))},[autocompleteListItems]),acceptTextSelection=()=>{userTypedQuery.current=value,textAreaRef.current.selectionStart!==textAreaRef.current.selectionEnd&&textAreaRef.current.setSelectionRange(value.length,value.length)};(0,_react.useEffect)(()=>{autocompleteListItems.length&&!isCollapsed?openAutocompleteList():closeAutocompleteList()},[autocompleteListItems,openAutocompleteList,closeAutocompleteList,isCollapsed]),(0,_react.useEffect)(()=>{value&&value!==userTypedQuery.current&&isAutocompleteListOpen&&textAreaRef.current.setSelectionRange(userTypedQuery.current.length,value.length)},[value,textAreaRef,isAutocompleteListOpen]),(0,_react.useEffect)(()=>{let handler,container=containerRef.current;return isNavBarVariant&&container&&(handler=evt=>{containerRef.current.contains(evt.relatedTarget)||portalContainer?.contains(evt.relatedTarget)||null===evt.relatedTarget||setIsCollapsed(!0)},window.addEventListener("focusout",handler)),()=>{container&&window.removeEventListener("focusout",handler)}},[isNavBarVariant,containerRef,portalContainer]);let flattenedListItems=(0,_react.useMemo)(()=>{let list=[];return autocompleteListItems.forEach(listItem=>{listItem.items.forEach((item,index)=>{list.push({category:listItem.category,indexInCategory:index,value:item.value,id:(0,_CategoryList.getListItemId)(name,listItem.category,index)})})}),list},[autocompleteListItems,name]),handleSelectedIndexChange=(index,evt)=>{if(setSelectedIndex(index),-1!==index){let{category,value:itemValue}=flattenedListItems[index];onComplete({value:itemValue,category,evt,index})}},handlePreventFocus=evt=>{evt.preventDefault()},selectedListItem=-1!==selectedIndex?flattenedListItems[selectedIndex]:null,emptyStateTopRightContentElm=emptyStateTopRightContent?_react.default.createElement(StyledEmptyStateTopRightContentContainer,{isNavBarVariant:isNavBarVariant},_react.default.createElement(_Text.Text,{color:"tertiary"},emptyStateTopRightContent)):null,clearButtonElm=value?_react.default.createElement(StyledClearButton,{size:"s","aria-hidden":"true",tabIndex:-1,icon:"x-circle-filled","aria-label":clearButtonAriaLabel,isNavBarVariant:isNavBarVariant,onPointerDown:handlePreventFocus,onClick:onClear}):emptyStateTopRightContentElm,hintElm=!!hint&&_react.default.createElement(_Inline.Inline,{alignItems:"center"},_react.default.createElement(_Text.Text,{size:"s",color:"tertiary"},hint)),bottomToolbarElm=(bottomToolbar?.rightContent||bottomToolbar?.leftContent||!!sendButtonProps)&&!isCollapsed&&_react.default.createElement(_react.default.Fragment,null,bottomToolbar?.leftContent&&_react.default.createElement(StyledSlot,null,bottomToolbar.leftContent),_react.default.createElement(StyledSlot,{"data-e2e-test-id":"bottomToolbar",side:"right"},_react.default.createElement(_Inline.Inline,{space:"xs",vAlignItems:"center"},bottomToolbar?.rightContent,sendButtonProps&&_react.default.createElement(_SubThemeProvider.SubThemeProvider,{name:variant},_react.default.createElement(_RoundButton.RoundButton,{ariaAttributes:{"aria-label":isProcessing?"Processing query":"Submit query"},...mergedSendButtonProps,disabled:mergedSendButtonProps.disabled??!value,onClick:evt=>{mergedSendButtonProps.onClick?.(evt),closeAutocompleteList(),isNavBarVariant&&setIsCollapsed(!0)},onPointerDown:handlePreventFocus,variant:"primary",icon:isProcessing?"stop-filled":mergedSendButtonProps.icon})))));return _react.default.createElement(_react.default.Fragment,null,_react.default.createElement("div",{"data-e2e-test-id":dataE2eTestId,"data-ds-id":"PromptInput",ref:containerRef,translate:"no"},_react.default.createElement(_Stack.Stack,{space:"s"},_react.default.createElement(_AnimatedBorder.AnimatedBorder,{skipAnimation:skipAIAnimation||"ai"!==variant,radius:12,iterations:1,thickness:2,hideChildBorder:!0},_react.default.createElement(_SubThemeProvider.SubThemeProvider,{name:variant},_react.default.createElement(CustomContainer,{elevation:0,borderRadius:isCollapsed?"xs":"m",hideBorder:isCollapsed,hasShadow:!isNavBarVariant},_react.default.createElement(_SubThemeProvider.SubThemeProvider,{name:"unset"},_react.default.createElement(StyledSlotsContainer,{ref:textAreaContainerRef,onPointerDown:evt=>{evt.target===evt.currentTarget&&(textAreaRef.current?.focus(),evt.preventDefault())}},_react.default.createElement(StyledTextAreaContainer,null,leftIcon&&_react.default.createElement(StyledLeftIconContainer,null,_react.default.createElement(_Icon.Icon,{name:leftIcon,size:"m",color:"tertiary","aria-hidden":"true"})),_react.default.createElement(_PromptTextArea.PromptTextArea,{...rest,dataE2eTestId:dataE2eTestId?`${dataE2eTestId}-input`:void 0,name:name,value:value,ref:textAreaRef,isNavBarVariant:isNavBarVariant,selectedListItem:selectedListItem,isAutocompleteListOpen:isAutocompleteListOpen,isCollapsed:isCollapsed,hasLeftIcon:!!leftIcon,onFocus:evt=>{setIsCollapsed(!1),onFocus?.(evt)},onBlur:evt=>{value!==userTypedQuery.current&&onComplete?.({value:userTypedQuery.current,evt}),onBlur?.(evt)},onChange:evt=>{userTypedQuery.current=evt.target.value,onChange(evt)},onKeyDown:evt=>{if(isAutocompleteListOpen)switch(evt.key){case"Escape":closeAutocompleteList(),onComplete({value:userTypedQuery.current,evt}),isNavBarVariant&&setIsCollapsed(!0);break;case"Enter":!evt.shiftKey&&(evt.preventDefault(),closeAutocompleteList(),acceptTextSelection(),value&&(onEnterKey?.(),isNavBarVariant&&setIsCollapsed(!0)));break;case" ":acceptTextSelection();break;case"ArrowUp":evt.preventDefault(),selectedIndex>-1&&handleSelectedIndexChange(selectedIndex-1,evt);break;case"ArrowDown":evt.preventDefault(),selectedIndex<flattenedListItems.length-1&&handleSelectedIndexChange(selectedIndex+1,evt)}else switch(evt.key){case"Escape":onClear?.();break;case"Enter":!evt.shiftKey&&(evt.preventDefault(),value&&onEnterKey?.())}onKeyDown?.(evt)}}),clearButtonElm),bottomToolbarElm))))),hintElm)),_react.default.createElement(_AutocompleteList.AutocompleteList,{name:name,value:value,autocompleteListItems:autocompleteListItems,triggerRef:textAreaContainerRef,selectedListItem:selectedListItem,isOpen:isAutocompleteListOpen,autocompleteListFooter:autocompleteListFooter,portalContainer:portalContainer,onListItemClick:(category,indexInCategory,evt)=>{handleSelectedIndexChange(flattenedListItems.findIndex(listItem=>listItem.category===category&&listItem.indexInCategory===indexInCategory),evt),closeAutocompleteList(),isNavBarVariant&&setIsCollapsed(!0)}}))}),CustomButton=(0,_styled.default)(_Button.Button,{target:"e1jgljjd7",label:"CustomButton"})(({theme})=>({borderRadius:theme.variables.size.borderRadius.l}),"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvUHJvbXB0SW5wdXQvUHJvbXB0SW5wdXQudHN4Iiwic291cmNlcyI6WyJzcmMvY29tcG9uZW50cy9Qcm9tcHRJbnB1dC9Qcm9tcHRJbnB1dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBSZWFjdEVsZW1lbnQsXG4gIENoYW5nZUV2ZW50SGFuZGxlcixcbiAgS2V5Ym9hcmRFdmVudEhhbmRsZXIsXG4gIFJlZk9iamVjdCxcbiAgRm9jdXNFdmVudEhhbmRsZXIsXG4gIFN5bnRoZXRpY0V2ZW50LFxuICBNb3VzZUV2ZW50LFxufSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IFJlYWN0LCB7XG4gIHVzZVJlZixcbiAgdXNlTWVtbyxcbiAgdXNlU3RhdGUsXG4gIHVzZUVmZmVjdCxcbiAgdXNlQ2FsbGJhY2ssXG4gIGZvcndhcmRSZWYsXG59IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5cbmltcG9ydCB0eXBlIHsgUHJvbXB0VGV4dEFyZWFQcm9wcyB9IGZyb20gXCIuL1Byb21wdFRleHRBcmVhXCI7XG5pbXBvcnQge1xuICBQcm9tcHRUZXh0QXJlYSxcbiAgZ2V0UGFkZGluZ0hvcml6b250YWwsXG4gIGdldFBhZGRpbmdWZXJ0aWNhbCxcbn0gZnJvbSBcIi4vUHJvbXB0VGV4dEFyZWFcIjtcbmltcG9ydCB7IENvbnRhaW5lciB9IGZyb20gXCIuLi9Db250YWluZXJcIjtcbmltcG9ydCB0eXBlIHsgQXV0b2NvbXBsZXRlTGlzdFByb3BzIH0gZnJvbSBcIi4vQXV0b2NvbXBsZXRlTGlzdFwiO1xuXG5pbXBvcnQgeyBBdXRvY29tcGxldGVMaXN0IH0gZnJvbSBcIi4vQXV0b2NvbXBsZXRlTGlzdFwiO1xuaW1wb3J0IHtcbiAgZ2V0TGlzdEl0ZW1JZCxcbiAgdHlwZSBGbGF0dGVuZWRMaXN0SXRlbSxcbiAgdHlwZSBMaXN0SXRlbVZhbHVlLFxufSBmcm9tIFwiLi9DYXRlZ29yeUxpc3RcIjtcbmltcG9ydCB7IFRleHQgfSBmcm9tIFwiLi4vVHlwb2dyYXBoeS9UZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24sIHR5cGUgQnV0dG9uUHJvcHMgfSBmcm9tIFwiLi4vQnV0dG9uL0J1dHRvblwiO1xuaW1wb3J0IHR5cGUge1xuICBQb2x5bW9ycGhpY1JlZixcbiAgUG9seW1vcnBoaWNDb21wb25lbnRQcm9wc1dpdGhSZWYsXG59IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuaW1wb3J0IHsgSW5saW5lIH0gZnJvbSBcIi4uL0lubGluZS9JbmxpbmVcIjtcbmltcG9ydCB0eXBlIHsgUm91bmRCdXR0b25Qcm9wcyB9IGZyb20gXCIuLi9Sb3VuZEJ1dHRvbi9Sb3VuZEJ1dHRvblwiO1xuaW1wb3J0IHsgUm91bmRCdXR0b24gfSBmcm9tIFwiLi4vUm91bmRCdXR0b24vUm91bmRCdXR0b25cIjtcbmltcG9ydCB0eXBlIHsgUGljdG9ncmFtQnV0dG9uUHJvcHMgfSBmcm9tIFwiLi4vUGljdG9ncmFtQnV0dG9uL1BpY3RvZ3JhbUJ1dHRvblwiO1xuaW1wb3J0IHsgUGljdG9ncmFtQnV0dG9uIH0gZnJvbSBcIi4uL1BpY3RvZ3JhbUJ1dHRvbi9QaWN0b2dyYW1CdXR0b25cIjtcbmltcG9ydCB7IFN0YWNrIH0gZnJvbSBcIi4uL1N0YWNrL1N0YWNrXCI7XG5pbXBvcnQgeyB1c2VPdXRzaWRlQ2xpY2sgfSBmcm9tIFwiLi4vLi4vc2hhcmVkL3VzZU91dHNpZGVDbGlja1wiO1xuaW1wb3J0IHR5cGUgeyBJY29uTmFtZSB9IGZyb20gXCIuLi9JY29uL0ljb25cIjtcbmltcG9ydCB7IEljb24gfSBmcm9tIFwiLi4vSWNvbi9JY29uXCI7XG5pbXBvcnQgeyBTdWJUaGVtZVByb3ZpZGVyIH0gZnJvbSBcIi4uL1N1YlRoZW1lUHJvdmlkZXIvU3ViVGhlbWVQcm92aWRlclwiO1xuaW1wb3J0IHsgQW5pbWF0ZWRCb3JkZXIgfSBmcm9tIFwiLi4vVXRpbGl0aWVzL0FuaW1hdGVkQm9yZGVyL0FuaW1hdGVkQm9yZGVyXCI7XG5cbmNvbnN0IEN1c3RvbUNvbnRhaW5lciA9IHN0eWxlZChDb250YWluZXIpPHtcbiAgaGlkZUJvcmRlcjogYm9vbGVhbjtcbiAgaGFzU2hhZG93OiBib29sZWFuO1xufT4oKHsgdGhlbWUsIGhpZGVCb3JkZXIsIGhhc1NoYWRvdyB9KSA9PiAoe1xuICBib3JkZXI6IGAxcHggc29saWQgJHt0aGVtZS52YWx1ZXMuY29sb3IuYm9yZGVyLnByaW1hcnkuZGVmYXVsdH1gLFxuICAuLi4oaGFzU2hhZG93ICYmIHtcbiAgICBib3hTaGFkb3c6IHRoZW1lLnZhbHVlcy5zaGFkb3cuZGVmYXVsdFJpbmcsXG4gICAgdHJhbnNpdGlvblByb3BlcnR5OiBcImJveC1zaGFkb3csIGJvcmRlci1jb2xvciwgb3V0bGluZS1jb2xvclwiLFxuICAgIHRyYW5zaXRpb25EdXJhdGlvbjogdGhlbWUudmFyaWFibGVzLmFuaW1hdGlvbi5wcm9tcHRJbnB1dC5mb2N1cy5kdXJhdGlvbixcbiAgICB0cmFuc2l0aW9uVGltaW5nRnVuY3Rpb246XG4gICAgICB0aGVtZS52YXJpYWJsZXMuYW5pbWF0aW9uLnByb21wdElucHV0LmZvY3VzLnRpbWluZ0Z1bmN0aW9uLFxuICB9KSxcbiAgLi4uKGhpZGVCb3JkZXIgJiYge1xuICAgIGJvcmRlckNvbG9yOiBcInRyYW5zcGFyZW50XCIsXG4gIH0pLFxuICBjdXJzb3I6IFwidGV4dFwiLFxuICBvdXRsaW5lQ29sb3I6IFwidHJhbnNwYXJlbnRcIixcbiAgW2AmOmhhcyh0ZXh0YXJlYTpmb2N1cy12aXNpYmxlKWBdOiB7XG4gICAgb3V0bGluZVdpZHRoOiAxLFxuICAgIG91dGxpbmVTdHlsZTogXCJzb2xpZFwiLFxuICAgIG91dGxpbmVPZmZzZXQ6IC0xLFxuICAgIGJveFNoYWRvdzogdGhlbWUudmFsdWVzLnNoYWRvdy5mb2N1c1JpbmcsXG4gICAgb3V0bGluZUNvbG9yOiB0aGVtZS52YWx1ZXMuY29sb3IuYm9yZGVyLmFjY2VudC5kZWZhdWx0LFxuICB9LFxufSkpO1xuXG5jb25zdCBTdHlsZWRUZXh0QXJlYUNvbnRhaW5lciA9IHN0eWxlZC5kaXYoe1xuICBib3JkZXJSYWRpdXM6IFwiaW5oZXJpdFwiLFxuICBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiLFxuICB3aWR0aDogXCIxMDAlXCIsXG59KTtcblxuY29uc3QgU3R5bGVkTGVmdEljb25Db250YWluZXIgPSBzdHlsZWQuZGl2KCh7IHRoZW1lIH0pID0+ICh7XG4gIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gIHRvcDogZ2V0UGFkZGluZ1ZlcnRpY2FsKHRoZW1lKSxcbiAgbGVmdDogZ2V0UGFkZGluZ0hvcml6b250YWwodGhlbWUpLFxufSkpO1xuXG50eXBlIFN0eWxlZEVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnRDb250YWluZXJQcm9wcyA9IFBpY2s8XG4gIFByb21wdElucHV0UHJvcHMsXG4gIFwiaXNOYXZCYXJWYXJpYW50XCJcbj47XG5cbmNvbnN0IFN0eWxlZEVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnRDb250YWluZXIgPVxuICBzdHlsZWQuZGl2PFN0eWxlZEVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnRDb250YWluZXJQcm9wcz4oXG4gICAgKHsgdGhlbWUsIGlzTmF2QmFyVmFyaWFudCB9KSA9PiAoe1xuICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgIHRvcDogaXNOYXZCYXJWYXJpYW50XG4gICAgICAgID8gdGhlbWUudmFyaWFibGVzLnNpemUuc3BhY2luZy54eHNcbiAgICAgICAgOiBnZXRQYWRkaW5nVmVydGljYWwodGhlbWUpLFxuICAgICAgcmlnaHQ6IGdldFBhZGRpbmdIb3Jpem9udGFsKHRoZW1lKSxcbiAgICAgIHVzZXJTZWxlY3Q6IFwibm9uZVwiLFxuICAgICAgcG9pbnRlckV2ZW50czogXCJub25lXCIsXG4gICAgfSlcbiAgKTtcblxudHlwZSBTdHlsZWRDbGVhckJ1dHRvblByb3BzID0gUGljdG9ncmFtQnV0dG9uUHJvcHMgJlxuICBQaWNrPFByb21wdElucHV0UHJvcHMsIFwiaXNOYXZCYXJWYXJpYW50XCI+O1xuXG5jb25zdCBTdHlsZWRDbGVhckJ1dHRvbiA9IHN0eWxlZChQaWN0b2dyYW1CdXR0b24pPFN0eWxlZENsZWFyQnV0dG9uUHJvcHM+KFxuICAoeyB0aGVtZSwgaXNOYXZCYXJWYXJpYW50IH0pID0+ICh7XG4gICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICByaWdodDogdGhlbWUudmFyaWFibGVzLnNpemUuc3BhY2luZy5zLFxuICAgIHRvcDogaXNOYXZCYXJWYXJpYW50ID8gMCA6IHRoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcucyxcbiAgfSlcbik7XG5cbmNvbnN0IFN0eWxlZFNsb3RzQ29udGFpbmVyID0gc3R5bGVkLmRpdih7XG4gIGRpc3BsYXk6IFwiZmxleFwiLFxuICBmbGV4V3JhcDogXCJ3cmFwXCIsXG4gIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG59KTtcblxuLy8gSXQgbmVlZHMgbWFyZ2luIGR1ZSB0byBlbXB0eSBjbGlja2FibGUgc3BhY2UgdGhhdCBmb2N1c2VzIHRoZSB0ZXh0YXJlYVxuLy8gU2xvdHMgc2hvdWxkIG5vdCBiZSBpbiB0aGUgZGl2LCBiZWNhdXNlIGFyZWEgYmV0d2VlbiBzaG91bGQgYmUgY2xpY2thYmxlIGFsc29cbnR5cGUgU2xvdFByb3BzID0ge1xuICBzaWRlPzogXCJyaWdodFwiO1xufTtcbmNvbnN0IFN0eWxlZFNsb3QgPSBzdHlsZWQuZGl2PFNsb3RQcm9wcz4oKHsgdGhlbWUsIHNpZGUgfSkgPT4gKHtcbiAgbWFyZ2luOiBgMCAke3RoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcuc30gJHt0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnN9YCxcblxuICAuLi4oc2lkZSA9PT0gXCJyaWdodFwiICYmIHtcbiAgICBtYXJnaW5MZWZ0OiBcImF1dG9cIixcbiAgfSksXG59KSk7XG5cbnR5cGUgU2VuZEJ1dHRvblByb3BzID0gT21pdDxSb3VuZEJ1dHRvblByb3BzLCBcImljb25cIiB8IFwidmFyaWFudFwiPiAmIHtcbiAgaWNvbj86IFwiYXJyb3ctdXBcIiB8IFwic2VhcmNoXCIgfCBcImFycm93LXJpZ2h0XCIgfCBcInZvaWNlXCI7XG59O1xuXG50eXBlIEJvdHRvbVRvb2xiYXJDb25maWcgPSB7XG4gIC8qKiBUb29sYmFyIGVsZW1lbnRzIGJlbG93IHRleHQgYXJlYSAqL1xuICBsZWZ0Q29udGVudD86IFJlYWN0RWxlbWVudDtcbiAgcmlnaHRDb250ZW50PzogUmVhY3RFbGVtZW50O1xufTtcblxuZXhwb3J0IHR5cGUgUHJvbXB0SW5wdXRQcm9wcyA9IHtcbiAgXCJkYXRhLWUyZS10ZXN0LWlkXCI/OiBzdHJpbmc7XG4gIHZhcmlhbnQ/OiBcImFpXCI7XG4gIHNraXBBSUFuaW1hdGlvbj86IGJvb2xlYW47XG4gIGJvdHRvbVRvb2xiYXI/OiBCb3R0b21Ub29sYmFyQ29uZmlnO1xuICBzZW5kQnV0dG9uUHJvcHM/OiBTZW5kQnV0dG9uUHJvcHM7XG4gIC8qKiBDdXJyZW50bHkgc2hvd3Mgc2VuZCBidXR0b24gcHJvY2Vzc2luZyBzdGF0ZSAgKi9cbiAgaXNQcm9jZXNzaW5nPzogYm9vbGVhbjtcbiAgY2xlYXJCdXR0b25BcmlhTGFiZWw/OiBzdHJpbmc7XG4gIGhpbnQ/OiBSZWFjdEVsZW1lbnQ7XG4gIC8qKiBTaG93cyBpbiB0aGUgY2xlYXIgYnV0dG9uIHNwYWNlIGluIGVtcHR5IHN0YXRlICovXG4gIGVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnQ/OiBSZWFjdEVsZW1lbnQ7XG4gIG9uQ2xlYXI6ICgpID0+IHZvaWQ7XG4gIC8qKiBDYWxsZWQgd2hlbiB1c2VyIHNlbGVjdHMgKG9yIHJlamVjdHMpIGEgbGlzdCBpdGVtIGZyb20gYXV0b2NvbXBsZXRlIGxpc3QgKi9cbiAgb25Db21wbGV0ZT86ICh7XG4gICAgdmFsdWUsXG4gICAgY2F0ZWdvcnksXG4gICAgZXZ0LFxuICAgIGluZGV4LFxuICB9OiB7XG4gICAgdmFsdWU6IExpc3RJdGVtVmFsdWU7XG4gICAgY2F0ZWdvcnk/OiBzdHJpbmc7XG4gICAgZXZ0PzogU3ludGhldGljRXZlbnQ7XG4gICAgaW5kZXg/OiBudW1iZXI7XG4gIH0pID0+IHZvaWQ7XG4gIC8qKiBDYWxsZWQgb24gRW50ZXIga2V5IHRvIHN1Ym1pdCB0aGUgZm9ybSAgKi9cbiAgb25FbnRlcktleTogKCkgPT4gdm9pZDtcbiAgLyoqIFJlbmRlcnMgYW4gaWNvbiB0byB0aGUgbGVmdCBpbnNpZGUgdGhlIHRleHRhcmVhICovXG4gIGxlZnRJY29uPzogSWNvbk5hbWU7XG59ICYgT21pdDxcbiAgUHJvbXB0VGV4dEFyZWFQcm9wcyxcbiAgXCJpc0NvbGxhcHNlZFwiIHwgXCJpc0F1dG9jb21wbGV0ZUxpc3RPcGVuXCIgfCBcInNlbGVjdGVkTGlzdEl0ZW1cIiB8IFwiaGFzTGVmdEljb25cIlxuPiAmXG4gIFBpY2s8XG4gICAgQXV0b2NvbXBsZXRlTGlzdFByb3BzLFxuICAgIFwiYXV0b2NvbXBsZXRlTGlzdEl0ZW1zXCIgfCBcImF1dG9jb21wbGV0ZUxpc3RGb290ZXJcIiB8IFwicG9ydGFsQ29udGFpbmVyXCJcbiAgPjtcblxuY29uc3QgZGVmYXVsdFNlbmRCdXR0b25Qcm9wczogU2VuZEJ1dHRvblByb3BzID0ge1xuICB0eXBlOiBcInN1Ym1pdFwiIGFzIGNvbnN0LFxuICBpY29uOiBcImFycm93LXVwXCIgYXMgY29uc3QsXG59O1xuXG5jb25zdCBQcm9tcHRJbnB1dENvbXBvbmVudCA9IGZvcndhcmRSZWYoXG4gIChcbiAgICB7XG4gICAgICBcImRhdGEtZTJlLXRlc3QtaWRcIjogZGF0YUUyZVRlc3RJZCxcbiAgICAgIG5hbWUsXG4gICAgICBhdXRvY29tcGxldGVMaXN0SXRlbXMgPSBbXSxcbiAgICAgIHZhbHVlLFxuICAgICAgYm90dG9tVG9vbGJhcixcbiAgICAgIGlzUHJvY2Vzc2luZyxcbiAgICAgIHNlbmRCdXR0b25Qcm9wcyxcbiAgICAgIGF1dG9jb21wbGV0ZUxpc3RGb290ZXIsXG4gICAgICBjbGVhckJ1dHRvbkFyaWFMYWJlbCA9IFwiQ2xlYXIgaW5wdXRcIixcbiAgICAgIGhpbnQsXG4gICAgICBlbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50LFxuICAgICAgaXNOYXZCYXJWYXJpYW50LFxuICAgICAgcG9ydGFsQ29udGFpbmVyLFxuICAgICAgbGVmdEljb24sXG4gICAgICBvbkNoYW5nZSxcbiAgICAgIG9uQ29tcGxldGUsXG4gICAgICBvbkNsZWFyLFxuICAgICAgb25FbnRlcktleSxcbiAgICAgIG9uRm9jdXMsXG4gICAgICBvbkJsdXIsXG4gICAgICBvbktleURvd24sXG4gICAgICB2YXJpYW50LFxuICAgICAgc2tpcEFJQW5pbWF0aW9uID0gZmFsc2UsXG4gICAgICAuLi5yZXN0XG4gICAgfTogUHJvbXB0SW5wdXRQcm9wcyxcbiAgICByZWY6IFJlZk9iamVjdDxIVE1MVGV4dEFyZWFFbGVtZW50PlxuICApOiBSZWFjdEVsZW1lbnQgPT4ge1xuICAgIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gICAgY29uc3QgdGV4dEFyZWFDb250YWluZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICAgIGNvbnN0IGludGVybmFsUmVmID0gdXNlUmVmPEhUTUxUZXh0QXJlYUVsZW1lbnQ+KG51bGwpO1xuICAgIGNvbnN0IFtzZWxlY3RlZEluZGV4LCBzZXRTZWxlY3RlZEluZGV4XSA9IHVzZVN0YXRlKC0xKTtcbiAgICBjb25zdCBbaXNDb2xsYXBzZWQsIHNldElzQ29sbGFwc2VkXSA9IHVzZVN0YXRlKGlzTmF2QmFyVmFyaWFudCk7XG4gICAgY29uc3QgdXNlclR5cGVkUXVlcnkgPSB1c2VSZWYoXCJcIik7XG4gICAgY29uc3QgW2lzQXV0b2NvbXBsZXRlTGlzdE9wZW4sIHNldElzQXV0b2NvbXBsZXRlTGlzdE9wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IHRleHRBcmVhUmVmID0gcmVmIHx8IGludGVybmFsUmVmO1xuXG4gICAgY29uc3QgbWVyZ2VkU2VuZEJ1dHRvblByb3BzID0ge1xuICAgICAgLi4uZGVmYXVsdFNlbmRCdXR0b25Qcm9wcyxcbiAgICAgIC4uLihzZW5kQnV0dG9uUHJvcHMgPz8ge30pLFxuICAgIH07XG5cbiAgICB1c2VPdXRzaWRlQ2xpY2soXG4gICAgICBjb250YWluZXJSZWYsXG4gICAgICAoZXZ0KSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhY29udGFpbmVyUmVmLmN1cnJlbnQuY29udGFpbnMoZXZ0LnRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgICAgICFwb3J0YWxDb250YWluZXI/LmNvbnRhaW5zKGV2dC50YXJnZXQgYXMgTm9kZSkgJiZcbiAgICAgICAgICBldnQudGFyZ2V0ICE9PSBudWxsXG4gICAgICAgICkge1xuICAgICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgIWlzQ29sbGFwc2VkICYmIGlzTmF2QmFyVmFyaWFudFxuICAgICk7XG5cbiAgICBjb25zdCBjbG9zZUF1dG9jb21wbGV0ZUxpc3QgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBzZXRJc0F1dG9jb21wbGV0ZUxpc3RPcGVuKGZhbHNlKTtcbiAgICAgIHNldFNlbGVjdGVkSW5kZXgoLTEpO1xuICAgIH0sIFtdKTtcblxuICAgIGNvbnN0IG9wZW5BdXRvY29tcGxldGVMaXN0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgaWYgKGF1dG9jb21wbGV0ZUxpc3RJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgc2V0SXNBdXRvY29tcGxldGVMaXN0T3Blbih0cnVlKTtcbiAgICAgICAgc2V0U2VsZWN0ZWRJbmRleCgtMSk7XG4gICAgICB9XG4gICAgfSwgW2F1dG9jb21wbGV0ZUxpc3RJdGVtc10pO1xuXG4gICAgY29uc3QgYWNjZXB0VGV4dFNlbGVjdGlvbiA9ICgpID0+IHtcbiAgICAgIHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQgPSB2YWx1ZTtcbiAgICAgIGlmIChcbiAgICAgICAgdGV4dEFyZWFSZWYuY3VycmVudC5zZWxlY3Rpb25TdGFydCAhPT0gdGV4dEFyZWFSZWYuY3VycmVudC5zZWxlY3Rpb25FbmRcbiAgICAgICkge1xuICAgICAgICB0ZXh0QXJlYVJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKHZhbHVlLmxlbmd0aCwgdmFsdWUubGVuZ3RoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmIChhdXRvY29tcGxldGVMaXN0SXRlbXMubGVuZ3RoICYmICFpc0NvbGxhcHNlZCkge1xuICAgICAgICBvcGVuQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2xvc2VBdXRvY29tcGxldGVMaXN0KCk7XG4gICAgICB9XG4gICAgfSwgW1xuICAgICAgYXV0b2NvbXBsZXRlTGlzdEl0ZW1zLFxuICAgICAgb3BlbkF1dG9jb21wbGV0ZUxpc3QsXG4gICAgICBjbG9zZUF1dG9jb21wbGV0ZUxpc3QsXG4gICAgICBpc0NvbGxhcHNlZCxcbiAgICBdKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAodmFsdWUgJiYgdmFsdWUgIT09IHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQgJiYgaXNBdXRvY29tcGxldGVMaXN0T3Blbikge1xuICAgICAgICB0ZXh0QXJlYVJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKFxuICAgICAgICAgIHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQubGVuZ3RoLFxuICAgICAgICAgIHZhbHVlLmxlbmd0aFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0sIFt2YWx1ZSwgdGV4dEFyZWFSZWYsIGlzQXV0b2NvbXBsZXRlTGlzdE9wZW5dKTtcblxuICAgIC8vIERldGVybWluZSB3aGVuIGZvY3VzIGxlYXZlcyB0aGUgY29udGFpbmVyIHRvIGNvbGxhcHNlIGl0XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGxldCBoYW5kbGVyOiAoZXZ0OiBGb2N1c0V2ZW50KSA9PiB2b2lkO1xuICAgICAgY29uc3QgY29udGFpbmVyID0gY29udGFpbmVyUmVmLmN1cnJlbnQ7XG5cbiAgICAgIGlmIChpc05hdkJhclZhcmlhbnQgJiYgY29udGFpbmVyKSB7XG4gICAgICAgIGhhbmRsZXIgPSAoZXZ0OiBGb2N1c0V2ZW50KSA9PiB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgIWNvbnRhaW5lclJlZi5jdXJyZW50LmNvbnRhaW5zKGV2dC5yZWxhdGVkVGFyZ2V0IGFzIE5vZGUpICYmXG4gICAgICAgICAgICAhcG9ydGFsQ29udGFpbmVyPy5jb250YWlucyhldnQucmVsYXRlZFRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgICAgICAgZXZ0LnJlbGF0ZWRUYXJnZXQgIT09IG51bGxcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c291dFwiLCBoYW5kbGVyKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiZm9jdXNvdXRcIiwgaGFuZGxlcik7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSwgW2lzTmF2QmFyVmFyaWFudCwgY29udGFpbmVyUmVmLCBwb3J0YWxDb250YWluZXJdKTtcblxuICAgIGNvbnN0IGZsYXR0ZW5lZExpc3RJdGVtcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgY29uc3QgbGlzdDogRmxhdHRlbmVkTGlzdEl0ZW1bXSA9IFtdO1xuXG4gICAgICBhdXRvY29tcGxldGVMaXN0SXRlbXMuZm9yRWFjaCgobGlzdEl0ZW0pID0+IHtcbiAgICAgICAgbGlzdEl0ZW0uaXRlbXMuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICBsaXN0LnB1c2goe1xuICAgICAgICAgICAgY2F0ZWdvcnk6IGxpc3RJdGVtLmNhdGVnb3J5LFxuICAgICAgICAgICAgaW5kZXhJbkNhdGVnb3J5OiBpbmRleCxcbiAgICAgICAgICAgIHZhbHVlOiBpdGVtLnZhbHVlLFxuICAgICAgICAgICAgaWQ6IGdldExpc3RJdGVtSWQobmFtZSwgbGlzdEl0ZW0uY2F0ZWdvcnksIGluZGV4KSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBsaXN0O1xuICAgIH0sIFthdXRvY29tcGxldGVMaXN0SXRlbXMsIG5hbWVdKTtcblxuICAgIGNvbnN0IGhhbmRsZVNlbGVjdGVkSW5kZXhDaGFuZ2UgPSAoaW5kZXg6IG51bWJlciwgZXZ0PzogU3ludGhldGljRXZlbnQpID0+IHtcbiAgICAgIHNldFNlbGVjdGVkSW5kZXgoaW5kZXgpO1xuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBjb25zdCB7IGNhdGVnb3J5LCB2YWx1ZTogaXRlbVZhbHVlIH0gPSBmbGF0dGVuZWRMaXN0SXRlbXNbaW5kZXhdO1xuXG4gICAgICAgIG9uQ29tcGxldGUoeyB2YWx1ZTogaXRlbVZhbHVlLCBjYXRlZ29yeSwgZXZ0LCBpbmRleCB9KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlTGlzdEl0ZW1DbGljayA9IChcbiAgICAgIGNhdGVnb3J5OiBzdHJpbmcsXG4gICAgICBpbmRleEluQ2F0ZWdvcnk6IG51bWJlcixcbiAgICAgIGV2dD86IE1vdXNlRXZlbnRcbiAgICApID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ID0gZmxhdHRlbmVkTGlzdEl0ZW1zLmZpbmRJbmRleChcbiAgICAgICAgKGxpc3RJdGVtKSA9PlxuICAgICAgICAgIGxpc3RJdGVtLmNhdGVnb3J5ID09PSBjYXRlZ29yeSAmJlxuICAgICAgICAgIGxpc3RJdGVtLmluZGV4SW5DYXRlZ29yeSA9PT0gaW5kZXhJbkNhdGVnb3J5XG4gICAgICApO1xuXG4gICAgICBoYW5kbGVTZWxlY3RlZEluZGV4Q2hhbmdlKGluZGV4LCBldnQpO1xuICAgICAgY2xvc2VBdXRvY29tcGxldGVMaXN0KCk7XG4gICAgICBpZiAoaXNOYXZCYXJWYXJpYW50KSB7XG4gICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVLZXlEb3duOiBLZXlib2FyZEV2ZW50SGFuZGxlcjxIVE1MVGV4dEFyZWFFbGVtZW50PiA9IChldnQpID0+IHtcbiAgICAgIGlmIChpc0F1dG9jb21wbGV0ZUxpc3RPcGVuKSB7XG4gICAgICAgIHN3aXRjaCAoZXZ0LmtleSkge1xuICAgICAgICAgIGNhc2UgXCJFc2NhcGVcIjpcbiAgICAgICAgICAgIGNsb3NlQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgICAgICAgb25Db21wbGV0ZSh7IHZhbHVlOiB1c2VyVHlwZWRRdWVyeS5jdXJyZW50LCBldnQgfSk7XG4gICAgICAgICAgICBpZiAoaXNOYXZCYXJWYXJpYW50KSB7XG4gICAgICAgICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBcIkVudGVyXCI6XG4gICAgICAgICAgICBpZiAoIWV2dC5zaGlmdEtleSkge1xuICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgY2xvc2VBdXRvY29tcGxldGVMaXN0KCk7XG4gICAgICAgICAgICAgIGFjY2VwdFRleHRTZWxlY3Rpb24oKTtcblxuICAgICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBvbkVudGVyS2V5Py4oKTtcbiAgICAgICAgICAgICAgICBpZiAoaXNOYXZCYXJWYXJpYW50KSB7XG4gICAgICAgICAgICAgICAgICBzZXRJc0NvbGxhcHNlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgXCIgXCI6XG4gICAgICAgICAgICBhY2NlcHRUZXh0U2VsZWN0aW9uKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFwiQXJyb3dVcFwiOlxuICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgIGhhbmRsZVNlbGVjdGVkSW5kZXhDaGFuZ2Uoc2VsZWN0ZWRJbmRleCAtIDEsIGV2dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFwiQXJyb3dEb3duXCI6XG4gICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZEluZGV4IDwgZmxhdHRlbmVkTGlzdEl0ZW1zLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0ZWRJbmRleENoYW5nZShzZWxlY3RlZEluZGV4ICsgMSwgZXZ0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN3aXRjaCAoZXZ0LmtleSkge1xuICAgICAgICAgIGNhc2UgXCJFc2NhcGVcIjpcbiAgICAgICAgICAgIG9uQ2xlYXI/LigpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBcIkVudGVyXCI6XG4gICAgICAgICAgICBpZiAoIWV2dC5zaGlmdEtleSkge1xuICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgb25FbnRlcktleT8uKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBvbktleURvd24/LihldnQpO1xuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVDaGFuZ2U6IENoYW5nZUV2ZW50SGFuZGxlcjxIVE1MVGV4dEFyZWFFbGVtZW50PiA9IChldnQpID0+IHtcbiAgICAgIHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQgPSBldnQudGFyZ2V0LnZhbHVlO1xuICAgICAgb25DaGFuZ2UoZXZ0KTtcbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlRm9jdXM6IEZvY3VzRXZlbnRIYW5kbGVyPEhUTUxUZXh0QXJlYUVsZW1lbnQ+ID0gKGV2dCkgPT4ge1xuICAgICAgc2V0SXNDb2xsYXBzZWQoZmFsc2UpO1xuICAgICAgb25Gb2N1cz8uKGV2dCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZUJsdXI6IEZvY3VzRXZlbnRIYW5kbGVyPEhUTUxUZXh0QXJlYUVsZW1lbnQ+ID0gKGV2dCkgPT4ge1xuICAgICAgaWYgKHZhbHVlICE9PSB1c2VyVHlwZWRRdWVyeS5jdXJyZW50KSB7XG4gICAgICAgIG9uQ29tcGxldGU/Lih7IHZhbHVlOiB1c2VyVHlwZWRRdWVyeS5jdXJyZW50LCBldnQgfSk7XG4gICAgICB9XG4gICAgICBvbkJsdXI/LihldnQpO1xuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVTZW5kQnV0dG9uQ2xpY2sgPSAoZXZ0OiBNb3VzZUV2ZW50PEhUTUxCdXR0b25FbGVtZW50PikgPT4ge1xuICAgICAgbWVyZ2VkU2VuZEJ1dHRvblByb3BzLm9uQ2xpY2s/LihldnQpO1xuICAgICAgY2xvc2VBdXRvY29tcGxldGVMaXN0KCk7XG4gICAgICBpZiAoaXNOYXZCYXJWYXJpYW50KSB7XG4gICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVQcmV2ZW50Rm9jdXMgPSAoZXZ0OiBSZWFjdC5Qb2ludGVyRXZlbnQpID0+IHtcbiAgICAgIC8vIFByZXZlbnQgdGhlIHRleHRhcmVhIGZyb20gYmVpbmcgdW5mb2N1c2VkXG4gICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlT25Db250YWluZXJQb2ludGVyRG93biA9IChldnQ6IFJlYWN0LlBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgLy8gRm9jdXMgdGV4dGFyZWEgd2hlbiBjbGlja2luZyBvbiB0aGUgY29udGFpbmVyIG9ubHlcbiAgICAgIGlmIChldnQudGFyZ2V0ID09PSBldnQuY3VycmVudFRhcmdldCkge1xuICAgICAgICB0ZXh0QXJlYVJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3Qgc2VsZWN0ZWRMaXN0SXRlbSA9XG4gICAgICBzZWxlY3RlZEluZGV4ICE9PSAtMSA/IGZsYXR0ZW5lZExpc3RJdGVtc1tzZWxlY3RlZEluZGV4XSA6IG51bGw7XG5cbiAgICBjb25zdCBlbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50RWxtID0gZW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudCA/IChcbiAgICAgIDxTdHlsZWRFbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50Q29udGFpbmVyXG4gICAgICAgIGlzTmF2QmFyVmFyaWFudD17aXNOYXZCYXJWYXJpYW50fVxuICAgICAgPlxuICAgICAgICA8VGV4dCBjb2xvcj1cInRlcnRpYXJ5XCI+e2VtcHR5U3RhdGVUb3BSaWdodENvbnRlbnR9PC9UZXh0PlxuICAgICAgPC9TdHlsZWRFbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50Q29udGFpbmVyPlxuICAgICkgOiBudWxsO1xuXG4gICAgY29uc3QgY2xlYXJCdXR0b25FbG0gPSB2YWx1ZSA/IChcbiAgICAgIDxTdHlsZWRDbGVhckJ1dHRvblxuICAgICAgICBzaXplPVwic1wiXG4gICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgaWNvbj1cIngtY2lyY2xlLWZpbGxlZFwiXG4gICAgICAgIGFyaWEtbGFiZWw9e2NsZWFyQnV0dG9uQXJpYUxhYmVsfVxuICAgICAgICBpc05hdkJhclZhcmlhbnQ9e2lzTmF2QmFyVmFyaWFudH1cbiAgICAgICAgb25Qb2ludGVyRG93bj17aGFuZGxlUHJldmVudEZvY3VzfVxuICAgICAgICBvbkNsaWNrPXtvbkNsZWFyfVxuICAgICAgLz5cbiAgICApIDogKFxuICAgICAgZW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudEVsbVxuICAgICk7XG5cbiAgICBjb25zdCBoaW50RWxtID0gISFoaW50ICYmIChcbiAgICAgIDxJbmxpbmUgYWxpZ25JdGVtcz1cImNlbnRlclwiPlxuICAgICAgICA8VGV4dCBzaXplPVwic1wiIGNvbG9yPVwidGVydGlhcnlcIj5cbiAgICAgICAgICB7aGludH1cbiAgICAgICAgPC9UZXh0PlxuICAgICAgPC9JbmxpbmU+XG4gICAgKTtcblxuICAgIGNvbnN0IGJvdHRvbVRvb2xiYXJFbG0gPSAoYm90dG9tVG9vbGJhcj8ucmlnaHRDb250ZW50IHx8XG4gICAgICBib3R0b21Ub29sYmFyPy5sZWZ0Q29udGVudCB8fFxuICAgICAgISFzZW5kQnV0dG9uUHJvcHMpICYmXG4gICAgICAhaXNDb2xsYXBzZWQgJiYgKFxuICAgICAgICA8PlxuICAgICAgICAgIHtib3R0b21Ub29sYmFyPy5sZWZ0Q29udGVudCAmJiAoXG4gICAgICAgICAgICA8U3R5bGVkU2xvdD57Ym90dG9tVG9vbGJhci5sZWZ0Q29udGVudH08L1N0eWxlZFNsb3Q+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8U3R5bGVkU2xvdCBkYXRhLWUyZS10ZXN0LWlkPVwiYm90dG9tVG9vbGJhclwiIHNpZGU9XCJyaWdodFwiPlxuICAgICAgICAgICAgPElubGluZSBzcGFjZT1cInhzXCIgdkFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAgICAgICAge2JvdHRvbVRvb2xiYXI/LnJpZ2h0Q29udGVudH1cbiAgICAgICAgICAgICAge3NlbmRCdXR0b25Qcm9wcyAmJiAoXG4gICAgICAgICAgICAgICAgPFN1YlRoZW1lUHJvdmlkZXIgbmFtZT17dmFyaWFudH0+XG4gICAgICAgICAgICAgICAgICA8Um91bmRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgYXJpYUF0dHJpYnV0ZXM9e3tcbiAgICAgICAgICAgICAgICAgICAgICBcImFyaWEtbGFiZWxcIjogaXNQcm9jZXNzaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFwiUHJvY2Vzc2luZyBxdWVyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFwiU3VibWl0IHF1ZXJ5XCIsXG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIHsuLi5tZXJnZWRTZW5kQnV0dG9uUHJvcHN9XG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXttZXJnZWRTZW5kQnV0dG9uUHJvcHMuZGlzYWJsZWQgPz8gIXZhbHVlfVxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVTZW5kQnV0dG9uQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlckRvd249e2hhbmRsZVByZXZlbnRGb2N1c31cbiAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICBpY29uPXtcbiAgICAgICAgICAgICAgICAgICAgICBpc1Byb2Nlc3NpbmcgPyBcInN0b3AtZmlsbGVkXCIgOiBtZXJnZWRTZW5kQnV0dG9uUHJvcHMuaWNvblxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvU3ViVGhlbWVQcm92aWRlcj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvSW5saW5lPlxuICAgICAgICAgIDwvU3R5bGVkU2xvdD5cbiAgICAgICAgPC8+XG4gICAgICApO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBkYXRhLWUyZS10ZXN0LWlkPXtkYXRhRTJlVGVzdElkfVxuICAgICAgICAgIGRhdGEtZHMtaWQ9XCJQcm9tcHRJbnB1dFwiXG4gICAgICAgICAgcmVmPXtjb250YWluZXJSZWZ9XG4gICAgICAgICAgLy8gVHJhbnNsYXRpb24gZGlzYWJsZWQgZm9yIGNvbnNpc3RlbmN5IHdpdGggdGhlIGF1dG9jb21wbGV0ZSBsaXN0XG4gICAgICAgICAgdHJhbnNsYXRlPVwibm9cIlxuICAgICAgICA+XG4gICAgICAgICAgPFN0YWNrIHNwYWNlPVwic1wiPlxuICAgICAgICAgICAgPEFuaW1hdGVkQm9yZGVyXG4gICAgICAgICAgICAgIHNraXBBbmltYXRpb249e3NraXBBSUFuaW1hdGlvbiB8fCB2YXJpYW50ICE9PSBcImFpXCJ9XG4gICAgICAgICAgICAgIHJhZGl1cz17MTJ9XG4gICAgICAgICAgICAgIGl0ZXJhdGlvbnM9ezF9XG4gICAgICAgICAgICAgIHRoaWNrbmVzcz17Mn1cbiAgICAgICAgICAgICAgaGlkZUNoaWxkQm9yZGVyXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxTdWJUaGVtZVByb3ZpZGVyIG5hbWU9e3ZhcmlhbnR9PlxuICAgICAgICAgICAgICAgIDxDdXN0b21Db250YWluZXJcbiAgICAgICAgICAgICAgICAgIGVsZXZhdGlvbj17MH1cbiAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1cz17aXNDb2xsYXBzZWQgPyBcInhzXCIgOiBcIm1cIn1cbiAgICAgICAgICAgICAgICAgIGhpZGVCb3JkZXI9e2lzQ29sbGFwc2VkfVxuICAgICAgICAgICAgICAgICAgaGFzU2hhZG93PXshaXNOYXZCYXJWYXJpYW50fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTdWJUaGVtZVByb3ZpZGVyIG5hbWU9XCJ1bnNldFwiPlxuICAgICAgICAgICAgICAgICAgICA8U3R5bGVkU2xvdHNDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICByZWY9e3RleHRBcmVhQ29udGFpbmVyUmVmfVxuICAgICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlckRvd249e2hhbmRsZU9uQ29udGFpbmVyUG9pbnRlckRvd259XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U3R5bGVkVGV4dEFyZWFDb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7bGVmdEljb24gJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8U3R5bGVkTGVmdEljb25Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9e2xlZnRJY29ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJ0ZXJ0aWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3R5bGVkTGVmdEljb25Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPFByb21wdFRleHRBcmVhXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhRTJlVGVzdElkPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhRTJlVGVzdElkID8gYCR7ZGF0YUUyZVRlc3RJZH0taW5wdXRgIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e3RleHRBcmVhUmVmfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpc05hdkJhclZhcmlhbnQ9e2lzTmF2QmFyVmFyaWFudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRMaXN0SXRlbT17c2VsZWN0ZWRMaXN0SXRlbX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNBdXRvY29tcGxldGVMaXN0T3Blbj17aXNBdXRvY29tcGxldGVMaXN0T3Blbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNDb2xsYXBzZWQ9e2lzQ29sbGFwc2VkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNMZWZ0SWNvbj17ISFsZWZ0SWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25Gb2N1cz17aGFuZGxlRm9jdXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3dufVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtjbGVhckJ1dHRvbkVsbX1cbiAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZFRleHRBcmVhQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgIHtib3R0b21Ub29sYmFyRWxtfVxuICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZFNsb3RzQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPC9TdWJUaGVtZVByb3ZpZGVyPlxuICAgICAgICAgICAgICAgIDwvQ3VzdG9tQ29udGFpbmVyPlxuICAgICAgICAgICAgICA8L1N1YlRoZW1lUHJvdmlkZXI+XG4gICAgICAgICAgICA8L0FuaW1hdGVkQm9yZGVyPlxuICAgICAgICAgICAge2hpbnRFbG19XG4gICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPEF1dG9jb21wbGV0ZUxpc3RcbiAgICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICBhdXRvY29tcGxldGVMaXN0SXRlbXM9e2F1dG9jb21wbGV0ZUxpc3RJdGVtc31cbiAgICAgICAgICB0cmlnZ2VyUmVmPXt0ZXh0QXJlYUNvbnRhaW5lclJlZn1cbiAgICAgICAgICBzZWxlY3RlZExpc3RJdGVtPXtzZWxlY3RlZExpc3RJdGVtfVxuICAgICAgICAgIGlzT3Blbj17aXNBdXRvY29tcGxldGVMaXN0T3Blbn1cbiAgICAgICAgICBhdXRvY29tcGxldGVMaXN0Rm9vdGVyPXthdXRvY29tcGxldGVMaXN0Rm9vdGVyfVxuICAgICAgICAgIHBvcnRhbENvbnRhaW5lcj17cG9ydGFsQ29udGFpbmVyfVxuICAgICAgICAgIG9uTGlzdEl0ZW1DbGljaz17aGFuZGxlTGlzdEl0ZW1DbGlja31cbiAgICAgICAgLz5cbiAgICAgIDwvPlxuICAgICk7XG4gIH1cbik7XG5cbmNvbnN0IEN1c3RvbUJ1dHRvbiA9IHN0eWxlZChCdXR0b24pKCh7IHRoZW1lIH0pID0+ICh7XG4gIGJvcmRlclJhZGl1czogdGhlbWUudmFyaWFibGVzLnNpemUuYm9yZGVyUmFkaXVzLmwsXG59KSk7XG5cbi8vIG5lZWQgdG8gc2ltcGxpZnkgdGhpcyB0eXBlIGZvciByZXVzZVxuY29uc3QgU3VnZ2VzdGlvbkJ1dHRvbiA9IGZvcndhcmRSZWYoXG4gIDxDIGV4dGVuZHMgUmVhY3QuRWxlbWVudFR5cGUgPSBcImJ1dHRvblwiPihcbiAgICBwcm9wczogUG9seW1vcnBoaWNDb21wb25lbnRQcm9wc1dpdGhSZWY8XG4gICAgICBDLFxuICAgICAgT21pdDxCdXR0b25Qcm9wcywgXCJ2YXJpYW50XCIgfCBcInNpemVcIiB8IFwicmVmXCI+XG4gICAgPixcbiAgICByZWY6IFBvbHltb3JwaGljUmVmPEM+XG4gICkgPT4gPEN1c3RvbUJ1dHRvbiB7Li4ucHJvcHN9IHZhcmlhbnQ9XCJzZWNvbmRhcnlcIiBzaXplPVwic1wiIHJlZj17cmVmfSAvPlxuKTtcblxuZXhwb3J0IGNvbnN0IFByb21wdElucHV0ID0gT2JqZWN0LmFzc2lnbihQcm9tcHRJbnB1dENvbXBvbmVudCwge1xuICBTdWdnZXN0aW9uQnV0dG9uLFxufSkgYXMgdHlwZW9mIFByb21wdElucHV0Q29tcG9uZW50ICYge1xuICBTdWdnZXN0aW9uQnV0dG9uOiB0eXBlb2YgU3VnZ2VzdGlvbkJ1dHRvbjtcbn07XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd21CcUIifQ== */"),PromptInput=Object.assign(PromptInputComponent,{SuggestionButton:(0,_react.forwardRef)((props,ref)=>_react.default.createElement(CustomButton,{...props,variant:"secondary",size:"s",ref:ref}))});
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"PromptInput",{enumerable:!0,get:function(){return PromptInput}});const _interop_require_default=require("@swc/helpers/_/_interop_require_default"),_react=/*#__PURE__*/require("@swc/helpers/_/_interop_require_wildcard")._(require("react")),_styled=/*#__PURE__*/_interop_require_default._(require("@emotion/styled")),_PromptTextArea=require("./PromptTextArea"),_Container=require("../Container"),_AutocompleteList=require("./AutocompleteList"),_CategoryList=require("./CategoryList"),_Text=require("../Typography/Text"),_Button=require("../Button/Button"),_Inline=require("../Inline/Inline"),_RoundButton=require("../RoundButton/RoundButton"),_PictogramButton=require("../PictogramButton/PictogramButton"),_Stack=require("../Stack/Stack"),_useOutsideClick=require("../../shared/useOutsideClick"),_Icon=require("../Icon/Icon"),_SubThemeProvider=require("../SubThemeProvider/SubThemeProvider"),_AnimatedBorder=require("../Utilities/AnimatedBorder/AnimatedBorder"),_PromptInputHeader=require("./PromptInputHeader"),CustomContainer=(0,_styled.default)(_Container.Container,{target:"e1fprshj0",label:"CustomContainer"})(({theme,hideBorder,hasShadow})=>({border:`1px solid ${theme.values.color.border.primary.default}`,...hasShadow&&{boxShadow:theme.values.shadow.defaultRing,transitionProperty:"box-shadow, border-color, outline-color",transitionDuration:theme.variables.animation.promptInput.focus.duration,transitionTimingFunction:theme.variables.animation.promptInput.focus.timingFunction},...hideBorder&&{borderColor:"transparent"},cursor:"text",outlineColor:"transparent","&:has(textarea:focus-visible)":{outlineWidth:1,outlineStyle:"solid",outlineOffset:-1,boxShadow:theme.values.shadow.focusRing,outlineColor:theme.values.color.border.accent.default}}),"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvUHJvbXB0SW5wdXQvUHJvbXB0SW5wdXQudHN4Iiwic291cmNlcyI6WyJzcmMvY29tcG9uZW50cy9Qcm9tcHRJbnB1dC9Qcm9tcHRJbnB1dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBSZWFjdEVsZW1lbnQsXG4gIENoYW5nZUV2ZW50SGFuZGxlcixcbiAgS2V5Ym9hcmRFdmVudEhhbmRsZXIsXG4gIFJlZk9iamVjdCxcbiAgRm9jdXNFdmVudEhhbmRsZXIsXG4gIFN5bnRoZXRpY0V2ZW50LFxuICBNb3VzZUV2ZW50LFxufSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IFJlYWN0LCB7XG4gIHVzZVJlZixcbiAgdXNlTWVtbyxcbiAgdXNlU3RhdGUsXG4gIHVzZUVmZmVjdCxcbiAgdXNlQ2FsbGJhY2ssXG4gIGZvcndhcmRSZWYsXG59IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5cbmltcG9ydCB0eXBlIHsgUHJvbXB0VGV4dEFyZWFQcm9wcyB9IGZyb20gXCIuL1Byb21wdFRleHRBcmVhXCI7XG5pbXBvcnQge1xuICBQcm9tcHRUZXh0QXJlYSxcbiAgZ2V0UGFkZGluZ0hvcml6b250YWwsXG4gIGdldFBhZGRpbmdWZXJ0aWNhbCxcbn0gZnJvbSBcIi4vUHJvbXB0VGV4dEFyZWFcIjtcbmltcG9ydCB7IENvbnRhaW5lciB9IGZyb20gXCIuLi9Db250YWluZXJcIjtcbmltcG9ydCB0eXBlIHsgQXV0b2NvbXBsZXRlTGlzdFByb3BzIH0gZnJvbSBcIi4vQXV0b2NvbXBsZXRlTGlzdFwiO1xuXG5pbXBvcnQgeyBBdXRvY29tcGxldGVMaXN0IH0gZnJvbSBcIi4vQXV0b2NvbXBsZXRlTGlzdFwiO1xuaW1wb3J0IHtcbiAgZ2V0TGlzdEl0ZW1JZCxcbiAgdHlwZSBGbGF0dGVuZWRMaXN0SXRlbSxcbiAgdHlwZSBMaXN0SXRlbVZhbHVlLFxufSBmcm9tIFwiLi9DYXRlZ29yeUxpc3RcIjtcbmltcG9ydCB7IFRleHQgfSBmcm9tIFwiLi4vVHlwb2dyYXBoeS9UZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24sIHR5cGUgQnV0dG9uUHJvcHMgfSBmcm9tIFwiLi4vQnV0dG9uL0J1dHRvblwiO1xuaW1wb3J0IHR5cGUge1xuICBQb2x5bW9ycGhpY1JlZixcbiAgUG9seW1vcnBoaWNDb21wb25lbnRQcm9wc1dpdGhSZWYsXG4gIEJvcmRlclJhZGl1cyxcbn0gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5pbXBvcnQgeyBJbmxpbmUgfSBmcm9tIFwiLi4vSW5saW5lL0lubGluZVwiO1xuaW1wb3J0IHR5cGUgeyBSb3VuZEJ1dHRvblByb3BzIH0gZnJvbSBcIi4uL1JvdW5kQnV0dG9uL1JvdW5kQnV0dG9uXCI7XG5pbXBvcnQgeyBSb3VuZEJ1dHRvbiB9IGZyb20gXCIuLi9Sb3VuZEJ1dHRvbi9Sb3VuZEJ1dHRvblwiO1xuaW1wb3J0IHR5cGUgeyBQaWN0b2dyYW1CdXR0b25Qcm9wcyB9IGZyb20gXCIuLi9QaWN0b2dyYW1CdXR0b24vUGljdG9ncmFtQnV0dG9uXCI7XG5pbXBvcnQgeyBQaWN0b2dyYW1CdXR0b24gfSBmcm9tIFwiLi4vUGljdG9ncmFtQnV0dG9uL1BpY3RvZ3JhbUJ1dHRvblwiO1xuaW1wb3J0IHsgU3RhY2sgfSBmcm9tIFwiLi4vU3RhY2svU3RhY2tcIjtcbmltcG9ydCB7IHVzZU91dHNpZGVDbGljayB9IGZyb20gXCIuLi8uLi9zaGFyZWQvdXNlT3V0c2lkZUNsaWNrXCI7XG5pbXBvcnQgdHlwZSB7IEljb25OYW1lIH0gZnJvbSBcIi4uL0ljb24vSWNvblwiO1xuaW1wb3J0IHsgSWNvbiB9IGZyb20gXCIuLi9JY29uL0ljb25cIjtcbmltcG9ydCB7IFN1YlRoZW1lUHJvdmlkZXIgfSBmcm9tIFwiLi4vU3ViVGhlbWVQcm92aWRlci9TdWJUaGVtZVByb3ZpZGVyXCI7XG5pbXBvcnQgeyBBbmltYXRlZEJvcmRlciB9IGZyb20gXCIuLi9VdGlsaXRpZXMvQW5pbWF0ZWRCb3JkZXIvQW5pbWF0ZWRCb3JkZXJcIjtcbmltcG9ydCB7XG4gIFByb21wdElucHV0SGVhZGVyLFxuICB0eXBlIEJhc2VQcm9tcHRJbnB1dEhlYWRlclByb3BzLFxufSBmcm9tIFwiLi9Qcm9tcHRJbnB1dEhlYWRlclwiO1xuXG5jb25zdCBDdXN0b21Db250YWluZXIgPSBzdHlsZWQoQ29udGFpbmVyKTx7XG4gIGhpZGVCb3JkZXI6IGJvb2xlYW47XG4gIGhhc1NoYWRvdzogYm9vbGVhbjtcbn0+KCh7IHRoZW1lLCBoaWRlQm9yZGVyLCBoYXNTaGFkb3cgfSkgPT4gKHtcbiAgYm9yZGVyOiBgMXB4IHNvbGlkICR7dGhlbWUudmFsdWVzLmNvbG9yLmJvcmRlci5wcmltYXJ5LmRlZmF1bHR9YCxcbiAgLi4uKGhhc1NoYWRvdyAmJiB7XG4gICAgYm94U2hhZG93OiB0aGVtZS52YWx1ZXMuc2hhZG93LmRlZmF1bHRSaW5nLFxuICAgIHRyYW5zaXRpb25Qcm9wZXJ0eTogXCJib3gtc2hhZG93LCBib3JkZXItY29sb3IsIG91dGxpbmUtY29sb3JcIixcbiAgICB0cmFuc2l0aW9uRHVyYXRpb246IHRoZW1lLnZhcmlhYmxlcy5hbmltYXRpb24ucHJvbXB0SW5wdXQuZm9jdXMuZHVyYXRpb24sXG4gICAgdHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uOlxuICAgICAgdGhlbWUudmFyaWFibGVzLmFuaW1hdGlvbi5wcm9tcHRJbnB1dC5mb2N1cy50aW1pbmdGdW5jdGlvbixcbiAgfSksXG4gIC4uLihoaWRlQm9yZGVyICYmIHtcbiAgICBib3JkZXJDb2xvcjogXCJ0cmFuc3BhcmVudFwiLFxuICB9KSxcbiAgY3Vyc29yOiBcInRleHRcIixcbiAgb3V0bGluZUNvbG9yOiBcInRyYW5zcGFyZW50XCIsXG4gIFtgJjpoYXModGV4dGFyZWE6Zm9jdXMtdmlzaWJsZSlgXToge1xuICAgIG91dGxpbmVXaWR0aDogMSxcbiAgICBvdXRsaW5lU3R5bGU6IFwic29saWRcIixcbiAgICBvdXRsaW5lT2Zmc2V0OiAtMSxcbiAgICBib3hTaGFkb3c6IHRoZW1lLnZhbHVlcy5zaGFkb3cuZm9jdXNSaW5nLFxuICAgIG91dGxpbmVDb2xvcjogdGhlbWUudmFsdWVzLmNvbG9yLmJvcmRlci5hY2NlbnQuZGVmYXVsdCxcbiAgfSxcbn0pKTtcblxuY29uc3QgU3R5bGVkVGV4dEFyZWFDb250YWluZXIgPSBzdHlsZWQuZGl2KHtcbiAgYm9yZGVyUmFkaXVzOiBcImluaGVyaXRcIixcbiAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgd2lkdGg6IFwiMTAwJVwiLFxufSk7XG5cbmNvbnN0IFN0eWxlZExlZnRJY29uQ29udGFpbmVyID0gc3R5bGVkLmRpdigoeyB0aGVtZSB9KSA9PiAoe1xuICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICB0b3A6IGdldFBhZGRpbmdWZXJ0aWNhbCh0aGVtZSksXG4gIGxlZnQ6IGdldFBhZGRpbmdIb3Jpem9udGFsKHRoZW1lKSxcbn0pKTtcblxudHlwZSBTdHlsZWRFbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50Q29udGFpbmVyUHJvcHMgPSBQaWNrPFxuICBQcm9tcHRJbnB1dFByb3BzLFxuICBcImlzTmF2QmFyVmFyaWFudFwiXG4+O1xuXG5jb25zdCBTdHlsZWRFbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50Q29udGFpbmVyID1cbiAgc3R5bGVkLmRpdjxTdHlsZWRFbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50Q29udGFpbmVyUHJvcHM+KFxuICAgICh7IHRoZW1lLCBpc05hdkJhclZhcmlhbnQgfSkgPT4gKHtcbiAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICB0b3A6IGlzTmF2QmFyVmFyaWFudFxuICAgICAgICA/IHRoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcueHhzXG4gICAgICAgIDogZ2V0UGFkZGluZ1ZlcnRpY2FsKHRoZW1lKSxcbiAgICAgIHJpZ2h0OiBnZXRQYWRkaW5nSG9yaXpvbnRhbCh0aGVtZSksXG4gICAgICB1c2VyU2VsZWN0OiBcIm5vbmVcIixcbiAgICAgIHBvaW50ZXJFdmVudHM6IFwibm9uZVwiLFxuICAgIH0pXG4gICk7XG5cbnR5cGUgU3R5bGVkQ2xlYXJCdXR0b25Qcm9wcyA9IFBpY3RvZ3JhbUJ1dHRvblByb3BzICZcbiAgUGljazxQcm9tcHRJbnB1dFByb3BzLCBcImlzTmF2QmFyVmFyaWFudFwiPjtcblxuY29uc3QgU3R5bGVkQ2xlYXJCdXR0b24gPSBzdHlsZWQoUGljdG9ncmFtQnV0dG9uKTxTdHlsZWRDbGVhckJ1dHRvblByb3BzPihcbiAgKHsgdGhlbWUsIGlzTmF2QmFyVmFyaWFudCB9KSA9PiAoe1xuICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgcmlnaHQ6IHRoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcucyxcbiAgICB0b3A6IGlzTmF2QmFyVmFyaWFudCA/IDAgOiB0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnMsXG4gIH0pXG4pO1xuXG5jb25zdCBTdHlsZWRTbG90c0NvbnRhaW5lciA9IHN0eWxlZC5kaXYoe1xuICBkaXNwbGF5OiBcImZsZXhcIixcbiAgZmxleFdyYXA6IFwid3JhcFwiLFxuICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxufSk7XG5cbi8vIEl0IG5lZWRzIG1hcmdpbiBkdWUgdG8gZW1wdHkgY2xpY2thYmxlIHNwYWNlIHRoYXQgZm9jdXNlcyB0aGUgdGV4dGFyZWFcbi8vIFNsb3RzIHNob3VsZCBub3QgYmUgaW4gdGhlIGRpdiwgYmVjYXVzZSBhcmVhIGJldHdlZW4gc2hvdWxkIGJlIGNsaWNrYWJsZSBhbHNvXG50eXBlIFNsb3RQcm9wcyA9IHtcbiAgc2lkZT86IFwicmlnaHRcIjtcbn07XG5jb25zdCBTdHlsZWRTbG90ID0gc3R5bGVkLmRpdjxTbG90UHJvcHM+KCh7IHRoZW1lLCBzaWRlIH0pID0+ICh7XG4gIG1hcmdpbjogYDAgJHt0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnN9ICR7dGhlbWUudmFyaWFibGVzLnNpemUuc3BhY2luZy5zfWAsXG5cbiAgLi4uKHNpZGUgPT09IFwicmlnaHRcIiAmJiB7XG4gICAgbWFyZ2luTGVmdDogXCJhdXRvXCIsXG4gIH0pLFxufSkpO1xuXG50eXBlIFNlbmRCdXR0b25Qcm9wcyA9IE9taXQ8Um91bmRCdXR0b25Qcm9wcywgXCJpY29uXCIgfCBcInZhcmlhbnRcIj4gJiB7XG4gIGljb24/OiBcImFycm93LXVwXCIgfCBcInNlYXJjaFwiIHwgXCJhcnJvdy1yaWdodFwiIHwgXCJ2b2ljZVwiO1xufTtcblxudHlwZSBCb3R0b21Ub29sYmFyQ29uZmlnID0ge1xuICAvKiogVG9vbGJhciBlbGVtZW50cyBiZWxvdyB0ZXh0IGFyZWEgKi9cbiAgbGVmdENvbnRlbnQ/OiBSZWFjdEVsZW1lbnQ7XG4gIHJpZ2h0Q29udGVudD86IFJlYWN0RWxlbWVudDtcbn07XG5cbmV4cG9ydCB0eXBlIFByb21wdElucHV0UHJvcHMgPSB7XG4gIFwiZGF0YS1lMmUtdGVzdC1pZFwiPzogc3RyaW5nO1xuICBoZWFkZXI/OiBCYXNlUHJvbXB0SW5wdXRIZWFkZXJQcm9wcztcbiAgdmFyaWFudD86IFwiYWlcIjtcbiAgc2tpcEFJQW5pbWF0aW9uPzogYm9vbGVhbjtcbiAgYm90dG9tVG9vbGJhcj86IEJvdHRvbVRvb2xiYXJDb25maWc7XG4gIHNlbmRCdXR0b25Qcm9wcz86IFNlbmRCdXR0b25Qcm9wcztcbiAgLyoqIEN1cnJlbnRseSBzaG93cyBzZW5kIGJ1dHRvbiBwcm9jZXNzaW5nIHN0YXRlICAqL1xuICBpc1Byb2Nlc3Npbmc/OiBib29sZWFuO1xuICBjbGVhckJ1dHRvbkFyaWFMYWJlbD86IHN0cmluZztcbiAgaGludD86IFJlYWN0RWxlbWVudDtcbiAgLyoqIFNob3dzIGluIHRoZSBjbGVhciBidXR0b24gc3BhY2UgaW4gZW1wdHkgc3RhdGUgKi9cbiAgZW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudD86IFJlYWN0RWxlbWVudDtcbiAgb25DbGVhcjogKCkgPT4gdm9pZDtcbiAgLyoqIENhbGxlZCB3aGVuIHVzZXIgc2VsZWN0cyAob3IgcmVqZWN0cykgYSBsaXN0IGl0ZW0gZnJvbSBhdXRvY29tcGxldGUgbGlzdCAqL1xuICBvbkNvbXBsZXRlPzogKHtcbiAgICB2YWx1ZSxcbiAgICBjYXRlZ29yeSxcbiAgICBldnQsXG4gICAgaW5kZXgsXG4gIH06IHtcbiAgICB2YWx1ZTogTGlzdEl0ZW1WYWx1ZTtcbiAgICBjYXRlZ29yeT86IHN0cmluZztcbiAgICBldnQ/OiBTeW50aGV0aWNFdmVudDtcbiAgICBpbmRleD86IG51bWJlcjtcbiAgfSkgPT4gdm9pZDtcbiAgLyoqIENhbGxlZCBvbiBFbnRlciBrZXkgdG8gc3VibWl0IHRoZSBmb3JtICAqL1xuICBvbkVudGVyS2V5OiAoKSA9PiB2b2lkO1xuICAvKiogUmVuZGVycyBhbiBpY29uIHRvIHRoZSBsZWZ0IGluc2lkZSB0aGUgdGV4dGFyZWEgKi9cbiAgbGVmdEljb24/OiBJY29uTmFtZTtcbn0gJiBPbWl0PFxuICBQcm9tcHRUZXh0QXJlYVByb3BzLFxuICBcImlzQ29sbGFwc2VkXCIgfCBcImlzQXV0b2NvbXBsZXRlTGlzdE9wZW5cIiB8IFwic2VsZWN0ZWRMaXN0SXRlbVwiIHwgXCJoYXNMZWZ0SWNvblwiXG4+ICZcbiAgUGljazxcbiAgICBBdXRvY29tcGxldGVMaXN0UHJvcHMsXG4gICAgXCJhdXRvY29tcGxldGVMaXN0SXRlbXNcIiB8IFwiYXV0b2NvbXBsZXRlTGlzdEZvb3RlclwiIHwgXCJwb3J0YWxDb250YWluZXJcIlxuICA+O1xuXG5jb25zdCBkZWZhdWx0U2VuZEJ1dHRvblByb3BzOiBTZW5kQnV0dG9uUHJvcHMgPSB7XG4gIHR5cGU6IFwic3VibWl0XCIgYXMgY29uc3QsXG4gIGljb246IFwiYXJyb3ctdXBcIiBhcyBjb25zdCxcbn07XG5cbmNvbnN0IFByb21wdElucHV0Q29tcG9uZW50ID0gZm9yd2FyZFJlZihcbiAgKFxuICAgIHtcbiAgICAgIFwiZGF0YS1lMmUtdGVzdC1pZFwiOiBkYXRhRTJlVGVzdElkLFxuICAgICAgbmFtZSxcbiAgICAgIGF1dG9jb21wbGV0ZUxpc3RJdGVtcyA9IFtdLFxuICAgICAgdmFsdWUsXG4gICAgICBib3R0b21Ub29sYmFyLFxuICAgICAgaXNQcm9jZXNzaW5nLFxuICAgICAgc2VuZEJ1dHRvblByb3BzLFxuICAgICAgYXV0b2NvbXBsZXRlTGlzdEZvb3RlcixcbiAgICAgIGNsZWFyQnV0dG9uQXJpYUxhYmVsID0gXCJDbGVhciBpbnB1dFwiLFxuICAgICAgaGludCxcbiAgICAgIGVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnQsXG4gICAgICBpc05hdkJhclZhcmlhbnQsXG4gICAgICBwb3J0YWxDb250YWluZXIsXG4gICAgICBsZWZ0SWNvbixcbiAgICAgIGhlYWRlcixcbiAgICAgIG9uQ2hhbmdlLFxuICAgICAgb25Db21wbGV0ZSxcbiAgICAgIG9uQ2xlYXIsXG4gICAgICBvbkVudGVyS2V5LFxuICAgICAgb25Gb2N1cyxcbiAgICAgIG9uQmx1cixcbiAgICAgIG9uS2V5RG93bixcbiAgICAgIHZhcmlhbnQsXG4gICAgICBza2lwQUlBbmltYXRpb24gPSBmYWxzZSxcbiAgICAgIC4uLnJlc3RcbiAgICB9OiBQcm9tcHRJbnB1dFByb3BzLFxuICAgIHJlZjogUmVmT2JqZWN0PEhUTUxUZXh0QXJlYUVsZW1lbnQ+XG4gICk6IFJlYWN0RWxlbWVudCA9PiB7XG4gICAgY29uc3QgY29udGFpbmVyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgICBjb25zdCB0ZXh0QXJlYUNvbnRhaW5lclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gICAgY29uc3QgaW50ZXJuYWxSZWYgPSB1c2VSZWY8SFRNTFRleHRBcmVhRWxlbWVudD4obnVsbCk7XG4gICAgY29uc3QgW3NlbGVjdGVkSW5kZXgsIHNldFNlbGVjdGVkSW5kZXhdID0gdXNlU3RhdGUoLTEpO1xuICAgIGNvbnN0IFtpc0NvbGxhcHNlZCwgc2V0SXNDb2xsYXBzZWRdID0gdXNlU3RhdGUoaXNOYXZCYXJWYXJpYW50KTtcbiAgICBjb25zdCB1c2VyVHlwZWRRdWVyeSA9IHVzZVJlZihcIlwiKTtcbiAgICBjb25zdCBbaXNBdXRvY29tcGxldGVMaXN0T3Blbiwgc2V0SXNBdXRvY29tcGxldGVMaXN0T3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgdGV4dEFyZWFSZWYgPSByZWYgfHwgaW50ZXJuYWxSZWY7XG5cbiAgICBjb25zdCBtZXJnZWRTZW5kQnV0dG9uUHJvcHMgPSB7XG4gICAgICAuLi5kZWZhdWx0U2VuZEJ1dHRvblByb3BzLFxuICAgICAgLi4uKHNlbmRCdXR0b25Qcm9wcyA/PyB7fSksXG4gICAgfTtcblxuICAgIHVzZU91dHNpZGVDbGljayhcbiAgICAgIGNvbnRhaW5lclJlZixcbiAgICAgIChldnQpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICFjb250YWluZXJSZWYuY3VycmVudD8uY29udGFpbnMoZXZ0LnRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgICAgICFwb3J0YWxDb250YWluZXI/LmNvbnRhaW5zKGV2dC50YXJnZXQgYXMgTm9kZSkgJiZcbiAgICAgICAgICBldnQudGFyZ2V0ICE9PSBudWxsXG4gICAgICAgICkge1xuICAgICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgIWlzQ29sbGFwc2VkICYmIGlzTmF2QmFyVmFyaWFudFxuICAgICk7XG5cbiAgICBjb25zdCBjbG9zZUF1dG9jb21wbGV0ZUxpc3QgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBzZXRJc0F1dG9jb21wbGV0ZUxpc3RPcGVuKGZhbHNlKTtcbiAgICAgIHNldFNlbGVjdGVkSW5kZXgoLTEpO1xuICAgIH0sIFtdKTtcblxuICAgIGNvbnN0IG9wZW5BdXRvY29tcGxldGVMaXN0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgaWYgKGF1dG9jb21wbGV0ZUxpc3RJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgc2V0SXNBdXRvY29tcGxldGVMaXN0T3Blbih0cnVlKTtcbiAgICAgICAgc2V0U2VsZWN0ZWRJbmRleCgtMSk7XG4gICAgICB9XG4gICAgfSwgW2F1dG9jb21wbGV0ZUxpc3RJdGVtc10pO1xuXG4gICAgY29uc3QgYWNjZXB0VGV4dFNlbGVjdGlvbiA9ICgpID0+IHtcbiAgICAgIHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQgPSB2YWx1ZTtcbiAgICAgIGlmIChcbiAgICAgICAgdGV4dEFyZWFSZWYuY3VycmVudC5zZWxlY3Rpb25TdGFydCAhPT0gdGV4dEFyZWFSZWYuY3VycmVudC5zZWxlY3Rpb25FbmRcbiAgICAgICkge1xuICAgICAgICB0ZXh0QXJlYVJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKHZhbHVlLmxlbmd0aCwgdmFsdWUubGVuZ3RoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmIChhdXRvY29tcGxldGVMaXN0SXRlbXMubGVuZ3RoICYmICFpc0NvbGxhcHNlZCkge1xuICAgICAgICBvcGVuQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2xvc2VBdXRvY29tcGxldGVMaXN0KCk7XG4gICAgICB9XG4gICAgfSwgW1xuICAgICAgYXV0b2NvbXBsZXRlTGlzdEl0ZW1zLFxuICAgICAgb3BlbkF1dG9jb21wbGV0ZUxpc3QsXG4gICAgICBjbG9zZUF1dG9jb21wbGV0ZUxpc3QsXG4gICAgICBpc0NvbGxhcHNlZCxcbiAgICBdKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAodmFsdWUgJiYgdmFsdWUgIT09IHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQgJiYgaXNBdXRvY29tcGxldGVMaXN0T3Blbikge1xuICAgICAgICB0ZXh0QXJlYVJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKFxuICAgICAgICAgIHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQubGVuZ3RoLFxuICAgICAgICAgIHZhbHVlLmxlbmd0aFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0sIFt2YWx1ZSwgdGV4dEFyZWFSZWYsIGlzQXV0b2NvbXBsZXRlTGlzdE9wZW5dKTtcblxuICAgIC8vIERldGVybWluZSB3aGVuIGZvY3VzIGxlYXZlcyB0aGUgY29udGFpbmVyIHRvIGNvbGxhcHNlIGl0XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGxldCBoYW5kbGVyOiAoZXZ0OiBGb2N1c0V2ZW50KSA9PiB2b2lkO1xuICAgICAgY29uc3QgY29udGFpbmVyID0gY29udGFpbmVyUmVmLmN1cnJlbnQ7XG5cbiAgICAgIGlmIChpc05hdkJhclZhcmlhbnQgJiYgY29udGFpbmVyKSB7XG4gICAgICAgIGhhbmRsZXIgPSAoZXZ0OiBGb2N1c0V2ZW50KSA9PiB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgIWNvbnRhaW5lclJlZi5jdXJyZW50Py5jb250YWlucyhldnQucmVsYXRlZFRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgICAgICAgIXBvcnRhbENvbnRhaW5lcj8uY29udGFpbnMoZXZ0LnJlbGF0ZWRUYXJnZXQgYXMgTm9kZSkgJiZcbiAgICAgICAgICAgIGV2dC5yZWxhdGVkVGFyZ2V0ICE9PSBudWxsXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBzZXRJc0NvbGxhcHNlZCh0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwiZm9jdXNvdXRcIiwgaGFuZGxlcik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImZvY3Vzb3V0XCIsIGhhbmRsZXIpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0sIFtpc05hdkJhclZhcmlhbnQsIGNvbnRhaW5lclJlZiwgcG9ydGFsQ29udGFpbmVyXSk7XG5cbiAgICBjb25zdCBmbGF0dGVuZWRMaXN0SXRlbXMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGNvbnN0IGxpc3Q6IEZsYXR0ZW5lZExpc3RJdGVtW10gPSBbXTtcblxuICAgICAgYXV0b2NvbXBsZXRlTGlzdEl0ZW1zLmZvckVhY2goKGxpc3RJdGVtKSA9PiB7XG4gICAgICAgIGxpc3RJdGVtLml0ZW1zLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgbGlzdC5wdXNoKHtcbiAgICAgICAgICAgIGNhdGVnb3J5OiBsaXN0SXRlbS5jYXRlZ29yeSxcbiAgICAgICAgICAgIGluZGV4SW5DYXRlZ29yeTogaW5kZXgsXG4gICAgICAgICAgICB2YWx1ZTogaXRlbS52YWx1ZSxcbiAgICAgICAgICAgIGlkOiBnZXRMaXN0SXRlbUlkKG5hbWUsIGxpc3RJdGVtLmNhdGVnb3J5LCBpbmRleCksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gbGlzdDtcbiAgICB9LCBbYXV0b2NvbXBsZXRlTGlzdEl0ZW1zLCBuYW1lXSk7XG5cbiAgICBjb25zdCBoYW5kbGVTZWxlY3RlZEluZGV4Q2hhbmdlID0gKGluZGV4OiBudW1iZXIsIGV2dD86IFN5bnRoZXRpY0V2ZW50KSA9PiB7XG4gICAgICBzZXRTZWxlY3RlZEluZGV4KGluZGV4KTtcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgY29uc3QgeyBjYXRlZ29yeSwgdmFsdWU6IGl0ZW1WYWx1ZSB9ID0gZmxhdHRlbmVkTGlzdEl0ZW1zW2luZGV4XTtcblxuICAgICAgICBvbkNvbXBsZXRlKHsgdmFsdWU6IGl0ZW1WYWx1ZSwgY2F0ZWdvcnksIGV2dCwgaW5kZXggfSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZUxpc3RJdGVtQ2xpY2sgPSAoXG4gICAgICBjYXRlZ29yeTogc3RyaW5nLFxuICAgICAgaW5kZXhJbkNhdGVnb3J5OiBudW1iZXIsXG4gICAgICBldnQ/OiBNb3VzZUV2ZW50XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IGZsYXR0ZW5lZExpc3RJdGVtcy5maW5kSW5kZXgoXG4gICAgICAgIChsaXN0SXRlbSkgPT5cbiAgICAgICAgICBsaXN0SXRlbS5jYXRlZ29yeSA9PT0gY2F0ZWdvcnkgJiZcbiAgICAgICAgICBsaXN0SXRlbS5pbmRleEluQ2F0ZWdvcnkgPT09IGluZGV4SW5DYXRlZ29yeVxuICAgICAgKTtcblxuICAgICAgaGFuZGxlU2VsZWN0ZWRJbmRleENoYW5nZShpbmRleCwgZXZ0KTtcbiAgICAgIGNsb3NlQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgaWYgKGlzTmF2QmFyVmFyaWFudCkge1xuICAgICAgICBzZXRJc0NvbGxhcHNlZCh0cnVlKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlS2V5RG93bjogS2V5Ym9hcmRFdmVudEhhbmRsZXI8SFRNTFRleHRBcmVhRWxlbWVudD4gPSAoZXZ0KSA9PiB7XG4gICAgICBpZiAoaXNBdXRvY29tcGxldGVMaXN0T3Blbikge1xuICAgICAgICBzd2l0Y2ggKGV2dC5rZXkpIHtcbiAgICAgICAgICBjYXNlIFwiRXNjYXBlXCI6XG4gICAgICAgICAgICBjbG9zZUF1dG9jb21wbGV0ZUxpc3QoKTtcbiAgICAgICAgICAgIG9uQ29tcGxldGUoeyB2YWx1ZTogdXNlclR5cGVkUXVlcnkuY3VycmVudCwgZXZ0IH0pO1xuICAgICAgICAgICAgaWYgKGlzTmF2QmFyVmFyaWFudCkge1xuICAgICAgICAgICAgICBzZXRJc0NvbGxhcHNlZCh0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgXCJFbnRlclwiOlxuICAgICAgICAgICAgaWYgKCFldnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgIGNsb3NlQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgICAgICAgICBhY2NlcHRUZXh0U2VsZWN0aW9uKCk7XG5cbiAgICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgb25FbnRlcktleT8uKCk7XG4gICAgICAgICAgICAgICAgaWYgKGlzTmF2QmFyVmFyaWFudCkge1xuICAgICAgICAgICAgICAgICAgc2V0SXNDb2xsYXBzZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFwiIFwiOlxuICAgICAgICAgICAgYWNjZXB0VGV4dFNlbGVjdGlvbigpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBcIkFycm93VXBcIjpcbiAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgaWYgKHNlbGVjdGVkSW5kZXggPiAtMSkge1xuICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RlZEluZGV4Q2hhbmdlKHNlbGVjdGVkSW5kZXggLSAxLCBldnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBcIkFycm93RG93blwiOlxuICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRJbmRleCA8IGZsYXR0ZW5lZExpc3RJdGVtcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgIGhhbmRsZVNlbGVjdGVkSW5kZXhDaGFuZ2Uoc2VsZWN0ZWRJbmRleCArIDEsIGV2dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2l0Y2ggKGV2dC5rZXkpIHtcbiAgICAgICAgICBjYXNlIFwiRXNjYXBlXCI6XG4gICAgICAgICAgICBvbkNsZWFyPy4oKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgXCJFbnRlclwiOlxuICAgICAgICAgICAgaWYgKCFldnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIG9uRW50ZXJLZXk/LigpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgb25LZXlEb3duPy4oZXZ0KTtcbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlOiBDaGFuZ2VFdmVudEhhbmRsZXI8SFRNTFRleHRBcmVhRWxlbWVudD4gPSAoZXZ0KSA9PiB7XG4gICAgICB1c2VyVHlwZWRRdWVyeS5jdXJyZW50ID0gZXZ0LnRhcmdldC52YWx1ZTtcbiAgICAgIG9uQ2hhbmdlKGV2dCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZUZvY3VzOiBGb2N1c0V2ZW50SGFuZGxlcjxIVE1MVGV4dEFyZWFFbGVtZW50PiA9IChldnQpID0+IHtcbiAgICAgIHNldElzQ29sbGFwc2VkKGZhbHNlKTtcbiAgICAgIG9uRm9jdXM/LihldnQpO1xuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVCbHVyOiBGb2N1c0V2ZW50SGFuZGxlcjxIVE1MVGV4dEFyZWFFbGVtZW50PiA9IChldnQpID0+IHtcbiAgICAgIGlmICh2YWx1ZSAhPT0gdXNlclR5cGVkUXVlcnkuY3VycmVudCkge1xuICAgICAgICBvbkNvbXBsZXRlPy4oeyB2YWx1ZTogdXNlclR5cGVkUXVlcnkuY3VycmVudCwgZXZ0IH0pO1xuICAgICAgfVxuICAgICAgb25CbHVyPy4oZXZ0KTtcbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlU2VuZEJ1dHRvbkNsaWNrID0gKGV2dDogTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4pID0+IHtcbiAgICAgIG1lcmdlZFNlbmRCdXR0b25Qcm9wcy5vbkNsaWNrPy4oZXZ0KTtcbiAgICAgIGNsb3NlQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgaWYgKGlzTmF2QmFyVmFyaWFudCkge1xuICAgICAgICBzZXRJc0NvbGxhcHNlZCh0cnVlKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlUHJldmVudEZvY3VzID0gKGV2dDogUmVhY3QuUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAvLyBQcmV2ZW50IHRoZSB0ZXh0YXJlYSBmcm9tIGJlaW5nIHVuZm9jdXNlZFxuICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZU9uQ29udGFpbmVyUG9pbnRlckRvd24gPSAoZXZ0OiBSZWFjdC5Qb2ludGVyRXZlbnQpID0+IHtcbiAgICAgIC8vIEZvY3VzIHRleHRhcmVhIHdoZW4gY2xpY2tpbmcgb24gdGhlIGNvbnRhaW5lciBvbmx5XG4gICAgICBpZiAoZXZ0LnRhcmdldCA9PT0gZXZ0LmN1cnJlbnRUYXJnZXQpIHtcbiAgICAgICAgdGV4dEFyZWFSZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IHNlbGVjdGVkTGlzdEl0ZW0gPVxuICAgICAgc2VsZWN0ZWRJbmRleCAhPT0gLTEgPyBmbGF0dGVuZWRMaXN0SXRlbXNbc2VsZWN0ZWRJbmRleF0gOiBudWxsO1xuXG4gICAgY29uc3QgZW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudEVsbSA9IGVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnQgPyAoXG4gICAgICA8U3R5bGVkRW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudENvbnRhaW5lclxuICAgICAgICBpc05hdkJhclZhcmlhbnQ9e2lzTmF2QmFyVmFyaWFudH1cbiAgICAgID5cbiAgICAgICAgPFRleHQgY29sb3I9XCJ0ZXJ0aWFyeVwiPntlbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50fTwvVGV4dD5cbiAgICAgIDwvU3R5bGVkRW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudENvbnRhaW5lcj5cbiAgICApIDogbnVsbDtcblxuICAgIGNvbnN0IGNsZWFyQnV0dG9uRWxtID0gdmFsdWUgPyAoXG4gICAgICA8U3R5bGVkQ2xlYXJCdXR0b25cbiAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgIGljb249XCJ4LWNpcmNsZS1maWxsZWRcIlxuICAgICAgICBhcmlhLWxhYmVsPXtjbGVhckJ1dHRvbkFyaWFMYWJlbH1cbiAgICAgICAgaXNOYXZCYXJWYXJpYW50PXtpc05hdkJhclZhcmlhbnR9XG4gICAgICAgIG9uUG9pbnRlckRvd249e2hhbmRsZVByZXZlbnRGb2N1c31cbiAgICAgICAgb25DbGljaz17b25DbGVhcn1cbiAgICAgIC8+XG4gICAgKSA6IChcbiAgICAgIGVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnRFbG1cbiAgICApO1xuXG4gICAgY29uc3QgaGludEVsbSA9ICEhaGludCAmJiAoXG4gICAgICA8SW5saW5lIGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAgPFRleHQgc2l6ZT1cInNcIiBjb2xvcj1cInRlcnRpYXJ5XCI+XG4gICAgICAgICAge2hpbnR9XG4gICAgICAgIDwvVGV4dD5cbiAgICAgIDwvSW5saW5lPlxuICAgICk7XG5cbiAgICBjb25zdCBib3R0b21Ub29sYmFyRWxtID0gKGJvdHRvbVRvb2xiYXI/LnJpZ2h0Q29udGVudCB8fFxuICAgICAgYm90dG9tVG9vbGJhcj8ubGVmdENvbnRlbnQgfHxcbiAgICAgICEhc2VuZEJ1dHRvblByb3BzKSAmJlxuICAgICAgIWlzQ29sbGFwc2VkICYmIChcbiAgICAgICAgPD5cbiAgICAgICAgICB7Ym90dG9tVG9vbGJhcj8ubGVmdENvbnRlbnQgJiYgKFxuICAgICAgICAgICAgPFN0eWxlZFNsb3Q+e2JvdHRvbVRvb2xiYXIubGVmdENvbnRlbnR9PC9TdHlsZWRTbG90PlxuICAgICAgICAgICl9XG4gICAgICAgICAgPFN0eWxlZFNsb3QgZGF0YS1lMmUtdGVzdC1pZD1cImJvdHRvbVRvb2xiYXJcIiBzaWRlPVwicmlnaHRcIj5cbiAgICAgICAgICAgIDxJbmxpbmUgc3BhY2U9XCJ4c1wiIHZBbGlnbkl0ZW1zPVwiY2VudGVyXCI+XG4gICAgICAgICAgICAgIHtib3R0b21Ub29sYmFyPy5yaWdodENvbnRlbnR9XG4gICAgICAgICAgICAgIHtzZW5kQnV0dG9uUHJvcHMgJiYgKFxuICAgICAgICAgICAgICAgIDxTdWJUaGVtZVByb3ZpZGVyIG5hbWU9e3ZhcmlhbnR9PlxuICAgICAgICAgICAgICAgICAgPFJvdW5kQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGFyaWFBdHRyaWJ1dGVzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgXCJhcmlhLWxhYmVsXCI6IGlzUHJvY2Vzc2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBcIlByb2Nlc3NpbmcgcXVlcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBcIlN1Ym1pdCBxdWVyeVwiLFxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICB7Li4ubWVyZ2VkU2VuZEJ1dHRvblByb3BzfVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17bWVyZ2VkU2VuZEJ1dHRvblByb3BzLmRpc2FibGVkID8/ICF2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlU2VuZEJ1dHRvbkNsaWNrfVxuICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJEb3duPXtoYW5kbGVQcmV2ZW50Rm9jdXN9XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgaWNvbj17XG4gICAgICAgICAgICAgICAgICAgICAgaXNQcm9jZXNzaW5nID8gXCJzdG9wLWZpbGxlZFwiIDogbWVyZ2VkU2VuZEJ1dHRvblByb3BzLmljb25cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1N1YlRoZW1lUHJvdmlkZXI+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0lubGluZT5cbiAgICAgICAgICA8L1N0eWxlZFNsb3Q+XG4gICAgICAgIDwvPlxuICAgICAgKTtcblxuICAgIGNvbnN0IGJvcmRlclJhZGl1c1NpemU6IEJvcmRlclJhZGl1cyA9IGlzQ29sbGFwc2VkID8gXCJ4c1wiIDogXCJtXCI7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGRhdGEtZTJlLXRlc3QtaWQ9e2RhdGFFMmVUZXN0SWR9XG4gICAgICAgICAgZGF0YS1kcy1pZD1cIlByb21wdElucHV0XCJcbiAgICAgICAgICByZWY9e2NvbnRhaW5lclJlZn1cbiAgICAgICAgICAvLyBUcmFuc2xhdGlvbiBkaXNhYmxlZCBmb3IgY29uc2lzdGVuY3kgd2l0aCB0aGUgYXV0b2NvbXBsZXRlIGxpc3RcbiAgICAgICAgICB0cmFuc2xhdGU9XCJub1wiXG4gICAgICAgID5cbiAgICAgICAgICA8U3RhY2sgc3BhY2U9XCJzXCI+XG4gICAgICAgICAgICA8QW5pbWF0ZWRCb3JkZXJcbiAgICAgICAgICAgICAgc2tpcEFuaW1hdGlvbj17c2tpcEFJQW5pbWF0aW9uIHx8IHZhcmlhbnQgIT09IFwiYWlcIn1cbiAgICAgICAgICAgICAgcmFkaXVzPXsxMn1cbiAgICAgICAgICAgICAgaXRlcmF0aW9ucz17MX1cbiAgICAgICAgICAgICAgdGhpY2tuZXNzPXsyfVxuICAgICAgICAgICAgICBoaWRlQ2hpbGRCb3JkZXJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPFN1YlRoZW1lUHJvdmlkZXIgbmFtZT17dmFyaWFudH0+XG4gICAgICAgICAgICAgICAgPEN1c3RvbUNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgZWxldmF0aW9uPXswfVxuICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzPXtib3JkZXJSYWRpdXNTaXplfVxuICAgICAgICAgICAgICAgICAgaGlkZUJvcmRlcj17aXNDb2xsYXBzZWR9XG4gICAgICAgICAgICAgICAgICBoYXNTaGFkb3c9eyFpc05hdkJhclZhcmlhbnR9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN1YlRoZW1lUHJvdmlkZXIgbmFtZT1cInVuc2V0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxTdHlsZWRTbG90c0NvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgIHJlZj17dGV4dEFyZWFDb250YWluZXJSZWZ9XG4gICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyRG93bj17aGFuZGxlT25Db250YWluZXJQb2ludGVyRG93bn1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtoZWFkZXIgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFByb21wdElucHV0SGVhZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5oZWFkZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1c1NpemU9e2JvcmRlclJhZGl1c1NpemV9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZFRleHRBcmVhQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAge2xlZnRJY29uICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZExlZnRJY29uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPXtsZWZ0SWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwidGVydGlhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZExlZnRJY29uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxQcm9tcHRUZXh0QXJlYVxuICAgICAgICAgICAgICAgICAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUUyZVRlc3RJZD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUUyZVRlc3RJZCA/IGAke2RhdGFFMmVUZXN0SWR9LWlucHV0YCA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXt0ZXh0QXJlYVJlZn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNOYXZCYXJWYXJpYW50PXtpc05hdkJhclZhcmlhbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkTGlzdEl0ZW09e3NlbGVjdGVkTGlzdEl0ZW19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzQXV0b2NvbXBsZXRlTGlzdE9wZW49e2lzQXV0b2NvbXBsZXRlTGlzdE9wZW59XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzQ29sbGFwc2VkPXtpc0NvbGxhcHNlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzTGVmdEljb249eyEhbGVmdEljb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uRm9jdXM9e2hhbmRsZUZvY3VzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93bn1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICB7Y2xlYXJCdXR0b25FbG19XG4gICAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWRUZXh0QXJlYUNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICB7Ym90dG9tVG9vbGJhckVsbX1cbiAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWRTbG90c0NvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvU3ViVGhlbWVQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L0N1c3RvbUNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9TdWJUaGVtZVByb3ZpZGVyPlxuICAgICAgICAgICAgPC9BbmltYXRlZEJvcmRlcj5cbiAgICAgICAgICAgIHtoaW50RWxtfVxuICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxBdXRvY29tcGxldGVMaXN0XG4gICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgYXV0b2NvbXBsZXRlTGlzdEl0ZW1zPXthdXRvY29tcGxldGVMaXN0SXRlbXN9XG4gICAgICAgICAgdHJpZ2dlclJlZj17dGV4dEFyZWFDb250YWluZXJSZWZ9XG4gICAgICAgICAgc2VsZWN0ZWRMaXN0SXRlbT17c2VsZWN0ZWRMaXN0SXRlbX1cbiAgICAgICAgICBpc09wZW49e2lzQXV0b2NvbXBsZXRlTGlzdE9wZW59XG4gICAgICAgICAgYXV0b2NvbXBsZXRlTGlzdEZvb3Rlcj17YXV0b2NvbXBsZXRlTGlzdEZvb3Rlcn1cbiAgICAgICAgICBwb3J0YWxDb250YWluZXI9e3BvcnRhbENvbnRhaW5lcn1cbiAgICAgICAgICBvbkxpc3RJdGVtQ2xpY2s9e2hhbmRsZUxpc3RJdGVtQ2xpY2t9XG4gICAgICAgIC8+XG4gICAgICA8Lz5cbiAgICApO1xuICB9XG4pO1xuXG5jb25zdCBDdXN0b21CdXR0b24gPSBzdHlsZWQoQnV0dG9uKSgoeyB0aGVtZSB9KSA9PiAoe1xuICBib3JkZXJSYWRpdXM6IHRoZW1lLnZhcmlhYmxlcy5zaXplLmJvcmRlclJhZGl1cy5sLFxufSkpO1xuXG4vLyBuZWVkIHRvIHNpbXBsaWZ5IHRoaXMgdHlwZSBmb3IgcmV1c2VcbmNvbnN0IFN1Z2dlc3Rpb25CdXR0b24gPSBmb3J3YXJkUmVmKFxuICA8QyBleHRlbmRzIFJlYWN0LkVsZW1lbnRUeXBlID0gXCJidXR0b25cIj4oXG4gICAgcHJvcHM6IFBvbHltb3JwaGljQ29tcG9uZW50UHJvcHNXaXRoUmVmPFxuICAgICAgQyxcbiAgICAgIE9taXQ8QnV0dG9uUHJvcHMsIFwidmFyaWFudFwiIHwgXCJzaXplXCIgfCBcInJlZlwiPlxuICAgID4sXG4gICAgcmVmOiBQb2x5bW9ycGhpY1JlZjxDPlxuICApID0+IDxDdXN0b21CdXR0b24gey4uLnByb3BzfSB2YXJpYW50PVwic2Vjb25kYXJ5XCIgc2l6ZT1cInNcIiByZWY9e3JlZn0gLz5cbik7XG5cbmV4cG9ydCBjb25zdCBQcm9tcHRJbnB1dCA9IE9iamVjdC5hc3NpZ24oUHJvbXB0SW5wdXRDb21wb25lbnQsIHtcbiAgU3VnZ2VzdGlvbkJ1dHRvbixcbn0pIGFzIHR5cGVvZiBQcm9tcHRJbnB1dENvbXBvbmVudCAmIHtcbiAgU3VnZ2VzdGlvbkJ1dHRvbjogdHlwZW9mIFN1Z2dlc3Rpb25CdXR0b247XG59O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTBEd0IifQ== */"),StyledTextAreaContainer=(0,_styled.default)("div",{target:"e1fprshj1",label:"StyledTextAreaContainer"})({borderRadius:"inherit",position:"relative",width:"100%"},"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvUHJvbXB0SW5wdXQvUHJvbXB0SW5wdXQudHN4Iiwic291cmNlcyI6WyJzcmMvY29tcG9uZW50cy9Qcm9tcHRJbnB1dC9Qcm9tcHRJbnB1dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBSZWFjdEVsZW1lbnQsXG4gIENoYW5nZUV2ZW50SGFuZGxlcixcbiAgS2V5Ym9hcmRFdmVudEhhbmRsZXIsXG4gIFJlZk9iamVjdCxcbiAgRm9jdXNFdmVudEhhbmRsZXIsXG4gIFN5bnRoZXRpY0V2ZW50LFxuICBNb3VzZUV2ZW50LFxufSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IFJlYWN0LCB7XG4gIHVzZVJlZixcbiAgdXNlTWVtbyxcbiAgdXNlU3RhdGUsXG4gIHVzZUVmZmVjdCxcbiAgdXNlQ2FsbGJhY2ssXG4gIGZvcndhcmRSZWYsXG59IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5cbmltcG9ydCB0eXBlIHsgUHJvbXB0VGV4dEFyZWFQcm9wcyB9IGZyb20gXCIuL1Byb21wdFRleHRBcmVhXCI7XG5pbXBvcnQge1xuICBQcm9tcHRUZXh0QXJlYSxcbiAgZ2V0UGFkZGluZ0hvcml6b250YWwsXG4gIGdldFBhZGRpbmdWZXJ0aWNhbCxcbn0gZnJvbSBcIi4vUHJvbXB0VGV4dEFyZWFcIjtcbmltcG9ydCB7IENvbnRhaW5lciB9IGZyb20gXCIuLi9Db250YWluZXJcIjtcbmltcG9ydCB0eXBlIHsgQXV0b2NvbXBsZXRlTGlzdFByb3BzIH0gZnJvbSBcIi4vQXV0b2NvbXBsZXRlTGlzdFwiO1xuXG5pbXBvcnQgeyBBdXRvY29tcGxldGVMaXN0IH0gZnJvbSBcIi4vQXV0b2NvbXBsZXRlTGlzdFwiO1xuaW1wb3J0IHtcbiAgZ2V0TGlzdEl0ZW1JZCxcbiAgdHlwZSBGbGF0dGVuZWRMaXN0SXRlbSxcbiAgdHlwZSBMaXN0SXRlbVZhbHVlLFxufSBmcm9tIFwiLi9DYXRlZ29yeUxpc3RcIjtcbmltcG9ydCB7IFRleHQgfSBmcm9tIFwiLi4vVHlwb2dyYXBoeS9UZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24sIHR5cGUgQnV0dG9uUHJvcHMgfSBmcm9tIFwiLi4vQnV0dG9uL0J1dHRvblwiO1xuaW1wb3J0IHR5cGUge1xuICBQb2x5bW9ycGhpY1JlZixcbiAgUG9seW1vcnBoaWNDb21wb25lbnRQcm9wc1dpdGhSZWYsXG4gIEJvcmRlclJhZGl1cyxcbn0gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5pbXBvcnQgeyBJbmxpbmUgfSBmcm9tIFwiLi4vSW5saW5lL0lubGluZVwiO1xuaW1wb3J0IHR5cGUgeyBSb3VuZEJ1dHRvblByb3BzIH0gZnJvbSBcIi4uL1JvdW5kQnV0dG9uL1JvdW5kQnV0dG9uXCI7XG5pbXBvcnQgeyBSb3VuZEJ1dHRvbiB9IGZyb20gXCIuLi9Sb3VuZEJ1dHRvbi9Sb3VuZEJ1dHRvblwiO1xuaW1wb3J0IHR5cGUgeyBQaWN0b2dyYW1CdXR0b25Qcm9wcyB9IGZyb20gXCIuLi9QaWN0b2dyYW1CdXR0b24vUGljdG9ncmFtQnV0dG9uXCI7XG5pbXBvcnQgeyBQaWN0b2dyYW1CdXR0b24gfSBmcm9tIFwiLi4vUGljdG9ncmFtQnV0dG9uL1BpY3RvZ3JhbUJ1dHRvblwiO1xuaW1wb3J0IHsgU3RhY2sgfSBmcm9tIFwiLi4vU3RhY2svU3RhY2tcIjtcbmltcG9ydCB7IHVzZU91dHNpZGVDbGljayB9IGZyb20gXCIuLi8uLi9zaGFyZWQvdXNlT3V0c2lkZUNsaWNrXCI7XG5pbXBvcnQgdHlwZSB7IEljb25OYW1lIH0gZnJvbSBcIi4uL0ljb24vSWNvblwiO1xuaW1wb3J0IHsgSWNvbiB9IGZyb20gXCIuLi9JY29uL0ljb25cIjtcbmltcG9ydCB7IFN1YlRoZW1lUHJvdmlkZXIgfSBmcm9tIFwiLi4vU3ViVGhlbWVQcm92aWRlci9TdWJUaGVtZVByb3ZpZGVyXCI7XG5pbXBvcnQgeyBBbmltYXRlZEJvcmRlciB9IGZyb20gXCIuLi9VdGlsaXRpZXMvQW5pbWF0ZWRCb3JkZXIvQW5pbWF0ZWRCb3JkZXJcIjtcbmltcG9ydCB7XG4gIFByb21wdElucHV0SGVhZGVyLFxuICB0eXBlIEJhc2VQcm9tcHRJbnB1dEhlYWRlclByb3BzLFxufSBmcm9tIFwiLi9Qcm9tcHRJbnB1dEhlYWRlclwiO1xuXG5jb25zdCBDdXN0b21Db250YWluZXIgPSBzdHlsZWQoQ29udGFpbmVyKTx7XG4gIGhpZGVCb3JkZXI6IGJvb2xlYW47XG4gIGhhc1NoYWRvdzogYm9vbGVhbjtcbn0+KCh7IHRoZW1lLCBoaWRlQm9yZGVyLCBoYXNTaGFkb3cgfSkgPT4gKHtcbiAgYm9yZGVyOiBgMXB4IHNvbGlkICR7dGhlbWUudmFsdWVzLmNvbG9yLmJvcmRlci5wcmltYXJ5LmRlZmF1bHR9YCxcbiAgLi4uKGhhc1NoYWRvdyAmJiB7XG4gICAgYm94U2hhZG93OiB0aGVtZS52YWx1ZXMuc2hhZG93LmRlZmF1bHRSaW5nLFxuICAgIHRyYW5zaXRpb25Qcm9wZXJ0eTogXCJib3gtc2hhZG93LCBib3JkZXItY29sb3IsIG91dGxpbmUtY29sb3JcIixcbiAgICB0cmFuc2l0aW9uRHVyYXRpb246IHRoZW1lLnZhcmlhYmxlcy5hbmltYXRpb24ucHJvbXB0SW5wdXQuZm9jdXMuZHVyYXRpb24sXG4gICAgdHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uOlxuICAgICAgdGhlbWUudmFyaWFibGVzLmFuaW1hdGlvbi5wcm9tcHRJbnB1dC5mb2N1cy50aW1pbmdGdW5jdGlvbixcbiAgfSksXG4gIC4uLihoaWRlQm9yZGVyICYmIHtcbiAgICBib3JkZXJDb2xvcjogXCJ0cmFuc3BhcmVudFwiLFxuICB9KSxcbiAgY3Vyc29yOiBcInRleHRcIixcbiAgb3V0bGluZUNvbG9yOiBcInRyYW5zcGFyZW50XCIsXG4gIFtgJjpoYXModGV4dGFyZWE6Zm9jdXMtdmlzaWJsZSlgXToge1xuICAgIG91dGxpbmVXaWR0aDogMSxcbiAgICBvdXRsaW5lU3R5bGU6IFwic29saWRcIixcbiAgICBvdXRsaW5lT2Zmc2V0OiAtMSxcbiAgICBib3hTaGFkb3c6IHRoZW1lLnZhbHVlcy5zaGFkb3cuZm9jdXNSaW5nLFxuICAgIG91dGxpbmVDb2xvcjogdGhlbWUudmFsdWVzLmNvbG9yLmJvcmRlci5hY2NlbnQuZGVmYXVsdCxcbiAgfSxcbn0pKTtcblxuY29uc3QgU3R5bGVkVGV4dEFyZWFDb250YWluZXIgPSBzdHlsZWQuZGl2KHtcbiAgYm9yZGVyUmFkaXVzOiBcImluaGVyaXRcIixcbiAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgd2lkdGg6IFwiMTAwJVwiLFxufSk7XG5cbmNvbnN0IFN0eWxlZExlZnRJY29uQ29udGFpbmVyID0gc3R5bGVkLmRpdigoeyB0aGVtZSB9KSA9PiAoe1xuICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICB0b3A6IGdldFBhZGRpbmdWZXJ0aWNhbCh0aGVtZSksXG4gIGxlZnQ6IGdldFBhZGRpbmdIb3Jpem9udGFsKHRoZW1lKSxcbn0pKTtcblxudHlwZSBTdHlsZWRFbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50Q29udGFpbmVyUHJvcHMgPSBQaWNrPFxuICBQcm9tcHRJbnB1dFByb3BzLFxuICBcImlzTmF2QmFyVmFyaWFudFwiXG4+O1xuXG5jb25zdCBTdHlsZWRFbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50Q29udGFpbmVyID1cbiAgc3R5bGVkLmRpdjxTdHlsZWRFbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50Q29udGFpbmVyUHJvcHM+KFxuICAgICh7IHRoZW1lLCBpc05hdkJhclZhcmlhbnQgfSkgPT4gKHtcbiAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICB0b3A6IGlzTmF2QmFyVmFyaWFudFxuICAgICAgICA/IHRoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcueHhzXG4gICAgICAgIDogZ2V0UGFkZGluZ1ZlcnRpY2FsKHRoZW1lKSxcbiAgICAgIHJpZ2h0OiBnZXRQYWRkaW5nSG9yaXpvbnRhbCh0aGVtZSksXG4gICAgICB1c2VyU2VsZWN0OiBcIm5vbmVcIixcbiAgICAgIHBvaW50ZXJFdmVudHM6IFwibm9uZVwiLFxuICAgIH0pXG4gICk7XG5cbnR5cGUgU3R5bGVkQ2xlYXJCdXR0b25Qcm9wcyA9IFBpY3RvZ3JhbUJ1dHRvblByb3BzICZcbiAgUGljazxQcm9tcHRJbnB1dFByb3BzLCBcImlzTmF2QmFyVmFyaWFudFwiPjtcblxuY29uc3QgU3R5bGVkQ2xlYXJCdXR0b24gPSBzdHlsZWQoUGljdG9ncmFtQnV0dG9uKTxTdHlsZWRDbGVhckJ1dHRvblByb3BzPihcbiAgKHsgdGhlbWUsIGlzTmF2QmFyVmFyaWFudCB9KSA9PiAoe1xuICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgcmlnaHQ6IHRoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcucyxcbiAgICB0b3A6IGlzTmF2QmFyVmFyaWFudCA/IDAgOiB0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnMsXG4gIH0pXG4pO1xuXG5jb25zdCBTdHlsZWRTbG90c0NvbnRhaW5lciA9IHN0eWxlZC5kaXYoe1xuICBkaXNwbGF5OiBcImZsZXhcIixcbiAgZmxleFdyYXA6IFwid3JhcFwiLFxuICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxufSk7XG5cbi8vIEl0IG5lZWRzIG1hcmdpbiBkdWUgdG8gZW1wdHkgY2xpY2thYmxlIHNwYWNlIHRoYXQgZm9jdXNlcyB0aGUgdGV4dGFyZWFcbi8vIFNsb3RzIHNob3VsZCBub3QgYmUgaW4gdGhlIGRpdiwgYmVjYXVzZSBhcmVhIGJldHdlZW4gc2hvdWxkIGJlIGNsaWNrYWJsZSBhbHNvXG50eXBlIFNsb3RQcm9wcyA9IHtcbiAgc2lkZT86IFwicmlnaHRcIjtcbn07XG5jb25zdCBTdHlsZWRTbG90ID0gc3R5bGVkLmRpdjxTbG90UHJvcHM+KCh7IHRoZW1lLCBzaWRlIH0pID0+ICh7XG4gIG1hcmdpbjogYDAgJHt0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnN9ICR7dGhlbWUudmFyaWFibGVzLnNpemUuc3BhY2luZy5zfWAsXG5cbiAgLi4uKHNpZGUgPT09IFwicmlnaHRcIiAmJiB7XG4gICAgbWFyZ2luTGVmdDogXCJhdXRvXCIsXG4gIH0pLFxufSkpO1xuXG50eXBlIFNlbmRCdXR0b25Qcm9wcyA9IE9taXQ8Um91bmRCdXR0b25Qcm9wcywgXCJpY29uXCIgfCBcInZhcmlhbnRcIj4gJiB7XG4gIGljb24/OiBcImFycm93LXVwXCIgfCBcInNlYXJjaFwiIHwgXCJhcnJvdy1yaWdodFwiIHwgXCJ2b2ljZVwiO1xufTtcblxudHlwZSBCb3R0b21Ub29sYmFyQ29uZmlnID0ge1xuICAvKiogVG9vbGJhciBlbGVtZW50cyBiZWxvdyB0ZXh0IGFyZWEgKi9cbiAgbGVmdENvbnRlbnQ/OiBSZWFjdEVsZW1lbnQ7XG4gIHJpZ2h0Q29udGVudD86IFJlYWN0RWxlbWVudDtcbn07XG5cbmV4cG9ydCB0eXBlIFByb21wdElucHV0UHJvcHMgPSB7XG4gIFwiZGF0YS1lMmUtdGVzdC1pZFwiPzogc3RyaW5nO1xuICBoZWFkZXI/OiBCYXNlUHJvbXB0SW5wdXRIZWFkZXJQcm9wcztcbiAgdmFyaWFudD86IFwiYWlcIjtcbiAgc2tpcEFJQW5pbWF0aW9uPzogYm9vbGVhbjtcbiAgYm90dG9tVG9vbGJhcj86IEJvdHRvbVRvb2xiYXJDb25maWc7XG4gIHNlbmRCdXR0b25Qcm9wcz86IFNlbmRCdXR0b25Qcm9wcztcbiAgLyoqIEN1cnJlbnRseSBzaG93cyBzZW5kIGJ1dHRvbiBwcm9jZXNzaW5nIHN0YXRlICAqL1xuICBpc1Byb2Nlc3Npbmc/OiBib29sZWFuO1xuICBjbGVhckJ1dHRvbkFyaWFMYWJlbD86IHN0cmluZztcbiAgaGludD86IFJlYWN0RWxlbWVudDtcbiAgLyoqIFNob3dzIGluIHRoZSBjbGVhciBidXR0b24gc3BhY2UgaW4gZW1wdHkgc3RhdGUgKi9cbiAgZW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudD86IFJlYWN0RWxlbWVudDtcbiAgb25DbGVhcjogKCkgPT4gdm9pZDtcbiAgLyoqIENhbGxlZCB3aGVuIHVzZXIgc2VsZWN0cyAob3IgcmVqZWN0cykgYSBsaXN0IGl0ZW0gZnJvbSBhdXRvY29tcGxldGUgbGlzdCAqL1xuICBvbkNvbXBsZXRlPzogKHtcbiAgICB2YWx1ZSxcbiAgICBjYXRlZ29yeSxcbiAgICBldnQsXG4gICAgaW5kZXgsXG4gIH06IHtcbiAgICB2YWx1ZTogTGlzdEl0ZW1WYWx1ZTtcbiAgICBjYXRlZ29yeT86IHN0cmluZztcbiAgICBldnQ/OiBTeW50aGV0aWNFdmVudDtcbiAgICBpbmRleD86IG51bWJlcjtcbiAgfSkgPT4gdm9pZDtcbiAgLyoqIENhbGxlZCBvbiBFbnRlciBrZXkgdG8gc3VibWl0IHRoZSBmb3JtICAqL1xuICBvbkVudGVyS2V5OiAoKSA9PiB2b2lkO1xuICAvKiogUmVuZGVycyBhbiBpY29uIHRvIHRoZSBsZWZ0IGluc2lkZSB0aGUgdGV4dGFyZWEgKi9cbiAgbGVmdEljb24/OiBJY29uTmFtZTtcbn0gJiBPbWl0PFxuICBQcm9tcHRUZXh0QXJlYVByb3BzLFxuICBcImlzQ29sbGFwc2VkXCIgfCBcImlzQXV0b2NvbXBsZXRlTGlzdE9wZW5cIiB8IFwic2VsZWN0ZWRMaXN0SXRlbVwiIHwgXCJoYXNMZWZ0SWNvblwiXG4+ICZcbiAgUGljazxcbiAgICBBdXRvY29tcGxldGVMaXN0UHJvcHMsXG4gICAgXCJhdXRvY29tcGxldGVMaXN0SXRlbXNcIiB8IFwiYXV0b2NvbXBsZXRlTGlzdEZvb3RlclwiIHwgXCJwb3J0YWxDb250YWluZXJcIlxuICA+O1xuXG5jb25zdCBkZWZhdWx0U2VuZEJ1dHRvblByb3BzOiBTZW5kQnV0dG9uUHJvcHMgPSB7XG4gIHR5cGU6IFwic3VibWl0XCIgYXMgY29uc3QsXG4gIGljb246IFwiYXJyb3ctdXBcIiBhcyBjb25zdCxcbn07XG5cbmNvbnN0IFByb21wdElucHV0Q29tcG9uZW50ID0gZm9yd2FyZFJlZihcbiAgKFxuICAgIHtcbiAgICAgIFwiZGF0YS1lMmUtdGVzdC1pZFwiOiBkYXRhRTJlVGVzdElkLFxuICAgICAgbmFtZSxcbiAgICAgIGF1dG9jb21wbGV0ZUxpc3RJdGVtcyA9IFtdLFxuICAgICAgdmFsdWUsXG4gICAgICBib3R0b21Ub29sYmFyLFxuICAgICAgaXNQcm9jZXNzaW5nLFxuICAgICAgc2VuZEJ1dHRvblByb3BzLFxuICAgICAgYXV0b2NvbXBsZXRlTGlzdEZvb3RlcixcbiAgICAgIGNsZWFyQnV0dG9uQXJpYUxhYmVsID0gXCJDbGVhciBpbnB1dFwiLFxuICAgICAgaGludCxcbiAgICAgIGVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnQsXG4gICAgICBpc05hdkJhclZhcmlhbnQsXG4gICAgICBwb3J0YWxDb250YWluZXIsXG4gICAgICBsZWZ0SWNvbixcbiAgICAgIGhlYWRlcixcbiAgICAgIG9uQ2hhbmdlLFxuICAgICAgb25Db21wbGV0ZSxcbiAgICAgIG9uQ2xlYXIsXG4gICAgICBvbkVudGVyS2V5LFxuICAgICAgb25Gb2N1cyxcbiAgICAgIG9uQmx1cixcbiAgICAgIG9uS2V5RG93bixcbiAgICAgIHZhcmlhbnQsXG4gICAgICBza2lwQUlBbmltYXRpb24gPSBmYWxzZSxcbiAgICAgIC4uLnJlc3RcbiAgICB9OiBQcm9tcHRJbnB1dFByb3BzLFxuICAgIHJlZjogUmVmT2JqZWN0PEhUTUxUZXh0QXJlYUVsZW1lbnQ+XG4gICk6IFJlYWN0RWxlbWVudCA9PiB7XG4gICAgY29uc3QgY29udGFpbmVyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgICBjb25zdCB0ZXh0QXJlYUNvbnRhaW5lclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gICAgY29uc3QgaW50ZXJuYWxSZWYgPSB1c2VSZWY8SFRNTFRleHRBcmVhRWxlbWVudD4obnVsbCk7XG4gICAgY29uc3QgW3NlbGVjdGVkSW5kZXgsIHNldFNlbGVjdGVkSW5kZXhdID0gdXNlU3RhdGUoLTEpO1xuICAgIGNvbnN0IFtpc0NvbGxhcHNlZCwgc2V0SXNDb2xsYXBzZWRdID0gdXNlU3RhdGUoaXNOYXZCYXJWYXJpYW50KTtcbiAgICBjb25zdCB1c2VyVHlwZWRRdWVyeSA9IHVzZVJlZihcIlwiKTtcbiAgICBjb25zdCBbaXNBdXRvY29tcGxldGVMaXN0T3Blbiwgc2V0SXNBdXRvY29tcGxldGVMaXN0T3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgdGV4dEFyZWFSZWYgPSByZWYgfHwgaW50ZXJuYWxSZWY7XG5cbiAgICBjb25zdCBtZXJnZWRTZW5kQnV0dG9uUHJvcHMgPSB7XG4gICAgICAuLi5kZWZhdWx0U2VuZEJ1dHRvblByb3BzLFxuICAgICAgLi4uKHNlbmRCdXR0b25Qcm9wcyA/PyB7fSksXG4gICAgfTtcblxuICAgIHVzZU91dHNpZGVDbGljayhcbiAgICAgIGNvbnRhaW5lclJlZixcbiAgICAgIChldnQpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICFjb250YWluZXJSZWYuY3VycmVudD8uY29udGFpbnMoZXZ0LnRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgICAgICFwb3J0YWxDb250YWluZXI/LmNvbnRhaW5zKGV2dC50YXJnZXQgYXMgTm9kZSkgJiZcbiAgICAgICAgICBldnQudGFyZ2V0ICE9PSBudWxsXG4gICAgICAgICkge1xuICAgICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgIWlzQ29sbGFwc2VkICYmIGlzTmF2QmFyVmFyaWFudFxuICAgICk7XG5cbiAgICBjb25zdCBjbG9zZUF1dG9jb21wbGV0ZUxpc3QgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBzZXRJc0F1dG9jb21wbGV0ZUxpc3RPcGVuKGZhbHNlKTtcbiAgICAgIHNldFNlbGVjdGVkSW5kZXgoLTEpO1xuICAgIH0sIFtdKTtcblxuICAgIGNvbnN0IG9wZW5BdXRvY29tcGxldGVMaXN0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgaWYgKGF1dG9jb21wbGV0ZUxpc3RJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgc2V0SXNBdXRvY29tcGxldGVMaXN0T3Blbih0cnVlKTtcbiAgICAgICAgc2V0U2VsZWN0ZWRJbmRleCgtMSk7XG4gICAgICB9XG4gICAgfSwgW2F1dG9jb21wbGV0ZUxpc3RJdGVtc10pO1xuXG4gICAgY29uc3QgYWNjZXB0VGV4dFNlbGVjdGlvbiA9ICgpID0+IHtcbiAgICAgIHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQgPSB2YWx1ZTtcbiAgICAgIGlmIChcbiAgICAgICAgdGV4dEFyZWFSZWYuY3VycmVudC5zZWxlY3Rpb25TdGFydCAhPT0gdGV4dEFyZWFSZWYuY3VycmVudC5zZWxlY3Rpb25FbmRcbiAgICAgICkge1xuICAgICAgICB0ZXh0QXJlYVJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKHZhbHVlLmxlbmd0aCwgdmFsdWUubGVuZ3RoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmIChhdXRvY29tcGxldGVMaXN0SXRlbXMubGVuZ3RoICYmICFpc0NvbGxhcHNlZCkge1xuICAgICAgICBvcGVuQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2xvc2VBdXRvY29tcGxldGVMaXN0KCk7XG4gICAgICB9XG4gICAgfSwgW1xuICAgICAgYXV0b2NvbXBsZXRlTGlzdEl0ZW1zLFxuICAgICAgb3BlbkF1dG9jb21wbGV0ZUxpc3QsXG4gICAgICBjbG9zZUF1dG9jb21wbGV0ZUxpc3QsXG4gICAgICBpc0NvbGxhcHNlZCxcbiAgICBdKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAodmFsdWUgJiYgdmFsdWUgIT09IHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQgJiYgaXNBdXRvY29tcGxldGVMaXN0T3Blbikge1xuICAgICAgICB0ZXh0QXJlYVJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKFxuICAgICAgICAgIHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQubGVuZ3RoLFxuICAgICAgICAgIHZhbHVlLmxlbmd0aFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0sIFt2YWx1ZSwgdGV4dEFyZWFSZWYsIGlzQXV0b2NvbXBsZXRlTGlzdE9wZW5dKTtcblxuICAgIC8vIERldGVybWluZSB3aGVuIGZvY3VzIGxlYXZlcyB0aGUgY29udGFpbmVyIHRvIGNvbGxhcHNlIGl0XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGxldCBoYW5kbGVyOiAoZXZ0OiBGb2N1c0V2ZW50KSA9PiB2b2lkO1xuICAgICAgY29uc3QgY29udGFpbmVyID0gY29udGFpbmVyUmVmLmN1cnJlbnQ7XG5cbiAgICAgIGlmIChpc05hdkJhclZhcmlhbnQgJiYgY29udGFpbmVyKSB7XG4gICAgICAgIGhhbmRsZXIgPSAoZXZ0OiBGb2N1c0V2ZW50KSA9PiB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgIWNvbnRhaW5lclJlZi5jdXJyZW50Py5jb250YWlucyhldnQucmVsYXRlZFRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgICAgICAgIXBvcnRhbENvbnRhaW5lcj8uY29udGFpbnMoZXZ0LnJlbGF0ZWRUYXJnZXQgYXMgTm9kZSkgJiZcbiAgICAgICAgICAgIGV2dC5yZWxhdGVkVGFyZ2V0ICE9PSBudWxsXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBzZXRJc0NvbGxhcHNlZCh0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwiZm9jdXNvdXRcIiwgaGFuZGxlcik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImZvY3Vzb3V0XCIsIGhhbmRsZXIpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0sIFtpc05hdkJhclZhcmlhbnQsIGNvbnRhaW5lclJlZiwgcG9ydGFsQ29udGFpbmVyXSk7XG5cbiAgICBjb25zdCBmbGF0dGVuZWRMaXN0SXRlbXMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGNvbnN0IGxpc3Q6IEZsYXR0ZW5lZExpc3RJdGVtW10gPSBbXTtcblxuICAgICAgYXV0b2NvbXBsZXRlTGlzdEl0ZW1zLmZvckVhY2goKGxpc3RJdGVtKSA9PiB7XG4gICAgICAgIGxpc3RJdGVtLml0ZW1zLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgbGlzdC5wdXNoKHtcbiAgICAgICAgICAgIGNhdGVnb3J5OiBsaXN0SXRlbS5jYXRlZ29yeSxcbiAgICAgICAgICAgIGluZGV4SW5DYXRlZ29yeTogaW5kZXgsXG4gICAgICAgICAgICB2YWx1ZTogaXRlbS52YWx1ZSxcbiAgICAgICAgICAgIGlkOiBnZXRMaXN0SXRlbUlkKG5hbWUsIGxpc3RJdGVtLmNhdGVnb3J5LCBpbmRleCksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gbGlzdDtcbiAgICB9LCBbYXV0b2NvbXBsZXRlTGlzdEl0ZW1zLCBuYW1lXSk7XG5cbiAgICBjb25zdCBoYW5kbGVTZWxlY3RlZEluZGV4Q2hhbmdlID0gKGluZGV4OiBudW1iZXIsIGV2dD86IFN5bnRoZXRpY0V2ZW50KSA9PiB7XG4gICAgICBzZXRTZWxlY3RlZEluZGV4KGluZGV4KTtcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgY29uc3QgeyBjYXRlZ29yeSwgdmFsdWU6IGl0ZW1WYWx1ZSB9ID0gZmxhdHRlbmVkTGlzdEl0ZW1zW2luZGV4XTtcblxuICAgICAgICBvbkNvbXBsZXRlKHsgdmFsdWU6IGl0ZW1WYWx1ZSwgY2F0ZWdvcnksIGV2dCwgaW5kZXggfSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZUxpc3RJdGVtQ2xpY2sgPSAoXG4gICAgICBjYXRlZ29yeTogc3RyaW5nLFxuICAgICAgaW5kZXhJbkNhdGVnb3J5OiBudW1iZXIsXG4gICAgICBldnQ/OiBNb3VzZUV2ZW50XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IGZsYXR0ZW5lZExpc3RJdGVtcy5maW5kSW5kZXgoXG4gICAgICAgIChsaXN0SXRlbSkgPT5cbiAgICAgICAgICBsaXN0SXRlbS5jYXRlZ29yeSA9PT0gY2F0ZWdvcnkgJiZcbiAgICAgICAgICBsaXN0SXRlbS5pbmRleEluQ2F0ZWdvcnkgPT09IGluZGV4SW5DYXRlZ29yeVxuICAgICAgKTtcblxuICAgICAgaGFuZGxlU2VsZWN0ZWRJbmRleENoYW5nZShpbmRleCwgZXZ0KTtcbiAgICAgIGNsb3NlQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgaWYgKGlzTmF2QmFyVmFyaWFudCkge1xuICAgICAgICBzZXRJc0NvbGxhcHNlZCh0cnVlKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlS2V5RG93bjogS2V5Ym9hcmRFdmVudEhhbmRsZXI8SFRNTFRleHRBcmVhRWxlbWVudD4gPSAoZXZ0KSA9PiB7XG4gICAgICBpZiAoaXNBdXRvY29tcGxldGVMaXN0T3Blbikge1xuICAgICAgICBzd2l0Y2ggKGV2dC5rZXkpIHtcbiAgICAgICAgICBjYXNlIFwiRXNjYXBlXCI6XG4gICAgICAgICAgICBjbG9zZUF1dG9jb21wbGV0ZUxpc3QoKTtcbiAgICAgICAgICAgIG9uQ29tcGxldGUoeyB2YWx1ZTogdXNlclR5cGVkUXVlcnkuY3VycmVudCwgZXZ0IH0pO1xuICAgICAgICAgICAgaWYgKGlzTmF2QmFyVmFyaWFudCkge1xuICAgICAgICAgICAgICBzZXRJc0NvbGxhcHNlZCh0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgXCJFbnRlclwiOlxuICAgICAgICAgICAgaWYgKCFldnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgIGNsb3NlQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgICAgICAgICBhY2NlcHRUZXh0U2VsZWN0aW9uKCk7XG5cbiAgICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgb25FbnRlcktleT8uKCk7XG4gICAgICAgICAgICAgICAgaWYgKGlzTmF2QmFyVmFyaWFudCkge1xuICAgICAgICAgICAgICAgICAgc2V0SXNDb2xsYXBzZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFwiIFwiOlxuICAgICAgICAgICAgYWNjZXB0VGV4dFNlbGVjdGlvbigpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBcIkFycm93VXBcIjpcbiAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgaWYgKHNlbGVjdGVkSW5kZXggPiAtMSkge1xuICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RlZEluZGV4Q2hhbmdlKHNlbGVjdGVkSW5kZXggLSAxLCBldnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBcIkFycm93RG93blwiOlxuICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRJbmRleCA8IGZsYXR0ZW5lZExpc3RJdGVtcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgIGhhbmRsZVNlbGVjdGVkSW5kZXhDaGFuZ2Uoc2VsZWN0ZWRJbmRleCArIDEsIGV2dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2l0Y2ggKGV2dC5rZXkpIHtcbiAgICAgICAgICBjYXNlIFwiRXNjYXBlXCI6XG4gICAgICAgICAgICBvbkNsZWFyPy4oKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgXCJFbnRlclwiOlxuICAgICAgICAgICAgaWYgKCFldnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIG9uRW50ZXJLZXk/LigpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgb25LZXlEb3duPy4oZXZ0KTtcbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlOiBDaGFuZ2VFdmVudEhhbmRsZXI8SFRNTFRleHRBcmVhRWxlbWVudD4gPSAoZXZ0KSA9PiB7XG4gICAgICB1c2VyVHlwZWRRdWVyeS5jdXJyZW50ID0gZXZ0LnRhcmdldC52YWx1ZTtcbiAgICAgIG9uQ2hhbmdlKGV2dCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZUZvY3VzOiBGb2N1c0V2ZW50SGFuZGxlcjxIVE1MVGV4dEFyZWFFbGVtZW50PiA9IChldnQpID0+IHtcbiAgICAgIHNldElzQ29sbGFwc2VkKGZhbHNlKTtcbiAgICAgIG9uRm9jdXM/LihldnQpO1xuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVCbHVyOiBGb2N1c0V2ZW50SGFuZGxlcjxIVE1MVGV4dEFyZWFFbGVtZW50PiA9IChldnQpID0+IHtcbiAgICAgIGlmICh2YWx1ZSAhPT0gdXNlclR5cGVkUXVlcnkuY3VycmVudCkge1xuICAgICAgICBvbkNvbXBsZXRlPy4oeyB2YWx1ZTogdXNlclR5cGVkUXVlcnkuY3VycmVudCwgZXZ0IH0pO1xuICAgICAgfVxuICAgICAgb25CbHVyPy4oZXZ0KTtcbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlU2VuZEJ1dHRvbkNsaWNrID0gKGV2dDogTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4pID0+IHtcbiAgICAgIG1lcmdlZFNlbmRCdXR0b25Qcm9wcy5vbkNsaWNrPy4oZXZ0KTtcbiAgICAgIGNsb3NlQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgaWYgKGlzTmF2QmFyVmFyaWFudCkge1xuICAgICAgICBzZXRJc0NvbGxhcHNlZCh0cnVlKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlUHJldmVudEZvY3VzID0gKGV2dDogUmVhY3QuUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAvLyBQcmV2ZW50IHRoZSB0ZXh0YXJlYSBmcm9tIGJlaW5nIHVuZm9jdXNlZFxuICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZU9uQ29udGFpbmVyUG9pbnRlckRvd24gPSAoZXZ0OiBSZWFjdC5Qb2ludGVyRXZlbnQpID0+IHtcbiAgICAgIC8vIEZvY3VzIHRleHRhcmVhIHdoZW4gY2xpY2tpbmcgb24gdGhlIGNvbnRhaW5lciBvbmx5XG4gICAgICBpZiAoZXZ0LnRhcmdldCA9PT0gZXZ0LmN1cnJlbnRUYXJnZXQpIHtcbiAgICAgICAgdGV4dEFyZWFSZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IHNlbGVjdGVkTGlzdEl0ZW0gPVxuICAgICAgc2VsZWN0ZWRJbmRleCAhPT0gLTEgPyBmbGF0dGVuZWRMaXN0SXRlbXNbc2VsZWN0ZWRJbmRleF0gOiBudWxsO1xuXG4gICAgY29uc3QgZW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudEVsbSA9IGVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnQgPyAoXG4gICAgICA8U3R5bGVkRW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudENvbnRhaW5lclxuICAgICAgICBpc05hdkJhclZhcmlhbnQ9e2lzTmF2QmFyVmFyaWFudH1cbiAgICAgID5cbiAgICAgICAgPFRleHQgY29sb3I9XCJ0ZXJ0aWFyeVwiPntlbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50fTwvVGV4dD5cbiAgICAgIDwvU3R5bGVkRW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudENvbnRhaW5lcj5cbiAgICApIDogbnVsbDtcblxuICAgIGNvbnN0IGNsZWFyQnV0dG9uRWxtID0gdmFsdWUgPyAoXG4gICAgICA8U3R5bGVkQ2xlYXJCdXR0b25cbiAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgIGljb249XCJ4LWNpcmNsZS1maWxsZWRcIlxuICAgICAgICBhcmlhLWxhYmVsPXtjbGVhckJ1dHRvbkFyaWFMYWJlbH1cbiAgICAgICAgaXNOYXZCYXJWYXJpYW50PXtpc05hdkJhclZhcmlhbnR9XG4gICAgICAgIG9uUG9pbnRlckRvd249e2hhbmRsZVByZXZlbnRGb2N1c31cbiAgICAgICAgb25DbGljaz17b25DbGVhcn1cbiAgICAgIC8+XG4gICAgKSA6IChcbiAgICAgIGVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnRFbG1cbiAgICApO1xuXG4gICAgY29uc3QgaGludEVsbSA9ICEhaGludCAmJiAoXG4gICAgICA8SW5saW5lIGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAgPFRleHQgc2l6ZT1cInNcIiBjb2xvcj1cInRlcnRpYXJ5XCI+XG4gICAgICAgICAge2hpbnR9XG4gICAgICAgIDwvVGV4dD5cbiAgICAgIDwvSW5saW5lPlxuICAgICk7XG5cbiAgICBjb25zdCBib3R0b21Ub29sYmFyRWxtID0gKGJvdHRvbVRvb2xiYXI/LnJpZ2h0Q29udGVudCB8fFxuICAgICAgYm90dG9tVG9vbGJhcj8ubGVmdENvbnRlbnQgfHxcbiAgICAgICEhc2VuZEJ1dHRvblByb3BzKSAmJlxuICAgICAgIWlzQ29sbGFwc2VkICYmIChcbiAgICAgICAgPD5cbiAgICAgICAgICB7Ym90dG9tVG9vbGJhcj8ubGVmdENvbnRlbnQgJiYgKFxuICAgICAgICAgICAgPFN0eWxlZFNsb3Q+e2JvdHRvbVRvb2xiYXIubGVmdENvbnRlbnR9PC9TdHlsZWRTbG90PlxuICAgICAgICAgICl9XG4gICAgICAgICAgPFN0eWxlZFNsb3QgZGF0YS1lMmUtdGVzdC1pZD1cImJvdHRvbVRvb2xiYXJcIiBzaWRlPVwicmlnaHRcIj5cbiAgICAgICAgICAgIDxJbmxpbmUgc3BhY2U9XCJ4c1wiIHZBbGlnbkl0ZW1zPVwiY2VudGVyXCI+XG4gICAgICAgICAgICAgIHtib3R0b21Ub29sYmFyPy5yaWdodENvbnRlbnR9XG4gICAgICAgICAgICAgIHtzZW5kQnV0dG9uUHJvcHMgJiYgKFxuICAgICAgICAgICAgICAgIDxTdWJUaGVtZVByb3ZpZGVyIG5hbWU9e3ZhcmlhbnR9PlxuICAgICAgICAgICAgICAgICAgPFJvdW5kQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGFyaWFBdHRyaWJ1dGVzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgXCJhcmlhLWxhYmVsXCI6IGlzUHJvY2Vzc2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBcIlByb2Nlc3NpbmcgcXVlcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBcIlN1Ym1pdCBxdWVyeVwiLFxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICB7Li4ubWVyZ2VkU2VuZEJ1dHRvblByb3BzfVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17bWVyZ2VkU2VuZEJ1dHRvblByb3BzLmRpc2FibGVkID8/ICF2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlU2VuZEJ1dHRvbkNsaWNrfVxuICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJEb3duPXtoYW5kbGVQcmV2ZW50Rm9jdXN9XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgaWNvbj17XG4gICAgICAgICAgICAgICAgICAgICAgaXNQcm9jZXNzaW5nID8gXCJzdG9wLWZpbGxlZFwiIDogbWVyZ2VkU2VuZEJ1dHRvblByb3BzLmljb25cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1N1YlRoZW1lUHJvdmlkZXI+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0lubGluZT5cbiAgICAgICAgICA8L1N0eWxlZFNsb3Q+XG4gICAgICAgIDwvPlxuICAgICAgKTtcblxuICAgIGNvbnN0IGJvcmRlclJhZGl1c1NpemU6IEJvcmRlclJhZGl1cyA9IGlzQ29sbGFwc2VkID8gXCJ4c1wiIDogXCJtXCI7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGRhdGEtZTJlLXRlc3QtaWQ9e2RhdGFFMmVUZXN0SWR9XG4gICAgICAgICAgZGF0YS1kcy1pZD1cIlByb21wdElucHV0XCJcbiAgICAgICAgICByZWY9e2NvbnRhaW5lclJlZn1cbiAgICAgICAgICAvLyBUcmFuc2xhdGlvbiBkaXNhYmxlZCBmb3IgY29uc2lzdGVuY3kgd2l0aCB0aGUgYXV0b2NvbXBsZXRlIGxpc3RcbiAgICAgICAgICB0cmFuc2xhdGU9XCJub1wiXG4gICAgICAgID5cbiAgICAgICAgICA8U3RhY2sgc3BhY2U9XCJzXCI+XG4gICAgICAgICAgICA8QW5pbWF0ZWRCb3JkZXJcbiAgICAgICAgICAgICAgc2tpcEFuaW1hdGlvbj17c2tpcEFJQW5pbWF0aW9uIHx8IHZhcmlhbnQgIT09IFwiYWlcIn1cbiAgICAgICAgICAgICAgcmFkaXVzPXsxMn1cbiAgICAgICAgICAgICAgaXRlcmF0aW9ucz17MX1cbiAgICAgICAgICAgICAgdGhpY2tuZXNzPXsyfVxuICAgICAgICAgICAgICBoaWRlQ2hpbGRCb3JkZXJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPFN1YlRoZW1lUHJvdmlkZXIgbmFtZT17dmFyaWFudH0+XG4gICAgICAgICAgICAgICAgPEN1c3RvbUNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgZWxldmF0aW9uPXswfVxuICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzPXtib3JkZXJSYWRpdXNTaXplfVxuICAgICAgICAgICAgICAgICAgaGlkZUJvcmRlcj17aXNDb2xsYXBzZWR9XG4gICAgICAgICAgICAgICAgICBoYXNTaGFkb3c9eyFpc05hdkJhclZhcmlhbnR9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN1YlRoZW1lUHJvdmlkZXIgbmFtZT1cInVuc2V0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxTdHlsZWRTbG90c0NvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgIHJlZj17dGV4dEFyZWFDb250YWluZXJSZWZ9XG4gICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyRG93bj17aGFuZGxlT25Db250YWluZXJQb2ludGVyRG93bn1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtoZWFkZXIgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFByb21wdElucHV0SGVhZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5oZWFkZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1c1NpemU9e2JvcmRlclJhZGl1c1NpemV9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZFRleHRBcmVhQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAge2xlZnRJY29uICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZExlZnRJY29uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPXtsZWZ0SWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwidGVydGlhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZExlZnRJY29uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxQcm9tcHRUZXh0QXJlYVxuICAgICAgICAgICAgICAgICAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUUyZVRlc3RJZD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUUyZVRlc3RJZCA/IGAke2RhdGFFMmVUZXN0SWR9LWlucHV0YCA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXt0ZXh0QXJlYVJlZn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNOYXZCYXJWYXJpYW50PXtpc05hdkJhclZhcmlhbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkTGlzdEl0ZW09e3NlbGVjdGVkTGlzdEl0ZW19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzQXV0b2NvbXBsZXRlTGlzdE9wZW49e2lzQXV0b2NvbXBsZXRlTGlzdE9wZW59XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzQ29sbGFwc2VkPXtpc0NvbGxhcHNlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzTGVmdEljb249eyEhbGVmdEljb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uRm9jdXM9e2hhbmRsZUZvY3VzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93bn1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICB7Y2xlYXJCdXR0b25FbG19XG4gICAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWRUZXh0QXJlYUNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICB7Ym90dG9tVG9vbGJhckVsbX1cbiAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWRTbG90c0NvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvU3ViVGhlbWVQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L0N1c3RvbUNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9TdWJUaGVtZVByb3ZpZGVyPlxuICAgICAgICAgICAgPC9BbmltYXRlZEJvcmRlcj5cbiAgICAgICAgICAgIHtoaW50RWxtfVxuICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxBdXRvY29tcGxldGVMaXN0XG4gICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgYXV0b2NvbXBsZXRlTGlzdEl0ZW1zPXthdXRvY29tcGxldGVMaXN0SXRlbXN9XG4gICAgICAgICAgdHJpZ2dlclJlZj17dGV4dEFyZWFDb250YWluZXJSZWZ9XG4gICAgICAgICAgc2VsZWN0ZWRMaXN0SXRlbT17c2VsZWN0ZWRMaXN0SXRlbX1cbiAgICAgICAgICBpc09wZW49e2lzQXV0b2NvbXBsZXRlTGlzdE9wZW59XG4gICAgICAgICAgYXV0b2NvbXBsZXRlTGlzdEZvb3Rlcj17YXV0b2NvbXBsZXRlTGlzdEZvb3Rlcn1cbiAgICAgICAgICBwb3J0YWxDb250YWluZXI9e3BvcnRhbENvbnRhaW5lcn1cbiAgICAgICAgICBvbkxpc3RJdGVtQ2xpY2s9e2hhbmRsZUxpc3RJdGVtQ2xpY2t9XG4gICAgICAgIC8+XG4gICAgICA8Lz5cbiAgICApO1xuICB9XG4pO1xuXG5jb25zdCBDdXN0b21CdXR0b24gPSBzdHlsZWQoQnV0dG9uKSgoeyB0aGVtZSB9KSA9PiAoe1xuICBib3JkZXJSYWRpdXM6IHRoZW1lLnZhcmlhYmxlcy5zaXplLmJvcmRlclJhZGl1cy5sLFxufSkpO1xuXG4vLyBuZWVkIHRvIHNpbXBsaWZ5IHRoaXMgdHlwZSBmb3IgcmV1c2VcbmNvbnN0IFN1Z2dlc3Rpb25CdXR0b24gPSBmb3J3YXJkUmVmKFxuICA8QyBleHRlbmRzIFJlYWN0LkVsZW1lbnRUeXBlID0gXCJidXR0b25cIj4oXG4gICAgcHJvcHM6IFBvbHltb3JwaGljQ29tcG9uZW50UHJvcHNXaXRoUmVmPFxuICAgICAgQyxcbiAgICAgIE9taXQ8QnV0dG9uUHJvcHMsIFwidmFyaWFudFwiIHwgXCJzaXplXCIgfCBcInJlZlwiPlxuICAgID4sXG4gICAgcmVmOiBQb2x5bW9ycGhpY1JlZjxDPlxuICApID0+IDxDdXN0b21CdXR0b24gey4uLnByb3BzfSB2YXJpYW50PVwic2Vjb25kYXJ5XCIgc2l6ZT1cInNcIiByZWY9e3JlZn0gLz5cbik7XG5cbmV4cG9ydCBjb25zdCBQcm9tcHRJbnB1dCA9IE9iamVjdC5hc3NpZ24oUHJvbXB0SW5wdXRDb21wb25lbnQsIHtcbiAgU3VnZ2VzdGlvbkJ1dHRvbixcbn0pIGFzIHR5cGVvZiBQcm9tcHRJbnB1dENvbXBvbmVudCAmIHtcbiAgU3VnZ2VzdGlvbkJ1dHRvbjogdHlwZW9mIFN1Z2dlc3Rpb25CdXR0b247XG59O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW9GZ0MifQ== */"),StyledLeftIconContainer=(0,_styled.default)("div",{target:"e1fprshj2",label:"StyledLeftIconContainer"})(({theme})=>({position:"absolute",top:(0,_PromptTextArea.getPaddingVertical)(theme),left:(0,_PromptTextArea.getPaddingHorizontal)(theme)}),"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvUHJvbXB0SW5wdXQvUHJvbXB0SW5wdXQudHN4Iiwic291cmNlcyI6WyJzcmMvY29tcG9uZW50cy9Qcm9tcHRJbnB1dC9Qcm9tcHRJbnB1dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBSZWFjdEVsZW1lbnQsXG4gIENoYW5nZUV2ZW50SGFuZGxlcixcbiAgS2V5Ym9hcmRFdmVudEhhbmRsZXIsXG4gIFJlZk9iamVjdCxcbiAgRm9jdXNFdmVudEhhbmRsZXIsXG4gIFN5bnRoZXRpY0V2ZW50LFxuICBNb3VzZUV2ZW50LFxufSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IFJlYWN0LCB7XG4gIHVzZVJlZixcbiAgdXNlTWVtbyxcbiAgdXNlU3RhdGUsXG4gIHVzZUVmZmVjdCxcbiAgdXNlQ2FsbGJhY2ssXG4gIGZvcndhcmRSZWYsXG59IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5cbmltcG9ydCB0eXBlIHsgUHJvbXB0VGV4dEFyZWFQcm9wcyB9IGZyb20gXCIuL1Byb21wdFRleHRBcmVhXCI7XG5pbXBvcnQge1xuICBQcm9tcHRUZXh0QXJlYSxcbiAgZ2V0UGFkZGluZ0hvcml6b250YWwsXG4gIGdldFBhZGRpbmdWZXJ0aWNhbCxcbn0gZnJvbSBcIi4vUHJvbXB0VGV4dEFyZWFcIjtcbmltcG9ydCB7IENvbnRhaW5lciB9IGZyb20gXCIuLi9Db250YWluZXJcIjtcbmltcG9ydCB0eXBlIHsgQXV0b2NvbXBsZXRlTGlzdFByb3BzIH0gZnJvbSBcIi4vQXV0b2NvbXBsZXRlTGlzdFwiO1xuXG5pbXBvcnQgeyBBdXRvY29tcGxldGVMaXN0IH0gZnJvbSBcIi4vQXV0b2NvbXBsZXRlTGlzdFwiO1xuaW1wb3J0IHtcbiAgZ2V0TGlzdEl0ZW1JZCxcbiAgdHlwZSBGbGF0dGVuZWRMaXN0SXRlbSxcbiAgdHlwZSBMaXN0SXRlbVZhbHVlLFxufSBmcm9tIFwiLi9DYXRlZ29yeUxpc3RcIjtcbmltcG9ydCB7IFRleHQgfSBmcm9tIFwiLi4vVHlwb2dyYXBoeS9UZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24sIHR5cGUgQnV0dG9uUHJvcHMgfSBmcm9tIFwiLi4vQnV0dG9uL0J1dHRvblwiO1xuaW1wb3J0IHR5cGUge1xuICBQb2x5bW9ycGhpY1JlZixcbiAgUG9seW1vcnBoaWNDb21wb25lbnRQcm9wc1dpdGhSZWYsXG4gIEJvcmRlclJhZGl1cyxcbn0gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5pbXBvcnQgeyBJbmxpbmUgfSBmcm9tIFwiLi4vSW5saW5lL0lubGluZVwiO1xuaW1wb3J0IHR5cGUgeyBSb3VuZEJ1dHRvblByb3BzIH0gZnJvbSBcIi4uL1JvdW5kQnV0dG9uL1JvdW5kQnV0dG9uXCI7XG5pbXBvcnQgeyBSb3VuZEJ1dHRvbiB9IGZyb20gXCIuLi9Sb3VuZEJ1dHRvbi9Sb3VuZEJ1dHRvblwiO1xuaW1wb3J0IHR5cGUgeyBQaWN0b2dyYW1CdXR0b25Qcm9wcyB9IGZyb20gXCIuLi9QaWN0b2dyYW1CdXR0b24vUGljdG9ncmFtQnV0dG9uXCI7XG5pbXBvcnQgeyBQaWN0b2dyYW1CdXR0b24gfSBmcm9tIFwiLi4vUGljdG9ncmFtQnV0dG9uL1BpY3RvZ3JhbUJ1dHRvblwiO1xuaW1wb3J0IHsgU3RhY2sgfSBmcm9tIFwiLi4vU3RhY2svU3RhY2tcIjtcbmltcG9ydCB7IHVzZU91dHNpZGVDbGljayB9IGZyb20gXCIuLi8uLi9zaGFyZWQvdXNlT3V0c2lkZUNsaWNrXCI7XG5pbXBvcnQgdHlwZSB7IEljb25OYW1lIH0gZnJvbSBcIi4uL0ljb24vSWNvblwiO1xuaW1wb3J0IHsgSWNvbiB9IGZyb20gXCIuLi9JY29uL0ljb25cIjtcbmltcG9ydCB7IFN1YlRoZW1lUHJvdmlkZXIgfSBmcm9tIFwiLi4vU3ViVGhlbWVQcm92aWRlci9TdWJUaGVtZVByb3ZpZGVyXCI7XG5pbXBvcnQgeyBBbmltYXRlZEJvcmRlciB9IGZyb20gXCIuLi9VdGlsaXRpZXMvQW5pbWF0ZWRCb3JkZXIvQW5pbWF0ZWRCb3JkZXJcIjtcbmltcG9ydCB7XG4gIFByb21wdElucHV0SGVhZGVyLFxuICB0eXBlIEJhc2VQcm9tcHRJbnB1dEhlYWRlclByb3BzLFxufSBmcm9tIFwiLi9Qcm9tcHRJbnB1dEhlYWRlclwiO1xuXG5jb25zdCBDdXN0b21Db250YWluZXIgPSBzdHlsZWQoQ29udGFpbmVyKTx7XG4gIGhpZGVCb3JkZXI6IGJvb2xlYW47XG4gIGhhc1NoYWRvdzogYm9vbGVhbjtcbn0+KCh7IHRoZW1lLCBoaWRlQm9yZGVyLCBoYXNTaGFkb3cgfSkgPT4gKHtcbiAgYm9yZGVyOiBgMXB4IHNvbGlkICR7dGhlbWUudmFsdWVzLmNvbG9yLmJvcmRlci5wcmltYXJ5LmRlZmF1bHR9YCxcbiAgLi4uKGhhc1NoYWRvdyAmJiB7XG4gICAgYm94U2hhZG93OiB0aGVtZS52YWx1ZXMuc2hhZG93LmRlZmF1bHRSaW5nLFxuICAgIHRyYW5zaXRpb25Qcm9wZXJ0eTogXCJib3gtc2hhZG93LCBib3JkZXItY29sb3IsIG91dGxpbmUtY29sb3JcIixcbiAgICB0cmFuc2l0aW9uRHVyYXRpb246IHRoZW1lLnZhcmlhYmxlcy5hbmltYXRpb24ucHJvbXB0SW5wdXQuZm9jdXMuZHVyYXRpb24sXG4gICAgdHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uOlxuICAgICAgdGhlbWUudmFyaWFibGVzLmFuaW1hdGlvbi5wcm9tcHRJbnB1dC5mb2N1cy50aW1pbmdGdW5jdGlvbixcbiAgfSksXG4gIC4uLihoaWRlQm9yZGVyICYmIHtcbiAgICBib3JkZXJDb2xvcjogXCJ0cmFuc3BhcmVudFwiLFxuICB9KSxcbiAgY3Vyc29yOiBcInRleHRcIixcbiAgb3V0bGluZUNvbG9yOiBcInRyYW5zcGFyZW50XCIsXG4gIFtgJjpoYXModGV4dGFyZWE6Zm9jdXMtdmlzaWJsZSlgXToge1xuICAgIG91dGxpbmVXaWR0aDogMSxcbiAgICBvdXRsaW5lU3R5bGU6IFwic29saWRcIixcbiAgICBvdXRsaW5lT2Zmc2V0OiAtMSxcbiAgICBib3hTaGFkb3c6IHRoZW1lLnZhbHVlcy5zaGFkb3cuZm9jdXNSaW5nLFxuICAgIG91dGxpbmVDb2xvcjogdGhlbWUudmFsdWVzLmNvbG9yLmJvcmRlci5hY2NlbnQuZGVmYXVsdCxcbiAgfSxcbn0pKTtcblxuY29uc3QgU3R5bGVkVGV4dEFyZWFDb250YWluZXIgPSBzdHlsZWQuZGl2KHtcbiAgYm9yZGVyUmFkaXVzOiBcImluaGVyaXRcIixcbiAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgd2lkdGg6IFwiMTAwJVwiLFxufSk7XG5cbmNvbnN0IFN0eWxlZExlZnRJY29uQ29udGFpbmVyID0gc3R5bGVkLmRpdigoeyB0aGVtZSB9KSA9PiAoe1xuICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICB0b3A6IGdldFBhZGRpbmdWZXJ0aWNhbCh0aGVtZSksXG4gIGxlZnQ6IGdldFBhZGRpbmdIb3Jpem9udGFsKHRoZW1lKSxcbn0pKTtcblxudHlwZSBTdHlsZWRFbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50Q29udGFpbmVyUHJvcHMgPSBQaWNrPFxuICBQcm9tcHRJbnB1dFByb3BzLFxuICBcImlzTmF2QmFyVmFyaWFudFwiXG4+O1xuXG5jb25zdCBTdHlsZWRFbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50Q29udGFpbmVyID1cbiAgc3R5bGVkLmRpdjxTdHlsZWRFbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50Q29udGFpbmVyUHJvcHM+KFxuICAgICh7IHRoZW1lLCBpc05hdkJhclZhcmlhbnQgfSkgPT4gKHtcbiAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICB0b3A6IGlzTmF2QmFyVmFyaWFudFxuICAgICAgICA/IHRoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcueHhzXG4gICAgICAgIDogZ2V0UGFkZGluZ1ZlcnRpY2FsKHRoZW1lKSxcbiAgICAgIHJpZ2h0OiBnZXRQYWRkaW5nSG9yaXpvbnRhbCh0aGVtZSksXG4gICAgICB1c2VyU2VsZWN0OiBcIm5vbmVcIixcbiAgICAgIHBvaW50ZXJFdmVudHM6IFwibm9uZVwiLFxuICAgIH0pXG4gICk7XG5cbnR5cGUgU3R5bGVkQ2xlYXJCdXR0b25Qcm9wcyA9IFBpY3RvZ3JhbUJ1dHRvblByb3BzICZcbiAgUGljazxQcm9tcHRJbnB1dFByb3BzLCBcImlzTmF2QmFyVmFyaWFudFwiPjtcblxuY29uc3QgU3R5bGVkQ2xlYXJCdXR0b24gPSBzdHlsZWQoUGljdG9ncmFtQnV0dG9uKTxTdHlsZWRDbGVhckJ1dHRvblByb3BzPihcbiAgKHsgdGhlbWUsIGlzTmF2QmFyVmFyaWFudCB9KSA9PiAoe1xuICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgcmlnaHQ6IHRoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcucyxcbiAgICB0b3A6IGlzTmF2QmFyVmFyaWFudCA/IDAgOiB0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnMsXG4gIH0pXG4pO1xuXG5jb25zdCBTdHlsZWRTbG90c0NvbnRhaW5lciA9IHN0eWxlZC5kaXYoe1xuICBkaXNwbGF5OiBcImZsZXhcIixcbiAgZmxleFdyYXA6IFwid3JhcFwiLFxuICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxufSk7XG5cbi8vIEl0IG5lZWRzIG1hcmdpbiBkdWUgdG8gZW1wdHkgY2xpY2thYmxlIHNwYWNlIHRoYXQgZm9jdXNlcyB0aGUgdGV4dGFyZWFcbi8vIFNsb3RzIHNob3VsZCBub3QgYmUgaW4gdGhlIGRpdiwgYmVjYXVzZSBhcmVhIGJldHdlZW4gc2hvdWxkIGJlIGNsaWNrYWJsZSBhbHNvXG50eXBlIFNsb3RQcm9wcyA9IHtcbiAgc2lkZT86IFwicmlnaHRcIjtcbn07XG5jb25zdCBTdHlsZWRTbG90ID0gc3R5bGVkLmRpdjxTbG90UHJvcHM+KCh7IHRoZW1lLCBzaWRlIH0pID0+ICh7XG4gIG1hcmdpbjogYDAgJHt0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnN9ICR7dGhlbWUudmFyaWFibGVzLnNpemUuc3BhY2luZy5zfWAsXG5cbiAgLi4uKHNpZGUgPT09IFwicmlnaHRcIiAmJiB7XG4gICAgbWFyZ2luTGVmdDogXCJhdXRvXCIsXG4gIH0pLFxufSkpO1xuXG50eXBlIFNlbmRCdXR0b25Qcm9wcyA9IE9taXQ8Um91bmRCdXR0b25Qcm9wcywgXCJpY29uXCIgfCBcInZhcmlhbnRcIj4gJiB7XG4gIGljb24/OiBcImFycm93LXVwXCIgfCBcInNlYXJjaFwiIHwgXCJhcnJvdy1yaWdodFwiIHwgXCJ2b2ljZVwiO1xufTtcblxudHlwZSBCb3R0b21Ub29sYmFyQ29uZmlnID0ge1xuICAvKiogVG9vbGJhciBlbGVtZW50cyBiZWxvdyB0ZXh0IGFyZWEgKi9cbiAgbGVmdENvbnRlbnQ/OiBSZWFjdEVsZW1lbnQ7XG4gIHJpZ2h0Q29udGVudD86IFJlYWN0RWxlbWVudDtcbn07XG5cbmV4cG9ydCB0eXBlIFByb21wdElucHV0UHJvcHMgPSB7XG4gIFwiZGF0YS1lMmUtdGVzdC1pZFwiPzogc3RyaW5nO1xuICBoZWFkZXI/OiBCYXNlUHJvbXB0SW5wdXRIZWFkZXJQcm9wcztcbiAgdmFyaWFudD86IFwiYWlcIjtcbiAgc2tpcEFJQW5pbWF0aW9uPzogYm9vbGVhbjtcbiAgYm90dG9tVG9vbGJhcj86IEJvdHRvbVRvb2xiYXJDb25maWc7XG4gIHNlbmRCdXR0b25Qcm9wcz86IFNlbmRCdXR0b25Qcm9wcztcbiAgLyoqIEN1cnJlbnRseSBzaG93cyBzZW5kIGJ1dHRvbiBwcm9jZXNzaW5nIHN0YXRlICAqL1xuICBpc1Byb2Nlc3Npbmc/OiBib29sZWFuO1xuICBjbGVhckJ1dHRvbkFyaWFMYWJlbD86IHN0cmluZztcbiAgaGludD86IFJlYWN0RWxlbWVudDtcbiAgLyoqIFNob3dzIGluIHRoZSBjbGVhciBidXR0b24gc3BhY2UgaW4gZW1wdHkgc3RhdGUgKi9cbiAgZW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudD86IFJlYWN0RWxlbWVudDtcbiAgb25DbGVhcjogKCkgPT4gdm9pZDtcbiAgLyoqIENhbGxlZCB3aGVuIHVzZXIgc2VsZWN0cyAob3IgcmVqZWN0cykgYSBsaXN0IGl0ZW0gZnJvbSBhdXRvY29tcGxldGUgbGlzdCAqL1xuICBvbkNvbXBsZXRlPzogKHtcbiAgICB2YWx1ZSxcbiAgICBjYXRlZ29yeSxcbiAgICBldnQsXG4gICAgaW5kZXgsXG4gIH06IHtcbiAgICB2YWx1ZTogTGlzdEl0ZW1WYWx1ZTtcbiAgICBjYXRlZ29yeT86IHN0cmluZztcbiAgICBldnQ/OiBTeW50aGV0aWNFdmVudDtcbiAgICBpbmRleD86IG51bWJlcjtcbiAgfSkgPT4gdm9pZDtcbiAgLyoqIENhbGxlZCBvbiBFbnRlciBrZXkgdG8gc3VibWl0IHRoZSBmb3JtICAqL1xuICBvbkVudGVyS2V5OiAoKSA9PiB2b2lkO1xuICAvKiogUmVuZGVycyBhbiBpY29uIHRvIHRoZSBsZWZ0IGluc2lkZSB0aGUgdGV4dGFyZWEgKi9cbiAgbGVmdEljb24/OiBJY29uTmFtZTtcbn0gJiBPbWl0PFxuICBQcm9tcHRUZXh0QXJlYVByb3BzLFxuICBcImlzQ29sbGFwc2VkXCIgfCBcImlzQXV0b2NvbXBsZXRlTGlzdE9wZW5cIiB8IFwic2VsZWN0ZWRMaXN0SXRlbVwiIHwgXCJoYXNMZWZ0SWNvblwiXG4+ICZcbiAgUGljazxcbiAgICBBdXRvY29tcGxldGVMaXN0UHJvcHMsXG4gICAgXCJhdXRvY29tcGxldGVMaXN0SXRlbXNcIiB8IFwiYXV0b2NvbXBsZXRlTGlzdEZvb3RlclwiIHwgXCJwb3J0YWxDb250YWluZXJcIlxuICA+O1xuXG5jb25zdCBkZWZhdWx0U2VuZEJ1dHRvblByb3BzOiBTZW5kQnV0dG9uUHJvcHMgPSB7XG4gIHR5cGU6IFwic3VibWl0XCIgYXMgY29uc3QsXG4gIGljb246IFwiYXJyb3ctdXBcIiBhcyBjb25zdCxcbn07XG5cbmNvbnN0IFByb21wdElucHV0Q29tcG9uZW50ID0gZm9yd2FyZFJlZihcbiAgKFxuICAgIHtcbiAgICAgIFwiZGF0YS1lMmUtdGVzdC1pZFwiOiBkYXRhRTJlVGVzdElkLFxuICAgICAgbmFtZSxcbiAgICAgIGF1dG9jb21wbGV0ZUxpc3RJdGVtcyA9IFtdLFxuICAgICAgdmFsdWUsXG4gICAgICBib3R0b21Ub29sYmFyLFxuICAgICAgaXNQcm9jZXNzaW5nLFxuICAgICAgc2VuZEJ1dHRvblByb3BzLFxuICAgICAgYXV0b2NvbXBsZXRlTGlzdEZvb3RlcixcbiAgICAgIGNsZWFyQnV0dG9uQXJpYUxhYmVsID0gXCJDbGVhciBpbnB1dFwiLFxuICAgICAgaGludCxcbiAgICAgIGVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnQsXG4gICAgICBpc05hdkJhclZhcmlhbnQsXG4gICAgICBwb3J0YWxDb250YWluZXIsXG4gICAgICBsZWZ0SWNvbixcbiAgICAgIGhlYWRlcixcbiAgICAgIG9uQ2hhbmdlLFxuICAgICAgb25Db21wbGV0ZSxcbiAgICAgIG9uQ2xlYXIsXG4gICAgICBvbkVudGVyS2V5LFxuICAgICAgb25Gb2N1cyxcbiAgICAgIG9uQmx1cixcbiAgICAgIG9uS2V5RG93bixcbiAgICAgIHZhcmlhbnQsXG4gICAgICBza2lwQUlBbmltYXRpb24gPSBmYWxzZSxcbiAgICAgIC4uLnJlc3RcbiAgICB9OiBQcm9tcHRJbnB1dFByb3BzLFxuICAgIHJlZjogUmVmT2JqZWN0PEhUTUxUZXh0QXJlYUVsZW1lbnQ+XG4gICk6IFJlYWN0RWxlbWVudCA9PiB7XG4gICAgY29uc3QgY29udGFpbmVyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgICBjb25zdCB0ZXh0QXJlYUNvbnRhaW5lclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gICAgY29uc3QgaW50ZXJuYWxSZWYgPSB1c2VSZWY8SFRNTFRleHRBcmVhRWxlbWVudD4obnVsbCk7XG4gICAgY29uc3QgW3NlbGVjdGVkSW5kZXgsIHNldFNlbGVjdGVkSW5kZXhdID0gdXNlU3RhdGUoLTEpO1xuICAgIGNvbnN0IFtpc0NvbGxhcHNlZCwgc2V0SXNDb2xsYXBzZWRdID0gdXNlU3RhdGUoaXNOYXZCYXJWYXJpYW50KTtcbiAgICBjb25zdCB1c2VyVHlwZWRRdWVyeSA9IHVzZVJlZihcIlwiKTtcbiAgICBjb25zdCBbaXNBdXRvY29tcGxldGVMaXN0T3Blbiwgc2V0SXNBdXRvY29tcGxldGVMaXN0T3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgdGV4dEFyZWFSZWYgPSByZWYgfHwgaW50ZXJuYWxSZWY7XG5cbiAgICBjb25zdCBtZXJnZWRTZW5kQnV0dG9uUHJvcHMgPSB7XG4gICAgICAuLi5kZWZhdWx0U2VuZEJ1dHRvblByb3BzLFxuICAgICAgLi4uKHNlbmRCdXR0b25Qcm9wcyA/PyB7fSksXG4gICAgfTtcblxuICAgIHVzZU91dHNpZGVDbGljayhcbiAgICAgIGNvbnRhaW5lclJlZixcbiAgICAgIChldnQpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICFjb250YWluZXJSZWYuY3VycmVudD8uY29udGFpbnMoZXZ0LnRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgICAgICFwb3J0YWxDb250YWluZXI/LmNvbnRhaW5zKGV2dC50YXJnZXQgYXMgTm9kZSkgJiZcbiAgICAgICAgICBldnQudGFyZ2V0ICE9PSBudWxsXG4gICAgICAgICkge1xuICAgICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgIWlzQ29sbGFwc2VkICYmIGlzTmF2QmFyVmFyaWFudFxuICAgICk7XG5cbiAgICBjb25zdCBjbG9zZUF1dG9jb21wbGV0ZUxpc3QgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBzZXRJc0F1dG9jb21wbGV0ZUxpc3RPcGVuKGZhbHNlKTtcbiAgICAgIHNldFNlbGVjdGVkSW5kZXgoLTEpO1xuICAgIH0sIFtdKTtcblxuICAgIGNvbnN0IG9wZW5BdXRvY29tcGxldGVMaXN0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgaWYgKGF1dG9jb21wbGV0ZUxpc3RJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgc2V0SXNBdXRvY29tcGxldGVMaXN0T3Blbih0cnVlKTtcbiAgICAgICAgc2V0U2VsZWN0ZWRJbmRleCgtMSk7XG4gICAgICB9XG4gICAgfSwgW2F1dG9jb21wbGV0ZUxpc3RJdGVtc10pO1xuXG4gICAgY29uc3QgYWNjZXB0VGV4dFNlbGVjdGlvbiA9ICgpID0+IHtcbiAgICAgIHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQgPSB2YWx1ZTtcbiAgICAgIGlmIChcbiAgICAgICAgdGV4dEFyZWFSZWYuY3VycmVudC5zZWxlY3Rpb25TdGFydCAhPT0gdGV4dEFyZWFSZWYuY3VycmVudC5zZWxlY3Rpb25FbmRcbiAgICAgICkge1xuICAgICAgICB0ZXh0QXJlYVJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKHZhbHVlLmxlbmd0aCwgdmFsdWUubGVuZ3RoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmIChhdXRvY29tcGxldGVMaXN0SXRlbXMubGVuZ3RoICYmICFpc0NvbGxhcHNlZCkge1xuICAgICAgICBvcGVuQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2xvc2VBdXRvY29tcGxldGVMaXN0KCk7XG4gICAgICB9XG4gICAgfSwgW1xuICAgICAgYXV0b2NvbXBsZXRlTGlzdEl0ZW1zLFxuICAgICAgb3BlbkF1dG9jb21wbGV0ZUxpc3QsXG4gICAgICBjbG9zZUF1dG9jb21wbGV0ZUxpc3QsXG4gICAgICBpc0NvbGxhcHNlZCxcbiAgICBdKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAodmFsdWUgJiYgdmFsdWUgIT09IHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQgJiYgaXNBdXRvY29tcGxldGVMaXN0T3Blbikge1xuICAgICAgICB0ZXh0QXJlYVJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKFxuICAgICAgICAgIHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQubGVuZ3RoLFxuICAgICAgICAgIHZhbHVlLmxlbmd0aFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0sIFt2YWx1ZSwgdGV4dEFyZWFSZWYsIGlzQXV0b2NvbXBsZXRlTGlzdE9wZW5dKTtcblxuICAgIC8vIERldGVybWluZSB3aGVuIGZvY3VzIGxlYXZlcyB0aGUgY29udGFpbmVyIHRvIGNvbGxhcHNlIGl0XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGxldCBoYW5kbGVyOiAoZXZ0OiBGb2N1c0V2ZW50KSA9PiB2b2lkO1xuICAgICAgY29uc3QgY29udGFpbmVyID0gY29udGFpbmVyUmVmLmN1cnJlbnQ7XG5cbiAgICAgIGlmIChpc05hdkJhclZhcmlhbnQgJiYgY29udGFpbmVyKSB7XG4gICAgICAgIGhhbmRsZXIgPSAoZXZ0OiBGb2N1c0V2ZW50KSA9PiB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgIWNvbnRhaW5lclJlZi5jdXJyZW50Py5jb250YWlucyhldnQucmVsYXRlZFRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgICAgICAgIXBvcnRhbENvbnRhaW5lcj8uY29udGFpbnMoZXZ0LnJlbGF0ZWRUYXJnZXQgYXMgTm9kZSkgJiZcbiAgICAgICAgICAgIGV2dC5yZWxhdGVkVGFyZ2V0ICE9PSBudWxsXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBzZXRJc0NvbGxhcHNlZCh0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwiZm9jdXNvdXRcIiwgaGFuZGxlcik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImZvY3Vzb3V0XCIsIGhhbmRsZXIpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0sIFtpc05hdkJhclZhcmlhbnQsIGNvbnRhaW5lclJlZiwgcG9ydGFsQ29udGFpbmVyXSk7XG5cbiAgICBjb25zdCBmbGF0dGVuZWRMaXN0SXRlbXMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGNvbnN0IGxpc3Q6IEZsYXR0ZW5lZExpc3RJdGVtW10gPSBbXTtcblxuICAgICAgYXV0b2NvbXBsZXRlTGlzdEl0ZW1zLmZvckVhY2goKGxpc3RJdGVtKSA9PiB7XG4gICAgICAgIGxpc3RJdGVtLml0ZW1zLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgbGlzdC5wdXNoKHtcbiAgICAgICAgICAgIGNhdGVnb3J5OiBsaXN0SXRlbS5jYXRlZ29yeSxcbiAgICAgICAgICAgIGluZGV4SW5DYXRlZ29yeTogaW5kZXgsXG4gICAgICAgICAgICB2YWx1ZTogaXRlbS52YWx1ZSxcbiAgICAgICAgICAgIGlkOiBnZXRMaXN0SXRlbUlkKG5hbWUsIGxpc3RJdGVtLmNhdGVnb3J5LCBpbmRleCksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gbGlzdDtcbiAgICB9LCBbYXV0b2NvbXBsZXRlTGlzdEl0ZW1zLCBuYW1lXSk7XG5cbiAgICBjb25zdCBoYW5kbGVTZWxlY3RlZEluZGV4Q2hhbmdlID0gKGluZGV4OiBudW1iZXIsIGV2dD86IFN5bnRoZXRpY0V2ZW50KSA9PiB7XG4gICAgICBzZXRTZWxlY3RlZEluZGV4KGluZGV4KTtcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgY29uc3QgeyBjYXRlZ29yeSwgdmFsdWU6IGl0ZW1WYWx1ZSB9ID0gZmxhdHRlbmVkTGlzdEl0ZW1zW2luZGV4XTtcblxuICAgICAgICBvbkNvbXBsZXRlKHsgdmFsdWU6IGl0ZW1WYWx1ZSwgY2F0ZWdvcnksIGV2dCwgaW5kZXggfSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZUxpc3RJdGVtQ2xpY2sgPSAoXG4gICAgICBjYXRlZ29yeTogc3RyaW5nLFxuICAgICAgaW5kZXhJbkNhdGVnb3J5OiBudW1iZXIsXG4gICAgICBldnQ/OiBNb3VzZUV2ZW50XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IGZsYXR0ZW5lZExpc3RJdGVtcy5maW5kSW5kZXgoXG4gICAgICAgIChsaXN0SXRlbSkgPT5cbiAgICAgICAgICBsaXN0SXRlbS5jYXRlZ29yeSA9PT0gY2F0ZWdvcnkgJiZcbiAgICAgICAgICBsaXN0SXRlbS5pbmRleEluQ2F0ZWdvcnkgPT09IGluZGV4SW5DYXRlZ29yeVxuICAgICAgKTtcblxuICAgICAgaGFuZGxlU2VsZWN0ZWRJbmRleENoYW5nZShpbmRleCwgZXZ0KTtcbiAgICAgIGNsb3NlQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgaWYgKGlzTmF2QmFyVmFyaWFudCkge1xuICAgICAgICBzZXRJc0NvbGxhcHNlZCh0cnVlKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlS2V5RG93bjogS2V5Ym9hcmRFdmVudEhhbmRsZXI8SFRNTFRleHRBcmVhRWxlbWVudD4gPSAoZXZ0KSA9PiB7XG4gICAgICBpZiAoaXNBdXRvY29tcGxldGVMaXN0T3Blbikge1xuICAgICAgICBzd2l0Y2ggKGV2dC5rZXkpIHtcbiAgICAgICAgICBjYXNlIFwiRXNjYXBlXCI6XG4gICAgICAgICAgICBjbG9zZUF1dG9jb21wbGV0ZUxpc3QoKTtcbiAgICAgICAgICAgIG9uQ29tcGxldGUoeyB2YWx1ZTogdXNlclR5cGVkUXVlcnkuY3VycmVudCwgZXZ0IH0pO1xuICAgICAgICAgICAgaWYgKGlzTmF2QmFyVmFyaWFudCkge1xuICAgICAgICAgICAgICBzZXRJc0NvbGxhcHNlZCh0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgXCJFbnRlclwiOlxuICAgICAgICAgICAgaWYgKCFldnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgIGNsb3NlQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgICAgICAgICBhY2NlcHRUZXh0U2VsZWN0aW9uKCk7XG5cbiAgICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgb25FbnRlcktleT8uKCk7XG4gICAgICAgICAgICAgICAgaWYgKGlzTmF2QmFyVmFyaWFudCkge1xuICAgICAgICAgICAgICAgICAgc2V0SXNDb2xsYXBzZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFwiIFwiOlxuICAgICAgICAgICAgYWNjZXB0VGV4dFNlbGVjdGlvbigpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBcIkFycm93VXBcIjpcbiAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgaWYgKHNlbGVjdGVkSW5kZXggPiAtMSkge1xuICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RlZEluZGV4Q2hhbmdlKHNlbGVjdGVkSW5kZXggLSAxLCBldnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBcIkFycm93RG93blwiOlxuICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRJbmRleCA8IGZsYXR0ZW5lZExpc3RJdGVtcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgIGhhbmRsZVNlbGVjdGVkSW5kZXhDaGFuZ2Uoc2VsZWN0ZWRJbmRleCArIDEsIGV2dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2l0Y2ggKGV2dC5rZXkpIHtcbiAgICAgICAgICBjYXNlIFwiRXNjYXBlXCI6XG4gICAgICAgICAgICBvbkNsZWFyPy4oKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgXCJFbnRlclwiOlxuICAgICAgICAgICAgaWYgKCFldnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIG9uRW50ZXJLZXk/LigpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgb25LZXlEb3duPy4oZXZ0KTtcbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlOiBDaGFuZ2VFdmVudEhhbmRsZXI8SFRNTFRleHRBcmVhRWxlbWVudD4gPSAoZXZ0KSA9PiB7XG4gICAgICB1c2VyVHlwZWRRdWVyeS5jdXJyZW50ID0gZXZ0LnRhcmdldC52YWx1ZTtcbiAgICAgIG9uQ2hhbmdlKGV2dCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZUZvY3VzOiBGb2N1c0V2ZW50SGFuZGxlcjxIVE1MVGV4dEFyZWFFbGVtZW50PiA9IChldnQpID0+IHtcbiAgICAgIHNldElzQ29sbGFwc2VkKGZhbHNlKTtcbiAgICAgIG9uRm9jdXM/LihldnQpO1xuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVCbHVyOiBGb2N1c0V2ZW50SGFuZGxlcjxIVE1MVGV4dEFyZWFFbGVtZW50PiA9IChldnQpID0+IHtcbiAgICAgIGlmICh2YWx1ZSAhPT0gdXNlclR5cGVkUXVlcnkuY3VycmVudCkge1xuICAgICAgICBvbkNvbXBsZXRlPy4oeyB2YWx1ZTogdXNlclR5cGVkUXVlcnkuY3VycmVudCwgZXZ0IH0pO1xuICAgICAgfVxuICAgICAgb25CbHVyPy4oZXZ0KTtcbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlU2VuZEJ1dHRvbkNsaWNrID0gKGV2dDogTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4pID0+IHtcbiAgICAgIG1lcmdlZFNlbmRCdXR0b25Qcm9wcy5vbkNsaWNrPy4oZXZ0KTtcbiAgICAgIGNsb3NlQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgaWYgKGlzTmF2QmFyVmFyaWFudCkge1xuICAgICAgICBzZXRJc0NvbGxhcHNlZCh0cnVlKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlUHJldmVudEZvY3VzID0gKGV2dDogUmVhY3QuUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAvLyBQcmV2ZW50IHRoZSB0ZXh0YXJlYSBmcm9tIGJlaW5nIHVuZm9jdXNlZFxuICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZU9uQ29udGFpbmVyUG9pbnRlckRvd24gPSAoZXZ0OiBSZWFjdC5Qb2ludGVyRXZlbnQpID0+IHtcbiAgICAgIC8vIEZvY3VzIHRleHRhcmVhIHdoZW4gY2xpY2tpbmcgb24gdGhlIGNvbnRhaW5lciBvbmx5XG4gICAgICBpZiAoZXZ0LnRhcmdldCA9PT0gZXZ0LmN1cnJlbnRUYXJnZXQpIHtcbiAgICAgICAgdGV4dEFyZWFSZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IHNlbGVjdGVkTGlzdEl0ZW0gPVxuICAgICAgc2VsZWN0ZWRJbmRleCAhPT0gLTEgPyBmbGF0dGVuZWRMaXN0SXRlbXNbc2VsZWN0ZWRJbmRleF0gOiBudWxsO1xuXG4gICAgY29uc3QgZW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudEVsbSA9IGVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnQgPyAoXG4gICAgICA8U3R5bGVkRW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudENvbnRhaW5lclxuICAgICAgICBpc05hdkJhclZhcmlhbnQ9e2lzTmF2QmFyVmFyaWFudH1cbiAgICAgID5cbiAgICAgICAgPFRleHQgY29sb3I9XCJ0ZXJ0aWFyeVwiPntlbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50fTwvVGV4dD5cbiAgICAgIDwvU3R5bGVkRW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudENvbnRhaW5lcj5cbiAgICApIDogbnVsbDtcblxuICAgIGNvbnN0IGNsZWFyQnV0dG9uRWxtID0gdmFsdWUgPyAoXG4gICAgICA8U3R5bGVkQ2xlYXJCdXR0b25cbiAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgIGljb249XCJ4LWNpcmNsZS1maWxsZWRcIlxuICAgICAgICBhcmlhLWxhYmVsPXtjbGVhckJ1dHRvbkFyaWFMYWJlbH1cbiAgICAgICAgaXNOYXZCYXJWYXJpYW50PXtpc05hdkJhclZhcmlhbnR9XG4gICAgICAgIG9uUG9pbnRlckRvd249e2hhbmRsZVByZXZlbnRGb2N1c31cbiAgICAgICAgb25DbGljaz17b25DbGVhcn1cbiAgICAgIC8+XG4gICAgKSA6IChcbiAgICAgIGVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnRFbG1cbiAgICApO1xuXG4gICAgY29uc3QgaGludEVsbSA9ICEhaGludCAmJiAoXG4gICAgICA8SW5saW5lIGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAgPFRleHQgc2l6ZT1cInNcIiBjb2xvcj1cInRlcnRpYXJ5XCI+XG4gICAgICAgICAge2hpbnR9XG4gICAgICAgIDwvVGV4dD5cbiAgICAgIDwvSW5saW5lPlxuICAgICk7XG5cbiAgICBjb25zdCBib3R0b21Ub29sYmFyRWxtID0gKGJvdHRvbVRvb2xiYXI/LnJpZ2h0Q29udGVudCB8fFxuICAgICAgYm90dG9tVG9vbGJhcj8ubGVmdENvbnRlbnQgfHxcbiAgICAgICEhc2VuZEJ1dHRvblByb3BzKSAmJlxuICAgICAgIWlzQ29sbGFwc2VkICYmIChcbiAgICAgICAgPD5cbiAgICAgICAgICB7Ym90dG9tVG9vbGJhcj8ubGVmdENvbnRlbnQgJiYgKFxuICAgICAgICAgICAgPFN0eWxlZFNsb3Q+e2JvdHRvbVRvb2xiYXIubGVmdENvbnRlbnR9PC9TdHlsZWRTbG90PlxuICAgICAgICAgICl9XG4gICAgICAgICAgPFN0eWxlZFNsb3QgZGF0YS1lMmUtdGVzdC1pZD1cImJvdHRvbVRvb2xiYXJcIiBzaWRlPVwicmlnaHRcIj5cbiAgICAgICAgICAgIDxJbmxpbmUgc3BhY2U9XCJ4c1wiIHZBbGlnbkl0ZW1zPVwiY2VudGVyXCI+XG4gICAgICAgICAgICAgIHtib3R0b21Ub29sYmFyPy5yaWdodENvbnRlbnR9XG4gICAgICAgICAgICAgIHtzZW5kQnV0dG9uUHJvcHMgJiYgKFxuICAgICAgICAgICAgICAgIDxTdWJUaGVtZVByb3ZpZGVyIG5hbWU9e3ZhcmlhbnR9PlxuICAgICAgICAgICAgICAgICAgPFJvdW5kQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGFyaWFBdHRyaWJ1dGVzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgXCJhcmlhLWxhYmVsXCI6IGlzUHJvY2Vzc2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBcIlByb2Nlc3NpbmcgcXVlcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBcIlN1Ym1pdCBxdWVyeVwiLFxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICB7Li4ubWVyZ2VkU2VuZEJ1dHRvblByb3BzfVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17bWVyZ2VkU2VuZEJ1dHRvblByb3BzLmRpc2FibGVkID8/ICF2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlU2VuZEJ1dHRvbkNsaWNrfVxuICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJEb3duPXtoYW5kbGVQcmV2ZW50Rm9jdXN9XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgaWNvbj17XG4gICAgICAgICAgICAgICAgICAgICAgaXNQcm9jZXNzaW5nID8gXCJzdG9wLWZpbGxlZFwiIDogbWVyZ2VkU2VuZEJ1dHRvblByb3BzLmljb25cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1N1YlRoZW1lUHJvdmlkZXI+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0lubGluZT5cbiAgICAgICAgICA8L1N0eWxlZFNsb3Q+XG4gICAgICAgIDwvPlxuICAgICAgKTtcblxuICAgIGNvbnN0IGJvcmRlclJhZGl1c1NpemU6IEJvcmRlclJhZGl1cyA9IGlzQ29sbGFwc2VkID8gXCJ4c1wiIDogXCJtXCI7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGRhdGEtZTJlLXRlc3QtaWQ9e2RhdGFFMmVUZXN0SWR9XG4gICAgICAgICAgZGF0YS1kcy1pZD1cIlByb21wdElucHV0XCJcbiAgICAgICAgICByZWY9e2NvbnRhaW5lclJlZn1cbiAgICAgICAgICAvLyBUcmFuc2xhdGlvbiBkaXNhYmxlZCBmb3IgY29uc2lzdGVuY3kgd2l0aCB0aGUgYXV0b2NvbXBsZXRlIGxpc3RcbiAgICAgICAgICB0cmFuc2xhdGU9XCJub1wiXG4gICAgICAgID5cbiAgICAgICAgICA8U3RhY2sgc3BhY2U9XCJzXCI+XG4gICAgICAgICAgICA8QW5pbWF0ZWRCb3JkZXJcbiAgICAgICAgICAgICAgc2tpcEFuaW1hdGlvbj17c2tpcEFJQW5pbWF0aW9uIHx8IHZhcmlhbnQgIT09IFwiYWlcIn1cbiAgICAgICAgICAgICAgcmFkaXVzPXsxMn1cbiAgICAgICAgICAgICAgaXRlcmF0aW9ucz17MX1cbiAgICAgICAgICAgICAgdGhpY2tuZXNzPXsyfVxuICAgICAgICAgICAgICBoaWRlQ2hpbGRCb3JkZXJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPFN1YlRoZW1lUHJvdmlkZXIgbmFtZT17dmFyaWFudH0+XG4gICAgICAgICAgICAgICAgPEN1c3RvbUNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgZWxldmF0aW9uPXswfVxuICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzPXtib3JkZXJSYWRpdXNTaXplfVxuICAgICAgICAgICAgICAgICAgaGlkZUJvcmRlcj17aXNDb2xsYXBzZWR9XG4gICAgICAgICAgICAgICAgICBoYXNTaGFkb3c9eyFpc05hdkJhclZhcmlhbnR9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN1YlRoZW1lUHJvdmlkZXIgbmFtZT1cInVuc2V0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxTdHlsZWRTbG90c0NvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgIHJlZj17dGV4dEFyZWFDb250YWluZXJSZWZ9XG4gICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyRG93bj17aGFuZGxlT25Db250YWluZXJQb2ludGVyRG93bn1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtoZWFkZXIgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFByb21wdElucHV0SGVhZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5oZWFkZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1c1NpemU9e2JvcmRlclJhZGl1c1NpemV9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZFRleHRBcmVhQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAge2xlZnRJY29uICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZExlZnRJY29uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPXtsZWZ0SWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwidGVydGlhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZExlZnRJY29uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxQcm9tcHRUZXh0QXJlYVxuICAgICAgICAgICAgICAgICAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUUyZVRlc3RJZD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUUyZVRlc3RJZCA/IGAke2RhdGFFMmVUZXN0SWR9LWlucHV0YCA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXt0ZXh0QXJlYVJlZn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNOYXZCYXJWYXJpYW50PXtpc05hdkJhclZhcmlhbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkTGlzdEl0ZW09e3NlbGVjdGVkTGlzdEl0ZW19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzQXV0b2NvbXBsZXRlTGlzdE9wZW49e2lzQXV0b2NvbXBsZXRlTGlzdE9wZW59XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzQ29sbGFwc2VkPXtpc0NvbGxhcHNlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzTGVmdEljb249eyEhbGVmdEljb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uRm9jdXM9e2hhbmRsZUZvY3VzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93bn1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICB7Y2xlYXJCdXR0b25FbG19XG4gICAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWRUZXh0QXJlYUNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICB7Ym90dG9tVG9vbGJhckVsbX1cbiAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWRTbG90c0NvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvU3ViVGhlbWVQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L0N1c3RvbUNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9TdWJUaGVtZVByb3ZpZGVyPlxuICAgICAgICAgICAgPC9BbmltYXRlZEJvcmRlcj5cbiAgICAgICAgICAgIHtoaW50RWxtfVxuICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxBdXRvY29tcGxldGVMaXN0XG4gICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgYXV0b2NvbXBsZXRlTGlzdEl0ZW1zPXthdXRvY29tcGxldGVMaXN0SXRlbXN9XG4gICAgICAgICAgdHJpZ2dlclJlZj17dGV4dEFyZWFDb250YWluZXJSZWZ9XG4gICAgICAgICAgc2VsZWN0ZWRMaXN0SXRlbT17c2VsZWN0ZWRMaXN0SXRlbX1cbiAgICAgICAgICBpc09wZW49e2lzQXV0b2NvbXBsZXRlTGlzdE9wZW59XG4gICAgICAgICAgYXV0b2NvbXBsZXRlTGlzdEZvb3Rlcj17YXV0b2NvbXBsZXRlTGlzdEZvb3Rlcn1cbiAgICAgICAgICBwb3J0YWxDb250YWluZXI9e3BvcnRhbENvbnRhaW5lcn1cbiAgICAgICAgICBvbkxpc3RJdGVtQ2xpY2s9e2hhbmRsZUxpc3RJdGVtQ2xpY2t9XG4gICAgICAgIC8+XG4gICAgICA8Lz5cbiAgICApO1xuICB9XG4pO1xuXG5jb25zdCBDdXN0b21CdXR0b24gPSBzdHlsZWQoQnV0dG9uKSgoeyB0aGVtZSB9KSA9PiAoe1xuICBib3JkZXJSYWRpdXM6IHRoZW1lLnZhcmlhYmxlcy5zaXplLmJvcmRlclJhZGl1cy5sLFxufSkpO1xuXG4vLyBuZWVkIHRvIHNpbXBsaWZ5IHRoaXMgdHlwZSBmb3IgcmV1c2VcbmNvbnN0IFN1Z2dlc3Rpb25CdXR0b24gPSBmb3J3YXJkUmVmKFxuICA8QyBleHRlbmRzIFJlYWN0LkVsZW1lbnRUeXBlID0gXCJidXR0b25cIj4oXG4gICAgcHJvcHM6IFBvbHltb3JwaGljQ29tcG9uZW50UHJvcHNXaXRoUmVmPFxuICAgICAgQyxcbiAgICAgIE9taXQ8QnV0dG9uUHJvcHMsIFwidmFyaWFudFwiIHwgXCJzaXplXCIgfCBcInJlZlwiPlxuICAgID4sXG4gICAgcmVmOiBQb2x5bW9ycGhpY1JlZjxDPlxuICApID0+IDxDdXN0b21CdXR0b24gey4uLnByb3BzfSB2YXJpYW50PVwic2Vjb25kYXJ5XCIgc2l6ZT1cInNcIiByZWY9e3JlZn0gLz5cbik7XG5cbmV4cG9ydCBjb25zdCBQcm9tcHRJbnB1dCA9IE9iamVjdC5hc3NpZ24oUHJvbXB0SW5wdXRDb21wb25lbnQsIHtcbiAgU3VnZ2VzdGlvbkJ1dHRvbixcbn0pIGFzIHR5cGVvZiBQcm9tcHRJbnB1dENvbXBvbmVudCAmIHtcbiAgU3VnZ2VzdGlvbkJ1dHRvbjogdHlwZW9mIFN1Z2dlc3Rpb25CdXR0b247XG59O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTBGZ0MifQ== */"),StyledEmptyStateTopRightContentContainer=(0,_styled.default)("div",{target:"e1fprshj3",label:"StyledEmptyStateTopRightContentContainer"})(({theme,isNavBarVariant})=>({position:"absolute",top:isNavBarVariant?theme.variables.size.spacing.xxs:(0,_PromptTextArea.getPaddingVertical)(theme),right:(0,_PromptTextArea.getPaddingHorizontal)(theme),userSelect:"none",pointerEvents:"none"}),"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvUHJvbXB0SW5wdXQvUHJvbXB0SW5wdXQudHN4Iiwic291cmNlcyI6WyJzcmMvY29tcG9uZW50cy9Qcm9tcHRJbnB1dC9Qcm9tcHRJbnB1dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBSZWFjdEVsZW1lbnQsXG4gIENoYW5nZUV2ZW50SGFuZGxlcixcbiAgS2V5Ym9hcmRFdmVudEhhbmRsZXIsXG4gIFJlZk9iamVjdCxcbiAgRm9jdXNFdmVudEhhbmRsZXIsXG4gIFN5bnRoZXRpY0V2ZW50LFxuICBNb3VzZUV2ZW50LFxufSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IFJlYWN0LCB7XG4gIHVzZVJlZixcbiAgdXNlTWVtbyxcbiAgdXNlU3RhdGUsXG4gIHVzZUVmZmVjdCxcbiAgdXNlQ2FsbGJhY2ssXG4gIGZvcndhcmRSZWYsXG59IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5cbmltcG9ydCB0eXBlIHsgUHJvbXB0VGV4dEFyZWFQcm9wcyB9IGZyb20gXCIuL1Byb21wdFRleHRBcmVhXCI7XG5pbXBvcnQge1xuICBQcm9tcHRUZXh0QXJlYSxcbiAgZ2V0UGFkZGluZ0hvcml6b250YWwsXG4gIGdldFBhZGRpbmdWZXJ0aWNhbCxcbn0gZnJvbSBcIi4vUHJvbXB0VGV4dEFyZWFcIjtcbmltcG9ydCB7IENvbnRhaW5lciB9IGZyb20gXCIuLi9Db250YWluZXJcIjtcbmltcG9ydCB0eXBlIHsgQXV0b2NvbXBsZXRlTGlzdFByb3BzIH0gZnJvbSBcIi4vQXV0b2NvbXBsZXRlTGlzdFwiO1xuXG5pbXBvcnQgeyBBdXRvY29tcGxldGVMaXN0IH0gZnJvbSBcIi4vQXV0b2NvbXBsZXRlTGlzdFwiO1xuaW1wb3J0IHtcbiAgZ2V0TGlzdEl0ZW1JZCxcbiAgdHlwZSBGbGF0dGVuZWRMaXN0SXRlbSxcbiAgdHlwZSBMaXN0SXRlbVZhbHVlLFxufSBmcm9tIFwiLi9DYXRlZ29yeUxpc3RcIjtcbmltcG9ydCB7IFRleHQgfSBmcm9tIFwiLi4vVHlwb2dyYXBoeS9UZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24sIHR5cGUgQnV0dG9uUHJvcHMgfSBmcm9tIFwiLi4vQnV0dG9uL0J1dHRvblwiO1xuaW1wb3J0IHR5cGUge1xuICBQb2x5bW9ycGhpY1JlZixcbiAgUG9seW1vcnBoaWNDb21wb25lbnRQcm9wc1dpdGhSZWYsXG4gIEJvcmRlclJhZGl1cyxcbn0gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5pbXBvcnQgeyBJbmxpbmUgfSBmcm9tIFwiLi4vSW5saW5lL0lubGluZVwiO1xuaW1wb3J0IHR5cGUgeyBSb3VuZEJ1dHRvblByb3BzIH0gZnJvbSBcIi4uL1JvdW5kQnV0dG9uL1JvdW5kQnV0dG9uXCI7XG5pbXBvcnQgeyBSb3VuZEJ1dHRvbiB9IGZyb20gXCIuLi9Sb3VuZEJ1dHRvbi9Sb3VuZEJ1dHRvblwiO1xuaW1wb3J0IHR5cGUgeyBQaWN0b2dyYW1CdXR0b25Qcm9wcyB9IGZyb20gXCIuLi9QaWN0b2dyYW1CdXR0b24vUGljdG9ncmFtQnV0dG9uXCI7XG5pbXBvcnQgeyBQaWN0b2dyYW1CdXR0b24gfSBmcm9tIFwiLi4vUGljdG9ncmFtQnV0dG9uL1BpY3RvZ3JhbUJ1dHRvblwiO1xuaW1wb3J0IHsgU3RhY2sgfSBmcm9tIFwiLi4vU3RhY2svU3RhY2tcIjtcbmltcG9ydCB7IHVzZU91dHNpZGVDbGljayB9IGZyb20gXCIuLi8uLi9zaGFyZWQvdXNlT3V0c2lkZUNsaWNrXCI7XG5pbXBvcnQgdHlwZSB7IEljb25OYW1lIH0gZnJvbSBcIi4uL0ljb24vSWNvblwiO1xuaW1wb3J0IHsgSWNvbiB9IGZyb20gXCIuLi9JY29uL0ljb25cIjtcbmltcG9ydCB7IFN1YlRoZW1lUHJvdmlkZXIgfSBmcm9tIFwiLi4vU3ViVGhlbWVQcm92aWRlci9TdWJUaGVtZVByb3ZpZGVyXCI7XG5pbXBvcnQgeyBBbmltYXRlZEJvcmRlciB9IGZyb20gXCIuLi9VdGlsaXRpZXMvQW5pbWF0ZWRCb3JkZXIvQW5pbWF0ZWRCb3JkZXJcIjtcbmltcG9ydCB7XG4gIFByb21wdElucHV0SGVhZGVyLFxuICB0eXBlIEJhc2VQcm9tcHRJbnB1dEhlYWRlclByb3BzLFxufSBmcm9tIFwiLi9Qcm9tcHRJbnB1dEhlYWRlclwiO1xuXG5jb25zdCBDdXN0b21Db250YWluZXIgPSBzdHlsZWQoQ29udGFpbmVyKTx7XG4gIGhpZGVCb3JkZXI6IGJvb2xlYW47XG4gIGhhc1NoYWRvdzogYm9vbGVhbjtcbn0+KCh7IHRoZW1lLCBoaWRlQm9yZGVyLCBoYXNTaGFkb3cgfSkgPT4gKHtcbiAgYm9yZGVyOiBgMXB4IHNvbGlkICR7dGhlbWUudmFsdWVzLmNvbG9yLmJvcmRlci5wcmltYXJ5LmRlZmF1bHR9YCxcbiAgLi4uKGhhc1NoYWRvdyAmJiB7XG4gICAgYm94U2hhZG93OiB0aGVtZS52YWx1ZXMuc2hhZG93LmRlZmF1bHRSaW5nLFxuICAgIHRyYW5zaXRpb25Qcm9wZXJ0eTogXCJib3gtc2hhZG93LCBib3JkZXItY29sb3IsIG91dGxpbmUtY29sb3JcIixcbiAgICB0cmFuc2l0aW9uRHVyYXRpb246IHRoZW1lLnZhcmlhYmxlcy5hbmltYXRpb24ucHJvbXB0SW5wdXQuZm9jdXMuZHVyYXRpb24sXG4gICAgdHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uOlxuICAgICAgdGhlbWUudmFyaWFibGVzLmFuaW1hdGlvbi5wcm9tcHRJbnB1dC5mb2N1cy50aW1pbmdGdW5jdGlvbixcbiAgfSksXG4gIC4uLihoaWRlQm9yZGVyICYmIHtcbiAgICBib3JkZXJDb2xvcjogXCJ0cmFuc3BhcmVudFwiLFxuICB9KSxcbiAgY3Vyc29yOiBcInRleHRcIixcbiAgb3V0bGluZUNvbG9yOiBcInRyYW5zcGFyZW50XCIsXG4gIFtgJjpoYXModGV4dGFyZWE6Zm9jdXMtdmlzaWJsZSlgXToge1xuICAgIG91dGxpbmVXaWR0aDogMSxcbiAgICBvdXRsaW5lU3R5bGU6IFwic29saWRcIixcbiAgICBvdXRsaW5lT2Zmc2V0OiAtMSxcbiAgICBib3hTaGFkb3c6IHRoZW1lLnZhbHVlcy5zaGFkb3cuZm9jdXNSaW5nLFxuICAgIG91dGxpbmVDb2xvcjogdGhlbWUudmFsdWVzLmNvbG9yLmJvcmRlci5hY2NlbnQuZGVmYXVsdCxcbiAgfSxcbn0pKTtcblxuY29uc3QgU3R5bGVkVGV4dEFyZWFDb250YWluZXIgPSBzdHlsZWQuZGl2KHtcbiAgYm9yZGVyUmFkaXVzOiBcImluaGVyaXRcIixcbiAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgd2lkdGg6IFwiMTAwJVwiLFxufSk7XG5cbmNvbnN0IFN0eWxlZExlZnRJY29uQ29udGFpbmVyID0gc3R5bGVkLmRpdigoeyB0aGVtZSB9KSA9PiAoe1xuICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICB0b3A6IGdldFBhZGRpbmdWZXJ0aWNhbCh0aGVtZSksXG4gIGxlZnQ6IGdldFBhZGRpbmdIb3Jpem9udGFsKHRoZW1lKSxcbn0pKTtcblxudHlwZSBTdHlsZWRFbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50Q29udGFpbmVyUHJvcHMgPSBQaWNrPFxuICBQcm9tcHRJbnB1dFByb3BzLFxuICBcImlzTmF2QmFyVmFyaWFudFwiXG4+O1xuXG5jb25zdCBTdHlsZWRFbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50Q29udGFpbmVyID1cbiAgc3R5bGVkLmRpdjxTdHlsZWRFbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50Q29udGFpbmVyUHJvcHM+KFxuICAgICh7IHRoZW1lLCBpc05hdkJhclZhcmlhbnQgfSkgPT4gKHtcbiAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICB0b3A6IGlzTmF2QmFyVmFyaWFudFxuICAgICAgICA/IHRoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcueHhzXG4gICAgICAgIDogZ2V0UGFkZGluZ1ZlcnRpY2FsKHRoZW1lKSxcbiAgICAgIHJpZ2h0OiBnZXRQYWRkaW5nSG9yaXpvbnRhbCh0aGVtZSksXG4gICAgICB1c2VyU2VsZWN0OiBcIm5vbmVcIixcbiAgICAgIHBvaW50ZXJFdmVudHM6IFwibm9uZVwiLFxuICAgIH0pXG4gICk7XG5cbnR5cGUgU3R5bGVkQ2xlYXJCdXR0b25Qcm9wcyA9IFBpY3RvZ3JhbUJ1dHRvblByb3BzICZcbiAgUGljazxQcm9tcHRJbnB1dFByb3BzLCBcImlzTmF2QmFyVmFyaWFudFwiPjtcblxuY29uc3QgU3R5bGVkQ2xlYXJCdXR0b24gPSBzdHlsZWQoUGljdG9ncmFtQnV0dG9uKTxTdHlsZWRDbGVhckJ1dHRvblByb3BzPihcbiAgKHsgdGhlbWUsIGlzTmF2QmFyVmFyaWFudCB9KSA9PiAoe1xuICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgcmlnaHQ6IHRoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcucyxcbiAgICB0b3A6IGlzTmF2QmFyVmFyaWFudCA/IDAgOiB0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnMsXG4gIH0pXG4pO1xuXG5jb25zdCBTdHlsZWRTbG90c0NvbnRhaW5lciA9IHN0eWxlZC5kaXYoe1xuICBkaXNwbGF5OiBcImZsZXhcIixcbiAgZmxleFdyYXA6IFwid3JhcFwiLFxuICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxufSk7XG5cbi8vIEl0IG5lZWRzIG1hcmdpbiBkdWUgdG8gZW1wdHkgY2xpY2thYmxlIHNwYWNlIHRoYXQgZm9jdXNlcyB0aGUgdGV4dGFyZWFcbi8vIFNsb3RzIHNob3VsZCBub3QgYmUgaW4gdGhlIGRpdiwgYmVjYXVzZSBhcmVhIGJldHdlZW4gc2hvdWxkIGJlIGNsaWNrYWJsZSBhbHNvXG50eXBlIFNsb3RQcm9wcyA9IHtcbiAgc2lkZT86IFwicmlnaHRcIjtcbn07XG5jb25zdCBTdHlsZWRTbG90ID0gc3R5bGVkLmRpdjxTbG90UHJvcHM+KCh7IHRoZW1lLCBzaWRlIH0pID0+ICh7XG4gIG1hcmdpbjogYDAgJHt0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnN9ICR7dGhlbWUudmFyaWFibGVzLnNpemUuc3BhY2luZy5zfWAsXG5cbiAgLi4uKHNpZGUgPT09IFwicmlnaHRcIiAmJiB7XG4gICAgbWFyZ2luTGVmdDogXCJhdXRvXCIsXG4gIH0pLFxufSkpO1xuXG50eXBlIFNlbmRCdXR0b25Qcm9wcyA9IE9taXQ8Um91bmRCdXR0b25Qcm9wcywgXCJpY29uXCIgfCBcInZhcmlhbnRcIj4gJiB7XG4gIGljb24/OiBcImFycm93LXVwXCIgfCBcInNlYXJjaFwiIHwgXCJhcnJvdy1yaWdodFwiIHwgXCJ2b2ljZVwiO1xufTtcblxudHlwZSBCb3R0b21Ub29sYmFyQ29uZmlnID0ge1xuICAvKiogVG9vbGJhciBlbGVtZW50cyBiZWxvdyB0ZXh0IGFyZWEgKi9cbiAgbGVmdENvbnRlbnQ/OiBSZWFjdEVsZW1lbnQ7XG4gIHJpZ2h0Q29udGVudD86IFJlYWN0RWxlbWVudDtcbn07XG5cbmV4cG9ydCB0eXBlIFByb21wdElucHV0UHJvcHMgPSB7XG4gIFwiZGF0YS1lMmUtdGVzdC1pZFwiPzogc3RyaW5nO1xuICBoZWFkZXI/OiBCYXNlUHJvbXB0SW5wdXRIZWFkZXJQcm9wcztcbiAgdmFyaWFudD86IFwiYWlcIjtcbiAgc2tpcEFJQW5pbWF0aW9uPzogYm9vbGVhbjtcbiAgYm90dG9tVG9vbGJhcj86IEJvdHRvbVRvb2xiYXJDb25maWc7XG4gIHNlbmRCdXR0b25Qcm9wcz86IFNlbmRCdXR0b25Qcm9wcztcbiAgLyoqIEN1cnJlbnRseSBzaG93cyBzZW5kIGJ1dHRvbiBwcm9jZXNzaW5nIHN0YXRlICAqL1xuICBpc1Byb2Nlc3Npbmc/OiBib29sZWFuO1xuICBjbGVhckJ1dHRvbkFyaWFMYWJlbD86IHN0cmluZztcbiAgaGludD86IFJlYWN0RWxlbWVudDtcbiAgLyoqIFNob3dzIGluIHRoZSBjbGVhciBidXR0b24gc3BhY2UgaW4gZW1wdHkgc3RhdGUgKi9cbiAgZW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudD86IFJlYWN0RWxlbWVudDtcbiAgb25DbGVhcjogKCkgPT4gdm9pZDtcbiAgLyoqIENhbGxlZCB3aGVuIHVzZXIgc2VsZWN0cyAob3IgcmVqZWN0cykgYSBsaXN0IGl0ZW0gZnJvbSBhdXRvY29tcGxldGUgbGlzdCAqL1xuICBvbkNvbXBsZXRlPzogKHtcbiAgICB2YWx1ZSxcbiAgICBjYXRlZ29yeSxcbiAgICBldnQsXG4gICAgaW5kZXgsXG4gIH06IHtcbiAgICB2YWx1ZTogTGlzdEl0ZW1WYWx1ZTtcbiAgICBjYXRlZ29yeT86IHN0cmluZztcbiAgICBldnQ/OiBTeW50aGV0aWNFdmVudDtcbiAgICBpbmRleD86IG51bWJlcjtcbiAgfSkgPT4gdm9pZDtcbiAgLyoqIENhbGxlZCBvbiBFbnRlciBrZXkgdG8gc3VibWl0IHRoZSBmb3JtICAqL1xuICBvbkVudGVyS2V5OiAoKSA9PiB2b2lkO1xuICAvKiogUmVuZGVycyBhbiBpY29uIHRvIHRoZSBsZWZ0IGluc2lkZSB0aGUgdGV4dGFyZWEgKi9cbiAgbGVmdEljb24/OiBJY29uTmFtZTtcbn0gJiBPbWl0PFxuICBQcm9tcHRUZXh0QXJlYVByb3BzLFxuICBcImlzQ29sbGFwc2VkXCIgfCBcImlzQXV0b2NvbXBsZXRlTGlzdE9wZW5cIiB8IFwic2VsZWN0ZWRMaXN0SXRlbVwiIHwgXCJoYXNMZWZ0SWNvblwiXG4+ICZcbiAgUGljazxcbiAgICBBdXRvY29tcGxldGVMaXN0UHJvcHMsXG4gICAgXCJhdXRvY29tcGxldGVMaXN0SXRlbXNcIiB8IFwiYXV0b2NvbXBsZXRlTGlzdEZvb3RlclwiIHwgXCJwb3J0YWxDb250YWluZXJcIlxuICA+O1xuXG5jb25zdCBkZWZhdWx0U2VuZEJ1dHRvblByb3BzOiBTZW5kQnV0dG9uUHJvcHMgPSB7XG4gIHR5cGU6IFwic3VibWl0XCIgYXMgY29uc3QsXG4gIGljb246IFwiYXJyb3ctdXBcIiBhcyBjb25zdCxcbn07XG5cbmNvbnN0IFByb21wdElucHV0Q29tcG9uZW50ID0gZm9yd2FyZFJlZihcbiAgKFxuICAgIHtcbiAgICAgIFwiZGF0YS1lMmUtdGVzdC1pZFwiOiBkYXRhRTJlVGVzdElkLFxuICAgICAgbmFtZSxcbiAgICAgIGF1dG9jb21wbGV0ZUxpc3RJdGVtcyA9IFtdLFxuICAgICAgdmFsdWUsXG4gICAgICBib3R0b21Ub29sYmFyLFxuICAgICAgaXNQcm9jZXNzaW5nLFxuICAgICAgc2VuZEJ1dHRvblByb3BzLFxuICAgICAgYXV0b2NvbXBsZXRlTGlzdEZvb3RlcixcbiAgICAgIGNsZWFyQnV0dG9uQXJpYUxhYmVsID0gXCJDbGVhciBpbnB1dFwiLFxuICAgICAgaGludCxcbiAgICAgIGVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnQsXG4gICAgICBpc05hdkJhclZhcmlhbnQsXG4gICAgICBwb3J0YWxDb250YWluZXIsXG4gICAgICBsZWZ0SWNvbixcbiAgICAgIGhlYWRlcixcbiAgICAgIG9uQ2hhbmdlLFxuICAgICAgb25Db21wbGV0ZSxcbiAgICAgIG9uQ2xlYXIsXG4gICAgICBvbkVudGVyS2V5LFxuICAgICAgb25Gb2N1cyxcbiAgICAgIG9uQmx1cixcbiAgICAgIG9uS2V5RG93bixcbiAgICAgIHZhcmlhbnQsXG4gICAgICBza2lwQUlBbmltYXRpb24gPSBmYWxzZSxcbiAgICAgIC4uLnJlc3RcbiAgICB9OiBQcm9tcHRJbnB1dFByb3BzLFxuICAgIHJlZjogUmVmT2JqZWN0PEhUTUxUZXh0QXJlYUVsZW1lbnQ+XG4gICk6IFJlYWN0RWxlbWVudCA9PiB7XG4gICAgY29uc3QgY29udGFpbmVyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgICBjb25zdCB0ZXh0QXJlYUNvbnRhaW5lclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gICAgY29uc3QgaW50ZXJuYWxSZWYgPSB1c2VSZWY8SFRNTFRleHRBcmVhRWxlbWVudD4obnVsbCk7XG4gICAgY29uc3QgW3NlbGVjdGVkSW5kZXgsIHNldFNlbGVjdGVkSW5kZXhdID0gdXNlU3RhdGUoLTEpO1xuICAgIGNvbnN0IFtpc0NvbGxhcHNlZCwgc2V0SXNDb2xsYXBzZWRdID0gdXNlU3RhdGUoaXNOYXZCYXJWYXJpYW50KTtcbiAgICBjb25zdCB1c2VyVHlwZWRRdWVyeSA9IHVzZVJlZihcIlwiKTtcbiAgICBjb25zdCBbaXNBdXRvY29tcGxldGVMaXN0T3Blbiwgc2V0SXNBdXRvY29tcGxldGVMaXN0T3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgdGV4dEFyZWFSZWYgPSByZWYgfHwgaW50ZXJuYWxSZWY7XG5cbiAgICBjb25zdCBtZXJnZWRTZW5kQnV0dG9uUHJvcHMgPSB7XG4gICAgICAuLi5kZWZhdWx0U2VuZEJ1dHRvblByb3BzLFxuICAgICAgLi4uKHNlbmRCdXR0b25Qcm9wcyA/PyB7fSksXG4gICAgfTtcblxuICAgIHVzZU91dHNpZGVDbGljayhcbiAgICAgIGNvbnRhaW5lclJlZixcbiAgICAgIChldnQpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICFjb250YWluZXJSZWYuY3VycmVudD8uY29udGFpbnMoZXZ0LnRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgICAgICFwb3J0YWxDb250YWluZXI/LmNvbnRhaW5zKGV2dC50YXJnZXQgYXMgTm9kZSkgJiZcbiAgICAgICAgICBldnQudGFyZ2V0ICE9PSBudWxsXG4gICAgICAgICkge1xuICAgICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgIWlzQ29sbGFwc2VkICYmIGlzTmF2QmFyVmFyaWFudFxuICAgICk7XG5cbiAgICBjb25zdCBjbG9zZUF1dG9jb21wbGV0ZUxpc3QgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBzZXRJc0F1dG9jb21wbGV0ZUxpc3RPcGVuKGZhbHNlKTtcbiAgICAgIHNldFNlbGVjdGVkSW5kZXgoLTEpO1xuICAgIH0sIFtdKTtcblxuICAgIGNvbnN0IG9wZW5BdXRvY29tcGxldGVMaXN0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgaWYgKGF1dG9jb21wbGV0ZUxpc3RJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgc2V0SXNBdXRvY29tcGxldGVMaXN0T3Blbih0cnVlKTtcbiAgICAgICAgc2V0U2VsZWN0ZWRJbmRleCgtMSk7XG4gICAgICB9XG4gICAgfSwgW2F1dG9jb21wbGV0ZUxpc3RJdGVtc10pO1xuXG4gICAgY29uc3QgYWNjZXB0VGV4dFNlbGVjdGlvbiA9ICgpID0+IHtcbiAgICAgIHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQgPSB2YWx1ZTtcbiAgICAgIGlmIChcbiAgICAgICAgdGV4dEFyZWFSZWYuY3VycmVudC5zZWxlY3Rpb25TdGFydCAhPT0gdGV4dEFyZWFSZWYuY3VycmVudC5zZWxlY3Rpb25FbmRcbiAgICAgICkge1xuICAgICAgICB0ZXh0QXJlYVJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKHZhbHVlLmxlbmd0aCwgdmFsdWUubGVuZ3RoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmIChhdXRvY29tcGxldGVMaXN0SXRlbXMubGVuZ3RoICYmICFpc0NvbGxhcHNlZCkge1xuICAgICAgICBvcGVuQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2xvc2VBdXRvY29tcGxldGVMaXN0KCk7XG4gICAgICB9XG4gICAgfSwgW1xuICAgICAgYXV0b2NvbXBsZXRlTGlzdEl0ZW1zLFxuICAgICAgb3BlbkF1dG9jb21wbGV0ZUxpc3QsXG4gICAgICBjbG9zZUF1dG9jb21wbGV0ZUxpc3QsXG4gICAgICBpc0NvbGxhcHNlZCxcbiAgICBdKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAodmFsdWUgJiYgdmFsdWUgIT09IHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQgJiYgaXNBdXRvY29tcGxldGVMaXN0T3Blbikge1xuICAgICAgICB0ZXh0QXJlYVJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKFxuICAgICAgICAgIHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQubGVuZ3RoLFxuICAgICAgICAgIHZhbHVlLmxlbmd0aFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0sIFt2YWx1ZSwgdGV4dEFyZWFSZWYsIGlzQXV0b2NvbXBsZXRlTGlzdE9wZW5dKTtcblxuICAgIC8vIERldGVybWluZSB3aGVuIGZvY3VzIGxlYXZlcyB0aGUgY29udGFpbmVyIHRvIGNvbGxhcHNlIGl0XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGxldCBoYW5kbGVyOiAoZXZ0OiBGb2N1c0V2ZW50KSA9PiB2b2lkO1xuICAgICAgY29uc3QgY29udGFpbmVyID0gY29udGFpbmVyUmVmLmN1cnJlbnQ7XG5cbiAgICAgIGlmIChpc05hdkJhclZhcmlhbnQgJiYgY29udGFpbmVyKSB7XG4gICAgICAgIGhhbmRsZXIgPSAoZXZ0OiBGb2N1c0V2ZW50KSA9PiB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgIWNvbnRhaW5lclJlZi5jdXJyZW50Py5jb250YWlucyhldnQucmVsYXRlZFRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgICAgICAgIXBvcnRhbENvbnRhaW5lcj8uY29udGFpbnMoZXZ0LnJlbGF0ZWRUYXJnZXQgYXMgTm9kZSkgJiZcbiAgICAgICAgICAgIGV2dC5yZWxhdGVkVGFyZ2V0ICE9PSBudWxsXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBzZXRJc0NvbGxhcHNlZCh0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwiZm9jdXNvdXRcIiwgaGFuZGxlcik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImZvY3Vzb3V0XCIsIGhhbmRsZXIpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0sIFtpc05hdkJhclZhcmlhbnQsIGNvbnRhaW5lclJlZiwgcG9ydGFsQ29udGFpbmVyXSk7XG5cbiAgICBjb25zdCBmbGF0dGVuZWRMaXN0SXRlbXMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGNvbnN0IGxpc3Q6IEZsYXR0ZW5lZExpc3RJdGVtW10gPSBbXTtcblxuICAgICAgYXV0b2NvbXBsZXRlTGlzdEl0ZW1zLmZvckVhY2goKGxpc3RJdGVtKSA9PiB7XG4gICAgICAgIGxpc3RJdGVtLml0ZW1zLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgbGlzdC5wdXNoKHtcbiAgICAgICAgICAgIGNhdGVnb3J5OiBsaXN0SXRlbS5jYXRlZ29yeSxcbiAgICAgICAgICAgIGluZGV4SW5DYXRlZ29yeTogaW5kZXgsXG4gICAgICAgICAgICB2YWx1ZTogaXRlbS52YWx1ZSxcbiAgICAgICAgICAgIGlkOiBnZXRMaXN0SXRlbUlkKG5hbWUsIGxpc3RJdGVtLmNhdGVnb3J5LCBpbmRleCksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gbGlzdDtcbiAgICB9LCBbYXV0b2NvbXBsZXRlTGlzdEl0ZW1zLCBuYW1lXSk7XG5cbiAgICBjb25zdCBoYW5kbGVTZWxlY3RlZEluZGV4Q2hhbmdlID0gKGluZGV4OiBudW1iZXIsIGV2dD86IFN5bnRoZXRpY0V2ZW50KSA9PiB7XG4gICAgICBzZXRTZWxlY3RlZEluZGV4KGluZGV4KTtcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgY29uc3QgeyBjYXRlZ29yeSwgdmFsdWU6IGl0ZW1WYWx1ZSB9ID0gZmxhdHRlbmVkTGlzdEl0ZW1zW2luZGV4XTtcblxuICAgICAgICBvbkNvbXBsZXRlKHsgdmFsdWU6IGl0ZW1WYWx1ZSwgY2F0ZWdvcnksIGV2dCwgaW5kZXggfSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZUxpc3RJdGVtQ2xpY2sgPSAoXG4gICAgICBjYXRlZ29yeTogc3RyaW5nLFxuICAgICAgaW5kZXhJbkNhdGVnb3J5OiBudW1iZXIsXG4gICAgICBldnQ/OiBNb3VzZUV2ZW50XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IGZsYXR0ZW5lZExpc3RJdGVtcy5maW5kSW5kZXgoXG4gICAgICAgIChsaXN0SXRlbSkgPT5cbiAgICAgICAgICBsaXN0SXRlbS5jYXRlZ29yeSA9PT0gY2F0ZWdvcnkgJiZcbiAgICAgICAgICBsaXN0SXRlbS5pbmRleEluQ2F0ZWdvcnkgPT09IGluZGV4SW5DYXRlZ29yeVxuICAgICAgKTtcblxuICAgICAgaGFuZGxlU2VsZWN0ZWRJbmRleENoYW5nZShpbmRleCwgZXZ0KTtcbiAgICAgIGNsb3NlQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgaWYgKGlzTmF2QmFyVmFyaWFudCkge1xuICAgICAgICBzZXRJc0NvbGxhcHNlZCh0cnVlKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlS2V5RG93bjogS2V5Ym9hcmRFdmVudEhhbmRsZXI8SFRNTFRleHRBcmVhRWxlbWVudD4gPSAoZXZ0KSA9PiB7XG4gICAgICBpZiAoaXNBdXRvY29tcGxldGVMaXN0T3Blbikge1xuICAgICAgICBzd2l0Y2ggKGV2dC5rZXkpIHtcbiAgICAgICAgICBjYXNlIFwiRXNjYXBlXCI6XG4gICAgICAgICAgICBjbG9zZUF1dG9jb21wbGV0ZUxpc3QoKTtcbiAgICAgICAgICAgIG9uQ29tcGxldGUoeyB2YWx1ZTogdXNlclR5cGVkUXVlcnkuY3VycmVudCwgZXZ0IH0pO1xuICAgICAgICAgICAgaWYgKGlzTmF2QmFyVmFyaWFudCkge1xuICAgICAgICAgICAgICBzZXRJc0NvbGxhcHNlZCh0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgXCJFbnRlclwiOlxuICAgICAgICAgICAgaWYgKCFldnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgIGNsb3NlQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgICAgICAgICBhY2NlcHRUZXh0U2VsZWN0aW9uKCk7XG5cbiAgICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgb25FbnRlcktleT8uKCk7XG4gICAgICAgICAgICAgICAgaWYgKGlzTmF2QmFyVmFyaWFudCkge1xuICAgICAgICAgICAgICAgICAgc2V0SXNDb2xsYXBzZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFwiIFwiOlxuICAgICAgICAgICAgYWNjZXB0VGV4dFNlbGVjdGlvbigpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBcIkFycm93VXBcIjpcbiAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgaWYgKHNlbGVjdGVkSW5kZXggPiAtMSkge1xuICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RlZEluZGV4Q2hhbmdlKHNlbGVjdGVkSW5kZXggLSAxLCBldnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBcIkFycm93RG93blwiOlxuICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRJbmRleCA8IGZsYXR0ZW5lZExpc3RJdGVtcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgIGhhbmRsZVNlbGVjdGVkSW5kZXhDaGFuZ2Uoc2VsZWN0ZWRJbmRleCArIDEsIGV2dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2l0Y2ggKGV2dC5rZXkpIHtcbiAgICAgICAgICBjYXNlIFwiRXNjYXBlXCI6XG4gICAgICAgICAgICBvbkNsZWFyPy4oKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgXCJFbnRlclwiOlxuICAgICAgICAgICAgaWYgKCFldnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIG9uRW50ZXJLZXk/LigpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgb25LZXlEb3duPy4oZXZ0KTtcbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlOiBDaGFuZ2VFdmVudEhhbmRsZXI8SFRNTFRleHRBcmVhRWxlbWVudD4gPSAoZXZ0KSA9PiB7XG4gICAgICB1c2VyVHlwZWRRdWVyeS5jdXJyZW50ID0gZXZ0LnRhcmdldC52YWx1ZTtcbiAgICAgIG9uQ2hhbmdlKGV2dCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZUZvY3VzOiBGb2N1c0V2ZW50SGFuZGxlcjxIVE1MVGV4dEFyZWFFbGVtZW50PiA9IChldnQpID0+IHtcbiAgICAgIHNldElzQ29sbGFwc2VkKGZhbHNlKTtcbiAgICAgIG9uRm9jdXM/LihldnQpO1xuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVCbHVyOiBGb2N1c0V2ZW50SGFuZGxlcjxIVE1MVGV4dEFyZWFFbGVtZW50PiA9IChldnQpID0+IHtcbiAgICAgIGlmICh2YWx1ZSAhPT0gdXNlclR5cGVkUXVlcnkuY3VycmVudCkge1xuICAgICAgICBvbkNvbXBsZXRlPy4oeyB2YWx1ZTogdXNlclR5cGVkUXVlcnkuY3VycmVudCwgZXZ0IH0pO1xuICAgICAgfVxuICAgICAgb25CbHVyPy4oZXZ0KTtcbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlU2VuZEJ1dHRvbkNsaWNrID0gKGV2dDogTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4pID0+IHtcbiAgICAgIG1lcmdlZFNlbmRCdXR0b25Qcm9wcy5vbkNsaWNrPy4oZXZ0KTtcbiAgICAgIGNsb3NlQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgaWYgKGlzTmF2QmFyVmFyaWFudCkge1xuICAgICAgICBzZXRJc0NvbGxhcHNlZCh0cnVlKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlUHJldmVudEZvY3VzID0gKGV2dDogUmVhY3QuUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAvLyBQcmV2ZW50IHRoZSB0ZXh0YXJlYSBmcm9tIGJlaW5nIHVuZm9jdXNlZFxuICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZU9uQ29udGFpbmVyUG9pbnRlckRvd24gPSAoZXZ0OiBSZWFjdC5Qb2ludGVyRXZlbnQpID0+IHtcbiAgICAgIC8vIEZvY3VzIHRleHRhcmVhIHdoZW4gY2xpY2tpbmcgb24gdGhlIGNvbnRhaW5lciBvbmx5XG4gICAgICBpZiAoZXZ0LnRhcmdldCA9PT0gZXZ0LmN1cnJlbnRUYXJnZXQpIHtcbiAgICAgICAgdGV4dEFyZWFSZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IHNlbGVjdGVkTGlzdEl0ZW0gPVxuICAgICAgc2VsZWN0ZWRJbmRleCAhPT0gLTEgPyBmbGF0dGVuZWRMaXN0SXRlbXNbc2VsZWN0ZWRJbmRleF0gOiBudWxsO1xuXG4gICAgY29uc3QgZW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudEVsbSA9IGVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnQgPyAoXG4gICAgICA8U3R5bGVkRW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudENvbnRhaW5lclxuICAgICAgICBpc05hdkJhclZhcmlhbnQ9e2lzTmF2QmFyVmFyaWFudH1cbiAgICAgID5cbiAgICAgICAgPFRleHQgY29sb3I9XCJ0ZXJ0aWFyeVwiPntlbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50fTwvVGV4dD5cbiAgICAgIDwvU3R5bGVkRW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudENvbnRhaW5lcj5cbiAgICApIDogbnVsbDtcblxuICAgIGNvbnN0IGNsZWFyQnV0dG9uRWxtID0gdmFsdWUgPyAoXG4gICAgICA8U3R5bGVkQ2xlYXJCdXR0b25cbiAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgIGljb249XCJ4LWNpcmNsZS1maWxsZWRcIlxuICAgICAgICBhcmlhLWxhYmVsPXtjbGVhckJ1dHRvbkFyaWFMYWJlbH1cbiAgICAgICAgaXNOYXZCYXJWYXJpYW50PXtpc05hdkJhclZhcmlhbnR9XG4gICAgICAgIG9uUG9pbnRlckRvd249e2hhbmRsZVByZXZlbnRGb2N1c31cbiAgICAgICAgb25DbGljaz17b25DbGVhcn1cbiAgICAgIC8+XG4gICAgKSA6IChcbiAgICAgIGVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnRFbG1cbiAgICApO1xuXG4gICAgY29uc3QgaGludEVsbSA9ICEhaGludCAmJiAoXG4gICAgICA8SW5saW5lIGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAgPFRleHQgc2l6ZT1cInNcIiBjb2xvcj1cInRlcnRpYXJ5XCI+XG4gICAgICAgICAge2hpbnR9XG4gICAgICAgIDwvVGV4dD5cbiAgICAgIDwvSW5saW5lPlxuICAgICk7XG5cbiAgICBjb25zdCBib3R0b21Ub29sYmFyRWxtID0gKGJvdHRvbVRvb2xiYXI/LnJpZ2h0Q29udGVudCB8fFxuICAgICAgYm90dG9tVG9vbGJhcj8ubGVmdENvbnRlbnQgfHxcbiAgICAgICEhc2VuZEJ1dHRvblByb3BzKSAmJlxuICAgICAgIWlzQ29sbGFwc2VkICYmIChcbiAgICAgICAgPD5cbiAgICAgICAgICB7Ym90dG9tVG9vbGJhcj8ubGVmdENvbnRlbnQgJiYgKFxuICAgICAgICAgICAgPFN0eWxlZFNsb3Q+e2JvdHRvbVRvb2xiYXIubGVmdENvbnRlbnR9PC9TdHlsZWRTbG90PlxuICAgICAgICAgICl9XG4gICAgICAgICAgPFN0eWxlZFNsb3QgZGF0YS1lMmUtdGVzdC1pZD1cImJvdHRvbVRvb2xiYXJcIiBzaWRlPVwicmlnaHRcIj5cbiAgICAgICAgICAgIDxJbmxpbmUgc3BhY2U9XCJ4c1wiIHZBbGlnbkl0ZW1zPVwiY2VudGVyXCI+XG4gICAgICAgICAgICAgIHtib3R0b21Ub29sYmFyPy5yaWdodENvbnRlbnR9XG4gICAgICAgICAgICAgIHtzZW5kQnV0dG9uUHJvcHMgJiYgKFxuICAgICAgICAgICAgICAgIDxTdWJUaGVtZVByb3ZpZGVyIG5hbWU9e3ZhcmlhbnR9PlxuICAgICAgICAgICAgICAgICAgPFJvdW5kQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGFyaWFBdHRyaWJ1dGVzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgXCJhcmlhLWxhYmVsXCI6IGlzUHJvY2Vzc2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBcIlByb2Nlc3NpbmcgcXVlcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBcIlN1Ym1pdCBxdWVyeVwiLFxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICB7Li4ubWVyZ2VkU2VuZEJ1dHRvblByb3BzfVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17bWVyZ2VkU2VuZEJ1dHRvblByb3BzLmRpc2FibGVkID8/ICF2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlU2VuZEJ1dHRvbkNsaWNrfVxuICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJEb3duPXtoYW5kbGVQcmV2ZW50Rm9jdXN9XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgaWNvbj17XG4gICAgICAgICAgICAgICAgICAgICAgaXNQcm9jZXNzaW5nID8gXCJzdG9wLWZpbGxlZFwiIDogbWVyZ2VkU2VuZEJ1dHRvblByb3BzLmljb25cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1N1YlRoZW1lUHJvdmlkZXI+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0lubGluZT5cbiAgICAgICAgICA8L1N0eWxlZFNsb3Q+XG4gICAgICAgIDwvPlxuICAgICAgKTtcblxuICAgIGNvbnN0IGJvcmRlclJhZGl1c1NpemU6IEJvcmRlclJhZGl1cyA9IGlzQ29sbGFwc2VkID8gXCJ4c1wiIDogXCJtXCI7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGRhdGEtZTJlLXRlc3QtaWQ9e2RhdGFFMmVUZXN0SWR9XG4gICAgICAgICAgZGF0YS1kcy1pZD1cIlByb21wdElucHV0XCJcbiAgICAgICAgICByZWY9e2NvbnRhaW5lclJlZn1cbiAgICAgICAgICAvLyBUcmFuc2xhdGlvbiBkaXNhYmxlZCBmb3IgY29uc2lzdGVuY3kgd2l0aCB0aGUgYXV0b2NvbXBsZXRlIGxpc3RcbiAgICAgICAgICB0cmFuc2xhdGU9XCJub1wiXG4gICAgICAgID5cbiAgICAgICAgICA8U3RhY2sgc3BhY2U9XCJzXCI+XG4gICAgICAgICAgICA8QW5pbWF0ZWRCb3JkZXJcbiAgICAgICAgICAgICAgc2tpcEFuaW1hdGlvbj17c2tpcEFJQW5pbWF0aW9uIHx8IHZhcmlhbnQgIT09IFwiYWlcIn1cbiAgICAgICAgICAgICAgcmFkaXVzPXsxMn1cbiAgICAgICAgICAgICAgaXRlcmF0aW9ucz17MX1cbiAgICAgICAgICAgICAgdGhpY2tuZXNzPXsyfVxuICAgICAgICAgICAgICBoaWRlQ2hpbGRCb3JkZXJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPFN1YlRoZW1lUHJvdmlkZXIgbmFtZT17dmFyaWFudH0+XG4gICAgICAgICAgICAgICAgPEN1c3RvbUNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgZWxldmF0aW9uPXswfVxuICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzPXtib3JkZXJSYWRpdXNTaXplfVxuICAgICAgICAgICAgICAgICAgaGlkZUJvcmRlcj17aXNDb2xsYXBzZWR9XG4gICAgICAgICAgICAgICAgICBoYXNTaGFkb3c9eyFpc05hdkJhclZhcmlhbnR9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN1YlRoZW1lUHJvdmlkZXIgbmFtZT1cInVuc2V0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxTdHlsZWRTbG90c0NvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgIHJlZj17dGV4dEFyZWFDb250YWluZXJSZWZ9XG4gICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyRG93bj17aGFuZGxlT25Db250YWluZXJQb2ludGVyRG93bn1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtoZWFkZXIgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFByb21wdElucHV0SGVhZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5oZWFkZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1c1NpemU9e2JvcmRlclJhZGl1c1NpemV9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZFRleHRBcmVhQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAge2xlZnRJY29uICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZExlZnRJY29uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPXtsZWZ0SWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwidGVydGlhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZExlZnRJY29uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxQcm9tcHRUZXh0QXJlYVxuICAgICAgICAgICAgICAgICAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUUyZVRlc3RJZD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUUyZVRlc3RJZCA/IGAke2RhdGFFMmVUZXN0SWR9LWlucHV0YCA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXt0ZXh0QXJlYVJlZn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNOYXZCYXJWYXJpYW50PXtpc05hdkJhclZhcmlhbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkTGlzdEl0ZW09e3NlbGVjdGVkTGlzdEl0ZW19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzQXV0b2NvbXBsZXRlTGlzdE9wZW49e2lzQXV0b2NvbXBsZXRlTGlzdE9wZW59XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzQ29sbGFwc2VkPXtpc0NvbGxhcHNlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzTGVmdEljb249eyEhbGVmdEljb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uRm9jdXM9e2hhbmRsZUZvY3VzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93bn1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICB7Y2xlYXJCdXR0b25FbG19XG4gICAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWRUZXh0QXJlYUNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICB7Ym90dG9tVG9vbGJhckVsbX1cbiAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWRTbG90c0NvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvU3ViVGhlbWVQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L0N1c3RvbUNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9TdWJUaGVtZVByb3ZpZGVyPlxuICAgICAgICAgICAgPC9BbmltYXRlZEJvcmRlcj5cbiAgICAgICAgICAgIHtoaW50RWxtfVxuICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxBdXRvY29tcGxldGVMaXN0XG4gICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgYXV0b2NvbXBsZXRlTGlzdEl0ZW1zPXthdXRvY29tcGxldGVMaXN0SXRlbXN9XG4gICAgICAgICAgdHJpZ2dlclJlZj17dGV4dEFyZWFDb250YWluZXJSZWZ9XG4gICAgICAgICAgc2VsZWN0ZWRMaXN0SXRlbT17c2VsZWN0ZWRMaXN0SXRlbX1cbiAgICAgICAgICBpc09wZW49e2lzQXV0b2NvbXBsZXRlTGlzdE9wZW59XG4gICAgICAgICAgYXV0b2NvbXBsZXRlTGlzdEZvb3Rlcj17YXV0b2NvbXBsZXRlTGlzdEZvb3Rlcn1cbiAgICAgICAgICBwb3J0YWxDb250YWluZXI9e3BvcnRhbENvbnRhaW5lcn1cbiAgICAgICAgICBvbkxpc3RJdGVtQ2xpY2s9e2hhbmRsZUxpc3RJdGVtQ2xpY2t9XG4gICAgICAgIC8+XG4gICAgICA8Lz5cbiAgICApO1xuICB9XG4pO1xuXG5jb25zdCBDdXN0b21CdXR0b24gPSBzdHlsZWQoQnV0dG9uKSgoeyB0aGVtZSB9KSA9PiAoe1xuICBib3JkZXJSYWRpdXM6IHRoZW1lLnZhcmlhYmxlcy5zaXplLmJvcmRlclJhZGl1cy5sLFxufSkpO1xuXG4vLyBuZWVkIHRvIHNpbXBsaWZ5IHRoaXMgdHlwZSBmb3IgcmV1c2VcbmNvbnN0IFN1Z2dlc3Rpb25CdXR0b24gPSBmb3J3YXJkUmVmKFxuICA8QyBleHRlbmRzIFJlYWN0LkVsZW1lbnRUeXBlID0gXCJidXR0b25cIj4oXG4gICAgcHJvcHM6IFBvbHltb3JwaGljQ29tcG9uZW50UHJvcHNXaXRoUmVmPFxuICAgICAgQyxcbiAgICAgIE9taXQ8QnV0dG9uUHJvcHMsIFwidmFyaWFudFwiIHwgXCJzaXplXCIgfCBcInJlZlwiPlxuICAgID4sXG4gICAgcmVmOiBQb2x5bW9ycGhpY1JlZjxDPlxuICApID0+IDxDdXN0b21CdXR0b24gey4uLnByb3BzfSB2YXJpYW50PVwic2Vjb25kYXJ5XCIgc2l6ZT1cInNcIiByZWY9e3JlZn0gLz5cbik7XG5cbmV4cG9ydCBjb25zdCBQcm9tcHRJbnB1dCA9IE9iamVjdC5hc3NpZ24oUHJvbXB0SW5wdXRDb21wb25lbnQsIHtcbiAgU3VnZ2VzdGlvbkJ1dHRvbixcbn0pIGFzIHR5cGVvZiBQcm9tcHRJbnB1dENvbXBvbmVudCAmIHtcbiAgU3VnZ2VzdGlvbkJ1dHRvbjogdHlwZW9mIFN1Z2dlc3Rpb25CdXR0b247XG59O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXNHRSJ9 */"),StyledClearButton=(0,_styled.default)(_PictogramButton.PictogramButton,{target:"e1fprshj4",label:"StyledClearButton"})(({theme,isNavBarVariant})=>({position:"absolute",right:theme.variables.size.spacing.s,top:isNavBarVariant?0:theme.variables.size.spacing.s}),"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvUHJvbXB0SW5wdXQvUHJvbXB0SW5wdXQudHN4Iiwic291cmNlcyI6WyJzcmMvY29tcG9uZW50cy9Qcm9tcHRJbnB1dC9Qcm9tcHRJbnB1dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBSZWFjdEVsZW1lbnQsXG4gIENoYW5nZUV2ZW50SGFuZGxlcixcbiAgS2V5Ym9hcmRFdmVudEhhbmRsZXIsXG4gIFJlZk9iamVjdCxcbiAgRm9jdXNFdmVudEhhbmRsZXIsXG4gIFN5bnRoZXRpY0V2ZW50LFxuICBNb3VzZUV2ZW50LFxufSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IFJlYWN0LCB7XG4gIHVzZVJlZixcbiAgdXNlTWVtbyxcbiAgdXNlU3RhdGUsXG4gIHVzZUVmZmVjdCxcbiAgdXNlQ2FsbGJhY2ssXG4gIGZvcndhcmRSZWYsXG59IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5cbmltcG9ydCB0eXBlIHsgUHJvbXB0VGV4dEFyZWFQcm9wcyB9IGZyb20gXCIuL1Byb21wdFRleHRBcmVhXCI7XG5pbXBvcnQge1xuICBQcm9tcHRUZXh0QXJlYSxcbiAgZ2V0UGFkZGluZ0hvcml6b250YWwsXG4gIGdldFBhZGRpbmdWZXJ0aWNhbCxcbn0gZnJvbSBcIi4vUHJvbXB0VGV4dEFyZWFcIjtcbmltcG9ydCB7IENvbnRhaW5lciB9IGZyb20gXCIuLi9Db250YWluZXJcIjtcbmltcG9ydCB0eXBlIHsgQXV0b2NvbXBsZXRlTGlzdFByb3BzIH0gZnJvbSBcIi4vQXV0b2NvbXBsZXRlTGlzdFwiO1xuXG5pbXBvcnQgeyBBdXRvY29tcGxldGVMaXN0IH0gZnJvbSBcIi4vQXV0b2NvbXBsZXRlTGlzdFwiO1xuaW1wb3J0IHtcbiAgZ2V0TGlzdEl0ZW1JZCxcbiAgdHlwZSBGbGF0dGVuZWRMaXN0SXRlbSxcbiAgdHlwZSBMaXN0SXRlbVZhbHVlLFxufSBmcm9tIFwiLi9DYXRlZ29yeUxpc3RcIjtcbmltcG9ydCB7IFRleHQgfSBmcm9tIFwiLi4vVHlwb2dyYXBoeS9UZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24sIHR5cGUgQnV0dG9uUHJvcHMgfSBmcm9tIFwiLi4vQnV0dG9uL0J1dHRvblwiO1xuaW1wb3J0IHR5cGUge1xuICBQb2x5bW9ycGhpY1JlZixcbiAgUG9seW1vcnBoaWNDb21wb25lbnRQcm9wc1dpdGhSZWYsXG4gIEJvcmRlclJhZGl1cyxcbn0gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5pbXBvcnQgeyBJbmxpbmUgfSBmcm9tIFwiLi4vSW5saW5lL0lubGluZVwiO1xuaW1wb3J0IHR5cGUgeyBSb3VuZEJ1dHRvblByb3BzIH0gZnJvbSBcIi4uL1JvdW5kQnV0dG9uL1JvdW5kQnV0dG9uXCI7XG5pbXBvcnQgeyBSb3VuZEJ1dHRvbiB9IGZyb20gXCIuLi9Sb3VuZEJ1dHRvbi9Sb3VuZEJ1dHRvblwiO1xuaW1wb3J0IHR5cGUgeyBQaWN0b2dyYW1CdXR0b25Qcm9wcyB9IGZyb20gXCIuLi9QaWN0b2dyYW1CdXR0b24vUGljdG9ncmFtQnV0dG9uXCI7XG5pbXBvcnQgeyBQaWN0b2dyYW1CdXR0b24gfSBmcm9tIFwiLi4vUGljdG9ncmFtQnV0dG9uL1BpY3RvZ3JhbUJ1dHRvblwiO1xuaW1wb3J0IHsgU3RhY2sgfSBmcm9tIFwiLi4vU3RhY2svU3RhY2tcIjtcbmltcG9ydCB7IHVzZU91dHNpZGVDbGljayB9IGZyb20gXCIuLi8uLi9zaGFyZWQvdXNlT3V0c2lkZUNsaWNrXCI7XG5pbXBvcnQgdHlwZSB7IEljb25OYW1lIH0gZnJvbSBcIi4uL0ljb24vSWNvblwiO1xuaW1wb3J0IHsgSWNvbiB9IGZyb20gXCIuLi9JY29uL0ljb25cIjtcbmltcG9ydCB7IFN1YlRoZW1lUHJvdmlkZXIgfSBmcm9tIFwiLi4vU3ViVGhlbWVQcm92aWRlci9TdWJUaGVtZVByb3ZpZGVyXCI7XG5pbXBvcnQgeyBBbmltYXRlZEJvcmRlciB9IGZyb20gXCIuLi9VdGlsaXRpZXMvQW5pbWF0ZWRCb3JkZXIvQW5pbWF0ZWRCb3JkZXJcIjtcbmltcG9ydCB7XG4gIFByb21wdElucHV0SGVhZGVyLFxuICB0eXBlIEJhc2VQcm9tcHRJbnB1dEhlYWRlclByb3BzLFxufSBmcm9tIFwiLi9Qcm9tcHRJbnB1dEhlYWRlclwiO1xuXG5jb25zdCBDdXN0b21Db250YWluZXIgPSBzdHlsZWQoQ29udGFpbmVyKTx7XG4gIGhpZGVCb3JkZXI6IGJvb2xlYW47XG4gIGhhc1NoYWRvdzogYm9vbGVhbjtcbn0+KCh7IHRoZW1lLCBoaWRlQm9yZGVyLCBoYXNTaGFkb3cgfSkgPT4gKHtcbiAgYm9yZGVyOiBgMXB4IHNvbGlkICR7dGhlbWUudmFsdWVzLmNvbG9yLmJvcmRlci5wcmltYXJ5LmRlZmF1bHR9YCxcbiAgLi4uKGhhc1NoYWRvdyAmJiB7XG4gICAgYm94U2hhZG93OiB0aGVtZS52YWx1ZXMuc2hhZG93LmRlZmF1bHRSaW5nLFxuICAgIHRyYW5zaXRpb25Qcm9wZXJ0eTogXCJib3gtc2hhZG93LCBib3JkZXItY29sb3IsIG91dGxpbmUtY29sb3JcIixcbiAgICB0cmFuc2l0aW9uRHVyYXRpb246IHRoZW1lLnZhcmlhYmxlcy5hbmltYXRpb24ucHJvbXB0SW5wdXQuZm9jdXMuZHVyYXRpb24sXG4gICAgdHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uOlxuICAgICAgdGhlbWUudmFyaWFibGVzLmFuaW1hdGlvbi5wcm9tcHRJbnB1dC5mb2N1cy50aW1pbmdGdW5jdGlvbixcbiAgfSksXG4gIC4uLihoaWRlQm9yZGVyICYmIHtcbiAgICBib3JkZXJDb2xvcjogXCJ0cmFuc3BhcmVudFwiLFxuICB9KSxcbiAgY3Vyc29yOiBcInRleHRcIixcbiAgb3V0bGluZUNvbG9yOiBcInRyYW5zcGFyZW50XCIsXG4gIFtgJjpoYXModGV4dGFyZWE6Zm9jdXMtdmlzaWJsZSlgXToge1xuICAgIG91dGxpbmVXaWR0aDogMSxcbiAgICBvdXRsaW5lU3R5bGU6IFwic29saWRcIixcbiAgICBvdXRsaW5lT2Zmc2V0OiAtMSxcbiAgICBib3hTaGFkb3c6IHRoZW1lLnZhbHVlcy5zaGFkb3cuZm9jdXNSaW5nLFxuICAgIG91dGxpbmVDb2xvcjogdGhlbWUudmFsdWVzLmNvbG9yLmJvcmRlci5hY2NlbnQuZGVmYXVsdCxcbiAgfSxcbn0pKTtcblxuY29uc3QgU3R5bGVkVGV4dEFyZWFDb250YWluZXIgPSBzdHlsZWQuZGl2KHtcbiAgYm9yZGVyUmFkaXVzOiBcImluaGVyaXRcIixcbiAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgd2lkdGg6IFwiMTAwJVwiLFxufSk7XG5cbmNvbnN0IFN0eWxlZExlZnRJY29uQ29udGFpbmVyID0gc3R5bGVkLmRpdigoeyB0aGVtZSB9KSA9PiAoe1xuICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICB0b3A6IGdldFBhZGRpbmdWZXJ0aWNhbCh0aGVtZSksXG4gIGxlZnQ6IGdldFBhZGRpbmdIb3Jpem9udGFsKHRoZW1lKSxcbn0pKTtcblxudHlwZSBTdHlsZWRFbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50Q29udGFpbmVyUHJvcHMgPSBQaWNrPFxuICBQcm9tcHRJbnB1dFByb3BzLFxuICBcImlzTmF2QmFyVmFyaWFudFwiXG4+O1xuXG5jb25zdCBTdHlsZWRFbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50Q29udGFpbmVyID1cbiAgc3R5bGVkLmRpdjxTdHlsZWRFbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50Q29udGFpbmVyUHJvcHM+KFxuICAgICh7IHRoZW1lLCBpc05hdkJhclZhcmlhbnQgfSkgPT4gKHtcbiAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICB0b3A6IGlzTmF2QmFyVmFyaWFudFxuICAgICAgICA/IHRoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcueHhzXG4gICAgICAgIDogZ2V0UGFkZGluZ1ZlcnRpY2FsKHRoZW1lKSxcbiAgICAgIHJpZ2h0OiBnZXRQYWRkaW5nSG9yaXpvbnRhbCh0aGVtZSksXG4gICAgICB1c2VyU2VsZWN0OiBcIm5vbmVcIixcbiAgICAgIHBvaW50ZXJFdmVudHM6IFwibm9uZVwiLFxuICAgIH0pXG4gICk7XG5cbnR5cGUgU3R5bGVkQ2xlYXJCdXR0b25Qcm9wcyA9IFBpY3RvZ3JhbUJ1dHRvblByb3BzICZcbiAgUGljazxQcm9tcHRJbnB1dFByb3BzLCBcImlzTmF2QmFyVmFyaWFudFwiPjtcblxuY29uc3QgU3R5bGVkQ2xlYXJCdXR0b24gPSBzdHlsZWQoUGljdG9ncmFtQnV0dG9uKTxTdHlsZWRDbGVhckJ1dHRvblByb3BzPihcbiAgKHsgdGhlbWUsIGlzTmF2QmFyVmFyaWFudCB9KSA9PiAoe1xuICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgcmlnaHQ6IHRoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcucyxcbiAgICB0b3A6IGlzTmF2QmFyVmFyaWFudCA/IDAgOiB0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnMsXG4gIH0pXG4pO1xuXG5jb25zdCBTdHlsZWRTbG90c0NvbnRhaW5lciA9IHN0eWxlZC5kaXYoe1xuICBkaXNwbGF5OiBcImZsZXhcIixcbiAgZmxleFdyYXA6IFwid3JhcFwiLFxuICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxufSk7XG5cbi8vIEl0IG5lZWRzIG1hcmdpbiBkdWUgdG8gZW1wdHkgY2xpY2thYmxlIHNwYWNlIHRoYXQgZm9jdXNlcyB0aGUgdGV4dGFyZWFcbi8vIFNsb3RzIHNob3VsZCBub3QgYmUgaW4gdGhlIGRpdiwgYmVjYXVzZSBhcmVhIGJldHdlZW4gc2hvdWxkIGJlIGNsaWNrYWJsZSBhbHNvXG50eXBlIFNsb3RQcm9wcyA9IHtcbiAgc2lkZT86IFwicmlnaHRcIjtcbn07XG5jb25zdCBTdHlsZWRTbG90ID0gc3R5bGVkLmRpdjxTbG90UHJvcHM+KCh7IHRoZW1lLCBzaWRlIH0pID0+ICh7XG4gIG1hcmdpbjogYDAgJHt0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnN9ICR7dGhlbWUudmFyaWFibGVzLnNpemUuc3BhY2luZy5zfWAsXG5cbiAgLi4uKHNpZGUgPT09IFwicmlnaHRcIiAmJiB7XG4gICAgbWFyZ2luTGVmdDogXCJhdXRvXCIsXG4gIH0pLFxufSkpO1xuXG50eXBlIFNlbmRCdXR0b25Qcm9wcyA9IE9taXQ8Um91bmRCdXR0b25Qcm9wcywgXCJpY29uXCIgfCBcInZhcmlhbnRcIj4gJiB7XG4gIGljb24/OiBcImFycm93LXVwXCIgfCBcInNlYXJjaFwiIHwgXCJhcnJvdy1yaWdodFwiIHwgXCJ2b2ljZVwiO1xufTtcblxudHlwZSBCb3R0b21Ub29sYmFyQ29uZmlnID0ge1xuICAvKiogVG9vbGJhciBlbGVtZW50cyBiZWxvdyB0ZXh0IGFyZWEgKi9cbiAgbGVmdENvbnRlbnQ/OiBSZWFjdEVsZW1lbnQ7XG4gIHJpZ2h0Q29udGVudD86IFJlYWN0RWxlbWVudDtcbn07XG5cbmV4cG9ydCB0eXBlIFByb21wdElucHV0UHJvcHMgPSB7XG4gIFwiZGF0YS1lMmUtdGVzdC1pZFwiPzogc3RyaW5nO1xuICBoZWFkZXI/OiBCYXNlUHJvbXB0SW5wdXRIZWFkZXJQcm9wcztcbiAgdmFyaWFudD86IFwiYWlcIjtcbiAgc2tpcEFJQW5pbWF0aW9uPzogYm9vbGVhbjtcbiAgYm90dG9tVG9vbGJhcj86IEJvdHRvbVRvb2xiYXJDb25maWc7XG4gIHNlbmRCdXR0b25Qcm9wcz86IFNlbmRCdXR0b25Qcm9wcztcbiAgLyoqIEN1cnJlbnRseSBzaG93cyBzZW5kIGJ1dHRvbiBwcm9jZXNzaW5nIHN0YXRlICAqL1xuICBpc1Byb2Nlc3Npbmc/OiBib29sZWFuO1xuICBjbGVhckJ1dHRvbkFyaWFMYWJlbD86IHN0cmluZztcbiAgaGludD86IFJlYWN0RWxlbWVudDtcbiAgLyoqIFNob3dzIGluIHRoZSBjbGVhciBidXR0b24gc3BhY2UgaW4gZW1wdHkgc3RhdGUgKi9cbiAgZW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudD86IFJlYWN0RWxlbWVudDtcbiAgb25DbGVhcjogKCkgPT4gdm9pZDtcbiAgLyoqIENhbGxlZCB3aGVuIHVzZXIgc2VsZWN0cyAob3IgcmVqZWN0cykgYSBsaXN0IGl0ZW0gZnJvbSBhdXRvY29tcGxldGUgbGlzdCAqL1xuICBvbkNvbXBsZXRlPzogKHtcbiAgICB2YWx1ZSxcbiAgICBjYXRlZ29yeSxcbiAgICBldnQsXG4gICAgaW5kZXgsXG4gIH06IHtcbiAgICB2YWx1ZTogTGlzdEl0ZW1WYWx1ZTtcbiAgICBjYXRlZ29yeT86IHN0cmluZztcbiAgICBldnQ/OiBTeW50aGV0aWNFdmVudDtcbiAgICBpbmRleD86IG51bWJlcjtcbiAgfSkgPT4gdm9pZDtcbiAgLyoqIENhbGxlZCBvbiBFbnRlciBrZXkgdG8gc3VibWl0IHRoZSBmb3JtICAqL1xuICBvbkVudGVyS2V5OiAoKSA9PiB2b2lkO1xuICAvKiogUmVuZGVycyBhbiBpY29uIHRvIHRoZSBsZWZ0IGluc2lkZSB0aGUgdGV4dGFyZWEgKi9cbiAgbGVmdEljb24/OiBJY29uTmFtZTtcbn0gJiBPbWl0PFxuICBQcm9tcHRUZXh0QXJlYVByb3BzLFxuICBcImlzQ29sbGFwc2VkXCIgfCBcImlzQXV0b2NvbXBsZXRlTGlzdE9wZW5cIiB8IFwic2VsZWN0ZWRMaXN0SXRlbVwiIHwgXCJoYXNMZWZ0SWNvblwiXG4+ICZcbiAgUGljazxcbiAgICBBdXRvY29tcGxldGVMaXN0UHJvcHMsXG4gICAgXCJhdXRvY29tcGxldGVMaXN0SXRlbXNcIiB8IFwiYXV0b2NvbXBsZXRlTGlzdEZvb3RlclwiIHwgXCJwb3J0YWxDb250YWluZXJcIlxuICA+O1xuXG5jb25zdCBkZWZhdWx0U2VuZEJ1dHRvblByb3BzOiBTZW5kQnV0dG9uUHJvcHMgPSB7XG4gIHR5cGU6IFwic3VibWl0XCIgYXMgY29uc3QsXG4gIGljb246IFwiYXJyb3ctdXBcIiBhcyBjb25zdCxcbn07XG5cbmNvbnN0IFByb21wdElucHV0Q29tcG9uZW50ID0gZm9yd2FyZFJlZihcbiAgKFxuICAgIHtcbiAgICAgIFwiZGF0YS1lMmUtdGVzdC1pZFwiOiBkYXRhRTJlVGVzdElkLFxuICAgICAgbmFtZSxcbiAgICAgIGF1dG9jb21wbGV0ZUxpc3RJdGVtcyA9IFtdLFxuICAgICAgdmFsdWUsXG4gICAgICBib3R0b21Ub29sYmFyLFxuICAgICAgaXNQcm9jZXNzaW5nLFxuICAgICAgc2VuZEJ1dHRvblByb3BzLFxuICAgICAgYXV0b2NvbXBsZXRlTGlzdEZvb3RlcixcbiAgICAgIGNsZWFyQnV0dG9uQXJpYUxhYmVsID0gXCJDbGVhciBpbnB1dFwiLFxuICAgICAgaGludCxcbiAgICAgIGVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnQsXG4gICAgICBpc05hdkJhclZhcmlhbnQsXG4gICAgICBwb3J0YWxDb250YWluZXIsXG4gICAgICBsZWZ0SWNvbixcbiAgICAgIGhlYWRlcixcbiAgICAgIG9uQ2hhbmdlLFxuICAgICAgb25Db21wbGV0ZSxcbiAgICAgIG9uQ2xlYXIsXG4gICAgICBvbkVudGVyS2V5LFxuICAgICAgb25Gb2N1cyxcbiAgICAgIG9uQmx1cixcbiAgICAgIG9uS2V5RG93bixcbiAgICAgIHZhcmlhbnQsXG4gICAgICBza2lwQUlBbmltYXRpb24gPSBmYWxzZSxcbiAgICAgIC4uLnJlc3RcbiAgICB9OiBQcm9tcHRJbnB1dFByb3BzLFxuICAgIHJlZjogUmVmT2JqZWN0PEhUTUxUZXh0QXJlYUVsZW1lbnQ+XG4gICk6IFJlYWN0RWxlbWVudCA9PiB7XG4gICAgY29uc3QgY29udGFpbmVyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgICBjb25zdCB0ZXh0QXJlYUNvbnRhaW5lclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gICAgY29uc3QgaW50ZXJuYWxSZWYgPSB1c2VSZWY8SFRNTFRleHRBcmVhRWxlbWVudD4obnVsbCk7XG4gICAgY29uc3QgW3NlbGVjdGVkSW5kZXgsIHNldFNlbGVjdGVkSW5kZXhdID0gdXNlU3RhdGUoLTEpO1xuICAgIGNvbnN0IFtpc0NvbGxhcHNlZCwgc2V0SXNDb2xsYXBzZWRdID0gdXNlU3RhdGUoaXNOYXZCYXJWYXJpYW50KTtcbiAgICBjb25zdCB1c2VyVHlwZWRRdWVyeSA9IHVzZVJlZihcIlwiKTtcbiAgICBjb25zdCBbaXNBdXRvY29tcGxldGVMaXN0T3Blbiwgc2V0SXNBdXRvY29tcGxldGVMaXN0T3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgdGV4dEFyZWFSZWYgPSByZWYgfHwgaW50ZXJuYWxSZWY7XG5cbiAgICBjb25zdCBtZXJnZWRTZW5kQnV0dG9uUHJvcHMgPSB7XG4gICAgICAuLi5kZWZhdWx0U2VuZEJ1dHRvblByb3BzLFxuICAgICAgLi4uKHNlbmRCdXR0b25Qcm9wcyA/PyB7fSksXG4gICAgfTtcblxuICAgIHVzZU91dHNpZGVDbGljayhcbiAgICAgIGNvbnRhaW5lclJlZixcbiAgICAgIChldnQpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICFjb250YWluZXJSZWYuY3VycmVudD8uY29udGFpbnMoZXZ0LnRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgICAgICFwb3J0YWxDb250YWluZXI/LmNvbnRhaW5zKGV2dC50YXJnZXQgYXMgTm9kZSkgJiZcbiAgICAgICAgICBldnQudGFyZ2V0ICE9PSBudWxsXG4gICAgICAgICkge1xuICAgICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgIWlzQ29sbGFwc2VkICYmIGlzTmF2QmFyVmFyaWFudFxuICAgICk7XG5cbiAgICBjb25zdCBjbG9zZUF1dG9jb21wbGV0ZUxpc3QgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBzZXRJc0F1dG9jb21wbGV0ZUxpc3RPcGVuKGZhbHNlKTtcbiAgICAgIHNldFNlbGVjdGVkSW5kZXgoLTEpO1xuICAgIH0sIFtdKTtcblxuICAgIGNvbnN0IG9wZW5BdXRvY29tcGxldGVMaXN0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgaWYgKGF1dG9jb21wbGV0ZUxpc3RJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgc2V0SXNBdXRvY29tcGxldGVMaXN0T3Blbih0cnVlKTtcbiAgICAgICAgc2V0U2VsZWN0ZWRJbmRleCgtMSk7XG4gICAgICB9XG4gICAgfSwgW2F1dG9jb21wbGV0ZUxpc3RJdGVtc10pO1xuXG4gICAgY29uc3QgYWNjZXB0VGV4dFNlbGVjdGlvbiA9ICgpID0+IHtcbiAgICAgIHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQgPSB2YWx1ZTtcbiAgICAgIGlmIChcbiAgICAgICAgdGV4dEFyZWFSZWYuY3VycmVudC5zZWxlY3Rpb25TdGFydCAhPT0gdGV4dEFyZWFSZWYuY3VycmVudC5zZWxlY3Rpb25FbmRcbiAgICAgICkge1xuICAgICAgICB0ZXh0QXJlYVJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKHZhbHVlLmxlbmd0aCwgdmFsdWUubGVuZ3RoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmIChhdXRvY29tcGxldGVMaXN0SXRlbXMubGVuZ3RoICYmICFpc0NvbGxhcHNlZCkge1xuICAgICAgICBvcGVuQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2xvc2VBdXRvY29tcGxldGVMaXN0KCk7XG4gICAgICB9XG4gICAgfSwgW1xuICAgICAgYXV0b2NvbXBsZXRlTGlzdEl0ZW1zLFxuICAgICAgb3BlbkF1dG9jb21wbGV0ZUxpc3QsXG4gICAgICBjbG9zZUF1dG9jb21wbGV0ZUxpc3QsXG4gICAgICBpc0NvbGxhcHNlZCxcbiAgICBdKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAodmFsdWUgJiYgdmFsdWUgIT09IHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQgJiYgaXNBdXRvY29tcGxldGVMaXN0T3Blbikge1xuICAgICAgICB0ZXh0QXJlYVJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKFxuICAgICAgICAgIHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQubGVuZ3RoLFxuICAgICAgICAgIHZhbHVlLmxlbmd0aFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0sIFt2YWx1ZSwgdGV4dEFyZWFSZWYsIGlzQXV0b2NvbXBsZXRlTGlzdE9wZW5dKTtcblxuICAgIC8vIERldGVybWluZSB3aGVuIGZvY3VzIGxlYXZlcyB0aGUgY29udGFpbmVyIHRvIGNvbGxhcHNlIGl0XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGxldCBoYW5kbGVyOiAoZXZ0OiBGb2N1c0V2ZW50KSA9PiB2b2lkO1xuICAgICAgY29uc3QgY29udGFpbmVyID0gY29udGFpbmVyUmVmLmN1cnJlbnQ7XG5cbiAgICAgIGlmIChpc05hdkJhclZhcmlhbnQgJiYgY29udGFpbmVyKSB7XG4gICAgICAgIGhhbmRsZXIgPSAoZXZ0OiBGb2N1c0V2ZW50KSA9PiB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgIWNvbnRhaW5lclJlZi5jdXJyZW50Py5jb250YWlucyhldnQucmVsYXRlZFRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgICAgICAgIXBvcnRhbENvbnRhaW5lcj8uY29udGFpbnMoZXZ0LnJlbGF0ZWRUYXJnZXQgYXMgTm9kZSkgJiZcbiAgICAgICAgICAgIGV2dC5yZWxhdGVkVGFyZ2V0ICE9PSBudWxsXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBzZXRJc0NvbGxhcHNlZCh0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwiZm9jdXNvdXRcIiwgaGFuZGxlcik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImZvY3Vzb3V0XCIsIGhhbmRsZXIpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0sIFtpc05hdkJhclZhcmlhbnQsIGNvbnRhaW5lclJlZiwgcG9ydGFsQ29udGFpbmVyXSk7XG5cbiAgICBjb25zdCBmbGF0dGVuZWRMaXN0SXRlbXMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGNvbnN0IGxpc3Q6IEZsYXR0ZW5lZExpc3RJdGVtW10gPSBbXTtcblxuICAgICAgYXV0b2NvbXBsZXRlTGlzdEl0ZW1zLmZvckVhY2goKGxpc3RJdGVtKSA9PiB7XG4gICAgICAgIGxpc3RJdGVtLml0ZW1zLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgbGlzdC5wdXNoKHtcbiAgICAgICAgICAgIGNhdGVnb3J5OiBsaXN0SXRlbS5jYXRlZ29yeSxcbiAgICAgICAgICAgIGluZGV4SW5DYXRlZ29yeTogaW5kZXgsXG4gICAgICAgICAgICB2YWx1ZTogaXRlbS52YWx1ZSxcbiAgICAgICAgICAgIGlkOiBnZXRMaXN0SXRlbUlkKG5hbWUsIGxpc3RJdGVtLmNhdGVnb3J5LCBpbmRleCksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gbGlzdDtcbiAgICB9LCBbYXV0b2NvbXBsZXRlTGlzdEl0ZW1zLCBuYW1lXSk7XG5cbiAgICBjb25zdCBoYW5kbGVTZWxlY3RlZEluZGV4Q2hhbmdlID0gKGluZGV4OiBudW1iZXIsIGV2dD86IFN5bnRoZXRpY0V2ZW50KSA9PiB7XG4gICAgICBzZXRTZWxlY3RlZEluZGV4KGluZGV4KTtcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgY29uc3QgeyBjYXRlZ29yeSwgdmFsdWU6IGl0ZW1WYWx1ZSB9ID0gZmxhdHRlbmVkTGlzdEl0ZW1zW2luZGV4XTtcblxuICAgICAgICBvbkNvbXBsZXRlKHsgdmFsdWU6IGl0ZW1WYWx1ZSwgY2F0ZWdvcnksIGV2dCwgaW5kZXggfSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZUxpc3RJdGVtQ2xpY2sgPSAoXG4gICAgICBjYXRlZ29yeTogc3RyaW5nLFxuICAgICAgaW5kZXhJbkNhdGVnb3J5OiBudW1iZXIsXG4gICAgICBldnQ/OiBNb3VzZUV2ZW50XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IGZsYXR0ZW5lZExpc3RJdGVtcy5maW5kSW5kZXgoXG4gICAgICAgIChsaXN0SXRlbSkgPT5cbiAgICAgICAgICBsaXN0SXRlbS5jYXRlZ29yeSA9PT0gY2F0ZWdvcnkgJiZcbiAgICAgICAgICBsaXN0SXRlbS5pbmRleEluQ2F0ZWdvcnkgPT09IGluZGV4SW5DYXRlZ29yeVxuICAgICAgKTtcblxuICAgICAgaGFuZGxlU2VsZWN0ZWRJbmRleENoYW5nZShpbmRleCwgZXZ0KTtcbiAgICAgIGNsb3NlQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgaWYgKGlzTmF2QmFyVmFyaWFudCkge1xuICAgICAgICBzZXRJc0NvbGxhcHNlZCh0cnVlKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlS2V5RG93bjogS2V5Ym9hcmRFdmVudEhhbmRsZXI8SFRNTFRleHRBcmVhRWxlbWVudD4gPSAoZXZ0KSA9PiB7XG4gICAgICBpZiAoaXNBdXRvY29tcGxldGVMaXN0T3Blbikge1xuICAgICAgICBzd2l0Y2ggKGV2dC5rZXkpIHtcbiAgICAgICAgICBjYXNlIFwiRXNjYXBlXCI6XG4gICAgICAgICAgICBjbG9zZUF1dG9jb21wbGV0ZUxpc3QoKTtcbiAgICAgICAgICAgIG9uQ29tcGxldGUoeyB2YWx1ZTogdXNlclR5cGVkUXVlcnkuY3VycmVudCwgZXZ0IH0pO1xuICAgICAgICAgICAgaWYgKGlzTmF2QmFyVmFyaWFudCkge1xuICAgICAgICAgICAgICBzZXRJc0NvbGxhcHNlZCh0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgXCJFbnRlclwiOlxuICAgICAgICAgICAgaWYgKCFldnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgIGNsb3NlQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgICAgICAgICBhY2NlcHRUZXh0U2VsZWN0aW9uKCk7XG5cbiAgICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgb25FbnRlcktleT8uKCk7XG4gICAgICAgICAgICAgICAgaWYgKGlzTmF2QmFyVmFyaWFudCkge1xuICAgICAgICAgICAgICAgICAgc2V0SXNDb2xsYXBzZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFwiIFwiOlxuICAgICAgICAgICAgYWNjZXB0VGV4dFNlbGVjdGlvbigpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBcIkFycm93VXBcIjpcbiAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgaWYgKHNlbGVjdGVkSW5kZXggPiAtMSkge1xuICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RlZEluZGV4Q2hhbmdlKHNlbGVjdGVkSW5kZXggLSAxLCBldnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBcIkFycm93RG93blwiOlxuICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRJbmRleCA8IGZsYXR0ZW5lZExpc3RJdGVtcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgIGhhbmRsZVNlbGVjdGVkSW5kZXhDaGFuZ2Uoc2VsZWN0ZWRJbmRleCArIDEsIGV2dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2l0Y2ggKGV2dC5rZXkpIHtcbiAgICAgICAgICBjYXNlIFwiRXNjYXBlXCI6XG4gICAgICAgICAgICBvbkNsZWFyPy4oKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgXCJFbnRlclwiOlxuICAgICAgICAgICAgaWYgKCFldnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIG9uRW50ZXJLZXk/LigpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgb25LZXlEb3duPy4oZXZ0KTtcbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlOiBDaGFuZ2VFdmVudEhhbmRsZXI8SFRNTFRleHRBcmVhRWxlbWVudD4gPSAoZXZ0KSA9PiB7XG4gICAgICB1c2VyVHlwZWRRdWVyeS5jdXJyZW50ID0gZXZ0LnRhcmdldC52YWx1ZTtcbiAgICAgIG9uQ2hhbmdlKGV2dCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZUZvY3VzOiBGb2N1c0V2ZW50SGFuZGxlcjxIVE1MVGV4dEFyZWFFbGVtZW50PiA9IChldnQpID0+IHtcbiAgICAgIHNldElzQ29sbGFwc2VkKGZhbHNlKTtcbiAgICAgIG9uRm9jdXM/LihldnQpO1xuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVCbHVyOiBGb2N1c0V2ZW50SGFuZGxlcjxIVE1MVGV4dEFyZWFFbGVtZW50PiA9IChldnQpID0+IHtcbiAgICAgIGlmICh2YWx1ZSAhPT0gdXNlclR5cGVkUXVlcnkuY3VycmVudCkge1xuICAgICAgICBvbkNvbXBsZXRlPy4oeyB2YWx1ZTogdXNlclR5cGVkUXVlcnkuY3VycmVudCwgZXZ0IH0pO1xuICAgICAgfVxuICAgICAgb25CbHVyPy4oZXZ0KTtcbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlU2VuZEJ1dHRvbkNsaWNrID0gKGV2dDogTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4pID0+IHtcbiAgICAgIG1lcmdlZFNlbmRCdXR0b25Qcm9wcy5vbkNsaWNrPy4oZXZ0KTtcbiAgICAgIGNsb3NlQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgaWYgKGlzTmF2QmFyVmFyaWFudCkge1xuICAgICAgICBzZXRJc0NvbGxhcHNlZCh0cnVlKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlUHJldmVudEZvY3VzID0gKGV2dDogUmVhY3QuUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAvLyBQcmV2ZW50IHRoZSB0ZXh0YXJlYSBmcm9tIGJlaW5nIHVuZm9jdXNlZFxuICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZU9uQ29udGFpbmVyUG9pbnRlckRvd24gPSAoZXZ0OiBSZWFjdC5Qb2ludGVyRXZlbnQpID0+IHtcbiAgICAgIC8vIEZvY3VzIHRleHRhcmVhIHdoZW4gY2xpY2tpbmcgb24gdGhlIGNvbnRhaW5lciBvbmx5XG4gICAgICBpZiAoZXZ0LnRhcmdldCA9PT0gZXZ0LmN1cnJlbnRUYXJnZXQpIHtcbiAgICAgICAgdGV4dEFyZWFSZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IHNlbGVjdGVkTGlzdEl0ZW0gPVxuICAgICAgc2VsZWN0ZWRJbmRleCAhPT0gLTEgPyBmbGF0dGVuZWRMaXN0SXRlbXNbc2VsZWN0ZWRJbmRleF0gOiBudWxsO1xuXG4gICAgY29uc3QgZW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudEVsbSA9IGVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnQgPyAoXG4gICAgICA8U3R5bGVkRW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudENvbnRhaW5lclxuICAgICAgICBpc05hdkJhclZhcmlhbnQ9e2lzTmF2QmFyVmFyaWFudH1cbiAgICAgID5cbiAgICAgICAgPFRleHQgY29sb3I9XCJ0ZXJ0aWFyeVwiPntlbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50fTwvVGV4dD5cbiAgICAgIDwvU3R5bGVkRW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudENvbnRhaW5lcj5cbiAgICApIDogbnVsbDtcblxuICAgIGNvbnN0IGNsZWFyQnV0dG9uRWxtID0gdmFsdWUgPyAoXG4gICAgICA8U3R5bGVkQ2xlYXJCdXR0b25cbiAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgIGljb249XCJ4LWNpcmNsZS1maWxsZWRcIlxuICAgICAgICBhcmlhLWxhYmVsPXtjbGVhckJ1dHRvbkFyaWFMYWJlbH1cbiAgICAgICAgaXNOYXZCYXJWYXJpYW50PXtpc05hdkJhclZhcmlhbnR9XG4gICAgICAgIG9uUG9pbnRlckRvd249e2hhbmRsZVByZXZlbnRGb2N1c31cbiAgICAgICAgb25DbGljaz17b25DbGVhcn1cbiAgICAgIC8+XG4gICAgKSA6IChcbiAgICAgIGVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnRFbG1cbiAgICApO1xuXG4gICAgY29uc3QgaGludEVsbSA9ICEhaGludCAmJiAoXG4gICAgICA8SW5saW5lIGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAgPFRleHQgc2l6ZT1cInNcIiBjb2xvcj1cInRlcnRpYXJ5XCI+XG4gICAgICAgICAge2hpbnR9XG4gICAgICAgIDwvVGV4dD5cbiAgICAgIDwvSW5saW5lPlxuICAgICk7XG5cbiAgICBjb25zdCBib3R0b21Ub29sYmFyRWxtID0gKGJvdHRvbVRvb2xiYXI/LnJpZ2h0Q29udGVudCB8fFxuICAgICAgYm90dG9tVG9vbGJhcj8ubGVmdENvbnRlbnQgfHxcbiAgICAgICEhc2VuZEJ1dHRvblByb3BzKSAmJlxuICAgICAgIWlzQ29sbGFwc2VkICYmIChcbiAgICAgICAgPD5cbiAgICAgICAgICB7Ym90dG9tVG9vbGJhcj8ubGVmdENvbnRlbnQgJiYgKFxuICAgICAgICAgICAgPFN0eWxlZFNsb3Q+e2JvdHRvbVRvb2xiYXIubGVmdENvbnRlbnR9PC9TdHlsZWRTbG90PlxuICAgICAgICAgICl9XG4gICAgICAgICAgPFN0eWxlZFNsb3QgZGF0YS1lMmUtdGVzdC1pZD1cImJvdHRvbVRvb2xiYXJcIiBzaWRlPVwicmlnaHRcIj5cbiAgICAgICAgICAgIDxJbmxpbmUgc3BhY2U9XCJ4c1wiIHZBbGlnbkl0ZW1zPVwiY2VudGVyXCI+XG4gICAgICAgICAgICAgIHtib3R0b21Ub29sYmFyPy5yaWdodENvbnRlbnR9XG4gICAgICAgICAgICAgIHtzZW5kQnV0dG9uUHJvcHMgJiYgKFxuICAgICAgICAgICAgICAgIDxTdWJUaGVtZVByb3ZpZGVyIG5hbWU9e3ZhcmlhbnR9PlxuICAgICAgICAgICAgICAgICAgPFJvdW5kQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGFyaWFBdHRyaWJ1dGVzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgXCJhcmlhLWxhYmVsXCI6IGlzUHJvY2Vzc2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBcIlByb2Nlc3NpbmcgcXVlcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBcIlN1Ym1pdCBxdWVyeVwiLFxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICB7Li4ubWVyZ2VkU2VuZEJ1dHRvblByb3BzfVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17bWVyZ2VkU2VuZEJ1dHRvblByb3BzLmRpc2FibGVkID8/ICF2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlU2VuZEJ1dHRvbkNsaWNrfVxuICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJEb3duPXtoYW5kbGVQcmV2ZW50Rm9jdXN9XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgaWNvbj17XG4gICAgICAgICAgICAgICAgICAgICAgaXNQcm9jZXNzaW5nID8gXCJzdG9wLWZpbGxlZFwiIDogbWVyZ2VkU2VuZEJ1dHRvblByb3BzLmljb25cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1N1YlRoZW1lUHJvdmlkZXI+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0lubGluZT5cbiAgICAgICAgICA8L1N0eWxlZFNsb3Q+XG4gICAgICAgIDwvPlxuICAgICAgKTtcblxuICAgIGNvbnN0IGJvcmRlclJhZGl1c1NpemU6IEJvcmRlclJhZGl1cyA9IGlzQ29sbGFwc2VkID8gXCJ4c1wiIDogXCJtXCI7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGRhdGEtZTJlLXRlc3QtaWQ9e2RhdGFFMmVUZXN0SWR9XG4gICAgICAgICAgZGF0YS1kcy1pZD1cIlByb21wdElucHV0XCJcbiAgICAgICAgICByZWY9e2NvbnRhaW5lclJlZn1cbiAgICAgICAgICAvLyBUcmFuc2xhdGlvbiBkaXNhYmxlZCBmb3IgY29uc2lzdGVuY3kgd2l0aCB0aGUgYXV0b2NvbXBsZXRlIGxpc3RcbiAgICAgICAgICB0cmFuc2xhdGU9XCJub1wiXG4gICAgICAgID5cbiAgICAgICAgICA8U3RhY2sgc3BhY2U9XCJzXCI+XG4gICAgICAgICAgICA8QW5pbWF0ZWRCb3JkZXJcbiAgICAgICAgICAgICAgc2tpcEFuaW1hdGlvbj17c2tpcEFJQW5pbWF0aW9uIHx8IHZhcmlhbnQgIT09IFwiYWlcIn1cbiAgICAgICAgICAgICAgcmFkaXVzPXsxMn1cbiAgICAgICAgICAgICAgaXRlcmF0aW9ucz17MX1cbiAgICAgICAgICAgICAgdGhpY2tuZXNzPXsyfVxuICAgICAgICAgICAgICBoaWRlQ2hpbGRCb3JkZXJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPFN1YlRoZW1lUHJvdmlkZXIgbmFtZT17dmFyaWFudH0+XG4gICAgICAgICAgICAgICAgPEN1c3RvbUNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgZWxldmF0aW9uPXswfVxuICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzPXtib3JkZXJSYWRpdXNTaXplfVxuICAgICAgICAgICAgICAgICAgaGlkZUJvcmRlcj17aXNDb2xsYXBzZWR9XG4gICAgICAgICAgICAgICAgICBoYXNTaGFkb3c9eyFpc05hdkJhclZhcmlhbnR9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN1YlRoZW1lUHJvdmlkZXIgbmFtZT1cInVuc2V0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxTdHlsZWRTbG90c0NvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgIHJlZj17dGV4dEFyZWFDb250YWluZXJSZWZ9XG4gICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyRG93bj17aGFuZGxlT25Db250YWluZXJQb2ludGVyRG93bn1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtoZWFkZXIgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFByb21wdElucHV0SGVhZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5oZWFkZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1c1NpemU9e2JvcmRlclJhZGl1c1NpemV9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZFRleHRBcmVhQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAge2xlZnRJY29uICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZExlZnRJY29uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPXtsZWZ0SWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwidGVydGlhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZExlZnRJY29uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxQcm9tcHRUZXh0QXJlYVxuICAgICAgICAgICAgICAgICAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUUyZVRlc3RJZD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUUyZVRlc3RJZCA/IGAke2RhdGFFMmVUZXN0SWR9LWlucHV0YCA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXt0ZXh0QXJlYVJlZn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNOYXZCYXJWYXJpYW50PXtpc05hdkJhclZhcmlhbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkTGlzdEl0ZW09e3NlbGVjdGVkTGlzdEl0ZW19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzQXV0b2NvbXBsZXRlTGlzdE9wZW49e2lzQXV0b2NvbXBsZXRlTGlzdE9wZW59XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzQ29sbGFwc2VkPXtpc0NvbGxhcHNlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzTGVmdEljb249eyEhbGVmdEljb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uRm9jdXM9e2hhbmRsZUZvY3VzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93bn1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICB7Y2xlYXJCdXR0b25FbG19XG4gICAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWRUZXh0QXJlYUNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICB7Ym90dG9tVG9vbGJhckVsbX1cbiAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWRTbG90c0NvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvU3ViVGhlbWVQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L0N1c3RvbUNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9TdWJUaGVtZVByb3ZpZGVyPlxuICAgICAgICAgICAgPC9BbmltYXRlZEJvcmRlcj5cbiAgICAgICAgICAgIHtoaW50RWxtfVxuICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxBdXRvY29tcGxldGVMaXN0XG4gICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgYXV0b2NvbXBsZXRlTGlzdEl0ZW1zPXthdXRvY29tcGxldGVMaXN0SXRlbXN9XG4gICAgICAgICAgdHJpZ2dlclJlZj17dGV4dEFyZWFDb250YWluZXJSZWZ9XG4gICAgICAgICAgc2VsZWN0ZWRMaXN0SXRlbT17c2VsZWN0ZWRMaXN0SXRlbX1cbiAgICAgICAgICBpc09wZW49e2lzQXV0b2NvbXBsZXRlTGlzdE9wZW59XG4gICAgICAgICAgYXV0b2NvbXBsZXRlTGlzdEZvb3Rlcj17YXV0b2NvbXBsZXRlTGlzdEZvb3Rlcn1cbiAgICAgICAgICBwb3J0YWxDb250YWluZXI9e3BvcnRhbENvbnRhaW5lcn1cbiAgICAgICAgICBvbkxpc3RJdGVtQ2xpY2s9e2hhbmRsZUxpc3RJdGVtQ2xpY2t9XG4gICAgICAgIC8+XG4gICAgICA8Lz5cbiAgICApO1xuICB9XG4pO1xuXG5jb25zdCBDdXN0b21CdXR0b24gPSBzdHlsZWQoQnV0dG9uKSgoeyB0aGVtZSB9KSA9PiAoe1xuICBib3JkZXJSYWRpdXM6IHRoZW1lLnZhcmlhYmxlcy5zaXplLmJvcmRlclJhZGl1cy5sLFxufSkpO1xuXG4vLyBuZWVkIHRvIHNpbXBsaWZ5IHRoaXMgdHlwZSBmb3IgcmV1c2VcbmNvbnN0IFN1Z2dlc3Rpb25CdXR0b24gPSBmb3J3YXJkUmVmKFxuICA8QyBleHRlbmRzIFJlYWN0LkVsZW1lbnRUeXBlID0gXCJidXR0b25cIj4oXG4gICAgcHJvcHM6IFBvbHltb3JwaGljQ29tcG9uZW50UHJvcHNXaXRoUmVmPFxuICAgICAgQyxcbiAgICAgIE9taXQ8QnV0dG9uUHJvcHMsIFwidmFyaWFudFwiIHwgXCJzaXplXCIgfCBcInJlZlwiPlxuICAgID4sXG4gICAgcmVmOiBQb2x5bW9ycGhpY1JlZjxDPlxuICApID0+IDxDdXN0b21CdXR0b24gey4uLnByb3BzfSB2YXJpYW50PVwic2Vjb25kYXJ5XCIgc2l6ZT1cInNcIiByZWY9e3JlZn0gLz5cbik7XG5cbmV4cG9ydCBjb25zdCBQcm9tcHRJbnB1dCA9IE9iamVjdC5hc3NpZ24oUHJvbXB0SW5wdXRDb21wb25lbnQsIHtcbiAgU3VnZ2VzdGlvbkJ1dHRvbixcbn0pIGFzIHR5cGVvZiBQcm9tcHRJbnB1dENvbXBvbmVudCAmIHtcbiAgU3VnZ2VzdGlvbkJ1dHRvbjogdHlwZW9mIFN1Z2dlc3Rpb25CdXR0b247XG59O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXFIMEIifQ== */"),StyledSlotsContainer=(0,_styled.default)("div",{target:"e1fprshj5",label:"StyledSlotsContainer"})({display:"flex",flexWrap:"wrap",alignItems:"center"},"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvUHJvbXB0SW5wdXQvUHJvbXB0SW5wdXQudHN4Iiwic291cmNlcyI6WyJzcmMvY29tcG9uZW50cy9Qcm9tcHRJbnB1dC9Qcm9tcHRJbnB1dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBSZWFjdEVsZW1lbnQsXG4gIENoYW5nZUV2ZW50SGFuZGxlcixcbiAgS2V5Ym9hcmRFdmVudEhhbmRsZXIsXG4gIFJlZk9iamVjdCxcbiAgRm9jdXNFdmVudEhhbmRsZXIsXG4gIFN5bnRoZXRpY0V2ZW50LFxuICBNb3VzZUV2ZW50LFxufSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IFJlYWN0LCB7XG4gIHVzZVJlZixcbiAgdXNlTWVtbyxcbiAgdXNlU3RhdGUsXG4gIHVzZUVmZmVjdCxcbiAgdXNlQ2FsbGJhY2ssXG4gIGZvcndhcmRSZWYsXG59IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5cbmltcG9ydCB0eXBlIHsgUHJvbXB0VGV4dEFyZWFQcm9wcyB9IGZyb20gXCIuL1Byb21wdFRleHRBcmVhXCI7XG5pbXBvcnQge1xuICBQcm9tcHRUZXh0QXJlYSxcbiAgZ2V0UGFkZGluZ0hvcml6b250YWwsXG4gIGdldFBhZGRpbmdWZXJ0aWNhbCxcbn0gZnJvbSBcIi4vUHJvbXB0VGV4dEFyZWFcIjtcbmltcG9ydCB7IENvbnRhaW5lciB9IGZyb20gXCIuLi9Db250YWluZXJcIjtcbmltcG9ydCB0eXBlIHsgQXV0b2NvbXBsZXRlTGlzdFByb3BzIH0gZnJvbSBcIi4vQXV0b2NvbXBsZXRlTGlzdFwiO1xuXG5pbXBvcnQgeyBBdXRvY29tcGxldGVMaXN0IH0gZnJvbSBcIi4vQXV0b2NvbXBsZXRlTGlzdFwiO1xuaW1wb3J0IHtcbiAgZ2V0TGlzdEl0ZW1JZCxcbiAgdHlwZSBGbGF0dGVuZWRMaXN0SXRlbSxcbiAgdHlwZSBMaXN0SXRlbVZhbHVlLFxufSBmcm9tIFwiLi9DYXRlZ29yeUxpc3RcIjtcbmltcG9ydCB7IFRleHQgfSBmcm9tIFwiLi4vVHlwb2dyYXBoeS9UZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24sIHR5cGUgQnV0dG9uUHJvcHMgfSBmcm9tIFwiLi4vQnV0dG9uL0J1dHRvblwiO1xuaW1wb3J0IHR5cGUge1xuICBQb2x5bW9ycGhpY1JlZixcbiAgUG9seW1vcnBoaWNDb21wb25lbnRQcm9wc1dpdGhSZWYsXG4gIEJvcmRlclJhZGl1cyxcbn0gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5pbXBvcnQgeyBJbmxpbmUgfSBmcm9tIFwiLi4vSW5saW5lL0lubGluZVwiO1xuaW1wb3J0IHR5cGUgeyBSb3VuZEJ1dHRvblByb3BzIH0gZnJvbSBcIi4uL1JvdW5kQnV0dG9uL1JvdW5kQnV0dG9uXCI7XG5pbXBvcnQgeyBSb3VuZEJ1dHRvbiB9IGZyb20gXCIuLi9Sb3VuZEJ1dHRvbi9Sb3VuZEJ1dHRvblwiO1xuaW1wb3J0IHR5cGUgeyBQaWN0b2dyYW1CdXR0b25Qcm9wcyB9IGZyb20gXCIuLi9QaWN0b2dyYW1CdXR0b24vUGljdG9ncmFtQnV0dG9uXCI7XG5pbXBvcnQgeyBQaWN0b2dyYW1CdXR0b24gfSBmcm9tIFwiLi4vUGljdG9ncmFtQnV0dG9uL1BpY3RvZ3JhbUJ1dHRvblwiO1xuaW1wb3J0IHsgU3RhY2sgfSBmcm9tIFwiLi4vU3RhY2svU3RhY2tcIjtcbmltcG9ydCB7IHVzZU91dHNpZGVDbGljayB9IGZyb20gXCIuLi8uLi9zaGFyZWQvdXNlT3V0c2lkZUNsaWNrXCI7XG5pbXBvcnQgdHlwZSB7IEljb25OYW1lIH0gZnJvbSBcIi4uL0ljb24vSWNvblwiO1xuaW1wb3J0IHsgSWNvbiB9IGZyb20gXCIuLi9JY29uL0ljb25cIjtcbmltcG9ydCB7IFN1YlRoZW1lUHJvdmlkZXIgfSBmcm9tIFwiLi4vU3ViVGhlbWVQcm92aWRlci9TdWJUaGVtZVByb3ZpZGVyXCI7XG5pbXBvcnQgeyBBbmltYXRlZEJvcmRlciB9IGZyb20gXCIuLi9VdGlsaXRpZXMvQW5pbWF0ZWRCb3JkZXIvQW5pbWF0ZWRCb3JkZXJcIjtcbmltcG9ydCB7XG4gIFByb21wdElucHV0SGVhZGVyLFxuICB0eXBlIEJhc2VQcm9tcHRJbnB1dEhlYWRlclByb3BzLFxufSBmcm9tIFwiLi9Qcm9tcHRJbnB1dEhlYWRlclwiO1xuXG5jb25zdCBDdXN0b21Db250YWluZXIgPSBzdHlsZWQoQ29udGFpbmVyKTx7XG4gIGhpZGVCb3JkZXI6IGJvb2xlYW47XG4gIGhhc1NoYWRvdzogYm9vbGVhbjtcbn0+KCh7IHRoZW1lLCBoaWRlQm9yZGVyLCBoYXNTaGFkb3cgfSkgPT4gKHtcbiAgYm9yZGVyOiBgMXB4IHNvbGlkICR7dGhlbWUudmFsdWVzLmNvbG9yLmJvcmRlci5wcmltYXJ5LmRlZmF1bHR9YCxcbiAgLi4uKGhhc1NoYWRvdyAmJiB7XG4gICAgYm94U2hhZG93OiB0aGVtZS52YWx1ZXMuc2hhZG93LmRlZmF1bHRSaW5nLFxuICAgIHRyYW5zaXRpb25Qcm9wZXJ0eTogXCJib3gtc2hhZG93LCBib3JkZXItY29sb3IsIG91dGxpbmUtY29sb3JcIixcbiAgICB0cmFuc2l0aW9uRHVyYXRpb246IHRoZW1lLnZhcmlhYmxlcy5hbmltYXRpb24ucHJvbXB0SW5wdXQuZm9jdXMuZHVyYXRpb24sXG4gICAgdHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uOlxuICAgICAgdGhlbWUudmFyaWFibGVzLmFuaW1hdGlvbi5wcm9tcHRJbnB1dC5mb2N1cy50aW1pbmdGdW5jdGlvbixcbiAgfSksXG4gIC4uLihoaWRlQm9yZGVyICYmIHtcbiAgICBib3JkZXJDb2xvcjogXCJ0cmFuc3BhcmVudFwiLFxuICB9KSxcbiAgY3Vyc29yOiBcInRleHRcIixcbiAgb3V0bGluZUNvbG9yOiBcInRyYW5zcGFyZW50XCIsXG4gIFtgJjpoYXModGV4dGFyZWE6Zm9jdXMtdmlzaWJsZSlgXToge1xuICAgIG91dGxpbmVXaWR0aDogMSxcbiAgICBvdXRsaW5lU3R5bGU6IFwic29saWRcIixcbiAgICBvdXRsaW5lT2Zmc2V0OiAtMSxcbiAgICBib3hTaGFkb3c6IHRoZW1lLnZhbHVlcy5zaGFkb3cuZm9jdXNSaW5nLFxuICAgIG91dGxpbmVDb2xvcjogdGhlbWUudmFsdWVzLmNvbG9yLmJvcmRlci5hY2NlbnQuZGVmYXVsdCxcbiAgfSxcbn0pKTtcblxuY29uc3QgU3R5bGVkVGV4dEFyZWFDb250YWluZXIgPSBzdHlsZWQuZGl2KHtcbiAgYm9yZGVyUmFkaXVzOiBcImluaGVyaXRcIixcbiAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgd2lkdGg6IFwiMTAwJVwiLFxufSk7XG5cbmNvbnN0IFN0eWxlZExlZnRJY29uQ29udGFpbmVyID0gc3R5bGVkLmRpdigoeyB0aGVtZSB9KSA9PiAoe1xuICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICB0b3A6IGdldFBhZGRpbmdWZXJ0aWNhbCh0aGVtZSksXG4gIGxlZnQ6IGdldFBhZGRpbmdIb3Jpem9udGFsKHRoZW1lKSxcbn0pKTtcblxudHlwZSBTdHlsZWRFbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50Q29udGFpbmVyUHJvcHMgPSBQaWNrPFxuICBQcm9tcHRJbnB1dFByb3BzLFxuICBcImlzTmF2QmFyVmFyaWFudFwiXG4+O1xuXG5jb25zdCBTdHlsZWRFbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50Q29udGFpbmVyID1cbiAgc3R5bGVkLmRpdjxTdHlsZWRFbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50Q29udGFpbmVyUHJvcHM+KFxuICAgICh7IHRoZW1lLCBpc05hdkJhclZhcmlhbnQgfSkgPT4gKHtcbiAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICB0b3A6IGlzTmF2QmFyVmFyaWFudFxuICAgICAgICA/IHRoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcueHhzXG4gICAgICAgIDogZ2V0UGFkZGluZ1ZlcnRpY2FsKHRoZW1lKSxcbiAgICAgIHJpZ2h0OiBnZXRQYWRkaW5nSG9yaXpvbnRhbCh0aGVtZSksXG4gICAgICB1c2VyU2VsZWN0OiBcIm5vbmVcIixcbiAgICAgIHBvaW50ZXJFdmVudHM6IFwibm9uZVwiLFxuICAgIH0pXG4gICk7XG5cbnR5cGUgU3R5bGVkQ2xlYXJCdXR0b25Qcm9wcyA9IFBpY3RvZ3JhbUJ1dHRvblByb3BzICZcbiAgUGljazxQcm9tcHRJbnB1dFByb3BzLCBcImlzTmF2QmFyVmFyaWFudFwiPjtcblxuY29uc3QgU3R5bGVkQ2xlYXJCdXR0b24gPSBzdHlsZWQoUGljdG9ncmFtQnV0dG9uKTxTdHlsZWRDbGVhckJ1dHRvblByb3BzPihcbiAgKHsgdGhlbWUsIGlzTmF2QmFyVmFyaWFudCB9KSA9PiAoe1xuICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgcmlnaHQ6IHRoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcucyxcbiAgICB0b3A6IGlzTmF2QmFyVmFyaWFudCA/IDAgOiB0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnMsXG4gIH0pXG4pO1xuXG5jb25zdCBTdHlsZWRTbG90c0NvbnRhaW5lciA9IHN0eWxlZC5kaXYoe1xuICBkaXNwbGF5OiBcImZsZXhcIixcbiAgZmxleFdyYXA6IFwid3JhcFwiLFxuICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxufSk7XG5cbi8vIEl0IG5lZWRzIG1hcmdpbiBkdWUgdG8gZW1wdHkgY2xpY2thYmxlIHNwYWNlIHRoYXQgZm9jdXNlcyB0aGUgdGV4dGFyZWFcbi8vIFNsb3RzIHNob3VsZCBub3QgYmUgaW4gdGhlIGRpdiwgYmVjYXVzZSBhcmVhIGJldHdlZW4gc2hvdWxkIGJlIGNsaWNrYWJsZSBhbHNvXG50eXBlIFNsb3RQcm9wcyA9IHtcbiAgc2lkZT86IFwicmlnaHRcIjtcbn07XG5jb25zdCBTdHlsZWRTbG90ID0gc3R5bGVkLmRpdjxTbG90UHJvcHM+KCh7IHRoZW1lLCBzaWRlIH0pID0+ICh7XG4gIG1hcmdpbjogYDAgJHt0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnN9ICR7dGhlbWUudmFyaWFibGVzLnNpemUuc3BhY2luZy5zfWAsXG5cbiAgLi4uKHNpZGUgPT09IFwicmlnaHRcIiAmJiB7XG4gICAgbWFyZ2luTGVmdDogXCJhdXRvXCIsXG4gIH0pLFxufSkpO1xuXG50eXBlIFNlbmRCdXR0b25Qcm9wcyA9IE9taXQ8Um91bmRCdXR0b25Qcm9wcywgXCJpY29uXCIgfCBcInZhcmlhbnRcIj4gJiB7XG4gIGljb24/OiBcImFycm93LXVwXCIgfCBcInNlYXJjaFwiIHwgXCJhcnJvdy1yaWdodFwiIHwgXCJ2b2ljZVwiO1xufTtcblxudHlwZSBCb3R0b21Ub29sYmFyQ29uZmlnID0ge1xuICAvKiogVG9vbGJhciBlbGVtZW50cyBiZWxvdyB0ZXh0IGFyZWEgKi9cbiAgbGVmdENvbnRlbnQ/OiBSZWFjdEVsZW1lbnQ7XG4gIHJpZ2h0Q29udGVudD86IFJlYWN0RWxlbWVudDtcbn07XG5cbmV4cG9ydCB0eXBlIFByb21wdElucHV0UHJvcHMgPSB7XG4gIFwiZGF0YS1lMmUtdGVzdC1pZFwiPzogc3RyaW5nO1xuICBoZWFkZXI/OiBCYXNlUHJvbXB0SW5wdXRIZWFkZXJQcm9wcztcbiAgdmFyaWFudD86IFwiYWlcIjtcbiAgc2tpcEFJQW5pbWF0aW9uPzogYm9vbGVhbjtcbiAgYm90dG9tVG9vbGJhcj86IEJvdHRvbVRvb2xiYXJDb25maWc7XG4gIHNlbmRCdXR0b25Qcm9wcz86IFNlbmRCdXR0b25Qcm9wcztcbiAgLyoqIEN1cnJlbnRseSBzaG93cyBzZW5kIGJ1dHRvbiBwcm9jZXNzaW5nIHN0YXRlICAqL1xuICBpc1Byb2Nlc3Npbmc/OiBib29sZWFuO1xuICBjbGVhckJ1dHRvbkFyaWFMYWJlbD86IHN0cmluZztcbiAgaGludD86IFJlYWN0RWxlbWVudDtcbiAgLyoqIFNob3dzIGluIHRoZSBjbGVhciBidXR0b24gc3BhY2UgaW4gZW1wdHkgc3RhdGUgKi9cbiAgZW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudD86IFJlYWN0RWxlbWVudDtcbiAgb25DbGVhcjogKCkgPT4gdm9pZDtcbiAgLyoqIENhbGxlZCB3aGVuIHVzZXIgc2VsZWN0cyAob3IgcmVqZWN0cykgYSBsaXN0IGl0ZW0gZnJvbSBhdXRvY29tcGxldGUgbGlzdCAqL1xuICBvbkNvbXBsZXRlPzogKHtcbiAgICB2YWx1ZSxcbiAgICBjYXRlZ29yeSxcbiAgICBldnQsXG4gICAgaW5kZXgsXG4gIH06IHtcbiAgICB2YWx1ZTogTGlzdEl0ZW1WYWx1ZTtcbiAgICBjYXRlZ29yeT86IHN0cmluZztcbiAgICBldnQ/OiBTeW50aGV0aWNFdmVudDtcbiAgICBpbmRleD86IG51bWJlcjtcbiAgfSkgPT4gdm9pZDtcbiAgLyoqIENhbGxlZCBvbiBFbnRlciBrZXkgdG8gc3VibWl0IHRoZSBmb3JtICAqL1xuICBvbkVudGVyS2V5OiAoKSA9PiB2b2lkO1xuICAvKiogUmVuZGVycyBhbiBpY29uIHRvIHRoZSBsZWZ0IGluc2lkZSB0aGUgdGV4dGFyZWEgKi9cbiAgbGVmdEljb24/OiBJY29uTmFtZTtcbn0gJiBPbWl0PFxuICBQcm9tcHRUZXh0QXJlYVByb3BzLFxuICBcImlzQ29sbGFwc2VkXCIgfCBcImlzQXV0b2NvbXBsZXRlTGlzdE9wZW5cIiB8IFwic2VsZWN0ZWRMaXN0SXRlbVwiIHwgXCJoYXNMZWZ0SWNvblwiXG4+ICZcbiAgUGljazxcbiAgICBBdXRvY29tcGxldGVMaXN0UHJvcHMsXG4gICAgXCJhdXRvY29tcGxldGVMaXN0SXRlbXNcIiB8IFwiYXV0b2NvbXBsZXRlTGlzdEZvb3RlclwiIHwgXCJwb3J0YWxDb250YWluZXJcIlxuICA+O1xuXG5jb25zdCBkZWZhdWx0U2VuZEJ1dHRvblByb3BzOiBTZW5kQnV0dG9uUHJvcHMgPSB7XG4gIHR5cGU6IFwic3VibWl0XCIgYXMgY29uc3QsXG4gIGljb246IFwiYXJyb3ctdXBcIiBhcyBjb25zdCxcbn07XG5cbmNvbnN0IFByb21wdElucHV0Q29tcG9uZW50ID0gZm9yd2FyZFJlZihcbiAgKFxuICAgIHtcbiAgICAgIFwiZGF0YS1lMmUtdGVzdC1pZFwiOiBkYXRhRTJlVGVzdElkLFxuICAgICAgbmFtZSxcbiAgICAgIGF1dG9jb21wbGV0ZUxpc3RJdGVtcyA9IFtdLFxuICAgICAgdmFsdWUsXG4gICAgICBib3R0b21Ub29sYmFyLFxuICAgICAgaXNQcm9jZXNzaW5nLFxuICAgICAgc2VuZEJ1dHRvblByb3BzLFxuICAgICAgYXV0b2NvbXBsZXRlTGlzdEZvb3RlcixcbiAgICAgIGNsZWFyQnV0dG9uQXJpYUxhYmVsID0gXCJDbGVhciBpbnB1dFwiLFxuICAgICAgaGludCxcbiAgICAgIGVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnQsXG4gICAgICBpc05hdkJhclZhcmlhbnQsXG4gICAgICBwb3J0YWxDb250YWluZXIsXG4gICAgICBsZWZ0SWNvbixcbiAgICAgIGhlYWRlcixcbiAgICAgIG9uQ2hhbmdlLFxuICAgICAgb25Db21wbGV0ZSxcbiAgICAgIG9uQ2xlYXIsXG4gICAgICBvbkVudGVyS2V5LFxuICAgICAgb25Gb2N1cyxcbiAgICAgIG9uQmx1cixcbiAgICAgIG9uS2V5RG93bixcbiAgICAgIHZhcmlhbnQsXG4gICAgICBza2lwQUlBbmltYXRpb24gPSBmYWxzZSxcbiAgICAgIC4uLnJlc3RcbiAgICB9OiBQcm9tcHRJbnB1dFByb3BzLFxuICAgIHJlZjogUmVmT2JqZWN0PEhUTUxUZXh0QXJlYUVsZW1lbnQ+XG4gICk6IFJlYWN0RWxlbWVudCA9PiB7XG4gICAgY29uc3QgY29udGFpbmVyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgICBjb25zdCB0ZXh0QXJlYUNvbnRhaW5lclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gICAgY29uc3QgaW50ZXJuYWxSZWYgPSB1c2VSZWY8SFRNTFRleHRBcmVhRWxlbWVudD4obnVsbCk7XG4gICAgY29uc3QgW3NlbGVjdGVkSW5kZXgsIHNldFNlbGVjdGVkSW5kZXhdID0gdXNlU3RhdGUoLTEpO1xuICAgIGNvbnN0IFtpc0NvbGxhcHNlZCwgc2V0SXNDb2xsYXBzZWRdID0gdXNlU3RhdGUoaXNOYXZCYXJWYXJpYW50KTtcbiAgICBjb25zdCB1c2VyVHlwZWRRdWVyeSA9IHVzZVJlZihcIlwiKTtcbiAgICBjb25zdCBbaXNBdXRvY29tcGxldGVMaXN0T3Blbiwgc2V0SXNBdXRvY29tcGxldGVMaXN0T3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgdGV4dEFyZWFSZWYgPSByZWYgfHwgaW50ZXJuYWxSZWY7XG5cbiAgICBjb25zdCBtZXJnZWRTZW5kQnV0dG9uUHJvcHMgPSB7XG4gICAgICAuLi5kZWZhdWx0U2VuZEJ1dHRvblByb3BzLFxuICAgICAgLi4uKHNlbmRCdXR0b25Qcm9wcyA/PyB7fSksXG4gICAgfTtcblxuICAgIHVzZU91dHNpZGVDbGljayhcbiAgICAgIGNvbnRhaW5lclJlZixcbiAgICAgIChldnQpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICFjb250YWluZXJSZWYuY3VycmVudD8uY29udGFpbnMoZXZ0LnRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgICAgICFwb3J0YWxDb250YWluZXI/LmNvbnRhaW5zKGV2dC50YXJnZXQgYXMgTm9kZSkgJiZcbiAgICAgICAgICBldnQudGFyZ2V0ICE9PSBudWxsXG4gICAgICAgICkge1xuICAgICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgIWlzQ29sbGFwc2VkICYmIGlzTmF2QmFyVmFyaWFudFxuICAgICk7XG5cbiAgICBjb25zdCBjbG9zZUF1dG9jb21wbGV0ZUxpc3QgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBzZXRJc0F1dG9jb21wbGV0ZUxpc3RPcGVuKGZhbHNlKTtcbiAgICAgIHNldFNlbGVjdGVkSW5kZXgoLTEpO1xuICAgIH0sIFtdKTtcblxuICAgIGNvbnN0IG9wZW5BdXRvY29tcGxldGVMaXN0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgaWYgKGF1dG9jb21wbGV0ZUxpc3RJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgc2V0SXNBdXRvY29tcGxldGVMaXN0T3Blbih0cnVlKTtcbiAgICAgICAgc2V0U2VsZWN0ZWRJbmRleCgtMSk7XG4gICAgICB9XG4gICAgfSwgW2F1dG9jb21wbGV0ZUxpc3RJdGVtc10pO1xuXG4gICAgY29uc3QgYWNjZXB0VGV4dFNlbGVjdGlvbiA9ICgpID0+IHtcbiAgICAgIHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQgPSB2YWx1ZTtcbiAgICAgIGlmIChcbiAgICAgICAgdGV4dEFyZWFSZWYuY3VycmVudC5zZWxlY3Rpb25TdGFydCAhPT0gdGV4dEFyZWFSZWYuY3VycmVudC5zZWxlY3Rpb25FbmRcbiAgICAgICkge1xuICAgICAgICB0ZXh0QXJlYVJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKHZhbHVlLmxlbmd0aCwgdmFsdWUubGVuZ3RoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmIChhdXRvY29tcGxldGVMaXN0SXRlbXMubGVuZ3RoICYmICFpc0NvbGxhcHNlZCkge1xuICAgICAgICBvcGVuQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2xvc2VBdXRvY29tcGxldGVMaXN0KCk7XG4gICAgICB9XG4gICAgfSwgW1xuICAgICAgYXV0b2NvbXBsZXRlTGlzdEl0ZW1zLFxuICAgICAgb3BlbkF1dG9jb21wbGV0ZUxpc3QsXG4gICAgICBjbG9zZUF1dG9jb21wbGV0ZUxpc3QsXG4gICAgICBpc0NvbGxhcHNlZCxcbiAgICBdKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAodmFsdWUgJiYgdmFsdWUgIT09IHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQgJiYgaXNBdXRvY29tcGxldGVMaXN0T3Blbikge1xuICAgICAgICB0ZXh0QXJlYVJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKFxuICAgICAgICAgIHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQubGVuZ3RoLFxuICAgICAgICAgIHZhbHVlLmxlbmd0aFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0sIFt2YWx1ZSwgdGV4dEFyZWFSZWYsIGlzQXV0b2NvbXBsZXRlTGlzdE9wZW5dKTtcblxuICAgIC8vIERldGVybWluZSB3aGVuIGZvY3VzIGxlYXZlcyB0aGUgY29udGFpbmVyIHRvIGNvbGxhcHNlIGl0XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGxldCBoYW5kbGVyOiAoZXZ0OiBGb2N1c0V2ZW50KSA9PiB2b2lkO1xuICAgICAgY29uc3QgY29udGFpbmVyID0gY29udGFpbmVyUmVmLmN1cnJlbnQ7XG5cbiAgICAgIGlmIChpc05hdkJhclZhcmlhbnQgJiYgY29udGFpbmVyKSB7XG4gICAgICAgIGhhbmRsZXIgPSAoZXZ0OiBGb2N1c0V2ZW50KSA9PiB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgIWNvbnRhaW5lclJlZi5jdXJyZW50Py5jb250YWlucyhldnQucmVsYXRlZFRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgICAgICAgIXBvcnRhbENvbnRhaW5lcj8uY29udGFpbnMoZXZ0LnJlbGF0ZWRUYXJnZXQgYXMgTm9kZSkgJiZcbiAgICAgICAgICAgIGV2dC5yZWxhdGVkVGFyZ2V0ICE9PSBudWxsXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBzZXRJc0NvbGxhcHNlZCh0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwiZm9jdXNvdXRcIiwgaGFuZGxlcik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImZvY3Vzb3V0XCIsIGhhbmRsZXIpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0sIFtpc05hdkJhclZhcmlhbnQsIGNvbnRhaW5lclJlZiwgcG9ydGFsQ29udGFpbmVyXSk7XG5cbiAgICBjb25zdCBmbGF0dGVuZWRMaXN0SXRlbXMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGNvbnN0IGxpc3Q6IEZsYXR0ZW5lZExpc3RJdGVtW10gPSBbXTtcblxuICAgICAgYXV0b2NvbXBsZXRlTGlzdEl0ZW1zLmZvckVhY2goKGxpc3RJdGVtKSA9PiB7XG4gICAgICAgIGxpc3RJdGVtLml0ZW1zLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgbGlzdC5wdXNoKHtcbiAgICAgICAgICAgIGNhdGVnb3J5OiBsaXN0SXRlbS5jYXRlZ29yeSxcbiAgICAgICAgICAgIGluZGV4SW5DYXRlZ29yeTogaW5kZXgsXG4gICAgICAgICAgICB2YWx1ZTogaXRlbS52YWx1ZSxcbiAgICAgICAgICAgIGlkOiBnZXRMaXN0SXRlbUlkKG5hbWUsIGxpc3RJdGVtLmNhdGVnb3J5LCBpbmRleCksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gbGlzdDtcbiAgICB9LCBbYXV0b2NvbXBsZXRlTGlzdEl0ZW1zLCBuYW1lXSk7XG5cbiAgICBjb25zdCBoYW5kbGVTZWxlY3RlZEluZGV4Q2hhbmdlID0gKGluZGV4OiBudW1iZXIsIGV2dD86IFN5bnRoZXRpY0V2ZW50KSA9PiB7XG4gICAgICBzZXRTZWxlY3RlZEluZGV4KGluZGV4KTtcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgY29uc3QgeyBjYXRlZ29yeSwgdmFsdWU6IGl0ZW1WYWx1ZSB9ID0gZmxhdHRlbmVkTGlzdEl0ZW1zW2luZGV4XTtcblxuICAgICAgICBvbkNvbXBsZXRlKHsgdmFsdWU6IGl0ZW1WYWx1ZSwgY2F0ZWdvcnksIGV2dCwgaW5kZXggfSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZUxpc3RJdGVtQ2xpY2sgPSAoXG4gICAgICBjYXRlZ29yeTogc3RyaW5nLFxuICAgICAgaW5kZXhJbkNhdGVnb3J5OiBudW1iZXIsXG4gICAgICBldnQ/OiBNb3VzZUV2ZW50XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IGZsYXR0ZW5lZExpc3RJdGVtcy5maW5kSW5kZXgoXG4gICAgICAgIChsaXN0SXRlbSkgPT5cbiAgICAgICAgICBsaXN0SXRlbS5jYXRlZ29yeSA9PT0gY2F0ZWdvcnkgJiZcbiAgICAgICAgICBsaXN0SXRlbS5pbmRleEluQ2F0ZWdvcnkgPT09IGluZGV4SW5DYXRlZ29yeVxuICAgICAgKTtcblxuICAgICAgaGFuZGxlU2VsZWN0ZWRJbmRleENoYW5nZShpbmRleCwgZXZ0KTtcbiAgICAgIGNsb3NlQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgaWYgKGlzTmF2QmFyVmFyaWFudCkge1xuICAgICAgICBzZXRJc0NvbGxhcHNlZCh0cnVlKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlS2V5RG93bjogS2V5Ym9hcmRFdmVudEhhbmRsZXI8SFRNTFRleHRBcmVhRWxlbWVudD4gPSAoZXZ0KSA9PiB7XG4gICAgICBpZiAoaXNBdXRvY29tcGxldGVMaXN0T3Blbikge1xuICAgICAgICBzd2l0Y2ggKGV2dC5rZXkpIHtcbiAgICAgICAgICBjYXNlIFwiRXNjYXBlXCI6XG4gICAgICAgICAgICBjbG9zZUF1dG9jb21wbGV0ZUxpc3QoKTtcbiAgICAgICAgICAgIG9uQ29tcGxldGUoeyB2YWx1ZTogdXNlclR5cGVkUXVlcnkuY3VycmVudCwgZXZ0IH0pO1xuICAgICAgICAgICAgaWYgKGlzTmF2QmFyVmFyaWFudCkge1xuICAgICAgICAgICAgICBzZXRJc0NvbGxhcHNlZCh0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgXCJFbnRlclwiOlxuICAgICAgICAgICAgaWYgKCFldnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgIGNsb3NlQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgICAgICAgICBhY2NlcHRUZXh0U2VsZWN0aW9uKCk7XG5cbiAgICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgb25FbnRlcktleT8uKCk7XG4gICAgICAgICAgICAgICAgaWYgKGlzTmF2QmFyVmFyaWFudCkge1xuICAgICAgICAgICAgICAgICAgc2V0SXNDb2xsYXBzZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFwiIFwiOlxuICAgICAgICAgICAgYWNjZXB0VGV4dFNlbGVjdGlvbigpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBcIkFycm93VXBcIjpcbiAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgaWYgKHNlbGVjdGVkSW5kZXggPiAtMSkge1xuICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RlZEluZGV4Q2hhbmdlKHNlbGVjdGVkSW5kZXggLSAxLCBldnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBcIkFycm93RG93blwiOlxuICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRJbmRleCA8IGZsYXR0ZW5lZExpc3RJdGVtcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgIGhhbmRsZVNlbGVjdGVkSW5kZXhDaGFuZ2Uoc2VsZWN0ZWRJbmRleCArIDEsIGV2dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2l0Y2ggKGV2dC5rZXkpIHtcbiAgICAgICAgICBjYXNlIFwiRXNjYXBlXCI6XG4gICAgICAgICAgICBvbkNsZWFyPy4oKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgXCJFbnRlclwiOlxuICAgICAgICAgICAgaWYgKCFldnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIG9uRW50ZXJLZXk/LigpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgb25LZXlEb3duPy4oZXZ0KTtcbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlOiBDaGFuZ2VFdmVudEhhbmRsZXI8SFRNTFRleHRBcmVhRWxlbWVudD4gPSAoZXZ0KSA9PiB7XG4gICAgICB1c2VyVHlwZWRRdWVyeS5jdXJyZW50ID0gZXZ0LnRhcmdldC52YWx1ZTtcbiAgICAgIG9uQ2hhbmdlKGV2dCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZUZvY3VzOiBGb2N1c0V2ZW50SGFuZGxlcjxIVE1MVGV4dEFyZWFFbGVtZW50PiA9IChldnQpID0+IHtcbiAgICAgIHNldElzQ29sbGFwc2VkKGZhbHNlKTtcbiAgICAgIG9uRm9jdXM/LihldnQpO1xuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVCbHVyOiBGb2N1c0V2ZW50SGFuZGxlcjxIVE1MVGV4dEFyZWFFbGVtZW50PiA9IChldnQpID0+IHtcbiAgICAgIGlmICh2YWx1ZSAhPT0gdXNlclR5cGVkUXVlcnkuY3VycmVudCkge1xuICAgICAgICBvbkNvbXBsZXRlPy4oeyB2YWx1ZTogdXNlclR5cGVkUXVlcnkuY3VycmVudCwgZXZ0IH0pO1xuICAgICAgfVxuICAgICAgb25CbHVyPy4oZXZ0KTtcbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlU2VuZEJ1dHRvbkNsaWNrID0gKGV2dDogTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4pID0+IHtcbiAgICAgIG1lcmdlZFNlbmRCdXR0b25Qcm9wcy5vbkNsaWNrPy4oZXZ0KTtcbiAgICAgIGNsb3NlQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgaWYgKGlzTmF2QmFyVmFyaWFudCkge1xuICAgICAgICBzZXRJc0NvbGxhcHNlZCh0cnVlKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlUHJldmVudEZvY3VzID0gKGV2dDogUmVhY3QuUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAvLyBQcmV2ZW50IHRoZSB0ZXh0YXJlYSBmcm9tIGJlaW5nIHVuZm9jdXNlZFxuICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZU9uQ29udGFpbmVyUG9pbnRlckRvd24gPSAoZXZ0OiBSZWFjdC5Qb2ludGVyRXZlbnQpID0+IHtcbiAgICAgIC8vIEZvY3VzIHRleHRhcmVhIHdoZW4gY2xpY2tpbmcgb24gdGhlIGNvbnRhaW5lciBvbmx5XG4gICAgICBpZiAoZXZ0LnRhcmdldCA9PT0gZXZ0LmN1cnJlbnRUYXJnZXQpIHtcbiAgICAgICAgdGV4dEFyZWFSZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IHNlbGVjdGVkTGlzdEl0ZW0gPVxuICAgICAgc2VsZWN0ZWRJbmRleCAhPT0gLTEgPyBmbGF0dGVuZWRMaXN0SXRlbXNbc2VsZWN0ZWRJbmRleF0gOiBudWxsO1xuXG4gICAgY29uc3QgZW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudEVsbSA9IGVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnQgPyAoXG4gICAgICA8U3R5bGVkRW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudENvbnRhaW5lclxuICAgICAgICBpc05hdkJhclZhcmlhbnQ9e2lzTmF2QmFyVmFyaWFudH1cbiAgICAgID5cbiAgICAgICAgPFRleHQgY29sb3I9XCJ0ZXJ0aWFyeVwiPntlbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50fTwvVGV4dD5cbiAgICAgIDwvU3R5bGVkRW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudENvbnRhaW5lcj5cbiAgICApIDogbnVsbDtcblxuICAgIGNvbnN0IGNsZWFyQnV0dG9uRWxtID0gdmFsdWUgPyAoXG4gICAgICA8U3R5bGVkQ2xlYXJCdXR0b25cbiAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgIGljb249XCJ4LWNpcmNsZS1maWxsZWRcIlxuICAgICAgICBhcmlhLWxhYmVsPXtjbGVhckJ1dHRvbkFyaWFMYWJlbH1cbiAgICAgICAgaXNOYXZCYXJWYXJpYW50PXtpc05hdkJhclZhcmlhbnR9XG4gICAgICAgIG9uUG9pbnRlckRvd249e2hhbmRsZVByZXZlbnRGb2N1c31cbiAgICAgICAgb25DbGljaz17b25DbGVhcn1cbiAgICAgIC8+XG4gICAgKSA6IChcbiAgICAgIGVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnRFbG1cbiAgICApO1xuXG4gICAgY29uc3QgaGludEVsbSA9ICEhaGludCAmJiAoXG4gICAgICA8SW5saW5lIGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAgPFRleHQgc2l6ZT1cInNcIiBjb2xvcj1cInRlcnRpYXJ5XCI+XG4gICAgICAgICAge2hpbnR9XG4gICAgICAgIDwvVGV4dD5cbiAgICAgIDwvSW5saW5lPlxuICAgICk7XG5cbiAgICBjb25zdCBib3R0b21Ub29sYmFyRWxtID0gKGJvdHRvbVRvb2xiYXI/LnJpZ2h0Q29udGVudCB8fFxuICAgICAgYm90dG9tVG9vbGJhcj8ubGVmdENvbnRlbnQgfHxcbiAgICAgICEhc2VuZEJ1dHRvblByb3BzKSAmJlxuICAgICAgIWlzQ29sbGFwc2VkICYmIChcbiAgICAgICAgPD5cbiAgICAgICAgICB7Ym90dG9tVG9vbGJhcj8ubGVmdENvbnRlbnQgJiYgKFxuICAgICAgICAgICAgPFN0eWxlZFNsb3Q+e2JvdHRvbVRvb2xiYXIubGVmdENvbnRlbnR9PC9TdHlsZWRTbG90PlxuICAgICAgICAgICl9XG4gICAgICAgICAgPFN0eWxlZFNsb3QgZGF0YS1lMmUtdGVzdC1pZD1cImJvdHRvbVRvb2xiYXJcIiBzaWRlPVwicmlnaHRcIj5cbiAgICAgICAgICAgIDxJbmxpbmUgc3BhY2U9XCJ4c1wiIHZBbGlnbkl0ZW1zPVwiY2VudGVyXCI+XG4gICAgICAgICAgICAgIHtib3R0b21Ub29sYmFyPy5yaWdodENvbnRlbnR9XG4gICAgICAgICAgICAgIHtzZW5kQnV0dG9uUHJvcHMgJiYgKFxuICAgICAgICAgICAgICAgIDxTdWJUaGVtZVByb3ZpZGVyIG5hbWU9e3ZhcmlhbnR9PlxuICAgICAgICAgICAgICAgICAgPFJvdW5kQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGFyaWFBdHRyaWJ1dGVzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgXCJhcmlhLWxhYmVsXCI6IGlzUHJvY2Vzc2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBcIlByb2Nlc3NpbmcgcXVlcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBcIlN1Ym1pdCBxdWVyeVwiLFxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICB7Li4ubWVyZ2VkU2VuZEJ1dHRvblByb3BzfVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17bWVyZ2VkU2VuZEJ1dHRvblByb3BzLmRpc2FibGVkID8/ICF2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlU2VuZEJ1dHRvbkNsaWNrfVxuICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJEb3duPXtoYW5kbGVQcmV2ZW50Rm9jdXN9XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgaWNvbj17XG4gICAgICAgICAgICAgICAgICAgICAgaXNQcm9jZXNzaW5nID8gXCJzdG9wLWZpbGxlZFwiIDogbWVyZ2VkU2VuZEJ1dHRvblByb3BzLmljb25cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1N1YlRoZW1lUHJvdmlkZXI+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0lubGluZT5cbiAgICAgICAgICA8L1N0eWxlZFNsb3Q+XG4gICAgICAgIDwvPlxuICAgICAgKTtcblxuICAgIGNvbnN0IGJvcmRlclJhZGl1c1NpemU6IEJvcmRlclJhZGl1cyA9IGlzQ29sbGFwc2VkID8gXCJ4c1wiIDogXCJtXCI7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGRhdGEtZTJlLXRlc3QtaWQ9e2RhdGFFMmVUZXN0SWR9XG4gICAgICAgICAgZGF0YS1kcy1pZD1cIlByb21wdElucHV0XCJcbiAgICAgICAgICByZWY9e2NvbnRhaW5lclJlZn1cbiAgICAgICAgICAvLyBUcmFuc2xhdGlvbiBkaXNhYmxlZCBmb3IgY29uc2lzdGVuY3kgd2l0aCB0aGUgYXV0b2NvbXBsZXRlIGxpc3RcbiAgICAgICAgICB0cmFuc2xhdGU9XCJub1wiXG4gICAgICAgID5cbiAgICAgICAgICA8U3RhY2sgc3BhY2U9XCJzXCI+XG4gICAgICAgICAgICA8QW5pbWF0ZWRCb3JkZXJcbiAgICAgICAgICAgICAgc2tpcEFuaW1hdGlvbj17c2tpcEFJQW5pbWF0aW9uIHx8IHZhcmlhbnQgIT09IFwiYWlcIn1cbiAgICAgICAgICAgICAgcmFkaXVzPXsxMn1cbiAgICAgICAgICAgICAgaXRlcmF0aW9ucz17MX1cbiAgICAgICAgICAgICAgdGhpY2tuZXNzPXsyfVxuICAgICAgICAgICAgICBoaWRlQ2hpbGRCb3JkZXJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPFN1YlRoZW1lUHJvdmlkZXIgbmFtZT17dmFyaWFudH0+XG4gICAgICAgICAgICAgICAgPEN1c3RvbUNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgZWxldmF0aW9uPXswfVxuICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzPXtib3JkZXJSYWRpdXNTaXplfVxuICAgICAgICAgICAgICAgICAgaGlkZUJvcmRlcj17aXNDb2xsYXBzZWR9XG4gICAgICAgICAgICAgICAgICBoYXNTaGFkb3c9eyFpc05hdkJhclZhcmlhbnR9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN1YlRoZW1lUHJvdmlkZXIgbmFtZT1cInVuc2V0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxTdHlsZWRTbG90c0NvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgIHJlZj17dGV4dEFyZWFDb250YWluZXJSZWZ9XG4gICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyRG93bj17aGFuZGxlT25Db250YWluZXJQb2ludGVyRG93bn1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtoZWFkZXIgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFByb21wdElucHV0SGVhZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5oZWFkZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1c1NpemU9e2JvcmRlclJhZGl1c1NpemV9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZFRleHRBcmVhQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAge2xlZnRJY29uICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZExlZnRJY29uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPXtsZWZ0SWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwidGVydGlhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZExlZnRJY29uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxQcm9tcHRUZXh0QXJlYVxuICAgICAgICAgICAgICAgICAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUUyZVRlc3RJZD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUUyZVRlc3RJZCA/IGAke2RhdGFFMmVUZXN0SWR9LWlucHV0YCA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXt0ZXh0QXJlYVJlZn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNOYXZCYXJWYXJpYW50PXtpc05hdkJhclZhcmlhbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkTGlzdEl0ZW09e3NlbGVjdGVkTGlzdEl0ZW19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzQXV0b2NvbXBsZXRlTGlzdE9wZW49e2lzQXV0b2NvbXBsZXRlTGlzdE9wZW59XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzQ29sbGFwc2VkPXtpc0NvbGxhcHNlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzTGVmdEljb249eyEhbGVmdEljb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uRm9jdXM9e2hhbmRsZUZvY3VzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93bn1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICB7Y2xlYXJCdXR0b25FbG19XG4gICAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWRUZXh0QXJlYUNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICB7Ym90dG9tVG9vbGJhckVsbX1cbiAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWRTbG90c0NvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvU3ViVGhlbWVQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L0N1c3RvbUNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9TdWJUaGVtZVByb3ZpZGVyPlxuICAgICAgICAgICAgPC9BbmltYXRlZEJvcmRlcj5cbiAgICAgICAgICAgIHtoaW50RWxtfVxuICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxBdXRvY29tcGxldGVMaXN0XG4gICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgYXV0b2NvbXBsZXRlTGlzdEl0ZW1zPXthdXRvY29tcGxldGVMaXN0SXRlbXN9XG4gICAgICAgICAgdHJpZ2dlclJlZj17dGV4dEFyZWFDb250YWluZXJSZWZ9XG4gICAgICAgICAgc2VsZWN0ZWRMaXN0SXRlbT17c2VsZWN0ZWRMaXN0SXRlbX1cbiAgICAgICAgICBpc09wZW49e2lzQXV0b2NvbXBsZXRlTGlzdE9wZW59XG4gICAgICAgICAgYXV0b2NvbXBsZXRlTGlzdEZvb3Rlcj17YXV0b2NvbXBsZXRlTGlzdEZvb3Rlcn1cbiAgICAgICAgICBwb3J0YWxDb250YWluZXI9e3BvcnRhbENvbnRhaW5lcn1cbiAgICAgICAgICBvbkxpc3RJdGVtQ2xpY2s9e2hhbmRsZUxpc3RJdGVtQ2xpY2t9XG4gICAgICAgIC8+XG4gICAgICA8Lz5cbiAgICApO1xuICB9XG4pO1xuXG5jb25zdCBDdXN0b21CdXR0b24gPSBzdHlsZWQoQnV0dG9uKSgoeyB0aGVtZSB9KSA9PiAoe1xuICBib3JkZXJSYWRpdXM6IHRoZW1lLnZhcmlhYmxlcy5zaXplLmJvcmRlclJhZGl1cy5sLFxufSkpO1xuXG4vLyBuZWVkIHRvIHNpbXBsaWZ5IHRoaXMgdHlwZSBmb3IgcmV1c2VcbmNvbnN0IFN1Z2dlc3Rpb25CdXR0b24gPSBmb3J3YXJkUmVmKFxuICA8QyBleHRlbmRzIFJlYWN0LkVsZW1lbnRUeXBlID0gXCJidXR0b25cIj4oXG4gICAgcHJvcHM6IFBvbHltb3JwaGljQ29tcG9uZW50UHJvcHNXaXRoUmVmPFxuICAgICAgQyxcbiAgICAgIE9taXQ8QnV0dG9uUHJvcHMsIFwidmFyaWFudFwiIHwgXCJzaXplXCIgfCBcInJlZlwiPlxuICAgID4sXG4gICAgcmVmOiBQb2x5bW9ycGhpY1JlZjxDPlxuICApID0+IDxDdXN0b21CdXR0b24gey4uLnByb3BzfSB2YXJpYW50PVwic2Vjb25kYXJ5XCIgc2l6ZT1cInNcIiByZWY9e3JlZn0gLz5cbik7XG5cbmV4cG9ydCBjb25zdCBQcm9tcHRJbnB1dCA9IE9iamVjdC5hc3NpZ24oUHJvbXB0SW5wdXRDb21wb25lbnQsIHtcbiAgU3VnZ2VzdGlvbkJ1dHRvbixcbn0pIGFzIHR5cGVvZiBQcm9tcHRJbnB1dENvbXBvbmVudCAmIHtcbiAgU3VnZ2VzdGlvbkJ1dHRvbjogdHlwZW9mIFN1Z2dlc3Rpb25CdXR0b247XG59O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTZINkIifQ== */"),StyledSlot=(0,_styled.default)("div",{target:"e1fprshj6",label:"StyledSlot"})(({theme,side})=>({margin:`0 ${theme.variables.size.spacing.s} ${theme.variables.size.spacing.s}`,..."right"===side&&{marginLeft:"auto"}}),"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvUHJvbXB0SW5wdXQvUHJvbXB0SW5wdXQudHN4Iiwic291cmNlcyI6WyJzcmMvY29tcG9uZW50cy9Qcm9tcHRJbnB1dC9Qcm9tcHRJbnB1dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBSZWFjdEVsZW1lbnQsXG4gIENoYW5nZUV2ZW50SGFuZGxlcixcbiAgS2V5Ym9hcmRFdmVudEhhbmRsZXIsXG4gIFJlZk9iamVjdCxcbiAgRm9jdXNFdmVudEhhbmRsZXIsXG4gIFN5bnRoZXRpY0V2ZW50LFxuICBNb3VzZUV2ZW50LFxufSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IFJlYWN0LCB7XG4gIHVzZVJlZixcbiAgdXNlTWVtbyxcbiAgdXNlU3RhdGUsXG4gIHVzZUVmZmVjdCxcbiAgdXNlQ2FsbGJhY2ssXG4gIGZvcndhcmRSZWYsXG59IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5cbmltcG9ydCB0eXBlIHsgUHJvbXB0VGV4dEFyZWFQcm9wcyB9IGZyb20gXCIuL1Byb21wdFRleHRBcmVhXCI7XG5pbXBvcnQge1xuICBQcm9tcHRUZXh0QXJlYSxcbiAgZ2V0UGFkZGluZ0hvcml6b250YWwsXG4gIGdldFBhZGRpbmdWZXJ0aWNhbCxcbn0gZnJvbSBcIi4vUHJvbXB0VGV4dEFyZWFcIjtcbmltcG9ydCB7IENvbnRhaW5lciB9IGZyb20gXCIuLi9Db250YWluZXJcIjtcbmltcG9ydCB0eXBlIHsgQXV0b2NvbXBsZXRlTGlzdFByb3BzIH0gZnJvbSBcIi4vQXV0b2NvbXBsZXRlTGlzdFwiO1xuXG5pbXBvcnQgeyBBdXRvY29tcGxldGVMaXN0IH0gZnJvbSBcIi4vQXV0b2NvbXBsZXRlTGlzdFwiO1xuaW1wb3J0IHtcbiAgZ2V0TGlzdEl0ZW1JZCxcbiAgdHlwZSBGbGF0dGVuZWRMaXN0SXRlbSxcbiAgdHlwZSBMaXN0SXRlbVZhbHVlLFxufSBmcm9tIFwiLi9DYXRlZ29yeUxpc3RcIjtcbmltcG9ydCB7IFRleHQgfSBmcm9tIFwiLi4vVHlwb2dyYXBoeS9UZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24sIHR5cGUgQnV0dG9uUHJvcHMgfSBmcm9tIFwiLi4vQnV0dG9uL0J1dHRvblwiO1xuaW1wb3J0IHR5cGUge1xuICBQb2x5bW9ycGhpY1JlZixcbiAgUG9seW1vcnBoaWNDb21wb25lbnRQcm9wc1dpdGhSZWYsXG4gIEJvcmRlclJhZGl1cyxcbn0gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5pbXBvcnQgeyBJbmxpbmUgfSBmcm9tIFwiLi4vSW5saW5lL0lubGluZVwiO1xuaW1wb3J0IHR5cGUgeyBSb3VuZEJ1dHRvblByb3BzIH0gZnJvbSBcIi4uL1JvdW5kQnV0dG9uL1JvdW5kQnV0dG9uXCI7XG5pbXBvcnQgeyBSb3VuZEJ1dHRvbiB9IGZyb20gXCIuLi9Sb3VuZEJ1dHRvbi9Sb3VuZEJ1dHRvblwiO1xuaW1wb3J0IHR5cGUgeyBQaWN0b2dyYW1CdXR0b25Qcm9wcyB9IGZyb20gXCIuLi9QaWN0b2dyYW1CdXR0b24vUGljdG9ncmFtQnV0dG9uXCI7XG5pbXBvcnQgeyBQaWN0b2dyYW1CdXR0b24gfSBmcm9tIFwiLi4vUGljdG9ncmFtQnV0dG9uL1BpY3RvZ3JhbUJ1dHRvblwiO1xuaW1wb3J0IHsgU3RhY2sgfSBmcm9tIFwiLi4vU3RhY2svU3RhY2tcIjtcbmltcG9ydCB7IHVzZU91dHNpZGVDbGljayB9IGZyb20gXCIuLi8uLi9zaGFyZWQvdXNlT3V0c2lkZUNsaWNrXCI7XG5pbXBvcnQgdHlwZSB7IEljb25OYW1lIH0gZnJvbSBcIi4uL0ljb24vSWNvblwiO1xuaW1wb3J0IHsgSWNvbiB9IGZyb20gXCIuLi9JY29uL0ljb25cIjtcbmltcG9ydCB7IFN1YlRoZW1lUHJvdmlkZXIgfSBmcm9tIFwiLi4vU3ViVGhlbWVQcm92aWRlci9TdWJUaGVtZVByb3ZpZGVyXCI7XG5pbXBvcnQgeyBBbmltYXRlZEJvcmRlciB9IGZyb20gXCIuLi9VdGlsaXRpZXMvQW5pbWF0ZWRCb3JkZXIvQW5pbWF0ZWRCb3JkZXJcIjtcbmltcG9ydCB7XG4gIFByb21wdElucHV0SGVhZGVyLFxuICB0eXBlIEJhc2VQcm9tcHRJbnB1dEhlYWRlclByb3BzLFxufSBmcm9tIFwiLi9Qcm9tcHRJbnB1dEhlYWRlclwiO1xuXG5jb25zdCBDdXN0b21Db250YWluZXIgPSBzdHlsZWQoQ29udGFpbmVyKTx7XG4gIGhpZGVCb3JkZXI6IGJvb2xlYW47XG4gIGhhc1NoYWRvdzogYm9vbGVhbjtcbn0+KCh7IHRoZW1lLCBoaWRlQm9yZGVyLCBoYXNTaGFkb3cgfSkgPT4gKHtcbiAgYm9yZGVyOiBgMXB4IHNvbGlkICR7dGhlbWUudmFsdWVzLmNvbG9yLmJvcmRlci5wcmltYXJ5LmRlZmF1bHR9YCxcbiAgLi4uKGhhc1NoYWRvdyAmJiB7XG4gICAgYm94U2hhZG93OiB0aGVtZS52YWx1ZXMuc2hhZG93LmRlZmF1bHRSaW5nLFxuICAgIHRyYW5zaXRpb25Qcm9wZXJ0eTogXCJib3gtc2hhZG93LCBib3JkZXItY29sb3IsIG91dGxpbmUtY29sb3JcIixcbiAgICB0cmFuc2l0aW9uRHVyYXRpb246IHRoZW1lLnZhcmlhYmxlcy5hbmltYXRpb24ucHJvbXB0SW5wdXQuZm9jdXMuZHVyYXRpb24sXG4gICAgdHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uOlxuICAgICAgdGhlbWUudmFyaWFibGVzLmFuaW1hdGlvbi5wcm9tcHRJbnB1dC5mb2N1cy50aW1pbmdGdW5jdGlvbixcbiAgfSksXG4gIC4uLihoaWRlQm9yZGVyICYmIHtcbiAgICBib3JkZXJDb2xvcjogXCJ0cmFuc3BhcmVudFwiLFxuICB9KSxcbiAgY3Vyc29yOiBcInRleHRcIixcbiAgb3V0bGluZUNvbG9yOiBcInRyYW5zcGFyZW50XCIsXG4gIFtgJjpoYXModGV4dGFyZWE6Zm9jdXMtdmlzaWJsZSlgXToge1xuICAgIG91dGxpbmVXaWR0aDogMSxcbiAgICBvdXRsaW5lU3R5bGU6IFwic29saWRcIixcbiAgICBvdXRsaW5lT2Zmc2V0OiAtMSxcbiAgICBib3hTaGFkb3c6IHRoZW1lLnZhbHVlcy5zaGFkb3cuZm9jdXNSaW5nLFxuICAgIG91dGxpbmVDb2xvcjogdGhlbWUudmFsdWVzLmNvbG9yLmJvcmRlci5hY2NlbnQuZGVmYXVsdCxcbiAgfSxcbn0pKTtcblxuY29uc3QgU3R5bGVkVGV4dEFyZWFDb250YWluZXIgPSBzdHlsZWQuZGl2KHtcbiAgYm9yZGVyUmFkaXVzOiBcImluaGVyaXRcIixcbiAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgd2lkdGg6IFwiMTAwJVwiLFxufSk7XG5cbmNvbnN0IFN0eWxlZExlZnRJY29uQ29udGFpbmVyID0gc3R5bGVkLmRpdigoeyB0aGVtZSB9KSA9PiAoe1xuICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICB0b3A6IGdldFBhZGRpbmdWZXJ0aWNhbCh0aGVtZSksXG4gIGxlZnQ6IGdldFBhZGRpbmdIb3Jpem9udGFsKHRoZW1lKSxcbn0pKTtcblxudHlwZSBTdHlsZWRFbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50Q29udGFpbmVyUHJvcHMgPSBQaWNrPFxuICBQcm9tcHRJbnB1dFByb3BzLFxuICBcImlzTmF2QmFyVmFyaWFudFwiXG4+O1xuXG5jb25zdCBTdHlsZWRFbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50Q29udGFpbmVyID1cbiAgc3R5bGVkLmRpdjxTdHlsZWRFbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50Q29udGFpbmVyUHJvcHM+KFxuICAgICh7IHRoZW1lLCBpc05hdkJhclZhcmlhbnQgfSkgPT4gKHtcbiAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICB0b3A6IGlzTmF2QmFyVmFyaWFudFxuICAgICAgICA/IHRoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcueHhzXG4gICAgICAgIDogZ2V0UGFkZGluZ1ZlcnRpY2FsKHRoZW1lKSxcbiAgICAgIHJpZ2h0OiBnZXRQYWRkaW5nSG9yaXpvbnRhbCh0aGVtZSksXG4gICAgICB1c2VyU2VsZWN0OiBcIm5vbmVcIixcbiAgICAgIHBvaW50ZXJFdmVudHM6IFwibm9uZVwiLFxuICAgIH0pXG4gICk7XG5cbnR5cGUgU3R5bGVkQ2xlYXJCdXR0b25Qcm9wcyA9IFBpY3RvZ3JhbUJ1dHRvblByb3BzICZcbiAgUGljazxQcm9tcHRJbnB1dFByb3BzLCBcImlzTmF2QmFyVmFyaWFudFwiPjtcblxuY29uc3QgU3R5bGVkQ2xlYXJCdXR0b24gPSBzdHlsZWQoUGljdG9ncmFtQnV0dG9uKTxTdHlsZWRDbGVhckJ1dHRvblByb3BzPihcbiAgKHsgdGhlbWUsIGlzTmF2QmFyVmFyaWFudCB9KSA9PiAoe1xuICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgcmlnaHQ6IHRoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcucyxcbiAgICB0b3A6IGlzTmF2QmFyVmFyaWFudCA/IDAgOiB0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnMsXG4gIH0pXG4pO1xuXG5jb25zdCBTdHlsZWRTbG90c0NvbnRhaW5lciA9IHN0eWxlZC5kaXYoe1xuICBkaXNwbGF5OiBcImZsZXhcIixcbiAgZmxleFdyYXA6IFwid3JhcFwiLFxuICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxufSk7XG5cbi8vIEl0IG5lZWRzIG1hcmdpbiBkdWUgdG8gZW1wdHkgY2xpY2thYmxlIHNwYWNlIHRoYXQgZm9jdXNlcyB0aGUgdGV4dGFyZWFcbi8vIFNsb3RzIHNob3VsZCBub3QgYmUgaW4gdGhlIGRpdiwgYmVjYXVzZSBhcmVhIGJldHdlZW4gc2hvdWxkIGJlIGNsaWNrYWJsZSBhbHNvXG50eXBlIFNsb3RQcm9wcyA9IHtcbiAgc2lkZT86IFwicmlnaHRcIjtcbn07XG5jb25zdCBTdHlsZWRTbG90ID0gc3R5bGVkLmRpdjxTbG90UHJvcHM+KCh7IHRoZW1lLCBzaWRlIH0pID0+ICh7XG4gIG1hcmdpbjogYDAgJHt0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnN9ICR7dGhlbWUudmFyaWFibGVzLnNpemUuc3BhY2luZy5zfWAsXG5cbiAgLi4uKHNpZGUgPT09IFwicmlnaHRcIiAmJiB7XG4gICAgbWFyZ2luTGVmdDogXCJhdXRvXCIsXG4gIH0pLFxufSkpO1xuXG50eXBlIFNlbmRCdXR0b25Qcm9wcyA9IE9taXQ8Um91bmRCdXR0b25Qcm9wcywgXCJpY29uXCIgfCBcInZhcmlhbnRcIj4gJiB7XG4gIGljb24/OiBcImFycm93LXVwXCIgfCBcInNlYXJjaFwiIHwgXCJhcnJvdy1yaWdodFwiIHwgXCJ2b2ljZVwiO1xufTtcblxudHlwZSBCb3R0b21Ub29sYmFyQ29uZmlnID0ge1xuICAvKiogVG9vbGJhciBlbGVtZW50cyBiZWxvdyB0ZXh0IGFyZWEgKi9cbiAgbGVmdENvbnRlbnQ/OiBSZWFjdEVsZW1lbnQ7XG4gIHJpZ2h0Q29udGVudD86IFJlYWN0RWxlbWVudDtcbn07XG5cbmV4cG9ydCB0eXBlIFByb21wdElucHV0UHJvcHMgPSB7XG4gIFwiZGF0YS1lMmUtdGVzdC1pZFwiPzogc3RyaW5nO1xuICBoZWFkZXI/OiBCYXNlUHJvbXB0SW5wdXRIZWFkZXJQcm9wcztcbiAgdmFyaWFudD86IFwiYWlcIjtcbiAgc2tpcEFJQW5pbWF0aW9uPzogYm9vbGVhbjtcbiAgYm90dG9tVG9vbGJhcj86IEJvdHRvbVRvb2xiYXJDb25maWc7XG4gIHNlbmRCdXR0b25Qcm9wcz86IFNlbmRCdXR0b25Qcm9wcztcbiAgLyoqIEN1cnJlbnRseSBzaG93cyBzZW5kIGJ1dHRvbiBwcm9jZXNzaW5nIHN0YXRlICAqL1xuICBpc1Byb2Nlc3Npbmc/OiBib29sZWFuO1xuICBjbGVhckJ1dHRvbkFyaWFMYWJlbD86IHN0cmluZztcbiAgaGludD86IFJlYWN0RWxlbWVudDtcbiAgLyoqIFNob3dzIGluIHRoZSBjbGVhciBidXR0b24gc3BhY2UgaW4gZW1wdHkgc3RhdGUgKi9cbiAgZW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudD86IFJlYWN0RWxlbWVudDtcbiAgb25DbGVhcjogKCkgPT4gdm9pZDtcbiAgLyoqIENhbGxlZCB3aGVuIHVzZXIgc2VsZWN0cyAob3IgcmVqZWN0cykgYSBsaXN0IGl0ZW0gZnJvbSBhdXRvY29tcGxldGUgbGlzdCAqL1xuICBvbkNvbXBsZXRlPzogKHtcbiAgICB2YWx1ZSxcbiAgICBjYXRlZ29yeSxcbiAgICBldnQsXG4gICAgaW5kZXgsXG4gIH06IHtcbiAgICB2YWx1ZTogTGlzdEl0ZW1WYWx1ZTtcbiAgICBjYXRlZ29yeT86IHN0cmluZztcbiAgICBldnQ/OiBTeW50aGV0aWNFdmVudDtcbiAgICBpbmRleD86IG51bWJlcjtcbiAgfSkgPT4gdm9pZDtcbiAgLyoqIENhbGxlZCBvbiBFbnRlciBrZXkgdG8gc3VibWl0IHRoZSBmb3JtICAqL1xuICBvbkVudGVyS2V5OiAoKSA9PiB2b2lkO1xuICAvKiogUmVuZGVycyBhbiBpY29uIHRvIHRoZSBsZWZ0IGluc2lkZSB0aGUgdGV4dGFyZWEgKi9cbiAgbGVmdEljb24/OiBJY29uTmFtZTtcbn0gJiBPbWl0PFxuICBQcm9tcHRUZXh0QXJlYVByb3BzLFxuICBcImlzQ29sbGFwc2VkXCIgfCBcImlzQXV0b2NvbXBsZXRlTGlzdE9wZW5cIiB8IFwic2VsZWN0ZWRMaXN0SXRlbVwiIHwgXCJoYXNMZWZ0SWNvblwiXG4+ICZcbiAgUGljazxcbiAgICBBdXRvY29tcGxldGVMaXN0UHJvcHMsXG4gICAgXCJhdXRvY29tcGxldGVMaXN0SXRlbXNcIiB8IFwiYXV0b2NvbXBsZXRlTGlzdEZvb3RlclwiIHwgXCJwb3J0YWxDb250YWluZXJcIlxuICA+O1xuXG5jb25zdCBkZWZhdWx0U2VuZEJ1dHRvblByb3BzOiBTZW5kQnV0dG9uUHJvcHMgPSB7XG4gIHR5cGU6IFwic3VibWl0XCIgYXMgY29uc3QsXG4gIGljb246IFwiYXJyb3ctdXBcIiBhcyBjb25zdCxcbn07XG5cbmNvbnN0IFByb21wdElucHV0Q29tcG9uZW50ID0gZm9yd2FyZFJlZihcbiAgKFxuICAgIHtcbiAgICAgIFwiZGF0YS1lMmUtdGVzdC1pZFwiOiBkYXRhRTJlVGVzdElkLFxuICAgICAgbmFtZSxcbiAgICAgIGF1dG9jb21wbGV0ZUxpc3RJdGVtcyA9IFtdLFxuICAgICAgdmFsdWUsXG4gICAgICBib3R0b21Ub29sYmFyLFxuICAgICAgaXNQcm9jZXNzaW5nLFxuICAgICAgc2VuZEJ1dHRvblByb3BzLFxuICAgICAgYXV0b2NvbXBsZXRlTGlzdEZvb3RlcixcbiAgICAgIGNsZWFyQnV0dG9uQXJpYUxhYmVsID0gXCJDbGVhciBpbnB1dFwiLFxuICAgICAgaGludCxcbiAgICAgIGVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnQsXG4gICAgICBpc05hdkJhclZhcmlhbnQsXG4gICAgICBwb3J0YWxDb250YWluZXIsXG4gICAgICBsZWZ0SWNvbixcbiAgICAgIGhlYWRlcixcbiAgICAgIG9uQ2hhbmdlLFxuICAgICAgb25Db21wbGV0ZSxcbiAgICAgIG9uQ2xlYXIsXG4gICAgICBvbkVudGVyS2V5LFxuICAgICAgb25Gb2N1cyxcbiAgICAgIG9uQmx1cixcbiAgICAgIG9uS2V5RG93bixcbiAgICAgIHZhcmlhbnQsXG4gICAgICBza2lwQUlBbmltYXRpb24gPSBmYWxzZSxcbiAgICAgIC4uLnJlc3RcbiAgICB9OiBQcm9tcHRJbnB1dFByb3BzLFxuICAgIHJlZjogUmVmT2JqZWN0PEhUTUxUZXh0QXJlYUVsZW1lbnQ+XG4gICk6IFJlYWN0RWxlbWVudCA9PiB7XG4gICAgY29uc3QgY29udGFpbmVyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgICBjb25zdCB0ZXh0QXJlYUNvbnRhaW5lclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gICAgY29uc3QgaW50ZXJuYWxSZWYgPSB1c2VSZWY8SFRNTFRleHRBcmVhRWxlbWVudD4obnVsbCk7XG4gICAgY29uc3QgW3NlbGVjdGVkSW5kZXgsIHNldFNlbGVjdGVkSW5kZXhdID0gdXNlU3RhdGUoLTEpO1xuICAgIGNvbnN0IFtpc0NvbGxhcHNlZCwgc2V0SXNDb2xsYXBzZWRdID0gdXNlU3RhdGUoaXNOYXZCYXJWYXJpYW50KTtcbiAgICBjb25zdCB1c2VyVHlwZWRRdWVyeSA9IHVzZVJlZihcIlwiKTtcbiAgICBjb25zdCBbaXNBdXRvY29tcGxldGVMaXN0T3Blbiwgc2V0SXNBdXRvY29tcGxldGVMaXN0T3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgdGV4dEFyZWFSZWYgPSByZWYgfHwgaW50ZXJuYWxSZWY7XG5cbiAgICBjb25zdCBtZXJnZWRTZW5kQnV0dG9uUHJvcHMgPSB7XG4gICAgICAuLi5kZWZhdWx0U2VuZEJ1dHRvblByb3BzLFxuICAgICAgLi4uKHNlbmRCdXR0b25Qcm9wcyA/PyB7fSksXG4gICAgfTtcblxuICAgIHVzZU91dHNpZGVDbGljayhcbiAgICAgIGNvbnRhaW5lclJlZixcbiAgICAgIChldnQpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICFjb250YWluZXJSZWYuY3VycmVudD8uY29udGFpbnMoZXZ0LnRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgICAgICFwb3J0YWxDb250YWluZXI/LmNvbnRhaW5zKGV2dC50YXJnZXQgYXMgTm9kZSkgJiZcbiAgICAgICAgICBldnQudGFyZ2V0ICE9PSBudWxsXG4gICAgICAgICkge1xuICAgICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgIWlzQ29sbGFwc2VkICYmIGlzTmF2QmFyVmFyaWFudFxuICAgICk7XG5cbiAgICBjb25zdCBjbG9zZUF1dG9jb21wbGV0ZUxpc3QgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBzZXRJc0F1dG9jb21wbGV0ZUxpc3RPcGVuKGZhbHNlKTtcbiAgICAgIHNldFNlbGVjdGVkSW5kZXgoLTEpO1xuICAgIH0sIFtdKTtcblxuICAgIGNvbnN0IG9wZW5BdXRvY29tcGxldGVMaXN0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgaWYgKGF1dG9jb21wbGV0ZUxpc3RJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgc2V0SXNBdXRvY29tcGxldGVMaXN0T3Blbih0cnVlKTtcbiAgICAgICAgc2V0U2VsZWN0ZWRJbmRleCgtMSk7XG4gICAgICB9XG4gICAgfSwgW2F1dG9jb21wbGV0ZUxpc3RJdGVtc10pO1xuXG4gICAgY29uc3QgYWNjZXB0VGV4dFNlbGVjdGlvbiA9ICgpID0+IHtcbiAgICAgIHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQgPSB2YWx1ZTtcbiAgICAgIGlmIChcbiAgICAgICAgdGV4dEFyZWFSZWYuY3VycmVudC5zZWxlY3Rpb25TdGFydCAhPT0gdGV4dEFyZWFSZWYuY3VycmVudC5zZWxlY3Rpb25FbmRcbiAgICAgICkge1xuICAgICAgICB0ZXh0QXJlYVJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKHZhbHVlLmxlbmd0aCwgdmFsdWUubGVuZ3RoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmIChhdXRvY29tcGxldGVMaXN0SXRlbXMubGVuZ3RoICYmICFpc0NvbGxhcHNlZCkge1xuICAgICAgICBvcGVuQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2xvc2VBdXRvY29tcGxldGVMaXN0KCk7XG4gICAgICB9XG4gICAgfSwgW1xuICAgICAgYXV0b2NvbXBsZXRlTGlzdEl0ZW1zLFxuICAgICAgb3BlbkF1dG9jb21wbGV0ZUxpc3QsXG4gICAgICBjbG9zZUF1dG9jb21wbGV0ZUxpc3QsXG4gICAgICBpc0NvbGxhcHNlZCxcbiAgICBdKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAodmFsdWUgJiYgdmFsdWUgIT09IHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQgJiYgaXNBdXRvY29tcGxldGVMaXN0T3Blbikge1xuICAgICAgICB0ZXh0QXJlYVJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKFxuICAgICAgICAgIHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQubGVuZ3RoLFxuICAgICAgICAgIHZhbHVlLmxlbmd0aFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0sIFt2YWx1ZSwgdGV4dEFyZWFSZWYsIGlzQXV0b2NvbXBsZXRlTGlzdE9wZW5dKTtcblxuICAgIC8vIERldGVybWluZSB3aGVuIGZvY3VzIGxlYXZlcyB0aGUgY29udGFpbmVyIHRvIGNvbGxhcHNlIGl0XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGxldCBoYW5kbGVyOiAoZXZ0OiBGb2N1c0V2ZW50KSA9PiB2b2lkO1xuICAgICAgY29uc3QgY29udGFpbmVyID0gY29udGFpbmVyUmVmLmN1cnJlbnQ7XG5cbiAgICAgIGlmIChpc05hdkJhclZhcmlhbnQgJiYgY29udGFpbmVyKSB7XG4gICAgICAgIGhhbmRsZXIgPSAoZXZ0OiBGb2N1c0V2ZW50KSA9PiB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgIWNvbnRhaW5lclJlZi5jdXJyZW50Py5jb250YWlucyhldnQucmVsYXRlZFRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgICAgICAgIXBvcnRhbENvbnRhaW5lcj8uY29udGFpbnMoZXZ0LnJlbGF0ZWRUYXJnZXQgYXMgTm9kZSkgJiZcbiAgICAgICAgICAgIGV2dC5yZWxhdGVkVGFyZ2V0ICE9PSBudWxsXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBzZXRJc0NvbGxhcHNlZCh0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwiZm9jdXNvdXRcIiwgaGFuZGxlcik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImZvY3Vzb3V0XCIsIGhhbmRsZXIpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0sIFtpc05hdkJhclZhcmlhbnQsIGNvbnRhaW5lclJlZiwgcG9ydGFsQ29udGFpbmVyXSk7XG5cbiAgICBjb25zdCBmbGF0dGVuZWRMaXN0SXRlbXMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGNvbnN0IGxpc3Q6IEZsYXR0ZW5lZExpc3RJdGVtW10gPSBbXTtcblxuICAgICAgYXV0b2NvbXBsZXRlTGlzdEl0ZW1zLmZvckVhY2goKGxpc3RJdGVtKSA9PiB7XG4gICAgICAgIGxpc3RJdGVtLml0ZW1zLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgbGlzdC5wdXNoKHtcbiAgICAgICAgICAgIGNhdGVnb3J5OiBsaXN0SXRlbS5jYXRlZ29yeSxcbiAgICAgICAgICAgIGluZGV4SW5DYXRlZ29yeTogaW5kZXgsXG4gICAgICAgICAgICB2YWx1ZTogaXRlbS52YWx1ZSxcbiAgICAgICAgICAgIGlkOiBnZXRMaXN0SXRlbUlkKG5hbWUsIGxpc3RJdGVtLmNhdGVnb3J5LCBpbmRleCksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gbGlzdDtcbiAgICB9LCBbYXV0b2NvbXBsZXRlTGlzdEl0ZW1zLCBuYW1lXSk7XG5cbiAgICBjb25zdCBoYW5kbGVTZWxlY3RlZEluZGV4Q2hhbmdlID0gKGluZGV4OiBudW1iZXIsIGV2dD86IFN5bnRoZXRpY0V2ZW50KSA9PiB7XG4gICAgICBzZXRTZWxlY3RlZEluZGV4KGluZGV4KTtcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgY29uc3QgeyBjYXRlZ29yeSwgdmFsdWU6IGl0ZW1WYWx1ZSB9ID0gZmxhdHRlbmVkTGlzdEl0ZW1zW2luZGV4XTtcblxuICAgICAgICBvbkNvbXBsZXRlKHsgdmFsdWU6IGl0ZW1WYWx1ZSwgY2F0ZWdvcnksIGV2dCwgaW5kZXggfSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZUxpc3RJdGVtQ2xpY2sgPSAoXG4gICAgICBjYXRlZ29yeTogc3RyaW5nLFxuICAgICAgaW5kZXhJbkNhdGVnb3J5OiBudW1iZXIsXG4gICAgICBldnQ/OiBNb3VzZUV2ZW50XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IGZsYXR0ZW5lZExpc3RJdGVtcy5maW5kSW5kZXgoXG4gICAgICAgIChsaXN0SXRlbSkgPT5cbiAgICAgICAgICBsaXN0SXRlbS5jYXRlZ29yeSA9PT0gY2F0ZWdvcnkgJiZcbiAgICAgICAgICBsaXN0SXRlbS5pbmRleEluQ2F0ZWdvcnkgPT09IGluZGV4SW5DYXRlZ29yeVxuICAgICAgKTtcblxuICAgICAgaGFuZGxlU2VsZWN0ZWRJbmRleENoYW5nZShpbmRleCwgZXZ0KTtcbiAgICAgIGNsb3NlQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgaWYgKGlzTmF2QmFyVmFyaWFudCkge1xuICAgICAgICBzZXRJc0NvbGxhcHNlZCh0cnVlKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlS2V5RG93bjogS2V5Ym9hcmRFdmVudEhhbmRsZXI8SFRNTFRleHRBcmVhRWxlbWVudD4gPSAoZXZ0KSA9PiB7XG4gICAgICBpZiAoaXNBdXRvY29tcGxldGVMaXN0T3Blbikge1xuICAgICAgICBzd2l0Y2ggKGV2dC5rZXkpIHtcbiAgICAgICAgICBjYXNlIFwiRXNjYXBlXCI6XG4gICAgICAgICAgICBjbG9zZUF1dG9jb21wbGV0ZUxpc3QoKTtcbiAgICAgICAgICAgIG9uQ29tcGxldGUoeyB2YWx1ZTogdXNlclR5cGVkUXVlcnkuY3VycmVudCwgZXZ0IH0pO1xuICAgICAgICAgICAgaWYgKGlzTmF2QmFyVmFyaWFudCkge1xuICAgICAgICAgICAgICBzZXRJc0NvbGxhcHNlZCh0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgXCJFbnRlclwiOlxuICAgICAgICAgICAgaWYgKCFldnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgIGNsb3NlQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgICAgICAgICBhY2NlcHRUZXh0U2VsZWN0aW9uKCk7XG5cbiAgICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgb25FbnRlcktleT8uKCk7XG4gICAgICAgICAgICAgICAgaWYgKGlzTmF2QmFyVmFyaWFudCkge1xuICAgICAgICAgICAgICAgICAgc2V0SXNDb2xsYXBzZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFwiIFwiOlxuICAgICAgICAgICAgYWNjZXB0VGV4dFNlbGVjdGlvbigpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBcIkFycm93VXBcIjpcbiAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgaWYgKHNlbGVjdGVkSW5kZXggPiAtMSkge1xuICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RlZEluZGV4Q2hhbmdlKHNlbGVjdGVkSW5kZXggLSAxLCBldnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBcIkFycm93RG93blwiOlxuICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRJbmRleCA8IGZsYXR0ZW5lZExpc3RJdGVtcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgIGhhbmRsZVNlbGVjdGVkSW5kZXhDaGFuZ2Uoc2VsZWN0ZWRJbmRleCArIDEsIGV2dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2l0Y2ggKGV2dC5rZXkpIHtcbiAgICAgICAgICBjYXNlIFwiRXNjYXBlXCI6XG4gICAgICAgICAgICBvbkNsZWFyPy4oKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgXCJFbnRlclwiOlxuICAgICAgICAgICAgaWYgKCFldnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIG9uRW50ZXJLZXk/LigpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgb25LZXlEb3duPy4oZXZ0KTtcbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlOiBDaGFuZ2VFdmVudEhhbmRsZXI8SFRNTFRleHRBcmVhRWxlbWVudD4gPSAoZXZ0KSA9PiB7XG4gICAgICB1c2VyVHlwZWRRdWVyeS5jdXJyZW50ID0gZXZ0LnRhcmdldC52YWx1ZTtcbiAgICAgIG9uQ2hhbmdlKGV2dCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZUZvY3VzOiBGb2N1c0V2ZW50SGFuZGxlcjxIVE1MVGV4dEFyZWFFbGVtZW50PiA9IChldnQpID0+IHtcbiAgICAgIHNldElzQ29sbGFwc2VkKGZhbHNlKTtcbiAgICAgIG9uRm9jdXM/LihldnQpO1xuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVCbHVyOiBGb2N1c0V2ZW50SGFuZGxlcjxIVE1MVGV4dEFyZWFFbGVtZW50PiA9IChldnQpID0+IHtcbiAgICAgIGlmICh2YWx1ZSAhPT0gdXNlclR5cGVkUXVlcnkuY3VycmVudCkge1xuICAgICAgICBvbkNvbXBsZXRlPy4oeyB2YWx1ZTogdXNlclR5cGVkUXVlcnkuY3VycmVudCwgZXZ0IH0pO1xuICAgICAgfVxuICAgICAgb25CbHVyPy4oZXZ0KTtcbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlU2VuZEJ1dHRvbkNsaWNrID0gKGV2dDogTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4pID0+IHtcbiAgICAgIG1lcmdlZFNlbmRCdXR0b25Qcm9wcy5vbkNsaWNrPy4oZXZ0KTtcbiAgICAgIGNsb3NlQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgaWYgKGlzTmF2QmFyVmFyaWFudCkge1xuICAgICAgICBzZXRJc0NvbGxhcHNlZCh0cnVlKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlUHJldmVudEZvY3VzID0gKGV2dDogUmVhY3QuUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAvLyBQcmV2ZW50IHRoZSB0ZXh0YXJlYSBmcm9tIGJlaW5nIHVuZm9jdXNlZFxuICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZU9uQ29udGFpbmVyUG9pbnRlckRvd24gPSAoZXZ0OiBSZWFjdC5Qb2ludGVyRXZlbnQpID0+IHtcbiAgICAgIC8vIEZvY3VzIHRleHRhcmVhIHdoZW4gY2xpY2tpbmcgb24gdGhlIGNvbnRhaW5lciBvbmx5XG4gICAgICBpZiAoZXZ0LnRhcmdldCA9PT0gZXZ0LmN1cnJlbnRUYXJnZXQpIHtcbiAgICAgICAgdGV4dEFyZWFSZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IHNlbGVjdGVkTGlzdEl0ZW0gPVxuICAgICAgc2VsZWN0ZWRJbmRleCAhPT0gLTEgPyBmbGF0dGVuZWRMaXN0SXRlbXNbc2VsZWN0ZWRJbmRleF0gOiBudWxsO1xuXG4gICAgY29uc3QgZW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudEVsbSA9IGVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnQgPyAoXG4gICAgICA8U3R5bGVkRW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudENvbnRhaW5lclxuICAgICAgICBpc05hdkJhclZhcmlhbnQ9e2lzTmF2QmFyVmFyaWFudH1cbiAgICAgID5cbiAgICAgICAgPFRleHQgY29sb3I9XCJ0ZXJ0aWFyeVwiPntlbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50fTwvVGV4dD5cbiAgICAgIDwvU3R5bGVkRW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudENvbnRhaW5lcj5cbiAgICApIDogbnVsbDtcblxuICAgIGNvbnN0IGNsZWFyQnV0dG9uRWxtID0gdmFsdWUgPyAoXG4gICAgICA8U3R5bGVkQ2xlYXJCdXR0b25cbiAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgIGljb249XCJ4LWNpcmNsZS1maWxsZWRcIlxuICAgICAgICBhcmlhLWxhYmVsPXtjbGVhckJ1dHRvbkFyaWFMYWJlbH1cbiAgICAgICAgaXNOYXZCYXJWYXJpYW50PXtpc05hdkJhclZhcmlhbnR9XG4gICAgICAgIG9uUG9pbnRlckRvd249e2hhbmRsZVByZXZlbnRGb2N1c31cbiAgICAgICAgb25DbGljaz17b25DbGVhcn1cbiAgICAgIC8+XG4gICAgKSA6IChcbiAgICAgIGVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnRFbG1cbiAgICApO1xuXG4gICAgY29uc3QgaGludEVsbSA9ICEhaGludCAmJiAoXG4gICAgICA8SW5saW5lIGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAgPFRleHQgc2l6ZT1cInNcIiBjb2xvcj1cInRlcnRpYXJ5XCI+XG4gICAgICAgICAge2hpbnR9XG4gICAgICAgIDwvVGV4dD5cbiAgICAgIDwvSW5saW5lPlxuICAgICk7XG5cbiAgICBjb25zdCBib3R0b21Ub29sYmFyRWxtID0gKGJvdHRvbVRvb2xiYXI/LnJpZ2h0Q29udGVudCB8fFxuICAgICAgYm90dG9tVG9vbGJhcj8ubGVmdENvbnRlbnQgfHxcbiAgICAgICEhc2VuZEJ1dHRvblByb3BzKSAmJlxuICAgICAgIWlzQ29sbGFwc2VkICYmIChcbiAgICAgICAgPD5cbiAgICAgICAgICB7Ym90dG9tVG9vbGJhcj8ubGVmdENvbnRlbnQgJiYgKFxuICAgICAgICAgICAgPFN0eWxlZFNsb3Q+e2JvdHRvbVRvb2xiYXIubGVmdENvbnRlbnR9PC9TdHlsZWRTbG90PlxuICAgICAgICAgICl9XG4gICAgICAgICAgPFN0eWxlZFNsb3QgZGF0YS1lMmUtdGVzdC1pZD1cImJvdHRvbVRvb2xiYXJcIiBzaWRlPVwicmlnaHRcIj5cbiAgICAgICAgICAgIDxJbmxpbmUgc3BhY2U9XCJ4c1wiIHZBbGlnbkl0ZW1zPVwiY2VudGVyXCI+XG4gICAgICAgICAgICAgIHtib3R0b21Ub29sYmFyPy5yaWdodENvbnRlbnR9XG4gICAgICAgICAgICAgIHtzZW5kQnV0dG9uUHJvcHMgJiYgKFxuICAgICAgICAgICAgICAgIDxTdWJUaGVtZVByb3ZpZGVyIG5hbWU9e3ZhcmlhbnR9PlxuICAgICAgICAgICAgICAgICAgPFJvdW5kQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGFyaWFBdHRyaWJ1dGVzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgXCJhcmlhLWxhYmVsXCI6IGlzUHJvY2Vzc2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBcIlByb2Nlc3NpbmcgcXVlcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBcIlN1Ym1pdCBxdWVyeVwiLFxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICB7Li4ubWVyZ2VkU2VuZEJ1dHRvblByb3BzfVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17bWVyZ2VkU2VuZEJ1dHRvblByb3BzLmRpc2FibGVkID8/ICF2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlU2VuZEJ1dHRvbkNsaWNrfVxuICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJEb3duPXtoYW5kbGVQcmV2ZW50Rm9jdXN9XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgaWNvbj17XG4gICAgICAgICAgICAgICAgICAgICAgaXNQcm9jZXNzaW5nID8gXCJzdG9wLWZpbGxlZFwiIDogbWVyZ2VkU2VuZEJ1dHRvblByb3BzLmljb25cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1N1YlRoZW1lUHJvdmlkZXI+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0lubGluZT5cbiAgICAgICAgICA8L1N0eWxlZFNsb3Q+XG4gICAgICAgIDwvPlxuICAgICAgKTtcblxuICAgIGNvbnN0IGJvcmRlclJhZGl1c1NpemU6IEJvcmRlclJhZGl1cyA9IGlzQ29sbGFwc2VkID8gXCJ4c1wiIDogXCJtXCI7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGRhdGEtZTJlLXRlc3QtaWQ9e2RhdGFFMmVUZXN0SWR9XG4gICAgICAgICAgZGF0YS1kcy1pZD1cIlByb21wdElucHV0XCJcbiAgICAgICAgICByZWY9e2NvbnRhaW5lclJlZn1cbiAgICAgICAgICAvLyBUcmFuc2xhdGlvbiBkaXNhYmxlZCBmb3IgY29uc2lzdGVuY3kgd2l0aCB0aGUgYXV0b2NvbXBsZXRlIGxpc3RcbiAgICAgICAgICB0cmFuc2xhdGU9XCJub1wiXG4gICAgICAgID5cbiAgICAgICAgICA8U3RhY2sgc3BhY2U9XCJzXCI+XG4gICAgICAgICAgICA8QW5pbWF0ZWRCb3JkZXJcbiAgICAgICAgICAgICAgc2tpcEFuaW1hdGlvbj17c2tpcEFJQW5pbWF0aW9uIHx8IHZhcmlhbnQgIT09IFwiYWlcIn1cbiAgICAgICAgICAgICAgcmFkaXVzPXsxMn1cbiAgICAgICAgICAgICAgaXRlcmF0aW9ucz17MX1cbiAgICAgICAgICAgICAgdGhpY2tuZXNzPXsyfVxuICAgICAgICAgICAgICBoaWRlQ2hpbGRCb3JkZXJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPFN1YlRoZW1lUHJvdmlkZXIgbmFtZT17dmFyaWFudH0+XG4gICAgICAgICAgICAgICAgPEN1c3RvbUNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgZWxldmF0aW9uPXswfVxuICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzPXtib3JkZXJSYWRpdXNTaXplfVxuICAgICAgICAgICAgICAgICAgaGlkZUJvcmRlcj17aXNDb2xsYXBzZWR9XG4gICAgICAgICAgICAgICAgICBoYXNTaGFkb3c9eyFpc05hdkJhclZhcmlhbnR9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN1YlRoZW1lUHJvdmlkZXIgbmFtZT1cInVuc2V0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxTdHlsZWRTbG90c0NvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgIHJlZj17dGV4dEFyZWFDb250YWluZXJSZWZ9XG4gICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyRG93bj17aGFuZGxlT25Db250YWluZXJQb2ludGVyRG93bn1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtoZWFkZXIgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFByb21wdElucHV0SGVhZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5oZWFkZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1c1NpemU9e2JvcmRlclJhZGl1c1NpemV9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZFRleHRBcmVhQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAge2xlZnRJY29uICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZExlZnRJY29uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPXtsZWZ0SWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwidGVydGlhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZExlZnRJY29uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxQcm9tcHRUZXh0QXJlYVxuICAgICAgICAgICAgICAgICAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUUyZVRlc3RJZD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUUyZVRlc3RJZCA/IGAke2RhdGFFMmVUZXN0SWR9LWlucHV0YCA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXt0ZXh0QXJlYVJlZn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNOYXZCYXJWYXJpYW50PXtpc05hdkJhclZhcmlhbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkTGlzdEl0ZW09e3NlbGVjdGVkTGlzdEl0ZW19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzQXV0b2NvbXBsZXRlTGlzdE9wZW49e2lzQXV0b2NvbXBsZXRlTGlzdE9wZW59XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzQ29sbGFwc2VkPXtpc0NvbGxhcHNlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzTGVmdEljb249eyEhbGVmdEljb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uRm9jdXM9e2hhbmRsZUZvY3VzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93bn1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICB7Y2xlYXJCdXR0b25FbG19XG4gICAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWRUZXh0QXJlYUNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICB7Ym90dG9tVG9vbGJhckVsbX1cbiAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWRTbG90c0NvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvU3ViVGhlbWVQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L0N1c3RvbUNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9TdWJUaGVtZVByb3ZpZGVyPlxuICAgICAgICAgICAgPC9BbmltYXRlZEJvcmRlcj5cbiAgICAgICAgICAgIHtoaW50RWxtfVxuICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxBdXRvY29tcGxldGVMaXN0XG4gICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgYXV0b2NvbXBsZXRlTGlzdEl0ZW1zPXthdXRvY29tcGxldGVMaXN0SXRlbXN9XG4gICAgICAgICAgdHJpZ2dlclJlZj17dGV4dEFyZWFDb250YWluZXJSZWZ9XG4gICAgICAgICAgc2VsZWN0ZWRMaXN0SXRlbT17c2VsZWN0ZWRMaXN0SXRlbX1cbiAgICAgICAgICBpc09wZW49e2lzQXV0b2NvbXBsZXRlTGlzdE9wZW59XG4gICAgICAgICAgYXV0b2NvbXBsZXRlTGlzdEZvb3Rlcj17YXV0b2NvbXBsZXRlTGlzdEZvb3Rlcn1cbiAgICAgICAgICBwb3J0YWxDb250YWluZXI9e3BvcnRhbENvbnRhaW5lcn1cbiAgICAgICAgICBvbkxpc3RJdGVtQ2xpY2s9e2hhbmRsZUxpc3RJdGVtQ2xpY2t9XG4gICAgICAgIC8+XG4gICAgICA8Lz5cbiAgICApO1xuICB9XG4pO1xuXG5jb25zdCBDdXN0b21CdXR0b24gPSBzdHlsZWQoQnV0dG9uKSgoeyB0aGVtZSB9KSA9PiAoe1xuICBib3JkZXJSYWRpdXM6IHRoZW1lLnZhcmlhYmxlcy5zaXplLmJvcmRlclJhZGl1cy5sLFxufSkpO1xuXG4vLyBuZWVkIHRvIHNpbXBsaWZ5IHRoaXMgdHlwZSBmb3IgcmV1c2VcbmNvbnN0IFN1Z2dlc3Rpb25CdXR0b24gPSBmb3J3YXJkUmVmKFxuICA8QyBleHRlbmRzIFJlYWN0LkVsZW1lbnRUeXBlID0gXCJidXR0b25cIj4oXG4gICAgcHJvcHM6IFBvbHltb3JwaGljQ29tcG9uZW50UHJvcHNXaXRoUmVmPFxuICAgICAgQyxcbiAgICAgIE9taXQ8QnV0dG9uUHJvcHMsIFwidmFyaWFudFwiIHwgXCJzaXplXCIgfCBcInJlZlwiPlxuICAgID4sXG4gICAgcmVmOiBQb2x5bW9ycGhpY1JlZjxDPlxuICApID0+IDxDdXN0b21CdXR0b24gey4uLnByb3BzfSB2YXJpYW50PVwic2Vjb25kYXJ5XCIgc2l6ZT1cInNcIiByZWY9e3JlZn0gLz5cbik7XG5cbmV4cG9ydCBjb25zdCBQcm9tcHRJbnB1dCA9IE9iamVjdC5hc3NpZ24oUHJvbXB0SW5wdXRDb21wb25lbnQsIHtcbiAgU3VnZ2VzdGlvbkJ1dHRvbixcbn0pIGFzIHR5cGVvZiBQcm9tcHRJbnB1dENvbXBvbmVudCAmIHtcbiAgU3VnZ2VzdGlvbkJ1dHRvbjogdHlwZW9mIFN1Z2dlc3Rpb25CdXR0b247XG59O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXdJbUIifQ== */"),defaultSendButtonProps={type:"submit",icon:"arrow-up"},PromptInputComponent=(0,_react.forwardRef)(({"data-e2e-test-id":dataE2eTestId,name,autocompleteListItems=[],value,bottomToolbar,isProcessing,sendButtonProps,autocompleteListFooter,clearButtonAriaLabel="Clear input",hint,emptyStateTopRightContent,isNavBarVariant,portalContainer,leftIcon,header,onChange,onComplete,onClear,onEnterKey,onFocus,onBlur,onKeyDown,variant,skipAIAnimation=!1,...rest},ref)=>{let containerRef=(0,_react.useRef)(null),textAreaContainerRef=(0,_react.useRef)(null),internalRef=(0,_react.useRef)(null),[selectedIndex,setSelectedIndex]=(0,_react.useState)(-1),[isCollapsed,setIsCollapsed]=(0,_react.useState)(isNavBarVariant),userTypedQuery=(0,_react.useRef)(""),[isAutocompleteListOpen,setIsAutocompleteListOpen]=(0,_react.useState)(!1),textAreaRef=ref||internalRef,mergedSendButtonProps={...defaultSendButtonProps,...sendButtonProps??{}};(0,_useOutsideClick.useOutsideClick)(containerRef,evt=>{containerRef.current?.contains(evt.target)||portalContainer?.contains(evt.target)||null===evt.target||setIsCollapsed(!0)},!isCollapsed&&isNavBarVariant);let closeAutocompleteList=(0,_react.useCallback)(()=>{setIsAutocompleteListOpen(!1),setSelectedIndex(-1)},[]),openAutocompleteList=(0,_react.useCallback)(()=>{autocompleteListItems.length&&(setIsAutocompleteListOpen(!0),setSelectedIndex(-1))},[autocompleteListItems]),acceptTextSelection=()=>{userTypedQuery.current=value,textAreaRef.current.selectionStart!==textAreaRef.current.selectionEnd&&textAreaRef.current.setSelectionRange(value.length,value.length)};(0,_react.useEffect)(()=>{autocompleteListItems.length&&!isCollapsed?openAutocompleteList():closeAutocompleteList()},[autocompleteListItems,openAutocompleteList,closeAutocompleteList,isCollapsed]),(0,_react.useEffect)(()=>{value&&value!==userTypedQuery.current&&isAutocompleteListOpen&&textAreaRef.current.setSelectionRange(userTypedQuery.current.length,value.length)},[value,textAreaRef,isAutocompleteListOpen]),(0,_react.useEffect)(()=>{let handler,container=containerRef.current;return isNavBarVariant&&container&&(handler=evt=>{containerRef.current?.contains(evt.relatedTarget)||portalContainer?.contains(evt.relatedTarget)||null===evt.relatedTarget||setIsCollapsed(!0)},window.addEventListener("focusout",handler)),()=>{container&&window.removeEventListener("focusout",handler)}},[isNavBarVariant,containerRef,portalContainer]);let flattenedListItems=(0,_react.useMemo)(()=>{let list=[];return autocompleteListItems.forEach(listItem=>{listItem.items.forEach((item,index)=>{list.push({category:listItem.category,indexInCategory:index,value:item.value,id:(0,_CategoryList.getListItemId)(name,listItem.category,index)})})}),list},[autocompleteListItems,name]),handleSelectedIndexChange=(index,evt)=>{if(setSelectedIndex(index),-1!==index){let{category,value:itemValue}=flattenedListItems[index];onComplete({value:itemValue,category,evt,index})}},handlePreventFocus=evt=>{evt.preventDefault()},selectedListItem=-1!==selectedIndex?flattenedListItems[selectedIndex]:null,emptyStateTopRightContentElm=emptyStateTopRightContent?_react.default.createElement(StyledEmptyStateTopRightContentContainer,{isNavBarVariant:isNavBarVariant},_react.default.createElement(_Text.Text,{color:"tertiary"},emptyStateTopRightContent)):null,clearButtonElm=value?_react.default.createElement(StyledClearButton,{size:"s","aria-hidden":"true",tabIndex:-1,icon:"x-circle-filled","aria-label":clearButtonAriaLabel,isNavBarVariant:isNavBarVariant,onPointerDown:handlePreventFocus,onClick:onClear}):emptyStateTopRightContentElm,hintElm=!!hint&&_react.default.createElement(_Inline.Inline,{alignItems:"center"},_react.default.createElement(_Text.Text,{size:"s",color:"tertiary"},hint)),bottomToolbarElm=(bottomToolbar?.rightContent||bottomToolbar?.leftContent||!!sendButtonProps)&&!isCollapsed&&_react.default.createElement(_react.default.Fragment,null,bottomToolbar?.leftContent&&_react.default.createElement(StyledSlot,null,bottomToolbar.leftContent),_react.default.createElement(StyledSlot,{"data-e2e-test-id":"bottomToolbar",side:"right"},_react.default.createElement(_Inline.Inline,{space:"xs",vAlignItems:"center"},bottomToolbar?.rightContent,sendButtonProps&&_react.default.createElement(_SubThemeProvider.SubThemeProvider,{name:variant},_react.default.createElement(_RoundButton.RoundButton,{ariaAttributes:{"aria-label":isProcessing?"Processing query":"Submit query"},...mergedSendButtonProps,disabled:mergedSendButtonProps.disabled??!value,onClick:evt=>{mergedSendButtonProps.onClick?.(evt),closeAutocompleteList(),isNavBarVariant&&setIsCollapsed(!0)},onPointerDown:handlePreventFocus,variant:"primary",icon:isProcessing?"stop-filled":mergedSendButtonProps.icon}))))),borderRadiusSize=isCollapsed?"xs":"m";return _react.default.createElement(_react.default.Fragment,null,_react.default.createElement("div",{"data-e2e-test-id":dataE2eTestId,"data-ds-id":"PromptInput",ref:containerRef,translate:"no"},_react.default.createElement(_Stack.Stack,{space:"s"},_react.default.createElement(_AnimatedBorder.AnimatedBorder,{skipAnimation:skipAIAnimation||"ai"!==variant,radius:12,iterations:1,thickness:2,hideChildBorder:!0},_react.default.createElement(_SubThemeProvider.SubThemeProvider,{name:variant},_react.default.createElement(CustomContainer,{elevation:0,borderRadius:borderRadiusSize,hideBorder:isCollapsed,hasShadow:!isNavBarVariant},_react.default.createElement(_SubThemeProvider.SubThemeProvider,{name:"unset"},_react.default.createElement(StyledSlotsContainer,{ref:textAreaContainerRef,onPointerDown:evt=>{evt.target===evt.currentTarget&&(textAreaRef.current?.focus(),evt.preventDefault())}},header&&_react.default.createElement(_PromptInputHeader.PromptInputHeader,{...header,borderRadiusSize:borderRadiusSize}),_react.default.createElement(StyledTextAreaContainer,null,leftIcon&&_react.default.createElement(StyledLeftIconContainer,null,_react.default.createElement(_Icon.Icon,{name:leftIcon,size:"m",color:"tertiary","aria-hidden":"true"})),_react.default.createElement(_PromptTextArea.PromptTextArea,{...rest,dataE2eTestId:dataE2eTestId?`${dataE2eTestId}-input`:void 0,name:name,value:value,ref:textAreaRef,isNavBarVariant:isNavBarVariant,selectedListItem:selectedListItem,isAutocompleteListOpen:isAutocompleteListOpen,isCollapsed:isCollapsed,hasLeftIcon:!!leftIcon,onFocus:evt=>{setIsCollapsed(!1),onFocus?.(evt)},onBlur:evt=>{value!==userTypedQuery.current&&onComplete?.({value:userTypedQuery.current,evt}),onBlur?.(evt)},onChange:evt=>{userTypedQuery.current=evt.target.value,onChange(evt)},onKeyDown:evt=>{if(isAutocompleteListOpen)switch(evt.key){case"Escape":closeAutocompleteList(),onComplete({value:userTypedQuery.current,evt}),isNavBarVariant&&setIsCollapsed(!0);break;case"Enter":!evt.shiftKey&&(evt.preventDefault(),closeAutocompleteList(),acceptTextSelection(),value&&(onEnterKey?.(),isNavBarVariant&&setIsCollapsed(!0)));break;case" ":acceptTextSelection();break;case"ArrowUp":evt.preventDefault(),selectedIndex>-1&&handleSelectedIndexChange(selectedIndex-1,evt);break;case"ArrowDown":evt.preventDefault(),selectedIndex<flattenedListItems.length-1&&handleSelectedIndexChange(selectedIndex+1,evt)}else switch(evt.key){case"Escape":onClear?.();break;case"Enter":!evt.shiftKey&&(evt.preventDefault(),value&&onEnterKey?.())}onKeyDown?.(evt)}}),clearButtonElm),bottomToolbarElm))))),hintElm)),_react.default.createElement(_AutocompleteList.AutocompleteList,{name:name,value:value,autocompleteListItems:autocompleteListItems,triggerRef:textAreaContainerRef,selectedListItem:selectedListItem,isOpen:isAutocompleteListOpen,autocompleteListFooter:autocompleteListFooter,portalContainer:portalContainer,onListItemClick:(category,indexInCategory,evt)=>{handleSelectedIndexChange(flattenedListItems.findIndex(listItem=>listItem.category===category&&listItem.indexInCategory===indexInCategory),evt),closeAutocompleteList(),isNavBarVariant&&setIsCollapsed(!0)}}))}),CustomButton=(0,_styled.default)(_Button.Button,{target:"e1fprshj7",label:"CustomButton"})(({theme})=>({borderRadius:theme.variables.size.borderRadius.l}),"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvUHJvbXB0SW5wdXQvUHJvbXB0SW5wdXQudHN4Iiwic291cmNlcyI6WyJzcmMvY29tcG9uZW50cy9Qcm9tcHRJbnB1dC9Qcm9tcHRJbnB1dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBSZWFjdEVsZW1lbnQsXG4gIENoYW5nZUV2ZW50SGFuZGxlcixcbiAgS2V5Ym9hcmRFdmVudEhhbmRsZXIsXG4gIFJlZk9iamVjdCxcbiAgRm9jdXNFdmVudEhhbmRsZXIsXG4gIFN5bnRoZXRpY0V2ZW50LFxuICBNb3VzZUV2ZW50LFxufSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IFJlYWN0LCB7XG4gIHVzZVJlZixcbiAgdXNlTWVtbyxcbiAgdXNlU3RhdGUsXG4gIHVzZUVmZmVjdCxcbiAgdXNlQ2FsbGJhY2ssXG4gIGZvcndhcmRSZWYsXG59IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5cbmltcG9ydCB0eXBlIHsgUHJvbXB0VGV4dEFyZWFQcm9wcyB9IGZyb20gXCIuL1Byb21wdFRleHRBcmVhXCI7XG5pbXBvcnQge1xuICBQcm9tcHRUZXh0QXJlYSxcbiAgZ2V0UGFkZGluZ0hvcml6b250YWwsXG4gIGdldFBhZGRpbmdWZXJ0aWNhbCxcbn0gZnJvbSBcIi4vUHJvbXB0VGV4dEFyZWFcIjtcbmltcG9ydCB7IENvbnRhaW5lciB9IGZyb20gXCIuLi9Db250YWluZXJcIjtcbmltcG9ydCB0eXBlIHsgQXV0b2NvbXBsZXRlTGlzdFByb3BzIH0gZnJvbSBcIi4vQXV0b2NvbXBsZXRlTGlzdFwiO1xuXG5pbXBvcnQgeyBBdXRvY29tcGxldGVMaXN0IH0gZnJvbSBcIi4vQXV0b2NvbXBsZXRlTGlzdFwiO1xuaW1wb3J0IHtcbiAgZ2V0TGlzdEl0ZW1JZCxcbiAgdHlwZSBGbGF0dGVuZWRMaXN0SXRlbSxcbiAgdHlwZSBMaXN0SXRlbVZhbHVlLFxufSBmcm9tIFwiLi9DYXRlZ29yeUxpc3RcIjtcbmltcG9ydCB7IFRleHQgfSBmcm9tIFwiLi4vVHlwb2dyYXBoeS9UZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24sIHR5cGUgQnV0dG9uUHJvcHMgfSBmcm9tIFwiLi4vQnV0dG9uL0J1dHRvblwiO1xuaW1wb3J0IHR5cGUge1xuICBQb2x5bW9ycGhpY1JlZixcbiAgUG9seW1vcnBoaWNDb21wb25lbnRQcm9wc1dpdGhSZWYsXG4gIEJvcmRlclJhZGl1cyxcbn0gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5pbXBvcnQgeyBJbmxpbmUgfSBmcm9tIFwiLi4vSW5saW5lL0lubGluZVwiO1xuaW1wb3J0IHR5cGUgeyBSb3VuZEJ1dHRvblByb3BzIH0gZnJvbSBcIi4uL1JvdW5kQnV0dG9uL1JvdW5kQnV0dG9uXCI7XG5pbXBvcnQgeyBSb3VuZEJ1dHRvbiB9IGZyb20gXCIuLi9Sb3VuZEJ1dHRvbi9Sb3VuZEJ1dHRvblwiO1xuaW1wb3J0IHR5cGUgeyBQaWN0b2dyYW1CdXR0b25Qcm9wcyB9IGZyb20gXCIuLi9QaWN0b2dyYW1CdXR0b24vUGljdG9ncmFtQnV0dG9uXCI7XG5pbXBvcnQgeyBQaWN0b2dyYW1CdXR0b24gfSBmcm9tIFwiLi4vUGljdG9ncmFtQnV0dG9uL1BpY3RvZ3JhbUJ1dHRvblwiO1xuaW1wb3J0IHsgU3RhY2sgfSBmcm9tIFwiLi4vU3RhY2svU3RhY2tcIjtcbmltcG9ydCB7IHVzZU91dHNpZGVDbGljayB9IGZyb20gXCIuLi8uLi9zaGFyZWQvdXNlT3V0c2lkZUNsaWNrXCI7XG5pbXBvcnQgdHlwZSB7IEljb25OYW1lIH0gZnJvbSBcIi4uL0ljb24vSWNvblwiO1xuaW1wb3J0IHsgSWNvbiB9IGZyb20gXCIuLi9JY29uL0ljb25cIjtcbmltcG9ydCB7IFN1YlRoZW1lUHJvdmlkZXIgfSBmcm9tIFwiLi4vU3ViVGhlbWVQcm92aWRlci9TdWJUaGVtZVByb3ZpZGVyXCI7XG5pbXBvcnQgeyBBbmltYXRlZEJvcmRlciB9IGZyb20gXCIuLi9VdGlsaXRpZXMvQW5pbWF0ZWRCb3JkZXIvQW5pbWF0ZWRCb3JkZXJcIjtcbmltcG9ydCB7XG4gIFByb21wdElucHV0SGVhZGVyLFxuICB0eXBlIEJhc2VQcm9tcHRJbnB1dEhlYWRlclByb3BzLFxufSBmcm9tIFwiLi9Qcm9tcHRJbnB1dEhlYWRlclwiO1xuXG5jb25zdCBDdXN0b21Db250YWluZXIgPSBzdHlsZWQoQ29udGFpbmVyKTx7XG4gIGhpZGVCb3JkZXI6IGJvb2xlYW47XG4gIGhhc1NoYWRvdzogYm9vbGVhbjtcbn0+KCh7IHRoZW1lLCBoaWRlQm9yZGVyLCBoYXNTaGFkb3cgfSkgPT4gKHtcbiAgYm9yZGVyOiBgMXB4IHNvbGlkICR7dGhlbWUudmFsdWVzLmNvbG9yLmJvcmRlci5wcmltYXJ5LmRlZmF1bHR9YCxcbiAgLi4uKGhhc1NoYWRvdyAmJiB7XG4gICAgYm94U2hhZG93OiB0aGVtZS52YWx1ZXMuc2hhZG93LmRlZmF1bHRSaW5nLFxuICAgIHRyYW5zaXRpb25Qcm9wZXJ0eTogXCJib3gtc2hhZG93LCBib3JkZXItY29sb3IsIG91dGxpbmUtY29sb3JcIixcbiAgICB0cmFuc2l0aW9uRHVyYXRpb246IHRoZW1lLnZhcmlhYmxlcy5hbmltYXRpb24ucHJvbXB0SW5wdXQuZm9jdXMuZHVyYXRpb24sXG4gICAgdHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uOlxuICAgICAgdGhlbWUudmFyaWFibGVzLmFuaW1hdGlvbi5wcm9tcHRJbnB1dC5mb2N1cy50aW1pbmdGdW5jdGlvbixcbiAgfSksXG4gIC4uLihoaWRlQm9yZGVyICYmIHtcbiAgICBib3JkZXJDb2xvcjogXCJ0cmFuc3BhcmVudFwiLFxuICB9KSxcbiAgY3Vyc29yOiBcInRleHRcIixcbiAgb3V0bGluZUNvbG9yOiBcInRyYW5zcGFyZW50XCIsXG4gIFtgJjpoYXModGV4dGFyZWE6Zm9jdXMtdmlzaWJsZSlgXToge1xuICAgIG91dGxpbmVXaWR0aDogMSxcbiAgICBvdXRsaW5lU3R5bGU6IFwic29saWRcIixcbiAgICBvdXRsaW5lT2Zmc2V0OiAtMSxcbiAgICBib3hTaGFkb3c6IHRoZW1lLnZhbHVlcy5zaGFkb3cuZm9jdXNSaW5nLFxuICAgIG91dGxpbmVDb2xvcjogdGhlbWUudmFsdWVzLmNvbG9yLmJvcmRlci5hY2NlbnQuZGVmYXVsdCxcbiAgfSxcbn0pKTtcblxuY29uc3QgU3R5bGVkVGV4dEFyZWFDb250YWluZXIgPSBzdHlsZWQuZGl2KHtcbiAgYm9yZGVyUmFkaXVzOiBcImluaGVyaXRcIixcbiAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgd2lkdGg6IFwiMTAwJVwiLFxufSk7XG5cbmNvbnN0IFN0eWxlZExlZnRJY29uQ29udGFpbmVyID0gc3R5bGVkLmRpdigoeyB0aGVtZSB9KSA9PiAoe1xuICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICB0b3A6IGdldFBhZGRpbmdWZXJ0aWNhbCh0aGVtZSksXG4gIGxlZnQ6IGdldFBhZGRpbmdIb3Jpem9udGFsKHRoZW1lKSxcbn0pKTtcblxudHlwZSBTdHlsZWRFbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50Q29udGFpbmVyUHJvcHMgPSBQaWNrPFxuICBQcm9tcHRJbnB1dFByb3BzLFxuICBcImlzTmF2QmFyVmFyaWFudFwiXG4+O1xuXG5jb25zdCBTdHlsZWRFbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50Q29udGFpbmVyID1cbiAgc3R5bGVkLmRpdjxTdHlsZWRFbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50Q29udGFpbmVyUHJvcHM+KFxuICAgICh7IHRoZW1lLCBpc05hdkJhclZhcmlhbnQgfSkgPT4gKHtcbiAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICB0b3A6IGlzTmF2QmFyVmFyaWFudFxuICAgICAgICA/IHRoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcueHhzXG4gICAgICAgIDogZ2V0UGFkZGluZ1ZlcnRpY2FsKHRoZW1lKSxcbiAgICAgIHJpZ2h0OiBnZXRQYWRkaW5nSG9yaXpvbnRhbCh0aGVtZSksXG4gICAgICB1c2VyU2VsZWN0OiBcIm5vbmVcIixcbiAgICAgIHBvaW50ZXJFdmVudHM6IFwibm9uZVwiLFxuICAgIH0pXG4gICk7XG5cbnR5cGUgU3R5bGVkQ2xlYXJCdXR0b25Qcm9wcyA9IFBpY3RvZ3JhbUJ1dHRvblByb3BzICZcbiAgUGljazxQcm9tcHRJbnB1dFByb3BzLCBcImlzTmF2QmFyVmFyaWFudFwiPjtcblxuY29uc3QgU3R5bGVkQ2xlYXJCdXR0b24gPSBzdHlsZWQoUGljdG9ncmFtQnV0dG9uKTxTdHlsZWRDbGVhckJ1dHRvblByb3BzPihcbiAgKHsgdGhlbWUsIGlzTmF2QmFyVmFyaWFudCB9KSA9PiAoe1xuICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgcmlnaHQ6IHRoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcucyxcbiAgICB0b3A6IGlzTmF2QmFyVmFyaWFudCA/IDAgOiB0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnMsXG4gIH0pXG4pO1xuXG5jb25zdCBTdHlsZWRTbG90c0NvbnRhaW5lciA9IHN0eWxlZC5kaXYoe1xuICBkaXNwbGF5OiBcImZsZXhcIixcbiAgZmxleFdyYXA6IFwid3JhcFwiLFxuICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxufSk7XG5cbi8vIEl0IG5lZWRzIG1hcmdpbiBkdWUgdG8gZW1wdHkgY2xpY2thYmxlIHNwYWNlIHRoYXQgZm9jdXNlcyB0aGUgdGV4dGFyZWFcbi8vIFNsb3RzIHNob3VsZCBub3QgYmUgaW4gdGhlIGRpdiwgYmVjYXVzZSBhcmVhIGJldHdlZW4gc2hvdWxkIGJlIGNsaWNrYWJsZSBhbHNvXG50eXBlIFNsb3RQcm9wcyA9IHtcbiAgc2lkZT86IFwicmlnaHRcIjtcbn07XG5jb25zdCBTdHlsZWRTbG90ID0gc3R5bGVkLmRpdjxTbG90UHJvcHM+KCh7IHRoZW1lLCBzaWRlIH0pID0+ICh7XG4gIG1hcmdpbjogYDAgJHt0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnN9ICR7dGhlbWUudmFyaWFibGVzLnNpemUuc3BhY2luZy5zfWAsXG5cbiAgLi4uKHNpZGUgPT09IFwicmlnaHRcIiAmJiB7XG4gICAgbWFyZ2luTGVmdDogXCJhdXRvXCIsXG4gIH0pLFxufSkpO1xuXG50eXBlIFNlbmRCdXR0b25Qcm9wcyA9IE9taXQ8Um91bmRCdXR0b25Qcm9wcywgXCJpY29uXCIgfCBcInZhcmlhbnRcIj4gJiB7XG4gIGljb24/OiBcImFycm93LXVwXCIgfCBcInNlYXJjaFwiIHwgXCJhcnJvdy1yaWdodFwiIHwgXCJ2b2ljZVwiO1xufTtcblxudHlwZSBCb3R0b21Ub29sYmFyQ29uZmlnID0ge1xuICAvKiogVG9vbGJhciBlbGVtZW50cyBiZWxvdyB0ZXh0IGFyZWEgKi9cbiAgbGVmdENvbnRlbnQ/OiBSZWFjdEVsZW1lbnQ7XG4gIHJpZ2h0Q29udGVudD86IFJlYWN0RWxlbWVudDtcbn07XG5cbmV4cG9ydCB0eXBlIFByb21wdElucHV0UHJvcHMgPSB7XG4gIFwiZGF0YS1lMmUtdGVzdC1pZFwiPzogc3RyaW5nO1xuICBoZWFkZXI/OiBCYXNlUHJvbXB0SW5wdXRIZWFkZXJQcm9wcztcbiAgdmFyaWFudD86IFwiYWlcIjtcbiAgc2tpcEFJQW5pbWF0aW9uPzogYm9vbGVhbjtcbiAgYm90dG9tVG9vbGJhcj86IEJvdHRvbVRvb2xiYXJDb25maWc7XG4gIHNlbmRCdXR0b25Qcm9wcz86IFNlbmRCdXR0b25Qcm9wcztcbiAgLyoqIEN1cnJlbnRseSBzaG93cyBzZW5kIGJ1dHRvbiBwcm9jZXNzaW5nIHN0YXRlICAqL1xuICBpc1Byb2Nlc3Npbmc/OiBib29sZWFuO1xuICBjbGVhckJ1dHRvbkFyaWFMYWJlbD86IHN0cmluZztcbiAgaGludD86IFJlYWN0RWxlbWVudDtcbiAgLyoqIFNob3dzIGluIHRoZSBjbGVhciBidXR0b24gc3BhY2UgaW4gZW1wdHkgc3RhdGUgKi9cbiAgZW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudD86IFJlYWN0RWxlbWVudDtcbiAgb25DbGVhcjogKCkgPT4gdm9pZDtcbiAgLyoqIENhbGxlZCB3aGVuIHVzZXIgc2VsZWN0cyAob3IgcmVqZWN0cykgYSBsaXN0IGl0ZW0gZnJvbSBhdXRvY29tcGxldGUgbGlzdCAqL1xuICBvbkNvbXBsZXRlPzogKHtcbiAgICB2YWx1ZSxcbiAgICBjYXRlZ29yeSxcbiAgICBldnQsXG4gICAgaW5kZXgsXG4gIH06IHtcbiAgICB2YWx1ZTogTGlzdEl0ZW1WYWx1ZTtcbiAgICBjYXRlZ29yeT86IHN0cmluZztcbiAgICBldnQ/OiBTeW50aGV0aWNFdmVudDtcbiAgICBpbmRleD86IG51bWJlcjtcbiAgfSkgPT4gdm9pZDtcbiAgLyoqIENhbGxlZCBvbiBFbnRlciBrZXkgdG8gc3VibWl0IHRoZSBmb3JtICAqL1xuICBvbkVudGVyS2V5OiAoKSA9PiB2b2lkO1xuICAvKiogUmVuZGVycyBhbiBpY29uIHRvIHRoZSBsZWZ0IGluc2lkZSB0aGUgdGV4dGFyZWEgKi9cbiAgbGVmdEljb24/OiBJY29uTmFtZTtcbn0gJiBPbWl0PFxuICBQcm9tcHRUZXh0QXJlYVByb3BzLFxuICBcImlzQ29sbGFwc2VkXCIgfCBcImlzQXV0b2NvbXBsZXRlTGlzdE9wZW5cIiB8IFwic2VsZWN0ZWRMaXN0SXRlbVwiIHwgXCJoYXNMZWZ0SWNvblwiXG4+ICZcbiAgUGljazxcbiAgICBBdXRvY29tcGxldGVMaXN0UHJvcHMsXG4gICAgXCJhdXRvY29tcGxldGVMaXN0SXRlbXNcIiB8IFwiYXV0b2NvbXBsZXRlTGlzdEZvb3RlclwiIHwgXCJwb3J0YWxDb250YWluZXJcIlxuICA+O1xuXG5jb25zdCBkZWZhdWx0U2VuZEJ1dHRvblByb3BzOiBTZW5kQnV0dG9uUHJvcHMgPSB7XG4gIHR5cGU6IFwic3VibWl0XCIgYXMgY29uc3QsXG4gIGljb246IFwiYXJyb3ctdXBcIiBhcyBjb25zdCxcbn07XG5cbmNvbnN0IFByb21wdElucHV0Q29tcG9uZW50ID0gZm9yd2FyZFJlZihcbiAgKFxuICAgIHtcbiAgICAgIFwiZGF0YS1lMmUtdGVzdC1pZFwiOiBkYXRhRTJlVGVzdElkLFxuICAgICAgbmFtZSxcbiAgICAgIGF1dG9jb21wbGV0ZUxpc3RJdGVtcyA9IFtdLFxuICAgICAgdmFsdWUsXG4gICAgICBib3R0b21Ub29sYmFyLFxuICAgICAgaXNQcm9jZXNzaW5nLFxuICAgICAgc2VuZEJ1dHRvblByb3BzLFxuICAgICAgYXV0b2NvbXBsZXRlTGlzdEZvb3RlcixcbiAgICAgIGNsZWFyQnV0dG9uQXJpYUxhYmVsID0gXCJDbGVhciBpbnB1dFwiLFxuICAgICAgaGludCxcbiAgICAgIGVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnQsXG4gICAgICBpc05hdkJhclZhcmlhbnQsXG4gICAgICBwb3J0YWxDb250YWluZXIsXG4gICAgICBsZWZ0SWNvbixcbiAgICAgIGhlYWRlcixcbiAgICAgIG9uQ2hhbmdlLFxuICAgICAgb25Db21wbGV0ZSxcbiAgICAgIG9uQ2xlYXIsXG4gICAgICBvbkVudGVyS2V5LFxuICAgICAgb25Gb2N1cyxcbiAgICAgIG9uQmx1cixcbiAgICAgIG9uS2V5RG93bixcbiAgICAgIHZhcmlhbnQsXG4gICAgICBza2lwQUlBbmltYXRpb24gPSBmYWxzZSxcbiAgICAgIC4uLnJlc3RcbiAgICB9OiBQcm9tcHRJbnB1dFByb3BzLFxuICAgIHJlZjogUmVmT2JqZWN0PEhUTUxUZXh0QXJlYUVsZW1lbnQ+XG4gICk6IFJlYWN0RWxlbWVudCA9PiB7XG4gICAgY29uc3QgY29udGFpbmVyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgICBjb25zdCB0ZXh0QXJlYUNvbnRhaW5lclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gICAgY29uc3QgaW50ZXJuYWxSZWYgPSB1c2VSZWY8SFRNTFRleHRBcmVhRWxlbWVudD4obnVsbCk7XG4gICAgY29uc3QgW3NlbGVjdGVkSW5kZXgsIHNldFNlbGVjdGVkSW5kZXhdID0gdXNlU3RhdGUoLTEpO1xuICAgIGNvbnN0IFtpc0NvbGxhcHNlZCwgc2V0SXNDb2xsYXBzZWRdID0gdXNlU3RhdGUoaXNOYXZCYXJWYXJpYW50KTtcbiAgICBjb25zdCB1c2VyVHlwZWRRdWVyeSA9IHVzZVJlZihcIlwiKTtcbiAgICBjb25zdCBbaXNBdXRvY29tcGxldGVMaXN0T3Blbiwgc2V0SXNBdXRvY29tcGxldGVMaXN0T3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgdGV4dEFyZWFSZWYgPSByZWYgfHwgaW50ZXJuYWxSZWY7XG5cbiAgICBjb25zdCBtZXJnZWRTZW5kQnV0dG9uUHJvcHMgPSB7XG4gICAgICAuLi5kZWZhdWx0U2VuZEJ1dHRvblByb3BzLFxuICAgICAgLi4uKHNlbmRCdXR0b25Qcm9wcyA/PyB7fSksXG4gICAgfTtcblxuICAgIHVzZU91dHNpZGVDbGljayhcbiAgICAgIGNvbnRhaW5lclJlZixcbiAgICAgIChldnQpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICFjb250YWluZXJSZWYuY3VycmVudD8uY29udGFpbnMoZXZ0LnRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgICAgICFwb3J0YWxDb250YWluZXI/LmNvbnRhaW5zKGV2dC50YXJnZXQgYXMgTm9kZSkgJiZcbiAgICAgICAgICBldnQudGFyZ2V0ICE9PSBudWxsXG4gICAgICAgICkge1xuICAgICAgICAgIHNldElzQ29sbGFwc2VkKHRydWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgIWlzQ29sbGFwc2VkICYmIGlzTmF2QmFyVmFyaWFudFxuICAgICk7XG5cbiAgICBjb25zdCBjbG9zZUF1dG9jb21wbGV0ZUxpc3QgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBzZXRJc0F1dG9jb21wbGV0ZUxpc3RPcGVuKGZhbHNlKTtcbiAgICAgIHNldFNlbGVjdGVkSW5kZXgoLTEpO1xuICAgIH0sIFtdKTtcblxuICAgIGNvbnN0IG9wZW5BdXRvY29tcGxldGVMaXN0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgaWYgKGF1dG9jb21wbGV0ZUxpc3RJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgc2V0SXNBdXRvY29tcGxldGVMaXN0T3Blbih0cnVlKTtcbiAgICAgICAgc2V0U2VsZWN0ZWRJbmRleCgtMSk7XG4gICAgICB9XG4gICAgfSwgW2F1dG9jb21wbGV0ZUxpc3RJdGVtc10pO1xuXG4gICAgY29uc3QgYWNjZXB0VGV4dFNlbGVjdGlvbiA9ICgpID0+IHtcbiAgICAgIHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQgPSB2YWx1ZTtcbiAgICAgIGlmIChcbiAgICAgICAgdGV4dEFyZWFSZWYuY3VycmVudC5zZWxlY3Rpb25TdGFydCAhPT0gdGV4dEFyZWFSZWYuY3VycmVudC5zZWxlY3Rpb25FbmRcbiAgICAgICkge1xuICAgICAgICB0ZXh0QXJlYVJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKHZhbHVlLmxlbmd0aCwgdmFsdWUubGVuZ3RoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmIChhdXRvY29tcGxldGVMaXN0SXRlbXMubGVuZ3RoICYmICFpc0NvbGxhcHNlZCkge1xuICAgICAgICBvcGVuQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2xvc2VBdXRvY29tcGxldGVMaXN0KCk7XG4gICAgICB9XG4gICAgfSwgW1xuICAgICAgYXV0b2NvbXBsZXRlTGlzdEl0ZW1zLFxuICAgICAgb3BlbkF1dG9jb21wbGV0ZUxpc3QsXG4gICAgICBjbG9zZUF1dG9jb21wbGV0ZUxpc3QsXG4gICAgICBpc0NvbGxhcHNlZCxcbiAgICBdKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAodmFsdWUgJiYgdmFsdWUgIT09IHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQgJiYgaXNBdXRvY29tcGxldGVMaXN0T3Blbikge1xuICAgICAgICB0ZXh0QXJlYVJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKFxuICAgICAgICAgIHVzZXJUeXBlZFF1ZXJ5LmN1cnJlbnQubGVuZ3RoLFxuICAgICAgICAgIHZhbHVlLmxlbmd0aFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0sIFt2YWx1ZSwgdGV4dEFyZWFSZWYsIGlzQXV0b2NvbXBsZXRlTGlzdE9wZW5dKTtcblxuICAgIC8vIERldGVybWluZSB3aGVuIGZvY3VzIGxlYXZlcyB0aGUgY29udGFpbmVyIHRvIGNvbGxhcHNlIGl0XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGxldCBoYW5kbGVyOiAoZXZ0OiBGb2N1c0V2ZW50KSA9PiB2b2lkO1xuICAgICAgY29uc3QgY29udGFpbmVyID0gY29udGFpbmVyUmVmLmN1cnJlbnQ7XG5cbiAgICAgIGlmIChpc05hdkJhclZhcmlhbnQgJiYgY29udGFpbmVyKSB7XG4gICAgICAgIGhhbmRsZXIgPSAoZXZ0OiBGb2N1c0V2ZW50KSA9PiB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgIWNvbnRhaW5lclJlZi5jdXJyZW50Py5jb250YWlucyhldnQucmVsYXRlZFRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgICAgICAgIXBvcnRhbENvbnRhaW5lcj8uY29udGFpbnMoZXZ0LnJlbGF0ZWRUYXJnZXQgYXMgTm9kZSkgJiZcbiAgICAgICAgICAgIGV2dC5yZWxhdGVkVGFyZ2V0ICE9PSBudWxsXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBzZXRJc0NvbGxhcHNlZCh0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwiZm9jdXNvdXRcIiwgaGFuZGxlcik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImZvY3Vzb3V0XCIsIGhhbmRsZXIpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0sIFtpc05hdkJhclZhcmlhbnQsIGNvbnRhaW5lclJlZiwgcG9ydGFsQ29udGFpbmVyXSk7XG5cbiAgICBjb25zdCBmbGF0dGVuZWRMaXN0SXRlbXMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGNvbnN0IGxpc3Q6IEZsYXR0ZW5lZExpc3RJdGVtW10gPSBbXTtcblxuICAgICAgYXV0b2NvbXBsZXRlTGlzdEl0ZW1zLmZvckVhY2goKGxpc3RJdGVtKSA9PiB7XG4gICAgICAgIGxpc3RJdGVtLml0ZW1zLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgbGlzdC5wdXNoKHtcbiAgICAgICAgICAgIGNhdGVnb3J5OiBsaXN0SXRlbS5jYXRlZ29yeSxcbiAgICAgICAgICAgIGluZGV4SW5DYXRlZ29yeTogaW5kZXgsXG4gICAgICAgICAgICB2YWx1ZTogaXRlbS52YWx1ZSxcbiAgICAgICAgICAgIGlkOiBnZXRMaXN0SXRlbUlkKG5hbWUsIGxpc3RJdGVtLmNhdGVnb3J5LCBpbmRleCksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gbGlzdDtcbiAgICB9LCBbYXV0b2NvbXBsZXRlTGlzdEl0ZW1zLCBuYW1lXSk7XG5cbiAgICBjb25zdCBoYW5kbGVTZWxlY3RlZEluZGV4Q2hhbmdlID0gKGluZGV4OiBudW1iZXIsIGV2dD86IFN5bnRoZXRpY0V2ZW50KSA9PiB7XG4gICAgICBzZXRTZWxlY3RlZEluZGV4KGluZGV4KTtcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgY29uc3QgeyBjYXRlZ29yeSwgdmFsdWU6IGl0ZW1WYWx1ZSB9ID0gZmxhdHRlbmVkTGlzdEl0ZW1zW2luZGV4XTtcblxuICAgICAgICBvbkNvbXBsZXRlKHsgdmFsdWU6IGl0ZW1WYWx1ZSwgY2F0ZWdvcnksIGV2dCwgaW5kZXggfSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZUxpc3RJdGVtQ2xpY2sgPSAoXG4gICAgICBjYXRlZ29yeTogc3RyaW5nLFxuICAgICAgaW5kZXhJbkNhdGVnb3J5OiBudW1iZXIsXG4gICAgICBldnQ/OiBNb3VzZUV2ZW50XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IGZsYXR0ZW5lZExpc3RJdGVtcy5maW5kSW5kZXgoXG4gICAgICAgIChsaXN0SXRlbSkgPT5cbiAgICAgICAgICBsaXN0SXRlbS5jYXRlZ29yeSA9PT0gY2F0ZWdvcnkgJiZcbiAgICAgICAgICBsaXN0SXRlbS5pbmRleEluQ2F0ZWdvcnkgPT09IGluZGV4SW5DYXRlZ29yeVxuICAgICAgKTtcblxuICAgICAgaGFuZGxlU2VsZWN0ZWRJbmRleENoYW5nZShpbmRleCwgZXZ0KTtcbiAgICAgIGNsb3NlQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgaWYgKGlzTmF2QmFyVmFyaWFudCkge1xuICAgICAgICBzZXRJc0NvbGxhcHNlZCh0cnVlKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlS2V5RG93bjogS2V5Ym9hcmRFdmVudEhhbmRsZXI8SFRNTFRleHRBcmVhRWxlbWVudD4gPSAoZXZ0KSA9PiB7XG4gICAgICBpZiAoaXNBdXRvY29tcGxldGVMaXN0T3Blbikge1xuICAgICAgICBzd2l0Y2ggKGV2dC5rZXkpIHtcbiAgICAgICAgICBjYXNlIFwiRXNjYXBlXCI6XG4gICAgICAgICAgICBjbG9zZUF1dG9jb21wbGV0ZUxpc3QoKTtcbiAgICAgICAgICAgIG9uQ29tcGxldGUoeyB2YWx1ZTogdXNlclR5cGVkUXVlcnkuY3VycmVudCwgZXZ0IH0pO1xuICAgICAgICAgICAgaWYgKGlzTmF2QmFyVmFyaWFudCkge1xuICAgICAgICAgICAgICBzZXRJc0NvbGxhcHNlZCh0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgXCJFbnRlclwiOlxuICAgICAgICAgICAgaWYgKCFldnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgIGNsb3NlQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgICAgICAgICBhY2NlcHRUZXh0U2VsZWN0aW9uKCk7XG5cbiAgICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgb25FbnRlcktleT8uKCk7XG4gICAgICAgICAgICAgICAgaWYgKGlzTmF2QmFyVmFyaWFudCkge1xuICAgICAgICAgICAgICAgICAgc2V0SXNDb2xsYXBzZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFwiIFwiOlxuICAgICAgICAgICAgYWNjZXB0VGV4dFNlbGVjdGlvbigpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBcIkFycm93VXBcIjpcbiAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgaWYgKHNlbGVjdGVkSW5kZXggPiAtMSkge1xuICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RlZEluZGV4Q2hhbmdlKHNlbGVjdGVkSW5kZXggLSAxLCBldnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBcIkFycm93RG93blwiOlxuICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRJbmRleCA8IGZsYXR0ZW5lZExpc3RJdGVtcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgIGhhbmRsZVNlbGVjdGVkSW5kZXhDaGFuZ2Uoc2VsZWN0ZWRJbmRleCArIDEsIGV2dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2l0Y2ggKGV2dC5rZXkpIHtcbiAgICAgICAgICBjYXNlIFwiRXNjYXBlXCI6XG4gICAgICAgICAgICBvbkNsZWFyPy4oKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgXCJFbnRlclwiOlxuICAgICAgICAgICAgaWYgKCFldnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIG9uRW50ZXJLZXk/LigpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgb25LZXlEb3duPy4oZXZ0KTtcbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlOiBDaGFuZ2VFdmVudEhhbmRsZXI8SFRNTFRleHRBcmVhRWxlbWVudD4gPSAoZXZ0KSA9PiB7XG4gICAgICB1c2VyVHlwZWRRdWVyeS5jdXJyZW50ID0gZXZ0LnRhcmdldC52YWx1ZTtcbiAgICAgIG9uQ2hhbmdlKGV2dCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZUZvY3VzOiBGb2N1c0V2ZW50SGFuZGxlcjxIVE1MVGV4dEFyZWFFbGVtZW50PiA9IChldnQpID0+IHtcbiAgICAgIHNldElzQ29sbGFwc2VkKGZhbHNlKTtcbiAgICAgIG9uRm9jdXM/LihldnQpO1xuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVCbHVyOiBGb2N1c0V2ZW50SGFuZGxlcjxIVE1MVGV4dEFyZWFFbGVtZW50PiA9IChldnQpID0+IHtcbiAgICAgIGlmICh2YWx1ZSAhPT0gdXNlclR5cGVkUXVlcnkuY3VycmVudCkge1xuICAgICAgICBvbkNvbXBsZXRlPy4oeyB2YWx1ZTogdXNlclR5cGVkUXVlcnkuY3VycmVudCwgZXZ0IH0pO1xuICAgICAgfVxuICAgICAgb25CbHVyPy4oZXZ0KTtcbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlU2VuZEJ1dHRvbkNsaWNrID0gKGV2dDogTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4pID0+IHtcbiAgICAgIG1lcmdlZFNlbmRCdXR0b25Qcm9wcy5vbkNsaWNrPy4oZXZ0KTtcbiAgICAgIGNsb3NlQXV0b2NvbXBsZXRlTGlzdCgpO1xuICAgICAgaWYgKGlzTmF2QmFyVmFyaWFudCkge1xuICAgICAgICBzZXRJc0NvbGxhcHNlZCh0cnVlKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlUHJldmVudEZvY3VzID0gKGV2dDogUmVhY3QuUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAvLyBQcmV2ZW50IHRoZSB0ZXh0YXJlYSBmcm9tIGJlaW5nIHVuZm9jdXNlZFxuICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZU9uQ29udGFpbmVyUG9pbnRlckRvd24gPSAoZXZ0OiBSZWFjdC5Qb2ludGVyRXZlbnQpID0+IHtcbiAgICAgIC8vIEZvY3VzIHRleHRhcmVhIHdoZW4gY2xpY2tpbmcgb24gdGhlIGNvbnRhaW5lciBvbmx5XG4gICAgICBpZiAoZXZ0LnRhcmdldCA9PT0gZXZ0LmN1cnJlbnRUYXJnZXQpIHtcbiAgICAgICAgdGV4dEFyZWFSZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IHNlbGVjdGVkTGlzdEl0ZW0gPVxuICAgICAgc2VsZWN0ZWRJbmRleCAhPT0gLTEgPyBmbGF0dGVuZWRMaXN0SXRlbXNbc2VsZWN0ZWRJbmRleF0gOiBudWxsO1xuXG4gICAgY29uc3QgZW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudEVsbSA9IGVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnQgPyAoXG4gICAgICA8U3R5bGVkRW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudENvbnRhaW5lclxuICAgICAgICBpc05hdkJhclZhcmlhbnQ9e2lzTmF2QmFyVmFyaWFudH1cbiAgICAgID5cbiAgICAgICAgPFRleHQgY29sb3I9XCJ0ZXJ0aWFyeVwiPntlbXB0eVN0YXRlVG9wUmlnaHRDb250ZW50fTwvVGV4dD5cbiAgICAgIDwvU3R5bGVkRW1wdHlTdGF0ZVRvcFJpZ2h0Q29udGVudENvbnRhaW5lcj5cbiAgICApIDogbnVsbDtcblxuICAgIGNvbnN0IGNsZWFyQnV0dG9uRWxtID0gdmFsdWUgPyAoXG4gICAgICA8U3R5bGVkQ2xlYXJCdXR0b25cbiAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgIGljb249XCJ4LWNpcmNsZS1maWxsZWRcIlxuICAgICAgICBhcmlhLWxhYmVsPXtjbGVhckJ1dHRvbkFyaWFMYWJlbH1cbiAgICAgICAgaXNOYXZCYXJWYXJpYW50PXtpc05hdkJhclZhcmlhbnR9XG4gICAgICAgIG9uUG9pbnRlckRvd249e2hhbmRsZVByZXZlbnRGb2N1c31cbiAgICAgICAgb25DbGljaz17b25DbGVhcn1cbiAgICAgIC8+XG4gICAgKSA6IChcbiAgICAgIGVtcHR5U3RhdGVUb3BSaWdodENvbnRlbnRFbG1cbiAgICApO1xuXG4gICAgY29uc3QgaGludEVsbSA9ICEhaGludCAmJiAoXG4gICAgICA8SW5saW5lIGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAgPFRleHQgc2l6ZT1cInNcIiBjb2xvcj1cInRlcnRpYXJ5XCI+XG4gICAgICAgICAge2hpbnR9XG4gICAgICAgIDwvVGV4dD5cbiAgICAgIDwvSW5saW5lPlxuICAgICk7XG5cbiAgICBjb25zdCBib3R0b21Ub29sYmFyRWxtID0gKGJvdHRvbVRvb2xiYXI/LnJpZ2h0Q29udGVudCB8fFxuICAgICAgYm90dG9tVG9vbGJhcj8ubGVmdENvbnRlbnQgfHxcbiAgICAgICEhc2VuZEJ1dHRvblByb3BzKSAmJlxuICAgICAgIWlzQ29sbGFwc2VkICYmIChcbiAgICAgICAgPD5cbiAgICAgICAgICB7Ym90dG9tVG9vbGJhcj8ubGVmdENvbnRlbnQgJiYgKFxuICAgICAgICAgICAgPFN0eWxlZFNsb3Q+e2JvdHRvbVRvb2xiYXIubGVmdENvbnRlbnR9PC9TdHlsZWRTbG90PlxuICAgICAgICAgICl9XG4gICAgICAgICAgPFN0eWxlZFNsb3QgZGF0YS1lMmUtdGVzdC1pZD1cImJvdHRvbVRvb2xiYXJcIiBzaWRlPVwicmlnaHRcIj5cbiAgICAgICAgICAgIDxJbmxpbmUgc3BhY2U9XCJ4c1wiIHZBbGlnbkl0ZW1zPVwiY2VudGVyXCI+XG4gICAgICAgICAgICAgIHtib3R0b21Ub29sYmFyPy5yaWdodENvbnRlbnR9XG4gICAgICAgICAgICAgIHtzZW5kQnV0dG9uUHJvcHMgJiYgKFxuICAgICAgICAgICAgICAgIDxTdWJUaGVtZVByb3ZpZGVyIG5hbWU9e3ZhcmlhbnR9PlxuICAgICAgICAgICAgICAgICAgPFJvdW5kQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGFyaWFBdHRyaWJ1dGVzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgXCJhcmlhLWxhYmVsXCI6IGlzUHJvY2Vzc2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBcIlByb2Nlc3NpbmcgcXVlcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBcIlN1Ym1pdCBxdWVyeVwiLFxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICB7Li4ubWVyZ2VkU2VuZEJ1dHRvblByb3BzfVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17bWVyZ2VkU2VuZEJ1dHRvblByb3BzLmRpc2FibGVkID8/ICF2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlU2VuZEJ1dHRvbkNsaWNrfVxuICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJEb3duPXtoYW5kbGVQcmV2ZW50Rm9jdXN9XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgaWNvbj17XG4gICAgICAgICAgICAgICAgICAgICAgaXNQcm9jZXNzaW5nID8gXCJzdG9wLWZpbGxlZFwiIDogbWVyZ2VkU2VuZEJ1dHRvblByb3BzLmljb25cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1N1YlRoZW1lUHJvdmlkZXI+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0lubGluZT5cbiAgICAgICAgICA8L1N0eWxlZFNsb3Q+XG4gICAgICAgIDwvPlxuICAgICAgKTtcblxuICAgIGNvbnN0IGJvcmRlclJhZGl1c1NpemU6IEJvcmRlclJhZGl1cyA9IGlzQ29sbGFwc2VkID8gXCJ4c1wiIDogXCJtXCI7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGRhdGEtZTJlLXRlc3QtaWQ9e2RhdGFFMmVUZXN0SWR9XG4gICAgICAgICAgZGF0YS1kcy1pZD1cIlByb21wdElucHV0XCJcbiAgICAgICAgICByZWY9e2NvbnRhaW5lclJlZn1cbiAgICAgICAgICAvLyBUcmFuc2xhdGlvbiBkaXNhYmxlZCBmb3IgY29uc2lzdGVuY3kgd2l0aCB0aGUgYXV0b2NvbXBsZXRlIGxpc3RcbiAgICAgICAgICB0cmFuc2xhdGU9XCJub1wiXG4gICAgICAgID5cbiAgICAgICAgICA8U3RhY2sgc3BhY2U9XCJzXCI+XG4gICAgICAgICAgICA8QW5pbWF0ZWRCb3JkZXJcbiAgICAgICAgICAgICAgc2tpcEFuaW1hdGlvbj17c2tpcEFJQW5pbWF0aW9uIHx8IHZhcmlhbnQgIT09IFwiYWlcIn1cbiAgICAgICAgICAgICAgcmFkaXVzPXsxMn1cbiAgICAgICAgICAgICAgaXRlcmF0aW9ucz17MX1cbiAgICAgICAgICAgICAgdGhpY2tuZXNzPXsyfVxuICAgICAgICAgICAgICBoaWRlQ2hpbGRCb3JkZXJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPFN1YlRoZW1lUHJvdmlkZXIgbmFtZT17dmFyaWFudH0+XG4gICAgICAgICAgICAgICAgPEN1c3RvbUNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgZWxldmF0aW9uPXswfVxuICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzPXtib3JkZXJSYWRpdXNTaXplfVxuICAgICAgICAgICAgICAgICAgaGlkZUJvcmRlcj17aXNDb2xsYXBzZWR9XG4gICAgICAgICAgICAgICAgICBoYXNTaGFkb3c9eyFpc05hdkJhclZhcmlhbnR9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN1YlRoZW1lUHJvdmlkZXIgbmFtZT1cInVuc2V0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxTdHlsZWRTbG90c0NvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgIHJlZj17dGV4dEFyZWFDb250YWluZXJSZWZ9XG4gICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyRG93bj17aGFuZGxlT25Db250YWluZXJQb2ludGVyRG93bn1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtoZWFkZXIgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFByb21wdElucHV0SGVhZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5oZWFkZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1c1NpemU9e2JvcmRlclJhZGl1c1NpemV9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZFRleHRBcmVhQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAge2xlZnRJY29uICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZExlZnRJY29uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPXtsZWZ0SWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwidGVydGlhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZExlZnRJY29uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxQcm9tcHRUZXh0QXJlYVxuICAgICAgICAgICAgICAgICAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUUyZVRlc3RJZD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUUyZVRlc3RJZCA/IGAke2RhdGFFMmVUZXN0SWR9LWlucHV0YCA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXt0ZXh0QXJlYVJlZn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNOYXZCYXJWYXJpYW50PXtpc05hdkJhclZhcmlhbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkTGlzdEl0ZW09e3NlbGVjdGVkTGlzdEl0ZW19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzQXV0b2NvbXBsZXRlTGlzdE9wZW49e2lzQXV0b2NvbXBsZXRlTGlzdE9wZW59XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzQ29sbGFwc2VkPXtpc0NvbGxhcHNlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzTGVmdEljb249eyEhbGVmdEljb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uRm9jdXM9e2hhbmRsZUZvY3VzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93bn1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICB7Y2xlYXJCdXR0b25FbG19XG4gICAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWRUZXh0QXJlYUNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICB7Ym90dG9tVG9vbGJhckVsbX1cbiAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWRTbG90c0NvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvU3ViVGhlbWVQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L0N1c3RvbUNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9TdWJUaGVtZVByb3ZpZGVyPlxuICAgICAgICAgICAgPC9BbmltYXRlZEJvcmRlcj5cbiAgICAgICAgICAgIHtoaW50RWxtfVxuICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxBdXRvY29tcGxldGVMaXN0XG4gICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgYXV0b2NvbXBsZXRlTGlzdEl0ZW1zPXthdXRvY29tcGxldGVMaXN0SXRlbXN9XG4gICAgICAgICAgdHJpZ2dlclJlZj17dGV4dEFyZWFDb250YWluZXJSZWZ9XG4gICAgICAgICAgc2VsZWN0ZWRMaXN0SXRlbT17c2VsZWN0ZWRMaXN0SXRlbX1cbiAgICAgICAgICBpc09wZW49e2lzQXV0b2NvbXBsZXRlTGlzdE9wZW59XG4gICAgICAgICAgYXV0b2NvbXBsZXRlTGlzdEZvb3Rlcj17YXV0b2NvbXBsZXRlTGlzdEZvb3Rlcn1cbiAgICAgICAgICBwb3J0YWxDb250YWluZXI9e3BvcnRhbENvbnRhaW5lcn1cbiAgICAgICAgICBvbkxpc3RJdGVtQ2xpY2s9e2hhbmRsZUxpc3RJdGVtQ2xpY2t9XG4gICAgICAgIC8+XG4gICAgICA8Lz5cbiAgICApO1xuICB9XG4pO1xuXG5jb25zdCBDdXN0b21CdXR0b24gPSBzdHlsZWQoQnV0dG9uKSgoeyB0aGVtZSB9KSA9PiAoe1xuICBib3JkZXJSYWRpdXM6IHRoZW1lLnZhcmlhYmxlcy5zaXplLmJvcmRlclJhZGl1cy5sLFxufSkpO1xuXG4vLyBuZWVkIHRvIHNpbXBsaWZ5IHRoaXMgdHlwZSBmb3IgcmV1c2VcbmNvbnN0IFN1Z2dlc3Rpb25CdXR0b24gPSBmb3J3YXJkUmVmKFxuICA8QyBleHRlbmRzIFJlYWN0LkVsZW1lbnRUeXBlID0gXCJidXR0b25cIj4oXG4gICAgcHJvcHM6IFBvbHltb3JwaGljQ29tcG9uZW50UHJvcHNXaXRoUmVmPFxuICAgICAgQyxcbiAgICAgIE9taXQ8QnV0dG9uUHJvcHMsIFwidmFyaWFudFwiIHwgXCJzaXplXCIgfCBcInJlZlwiPlxuICAgID4sXG4gICAgcmVmOiBQb2x5bW9ycGhpY1JlZjxDPlxuICApID0+IDxDdXN0b21CdXR0b24gey4uLnByb3BzfSB2YXJpYW50PVwic2Vjb25kYXJ5XCIgc2l6ZT1cInNcIiByZWY9e3JlZn0gLz5cbik7XG5cbmV4cG9ydCBjb25zdCBQcm9tcHRJbnB1dCA9IE9iamVjdC5hc3NpZ24oUHJvbXB0SW5wdXRDb21wb25lbnQsIHtcbiAgU3VnZ2VzdGlvbkJ1dHRvbixcbn0pIGFzIHR5cGVvZiBQcm9tcHRJbnB1dENvbXBvbmVudCAmIHtcbiAgU3VnZ2VzdGlvbkJ1dHRvbjogdHlwZW9mIFN1Z2dlc3Rpb25CdXR0b247XG59O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXVuQnFCIn0= */"),PromptInput=Object.assign(PromptInputComponent,{SuggestionButton:(0,_react.forwardRef)((props,ref)=>_react.default.createElement(CustomButton,{...props,variant:"secondary",size:"s",ref:ref}))});
|