@1money/react-ui 1.10.0 → 1.11.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/AGENTS.md +34 -0
- package/es/components/Copy/Copy.d.ts +5 -0
- package/es/components/Copy/Copy.js +53 -0
- package/es/components/Copy/index.d.ts +4 -0
- package/es/components/Copy/index.js +5 -0
- package/es/components/Copy/interface.d.ts +8 -0
- package/es/components/Copy/interface.js +2 -0
- package/es/components/Copy/style/Copy.css +1 -0
- package/es/components/Copy/style/Copy.scss +20 -0
- package/es/components/Copy/style/css.js +2 -0
- package/es/components/Copy/style/index.d.ts +1 -0
- package/es/components/Copy/style/index.js +2 -0
- package/es/components/InputAmount/InputAmount.js +56 -16
- package/es/components/InputAmount/interface.d.ts +1 -0
- package/es/index.css +1 -1
- package/es/index.d.ts +2 -0
- package/es/index.js +4 -1
- package/lib/components/Copy/Copy.d.ts +5 -0
- package/lib/components/Copy/Copy.js +59 -0
- package/lib/components/Copy/index.d.ts +4 -0
- package/lib/components/Copy/index.js +33 -0
- package/lib/components/Copy/interface.d.ts +8 -0
- package/lib/components/Copy/interface.js +6 -0
- package/lib/components/Copy/style/Copy.css +1 -0
- package/lib/components/Copy/style/Copy.scss +20 -0
- package/lib/components/Copy/style/css.js +4 -0
- package/lib/components/Copy/style/index.d.ts +1 -0
- package/lib/components/Copy/style/index.js +4 -0
- package/lib/components/InputAmount/InputAmount.js +56 -16
- package/lib/components/InputAmount/interface.d.ts +1 -0
- package/lib/index.css +1 -1
- package/lib/index.d.ts +2 -0
- package/lib/index.js +9 -1
- package/package.json +6 -1
package/AGENTS.md
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Repository Guidelines
|
|
2
|
+
|
|
3
|
+
## Project Structure & Module Organization
|
|
4
|
+
- `src/` contains the TypeScript source; reusable widgets live in `src/components/*`, each with colocated props, styles, and tests.
|
|
5
|
+
- Component tests sit in `src/components/*/__test__/index.test.tsx`, with Jest snapshots tracked under `__snapshots__`.
|
|
6
|
+
- Storybook examples and playground stories reside in `src/stories/`; shared tokens and themes live in `src/variable.scss`.
|
|
7
|
+
- Build artifacts are written to `es/` (ESM) and `lib/` (CJS) by the Omni pipeline—never edit these outputs directly.
|
|
8
|
+
- Static assets originate from `public/`, while configuration (babel, tailwind, eslint, stylelint) is at the repo root.
|
|
9
|
+
|
|
10
|
+
## Build, Test, and Development Commands
|
|
11
|
+
- `pnpm install` boots the workspace and applies local `patches/`.
|
|
12
|
+
- `pnpm dev` (alias `pnpm start`) runs `omni dev` with hot reloading for component previews.
|
|
13
|
+
- `pnpm build` runs `omni build`, compiling TypeScript, styles, and type declarations into `es/` and `lib/`.
|
|
14
|
+
- `pnpm run build:demo` produces Storybook docs in `dist-story/` for documentation or visual review handoff.
|
|
15
|
+
- `pnpm test` executes the Jest suite with Testing Library; append `:snapshot` to refresh approved snapshots.
|
|
16
|
+
- `pnpm lint` chains Prettier, ESLint, and Stylelint checks; use `pnpm run lint:fix` before committing to auto-resolve issues.
|
|
17
|
+
|
|
18
|
+
## Coding Style & Naming Conventions
|
|
19
|
+
- Prettier enforces 2-space indentation, 50-character print width, single quotes, and no trailing commas; run `pnpm lint:prettier_fix` after edits.
|
|
20
|
+
- Follow ESLint rules in `eslint.config.js`; components and stories use PascalCase filenames, hooks/utilities use camelCase.
|
|
21
|
+
- Style files (`.scss`, `.less`, `.css`) follow kebab-case names and Stylelint ordering; colocate styles with their component folder.
|
|
22
|
+
- Export public components through `src/index.ts`, keeping barrel exports alphabetized and tree-shake friendly.
|
|
23
|
+
|
|
24
|
+
## Testing Guidelines
|
|
25
|
+
- Write unit tests with Jest + `@testing-library/react`; prefer user-centric queries (`screen.getByRole`).
|
|
26
|
+
- Place new specs within the component’s `__test__` folder; mock browser APIs via `setupTests.js` when needed.
|
|
27
|
+
- Maintain existing snapshots; regenerate with `pnpm run test:snapshot` and explain diffs in PRs.
|
|
28
|
+
- Cover new states, accessibility flows, and edge cases; async interactions should await `screen.findBy...`.
|
|
29
|
+
|
|
30
|
+
## Commit & Pull Request Guidelines
|
|
31
|
+
- Commit messages must satisfy commitlint, using allowed types like `fix:`, `feat:`, `update:`, or scoped tags (`[OMNI-DOOR]`), plus optional issue refs `(#211)`.
|
|
32
|
+
- Keep commits focused and run `pnpm lint` and `pnpm test` locally before pushing to prevent CI regressions.
|
|
33
|
+
- Pull requests require a concise summary, linked issues, and screenshots or Storybook URLs for visual changes.
|
|
34
|
+
- Request at least one reviewer; mark PRs as draft until checks pass and documentation is updated.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
4
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
5
|
+
import { memo, useRef, useState, useEffect } from 'react';
|
|
6
|
+
import classnames from '../../utils/classnames';
|
|
7
|
+
import Icons from '../Icons';
|
|
8
|
+
import clipboard from '../../utils/clipboard';
|
|
9
|
+
export var Copy = function Copy(props) {
|
|
10
|
+
var value = props.value,
|
|
11
|
+
_props$iconSize = props.iconSize,
|
|
12
|
+
iconSize = _props$iconSize === void 0 ? 32 : _props$iconSize,
|
|
13
|
+
className = props.className,
|
|
14
|
+
_props$prefixCls = props.prefixCls,
|
|
15
|
+
prefixCls = _props$prefixCls === void 0 ? 'copy' : _props$prefixCls,
|
|
16
|
+
onSuccess = props.onSuccess,
|
|
17
|
+
onError = props.onError;
|
|
18
|
+
var classes = classnames(prefixCls);
|
|
19
|
+
var _useState = useState(false),
|
|
20
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
21
|
+
copied = _useState2[0],
|
|
22
|
+
setCopied = _useState2[1];
|
|
23
|
+
var timerRef = useRef(null);
|
|
24
|
+
useEffect(function () {
|
|
25
|
+
return function () {
|
|
26
|
+
if (timerRef.current) clearTimeout(timerRef.current);
|
|
27
|
+
};
|
|
28
|
+
}, []);
|
|
29
|
+
return _jsx(Icons, {
|
|
30
|
+
name: copied ? 'check' : 'copy',
|
|
31
|
+
size: iconSize,
|
|
32
|
+
wrapperCls: classes(void 0, [copied && classes('success'), className].filter(Boolean).join(' ')),
|
|
33
|
+
onClick: function onClick(e) {
|
|
34
|
+
e.stopPropagation();
|
|
35
|
+
e.preventDefault();
|
|
36
|
+
if (!value || copied) return;
|
|
37
|
+
clipboard(value, function (succeeded) {
|
|
38
|
+
if (succeeded) {
|
|
39
|
+
setCopied(true);
|
|
40
|
+
if (timerRef.current) clearTimeout(timerRef.current);
|
|
41
|
+
timerRef.current = setTimeout(function () {
|
|
42
|
+
return setCopied(false);
|
|
43
|
+
}, 1500);
|
|
44
|
+
onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(value);
|
|
45
|
+
} else {
|
|
46
|
+
onError === null || onError === void 0 ? void 0 : onError(value);
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
};
|
|
52
|
+
export default /*#__PURE__*/memo(Copy);
|
|
53
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvQ29weS9Db3B5LnRzeCIsImNvbXBvbmVudHMvQ29weS9Db3B5LmpzIl0sIm5hbWVzIjpbIl9zbGljZWRUb0FycmF5IiwianN4IiwiX2pzeCIsIm1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsImNsYXNzbmFtZXMiLCJJY29ucyIsImNsaXBib2FyZCIsIkNvcHkiLCJwcm9wcyIsInZhbHVlIiwiX3Byb3BzJGljb25TaXplIiwiaWNvblNpemUiLCJjbGFzc05hbWUiLCJfcHJvcHMkcHJlZml4Q2xzIiwicHJlZml4Q2xzIiwib25TdWNjZXNzIiwib25FcnJvciIsImNsYXNzZXMiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiY29waWVkIiwic2V0Q29waWVkIiwidGltZXJSZWYiLCJjdXJyZW50IiwiY2xlYXJUaW1lb3V0IiwibmFtZSIsInNpemUiLCJ3cmFwcGVyQ2xzIiwiZmlsdGVyIiwiQm9vbGVhbiIsImpvaW4iLCJvbkNsaWNrIiwiZSIsInN0b3BQcm9wYWdhdGlvbiIsInByZXZlbnREZWZhdWx0Iiwic3VjY2VlZGVkIiwic2V0VGltZW91dCJdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTs7QUFBQyxPQUFBQSxjQUFBO0FDQ2IsU0FBU0MsR0FBRyxJQUFJQyxJQUFJLFFBQVEsbUJBQW1CO0FEQy9DLFNBQVNDLElBQUksRUFBRUMsTUFBTSxFQUFFQyxRQUFRLEVBQUVDLFNBQVMsUUFBUSxPQUFPO0FBQ3pELE9BQU9DLFVBQVUsTUFBTSx3QkFBd0I7QUFDL0MsT0FBT0MsS0FBSyxNQUFNLFVBQVU7QUFDNUIsT0FBT0MsU0FBUyxNQUFNLHVCQUF1QjtBQUs3QyxPQUFPLElBQU1DLElBQUksR0FBa0IsU0FBdEJBLElBQUlBLENBQWtCQyxLQUFLLEVBQUc7RUFDekMsSUFBUUMsS0FBSyxHQUF1RUQsS0FBSyxDQUFqRkMsS0FBSztJQUFBQyxlQUFBLEdBQXVFRixLQUFLLENBQTFFRyxRQUFRO0lBQVJBLFFBQVEsR0FBQUQsZUFBQSxjQUFHLEVBQUUsR0FBQUEsZUFBQTtJQUFFRSxTQUFTLEdBQTZDSixLQUFLLENBQTNESSxTQUFTO0lBQUFDLGdCQUFBLEdBQTZDTCxLQUFLLENBQWhETSxTQUFTO0lBQVRBLFNBQVMsR0FBQUQsZ0JBQUEsY0FBRyxNQUFNLEdBQUFBLGdCQUFBO0lBQUVFLFNBQVMsR0FBY1AsS0FBSyxDQUE1Qk8sU0FBUztJQUFFQyxPQUFPLEdBQUtSLEtBQUssQ0FBakJRLE9BQU87RUFDL0UsSUFBTUMsT0FBTyxHQUFHYixVQUFVLENBQUNVLFNBQVMsQ0FBQztFQUVyQyxJQUFBSSxTQUFBLEdBQTRCaEIsUUFBUSxDQUFDLEtBQUssQ0FBQztJQUFBaUIsVUFBQSxHQUFBdEIsY0FBQSxDQUFBcUIsU0FBQTtJQUFwQ0UsTUFBTSxHQUFBRCxVQUFBO0lBQUVFLFNBQVMsR0FBQUYsVUFBQTtFQUV4QixJQUFNRyxRQUFRLEdBQUdyQixNQUFNLENBQXVDLElBQUksQ0FBQztFQUVuRUUsU0FBUyxDQUFDLFlBQUs7SUFDYixPQUFPLFlBQUs7TUFDVixJQUFJbUIsUUFBUSxDQUFDQyxPQUFPLEVBQUVDLFlBQVksQ0FBQ0YsUUFBUSxDQUFDQyxPQUFPLENBQUM7SUFDdEQsQ0FBQztFQUNILENBQUMsRUFBRSxFQUFFLENBQUM7RUFFTixPQUFPeEIsSUFBQSxDQUFDTSxLQUFLLEVBQUE7SUFDWG9CLElBQUksRUFBRUwsTUFBTSxHQUFHLE9BQU8sR0FBRyxNQUFNO0lBQy9CTSxJQUFJLEVBQUVmLFFBQVE7SUFDZGdCLFVBQVUsRUFBRVYsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQzFCRyxNQUFNLElBQUlILE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFDNUJMLFNBQVMsQ0FDVixDQUFDZ0IsTUFBTSxDQUFDQyxPQUFPLENBQUMsQ0FBQ0MsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVCQyxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBR0MsQ0FBQyxFQUFJO01BQ2JBLENBQUMsQ0FBQ0MsZUFBZSxDQUFBLENBQUU7TUFDbkJELENBQUMsQ0FBQ0UsY0FBYyxDQUFBLENBQUU7TUFDbEIsSUFBSSxDQUFDekIsS0FBSyxJQUFJVyxNQUFNLEVBQUU7TUFDdEJkLFNBQVMsQ0FDUEcsS0FBSyxFQUNMLFVBQUMwQixTQUFrQixFQUFJO1FBQ3JCLElBQUlBLFNBQVMsRUFBRTtVQUNiZCxTQUFTLENBQUMsSUFBSSxDQUFDO1VBQ2YsSUFBSUMsUUFBUSxDQUFDQyxPQUFPLEVBQUVDLFlBQVksQ0FBQ0YsUUFBUSxDQUFDQyxPQUFPLENBQUM7VUFDcERELFFBQVEsQ0FBQ0MsT0FBTyxHQUFHYSxVQUFVLENBQUM7WUFBQSxPQUFNZixTQUFTLENBQUMsS0FBSyxDQUFDO1VBQUEsR0FBRSxJQUFJLENBQUM7VUFDM0ROLFNBQVMsS0FBQSxJQUFBLElBQVRBLFNBQVMsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBVEEsU0FBUyxDQUFHTixLQUFLLENBQUM7UUFDcEIsQ0FBQyxNQUFNO1VBQ0xPLE9BQU8sS0FBQSxJQUFBLElBQVBBLE9BQU8sS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBUEEsT0FBTyxDQUFHUCxLQUFLLENBQUM7UUFDbEI7TUFDRixDQUFDLENBQ0Y7SUFDSDtFQUFDLENBQUEsQ0FDRDtBQUNKLENBQUM7QUFFRCw0QkFBZVQsSUFBSSxDQUFDTyxJQUFJLENBQUMiLCJmaWxlIjoiY29tcG9uZW50cy9Db3B5L0NvcHkuanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBtZW1vLCB1c2VSZWYsIHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICcuLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCBJY29ucyBmcm9tICcuLi9JY29ucyc7XG5pbXBvcnQgY2xpcGJvYXJkIGZyb20gJy4uLy4uL3V0aWxzL2NsaXBib2FyZCc7XG5leHBvcnQgY29uc3QgQ29weSA9IHByb3BzID0+IHtcbiAgICBjb25zdCB7IHZhbHVlLCBpY29uU2l6ZSA9IDMyLCBjbGFzc05hbWUsIHByZWZpeENscyA9ICdjb3B5Jywgb25TdWNjZXNzLCBvbkVycm9yIH0gPSBwcm9wcztcbiAgICBjb25zdCBjbGFzc2VzID0gY2xhc3NuYW1lcyhwcmVmaXhDbHMpO1xuICAgIGNvbnN0IFtjb3BpZWQsIHNldENvcGllZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgdGltZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aW1lclJlZi5jdXJyZW50KVxuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lclJlZi5jdXJyZW50KTtcbiAgICAgICAgfTtcbiAgICB9LCBbXSk7XG4gICAgcmV0dXJuIF9qc3goSWNvbnMsIHsgbmFtZTogY29waWVkID8gJ2NoZWNrJyA6ICdjb3B5Jywgc2l6ZTogaWNvblNpemUsIHdyYXBwZXJDbHM6IGNsYXNzZXModm9pZCAwLCBbXG4gICAgICAgICAgICBjb3BpZWQgJiYgY2xhc3Nlcygnc3VjY2VzcycpLFxuICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICBdLmZpbHRlcihCb29sZWFuKS5qb2luKCcgJykpLCBvbkNsaWNrOiAoZSkgPT4ge1xuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGlmICghdmFsdWUgfHwgY29waWVkKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGNsaXBib2FyZCh2YWx1ZSwgKHN1Y2NlZWRlZCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzdWNjZWVkZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0Q29waWVkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGltZXJSZWYuY3VycmVudClcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lclJlZi5jdXJyZW50KTtcbiAgICAgICAgICAgICAgICAgICAgdGltZXJSZWYuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4gc2V0Q29waWVkKGZhbHNlKSwgMTUwMCk7XG4gICAgICAgICAgICAgICAgICAgIG9uU3VjY2VzcyA9PT0gbnVsbCB8fCBvblN1Y2Nlc3MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uU3VjY2Vzcyh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBvbkVycm9yID09PSBudWxsIHx8IG9uRXJyb3IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRXJyb3IodmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IH0pO1xufTtcbmV4cG9ydCBkZWZhdWx0IG1lbW8oQ29weSk7Il0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import Copy from './Copy';
|
|
2
|
+
export { Copy } from './Copy';
|
|
3
|
+
export default Copy;
|
|
4
|
+
export * from './interface';
|
|
5
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvQ29weS9pbmRleC50cyJdLCJuYW1lcyI6WyJDb3B5Il0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxJQUFJLE1BQU0sUUFBUTtBQUV6QixTQUFTQSxJQUFJLFFBQVEsUUFBUTtBQUU3QixlQUFlQSxJQUFJO0FBRW5CLGNBQWMsYUFBYSIsImZpbGUiOiJjb21wb25lbnRzL0NvcHkvaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6W251bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy9Db3B5L2ludGVyZmFjZS5qcyIsIm5hbWVzIjpbXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9Db3B5L2ludGVyZmFjZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge307Il0sIm1hcHBpbmdzIjoiQUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.om-react-ui-copy{flex-shrink:0;padding:8px;background-color:#f0f0f0;border-radius:12px;cursor:pointer}.om-react-ui-copy:not(.om-react-ui-copy-success):hover{background-color:#e3e4e4}.om-react-ui-copy-success{background-color:rgba(31,88,0,.2)}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
@use '../../../variable.scss'as *;
|
|
2
|
+
|
|
3
|
+
$component: 'copy';
|
|
4
|
+
$cls: #{$prefix}-#{$component};
|
|
5
|
+
|
|
6
|
+
.#{$cls} {
|
|
7
|
+
flex-shrink: 0;
|
|
8
|
+
padding: 8px;
|
|
9
|
+
background-color: $color-grey;
|
|
10
|
+
border-radius: 12px;
|
|
11
|
+
cursor: pointer;
|
|
12
|
+
|
|
13
|
+
&:not(&-success):hover {
|
|
14
|
+
background-color: $color-grey-deep;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
&-success {
|
|
18
|
+
background-color: $color-success-background;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import './Copy.css';
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvQ29weS9zcmMvY29tcG9uZW50cy9Db3B5L3N0eWxlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sYUFBYSIsImZpbGUiOiJjb21wb25lbnRzL0NvcHkvc3R5bGUvY3NzLmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import './Copy.scss';
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import './Copy.scss';
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvQ29weS9zcmMvY29tcG9uZW50cy9Db3B5L3N0eWxlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sYUFBYSIsImZpbGUiOiJjb21wb25lbnRzL0NvcHkvc3R5bGUvaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6W251bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
@@ -26,6 +26,7 @@ export var InputAmount = function InputAmount(props) {
|
|
|
26
26
|
invalid = props.invalid,
|
|
27
27
|
_props$placeholder = props.placeholder,
|
|
28
28
|
placeholder = _props$placeholder === void 0 ? '0' : _props$placeholder,
|
|
29
|
+
negative = props.negative,
|
|
29
30
|
prefix = props.prefix,
|
|
30
31
|
currency = props.currency,
|
|
31
32
|
suffix = props.suffix,
|
|
@@ -34,7 +35,7 @@ export var InputAmount = function InputAmount(props) {
|
|
|
34
35
|
onChange = props.onChange,
|
|
35
36
|
_onBlur = props.onBlur,
|
|
36
37
|
_onFocus = props.onFocus,
|
|
37
|
-
rest = __rest(props, ["value", "maxFractionDigits", "children", "className", "wrapperCls", "prefixCls", "messageCls", "footnoteCls", "invalid", "placeholder", "prefix", "currency", "suffix", "message", "footnote", "onChange", "onBlur", "onFocus"]);
|
|
38
|
+
rest = __rest(props, ["value", "maxFractionDigits", "children", "className", "wrapperCls", "prefixCls", "messageCls", "footnoteCls", "invalid", "placeholder", "negative", "prefix", "currency", "suffix", "message", "footnote", "onChange", "onBlur", "onFocus"]);
|
|
38
39
|
var classes = classnames(prefixCls);
|
|
39
40
|
var inputRef = useRef(null);
|
|
40
41
|
var fakeEleRef = useRef(null);
|
|
@@ -62,9 +63,9 @@ export var InputAmount = function InputAmount(props) {
|
|
|
62
63
|
var formattedValue = useMemo(function () {
|
|
63
64
|
return numericFormatter('' + (_value == null ? '' : _value), {
|
|
64
65
|
thousandSeparator: true,
|
|
65
|
-
allowNegative:
|
|
66
|
+
allowNegative: negative
|
|
66
67
|
});
|
|
67
|
-
}, [_value]);
|
|
68
|
+
}, [_value, negative]);
|
|
68
69
|
var scrollToEnd = useCallback(function () {
|
|
69
70
|
var sticky = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
70
71
|
var _a;
|
|
@@ -82,9 +83,11 @@ export var InputAmount = function InputAmount(props) {
|
|
|
82
83
|
var _a, _b, _c, _d, _e;
|
|
83
84
|
var val = e.target.value;
|
|
84
85
|
if (val != null) val = val.split(',').join('');
|
|
85
|
-
var hasDecimalPoint = val.
|
|
86
|
+
var hasDecimalPoint = !!val && val.endsWith('.');
|
|
86
87
|
if (hasDecimalPoint) val = val.slice(0, -1);
|
|
87
|
-
if (
|
|
88
|
+
if (!negative && (val === null || val === void 0 ? void 0 : val.includes('-'))) return;
|
|
89
|
+
var isStandaloneMinus = negative && val === '-';
|
|
90
|
+
if (!isStandaloneMinus && isNaN(+val)) return;
|
|
88
91
|
if (val === _value && !hasDecimalPoint) return;
|
|
89
92
|
if (typeof maxFractionDigits === 'number' || typeof maxFractionDigits === 'bigint') {
|
|
90
93
|
var _val$split = val.split('.'),
|
|
@@ -95,7 +98,7 @@ export var InputAmount = function InputAmount(props) {
|
|
|
95
98
|
if (inputRef.current) {
|
|
96
99
|
var formattedNewVal = numericFormatter(val, {
|
|
97
100
|
thousandSeparator: true,
|
|
98
|
-
allowNegative:
|
|
101
|
+
allowNegative: negative
|
|
99
102
|
});
|
|
100
103
|
var isAdd = val.length > ((_a = _value === null || _value === void 0 ? void 0 : _value.length) !== null && _a !== void 0 ? _a : 0);
|
|
101
104
|
var position = (_b = inputRef.current.selectionStart) !== null && _b !== void 0 ? _b : 0;
|
|
@@ -115,13 +118,20 @@ export var InputAmount = function InputAmount(props) {
|
|
|
115
118
|
if (typeof value === 'undefined') {
|
|
116
119
|
if (val === '') {
|
|
117
120
|
setValue(null);
|
|
121
|
+
} else if (isStandaloneMinus) {
|
|
122
|
+
setValue('-');
|
|
118
123
|
} else {
|
|
119
124
|
var decimals = (_e = (_d = (_c = val.match(/\.(\d+)$/)) === null || _c === void 0 ? void 0 : _c[1]) === null || _d === void 0 ? void 0 : _d.length) !== null && _e !== void 0 ? _e : 0;
|
|
120
|
-
|
|
125
|
+
var bn = BigNumber(val);
|
|
126
|
+
var normalized = bn.toFixed(decimals);
|
|
127
|
+
if (negative && val.trim().startsWith('-') && bn.isZero()) {
|
|
128
|
+
normalized = normalized.startsWith('-') ? normalized : "-".concat(normalized);
|
|
129
|
+
}
|
|
130
|
+
setValue("".concat(normalized).concat(hasDecimalPoint ? '.' : '').trim());
|
|
121
131
|
}
|
|
122
132
|
}
|
|
123
133
|
onChange === null || onChange === void 0 ? void 0 : onChange(e);
|
|
124
|
-
}, [onChange, _value, value, formattedValue, maxFractionDigits]);
|
|
134
|
+
}, [onChange, _value, value, formattedValue, maxFractionDigits, negative]);
|
|
125
135
|
useEffect(function () {
|
|
126
136
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
127
137
|
var containerWidth = (_b = (_a = containerRef.current) === null || _a === void 0 ? void 0 : _a.offsetWidth) !== null && _b !== void 0 ? _b : MIN_INPUT_WIDTH;
|
|
@@ -134,8 +144,19 @@ export var InputAmount = function InputAmount(props) {
|
|
|
134
144
|
var isMax = fakeWidth >= maxWidth;
|
|
135
145
|
setWidth(Math.min(maxWidth, Math.max(fakeWidth, MIN_INPUT_WIDTH)));
|
|
136
146
|
setIsMaxWidth(isMax);
|
|
137
|
-
scrollToEnd(true);
|
|
138
|
-
}, [_value]);
|
|
147
|
+
if (isFocus) scrollToEnd(true);
|
|
148
|
+
}, [_value, prefix, suffix, currency, isFocus]);
|
|
149
|
+
useEffect(function () {
|
|
150
|
+
// clear negative sign if not allowed
|
|
151
|
+
if (negative) return;
|
|
152
|
+
if (typeof value !== 'undefined') return;
|
|
153
|
+
if (_value == null) return;
|
|
154
|
+
if (_value === '-') {
|
|
155
|
+
setValue(null);
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
if (_value.startsWith('-')) setValue(_value.slice(1));
|
|
159
|
+
}, [negative, value, _value]);
|
|
139
160
|
useEffect(function () {
|
|
140
161
|
var _a, _b, _c;
|
|
141
162
|
var val = value;
|
|
@@ -145,11 +166,24 @@ export var InputAmount = function InputAmount(props) {
|
|
|
145
166
|
val = null;
|
|
146
167
|
} else {
|
|
147
168
|
val = val.split(',').join('');
|
|
148
|
-
hasDecimalPoint = val.
|
|
169
|
+
hasDecimalPoint = !!val && val.endsWith('.');
|
|
149
170
|
if (hasDecimalPoint) val = val.slice(0, -1);
|
|
171
|
+
if (!negative) val = val.replace(/-/g, '');
|
|
172
|
+
if (negative && val === '-') {
|
|
173
|
+
setValue('-');
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
150
176
|
if (isNaN(+val)) return;
|
|
151
177
|
}
|
|
152
178
|
} else if (val !== null && typeof val !== 'number' && typeof val !== 'bigint') return;
|
|
179
|
+
if (!negative) {
|
|
180
|
+
if (typeof val === 'number') {
|
|
181
|
+
val = Math.abs(val);
|
|
182
|
+
} else if (typeof val === 'bigint') {
|
|
183
|
+
var zero = BigInt(0);
|
|
184
|
+
val = val < zero ? -val : val;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
153
187
|
if ((typeof val === 'string' || typeof val === 'number') && (typeof maxFractionDigits === 'number' || typeof maxFractionDigits === 'bigint')) {
|
|
154
188
|
var _split = ('' + val).split('.'),
|
|
155
189
|
_split2 = _slicedToArray(_split, 2),
|
|
@@ -162,10 +196,16 @@ export var InputAmount = function InputAmount(props) {
|
|
|
162
196
|
if (val === '' || val == null) {
|
|
163
197
|
setValue(null);
|
|
164
198
|
} else {
|
|
165
|
-
var
|
|
166
|
-
|
|
199
|
+
var strVal = '' + val;
|
|
200
|
+
var decimals = (_c = (_b = (_a = strVal.match(/\.(\d+)$/)) === null || _a === void 0 ? void 0 : _a[1]) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0;
|
|
201
|
+
var bn = BigNumber(strVal);
|
|
202
|
+
var normalized = bn.toFixed(decimals);
|
|
203
|
+
if (negative && strVal.trim().startsWith('-') && bn.isZero()) {
|
|
204
|
+
normalized = normalized.startsWith('-') ? normalized : "-".concat(normalized);
|
|
205
|
+
}
|
|
206
|
+
setValue("".concat(normalized).concat(hasDecimalPoint ? '.' : '').trim());
|
|
167
207
|
}
|
|
168
|
-
}, [value, maxFractionDigits]);
|
|
208
|
+
}, [value, maxFractionDigits, negative]);
|
|
169
209
|
return _jsxs("div", {
|
|
170
210
|
className: classes('wrapper', [wrapperCls, invalid ? classes('invalid') : undefined].join(' ').trim()),
|
|
171
211
|
children: [_jsxs("div", {
|
|
@@ -216,7 +256,7 @@ export var InputAmount = function InputAmount(props) {
|
|
|
216
256
|
},
|
|
217
257
|
children: numericFormatter('' + (_value == null ? '' : _value), {
|
|
218
258
|
thousandSeparator: true,
|
|
219
|
-
allowNegative:
|
|
259
|
+
allowNegative: negative
|
|
220
260
|
})
|
|
221
261
|
})]
|
|
222
262
|
}), (message || footnote) && _jsxs("div", {
|
|
@@ -232,4 +272,4 @@ export var InputAmount = function InputAmount(props) {
|
|
|
232
272
|
});
|
|
233
273
|
};
|
|
234
274
|
export default /*#__PURE__*/memo(InputAmount);
|
|
235
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvSW5wdXRBbW91bnQvSW5wdXRBbW91bnQuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL0lucHV0QW1vdW50L0lucHV0QW1vdW50LnRzeCJdLCJuYW1lcyI6WyJfX3Jlc3QiLCJzIiwiZSIsInQiLCJwIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImkiLCJsZW5ndGgiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJtZW1vIiwidXNlTWVtbyIsInVzZVN0YXRlIiwidXNlQ2FsbGJhY2siLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJCaWdOdW1iZXIiLCJudW1lcmljRm9ybWF0dGVyIiwiY2xhc3NuYW1lcyIsIk1JTl9JTlBVVF9XSURUSCIsIklucHV0QW1vdW50IiwicHJvcHMiLCJ2YWx1ZSIsIm1heEZyYWN0aW9uRGlnaXRzIiwiY2hpbGRyZW4iLCJjbGFzc05hbWUiLCJ3cmFwcGVyQ2xzIiwiX3Byb3BzJHByZWZpeENscyIsInByZWZpeENscyIsIm1lc3NhZ2VDbHMiLCJmb290bm90ZUNscyIsImludmFsaWQiLCJfcHJvcHMkcGxhY2Vob2xkZXIiLCJwbGFjZWhvbGRlciIsInByZWZpeCIsImN1cnJlbmN5Iiwic3VmZml4IiwibWVzc2FnZSIsImZvb3Rub3RlIiwib25DaGFuZ2UiLCJvbkJsdXIiLCJvbkZvY3VzIiwicmVzdCIsImNsYXNzZXMiLCJpbnB1dFJlZiIsImZha2VFbGVSZWYiLCJwcmVmaXhSZWYiLCJzdWZmaXhSZWYiLCJjdXJyZW5jeVJlZiIsImNvbnRhaW5lclJlZiIsImlucHV0Q2FyZXRQb3NpdGlvblJlZiIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsIl92YWx1ZSIsInNldFZhbHVlIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJfd2lkdGgiLCJzZXRXaWR0aCIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwiaXNNYXhXaWR0aCIsInNldElzTWF4V2lkdGgiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsImlzRm9jdXMiLCJzZXRJc0ZvY3VzIiwiZm9ybWF0dGVkVmFsdWUiLCJ0aG91c2FuZFNlcGFyYXRvciIsImFsbG93TmVnYXRpdmUiLCJzY3JvbGxUb0VuZCIsInN0aWNreSIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsIl9hIiwiaW5wdXQiLCJjdXJyZW50IiwibGVuIiwicG9zaXRpb24iLCJzY3JvbGxMZWZ0Iiwic2hvdWxkVG9FbmQiLCJzdGFydCIsInNldFNlbGVjdGlvblJhbmdlIiwic2Nyb2xsV2lkdGgiLCJmb2N1cyIsImhhbmRsZUNoYW5nZSIsIl9iIiwiX2MiLCJfZCIsIl9lIiwidmFsIiwidGFyZ2V0Iiwic3BsaXQiLCJqb2luIiwiaGFzRGVjaW1hbFBvaW50IiwibGFzdEluZGV4T2YiLCJzbGljZSIsImlzTmFOIiwiX3ZhbCRzcGxpdCIsIl92YWwkc3BsaXQyIiwiZGVjaW1hbCIsIk51bWJlciIsImZvcm1hdHRlZE5ld1ZhbCIsImlzQWRkIiwic2VsZWN0aW9uU3RhcnQiLCJvbGRQb3NWYWwiLCJwb3NWYWwiLCJyZWR1Y2UiLCJhY2MiLCJjaGFyIiwiaW5kIiwicHVzaCIsImRlY2ltYWxzIiwibWF0Y2giLCJjb25jYXQiLCJ0b0ZpeGVkIiwidHJpbSIsIl9mIiwiX2ciLCJfaCIsIl9qIiwiX2siLCJjb250YWluZXJXaWR0aCIsIm9mZnNldFdpZHRoIiwicHJlZml4V2lkdGgiLCJzdWZmaXhXaWR0aCIsImN1cnJlbmN5V2lkdGgiLCJmYWtlV2lkdGgiLCJnYXBXaWR0aCIsIm1heFdpZHRoIiwiaXNNYXgiLCJNYXRoIiwibWluIiwibWF4IiwiX3NwbGl0IiwiX3NwbGl0MiIsImludCIsInJlZiIsIm9uQ2xpY2siLCJIVE1MSW5wdXRFbGVtZW50IiwiYXNzaWduIiwic3R5bGUiLCJzdG9wUHJvcGFnYXRpb24iXSwi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M0U7RUFBQSxDQUFBLENBRUo7QUFDUixDQUFDO0FBRUQsNEJBQWU1QixJQUFJLENBQUNVLFdBQVcsQ0FBQyIsImZpbGUiOiJjb21wb25lbnRzL0lucHV0QW1vdW50L0lucHV0QW1vdW50LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IG1lbW8sIHVzZU1lbW8sIHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyBudW1lcmljRm9ybWF0dGVyIH0gZnJvbSAncmVhY3QtbnVtYmVyLWZvcm1hdCc7XG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICcuLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmNvbnN0IE1JTl9JTlBVVF9XSURUSCA9IDMzO1xuZXhwb3J0IGNvbnN0IElucHV0QW1vdW50ID0gcHJvcHMgPT4ge1xuICAgIGNvbnN0IHsgdmFsdWUsIG1heEZyYWN0aW9uRGlnaXRzLCBjaGlsZHJlbiwgY2xhc3NOYW1lLCB3cmFwcGVyQ2xzLCBwcmVmaXhDbHMgPSAnaW5wdXQtYW1vdW50JywgbWVzc2FnZUNscywgZm9vdG5vdGVDbHMsIGludmFsaWQsIHBsYWNlaG9sZGVyID0gJzAnLCBwcmVmaXgsIGN1cnJlbmN5LCBzdWZmaXgsIG1lc3NhZ2UsIGZvb3Rub3RlLCBvbkNoYW5nZSwgb25CbHVyLCBvbkZvY3VzIH0gPSBwcm9wcywgcmVzdCA9IF9fcmVzdChwcm9wcywgW1widmFsdWVcIiwgXCJtYXhGcmFjdGlvbkRpZ2l0c1wiLCBcImNoaWxkcmVuXCIsIFwiY2xhc3NOYW1lXCIsIFwid3JhcHBlckNsc1wiLCBcInByZWZpeENsc1wiLCBcIm1lc3NhZ2VDbHNcIiwgXCJmb290bm90ZUNsc1wiLCBcImludmFsaWRcIiwgXCJwbGFjZWhvbGRlclwiLCBcInByZWZpeFwiLCBcImN1cnJlbmN5XCIsIFwic3VmZml4XCIsIFwibWVzc2FnZVwiLCBcImZvb3Rub3RlXCIsIFwib25DaGFuZ2VcIiwgXCJvbkJsdXJcIiwgXCJvbkZvY3VzXCJdKTtcbiAgICBjb25zdCBjbGFzc2VzID0gY2xhc3NuYW1lcyhwcmVmaXhDbHMpO1xuICAgIGNvbnN0IGlucHV0UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGZha2VFbGVSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgcHJlZml4UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHN1ZmZpeFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjdXJyZW5jeVJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb250YWluZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgaW5wdXRDYXJldFBvc2l0aW9uUmVmID0gdXNlUmVmKDApO1xuICAgIGNvbnN0IFtfdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtfd2lkdGgsIHNldFdpZHRoXSA9IHVzZVN0YXRlKE1JTl9JTlBVVF9XSURUSCk7XG4gICAgY29uc3QgW2lzTWF4V2lkdGgsIHNldElzTWF4V2lkdGhdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtpc0ZvY3VzLCBzZXRJc0ZvY3VzXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBmb3JtYXR0ZWRWYWx1ZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICByZXR1cm4gbnVtZXJpY0Zvcm1hdHRlcignJyArIChfdmFsdWUgPT0gbnVsbCA/ICcnIDogX3ZhbHVlKSwge1xuICAgICAgICAgICAgdGhvdXNhbmRTZXBhcmF0b3I6IHRydWUsXG4gICAgICAgICAgICBhbGxvd05lZ2F0aXZlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICB9LCBbX3ZhbHVlXSk7XG4gICAgY29uc3Qgc2Nyb2xsVG9FbmQgPSB1c2VDYWxsYmFjaygoc3RpY2t5ID0gZmFsc2UpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBpbnB1dCA9IGlucHV0UmVmLmN1cnJlbnQ7XG4gICAgICAgIGlmICghaW5wdXQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IGxlbiA9IChfYSA9IGlucHV0LnZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoO1xuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IGlucHV0LnNjcm9sbExlZnQ7XG4gICAgICAgIGNvbnN0IHNob3VsZFRvRW5kID0gIXN0aWNreTtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBzaG91bGRUb0VuZCA/IGxlbiA6IGlucHV0Q2FyZXRQb3NpdGlvblJlZi5jdXJyZW50O1xuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZShzdGFydCwgc3RhcnQpO1xuICAgICAgICBpbnB1dC5zY3JvbGxMZWZ0ID0gc2hvdWxkVG9FbmQgPyBpbnB1dC5zY3JvbGxXaWR0aCA6IHBvc2l0aW9uO1xuICAgICAgICBpbnB1dC5mb2N1cygpO1xuICAgIH0sIFtdKTtcbiAgICBjb25zdCBoYW5kbGVDaGFuZ2UgPSB1c2VDYWxsYmFjaygoZSkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lO1xuICAgICAgICBsZXQgdmFsID0gZS50YXJnZXQudmFsdWU7XG4gICAgICAgIGlmICh2YWwgIT0gbnVsbClcbiAgICAgICAgICAgIHZhbCA9IHZhbC5zcGxpdCgnLCcpLmpvaW4oJycpO1xuICAgICAgICBjb25zdCBoYXNEZWNpbWFsUG9pbnQgPSB2YWwubGFzdEluZGV4T2YoJy4nKSA9PT0gdmFsLmxlbmd0aCAtIDE7XG4gICAgICAgIGlmIChoYXNEZWNpbWFsUG9pbnQpXG4gICAgICAgICAgICB2YWwgPSB2YWwuc2xpY2UoMCwgLTEpO1xuICAgICAgICBpZiAoaXNOYU4oK3ZhbCkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICh2YWwgPT09IF92YWx1ZSAmJiAhaGFzRGVjaW1hbFBvaW50KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAodHlwZW9mIG1heEZyYWN0aW9uRGlnaXRzID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgbWF4RnJhY3Rpb25EaWdpdHMgPT09ICdiaWdpbnQnKSB7XG4gICAgICAgICAgICBjb25zdCBbLCBkZWNpbWFsXSA9IHZhbC5zcGxpdCgnLicpO1xuICAgICAgICAgICAgaWYgKGRlY2ltYWwgIT0gbnVsbCAmJiBkZWNpbWFsLmxlbmd0aCA+IE51bWJlcihtYXhGcmFjdGlvbkRpZ2l0cykpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbnB1dFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWROZXdWYWwgPSBudW1lcmljRm9ybWF0dGVyKHZhbCwge1xuICAgICAgICAgICAgICAgIHRob3VzYW5kU2VwYXJhdG9yOiB0cnVlLFxuICAgICAgICAgICAgICAgIGFsbG93TmVnYXRpdmU6IHRydWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IGlzQWRkID0gdmFsLmxlbmd0aCA+ICgoX2EgPSBfdmFsdWUgPT09IG51bGwgfHwgX3ZhbHVlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdmFsdWUubGVuZ3RoKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAwKTtcbiAgICAgICAgICAgIGxldCBwb3NpdGlvbiA9IChfYiA9IGlucHV0UmVmLmN1cnJlbnQuc2VsZWN0aW9uU3RhcnQpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IDA7XG4gICAgICAgICAgICBjb25zdCBvbGRQb3NWYWwgPSBmb3JtYXR0ZWRWYWx1ZS5zbGljZSgwLCAocG9zaXRpb24gLSAoaXNBZGQgPyAxIDogLTEpKSk7XG4gICAgICAgICAgICBwb3NpdGlvbiA9IG9sZFBvc1ZhbC5zcGxpdCgnLCcpLmpvaW4oJycpLmxlbmd0aCArIChpc0FkZCA/IDEgOiAtMSk7XG4gICAgICAgICAgICBjb25zdCBwb3NWYWwgPSB2YWwuc2xpY2UoMCwgcG9zaXRpb24pO1xuICAgICAgICAgICAgZm9ybWF0dGVkTmV3VmFsLnNwbGl0KCcnKS5yZWR1Y2UoKGFjYywgY2hhciwgaW5kKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGNoYXIgPT09ICcsJylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGFjYy5wdXNoKGNoYXIpO1xuICAgICAgICAgICAgICAgIGlmIChhY2Muam9pbignJykgPT09IHBvc1ZhbCkge1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IGluZCArIDE7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgICAgICBpbnB1dENhcmV0UG9zaXRpb25SZWYuY3VycmVudCA9IHBvc2l0aW9uICsgKGhhc0RlY2ltYWxQb2ludCA/IDIgOiAwKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgaWYgKHZhbCA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICBzZXRWYWx1ZShudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlY2ltYWxzID0gKF9lID0gKF9kID0gKF9jID0gdmFsLm1hdGNoKC9cXC4oXFxkKykkLykpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfY1sxXSkgPT09IG51bGwgfHwgX2QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kLmxlbmd0aCkgIT09IG51bGwgJiYgX2UgIT09IHZvaWQgMCA/IF9lIDogMDtcbiAgICAgICAgICAgICAgICBzZXRWYWx1ZShgJHtCaWdOdW1iZXIodmFsKS50b0ZpeGVkKGRlY2ltYWxzKX0ke2hhc0RlY2ltYWxQb2ludCA/ICcuJyA6ICcnfWAudHJpbSgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBvbkNoYW5nZSA9PT0gbnVsbCB8fCBvbkNoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DaGFuZ2UoZSk7XG4gICAgfSwgW29uQ2hhbmdlLCBfdmFsdWUsIHZhbHVlLCBmb3JtYXR0ZWRWYWx1ZSwgbWF4RnJhY3Rpb25EaWdpdHNdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lLCBfZiwgX2csIF9oLCBfaiwgX2s7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gKF9iID0gKF9hID0gY29udGFpbmVyUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5vZmZzZXRXaWR0aCkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogTUlOX0lOUFVUX1dJRFRIO1xuICAgICAgICBjb25zdCBwcmVmaXhXaWR0aCA9IChfZCA9IChfYyA9IHByZWZpeFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Mub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9kICE9PSB2b2lkIDAgPyBfZCA6IDA7XG4gICAgICAgIGNvbnN0IHN1ZmZpeFdpZHRoID0gKF9mID0gKF9lID0gc3VmZml4UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9lID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZS5vZmZzZXRXaWR0aCkgIT09IG51bGwgJiYgX2YgIT09IHZvaWQgMCA/IF9mIDogMDtcbiAgICAgICAgY29uc3QgY3VycmVuY3lXaWR0aCA9IChfaCA9IChfZyA9IGN1cnJlbmN5UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9nID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZy5vZmZzZXRXaWR0aCkgIT09IG51bGwgJiYgX2ggIT09IHZvaWQgMCA/IF9oIDogMDtcbiAgICAgICAgY29uc3QgZmFrZVdpZHRoID0gKF9rID0gKF9qID0gZmFrZUVsZVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfaiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2oub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9rICE9PSB2b2lkIDAgPyBfayA6IDA7XG4gICAgICAgIGNvbnN0IGdhcFdpZHRoID0gcHJlZml4V2lkdGggJiYgc3VmZml4V2lkdGggJiYgY3VycmVuY3lXaWR0aFxuICAgICAgICAgICAgPyAyNFxuICAgICAgICAgICAgOiAocHJlZml4V2lkdGggJiYgc3VmZml4V2lkdGgpIHx8IChwcmVmaXhXaWR0aCAmJiBjdXJyZW5jeVdpZHRoKSB8fCAoc3VmZml4V2lkdGggJiYgY3VycmVuY3lXaWR0aClcbiAgICAgICAgICAgICAgICA/IDE2XG4gICAgICAgICAgICAgICAgOiBwcmVmaXhXaWR0aCB8fCBzdWZmaXhXaWR0aCB8fCBjdXJyZW5jeVdpZHRoXG4gICAgICAgICAgICAgICAgICAgID8gOFxuICAgICAgICAgICAgICAgICAgICA6IDA7XG4gICAgICAgIGNvbnN0IG1heFdpZHRoID0gY29udGFpbmVyV2lkdGggLSBwcmVmaXhXaWR0aCAtIHN1ZmZpeFdpZHRoIC0gY3VycmVuY3lXaWR0aCAtIGdhcFdpZHRoO1xuICAgICAgICBjb25zdCBpc01heCA9IGZha2VXaWR0aCA+PSBtYXhXaWR0aDtcbiAgICAgICAgc2V0V2lkdGgoTWF0aC5taW4obWF4V2lkdGgsIE1hdGgubWF4KGZha2VXaWR0aCwgTUlOX0lOUFVUX1dJRFRIKSkpO1xuICAgICAgICBzZXRJc01heFdpZHRoKGlzTWF4KTtcbiAgICAgICAgc2Nyb2xsVG9FbmQodHJ1ZSk7XG4gICAgfSwgW192YWx1ZV0pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICBsZXQgdmFsID0gdmFsdWU7XG4gICAgICAgIGxldCBoYXNEZWNpbWFsUG9pbnQgPSBmYWxzZTtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBpZiAodmFsID09PSAnJykge1xuICAgICAgICAgICAgICAgIHZhbCA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YWwgPSB2YWwuc3BsaXQoJywnKS5qb2luKCcnKTtcbiAgICAgICAgICAgICAgICBoYXNEZWNpbWFsUG9pbnQgPSB2YWwubGFzdEluZGV4T2YoJy4nKSA9PT0gdmFsLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICAgICAgaWYgKGhhc0RlY2ltYWxQb2ludClcbiAgICAgICAgICAgICAgICAgICAgdmFsID0gdmFsLnNsaWNlKDAsIC0xKTtcbiAgICAgICAgICAgICAgICBpZiAoaXNOYU4oK3ZhbCkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWwgIT09IG51bGwgJiYgdHlwZW9mIHZhbCAhPT0gJ251bWJlcicgJiYgdHlwZW9mIHZhbCAhPT0gJ2JpZ2ludCcpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICgodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbCA9PT0gJ251bWJlcicpICYmICh0eXBlb2YgbWF4RnJhY3Rpb25EaWdpdHMgPT09ICdudW1iZXInIHx8IHR5cGVvZiBtYXhGcmFjdGlvbkRpZ2l0cyA9PT0gJ2JpZ2ludCcpKSB7XG4gICAgICAgICAgICBjb25zdCBbaW50LCBkZWNpbWFsXSA9ICgnJyArIHZhbCkuc3BsaXQoJy4nKTtcbiAgICAgICAgICAgIGlmIChkZWNpbWFsICE9IG51bGwgJiYgZGVjaW1hbC5sZW5ndGggPiBOdW1iZXIobWF4RnJhY3Rpb25EaWdpdHMpKSB7XG4gICAgICAgICAgICAgICAgdmFsID0gaW50ICsgJy4nICsgZGVjaW1hbC5zbGljZSgwLCBOdW1iZXIobWF4RnJhY3Rpb25EaWdpdHMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsID09PSAnJyB8fCB2YWwgPT0gbnVsbCkge1xuICAgICAgICAgICAgc2V0VmFsdWUobnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBkZWNpbWFscyA9IChfYyA9IChfYiA9IChfYSA9ICgnJyArIHZhbCkubWF0Y2goL1xcLihcXGQrKSQvKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hWzFdKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubGVuZ3RoKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAwO1xuICAgICAgICAgICAgc2V0VmFsdWUoYCR7QmlnTnVtYmVyKHZhbCkudG9GaXhlZChkZWNpbWFscyl9JHtoYXNEZWNpbWFsUG9pbnQgPyAnLicgOiAnJ31gLnRyaW0oKSk7XG4gICAgICAgIH1cbiAgICB9LCBbdmFsdWUsIG1heEZyYWN0aW9uRGlnaXRzXSk7XG4gICAgcmV0dXJuIF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCd3cmFwcGVyJywgW3dyYXBwZXJDbHMsIGludmFsaWQgPyBjbGFzc2VzKCdpbnZhbGlkJykgOiB1bmRlZmluZWRdLmpvaW4oJyAnKS50cmltKCkpLCBjaGlsZHJlbjogW19qc3hzKFwiZGl2XCIsIHsgcmVmOiBjb250YWluZXJSZWYsIGNsYXNzTmFtZTogY2xhc3Nlcyh2b2lkIDAsIFtjbGFzc05hbWUsIGlzRm9jdXMgPyBjbGFzc2VzKCdmb2N1cycpIDogJyddLmpvaW4oJyAnKS50cmltKCkpLCBvbkNsaWNrOiAoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlLnRhcmdldCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIChfYSA9IGlucHV0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNNYXhXaWR0aClcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbFRvRW5kKCk7XG4gICAgICAgICAgICAgICAgfSwgY2hpbGRyZW46IFtwcmVmaXggJiYgX2pzeChcInNwYW5cIiwgeyByZWY6IHByZWZpeFJlZiwgY2xhc3NOYW1lOiBjbGFzc2VzKCdwcmVmaXgnKSwgY2hpbGRyZW46IHByZWZpeCB9KSwgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnZWxlbWVudCcsICghaXNGb2N1cyAmJiBpc01heFdpZHRoKSA/IGNsYXNzZXMoJ2VsZW1lbnQtbWF4JykgOiAnJyksIGNoaWxkcmVuOiBfanN4KFwiaW5wdXRcIiwgT2JqZWN0LmFzc2lnbih7fSwgcmVzdCwgeyByZWY6IGlucHV0UmVmLCB2YWx1ZTogZm9ybWF0dGVkVmFsdWUsIHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlciwgc3R5bGU6IHsgJy0taW5wdXQtd2lkdGgnOiBgJHtfd2lkdGh9cHhgIH0sIG9uQ2hhbmdlOiBoYW5kbGVDaGFuZ2UsIG9uRm9jdXM6IGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJc0ZvY3VzKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZvY3VzID09PSBudWxsIHx8IG9uRm9jdXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRm9jdXMoZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgb25CbHVyOiBlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNGb2N1cyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1ciA9PT0gbnVsbCB8fCBvbkJsdXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQmx1cihlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IH0pKSB9KSwgY3VycmVuY3kgJiYgX2pzeChcInNwYW5cIiwgeyByZWY6IGN1cnJlbmN5UmVmLCBjbGFzc05hbWU6IGNsYXNzZXMoJ2N1cnJlbmN5JyksIGNoaWxkcmVuOiBjdXJyZW5jeSB9KSwgc3VmZml4ICYmIF9qc3goXCJzcGFuXCIsIHsgcmVmOiBzdWZmaXhSZWYsIGNsYXNzTmFtZTogY2xhc3Nlcygnc3VmZml4JyksIGNoaWxkcmVuOiBzdWZmaXggfSksIF9qc3goXCJzcGFuXCIsIHsgcmVmOiBmYWtlRWxlUmVmLCBjbGFzc05hbWU6IGNsYXNzZXMoJ2Zha2UnKSwgb25DbGljazogZSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpLCBjaGlsZHJlbjogbnVtZXJpY0Zvcm1hdHRlcignJyArIChfdmFsdWUgPT0gbnVsbCA/ICcnIDogX3ZhbHVlKSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRob3VzYW5kU2VwYXJhdG9yOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93TmVnYXRpdmU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSB9KV0gfSksIChtZXNzYWdlIHx8IGZvb3Rub3RlKSAmJiBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnZXh0cmEnKSwgY2hpbGRyZW46IFttZXNzYWdlICYmIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ21lc3NhZ2UnLCBtZXNzYWdlQ2xzKSwgY2hpbGRyZW46IG1lc3NhZ2UgfSksIGZvb3Rub3RlICYmIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2Zvb3Rub3RlJywgZm9vdG5vdGVDbHMpLCBjaGlsZHJlbjogZm9vdG5vdGUgfSldIH0pXSB9KTtcbn07XG5leHBvcnQgZGVmYXVsdCBtZW1vKElucHV0QW1vdW50KTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
275
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvSW5wdXRBbW91bnQvSW5wdXRBbW91bnQuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL0lucHV0QW1vdW50L0lucHV0QW1vdW50LnRzeCJdLCJuYW1lcyI6WyJfX3Jlc3QiLCJzIiwiZSIsInQiLCJwIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImkiLCJsZW5ndGgiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJtZW1vIiwidXNlTWVtbyIsInVzZVN0YXRlIiwidXNlQ2FsbGJhY2siLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJCaWdOdW1iZXIiLCJudW1lcmljRm9ybWF0dGVyIiwiY2xhc3NuYW1lcyIsIk1JTl9JTlBVVF9XSURUSCIsIklucHV0QW1vdW50IiwicHJvcHMiLCJ2YWx1ZSIsIm1heEZyYWN0aW9uRGlnaXRzIiwiY2hpbGRyZW4iLCJjbGFzc05hbWUiLCJ3cmFwcGVyQ2xzIiwiX3Byb3BzJHByZWZpeENscyIsInByZWZpeENscyIsIm1lc3NhZ2VDbHMiLCJmb290bm90ZUNscyIsImludmFsaWQiLCJfcHJvcHMkcGxhY2Vob2xkZXIiLCJwbGFjZWhvbGRlciIsIm5lZ2F0aXZlIiwicHJlZml4IiwiY3VycmVuY3kiLCJzdWZmaXgiLCJtZXNzYWdlIiwiZm9vdG5vdGUiLCJvbkNoYW5nZSIsIm9uQmx1ciIsIm9uRm9jdXMiLCJyZXN0IiwiY2xhc3NlcyIsImlucHV0UmVmIiwiZmFrZUVsZVJlZiIsInByZWZpeFJlZiIsInN1ZmZpeFJlZiIsImN1cnJlbmN5UmVmIiwiY29udGFpbmVyUmVmIiwiaW5wdXRDYXJldFBvc2l0aW9uUmVmIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiX3ZhbHVlIiwic2V0VmFsdWUiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsIl93aWR0aCIsInNldFdpZHRoIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJpc01heFdpZHRoIiwic2V0SXNNYXhXaWR0aCIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwiaXNGb2N1cyIsInNldElzRm9jdXMiLCJmb3JtYXR0ZWRWYWx1ZSIsInRob3VzYW5kU2VwYXJhdG9yIiwiYWxsb3dOZWdhdGl2ZSIsInNjcm9sbFRvRW5kIiwic3RpY2t5IiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiX2EiLCJpbnB1dCIsImN1cnJlbnQiLCJsZW4iLCJwb3NpdGlvbiIsInNjcm9sbExlZnQiLCJzaG91bGRUb0VuZCIsInN0YXJ0Iiwic2V0U2VsZWN0aW9uUmFuZ2UiLCJzY3JvbGxXaWR0aCIsImZvY3VzIiwiaGFuZGxlQ2hhbmdlIiwiX2IiLCJfYyIsIl9kIiwiX2UiLCJ2YWwiLCJ0YXJnZXQiLCJzcGxpdCIsImpvaW4iLCJoYXNEZWNpbWFsUG9pbnQiLCJlbmRzV2l0aCIsInNsaWNlIiwiaW5jbHVkZXMiLCJpc1N0YW5kYWxvbmVNaW51cyIsImlzTmFOIiwiX3ZhbCRzcGxpdCIsIl92YWwkc3BsaXQyIiwiZGVjaW1hbCIsIk51bWJlciIsImZvcm1hdHRlZE5ld1ZhbCIsImlzQWRkIiwic2VsZWN0aW9uU3RhcnQiLCJvbGRQb3NWYWwiLCJwb3NWYWwiLCJyZWR1Y2UiLCJhY2MiLCJjaGFyIiwiaW5kIiwicHVzaCIsImRlY2ltYWxzIiwibWF0Y2giLCJibiIsIm5vcm1hbGl6ZWQiLCJ0b0ZpeGVkIiwidHJpbSIsInN0YXJ0c1dpdGgiLCJpc1plcm8iLCJjb25jYXQiLCJfZiIsIl9nIiwiX2giLCJfaiIsIl9rIiwiY29udGFpbmVyV2lkdGgiLCJvZmZzZXRXaWR0aCIsInByZWZpeFdpZHRoIiwic3VmZml4V2lkdGgiLCJjdXJyZW5jeVdpZHRoIiwiZmFrZVdpZHRoIiwiZ2FwV2lkdGgiLCJtYXhXaWR0aCIsImlzTWF4IiwiTWF0aCIsIm1pbiIsIm1heCIsInJlcGxhY2UiLCJhYnMiLCJ6ZXJvIiwiQmlnSW50IiwiX3NwbGl0IiwiX3NwbGl0MiIsImludCIsInN0clZhbCIsInJlZiIsIm9uQ2xpY2siLCJIVE1MSW5wdXRFbGVtZW50IiwiYXNzaWduIiwic3R5bGUiLCJzdG9wUHJvcGFnYXRpb24iXSwibWFwcGluZ3MiOiI7QUFBQSxJQUFJQSxNQUFNLEdBQUksSUFBSSxJQUFJLElBQUksQ0FBQ0EsTUFBTSxJQUFLLFVBQVVDLENBQUMsRUFBRUMsQ0FBQyxFQUFFO0VBQ2xELElBQUlDLENBQUMsR0FBRyxDQUFDLENBQUM7RUFDVixLQUFLLElBQUlDLENBQUMsSUFBSUgsQ0FBQyxFQUFFLElBQUlJLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDQyxjQUFjLENBQUNDLElBQUksQ0FBQ1AsQ0FBQyxFQUFFRyxDQUFDLENBQUMsSUFBSUYsQ0FBQyxDQUFDTyxPQUFPLENBQUNMLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFDL0VELENBQUMsQ0FBQ0MsQ0FBQyxDQUFDLEdBQUdILENBQUMsQ0FBQ0csQ0FBQyxDQUFDO0VBQ2YsSUFBSUgsQ0FBQyxJQUFJLElBQUksSUFBSSxPQUFPSSxNQUFNLENBQUNLLHFCQUFxQixLQUFLLFVBQVUsRUFDL0QsS0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxFQUFFUCxDQUFDLEdBQUdDLE1BQU0sQ0FBQ0sscUJBQXFCLENBQUNULENBQUMsQ0FBQyxFQUFFVSxDQUFDLEdBQUdQLENBQUMsQ0FBQ1EsTUFBTSxFQUFFRCxDQUFDLEVBQUUsRUFBRTtJQUNwRSxJQUFJVCxDQUFDLENBQUNPLE9BQU8sQ0FBQ0wsQ0FBQyxDQUFDTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSU4sTUFBTSxDQUFDQyxTQUFTLENBQUNPLG9CQUFvQixDQUFDTCxJQUFJLENBQUNQLENBQUMsRUFBRUcsQ0FBQyxDQUFDTyxDQUFDLENBQUMsQ0FBQyxFQUMxRVIsQ0FBQyxDQUFDQyxDQUFDLENBQUNPLENBQUMsQ0FBQyxDQUFDLEdBQUdWLENBQUMsQ0FBQ0csQ0FBQyxDQUFDTyxDQUFDLENBQUMsQ0FB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QUFVLEVBQUVkLFdBQVcsQ0FBQztRQUFBTixRQUFBLEVBQUdlO01BQVEsQ0FBQSxDQUFPO0lBQUEsQ0FBQSxDQUMzRTtFQUFBLENBQUEsQ0FFSjtBQUNSLENBQUM7QUFFRCw0QkFBZTdCLElBQUksQ0FBQ1UsV0FBVyxDQUFDIiwiZmlsZSI6ImNvbXBvbmVudHMvSW5wdXRBbW91bnQvSW5wdXRBbW91bnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgbWVtbywgdXNlTWVtbywgdXNlU3RhdGUsIHVzZUNhbGxiYWNrLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IG51bWVyaWNGb3JtYXR0ZXIgfSBmcm9tICdyZWFjdC1udW1iZXItZm9ybWF0JztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuY29uc3QgTUlOX0lOUFVUX1dJRFRIID0gMzM7XG5leHBvcnQgY29uc3QgSW5wdXRBbW91bnQgPSBwcm9wcyA9PiB7XG4gICAgY29uc3QgeyB2YWx1ZSwgbWF4RnJhY3Rpb25EaWdpdHMsIGNoaWxkcmVuLCBjbGFzc05hbWUsIHdyYXBwZXJDbHMsIHByZWZpeENscyA9ICdpbnB1dC1hbW91bnQnLCBtZXNzYWdlQ2xzLCBmb290bm90ZUNscywgaW52YWxpZCwgcGxhY2Vob2xkZXIgPSAnMCcsIG5lZ2F0aXZlLCBwcmVmaXgsIGN1cnJlbmN5LCBzdWZmaXgsIG1lc3NhZ2UsIGZvb3Rub3RlLCBvbkNoYW5nZSwgb25CbHVyLCBvbkZvY3VzIH0gPSBwcm9wcywgcmVzdCA9IF9fcmVzdChwcm9wcywgW1widmFsdWVcIiwgXCJtYXhGcmFjdGlvbkRpZ2l0c1wiLCBcImNoaWxkcmVuXCIsIFwiY2xhc3NOYW1lXCIsIFwid3JhcHBlckNsc1wiLCBcInByZWZpeENsc1wiLCBcIm1lc3NhZ2VDbHNcIiwgXCJmb290bm90ZUNsc1wiLCBcImludmFsaWRcIiwgXCJwbGFjZWhvbGRlclwiLCBcIm5lZ2F0aXZlXCIsIFwicHJlZml4XCIsIFwiY3VycmVuY3lcIiwgXCJzdWZmaXhcIiwgXCJtZXNzYWdlXCIsIFwiZm9vdG5vdGVcIiwgXCJvbkNoYW5nZVwiLCBcIm9uQmx1clwiLCBcIm9uRm9jdXNcIl0pO1xuICAgIGNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKHByZWZpeENscyk7XG4gICAgY29uc3QgaW5wdXRSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgZmFrZUVsZVJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBwcmVmaXhSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3Qgc3VmZml4UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGN1cnJlbmN5UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBpbnB1dENhcmV0UG9zaXRpb25SZWYgPSB1c2VSZWYoMCk7XG4gICAgY29uc3QgW192YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW193aWR0aCwgc2V0V2lkdGhdID0gdXNlU3RhdGUoTUlOX0lOUFVUX1dJRFRIKTtcbiAgICBjb25zdCBbaXNNYXhXaWR0aCwgc2V0SXNNYXhXaWR0aF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW2lzRm9jdXMsIHNldElzRm9jdXNdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IGZvcm1hdHRlZFZhbHVlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIHJldHVybiBudW1lcmljRm9ybWF0dGVyKCcnICsgKF92YWx1ZSA9PSBudWxsID8gJycgOiBfdmFsdWUpLCB7XG4gICAgICAgICAgICB0aG91c2FuZFNlcGFyYXRvcjogdHJ1ZSxcbiAgICAgICAgICAgIGFsbG93TmVnYXRpdmU6IG5lZ2F0aXZlLFxuICAgICAgICB9KTtcbiAgICB9LCBbX3ZhbHVlLCBuZWdhdGl2ZV0pO1xuICAgIGNvbnN0IHNjcm9sbFRvRW5kID0gdXNlQ2FsbGJhY2soKHN0aWNreSA9IGZhbHNlKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBpbnB1dFJlZi5jdXJyZW50O1xuICAgICAgICBpZiAoIWlucHV0KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBsZW4gPSAoX2EgPSBpbnB1dC52YWx1ZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxlbmd0aDtcbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSBpbnB1dC5zY3JvbGxMZWZ0O1xuICAgICAgICBjb25zdCBzaG91bGRUb0VuZCA9ICFzdGlja3k7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gc2hvdWxkVG9FbmQgPyBsZW4gOiBpbnB1dENhcmV0UG9zaXRpb25SZWYuY3VycmVudDtcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2Uoc3RhcnQsIHN0YXJ0KTtcbiAgICAgICAgaW5wdXQuc2Nyb2xsTGVmdCA9IHNob3VsZFRvRW5kID8gaW5wdXQuc2Nyb2xsV2lkdGggOiBwb3NpdGlvbjtcbiAgICAgICAgaW5wdXQuZm9jdXMoKTtcbiAgICB9LCBbXSk7XG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gdXNlQ2FsbGJhY2soKGUpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZTtcbiAgICAgICAgbGV0IHZhbCA9IGUudGFyZ2V0LnZhbHVlO1xuICAgICAgICBpZiAodmFsICE9IG51bGwpXG4gICAgICAgICAgICB2YWwgPSB2YWwuc3BsaXQoJywnKS5qb2luKCcnKTtcbiAgICAgICAgY29uc3QgaGFzRGVjaW1hbFBvaW50ID0gISF2YWwgJiYgdmFsLmVuZHNXaXRoKCcuJyk7XG4gICAgICAgIGlmIChoYXNEZWNpbWFsUG9pbnQpXG4gICAgICAgICAgICB2YWwgPSB2YWwuc2xpY2UoMCwgLTEpO1xuICAgICAgICBpZiAoIW5lZ2F0aXZlICYmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB2b2lkIDAgPyB2b2lkIDAgOiB2YWwuaW5jbHVkZXMoJy0nKSkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IGlzU3RhbmRhbG9uZU1pbnVzID0gbmVnYXRpdmUgJiYgdmFsID09PSAnLSc7XG4gICAgICAgIGlmICghaXNTdGFuZGFsb25lTWludXMgJiYgaXNOYU4oK3ZhbCkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICh2YWwgPT09IF92YWx1ZSAmJiAhaGFzRGVjaW1hbFBvaW50KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAodHlwZW9mIG1heEZyYWN0aW9uRGlnaXRzID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgbWF4RnJhY3Rpb25EaWdpdHMgPT09ICdiaWdpbnQnKSB7XG4gICAgICAgICAgICBjb25zdCBbLCBkZWNpbWFsXSA9IHZhbC5zcGxpdCgnLicpO1xuICAgICAgICAgICAgaWYgKGRlY2ltYWwgIT0gbnVsbCAmJiBkZWNpbWFsLmxlbmd0aCA+IE51bWJlcihtYXhGcmFjdGlvbkRpZ2l0cykpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbnB1dFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWROZXdWYWwgPSBudW1lcmljRm9ybWF0dGVyKHZhbCwge1xuICAgICAgICAgICAgICAgIHRob3VzYW5kU2VwYXJhdG9yOiB0cnVlLFxuICAgICAgICAgICAgICAgIGFsbG93TmVnYXRpdmU6IG5lZ2F0aXZlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBpc0FkZCA9IHZhbC5sZW5ndGggPiAoKF9hID0gX3ZhbHVlID09PSBudWxsIHx8IF92YWx1ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3ZhbHVlLmxlbmd0aCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogMCk7XG4gICAgICAgICAgICBsZXQgcG9zaXRpb24gPSAoX2IgPSBpbnB1dFJlZi5jdXJyZW50LnNlbGVjdGlvblN0YXJ0KSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAwO1xuICAgICAgICAgICAgY29uc3Qgb2xkUG9zVmFsID0gZm9ybWF0dGVkVmFsdWUuc2xpY2UoMCwgKHBvc2l0aW9uIC0gKGlzQWRkID8gMSA6IC0xKSkpO1xuICAgICAgICAgICAgcG9zaXRpb24gPSBvbGRQb3NWYWwuc3BsaXQoJywnKS5qb2luKCcnKS5sZW5ndGggKyAoaXNBZGQgPyAxIDogLTEpO1xuICAgICAgICAgICAgY29uc3QgcG9zVmFsID0gdmFsLnNsaWNlKDAsIHBvc2l0aW9uKTtcbiAgICAgICAgICAgIGZvcm1hdHRlZE5ld1ZhbC5zcGxpdCgnJykucmVkdWNlKChhY2MsIGNoYXIsIGluZCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChjaGFyID09PSAnLCcpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBhY2MucHVzaChjaGFyKTtcbiAgICAgICAgICAgICAgICBpZiAoYWNjLmpvaW4oJycpID09PSBwb3NWYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24gPSBpbmQgKyAxO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICAgICAgaW5wdXRDYXJldFBvc2l0aW9uUmVmLmN1cnJlbnQgPSBwb3NpdGlvbiArIChoYXNEZWNpbWFsUG9pbnQgPyAyIDogMCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGlmICh2YWwgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgc2V0VmFsdWUobnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChpc1N0YW5kYWxvbmVNaW51cykge1xuICAgICAgICAgICAgICAgIHNldFZhbHVlKCctJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkZWNpbWFscyA9IChfZSA9IChfZCA9IChfYyA9IHZhbC5tYXRjaCgvXFwuKFxcZCspJC8pKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2NbMV0pID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZC5sZW5ndGgpICE9PSBudWxsICYmIF9lICE9PSB2b2lkIDAgPyBfZSA6IDA7XG4gICAgICAgICAgICAgICAgY29uc3QgYm4gPSBCaWdOdW1iZXIodmFsKTtcbiAgICAgICAgICAgICAgICBsZXQgbm9ybWFsaXplZCA9IGJuLnRvRml4ZWQoZGVjaW1hbHMpO1xuICAgICAgICAgICAgICAgIGlmIChuZWdhdGl2ZSAmJiB2YWwudHJpbSgpLnN0YXJ0c1dpdGgoJy0nKSAmJiBibi5pc1plcm8oKSkge1xuICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkID0gbm9ybWFsaXplZC5zdGFydHNXaXRoKCctJykgPyBub3JtYWxpemVkIDogYC0ke25vcm1hbGl6ZWR9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc2V0VmFsdWUoYCR7bm9ybWFsaXplZH0ke2hhc0RlY2ltYWxQb2ludCA/ICcuJyA6ICcnfWAudHJpbSgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBvbkNoYW5nZSA9PT0gbnVsbCB8fCBvbkNoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DaGFuZ2UoZSk7XG4gICAgfSwgW29uQ2hhbmdlLCBfdmFsdWUsIHZhbHVlLCBmb3JtYXR0ZWRWYWx1ZSwgbWF4RnJhY3Rpb25EaWdpdHMsIG5lZ2F0aXZlXSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZSwgX2YsIF9nLCBfaCwgX2osIF9rO1xuICAgICAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IChfYiA9IChfYSA9IGNvbnRhaW5lclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Eub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IE1JTl9JTlBVVF9XSURUSDtcbiAgICAgICAgY29uc3QgcHJlZml4V2lkdGggPSAoX2QgPSAoX2MgPSBwcmVmaXhSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLm9mZnNldFdpZHRoKSAhPT0gbnVsbCAmJiBfZCAhPT0gdm9pZCAwID8gX2QgOiAwO1xuICAgICAgICBjb25zdCBzdWZmaXhXaWR0aCA9IChfZiA9IChfZSA9IHN1ZmZpeFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Uub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9mICE9PSB2b2lkIDAgPyBfZiA6IDA7XG4gICAgICAgIGNvbnN0IGN1cnJlbmN5V2lkdGggPSAoX2ggPSAoX2cgPSBjdXJyZW5jeVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2cub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9oICE9PSB2b2lkIDAgPyBfaCA6IDA7XG4gICAgICAgIGNvbnN0IGZha2VXaWR0aCA9IChfayA9IChfaiA9IGZha2VFbGVSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2ogPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9qLm9mZnNldFdpZHRoKSAhPT0gbnVsbCAmJiBfayAhPT0gdm9pZCAwID8gX2sgOiAwO1xuICAgICAgICBjb25zdCBnYXBXaWR0aCA9IHByZWZpeFdpZHRoICYmIHN1ZmZpeFdpZHRoICYmIGN1cnJlbmN5V2lkdGhcbiAgICAgICAgICAgID8gMjRcbiAgICAgICAgICAgIDogKHByZWZpeFdpZHRoICYmIHN1ZmZpeFdpZHRoKSB8fCAocHJlZml4V2lkdGggJiYgY3VycmVuY3lXaWR0aCkgfHwgKHN1ZmZpeFdpZHRoICYmIGN1cnJlbmN5V2lkdGgpXG4gICAgICAgICAgICAgICAgPyAxNlxuICAgICAgICAgICAgICAgIDogcHJlZml4V2lkdGggfHwgc3VmZml4V2lkdGggfHwgY3VycmVuY3lXaWR0aFxuICAgICAgICAgICAgICAgICAgICA/IDhcbiAgICAgICAgICAgICAgICAgICAgOiAwO1xuICAgICAgICBjb25zdCBtYXhXaWR0aCA9IGNvbnRhaW5lcldpZHRoIC0gcHJlZml4V2lkdGggLSBzdWZmaXhXaWR0aCAtIGN1cnJlbmN5V2lkdGggLSBnYXBXaWR0aDtcbiAgICAgICAgY29uc3QgaXNNYXggPSBmYWtlV2lkdGggPj0gbWF4V2lkdGg7XG4gICAgICAgIHNldFdpZHRoKE1hdGgubWluKG1heFdpZHRoLCBNYXRoLm1heChmYWtlV2lkdGgsIE1JTl9JTlBVVF9XSURUSCkpKTtcbiAgICAgICAgc2V0SXNNYXhXaWR0aChpc01heCk7XG4gICAgICAgIGlmIChpc0ZvY3VzKVxuICAgICAgICAgICAgc2Nyb2xsVG9FbmQodHJ1ZSk7XG4gICAgfSwgW192YWx1ZSwgcHJlZml4LCBzdWZmaXgsIGN1cnJlbmN5LCBpc0ZvY3VzXSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgLy8gY2xlYXIgbmVnYXRpdmUgc2lnbiBpZiBub3QgYWxsb3dlZFxuICAgICAgICBpZiAobmVnYXRpdmUpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICd1bmRlZmluZWQnKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAoX3ZhbHVlID09IG51bGwpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmIChfdmFsdWUgPT09ICctJykge1xuICAgICAgICAgICAgc2V0VmFsdWUobnVsbCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKF92YWx1ZS5zdGFydHNXaXRoKCctJykpXG4gICAgICAgICAgICBzZXRWYWx1ZShfdmFsdWUuc2xpY2UoMSkpO1xuICAgIH0sIFtuZWdhdGl2ZSwgdmFsdWUsIF92YWx1ZV0pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICBsZXQgdmFsID0gdmFsdWU7XG4gICAgICAgIGxldCBoYXNEZWNpbWFsUG9pbnQgPSBmYWxzZTtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBpZiAodmFsID09PSAnJykge1xuICAgICAgICAgICAgICAgIHZhbCA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YWwgPSB2YWwuc3BsaXQoJywnKS5qb2luKCcnKTtcbiAgICAgICAgICAgICAgICBoYXNEZWNpbWFsUG9pbnQgPSAhIXZhbCAmJiB2YWwuZW5kc1dpdGgoJy4nKTtcbiAgICAgICAgICAgICAgICBpZiAoaGFzRGVjaW1hbFBvaW50KVxuICAgICAgICAgICAgICAgICAgICB2YWwgPSB2YWwuc2xpY2UoMCwgLTEpO1xuICAgICAgICAgICAgICAgIGlmICghbmVnYXRpdmUpXG4gICAgICAgICAgICAgICAgICAgIHZhbCA9IHZhbC5yZXBsYWNlKC8tL2csICcnKTtcbiAgICAgICAgICAgICAgICBpZiAobmVnYXRpdmUgJiYgdmFsID09PSAnLScpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUoJy0nKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaXNOYU4oK3ZhbCkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWwgIT09IG51bGwgJiYgdHlwZW9mIHZhbCAhPT0gJ251bWJlcicgJiYgdHlwZW9mIHZhbCAhPT0gJ2JpZ2ludCcpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICghbmVnYXRpdmUpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgIHZhbCA9IE1hdGguYWJzKHZhbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnYmlnaW50Jykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHplcm8gPSBCaWdJbnQoMCk7XG4gICAgICAgICAgICAgICAgdmFsID0gdmFsIDwgemVybyA/IC12YWwgOiB2YWw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCh0eXBlb2YgdmFsID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsID09PSAnbnVtYmVyJykgJiYgKHR5cGVvZiBtYXhGcmFjdGlvbkRpZ2l0cyA9PT0gJ251bWJlcicgfHwgdHlwZW9mIG1heEZyYWN0aW9uRGlnaXRzID09PSAnYmlnaW50JykpIHtcbiAgICAgICAgICAgIGNvbnN0IFtpbnQsIGRlY2ltYWxdID0gKCcnICsgdmFsKS5zcGxpdCgnLicpO1xuICAgICAgICAgICAgaWYgKGRlY2ltYWwgIT0gbnVsbCAmJiBkZWNpbWFsLmxlbmd0aCA+IE51bWJlcihtYXhGcmFjdGlvbkRpZ2l0cykpIHtcbiAgICAgICAgICAgICAgICB2YWwgPSBpbnQgKyAnLicgKyBkZWNpbWFsLnNsaWNlKDAsIE51bWJlcihtYXhGcmFjdGlvbkRpZ2l0cykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh2YWwgPT09ICcnIHx8IHZhbCA9PSBudWxsKSB7XG4gICAgICAgICAgICBzZXRWYWx1ZShudWxsKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHN0clZhbCA9ICcnICsgdmFsO1xuICAgICAgICAgICAgY29uc3QgZGVjaW1hbHMgPSAoX2MgPSAoX2IgPSAoX2EgPSBzdHJWYWwubWF0Y2goL1xcLihcXGQrKSQvKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hWzFdKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubGVuZ3RoKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAwO1xuICAgICAgICAgICAgY29uc3QgYm4gPSBCaWdOdW1iZXIoc3RyVmFsKTtcbiAgICAgICAgICAgIGxldCBub3JtYWxpemVkID0gYm4udG9GaXhlZChkZWNpbWFscyk7XG4gICAgICAgICAgICBpZiAobmVnYXRpdmUgJiYgc3RyVmFsLnRyaW0oKS5zdGFydHNXaXRoKCctJykgJiYgYm4uaXNaZXJvKCkpIHtcbiAgICAgICAgICAgICAgICBub3JtYWxpemVkID0gbm9ybWFsaXplZC5zdGFydHNXaXRoKCctJykgPyBub3JtYWxpemVkIDogYC0ke25vcm1hbGl6ZWR9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldFZhbHVlKGAke25vcm1hbGl6ZWR9JHtoYXNEZWNpbWFsUG9pbnQgPyAnLicgOiAnJ31gLnRyaW0oKSk7XG4gICAgICAgIH1cbiAgICB9LCBbdmFsdWUsIG1heEZyYWN0aW9uRGlnaXRzLCBuZWdhdGl2ZV0pO1xuICAgIHJldHVybiBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3Nlcygnd3JhcHBlcicsIFt3cmFwcGVyQ2xzLCBpbnZhbGlkID8gY2xhc3NlcygnaW52YWxpZCcpIDogdW5kZWZpbmVkXS5qb2luKCcgJykudHJpbSgpKSwgY2hpbGRyZW46IFtfanN4cyhcImRpdlwiLCB7IHJlZjogY29udGFpbmVyUmVmLCBjbGFzc05hbWU6IGNsYXNzZXModm9pZCAwLCBbY2xhc3NOYW1lLCBpc0ZvY3VzID8gY2xhc3NlcygnZm9jdXMnKSA6ICcnXS5qb2luKCcgJykudHJpbSgpKSwgb25DbGljazogKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZS50YXJnZXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAoX2EgPSBpbnB1dFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzTWF4V2lkdGgpXG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb0VuZCgpO1xuICAgICAgICAgICAgICAgIH0sIGNoaWxkcmVuOiBbcHJlZml4ICYmIF9qc3goXCJzcGFuXCIsIHsgcmVmOiBwcmVmaXhSZWYsIGNsYXNzTmFtZTogY2xhc3NlcygncHJlZml4JyksIGNoaWxkcmVuOiBwcmVmaXggfSksIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2VsZW1lbnQnLCAoIWlzRm9jdXMgJiYgaXNNYXhXaWR0aCkgPyBjbGFzc2VzKCdlbGVtZW50LW1heCcpIDogJycpLCBjaGlsZHJlbjogX2pzeChcImlucHV0XCIsIE9iamVjdC5hc3NpZ24oe30sIHJlc3QsIHsgcmVmOiBpbnB1dFJlZiwgdmFsdWU6IGZvcm1hdHRlZFZhbHVlLCBwbGFjZWhvbGRlcjogcGxhY2Vob2xkZXIsIHN0eWxlOiB7ICctLWlucHV0LXdpZHRoJzogYCR7X3dpZHRofXB4YCB9LCBvbkNoYW5nZTogaGFuZGxlQ2hhbmdlLCBvbkZvY3VzOiBlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNGb2N1cyh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Gb2N1cyA9PT0gbnVsbCB8fCBvbkZvY3VzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkZvY3VzKGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG9uQmx1cjogZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElzRm9jdXMoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXIgPT09IG51bGwgfHwgb25CbHVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkJsdXIoZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB9KSkgfSksIGN1cnJlbmN5ICYmIF9qc3goXCJzcGFuXCIsIHsgcmVmOiBjdXJyZW5jeVJlZiwgY2xhc3NOYW1lOiBjbGFzc2VzKCdjdXJyZW5jeScpLCBjaGlsZHJlbjogY3VycmVuY3kgfSksIHN1ZmZpeCAmJiBfanN4KFwic3BhblwiLCB7IHJlZjogc3VmZml4UmVmLCBjbGFzc05hbWU6IGNsYXNzZXMoJ3N1ZmZpeCcpLCBjaGlsZHJlbjogc3VmZml4IH0pLCBfanN4KFwic3BhblwiLCB7IHJlZjogZmFrZUVsZVJlZiwgY2xhc3NOYW1lOiBjbGFzc2VzKCdmYWtlJyksIG9uQ2xpY2s6IGUgPT4gZS5zdG9wUHJvcGFnYXRpb24oKSwgY2hpbGRyZW46IG51bWVyaWNGb3JtYXR0ZXIoJycgKyAoX3ZhbHVlID09IG51bGwgPyAnJyA6IF92YWx1ZSksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aG91c2FuZFNlcGFyYXRvcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd05lZ2F0aXZlOiBuZWdhdGl2ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIH0pXSB9KSwgKG1lc3NhZ2UgfHwgZm9vdG5vdGUpICYmIF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdleHRyYScpLCBjaGlsZHJlbjogW21lc3NhZ2UgJiYgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnbWVzc2FnZScsIG1lc3NhZ2VDbHMpLCBjaGlsZHJlbjogbWVzc2FnZSB9KSwgZm9vdG5vdGUgJiYgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnZm9vdG5vdGUnLCBmb290bm90ZUNscyksIGNoaWxkcmVuOiBmb290bm90ZSB9KV0gfSldIH0pO1xufTtcbmV4cG9ydCBkZWZhdWx0IG1lbW8oSW5wdXRBbW91bnQpOyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
|