react-bootstrap-plugins 2.1.0 → 2.2.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/README.md CHANGED
@@ -15,6 +15,7 @@
15
15
  | **Label** | [LABEL.md](./docs/LABEL.md) | Bootstrap-styled form label with required indicator |
16
16
  | **TableLoading** | [TABLELOADING.md](./docs/TABLELOADING.md) | Bootstrap 5 placeholder loading skeleton for table `<tbody>` |
17
17
  | **AutoTextarea** | [AUTOTEXTAREA.md](./docs/AUTOTEXTAREA.md) | Auto-resizing textarea — grows with content up to `maxRows`/`maxHeight`, then scrolls |
18
+ | **NavPills** | [NAVPILLS.md](./docs/NAVPILLS.md) | Horizontal nav-pills tab strip with icons, dismissible pills, and "New" badges |
18
19
 
19
20
  Each component guide includes full prop tables, usage examples, import patterns, and dark mode behavior.
20
21
 
@@ -110,6 +111,7 @@ import SearchSelect from 'react-bootstrap-plugins/SearchSelect'
110
111
  import Label from 'react-bootstrap-plugins/Label'
111
112
  import TableLoading from 'react-bootstrap-plugins/TableLoading'
112
113
  import AutoTextarea from 'react-bootstrap-plugins/AutoTextarea'
114
+ import NavPills from 'react-bootstrap-plugins/NavPills'
113
115
 
114
116
  // Single component — named import
115
117
  import { DatePicker } from 'react-bootstrap-plugins/DatePicker'
@@ -117,11 +119,12 @@ import { SearchSelect } from 'react-bootstrap-plugins/SearchSelect'
117
119
  import { Label } from 'react-bootstrap-plugins/Label'
118
120
  import { TableLoading } from 'react-bootstrap-plugins/TableLoading'
119
121
  import { AutoTextarea } from 'react-bootstrap-plugins/AutoTextarea'
122
+ import { NavPills } from 'react-bootstrap-plugins/NavPills'
120
123
 
121
124
  // Multiple named — barrel, tree-shaken
122
- import { DatePicker, SearchSelect, Label, TableLoading, AutoTextarea } from 'react-bootstrap-plugins'
125
+ import { DatePicker, SearchSelect, Label, TableLoading, AutoTextarea, NavPills } from 'react-bootstrap-plugins'
123
126
 
124
- // CSS (required for DatePicker)
127
+ // CSS (required for DatePicker and NavPills badges)
125
128
  import 'react-bootstrap-plugins/css/plugins.css'
126
129
  ```
127
130
 
@@ -164,7 +167,8 @@ function App() {
164
167
  | `Label` | ~0.3 KB |
165
168
  | `TableLoading` | ~0.2 KB |
166
169
  | `AutoTextarea` | ~0.4 KB |
167
- | All five (barrel) | ~7.1 KB |
170
+ | `NavPills` | ~0.5 KB |
171
+ | All six (barrel) | ~7.6 KB |
168
172
 
169
173
  Measured with ESM, tree-shaken, minified, gzipped. Your actual size depends on your bundler configuration.
170
174
 
@@ -220,6 +224,7 @@ src/
220
224
  │ ├── Label.jsx Form label
221
225
  │ ├── TableLoading.jsx Table placeholder skeleton
222
226
  │ ├── AutoTextarea.jsx Auto-resizing textarea
227
+ │ ├── NavPills.jsx Horizontal pill tab strip
223
228
  │ └── *.d.ts TypeScript declarations
224
229
  └── css/
225
230
  └── plugins.css
@@ -1,2 +1,2 @@
1
- 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var chunkOEFG7PNW_cjs=require('./chunk-OEFG7PNW.cjs');require('./chunk-NPQQDBFB.cjs');Object.defineProperty(exports,"DatePicker",{enumerable:true,get:function(){return chunkOEFG7PNW_cjs.a}});Object.defineProperty(exports,"default",{enumerable:true,get:function(){return chunkOEFG7PNW_cjs.b}});//# sourceMappingURL=DatePicker.cjs.map
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var chunkR5OO66VE_cjs=require('./chunk-R5OO66VE.cjs');require('./chunk-NPQQDBFB.cjs');Object.defineProperty(exports,"DatePicker",{enumerable:true,get:function(){return chunkR5OO66VE_cjs.a}});Object.defineProperty(exports,"default",{enumerable:true,get:function(){return chunkR5OO66VE_cjs.b}});//# sourceMappingURL=DatePicker.cjs.map
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJEYXRlUGlja2VyLmNqcyJ9
@@ -29,10 +29,10 @@ interface DatePickerProps {
29
29
  isClearable?: boolean;
30
30
  /** Disable the input */
31
31
  disabled?: boolean;
32
- /** Earliest selectable date */
33
- minDate?: Date;
34
- /** Latest selectable date */
35
- maxDate?: Date;
32
+ /** Earliest selectable date — Date, ISO/"YYYY-MM-DD" string, or timestamp (e.g. another DatePicker's onChange value) */
33
+ minDate?: Date | string | number | null;
34
+ /** Latest selectable date — Date, ISO/"YYYY-MM-DD" string, or timestamp (e.g. another DatePicker's onChange value) */
35
+ maxDate?: Date | string | number | null;
36
36
  /** Minute step in the time list (default 5) */
37
37
  timeIntervals?: number;
38
38
  /** Timezone identifier (default 'Kampala') */
@@ -29,10 +29,10 @@ interface DatePickerProps {
29
29
  isClearable?: boolean;
30
30
  /** Disable the input */
31
31
  disabled?: boolean;
32
- /** Earliest selectable date */
33
- minDate?: Date;
34
- /** Latest selectable date */
35
- maxDate?: Date;
32
+ /** Earliest selectable date — Date, ISO/"YYYY-MM-DD" string, or timestamp (e.g. another DatePicker's onChange value) */
33
+ minDate?: Date | string | number | null;
34
+ /** Latest selectable date — Date, ISO/"YYYY-MM-DD" string, or timestamp (e.g. another DatePicker's onChange value) */
35
+ maxDate?: Date | string | number | null;
36
36
  /** Minute step in the time list (default 5) */
37
37
  timeIntervals?: number;
38
38
  /** Timezone identifier (default 'Kampala') */
@@ -1,2 +1,2 @@
1
- export{a as DatePicker,b as default}from'./chunk-WLMCWTO6.js';import'./chunk-RR7TBRGI.js';//# sourceMappingURL=DatePicker.js.map
1
+ export{a as DatePicker,b as default}from'./chunk-GCPYN7WB.js';import'./chunk-RR7TBRGI.js';//# sourceMappingURL=DatePicker.js.map
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJEYXRlUGlja2VyLmpzIn0=
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var chunkG26VJJWL_cjs=require('./chunk-G26VJJWL.cjs');require('./chunk-NPQQDBFB.cjs');Object.defineProperty(exports,"NavPills",{enumerable:true,get:function(){return chunkG26VJJWL_cjs.a}});Object.defineProperty(exports,"default",{enumerable:true,get:function(){return chunkG26VJJWL_cjs.b}});//# sourceMappingURL=NavPills.cjs.map
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJOYXZQaWxscy5janMifQ==
@@ -0,0 +1,47 @@
1
+ import * as React from 'react';
2
+
3
+ interface NavPill {
4
+ /** Unique pill identifier — compared against `active` */
5
+ key: string | number;
6
+ /** Pill label text */
7
+ label?: React.ReactNode;
8
+ /** Legacy alias for `label` (takes precedence when both are set) */
9
+ lbl?: React.ReactNode;
10
+ /**
11
+ * Optional leading icon. A string is rendered as `<i className={icon} />`
12
+ * (pass the full icon class, e.g. `"fas fa-user"` or `"bi bi-person"`);
13
+ * a ReactNode (e.g. a Lucide element) is rendered as-is.
14
+ */
15
+ icon?: string | React.ReactNode;
16
+ /** Show a dismiss badge on this pill — clicking it fires `onClear` */
17
+ clear?: boolean;
18
+ /** Show a "New" badge on this pill */
19
+ new?: boolean;
20
+ }
21
+ interface NavPillsProps {
22
+ /** Pills to render */
23
+ pills: NavPill[];
24
+ /** Key of the currently active pill */
25
+ active?: string | number;
26
+ /** Fired when a pill is clicked */
27
+ onClick?: (pill: NavPill) => void;
28
+ /** Fired when a pill's dismiss badge is clicked (requires `pill.clear`) */
29
+ clear?: (pill: NavPill) => void;
30
+ /** Wrap the pills in a full-width light bar with a centered `.container` */
31
+ contain?: boolean;
32
+ /** Additional CSS classes (on the wrapper when `contain`, else on the nav) */
33
+ className?: string;
34
+ }
35
+ /**
36
+ * Horizontal Bootstrap nav-pills tab strip with optional icons,
37
+ * dismissible pills, and "New" badges. Scrolls horizontally on overflow.
38
+ *
39
+ * **Important:** The accompanying CSS **must** be imported for the badges to
40
+ * render correctly:
41
+ * ```js
42
+ * import 'react-bootstrap-plugins/css/plugins.css'
43
+ * ```
44
+ */
45
+ declare const NavPills: React.ForwardRefExoticComponent<NavPillsProps & React.RefAttributes<HTMLElement>>;
46
+
47
+ export { type NavPill, NavPills, type NavPillsProps, NavPills as default };
@@ -0,0 +1,47 @@
1
+ import * as React from 'react';
2
+
3
+ interface NavPill {
4
+ /** Unique pill identifier — compared against `active` */
5
+ key: string | number;
6
+ /** Pill label text */
7
+ label?: React.ReactNode;
8
+ /** Legacy alias for `label` (takes precedence when both are set) */
9
+ lbl?: React.ReactNode;
10
+ /**
11
+ * Optional leading icon. A string is rendered as `<i className={icon} />`
12
+ * (pass the full icon class, e.g. `"fas fa-user"` or `"bi bi-person"`);
13
+ * a ReactNode (e.g. a Lucide element) is rendered as-is.
14
+ */
15
+ icon?: string | React.ReactNode;
16
+ /** Show a dismiss badge on this pill — clicking it fires `onClear` */
17
+ clear?: boolean;
18
+ /** Show a "New" badge on this pill */
19
+ new?: boolean;
20
+ }
21
+ interface NavPillsProps {
22
+ /** Pills to render */
23
+ pills: NavPill[];
24
+ /** Key of the currently active pill */
25
+ active?: string | number;
26
+ /** Fired when a pill is clicked */
27
+ onClick?: (pill: NavPill) => void;
28
+ /** Fired when a pill's dismiss badge is clicked (requires `pill.clear`) */
29
+ clear?: (pill: NavPill) => void;
30
+ /** Wrap the pills in a full-width light bar with a centered `.container` */
31
+ contain?: boolean;
32
+ /** Additional CSS classes (on the wrapper when `contain`, else on the nav) */
33
+ className?: string;
34
+ }
35
+ /**
36
+ * Horizontal Bootstrap nav-pills tab strip with optional icons,
37
+ * dismissible pills, and "New" badges. Scrolls horizontally on overflow.
38
+ *
39
+ * **Important:** The accompanying CSS **must** be imported for the badges to
40
+ * render correctly:
41
+ * ```js
42
+ * import 'react-bootstrap-plugins/css/plugins.css'
43
+ * ```
44
+ */
45
+ declare const NavPills: React.ForwardRefExoticComponent<NavPillsProps & React.RefAttributes<HTMLElement>>;
46
+
47
+ export { type NavPill, NavPills, type NavPillsProps, NavPills as default };
@@ -0,0 +1,2 @@
1
+ export{a as NavPills,b as default}from'./chunk-KVUHNUBG.js';import'./chunk-RR7TBRGI.js';//# sourceMappingURL=NavPills.js.map
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJOYXZQaWxscy5qcyJ9
@@ -0,0 +1,2 @@
1
+ 'use strict';var chunkNPQQDBFB_cjs=require('./chunk-NPQQDBFB.cjs'),o=require('react'),jsxRuntime=require('react/jsx-runtime');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var o__namespace=/*#__PURE__*/_interopNamespace(o);var N=l=>l?typeof l=="string"?jsxRuntime.jsx("i",{className:chunkNPQQDBFB_cjs.a(l,"me-2")}):jsxRuntime.jsx("span",{className:"me-2 d-inline-flex align-middle",children:l}):null,r=o__namespace.forwardRef(({contain:l=false,active:c,pills:p,clear:v,onClick:m,className:t},i)=>{let s=(p??[]).map(a=>jsxRuntime.jsxs("button",{type:"button",className:chunkNPQQDBFB_cjs.a("nav-link text-center align-middle",a.key===c&&"active"),onClick:()=>m?.(a),children:[N(a.icon),jsxRuntime.jsx("span",{children:a.lbl??a.label}),a.clear&&jsxRuntime.jsx("span",{className:"badge navpills-badge-clear my-0 float-end ms-3",role:"button","aria-label":"Dismiss",onClick:d=>{d.stopPropagation(),v?.(a);},children:"\xD7"}),a.new&&jsxRuntime.jsx("span",{className:"badge navpills-badge-new float-end ms-4",children:"New"})]},String(a.key)));return l?jsxRuntime.jsx("div",{className:chunkNPQQDBFB_cjs.a("navpills-bar px-2 bg-light rounded-0 mb-0",t),children:jsxRuntime.jsx("nav",{ref:i,className:"container nav nav-pills overflow-x-auto flex-nowrap",children:s})}):jsxRuntime.jsx("nav",{ref:i,className:chunkNPQQDBFB_cjs.a("nav nav-pills overflow-x-auto flex-nowrap",t),children:s})});r.displayName="NavPills";var g=r;exports.a=r;exports.b=g;//# sourceMappingURL=chunk-G26VJJWL.cjs.map
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21wb25lbnRzL05hdlBpbGxzLnRzeCJdLCJuYW1lcyI6WyJyZW5kZXJJY29uIiwiaWNvbiIsImpzeCIsImNuIiwiTmF2UGlsbHMiLCJvIiwiY29udGFpbiIsImFjdGl2ZSIsInBpbGxzIiwiY2xlYXIiLCJvbkNsaWNrIiwiY2xhc3NOYW1lIiwicmVmIiwiaXRlbXMiLCJyIiwianN4cyIsImUiLCJOYXZQaWxsc19kZWZhdWx0Il0sIm1hcHBpbmdzIjoib2VBNkNBLElBQU1BLENBQUFBLENBQWNDLENBQUFBLEVBQ2JBLEVBQ0QsT0FBT0EsQ0FBQUEsRUFBUyxRQUFBLENBQWlCQyxjQUFBQSxDQUFDLEtBQUUsU0FBQSxDQUFXQyxtQkFBQUEsQ0FBR0YsQ0FBQUEsQ0FBTSxNQUFNLEVBQUcsQ0FBQSxDQUM5REMsY0FBQUEsQ0FBQyxNQUFBLENBQUEsQ0FBSyxTQUFBLENBQVUsa0NBQW1DLFFBQUEsQ0FBQUQsQ0FBQUEsQ0FBSyxDQUFBLENBRjdDLElBQUEsQ0FlZEcsRUFBaUJDLFlBQUEsQ0FBQSxVQUFBLENBQXVDLENBQUMsQ0FDN0QsT0FBQSxDQUFBQyxDQUFBQSxDQUFVLE1BQ1YsTUFBQSxDQUFBQyxDQUFBQSxDQUNBLEtBQUEsQ0FBQUMsQ0FBQUEsQ0FDQSxNQUFBQyxDQUFBQSxDQUNBLE9BQUEsQ0FBQUMsQ0FBQUEsQ0FDQSxTQUFBLENBQUFDLENBQ0YsQ0FBQSxDQUFHQyxDQUFBQSxHQUFRLENBQ1QsSUFBTUMsR0FBU0wsQ0FBQUEsRUFBUyxFQUFDLEVBQUcsR0FBQSxDQUFLTSxHQUMvQkMsZUFBQUEsQ0FBQyxRQUFBLENBQUEsQ0FFQyxJQUFBLENBQUssUUFBQSxDQUNMLFVBQVdaLG1CQUFBQSxDQUFHLG1DQUFBLENBQXFDVyxDQUFBQSxDQUFFLEdBQUEsR0FBUVAsR0FBVSxRQUFRLENBQUEsQ0FDL0UsT0FBQSxDQUFTLElBQU1HLElBQVVJLENBQUMsQ0FBQSxDQUV6QixVQUFBZCxDQUFBQSxDQUFXYyxDQUFBQSxDQUFFLElBQUksQ0FBQSxDQUNsQlosY0FBQUEsQ0FBQyxNQUFBLENBQUEsQ0FBTSxRQUFBLENBQUFZLEVBQUUsR0FBQSxFQUFPQSxDQUFBQSxDQUFFLEtBQUEsQ0FBTSxDQUFBLENBQ3ZCQSxFQUFFLEtBQUEsRUFDRFosY0FBQUEsQ0FBQyxNQUFBLENBQUEsQ0FDQyxTQUFBLENBQVUsaURBQ1YsSUFBQSxDQUFLLFFBQUEsQ0FDTCxZQUFBLENBQVcsU0FBQSxDQUNYLFFBQVVjLENBQUFBLEVBQU0sQ0FBRUEsQ0FBQUEsQ0FBRSxlQUFBLEdBQW1CUCxDQUFBQSxHQUFRSyxDQUFDLEVBQUUsQ0FBQSxDQUNuRCxnQkFFRCxDQUFBLENBRURBLENBQUFBLENBQUUsR0FBQSxFQUNEWixjQUFBQSxDQUFDLFFBQUssU0FBQSxDQUFVLHlDQUFBLENBQTBDLGVBQUcsQ0FBQSxDQUFBLENBQUEsQ0FsQjFELE1BQUEsQ0FBT1ksRUFBRSxHQUFHLENBb0JuQixDQUNELENBQUEsQ0FFRCxPQUFJUixDQUFBQSxDQUVBSixjQUFBQSxDQUFDLEtBQUEsQ0FBQSxDQUFJLFNBQUEsQ0FBV0Msb0JBQUcsMkNBQUEsQ0FBNkNRLENBQVMsQ0FBQSxDQUN2RSxRQUFBLENBQUFULGVBQUMsS0FBQSxDQUFBLENBQUksR0FBQSxDQUFLVSxFQUFLLFNBQUEsQ0FBVSxxREFBQSxDQUN0QixTQUFBQyxDQUFBQSxDQUNILENBQUEsQ0FDRixDQUFBLENBS0ZYLGNBQUFBLENBQUMsT0FBSSxHQUFBLENBQUtVLENBQUFBLENBQUssU0FBQSxDQUFXVCxtQkFBQUEsQ0FBRyw0Q0FBNkNRLENBQVMsQ0FBQSxDQUNoRixRQUFBLENBQUFFLENBQUFBLENBQ0gsQ0FFSixDQUFDLEVBRURULEVBQVMsV0FBQSxDQUFjLFVBQUEsS0FHaEJhLENBQUFBLENBQVFiIiwiZmlsZSI6ImNodW5rLUcyNlZKSldMLmNqcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgY24gfSBmcm9tICcuLi9saWIvY24uanMnXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLyogIFR5cGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgTmF2UGlsbCB7XG4gIC8qKiBVbmlxdWUgcGlsbCBpZGVudGlmaWVyIOKAlCBjb21wYXJlZCBhZ2FpbnN0IGBhY3RpdmVgICovXG4gIGtleTogc3RyaW5nIHwgbnVtYmVyXG4gIC8qKiBQaWxsIGxhYmVsIHRleHQgKi9cbiAgbGFiZWw/OiBSZWFjdC5SZWFjdE5vZGVcbiAgLyoqIExlZ2FjeSBhbGlhcyBmb3IgYGxhYmVsYCAodGFrZXMgcHJlY2VkZW5jZSB3aGVuIGJvdGggYXJlIHNldCkgKi9cbiAgbGJsPzogUmVhY3QuUmVhY3ROb2RlXG4gIC8qKlxuICAgKiBPcHRpb25hbCBsZWFkaW5nIGljb24uIEEgc3RyaW5nIGlzIHJlbmRlcmVkIGFzIGA8aSBjbGFzc05hbWU9e2ljb259IC8+YFxuICAgKiAocGFzcyB0aGUgZnVsbCBpY29uIGNsYXNzLCBlLmcuIGBcImZhcyBmYS11c2VyXCJgIG9yIGBcImJpIGJpLXBlcnNvblwiYCk7XG4gICAqIGEgUmVhY3ROb2RlIChlLmcuIGEgTHVjaWRlIGVsZW1lbnQpIGlzIHJlbmRlcmVkIGFzLWlzLlxuICAgKi9cbiAgaWNvbj86IHN0cmluZyB8IFJlYWN0LlJlYWN0Tm9kZVxuICAvKiogU2hvdyBhIGRpc21pc3MgYmFkZ2Ugb24gdGhpcyBwaWxsIOKAlCBjbGlja2luZyBpdCBmaXJlcyBgb25DbGVhcmAgKi9cbiAgY2xlYXI/OiBib29sZWFuXG4gIC8qKiBTaG93IGEgXCJOZXdcIiBiYWRnZSBvbiB0aGlzIHBpbGwgKi9cbiAgbmV3PzogYm9vbGVhblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5hdlBpbGxzUHJvcHMge1xuICAvKiogUGlsbHMgdG8gcmVuZGVyICovXG4gIHBpbGxzOiBOYXZQaWxsW11cbiAgLyoqIEtleSBvZiB0aGUgY3VycmVudGx5IGFjdGl2ZSBwaWxsICovXG4gIGFjdGl2ZT86IHN0cmluZyB8IG51bWJlclxuICAvKiogRmlyZWQgd2hlbiBhIHBpbGwgaXMgY2xpY2tlZCAqL1xuICBvbkNsaWNrPzogKHBpbGw6IE5hdlBpbGwpID0+IHZvaWRcbiAgLyoqIEZpcmVkIHdoZW4gYSBwaWxsJ3MgZGlzbWlzcyBiYWRnZSBpcyBjbGlja2VkIChyZXF1aXJlcyBgcGlsbC5jbGVhcmApICovXG4gIGNsZWFyPzogKHBpbGw6IE5hdlBpbGwpID0+IHZvaWRcbiAgLyoqIFdyYXAgdGhlIHBpbGxzIGluIGEgZnVsbC13aWR0aCBsaWdodCBiYXIgd2l0aCBhIGNlbnRlcmVkIGAuY29udGFpbmVyYCAqL1xuICBjb250YWluPzogYm9vbGVhblxuICAvKiogQWRkaXRpb25hbCBDU1MgY2xhc3NlcyAob24gdGhlIHdyYXBwZXIgd2hlbiBgY29udGFpbmAsIGVsc2Ugb24gdGhlIG5hdikgKi9cbiAgY2xhc3NOYW1lPzogc3RyaW5nXG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLyogIE5hdlBpbGxzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbmNvbnN0IHJlbmRlckljb24gPSAoaWNvbjogTmF2UGlsbFsnaWNvbiddKTogUmVhY3QuUmVhY3ROb2RlID0+IHtcbiAgaWYgKCFpY29uKSByZXR1cm4gbnVsbFxuICBpZiAodHlwZW9mIGljb24gPT09ICdzdHJpbmcnKSByZXR1cm4gPGkgY2xhc3NOYW1lPXtjbihpY29uLCAnbWUtMicpfSAvPlxuICByZXR1cm4gPHNwYW4gY2xhc3NOYW1lPVwibWUtMiBkLWlubGluZS1mbGV4IGFsaWduLW1pZGRsZVwiPntpY29ufTwvc3Bhbj5cbn1cblxuLyoqXG4gKiBIb3Jpem9udGFsIEJvb3RzdHJhcCBuYXYtcGlsbHMgdGFiIHN0cmlwIHdpdGggb3B0aW9uYWwgaWNvbnMsXG4gKiBkaXNtaXNzaWJsZSBwaWxscywgYW5kIFwiTmV3XCIgYmFkZ2VzLiBTY3JvbGxzIGhvcml6b250YWxseSBvbiBvdmVyZmxvdy5cbiAqXG4gKiAqKkltcG9ydGFudDoqKiBUaGUgYWNjb21wYW55aW5nIENTUyAqKm11c3QqKiBiZSBpbXBvcnRlZCBmb3IgdGhlIGJhZGdlcyB0b1xuICogcmVuZGVyIGNvcnJlY3RseTpcbiAqIGBgYGpzXG4gKiBpbXBvcnQgJ3JlYWN0LWJvb3RzdHJhcC1wbHVnaW5zL2Nzcy9wbHVnaW5zLmNzcydcbiAqIGBgYFxuICovXG5jb25zdCBOYXZQaWxscyA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTEVsZW1lbnQsIE5hdlBpbGxzUHJvcHM+KCh7XG4gIGNvbnRhaW4gPSBmYWxzZSxcbiAgYWN0aXZlLFxuICBwaWxscyxcbiAgY2xlYXIsXG4gIG9uQ2xpY2ssXG4gIGNsYXNzTmFtZSxcbn0sIHJlZikgPT4ge1xuICBjb25zdCBpdGVtcyA9IChwaWxscyA/PyBbXSkubWFwKChyKSA9PiAoXG4gICAgPGJ1dHRvblxuICAgICAga2V5PXtTdHJpbmcoci5rZXkpfVxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzc05hbWU9e2NuKCduYXYtbGluayB0ZXh0LWNlbnRlciBhbGlnbi1taWRkbGUnLCByLmtleSA9PT0gYWN0aXZlICYmICdhY3RpdmUnKX1cbiAgICAgIG9uQ2xpY2s9eygpID0+IG9uQ2xpY2s/LihyKX1cbiAgICA+XG4gICAgICB7cmVuZGVySWNvbihyLmljb24pfVxuICAgICAgPHNwYW4+e3IubGJsID8/IHIubGFiZWx9PC9zcGFuPlxuICAgICAge3IuY2xlYXIgJiYgKFxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzTmFtZT1cImJhZGdlIG5hdnBpbGxzLWJhZGdlLWNsZWFyIG15LTAgZmxvYXQtZW5kIG1zLTNcIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJEaXNtaXNzXCJcbiAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4geyBlLnN0b3BQcm9wYWdhdGlvbigpOyBjbGVhcj8uKHIpIH19XG4gICAgICAgID5cbiAgICAgICAgICAmdGltZXM7XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICl9XG4gICAgICB7ci5uZXcgJiYgKFxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJiYWRnZSBuYXZwaWxscy1iYWRnZS1uZXcgZmxvYXQtZW5kIG1zLTRcIj5OZXc8L3NwYW4+XG4gICAgICApfVxuICAgIDwvYnV0dG9uPlxuICApKVxuXG4gIGlmIChjb250YWluKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbignbmF2cGlsbHMtYmFyIHB4LTIgYmctbGlnaHQgcm91bmRlZC0wIG1iLTAnLCBjbGFzc05hbWUpfT5cbiAgICAgICAgPG5hdiByZWY9e3JlZn0gY2xhc3NOYW1lPVwiY29udGFpbmVyIG5hdiBuYXYtcGlsbHMgb3ZlcmZsb3cteC1hdXRvIGZsZXgtbm93cmFwXCI+XG4gICAgICAgICAge2l0ZW1zfVxuICAgICAgICA8L25hdj5cbiAgICAgIDwvZGl2PlxuICAgIClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPG5hdiByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbignbmF2IG5hdi1waWxscyBvdmVyZmxvdy14LWF1dG8gZmxleC1ub3dyYXAnLCBjbGFzc05hbWUpfT5cbiAgICAgIHtpdGVtc31cbiAgICA8L25hdj5cbiAgKVxufSlcblxuTmF2UGlsbHMuZGlzcGxheU5hbWUgPSAnTmF2UGlsbHMnXG5cbmV4cG9ydCB7IE5hdlBpbGxzIH1cbmV4cG9ydCBkZWZhdWx0IE5hdlBpbGxzXG4iXX0=
@@ -0,0 +1,2 @@
1
+ import {a}from'./chunk-RR7TBRGI.js';import*as s from'react';import {createPortal}from'react-dom';import {jsxs,jsx,Fragment}from'react/jsx-runtime';var Ie=["Su","Mo","Tu","We","Th","Fr","Sa"],Ae=["January","February","March","April","May","June","July","August","September","October","November","December"],He=Array.from({length:60},(a,t)=>t),v=12,V=(a,t)=>new Date(a,t+1,0).getDate(),se=(a,t)=>a!==null&&t!==null&&a.getFullYear()===t.getFullYear()&&a.getMonth()===t.getMonth()&&a.getDate()===t.getDate(),Oe=(a,t,u)=>!(t&&a<new Date(t.getFullYear(),t.getMonth(),t.getDate())||u&&a>new Date(u.getFullYear(),u.getMonth(),u.getDate())),Fe=(a,t)=>{let u=new Date(a,t,1).getDay(),m=V(a,t),p=[],b=V(a,t-1);for(let c=u-1;c>=0;c--){let D=b-c;p.push({day:D,date:new Date(a,t-1,D),isOutside:true});}for(let c=1;c<=m;c++)p.push({day:c,date:new Date(a,t,c),isOutside:false});let y=42-p.length;for(let c=1;c<=y;c++)p.push({day:c,date:new Date(a,t+1,c),isOutside:true});return p},z=(a,t,u)=>{if(!a||isNaN(a.getTime()))return "";let m=a.getFullYear(),p=String(a.getMonth()+1).padStart(2,"0"),b=String(a.getDate()).padStart(2,"0"),y=a.getHours(),c=String(a.getMinutes()).padStart(2,"0"),D=y>=12?"PM":"AM";y=y%12||12;let h=String(y).padStart(2,"0");if(u)return u.replace("yyyy",String(m)).replace("MM",p).replace("dd",b).replace("hh",h).replace("mm",c).replace("aa",D);switch(t){case "time":return `${h}:${c} ${D}`;case "datetime":return `${m}-${p}-${b} ${h}:${c} ${D}`;default:return `${m}-${p}-${b}`}},F=(a,t,u="date")=>({target:{value:a,name:t,type:u},preventDefault:()=>{},stopPropagation:()=>{},nativeEvent:null}),Le={date:300,time:300,datetime:400,year:250},$e={date:280,time:220,datetime:440,year:280},ie={position:"fixed",top:0,left:0,width:"max-content",visibility:"hidden",zIndex:1070},We=typeof window<"u"?s.useLayoutEffect:s.useEffect,_e=a=>{if(!a)return document.documentElement;let t=a.parentElement;for(;t;){let u=window.getComputedStyle(t),m=u.overflowY||u.overflow;if(m==="auto"||m==="scroll")return t;t=t.parentElement;}return document.documentElement},ze=(a,t,u)=>{if(!a)return {};let m=a.getBoundingClientRect(),p=t||300,b=window.innerHeight-m.bottom,y=m.top,c=b<p&&y>b,D=window.innerWidth<576?220:260,h=u||D;return {position:"fixed",top:c?Math.max(4,m.top-p-4):m.bottom+4,left:Math.max(4,Math.min(m.left,window.innerWidth-h-4)),minWidth:D,width:"max-content",maxWidth:window.innerWidth-8,zIndex:1070}},oe=s.forwardRef(({className:a$1,mode:t="date",selected:u,value:m,onChange:p,dateFormat:b,placeholderText:y,size:c,isClearable:D=false,disabled:h=false,minDate:le,maxDate:ce,timeIntervals:Ue=5,timezone:qe="Kampala",id:ue,name:N,...de},L)=>{let J=e=>{if(!e)return null;if(e instanceof Date)return isNaN(e.getTime())?null:e;if(typeof e=="string"||typeof e=="number"){let n=new Date(e);if(!isNaN(n.getTime()))return n;if(typeof e=="string"){let d=e.match(/^(\d{1,2}):(\d{2})\s*(AM|PM)$/i);if(d){let r=parseInt(d[1],10),f=parseInt(d[2],10),_=d[3].toUpperCase();r===12&&_==="AM"&&(r=0),r!==12&&_==="PM"&&(r+=12);let Z=new Date;return new Date(Z.getFullYear(),Z.getMonth(),Z.getDate(),r,f,0,0)}let l=e.match(/^(\d{4})-(\d{2})-(\d{2})\s+(\d{1,2}):(\d{2})\s*(AM|PM)$/i);if(l){let r=parseInt(l[4],10),f=parseInt(l[5],10),_=l[6].toUpperCase();return r===12&&_==="AM"&&(r=0),r!==12&&_==="PM"&&(r+=12),new Date(parseInt(l[1]),parseInt(l[2])-1,parseInt(l[3]),r,f,0,0)}}return null}return null},o=s.useMemo(()=>J(u??m),[u instanceof Date?u.getTime():u,m instanceof Date?m.getTime():m]),ee=t==="date"||t==="datetime",S=t==="time"||t==="datetime",[E,A]=s.useState(false),[P,U]=s.useState(()=>o?o.getFullYear():new Date().getFullYear()),[w,j]=s.useState(()=>o?o.getMonth():new Date().getMonth()),[M,R]=s.useState(o),[x,te]=s.useState(()=>o&&o.getHours()%12||12),[C,ne]=s.useState(()=>o?o.getMinutes():0),[T,ae]=s.useState(()=>o&&o.getHours()>=12?"PM":"AM"),[$,H]=s.useState(false),[Q,q]=s.useState(()=>Math.floor((o?o.getFullYear():new Date().getFullYear())/v)*v),[me,re]=s.useState(ie),O=s.useRef(null),Y=s.useRef(null),K=s.useRef(null);s.useEffect(()=>{let e=document.createElement("div");return e.className="datepicker-portal-root",document.body.appendChild(e),K.current=e,()=>{e.parentNode&&document.body.removeChild(e),K.current=null;}},[]),s.useEffect(()=>{o&&!isNaN(o.getTime())?(R(o),U(o.getFullYear()),j(o.getMonth()),te(o.getHours()%12||12),ne(o.getMinutes()),ae(o.getHours()>=12?"PM":"AM"),q(Math.floor(o.getFullYear()/v)*v)):R(null);},[o]),We(()=>{if(!E){re(ie);return}let e=()=>Y.current?Y.current.getBoundingClientRect().height:Le[$?"year":t]||300,n=()=>Y.current?Y.current.getBoundingClientRect().width:$e[$?"year":t]||280,d=_e(O.current),l=()=>{re(ze(O.current,e(),n()));};l();let r=0,f=()=>{cancelAnimationFrame(r),r=requestAnimationFrame(l);};return d.addEventListener("scroll",f,{passive:true}),window.addEventListener("resize",f),()=>{cancelAnimationFrame(r),d.removeEventListener("scroll",f),window.removeEventListener("resize",f);}},[E,t,$]),s.useEffect(()=>{if(!E)return;let e=n=>{Y.current&&!Y.current.contains(n.target)&&O.current&&!O.current.contains(n.target)&&(A(false),H(false));};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[E]);let I=(e,n,d,l)=>{let r=new Date(e),f=n%12;return l==="PM"&&(f+=12),f===12&&l==="AM"&&(f=0),r.setHours(f,d,0,0),r},W=e=>{if(!e||isNaN(e.getTime()))return;let n=z(e,t,b);p?.(F(n,N||"",t));},pe=e=>{if(!e){p?.(F(null,N||"",t)),A(false),H(false);return}W(e),t==="date"&&(A(false),H(false));},fe=e=>{if(R(e),t==="date")pe(e);else if(t==="datetime"){let n=I(e,x,C,T);W(n);}},ge=Fe(P,w),be=()=>{let e=P,n=w;w===0?(e=P-1,n=11):n=w-1,U(e),j(n);let d=M||new Date,l=V(e,n),r=new Date(e,n,Math.min(d.getDate(),l));R(r),W(S?I(r,x,C,T):r);},ve=()=>{let e=P,n=w;w===11?(e=P+1,n=0):n=w+1,U(e),j(n);let d=M||new Date,l=V(e,n),r=new Date(e,n,Math.min(d.getDate(),l));R(r),W(S?I(r,x,C,T):r);},De=new Date,B=J(le),G=J(ce),ye=B?new Date(B.getFullYear(),B.getMonth(),B.getDate()):null,he=G?new Date(G.getFullYear(),G.getMonth(),G.getDate()):null,we=e=>{if(te(e),S){let n=I(M||new Date,e,C,T);p?.(F(z(n,t,b),N||"",t));}},Me=e=>{if(ne(e),S){let n=I(M||new Date,x,e,T);p?.(F(z(n,t,b),N||"",t));}},ke=e=>{if(ae(e),S){let n=I(M||new Date,x,C,e);p?.(F(z(n,t,b),N||"",t));}},Ne=()=>{q(Math.floor(P/v)*v),H(true);},Se=e=>{U(e),H(false);let n=M||new Date,d=V(e,w),l=new Date(e,w,Math.min(n.getDate(),d));R(l),W(S?I(l,x,C,T):l);},X=Math.floor(Q/v)*v,Ee=Array.from({length:v},(e,n)=>X+n),Pe=e=>{e.stopPropagation(),R(null),p?.(F(null,N||""));},Re=e=>{e.key==="Escape"&&(A(false),H(false),O.current?.blur()),(e.key==="ArrowDown"||e.key==="Enter"||e.key===" ")&&(e.preventDefault(),A(true));},xe=s.useCallback(e=>{O.current=e,typeof L=="function"?L(e):L&&(L.current=e);},[L]),Ce=y??(t==="time"?"Select time":t==="datetime"?"Select date & time":"Select date"),Te=jsxs("div",{ref:Y,className:a("datepicker-popover card border shadow-sm",t==="datetime"&&"datepicker-popover--wide"),style:me,children:[$&&ee&&jsxs("div",{className:"datepicker-year-picker p-3",children:[jsxs("div",{className:"d-flex align-items-center justify-content-between mb-2",children:[jsx("button",{type:"button",className:"btn btn-sm btn-outline-secondary border-0 px-1",onClick:()=>q(Q-v),"aria-label":"Previous years",children:"\u2039"}),jsxs("span",{className:"fw-semibold small",children:[X," \u2013 ",X+v-1]}),jsx("button",{type:"button",className:"btn btn-sm btn-outline-secondary border-0 px-1",onClick:()=>q(Q+v),"aria-label":"Next years",children:"\u203A"})]}),jsx("div",{className:"datepicker-year-grid",children:Ee.map(e=>{let n=e===new Date().getFullYear(),d=M&&e===M.getFullYear();return jsx("button",{type:"button",className:a("datepicker-year-cell btn btn-sm",d&&"btn-primary",!d&&n&&"btn-outline-primary",!d&&!n&&"btn-light border"),onClick:()=>Se(e),children:e},e)})})]}),!$&&jsx(Fragment,{children:jsxs("div",{className:a("d-flex",t==="datetime"?"flex-row":"flex-column"),children:[ee&&jsxs("div",{className:"datepicker-calendar p-2",children:[jsxs("div",{className:"d-flex align-items-center justify-content-between mb-2",children:[jsx("button",{type:"button",className:"btn btn-sm btn-outline-secondary border-0 px-1",onClick:be,"aria-label":"Previous month",children:"\u2039"}),jsxs("div",{className:"d-flex align-items-center gap-1",children:[jsx("span",{className:"fw-semibold small",children:Ae[w]}),jsx("button",{type:"button",className:"btn btn-sm btn-link text-decoration-none text-primary fw-semibold small p-0",onClick:Ne,"aria-label":"Choose year",children:P})]}),jsx("button",{type:"button",className:"btn btn-sm btn-outline-secondary border-0 px-1",onClick:ve,"aria-label":"Next month",children:"\u203A"})]}),jsx("div",{className:"datepicker-days-header",children:Ie.map(e=>jsx("div",{className:"datepicker-day-label",children:e},e))}),jsx("div",{className:"datepicker-days-grid",children:ge.map((e,n)=>{let d=se(e.date,De),l=M&&se(e.date,M),r=Oe(e.date,ye,he),f=e.isOutside||!r;return jsx("button",{type:"button",disabled:f,className:a("datepicker-day",d&&"datepicker-day--today",l&&"datepicker-day--selected",e.isOutside&&"datepicker-day--outside",!r&&"datepicker-day--disabled"),onClick:()=>fe(e.date),tabIndex:e.isOutside?-1:0,children:e.day},n)})})]}),t==="datetime"&&jsx("div",{className:"vr mx-1 my-2"}),S&&jsxs("div",{className:"datepicker-time p-2 d-flex flex-column",style:{minWidth:180},children:[t==="datetime"&&jsx("div",{className:"small fw-semibold text-muted text-center mb-1",children:"Time"}),jsxs("div",{className:"d-flex justify-content-center gap-2",children:[jsxs("div",{className:"datepicker-time-col",children:[jsx("div",{className:"datepicker-time-col-label",children:"Hour"}),jsx("div",{className:"datepicker-time-col-scroll",children:Array.from({length:12},(e,n)=>n+1).map(e=>jsx("button",{type:"button",className:a("datepicker-time-item",e===x&&"active"),onClick:()=>we(e),children:String(e).padStart(2,"0")},e))})]}),jsx("span",{className:"datepicker-time-separator",children:":"}),jsxs("div",{className:"datepicker-time-col",children:[jsx("div",{className:"datepicker-time-col-label",children:"Min"}),jsx("div",{className:"datepicker-time-col-scroll",children:He.map(e=>jsx("button",{type:"button",className:a("datepicker-time-item",e===C&&"active"),onClick:()=>Me(e),children:String(e).padStart(2,"0")},e))})]}),jsxs("div",{className:"datepicker-time-col",children:[jsx("div",{className:"datepicker-time-col-label",children:"\xA0"}),jsx("div",{className:"d-flex flex-column gap-1 mt-1",children:["AM","PM"].map(e=>jsx("button",{type:"button",className:a("datepicker-time-item","datepicker-time-item--ampm",T===e&&"active"),onClick:()=>ke(e),children:e},e))})]})]})]})]})})]});return jsxs("div",{className:"datepicker-wrapper position-relative d-inline-block w-100",style:{minWidth:0},children:[jsxs("div",{className:"position-relative",children:[jsx("input",{ref:xe,id:ue,name:N,type:"text",readOnly:true,disabled:h,className:a("form-control",c==="sm"&&"form-control-sm",c==="lg"&&"form-control-lg","pe-5",a$1),placeholder:Ce,value:z(o,t,b),onClick:()=>!h&&A(!E),onKeyDown:Re,"aria-haspopup":"dialog","aria-expanded":E,autoComplete:"off",...de}),D&&o&&!h&&jsx("button",{type:"button",className:"btn btn-sm btn-link position-absolute top-50 end-0 translate-middle-y pe-2 text-secondary",style:{zIndex:2},onClick:Pe,tabIndex:-1,"aria-label":"Clear",children:"\xD7"})]}),E&&!h&&K.current&&createPortal(Te,K.current)]})});oe.displayName="DatePicker";var Ge=oe;export{oe as a,Ge as b};//# sourceMappingURL=chunk-GCPYN7WB.js.map
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21wb25lbnRzL0RhdGVQaWNrZXIudHN4Il0sIm5hbWVzIjpbIkRBWVNfT0ZfV0VFSyIsIk1PTlRIUyIsIk1JTlVURVMiLCJfIiwiaSIsIllFQVJTX1BFUl9QQUdFIiwiZGF5c0luTW9udGgiLCJ5ZWFyIiwibW9udGgiLCJpc1NhbWVEYXkiLCJiIiwiaXNEYXRlSW5SYW5nZSIsImRhdGUiLCJtaW4iLCJtYXgiLCJidWlsZENhbGVuZGFyR3JpZCIsImZpcnN0RGF5IiwidG90YWxEYXlzIiwiY2VsbHMiLCJwcmV2TW9udGhEYXlzIiwiZGF5IiwiZCIsInJlbWFpbmluZyIsImZvcm1hdFZhbHVlIiwibW9kZSIsImZtdCIsInkiLCJNIiwiaCIsIm0iLCJhIiwiaGgiLCJtYWtlRXZlbnQiLCJ2YWx1ZSIsImlucHV0TmFtZSIsInR5cGUiLCJQT1BPVkVSX0dVRVNTIiwiUE9QT1ZFUl9XSURUSF9HVUVTUyIsIlBSRV9QT1NJVElPTl9TVFlMRSIsInVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QiLCJnZXRTY3JvbGxQYXJlbnQiLCJlbCIsInBhcmVudCIsInN0eWxlIiwib3ZlcmZsb3dZIiwiY2FsY1BvcG92ZXJTdHlsZSIsImlucHV0RWwiLCJwb3BvdmVySGVpZ2h0IiwicG9wb3ZlcldpZHRoIiwicmVjdCIsInNwYWNlQmVsb3ciLCJzcGFjZUFib3ZlIiwicGxhY2VBYm92ZSIsIm1pblciLCJ3IiwiRGF0ZVBpY2tlciIsImNsYXNzTmFtZSIsInNlbGVjdGVkIiwib25DaGFuZ2UiLCJkYXRlRm9ybWF0IiwicGxhY2Vob2xkZXJUZXh0Iiwic2l6ZSIsImlzQ2xlYXJhYmxlIiwiZGlzYWJsZWQiLCJtaW5EYXRlIiwibWF4RGF0ZSIsInRpbWVJbnRlcnZhbHMiLCJ0aW1lem9uZSIsImlkIiwibmFtZSIsInByb3BzIiwicmVmIiwicmVzb2x2ZVZhbHVlIiwidiIsInRpbWVNYXRjaCIsImFwIiwibm93IiwiZHRNYXRjaCIsInJlc29sdmVkVmFsdWUiLCJzaG93Q2FsZW5kYXIiLCJzaG93VGltZSIsImlzT3BlbiIsInNldElzT3BlbiIsInZpZXdZZWFyIiwic2V0Vmlld1llYXIiLCJ2aWV3TW9udGgiLCJzZXRWaWV3TW9udGgiLCJ0ZW1wRGF0ZSIsInNldFRlbXBEYXRlIiwidGVtcEhvdXJzIiwic2V0VGVtcEhvdXJzIiwidGVtcE1pbnMiLCJzZXRUZW1wTWlucyIsInRlbXBBbVBtIiwic2V0VGVtcEFtUG0iLCJzaG93WWVhclBpY2tlciIsInNldFNob3dZZWFyUGlja2VyIiwieWVhclBhZ2UiLCJzZXRZZWFyUGFnZSIsInBvcG92ZXJTdHlsZSIsInNldFBvcG92ZXJTdHlsZSIsImlucHV0UmVmIiwicG9wb3ZlclJlZiIsInBvcnRhbFJlZiIsImdldEhlaWdodCIsImdldFdpZHRoIiwic2Nyb2xsUGFyZW50IiwidXBkYXRlIiwicmFmIiwic2NoZWR1bGVVcGRhdGUiLCJoYW5kbGVyIiwiZSIsImJ1aWxkRGF0ZSIsImJhc2UiLCJoMTIiLCJtaW5zIiwiYW1wbSIsImZpcmVDaGFuZ2UiLCJmb3JtYXR0ZWQiLCJjb21taXQiLCJjb21taXREYXRlT25seSIsImdyaWQiLCJoYW5kbGVQcmV2TW9udGgiLCJuZXdZIiwibmV3TSIsIm1heEQiLCJuZXdEYXRlIiwiaGFuZGxlTmV4dE1vbnRoIiwidG9kYXkiLCJyZXNvbHZlZE1pbiIsInJlc29sdmVkTWF4IiwibWluRHQiLCJtYXhEdCIsImhhbmRsZUhvdXJDaGFuZ2UiLCJoYW5kbGVNaW5DaGFuZ2UiLCJoYW5kbGVBbVBtQ2hhbmdlIiwib3BlblllYXJQaWNrZXIiLCJoYW5kbGVZZWFyU2VsZWN0IiwieWVhclBhZ2VTdGFydCIsInllYXJzIiwiaGFuZGxlQ2xlYXIiLCJoYW5kbGVJbnB1dEtleURvd24iLCJtZXJnZUlucHV0UmVmIiwibm9kZSIsInBsYWNlaG9sZGVyIiwicG9wb3ZlciIsImpzeHMiLCJjbiIsImpzeCIsImlzQ3VycmVudFllYXIiLCJpc1NlbGVjdGVkIiwiRnJhZ21lbnQiLCJjZWxsIiwiaXNUb2RheSIsImluUmFuZ2UiLCJpc0Rpc2FibGVkRGF5IiwiY3JlYXRlUG9ydGFsIiwiRGF0ZVBpY2tlcl9kZWZhdWx0Il0sIm1hcHBpbmdzIjoibUpBMERBLElBQU1BLEVBQUFBLENBQWUsQ0FBQyxJQUFBLENBQU0sSUFBQSxDQUFNLElBQUEsQ0FBTSxJQUFBLENBQU0sSUFBQSxDQUFNLEtBQU0sSUFBSSxDQUFBLENBQ3hEQyxFQUFBQSxDQUFTLENBQ2IsVUFBVyxVQUFBLENBQVksT0FBQSxDQUFTLE9BQUEsQ0FBUyxLQUFBLENBQU8sT0FDaEQsTUFBQSxDQUFRLFFBQUEsQ0FBVSxXQUFBLENBQWEsU0FBQSxDQUFXLFVBQUEsQ0FBWSxVQUN4RCxDQUFBLENBQ01DLEVBQUFBLENBQVUsTUFBTSxJQUFBLENBQUssQ0FBRSxNQUFBLENBQVEsRUFBRyxFQUFHLENBQUNDLENBQUFBLENBQUdDLENBQUFBLEdBQU1BLENBQUMsRUFDaERDLENBQUFBLENBQWlCLEVBQUEsQ0FNakJDLENBQUFBLENBQWMsQ0FBQ0MsQ0FBQUEsQ0FBY0MsQ0FBQUEsR0FDakMsSUFBSSxJQUFBLENBQUtELEVBQU1DLENBQUFBLENBQVEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLFNBQVEsQ0FFakNDLEVBQUFBLENBQVksQ0FBQyxDQUFBLENBQWdCQyxJQUNqQyxDQUFBLEdBQU0sSUFBQSxFQUFRQSxDQUFBQSxHQUFNLElBQUEsRUFDcEIsQ0FBQSxDQUFFLFdBQUEsRUFBWSxHQUFNQSxDQUFBQSxDQUFFLGFBQVksRUFDbEMsQ0FBQSxDQUFFLFFBQUEsRUFBUyxHQUFNQSxDQUFBQSxDQUFFLFFBQUEsRUFBUyxFQUM1QixDQUFBLENBQUUsU0FBUSxHQUFNQSxDQUFBQSxDQUFFLE9BQUEsRUFBUSxDQUV0QkMsRUFBQUEsQ0FBZ0IsQ0FBQ0MsQ0FBQUEsQ0FBWUMsQ0FBQUEsQ0FBa0JDLElBQy9DLEVBQUFELENBQUFBLEVBQU9ELENBQUFBLENBQU8sSUFBSSxLQUFLQyxDQUFBQSxDQUFJLFdBQUEsRUFBWSxDQUFHQSxDQUFBQSxDQUFJLFVBQVMsQ0FB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LFNBQVVOLENBQUFBLENBQ1YsU0FBQSxDQUFXb0YsQ0FBQUEsQ0FDVCxjQUFBLENBQ0F0RixJQUFTLElBQUEsRUFBUSxpQkFBQSxDQUNqQkEsQ0FBQUEsR0FBUyxJQUFBLEVBQVEsaUJBQUEsQ0FDakIsTUFBQSxDQUNBTCxHQUNGLENBQUEsQ0FDQSxZQUFhd0YsRUFBQUEsQ0FDYixLQUFBLENBQU96SCxDQUFBQSxDQUFZdUQsQ0FBQUEsQ0FBZXRELEVBQU1tQyxDQUFVLENBQUEsQ0FDbEQsT0FBQSxDQUFTLElBQU0sQ0FBQ0ksQ0FBQUEsRUFBWW1CLENBQUFBLENBQVUsQ0FBQ0QsQ0FBTSxDQUFBLENBQzdDLFNBQUEsQ0FBVzRELEVBQUFBLENBQ1gsZUFBQSxDQUFjLFNBQ2QsZUFBQSxDQUFlNUQsQ0FBQUEsQ0FDZixZQUFBLENBQWEsS0FBQSxDQUNaLEdBQUdYLEVBQUFBLENBQ04sQ0FBQSxDQUVDUixDQUFBQSxFQUFlZ0IsQ0FBQUEsRUFBaUIsQ0FBQ2YsQ0FBQUEsRUFDaENxRixHQUFBQSxDQUFDLFFBQUEsQ0FBQSxDQUNDLElBQUEsQ0FBSyxRQUFBLENBQ0wsU0FBQSxDQUFVLDJGQUFBLENBQ1YsS0FBQSxDQUFPLENBQUUsTUFBQSxDQUFRLENBQUUsQ0FBQSxDQUNuQixPQUFBLENBQVNSLEdBQ1QsUUFBQSxDQUFVLEVBQUEsQ0FDVixZQUFBLENBQVcsT0FBQSxDQUNaLGdCQUVELENBQUEsQ0FBQSxDQUVKLENBQUEsQ0FHQzNELENBQUFBLEVBQVUsQ0FBQ2xCLENBQUFBLEVBQVl3QyxDQUFBQSxDQUFVLE9BQUEsRUFBV3FELFlBQUFBLENBQWFYLEdBQVMxQyxDQUFBQSxDQUFVLE9BQU8sQ0FBQSxDQUFBLENBQ3RGLENBRUosQ0FBQyxFQUVEaEQsRUFBQUEsQ0FBVyxXQUFBLENBQWMsWUFBQSxLQUdsQnNHLEVBQUFBLENBQVF0RyIsImZpbGUiOiJjaHVuay1HQ1BZTjdXQi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSAncmVhY3QtZG9tJ1xuaW1wb3J0IHsgY24gfSBmcm9tICcuLi9saWIvY24uanMnXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLyogIFR5cGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZVBpY2tlckNoYW5nZUV2ZW50IHtcbiAgdGFyZ2V0OiB7XG4gICAgdmFsdWU6IHN0cmluZyB8IG51bGxcbiAgICBuYW1lOiBzdHJpbmdcbiAgICB0eXBlOiBzdHJpbmdcbiAgfVxuICBwcmV2ZW50RGVmYXVsdDogKCkgPT4gdm9pZFxuICBzdG9wUHJvcGFnYXRpb246ICgpID0+IHZvaWRcbiAgbmF0aXZlRXZlbnQ6IG51bGxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRlUGlja2VyUHJvcHMge1xuICAvKiogUGlja2VyIG1vZGUgKGRlZmF1bHQgJ2RhdGUnKSAqL1xuICBtb2RlPzogJ2RhdGUnIHwgJ3RpbWUnIHwgJ2RhdGV0aW1lJ1xuICAvKiogQ3VycmVudGx5IHNlbGVjdGVkIERhdGUgKGFsaWFzIGZvciB2YWx1ZSkgKi9cbiAgc2VsZWN0ZWQ/OiBEYXRlIHwgbnVsbFxuICAvKiogQ3VycmVudGx5IHNlbGVjdGVkIERhdGUsIElTTyBzdHJpbmcsIFwiaGg6bW0gQUFcIiB0aW1lIHN0cmluZywgXCJZWVlZLU1NLUREIGhoOm1tIEFBXCIgZGF0ZXRpbWUgc3RyaW5nLCBvciB0aW1lc3RhbXAgKi9cbiAgdmFsdWU/OiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyIHwgbnVsbFxuICAvKiogU3ludGhldGljIGV2ZW50IGhhbmRsZXIg4oCUIGUudGFyZ2V0LnZhbHVlIGlzIGEgcHJlLWZvcm1hdHRlZCBzdHJpbmcgKi9cbiAgb25DaGFuZ2U/OiAoZTogRGF0ZVBpY2tlckNoYW5nZUV2ZW50KSA9PiB2b2lkXG4gIC8qKiBEaXNwbGF5IGZvcm1hdCB3aXRoIHRva2VuczogeXl5eSwgTU0sIGRkLCBoaCwgbW0sIGFhICovXG4gIGRhdGVGb3JtYXQ/OiBzdHJpbmdcbiAgLyoqIFBsYWNlaG9sZGVyIHRleHQgd2hlbiBlbXB0eSAqL1xuICBwbGFjZWhvbGRlclRleHQ/OiBzdHJpbmdcbiAgLyoqIEJvb3RzdHJhcCBzaXplIHZhcmlhbnQgKi9cbiAgc2l6ZT86ICdzbScgfCAnbGcnXG4gIC8qKiBTaG93IGEgY2xlYXIgYnV0dG9uIG9uIHRoZSBpbnB1dCAqL1xuICBpc0NsZWFyYWJsZT86IGJvb2xlYW5cbiAgLyoqIERpc2FibGUgdGhlIGlucHV0ICovXG4gIGRpc2FibGVkPzogYm9vbGVhblxuICAvKiogRWFybGllc3Qgc2VsZWN0YWJsZSBkYXRlIOKAlCBEYXRlLCBJU08vXCJZWVlZLU1NLUREXCIgc3RyaW5nLCBvciB0aW1lc3RhbXAgKGUuZy4gYW5vdGhlciBEYXRlUGlja2VyJ3Mgb25DaGFuZ2UgdmFsdWUpICovXG4gIG1pbkRhdGU/OiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyIHwgbnVsbFxuICAvKiogTGF0ZXN0IHNlbGVjdGFibGUgZGF0ZSDigJQgRGF0ZSwgSVNPL1wiWVlZWS1NTS1ERFwiIHN0cmluZywgb3IgdGltZXN0YW1wIChlLmcuIGFub3RoZXIgRGF0ZVBpY2tlcidzIG9uQ2hhbmdlIHZhbHVlKSAqL1xuICBtYXhEYXRlPzogRGF0ZSB8IHN0cmluZyB8IG51bWJlciB8IG51bGxcbiAgLyoqIE1pbnV0ZSBzdGVwIGluIHRoZSB0aW1lIGxpc3QgKGRlZmF1bHQgNSkgKi9cbiAgdGltZUludGVydmFscz86IG51bWJlclxuICAvKiogVGltZXpvbmUgaWRlbnRpZmllciAoZGVmYXVsdCAnS2FtcGFsYScpICovXG4gIHRpbWV6b25lPzogc3RyaW5nXG4gIC8qKiBBZGRpdGlvbmFsIENTUyBjbGFzc2VzIG9uIHRoZSBpbnB1dCAqL1xuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgLyoqIElucHV0IGVsZW1lbnQgSUQgKi9cbiAgaWQ/OiBzdHJpbmdcbiAgLyoqIElucHV0IG5hbWUgYXR0cmlidXRlIOKAlCBzdXJmYWNlcyBhcyBlLnRhcmdldC5uYW1lIGluIG9uQ2hhbmdlICovXG4gIG5hbWU/OiBzdHJpbmdcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vKiAgQ29uc3RhbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5jb25zdCBEQVlTX09GX1dFRUsgPSBbJ1N1JywgJ01vJywgJ1R1JywgJ1dlJywgJ1RoJywgJ0ZyJywgJ1NhJ11cbmNvbnN0IE1PTlRIUyA9IFtcbiAgJ0phbnVhcnknLCAnRmVicnVhcnknLCAnTWFyY2gnLCAnQXByaWwnLCAnTWF5JywgJ0p1bmUnLFxuICAnSnVseScsICdBdWd1c3QnLCAnU2VwdGVtYmVyJywgJ09jdG9iZXInLCAnTm92ZW1iZXInLCAnRGVjZW1iZXInLFxuXVxuY29uc3QgTUlOVVRFUyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IDYwIH0sIChfLCBpKSA9PiBpKVxuY29uc3QgWUVBUlNfUEVSX1BBR0UgPSAxMlxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qICBIZWxwZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbmNvbnN0IGRheXNJbk1vbnRoID0gKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlcik6IG51bWJlciA9PlxuICBuZXcgRGF0ZSh5ZWFyLCBtb250aCArIDEsIDApLmdldERhdGUoKVxuXG5jb25zdCBpc1NhbWVEYXkgPSAoYTogRGF0ZSB8IG51bGwsIGI6IERhdGUgfCBudWxsKTogYm9vbGVhbiA9PlxuICBhICE9PSBudWxsICYmIGIgIT09IG51bGwgJiZcbiAgYS5nZXRGdWxsWWVhcigpID09PSBiLmdldEZ1bGxZZWFyKCkgJiZcbiAgYS5nZXRNb250aCgpID09PSBiLmdldE1vbnRoKCkgJiZcbiAgYS5nZXREYXRlKCkgPT09IGIuZ2V0RGF0ZSgpXG5cbmNvbnN0IGlzRGF0ZUluUmFuZ2UgPSAoZGF0ZTogRGF0ZSwgbWluOiBEYXRlIHwgbnVsbCwgbWF4OiBEYXRlIHwgbnVsbCk6IGJvb2xlYW4gPT4ge1xuICBpZiAobWluICYmIGRhdGUgPCBuZXcgRGF0ZShtaW4uZ2V0RnVsbFllYXIoKSwgbWluLmdldE1vbnRoKCksIG1pbi5nZXREYXRlKCkpKSByZXR1cm4gZmFsc2VcbiAgaWYgKG1heCAmJiBkYXRlID4gbmV3IERhdGUobWF4LmdldEZ1bGxZZWFyKCksIG1heC5nZXRNb250aCgpLCBtYXguZ2V0RGF0ZSgpKSkgcmV0dXJuIGZhbHNlXG4gIHJldHVybiB0cnVlXG59XG5cbmludGVyZmFjZSBDYWxlbmRhckNlbGwge1xuICBkYXk6IG51bWJlclxuICBkYXRlOiBEYXRlXG4gIGlzT3V0c2lkZTogYm9vbGVhblxufVxuXG5jb25zdCBidWlsZENhbGVuZGFyR3JpZCA9ICh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIpOiBDYWxlbmRhckNlbGxbXSA9PiB7XG4gIGNvbnN0IGZpcnN0RGF5ID0gbmV3IERhdGUoeWVhciwgbW9udGgsIDEpLmdldERheSgpXG4gIGNvbnN0IHRvdGFsRGF5cyA9IGRheXNJbk1vbnRoKHllYXIsIG1vbnRoKVxuICBjb25zdCBjZWxsczogQ2FsZW5kYXJDZWxsW10gPSBbXVxuXG4gIGNvbnN0IHByZXZNb250aERheXMgPSBkYXlzSW5Nb250aCh5ZWFyLCBtb250aCAtIDEpXG4gIGZvciAobGV0IGkgPSBmaXJzdERheSAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgY29uc3QgZGF5ID0gcHJldk1vbnRoRGF5cyAtIGlcbiAgICBjZWxscy5wdXNoKHsgZGF5LCBkYXRlOiBuZXcgRGF0ZSh5ZWFyLCBtb250aCAtIDEsIGRheSksIGlzT3V0c2lkZTogdHJ1ZSB9KVxuICB9XG5cbiAgZm9yIChsZXQgZCA9IDE7IGQgPD0gdG90YWxEYXlzOyBkKyspIHtcbiAgICBjZWxscy5wdXNoKHsgZGF5OiBkLCBkYXRlOiBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgZCksIGlzT3V0c2lkZTogZmFsc2UgfSlcbiAgfVxuXG4gIGNvbnN0IHJlbWFpbmluZyA9IDQyIC0gY2VsbHMubGVuZ3RoXG4gIGZvciAobGV0IGQgPSAxOyBkIDw9IHJlbWFpbmluZzsgZCsrKSB7XG4gICAgY2VsbHMucHVzaCh7IGRheTogZCwgZGF0ZTogbmV3IERhdGUoeWVhciwgbW9udGggKyAxLCBkKSwgaXNPdXRzaWRlOiB0cnVlIH0pXG4gIH1cblxuICByZXR1cm4gY2VsbHNcbn1cblxuY29uc3QgZm9ybWF0VmFsdWUgPSAoZGF0ZTogRGF0ZSB8IG51bGwsIG1vZGU6IHN0cmluZywgZm10Pzogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgaWYgKCFkYXRlIHx8IGlzTmFOKGRhdGUuZ2V0VGltZSgpKSkgcmV0dXJuICcnXG5cbiAgY29uc3QgeSA9IGRhdGUuZ2V0RnVsbFllYXIoKVxuICBjb25zdCBNID0gU3RyaW5nKGRhdGUuZ2V0TW9udGgoKSArIDEpLnBhZFN0YXJ0KDIsICcwJylcbiAgY29uc3QgZCA9IFN0cmluZyhkYXRlLmdldERhdGUoKSkucGFkU3RhcnQoMiwgJzAnKVxuICBsZXQgaCA9IGRhdGUuZ2V0SG91cnMoKVxuICBjb25zdCBtID0gU3RyaW5nKGRhdGUuZ2V0TWludXRlcygpKS5wYWRTdGFydCgyLCAnMCcpXG4gIGNvbnN0IGEgPSBoID49IDEyID8gJ1BNJyA6ICdBTSdcbiAgaCA9IGggJSAxMiB8fCAxMlxuICBjb25zdCBoaCA9IFN0cmluZyhoKS5wYWRTdGFydCgyLCAnMCcpXG5cbiAgaWYgKGZtdCkge1xuICAgIHJldHVybiBmbXQucmVwbGFjZSgneXl5eScsIFN0cmluZyh5KSkucmVwbGFjZSgnTU0nLCBNKS5yZXBsYWNlKCdkZCcsIGQpLnJlcGxhY2UoJ2hoJywgaGgpLnJlcGxhY2UoJ21tJywgbSkucmVwbGFjZSgnYWEnLCBhKVxuICB9XG5cbiAgc3dpdGNoIChtb2RlKSB7XG4gICAgY2FzZSAndGltZSc6ICAgICByZXR1cm4gYCR7aGh9OiR7bX0gJHthfWBcbiAgICBjYXNlICdkYXRldGltZSc6IHJldHVybiBgJHt5fS0ke019LSR7ZH0gJHtoaH06JHttfSAke2F9YFxuICAgIGRlZmF1bHQ6ICAgICAgICAgcmV0dXJuIGAke3l9LSR7TX0tJHtkfWBcbiAgfVxufVxuXG4vKipcbiAqIEJ1aWxkIGEgc3ludGhldGljIGV2ZW50IG9iamVjdCBsaWtlIGEgbmF0aXZlIGlucHV0J3Mgb25DaGFuZ2UuXG4gKi9cbmNvbnN0IG1ha2VFdmVudCA9ICh2YWx1ZTogc3RyaW5nIHwgbnVsbCwgaW5wdXROYW1lOiBzdHJpbmcsIHR5cGU6IHN0cmluZyA9ICdkYXRlJyk6IERhdGVQaWNrZXJDaGFuZ2VFdmVudCA9PiAoe1xuICB0YXJnZXQ6IHtcbiAgICB2YWx1ZSxcbiAgICBuYW1lOiBpbnB1dE5hbWUsXG4gICAgdHlwZSxcbiAgfSxcbiAgcHJldmVudERlZmF1bHQ6ICgpID0+IHt9LFxuICBzdG9wUHJvcGFnYXRpb246ICgpID0+IHt9LFxuICBuYXRpdmVFdmVudDogbnVsbCxcbn0pXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLyogIFBvcG92ZXIgcG9zaXRpb25pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyoqIEFwcHJveGltYXRlIGhlaWdodHMg4oCUIHVzZWQgYXMgYSBmaXJzdCBndWVzcyBiZWZvcmUgdGhlIHJlYWwgRE9NIGhlaWdodCBpcyBtZWFzdXJlZC4gKi9cbmNvbnN0IFBPUE9WRVJfR1VFU1M6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7IGRhdGU6IDMwMCwgdGltZTogMzAwLCBkYXRldGltZTogNDAwLCB5ZWFyOiAyNTAgfVxuXG4vKiogQXBwcm94aW1hdGUgd2lkdGhzIOKAlCB1c2VkIGFzIGEgZmlyc3QgZ3Vlc3MgYmVmb3JlIHRoZSByZWFsIERPTSB3aWR0aCBpcyBtZWFzdXJlZC4gKi9cbmNvbnN0IFBPUE9WRVJfV0lEVEhfR1VFU1M6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7IGRhdGU6IDI4MCwgdGltZTogMjIwLCBkYXRldGltZTogNDQwLCB5ZWFyOiAyODAgfVxuXG4vKipcbiAqIFN0eWxlIGFwcGxpZWQgd2hpbGUgdGhlIHBvcG92ZXIgaXMgbW91bnRlZCBidXQgbm90IHlldCBtZWFzdXJlZC5cbiAqIGB3aWR0aDogbWF4LWNvbnRlbnRgIG1ha2VzIHRoZSBmaXJzdCBtZWFzdXJlbWVudCByZWZsZWN0IHRoZSByZWFsIGNvbnRlbnRcbiAqIHdpZHRoIChhbiBlbXB0eSBzdHlsZSBsZXRzIHRoZSBjYXJkIHN0cmV0Y2ggdG8gdGhlIGJvZHkgd2lkdGgsIHdoaWNoXG4gKiBwb2lzb25lZCB0aGUgZmlyc3Qtb3BlbiBwb3NpdGlvbiksIGFuZCBgdmlzaWJpbGl0eTogaGlkZGVuYCBwcmV2ZW50cyBhXG4gKiBtaXNwb3NpdGlvbmVkIGZsYXNoIGJlZm9yZSB0aGUgbWVhc3VyZWQgc3R5bGUgbGFuZHMuXG4gKi9cbmNvbnN0IFBSRV9QT1NJVElPTl9TVFlMRTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgcG9zaXRpb246ICdmaXhlZCcsXG4gIHRvcDogMCxcbiAgbGVmdDogMCxcbiAgd2lkdGg6ICdtYXgtY29udGVudCcsXG4gIHZpc2liaWxpdHk6ICdoaWRkZW4nLFxuICB6SW5kZXg6IDEwNzAsXG59XG5cbi8qKiB1c2VMYXlvdXRFZmZlY3QgdGhhdCBpcyBTU1Itc2FmZSAoZmFsbHMgYmFjayB0byB1c2VFZmZlY3Qgb24gdGhlIHNlcnZlcikuICovXG5jb25zdCB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0ID1cbiAgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyBSZWFjdC51c2VMYXlvdXRFZmZlY3QgOiBSZWFjdC51c2VFZmZlY3RcblxuLyoqXG4gKiBGaW5kIHRoZSBuZWFyZXN0IHNjcm9sbGFibGUgYW5jZXN0b3IgKGZvciBjYXB0dXJpbmcgc2Nyb2xsIGV2ZW50cyBpbnNpZGVcbiAqIG1vZGFscyAvIHNpZGUgcGFuZWxzIC8gY3VzdG9tIGNvbnRhaW5lcnMpLlxuICovXG5jb25zdCBnZXRTY3JvbGxQYXJlbnQgPSAoZWw6IEhUTUxFbGVtZW50IHwgbnVsbCk6IEhUTUxFbGVtZW50ID0+IHtcbiAgaWYgKCFlbCkgcmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudFxuICBsZXQgcGFyZW50OiBIVE1MRWxlbWVudCB8IG51bGwgPSBlbC5wYXJlbnRFbGVtZW50XG4gIHdoaWxlIChwYXJlbnQpIHtcbiAgICBjb25zdCBzdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHBhcmVudClcbiAgICBjb25zdCBvdmVyZmxvd1kgPSBzdHlsZS5vdmVyZmxvd1kgfHwgc3R5bGUub3ZlcmZsb3dcbiAgICBpZiAob3ZlcmZsb3dZID09PSAnYXV0bycgfHwgb3ZlcmZsb3dZID09PSAnc2Nyb2xsJykgcmV0dXJuIHBhcmVudFxuICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnRFbGVtZW50XG4gIH1cbiAgcmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudFxufVxuXG5jb25zdCBjYWxjUG9wb3ZlclN0eWxlID0gKGlucHV0RWw6IEhUTUxFbGVtZW50IHwgbnVsbCwgcG9wb3ZlckhlaWdodDogbnVtYmVyLCBwb3BvdmVyV2lkdGg6IG51bWJlcik6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPT4ge1xuICBpZiAoIWlucHV0RWwpIHJldHVybiB7fVxuICBjb25zdCByZWN0ID0gaW5wdXRFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICBjb25zdCBoID0gcG9wb3ZlckhlaWdodCB8fCAzMDBcblxuICBjb25zdCBzcGFjZUJlbG93ID0gd2luZG93LmlubmVySGVpZ2h0IC0gcmVjdC5ib3R0b21cbiAgY29uc3Qgc3BhY2VBYm92ZSA9IHJlY3QudG9wXG5cbiAgLyogT25seSBmbGlwIGFib3ZlIHdoZW4gYmVsb3cgaXMgdHJ1bHkgdG9vIHRpZ2h0IEFORCBhYm92ZSBvZmZlcnMgbW9yZSByb29tICovXG4gIGNvbnN0IHBsYWNlQWJvdmUgPSBzcGFjZUJlbG93IDwgaCAmJiBzcGFjZUFib3ZlID4gc3BhY2VCZWxvd1xuXG4gIC8qIFJlc3BvbnNpdmU6IHVzZSBzbWFsbGVyIG1pbi13aWR0aCBvbiBtb2JpbGUgdG8gcHJldmVudCBvdmVyZmxvdy5cbiAgICAgVGhlIHBvcG92ZXIgc2l6ZXMgdG8gaXRzIGNvbnRlbnQg4oCUIGl0IG11c3QgTk9UIHN0cmV0Y2ggd2l0aCBhIHdpZGUgaW5wdXQsXG4gICAgIHNvIHJlY3Qud2lkdGggaXMgaW50ZW50aW9uYWxseSBpZ25vcmVkIGZvciBzaXppbmcuICovXG4gIGNvbnN0IG1pblcgPSB3aW5kb3cuaW5uZXJXaWR0aCA8IDU3NiA/IDIyMCA6IDI2MFxuICBjb25zdCB3ID0gcG9wb3ZlcldpZHRoIHx8IG1pbldcblxuICByZXR1cm4ge1xuICAgIHBvc2l0aW9uOiAnZml4ZWQnLFxuICAgIHRvcDogcGxhY2VBYm92ZSA/IE1hdGgubWF4KDQsIHJlY3QudG9wIC0gaCAtIDQpIDogcmVjdC5ib3R0b20gKyA0LFxuICAgIGxlZnQ6IE1hdGgubWF4KDQsIE1hdGgubWluKHJlY3QubGVmdCwgd2luZG93LmlubmVyV2lkdGggLSB3IC0gNCkpLFxuICAgIG1pbldpZHRoOiBtaW5XLFxuICAgIHdpZHRoOiAnbWF4LWNvbnRlbnQnLFxuICAgIG1heFdpZHRoOiB3aW5kb3cuaW5uZXJXaWR0aCAtIDgsXG4gICAgekluZGV4OiAxMDcwLFxuICB9XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLyogIERhdGVQaWNrZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyoqXG4gKiBDdXN0b20gQm9vdHN0cmFwLXN0eWxlZCBkYXRlIC8gdGltZSAvIGRhdGV0aW1lIHBpY2tlci4gWmVybyBkZXBlbmRlbmNpZXMuXG4gKlxuICogKipJbXBvcnRhbnQ6KiogVGhlIGFjY29tcGFueWluZyBDU1MgKiptdXN0KiogYmUgaW1wb3J0ZWQgZm9yIHRoZSBwaWNrZXIgdG8gcmVuZGVyIGNvcnJlY3RseTpcbiAqIGBgYGpzXG4gKiBpbXBvcnQgJ3JlYWN0LWJvb3RzdHJhcC1wbHVnaW5zL2Nzcy9wbHVnaW5zLmNzcydcbiAqIGBgYFxuICovXG5jb25zdCBEYXRlUGlja2VyID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MSW5wdXRFbGVtZW50LCBEYXRlUGlja2VyUHJvcHM+KCh7XG4gIGNsYXNzTmFtZSxcbiAgbW9kZSA9ICdkYXRlJyxcbiAgc2VsZWN0ZWQsXG4gIHZhbHVlLFxuICBvbkNoYW5nZSxcbiAgZGF0ZUZvcm1hdCxcbiAgcGxhY2Vob2xkZXJUZXh0LFxuICBzaXplLFxuICBpc0NsZWFyYWJsZSA9IGZhbHNlLFxuICBkaXNhYmxlZCA9IGZhbHNlLFxuICBtaW5EYXRlLFxuICBtYXhEYXRlLFxuICB0aW1lSW50ZXJ2YWxzID0gNSxcbiAgdGltZXpvbmUgPSAnS2FtcGFsYScsXG4gIGlkLFxuICBuYW1lLFxuICAuLi5wcm9wc1xufSwgcmVmKSA9PiB7XG4gIC8qIC0tLS0gZGVyaXZlZCAtLS0tICovXG4gIGNvbnN0IHJlc29sdmVWYWx1ZSA9ICh2OiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCk6IERhdGUgfCBudWxsID0+IHtcbiAgICBpZiAoIXYpIHJldHVybiBudWxsXG4gICAgaWYgKHYgaW5zdGFuY2VvZiBEYXRlKSByZXR1cm4gaXNOYU4odi5nZXRUaW1lKCkpID8gbnVsbCA6IHZcbiAgICBpZiAodHlwZW9mIHYgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2ID09PSAnbnVtYmVyJykge1xuICAgICAgLy8gU3RhbmRhcmQgRGF0ZSBwYXJzaW5nICh3b3JrcyBmb3IgSVNPIDg2MDEsIFwiWVlZWS1NTS1ERFwiLCBldGMuKVxuICAgICAgY29uc3QgZCA9IG5ldyBEYXRlKHYpXG4gICAgICBpZiAoIWlzTmFOKGQuZ2V0VGltZSgpKSkgcmV0dXJuIGRcblxuICAgICAgLy8gSGFuZGxlIHRpbWUtb25seSBzdHJpbmdzIGZyb20gZm9ybWF0VmFsdWU6IFwiaGg6bW0gQUFcIlxuICAgICAgaWYgKHR5cGVvZiB2ID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb25zdCB0aW1lTWF0Y2ggPSB2Lm1hdGNoKC9eKFxcZHsxLDJ9KTooXFxkezJ9KVxccyooQU18UE0pJC9pKVxuICAgICAgICBpZiAodGltZU1hdGNoKSB7XG4gICAgICAgICAgbGV0IGggPSBwYXJzZUludCh0aW1lTWF0Y2hbMV0sIDEwKVxuICAgICAgICAgIGNvbnN0IG0gPSBwYXJzZUludCh0aW1lTWF0Y2hbMl0sIDEwKVxuICAgICAgICAgIGNvbnN0IGFwID0gdGltZU1hdGNoWzNdLnRvVXBwZXJDYXNlKClcbiAgICAgICAgICBpZiAoaCA9PT0gMTIgJiYgYXAgPT09ICdBTScpIGggPSAwXG4gICAgICAgICAgaWYgKGggIT09IDEyICYmIGFwID09PSAnUE0nKSBoICs9IDEyXG4gICAgICAgICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKVxuICAgICAgICAgIHJldHVybiBuZXcgRGF0ZShub3cuZ2V0RnVsbFllYXIoKSwgbm93LmdldE1vbnRoKCksIG5vdy5nZXREYXRlKCksIGgsIG0sIDAsIDApXG4gICAgICAgIH1cblxuICAgICAgICAvLyBIYW5kbGUgZGF0ZXRpbWUgc3RyaW5ncyBmcm9tIGZvcm1hdFZhbHVlOiBcIllZWVktTU0tREQgaGg6bW0gQUFcIlxuICAgICAgICBjb25zdCBkdE1hdGNoID0gdi5tYXRjaCgvXihcXGR7NH0pLShcXGR7Mn0pLShcXGR7Mn0pXFxzKyhcXGR7MSwyfSk6KFxcZHsyfSlcXHMqKEFNfFBNKSQvaSlcbiAgICAgICAgaWYgKGR0TWF0Y2gpIHtcbiAgICAgICAgICBsZXQgaCA9IHBhcnNlSW50KGR0TWF0Y2hbNF0sIDEwKVxuICAgICAgICAgIGNvbnN0IG0gPSBwYXJzZUludChkdE1hdGNoWzVdLCAxMClcbiAgICAgICAgICBjb25zdCBhcCA9IGR0TWF0Y2hbNl0udG9VcHBlckNhc2UoKVxuICAgICAgICAgIGlmIChoID09PSAxMiAmJiBhcCA9PT0gJ0FNJykgaCA9IDBcbiAgICAgICAgICBpZiAoaCAhPT0gMTIgJiYgYXAgPT09ICdQTScpIGggKz0gMTJcbiAgICAgICAgICByZXR1cm4gbmV3IERhdGUocGFyc2VJbnQoZHRNYXRjaFsxXSksIHBhcnNlSW50KGR0TWF0Y2hbMl0pIC0gMSwgcGFyc2VJbnQoZHRNYXRjaFszXSksIGgsIG0sIDAsIDApXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIHJldHVybiBudWxsXG4gIH1cbiAgY29uc3QgcmVzb2x2ZWRWYWx1ZSA9IFJlYWN0LnVzZU1lbW8oXG4gICAgKCkgPT4gcmVzb2x2ZVZhbHVlKHNlbGVjdGVkID8/IHZhbHVlKSxcbiAgICBbXG4gICAgICBzZWxlY3RlZCBpbnN0YW5jZW9mIERhdGUgPyBzZWxlY3RlZC5nZXRUaW1lKCkgOiBzZWxlY3RlZCxcbiAgICAgIHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IHZhbHVlLmdldFRpbWUoKSA6IHZhbHVlLFxuICAgIF0sXG4gIClcbiAgY29uc3Qgc2hvd0NhbGVuZGFyID0gbW9kZSA9PT0gJ2RhdGUnIHx8IG1vZGUgPT09ICdkYXRldGltZSdcbiAgY29uc3Qgc2hvd1RpbWUgPSBtb2RlID09PSAndGltZScgfHwgbW9kZSA9PT0gJ2RhdGV0aW1lJ1xuXG4gIC8qIC0tLS0gaW50ZXJuYWwgc3RhdGUgLS0tLSAqL1xuICBjb25zdCBbaXNPcGVuLCBzZXRJc09wZW5dID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFt2aWV3WWVhciwgc2V0Vmlld1llYXJdID0gUmVhY3QudXNlU3RhdGUoKCkgPT5cbiAgICByZXNvbHZlZFZhbHVlID8gcmVzb2x2ZWRWYWx1ZS5nZXRGdWxsWWVhcigpIDogbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpKVxuICBjb25zdCBbdmlld01vbnRoLCBzZXRWaWV3TW9udGhdID0gUmVhY3QudXNlU3RhdGUoKCkgPT5cbiAgICByZXNvbHZlZFZhbHVlID8gcmVzb2x2ZWRWYWx1ZS5nZXRNb250aCgpIDogbmV3IERhdGUoKS5nZXRNb250aCgpKVxuICBjb25zdCBbdGVtcERhdGUsIHNldFRlbXBEYXRlXSA9IFJlYWN0LnVzZVN0YXRlPERhdGUgfCBudWxsPihyZXNvbHZlZFZhbHVlKVxuICBjb25zdCBbdGVtcEhvdXJzLCBzZXRUZW1wSG91cnNdID0gUmVhY3QudXNlU3RhdGUoKCkgPT5cbiAgICByZXNvbHZlZFZhbHVlID8gKHJlc29sdmVkVmFsdWUuZ2V0SG91cnMoKSAlIDEyIHx8IDEyKSA6IDEyKVxuICBjb25zdCBbdGVtcE1pbnMsIHNldFRlbXBNaW5zXSA9IFJlYWN0LnVzZVN0YXRlKCgpID0+XG4gICAgcmVzb2x2ZWRWYWx1ZSA/IHJlc29sdmVkVmFsdWUuZ2V0TWludXRlcygpIDogMClcbiAgY29uc3QgW3RlbXBBbVBtLCBzZXRUZW1wQW1QbV0gPSBSZWFjdC51c2VTdGF0ZSgoKSA9PlxuICAgIHJlc29sdmVkVmFsdWUgPyAocmVzb2x2ZWRWYWx1ZS5nZXRIb3VycygpID49IDEyID8gJ1BNJyA6ICdBTScpIDogJ0FNJylcbiAgY29uc3QgW3Nob3dZZWFyUGlja2VyLCBzZXRTaG93WWVhclBpY2tlcl0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3llYXJQYWdlLCBzZXRZZWFyUGFnZV0gPSBSZWFjdC51c2VTdGF0ZSgoKSA9PlxuICAgIE1hdGguZmxvb3IoKHJlc29sdmVkVmFsdWUgPyByZXNvbHZlZFZhbHVlLmdldEZ1bGxZZWFyKCkgOiBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkpIC8gWUVBUlNfUEVSX1BBR0UpICogWUVBUlNfUEVSX1BBR0VcbiAgKVxuICBjb25zdCBbcG9wb3ZlclN0eWxlLCBzZXRQb3BvdmVyU3R5bGVdID0gUmVhY3QudXNlU3RhdGU8UmVhY3QuQ1NTUHJvcGVydGllcz4oUFJFX1BPU0lUSU9OX1NUWUxFKVxuXG4gIGNvbnN0IGlucHV0UmVmID0gUmVhY3QudXNlUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHBvcG92ZXJSZWYgPSBSZWFjdC51c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHBvcnRhbFJlZiA9IFJlYWN0LnVzZVJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+KG51bGwpXG5cbiAgLyogLS0tLSBwb3J0YWwgY29udGFpbmVyIC0tLS0gKi9cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG4gICAgZWwuY2xhc3NOYW1lID0gJ2RhdGVwaWNrZXItcG9ydGFsLXJvb3QnXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbClcbiAgICBwb3J0YWxSZWYuY3VycmVudCA9IGVsXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChlbC5wYXJlbnROb2RlKSBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGVsKVxuICAgICAgcG9ydGFsUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgfVxuICB9LCBbXSlcblxuICAvKiAtLS0tIHN5bmMgdGVtcCBzdGF0ZSB3aGVuIHZhbHVlIGNoYW5nZXMgZXh0ZXJuYWxseSAtLS0tICovXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlc29sdmVkVmFsdWUgJiYgIWlzTmFOKHJlc29sdmVkVmFsdWUuZ2V0VGltZSgpKSkge1xuICAgICAgc2V0VGVtcERhdGUocmVzb2x2ZWRWYWx1ZSlcbiAgICAgIHNldFZpZXdZZWFyKHJlc29sdmVkVmFsdWUuZ2V0RnVsbFllYXIoKSlcbiAgICAgIHNldFZpZXdNb250aChyZXNvbHZlZFZhbHVlLmdldE1vbnRoKCkpXG4gICAgICBzZXRUZW1wSG91cnMocmVzb2x2ZWRWYWx1ZS5nZXRIb3VycygpICUgMTIgfHwgMTIpXG4gICAgICBzZXRUZW1wTWlucyhyZXNvbHZlZFZhbHVlLmdldE1pbnV0ZXMoKSlcbiAgICAgIHNldFRlbXBBbVBtKHJlc29sdmVkVmFsdWUuZ2V0SG91cnMoKSA+PSAxMiA/ICdQTScgOiAnQU0nKVxuICAgICAgc2V0WWVhclBhZ2UoTWF0aC5mbG9vcihyZXNvbHZlZFZhbHVlLmdldEZ1bGxZZWFyKCkgLyBZRUFSU19QRVJfUEFHRSkgKiBZRUFSU19QRVJfUEFHRSlcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0VGVtcERhdGUobnVsbClcbiAgICB9XG4gIH0sIFtyZXNvbHZlZFZhbHVlXSlcblxuICAvKiAtLS0tIHJlcG9zaXRpb24gcG9wb3ZlciBvbiBvcGVuIC8gc2Nyb2xsIC8gcmVzaXplIC0tLS0gKi9cbiAgdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc09wZW4pIHtcbiAgICAgIC8qIFJlc2V0IHNvIHRoZSBuZXh0IG9wZW4gc3RhcnRzIGhpZGRlbiB1bnRpbCBtZWFzdXJlZCDigJQgcmV1c2luZyB0aGUgbGFzdFxuICAgICAgICAgcG9zaXRpb24gd291bGQgZmxhc2ggdGhlIHBvcG92ZXIgYXQgdGhlIHByZXZpb3VzIGxvY2F0aW9uICovXG4gICAgICBzZXRQb3BvdmVyU3R5bGUoUFJFX1BPU0lUSU9OX1NUWUxFKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLyogTWVhc3VyZSBhY3R1YWwgcG9wb3ZlciBzaXplIHNvIHdlIHBvc2l0aW9uIHdpdGggbm8gd2FzdGVkIHNwYWNlICovXG4gICAgY29uc3QgZ2V0SGVpZ2h0ID0gKCk6IG51bWJlciA9PiB7XG4gICAgICBpZiAocG9wb3ZlclJlZi5jdXJyZW50KSB7XG4gICAgICAgIHJldHVybiBwb3BvdmVyUmVmLmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0XG4gICAgICB9XG4gICAgICByZXR1cm4gUE9QT1ZFUl9HVUVTU1tzaG93WWVhclBpY2tlciA/ICd5ZWFyJyA6IG1vZGVdIHx8IDMwMFxuICAgIH1cbiAgICBjb25zdCBnZXRXaWR0aCA9ICgpOiBudW1iZXIgPT4ge1xuICAgICAgaWYgKHBvcG92ZXJSZWYuY3VycmVudCkge1xuICAgICAgICByZXR1cm4gcG9wb3ZlclJlZi5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoXG4gICAgICB9XG4gICAgICByZXR1cm4gUE9QT1ZFUl9XSURUSF9HVUVTU1tzaG93WWVhclBpY2tlciA/ICd5ZWFyJyA6IG1vZGVdIHx8IDI4MFxuICAgIH1cblxuICAgIGNvbnN0IHNjcm9sbFBhcmVudCA9IGdldFNjcm9sbFBhcmVudChpbnB1dFJlZi5jdXJyZW50KVxuXG4gICAgY29uc3QgdXBkYXRlID0gKCkgPT4ge1xuICAgICAgc2V0UG9wb3ZlclN0eWxlKGNhbGNQb3BvdmVyU3R5bGUoaW5wdXRSZWYuY3VycmVudCwgZ2V0SGVpZ2h0KCksIGdldFdpZHRoKCkpKVxuICAgIH1cbiAgICAvKiBQb3NpdGlvbiBzeW5jaHJvbm91c2x5IGJlZm9yZSBwYWludCDigJQgdGhlIHBvcG92ZXIgaXMgYWxyZWFkeSBtb3VudGVkXG4gICAgICAgKGhpZGRlbiwgY29udGVudC1zaXplZCB2aWEgUFJFX1BPU0lUSU9OX1NUWUxFKSBzbyBtZWFzdXJlbWVudHMgYXJlIHJlYWwgKi9cbiAgICB1cGRhdGUoKVxuXG4gICAgLyogVGhyb3R0bGUgc2Nyb2xsL3Jlc2l6ZSByZXBvc2l0aW9uaW5nIHRvIGFuaW1hdGlvbiBmcmFtZXMgKi9cbiAgICBsZXQgcmFmID0gMFxuICAgIGNvbnN0IHNjaGVkdWxlVXBkYXRlID0gKCkgPT4ge1xuICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmFmKVxuICAgICAgcmFmID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHVwZGF0ZSlcbiAgICB9XG5cbiAgICAvKiBMaXN0ZW4gb24gdGhlIG5lYXJlc3Qgc2Nyb2xsYWJsZSBhbmNlc3RvciAoZS5nLiBtb2RhbCBib2R5KSBBTkQgdGhlIHdpbmRvdyAqL1xuICAgIHNjcm9sbFBhcmVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBzY2hlZHVsZVVwZGF0ZSwgeyBwYXNzaXZlOiB0cnVlIH0pXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHNjaGVkdWxlVXBkYXRlKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShyYWYpXG4gICAgICBzY3JvbGxQYXJlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgc2NoZWR1bGVVcGRhdGUpXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgc2NoZWR1bGVVcGRhdGUpXG4gICAgfVxuICB9LCBbaXNPcGVuLCBtb2RlLCBzaG93WWVhclBpY2tlcl0pXG5cbiAgLyogLS0tLSBjbGljayBvdXRzaWRlIHRvIGNsb3NlIC0tLS0gKi9cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzT3BlbikgcmV0dXJuXG4gICAgY29uc3QgaGFuZGxlciA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICBpZiAocG9wb3ZlclJlZi5jdXJyZW50ICYmICFwb3BvdmVyUmVmLmN1cnJlbnQuY29udGFpbnMoZS50YXJnZXQgYXMgTm9kZSkgJiZcbiAgICAgICAgICBpbnB1dFJlZi5jdXJyZW50ICYmICFpbnB1dFJlZi5jdXJyZW50LmNvbnRhaW5zKGUudGFyZ2V0IGFzIE5vZGUpKSB7XG4gICAgICAgIHNldElzT3BlbihmYWxzZSlcbiAgICAgICAgc2V0U2hvd1llYXJQaWNrZXIoZmFsc2UpXG4gICAgICB9XG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZXIpXG4gICAgcmV0dXJuICgpID0+IGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZXIpXG4gIH0sIFtpc09wZW5dKVxuXG4gIC8qIC0tLS0gY29tbWl0IGhlbHBlcnMgLS0tLSAqL1xuICBjb25zdCBidWlsZERhdGUgPSAoYmFzZTogRGF0ZSwgaDEyOiBudW1iZXIsIG1pbnM6IG51bWJlciwgYW1wbTogc3RyaW5nKTogRGF0ZSA9PiB7XG4gICAgY29uc3QgZCA9IG5ldyBEYXRlKGJhc2UpXG4gICAgbGV0IGggPSBoMTIgJSAxMlxuICAgIGlmIChhbXBtID09PSAnUE0nKSBoICs9IDEyXG4gICAgaWYgKGggPT09IDEyICYmIGFtcG0gPT09ICdBTScpIGggPSAwXG4gICAgZC5zZXRIb3VycyhoLCBtaW5zLCAwLCAwKVxuICAgIHJldHVybiBkXG4gIH1cblxuICAvKipcbiAgICogRmlyZSBvbkNoYW5nZSB3aXRoIGEgcHJlLWJ1aWx0IGRhdGUgd2l0aG91dCBjbG9zaW5nIHRoZSBwb3BvdmVyLlxuICAgKiBDYWxsZXJzIG11c3QgYnVpbGQgdGhlIGNvbXBsZXRlIGRhdGUgKGluY2x1ZGluZyB0aW1lKSBiZWZvcmUgcGFzc2luZyBpdCBpbi5cbiAgICovXG4gIGNvbnN0IGZpcmVDaGFuZ2UgPSAoZGF0ZTogRGF0ZSB8IG51bGwpOiB2b2lkID0+IHtcbiAgICBpZiAoIWRhdGUgfHwgaXNOYU4oZGF0ZS5nZXRUaW1lKCkpKSByZXR1cm5cbiAgICBjb25zdCBmb3JtYXR0ZWQgPSBmb3JtYXRWYWx1ZShkYXRlLCBtb2RlLCBkYXRlRm9ybWF0KVxuICAgIG9uQ2hhbmdlPy4obWFrZUV2ZW50KGZvcm1hdHRlZCwgbmFtZSB8fCAnJywgbW9kZSkpXG4gIH1cblxuICBjb25zdCBjb21taXQgPSAoZGF0ZTogRGF0ZSB8IG51bGwpOiB2b2lkID0+IHtcbiAgICBpZiAoIWRhdGUpIHtcbiAgICAgIG9uQ2hhbmdlPy4obWFrZUV2ZW50KG51bGwsIG5hbWUgfHwgJycsIG1vZGUpKVxuICAgICAgc2V0SXNPcGVuKGZhbHNlKVxuICAgICAgc2V0U2hvd1llYXJQaWNrZXIoZmFsc2UpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgZmlyZUNoYW5nZShkYXRlKVxuICAgIGlmIChtb2RlID09PSAnZGF0ZScpIHsgc2V0SXNPcGVuKGZhbHNlKTsgc2V0U2hvd1llYXJQaWNrZXIoZmFsc2UpIH1cbiAgfVxuXG4gIGNvbnN0IGNvbW1pdERhdGVPbmx5ID0gKGRhdGU6IERhdGUpOiB2b2lkID0+IHtcbiAgICBzZXRUZW1wRGF0ZShkYXRlKVxuICAgIGlmIChtb2RlID09PSAnZGF0ZScpIHtcbiAgICAgIGNvbW1pdChkYXRlKVxuICAgIH0gZWxzZSBpZiAobW9kZSA9PT0gJ2RhdGV0aW1lJykge1xuICAgICAgLy8gQnVpbGQgZnVsbCBkYXRldGltZSAoZGF0ZSArIGN1cnJlbnQgdGltZSBzZWxlY3Rpb24pIGFuZCBmaXJlXG4gICAgICBjb25zdCBkID0gYnVpbGREYXRlKGRhdGUsIHRlbXBIb3VycywgdGVtcE1pbnMsIHRlbXBBbVBtKVxuICAgICAgZmlyZUNoYW5nZShkKVxuICAgIH1cbiAgfVxuXG4gIC8qIC0tLS0gY2FsZW5kYXIgZ3JpZCAtLS0tICovXG4gIGNvbnN0IGdyaWQgPSBidWlsZENhbGVuZGFyR3JpZCh2aWV3WWVhciwgdmlld01vbnRoKVxuXG4gIGNvbnN0IGhhbmRsZVByZXZNb250aCA9ICgpID0+IHtcbiAgICBsZXQgbmV3WSA9IHZpZXdZZWFyLCBuZXdNID0gdmlld01vbnRoXG4gICAgaWYgKHZpZXdNb250aCA9PT0gMCkgeyBuZXdZID0gdmlld1llYXIgLSAxOyBuZXdNID0gMTEgfVxuICAgIGVsc2UgbmV3TSA9IHZpZXdNb250aCAtIDFcbiAgICBzZXRWaWV3WWVhcihuZXdZKTsgc2V0Vmlld01vbnRoKG5ld00pXG4gICAgY29uc3QgYmFzZSA9IHRlbXBEYXRlIHx8IG5ldyBEYXRlKClcbiAgICBjb25zdCBtYXhEID0gZGF5c0luTW9udGgobmV3WSwgbmV3TSlcbiAgICBjb25zdCBuZXdEYXRlID0gbmV3IERhdGUobmV3WSwgbmV3TSwgTWF0aC5taW4oYmFzZS5nZXREYXRlKCksIG1heEQpKVxuICAgIHNldFRlbXBEYXRlKG5ld0RhdGUpXG4gICAgZmlyZUNoYW5nZShzaG93VGltZSA/IGJ1aWxkRGF0ZShuZXdEYXRlLCB0ZW1wSG91cnMsIHRlbXBNaW5zLCB0ZW1wQW1QbSkgOiBuZXdEYXRlKVxuICB9XG4gIGNvbnN0IGhhbmRsZU5leHRNb250aCA9ICgpID0+IHtcbiAgICBsZXQgbmV3WSA9IHZpZXdZZWFyLCBuZXdNID0gdmlld01vbnRoXG4gICAgaWYgKHZpZXdNb250aCA9PT0gMTEpIHsgbmV3WSA9IHZpZXdZZWFyICsgMTsgbmV3TSA9IDAgfVxuICAgIGVsc2UgbmV3TSA9IHZpZXdNb250aCArIDFcbiAgICBzZXRWaWV3WWVhcihuZXdZKTsgc2V0Vmlld01vbnRoKG5ld00pXG4gICAgY29uc3QgYmFzZSA9IHRlbXBEYXRlIHx8IG5ldyBEYXRlKClcbiAgICBjb25zdCBtYXhEID0gZGF5c0luTW9udGgobmV3WSwgbmV3TSlcbiAgICBjb25zdCBuZXdEYXRlID0gbmV3IERhdGUobmV3WSwgbmV3TSwgTWF0aC5taW4oYmFzZS5nZXREYXRlKCksIG1heEQpKVxuICAgIHNldFRlbXBEYXRlKG5ld0RhdGUpXG4gICAgZmlyZUNoYW5nZShzaG93VGltZSA/IGJ1aWxkRGF0ZShuZXdEYXRlLCB0ZW1wSG91cnMsIHRlbXBNaW5zLCB0ZW1wQW1QbSkgOiBuZXdEYXRlKVxuICB9XG5cbiAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpXG4gIC8qIG1pbi9tYXggYWNjZXB0IHRoZSBzYW1lIGZsZXhpYmxlIGlucHV0cyBhcyBgdmFsdWVgIChEYXRlLCBzdHJpbmcsIHRpbWVzdGFtcCkg4oCUXG4gICAgIGEgZm9ybWF0dGVkIHN0cmluZyBmcm9tIGFub3RoZXIgRGF0ZVBpY2tlcidzIG9uQ2hhbmdlIGlzIGEgY29tbW9uIHNvdXJjZSAqL1xuICBjb25zdCByZXNvbHZlZE1pbiA9IHJlc29sdmVWYWx1ZShtaW5EYXRlKVxuICBjb25zdCByZXNvbHZlZE1heCA9IHJlc29sdmVWYWx1ZShtYXhEYXRlKVxuICBjb25zdCBtaW5EdCA9IHJlc29sdmVkTWluID8gbmV3IERhdGUocmVzb2x2ZWRNaW4uZ2V0RnVsbFllYXIoKSwgcmVzb2x2ZWRNaW4uZ2V0TW9udGgoKSwgcmVzb2x2ZWRNaW4uZ2V0RGF0ZSgpKSA6IG51bGxcbiAgY29uc3QgbWF4RHQgPSByZXNvbHZlZE1heCA/IG5ldyBEYXRlKHJlc29sdmVkTWF4LmdldEZ1bGxZZWFyKCksIHJlc29sdmVkTWF4LmdldE1vbnRoKCksIHJlc29sdmVkTWF4LmdldERhdGUoKSkgOiBudWxsXG5cbiAgLyogLS0tLSB0aW1lIGNoYW5nZSBoYW5kbGVycyAtLS0tICovXG4gIGNvbnN0IGhhbmRsZUhvdXJDaGFuZ2UgPSAoaDogbnVtYmVyKSA9PiB7XG4gICAgc2V0VGVtcEhvdXJzKGgpXG4gICAgaWYgKHNob3dUaW1lKSB7XG4gICAgICBjb25zdCBkID0gYnVpbGREYXRlKHRlbXBEYXRlIHx8IG5ldyBEYXRlKCksIGgsIHRlbXBNaW5zLCB0ZW1wQW1QbSlcbiAgICAgIG9uQ2hhbmdlPy4obWFrZUV2ZW50KGZvcm1hdFZhbHVlKGQsIG1vZGUsIGRhdGVGb3JtYXQpLCBuYW1lIHx8ICcnLCBtb2RlKSlcbiAgICB9XG4gIH1cbiAgY29uc3QgaGFuZGxlTWluQ2hhbmdlID0gKG06IG51bWJlcikgPT4ge1xuICAgIHNldFRlbXBNaW5zKG0pXG4gICAgaWYgKHNob3dUaW1lKSB7XG4gICAgICBjb25zdCBkID0gYnVpbGREYXRlKHRlbXBEYXRlIHx8IG5ldyBEYXRlKCksIHRlbXBIb3VycywgbSwgdGVtcEFtUG0pXG4gICAgICBvbkNoYW5nZT8uKG1ha2VFdmVudChmb3JtYXRWYWx1ZShkLCBtb2RlLCBkYXRlRm9ybWF0KSwgbmFtZSB8fCAnJywgbW9kZSkpXG4gICAgfVxuICB9XG4gIGNvbnN0IGhhbmRsZUFtUG1DaGFuZ2UgPSAoYXA6IHN0cmluZykgPT4ge1xuICAgIHNldFRlbXBBbVBtKGFwKVxuICAgIGlmIChzaG93VGltZSkge1xuICAgICAgY29uc3QgZCA9IGJ1aWxkRGF0ZSh0ZW1wRGF0ZSB8fCBuZXcgRGF0ZSgpLCB0ZW1wSG91cnMsIHRlbXBNaW5zLCBhcClcbiAgICAgIG9uQ2hhbmdlPy4obWFrZUV2ZW50KGZvcm1hdFZhbHVlKGQsIG1vZGUsIGRhdGVGb3JtYXQpLCBuYW1lIHx8ICcnLCBtb2RlKSlcbiAgICB9XG4gIH1cblxuICAvKiAtLS0tIHllYXIgcGlja2VyIC0tLS0gKi9cbiAgY29uc3Qgb3BlblllYXJQaWNrZXIgPSAoKSA9PiB7XG4gICAgc2V0WWVhclBhZ2UoTWF0aC5mbG9vcih2aWV3WWVhciAvIFlFQVJTX1BFUl9QQUdFKSAqIFlFQVJTX1BFUl9QQUdFKVxuICAgIHNldFNob3dZZWFyUGlja2VyKHRydWUpXG4gIH1cblxuICBjb25zdCBoYW5kbGVZZWFyU2VsZWN0ID0gKHk6IG51bWJlcikgPT4ge1xuICAgIHNldFZpZXdZZWFyKHkpXG4gICAgc2V0U2hvd1llYXJQaWNrZXIoZmFsc2UpXG4gICAgY29uc3QgYmFzZSA9IHRlbXBEYXRlIHx8IG5ldyBEYXRlKClcbiAgICBjb25zdCBtYXhEID0gZGF5c0luTW9udGgoeSwgdmlld01vbnRoKVxuICAgIGNvbnN0IG5ld0RhdGUgPSBuZXcgRGF0ZSh5LCB2aWV3TW9udGgsIE1hdGgubWluKGJhc2UuZ2V0RGF0ZSgpLCBtYXhEKSlcbiAgICBzZXRUZW1wRGF0ZShuZXdEYXRlKVxuICAgIGZpcmVDaGFuZ2Uoc2hvd1RpbWUgPyBidWlsZERhdGUobmV3RGF0ZSwgdGVtcEhvdXJzLCB0ZW1wTWlucywgdGVtcEFtUG0pIDogbmV3RGF0ZSlcbiAgfVxuXG4gIGNvbnN0IHllYXJQYWdlU3RhcnQgPSBNYXRoLmZsb29yKHllYXJQYWdlIC8gWUVBUlNfUEVSX1BBR0UpICogWUVBUlNfUEVSX1BBR0VcbiAgY29uc3QgeWVhcnMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiBZRUFSU19QRVJfUEFHRSB9LCAoXywgaSkgPT4geWVhclBhZ2VTdGFydCArIGkpXG5cbiAgLyogLS0tLSBjbGVhciAtLS0tICovXG4gIGNvbnN0IGhhbmRsZUNsZWFyID0gKGU6IFJlYWN0Lk1vdXNlRXZlbnQpID0+IHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgc2V0VGVtcERhdGUobnVsbClcbiAgICBvbkNoYW5nZT8uKG1ha2VFdmVudChudWxsLCBuYW1lIHx8ICcnKSlcbiAgfVxuXG4gIC8qIC0tLS0ga2V5Ym9hcmQgLS0tLSAqL1xuICBjb25zdCBoYW5kbGVJbnB1dEtleURvd24gPSAoZTogUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIGlmIChlLmtleSA9PT0gJ0VzY2FwZScpIHsgc2V0SXNPcGVuKGZhbHNlKTsgc2V0U2hvd1llYXJQaWNrZXIoZmFsc2UpOyBpbnB1dFJlZi5jdXJyZW50Py5ibHVyKCkgfVxuICAgIGlmIChlLmtleSA9PT0gJ0Fycm93RG93bicgfHwgZS5rZXkgPT09ICdFbnRlcicgfHwgZS5rZXkgPT09ICcgJykge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICBzZXRJc09wZW4odHJ1ZSlcbiAgICB9XG4gIH1cblxuICAvKiAtLS0tIG1lcmdlZCByZWYgLS0tLSAqL1xuICBjb25zdCBtZXJnZUlucHV0UmVmID0gUmVhY3QudXNlQ2FsbGJhY2soKG5vZGU6IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsKSA9PiB7XG4gICAgaW5wdXRSZWYuY3VycmVudCA9IG5vZGVcbiAgICBpZiAodHlwZW9mIHJlZiA9PT0gJ2Z1bmN0aW9uJykgcmVmKG5vZGUpXG4gICAgZWxzZSBpZiAocmVmKSByZWYuY3VycmVudCA9IG5vZGVcbiAgfSwgW3JlZl0pXG5cbiAgLyogLS0tLSByZW5kZXIgLS0tLSAqL1xuICBjb25zdCBwbGFjZWhvbGRlciA9IHBsYWNlaG9sZGVyVGV4dFxuICAgID8/IChtb2RlID09PSAndGltZScgPyAnU2VsZWN0IHRpbWUnIDogbW9kZSA9PT0gJ2RhdGV0aW1lJyA/ICdTZWxlY3QgZGF0ZSAmIHRpbWUnIDogJ1NlbGVjdCBkYXRlJylcblxuICBjb25zdCBwb3BvdmVyID0gKFxuICAgIDxkaXZcbiAgICAgIHJlZj17cG9wb3ZlclJlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICdkYXRlcGlja2VyLXBvcG92ZXIgY2FyZCBib3JkZXIgc2hhZG93LXNtJyxcbiAgICAgICAgbW9kZSA9PT0gJ2RhdGV0aW1lJyAmJiAnZGF0ZXBpY2tlci1wb3BvdmVyLS13aWRlJ1xuICAgICAgKX1cbiAgICAgIHN0eWxlPXtwb3BvdmVyU3R5bGV9XG4gICAgPlxuICAgICAgey8qID09PT09PT09PT09PT09IFlFQVIgUElDS0VSID09PT09PT09PT09PT09ICovfVxuICAgICAge3Nob3dZZWFyUGlja2VyICYmIHNob3dDYWxlbmRhciAmJiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGF0ZXBpY2tlci15ZWFyLXBpY2tlciBwLTNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gbWItMlwiPlxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3NOYW1lPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1zZWNvbmRhcnkgYm9yZGVyLTAgcHgtMVwiIG9uQ2xpY2s9eygpID0+IHNldFllYXJQYWdlKHllYXJQYWdlIC0gWUVBUlNfUEVSX1BBR0UpfSBhcmlhLWxhYmVsPVwiUHJldmlvdXMgeWVhcnNcIj4mbHNhcXVvOzwvYnV0dG9uPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZnctc2VtaWJvbGQgc21hbGxcIj57eWVhclBhZ2VTdGFydH0g4oCTIHt5ZWFyUGFnZVN0YXJ0ICsgWUVBUlNfUEVSX1BBR0UgLSAxfTwvc3Bhbj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzTmFtZT1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGJvcmRlci0wIHB4LTFcIiBvbkNsaWNrPXsoKSA9PiBzZXRZZWFyUGFnZSh5ZWFyUGFnZSArIFlFQVJTX1BFUl9QQUdFKX0gYXJpYS1sYWJlbD1cIk5leHQgeWVhcnNcIj4mcnNhcXVvOzwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGF0ZXBpY2tlci15ZWFyLWdyaWRcIj5cbiAgICAgICAgICAgIHt5ZWFycy5tYXAoKHkpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgaXNDdXJyZW50WWVhciA9IHkgPT09IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKVxuICAgICAgICAgICAgICBjb25zdCBpc1NlbGVjdGVkID0gdGVtcERhdGUgJiYgeSA9PT0gdGVtcERhdGUuZ2V0RnVsbFllYXIoKVxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIGtleT17eX1cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAgICAgJ2RhdGVwaWNrZXIteWVhci1jZWxsIGJ0biBidG4tc20nLFxuICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkICYmICdidG4tcHJpbWFyeScsXG4gICAgICAgICAgICAgICAgICAgICFpc1NlbGVjdGVkICYmIGlzQ3VycmVudFllYXIgJiYgJ2J0bi1vdXRsaW5lLXByaW1hcnknLFxuICAgICAgICAgICAgICAgICAgICAhaXNTZWxlY3RlZCAmJiAhaXNDdXJyZW50WWVhciAmJiAnYnRuLWxpZ2h0IGJvcmRlcidcbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVZZWFyU2VsZWN0KHkpfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt5fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuXG4gICAgICB7LyogPT09PT09PT09PT09PT0gQ0FMRU5EQVIgKyBUSU1FID09PT09PT09PT09PT09ICovfVxuICAgICAgeyFzaG93WWVhclBpY2tlciAmJiAoXG4gICAgICAgIDw+XG5cbiAgICAgICAgICB7LyogLS0tLSBDQUxFTkRBUiArIFRJTUUgQ09OVEFJTkVSIC0tLS0gKi99XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NuKCdkLWZsZXgnLCBtb2RlID09PSAnZGF0ZXRpbWUnID8gJ2ZsZXgtcm93JyA6ICdmbGV4LWNvbHVtbicpfT5cblxuICAgICAgICAgIHsvKiAtLS0tIENBTEVOREFSIC0tLS0gKi99XG4gICAgICAgICAge3Nob3dDYWxlbmRhciAmJiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRhdGVwaWNrZXItY2FsZW5kYXIgcC0yXCI+XG4gICAgICAgICAgICAgIHsvKiBNb250aCAvIFllYXIgaGVhZGVyICovfVxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gbWItMlwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzTmFtZT1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGJvcmRlci0wIHB4LTFcIiBvbkNsaWNrPXtoYW5kbGVQcmV2TW9udGh9IGFyaWEtbGFiZWw9XCJQcmV2aW91cyBtb250aFwiPiZsc2FxdW87PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmdy1zZW1pYm9sZCBzbWFsbFwiPntNT05USFNbdmlld01vbnRoXX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJidG4gYnRuLXNtIGJ0bi1saW5rIHRleHQtZGVjb3JhdGlvbi1ub25lIHRleHQtcHJpbWFyeSBmdy1zZW1pYm9sZCBzbWFsbCBwLTBcIlxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtvcGVuWWVhclBpY2tlcn1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNob29zZSB5ZWFyXCJcbiAgICAgICAgICAgICAgICAgID57dmlld1llYXJ9PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3NOYW1lPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1zZWNvbmRhcnkgYm9yZGVyLTAgcHgtMVwiIG9uQ2xpY2s9e2hhbmRsZU5leHRNb250aH0gYXJpYS1sYWJlbD1cIk5leHQgbW9udGhcIj4mcnNhcXVvOzwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICB7LyogRGF5LW9mLXdlZWsgaGVhZGVycyAqL31cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkYXRlcGlja2VyLWRheXMtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAge0RBWVNfT0ZfV0VFSy5tYXAoZCA9PiAoXG4gICAgICAgICAgICAgICAgICA8ZGl2IGtleT17ZH0gY2xhc3NOYW1lPVwiZGF0ZXBpY2tlci1kYXktbGFiZWxcIj57ZH08L2Rpdj5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgey8qIERheSBncmlkICovfVxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRhdGVwaWNrZXItZGF5cy1ncmlkXCI+XG4gICAgICAgICAgICAgICAge2dyaWQubWFwKChjZWxsLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBpc1RvZGF5ID0gaXNTYW1lRGF5KGNlbGwuZGF0ZSwgdG9kYXkpXG4gICAgICAgICAgICAgICAgICBjb25zdCBpc1NlbGVjdGVkID0gdGVtcERhdGUgJiYgaXNTYW1lRGF5KGNlbGwuZGF0ZSwgdGVtcERhdGUpXG4gICAgICAgICAgICAgICAgICBjb25zdCBpblJhbmdlID0gaXNEYXRlSW5SYW5nZShjZWxsLmRhdGUsIG1pbkR0LCBtYXhEdClcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGlzRGlzYWJsZWREYXkgPSBjZWxsLmlzT3V0c2lkZSB8fCAhaW5SYW5nZVxuXG4gICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtpfVxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkRGF5fVxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgICAgICAgICAnZGF0ZXBpY2tlci1kYXknLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNUb2RheSAmJiAnZGF0ZXBpY2tlci1kYXktLXRvZGF5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWQgJiYgJ2RhdGVwaWNrZXItZGF5LS1zZWxlY3RlZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjZWxsLmlzT3V0c2lkZSAmJiAnZGF0ZXBpY2tlci1kYXktLW91dHNpZGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgIWluUmFuZ2UgJiYgJ2RhdGVwaWNrZXItZGF5LS1kaXNhYmxlZCdcbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGNvbW1pdERhdGVPbmx5KGNlbGwuZGF0ZSl9XG4gICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9e2NlbGwuaXNPdXRzaWRlID8gLTEgOiAwfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge2NlbGwuZGF5fVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApfVxuXG4gICAgICAgICAgey8qIC0tLS0gRElWSURFUiAoZGF0ZXRpbWUgbW9kZSkgLS0tLSAqL31cbiAgICAgICAgICB7bW9kZSA9PT0gJ2RhdGV0aW1lJyAmJiA8ZGl2IGNsYXNzTmFtZT1cInZyIG14LTEgbXktMlwiIC8+fVxuXG4gICAgICAgICAgey8qIC0tLS0gVElNRSAtLS0tICovfVxuICAgICAgICAgIHtzaG93VGltZSAmJiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRhdGVwaWNrZXItdGltZSBwLTIgZC1mbGV4IGZsZXgtY29sdW1uXCIgc3R5bGU9e3sgbWluV2lkdGg6IDE4MCB9fT5cbiAgICAgICAgICAgICAge21vZGUgPT09ICdkYXRldGltZScgJiYgPGRpdiBjbGFzc05hbWU9XCJzbWFsbCBmdy1zZW1pYm9sZCB0ZXh0LW11dGVkIHRleHQtY2VudGVyIG1iLTFcIj5UaW1lPC9kaXY+fVxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgey8qIEhvdXIgY29sdW1uICovfVxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGF0ZXBpY2tlci10aW1lLWNvbFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkYXRlcGlja2VyLXRpbWUtY29sLWxhYmVsXCI+SG91cjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkYXRlcGlja2VyLXRpbWUtY29sLXNjcm9sbFwiPlxuICAgICAgICAgICAgICAgICAgICB7QXJyYXkuZnJvbSh7IGxlbmd0aDogMTIgfSwgKF8sIGkpID0+IGkgKyAxKS5tYXAoaCA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtofVxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKCdkYXRlcGlja2VyLXRpbWUtaXRlbScsIGggPT09IHRlbXBIb3VycyAmJiAnYWN0aXZlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVIb3VyQ2hhbmdlKGgpfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtTdHJpbmcoaCkucGFkU3RhcnQoMiwgJzAnKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJkYXRlcGlja2VyLXRpbWUtc2VwYXJhdG9yXCI+Ojwvc3Bhbj5cbiAgICAgICAgICAgICAgICB7LyogTWludXRlIGNvbHVtbiAqL31cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRhdGVwaWNrZXItdGltZS1jb2xcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGF0ZXBpY2tlci10aW1lLWNvbC1sYWJlbFwiPk1pbjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkYXRlcGlja2VyLXRpbWUtY29sLXNjcm9sbFwiPlxuICAgICAgICAgICAgICAgICAgICB7TUlOVVRFUy5tYXAobSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAga2V5PXttfVxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKCdkYXRlcGlja2VyLXRpbWUtaXRlbScsIG0gPT09IHRlbXBNaW5zICYmICdhY3RpdmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZU1pbkNoYW5nZShtKX1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7U3RyaW5nKG0pLnBhZFN0YXJ0KDIsICcwJyl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgey8qIEFNL1BNIGNvbHVtbiAqL31cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRhdGVwaWNrZXItdGltZS1jb2xcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGF0ZXBpY2tlci10aW1lLWNvbC1sYWJlbFwiPiZuYnNwOzwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkLWZsZXggZmxleC1jb2x1bW4gZ2FwLTEgbXQtMVwiPlxuICAgICAgICAgICAgICAgICAgICB7WydBTScsICdQTSddLm1hcChhcCA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAga2V5PXthcH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbignZGF0ZXBpY2tlci10aW1lLWl0ZW0nLCAnZGF0ZXBpY2tlci10aW1lLWl0ZW0tLWFtcG0nLCB0ZW1wQW1QbSA9PT0gYXAgJiYgJ2FjdGl2ZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlQW1QbUNoYW5nZShhcCl9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge2FwfVxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gIClcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiZGF0ZXBpY2tlci13cmFwcGVyIHBvc2l0aW9uLXJlbGF0aXZlIGQtaW5saW5lLWJsb2NrIHctMTAwXCIgc3R5bGU9e3sgbWluV2lkdGg6IDAgfX0+XG4gICAgICB7LyogLS0tLSBJbnB1dCAtLS0tICovfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICByZWY9e21lcmdlSW5wdXRSZWZ9XG4gICAgICAgICAgaWQ9e2lkfVxuICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIHJlYWRPbmx5XG4gICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAnZm9ybS1jb250cm9sJyxcbiAgICAgICAgICAgIHNpemUgPT09ICdzbScgJiYgJ2Zvcm0tY29udHJvbC1zbScsXG4gICAgICAgICAgICBzaXplID09PSAnbGcnICYmICdmb3JtLWNvbnRyb2wtbGcnLFxuICAgICAgICAgICAgJ3BlLTUnLFxuICAgICAgICAgICAgY2xhc3NOYW1lXG4gICAgICAgICAgKX1cbiAgICAgICAgICBwbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9XG4gICAgICAgICAgdmFsdWU9e2Zvcm1hdFZhbHVlKHJlc29sdmVkVmFsdWUsIG1vZGUsIGRhdGVGb3JtYXQpfVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+ICFkaXNhYmxlZCAmJiBzZXRJc09wZW4oIWlzT3Blbil9XG4gICAgICAgICAgb25LZXlEb3duPXtoYW5kbGVJbnB1dEtleURvd259XG4gICAgICAgICAgYXJpYS1oYXNwb3B1cD1cImRpYWxvZ1wiXG4gICAgICAgICAgYXJpYS1leHBhbmRlZD17aXNPcGVufVxuICAgICAgICAgIGF1dG9Db21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICAvPlxuICAgICAgICB7LyogY2xlYXIgYnV0dG9uICovfVxuICAgICAgICB7aXNDbGVhcmFibGUgJiYgcmVzb2x2ZWRWYWx1ZSAmJiAhZGlzYWJsZWQgJiYgKFxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiYnRuIGJ0bi1zbSBidG4tbGluayBwb3NpdGlvbi1hYnNvbHV0ZSB0b3AtNTAgZW5kLTAgdHJhbnNsYXRlLW1pZGRsZS15IHBlLTIgdGV4dC1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgc3R5bGU9e3sgekluZGV4OiAyIH19XG4gICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVDbGVhcn1cbiAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbGVhclwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgJnRpbWVzO1xuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIHsvKiAtLS0tIFBvcnRhbCB0aGUgcG9wb3ZlciB0byBkb2N1bWVudC5ib2R5IC0tLS0gKi99XG4gICAgICB7aXNPcGVuICYmICFkaXNhYmxlZCAmJiBwb3J0YWxSZWYuY3VycmVudCAmJiBjcmVhdGVQb3J0YWwocG9wb3ZlciwgcG9ydGFsUmVmLmN1cnJlbnQpfVxuICAgIDwvZGl2PlxuICApXG59KVxuXG5EYXRlUGlja2VyLmRpc3BsYXlOYW1lID0gJ0RhdGVQaWNrZXInXG5cbmV4cG9ydCB7IERhdGVQaWNrZXIgfVxuZXhwb3J0IGRlZmF1bHQgRGF0ZVBpY2tlclxuIl19
@@ -0,0 +1,2 @@
1
+ import {a}from'./chunk-RR7TBRGI.js';import*as o from'react';import {jsxs,jsx}from'react/jsx-runtime';var N=l=>l?typeof l=="string"?jsx("i",{className:a(l,"me-2")}):jsx("span",{className:"me-2 d-inline-flex align-middle",children:l}):null,r=o.forwardRef(({contain:l=false,active:c,pills:p,clear:v,onClick:m,className:t},i)=>{let s=(p??[]).map(a$1=>jsxs("button",{type:"button",className:a("nav-link text-center align-middle",a$1.key===c&&"active"),onClick:()=>m?.(a$1),children:[N(a$1.icon),jsx("span",{children:a$1.lbl??a$1.label}),a$1.clear&&jsx("span",{className:"badge navpills-badge-clear my-0 float-end ms-3",role:"button","aria-label":"Dismiss",onClick:d=>{d.stopPropagation(),v?.(a$1);},children:"\xD7"}),a$1.new&&jsx("span",{className:"badge navpills-badge-new float-end ms-4",children:"New"})]},String(a$1.key)));return l?jsx("div",{className:a("navpills-bar px-2 bg-light rounded-0 mb-0",t),children:jsx("nav",{ref:i,className:"container nav nav-pills overflow-x-auto flex-nowrap",children:s})}):jsx("nav",{ref:i,className:a("nav nav-pills overflow-x-auto flex-nowrap",t),children:s})});r.displayName="NavPills";var g=r;export{r as a,g as b};//# sourceMappingURL=chunk-KVUHNUBG.js.map
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21wb25lbnRzL05hdlBpbGxzLnRzeCJdLCJuYW1lcyI6WyJyZW5kZXJJY29uIiwiaWNvbiIsImpzeCIsImNuIiwiTmF2UGlsbHMiLCJjb250YWluIiwiYWN0aXZlIiwicGlsbHMiLCJjbGVhciIsIm9uQ2xpY2siLCJjbGFzc05hbWUiLCJyZWYiLCJpdGVtcyIsInIiLCJqc3hzIiwiZSIsIk5hdlBpbGxzX2RlZmF1bHQiXSwibWFwcGluZ3MiOiJxR0E2Q0EsSUFBTUEsQ0FBQUEsQ0FBY0MsQ0FBQUEsRUFDYkEsRUFDRCxPQUFPQSxDQUFBQSxFQUFTLFFBQUEsQ0FBaUJDLEdBQUFBLENBQUMsS0FBRSxTQUFBLENBQVdDLENBQUFBLENBQUdGLENBQUFBLENBQU0sTUFBTSxFQUFHLENBQUEsQ0FDOURDLEdBQUFBLENBQUMsTUFBQSxDQUFBLENBQUssU0FBQSxDQUFVLGtDQUFtQyxRQUFBLENBQUFELENBQUFBLENBQUssQ0FBQSxDQUY3QyxJQUFBLENBZWRHLEVBQWlCLENBQUEsQ0FBQSxVQUFBLENBQXVDLENBQUMsQ0FDN0QsT0FBQSxDQUFBQyxDQUFBQSxDQUFVLE1BQ1YsTUFBQSxDQUFBQyxDQUFBQSxDQUNBLEtBQUEsQ0FBQUMsQ0FBQUEsQ0FDQSxNQUFBQyxDQUFBQSxDQUNBLE9BQUEsQ0FBQUMsQ0FBQUEsQ0FDQSxTQUFBLENBQUFDLENBQ0YsQ0FBQSxDQUFHQyxDQUFBQSxHQUFRLENBQ1QsSUFBTUMsR0FBU0wsQ0FBQUEsRUFBUyxFQUFDLEVBQUcsR0FBQSxDQUFLTSxLQUMvQkMsSUFBQUEsQ0FBQyxRQUFBLENBQUEsQ0FFQyxJQUFBLENBQUssUUFBQSxDQUNMLFVBQVdYLENBQUFBLENBQUcsbUNBQUEsQ0FBcUNVLEdBQUFBLENBQUUsR0FBQSxHQUFRUCxHQUFVLFFBQVEsQ0FBQSxDQUMvRSxPQUFBLENBQVMsSUFBTUcsSUFBVUksR0FBQyxDQUFBLENBRXpCLFVBQUFiLENBQUFBLENBQVdhLEdBQUFBLENBQUUsSUFBSSxDQUFBLENBQ2xCWCxHQUFBQSxDQUFDLE1BQUEsQ0FBQSxDQUFNLFFBQUEsQ0FBQVcsSUFBRSxHQUFBLEVBQU9BLEdBQUFBLENBQUUsS0FBQSxDQUFNLENBQUEsQ0FDdkJBLElBQUUsS0FBQSxFQUNEWCxHQUFBQSxDQUFDLE1BQUEsQ0FBQSxDQUNDLFNBQUEsQ0FBVSxpREFDVixJQUFBLENBQUssUUFBQSxDQUNMLFlBQUEsQ0FBVyxTQUFBLENBQ1gsUUFBVWEsQ0FBQUEsRUFBTSxDQUFFQSxDQUFBQSxDQUFFLGVBQUEsR0FBbUJQLENBQUFBLEdBQVFLLEdBQUMsRUFBRSxDQUFBLENBQ25ELGdCQUVELENBQUEsQ0FFREEsR0FBQUEsQ0FBRSxHQUFBLEVBQ0RYLEdBQUFBLENBQUMsUUFBSyxTQUFBLENBQVUseUNBQUEsQ0FBMEMsZUFBRyxDQUFBLENBQUEsQ0FBQSxDQWxCMUQsTUFBQSxDQUFPVyxJQUFFLEdBQUcsQ0FvQm5CLENBQ0QsQ0FBQSxDQUVELE9BQUlSLENBQUFBLENBRUFILEdBQUFBLENBQUMsS0FBQSxDQUFBLENBQUksU0FBQSxDQUFXQyxFQUFHLDJDQUFBLENBQTZDTyxDQUFTLENBQUEsQ0FDdkUsUUFBQSxDQUFBUixJQUFDLEtBQUEsQ0FBQSxDQUFJLEdBQUEsQ0FBS1MsRUFBSyxTQUFBLENBQVUscURBQUEsQ0FDdEIsU0FBQUMsQ0FBQUEsQ0FDSCxDQUFBLENBQ0YsQ0FBQSxDQUtGVixHQUFBQSxDQUFDLE9BQUksR0FBQSxDQUFLUyxDQUFBQSxDQUFLLFNBQUEsQ0FBV1IsQ0FBQUEsQ0FBRyw0Q0FBNkNPLENBQVMsQ0FBQSxDQUNoRixRQUFBLENBQUFFLENBQUFBLENBQ0gsQ0FFSixDQUFDLEVBRURSLEVBQVMsV0FBQSxDQUFjLFVBQUEsS0FHaEJZLENBQUFBLENBQVFaIiwiZmlsZSI6ImNodW5rLUtWVUhOVUJHLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBjbiB9IGZyb20gJy4uL2xpYi9jbi5qcydcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vKiAgVHlwZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuZXhwb3J0IGludGVyZmFjZSBOYXZQaWxsIHtcbiAgLyoqIFVuaXF1ZSBwaWxsIGlkZW50aWZpZXIg4oCUIGNvbXBhcmVkIGFnYWluc3QgYGFjdGl2ZWAgKi9cbiAga2V5OiBzdHJpbmcgfCBudW1iZXJcbiAgLyoqIFBpbGwgbGFiZWwgdGV4dCAqL1xuICBsYWJlbD86IFJlYWN0LlJlYWN0Tm9kZVxuICAvKiogTGVnYWN5IGFsaWFzIGZvciBgbGFiZWxgICh0YWtlcyBwcmVjZWRlbmNlIHdoZW4gYm90aCBhcmUgc2V0KSAqL1xuICBsYmw/OiBSZWFjdC5SZWFjdE5vZGVcbiAgLyoqXG4gICAqIE9wdGlvbmFsIGxlYWRpbmcgaWNvbi4gQSBzdHJpbmcgaXMgcmVuZGVyZWQgYXMgYDxpIGNsYXNzTmFtZT17aWNvbn0gLz5gXG4gICAqIChwYXNzIHRoZSBmdWxsIGljb24gY2xhc3MsIGUuZy4gYFwiZmFzIGZhLXVzZXJcImAgb3IgYFwiYmkgYmktcGVyc29uXCJgKTtcbiAgICogYSBSZWFjdE5vZGUgKGUuZy4gYSBMdWNpZGUgZWxlbWVudCkgaXMgcmVuZGVyZWQgYXMtaXMuXG4gICAqL1xuICBpY29uPzogc3RyaW5nIHwgUmVhY3QuUmVhY3ROb2RlXG4gIC8qKiBTaG93IGEgZGlzbWlzcyBiYWRnZSBvbiB0aGlzIHBpbGwg4oCUIGNsaWNraW5nIGl0IGZpcmVzIGBvbkNsZWFyYCAqL1xuICBjbGVhcj86IGJvb2xlYW5cbiAgLyoqIFNob3cgYSBcIk5ld1wiIGJhZGdlIG9uIHRoaXMgcGlsbCAqL1xuICBuZXc/OiBib29sZWFuXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmF2UGlsbHNQcm9wcyB7XG4gIC8qKiBQaWxscyB0byByZW5kZXIgKi9cbiAgcGlsbHM6IE5hdlBpbGxbXVxuICAvKiogS2V5IG9mIHRoZSBjdXJyZW50bHkgYWN0aXZlIHBpbGwgKi9cbiAgYWN0aXZlPzogc3RyaW5nIHwgbnVtYmVyXG4gIC8qKiBGaXJlZCB3aGVuIGEgcGlsbCBpcyBjbGlja2VkICovXG4gIG9uQ2xpY2s/OiAocGlsbDogTmF2UGlsbCkgPT4gdm9pZFxuICAvKiogRmlyZWQgd2hlbiBhIHBpbGwncyBkaXNtaXNzIGJhZGdlIGlzIGNsaWNrZWQgKHJlcXVpcmVzIGBwaWxsLmNsZWFyYCkgKi9cbiAgY2xlYXI/OiAocGlsbDogTmF2UGlsbCkgPT4gdm9pZFxuICAvKiogV3JhcCB0aGUgcGlsbHMgaW4gYSBmdWxsLXdpZHRoIGxpZ2h0IGJhciB3aXRoIGEgY2VudGVyZWQgYC5jb250YWluZXJgICovXG4gIGNvbnRhaW4/OiBib29sZWFuXG4gIC8qKiBBZGRpdGlvbmFsIENTUyBjbGFzc2VzIChvbiB0aGUgd3JhcHBlciB3aGVuIGBjb250YWluYCwgZWxzZSBvbiB0aGUgbmF2KSAqL1xuICBjbGFzc05hbWU/OiBzdHJpbmdcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vKiAgTmF2UGlsbHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuY29uc3QgcmVuZGVySWNvbiA9IChpY29uOiBOYXZQaWxsWydpY29uJ10pOiBSZWFjdC5SZWFjdE5vZGUgPT4ge1xuICBpZiAoIWljb24pIHJldHVybiBudWxsXG4gIGlmICh0eXBlb2YgaWNvbiA9PT0gJ3N0cmluZycpIHJldHVybiA8aSBjbGFzc05hbWU9e2NuKGljb24sICdtZS0yJyl9IC8+XG4gIHJldHVybiA8c3BhbiBjbGFzc05hbWU9XCJtZS0yIGQtaW5saW5lLWZsZXggYWxpZ24tbWlkZGxlXCI+e2ljb259PC9zcGFuPlxufVxuXG4vKipcbiAqIEhvcml6b250YWwgQm9vdHN0cmFwIG5hdi1waWxscyB0YWIgc3RyaXAgd2l0aCBvcHRpb25hbCBpY29ucyxcbiAqIGRpc21pc3NpYmxlIHBpbGxzLCBhbmQgXCJOZXdcIiBiYWRnZXMuIFNjcm9sbHMgaG9yaXpvbnRhbGx5IG9uIG92ZXJmbG93LlxuICpcbiAqICoqSW1wb3J0YW50OioqIFRoZSBhY2NvbXBhbnlpbmcgQ1NTICoqbXVzdCoqIGJlIGltcG9ydGVkIGZvciB0aGUgYmFkZ2VzIHRvXG4gKiByZW5kZXIgY29ycmVjdGx5OlxuICogYGBganNcbiAqIGltcG9ydCAncmVhY3QtYm9vdHN0cmFwLXBsdWdpbnMvY3NzL3BsdWdpbnMuY3NzJ1xuICogYGBgXG4gKi9cbmNvbnN0IE5hdlBpbGxzID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MRWxlbWVudCwgTmF2UGlsbHNQcm9wcz4oKHtcbiAgY29udGFpbiA9IGZhbHNlLFxuICBhY3RpdmUsXG4gIHBpbGxzLFxuICBjbGVhcixcbiAgb25DbGljayxcbiAgY2xhc3NOYW1lLFxufSwgcmVmKSA9PiB7XG4gIGNvbnN0IGl0ZW1zID0gKHBpbGxzID8/IFtdKS5tYXAoKHIpID0+IChcbiAgICA8YnV0dG9uXG4gICAgICBrZXk9e1N0cmluZyhyLmtleSl9XG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oJ25hdi1saW5rIHRleHQtY2VudGVyIGFsaWduLW1pZGRsZScsIHIua2V5ID09PSBhY3RpdmUgJiYgJ2FjdGl2ZScpfVxuICAgICAgb25DbGljaz17KCkgPT4gb25DbGljaz8uKHIpfVxuICAgID5cbiAgICAgIHtyZW5kZXJJY29uKHIuaWNvbil9XG4gICAgICA8c3Bhbj57ci5sYmwgPz8gci5sYWJlbH08L3NwYW4+XG4gICAgICB7ci5jbGVhciAmJiAoXG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3NOYW1lPVwiYmFkZ2UgbmF2cGlsbHMtYmFkZ2UtY2xlYXIgbXktMCBmbG9hdC1lbmQgbXMtM1wiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIkRpc21pc3NcIlxuICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB7IGUuc3RvcFByb3BhZ2F0aW9uKCk7IGNsZWFyPy4ocikgfX1cbiAgICAgICAgPlxuICAgICAgICAgICZ0aW1lcztcbiAgICAgICAgPC9zcGFuPlxuICAgICAgKX1cbiAgICAgIHtyLm5ldyAmJiAoXG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImJhZGdlIG5hdnBpbGxzLWJhZGdlLW5ldyBmbG9hdC1lbmQgbXMtNFwiPk5ldzwvc3Bhbj5cbiAgICAgICl9XG4gICAgPC9idXR0b24+XG4gICkpXG5cbiAgaWYgKGNvbnRhaW4pIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NuKCduYXZwaWxscy1iYXIgcHgtMiBiZy1saWdodCByb3VuZGVkLTAgbWItMCcsIGNsYXNzTmFtZSl9PlxuICAgICAgICA8bmF2IHJlZj17cmVmfSBjbGFzc05hbWU9XCJjb250YWluZXIgbmF2IG5hdi1waWxscyBvdmVyZmxvdy14LWF1dG8gZmxleC1ub3dyYXBcIj5cbiAgICAgICAgICB7aXRlbXN9XG4gICAgICAgIDwvbmF2PlxuICAgICAgPC9kaXY+XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8bmF2IHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKCduYXYgbmF2LXBpbGxzIG92ZXJmbG93LXgtYXV0byBmbGV4LW5vd3JhcCcsIGNsYXNzTmFtZSl9PlxuICAgICAge2l0ZW1zfVxuICAgIDwvbmF2PlxuICApXG59KVxuXG5OYXZQaWxscy5kaXNwbGF5TmFtZSA9ICdOYXZQaWxscydcblxuZXhwb3J0IHsgTmF2UGlsbHMgfVxuZXhwb3J0IGRlZmF1bHQgTmF2UGlsbHNcbiJdfQ==