valtech-components 2.0.539 → 2.0.541
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/esm2022/lib/components/organisms/docs-toc/docs-toc.component.mjs +52 -13
- package/esm2022/lib/services/auth/auth.service.mjs +11 -1
- package/esm2022/lib/services/auth/types.mjs +1 -1
- package/fesm2022/valtech-components.mjs +61 -12
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/organisms/docs-toc/docs-toc.component.d.ts +2 -0
- package/lib/services/auth/auth.service.d.ts +6 -1
- package/lib/services/auth/types.d.ts +14 -0
- package/package.json +1 -1
|
@@ -44,6 +44,7 @@ export class DocsTocComponent {
|
|
|
44
44
|
this.headingElements = [];
|
|
45
45
|
this.scrollHandler = null;
|
|
46
46
|
this.rafId = null;
|
|
47
|
+
this.scrollContainer = null;
|
|
47
48
|
}
|
|
48
49
|
ngOnInit() {
|
|
49
50
|
this.updateFlatItems();
|
|
@@ -131,8 +132,12 @@ export class DocsTocComponent {
|
|
|
131
132
|
this.headingElements = items
|
|
132
133
|
.map(item => document.getElementById(item.id))
|
|
133
134
|
.filter((el) => el !== null);
|
|
134
|
-
if (this.headingElements.length === 0)
|
|
135
|
+
if (this.headingElements.length === 0) {
|
|
136
|
+
console.warn('[docs-toc] No heading elements found for IDs:', items.map(i => i.id));
|
|
135
137
|
return;
|
|
138
|
+
}
|
|
139
|
+
// Find the scroll container - check for ion-content first, then use window
|
|
140
|
+
this.scrollContainer = this.findScrollContainer();
|
|
136
141
|
// Set initial active item
|
|
137
142
|
this.updateActiveHeading();
|
|
138
143
|
// Use scroll event with requestAnimationFrame for performance
|
|
@@ -145,23 +150,40 @@ export class DocsTocComponent {
|
|
|
145
150
|
this.updateActiveHeading();
|
|
146
151
|
});
|
|
147
152
|
};
|
|
153
|
+
// Listen on both window and the scroll container for maximum compatibility
|
|
148
154
|
window.addEventListener('scroll', this.scrollHandler, { passive: true });
|
|
155
|
+
document.addEventListener('scroll', this.scrollHandler, { passive: true, capture: true });
|
|
156
|
+
// Also listen on ion-content if present
|
|
157
|
+
const ionContent = document.querySelector('ion-content');
|
|
158
|
+
if (ionContent) {
|
|
159
|
+
ionContent.addEventListener('ionScroll', this.scrollHandler, { passive: true });
|
|
160
|
+
}
|
|
149
161
|
});
|
|
150
162
|
}
|
|
163
|
+
findScrollContainer() {
|
|
164
|
+
// Check for ion-content's scroll element
|
|
165
|
+
const ionContent = document.querySelector('ion-content');
|
|
166
|
+
if (ionContent) {
|
|
167
|
+
// ion-content has a shadow DOM with the actual scrollable element
|
|
168
|
+
const scrollEl = ionContent.shadowRoot?.querySelector('.inner-scroll');
|
|
169
|
+
if (scrollEl)
|
|
170
|
+
return scrollEl;
|
|
171
|
+
}
|
|
172
|
+
return window;
|
|
173
|
+
}
|
|
151
174
|
updateActiveHeading() {
|
|
152
175
|
const offsetTop = this.props.offsetTop ?? 100;
|
|
153
|
-
|
|
154
|
-
//
|
|
176
|
+
// Find the heading closest to or above the trigger point (offset from top of viewport)
|
|
177
|
+
// Using getBoundingClientRect().top which is relative to viewport - works regardless of scroll container
|
|
155
178
|
let activeHeading = null;
|
|
156
179
|
for (const heading of this.headingElements) {
|
|
157
180
|
const rect = heading.getBoundingClientRect();
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
if (headingTop <= scrollY + offsetTop + 10) {
|
|
181
|
+
// If heading's top is at or above the trigger point (offset pixels from viewport top)
|
|
182
|
+
if (rect.top <= offsetTop + 10) {
|
|
161
183
|
activeHeading = heading;
|
|
162
184
|
}
|
|
163
185
|
else {
|
|
164
|
-
//
|
|
186
|
+
// Since headings are in DOM order, stop once we find one below the trigger
|
|
165
187
|
break;
|
|
166
188
|
}
|
|
167
189
|
}
|
|
@@ -179,6 +201,11 @@ export class DocsTocComponent {
|
|
|
179
201
|
destroyScrollSpy() {
|
|
180
202
|
if (this.scrollHandler) {
|
|
181
203
|
window.removeEventListener('scroll', this.scrollHandler);
|
|
204
|
+
document.removeEventListener('scroll', this.scrollHandler, { capture: true });
|
|
205
|
+
const ionContent = document.querySelector('ion-content');
|
|
206
|
+
if (ionContent) {
|
|
207
|
+
ionContent.removeEventListener('ionScroll', this.scrollHandler);
|
|
208
|
+
}
|
|
182
209
|
this.scrollHandler = null;
|
|
183
210
|
}
|
|
184
211
|
if (this.rafId) {
|
|
@@ -186,6 +213,7 @@ export class DocsTocComponent {
|
|
|
186
213
|
this.rafId = null;
|
|
187
214
|
}
|
|
188
215
|
this.headingElements = [];
|
|
216
|
+
this.scrollContainer = null;
|
|
189
217
|
}
|
|
190
218
|
scrollToSection(event, id) {
|
|
191
219
|
event.preventDefault();
|
|
@@ -193,11 +221,22 @@ export class DocsTocComponent {
|
|
|
193
221
|
if (!element)
|
|
194
222
|
return;
|
|
195
223
|
const offsetTop = this.props.offsetTop ?? 100;
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
224
|
+
// Use scrollIntoView with offset calculation for better cross-container support
|
|
225
|
+
const elementRect = element.getBoundingClientRect();
|
|
226
|
+
const currentScrollY = window.scrollY || document.documentElement.scrollTop;
|
|
227
|
+
const targetY = elementRect.top + currentScrollY - offsetTop;
|
|
228
|
+
// Try ion-content scrollToPoint first (for Ionic apps)
|
|
229
|
+
const ionContent = document.querySelector('ion-content');
|
|
230
|
+
if (ionContent && typeof ionContent.scrollToPoint === 'function') {
|
|
231
|
+
ionContent.scrollToPoint(0, targetY, 300);
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
// Fallback to window scroll
|
|
235
|
+
window.scrollTo({
|
|
236
|
+
top: targetY,
|
|
237
|
+
behavior: 'smooth',
|
|
238
|
+
});
|
|
239
|
+
}
|
|
201
240
|
// Update active immediately for better UX
|
|
202
241
|
this.activeId.set(id);
|
|
203
242
|
// Update URL hash without jumping
|
|
@@ -276,4 +315,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
276
315
|
}], sectionChange: [{
|
|
277
316
|
type: Output
|
|
278
317
|
}] } });
|
|
279
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jcy10b2MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9kb2NzLXRvYy9kb2NzLXRvYy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBT1osTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDOztBQUd2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStCRztBQXVDSCxNQUFNLE9BQU8sZ0JBQWdCO0lBYTNCLFlBQW9CLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBWnpCLFVBQUssR0FBb0IsRUFBRSxDQUFDO1FBRTNCLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVyRCxpQkFBaUI7UUFDUCxhQUFRLEdBQUcsTUFBTSxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzlCLGNBQVMsR0FBRyxNQUFNLENBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBRXhDLG9CQUFlLEdBQWtCLEVBQUUsQ0FBQztRQUNwQyxrQkFBYSxHQUF3QixJQUFJLENBQUM7UUFDMUMsVUFBSyxHQUFrQixJQUFJLENBQUM7SUFFQyxDQUFDO0lBRXRDLFFBQVE7UUFDTixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELGVBQWU7UUFDYiwrQkFBK0I7UUFDL0IsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDakMsQ0FBQztZQUNELElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN4QixDQUFDLEVBQUUsR0FB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QUMscUJBQXFCLEVBQUUsQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUM7UUFFN0UsTUFBTSxDQUFDLFFBQVEsQ0FBQztZQUNkLEdBQUc7WUFDSCxRQUFRLEVBQUUsUUFBUTtTQUNuQixDQUFDLENBQUM7UUFFSCwwQ0FBMEM7UUFDMUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFdEIsa0NBQWtDO1FBQ2xDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDeEMsQ0FBQzsrR0F6TVUsZ0JBQWdCO21HQUFoQixnQkFBZ0Isc0tBbENqQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStCVCxpZ0RBaENTLFlBQVk7OzRGQW1DWCxnQkFBZ0I7a0JBdEM1QixTQUFTOytCQUNFLGNBQWMsY0FDWixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsWUFDYjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStCVDsyRUFJUSxLQUFLO3NCQUFiLEtBQUs7Z0JBRUksYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT25Jbml0LFxuICBPbkRlc3Ryb3ksXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgTmdab25lLFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9jc1RvY01ldGFkYXRhLCBEb2NzVG9jSXRlbSB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIHZhbC1kb2NzLXRvY1xuICpcbiAqIEEgdGFibGUgb2YgY29udGVudHMgY29tcG9uZW50IHdpdGggc2Nyb2xsIHNweSBmdW5jdGlvbmFsaXR5LlxuICogQXV0b21hdGljYWxseSBoaWdobGlnaHRzIHRoZSBjdXJyZW50IHNlY3Rpb24gYmFzZWQgb24gc2Nyb2xsIHBvc2l0aW9uLlxuICpcbiAqIEBleGFtcGxlIE1hbnVhbCBpdGVtc1xuICogYGBgaHRtbFxuICogPHZhbC1kb2NzLXRvY1xuICogICBbcHJvcHNdPVwie1xuICogICAgIHRpdGxlOiAnT24gdGhpcyBwYWdlJyxcbiAqICAgICBpdGVtczogW1xuICogICAgICAgeyBpZDogJ292ZXJ2aWV3JywgbGFiZWw6ICdPdmVydmlldycsIGxldmVsOiAxIH0sXG4gKiAgICAgICB7IGlkOiAnaW5zdGFsbGF0aW9uJywgbGFiZWw6ICdJbnN0YWxsYXRpb24nLCBsZXZlbDogMSB9LFxuICogICAgICAgeyBpZDogJ25wbScsIGxhYmVsOiAnVXNpbmcgbnBtJywgbGV2ZWw6IDIgfSxcbiAqICAgICAgIHsgaWQ6ICd5YXJuJywgbGFiZWw6ICdVc2luZyB5YXJuJywgbGV2ZWw6IDIgfVxuICogICAgIF1cbiAqICAgfVwiXG4gKiA+PC92YWwtZG9jcy10b2M+XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBBdXRvLWdlbmVyYXRlZCBmcm9tIGhlYWRpbmdzXG4gKiBgYGBodG1sXG4gKiA8dmFsLWRvY3MtdG9jXG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgYXV0b0dlbmVyYXRlOiB0cnVlLFxuICogICAgIGNvbnRhaW5lclNlbGVjdG9yOiAnLmFydGljbGUtY29udGVudCcsXG4gKiAgICAgaGVhZGluZ0xldmVsczogWzIsIDNdXG4gKiAgIH1cIlxuICogPjwvdmFsLWRvY3MtdG9jPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1kb2NzLXRvYycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuYXZcbiAgICAgIGNsYXNzPVwiZG9jcy10b2NcIlxuICAgICAgW2NsYXNzXT1cInByb3BzLmNzc0NsYXNzXCJcbiAgICAgIHJvbGU9XCJuYXZpZ2F0aW9uXCJcbiAgICAgIGFyaWEtbGFiZWw9XCJUYWJsZSBvZiBjb250ZW50c1wiXG4gICAgPlxuICAgICAgQGlmICghcHJvcHMuaGlkZVRpdGxlKSB7XG4gICAgICAgIDxoNCBjbGFzcz1cImRvY3MtdG9jX190aXRsZVwiPnt7IHByb3BzLnRpdGxlIHx8ICdDb250ZW50cycgfX08L2g0PlxuICAgICAgfVxuXG4gICAgICA8dWwgY2xhc3M9XCJkb2NzLXRvY19fbGlzdFwiPlxuICAgICAgICBAZm9yIChpdGVtIG9mIGZsYXRJdGVtcygpOyB0cmFjayBpdGVtLmlkKSB7XG4gICAgICAgICAgPGxpXG4gICAgICAgICAgICBjbGFzcz1cImRvY3MtdG9jX19pdGVtXCJcbiAgICAgICAgICAgIFtjbGFzcy5kb2NzLXRvY19faXRlbS0tbGV2ZWwtMV09XCJpdGVtLmxldmVsID09PSAxXCJcbiAgICAgICAgICAgIFtjbGFzcy5kb2NzLXRvY19faXRlbS0tbGV2ZWwtMl09XCJpdGVtLmxldmVsID09PSAyXCJcbiAgICAgICAgICAgIFtjbGFzcy5kb2NzLXRvY19faXRlbS0tbGV2ZWwtM109XCJpdGVtLmxldmVsID09PSAzXCJcbiAgICAgICAgICAgIFtjbGFzcy5kb2NzLXRvY19faXRlbS0tYWN0aXZlXT1cImFjdGl2ZUlkKCkgPT09IGl0ZW0uaWRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgIGNsYXNzPVwiZG9jcy10b2NfX2xpbmtcIlxuICAgICAgICAgICAgICBbaHJlZl09XCInIycgKyBpdGVtLmlkXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNjcm9sbFRvU2VjdGlvbigkZXZlbnQsIGl0ZW0uaWQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgaXRlbS5sYWJlbCB9fVxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIH1cbiAgICAgIDwvdWw+XG4gICAgPC9uYXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2RvY3MtdG9jLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIERvY3NUb2NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgcHJvcHM6IERvY3NUb2NNZXRhZGF0YSA9IHt9O1xuXG4gIEBPdXRwdXQoKSBzZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgLy8gUmVhY3RpdmUgc3RhdGVcbiAgcHJvdGVjdGVkIGFjdGl2ZUlkID0gc2lnbmFsPHN0cmluZz4oJycpO1xuICBwcm90ZWN0ZWQgZmxhdEl0ZW1zID0gc2lnbmFsPERvY3NUb2NJdGVtW10+KFtdKTtcblxuICBwcml2YXRlIGhlYWRpbmdFbGVtZW50czogSFRNTEVsZW1lbnRbXSA9IFtdO1xuICBwcml2YXRlIHNjcm9sbEhhbmRsZXI6ICgoKSA9PiB2b2lkKSB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHJhZklkOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5nWm9uZTogTmdab25lKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlRmxhdEl0ZW1zKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgLy8gRGVsYXkgdG8gZW5zdXJlIERPTSBpcyByZWFkeVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMucHJvcHMuYXV0b0dlbmVyYXRlKSB7XG4gICAgICAgIHRoaXMuZ2VuZXJhdGVUb2NGcm9tSGVhZGluZ3MoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2V0dXBTY3JvbGxTcHkoKTtcbiAgICB9LCAxMDApO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydwcm9wcyddKSB7XG4gICAgICB0aGlzLnVwZGF0ZUZsYXRJdGVtcygpO1xuICAgICAgaWYgKHRoaXMucHJvcHMuYXV0b0dlbmVyYXRlKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5nZW5lcmF0ZVRvY0Zyb21IZWFkaW5ncygpLCAxMDApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveVNjcm9sbFNweSgpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVGbGF0SXRlbXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJvcHMuaXRlbXMpIHtcbiAgICAgIHRoaXMuZmxhdEl0ZW1zLnNldCh0aGlzLmZsYXR0ZW5JdGVtcyh0aGlzLnByb3BzLml0ZW1zKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmbGF0dGVuSXRlbXMoaXRlbXM6IERvY3NUb2NJdGVtW10pOiBEb2NzVG9jSXRlbVtdIHtcbiAgICBjb25zdCByZXN1bHQ6IERvY3NUb2NJdGVtW10gPSBbXTtcbiAgICBjb25zdCBmbGF0dGVuID0gKGl0ZW1MaXN0OiBEb2NzVG9jSXRlbVtdKSA9PiB7XG4gICAgICBpdGVtTGlzdC5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICByZXN1bHQucHVzaChpdGVtKTtcbiAgICAgICAgaWYgKGl0ZW0uY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICAgIGZsYXR0ZW4oaXRlbS5jaGlsZHJlbik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH07XG4gICAgZmxhdHRlbihpdGVtcyk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVUb2NGcm9tSGVhZGluZ3MoKTogdm9pZCB7XG4gICAgY29uc3Qgc2VsZWN0b3IgPSB0aGlzLnByb3BzLmNvbnRhaW5lclNlbGVjdG9yIHx8ICcuZG9jcy1sYXlvdXRfX2NvbnRlbnQnO1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpO1xuXG4gICAgaWYgKCFjb250YWluZXIpIHtcbiAgICAgIGNvbnNvbGUud2FybihgW2RvY3MtdG9jXSBDb250YWluZXIgbm90IGZvdW5kOiAke3NlbGVjdG9yfWApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxldmVscyA9IHRoaXMucHJvcHMuaGVhZGluZ0xldmVscyB8fCBbMiwgM107XG4gICAgY29uc3QgaGVhZGluZ1NlbGVjdG9yID0gbGV2ZWxzLm1hcChsID0+IGBoJHtsfWApLmpvaW4oJywgJyk7XG4gICAgY29uc3QgaGVhZGluZ3MgPSBjb250YWluZXIucXVlcnlTZWxlY3RvckFsbChoZWFkaW5nU2VsZWN0b3IpO1xuXG4gICAgY29uc3QgaXRlbXM6IERvY3NUb2NJdGVtW10gPSBbXTtcbiAgICBoZWFkaW5ncy5mb3JFYWNoKChoZWFkaW5nOiBFbGVtZW50KSA9PiB7XG4gICAgICBjb25zdCBlbCA9IGhlYWRpbmcgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAvLyBHZW5lcmF0ZSBJRCBpZiBub3QgcHJlc2VudFxuICAgICAgaWYgKCFlbC5pZCkge1xuICAgICAgICBlbC5pZCA9IHRoaXMuZ2VuZXJhdGVJZChlbC50ZXh0Q29udGVudCB8fCAnJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGxldmVsID0gcGFyc2VJbnQoZWwudGFnTmFtZVsxXSwgMTApO1xuICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgIGlkOiBlbC5pZCxcbiAgICAgICAgbGFiZWw6IGVsLnRleHRDb250ZW50Py50cmltKCkgfHwgJycsXG4gICAgICAgIGxldmVsOiBsZXZlbCAtIDEsIC8vIGgyID0gbGV2ZWwgMSwgaDMgPSBsZXZlbCAyXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMuZmxhdEl0ZW1zLnNldChpdGVtcyk7XG4gICAgLy8gUmUtc2V0dXAgc2Nyb2xsIHNweSB3aXRoIG5ldyBpdGVtc1xuICAgIHRoaXMuc2V0dXBTY3JvbGxTcHkoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVJZCh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0ZXh0XG4gICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgLnRyaW0oKVxuICAgICAgLnJlcGxhY2UoL1teXFx3XFxzLV0vZywgJycpXG4gICAgICAucmVwbGFjZSgvXFxzKy9nLCAnLScpXG4gICAgICAuc3Vic3RyaW5nKDAsIDUwKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBTY3JvbGxTcHkoKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95U2Nyb2xsU3B5KCk7XG5cbiAgICBjb25zdCBpdGVtcyA9IHRoaXMuZmxhdEl0ZW1zKCk7XG4gICAgaWYgKGl0ZW1zLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgLy8gQ29sbGVjdCBoZWFkaW5nIGVsZW1lbnRzXG4gICAgdGhpcy5oZWFkaW5nRWxlbWVudHMgPSBpdGVtc1xuICAgICAgLm1hcChpdGVtID0+IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGl0ZW0uaWQpKVxuICAgICAgLmZpbHRlcigoZWwpOiBlbCBpcyBIVE1MRWxlbWVudCA9PiBlbCAhPT0gbnVsbCk7XG5cbiAgICBpZiAodGhpcy5oZWFkaW5nRWxlbWVudHMubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICAvLyBTZXQgaW5pdGlhbCBhY3RpdmUgaXRlbVxuICAgIHRoaXMudXBkYXRlQWN0aXZlSGVhZGluZygpO1xuXG4gICAgLy8gVXNlIHNjcm9sbCBldmVudCB3aXRoIHJlcXVlc3RBbmltYXRpb25GcmFtZSBmb3IgcGVyZm9ybWFuY2VcbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICB0aGlzLnNjcm9sbEhhbmRsZXIgPSAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnJhZklkKSB7XG4gICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5yYWZJZCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yYWZJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy51cGRhdGVBY3RpdmVIZWFkaW5nKCk7XG4gICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuc2Nyb2xsSGFuZGxlciwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVBY3RpdmVIZWFkaW5nKCk6IHZvaWQge1xuICAgIGNvbnN0IG9mZnNldFRvcCA9IHRoaXMucHJvcHMub2Zmc2V0VG9wID8/IDEwMDtcbiAgICBjb25zdCBzY3JvbGxZID0gd2luZG93LnNjcm9sbFk7XG5cbiAgICAvLyBGaW5kIHRoZSBoZWFkaW5nIHRoYXQgaXMgY3VycmVudGx5IGF0IG9yIGFib3ZlIHRoZSBvZmZzZXQgcG9pbnRcbiAgICBsZXQgYWN0aXZlSGVhZGluZzogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAgIGZvciAoY29uc3QgaGVhZGluZyBvZiB0aGlzLmhlYWRpbmdFbGVtZW50cykge1xuICAgICAgY29uc3QgcmVjdCA9IGhlYWRpbmcuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBoZWFkaW5nVG9wID0gcmVjdC50b3AgKyBzY3JvbGxZO1xuXG4gICAgICAvLyBJZiBoZWFkaW5nIGlzIGF0IG9yIGFib3ZlIHRoZSB0cmlnZ2VyIHBvaW50IChzY3JvbGxZICsgb2Zmc2V0KVxuICAgICAgaWYgKGhlYWRpbmdUb3AgPD0gc2Nyb2xsWSArIG9mZnNldFRvcCArIDEwKSB7XG4gICAgICAgIGFjdGl2ZUhlYWRpbmcgPSBoZWFkaW5nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gSGVhZGluZ3MgYXJlIGluIG9yZGVyLCBzbyB3ZSBjYW4gc3RvcCBvbmNlIHdlIGZpbmQgb25lIGJlbG93XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIElmIG5vIGhlYWRpbmcgaXMgYWJvdmUgdGhlIHRyaWdnZXIgcG9pbnQsIHVzZSB0aGUgZmlyc3Qgb25lXG4gICAgaWYgKCFhY3RpdmVIZWFkaW5nICYmIHRoaXMuaGVhZGluZ0VsZW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGFjdGl2ZUhlYWRpbmcgPSB0aGlzLmhlYWRpbmdFbGVtZW50c1swXTtcbiAgICB9XG5cbiAgICBpZiAoYWN0aXZlSGVhZGluZyAmJiBhY3RpdmVIZWFkaW5nLmlkICE9PSB0aGlzLmFjdGl2ZUlkKCkpIHtcbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgIHRoaXMuYWN0aXZlSWQuc2V0KGFjdGl2ZUhlYWRpbmchLmlkKTtcbiAgICAgICAgdGhpcy5zZWN0aW9uQ2hhbmdlLmVtaXQoYWN0aXZlSGVhZGluZyEuaWQpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cm95U2Nyb2xsU3B5KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNjcm9sbEhhbmRsZXIpIHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLnNjcm9sbEhhbmRsZXIpO1xuICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKHRoaXMucmFmSWQpIHtcbiAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMucmFmSWQpO1xuICAgICAgdGhpcy5yYWZJZCA9IG51bGw7XG4gICAgfVxuICAgIHRoaXMuaGVhZGluZ0VsZW1lbnRzID0gW107XG4gIH1cblxuICBzY3JvbGxUb1NlY3Rpb24oZXZlbnQ6IEV2ZW50LCBpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7XG4gICAgaWYgKCFlbGVtZW50KSByZXR1cm47XG5cbiAgICBjb25zdCBvZmZzZXRUb3AgPSB0aGlzLnByb3BzLm9mZnNldFRvcCA/PyAxMDA7XG5cbiAgICBjb25zdCB0b3AgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCArIHdpbmRvdy5zY3JvbGxZIC0gb2Zmc2V0VG9wO1xuXG4gICAgd2luZG93LnNjcm9sbFRvKHtcbiAgICAgIHRvcCxcbiAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICB9KTtcblxuICAgIC8vIFVwZGF0ZSBhY3RpdmUgaW1tZWRpYXRlbHkgZm9yIGJldHRlciBVWFxuICAgIHRoaXMuYWN0aXZlSWQuc2V0KGlkKTtcblxuICAgIC8vIFVwZGF0ZSBVUkwgaGFzaCB3aXRob3V0IGp1bXBpbmdcbiAgICBoaXN0b3J5LnB1c2hTdGF0ZShudWxsLCAnJywgYCMke2lkfWApO1xuICB9XG59XG4iXX0=
|
|
318
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jcy10b2MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9kb2NzLXRvYy9kb2NzLXRvYy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBT1osTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDOztBQUd2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStCRztBQXVDSCxNQUFNLE9BQU8sZ0JBQWdCO0lBYTNCLFlBQW9CLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBWnpCLFVBQUssR0FBb0IsRUFBRSxDQUFDO1FBRTNCLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVyRCxpQkFBaUI7UUFDUCxhQUFRLEdBQUcsTUFBTSxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzlCLGNBQVMsR0FBRyxNQUFNLENBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBRXhDLG9CQUFlLEdBQWtCLEVBQUUsQ0FBQztRQUNwQyxrQkFBYSxHQUF3QixJQUFJLENBQUM7UUFDMUMsVUFBSyxHQUFrQixJQUFJLENBQUM7UUE4RjVCLG9CQUFlLEdBQWdDLElBQUksQ0FBQztJQTVGdkIsQ0FBQztJQUV0QyxRQUFRO1FBQ04sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxlQUFlO1FBQ2IsK0JBQStCO1FBQy9CLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQzVCLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1lBQ2pDLENBQUM7WUFDRCxJQUFJLENBQUMsY0FB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QUNQLENBQUMsWUFBWSxDQUFDLFlBQ2I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErQlQ7MkVBSVEsS0FBSztzQkFBYixLQUFLO2dCQUVJLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uSW5pdCxcbiAgT25EZXN0cm95LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIEFmdGVyVmlld0luaXQsXG4gIE5nWm9uZSxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvY3NUb2NNZXRhZGF0YSwgRG9jc1RvY0l0ZW0gfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiB2YWwtZG9jcy10b2NcbiAqXG4gKiBBIHRhYmxlIG9mIGNvbnRlbnRzIGNvbXBvbmVudCB3aXRoIHNjcm9sbCBzcHkgZnVuY3Rpb25hbGl0eS5cbiAqIEF1dG9tYXRpY2FsbHkgaGlnaGxpZ2h0cyB0aGUgY3VycmVudCBzZWN0aW9uIGJhc2VkIG9uIHNjcm9sbCBwb3NpdGlvbi5cbiAqXG4gKiBAZXhhbXBsZSBNYW51YWwgaXRlbXNcbiAqIGBgYGh0bWxcbiAqIDx2YWwtZG9jcy10b2NcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICB0aXRsZTogJ09uIHRoaXMgcGFnZScsXG4gKiAgICAgaXRlbXM6IFtcbiAqICAgICAgIHsgaWQ6ICdvdmVydmlldycsIGxhYmVsOiAnT3ZlcnZpZXcnLCBsZXZlbDogMSB9LFxuICogICAgICAgeyBpZDogJ2luc3RhbGxhdGlvbicsIGxhYmVsOiAnSW5zdGFsbGF0aW9uJywgbGV2ZWw6IDEgfSxcbiAqICAgICAgIHsgaWQ6ICducG0nLCBsYWJlbDogJ1VzaW5nIG5wbScsIGxldmVsOiAyIH0sXG4gKiAgICAgICB7IGlkOiAneWFybicsIGxhYmVsOiAnVXNpbmcgeWFybicsIGxldmVsOiAyIH1cbiAqICAgICBdXG4gKiAgIH1cIlxuICogPjwvdmFsLWRvY3MtdG9jPlxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgQXV0by1nZW5lcmF0ZWQgZnJvbSBoZWFkaW5nc1xuICogYGBgaHRtbFxuICogPHZhbC1kb2NzLXRvY1xuICogICBbcHJvcHNdPVwie1xuICogICAgIGF1dG9HZW5lcmF0ZTogdHJ1ZSxcbiAqICAgICBjb250YWluZXJTZWxlY3RvcjogJy5hcnRpY2xlLWNvbnRlbnQnLFxuICogICAgIGhlYWRpbmdMZXZlbHM6IFsyLCAzXVxuICogICB9XCJcbiAqID48L3ZhbC1kb2NzLXRvYz5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtZG9jcy10b2MnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmF2XG4gICAgICBjbGFzcz1cImRvY3MtdG9jXCJcbiAgICAgIFtjbGFzc109XCJwcm9wcy5jc3NDbGFzc1wiXG4gICAgICByb2xlPVwibmF2aWdhdGlvblwiXG4gICAgICBhcmlhLWxhYmVsPVwiVGFibGUgb2YgY29udGVudHNcIlxuICAgID5cbiAgICAgIEBpZiAoIXByb3BzLmhpZGVUaXRsZSkge1xuICAgICAgICA8aDQgY2xhc3M9XCJkb2NzLXRvY19fdGl0bGVcIj57eyBwcm9wcy50aXRsZSB8fCAnQ29udGVudHMnIH19PC9oND5cbiAgICAgIH1cblxuICAgICAgPHVsIGNsYXNzPVwiZG9jcy10b2NfX2xpc3RcIj5cbiAgICAgICAgQGZvciAoaXRlbSBvZiBmbGF0SXRlbXMoKTsgdHJhY2sgaXRlbS5pZCkge1xuICAgICAgICAgIDxsaVxuICAgICAgICAgICAgY2xhc3M9XCJkb2NzLXRvY19faXRlbVwiXG4gICAgICAgICAgICBbY2xhc3MuZG9jcy10b2NfX2l0ZW0tLWxldmVsLTFdPVwiaXRlbS5sZXZlbCA9PT0gMVwiXG4gICAgICAgICAgICBbY2xhc3MuZG9jcy10b2NfX2l0ZW0tLWxldmVsLTJdPVwiaXRlbS5sZXZlbCA9PT0gMlwiXG4gICAgICAgICAgICBbY2xhc3MuZG9jcy10b2NfX2l0ZW0tLWxldmVsLTNdPVwiaXRlbS5sZXZlbCA9PT0gM1wiXG4gICAgICAgICAgICBbY2xhc3MuZG9jcy10b2NfX2l0ZW0tLWFjdGl2ZV09XCJhY3RpdmVJZCgpID09PSBpdGVtLmlkXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICBjbGFzcz1cImRvY3MtdG9jX19saW5rXCJcbiAgICAgICAgICAgICAgW2hyZWZdPVwiJyMnICsgaXRlbS5pZFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzY3JvbGxUb1NlY3Rpb24oJGV2ZW50LCBpdGVtLmlkKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IGl0ZW0ubGFiZWwgfX1cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICB9XG4gICAgICA8L3VsPlxuICAgIDwvbmF2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9kb2NzLXRvYy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBEb2NzVG9jQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIHByb3BzOiBEb2NzVG9jTWV0YWRhdGEgPSB7fTtcblxuICBAT3V0cHV0KCkgc2VjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIC8vIFJlYWN0aXZlIHN0YXRlXG4gIHByb3RlY3RlZCBhY3RpdmVJZCA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcbiAgcHJvdGVjdGVkIGZsYXRJdGVtcyA9IHNpZ25hbDxEb2NzVG9jSXRlbVtdPihbXSk7XG5cbiAgcHJpdmF0ZSBoZWFkaW5nRWxlbWVudHM6IEhUTUxFbGVtZW50W10gPSBbXTtcbiAgcHJpdmF0ZSBzY3JvbGxIYW5kbGVyOiAoKCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSByYWZJZDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZUZsYXRJdGVtcygpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIC8vIERlbGF5IHRvIGVuc3VyZSBET00gaXMgcmVhZHlcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLnByb3BzLmF1dG9HZW5lcmF0ZSkge1xuICAgICAgICB0aGlzLmdlbmVyYXRlVG9jRnJvbUhlYWRpbmdzKCk7XG4gICAgICB9XG4gICAgICB0aGlzLnNldHVwU2Nyb2xsU3B5KCk7XG4gICAgfSwgMTAwKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1sncHJvcHMnXSkge1xuICAgICAgdGhpcy51cGRhdGVGbGF0SXRlbXMoKTtcbiAgICAgIGlmICh0aGlzLnByb3BzLmF1dG9HZW5lcmF0ZSkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuZ2VuZXJhdGVUb2NGcm9tSGVhZGluZ3MoKSwgMTAwKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3lTY3JvbGxTcHkoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlRmxhdEl0ZW1zKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByb3BzLml0ZW1zKSB7XG4gICAgICB0aGlzLmZsYXRJdGVtcy5zZXQodGhpcy5mbGF0dGVuSXRlbXModGhpcy5wcm9wcy5pdGVtcykpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZmxhdHRlbkl0ZW1zKGl0ZW1zOiBEb2NzVG9jSXRlbVtdKTogRG9jc1RvY0l0ZW1bXSB7XG4gICAgY29uc3QgcmVzdWx0OiBEb2NzVG9jSXRlbVtdID0gW107XG4gICAgY29uc3QgZmxhdHRlbiA9IChpdGVtTGlzdDogRG9jc1RvY0l0ZW1bXSkgPT4ge1xuICAgICAgaXRlbUxpc3QuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgcmVzdWx0LnB1c2goaXRlbSk7XG4gICAgICAgIGlmIChpdGVtLmNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgICAgICBmbGF0dGVuKGl0ZW0uY2hpbGRyZW4pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9O1xuICAgIGZsYXR0ZW4oaXRlbXMpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlVG9jRnJvbUhlYWRpbmdzKCk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdG9yID0gdGhpcy5wcm9wcy5jb250YWluZXJTZWxlY3RvciB8fCAnLmRvY3MtbGF5b3V0X19jb250ZW50JztcbiAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKTtcblxuICAgIGlmICghY29udGFpbmVyKSB7XG4gICAgICBjb25zb2xlLndhcm4oYFtkb2NzLXRvY10gQ29udGFpbmVyIG5vdCBmb3VuZDogJHtzZWxlY3Rvcn1gKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBsZXZlbHMgPSB0aGlzLnByb3BzLmhlYWRpbmdMZXZlbHMgfHwgWzIsIDNdO1xuICAgIGNvbnN0IGhlYWRpbmdTZWxlY3RvciA9IGxldmVscy5tYXAobCA9PiBgaCR7bH1gKS5qb2luKCcsICcpO1xuICAgIGNvbnN0IGhlYWRpbmdzID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoaGVhZGluZ1NlbGVjdG9yKTtcblxuICAgIGNvbnN0IGl0ZW1zOiBEb2NzVG9jSXRlbVtdID0gW107XG4gICAgaGVhZGluZ3MuZm9yRWFjaCgoaGVhZGluZzogRWxlbWVudCkgPT4ge1xuICAgICAgY29uc3QgZWwgPSBoZWFkaW5nIGFzIEhUTUxFbGVtZW50O1xuICAgICAgLy8gR2VuZXJhdGUgSUQgaWYgbm90IHByZXNlbnRcbiAgICAgIGlmICghZWwuaWQpIHtcbiAgICAgICAgZWwuaWQgPSB0aGlzLmdlbmVyYXRlSWQoZWwudGV4dENvbnRlbnQgfHwgJycpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBsZXZlbCA9IHBhcnNlSW50KGVsLnRhZ05hbWVbMV0sIDEwKTtcbiAgICAgIGl0ZW1zLnB1c2goe1xuICAgICAgICBpZDogZWwuaWQsXG4gICAgICAgIGxhYmVsOiBlbC50ZXh0Q29udGVudD8udHJpbSgpIHx8ICcnLFxuICAgICAgICBsZXZlbDogbGV2ZWwgLSAxLCAvLyBoMiA9IGxldmVsIDEsIGgzID0gbGV2ZWwgMlxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmZsYXRJdGVtcy5zZXQoaXRlbXMpO1xuICAgIC8vIFJlLXNldHVwIHNjcm9sbCBzcHkgd2l0aCBuZXcgaXRlbXNcbiAgICB0aGlzLnNldHVwU2Nyb2xsU3B5KCk7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlSWQodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGV4dFxuICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgIC50cmltKClcbiAgICAgIC5yZXBsYWNlKC9bXlxcd1xccy1dL2csICcnKVxuICAgICAgLnJlcGxhY2UoL1xccysvZywgJy0nKVxuICAgICAgLnN1YnN0cmluZygwLCA1MCk7XG4gIH1cblxuICBwcml2YXRlIHNjcm9sbENvbnRhaW5lcjogSFRNTEVsZW1lbnQgfCBXaW5kb3cgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIHNldHVwU2Nyb2xsU3B5KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveVNjcm9sbFNweSgpO1xuXG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLmZsYXRJdGVtcygpO1xuICAgIGlmIChpdGVtcy5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgIC8vIENvbGxlY3QgaGVhZGluZyBlbGVtZW50c1xuICAgIHRoaXMuaGVhZGluZ0VsZW1lbnRzID0gaXRlbXNcbiAgICAgIC5tYXAoaXRlbSA9PiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpdGVtLmlkKSlcbiAgICAgIC5maWx0ZXIoKGVsKTogZWwgaXMgSFRNTEVsZW1lbnQgPT4gZWwgIT09IG51bGwpO1xuXG4gICAgaWYgKHRoaXMuaGVhZGluZ0VsZW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc29sZS53YXJuKCdbZG9jcy10b2NdIE5vIGhlYWRpbmcgZWxlbWVudHMgZm91bmQgZm9yIElEczonLCBpdGVtcy5tYXAoaSA9PiBpLmlkKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gRmluZCB0aGUgc2Nyb2xsIGNvbnRhaW5lciAtIGNoZWNrIGZvciBpb24tY29udGVudCBmaXJzdCwgdGhlbiB1c2Ugd2luZG93XG4gICAgdGhpcy5zY3JvbGxDb250YWluZXIgPSB0aGlzLmZpbmRTY3JvbGxDb250YWluZXIoKTtcblxuICAgIC8vIFNldCBpbml0aWFsIGFjdGl2ZSBpdGVtXG4gICAgdGhpcy51cGRhdGVBY3RpdmVIZWFkaW5nKCk7XG5cbiAgICAvLyBVc2Ugc2Nyb2xsIGV2ZW50IHdpdGggcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGZvciBwZXJmb3JtYW5jZVxuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMuc2Nyb2xsSGFuZGxlciA9ICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMucmFmSWQpIHtcbiAgICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLnJhZklkKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJhZklkID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUFjdGl2ZUhlYWRpbmcoKTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuXG4gICAgICAvLyBMaXN0ZW4gb24gYm90aCB3aW5kb3cgYW5kIHRoZSBzY3JvbGwgY29udGFpbmVyIGZvciBtYXhpbXVtIGNvbXBhdGliaWxpdHlcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLnNjcm9sbEhhbmRsZXIsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuc2Nyb2xsSGFuZGxlciwgeyBwYXNzaXZlOiB0cnVlLCBjYXB0dXJlOiB0cnVlIH0pO1xuXG4gICAgICAvLyBBbHNvIGxpc3RlbiBvbiBpb24tY29udGVudCBpZiBwcmVzZW50XG4gICAgICBjb25zdCBpb25Db250ZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaW9uLWNvbnRlbnQnKTtcbiAgICAgIGlmIChpb25Db250ZW50KSB7XG4gICAgICAgIGlvbkNvbnRlbnQuYWRkRXZlbnRMaXN0ZW5lcignaW9uU2Nyb2xsJywgdGhpcy5zY3JvbGxIYW5kbGVyIGFzIEV2ZW50TGlzdGVuZXIsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZmluZFNjcm9sbENvbnRhaW5lcigpOiBIVE1MRWxlbWVudCB8IFdpbmRvdyB7XG4gICAgLy8gQ2hlY2sgZm9yIGlvbi1jb250ZW50J3Mgc2Nyb2xsIGVsZW1lbnRcbiAgICBjb25zdCBpb25Db250ZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaW9uLWNvbnRlbnQnKTtcbiAgICBpZiAoaW9uQ29udGVudCkge1xuICAgICAgLy8gaW9uLWNvbnRlbnQgaGFzIGEgc2hhZG93IERPTSB3aXRoIHRoZSBhY3R1YWwgc2Nyb2xsYWJsZSBlbGVtZW50XG4gICAgICBjb25zdCBzY3JvbGxFbCA9IChpb25Db250ZW50IGFzIGFueSkuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcignLmlubmVyLXNjcm9sbCcpO1xuICAgICAgaWYgKHNjcm9sbEVsKSByZXR1cm4gc2Nyb2xsRWw7XG4gICAgfVxuICAgIHJldHVybiB3aW5kb3c7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUFjdGl2ZUhlYWRpbmcoKTogdm9pZCB7XG4gICAgY29uc3Qgb2Zmc2V0VG9wID0gdGhpcy5wcm9wcy5vZmZzZXRUb3AgPz8gMTAwO1xuXG4gICAgLy8gRmluZCB0aGUgaGVhZGluZyBjbG9zZXN0IHRvIG9yIGFib3ZlIHRoZSB0cmlnZ2VyIHBvaW50IChvZmZzZXQgZnJvbSB0b3Agb2Ygdmlld3BvcnQpXG4gICAgLy8gVXNpbmcgZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIHdoaWNoIGlzIHJlbGF0aXZlIHRvIHZpZXdwb3J0IC0gd29ya3MgcmVnYXJkbGVzcyBvZiBzY3JvbGwgY29udGFpbmVyXG4gICAgbGV0IGFjdGl2ZUhlYWRpbmc6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgICBmb3IgKGNvbnN0IGhlYWRpbmcgb2YgdGhpcy5oZWFkaW5nRWxlbWVudHMpIHtcbiAgICAgIGNvbnN0IHJlY3QgPSBoZWFkaW5nLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAvLyBJZiBoZWFkaW5nJ3MgdG9wIGlzIGF0IG9yIGFib3ZlIHRoZSB0cmlnZ2VyIHBvaW50IChvZmZzZXQgcGl4ZWxzIGZyb20gdmlld3BvcnQgdG9wKVxuICAgICAgaWYgKHJlY3QudG9wIDw9IG9mZnNldFRvcCArIDEwKSB7XG4gICAgICAgIGFjdGl2ZUhlYWRpbmcgPSBoZWFkaW5nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gU2luY2UgaGVhZGluZ3MgYXJlIGluIERPTSBvcmRlciwgc3RvcCBvbmNlIHdlIGZpbmQgb25lIGJlbG93IHRoZSB0cmlnZ2VyXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIElmIG5vIGhlYWRpbmcgaXMgYWJvdmUgdGhlIHRyaWdnZXIgcG9pbnQsIHVzZSB0aGUgZmlyc3Qgb25lXG4gICAgaWYgKCFhY3RpdmVIZWFkaW5nICYmIHRoaXMuaGVhZGluZ0VsZW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGFjdGl2ZUhlYWRpbmcgPSB0aGlzLmhlYWRpbmdFbGVtZW50c1swXTtcbiAgICB9XG5cbiAgICBpZiAoYWN0aXZlSGVhZGluZyAmJiBhY3RpdmVIZWFkaW5nLmlkICE9PSB0aGlzLmFjdGl2ZUlkKCkpIHtcbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgIHRoaXMuYWN0aXZlSWQuc2V0KGFjdGl2ZUhlYWRpbmchLmlkKTtcbiAgICAgICAgdGhpcy5zZWN0aW9uQ2hhbmdlLmVtaXQoYWN0aXZlSGVhZGluZyEuaWQpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cm95U2Nyb2xsU3B5KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNjcm9sbEhhbmRsZXIpIHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLnNjcm9sbEhhbmRsZXIpO1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5zY3JvbGxIYW5kbGVyLCB7IGNhcHR1cmU6IHRydWUgfSBhcyBFdmVudExpc3RlbmVyT3B0aW9ucyk7XG5cbiAgICAgIGNvbnN0IGlvbkNvbnRlbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpb24tY29udGVudCcpO1xuICAgICAgaWYgKGlvbkNvbnRlbnQpIHtcbiAgICAgICAgaW9uQ29udGVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdpb25TY3JvbGwnLCB0aGlzLnNjcm9sbEhhbmRsZXIgYXMgRXZlbnRMaXN0ZW5lcik7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2Nyb2xsSGFuZGxlciA9IG51bGw7XG4gICAgfVxuICAgIGlmICh0aGlzLnJhZklkKSB7XG4gICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLnJhZklkKTtcbiAgICAgIHRoaXMucmFmSWQgPSBudWxsO1xuICAgIH1cbiAgICB0aGlzLmhlYWRpbmdFbGVtZW50cyA9IFtdO1xuICAgIHRoaXMuc2Nyb2xsQ29udGFpbmVyID0gbnVsbDtcbiAgfVxuXG4gIHNjcm9sbFRvU2VjdGlvbihldmVudDogRXZlbnQsIGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtcbiAgICBpZiAoIWVsZW1lbnQpIHJldHVybjtcblxuICAgIGNvbnN0IG9mZnNldFRvcCA9IHRoaXMucHJvcHMub2Zmc2V0VG9wID8/IDEwMDtcblxuICAgIC8vIFVzZSBzY3JvbGxJbnRvVmlldyB3aXRoIG9mZnNldCBjYWxjdWxhdGlvbiBmb3IgYmV0dGVyIGNyb3NzLWNvbnRhaW5lciBzdXBwb3J0XG4gICAgY29uc3QgZWxlbWVudFJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IGN1cnJlbnRTY3JvbGxZID0gd2luZG93LnNjcm9sbFkgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcDtcbiAgICBjb25zdCB0YXJnZXRZID0gZWxlbWVudFJlY3QudG9wICsgY3VycmVudFNjcm9sbFkgLSBvZmZzZXRUb3A7XG5cbiAgICAvLyBUcnkgaW9uLWNvbnRlbnQgc2Nyb2xsVG9Qb2ludCBmaXJzdCAoZm9yIElvbmljIGFwcHMpXG4gICAgY29uc3QgaW9uQ29udGVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lvbi1jb250ZW50Jyk7XG4gICAgaWYgKGlvbkNvbnRlbnQgJiYgdHlwZW9mIChpb25Db250ZW50IGFzIGFueSkuc2Nyb2xsVG9Qb2ludCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgKGlvbkNvbnRlbnQgYXMgYW55KS5zY3JvbGxUb1BvaW50KDAsIHRhcmdldFksIDMwMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEZhbGxiYWNrIHRvIHdpbmRvdyBzY3JvbGxcbiAgICAgIHdpbmRvdy5zY3JvbGxUbyh7XG4gICAgICAgIHRvcDogdGFyZ2V0WSxcbiAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIGFjdGl2ZSBpbW1lZGlhdGVseSBmb3IgYmV0dGVyIFVYXG4gICAgdGhpcy5hY3RpdmVJZC5zZXQoaWQpO1xuXG4gICAgLy8gVXBkYXRlIFVSTCBoYXNoIHdpdGhvdXQganVtcGluZ1xuICAgIGhpc3RvcnkucHVzaFN0YXRlKG51bGwsICcnLCBgIyR7aWR9YCk7XG4gIH1cbn1cbiJdfQ==
|