@vonaffenfels/contentful-teasermanager 1.1.51 → 1.1.53

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.
Files changed (29) hide show
  1. package/dist/{_base_slate-editor_src_dev_testComponents_TestStory2_js.js → TestStory.js} +12 -12
  2. package/dist/TestStory2.js +94 -0
  3. package/dist/TestStory3.js +94 -0
  4. package/dist/index.094ebe8a6da25ebef11e.hot-update.js +11 -0
  5. package/dist/index.094ebe8a6da25ebef11e.hot-update.json +1 -0
  6. package/dist/index.30eae97ccdf3a813b021.hot-update.js +42 -0
  7. package/dist/index.30eae97ccdf3a813b021.hot-update.json +1 -0
  8. package/dist/index.5ec068db2d05b046d371.hot-update.js +22 -0
  9. package/dist/index.5ec068db2d05b046d371.hot-update.json +1 -0
  10. package/dist/index.9c341de9e0f1bd4a79d2.hot-update.js +43 -0
  11. package/dist/index.9c341de9e0f1bd4a79d2.hot-update.json +1 -0
  12. package/dist/index.9dfef8895061a4ec159a.hot-update.js +398 -0
  13. package/dist/index.9dfef8895061a4ec159a.hot-update.json +1 -0
  14. package/dist/index.c062f00a592bcf4fd9e7.hot-update.js +20666 -0
  15. package/dist/index.c062f00a592bcf4fd9e7.hot-update.json +1 -0
  16. package/dist/index.d80013ee9c93571c5cd7.hot-update.js +11 -0
  17. package/dist/index.d80013ee9c93571c5cd7.hot-update.json +1 -0
  18. package/dist/index.fd3ea37b5951a3cb5357.hot-update.js +11 -0
  19. package/dist/index.fd3ea37b5951a3cb5357.hot-update.json +1 -0
  20. package/dist/index.js +42198 -26033
  21. package/package.json +3 -3
  22. package/src/components/Contentful/ConfigScreen.js +80 -63
  23. package/src/components/Contentful/Dialog.js +63 -48
  24. package/src/components/Contentful/EntryEditor.js +8 -2
  25. package/src/components/Contentful/Page.js +5 -3
  26. package/src/components/NoAccess.js +13 -0
  27. package/src/index.js +2 -1
  28. package/dist/_base_slate-editor_src_dev_testComponents_TestStory3_js.js +0 -94
  29. package/dist/_base_slate-editor_src_dev_testComponents_TestStory_js.js +0 -94
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vonaffenfels/contentful-teasermanager",
3
- "version": "1.1.51",
3
+ "version": "1.1.53",
4
4
  "main": "dist/index.js",
5
5
  "scripts": {
6
6
  "prepublish": "yarn run build",
@@ -96,10 +96,10 @@
96
96
  "webpack-dev-server": "^4.0.0-beta.2"
97
97
  },
98
98
  "dependencies": {
99
- "@vonaffenfels/slate-editor": "^1.1.51",
99
+ "@vonaffenfels/slate-editor": "^1.1.52",
100
100
  "webpack": "5.88.2"
101
101
  },
102
- "gitHead": "b95716b54761425787bdbbd58d7324005c26902c",
102
+ "gitHead": "5fb290a60b6c1b427ab90c9687ee7289738d78f3",
103
103
  "publishConfig": {
104
104
  "access": "public"
105
105
  }
@@ -1,77 +1,94 @@
1
- import React, {Component} from 'react';
1
+ import React, {
2
+ useEffect, useState,
3
+ } from 'react';
2
4
  import {
3
- Heading, Form, TextField, Workbench, Paragraph,
5
+ Form, Workbench,
4
6
  } from '@contentful/forma-36-react-components';
7
+ import {FormControl} from '@contentful/f36-components';
8
+ import {Multiselect} from '@contentful/f36-multiselect';
5
9
  import {css} from 'emotion';
6
10
 
7
- export default class Config extends Component {
11
+ const Config = ({sdk}) => {
12
+ const [params, setParams] = useState({usersWithAccess: []});
13
+ const [spaceUsers, setSpaceUsers] = useState([]);
8
14
 
9
- constructor(props) {
10
- super(props);
11
- this.state = {parameters: {}};
15
+ const onConfigure = async () => {
16
+ const currentState = await sdk.app.getCurrentState();
12
17
 
13
- // `onConfigure` allows to configure a callback to be
14
- // invoked when a user attempts to install the app or update
15
- // its configuration.
16
- props.sdk.app.onConfigure(() => this.onConfigure());
17
- }
18
+ return {
19
+ parameters: params,
20
+ targetState: currentState,
21
+ };
22
+ };
18
23
 
19
- async componentDidMount() {
20
- // Get current parameters of the app.
21
- // If the app is not installed yet, `parameters` will be `null`.
22
- const parameters = await this.props.sdk.app.getParameters();
24
+ useEffect(() => {
25
+ if (sdk) {
26
+ sdk.app.getParameters().then(params => {
27
+ setParams(params);
28
+ sdk.app.setReady();
29
+ });
30
+ sdk.space.getUsers().then(users => {
31
+ setSpaceUsers(users.items.map(v => v.email));
32
+ });
33
+ }
34
+ }, [sdk]);
23
35
 
24
- this.setState(parameters ? {parameters} : this.state, () => {
25
- // Once preparation has finished, call `setReady` to hide
26
- // the loading screen and present the app to a user.
27
- this.props.sdk.app.setReady();
28
- });
29
- }
36
+ useEffect(() => {
37
+ if (sdk) {
38
+ sdk.app.onConfigure(() => onConfigure());
39
+ }
40
+ }, [sdk, params]);
30
41
 
31
- async onConfigure() {
32
- // This method will be called when a user clicks on "Install"
33
- // or "Save" in the configuration screen.
34
- // for more details see https://www.contentful.com/developers/docs/extensibility/ui-extensions/sdk-reference/#register-an-app-configuration-hook
42
+ const handleSelectItem = (event) => {
43
+ const {
44
+ checked,
45
+ value,
46
+ } = event.target;
35
47
 
36
- // Get current the state of EditorInterface and other entities
37
- // related to this app installation
38
- const currentState = await this.props.sdk.app.getCurrentState();
48
+ let newValue = params?.usersWithAccess || [];
49
+ if (checked) {
50
+ newValue = [...newValue, value];
51
+ } else {
52
+ newValue = newValue.filter((email) => email !== value);
53
+ }
39
54
 
40
- return {
41
- // Parameters to be persisted as the app configuration.
42
- parameters: this.state.parameters,
43
- // In case you don't want to submit any update to app
44
- // locations, you can just pass the currentState as is
45
- targetState: currentState,
46
- };
47
- }
48
-
49
- onFieldChanged(value, field) {
50
- this.setState({
51
- parameters: {
52
- ...this.state.parameters,
53
- [field]: value,
54
- },
55
+ setParams({
56
+ ...params,
57
+ usersWithAccess: newValue,
55
58
  });
56
- }
59
+ };
60
+
57
61
 
58
- render() {
59
- return (
60
- <Workbench className={css({
61
- padding: '80px',
62
- backgroundColor: "#FFF",
63
- })}>
64
- <Form>
65
- <Heading>Configuration</Heading>
66
- <TextField
67
- value={this.state.parameters.contentField}
68
- onChange={e => this.onFieldChanged(e.target.value, "contentField")}
69
- labelText="Content Field Name"
70
- required
71
- />
72
- </Form>
73
- </Workbench>
74
- );
75
- }
62
+ return (
63
+ <Workbench className={css({
64
+ padding: '80px',
65
+ backgroundColor: "#FFF",
66
+ })}>
67
+ <Form>
68
+ <FormControl>
69
+ <FormControl.Label>Teasermanager Benutzer</FormControl.Label>
70
+ <Multiselect
71
+ currentSelection={params.usersWithAccess}
72
+ popoverProps={{isFullWidth: true}}
73
+ >
74
+ {spaceUsers.map((userEmail) => {
75
+ const val = userEmail.toLowerCase().replace(/\s/g, '-');
76
+ return (
77
+ <Multiselect.Option
78
+ key={`user-${val}}`}
79
+ itemId={val}
80
+ value={userEmail}
81
+ label={userEmail}
82
+ onSelectItem={handleSelectItem}
83
+ isChecked={params.usersWithAccess?.includes(userEmail)}
84
+ />
85
+ );
86
+ })}
87
+ </Multiselect>
88
+ </FormControl>
89
+ </Form>
90
+ </Workbench>
91
+ );
92
+ };
76
93
 
77
- }
94
+ export default Config;
@@ -1,48 +1,63 @@
1
- import React, {useEffect, useState} from 'react';
2
- import {NewestArticles} from "./Dialog/NewestArticles";
3
-
4
- const Dialog = ({sdk, portals, getArticleThumbnailUrl}) => {
5
- const [slotState, setSlotState] = useState({});
6
-
7
- const selectEntry = (entry) => {
8
- sdk.close(entry);
9
- }
10
-
11
- const loadSlotStateForPage = async () => {
12
- try {
13
- const apiRoot = sdk.parameters.instance.apiRoot;
14
- const portal = sdk.parameters.invocation.portal;
15
- const pageId = sdk.parameters.invocation.entryId;
16
- const date = sdk.parameters.invocation.date;
17
- const teasermanagerUrl = `${apiRoot}/api/findStateForPage?project=${portal}&page=${pageId}&date=${date.toISOString()}`;
18
- const response = await fetch(teasermanagerUrl).then(res => res.json());
19
-
20
- if (response?.message) {
21
- console.error(response.message);
22
- }
23
-
24
- return response?.data || {};
25
- } catch (e) {
26
- console.error(e);
27
- }
28
- }
29
-
30
- useEffect(() => {
31
- loadSlotStateForPage().then(setSlotState);
32
- }, [sdk.parameters.invocation]);
33
-
34
- return <div style={{backgroundColor: "#FFFFFF", minHeight: "100vh"}}>
35
- <NewestArticles sdk={sdk} onEntryClick={selectEntry} slotState={slotState} getArticleThumbnailUrl={getArticleThumbnailUrl} portals={portals}/>
36
- {/*
37
- <Tabs defaultTab="newest">
38
- <Tabs.List>
39
- <Tabs.Tab panelId="newest">Neuste Artikel</Tabs.Tab>
40
- </Tabs.List>
41
- <Tabs.Panel id="newest">
42
- </Tabs.Panel>
43
- </Tabs>
44
- */}
45
- </div>
46
- };
47
-
48
- export default Dialog;
1
+ import React, {
2
+ useEffect, useState,
3
+ } from 'react';
4
+ import {NewestArticles} from "./Dialog/NewestArticles";
5
+ import {NoAccess} from "../NoAccess";
6
+
7
+ const Dialog = ({
8
+ sdk,
9
+ portals,
10
+ getArticleThumbnailUrl,
11
+ }) => {
12
+ const [slotState, setSlotState] = useState({});
13
+ const enabled = sdk?.parameters?.installation?.usersWithAccess?.includes(sdk?.user?.email);
14
+
15
+ const selectEntry = (entry) => {
16
+ sdk.close(entry);
17
+ };
18
+
19
+ const loadSlotStateForPage = async () => {
20
+ try {
21
+ const apiRoot = sdk.parameters.instance.apiRoot;
22
+ const portal = sdk.parameters.invocation.portal;
23
+ const pageId = sdk.parameters.invocation.entryId;
24
+ const date = sdk.parameters.invocation.date;
25
+ const teasermanagerUrl = `${apiRoot}/api/findStateForPage?project=${portal}&page=${pageId}&date=${date.toISOString()}`;
26
+ const response = await fetch(teasermanagerUrl).then(res => res.json());
27
+
28
+ if (response?.message) {
29
+ console.error(response.message);
30
+ }
31
+
32
+ return response?.data || {};
33
+ } catch (e) {
34
+ console.error(e);
35
+ }
36
+ };
37
+
38
+ useEffect(() => {
39
+ loadSlotStateForPage().then(setSlotState);
40
+ }, [sdk.parameters.invocation]);
41
+
42
+ if (!enabled) {
43
+ return <NoAccess sdk={sdk}/>;
44
+ }
45
+
46
+ return <div style={{
47
+ backgroundColor: "#FFFFFF",
48
+ minHeight: "100vh",
49
+ }}>
50
+ <NewestArticles sdk={sdk} onEntryClick={selectEntry} slotState={slotState} getArticleThumbnailUrl={getArticleThumbnailUrl} portals={portals}/>
51
+ {/*
52
+ <Tabs defaultTab="newest">
53
+ <Tabs.List>
54
+ <Tabs.Tab panelId="newest">Neuste Artikel</Tabs.Tab>
55
+ </Tabs.List>
56
+ <Tabs.Panel id="newest">
57
+ </Tabs.Panel>
58
+ </Tabs>
59
+ */}
60
+ </div>;
61
+ };
62
+
63
+ export default Dialog;
@@ -2,12 +2,14 @@ import React, {
2
2
  useEffect, useState,
3
3
  } from 'react';
4
4
  import {Teasermanager} from "../Teasermanager";
5
+ import {NoAccess} from "../NoAccess";
5
6
 
6
7
  const Entry = ({sdk}) => {
7
8
  const contentField = sdk.parameters.instance.contentField;
8
9
  const [locale, setLocale] = useState(sdk.locales.default);
9
10
  const [portal, setPortal] = useState();
10
11
  const portalField = sdk?.entry?.fields?.portal;
12
+ const enabled = sdk?.parameters?.installation?.usersWithAccess?.includes(sdk?.user?.email);
11
13
 
12
14
  portalField?.onValueChanged(() => {
13
15
  if (portalField.getValue() !== portal) {
@@ -86,7 +88,7 @@ const Entry = ({sdk}) => {
86
88
  console.error(e);
87
89
  alert("Fehler beim speichern!");
88
90
  }
89
- }
91
+ };
90
92
 
91
93
  const loadSlotStateForPage = async (date) => {
92
94
  try {
@@ -102,7 +104,7 @@ const Entry = ({sdk}) => {
102
104
  } catch (e) {
103
105
  console.error(e);
104
106
  }
105
- }
107
+ };
106
108
 
107
109
  const loadTimelineStateForPage = async (fromDate, toDate) => {
108
110
  try {
@@ -118,6 +120,10 @@ const Entry = ({sdk}) => {
118
120
  } catch (e) {
119
121
  console.error(e);
120
122
  }
123
+ };
124
+
125
+ if (!enabled) {
126
+ return <NoAccess sdk={sdk}/>;
121
127
  }
122
128
 
123
129
  return <Teasermanager
@@ -1,13 +1,15 @@
1
1
  import React from 'react';
2
2
  import {Teasermanager} from "../Teasermanager";
3
+ import {NoAccess} from "../NoAccess";
3
4
 
4
5
  const Page = ({sdk}) => {
6
+ const enabled = sdk?.parameters?.installation?.usersWithAccess?.includes(sdk?.user?.email);
5
7
 
6
- const onSlotClick = (slotId, currentDate) => {
7
- console.log("KIENZ_DEBUG: :7 / onSlotClick", {sdk});
8
+ if (!enabled) {
9
+ return <NoAccess sdk={sdk}/>;
8
10
  }
9
11
 
10
- return <Teasermanager entryId={"4RvZ6fcUtBIgw2Hw5YILPs"} onSlotClick={onSlotClick} />;
12
+ return <Teasermanager entryId={"4RvZ6fcUtBIgw2Hw5YILPs"} />;
11
13
  };
12
14
 
13
15
  export default Page;
@@ -0,0 +1,13 @@
1
+ import {
2
+ DisplayText, Flex, Paragraph,
3
+ } from "@contentful/f36-components";
4
+
5
+ export const NoAccess = ({sdk}) => {
6
+ return <Flex flexDirection="column" alignItems="center" paddingTop="spacing2Xl">
7
+ <DisplayText>
8
+ Kein Zugriff
9
+ </DisplayText>
10
+ <Paragraph>Bitte wenden Sie sich an einen Administrator wenn sie Zugriff benötigen</Paragraph>
11
+ <Paragraph>Angemeldeter Benutzer: {sdk?.user?.email}</Paragraph>
12
+ </Flex>;
13
+ };
package/src/index.js CHANGED
@@ -12,7 +12,7 @@ import Dialog from "./components/Contentful/Dialog";
12
12
  import Page from "./components/Contentful/Page";
13
13
  import {initContentfulClient} from "./lib/contentfulClient";
14
14
 
15
- export const BaseContentfulApp = (props) => {
15
+ export const BaseContentfulApp = (props = {}) => {
16
16
  init((sdk) => {
17
17
  const rootContainer = document.getElementById('root');
18
18
 
@@ -43,6 +43,7 @@ export const BaseContentfulApp = (props) => {
43
43
  ];
44
44
 
45
45
  ComponentLocationSettings.forEach((componentLocationSetting) => {
46
+ console.log("index.js:46 / ANON", sdk.location);
46
47
  if (sdk.location.is(componentLocationSetting.location)) {
47
48
  const root = createRoot(rootContainer); // createRoot(container!) if you use TypeScript
48
49
  root.render(componentLocationSetting.component);
@@ -1,94 +0,0 @@
1
- "use strict";
2
- (this["webpackChunk_vonaffenfels_contentful_teasermanager"] = this["webpackChunk_vonaffenfels_contentful_teasermanager"] || []).push([["_base_slate-editor_src_dev_testComponents_TestStory3_js"],{
3
-
4
- /***/ "../../@base/slate-editor/src/dev/testComponents/TestStory3.js":
5
- /*!*********************************************************************!*\
6
- !*** ../../@base/slate-editor/src/dev/testComponents/TestStory3.js ***!
7
- \*********************************************************************/
8
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
9
-
10
- __webpack_require__.r(__webpack_exports__);
11
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
12
- /* harmony export */ "default": () => (/* binding */ TestStory3)
13
- /* harmony export */ });
14
- /* harmony import */ var C_Users_fodor_Projects_contentful_apps_node_modules_babel_runtime_helpers_esm_defineProperty_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../node_modules/@babel/runtime/helpers/esm/defineProperty.js */ "../../node_modules/@babel/runtime/helpers/esm/defineProperty.js");
15
- /* harmony import */ var C_Users_fodor_Projects_contentful_apps_node_modules_babel_runtime_helpers_esm_objectWithoutProperties_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js */ "../../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js");
16
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "../../node_modules/react/index.js");
17
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);
18
-
19
-
20
- var _excluded = ["title", "mvp"];
21
-
22
- var __jsx = (react__WEBPACK_IMPORTED_MODULE_2___default().createElement);
23
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
24
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0,C_Users_fodor_Projects_contentful_apps_node_modules_babel_runtime_helpers_esm_defineProperty_js__WEBPACK_IMPORTED_MODULE_0__["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
25
- function TestStory3(_ref) {
26
- var title = _ref.title,
27
- mvp = _ref.mvp,
28
- props = (0,C_Users_fodor_Projects_contentful_apps_node_modules_babel_runtime_helpers_esm_objectWithoutProperties_js__WEBPACK_IMPORTED_MODULE_1__["default"])(_ref, _excluded);
29
- return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", {
30
- className: "bg-green flex flex-col space-y-8 p-4 text-black"
31
- }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("h1", null, title), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", {
32
- className: "grid grid-cols-4"
33
- }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", {
34
- className: "border border-black p-4",
35
- "data-teasermanager-slot": "test-1"
36
- }, "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ad aperiam beatae consequatur consequuntur deserunt exercitationem fugit, magni necessitatibus pariatur quae quia, quisquam saepe sunt, tenetur!"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", {
37
- className: "border border-black p-4",
38
- "data-teasermanager-slot": "test-2"
39
- }, "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Molestias, obcaecati, unde! In labore nesciunt optio, possimus praesentium sunt temporibus vero."), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", {
40
- className: "border border-black p-4",
41
- "data-teasermanager-slot": "test-3"
42
- }, "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Commodi, rem, sapiente! At consequatur cum distinctio dolorem doloribus eligendi labore necessitatibus nemo officia, perspiciatis porro quisquam quos, saepe vitae voluptas. Eligendi?"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", {
43
- className: "border border-black p-4",
44
- "data-teasermanager-slot": "test-4"
45
- }, "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ad alias beatae doloribus ex, impedit labore maxime perspiciatis quas. Alias aspernatur cupiditate, error impedit ipsa libero obcaecati reprehenderit sit sunt veniam."), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", {
46
- className: "border border-black p-4",
47
- "data-teasermanager-slot": "test-5"
48
- }, "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Asperiores at consequatur cupiditate dolore, dolorem, eligendi et eum explicabo harum illum inventore maxime molestias porro quod recusandae, reiciendis repellat repudiandae saepe sint tempora tempore temporibus veniam voluptates. Dignissimos explicabo iusto reprehenderit."), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", {
49
- className: "border border-black p-4",
50
- "data-teasermanager-slot": "test-6"
51
- }, "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ad aperiam beatae consequatur consequuntur deserunt exercitationem fugit, magni necessitatibus pariatur quae quia, quisquam saepe sunt, tenetur!"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", {
52
- className: "border border-black p-4",
53
- "data-teasermanager-slot": "test-7"
54
- }, "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Molestias, obcaecati, unde! In labore nesciunt optio, possimus praesentium sunt temporibus vero."), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", {
55
- className: "border border-black p-4",
56
- "data-teasermanager-slot": "test-8"
57
- }, "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Commodi, rem, sapiente! At consequatur cum distinctio dolorem doloribus eligendi labore necessitatibus nemo officia, perspiciatis porro quisquam quos, saepe vitae voluptas. Eligendi?"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", {
58
- className: "border border-black p-4",
59
- "data-teasermanager-slot": "test-9"
60
- }, "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ad alias beatae doloribus ex, impedit labore maxime perspiciatis quas. Alias aspernatur cupiditate, error impedit ipsa libero obcaecati reprehenderit sit sunt veniam."), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", {
61
- className: "border border-black p-4",
62
- "data-teasermanager-slot": "test-10"
63
- }, "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Asperiores at consequatur cupiditate dolore, dolorem, eligendi et eum explicabo harum illum inventore maxime molestias porro quod recusandae, reiciendis repellat repudiandae saepe sint tempora tempore temporibus veniam voluptates. Dignissimos explicabo iusto reprehenderit."), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", {
64
- className: "border border-black p-4",
65
- "data-teasermanager-slot": "test-11"
66
- }, "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ad aperiam beatae consequatur consequuntur deserunt exercitationem fugit, magni necessitatibus pariatur quae quia, quisquam saepe sunt, tenetur!"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", {
67
- className: "border border-black p-4",
68
- "data-teasermanager-slot": "test-12"
69
- }, "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Molestias, obcaecati, unde! In labore nesciunt optio, possimus praesentium sunt temporibus vero."), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", {
70
- className: "border border-black p-4",
71
- "data-teasermanager-slot": "test-13"
72
- }, "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Commodi, rem, sapiente! At consequatur cum distinctio dolorem doloribus eligendi labore necessitatibus nemo officia, perspiciatis porro quisquam quos, saepe vitae voluptas. Eligendi?"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", {
73
- className: "border border-black p-4",
74
- "data-teasermanager-slot": "test-14"
75
- }, "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ad alias beatae doloribus ex, impedit labore maxime perspiciatis quas. Alias aspernatur cupiditate, error impedit ipsa libero obcaecati reprehenderit sit sunt veniam."), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", {
76
- className: "border border-black p-4",
77
- "data-teasermanager-slot": "test-15"
78
- }, "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Asperiores at consequatur cupiditate dolore, dolorem, eligendi et eum explicabo harum illum inventore maxime molestias porro quod recusandae, reiciendis repellat repudiandae saepe sint tempora tempore temporibus veniam voluptates. Dignissimos explicabo iusto reprehenderit."), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", {
79
- className: "border border-black p-4",
80
- "data-teasermanager-slot": "test-16"
81
- }, "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ad aperiam beatae consequatur consequuntur deserunt exercitationem fugit, magni necessitatibus pariatur quae quia, quisquam saepe sunt, tenetur!")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("h2", null, "Props"), !!mvp && mvp.length > 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("ul", null, mvp.map(function (m) {
82
- return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("li", {
83
- key: m.feld1
84
- }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("b", null, m.feld1), ":", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("span", null, m.feld2));
85
- })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", null, JSON.stringify(_objectSpread(_objectSpread({}, props), {}, {
86
- mvp: mvp,
87
- title: title
88
- }))));
89
- }
90
-
91
- /***/ })
92
-
93
- }]);
94
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX2Jhc2Vfc2xhdGUtZWRpdG9yX3NyY19kZXZfdGVzdENvbXBvbmVudHNfVGVzdFN0b3J5M19qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBZSxTQUFTQSxVQUFVQSxDQUFBQyxJQUFBLEVBSS9CO0VBQUEsSUFIQ0MsS0FBSyxHQUFBRCxJQUFBLENBQUxDLEtBQUs7SUFDTEMsR0FBRyxHQUFBRixJQUFBLENBQUhFLEdBQUc7SUFDQUMsS0FBSyxHQUFBQyxvSkFBQSxDQUFBSixJQUFBLEVBQUFLLFNBQUE7RUFFUixvQkFBT0MsMERBQUE7SUFBS0UsU0FBUyxFQUFDO0VBQWlELGdCQUNuRUYsMERBQUEsYUFBS0wsS0FBVSxDQUFDLGVBQ2hCSywwREFBQTtJQUFLRSxTQUFTLEVBQUM7RUFBa0IsZ0JBQzdCRiwwREFBQTtJQUFLRSxTQUFTLEVBQUMseUJBQXlCO0lBQUMsMkJBQXdCO0VBQVEsR0FBQyw0TUFFckUsQ0FBQyxlQUNORiwwREFBQTtJQUFLRSxTQUFTLEVBQUMseUJBQXlCO0lBQUMsMkJBQXdCO0VBQVEsR0FBQyw0SkFFckUsQ0FBQyxlQUNORiwwREFBQTtJQUFLRSxTQUFTLEVBQUMseUJBQXlCO0lBQUMsMkJBQXdCO0VBQVEsR0FBQyxrUEFFckUsQ0FBQyxlQUNORiwwREFBQTtJQUFLRSxTQUFTLEVBQUMseUJBQXlCO0lBQUMsMkJBQXdCO0VBQVEsR0FBQyxrT0FFckUsQ0FBQyxlQUNORiwwREFBQTtJQUFLRSxTQUFTLEVBQUMseUJBQXlCO0lBQUMsMkJBQXdCO0VBQVEsR0FBQyw2VUFFckUsQ0FBQyxlQUNORiwwREFBQTtJQUFLRSxTQUFTLEVBQUMseUJBQXlCO0lBQUMsMkJBQXdCO0VBQVEsR0FBQyw0TUFFckUsQ0FBQyxlQUNORiwwREFBQTtJQUFLRSxTQUFTLEVBQUMseUJBQXlCO0lBQUMsMkJBQXdCO0VBQVEsR0FBQyw0SkFFckUsQ0FBQyxlQUNORiwwREFBQTtJQUFLRSxTQUFTLEVBQUMseUJBQXlCO0lBQUMsMkJBQXdCO0VBQVEsR0FBQyxrUEFFckUsQ0FBQyxlQUNORiwwREFBQTtJQUFLRSxTQUFTLEVBQUMseUJBQXlCO0lBQUMsMkJBQXdCO0VBQVEsR0FBQyxrT0FFckUsQ0FBQyxlQUNORiwwREFBQTtJQUFLRSxTQUFTLEVBQUMseUJBQXlCO0lBQUMsMkJBQXdCO0VBQVMsR0FBQyw2VUFFdEUsQ0FBQyxlQUNORiwwREFBQTtJQUFLRSxTQUFTLEVBQUMseUJBQXlCO0lBQUMsMkJBQXdCO0VBQVMsR0FBQyw0TUFFdEUsQ0FBQyxlQUNORiwwREFBQTtJQUFLRSxTQUFTLEVBQUMseUJBQXlCO0lBQUMsMkJBQXdCO0VBQVMsR0FBQyw0SkFFdEUsQ0FBQyxlQUNORiwwREFBQTtJQUFLRSxTQUFTLEVBQUMseUJBQXlCO0lBQUMsMkJBQXdCO0VBQVMsR0FBQyxrUEFFdEUsQ0FBQyxlQUNORiwwREFBQTtJQUFLRSxTQUFTLEVBQUMseUJBQXlCO0lBQUMsMkJBQXdCO0VBQVMsR0FBQyxrT0FFdEUsQ0FBQyxlQUNORiwwREFBQTtJQUFLRSxTQUFTLEVBQUMseUJBQXlCO0lBQUMsMkJBQXdCO0VBQVMsR0FBQyw2VUFFdEUsQ0FBQyxlQUNORiwwREFBQTtJQUFLRSxTQUFTLEVBQUMseUJBQXlCO0lBQUMsMkJBQXdCO0VBQVMsR0FBQyw0TUFFdEUsQ0FDSixDQUFDLGVBQ05GLDBEQUFBLGFBQUksT0FBUyxDQUFDLEVBQ2IsQ0FBQyxDQUFDSixHQUFHLElBQUlBLEdBQUcsQ0FBQ08sTUFBTSxHQUFHLENBQUMsaUJBQ3BCSCwwREFBQSxhQUNLSixHQUFHLENBQUNRLEdBQUcsQ0FBQyxVQUFBQyxDQUFDO0lBQUEsb0JBQ05MLDBEQUFBO01BQUlNLEdBQUcsRUFBRUQsQ0FBQyxDQUFDRTtJQUFNLGdCQUNiUCwwREFBQSxZQUFJSyxDQUFDLENBQUNFLEtBQVMsQ0FBQyxLQUNoQixlQUFBUCwwREFBQSxlQUFPSyxDQUFDLENBQUNHLEtBQVksQ0FDckIsQ0FBQztFQUFBLENBQ1IsQ0FDRCxDQUNQLGVBQ0RSLDBEQUFBLGNBQU1TLElBQUksQ0FBQ0MsU0FBUyxDQUFBQyxhQUFBLENBQUFBLGFBQUEsS0FDYmQsS0FBSztJQUNSRCxHQUFHLEVBQUhBLEdBQUc7SUFDSEQsS0FBSyxFQUFMQTtFQUFLLEVBQ1IsQ0FBTyxDQUNQLENBQUM7QUFDViIsInNvdXJjZXMiOlsid2VicGFjazovL0B2b25hZmZlbmZlbHMvY29udGVudGZ1bC10ZWFzZXJtYW5hZ2VyLy4uLy4uL0BiYXNlL3NsYXRlLWVkaXRvci9zcmMvZGV2L3Rlc3RDb21wb25lbnRzL1Rlc3RTdG9yeTMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gVGVzdFN0b3J5Myh7XHJcbiAgICB0aXRsZSxcclxuICAgIG12cCxcclxuICAgIC4uLnByb3BzXHJcbn0pIHtcclxuICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cImJnLWdyZWVuIGZsZXggZmxleC1jb2wgc3BhY2UteS04IHAtNCB0ZXh0LWJsYWNrXCI+XHJcbiAgICAgICAgPGgxPnt0aXRsZX08L2gxPlxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtNFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJvcmRlciBib3JkZXItYmxhY2sgcC00XCIgZGF0YS10ZWFzZXJtYW5hZ2VyLXNsb3Q9XCJ0ZXN0LTFcIj5cclxuICAgICAgICAgICAgICAgIExvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNpY2luZyBlbGl0LiBBZCBhcGVyaWFtIGJlYXRhZSBjb25zZXF1YXR1ciBjb25zZXF1dW50dXIgZGVzZXJ1bnQgZXhlcmNpdGF0aW9uZW0gZnVnaXQsIG1hZ25pIG5lY2Vzc2l0YXRpYnVzIHBhcmlhdHVyIHF1YWUgcXVpYSwgcXVpc3F1YW0gc2FlcGUgc3VudCwgdGVuZXR1ciFcclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYm9yZGVyIGJvcmRlci1ibGFjayBwLTRcIiBkYXRhLXRlYXNlcm1hbmFnZXItc2xvdD1cInRlc3QtMlwiPlxyXG4gICAgICAgICAgICAgICAgTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2ljaW5nIGVsaXQuIE1vbGVzdGlhcywgb2JjYWVjYXRpLCB1bmRlISBJbiBsYWJvcmUgbmVzY2l1bnQgb3B0aW8sIHBvc3NpbXVzIHByYWVzZW50aXVtIHN1bnQgdGVtcG9yaWJ1cyB2ZXJvLlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJib3JkZXIgYm9yZGVyLWJsYWNrIHAtNFwiIGRhdGEtdGVhc2VybWFuYWdlci1zbG90PVwidGVzdC0zXCI+XHJcbiAgICAgICAgICAgICAgICBMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzaWNpbmcgZWxpdC4gQ29tbW9kaSwgcmVtLCBzYXBpZW50ZSEgQXQgY29uc2VxdWF0dXIgY3VtIGRpc3RpbmN0aW8gZG9sb3JlbSBkb2xvcmlidXMgZWxpZ2VuZGkgbGFib3JlIG5lY2Vzc2l0YXRpYnVzIG5lbW8gb2ZmaWNpYSwgcGVyc3BpY2lhdGlzIHBvcnJvIHF1aXNxdWFtIHF1b3MsIHNhZXBlIHZpdGFlIHZvbHVwdGFzLiBFbGlnZW5kaT9cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYm9yZGVyIGJvcmRlci1ibGFjayBwLTRcIiBkYXRhLXRlYXNlcm1hbmFnZXItc2xvdD1cInRlc3QtNFwiPlxyXG4gICAgICAgICAgICAgICAgTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2ljaW5nIGVsaXQuIEFkIGFsaWFzIGJlYXRhZSBkb2xvcmlidXMgZXgsIGltcGVkaXQgbGFib3JlIG1heGltZSBwZXJzcGljaWF0aXMgcXVhcy4gQWxpYXMgYXNwZXJuYXR1ciBjdXBpZGl0YXRlLCBlcnJvciBpbXBlZGl0IGlwc2EgbGliZXJvIG9iY2FlY2F0aSByZXByZWhlbmRlcml0IHNpdCBzdW50IHZlbmlhbS5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYm9yZGVyIGJvcmRlci1ibGFjayBwLTRcIiBkYXRhLXRlYXNlcm1hbmFnZXItc2xvdD1cInRlc3QtNVwiPlxyXG4gICAgICAgICAgICAgICAgTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2ljaW5nIGVsaXQuIEFzcGVyaW9yZXMgYXQgY29uc2VxdWF0dXIgY3VwaWRpdGF0ZSBkb2xvcmUsIGRvbG9yZW0sIGVsaWdlbmRpIGV0IGV1bSBleHBsaWNhYm8gaGFydW0gaWxsdW0gaW52ZW50b3JlIG1heGltZSBtb2xlc3RpYXMgcG9ycm8gcXVvZCByZWN1c2FuZGFlLCByZWljaWVuZGlzIHJlcGVsbGF0IHJlcHVkaWFuZGFlIHNhZXBlIHNpbnQgdGVtcG9yYSB0ZW1wb3JlIHRlbXBvcmlidXMgdmVuaWFtIHZvbHVwdGF0ZXMuIERpZ25pc3NpbW9zIGV4cGxpY2FibyBpdXN0byByZXByZWhlbmRlcml0LlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJib3JkZXIgYm9yZGVyLWJsYWNrIHAtNFwiIGRhdGEtdGVhc2VybWFuYWdlci1zbG90PVwidGVzdC02XCI+XHJcbiAgICAgICAgICAgICAgICBMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzaWNpbmcgZWxpdC4gQWQgYXBlcmlhbSBiZWF0YWUgY29uc2VxdWF0dXIgY29uc2VxdXVudHVyIGRlc2VydW50IGV4ZXJjaXRhdGlvbmVtIGZ1Z2l0LCBtYWduaSBuZWNlc3NpdGF0aWJ1cyBwYXJpYXR1ciBxdWFlIHF1aWEsIHF1aXNxdWFtIHNhZXBlIHN1bnQsIHRlbmV0dXIhXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJvcmRlciBib3JkZXItYmxhY2sgcC00XCIgZGF0YS10ZWFzZXJtYW5hZ2VyLXNsb3Q9XCJ0ZXN0LTdcIj5cclxuICAgICAgICAgICAgICAgIExvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNpY2luZyBlbGl0LiBNb2xlc3RpYXMsIG9iY2FlY2F0aSwgdW5kZSEgSW4gbGFib3JlIG5lc2NpdW50IG9wdGlvLCBwb3NzaW11cyBwcmFlc2VudGl1bSBzdW50IHRlbXBvcmlidXMgdmVyby5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYm9yZGVyIGJvcmRlci1ibGFjayBwLTRcIiBkYXRhLXRlYXNlcm1hbmFnZXItc2xvdD1cInRlc3QtOFwiPlxyXG4gICAgICAgICAgICAgICAgTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2ljaW5nIGVsaXQuIENvbW1vZGksIHJlbSwgc2FwaWVudGUhIEF0IGNvbnNlcXVhdHVyIGN1bSBkaXN0aW5jdGlvIGRvbG9yZW0gZG9sb3JpYnVzIGVsaWdlbmRpIGxhYm9yZSBuZWNlc3NpdGF0aWJ1cyBuZW1vIG9mZmljaWEsIHBlcnNwaWNpYXRpcyBwb3JybyBxdWlzcXVhbSBxdW9zLCBzYWVwZSB2aXRhZSB2b2x1cHRhcy4gRWxpZ2VuZGk/XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJvcmRlciBib3JkZXItYmxhY2sgcC00XCIgZGF0YS10ZWFzZXJtYW5hZ2VyLXNsb3Q9XCJ0ZXN0LTlcIj5cclxuICAgICAgICAgICAgICAgIExvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNpY2luZyBlbGl0LiBBZCBhbGlhcyBiZWF0YWUgZG9sb3JpYnVzIGV4LCBpbXBlZGl0IGxhYm9yZSBtYXhpbWUgcGVyc3BpY2lhdGlzIHF1YXMuIEFsaWFzIGFzcGVybmF0dXIgY3VwaWRpdGF0ZSwgZXJyb3IgaW1wZWRpdCBpcHNhIGxpYmVybyBvYmNhZWNhdGkgcmVwcmVoZW5kZXJpdCBzaXQgc3VudCB2ZW5pYW0uXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJvcmRlciBib3JkZXItYmxhY2sgcC00XCIgZGF0YS10ZWFzZXJtYW5hZ2VyLXNsb3Q9XCJ0ZXN0LTEwXCI+XHJcbiAgICAgICAgICAgICAgICBMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzaWNpbmcgZWxpdC4gQXNwZXJpb3JlcyBhdCBjb25zZXF1YXR1ciBjdXBpZGl0YXRlIGRvbG9yZSwgZG9sb3JlbSwgZWxpZ2VuZGkgZXQgZXVtIGV4cGxpY2FibyBoYXJ1bSBpbGx1bSBpbnZlbnRvcmUgbWF4aW1lIG1vbGVzdGlhcyBwb3JybyBxdW9kIHJlY3VzYW5kYWUsIHJlaWNpZW5kaXMgcmVwZWxsYXQgcmVwdWRpYW5kYWUgc2FlcGUgc2ludCB0ZW1wb3JhIHRlbXBvcmUgdGVtcG9yaWJ1cyB2ZW5pYW0gdm9sdXB0YXRlcy4gRGlnbmlzc2ltb3MgZXhwbGljYWJvIGl1c3RvIHJlcHJlaGVuZGVyaXQuXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJvcmRlciBib3JkZXItYmxhY2sgcC00XCIgZGF0YS10ZWFzZXJtYW5hZ2VyLXNsb3Q9XCJ0ZXN0LTExXCI+XHJcbiAgICAgICAgICAgICAgICBMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzaWNpbmcgZWxpdC4gQWQgYXBlcmlhbSBiZWF0YWUgY29uc2VxdWF0dXIgY29uc2VxdXVudHVyIGRlc2VydW50IGV4ZXJjaXRhdGlvbmVtIGZ1Z2l0LCBtYWduaSBuZWNlc3NpdGF0aWJ1cyBwYXJpYXR1ciBxdWFlIHF1aWEsIHF1aXNxdWFtIHNhZXBlIHN1bnQsIHRlbmV0dXIhXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJvcmRlciBib3JkZXItYmxhY2sgcC00XCIgZGF0YS10ZWFzZXJtYW5hZ2VyLXNsb3Q9XCJ0ZXN0LTEyXCI+XHJcbiAgICAgICAgICAgICAgICBMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzaWNpbmcgZWxpdC4gTW9sZXN0aWFzLCBvYmNhZWNhdGksIHVuZGUhIEluIGxhYm9yZSBuZXNjaXVudCBvcHRpbywgcG9zc2ltdXMgcHJhZXNlbnRpdW0gc3VudCB0ZW1wb3JpYnVzIHZlcm8uXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJvcmRlciBib3JkZXItYmxhY2sgcC00XCIgZGF0YS10ZWFzZXJtYW5hZ2VyLXNsb3Q9XCJ0ZXN0LTEzXCI+XHJcbiAgICAgICAgICAgICAgICBMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzaWNpbmcgZWxpdC4gQ29tbW9kaSwgcmVtLCBzYXBpZW50ZSEgQXQgY29uc2VxdWF0dXIgY3VtIGRpc3RpbmN0aW8gZG9sb3JlbSBkb2xvcmlidXMgZWxpZ2VuZGkgbGFib3JlIG5lY2Vzc2l0YXRpYnVzIG5lbW8gb2ZmaWNpYSwgcGVyc3BpY2lhdGlzIHBvcnJvIHF1aXNxdWFtIHF1b3MsIHNhZXBlIHZpdGFlIHZvbHVwdGFzLiBFbGlnZW5kaT9cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYm9yZGVyIGJvcmRlci1ibGFjayBwLTRcIiBkYXRhLXRlYXNlcm1hbmFnZXItc2xvdD1cInRlc3QtMTRcIj5cclxuICAgICAgICAgICAgICAgIExvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNpY2luZyBlbGl0LiBBZCBhbGlhcyBiZWF0YWUgZG9sb3JpYnVzIGV4LCBpbXBlZGl0IGxhYm9yZSBtYXhpbWUgcGVyc3BpY2lhdGlzIHF1YXMuIEFsaWFzIGFzcGVybmF0dXIgY3VwaWRpdGF0ZSwgZXJyb3IgaW1wZWRpdCBpcHNhIGxpYmVybyBvYmNhZWNhdGkgcmVwcmVoZW5kZXJpdCBzaXQgc3VudCB2ZW5pYW0uXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJvcmRlciBib3JkZXItYmxhY2sgcC00XCIgZGF0YS10ZWFzZXJtYW5hZ2VyLXNsb3Q9XCJ0ZXN0LTE1XCI+XHJcbiAgICAgICAgICAgICAgICBMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzaWNpbmcgZWxpdC4gQXNwZXJpb3JlcyBhdCBjb25zZXF1YXR1ciBjdXBpZGl0YXRlIGRvbG9yZSwgZG9sb3JlbSwgZWxpZ2VuZGkgZXQgZXVtIGV4cGxpY2FibyBoYXJ1bSBpbGx1bSBpbnZlbnRvcmUgbWF4aW1lIG1vbGVzdGlhcyBwb3JybyBxdW9kIHJlY3VzYW5kYWUsIHJlaWNpZW5kaXMgcmVwZWxsYXQgcmVwdWRpYW5kYWUgc2FlcGUgc2ludCB0ZW1wb3JhIHRlbXBvcmUgdGVtcG9yaWJ1cyB2ZW5pYW0gdm9sdXB0YXRlcy4gRGlnbmlzc2ltb3MgZXhwbGljYWJvIGl1c3RvIHJlcHJlaGVuZGVyaXQuXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJvcmRlciBib3JkZXItYmxhY2sgcC00XCIgZGF0YS10ZWFzZXJtYW5hZ2VyLXNsb3Q9XCJ0ZXN0LTE2XCI+XHJcbiAgICAgICAgICAgICAgICBMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzaWNpbmcgZWxpdC4gQWQgYXBlcmlhbSBiZWF0YWUgY29uc2VxdWF0dXIgY29uc2VxdXVudHVyIGRlc2VydW50IGV4ZXJjaXRhdGlvbmVtIGZ1Z2l0LCBtYWduaSBuZWNlc3NpdGF0aWJ1cyBwYXJpYXR1ciBxdWFlIHF1aWEsIHF1aXNxdWFtIHNhZXBlIHN1bnQsIHRlbmV0dXIhXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxoMj5Qcm9wczwvaDI+XHJcbiAgICAgICAgeyEhbXZwICYmIG12cC5sZW5ndGggPiAwICYmIChcclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAge212cC5tYXAobSA9PiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGtleT17bS5mZWxkMX0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxiPnttLmZlbGQxfTwvYj46XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnttLmZlbGQyfTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgKSl9XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgKX1cclxuICAgICAgICA8ZGl2PntKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgICAgICAgIC4uLnByb3BzLFxyXG4gICAgICAgICAgICBtdnAsXHJcbiAgICAgICAgICAgIHRpdGxlLFxyXG4gICAgICAgIH0pfTwvZGl2PlxyXG4gICAgPC9kaXY+O1xyXG59Il0sIm5hbWVzIjpbIlRlc3RTdG9yeTMiLCJfcmVmIiwidGl0bGUiLCJtdnAiLCJwcm9wcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsIlJlYWN0IiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsImxlbmd0aCIsIm1hcCIsIm0iLCJrZXkiLCJmZWxkMSIsImZlbGQyIiwiSlNPTiIsInN0cmluZ2lmeSIsIl9vYmplY3RTcHJlYWQiXSwic291cmNlUm9vdCI6IiJ9