@data-client/test
Version:
Testing utilities for Data Client
102 lines (101 loc) • 12.8 kB
JavaScript
/**
* Provides an abstraction over react 17 and 18 compatible libraries
*/
import { ErrorBoundary } from '@data-client/react';
import { Suspense } from 'react';
import { act, waitFor, renderHook } from "./render18Hook.native.js";
import { jsx as _jsx } from "react/jsx-runtime";
export { act };
export function render18Wrapper(render, options) {
var _SetUndefined;
let renderProps = options?.initialProps;
let error;
const setError = e => {
error = e;
};
let resetErrorBoundary = () => {};
const ErrorFallback = ({
error,
resetErrorBoundary: reset
}) => {
resetErrorBoundary = () => {
resetErrorBoundary = () => {};
setTimeout(reset, 0);
};
setError(error);
return null;
};
let resultUndefined = false;
const setResultUndefined = () => {
resultUndefined = true;
};
const SetUndefined = () => {
setResultUndefined();
return null;
};
const WithErrorWrap = props => {
resetErrorBoundary();
resultUndefined = false;
return /*#__PURE__*/_jsx(Suspense, {
fallback: _SetUndefined || (_SetUndefined = /*#__PURE__*/_jsx(SetUndefined, {})),
children: /*#__PURE__*/_jsx(ErrorBoundary, {
fallbackComponent: ErrorFallback,
children: props.children
})
});
};
// TODO: add error and waitforupdate
const Wrapper = options?.wrapper;
const wrapper = Wrapper ? function ProviderWrapped(props) {
return /*#__PURE__*/_jsx(Wrapper, {
...renderProps,
...props,
children: /*#__PURE__*/_jsx(WithErrorWrap, {
children: props.children
})
});
} : WithErrorWrap;
const render18Result = renderHook(render, {
...options,
wrapper
});
const ret = Object.create(render18Result, {
result: {
value: {
get current() {
return render18Result.result.current === null ? undefined : render18Result.result.current;
},
get error() {
return error;
}
}
},
rerender: {
value: props => {
renderProps = props;
render18Result.rerender(props);
}
},
waitFor: {
value: waitFor
},
waitForNextUpdate: {
value: async options => {
const previousCurrent = ret.result.current;
const isMockTimers = typeof jest !== 'undefined' && setTimeout.clock != null && typeof setTimeout.clock.Date === 'function';
if (isMockTimers) {
jest.runOnlyPendingTimers();
jest.useRealTimers();
}
await waitFor(() => {
if (!error && ret.result.current === previousCurrent) {
throw new Error('timeout in waitForNextUpdate');
}
}, options);
if (isMockTimers) jest.useFakeTimers();
}
}
});
return ret;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFcnJvckJvdW5kYXJ5IiwiU3VzcGVuc2UiLCJhY3QiLCJ3YWl0Rm9yIiwicmVuZGVySG9vayIsImpzeCIsIl9qc3giLCJyZW5kZXIxOFdyYXBwZXIiLCJyZW5kZXIiLCJvcHRpb25zIiwiX1NldFVuZGVmaW5lZCIsInJlbmRlclByb3BzIiwiaW5pdGlhbFByb3BzIiwiZXJyb3IiLCJzZXRFcnJvciIsImUiLCJyZXNldEVycm9yQm91bmRhcnkiLCJFcnJvckZhbGxiYWNrIiwicmVzZXQiLCJzZXRUaW1lb3V0IiwicmVzdWx0VW5kZWZpbmVkIiwic2V0UmVzdWx0VW5kZWZpbmVkIiwiU2V0VW5kZWZpbmVkIiwiV2l0aEVycm9yV3JhcCIsInByb3BzIiwiZmFsbGJhY2siLCJjaGlsZHJlbiIsImZhbGxiYWNrQ29tcG9uZW50IiwiV3JhcHBlciIsIndyYXBwZXIiLCJQcm92aWRlcldyYXBwZWQiLCJyZW5kZXIxOFJlc3VsdCIsInJldCIsIk9iamVjdCIsImNyZWF0ZSIsInJlc3VsdCIsInZhbHVlIiwiY3VycmVudCIsInVuZGVmaW5lZCIsInJlcmVuZGVyIiwid2FpdEZvck5leHRVcGRhdGUiLCJwcmV2aW91c0N1cnJlbnQiLCJpc01vY2tUaW1lcnMiLCJqZXN0IiwiY2xvY2siLCJEYXRlIiwicnVuT25seVBlbmRpbmdUaW1lcnMiLCJ1c2VSZWFsVGltZXJzIiwiRXJyb3IiLCJ1c2VGYWtlVGltZXJzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL21ha2VSZW5kZXJEYXRhQ2xpZW50L3JlbmRlcjE4SG9va1dyYXBwZWQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUHJvdmlkZXMgYW4gYWJzdHJhY3Rpb24gb3ZlciByZWFjdCAxNyBhbmQgMTggY29tcGF0aWJsZSBsaWJyYXJpZXNcbiAqL1xuaW1wb3J0IHsgRXJyb3JCb3VuZGFyeSB9IGZyb20gJ0BkYXRhLWNsaWVudC9yZWFjdCc7XG5pbXBvcnQgdHlwZSB7IFF1ZXJpZXMsIHdhaXRGb3JPcHRpb25zIH0gZnJvbSAnQHRlc3RpbmctbGlicmFyeS9yZWFjdCc7XG5pbXBvcnQgeyBTdXNwZW5zZSB9IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHsgYWN0LCB3YWl0Rm9yLCByZW5kZXJIb29rLCBSZW5kZXJIb29rT3B0aW9ucyB9IGZyb20gJy4vcmVuZGVyMThIb29rLmpzJztcblxuZXhwb3J0IHsgYWN0IH07XG5cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXIxOFdyYXBwZXI8XG4gIFJlc3VsdCxcbiAgUHJvcHMsXG4gIFEgZXh0ZW5kcyBRdWVyaWVzID0gUXVlcmllcyxcbiAgQ29udGFpbmVyIGV4dGVuZHMgRWxlbWVudCB8IERvY3VtZW50RnJhZ21lbnQgPSBIVE1MRWxlbWVudCxcbiAgQmFzZUVsZW1lbnQgZXh0ZW5kcyBFbGVtZW50IHwgRG9jdW1lbnRGcmFnbWVudCA9IENvbnRhaW5lcixcbj4oXG4gIHJlbmRlcjogKGluaXRpYWxQcm9wczogUHJvcHMpID0+IFJlc3VsdCxcbiAgb3B0aW9ucz86IFJlbmRlckhvb2tPcHRpb25zPFByb3BzLCBRLCBDb250YWluZXIsIEJhc2VFbGVtZW50Pixcbik6IFJlbmRlckhvb2tSZXN1bHQ8UmVzdWx0LCBQcm9wcz4ge1xuICBsZXQgcmVuZGVyUHJvcHM6IGFueSA9IG9wdGlvbnM/LmluaXRpYWxQcm9wcztcbiAgbGV0IGVycm9yOiBhbnk7XG4gIGNvbnN0IHNldEVycm9yID0gKGU6IGFueSkgPT4ge1xuICAgIGVycm9yID0gZTtcbiAgfTtcbiAgbGV0IHJlc2V0RXJyb3JCb3VuZGFyeSA9ICgpID0+IHt9O1xuICBjb25zdCBFcnJvckZhbGxiYWNrID0gKHsgZXJyb3IsIHJlc2V0RXJyb3JCb3VuZGFyeTogcmVzZXQgfTogYW55KSA9PiB7XG4gICAgcmVzZXRFcnJvckJvdW5kYXJ5ID0gKCkgPT4ge1xuICAgICAgcmVzZXRFcnJvckJvdW5kYXJ5ID0gKCkgPT4ge307XG4gICAgICBzZXRUaW1lb3V0KHJlc2V0LCAwKTtcbiAgICB9O1xuICAgIHNldEVycm9yKGVycm9yKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcblxuICBsZXQgcmVzdWx0VW5kZWZpbmVkID0gZmFsc2U7XG4gIGNvbnN0IHNldFJlc3VsdFVuZGVmaW5lZCA9ICgpID0+IHtcbiAgICByZXN1bHRVbmRlZmluZWQgPSB0cnVlO1xuICB9O1xuICBjb25zdCBTZXRVbmRlZmluZWQgPSAoKSA9PiB7XG4gICAgc2V0UmVzdWx0VW5kZWZpbmVkKCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG5cbiAgY29uc3QgV2l0aEVycm9yV3JhcCA9IChwcm9wczogYW55KSA9PiB7XG4gICAgcmVzZXRFcnJvckJvdW5kYXJ5KCk7XG4gICAgcmVzdWx0VW5kZWZpbmVkID0gZmFsc2U7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFN1c3BlbnNlIGZhbGxiYWNrPXs8U2V0VW5kZWZpbmVkIC8+fT5cbiAgICAgICAgPEVycm9yQm91bmRhcnkgZmFsbGJhY2tDb21wb25lbnQ9e0Vycm9yRmFsbGJhY2t9PlxuICAgICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgPC9FcnJvckJvdW5kYXJ5PlxuICAgICAgPC9TdXNwZW5zZT5cbiAgICApO1xuICB9O1xuXG4gIC8vIFRPRE86IGFkZCBlcnJvciBhbmQgd2FpdGZvcnVwZGF0ZVxuICBjb25zdCBXcmFwcGVyID0gb3B0aW9ucz8ud3JhcHBlcjtcbiAgY29uc3Qgd3JhcHBlcjogUmVhY3QuQ29tcG9uZW50VHlwZTxhbnk+ID1cbiAgICBXcmFwcGVyID9cbiAgICAgIGZ1bmN0aW9uIFByb3ZpZGVyV3JhcHBlZChwcm9wczogUmVhY3QuUHJvcHNXaXRoQ2hpbGRyZW48YW55Pikge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxXcmFwcGVyIHsuLi5yZW5kZXJQcm9wc30gey4uLnByb3BzfT5cbiAgICAgICAgICAgIDxXaXRoRXJyb3JXcmFwPntwcm9wcy5jaGlsZHJlbn08L1dpdGhFcnJvcldyYXA+XG4gICAgICAgICAgPC9XcmFwcGVyPlxuICAgICAgICApO1xuICAgICAgfVxuICAgIDogV2l0aEVycm9yV3JhcDtcblxuICBjb25zdCByZW5kZXIxOFJlc3VsdCA9IHJlbmRlckhvb2socmVuZGVyLCB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICB3cmFwcGVyLFxuICB9KTtcbiAgY29uc3QgcmV0OiBSZW5kZXJIb29rUmVzdWx0PFJlc3VsdCwgUHJvcHM+ID0gT2JqZWN0LmNyZWF0ZShyZW5kZXIxOFJlc3VsdCwge1xuICAgIHJlc3VsdDoge1xuICAgICAgdmFsdWU6IHtcbiAgICAgICAgZ2V0IGN1cnJlbnQoKTogYW55IHtcbiAgICAgICAgICByZXR1cm4gcmVuZGVyMThSZXN1bHQucmVzdWx0LmN1cnJlbnQgPT09IG51bGwgP1xuICAgICAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgICAgIDogcmVuZGVyMThSZXN1bHQucmVzdWx0LmN1cnJlbnQ7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBlcnJvcigpIHtcbiAgICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gICAgcmVyZW5kZXI6IHtcbiAgICAgIHZhbHVlOiAocHJvcHM/OiBhbnkpID0+IHtcbiAgICAgICAgcmVuZGVyUHJvcHMgPSBwcm9wcztcbiAgICAgICAgcmVuZGVyMThSZXN1bHQucmVyZW5kZXIocHJvcHMpO1xuICAgICAgfSxcbiAgICB9LFxuICAgIHdhaXRGb3I6IHtcbiAgICAgIHZhbHVlOiB3YWl0Rm9yLFxuICAgIH0sXG4gICAgd2FpdEZvck5leHRVcGRhdGU6IHtcbiAgICAgIHZhbHVlOiBhc3luYyAob3B0aW9ucz86IHdhaXRGb3JPcHRpb25zKSA9PiB7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzQ3VycmVudCA9IHJldC5yZXN1bHQuY3VycmVudDtcbiAgICAgICAgY29uc3QgaXNNb2NrVGltZXJzID1cbiAgICAgICAgICB0eXBlb2YgamVzdCAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgICAoc2V0VGltZW91dCBhcyBhbnkpLmNsb2NrICE9IG51bGwgJiZcbiAgICAgICAgICB0eXBlb2YgKHNldFRpbWVvdXQgYXMgYW55KS5jbG9jay5EYXRlID09PSAnZnVuY3Rpb24nO1xuICAgICAgICBpZiAoaXNNb2NrVGltZXJzKSB7XG4gICAgICAgICAgamVzdC5ydW5Pbmx5UGVuZGluZ1RpbWVycygpO1xuICAgICAgICAgIGplc3QudXNlUmVhbFRpbWVycygpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHdhaXRGb3IoKCkgPT4ge1xuICAgICAgICAgIGlmICghZXJyb3IgJiYgcmV0LnJlc3VsdC5jdXJyZW50ID09PSBwcmV2aW91c0N1cnJlbnQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigndGltZW91dCBpbiB3YWl0Rm9yTmV4dFVwZGF0ZScpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgb3B0aW9ucyk7XG4gICAgICAgIGlmIChpc01vY2tUaW1lcnMpIGplc3QudXNlRmFrZVRpbWVycygpO1xuICAgICAgfSxcbiAgICB9LFxuICB9KTtcblxuICByZXR1cm4gcmV0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlbmRlckhvb2tSZXN1bHQ8UmVzdWx0LCBQcm9wcz4ge1xuICAvKipcbiAgICogVHJpZ2dlcnMgYSByZS1yZW5kZXIuIFRoZSBwcm9wcyB3aWxsIGJlIHBhc3NlZCB0byB5b3VyIHJlbmRlckhvb2sgY2FsbGJhY2suXG4gICAqL1xuICByZXJlbmRlcjogKHByb3BzPzogUHJvcHMpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBUaGlzIGlzIGEgc3RhYmxlIHJlZmVyZW5jZSB0byB0aGUgbGF0ZXN0IHZhbHVlIHJldHVybmVkIGJ5IHlvdXIgcmVuZGVySG9va1xuICAgKiBjYWxsYmFja1xuICAgKi9cbiAgcmVzdWx0OiB7XG4gICAgLyoqXG4gICAgICogVGhlIHZhbHVlIHJldHVybmVkIGJ5IHlvdXIgcmVuZGVySG9vayBjYWxsYmFja1xuICAgICAqL1xuICAgIGN1cnJlbnQ6IFJlc3VsdDtcbiAgICBlcnJvcj86IEVycm9yO1xuICB9O1xuICAvKipcbiAgICogVW5tb3VudHMgdGhlIHRlc3QgY29tcG9uZW50LiBUaGlzIGlzIHVzZWZ1bCBmb3Igd2hlbiB5b3UgbmVlZCB0byB0ZXN0XG4gICAqIGFueSBjbGVhbnVwIHlvdXIgdXNlRWZmZWN0cyBoYXZlLlxuICAgKi9cbiAgdW5tb3VudDogKCkgPT4gdm9pZDtcbiAgLyogQGRlcHJlY2F0ZWQgdXNlIHdhaXRGb3IgKi9cbiAgd2FpdEZvck5leHRVcGRhdGU6IChvcHRpb25zPzogd2FpdEZvck9wdGlvbnMpID0+IFByb21pc2U8dm9pZD47XG4gIHdhaXRGb3I8VD4oXG4gICAgY2FsbGJhY2s6ICgpID0+IFByb21pc2U8VD4gfCBULFxuICAgIG9wdGlvbnM/OiB3YWl0Rm9yT3B0aW9ucyxcbiAgKTogUHJvbWlzZTxUPjtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsYUFBYSxRQUFRLG9CQUFvQjtBQUVsRCxTQUFTQyxRQUFRLFFBQVEsT0FBTztBQUVoQyxTQUFTQyxHQUFHLEVBQUVDLE9BQU8sRUFBRUMsVUFBVTtBQUErQyxTQUFBQyxHQUFBLElBQUFDLElBQUE7QUFFaEYsU0FBU0osR0FBRztBQUVaLE9BQU8sU0FBU0ssZUFBZUEsQ0FPN0JDLE1BQXVDLEVBQ3ZDQyxPQUE2RCxFQUM1QjtFQUFBLElBQUFDLGFBQUE7RUFDakMsSUFBSUMsV0FBZ0IsR0FBR0YsT0FBTyxFQUFFRyxZQUFZO0VBQzVDLElBQUlDLEtBQVU7RUFDZCxNQUFNQyxRQUFRLEdBQUlDLENBQU0sSUFBSztJQUMzQkYsS0FBSyxHQUFHRSxDQUFDO0VBQ1gsQ0FBQztFQUNELElBQUlDLGtCQUFrQixHQUFHQSxDQUFBLEtBQU0sQ0FBQyxDQUFDO0VBQ2pDLE1BQU1DLGFBQWEsR0FBR0EsQ0FBQztJQUFFSixLQUFLO0lBQUVHLGtCQUFrQixFQUFFRTtFQUFXLENBQUMsS0FBSztJQUNuRUYsa0JBQWtCLEdBQUdBLENBQUEsS0FBTTtNQUN6QkEsa0JBQWtCLEdBQUdBLENBQUEsS0FBTSxDQUFDLENBQUM7TUFDN0JHLFVBQVUsQ0FBQ0QsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBQ0RKLFFBQVEsQ0FBQ0QsS0FBSyxDQUFDO0lBQ2YsT0FBTyxJQUFJO0VBQ2IsQ0FBQztFQUVELElBQUlPLGVBQWUsR0FBRyxLQUFLO0VBQzNCLE1BQU1DLGtCQUFrQixHQUFHQSxDQUFBLEtBQU07SUFDL0JELGVBQWUsR0FBRyxJQUFJO0VBQ3hCLENBQUM7RUFDRCxNQUFNRSxZQUFZLEdBQUdBLENBQUEsS0FBTTtJQUN6QkQsa0JBQWtCLENBQUMsQ0FBQztJQUNwQixPQUFPLElBQUk7RUFDYixDQUFDO0VBRUQsTUFBTUUsYUFBYSxHQUFJQyxLQUFVLElBQUs7SUFDcENSLGtCQUFrQixDQUFDLENBQUM7SUFDcEJJLGVBQWUsR0FBRyxLQUFLO0lBRXZCLG9CQUNFZCxJQUFBLENBQUNMLFFBQVE7TUFBQ3dCLFFBQVEsRUFBQWYsYUFBQSxLQUFBQSxhQUFBLGdCQUFFSixJQUFBLENBQUNnQixZQUFZLElBQUUsQ0FBQyxDQUFDO01BQUFJLFFBQUEsZUFDbkNwQixJQUFBLENBQUNOLGFBQWE7UUFBQzJCLGlCQUFpQixFQUFFVixhQUFjO1FBQUFTLFFBQUEsRUFDN0NGLEtBQUssQ0FBQ0U7TUFBUSxDQUNGO0lBQUMsQ0FDUixDQUFDO0VBRWYsQ0FBQzs7RUFFRDtFQUNBLE1BQU1FLE9BQU8sR0FBR25CLE9BQU8sRUFBRW9CLE9BQU87RUFDaEMsTUFBTUEsT0FBaUMsR0FDckNELE9BQU8sR0FDTCxTQUFTRSxlQUFlQSxDQUFDTixLQUFtQyxFQUFFO0lBQzVELG9CQUNFbEIsSUFBQSxDQUFDc0IsT0FBTztNQUFBLEdBQUtqQixXQUFXO01BQUEsR0FBTWEsS0FBSztNQUFBRSxRQUFBLGVBQ2pDcEIsSUFBQSxDQUFDaUIsYUFBYTtRQUFBRyxRQUFBLEVBQUVGLEtBQUssQ0FBQ0U7TUFBUSxDQUFnQjtJQUFDLENBQ3hDLENBQUM7RUFFZCxDQUFDLEdBQ0RILGFBQWE7RUFFakIsTUFBTVEsY0FBYyxHQUFHM0IsVUFBVSxDQUFDSSxNQUFNLEVBQUU7SUFDeEMsR0FBR0MsT0FBTztJQUNWb0I7RUFDRixDQUFDLENBQUM7RUFDRixNQUFNRyxHQUFvQyxHQUFHQyxNQUFNLENBQUNDLE1BQU0sQ0FBQ0gsY0FBYyxFQUFFO0lBQ3pFSSxNQUFNLEVBQUU7TUFDTkMsS0FBSyxFQUFFO1FBQ0wsSUFBSUMsT0FBT0EsQ0FBQSxFQUFRO1VBQ2pCLE9BQU9OLGNBQWMsQ0FBQ0ksTUFBTSxDQUFDRSxPQUFPLEtBQUssSUFBSSxHQUN6Q0MsU0FBUyxHQUNUUCxjQUFjLENBQUNJLE1BQU0sQ0FBQ0UsT0FBTztRQUNuQyxDQUFDO1FBQ0QsSUFBSXhCLEtBQUtBLENBQUEsRUFBRztVQUNWLE9BQU9BLEtBQUs7UUFDZDtNQUNGO0lBQ0YsQ0FBQztJQUNEMEIsUUFBUSxFQUFFO01BQ1JILEtBQUssRUFBR1osS0FBVyxJQUFLO1FBQ3RCYixXQUFXLEdBQUdhLEtBQUs7UUFDbkJPLGNBQWMsQ0FBQ1EsUUFBUSxDQUFDZixLQUFLLENBQUM7TUFDaEM7SUFDRixDQUFDO0lBQ0RyQixPQUFPLEVBQUU7TUFDUGlDLEtBQUssRUFBRWpDO0lBQ1QsQ0FBQztJQUNEcUMsaUJBQWlCLEVBQUU7TUFDakJKLEtBQUssRUFBRSxNQUFPM0IsT0FBd0IsSUFBSztRQUN6QyxNQUFNZ0MsZUFBZSxHQUFHVCxHQUFHLENBQUNHLE1BQU0sQ0FBQ0UsT0FBTztRQUMxQyxNQUFNSyxZQUFZLEdBQ2hCLE9BQU9DLElBQUksS0FBSyxXQUFXLElBQzFCeEIsVUFBVSxDQUFTeUIsS0FBSyxJQUFJLElBQUksSUFDakMsT0FBUXpCLFVBQVUsQ0FBU3lCLEtBQUssQ0FBQ0MsSUFBSSxLQUFLLFVBQVU7UUFDdEQsSUFBSUgsWUFBWSxFQUFFO1VBQ2hCQyxJQUFJLENBQUNHLG9CQUFvQixDQUFDLENBQUM7VUFDM0JILElBQUksQ0FBQ0ksYUFBYSxDQUFDLENBQUM7UUFDdEI7UUFDQSxNQUFNNUMsT0FBTyxDQUFDLE1BQU07VUFDbEIsSUFBSSxDQUFDVSxLQUFLLElBQUltQixHQUFHLENBQUNHLE1BQU0sQ0FBQ0UsT0FBTyxLQUFLSSxlQUFlLEVBQUU7WUFDcEQsTUFBTSxJQUFJTyxLQUFLLENBQUMsOEJBQThCLENBQUM7VUFDakQ7UUFDRixDQUFDLEVBQUV2QyxPQUFPLENBQUM7UUFDWCxJQUFJaUMsWUFBWSxFQUFFQyxJQUFJLENBQUNNLGFBQWEsQ0FBQyxDQUFDO01BQ3hDO0lBQ0Y7RUFDRixDQUFDLENBQUM7RUFFRixPQUFPakIsR0FBRztBQUNaIiwiaWdub3JlTGlzdCI6W119