@rotki/ui-library 2.6.4 → 2.8.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/dist/components/accordions/accordion/RuiAccordion.vue.d.ts +3 -2
- package/dist/components/accordions/accordions/RuiAccordions.vue.d.ts +2 -1
- package/dist/components/alerts/RuiAlert.vue.d.ts +4 -3
- package/dist/components/buttons/button/RuiButton.vue.d.ts +7 -5
- package/dist/components/buttons/button-group/RuiButtonGroup.vue.d.ts +6 -5
- package/dist/components/calendar/RuiCalendar.vue.d.ts +4 -2
- package/dist/components/calendar/RuiCalendarGrid.vue.d.ts +4 -2
- package/dist/components/calendar/RuiCalendarHeader.vue.d.ts +4 -2
- package/dist/components/calendar/RuiCalendarMenu.vue.d.ts +4 -2
- package/dist/components/cards/RuiCard.vue.d.ts +4 -3
- package/dist/components/cards/RuiCardHeader.vue.d.ts +3 -2
- package/dist/components/chips/RuiChip.vue.d.ts +4 -3
- package/dist/components/color-picker/RuiColorBoard.vue.d.ts +2 -1
- package/dist/components/color-picker/RuiColorDisplay.vue.d.ts +2 -1
- package/dist/components/color-picker/RuiColorHue.vue.d.ts +4 -3
- package/dist/components/color-picker/RuiColorInput.vue.d.ts +4 -3
- package/dist/components/color-picker/RuiColorPicker.vue.d.ts +2 -1
- package/dist/components/color-picker/utils.d.ts +1 -1
- package/dist/components/date-time-picker/RuiDateTimePicker.vue.d.ts +10 -8
- package/dist/components/date-time-picker/RuiDateTimePickerMenu.vue.d.ts +5 -3
- package/dist/components/divider/RuiDivider.vue.d.ts +2 -1
- package/dist/components/forms/auto-complete/RuiAutoComplete.vue.d.ts +29 -28
- package/dist/components/forms/checkbox/RuiCheckbox.vue.d.ts +4 -3
- package/dist/components/forms/radio-button/radio/RuiRadio.vue.d.ts +7 -6
- package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue.d.ts +7 -6
- package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue.d.ts +8 -6
- package/dist/components/forms/select/RuiMenuSelect.vue.d.ts +747 -10
- package/dist/components/forms/select/RuiSimpleSelect.vue.d.ts +3 -2
- package/dist/components/forms/slider/RuiSlider.vue.d.ts +3 -2
- package/dist/components/forms/switch/RuiSwitch.vue.d.ts +3 -2
- package/dist/components/forms/text-area/RuiTextArea.vue.d.ts +8 -6
- package/dist/components/forms/text-field/RuiTextField.vue.d.ts +10 -8
- package/dist/components/helpers/RuiFormTextDetail.vue.d.ts +2 -1
- package/dist/components/icons/RuiIcon.vue.d.ts +2 -1
- package/dist/components/index.d.ts +2 -1
- package/dist/components/index.es.js +4343 -4260
- package/dist/components/loaders/RuiSkeletonBase.vue.d.ts +2 -1
- package/dist/components/loaders/RuiSkeletonLoader.vue.d.ts +2 -1
- package/dist/components/logos/RuiLogo.vue.d.ts +2 -1
- package/dist/components/overlays/badge/RuiBadge.vue.d.ts +5 -4
- package/dist/components/overlays/bottom-sheet/RuiBottomSheet.vue.d.ts +3 -2
- package/dist/components/overlays/dialog/RuiDialog.vue.d.ts +6 -5
- package/dist/components/overlays/menu/RuiMenu.vue.d.ts +6 -3
- package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue.d.ts +6 -5
- package/dist/components/overlays/notification/RuiNotification.vue.d.ts +4 -3
- package/dist/components/overlays/tooltip/RuiTooltip.vue.d.ts +4 -3
- package/dist/components/progress/RuiProgress.vue.d.ts +3 -2
- package/dist/components/steppers/RuiFooterStepper.vue.d.ts +2 -1
- package/dist/components/steppers/RuiStepper.vue.d.ts +4 -3
- package/dist/components/steppers/RuiStepperCustomIcon.vue.d.ts +2 -1
- package/dist/components/steppers/RuiStepperIcon.vue.d.ts +2 -1
- package/dist/components/tables/RuiDataTable.vue.d.ts +13 -12
- package/dist/components/tables/RuiExpandButton.vue.d.ts +3 -2
- package/dist/components/tables/RuiTableHead.vue.d.ts +7 -6
- package/dist/components/tables/RuiTablePagination.vue.d.ts +3 -2
- package/dist/components/tabs/tab/RuiTab.vue.d.ts +5 -4
- package/dist/components/tabs/tab-item/RuiTabItem.vue.d.ts +4 -3
- package/dist/components/tabs/tab-items/RuiTabItems.vue.d.ts +7 -6
- package/dist/components/tabs/tabs/RuiTabs.vue.d.ts +3 -2
- package/dist/components/time-picker/RuiTimePicker.vue.d.ts +4 -2
- package/dist/composables/defaults/table.d.ts +1 -2
- package/dist/composables/dropdown-menu.d.ts +3 -2
- package/dist/composables/index-CC7A7CEh.js +737 -0
- package/dist/composables/index.es.js +1 -1
- package/dist/composables/popper.d.ts +2 -2
- package/dist/composables/sticky-header.d.ts +1 -1
- package/dist/consts/time-accuracy-BnKA5GyT.js +1 -1
- package/dist/consts/typography.d.ts +38 -4
- package/dist/icons/icons_1.d.ts +1 -1
- package/dist/icons/icons_1.es.js +896 -896
- package/dist/icons/icons_2.d.ts +1 -1
- package/dist/icons/icons_2.es.js +1002 -1002
- package/dist/icons/icons_3.d.ts +1 -1
- package/dist/icons/icons_3.es.js +982 -982
- package/dist/icons/icons_4.d.ts +1 -0
- package/dist/icons/icons_4.es.js +358 -354
- package/dist/icons/index.d.ts +1 -1
- package/dist/icons/index.es.js +1219 -1218
- package/dist/{index-cTPqOSmm.js → index-D7l4d7N2.js} +4 -4
- package/dist/index.es.js +1221 -1220
- package/dist/style.css +1 -1
- package/dist/theme/index.es.js +30 -23
- package/dist/utils/form-text-detail.d.ts +1 -1
- package/dist/utils/index-DJ-ueLCs.js +158 -0
- package/dist/vendor-Hqbg5uCG.js +1931 -0
- package/dist/web-types.json +59 -39
- package/package.json +41 -48
- package/README.md +0 -276
- package/dist/composables/index-D7DVd8pO.js +0 -717
- package/dist/utils/index-D-sENcA8.js +0 -158
- package/dist/vendor-X3mXJl51.js +0 -1931
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
import { logicOr as p } from "@vueuse/math";
|
|
2
|
-
import { computed as m, ref as b } from "vue";
|
|
3
|
-
import { get as g, objectPick as w, objectOmit as M, set as x } from "@vueuse/shared";
|
|
4
|
-
import { c as A } from "../vendor-X3mXJl51.js";
|
|
5
|
-
import { createGlobalState as C } from "@vueuse/core";
|
|
6
|
-
class I extends Error {
|
|
7
|
-
constructor(e) {
|
|
8
|
-
super(e ?? "AssertionError"), this.name = "AssertionError";
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
function K(t, e) {
|
|
12
|
-
if (!t)
|
|
13
|
-
throw new I(e);
|
|
14
|
-
}
|
|
15
|
-
function T(t, e) {
|
|
16
|
-
const r = m(() => {
|
|
17
|
-
let o = g(t);
|
|
18
|
-
return typeof o == "string" && (o = [o]), o.filter((f) => !!f);
|
|
19
|
-
}), s = m(() => {
|
|
20
|
-
let o = g(e);
|
|
21
|
-
return typeof o == "string" && (o = [o]), o.filter((f) => !!f);
|
|
22
|
-
}), i = m(() => g(r).length > 0), c = m(() => g(s).length > 0), a = p(i, c);
|
|
23
|
-
return {
|
|
24
|
-
formattedErrorMessages: r,
|
|
25
|
-
formattedSuccessMessages: s,
|
|
26
|
-
hasError: i,
|
|
27
|
-
hasMessages: a,
|
|
28
|
-
hasSuccess: c
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
function O(t, { fractionDigits: e = 2 }) {
|
|
32
|
-
return new Intl.NumberFormat(void 0, {
|
|
33
|
-
maximumFractionDigits: e,
|
|
34
|
-
minimumFractionDigits: e
|
|
35
|
-
}).format(Number(t));
|
|
36
|
-
}
|
|
37
|
-
function V(t) {
|
|
38
|
-
return O(t, { fractionDigits: 0 });
|
|
39
|
-
}
|
|
40
|
-
function y(t) {
|
|
41
|
-
return Object.keys(t).filter(
|
|
42
|
-
(e) => e.startsWith("data-")
|
|
43
|
-
);
|
|
44
|
-
}
|
|
45
|
-
function W(t, e = ["class"]) {
|
|
46
|
-
return w(t, [...y(t), ...e]);
|
|
47
|
-
}
|
|
48
|
-
function q(t, e = ["class"]) {
|
|
49
|
-
return M(t, [...y(t), ...e]);
|
|
50
|
-
}
|
|
51
|
-
function G(t, e) {
|
|
52
|
-
return t && Object.keys(t).reduce((r, s) => (r[A(s)] = t[s], r), {});
|
|
53
|
-
}
|
|
54
|
-
function L(t) {
|
|
55
|
-
return t ? t.toString().toLowerCase().replace(/[^\da-z]/gi, "") : "";
|
|
56
|
-
}
|
|
57
|
-
function P(t) {
|
|
58
|
-
return t === void 0 || typeof t == "string" && isNaN(Number(t)) ? t : `${t}px`;
|
|
59
|
-
}
|
|
60
|
-
function h(t, e) {
|
|
61
|
-
if (t === e)
|
|
62
|
-
return !0;
|
|
63
|
-
if (t == null || e == null)
|
|
64
|
-
return t === e;
|
|
65
|
-
if (typeof t != typeof e)
|
|
66
|
-
return !1;
|
|
67
|
-
if (Array.isArray(t)) {
|
|
68
|
-
if (!Array.isArray(e) || t.length !== e.length)
|
|
69
|
-
return !1;
|
|
70
|
-
for (const [r, s] of t.entries())
|
|
71
|
-
if (!h(s, e[r]))
|
|
72
|
-
return !1;
|
|
73
|
-
return !0;
|
|
74
|
-
}
|
|
75
|
-
if (typeof t == "object") {
|
|
76
|
-
const r = Object.keys(t), s = Object.keys(e);
|
|
77
|
-
if (r.length !== s.length)
|
|
78
|
-
return !1;
|
|
79
|
-
for (const i of r)
|
|
80
|
-
if (!h(t[i], e[i]))
|
|
81
|
-
return !1;
|
|
82
|
-
return !0;
|
|
83
|
-
}
|
|
84
|
-
return !1;
|
|
85
|
-
}
|
|
86
|
-
const S = C(() => {
|
|
87
|
-
const t = b(0);
|
|
88
|
-
return { count: t, nextId: () => {
|
|
89
|
-
const r = g(t) + 1;
|
|
90
|
-
return x(t, r), r;
|
|
91
|
-
} };
|
|
92
|
-
});
|
|
93
|
-
function U(t = "") {
|
|
94
|
-
const { nextId: e } = S();
|
|
95
|
-
return `${t}-${e()}`;
|
|
96
|
-
}
|
|
97
|
-
const n = new Array(4);
|
|
98
|
-
function j(t) {
|
|
99
|
-
for (let e = 0; e < n.length; e++) n[e] = 0;
|
|
100
|
-
for (let e = 0; e < t.length; e++)
|
|
101
|
-
n[e % 4] = (n[e % 4] << 5) - n[e % 4] + t.charCodeAt(e);
|
|
102
|
-
}
|
|
103
|
-
function u() {
|
|
104
|
-
const t = n[0] ^ n[0] << 11;
|
|
105
|
-
return n[0] = n[1], n[1] = n[2], n[2] = n[3], n[3] = n[3] ^ n[3] >> 19 ^ t ^ t >> 8, (n[3] >>> 0) / (1 << 31 >>> 0);
|
|
106
|
-
}
|
|
107
|
-
function d() {
|
|
108
|
-
const t = Math.floor(u() * 360), e = `${u() * 60 + 40}%`, r = `${(u() + u() + u() + u()) * 25}%`;
|
|
109
|
-
return `hsl(${t},${e},${r})`;
|
|
110
|
-
}
|
|
111
|
-
function k(t) {
|
|
112
|
-
const e = t, r = t, s = Math.ceil(e / 2), i = e - s, c = [];
|
|
113
|
-
for (let a = 0; a < r; a++) {
|
|
114
|
-
let o = [];
|
|
115
|
-
for (let l = 0; l < s; l++)
|
|
116
|
-
o[l] = Math.floor(u() * 2.3);
|
|
117
|
-
const f = o.slice(0, i);
|
|
118
|
-
f.reverse(), o = o.concat(f);
|
|
119
|
-
for (const l of o) c.push(l);
|
|
120
|
-
}
|
|
121
|
-
return c;
|
|
122
|
-
}
|
|
123
|
-
function E(t) {
|
|
124
|
-
const e = {};
|
|
125
|
-
return e.seed = t.seed || Math.floor(Math.random() * 10 ** 16).toString(16), j(e.seed), e.size = t.size || 8, e.scale = t.scale || 8, e.color = t.color || d(), e.bgcolor = t.bgcolor || d(), e.spotColor = t.spotColor || d(), e;
|
|
126
|
-
}
|
|
127
|
-
function $(t, e) {
|
|
128
|
-
const r = E(t || {}), s = k(r.size), i = Math.sqrt(s.length);
|
|
129
|
-
e.width = e.height = r.size * r.scale;
|
|
130
|
-
const c = e.getContext("2d");
|
|
131
|
-
if (c) {
|
|
132
|
-
c.fillStyle = r.bgcolor, c.fillRect(0, 0, e.width, e.height), c.fillStyle = r.color;
|
|
133
|
-
for (const [a, o] of s.entries())
|
|
134
|
-
if (o) {
|
|
135
|
-
const f = Math.floor(a / i), l = a % i;
|
|
136
|
-
c.fillStyle = o === 1 ? r.color : r.spotColor, c.fillRect(l * r.scale, f * r.scale, r.scale, r.scale);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
return e;
|
|
140
|
-
}
|
|
141
|
-
function B(t) {
|
|
142
|
-
const e = document.createElement("canvas");
|
|
143
|
-
return $(t, e), e.toDataURL("image/jpeg");
|
|
144
|
-
}
|
|
145
|
-
export {
|
|
146
|
-
q as a,
|
|
147
|
-
L as b,
|
|
148
|
-
K as c,
|
|
149
|
-
U as d,
|
|
150
|
-
P as e,
|
|
151
|
-
V as f,
|
|
152
|
-
W as g,
|
|
153
|
-
B as h,
|
|
154
|
-
h as i,
|
|
155
|
-
G as t,
|
|
156
|
-
T as u
|
|
157
|
-
};
|
|
158
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgtRC1zRU5jQTguanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9hc3NlcnQudHMiLCIuLi8uLi9zcmMvdXRpbHMvZm9ybS10ZXh0LWRldGFpbC50cyIsIi4uLy4uL3NyYy91dGlscy9oZWxwZXJzLnRzIiwiLi4vLi4vc3JjL3V0aWxzL2lzLWVxdWFsLnRzIiwiLi4vLi4vc3JjL3V0aWxzL2dlbmVyYXRlLWlkLnRzIiwiLi4vLi4vc3JjL3V0aWxzL2Jsb2NraWUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgQXNzZXJ0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1zZz86IHN0cmluZykge1xuICAgIHN1cGVyKG1zZyA/PyAnQXNzZXJ0aW9uRXJyb3InKTtcbiAgICB0aGlzLm5hbWUgPSAnQXNzZXJ0aW9uRXJyb3InO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnQoY29uZGl0aW9uOiBhbnksIG1zZz86IHN0cmluZyk6IGFzc2VydHMgY29uZGl0aW9uIHtcbiAgaWYgKCFjb25kaXRpb24pXG4gICAgdGhyb3cgbmV3IEFzc2VydGlvbkVycm9yKG1zZyk7XG59XG4iLCJpbXBvcnQgdHlwZSB7IE1heWJlUmVmIH0gZnJvbSAnQHZ1ZXVzZS9zaGFyZWQnO1xuaW1wb3J0IHsgbG9naWNPciB9IGZyb20gJ0B2dWV1c2UvbWF0aCc7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VGb3JtVGV4dERldGFpbChlcnJvck1lc3NhZ2VzOiBNYXliZVJlZjxzdHJpbmcgfCBzdHJpbmdbXT4sIHN1Y2Nlc3NNZXNzYWdlczogTWF5YmVSZWY8c3RyaW5nIHwgc3RyaW5nW10+KSB7XG4gIGNvbnN0IGZvcm1hdHRlZEVycm9yTWVzc2FnZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgbGV0IGVycm9yTWVzc2FnZXNWYWwgPSBnZXQoZXJyb3JNZXNzYWdlcyk7XG4gICAgaWYgKHR5cGVvZiBlcnJvck1lc3NhZ2VzVmFsID09PSAnc3RyaW5nJylcbiAgICAgIGVycm9yTWVzc2FnZXNWYWwgPSBbZXJyb3JNZXNzYWdlc1ZhbF07XG5cbiAgICByZXR1cm4gZXJyb3JNZXNzYWdlc1ZhbC5maWx0ZXIoaXRlbSA9PiAhIWl0ZW0pO1xuICB9KTtcblxuICBjb25zdCBmb3JtYXR0ZWRTdWNjZXNzTWVzc2FnZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgbGV0IHN1Y2Nlc3NNZXNzYWdlc1ZhbCA9IGdldChzdWNjZXNzTWVzc2FnZXMpO1xuICAgIGlmICh0eXBlb2Ygc3VjY2Vzc01lc3NhZ2VzVmFsID09PSAnc3RyaW5nJylcbiAgICAgIHN1Y2Nlc3NNZXNzYWdlc1ZhbCA9IFtzdWNjZXNzTWVzc2FnZXNWYWxdO1xuXG4gICAgcmV0dXJuIHN1Y2Nlc3NNZXNzYWdlc1ZhbC5maWx0ZXIoaXRlbSA9PiAhIWl0ZW0pO1xuICB9KTtcblxuICBjb25zdCBoYXNFcnJvciA9IGNvbXB1dGVkKCgpID0+IGdldChmb3JtYXR0ZWRFcnJvck1lc3NhZ2VzKS5sZW5ndGggPiAwKTtcblxuICBjb25zdCBoYXNTdWNjZXNzID0gY29tcHV0ZWQoKCkgPT4gZ2V0KGZvcm1hdHRlZFN1Y2Nlc3NNZXNzYWdlcykubGVuZ3RoID4gMCk7XG4gIGNvbnN0IGhhc01lc3NhZ2VzID0gbG9naWNPcihoYXNFcnJvciwgaGFzU3VjY2Vzcyk7XG5cbiAgcmV0dXJuIHtcbiAgICBmb3JtYXR0ZWRFcnJvck1lc3NhZ2VzLFxuICAgIGZvcm1hdHRlZFN1Y2Nlc3NNZXNzYWdlcyxcbiAgICBoYXNFcnJvcixcbiAgICBoYXNNZXNzYWdlcyxcbiAgICBoYXNTdWNjZXNzLFxuICB9O1xufVxuIiwiaW1wb3J0IHR5cGUgeyBTZXR1cENvbnRleHQgfSBmcm9tICd2dWUnO1xuaW1wb3J0IHsgb2JqZWN0T21pdCwgb2JqZWN0UGljayB9IGZyb20gJ0B2dWV1c2Uvc2hhcmVkJztcbmltcG9ydCB7IGNhbWVsQ2FzZSwgc25ha2VDYXNlIH0gZnJvbSAnc2N1bGUnO1xuXG5pbnRlcmZhY2UgQ3VycmVuY3lPcHRpb25zIHtcbiAgY3VycmVuY3k/OiBzdHJpbmc7XG4gIGxvY2FsZT86IHN0cmluZztcbiAgc3R5bGU/OiBJbnRsLk51bWJlckZvcm1hdE9wdGlvbnNTdHlsZTtcbiAgZnJhY3Rpb25EaWdpdHM/OiBudW1iZXI7XG59XG5cbnR5cGUgU2V0dXBDb250ZXh0QXR0cnMgPSBTZXR1cENvbnRleHRbJ2F0dHJzJ107XG5cbnR5cGUgU2V0dXBDb250ZXh0QXR0cnNLZXlzID0gKGtleW9mIFNldHVwQ29udGV4dEF0dHJzKVtdO1xuXG4vKipcbiAqIEZvcm1hdCBudW1iZXIgdmFsdWUgdG8gc3BlY2lmaWVkIGN1cnJlbmN5IGZvcm1hdFxuICogQHBhcmFtIHtudW1iZXJ9IGFtb3VudFxuICogQHBhcmFtIHtDdXJyZW5jeU9wdGlvbnN9IG9wdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEN1cnJlbmN5KGFtb3VudDogbnVtYmVyIHwgc3RyaW5nLCB7XG4gIGN1cnJlbmN5ID0gJ0VVUicsXG4gIGZyYWN0aW9uRGlnaXRzID0gMixcbiAgbG9jYWxlID0gJ2RlLURlJyxcbiAgc3R5bGUgPSAnY3VycmVuY3knLFxufTogQ3VycmVuY3lPcHRpb25zKSB7XG4gIHJldHVybiBuZXcgSW50bC5OdW1iZXJGb3JtYXQobG9jYWxlLCB7XG4gICAgY3VycmVuY3ksXG4gICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiBmcmFjdGlvbkRpZ2l0cyxcbiAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IGZyYWN0aW9uRGlnaXRzLFxuICAgIHN0eWxlLFxuICB9KS5mb3JtYXQoTnVtYmVyKGFtb3VudCkpO1xufVxuXG4vKipcbiAqIEZvcm1hdCBudW1iZXIgdmFsdWVcbiAqIEBwYXJhbSB7bnVtYmVyfSBhbW91bnRcbiAqIEBwYXJhbSB7Q3VycmVuY3lPcHRpb25zfSBvcHRpb25zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXROdW1iZXIoYW1vdW50OiBudW1iZXIgfCBzdHJpbmcsIHsgZnJhY3Rpb25EaWdpdHMgPSAyIH06IEN1cnJlbmN5T3B0aW9ucykge1xuICByZXR1cm4gbmV3IEludGwuTnVtYmVyRm9ybWF0KHVuZGVmaW5lZCwge1xuICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogZnJhY3Rpb25EaWdpdHMsXG4gICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiBmcmFjdGlvbkRpZ2l0cyxcbiAgfSkuZm9ybWF0KE51bWJlcihhbW91bnQpKTtcbn1cblxuLyoqXG4gKiBGb3JtYXQgbnVtYmVyIHZhbHVlIHdpdGhvdXQgZnJhY3Rpb25cbiAqIEBwYXJhbSB7bnVtYmVyfSBhbW91bnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEludGVnZXIoYW1vdW50OiBudW1iZXIgfCBzdHJpbmcpIHtcbiAgcmV0dXJuIGZvcm1hdE51bWJlcihhbW91bnQsIHsgZnJhY3Rpb25EaWdpdHM6IDAgfSk7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIGFuZCByZXR1cm5zIHRoZSBhcnJheSBvZiByb290IGFsbG93ZWQgYXR0cmlidXRlc1xuICogQHBhcmFtIHtTZXR1cENvbnRleHRBdHRyc30gZGF0YVxuICogQHJldHVybnMge1NldHVwQ29udGV4dEF0dHJzS2V5c31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJvb3RLZXlzKGRhdGE6IFNldHVwQ29udGV4dEF0dHJzKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhkYXRhKS5maWx0ZXIoa2V5ID0+XG4gICAga2V5LnN0YXJ0c1dpdGgoJ2RhdGEtJyksXG4gICkgYXMgU2V0dXBDb250ZXh0QXR0cnNLZXlzO1xufVxuXG4vKipcbiAqIFBpY2tzIG9ubHkgcmVxdWlyZWQgYXR0cmlidXRlcyBmb3Igcm9vdCBlbGVtZW50XG4gKiBAcGFyYW0ge1NldHVwQ29udGV4dEF0dHJzfSBkYXRhXG4gKiBAcGFyYW0ge1NldHVwQ29udGV4dEF0dHJzS2V5c30gaW5jbHVkZVxuICogQHJldHVybnMge1BpY2s8U2V0dXBDb250ZXh0QXR0cnMsIGFueT59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSb290QXR0cnMoZGF0YTogU2V0dXBDb250ZXh0QXR0cnMsIGluY2x1ZGU6IFNldHVwQ29udGV4dEF0dHJzS2V5cyA9IFsnY2xhc3MnXSkge1xuICByZXR1cm4gb2JqZWN0UGljayhkYXRhLCBbLi4uZ2V0Um9vdEtleXMoZGF0YSksIC4uLmluY2x1ZGVdKTtcbn1cblxuLyoqXG4gKiBPbWl0cyByb290IGF0dHJpYnV0ZXMgZnJvbSBjb21wb25lbnQncyBhdHRyaWJ1dGVzXG4gKiBAcGFyYW0ge1NldHVwQ29udGV4dEF0dHJzfSBkYXRhXG4gKiBAcGFyYW0ge1NldHVwQ29udGV4dEF0dHJzS2V5c30gZXhjbHVkZVxuICogQHJldHVybnMge09taXQ8U2V0dXBDb250ZXh0QXR0cnMsIGFueT59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXROb25Sb290QXR0cnMoZGF0YTogU2V0dXBDb250ZXh0QXR0cnMsIGV4Y2x1ZGU6IFNldHVwQ29udGV4dEF0dHJzS2V5cyA9IFsnY2xhc3MnXSkge1xuICByZXR1cm4gb2JqZWN0T21pdChkYXRhLCBbLi4uZ2V0Um9vdEtleXMoZGF0YSksIC4uLmV4Y2x1ZGVdKTtcbn1cblxuLyoqXG4gKiBUcmFuc2Zvcm1zIHRoZSBrZXlzIG9mIGFuIG9iamVjdCB0byBlaXRoZXIgY2FtZWxDYXNlIG9yIHNuYWtlX2Nhc2VcbiAqIEBwYXJhbSB7VH0gaXRlbVxuICogQHBhcmFtIHtcImNhbWVsQ2FzZVwiIHwgXCJzbmFrZV9jYXNlXCJ9IHRvXG4gKiBAcmV0dXJucyB7UmVjb3JkPHN0cmluZywgYW55Pn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybUNhc2U8VCBleHRlbmRzIG9iamVjdD4oaXRlbTogVCwgdG86ICdjYW1lbENhc2UnIHwgJ3NuYWtlX2Nhc2UnKSB7XG4gIGlmICghaXRlbSlcbiAgICByZXR1cm4gaXRlbTtcblxuICByZXR1cm4gT2JqZWN0LmtleXMoaXRlbSkucmVkdWNlKChhY2MsIGN1cnIpID0+IHtcbiAgICBpZiAodG8gPT09ICdjYW1lbENhc2UnKVxuICAgICAgYWNjW2NhbWVsQ2FzZShjdXJyKV0gPSBpdGVtW2N1cnIgYXMga2V5b2YgVF07XG4gICAgZWxzZVxuICAgICAgYWNjW3NuYWtlQ2FzZShjdXJyKV0gPSBpdGVtW2N1cnIgYXMga2V5b2YgVF07XG5cbiAgICByZXR1cm4gYWNjO1xuICB9LCB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KTtcbn1cblxuLyoqXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyAtIFN0cmluZyB0byBjb252ZXJ0XG4gKiBAcmV0dXJuIHtzdHJpbmd9IC0gU3RyaW5nIGNvbnZlcnRlZCB0byB0ZXh0IHRva2VuLCBtb3N0bHkgdXNlZCB0byBtYXRjaGluZyBrZXl3b3JkXG4gKiBAZXhhbXBsZVxuICogZ2V0VGV4dFRva2VuKCd0aGlzIGlzIGEgc2VudGVuY2UnKTsgLy8gdGhpc2lzYXNlbnRlbmNlXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRleHRUb2tlbihzdHJpbmc6IGFueSk6IHN0cmluZyB7XG4gIGlmICghc3RyaW5nKVxuICAgIHJldHVybiAnJztcblxuICByZXR1cm4gc3RyaW5nLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bXlxcZGEtel0vZ2ksICcnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybVByb3BzVW5pdCh2YWx1ZT86IHN0cmluZyB8IG51bWJlcik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8ICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIGlzTmFOKE51bWJlcih2YWx1ZSkpKSlcbiAgICByZXR1cm4gdmFsdWU7XG4gIHJldHVybiBgJHt2YWx1ZX1weGA7XG59XG4iLCJleHBvcnQgZnVuY3Rpb24gaXNFcXVhbCh2YWx1ZTogYW55LCBvdGhlcjogYW55KSB7XG4gIC8vIENoZWNrIGlmIHRoZSB2YWx1ZXMgYXJlIGlkZW50aWNhbCAoY292ZXJzIHByaW1pdGl2ZXMgYW5kIGZ1bmN0aW9ucylcbiAgaWYgKHZhbHVlID09PSBvdGhlcilcbiAgICByZXR1cm4gdHJ1ZTtcblxuICAvLyBDaGVjayBpZiB0aGUgdmFsdWVzIGFyZSBudWxsIG9yIHVuZGVmaW5lZFxuICBpZiAodmFsdWUgPT0gbnVsbCB8fCBvdGhlciA9PSBudWxsKVxuICAgIHJldHVybiB2YWx1ZSA9PT0gb3RoZXI7XG5cbiAgLy8gQ2hlY2sgaWYgdGhlIHZhbHVlcyBhcmUgb2YgZGlmZmVyZW50IHR5cGVzXG4gIGlmICh0eXBlb2YgdmFsdWUgIT09IHR5cGVvZiBvdGhlcilcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgLy8gQ29tcGFyZSBhcnJheXNcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KG90aGVyKSB8fCB2YWx1ZS5sZW5ndGggIT09IG90aGVyLmxlbmd0aClcbiAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIGZvciAoY29uc3QgW2ksIGVsZW1lbnRdIG9mIHZhbHVlLmVudHJpZXMoKSkge1xuICAgICAgaWYgKCFpc0VxdWFsKGVsZW1lbnQsIG90aGVyW2ldKSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8vIENvbXBhcmUgb2JqZWN0c1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgIGNvbnN0IHZhbHVlS2V5cyA9IE9iamVjdC5rZXlzKHZhbHVlKTtcbiAgICBjb25zdCBvdGhlcktleXMgPSBPYmplY3Qua2V5cyhvdGhlcik7XG5cbiAgICBpZiAodmFsdWVLZXlzLmxlbmd0aCAhPT0gb3RoZXJLZXlzLmxlbmd0aClcbiAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIGZvciAoY29uc3Qga2V5IG9mIHZhbHVlS2V5cykge1xuICAgICAgaWYgKCFpc0VxdWFsKHZhbHVlW2tleV0sIG90aGVyW2tleV0pKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gSWYgdGhlIHZhbHVlcyBhcmUgbmVpdGhlciBwcmltaXRpdmVzLCBhcnJheXMsIG5vciBvYmplY3RzLCByZXR1cm4gZmFsc2VcbiAgcmV0dXJuIGZhbHNlO1xufVxuIiwiZXhwb3J0IGNvbnN0IHVzZUdsb2JhbElkID0gY3JlYXRlR2xvYmFsU3RhdGUoKCkgPT4ge1xuICBjb25zdCBjb3VudCA9IHJlZigwKTtcblxuICBjb25zdCBuZXh0SWQgPSAoKSA9PiB7XG4gICAgY29uc3QgY291bnRWYWwgPSBnZXQoY291bnQpICsgMTtcbiAgICBzZXQoY291bnQsIGNvdW50VmFsKTtcblxuICAgIHJldHVybiBjb3VudFZhbDtcbiAgfTtcblxuICByZXR1cm4geyBjb3VudCwgbmV4dElkIH07XG59KTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlSWQocHJlZml4ID0gJycpIHtcbiAgY29uc3QgeyBuZXh0SWQgfSA9IHVzZUdsb2JhbElkKCk7XG5cbiAgcmV0dXJuIGAke3ByZWZpeH0tJHtuZXh0SWQoKX1gO1xufVxuIiwiLy8gU291cmNlOiBodHRwczovL2dpdGh1Yi5jb20vZXRoZXJldW0vYmxvY2tpZXNcbi8vIFRoZSByYW5kb20gbnVtYmVyIGlzIGEganMgaW1wbGVtZW50YXRpb24gb2YgdGhlIFhvcnNoaWZ0IFBSTkdcbmludGVyZmFjZSBCbG9ja2llT3B0aW9ucyB7XG4gIC8qKiBzZWVkIHVzZWQgdG8gZ2VuZXJhdGUgaWNvbiBkYXRhLCBkZWZhdWx0OiByYW5kb20gKi9cbiAgc2VlZDogc3RyaW5nO1xuICAvKiogdG8gbWFudWFsbHkgc3BlY2lmeSB0aGUgaWNvbiBjb2xvciwgZGVmYXVsdDogcmFuZG9tICovXG4gIGNvbG9yOiBzdHJpbmc7XG4gIC8qKiBjaG9vc2UgYSBkaWZmZXJlbnQgYmFja2dyb3VuZCBjb2xvciwgZGVmYXVsdDogcmFuZG9tICovXG4gIGJnY29sb3I6IHN0cmluZztcbiAgLyoqIHdpZHRoL2hlaWdodCBvZiB0aGUgaWNvbiBpbiBibG9ja3MsIGRlZmF1bHQ6IDggKi9cbiAgc2l6ZTogbnVtYmVyO1xuICAvKiogd2lkdGgvaGVpZ2h0IG9mIGVhY2ggYmxvY2sgaW4gcGl4ZWxzLCBkZWZhdWx0OiA0ICovXG4gIHNjYWxlOiBudW1iZXI7XG4gIC8qKlxuICAgKiBlYWNoIHBpeGVsIGhhcyBhIDEzJSBjaGFuY2Ugb2YgYmVpbmcgb2YgYSB0aGlyZCBjb2xvciwgZGVmYXVsdDogcmFuZG9tLlxuICAgKlxuICAgKiBTZXQgdG8gLTEgdG8gZGlzYWJsZSBpdC5cbiAgICpcbiAgICogVGhlc2UgXCJzcG90c1wiIGNyZWF0ZSBzdHJ1Y3R1cmVzIHRoYXQgbG9vayBsaWtlIGV5ZXMsIG1vdXRocyBhbmQgbm9zZXMuXG4gICAqL1xuICBzcG90Q29sb3I6IHN0cmluZztcbn1cblxuY29uc3QgcmFuZFNlZWQgPSBuZXcgQXJyYXkoNCk7IC8vIFhvcnNoaWZ0OiBbeCwgeSwgeiwgd10gMzIgYml0IHZhbHVlc1xuXG5mdW5jdGlvbiBzZWVkUmFuZChzZWVkOiBzdHJpbmcpOiB2b2lkIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCByYW5kU2VlZC5sZW5ndGg7IGkrKykgcmFuZFNlZWRbaV0gPSAwO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2VlZC5sZW5ndGg7IGkrKylcbiAgICByYW5kU2VlZFtpICUgNF0gPSAocmFuZFNlZWRbaSAlIDRdIDw8IDUpIC0gcmFuZFNlZWRbaSAlIDRdICsgc2VlZC5jaGFyQ29kZUF0KGkpO1xufVxuXG5mdW5jdGlvbiByYW5kKCk6IG51bWJlciB7XG4gIC8vIGJhc2VkIG9uIEphdmEncyBTdHJpbmcuaGFzaENvZGUoKSwgZXhwYW5kZWQgdG8gNCAzMmJpdCB2YWx1ZXNcbiAgY29uc3QgdCA9IHJhbmRTZWVkWzBdIF4gKHJhbmRTZWVkWzBdIDw8IDExKTtcblxuICByYW5kU2VlZFswXSA9IHJhbmRTZWVkWzFdO1xuICByYW5kU2VlZFsxXSA9IHJhbmRTZWVkWzJdO1xuICByYW5kU2VlZFsyXSA9IHJhbmRTZWVkWzNdO1xuICByYW5kU2VlZFszXSA9IHJhbmRTZWVkWzNdIF4gKHJhbmRTZWVkWzNdID4+IDE5KSBeIHQgXiAodCA+PiA4KTtcblxuICByZXR1cm4gKHJhbmRTZWVkWzNdID4+PiAwKSAvICgoMSA8PCAzMSkgPj4+IDApO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVDb2xvcigpOiBzdHJpbmcge1xuICAvLyBzYXR1cmF0aW9uIGlzIHRoZSB3aG9sZSBjb2xvciBzcGVjdHJ1bVxuICBjb25zdCBoID0gTWF0aC5mbG9vcihyYW5kKCkgKiAzNjApO1xuICAvLyBzYXR1cmF0aW9uIGdvZXMgZnJvbSA0MCB0byAxMDAsIGl0IGF2b2lkcyBncmV5aXNoIGNvbG9yc1xuICBjb25zdCBzID0gYCR7cmFuZCgpICogNjAgKyA0MH0lYDtcbiAgLy8gbGlnaHRuZXNzIGNhbiBiZSBhbnl0aGluZyBmcm9tIDAgdG8gMTAwLCBidXQgcHJvYmFiaWxpdGllcyBhcmUgYSBiZWxsIGN1cnZlIGFyb3VuZCA1MCVcbiAgY29uc3QgbCA9IGAkeyhyYW5kKCkgKyByYW5kKCkgKyByYW5kKCkgKyByYW5kKCkpICogMjV9JWA7XG5cbiAgcmV0dXJuIGBoc2woJHtofSwke3N9LCR7bH0pYDtcbn1cblxuZnVuY3Rpb24gY3JlYXRlSW1hZ2VEYXRhKHNpemU6IG51bWJlcik6IG51bWJlcltdIHtcbiAgY29uc3Qgd2lkdGggPSBzaXplOyAvLyBPbmx5IHN1cHBvcnQgc3F1YXJlIGljb25zIGZvciBub3dcbiAgY29uc3QgaGVpZ2h0ID0gc2l6ZTtcblxuICBjb25zdCBkYXRhV2lkdGggPSBNYXRoLmNlaWwod2lkdGggLyAyKTtcbiAgY29uc3QgbWlycm9yV2lkdGggPSB3aWR0aCAtIGRhdGFXaWR0aDtcblxuICBjb25zdCBkYXRhID0gW107XG4gIGZvciAobGV0IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspIHtcbiAgICBsZXQgcm93ID0gW107XG4gICAgZm9yIChsZXQgeCA9IDA7IHggPCBkYXRhV2lkdGg7IHgrKykge1xuICAgICAgLy8gdGhpcyBtYWtlcyBmb3JlZ3JvdW5kIGFuZCBiYWNrZ3JvdW5kIGNvbG9yIHRvIGhhdmUgYSA0MyUgKDEvMi4zKSBwcm9iYWJpbGl0eVxuICAgICAgLy8gc3BvdCBjb2xvciBoYXMgMTMlIGNoYW5jZVxuICAgICAgcm93W3hdID0gTWF0aC5mbG9vcihyYW5kKCkgKiAyLjMpO1xuICAgIH1cbiAgICBjb25zdCByID0gcm93LnNsaWNlKDAsIG1pcnJvcldpZHRoKTtcbiAgICByLnJldmVyc2UoKTtcbiAgICByb3cgPSByb3cuY29uY2F0KHIpO1xuXG4gICAgZm9yIChjb25zdCBlbGVtZW50IG9mIHJvdykgZGF0YS5wdXNoKGVsZW1lbnQpO1xuICB9XG5cbiAgcmV0dXJuIGRhdGE7XG59XG5cbmZ1bmN0aW9uIGJ1aWxkT3B0cyhvcHRzOiBQYXJ0aWFsPEJsb2NraWVPcHRpb25zPik6IEJsb2NraWVPcHRpb25zIHtcbiAgY29uc3QgbmV3T3B0czogUGFydGlhbDxCbG9ja2llT3B0aW9ucz4gPSB7fTtcblxuICBuZXdPcHRzLnNlZWQgPSBvcHRzLnNlZWQgfHwgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTAgKiogMTYpLnRvU3RyaW5nKDE2KTtcblxuICBzZWVkUmFuZChuZXdPcHRzLnNlZWQpO1xuXG4gIG5ld09wdHMuc2l6ZSA9IG9wdHMuc2l6ZSB8fCA4O1xuICBuZXdPcHRzLnNjYWxlID0gb3B0cy5zY2FsZSB8fCA4O1xuICBuZXdPcHRzLmNvbG9yID0gb3B0cy5jb2xvciB8fCBjcmVhdGVDb2xvcigpO1xuICBuZXdPcHRzLmJnY29sb3IgPSBvcHRzLmJnY29sb3IgfHwgY3JlYXRlQ29sb3IoKTtcbiAgbmV3T3B0cy5zcG90Q29sb3IgPSBvcHRzLnNwb3RDb2xvciB8fCBjcmVhdGVDb2xvcigpO1xuXG4gIHJldHVybiBuZXdPcHRzIGFzIEJsb2NraWVPcHRpb25zO1xufVxuXG5mdW5jdGlvbiByZW5kZXJJY29uKG9wdHM6IFBhcnRpYWw8QmxvY2tpZU9wdGlvbnM+LCBjYW52YXM6IEhUTUxDYW52YXNFbGVtZW50KTogSFRNTENhbnZhc0VsZW1lbnQge1xuICBjb25zdCBuZXdPcHRzOiBCbG9ja2llT3B0aW9ucyA9IGJ1aWxkT3B0cyhvcHRzIHx8IHt9KTtcbiAgY29uc3QgaW1hZ2VEYXRhID0gY3JlYXRlSW1hZ2VEYXRhKG5ld09wdHMuc2l6ZSk7XG4gIGNvbnN0IHdpZHRoID0gTWF0aC5zcXJ0KGltYWdlRGF0YS5sZW5ndGgpO1xuXG4gIGNhbnZhcy53aWR0aCA9IGNhbnZhcy5oZWlnaHQgPSBuZXdPcHRzLnNpemUgKiBuZXdPcHRzLnNjYWxlO1xuXG4gIGNvbnN0IGNjID0gY2FudmFzLmdldENvbnRleHQoJzJkJykgYXMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEO1xuICBpZiAoY2MpIHtcbiAgICBjYy5maWxsU3R5bGUgPSBuZXdPcHRzLmJnY29sb3I7XG4gICAgY2MuZmlsbFJlY3QoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTtcbiAgICBjYy5maWxsU3R5bGUgPSBuZXdPcHRzLmNvbG9yO1xuXG4gICAgZm9yIChjb25zdCBbaSwgaW1hZ2VEYXR1bV0gb2YgaW1hZ2VEYXRhLmVudHJpZXMoKSkge1xuICAgICAgLy8gaWYgZGF0YSBpcyAwLCBsZWF2ZSB0aGUgYmFja2dyb3VuZFxuICAgICAgaWYgKGltYWdlRGF0dW0pIHtcbiAgICAgICAgY29uc3Qgcm93ID0gTWF0aC5mbG9vcihpIC8gd2lkdGgpO1xuICAgICAgICBjb25zdCBjb2wgPSBpICUgd2lkdGg7XG5cbiAgICAgICAgLy8gaWYgZGF0YSBpcyAyLCBjaG9vc2Ugc3BvdCBjb2xvciwgaWYgMSBjaG9vc2UgZm9yZWdyb3VuZFxuICAgICAgICBjYy5maWxsU3R5bGUgPSBpbWFnZURhdHVtID09PSAxID8gbmV3T3B0cy5jb2xvciA6IG5ld09wdHMuc3BvdENvbG9yO1xuXG4gICAgICAgIGNjLmZpbGxSZWN0KGNvbCAqIG5ld09wdHMuc2NhbGUsIHJvdyAqIG5ld09wdHMuc2NhbGUsIG5ld09wdHMuc2NhbGUsIG5ld09wdHMuc2NhbGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjYW52YXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVCbG9ja2llKG9wdHM6IFBhcnRpYWw8QmxvY2tpZU9wdGlvbnM+KTogc3RyaW5nIHtcbiAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG5cbiAgcmVuZGVySWNvbihvcHRzLCBjYW52YXMpO1xuXG4gIHJldHVybiBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9qcGVnJyk7XG59XG4iXSwibmFtZXMiOlsiQXNzZXJ0aW9uRXJyb3IiLCJtc2ciLCJhc3NlcnQiLCJjb25kaXRpb24iLCJ1c2VGb3JtVGV4dERldGFpbCIsImVycm9yTWVzc2FnZXMiLCJzdWNjZXNzTWVzc2FnZXMiLCJmb3JtYXR0ZWRFcnJvck1lc3NhZ2VzIiwiY29tcHV0ZWQiLCJlcnJvck1lc3NhZ2VzVmFsIiwiZ2V0IiwiaXRlbSIsImZvcm1hdHRlZFN1Y2Nlc3NNZXNzYWdlcyIsInN1Y2Nlc3NNZXNzYWdlc1ZhbCIsImhhc0Vycm9yIiwiaGFzU3VjY2VzcyIsImhhc01lc3NhZ2VzIiwibG9naWNPciIsImZvcm1hdE51bWJlciIsImFtb3VudCIsImZyYWN0aW9uRGlnaXRzIiwiZm9ybWF0SW50ZWdlciIsImdldFJvb3RLZXlzIiwiZGF0YSIsImtleSIsImdldFJvb3RBdHRycyIsImluY2x1ZGUiLCJvYmplY3RQaWNrIiwiZ2V0Tm9uUm9vdEF0dHJzIiwiZXhjbHVkZSIsIm9iamVjdE9taXQiLCJ0cmFuc2Zvcm1DYXNlIiwidG8iLCJhY2MiLCJjdXJyIiwiY2FtZWxDYXNlIiwiZ2V0VGV4dFRva2VuIiwic3RyaW5nIiwidHJhbnNmb3JtUHJvcHNVbml0IiwidmFsdWUiLCJpc0VxdWFsIiwib3RoZXIiLCJpIiwiZWxlbWVudCIsInZhbHVlS2V5cyIsIm90aGVyS2V5cyIsInVzZUdsb2JhbElkIiwiY3JlYXRlR2xvYmFsU3RhdGUiLCJjb3VudCIsInJlZiIsImNvdW50VmFsIiwic2V0IiwiZ2VuZXJhdGVJZCIsInByZWZpeCIsIm5leHRJZCIsInJhbmRTZWVkIiwic2VlZFJhbmQiLCJzZWVkIiwicmFuZCIsImNyZWF0ZUNvbG9yIiwiaCIsInMiLCJsIiwiY3JlYXRlSW1hZ2VEYXRhIiwic2l6ZSIsIndpZHRoIiwiaGVpZ2h0IiwiZGF0YVdpZHRoIiwibWlycm9yV2lkdGgiLCJ5Iiwicm93IiwieCIsInIiLCJidWlsZE9wdHMiLCJvcHRzIiwibmV3T3B0cyIsInJlbmRlckljb24iLCJjYW52YXMiLCJpbWFnZURhdGEiLCJjYyIsImltYWdlRGF0dW0iLCJjb2wiLCJjcmVhdGVCbG9ja2llIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE1BQU1BLFVBQXVCLE1BQU07QUFBQSxFQUNqQyxZQUFZQyxHQUFjO0FBQ3hCLFVBQU1BLEtBQU8sZ0JBQWdCLEdBQzdCLEtBQUssT0FBTztBQUFBLEVBQ2Q7QUFDRjtBQUVPLFNBQVNDLEVBQU9DLEdBQWdCRixHQUFpQztBQUN0RSxNQUFJLENBQUNFO0FBQ0gsVUFBTSxJQUFJSCxFQUFlQyxDQUFHO0FBQ2hDO0FDUE8sU0FBU0csRUFBa0JDLEdBQTRDQyxHQUE4QztBQUMxSCxRQUFNQyxJQUF5QkMsRUFBUyxNQUFNO0FBQzVDLFFBQUlDLElBQW1CQyxFQUFJTCxDQUFhO0FBQ3hDLFdBQUksT0FBT0ksS0FBcUIsYUFDOUJBLElBQW1CLENBQUNBLENBQWdCLElBRS9CQSxFQUFpQixPQUFPLENBQUFFLE1BQVEsQ0FBQyxDQUFDQSxDQUFJO0FBQUEsRUFDL0MsQ0FBQyxHQUVLQyxJQUEyQkosRUFBUyxNQUFNO0FBQzlDLFFBQUlLLElBQXFCSCxFQUFJSixDQUFlO0FBQzVDLFdBQUksT0FBT08sS0FBdUIsYUFDaENBLElBQXFCLENBQUNBLENBQWtCLElBRW5DQSxFQUFtQixPQUFPLENBQUFGLE1BQVEsQ0FBQyxDQUFDQSxDQUFJO0FBQUEsRUFDakQsQ0FBQyxHQUVLRyxJQUFXTixFQUFTLE1BQU1FLEVBQUlILENBQXNCLEVBQUUsU0FBUyxDQUFDLEdBRWhFUSxJQUFhUCxFQUFTLE1BQU1FLEVBQUlFLENBQXdCLEVBQUUsU0FBUyxDQUFDLEdBQ3BFSSxJQUFjQyxFQUFRSCxHQUFVQyxDQUFVO0FBRWhELFNBQU87QUFBQSxJQUNMLHdCQUFBUjtBQUFBLElBQ0EsMEJBQUFLO0FBQUEsSUFDQSxVQUFBRTtBQUFBLElBQ0EsYUFBQUU7QUFBQSxJQUNBLFlBQUFEO0FBQUEsRUFBQTtBQUVKO0FDT08sU0FBU0csRUFBYUMsR0FBeUIsRUFBRSxnQkFBQUMsSUFBaUIsS0FBc0I7QUFDN0YsU0FBTyxJQUFJLEtBQUssYUFBYSxRQUFXO0FBQUEsSUFDdEMsdUJBQXVCQTtBQUFBLElBQ3ZCLHVCQUF1QkE7QUFBQSxFQUFBLENBQ3hCLEVBQUUsT0FBTyxPQUFPRCxDQUFNLENBQUM7QUFDMUI7QUFNTyxTQUFTRSxFQUFjRixHQUF5QjtBQUNyRCxTQUFPRCxFQUFhQyxHQUFRLEVBQUUsZ0JBQWdCLEdBQUc7QUFDbkQ7QUFPTyxTQUFTRyxFQUFZQyxHQUF5QjtBQUNuRCxTQUFPLE9BQU8sS0FBS0EsQ0FBSSxFQUFFO0FBQUEsSUFBTyxDQUFBQyxNQUM5QkEsRUFBSSxXQUFXLE9BQU87QUFBQSxFQUFBO0FBRTFCO0FBUU8sU0FBU0MsRUFBYUYsR0FBeUJHLElBQWlDLENBQUMsT0FBTyxHQUFHO0FBQ2hHLFNBQU9DLEVBQVdKLEdBQU0sQ0FBQyxHQUFHRCxFQUFZQyxDQUFJLEdBQUcsR0FBR0csQ0FBTyxDQUFDO0FBQzVEO0FBUU8sU0FBU0UsRUFBZ0JMLEdBQXlCTSxJQUFpQyxDQUFDLE9BQU8sR0FBRztBQUNuRyxTQUFPQyxFQUFXUCxHQUFNLENBQUMsR0FBR0QsRUFBWUMsQ0FBSSxHQUFHLEdBQUdNLENBQU8sQ0FBQztBQUM1RDtBQVFPLFNBQVNFLEVBQWdDcEIsR0FBU3FCLEdBQWdDO0FBQ3ZGLFNBQUtyQixLQUdFLE9BQU8sS0FBS0EsQ0FBSSxFQUFFLE9BQU8sQ0FBQ3NCLEdBQUtDLE9BRWxDRCxFQUFJRSxFQUFVRCxDQUFJLENBQUMsSUFBSXZCLEVBQUt1QixDQUFlLEdBSXRDRCxJQUNOLENBQUEsQ0FBeUI7QUFDOUI7QUFVTyxTQUFTRyxFQUFhQyxHQUFxQjtBQUNoRCxTQUFLQSxJQUdFQSxFQUFPLFdBQVcsY0FBYyxRQUFRLGNBQWMsRUFBRSxJQUZ0RDtBQUdYO0FBRU8sU0FBU0MsRUFBbUJDLEdBQTZDO0FBQzlFLFNBQUlBLE1BQVUsVUFBYyxPQUFPQSxLQUFVLFlBQVksTUFBTSxPQUFPQSxDQUFLLENBQUMsSUFDbkVBLElBQ0YsR0FBR0EsQ0FBSztBQUNqQjtBQzVITyxTQUFTQyxFQUFRRCxHQUFZRSxHQUFZO0FBRTlDLE1BQUlGLE1BQVVFO0FBQ1osV0FBTztBQUdULE1BQUlGLEtBQVMsUUFBUUUsS0FBUztBQUM1QixXQUFPRixNQUFVRTtBQUduQixNQUFJLE9BQU9GLEtBQVUsT0FBT0U7QUFDMUIsV0FBTztBQUdULE1BQUksTUFBTSxRQUFRRixDQUFLLEdBQUc7QUFDeEIsUUFBSSxDQUFDLE1BQU0sUUFBUUUsQ0FBSyxLQUFLRixFQUFNLFdBQVdFLEVBQU07QUFDbEQsYUFBTztBQUVULGVBQVcsQ0FBQ0MsR0FBR0MsQ0FBTyxLQUFLSixFQUFNO0FBQy9CLFVBQUksQ0FBQ0MsRUFBUUcsR0FBU0YsRUFBTUMsQ0FBQyxDQUFDO0FBQzVCLGVBQU87QUFFWCxXQUFPO0FBQUEsRUFDVDtBQUdBLE1BQUksT0FBT0gsS0FBVSxVQUFVO0FBQzdCLFVBQU1LLElBQVksT0FBTyxLQUFLTCxDQUFLLEdBQzdCTSxJQUFZLE9BQU8sS0FBS0osQ0FBSztBQUVuQyxRQUFJRyxFQUFVLFdBQVdDLEVBQVU7QUFDakMsYUFBTztBQUVULGVBQVdyQixLQUFPb0I7QUFDaEIsVUFBSSxDQUFDSixFQUFRRCxFQUFNZixDQUFHLEdBQUdpQixFQUFNakIsQ0FBRyxDQUFDO0FBQ2pDLGVBQU87QUFFWCxXQUFPO0FBQUEsRUFDVDtBQUdBLFNBQU87QUFDVDtBQzFDTyxNQUFNc0IsSUFBY0MsRUFBa0IsTUFBTTtBQUNqRCxRQUFNQyxJQUFRQyxFQUFJLENBQUM7QUFTbkIsU0FBTyxFQUFFLE9BQUFELEdBQU8sUUFQRCxNQUFNO0FBQ25CLFVBQU1FLElBQVd4QyxFQUFJc0MsQ0FBSyxJQUFJO0FBQzlCLFdBQUFHLEVBQUlILEdBQU9FLENBQVEsR0FFWkE7QUFBQSxFQUNULEVBRWdCO0FBQ2xCLENBQUM7QUFFTSxTQUFTRSxFQUFXQyxJQUFTLElBQUk7QUFDdEMsUUFBTSxFQUFFLFFBQUFDLEVBQUEsSUFBV1IsRUFBQTtBQUVuQixTQUFPLEdBQUdPLENBQU0sSUFBSUMsRUFBQSxDQUFRO0FBQzlCO0FDTUEsTUFBTUMsSUFBVyxJQUFJLE1BQU0sQ0FBQztBQUU1QixTQUFTQyxFQUFTQyxHQUFvQjtBQUNwQyxXQUFTZixJQUFJLEdBQUdBLElBQUlhLEVBQVMsUUFBUWIsSUFBSyxDQUFBYSxFQUFTYixDQUFDLElBQUk7QUFFeEQsV0FBU0EsSUFBSSxHQUFHQSxJQUFJZSxFQUFLLFFBQVFmO0FBQy9CLElBQUFhLEVBQVNiLElBQUksQ0FBQyxLQUFLYSxFQUFTYixJQUFJLENBQUMsS0FBSyxLQUFLYSxFQUFTYixJQUFJLENBQUMsSUFBSWUsRUFBSyxXQUFXZixDQUFDO0FBQ2xGO0FBRUEsU0FBU2dCLElBQWU7QUFFdEIsUUFBTSxJQUFJSCxFQUFTLENBQUMsSUFBS0EsRUFBUyxDQUFDLEtBQUs7QUFFeEMsU0FBQUEsRUFBUyxDQUFDLElBQUlBLEVBQVMsQ0FBQyxHQUN4QkEsRUFBUyxDQUFDLElBQUlBLEVBQVMsQ0FBQyxHQUN4QkEsRUFBUyxDQUFDLElBQUlBLEVBQVMsQ0FBQyxHQUN4QkEsRUFBUyxDQUFDLElBQUlBLEVBQVMsQ0FBQyxJQUFLQSxFQUFTLENBQUMsS0FBSyxLQUFNLElBQUssS0FBSyxJQUVwREEsRUFBUyxDQUFDLE1BQU0sTUFBTyxLQUFLLE9BQVE7QUFDOUM7QUFFQSxTQUFTSSxJQUFzQjtBQUU3QixRQUFNQyxJQUFJLEtBQUssTUFBTUYsRUFBQSxJQUFTLEdBQUcsR0FFM0JHLElBQUksR0FBR0gsRUFBQSxJQUFTLEtBQUssRUFBRSxLQUV2QkksSUFBSSxJQUFJSixNQUFTQSxNQUFTQSxNQUFTQSxPQUFVLEVBQUU7QUFFckQsU0FBTyxPQUFPRSxDQUFDLElBQUlDLENBQUMsSUFBSUMsQ0FBQztBQUMzQjtBQUVBLFNBQVNDLEVBQWdCQyxHQUF3QjtBQUMvQyxRQUFNQyxJQUFRRCxHQUNSRSxJQUFTRixHQUVURyxJQUFZLEtBQUssS0FBS0YsSUFBUSxDQUFDLEdBQy9CRyxJQUFjSCxJQUFRRSxHQUV0QjVDLElBQU8sQ0FBQTtBQUNiLFdBQVM4QyxJQUFJLEdBQUdBLElBQUlILEdBQVFHLEtBQUs7QUFDL0IsUUFBSUMsSUFBTSxDQUFBO0FBQ1YsYUFBU0MsSUFBSSxHQUFHQSxJQUFJSixHQUFXSTtBQUc3QixNQUFBRCxFQUFJQyxDQUFDLElBQUksS0FBSyxNQUFNYixFQUFBLElBQVMsR0FBRztBQUVsQyxVQUFNYyxJQUFJRixFQUFJLE1BQU0sR0FBR0YsQ0FBVztBQUNsQyxJQUFBSSxFQUFFLFFBQUEsR0FDRkYsSUFBTUEsRUFBSSxPQUFPRSxDQUFDO0FBRWxCLGVBQVc3QixLQUFXMkIsRUFBSyxDQUFBL0MsRUFBSyxLQUFLb0IsQ0FBTztBQUFBLEVBQzlDO0FBRUEsU0FBT3BCO0FBQ1Q7QUFFQSxTQUFTa0QsRUFBVUMsR0FBK0M7QUFDaEUsUUFBTUMsSUFBbUMsQ0FBQTtBQUV6QyxTQUFBQSxFQUFRLE9BQU9ELEVBQUssUUFBUSxLQUFLLE1BQU0sS0FBSyxPQUFBLElBQVcsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLEdBRTVFbEIsRUFBU21CLEVBQVEsSUFBSSxHQUVyQkEsRUFBUSxPQUFPRCxFQUFLLFFBQVEsR0FDNUJDLEVBQVEsUUFBUUQsRUFBSyxTQUFTLEdBQzlCQyxFQUFRLFFBQVFELEVBQUssU0FBU2YsRUFBQSxHQUM5QmdCLEVBQVEsVUFBVUQsRUFBSyxXQUFXZixFQUFBLEdBQ2xDZ0IsRUFBUSxZQUFZRCxFQUFLLGFBQWFmLEVBQUEsR0FFL0JnQjtBQUNUO0FBRUEsU0FBU0MsRUFBV0YsR0FBK0JHLEdBQThDO0FBQy9GLFFBQU1GLElBQTBCRixFQUFVQyxLQUFRLEVBQUUsR0FDOUNJLElBQVlmLEVBQWdCWSxFQUFRLElBQUksR0FDeENWLElBQVEsS0FBSyxLQUFLYSxFQUFVLE1BQU07QUFFeEMsRUFBQUQsRUFBTyxRQUFRQSxFQUFPLFNBQVNGLEVBQVEsT0FBT0EsRUFBUTtBQUV0RCxRQUFNSSxJQUFLRixFQUFPLFdBQVcsSUFBSTtBQUNqQyxNQUFJRSxHQUFJO0FBQ04sSUFBQUEsRUFBRyxZQUFZSixFQUFRLFNBQ3ZCSSxFQUFHLFNBQVMsR0FBRyxHQUFHRixFQUFPLE9BQU9BLEVBQU8sTUFBTSxHQUM3Q0UsRUFBRyxZQUFZSixFQUFRO0FBRXZCLGVBQVcsQ0FBQ2pDLEdBQUdzQyxDQUFVLEtBQUtGLEVBQVU7QUFFdEMsVUFBSUUsR0FBWTtBQUNkLGNBQU1WLElBQU0sS0FBSyxNQUFNNUIsSUFBSXVCLENBQUssR0FDMUJnQixJQUFNdkMsSUFBSXVCO0FBR2hCLFFBQUFjLEVBQUcsWUFBWUMsTUFBZSxJQUFJTCxFQUFRLFFBQVFBLEVBQVEsV0FFMURJLEVBQUcsU0FBU0UsSUFBTU4sRUFBUSxPQUFPTCxJQUFNSyxFQUFRLE9BQU9BLEVBQVEsT0FBT0EsRUFBUSxLQUFLO0FBQUEsTUFDcEY7QUFBQSxFQUVKO0FBRUEsU0FBT0U7QUFDVDtBQUVPLFNBQVNLLEVBQWNSLEdBQXVDO0FBQ25FLFFBQU1HLElBQVMsU0FBUyxjQUFjLFFBQVE7QUFFOUMsU0FBQUQsRUFBV0YsR0FBTUcsQ0FBTSxHQUVoQkEsRUFBTyxVQUFVLFlBQVk7QUFDdEM7In0=
|