New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

scrollscene

Package Overview
Dependencies
Maintainers
1
Versions
24
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

scrollscene - npm Package Compare versions

Comparing version 0.0.10 to 0.0.11

13

dist/commonjs/ScrollObserver.d.ts

@@ -1,2 +0,1 @@

/// <reference types="react" />
export interface IScrollObserverGsap {

@@ -61,7 +60,7 @@ /**

* @desc Specify the element you wish to toggle the className on.
* @type HTMLElement | React.ReactNode | any
* @type HTMLElement | any
* @example
* toggle: { element: containerRef.current }
*/
element: HTMLElement | React.ReactNode | any;
element: HTMLElement | any;
}

@@ -72,7 +71,7 @@ export interface IScrollObserverVideo {

* @desc Specify the video element you wish to interact with.
* @type HTMLElement | React.ReactNode | any
* @type HTMLElement | any
* @example
* video: { element: videoRef.current }
*/
element: HTMLElement | React.ReactNode | any;
element: HTMLElement | any;
}

@@ -152,7 +151,7 @@ interface IScrollObserver {

* @desc Set the element you wish to trigger events based upon, the observed element.
* @type HTMLElement | React.ReactNode | any
* @type HTMLElement | any
* @example
* triggerElement: triggerRef.current
*/
triggerElement: HTMLElement | React.ReactNode | any;
triggerElement: HTMLElement | any;
/**

@@ -159,0 +158,0 @@ * useDuration

@@ -312,2 +312,2 @@ "use strict";

exports.ScrollObserver = ScrollObserver;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TY3JvbGxPYnNlcnZlci50cyJdLCJuYW1lcyI6WyJuYW1lU3BhY2UiLCJzdGF0ZSIsInZpc2libGUiLCJhbHJlYWR5RmlyZWQiLCJzZXRDbGFzc05hbWUiLCJvcHRpb25zIiwidG9nZ2xlIiwiZWxlbWVudCIsImNsYXNzTmFtZSIsImFkZCIsImNsYXNzTGlzdCIsImNvbnRhaW5zIiwicmVtb3ZlIiwidXBkYXRlIiwic2V0U3RhdGUiLCJzZXRUd2VlbiIsImdzYXAiLCJ0aW1lbGluZSIsInlveW8iLCJzcGVlZCIsInJldmVyc2VTcGVlZCIsImRlbGF5IiwidGwiLCJyZXBlYXQiLCJyZXBlYXREZWxheSIsInBsYXkiLCJ0aW1lU2NhbGUiLCJwYXVzZSIsInJldmVyc2UiLCJraWxsIiwic2NydWIiLCJpbnRlcnNlY3Rpb25SYXRpbyIsInByb2dyZXNzIiwic2V0UGxheWVyIiwidmlkZW8iLCJzZXRGdW5jdGlvbiIsImNhbGxiYWNrIiwiYWN0aXZlIiwibm90QWN0aXZlIiwiU2Nyb2xsT2JzZXJ2ZXIiLCJicmVha3BvaW50cyIsImRlc3Ryb3lJbW1lZGlhdGVseSIsIm9ic2VydmVyIiwib2Zmc2V0Iiwid2hlblZpc2libGUiLCJ0aHJlc2hvbGRzIiwidHJpZ2dlckVsZW1lbnQiLCJ1c2VEdXJhdGlvbiIsIiR0aGlzIiwic2V0VG9nZ2xlIiwic2V0R3NhcCIsInNldFZpZGVvIiwic2V0Q2FsbGJhY2siLCJyYXRpbyIsInNldFJvb3RNYXJnaW4iLCJNYXRoIiwiYWJzIiwicGFyc2VGbG9hdCIsIm9ic2VydmVyQ2FsbGJhY2siLCJlbnRyaWVzIiwiZm9yRWFjaCIsImlzSW50ZXJzZWN0aW5nIiwiZGVzdHJveSIsImdldFBlcmNlbnRhZ2UiLCJ2YWx1ZSIsInBhcnNlZCIsInBhcnNlSW50IiwicmVwbGFjZSIsImdldFRocmVzb2xkcyIsImRlZmF1bHRzIiwib25lIiwicmV0dXJuZWRUaHJlc2hvbGRzIiwiT2JzZXJ2ZXIiLCJJbnRlcnNlY3Rpb25P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LGNBQWpCO0FBQ0QsR0FGRDs7QUFJQSxPQUFLZ0IsT0FBTCxHQUFlLFlBQVc7QUFDeEIsUUFBSWhCLGNBQWMsSUFBSTBCLFFBQXRCLEVBQWdDO0FBQzlCLFVBQUl2QixTQUFKLEVBQWU7QUFDYkEsUUFBQUEsU0FBUyxDQUFDckMsTUFBVjtBQUNEOztBQUVELFVBQUlzQyxPQUFKLEVBQWE7QUFDWEEsUUFBQUEsT0FBTyxDQUFDckIsSUFBUjtBQUNEOztBQUVELFVBQUlzQixRQUFKLEVBQWM7QUFDWkEsUUFBQUEsUUFBUSxDQUFDdEIsSUFBVDtBQUNEOztBQUVEMkMsTUFBQUEsUUFBUSxDQUFDTSxTQUFULENBQW1CaEMsY0FBbkI7QUFDRDtBQUNGLEdBaEJEOztBQWtCQSxvQ0FBb0JOLFdBQXBCLEVBQWlDLEtBQUtvQyxJQUF0QyxFQUE0QyxLQUFLZCxPQUFqRDtBQUNELENBeEpEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXJyb3JMb2csIGlzRnVuYywgaXNPYmplY3QsIHNjcm9sbEFuaW1hdGlvbkluaXQsIGNyZWF0ZUFycmF5LCBpc1N0cmluZywgc3RyaW5nQ29udGFpbnMgfSBmcm9tICcuL2hlbHBlcnMnXG5cbmNvbnN0IG5hbWVTcGFjZSA9ICdTY3JvbGxPYnNlcnZlcidcblxuLy8gQHRzLWlnbm9yZVxuY29uc3Qgc3RhdGUgPSBmdW5jdGlvbih2aXNpYmxlLCBhbHJlYWR5RmlyZWQpIHtcbiAgdGhpcy52aXNpYmxlID0gZmFsc2VcbiAgdGhpcy5hbHJlYWR5RmlyZWQgPSBmYWxzZVxufVxuXG5jb25zdCBzZXRDbGFzc05hbWUgPSBmdW5jdGlvbih0aGlzOiBhbnksIG9wdGlvbnMpIHtcbiAgY29uc3QgdG9nZ2xlID0ge1xuICAgIGVsZW1lbnQ6IG51bGwsXG4gICAgY2xhc3NOYW1lOiBudWxsLFxuICAgIC4uLm9wdGlvbnMsXG4gIH1cblxuICBpZiAoIXRvZ2dsZS5lbGVtZW50KSB7XG4gICAgZXJyb3JMb2coXG4gICAgICBuYW1lU3BhY2UsXG4gICAgICBgQmUgc3VyZSB0byBzZXQgYSBjb25zdCB0b2dnbGVFbGVtZW50ID0gKHJlYWN0UmVmLmN1cnJlbnQgb3IgZG9jdW1lbnQucXVlcnlTZWxlY3RvcikgaW4gdGhlIG5ldyAke25hbWVTcGFjZX0oeyB0b2dnbGU6IHsgZWxlbWVudDogdG9nZ2xlRWxlbWVudCB9IH0pYCxcbiAgICApXG4gIH1cblxuICBpZiAoIXRvZ2dsZS5jbGFzc05hbWUpIHtcbiAgICBlcnJvckxvZyhcbiAgICAgIG5hbWVTcGFjZSxcbiAgICAgIGBCZSBzdXJlIHRvIHNldCB0aGUgY2xhc3NOYW1lIHlvdSB3YW50IHRvIHRvZ2dsZSBpbiB0aGUgbmV3ICR7bmFtZVNwYWNlfSh7IHRvZ2dsZTogeyBjbGFzc05hbWU6IFwibXktY2xhc3NcIiB9IH0pYCxcbiAgICApXG4gIH1cblxuICB0aGlzLmFkZCA9IGZ1bmN0aW9uKCkge1xuICAgIC8qIGFkZCBjbGFzc05hbWUgaWYgaXQncyBub3QgYWxyZWFkeSB0aGVyZSAqL1xuICAgICF0b2dnbGUuZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnModG9nZ2xlLmNsYXNzTmFtZSkgJiYgdG9nZ2xlLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCh0b2dnbGUuY2xhc3NOYW1lKVxuICB9XG5cbiAgdGhpcy5yZW1vdmUgPSBmdW5jdGlvbigpIHtcbiAgICAvKiByZW1vdmUgY2xhc3NOYW1lIGlmIGl0J3MgdGhlcmUgKi9cbiAgICB0b2dnbGUuZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnModG9nZ2xlLmNsYXNzTmFtZSkgJiYgdG9nZ2xlLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSh0b2dnbGUuY2xhc3NOYW1lKVxuICB9XG5cbiAgdGhpcy51cGRhdGUgPSBmdW5jdGlvbihzZXRTdGF0ZSkge1xuICAgIGlmICghc2V0U3RhdGUuYWxyZWFkeUZpcmVkICYmIHNldFN0YXRlLnZpc2libGUpIHtcbiAgICAgIHRoaXMuYWRkKClcbiAgICAgIHNldFN0YXRlLmFscmVhZHlGaXJlZCA9IHRydWVcbiAgICB9XG5cbiAgICBpZiAoc2V0U3RhdGUuYWxyZWFkeUZpcmVkICYmICFzZXRTdGF0ZS52aXNpYmxlKSB7XG4gICAgICB0aGlzLnJlbW92ZSgpXG4gICAgICBzZXRTdGF0ZS5hbHJlYWR5RmlyZWQgPSBmYWxzZVxuICAgIH1cbiAgfVxufVxuXG5jb25zdCBzZXRUd2VlbiA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgb3B0aW9ucykge1xuICBjb25zdCBnc2FwID0ge1xuICAgIHRpbWVsaW5lOiBudWxsLFxuICAgIHlveW86IGZhbHNlLFxuICAgIHNwZWVkOiAxLFxuICAgIHJldmVyc2VTcGVlZDogMSxcbiAgICBkZWxheTogMixcbiAgICAuLi5vcHRpb25zLFxuICB9XG5cbiAgaWYgKCFnc2FwLnRpbWVsaW5lKSB7XG4gICAgZXJyb3JMb2coXG4gICAgICBuYW1lU3BhY2UsXG4gICAgICBgQmUgc3VyZSB0byBzZXQgYSBjb25zdCB0bCA9IGdzYXAudGltZWxpbmUoeyBwYXVzZWQ6IHRydWUgfSkgaW4gdGhlIG5ldyAke25hbWVTcGFjZX0oeyBnc2FwOiB7IHRpbWVsaW5lOiB0bCB9IH0pYCxcbiAgICApXG4gIH1cblxuICBjb25zdCB0bCA9IGdzYXAudGltZWxpbmVcblxuICBpZiAoZ3NhcC55b3lvKSB7XG4gICAgdGwucmVwZWF0KC0xKVxuICAgICAgLnlveW8oZ3NhcC55b3lvKVxuICAgICAgLnJlcGVhdERlbGF5KGdzYXAuZGVsYXkpXG4gIH1cblxuICB0aGlzLnBsYXkgPSBmdW5jdGlvbigpIHtcbiAgICB0bC50aW1lU2NhbGUoZ3NhcC5zcGVlZCkucGxheSgpXG4gIH1cblxuICB0aGlzLnBhdXNlID0gZnVuY3Rpb24oKSB7XG4gICAgdGwucGF1c2UoKVxuICB9XG5cbiAgdGhpcy5yZXZlcnNlID0gZnVuY3Rpb24oKSB7XG4gICAgdGwudGltZVNjYWxlKGdzYXAucmV2ZXJzZVNwZWVkKS5yZXZlcnNlKClcbiAgfVxuXG4gIHRoaXMua2lsbCA9IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0bCkge1xuICAgICAgdGwucGF1c2UoMClcbiAgICAgIHRsLmtpbGwoKVxuICAgIH1cbiAgfVxuXG4gIHRoaXMudXBkYXRlID0gZnVuY3Rpb24oc2V0U3RhdGUpIHtcbiAgICBpZiAoIXNldFN0YXRlLmFscmVhZHlGaXJlZCAmJiBzZXRTdGF0ZS52aXNpYmxlKSB7XG4gICAgICB0aGlzLnBsYXkoKVxuICAgICAgc2V0U3RhdGUuYWxyZWFkeUZpcmVkID0gdHJ1ZVxuICAgIH1cblxuICAgIGlmIChzZXRTdGF0ZS5hbHJlYWR5RmlyZWQgJiYgIXNldFN0YXRlLnZpc2libGUpIHtcbiAgICAgIGdzYXAueW95byA/IHRoaXMucGF1c2UoKSA6IHRoaXMucmV2ZXJzZSgpXG4gICAgICBzZXRTdGF0ZS5hbHJlYWR5RmlyZWQgPSBmYWxzZVxuICAgIH1cbiAgfVxuXG4gIHRoaXMuc2NydWIgPSBmdW5jdGlvbihpbnRlcnNlY3Rpb25SYXRpbykge1xuICAgIHRsLnByb2dyZXNzKGludGVyc2VjdGlvblJhdGlvKVxuICB9XG59XG5cbmNvbnN0IHNldFBsYXllciA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgb3B0aW9ucykge1xuICBjb25zdCB2aWRlbyA9IHtcbiAgICBlbGVtZW50OiBudWxsLFxuICAgIC4uLm9wdGlvbnMsXG4gIH1cblxuICBpZiAoIXZpZGVvLmVsZW1lbnQpIHtcbiAgICBlcnJvckxvZyhcbiAgICAgIG5hbWVTcGFjZSxcbiAgICAgIGBCZSBzdXJlIHRvIHNldCBhIHZpZGVvIGVsZW1lbnQgaW4gdGhlIG5ldyAke25hbWVTcGFjZX0oeyB2aWRlbzogeyBlbGVtZW50OiB2aWRlb1JlZi5jdXJyZW50IH0gfSlgLFxuICAgIClcbiAgfVxuXG4gIHRoaXMucGxheSA9IGZ1bmN0aW9uKCkge1xuICAgIHZpZGVvLmVsZW1lbnQucGxheSgpXG4gIH1cblxuICB0aGlzLnBhdXNlID0gZnVuY3Rpb24oKSB7XG4gICAgdmlkZW8uZWxlbWVudC5wYXVzZSgpXG4gIH1cblxuICB0aGlzLmtpbGwgPSBmdW5jdGlvbigpIHtcbiAgICB2aWRlby5lbGVtZW50LnBhdXNlKClcbiAgfVxuXG4gIHRoaXMudXBkYXRlID0gZnVuY3Rpb24oc2V0U3RhdGUpIHtcbiAgICBpZiAoIXNldFN0YXRlLmFscmVhZHlGaXJlZCAmJiBzZXRTdGF0ZS52aXNpYmxlKSB7XG4gICAgICB0aGlzLnBsYXkoKVxuICAgICAgc2V0U3RhdGUuYWxyZWFkeUZpcmVkID0gdHJ1ZVxuICAgIH1cblxuICAgIGlmIChzZXRTdGF0ZS5hbHJlYWR5RmlyZWQgJiYgIXNldFN0YXRlLnZpc2libGUpIHtcbiAgICAgIHRoaXMucGF1c2UoKVxuICAgICAgc2V0U3RhdGUuYWxyZWFkeUZpcmVkID0gZmFsc2VcbiAgICB9XG4gIH1cbn1cblxuY29uc3Qgc2V0RnVuY3Rpb246IGFueSA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgb3B0aW9ucykge1xuICBjb25zdCBjYWxsYmFjayA9IHtcbiAgICBhY3RpdmU6IG51bGwsXG4gICAgbm90QWN0aXZlOiBudWxsLFxuICAgIC4uLm9wdGlvbnMsXG4gIH1cblxuICBpZiAoIWNhbGxiYWNrLmFjdGl2ZSAmJiAhY2FsbGJhY2subm90QWN0aXZlKSB7XG4gICAgZXJyb3JMb2coXG4gICAgICBuYW1lU3BhY2UsXG4gICAgICBgQmUgc3VyZSB0byBzZXQgYSBjYWxsYmFjayBhY3RpdmUgb3Igbm90QWN0aXZlIGZ1bmN0aW9uIGluIHRoZSBuZXcgJHtuYW1lU3BhY2V9KHsgY2FsbGJhY2s6IHsgYWN0aXZlOiAoKSA9PiAoKSB9IH0pYCxcbiAgICApXG4gIH1cblxuICBpZiAoKGNhbGxiYWNrLmFjdGl2ZSAmJiAhaXNGdW5jKGNhbGxiYWNrLmFjdGl2ZSkpIHx8IChjYWxsYmFjay5ub3RBY3RpdmUgJiYgIWlzRnVuYyhjYWxsYmFjay5ub3RBY3RpdmUpKSkge1xuICAgIGVycm9yTG9nKG5hbWVTcGFjZSwgYEJlIHN1cmUgdG8gc2V0IHRoZSBjYWxsYmFjayBhcyBhIGZ1bmN0aW9uIGApXG4gIH1cblxuICB0aGlzLnVwZGF0ZSA9IGZ1bmN0aW9uKHNldFN0YXRlKSB7XG4gICAgaWYgKCFzZXRTdGF0ZS5hbHJlYWR5RmlyZWQgJiYgc2V0U3RhdGUudmlzaWJsZSAmJiBjYWxsYmFjay5hY3RpdmUpIHtcbiAgICAgIGNhbGxiYWNrLmFjdGl2ZSgpXG4gICAgICBzZXRTdGF0ZS5hbHJlYWR5RmlyZWQgPSB0cnVlXG4gICAgfVxuXG4gICAgaWYgKHNldFN0YXRlLmFscmVhZHlGaXJlZCAmJiAhc2V0U3RhdGUudmlzaWJsZSAmJiBjYWxsYmFjay5hY3RpdmUpIHtcbiAgICAgIGNhbGxiYWNrLm5vdEFjdGl2ZSgpXG4gICAgICBzZXRTdGF0ZS5hbHJlYWR5RmlyZWQgPSBmYWxzZVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTY3JvbGxPYnNlcnZlckdzYXAge1xuICAvKipcbiAgICogdGltZWxpbmVcbiAgICogQGRlc2MgSW5zZXJ0IHlvdXIgZ3NhcC50aW1lbGluZSBvYmplY3QgdmFyXG4gICAqIEB0eXBlIG9iamVjdFxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBteVRpbWVsaW5lID0gZ3NhcC50aW1lbGluZSgpXG4gICAqIGdzYXA6IHsgdGltZWxpbmU6IG15VGltZWxpbmUgfVxuICAgKi9cbiAgdGltZWxpbmU6IGFueVxuXG4gIC8qKlxuICAgKiB5b3lvXG4gICAqIEBkZXNjIERvIHlvdSB3YW50IGdzYXAgYW5pbWF0aW9uIHRvIGxvb3AgYmFjayBhbmQgZm9ydGg/XG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICogQGV4YW1wbGVcbiAgICogZ3NhcDogeyB5b3lvOiB0cnVlIH1cbiAgICovXG4gIHlveW8/OiBib29sZWFuXG5cbiAgLyoqXG4gICAqIHNwZWVkXG4gICAqIEBkZXNjIFRoZSBzcGVlZCBhdCB3aGljaCB0aGUgZ3NhcCBhbmltYXRpb24gd2lsbCBwbGF5IHJlbGF0aXZlIHRvIGl0J3MgY3VycmVudCBzcGVlZC5cbiAgICogQHR5cGUgbnVtYmVyXG4gICAqIEBkZWZhdWx0IDFcbiAgICogQGV4YW1wbGVcbiAgICogZ3NhcDogeyBzcGVlZDogMiB9IC8vID0gdHdpY2UgYXMgZmFzdFxuICAgKi9cbiAgc3BlZWQ/OiBudW1iZXJcblxuICAvKipcbiAgICogc3BlZWRcbiAgICogQGRlc2MgVGhlIHNwZWVkIGF0IHdoaWNoIHRoZSBnc2FwIGFuaW1hdGlvbiB3aWxsIHJldmVyc2UgcmVsYXRpdmUgdG8gaXQncyBjdXJyZW50IHNwZWVkLlxuICAgKiBAdHlwZSBudW1iZXJcbiAgICogQGRlZmF1bHQgNFxuICAgKiBAZXhhbXBsZVxuICAgKiBnc2FwOiB7IHNwZWVkOiA0IH0gLy8gPSA0eCBhcyBmYXN0XG4gICAqL1xuICByZXZlcnNlU3BlZWQ/OiBudW1iZXJcblxuICAvKipcbiAgICogZGVsYXlcbiAgICogQGRlc2MgVGhlIGRlbGF5IChpbiBzZWNvbmRzKSBhdCB3aGljaCB0aGUgZ3NhcCBhbmltYXRpb24gd2FpdCBiZWZvcmUgcmV2ZXJzaW5nLlxuICAgKiBAdHlwZSBudW1iZXJcbiAgICogQGRlZmF1bHQgMlxuICAgKiBAZXhhbXBsZVxuICAgKiBnc2FwOiB7IGRlbGF5OiAzIH0gLy8gPSBXYWl0IDMgc2Vjb25kc1xuICAgKi9cbiAgZGVsYXk/OiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU2Nyb2xsT2JzZXJ2ZXJUb2dnbGUge1xuICAvKipcbiAgICogY2xhc3NOYW1lXG4gICAqIEBkZXNjIFNwZWNpZnkgdGhlIGNsYXNzTmFtZSB5b3Ugd2lzaCB0byB0b2dnbGUuXG4gICAqIEB0eXBlIHN0cmluZ1xuICAgKiBAZXhhbXBsZVxuICAgKiB0b2dnbGU6IHsgY2xhc3NOYW1lOiAndHVybi1tZS1ibHVlLWJhYnknIH1cbiAgICovXG4gIGNsYXNzTmFtZTogc3RyaW5nXG5cbiAgLyoqXG4gICAqIGVsZW1lbnRcbiAgICogQGRlc2MgU3BlY2lmeSB0aGUgZWxlbWVudCB5b3Ugd2lzaCB0byB0b2dnbGUgdGhlIGNsYXNzTmFtZSBvbi5cbiAgICogQHR5cGUgSFRNTEVsZW1lbnQgfCBSZWFjdC5SZWFjdE5vZGUgfCBhbnlcbiAgICogQGV4YW1wbGVcbiAgICogdG9nZ2xlOiB7IGVsZW1lbnQ6IGNvbnRhaW5lclJlZi5jdXJyZW50IH1cbiAgICovXG4gIGVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgUmVhY3QuUmVhY3ROb2RlIHwgYW55XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNjcm9sbE9ic2VydmVyVmlkZW8ge1xuICAvKipcbiAgICogZWxlbWVudFxuICAgKiBAZGVzYyBTcGVjaWZ5IHRoZSB2aWRlbyBlbGVtZW50IHlvdSB3aXNoIHRvIGludGVyYWN0IHdpdGguXG4gICAqIEB0eXBlIEhUTUxFbGVtZW50IHwgUmVhY3QuUmVhY3ROb2RlIHwgYW55XG4gICAqIEBleGFtcGxlXG4gICAqIHZpZGVvOiB7IGVsZW1lbnQ6IHZpZGVvUmVmLmN1cnJlbnQgfVxuICAgKi9cbiAgZWxlbWVudDogSFRNTEVsZW1lbnQgfCBSZWFjdC5SZWFjdE5vZGUgfCBhbnlcbn1cblxuaW50ZXJmYWNlIElTY3JvbGxPYnNlcnZlciB7XG4gIC8qKlxuICAgKiBicmVha3BvaW50c1xuICAgKiBAZGVzYyBVc2UgdG8gc2V0IHJlc3BvbnNpdmVuZXNzIG9mIHRoZSBTY3JvbGxPYnNlcnZlciwgbW9iaWxlLWZpcnN0XG4gICAqIEB0eXBlIG9iamVjdFxuICAgKiBAZXhhbXBsZVxuICAgKiBicmVha3BvaW50czogeyAwOiBmYWxzZSwgNzY4OiB0cnVlIH1cbiAgICovXG4gIGJyZWFrcG9pbnRzPzogb2JqZWN0XG5cbiAgLyoqXG4gICAqIGNhbGxiYWNrXG4gICAqIEBkZXNjIFVzZSB0byBzZXQgYSBjYWxsYmFjayB3aGVuIHRoZSBzY2VuZSBpcyBhY3RpdmUuXG4gICAqIEB0eXBlIG9iamVjdFxuICAgKiBAZXhhbXBsZVxuICAgKiBjYWxsYmFjazogeyBhY3RpdmU6ICgpID0+ICgpLCBub3RBY3RpdmU6ICgpID0+ICgpIH1cbiAgICovXG4gIGNhbGxiYWNrPzogb2JqZWN0XG5cbiAgLyoqXG4gICAqIGRlc3Ryb3lJbW1lZGlhdGVseVxuICAgKiBAZGVzYyBVc2UgdG8gZGVzdHJveSB0aGUgc2NlbmUgaW1tZWRpYXRlbHkgYWZ0ZXIgZmlyaW5nIG9uY2UgdGhlIGVsZW1lbnQgaXMgdmlzaWJsZS5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZXhhbXBsZVxuICAgKiBkZXN0cm95SW1tZWRpYXRlbHk6IHRydWVcbiAgICovXG4gIGRlc3Ryb3lJbW1lZGlhdGVseT86IGJvb2xlYW5cblxuICAvKipcbiAgICogZ3NhcFxuICAgKiBAZGVzYyBVc2UgdG8gc2V0IG9wdGlvbnMgZm9yIHRoZSBnc2FwIGFuaW1hdGlvbiBvZiB0aGUgU2Nyb2xsT2JzZXJ2ZXIuXG4gICAqIEB0eXBlIG9iamVjdFxuICAgKiBAZXhhbXBsZVxuICAgKiBnc2FwOiB7IHRpbWVsaW5lOiBteVRpbWVsaW5lLCB5b3lvOiB0cnVlLCByZXZlcnNlU3BlZWQ6IDIgfVxuICAgKi9cbiAgZ3NhcD86IElTY3JvbGxPYnNlcnZlckdzYXBcblxuICAvKipcbiAgICogb2JzZXJ2ZXJcbiAgICogQGRlc2MgRXh0cmEgb3B0aW9ucyB0byBwYXNzIHRoZSBJbnRlcnNlY3Rpb25PYnNlcnZlciwgbGlrZSByb290LCByb290TWFyZ2luLCB0aHJlc2hvbGQgKHRvIG92ZXJyaWRlIHRoZSB0aHJlc2hvbGRzIG9wdGlvbilcbiAgICogQHR5cGUgb2JqZWN0XG4gICAqIEBleGFtcGxlXG4gICAqIG9ic2VydmVyOiB7IHJvb3RNYXJnaW46ICctNTAlIDAlJyB9XG4gICAqL1xuICBvYnNlcnZlcj86IG9iamVjdFxuXG4gIC8qKlxuICAgKiBvZmZzZXRcbiAgICogQGRlc2MgQ2hhbmdlIHRoZSBvZmZzZXQuIFRoaXMgdXNlcyByb290TWFyZ2luIHRodXMgb25seSB3b3JrcyBhcyBhIG5lZ2F0aXZlIG9mZnNldC5cbiAgICogQHR5cGUgbnVtYmVyIHwgc3RyaW5nXG4gICAqIEBkZWZhdWx0dmFsdWUgJzAlIDAlJ1xuICAgKiBAZXhhbXBsZVxuICAgKiBvZmZzZXQ6IDUwMCAvLyB0aGlzIHdpbGwgYmUgcm9vdE1hcmdpbjogJy01MDBweCAwJSdcbiAgICovXG4gIG9mZnNldD86IG51bWJlciB8IHN0cmluZ1xuXG4gIC8qKlxuICAgKiB0aHJlc2hvbGRzXG4gICAqIEBkZXNjIFNldCB0aGUgbnVtYmVyIG9mIHRocmVzaG9sZHMgeW91IHdhbnQuXG4gICAqIEByZXR1cm5zIEFuIEFycmF5IG9mIG51bWJlciBmcm9tIDAgdG8gMS4gQWRkIDEgdG8geW91ciBudW1iZXIgdG8gYWNjb3VudCBmb3IgMC5cbiAgICogQHR5cGUgbnVtYmVyXG4gICAqIEBleGFtcGxlXG4gICAqIHRocmVzaG9sZHM6IDEgPSBbMCwgMV1cbiAgICogdGhyZXNob2xkczogMiA9IFswLCAwLjUsIDFdXG4gICAqIHRocmVzaG9sZHM6IDMgPSBbMCwgMC4zMywgMC42NywgMV1cbiAgICogdGhyZXNob2xkczogMTAwID0gWzAsIDAuMSwgMC4yLCAuLi4gMC45OCwgMC45OSwgMV1cbiAgICovXG4gIHRocmVzaG9sZHM/OiBudW1iZXJcblxuICAvKipcbiAgICogdG9nZ2xlXG4gICAqIEBkZXNjIFVzZSB0byBzZXQgdGhlIG9wdGlvbnMgZm9yIHRoZSB0b2dnbGluZyBvZiBhIGNsYXNzTmFtZVxuICAgKiBAdHlwZSBvYmplY3RcbiAgICogQGV4YW1wbGVcbiAgICogdG9nZ2xlOiB7IGVsZW1lbnQ6IGNvbnRhaW5lclJlZi5jdXJyZW50LCBjbGFzc05hbWU6ICdsZXRzLWRvLXRoaXMnIH1cbiAgICovXG4gIHRvZ2dsZT86IElTY3JvbGxPYnNlcnZlclRvZ2dsZVxuXG4gIC8qKlxuICAgKiB0cmlnZ2VyRWxlbWVudFxuICAgKiBAZGVzYyBTZXQgdGhlIGVsZW1lbnQgeW91IHdpc2ggdG8gdHJpZ2dlciBldmVudHMgYmFzZWQgdXBvbiwgdGhlIG9ic2VydmVkIGVsZW1lbnQuXG4gICAqIEB0eXBlIEhUTUxFbGVtZW50IHwgUmVhY3QuUmVhY3ROb2RlIHwgYW55XG4gICAqIEBleGFtcGxlXG4gICAqIHRyaWdnZXJFbGVtZW50OiB0cmlnZ2VyUmVmLmN1cnJlbnRcbiAgICovXG4gIHRyaWdnZXJFbGVtZW50OiBIVE1MRWxlbWVudCB8IFJlYWN0LlJlYWN0Tm9kZSB8IGFueVxuXG4gIC8qKlxuICAgKiB1c2VEdXJhdGlvblxuICAgKiBAZGVzYyBVc2UgdGhlIHBlcmNlbnRhZ2Ugb2YgZWxlbWVudCB2aXNpYmlsaXR5IHRvIHNjcnViIHRoZSBnc2FwIHRpbWVsaW5lLlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBleGFtcGxlXG4gICAqIHVzZUR1cmF0aW9uOiB0cnVlXG4gICAqL1xuICB1c2VEdXJhdGlvbj86IGJvb2xlYW5cblxuICAvKipcbiAgICogdmlkZW9cbiAgICogQGRlc2MgVXNlIHRvIHNldCB0aGUgb3B0aW9ucyBmb3IgcGxheWluZyBhbmQgcGF1c2luZyBvZiB0aGUgdmlkZW8uXG4gICAqIEB0eXBlIG9iamVjdFxuICAgKiBAZXhhbXBsZVxuICAgKiB2aWRlbzogeyBlbGVtZW50OiB2aWRlb1JlZi5jdXJyZW50IH1cbiAgICovXG4gIHZpZGVvPzogSVNjcm9sbE9ic2VydmVyVmlkZW9cblxuICAvKipcbiAgICogd2hlblZpc2libGVcbiAgICogQGRlc2MgU2V0IHdoZW4gdGhlIHNjZW5lIHNob3VsZCBiZSBhY3RpdmUgYmFzZWQgb24gdGhlIHBlcmNlbnRhZ2Ugb2YgdGhlIGVsZW1lbnQgdmlzaWJsZVxuICAgKiBAdHlwZSBudW1iZXJcbiAgICogQGV4YW1wbGVcbiAgICogd2hlblZpc2libGU6ICc1MCUnXG4gICAqL1xuICB3aGVuVmlzaWJsZT86IHN0cmluZ1xufVxuXG5jb25zdCBTY3JvbGxPYnNlcnZlciA9IGZ1bmN0aW9uKFxuICB0aGlzOiBhbnksXG4gIHtcbiAgICBicmVha3BvaW50cyxcbiAgICBjYWxsYmFjayxcbiAgICBkZXN0cm95SW1tZWRpYXRlbHksXG4gICAgZ3NhcCxcbiAgICBvYnNlcnZlcixcbiAgICBvZmZzZXQsXG4gICAgd2hlblZpc2libGUsXG4gICAgdGhyZXNob2xkcyxcbiAgICB0b2dnbGUsXG4gICAgdHJpZ2dlckVsZW1lbnQsXG4gICAgdXNlRHVyYXRpb24sXG4gICAgdmlkZW8sXG4gIH06IElTY3JvbGxPYnNlcnZlcixcbikge1xuICBpZiAoIXRyaWdnZXJFbGVtZW50KSB7XG4gICAgZXJyb3JMb2coXG4gICAgICBuYW1lU3BhY2UsXG4gICAgICAnQmUgc3VyZSB0byBzZXQgYSBjb25zdCB0cmlnZ2VyRWxlbWVudCA9IChyZWFjdFJlZi5jdXJyZW50IG9yIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IpIGluIHRoZSBuZXcgU2Nyb2xsU2NlbmUoeyB0cmlnZ2VyRWxlbWVudDogdHJpZ2dlckVsZW1lbnQgfSknLFxuICAgIClcbiAgfVxuXG4gIGNvbnN0ICR0aGlzID0gdGhpc1xuICBsZXQgc2V0VG9nZ2xlXG4gIGxldCBzZXRHc2FwXG4gIGxldCBzZXRWaWRlb1xuICBsZXQgc2V0Q2FsbGJhY2tcbiAgbGV0IHJhdGlvXG4gIGxldCBzZXRSb290TWFyZ2luID0gJzAlIDAlJ1xuICBsZXQgc2V0U3RhdGUgPSBuZXcgc3RhdGUoZmFsc2UsIGZhbHNlKVxuXG4gIGlmICh0eXBlb2Ygb2Zmc2V0ID09PSAnbnVtYmVyJykge1xuICAgIC8vIHByb3RlY3QgYWdhaW5zdCBwb3NpdGl2ZSBweCB2YWx1ZXMsIGZvciBub3dcbiAgICBzZXRSb290TWFyZ2luID0gYC0ke01hdGguYWJzKG9mZnNldCl9cHggMCVgXG4gIH0gZWxzZSBpZiAodHlwZW9mIG9mZnNldCA9PT0gJ3N0cmluZycpIHtcbiAgICAvLyBwcm90ZWN0IGFnYWluc3QgcG9zaXRpdmUgcGVyY2VudGFnZSB2YWx1ZXMsIGZvciBub3dcbiAgICBzZXRSb290TWFyZ2luID0gYC0ke01hdGguYWJzKHBhcnNlRmxvYXQob2Zmc2V0KSl9JSAwJWBcbiAgfVxuXG4gIGlmICh0b2dnbGUgJiYgaXNPYmplY3QodG9nZ2xlKSkge1xuICAgIHNldFRvZ2dsZSA9IG5ldyBzZXRDbGFzc05hbWUodG9nZ2xlKVxuICB9XG5cbiAgaWYgKGdzYXAgJiYgaXNPYmplY3QoZ3NhcCkpIHtcbiAgICBzZXRHc2FwID0gbmV3IHNldFR3ZWVuKGdzYXApXG4gIH1cblxuICBpZiAodmlkZW8gJiYgaXNPYmplY3QodmlkZW8pKSB7XG4gICAgc2V0VmlkZW8gPSBuZXcgc2V0UGxheWVyKHZpZGVvKVxuICB9XG5cbiAgaWYgKGNhbGxiYWNrKSB7XG4gICAgc2V0Q2FsbGJhY2sgPSBuZXcgc2V0RnVuY3Rpb24oY2FsbGJhY2spXG4gIH1cblxuICBjb25zdCBvYnNlcnZlckNhbGxiYWNrID0gZnVuY3Rpb24oZW50cmllcykge1xuICAgIGVudHJpZXMuZm9yRWFjaCgoeyBpc0ludGVyc2VjdGluZywgaW50ZXJzZWN0aW9uUmF0aW8gfSkgPT4ge1xuICAgICAgLypcbiAgICAgICAqIFRvIGhlbHAgdGhlIHdvbmtpbmVzcyBvZiBJbnRlcnNlY3Rpb25PYnNlcnZlciwgaXNJbnRlcnNlY3RpbmcgZmlyaW5nIHRydWUgd2hlbiBpdCdzIHJlYWxseSBmYWxzZVxuICAgICAgICovXG4gICAgICBpZiAocmF0aW8pIHtcbiAgICAgICAgc2V0U3RhdGUudmlzaWJsZSA9IGludGVyc2VjdGlvblJhdGlvID49IHJhdGlvXG4gICAgICB9IGVsc2UgaWYgKGlzSW50ZXJzZWN0aW5nICYmICFzZXRTdGF0ZS52aXNpYmxlKSB7XG4gICAgICAgIC8qXG4gICAgICAgICAqIFRvIGhlbHAgd2l0aCBzZXRDYWxsYmFjayBhbmQgaWdub3JpbmcgcmVmaXJpbmcgZXh0cmEgZnVuY3Rpb25cbiAgICAgICAgICogY2FsbHMgZHVlIHRvIGludGVyc2VjdGlvblJhdGlvXG4gICAgICAgICAqL1xuICAgICAgICBzZXRTdGF0ZS52aXNpYmxlID0gdHJ1ZVxuICAgICAgfSBlbHNlIGlmICghaXNJbnRlcnNlY3RpbmcgJiYgc2V0U3RhdGUudmlzaWJsZSkge1xuICAgICAgICBzZXRTdGF0ZS52aXNpYmxlID0gZmFsc2VcbiAgICAgIH1cblxuICAgICAgc2V0VG9nZ2xlICYmIHNldFRvZ2dsZS51cGRhdGUoc2V0U3RhdGUpXG4gICAgICBzZXRHc2FwICYmICghdXNlRHVyYXRpb24gPyBzZXRHc2FwLnVwZGF0ZShzZXRTdGF0ZSkgOiBzZXRHc2FwLnNjcnViKGludGVyc2VjdGlvblJhdGlvKSlcbiAgICAgIHNldFZpZGVvICYmIHNldFZpZGVvLnVwZGF0ZShzZXRTdGF0ZSlcbiAgICAgIHNldENhbGxiYWNrICYmIHNldENhbGxiYWNrLnVwZGF0ZShzZXRTdGF0ZSlcblxuICAgICAgaWYgKGlzSW50ZXJzZWN0aW5nICYmIGRlc3Ryb3lJbW1lZGlhdGVseSkge1xuICAgICAgICAvKlxuICAgICAgICAgKiBkZXN0cm95IHRoZSBzY2VuZSBhZnRlciB1c2VkIG9uY2VcbiAgICAgICAgICovXG4gICAgICAgICR0aGlzLmRlc3Ryb3koKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBjb25zdCBnZXRQZXJjZW50YWdlID0gdmFsdWUgPT4ge1xuICAgIGlmICghaXNTdHJpbmcod2hlblZpc2libGUpICYmICFzdHJpbmdDb250YWlucyh3aGVuVmlzaWJsZSwgJyUnKSkge1xuICAgICAgZXJyb3JMb2cobmFtZVNwYWNlLCAnQmUgc3VyZSB0byBzZXQgYSBwZXJjZW50YWdlIGFzIGEgc3RyaW5nLiB7IHdoZW5WaXNpYmxlOiBcIjUwJVwiIH0nKVxuICAgIH1cblxuICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlSW50KHZhbHVlLnJlcGxhY2UoJyUnLCAnJykpIC8gMTAwXG5cbiAgICByYXRpbyA9IHBhcnNlZFxuXG4gICAgcmV0dXJuIHBhcnNlZFxuICB9XG5cbiAgY29uc3QgZ2V0VGhyZXNvbGRzID0gKCkgPT4ge1xuICAgIGNvbnN0IGRlZmF1bHRzID0ge1xuICAgICAgb25lOiBbMCwgMV0sXG4gICAgICBnc2FwOiBjcmVhdGVBcnJheSgxOTkpLFxuICAgIH1cblxuICAgIGxldCByZXR1cm5lZFRocmVzaG9sZHM6IGFueSA9IGRlZmF1bHRzLm9uZVxuXG4gICAgaWYgKHdoZW5WaXNpYmxlKSB7XG4gICAgICByZXR1cm5lZFRocmVzaG9sZHMgPSBnZXRQZXJjZW50YWdlKHdoZW5WaXNpYmxlKVxuICAgIH1cblxuICAgIGlmICh1c2VEdXJhdGlvbikge1xuICAgICAgcmV0dXJuZWRUaHJlc2hvbGRzID0gZGVmYXVsdHMuZ3NhcFxuICAgIH1cblxuICAgIGlmICh0aHJlc2hvbGRzKSB7XG4gICAgICByZXR1cm5lZFRocmVzaG9sZHMgPSBjcmVhdGVBcnJheSh0aHJlc2hvbGRzKVxuICAgIH1cblxuICAgIHJldHVybiByZXR1cm5lZFRocmVzaG9sZHNcbiAgfVxuXG4gIGNvbnN0IE9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKG9ic2VydmVyQ2FsbGJhY2ssIHtcbiAgICB0aHJlc2hvbGQ6IGdldFRocmVzb2xkcygpLFxuICAgIHJvb3RNYXJnaW46IHNldFJvb3RNYXJnaW4sXG4gICAgLi4ub2JzZXJ2ZXIsXG4gIH0pXG5cbiAgdGhpcy5pbml0ID0gZnVuY3Rpb24oKSB7XG4gICAgT2JzZXJ2ZXIub2JzZXJ2ZSh0cmlnZ2VyRWxlbWVudClcbiAgfVxuXG4gIHRoaXMuZGVzdHJveSA9IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0cmlnZ2VyRWxlbWVudCAmJiBPYnNlcnZlcikge1xuICAgICAgaWYgKHNldFRvZ2dsZSkge1xuICAgICAgICBzZXRUb2dnbGUucmVtb3ZlKClcbiAgICAgIH1cblxuICAgICAgaWYgKHNldEdzYXApIHtcbiAgICAgICAgc2V0R3NhcC5raWxsKClcbiAgICAgIH1cblxuICAgICAgaWYgKHNldFZpZGVvKSB7XG4gICAgICAgIHNldFZpZGVvLmtpbGwoKVxuICAgICAgfVxuXG4gICAgICBPYnNlcnZlci51bm9ic2VydmUodHJpZ2dlckVsZW1lbnQpXG4gICAgfVxuICB9XG5cbiAgc2Nyb2xsQW5pbWF0aW9uSW5pdChicmVha3BvaW50cywgdGhpcy5pbml0LCB0aGlzLmRlc3Ryb3kpXG59XG5cbmV4cG9ydCB7IFNjcm9sbE9ic2VydmVyIH1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TY3JvbGxPYnNlcnZlci50cyJdLCJuYW1lcyI6WyJuYW1lU3BhY2UiLCJzdGF0ZSIsInZpc2libGUiLCJhbHJlYWR5RmlyZWQiLCJzZXRDbGFzc05hbWUiLCJvcHRpb25zIiwidG9nZ2xlIiwiZWxlbWVudCIsImNsYXNzTmFtZSIsImFkZCIsImNsYXNzTGlzdCIsImNvbnRhaW5zIiwicmVtb3ZlIiwidXBkYXRlIiwic2V0U3RhdGUiLCJzZXRUd2VlbiIsImdzYXAiLCJ0aW1lbGluZSIsInlveW8iLCJzcGVlZCIsInJldmVyc2VTcGVlZCIsImRlbGF5IiwidGwiLCJyZXBlYXQiLCJyZXBlYXREZWxheSIsInBsYXkiLCJ0aW1lU2NhbGUiLCJwYXVzZSIsInJldmVyc2UiLCJraWxsIiwic2NydWIiLCJpbnRlcnNlY3Rpb25SYXRpbyIsInByb2dyZXNzIiwic2V0UGxheWVyIiwidmlkZW8iLCJzZXRGdW5jdGlvbiIsImNhbGxiYWNrIiwiYWN0aXZlIiwibm90QWN0aXZlIiwiU2Nyb2xsT2JzZXJ2ZXIiLCJicmVha3BvaW50cyIsImRlc3Ryb3lJbW1lZGlhdGVseSIsIm9ic2VydmVyIiwib2Zmc2V0Iiwid2hlblZpc2libGUiLCJ0aHJlc2hvbGRzIiwidHJpZ2dlckVsZW1lbnQiLCJ1c2VEdXJhdGlvbiIsIiR0aGlzIiwic2V0VG9nZ2xlIiwic2V0R3NhcCIsInNldFZpZGVvIiwic2V0Q2FsbGJhY2siLCJyYXRpbyIsInNldFJvb3RNYXJnaW4iLCJNYXRoIiwiYWJzIiwicGFyc2VGbG9hdCIsIm9ic2VydmVyQ2FsbGJhY2siLCJlbnRyaWVzIiwiZm9yRWFjaCIsImlzSW50ZXJzZWN0aW5nIiwiZGVzdHJveSIsImdldFBlcmNlbnRhZ2UiLCJ2YWx1ZSIsInBhcnNlZCIsInBhcnNlSW50IiwicmVwbGFjZSIsImdldFRocmVzb2xkcyIsImRlZmF1bHRzIiwib25lIiwicmV0dXJuZWRUaHJlc2hvbGRzIiwiT2JzZXJ2ZXIiLCJJbnRlcnNlY3Rpb25P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LGNBQWpCO0FBQ0QsR0FGRDs7QUFJQSxPQUFLZ0IsT0FBTCxHQUFlLFlBQVc7QUFDeEIsUUFBSWhCLGNBQWMsSUFBSTBCLFFBQXRCLEVBQWdDO0FBQzlCLFVBQUl2QixTQUFKLEVBQWU7QUFDYkEsUUFBQUEsU0FBUyxDQUFDckMsTUFBVjtBQUNEOztBQUVELFVBQUlzQyxPQUFKLEVBQWE7QUFDWEEsUUFBQUEsT0FBTyxDQUFDckIsSUFBUjtBQUNEOztBQUVELFVBQUlzQixRQUFKLEVBQWM7QUFDWkEsUUFBQUEsUUFBUSxDQUFDdEIsSUFBVDtBQUNEOztBQUVEMkMsTUFBQUEsUUFBUSxDQUFDTSxTQUFULENBQW1CaEMsY0FBbkI7QUFDRDtBQUNGLEdBaEJEOztBQWtCQSxvQ0FBb0JOLFdBQXBCLEVBQWlDLEtBQUtvQyxJQUF0QyxFQUE0QyxLQUFLZCxPQUFqRDtBQUNELENBeEpEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXJyb3JMb2csIGlzRnVuYywgaXNPYmplY3QsIHNjcm9sbEFuaW1hdGlvbkluaXQsIGNyZWF0ZUFycmF5LCBpc1N0cmluZywgc3RyaW5nQ29udGFpbnMgfSBmcm9tICcuL2hlbHBlcnMnXG5cbmNvbnN0IG5hbWVTcGFjZSA9ICdTY3JvbGxPYnNlcnZlcidcblxuLy8gQHRzLWlnbm9yZVxuY29uc3Qgc3RhdGUgPSBmdW5jdGlvbih2aXNpYmxlLCBhbHJlYWR5RmlyZWQpIHtcbiAgdGhpcy52aXNpYmxlID0gZmFsc2VcbiAgdGhpcy5hbHJlYWR5RmlyZWQgPSBmYWxzZVxufVxuXG5jb25zdCBzZXRDbGFzc05hbWUgPSBmdW5jdGlvbih0aGlzOiBhbnksIG9wdGlvbnMpIHtcbiAgY29uc3QgdG9nZ2xlID0ge1xuICAgIGVsZW1lbnQ6IG51bGwsXG4gICAgY2xhc3NOYW1lOiBudWxsLFxuICAgIC4uLm9wdGlvbnMsXG4gIH1cblxuICBpZiAoIXRvZ2dsZS5lbGVtZW50KSB7XG4gICAgZXJyb3JMb2coXG4gICAgICBuYW1lU3BhY2UsXG4gICAgICBgQmUgc3VyZSB0byBzZXQgYSBjb25zdCB0b2dnbGVFbGVtZW50ID0gKHJlYWN0UmVmLmN1cnJlbnQgb3IgZG9jdW1lbnQucXVlcnlTZWxlY3RvcikgaW4gdGhlIG5ldyAke25hbWVTcGFjZX0oeyB0b2dnbGU6IHsgZWxlbWVudDogdG9nZ2xlRWxlbWVudCB9IH0pYCxcbiAgICApXG4gIH1cblxuICBpZiAoIXRvZ2dsZS5jbGFzc05hbWUpIHtcbiAgICBlcnJvckxvZyhcbiAgICAgIG5hbWVTcGFjZSxcbiAgICAgIGBCZSBzdXJlIHRvIHNldCB0aGUgY2xhc3NOYW1lIHlvdSB3YW50IHRvIHRvZ2dsZSBpbiB0aGUgbmV3ICR7bmFtZVNwYWNlfSh7IHRvZ2dsZTogeyBjbGFzc05hbWU6IFwibXktY2xhc3NcIiB9IH0pYCxcbiAgICApXG4gIH1cblxuICB0aGlzLmFkZCA9IGZ1bmN0aW9uKCkge1xuICAgIC8qIGFkZCBjbGFzc05hbWUgaWYgaXQncyBub3QgYWxyZWFkeSB0aGVyZSAqL1xuICAgICF0b2dnbGUuZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnModG9nZ2xlLmNsYXNzTmFtZSkgJiYgdG9nZ2xlLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCh0b2dnbGUuY2xhc3NOYW1lKVxuICB9XG5cbiAgdGhpcy5yZW1vdmUgPSBmdW5jdGlvbigpIHtcbiAgICAvKiByZW1vdmUgY2xhc3NOYW1lIGlmIGl0J3MgdGhlcmUgKi9cbiAgICB0b2dnbGUuZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnModG9nZ2xlLmNsYXNzTmFtZSkgJiYgdG9nZ2xlLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSh0b2dnbGUuY2xhc3NOYW1lKVxuICB9XG5cbiAgdGhpcy51cGRhdGUgPSBmdW5jdGlvbihzZXRTdGF0ZSkge1xuICAgIGlmICghc2V0U3RhdGUuYWxyZWFkeUZpcmVkICYmIHNldFN0YXRlLnZpc2libGUpIHtcbiAgICAgIHRoaXMuYWRkKClcbiAgICAgIHNldFN0YXRlLmFscmVhZHlGaXJlZCA9IHRydWVcbiAgICB9XG5cbiAgICBpZiAoc2V0U3RhdGUuYWxyZWFkeUZpcmVkICYmICFzZXRTdGF0ZS52aXNpYmxlKSB7XG4gICAgICB0aGlzLnJlbW92ZSgpXG4gICAgICBzZXRTdGF0ZS5hbHJlYWR5RmlyZWQgPSBmYWxzZVxuICAgIH1cbiAgfVxufVxuXG5jb25zdCBzZXRUd2VlbiA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgb3B0aW9ucykge1xuICBjb25zdCBnc2FwID0ge1xuICAgIHRpbWVsaW5lOiBudWxsLFxuICAgIHlveW86IGZhbHNlLFxuICAgIHNwZWVkOiAxLFxuICAgIHJldmVyc2VTcGVlZDogMSxcbiAgICBkZWxheTogMixcbiAgICAuLi5vcHRpb25zLFxuICB9XG5cbiAgaWYgKCFnc2FwLnRpbWVsaW5lKSB7XG4gICAgZXJyb3JMb2coXG4gICAgICBuYW1lU3BhY2UsXG4gICAgICBgQmUgc3VyZSB0byBzZXQgYSBjb25zdCB0bCA9IGdzYXAudGltZWxpbmUoeyBwYXVzZWQ6IHRydWUgfSkgaW4gdGhlIG5ldyAke25hbWVTcGFjZX0oeyBnc2FwOiB7IHRpbWVsaW5lOiB0bCB9IH0pYCxcbiAgICApXG4gIH1cblxuICBjb25zdCB0bCA9IGdzYXAudGltZWxpbmVcblxuICBpZiAoZ3NhcC55b3lvKSB7XG4gICAgdGwucmVwZWF0KC0xKVxuICAgICAgLnlveW8oZ3NhcC55b3lvKVxuICAgICAgLnJlcGVhdERlbGF5KGdzYXAuZGVsYXkpXG4gIH1cblxuICB0aGlzLnBsYXkgPSBmdW5jdGlvbigpIHtcbiAgICB0bC50aW1lU2NhbGUoZ3NhcC5zcGVlZCkucGxheSgpXG4gIH1cblxuICB0aGlzLnBhdXNlID0gZnVuY3Rpb24oKSB7XG4gICAgdGwucGF1c2UoKVxuICB9XG5cbiAgdGhpcy5yZXZlcnNlID0gZnVuY3Rpb24oKSB7XG4gICAgdGwudGltZVNjYWxlKGdzYXAucmV2ZXJzZVNwZWVkKS5yZXZlcnNlKClcbiAgfVxuXG4gIHRoaXMua2lsbCA9IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0bCkge1xuICAgICAgdGwucGF1c2UoMClcbiAgICAgIHRsLmtpbGwoKVxuICAgIH1cbiAgfVxuXG4gIHRoaXMudXBkYXRlID0gZnVuY3Rpb24oc2V0U3RhdGUpIHtcbiAgICBpZiAoIXNldFN0YXRlLmFscmVhZHlGaXJlZCAmJiBzZXRTdGF0ZS52aXNpYmxlKSB7XG4gICAgICB0aGlzLnBsYXkoKVxuICAgICAgc2V0U3RhdGUuYWxyZWFkeUZpcmVkID0gdHJ1ZVxuICAgIH1cblxuICAgIGlmIChzZXRTdGF0ZS5hbHJlYWR5RmlyZWQgJiYgIXNldFN0YXRlLnZpc2libGUpIHtcbiAgICAgIGdzYXAueW95byA/IHRoaXMucGF1c2UoKSA6IHRoaXMucmV2ZXJzZSgpXG4gICAgICBzZXRTdGF0ZS5hbHJlYWR5RmlyZWQgPSBmYWxzZVxuICAgIH1cbiAgfVxuXG4gIHRoaXMuc2NydWIgPSBmdW5jdGlvbihpbnRlcnNlY3Rpb25SYXRpbykge1xuICAgIHRsLnByb2dyZXNzKGludGVyc2VjdGlvblJhdGlvKVxuICB9XG59XG5cbmNvbnN0IHNldFBsYXllciA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgb3B0aW9ucykge1xuICBjb25zdCB2aWRlbyA9IHtcbiAgICBlbGVtZW50OiBudWxsLFxuICAgIC4uLm9wdGlvbnMsXG4gIH1cblxuICBpZiAoIXZpZGVvLmVsZW1lbnQpIHtcbiAgICBlcnJvckxvZyhcbiAgICAgIG5hbWVTcGFjZSxcbiAgICAgIGBCZSBzdXJlIHRvIHNldCBhIHZpZGVvIGVsZW1lbnQgaW4gdGhlIG5ldyAke25hbWVTcGFjZX0oeyB2aWRlbzogeyBlbGVtZW50OiB2aWRlb1JlZi5jdXJyZW50IH0gfSlgLFxuICAgIClcbiAgfVxuXG4gIHRoaXMucGxheSA9IGZ1bmN0aW9uKCkge1xuICAgIHZpZGVvLmVsZW1lbnQucGxheSgpXG4gIH1cblxuICB0aGlzLnBhdXNlID0gZnVuY3Rpb24oKSB7XG4gICAgdmlkZW8uZWxlbWVudC5wYXVzZSgpXG4gIH1cblxuICB0aGlzLmtpbGwgPSBmdW5jdGlvbigpIHtcbiAgICB2aWRlby5lbGVtZW50LnBhdXNlKClcbiAgfVxuXG4gIHRoaXMudXBkYXRlID0gZnVuY3Rpb24oc2V0U3RhdGUpIHtcbiAgICBpZiAoIXNldFN0YXRlLmFscmVhZHlGaXJlZCAmJiBzZXRTdGF0ZS52aXNpYmxlKSB7XG4gICAgICB0aGlzLnBsYXkoKVxuICAgICAgc2V0U3RhdGUuYWxyZWFkeUZpcmVkID0gdHJ1ZVxuICAgIH1cblxuICAgIGlmIChzZXRTdGF0ZS5hbHJlYWR5RmlyZWQgJiYgIXNldFN0YXRlLnZpc2libGUpIHtcbiAgICAgIHRoaXMucGF1c2UoKVxuICAgICAgc2V0U3RhdGUuYWxyZWFkeUZpcmVkID0gZmFsc2VcbiAgICB9XG4gIH1cbn1cblxuY29uc3Qgc2V0RnVuY3Rpb246IGFueSA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgb3B0aW9ucykge1xuICBjb25zdCBjYWxsYmFjayA9IHtcbiAgICBhY3RpdmU6IG51bGwsXG4gICAgbm90QWN0aXZlOiBudWxsLFxuICAgIC4uLm9wdGlvbnMsXG4gIH1cblxuICBpZiAoIWNhbGxiYWNrLmFjdGl2ZSAmJiAhY2FsbGJhY2subm90QWN0aXZlKSB7XG4gICAgZXJyb3JMb2coXG4gICAgICBuYW1lU3BhY2UsXG4gICAgICBgQmUgc3VyZSB0byBzZXQgYSBjYWxsYmFjayBhY3RpdmUgb3Igbm90QWN0aXZlIGZ1bmN0aW9uIGluIHRoZSBuZXcgJHtuYW1lU3BhY2V9KHsgY2FsbGJhY2s6IHsgYWN0aXZlOiAoKSA9PiAoKSB9IH0pYCxcbiAgICApXG4gIH1cblxuICBpZiAoKGNhbGxiYWNrLmFjdGl2ZSAmJiAhaXNGdW5jKGNhbGxiYWNrLmFjdGl2ZSkpIHx8IChjYWxsYmFjay5ub3RBY3RpdmUgJiYgIWlzRnVuYyhjYWxsYmFjay5ub3RBY3RpdmUpKSkge1xuICAgIGVycm9yTG9nKG5hbWVTcGFjZSwgYEJlIHN1cmUgdG8gc2V0IHRoZSBjYWxsYmFjayBhcyBhIGZ1bmN0aW9uIGApXG4gIH1cblxuICB0aGlzLnVwZGF0ZSA9IGZ1bmN0aW9uKHNldFN0YXRlKSB7XG4gICAgaWYgKCFzZXRTdGF0ZS5hbHJlYWR5RmlyZWQgJiYgc2V0U3RhdGUudmlzaWJsZSAmJiBjYWxsYmFjay5hY3RpdmUpIHtcbiAgICAgIGNhbGxiYWNrLmFjdGl2ZSgpXG4gICAgICBzZXRTdGF0ZS5hbHJlYWR5RmlyZWQgPSB0cnVlXG4gICAgfVxuXG4gICAgaWYgKHNldFN0YXRlLmFscmVhZHlGaXJlZCAmJiAhc2V0U3RhdGUudmlzaWJsZSAmJiBjYWxsYmFjay5hY3RpdmUpIHtcbiAgICAgIGNhbGxiYWNrLm5vdEFjdGl2ZSgpXG4gICAgICBzZXRTdGF0ZS5hbHJlYWR5RmlyZWQgPSBmYWxzZVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTY3JvbGxPYnNlcnZlckdzYXAge1xuICAvKipcbiAgICogdGltZWxpbmVcbiAgICogQGRlc2MgSW5zZXJ0IHlvdXIgZ3NhcC50aW1lbGluZSBvYmplY3QgdmFyXG4gICAqIEB0eXBlIG9iamVjdFxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBteVRpbWVsaW5lID0gZ3NhcC50aW1lbGluZSgpXG4gICAqIGdzYXA6IHsgdGltZWxpbmU6IG15VGltZWxpbmUgfVxuICAgKi9cbiAgdGltZWxpbmU6IGFueVxuXG4gIC8qKlxuICAgKiB5b3lvXG4gICAqIEBkZXNjIERvIHlvdSB3YW50IGdzYXAgYW5pbWF0aW9uIHRvIGxvb3AgYmFjayBhbmQgZm9ydGg/XG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICogQGV4YW1wbGVcbiAgICogZ3NhcDogeyB5b3lvOiB0cnVlIH1cbiAgICovXG4gIHlveW8/OiBib29sZWFuXG5cbiAgLyoqXG4gICAqIHNwZWVkXG4gICAqIEBkZXNjIFRoZSBzcGVlZCBhdCB3aGljaCB0aGUgZ3NhcCBhbmltYXRpb24gd2lsbCBwbGF5IHJlbGF0aXZlIHRvIGl0J3MgY3VycmVudCBzcGVlZC5cbiAgICogQHR5cGUgbnVtYmVyXG4gICAqIEBkZWZhdWx0IDFcbiAgICogQGV4YW1wbGVcbiAgICogZ3NhcDogeyBzcGVlZDogMiB9IC8vID0gdHdpY2UgYXMgZmFzdFxuICAgKi9cbiAgc3BlZWQ/OiBudW1iZXJcblxuICAvKipcbiAgICogc3BlZWRcbiAgICogQGRlc2MgVGhlIHNwZWVkIGF0IHdoaWNoIHRoZSBnc2FwIGFuaW1hdGlvbiB3aWxsIHJldmVyc2UgcmVsYXRpdmUgdG8gaXQncyBjdXJyZW50IHNwZWVkLlxuICAgKiBAdHlwZSBudW1iZXJcbiAgICogQGRlZmF1bHQgNFxuICAgKiBAZXhhbXBsZVxuICAgKiBnc2FwOiB7IHNwZWVkOiA0IH0gLy8gPSA0eCBhcyBmYXN0XG4gICAqL1xuICByZXZlcnNlU3BlZWQ/OiBudW1iZXJcblxuICAvKipcbiAgICogZGVsYXlcbiAgICogQGRlc2MgVGhlIGRlbGF5IChpbiBzZWNvbmRzKSBhdCB3aGljaCB0aGUgZ3NhcCBhbmltYXRpb24gd2FpdCBiZWZvcmUgcmV2ZXJzaW5nLlxuICAgKiBAdHlwZSBudW1iZXJcbiAgICogQGRlZmF1bHQgMlxuICAgKiBAZXhhbXBsZVxuICAgKiBnc2FwOiB7IGRlbGF5OiAzIH0gLy8gPSBXYWl0IDMgc2Vjb25kc1xuICAgKi9cbiAgZGVsYXk/OiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU2Nyb2xsT2JzZXJ2ZXJUb2dnbGUge1xuICAvKipcbiAgICogY2xhc3NOYW1lXG4gICAqIEBkZXNjIFNwZWNpZnkgdGhlIGNsYXNzTmFtZSB5b3Ugd2lzaCB0byB0b2dnbGUuXG4gICAqIEB0eXBlIHN0cmluZ1xuICAgKiBAZXhhbXBsZVxuICAgKiB0b2dnbGU6IHsgY2xhc3NOYW1lOiAndHVybi1tZS1ibHVlLWJhYnknIH1cbiAgICovXG4gIGNsYXNzTmFtZTogc3RyaW5nXG5cbiAgLyoqXG4gICAqIGVsZW1lbnRcbiAgICogQGRlc2MgU3BlY2lmeSB0aGUgZWxlbWVudCB5b3Ugd2lzaCB0byB0b2dnbGUgdGhlIGNsYXNzTmFtZSBvbi5cbiAgICogQHR5cGUgSFRNTEVsZW1lbnQgfCBhbnlcbiAgICogQGV4YW1wbGVcbiAgICogdG9nZ2xlOiB7IGVsZW1lbnQ6IGNvbnRhaW5lclJlZi5jdXJyZW50IH1cbiAgICovXG4gIGVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgYW55XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNjcm9sbE9ic2VydmVyVmlkZW8ge1xuICAvKipcbiAgICogZWxlbWVudFxuICAgKiBAZGVzYyBTcGVjaWZ5IHRoZSB2aWRlbyBlbGVtZW50IHlvdSB3aXNoIHRvIGludGVyYWN0IHdpdGguXG4gICAqIEB0eXBlIEhUTUxFbGVtZW50IHwgYW55XG4gICAqIEBleGFtcGxlXG4gICAqIHZpZGVvOiB7IGVsZW1lbnQ6IHZpZGVvUmVmLmN1cnJlbnQgfVxuICAgKi9cbiAgZWxlbWVudDogSFRNTEVsZW1lbnQgfCBhbnlcbn1cblxuaW50ZXJmYWNlIElTY3JvbGxPYnNlcnZlciB7XG4gIC8qKlxuICAgKiBicmVha3BvaW50c1xuICAgKiBAZGVzYyBVc2UgdG8gc2V0IHJlc3BvbnNpdmVuZXNzIG9mIHRoZSBTY3JvbGxPYnNlcnZlciwgbW9iaWxlLWZpcnN0XG4gICAqIEB0eXBlIG9iamVjdFxuICAgKiBAZXhhbXBsZVxuICAgKiBicmVha3BvaW50czogeyAwOiBmYWxzZSwgNzY4OiB0cnVlIH1cbiAgICovXG4gIGJyZWFrcG9pbnRzPzogb2JqZWN0XG5cbiAgLyoqXG4gICAqIGNhbGxiYWNrXG4gICAqIEBkZXNjIFVzZSB0byBzZXQgYSBjYWxsYmFjayB3aGVuIHRoZSBzY2VuZSBpcyBhY3RpdmUuXG4gICAqIEB0eXBlIG9iamVjdFxuICAgKiBAZXhhbXBsZVxuICAgKiBjYWxsYmFjazogeyBhY3RpdmU6ICgpID0+ICgpLCBub3RBY3RpdmU6ICgpID0+ICgpIH1cbiAgICovXG4gIGNhbGxiYWNrPzogb2JqZWN0XG5cbiAgLyoqXG4gICAqIGRlc3Ryb3lJbW1lZGlhdGVseVxuICAgKiBAZGVzYyBVc2UgdG8gZGVzdHJveSB0aGUgc2NlbmUgaW1tZWRpYXRlbHkgYWZ0ZXIgZmlyaW5nIG9uY2UgdGhlIGVsZW1lbnQgaXMgdmlzaWJsZS5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZXhhbXBsZVxuICAgKiBkZXN0cm95SW1tZWRpYXRlbHk6IHRydWVcbiAgICovXG4gIGRlc3Ryb3lJbW1lZGlhdGVseT86IGJvb2xlYW5cblxuICAvKipcbiAgICogZ3NhcFxuICAgKiBAZGVzYyBVc2UgdG8gc2V0IG9wdGlvbnMgZm9yIHRoZSBnc2FwIGFuaW1hdGlvbiBvZiB0aGUgU2Nyb2xsT2JzZXJ2ZXIuXG4gICAqIEB0eXBlIG9iamVjdFxuICAgKiBAZXhhbXBsZVxuICAgKiBnc2FwOiB7IHRpbWVsaW5lOiBteVRpbWVsaW5lLCB5b3lvOiB0cnVlLCByZXZlcnNlU3BlZWQ6IDIgfVxuICAgKi9cbiAgZ3NhcD86IElTY3JvbGxPYnNlcnZlckdzYXBcblxuICAvKipcbiAgICogb2JzZXJ2ZXJcbiAgICogQGRlc2MgRXh0cmEgb3B0aW9ucyB0byBwYXNzIHRoZSBJbnRlcnNlY3Rpb25PYnNlcnZlciwgbGlrZSByb290LCByb290TWFyZ2luLCB0aHJlc2hvbGQgKHRvIG92ZXJyaWRlIHRoZSB0aHJlc2hvbGRzIG9wdGlvbilcbiAgICogQHR5cGUgb2JqZWN0XG4gICAqIEBleGFtcGxlXG4gICAqIG9ic2VydmVyOiB7IHJvb3RNYXJnaW46ICctNTAlIDAlJyB9XG4gICAqL1xuICBvYnNlcnZlcj86IG9iamVjdFxuXG4gIC8qKlxuICAgKiBvZmZzZXRcbiAgICogQGRlc2MgQ2hhbmdlIHRoZSBvZmZzZXQuIFRoaXMgdXNlcyByb290TWFyZ2luIHRodXMgb25seSB3b3JrcyBhcyBhIG5lZ2F0aXZlIG9mZnNldC5cbiAgICogQHR5cGUgbnVtYmVyIHwgc3RyaW5nXG4gICAqIEBkZWZhdWx0dmFsdWUgJzAlIDAlJ1xuICAgKiBAZXhhbXBsZVxuICAgKiBvZmZzZXQ6IDUwMCAvLyB0aGlzIHdpbGwgYmUgcm9vdE1hcmdpbjogJy01MDBweCAwJSdcbiAgICovXG4gIG9mZnNldD86IG51bWJlciB8IHN0cmluZ1xuXG4gIC8qKlxuICAgKiB0aHJlc2hvbGRzXG4gICAqIEBkZXNjIFNldCB0aGUgbnVtYmVyIG9mIHRocmVzaG9sZHMgeW91IHdhbnQuXG4gICAqIEByZXR1cm5zIEFuIEFycmF5IG9mIG51bWJlciBmcm9tIDAgdG8gMS4gQWRkIDEgdG8geW91ciBudW1iZXIgdG8gYWNjb3VudCBmb3IgMC5cbiAgICogQHR5cGUgbnVtYmVyXG4gICAqIEBleGFtcGxlXG4gICAqIHRocmVzaG9sZHM6IDEgPSBbMCwgMV1cbiAgICogdGhyZXNob2xkczogMiA9IFswLCAwLjUsIDFdXG4gICAqIHRocmVzaG9sZHM6IDMgPSBbMCwgMC4zMywgMC42NywgMV1cbiAgICogdGhyZXNob2xkczogMTAwID0gWzAsIDAuMSwgMC4yLCAuLi4gMC45OCwgMC45OSwgMV1cbiAgICovXG4gIHRocmVzaG9sZHM/OiBudW1iZXJcblxuICAvKipcbiAgICogdG9nZ2xlXG4gICAqIEBkZXNjIFVzZSB0byBzZXQgdGhlIG9wdGlvbnMgZm9yIHRoZSB0b2dnbGluZyBvZiBhIGNsYXNzTmFtZVxuICAgKiBAdHlwZSBvYmplY3RcbiAgICogQGV4YW1wbGVcbiAgICogdG9nZ2xlOiB7IGVsZW1lbnQ6IGNvbnRhaW5lclJlZi5jdXJyZW50LCBjbGFzc05hbWU6ICdsZXRzLWRvLXRoaXMnIH1cbiAgICovXG4gIHRvZ2dsZT86IElTY3JvbGxPYnNlcnZlclRvZ2dsZVxuXG4gIC8qKlxuICAgKiB0cmlnZ2VyRWxlbWVudFxuICAgKiBAZGVzYyBTZXQgdGhlIGVsZW1lbnQgeW91IHdpc2ggdG8gdHJpZ2dlciBldmVudHMgYmFzZWQgdXBvbiwgdGhlIG9ic2VydmVkIGVsZW1lbnQuXG4gICAqIEB0eXBlIEhUTUxFbGVtZW50IHwgYW55XG4gICAqIEBleGFtcGxlXG4gICAqIHRyaWdnZXJFbGVtZW50OiB0cmlnZ2VyUmVmLmN1cnJlbnRcbiAgICovXG4gIHRyaWdnZXJFbGVtZW50OiBIVE1MRWxlbWVudCB8IGFueVxuXG4gIC8qKlxuICAgKiB1c2VEdXJhdGlvblxuICAgKiBAZGVzYyBVc2UgdGhlIHBlcmNlbnRhZ2Ugb2YgZWxlbWVudCB2aXNpYmlsaXR5IHRvIHNjcnViIHRoZSBnc2FwIHRpbWVsaW5lLlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBleGFtcGxlXG4gICAqIHVzZUR1cmF0aW9uOiB0cnVlXG4gICAqL1xuICB1c2VEdXJhdGlvbj86IGJvb2xlYW5cblxuICAvKipcbiAgICogdmlkZW9cbiAgICogQGRlc2MgVXNlIHRvIHNldCB0aGUgb3B0aW9ucyBmb3IgcGxheWluZyBhbmQgcGF1c2luZyBvZiB0aGUgdmlkZW8uXG4gICAqIEB0eXBlIG9iamVjdFxuICAgKiBAZXhhbXBsZVxuICAgKiB2aWRlbzogeyBlbGVtZW50OiB2aWRlb1JlZi5jdXJyZW50IH1cbiAgICovXG4gIHZpZGVvPzogSVNjcm9sbE9ic2VydmVyVmlkZW9cblxuICAvKipcbiAgICogd2hlblZpc2libGVcbiAgICogQGRlc2MgU2V0IHdoZW4gdGhlIHNjZW5lIHNob3VsZCBiZSBhY3RpdmUgYmFzZWQgb24gdGhlIHBlcmNlbnRhZ2Ugb2YgdGhlIGVsZW1lbnQgdmlzaWJsZVxuICAgKiBAdHlwZSBudW1iZXJcbiAgICogQGV4YW1wbGVcbiAgICogd2hlblZpc2libGU6ICc1MCUnXG4gICAqL1xuICB3aGVuVmlzaWJsZT86IHN0cmluZ1xufVxuXG5jb25zdCBTY3JvbGxPYnNlcnZlciA9IGZ1bmN0aW9uKFxuICB0aGlzOiBhbnksXG4gIHtcbiAgICBicmVha3BvaW50cyxcbiAgICBjYWxsYmFjayxcbiAgICBkZXN0cm95SW1tZWRpYXRlbHksXG4gICAgZ3NhcCxcbiAgICBvYnNlcnZlcixcbiAgICBvZmZzZXQsXG4gICAgd2hlblZpc2libGUsXG4gICAgdGhyZXNob2xkcyxcbiAgICB0b2dnbGUsXG4gICAgdHJpZ2dlckVsZW1lbnQsXG4gICAgdXNlRHVyYXRpb24sXG4gICAgdmlkZW8sXG4gIH06IElTY3JvbGxPYnNlcnZlcixcbikge1xuICBpZiAoIXRyaWdnZXJFbGVtZW50KSB7XG4gICAgZXJyb3JMb2coXG4gICAgICBuYW1lU3BhY2UsXG4gICAgICAnQmUgc3VyZSB0byBzZXQgYSBjb25zdCB0cmlnZ2VyRWxlbWVudCA9IChyZWFjdFJlZi5jdXJyZW50IG9yIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IpIGluIHRoZSBuZXcgU2Nyb2xsU2NlbmUoeyB0cmlnZ2VyRWxlbWVudDogdHJpZ2dlckVsZW1lbnQgfSknLFxuICAgIClcbiAgfVxuXG4gIGNvbnN0ICR0aGlzID0gdGhpc1xuICBsZXQgc2V0VG9nZ2xlXG4gIGxldCBzZXRHc2FwXG4gIGxldCBzZXRWaWRlb1xuICBsZXQgc2V0Q2FsbGJhY2tcbiAgbGV0IHJhdGlvXG4gIGxldCBzZXRSb290TWFyZ2luID0gJzAlIDAlJ1xuICBsZXQgc2V0U3RhdGUgPSBuZXcgc3RhdGUoZmFsc2UsIGZhbHNlKVxuXG4gIGlmICh0eXBlb2Ygb2Zmc2V0ID09PSAnbnVtYmVyJykge1xuICAgIC8vIHByb3RlY3QgYWdhaW5zdCBwb3NpdGl2ZSBweCB2YWx1ZXMsIGZvciBub3dcbiAgICBzZXRSb290TWFyZ2luID0gYC0ke01hdGguYWJzKG9mZnNldCl9cHggMCVgXG4gIH0gZWxzZSBpZiAodHlwZW9mIG9mZnNldCA9PT0gJ3N0cmluZycpIHtcbiAgICAvLyBwcm90ZWN0IGFnYWluc3QgcG9zaXRpdmUgcGVyY2VudGFnZSB2YWx1ZXMsIGZvciBub3dcbiAgICBzZXRSb290TWFyZ2luID0gYC0ke01hdGguYWJzKHBhcnNlRmxvYXQob2Zmc2V0KSl9JSAwJWBcbiAgfVxuXG4gIGlmICh0b2dnbGUgJiYgaXNPYmplY3QodG9nZ2xlKSkge1xuICAgIHNldFRvZ2dsZSA9IG5ldyBzZXRDbGFzc05hbWUodG9nZ2xlKVxuICB9XG5cbiAgaWYgKGdzYXAgJiYgaXNPYmplY3QoZ3NhcCkpIHtcbiAgICBzZXRHc2FwID0gbmV3IHNldFR3ZWVuKGdzYXApXG4gIH1cblxuICBpZiAodmlkZW8gJiYgaXNPYmplY3QodmlkZW8pKSB7XG4gICAgc2V0VmlkZW8gPSBuZXcgc2V0UGxheWVyKHZpZGVvKVxuICB9XG5cbiAgaWYgKGNhbGxiYWNrKSB7XG4gICAgc2V0Q2FsbGJhY2sgPSBuZXcgc2V0RnVuY3Rpb24oY2FsbGJhY2spXG4gIH1cblxuICBjb25zdCBvYnNlcnZlckNhbGxiYWNrID0gZnVuY3Rpb24oZW50cmllcykge1xuICAgIGVudHJpZXMuZm9yRWFjaCgoeyBpc0ludGVyc2VjdGluZywgaW50ZXJzZWN0aW9uUmF0aW8gfSkgPT4ge1xuICAgICAgLypcbiAgICAgICAqIFRvIGhlbHAgdGhlIHdvbmtpbmVzcyBvZiBJbnRlcnNlY3Rpb25PYnNlcnZlciwgaXNJbnRlcnNlY3RpbmcgZmlyaW5nIHRydWUgd2hlbiBpdCdzIHJlYWxseSBmYWxzZVxuICAgICAgICovXG4gICAgICBpZiAocmF0aW8pIHtcbiAgICAgICAgc2V0U3RhdGUudmlzaWJsZSA9IGludGVyc2VjdGlvblJhdGlvID49IHJhdGlvXG4gICAgICB9IGVsc2UgaWYgKGlzSW50ZXJzZWN0aW5nICYmICFzZXRTdGF0ZS52aXNpYmxlKSB7XG4gICAgICAgIC8qXG4gICAgICAgICAqIFRvIGhlbHAgd2l0aCBzZXRDYWxsYmFjayBhbmQgaWdub3JpbmcgcmVmaXJpbmcgZXh0cmEgZnVuY3Rpb25cbiAgICAgICAgICogY2FsbHMgZHVlIHRvIGludGVyc2VjdGlvblJhdGlvXG4gICAgICAgICAqL1xuICAgICAgICBzZXRTdGF0ZS52aXNpYmxlID0gdHJ1ZVxuICAgICAgfSBlbHNlIGlmICghaXNJbnRlcnNlY3RpbmcgJiYgc2V0U3RhdGUudmlzaWJsZSkge1xuICAgICAgICBzZXRTdGF0ZS52aXNpYmxlID0gZmFsc2VcbiAgICAgIH1cblxuICAgICAgc2V0VG9nZ2xlICYmIHNldFRvZ2dsZS51cGRhdGUoc2V0U3RhdGUpXG4gICAgICBzZXRHc2FwICYmICghdXNlRHVyYXRpb24gPyBzZXRHc2FwLnVwZGF0ZShzZXRTdGF0ZSkgOiBzZXRHc2FwLnNjcnViKGludGVyc2VjdGlvblJhdGlvKSlcbiAgICAgIHNldFZpZGVvICYmIHNldFZpZGVvLnVwZGF0ZShzZXRTdGF0ZSlcbiAgICAgIHNldENhbGxiYWNrICYmIHNldENhbGxiYWNrLnVwZGF0ZShzZXRTdGF0ZSlcblxuICAgICAgaWYgKGlzSW50ZXJzZWN0aW5nICYmIGRlc3Ryb3lJbW1lZGlhdGVseSkge1xuICAgICAgICAvKlxuICAgICAgICAgKiBkZXN0cm95IHRoZSBzY2VuZSBhZnRlciB1c2VkIG9uY2VcbiAgICAgICAgICovXG4gICAgICAgICR0aGlzLmRlc3Ryb3koKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBjb25zdCBnZXRQZXJjZW50YWdlID0gdmFsdWUgPT4ge1xuICAgIGlmICghaXNTdHJpbmcod2hlblZpc2libGUpICYmICFzdHJpbmdDb250YWlucyh3aGVuVmlzaWJsZSwgJyUnKSkge1xuICAgICAgZXJyb3JMb2cobmFtZVNwYWNlLCAnQmUgc3VyZSB0byBzZXQgYSBwZXJjZW50YWdlIGFzIGEgc3RyaW5nLiB7IHdoZW5WaXNpYmxlOiBcIjUwJVwiIH0nKVxuICAgIH1cblxuICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlSW50KHZhbHVlLnJlcGxhY2UoJyUnLCAnJykpIC8gMTAwXG5cbiAgICByYXRpbyA9IHBhcnNlZFxuXG4gICAgcmV0dXJuIHBhcnNlZFxuICB9XG5cbiAgY29uc3QgZ2V0VGhyZXNvbGRzID0gKCkgPT4ge1xuICAgIGNvbnN0IGRlZmF1bHRzID0ge1xuICAgICAgb25lOiBbMCwgMV0sXG4gICAgICBnc2FwOiBjcmVhdGVBcnJheSgxOTkpLFxuICAgIH1cblxuICAgIGxldCByZXR1cm5lZFRocmVzaG9sZHM6IGFueSA9IGRlZmF1bHRzLm9uZVxuXG4gICAgaWYgKHdoZW5WaXNpYmxlKSB7XG4gICAgICByZXR1cm5lZFRocmVzaG9sZHMgPSBnZXRQZXJjZW50YWdlKHdoZW5WaXNpYmxlKVxuICAgIH1cblxuICAgIGlmICh1c2VEdXJhdGlvbikge1xuICAgICAgcmV0dXJuZWRUaHJlc2hvbGRzID0gZGVmYXVsdHMuZ3NhcFxuICAgIH1cblxuICAgIGlmICh0aHJlc2hvbGRzKSB7XG4gICAgICByZXR1cm5lZFRocmVzaG9sZHMgPSBjcmVhdGVBcnJheSh0aHJlc2hvbGRzKVxuICAgIH1cblxuICAgIHJldHVybiByZXR1cm5lZFRocmVzaG9sZHNcbiAgfVxuXG4gIGNvbnN0IE9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKG9ic2VydmVyQ2FsbGJhY2ssIHtcbiAgICB0aHJlc2hvbGQ6IGdldFRocmVzb2xkcygpLFxuICAgIHJvb3RNYXJnaW46IHNldFJvb3RNYXJnaW4sXG4gICAgLi4ub2JzZXJ2ZXIsXG4gIH0pXG5cbiAgdGhpcy5pbml0ID0gZnVuY3Rpb24oKSB7XG4gICAgT2JzZXJ2ZXIub2JzZXJ2ZSh0cmlnZ2VyRWxlbWVudClcbiAgfVxuXG4gIHRoaXMuZGVzdHJveSA9IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0cmlnZ2VyRWxlbWVudCAmJiBPYnNlcnZlcikge1xuICAgICAgaWYgKHNldFRvZ2dsZSkge1xuICAgICAgICBzZXRUb2dnbGUucmVtb3ZlKClcbiAgICAgIH1cblxuICAgICAgaWYgKHNldEdzYXApIHtcbiAgICAgICAgc2V0R3NhcC5raWxsKClcbiAgICAgIH1cblxuICAgICAgaWYgKHNldFZpZGVvKSB7XG4gICAgICAgIHNldFZpZGVvLmtpbGwoKVxuICAgICAgfVxuXG4gICAgICBPYnNlcnZlci51bm9ic2VydmUodHJpZ2dlckVsZW1lbnQpXG4gICAgfVxuICB9XG5cbiAgc2Nyb2xsQW5pbWF0aW9uSW5pdChicmVha3BvaW50cywgdGhpcy5pbml0LCB0aGlzLmRlc3Ryb3kpXG59XG5cbmV4cG9ydCB7IFNjcm9sbE9ic2VydmVyIH1cbiJdfQ==

@@ -1,2 +0,1 @@

/// <reference types="react" />
import { IScrollObserverToggle, IScrollObserverGsap } from './ScrollObserver';

@@ -79,7 +78,7 @@ interface IScrollSceneToggle extends IScrollObserverToggle {

* @desc Set the element you wish to trigger events based upon, the observed element.
* @type HTMLElement | React.ReactNode | any
* @type HTMLElement | any
* @example
* triggerElement: triggerRef.current
*/
triggerElement: HTMLElement | React.ReactNode | any;
triggerElement: HTMLElement | any;
/**

@@ -86,0 +85,0 @@ * triggerHook

@@ -206,2 +206,2 @@ "use strict";

exports.ScrollScene = ScrollScene;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TY3JvbGxTY2VuZS50cyJdLCJuYW1lcyI6WyJuYW1lU3BhY2UiLCJ1cGRhdGVUd2VlblByb2dyZXNzIiwiU2NlbmUiLCJUd2VlbiIsImdzYXBGb3J3YXJkU3BlZWQiLCJnc2FwUmV2ZXJzZVNwZWVkIiwicHJvZ3Jlc3MiLCJzdGF0ZSIsInJlcGVhdCIsInBhdXNlZCIsInRpbWVTY2FsZSIsInBsYXkiLCJwYXVzZSIsImR1cmF0aW9uIiwicmV2ZXJzZSIsInJlbW92ZVR3ZWVuIiwia2lsbCIsInNldER1cmF0aW9uIiwia2V5cyIsIk9iamVjdCIsImZuIiwiaW5kZXgiLCJsZW5ndGgiLCJicmVha3BvaW50IiwicGFyc2VGbG9hdCIsIndpbmRvdyIsImlubmVyV2lkdGgiLCJhZGRFdmVudExpc3RlbmVyIiwic2V0Q2xhc3NOYW1lIiwib3B0aW9ucyIsInRvZ2dsZSIsImNsYXNzTmFtZSIsImVsZW1lbnQiLCJhZGRDbGFzc05hbWUiLCJjbGFzc0xpc3QiLCJjb250YWlucyIsImFkZCIsInJlbW92ZUNsYXNzTmFtZSIsInJlbW92ZSIsIm9uIiwiZXZlbnQiLCJzY3JvbGxEaXJlY3Rpb24iLCJzZXRUd2VlbiIsImdzYXAiLCJmb3J3YXJkU3BlZWQiLCJyZXZlcnNlU3BlZWQiLCJ0aW1lbGluZSIsImdsb2JhbENvbnRyb2xsZXIiLCJTY3JvbGxTY2VuZSIsImJyZWFrcG9pbnRzIiwiY29udHJvbGxlciIsIm9mZnNldCIsInNjZW5lIiwidHJpZ2dlckVsZW1lbnQiLCJ0cmlnZ2VySG9vayIsInVzZUdsb2JhbENvbnRyb2xsZXIiLCJsb2NhbENvbnRyb2xsZXIiLCJTY3JvbGxNYWdpYyIsIkNvbnRyb2xsZXIiLCJjb250cm9sbGVySXNVc2UiLCJpbml0IiwiYWRkVG8iLCJkZXN0cm95Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOzs7Ozs7QUFHQSxJQUFNQSxTQUFTLEdBQUcsYUFBbEI7O0FBRUEsSUFBTUMsbUJBQW1C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ZCxFQUFnQztBQUM5QkYsSUFBQUEsWUFBWSxDQUFDMUIsS0FBRCxFQUFRNEIsTUFBUixFQUFnQmpCLFFBQWhCLENBQVo7QUFDRDs7QUFFRCxNQUFJOEIsSUFBSSxJQUFJLHVCQUFTQSxJQUFULENBQVosRUFBNEI7QUFDMUJELElBQUFBLFFBQVEsQ0FBQ3hDLEtBQUQsRUFBUXlDLElBQVIsQ0FBUjtBQUNEOztBQUVELE9BQUtpQixJQUFMLEdBQVksWUFBVztBQUNyQkQsSUFBQUEsZUFBZSxJQUFJekQsS0FBSyxDQUFDMkQsS0FBTixDQUFZRixlQUFaLENBQW5CO0FBQ0QsR0FGRDs7QUFJQSxPQUFLRyxPQUFMLEdBQWUsWUFBVztBQUN4QjVELElBQUFBLEtBQUssQ0FBQ29DLE1BQU47QUFDRCxHQUZEOztBQUlBLE9BQUtwQyxLQUFMLEdBQWFBLEtBQWI7QUFDQSxPQUFLd0QsVUFBTCxHQUFrQkMsZUFBbEI7QUFFQSxvQ0FBb0JWLFdBQXBCLEVBQWlDLEtBQUtXLElBQXRDLEVBQTRDLEtBQUtFLE9BQWpEO0FBQ0QsQ0FuRUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgU2Nyb2xsTWFnaWMgZnJvbSAnLi9zY3JvbGxtYWdpYy13aXRoLXNzcidcbmltcG9ydCB0aHJvdHRsZSBmcm9tICdsb2Rhc2gudGhyb3R0bGUnXG5pbXBvcnQgeyBlcnJvckxvZywgaXNPYmplY3QsIHNjcm9sbEFuaW1hdGlvbkluaXQgfSBmcm9tICcuL2hlbHBlcnMnXG5pbXBvcnQgeyBJU2Nyb2xsT2JzZXJ2ZXJUb2dnbGUsIElTY3JvbGxPYnNlcnZlckdzYXAgfSBmcm9tICcuL1Njcm9sbE9ic2VydmVyJ1xuXG5jb25zdCBuYW1lU3BhY2UgPSAnU2Nyb2xsU2NlbmUnXG5cbmNvbnN0IHVwZGF0ZVR3ZWVuUHJvZ3Jlc3MgPSBmdW5jdGlvbihTY2VuZSwgVHdlZW4sIGdzYXBGb3J3YXJkU3BlZWQsIGdzYXBSZXZlcnNlU3BlZWQpIHtcbiAgaWYgKFR3ZWVuKSB7XG4gICAgY29uc3QgcHJvZ3Jlc3MgPSBTY2VuZS5wcm9ncmVzcygpXG4gICAgY29uc3Qgc3RhdGUgPSBTY2VuZS5zdGF0ZSgpXG4gICAgaWYgKFR3ZWVuLnJlcGVhdCAmJiBUd2Vlbi5yZXBlYXQoKSA9PT0gLTEpIHtcbiAgICAgIC8vIGluZmluaXRlIGxvb3AsIHNvIG5vdCBpbiByZWxhdGlvbiB0byBwcm9ncmVzc1xuICAgICAgaWYgKHN0YXRlID09PSAnRFVSSU5HJyAmJiBUd2Vlbi5wYXVzZWQoKSkge1xuICAgICAgICBUd2Vlbi50aW1lU2NhbGUoZ3NhcEZvcndhcmRTcGVlZCkucGxheSgpXG4gICAgICB9IGVsc2UgaWYgKHN0YXRlICE9PSAnRFVSSU5HJyAmJiAhVHdlZW4ucGF1c2VkKCkpIHtcbiAgICAgICAgVHdlZW4ucGF1c2UoKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocHJvZ3Jlc3MgIT0gVHdlZW4ucHJvZ3Jlc3MoKSkge1xuICAgICAgLy8gZG8gd2UgZXZlbiBuZWVkIHRvIHVwZGF0ZSB0aGUgcHJvZ3Jlc3M/XG4gICAgICAvLyBubyBpbmZpbml0ZSBsb29wIC0gc28gc2hvdWxkIHdlIGp1c3QgcGxheSBvciBnbyB0byBhIHNwZWNpZmljIHBvaW50IGluIHRpbWU/XG4gICAgICBpZiAoU2NlbmUuZHVyYXRpb24oKSA9PT0gMCkge1xuICAgICAgICAvLyBwbGF5IHRoZSBhbmltYXRpb25cbiAgICAgICAgaWYgKHByb2dyZXNzID4gMCkge1xuICAgICAgICAgIC8vIHBsYXkgZnJvbSAwIHRvIDFcbiAgICAgICAgICBUd2Vlbi50aW1lU2NhbGUoZ3NhcEZvcndhcmRTcGVlZCkucGxheSgpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gcGxheSBmcm9tIDEgdG8gMFxuICAgICAgICAgIFR3ZWVuLnRpbWVTY2FsZShnc2FwUmV2ZXJzZVNwZWVkKS5yZXZlcnNlKClcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gZ28gdG8gYSBzcGVjaWZpYyBwb2ludCBpbiB0aW1lXG4gICAgICAgIC8vIGp1c3QgaGFyZCBzZXQgaXRcbiAgICAgICAgVHdlZW4ucHJvZ3Jlc3MocHJvZ3Jlc3MpLnBhdXNlKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuY29uc3QgcmVtb3ZlVHdlZW4gPSBmdW5jdGlvbihUd2Vlbikge1xuICBpZiAoVHdlZW4pIHtcbiAgICBUd2Vlbi5wYXVzZSgwKVxuICAgIFR3ZWVuLmtpbGwoKVxuICB9XG59XG5cbmNvbnN0IHNldER1cmF0aW9uID0gKFNjZW5lLCBkdXJhdGlvbikgPT4ge1xuICBpZiAoaXNPYmplY3QoZHVyYXRpb24pKSB7XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGR1cmF0aW9uKS5yZXZlcnNlKClcblxuICAgIGNvbnN0IGZuID0gKCkgPT4ge1xuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGtleXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIGNvbnN0IGJyZWFrcG9pbnQgPSBwYXJzZUZsb2F0KGtleXNbaW5kZXhdKVxuXG4gICAgICAgIGlmIChicmVha3BvaW50IDw9IHdpbmRvdy5pbm5lcldpZHRoKSB7XG4gICAgICAgICAgU2NlbmUuZHVyYXRpb24oZHVyYXRpb25bYnJlYWtwb2ludF0pXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGZuKClcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aHJvdHRsZShmbiwgNzAwKSlcbiAgfSBlbHNlIHtcbiAgICBTY2VuZS5kdXJhdGlvbihkdXJhdGlvbilcbiAgfVxufVxuXG5jb25zdCBzZXRDbGFzc05hbWUgPSAoU2NlbmUsIG9wdGlvbnMsIGR1cmF0aW9uKSA9PiB7XG4gIGNvbnN0IHRvZ2dsZSA9IHtcbiAgICBjbGFzc05hbWU6IG51bGwsXG4gICAgZWxlbWVudDogbnVsbCxcbiAgICByZXZlcnNlOiBmYWxzZSxcbiAgICAuLi5vcHRpb25zLFxuICB9XG5cbiAgaWYgKCF0b2dnbGUuY2xhc3NOYW1lKSB7XG4gICAgZXJyb3JMb2cobmFtZVNwYWNlLCBgQmUgc3VyZSB0byBzZXQgYSBjbGFzc05hbWUgaW4gdGhlIG5ldyAke25hbWVTcGFjZX0oeyB0b2dnbGU6IHsgY2xhc3NOYW1lOiBcIm15LWNsYXNzXCIgfSB9KWApXG4gIH1cblxuICBpZiAoIXRvZ2dsZS5lbGVtZW50KSB7XG4gICAgZXJyb3JMb2coXG4gICAgICBuYW1lU3BhY2UsXG4gICAgICBgQmUgc3VyZSB0byBzZXQgYSBjb25zdCB0b2dnbGVFbGVtZW50ID0gKHJlYWN0UmVmLmN1cnJlbnQgb3IgZG9jdW1lbnQucXVlcnlTZWxlY3RvcikgaW4gdGhlIG5ldyAke25hbWVTcGFjZX0oeyB0b2dnbGU6IHsgZWxlbWVudDogdG9nZ2xlRWxlbWVudCB9IH0pYCxcbiAgICApXG4gIH1cblxuICBjb25zdCBhZGRDbGFzc05hbWUgPSAoKSA9PlxuICAgICF0b2dnbGUuZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnModG9nZ2xlLmNsYXNzTmFtZSkgJiYgdG9nZ2xlLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCh0b2dnbGUuY2xhc3NOYW1lKVxuXG4gIGNvbnN0IHJlbW92ZUNsYXNzTmFtZSA9ICgpID0+XG4gICAgdG9nZ2xlLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKHRvZ2dsZS5jbGFzc05hbWUpICYmIHRvZ2dsZS5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUodG9nZ2xlLmNsYXNzTmFtZSlcblxuICBTY2VuZS5vbignZW50ZXInLCBmdW5jdGlvbigpIHtcbiAgICBhZGRDbGFzc05hbWUoKVxuICB9KVxuXG4gIFNjZW5lLm9uKCdhZGQnLCBmdW5jdGlvbigpIHtcbiAgICBpZiAoU2NlbmUuc3RhdGUoKSA9PT0gJ0RVUklORycpIHtcbiAgICAgIGFkZENsYXNzTmFtZSgpXG4gICAgfVxuICB9KVxuXG4gIFNjZW5lLm9uKCdsZWF2ZScsIGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgaWYgKCF0b2dnbGUucmV2ZXJzZSAmJiBkdXJhdGlvbikge1xuICAgICAgLy8gbmVlZHMgdG8gYmUgYmFzZWQgb24gd2hldGhlciBvciBub3Qgd2UgaGF2ZSBhIGR1cmF0aW9uXG4gICAgICBldmVudC5zY3JvbGxEaXJlY3Rpb24gPT09ICdSRVZFUlNFJyAmJiByZW1vdmVDbGFzc05hbWUoKVxuICAgIH0gZWxzZSB7XG4gICAgICByZW1vdmVDbGFzc05hbWUoKVxuICAgIH1cbiAgfSlcblxuICBTY2VuZS5vbigncmVtb3ZlJywgZnVuY3Rpb24oKSB7XG4gICAgcmVtb3ZlQ2xhc3NOYW1lKClcbiAgfSlcbn1cblxuY29uc3Qgc2V0VHdlZW4gPSAoU2NlbmUsIG9wdGlvbnMpID0+IHtcbiAgY29uc3QgZ3NhcCA9IHtcbiAgICBmb3J3YXJkU3BlZWQ6IDEsXG4gICAgcmV2ZXJzZVNwZWVkOiAxLFxuICAgIHRpbWVsaW5lOiBudWxsLFxuICAgIC4uLm9wdGlvbnMsXG4gIH1cblxuICBpZiAoIWdzYXAudGltZWxpbmUpIHtcbiAgICBlcnJvckxvZyhcbiAgICAgIG5hbWVTcGFjZSxcbiAgICAgIGBCZSBzdXJlIHRvIHNldCBhIGNvbnN0IHRsID0gZ3NhcC50aW1lbGluZSh7IHBhdXNlZDogdHJ1ZSB9KSBpbiB0aGUgbmV3ICR7bmFtZVNwYWNlfSh7IGdzYXA6IHsgdGltZWxpbmU6IHRsIH0gfSlgLFxuICAgIClcbiAgfVxuXG4gIFNjZW5lLm9uKCdwcm9ncmVzcycsIGZ1bmN0aW9uKCkge1xuICAgIHVwZGF0ZVR3ZWVuUHJvZ3Jlc3MoU2NlbmUsIGdzYXAudGltZWxpbmUsIGdzYXAuZm9yd2FyZFNwZWVkLCBnc2FwLnJldmVyc2VTcGVlZClcbiAgfSlcblxuICBTY2VuZS5vbigncmVtb3ZlJywgZnVuY3Rpb24oKSB7XG4gICAgcmVtb3ZlVHdlZW4oZ3NhcC50aW1lbGluZSlcbiAgfSlcbn1cblxuaW50ZXJmYWNlIElTY3JvbGxTY2VuZVRvZ2dsZSBleHRlbmRzIElTY3JvbGxPYnNlcnZlclRvZ2dsZSB7XG4gIC8qKlxuICAgKiByZXZlcnNlXG4gICAqIEBkZXNjIFNwZWNpZnkgdGhlIGNsYXNzTmFtZSBzaG91bGQgYmUgcmVtb3ZlZCBhZnRlciB0aGUgZHVyYXRpb24gb2Ygc2NlbmUgaXMgbWV0LiBPbmx5IGFwcGxpZXMgaWYgc2NlbmUgaGFzIGR1cmF0aW9uLlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEBleGFtcGxlXG4gICAqIHRvZ2dsZTogeyByZXZlcnNlOiB0cnVlIH1cbiAgICovXG4gIHJldmVyc2U/OiBib29sZWFuXG59XG5cbmludGVyZmFjZSBJU2Nyb2xsU2NlbmUge1xuICAvKipcbiAgICogYnJlYWtwb2ludHNcbiAgICogQGRlc2MgVXNlIHRvIHNldCByZXNwb25zaXZlbmVzcyBvZiB0aGUgbmV3IFNjcm9sbE1hZ2ljLlNjZW5lLCBtb2JpbGUtZmlyc3RcbiAgICogQHR5cGUgb2JqZWN0XG4gICAqIEBleGFtcGxlXG4gICAqIGJyZWFrcG9pbnRzOiB7IDA6IGZhbHNlLCA3Njg6IHRydWUgfVxuICAgKi9cbiAgYnJlYWtwb2ludHM/OiBvYmplY3RcblxuICAvKipcbiAgICogY29udHJvbGxlclxuICAgKiBAZGVzYyBFeHRyYSBvcHRpb25zIHRvIHBhc3MgdGhlIG5ldyBTY3JvbGxNYWdpYy5Db250cm9sbGVyLCBsaWtlIHZlcnRpY2FsLCBldGMuXG4gICAqIEB0eXBlIG9iamVjdFxuICAgKiBAZXhhbXBsZVxuICAgKiBjb250cm9sbGVyOiB7IHZlcnRpY2FsOiBmYWxzZSB9XG4gICAqL1xuICBjb250cm9sbGVyPzogb2JqZWN0XG5cbiAgLyoqXG4gICAqIGR1cmF0aW9uXG4gICAqIEBkZXNjIFVzZSB0byBzZXQgcmVzcG9uc2l2ZW5lc3Mgb2YgdGhlIG5ldyBTY3JvbGxNYWdpYy5TY2VuZSwgbW9iaWxlLWZpcnN0IChpZiBzZXR0aW5nIGJyZWFrcG9pbnRzKVxuICAgKiBNdXN0IGJlIHN0cmluZyBmb3IgcGVyY2VudGFnZSwgYW5kIG51bWJlciBmb3IgcGl4ZWwuXG4gICAqIEB0eXBlIG9iamVjdFxuICAgKiBAZXhhbXBsZVxuICAgKiBkdXJhdGlvbjogJzEwMCUnID0gMTAwdmhcbiAgICogZHVyYXRpb246IDEwMCA9IDEwMHB4XG4gICAqIGR1cmF0aW9uOiB7IDA6ICc1MCUnLCA3Njg6ICcxMDAlIH0gLy8gPSBTY3JvbGxTY2VuZSBsYXN0cyA1MHZoIG9uIG1vYmlsZSwgMTAwJSBhZnRlclxuICAgKi9cbiAgZHVyYXRpb24/OiBzdHJpbmcgfCBudW1iZXIgfCBvYmplY3RcblxuICAvKipcbiAgICogZ3NhcFxuICAgKiBAZGVzYyBVc2UgdG8gc2V0IG9wdGlvbnMgZm9yIHRoZSBnc2FwIGFuaW1hdGlvbiBvZiB0aGUgU2Nyb2xsT2JzZXJ2ZXIuXG4gICAqIEB0eXBlIG9iamVjdFxuICAgKiBAZXhhbXBsZVxuICAgKiBnc2FwOiB7IHRpbWVsaW5lOiBteVRpbWVsaW5lLCB5b3lvOiB0cnVlLCByZXZlcnNlU3BlZWQ6IDIgfVxuICAgKi9cbiAgZ3NhcD86IElTY3JvbGxPYnNlcnZlckdzYXBcblxuICAvKipcbiAgICogdHJpZ2dlckhvb2tcbiAgICogQGRlc2MgU2V0IHRoZSBvZmZzZXQgb2YgdGhlIFNjcm9sbE1hZ2ljIHNjZW5lLlxuICAgKiBAdHlwZSAgbnVtYmVyIHwgc3RyaW5nXG4gICAqIEBkZWZhdWx0dmFsdWUgMFxuICAgKiBAZXhhbXBsZVxuICAgKiBvZmZzZXQ6IDEwMFxuICAgKiBvZmZzZXQ6ICcxMCUnXG4gICAqL1xuICBvZmZzZXQ/OiBudW1iZXIgfCBzdHJpbmdcblxuICAvKipcbiAgICogc2NlbmVcbiAgICogQGRlc2MgRXh0cmEgb3B0aW9ucyB0byBwYXNzIHRoZSBuZXcgU2Nyb2xsTWFnaWMuU2NlbmUsIGxpa2UgbG9nTGV2ZWwsIGV0Yy5cbiAgICogQHR5cGUgb2JqZWN0XG4gICAqIEBleGFtcGxlXG4gICAqIHNjZW5lOiB7IGxvZ0xldmVsOiAyIH1cbiAgICovXG4gIHNjZW5lPzogb2JqZWN0XG5cbiAgLyoqXG4gICAqIHRvZ2dsZVxuICAgKiBAZGVzYyBVc2UgdG8gc2V0IHRoZSBvcHRpb25zIGZvciB0aGUgdG9nZ2xpbmcgb2YgYSBjbGFzc05hbWVcbiAgICogQHR5cGUgb2JqZWN0XG4gICAqIEBleGFtcGxlXG4gICAqIHRvZ2dsZTogeyBlbGVtZW50OiBjb250YWluZXJSZWYuY3VycmVudCwgY2xhc3NOYW1lOiAnbGV0cy1kby10aGlzJyB9XG4gICAqL1xuICB0b2dnbGU/OiBJU2Nyb2xsU2NlbmVUb2dnbGVcblxuICAvKipcbiAgICogdHJpZ2dlckVsZW1lbnRcbiAgICogQGRlc2MgU2V0IHRoZSBlbGVtZW50IHlvdSB3aXNoIHRvIHRyaWdnZXIgZXZlbnRzIGJhc2VkIHVwb24sIHRoZSBvYnNlcnZlZCBlbGVtZW50LlxuICAgKiBAdHlwZSAgSFRNTEVsZW1lbnQgfCBSZWFjdC5SZWFjdE5vZGUgfCBhbnlcbiAgICogQGV4YW1wbGVcbiAgICogdHJpZ2dlckVsZW1lbnQ6IHRyaWdnZXJSZWYuY3VycmVudFxuICAgKi9cbiAgdHJpZ2dlckVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgUmVhY3QuUmVhY3ROb2RlIHwgYW55XG5cbiAgLyoqXG4gICAqIHRyaWdnZXJIb29rXG4gICAqIEBkZXNjIFNldCB0aGUgdHJpZ2dlckhvb2sgb2YgdGhlIFNjcm9sbE1hZ2ljIHNjZW5lLlxuICAgKiBAdHlwZSAgbnVtYmVyXG4gICAqIEBkZWZhdWx0dmFsdWUgJ29uRW50ZXInXG4gICAqIEBleGFtcGxlXG4gICAqIHRyaWdnZXJIb29rOiAwLjVcbiAgICovXG4gIHRyaWdnZXJIb29rPzogbnVtYmVyIHwgc3RyaW5nXG5cbiAgLyoqXG4gICAqIHVzZUdsb2JhbENvbnRyb2xsZXJcbiAgICogQGRlc2MgQ2hvc2Ugd2hldGhlciBvciBub3QgdG8gdXNlIHRoZSBnbG9iYWxDb250cm9sbGVyIHByb3ZpZGVkIGZvciB5b3UsIG9yIGEgZnJlc2ggbmV3IFNjcm9sbE1hZ2ljLkNvbnRyb2xsZXIgaW5zdGFuY2UuXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHRWYWx1ZSB0cnVlXG4gICAqIEBleGFtcGxlXG4gICAqIHVzZUdsb2JhbENvbnRyb2xsZXI6IGZhbHNlXG4gICAqL1xuICB1c2VHbG9iYWxDb250cm9sbGVyPzogYm9vbGVhblxufVxuXG4vLyBhZGQgY29udHJvbGxlciB2YXJcbmxldCBnbG9iYWxDb250cm9sbGVyXG5cbmNvbnN0IFNjcm9sbFNjZW5lID0gZnVuY3Rpb24oXG4gIHRoaXM6IGFueSxcbiAge1xuICAgIGJyZWFrcG9pbnRzLFxuICAgIGNvbnRyb2xsZXIgPSB7fSxcbiAgICBkdXJhdGlvbixcbiAgICBnc2FwLFxuICAgIG9mZnNldCA9IDAsXG4gICAgc2NlbmUgPSB7fSxcbiAgICB0b2dnbGUsXG4gICAgdHJpZ2dlckVsZW1lbnQsXG4gICAgdHJpZ2dlckhvb2sgPSAnb25FbnRlcicsXG4gICAgdXNlR2xvYmFsQ29udHJvbGxlciA9IHRydWUsXG4gIH06IElTY3JvbGxTY2VuZSxcbikge1xuICBsZXQgbG9jYWxDb250cm9sbGVyXG5cbiAgLy8gY2hlY2sgaWYgdXNpbmcgYSBsb2NhbCBjb250cm9sbGVyXG4gIGlmICghdXNlR2xvYmFsQ29udHJvbGxlcikge1xuICAgIGxvY2FsQ29udHJvbGxlciA9IG5ldyBTY3JvbGxNYWdpYy5Db250cm9sbGVyKGNvbnRyb2xsZXIpXG4gIH1cblxuICAvLyBtb3VudCBjb250cm9sbGVyXG4gIGlmICghZ2xvYmFsQ29udHJvbGxlciAmJiB1c2VHbG9iYWxDb250cm9sbGVyKSB7XG4gICAgZ2xvYmFsQ29udHJvbGxlciA9IG5ldyBTY3JvbGxNYWdpYy5Db250cm9sbGVyKGNvbnRyb2xsZXIpXG4gIH1cblxuICBjb25zdCBjb250cm9sbGVySXNVc2UgPSBsb2NhbENvbnRyb2xsZXIgPyBsb2NhbENvbnRyb2xsZXIgOiBnbG9iYWxDb250cm9sbGVyXG5cbiAgaWYgKCF0cmlnZ2VyRWxlbWVudCkge1xuICAgIGVycm9yTG9nKFxuICAgICAgbmFtZVNwYWNlLFxuICAgICAgYEJlIHN1cmUgdG8gc2V0IGEgY29uc3QgdHJpZ2dlckVsZW1lbnQgPSAocmVhY3RSZWYuY3VycmVudCBvciBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKSBpbiB0aGUgbmV3ICR7bmFtZVNwYWNlfSh7IHRyaWdnZXJFbGVtZW50OiB0cmlnZ2VyRWxlbWVudCB9KWAsXG4gICAgKVxuICB9XG5cbiAgY29uc3QgU2NlbmUgPSBuZXcgU2Nyb2xsTWFnaWMuU2NlbmUoe1xuICAgIHRyaWdnZXJFbGVtZW50LFxuICAgIHRyaWdnZXJIb29rLFxuICAgIG9mZnNldCxcbiAgICAuLi5zY2VuZSxcbiAgfSlcblxuICBpZiAoZHVyYXRpb24pIHtcbiAgICBzZXREdXJhdGlvbihTY2VuZSwgZHVyYXRpb24pXG4gIH1cblxuICBpZiAodG9nZ2xlICYmIGlzT2JqZWN0KHRvZ2dsZSkpIHtcbiAgICBzZXRDbGFzc05hbWUoU2NlbmUsIHRvZ2dsZSwgZHVyYXRpb24pXG4gIH1cblxuICBpZiAoZ3NhcCAmJiBpc09iamVjdChnc2FwKSkge1xuICAgIHNldFR3ZWVuKFNjZW5lLCBnc2FwKVxuICB9XG5cbiAgdGhpcy5pbml0ID0gZnVuY3Rpb24oKSB7XG4gICAgY29udHJvbGxlcklzVXNlICYmIFNjZW5lLmFkZFRvKGNvbnRyb2xsZXJJc1VzZSlcbiAgfVxuXG4gIHRoaXMuZGVzdHJveSA9IGZ1bmN0aW9uKCkge1xuICAgIFNjZW5lLnJlbW92ZSgpXG4gIH1cblxuICB0aGlzLlNjZW5lID0gU2NlbmVcbiAgdGhpcy5Db250cm9sbGVyID0gY29udHJvbGxlcklzVXNlXG5cbiAgc2Nyb2xsQW5pbWF0aW9uSW5pdChicmVha3BvaW50cywgdGhpcy5pbml0LCB0aGlzLmRlc3Ryb3kpXG59XG5cbmV4cG9ydCB7IFNjcm9sbFNjZW5lIH1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TY3JvbGxTY2VuZS50cyJdLCJuYW1lcyI6WyJuYW1lU3BhY2UiLCJ1cGRhdGVUd2VlblByb2dyZXNzIiwiU2NlbmUiLCJUd2VlbiIsImdzYXBGb3J3YXJkU3BlZWQiLCJnc2FwUmV2ZXJzZVNwZWVkIiwicHJvZ3Jlc3MiLCJzdGF0ZSIsInJlcGVhdCIsInBhdXNlZCIsInRpbWVTY2FsZSIsInBsYXkiLCJwYXVzZSIsImR1cmF0aW9uIiwicmV2ZXJzZSIsInJlbW92ZVR3ZWVuIiwia2lsbCIsInNldER1cmF0aW9uIiwia2V5cyIsIk9iamVjdCIsImZuIiwiaW5kZXgiLCJsZW5ndGgiLCJicmVha3BvaW50IiwicGFyc2VGbG9hdCIsIndpbmRvdyIsImlubmVyV2lkdGgiLCJhZGRFdmVudExpc3RlbmVyIiwic2V0Q2xhc3NOYW1lIiwib3B0aW9ucyIsInRvZ2dsZSIsImNsYXNzTmFtZSIsImVsZW1lbnQiLCJhZGRDbGFzc05hbWUiLCJjbGFzc0xpc3QiLCJjb250YWlucyIsImFkZCIsInJlbW92ZUNsYXNzTmFtZSIsInJlbW92ZSIsIm9uIiwiZXZlbnQiLCJzY3JvbGxEaXJlY3Rpb24iLCJzZXRUd2VlbiIsImdzYXAiLCJmb3J3YXJkU3BlZWQiLCJyZXZlcnNlU3BlZWQiLCJ0aW1lbGluZSIsImdsb2JhbENvbnRyb2xsZXIiLCJTY3JvbGxTY2VuZSIsImJyZWFrcG9pbnRzIiwiY29udHJvbGxlciIsIm9mZnNldCIsInNjZW5lIiwidHJpZ2dlckVsZW1lbnQiLCJ0cmlnZ2VySG9vayIsInVzZUdsb2JhbENvbnRyb2xsZXIiLCJsb2NhbENvbnRyb2xsZXIiLCJTY3JvbGxNYWdpYyIsIkNvbnRyb2xsZXIiLCJjb250cm9sbGVySXNVc2UiLCJpbml0IiwiYWRkVG8iLCJkZXN0cm95Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOzs7Ozs7QUFHQSxJQUFNQSxTQUFTLEdBQUcsYUFBbEI7O0FBRUEsSUFBTUMsbUJBQW1C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ZCxFQUFnQztBQUM5QkYsSUFBQUEsWUFBWSxDQUFDMUIsS0FBRCxFQUFRNEIsTUFBUixFQUFnQmpCLFFBQWhCLENBQVo7QUFDRDs7QUFFRCxNQUFJOEIsSUFBSSxJQUFJLHVCQUFTQSxJQUFULENBQVosRUFBNEI7QUFDMUJELElBQUFBLFFBQVEsQ0FBQ3hDLEtBQUQsRUFBUXlDLElBQVIsQ0FBUjtBQUNEOztBQUVELE9BQUtpQixJQUFMLEdBQVksWUFBVztBQUNyQkQsSUFBQUEsZUFBZSxJQUFJekQsS0FBSyxDQUFDMkQsS0FBTixDQUFZRixlQUFaLENBQW5CO0FBQ0QsR0FGRDs7QUFJQSxPQUFLRyxPQUFMLEdBQWUsWUFBVztBQUN4QjVELElBQUFBLEtBQUssQ0FBQ29DLE1BQU47QUFDRCxHQUZEOztBQUlBLE9BQUtwQyxLQUFMLEdBQWFBLEtBQWI7QUFDQSxPQUFLd0QsVUFBTCxHQUFrQkMsZUFBbEI7QUFFQSxvQ0FBb0JWLFdBQXBCLEVBQWlDLEtBQUtXLElBQXRDLEVBQTRDLEtBQUtFLE9BQWpEO0FBQ0QsQ0FuRUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgU2Nyb2xsTWFnaWMgZnJvbSAnLi9zY3JvbGxtYWdpYy13aXRoLXNzcidcbmltcG9ydCB0aHJvdHRsZSBmcm9tICdsb2Rhc2gudGhyb3R0bGUnXG5pbXBvcnQgeyBlcnJvckxvZywgaXNPYmplY3QsIHNjcm9sbEFuaW1hdGlvbkluaXQgfSBmcm9tICcuL2hlbHBlcnMnXG5pbXBvcnQgeyBJU2Nyb2xsT2JzZXJ2ZXJUb2dnbGUsIElTY3JvbGxPYnNlcnZlckdzYXAgfSBmcm9tICcuL1Njcm9sbE9ic2VydmVyJ1xuXG5jb25zdCBuYW1lU3BhY2UgPSAnU2Nyb2xsU2NlbmUnXG5cbmNvbnN0IHVwZGF0ZVR3ZWVuUHJvZ3Jlc3MgPSBmdW5jdGlvbihTY2VuZSwgVHdlZW4sIGdzYXBGb3J3YXJkU3BlZWQsIGdzYXBSZXZlcnNlU3BlZWQpIHtcbiAgaWYgKFR3ZWVuKSB7XG4gICAgY29uc3QgcHJvZ3Jlc3MgPSBTY2VuZS5wcm9ncmVzcygpXG4gICAgY29uc3Qgc3RhdGUgPSBTY2VuZS5zdGF0ZSgpXG4gICAgaWYgKFR3ZWVuLnJlcGVhdCAmJiBUd2Vlbi5yZXBlYXQoKSA9PT0gLTEpIHtcbiAgICAgIC8vIGluZmluaXRlIGxvb3AsIHNvIG5vdCBpbiByZWxhdGlvbiB0byBwcm9ncmVzc1xuICAgICAgaWYgKHN0YXRlID09PSAnRFVSSU5HJyAmJiBUd2Vlbi5wYXVzZWQoKSkge1xuICAgICAgICBUd2Vlbi50aW1lU2NhbGUoZ3NhcEZvcndhcmRTcGVlZCkucGxheSgpXG4gICAgICB9IGVsc2UgaWYgKHN0YXRlICE9PSAnRFVSSU5HJyAmJiAhVHdlZW4ucGF1c2VkKCkpIHtcbiAgICAgICAgVHdlZW4ucGF1c2UoKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocHJvZ3Jlc3MgIT0gVHdlZW4ucHJvZ3Jlc3MoKSkge1xuICAgICAgLy8gZG8gd2UgZXZlbiBuZWVkIHRvIHVwZGF0ZSB0aGUgcHJvZ3Jlc3M/XG4gICAgICAvLyBubyBpbmZpbml0ZSBsb29wIC0gc28gc2hvdWxkIHdlIGp1c3QgcGxheSBvciBnbyB0byBhIHNwZWNpZmljIHBvaW50IGluIHRpbWU/XG4gICAgICBpZiAoU2NlbmUuZHVyYXRpb24oKSA9PT0gMCkge1xuICAgICAgICAvLyBwbGF5IHRoZSBhbmltYXRpb25cbiAgICAgICAgaWYgKHByb2dyZXNzID4gMCkge1xuICAgICAgICAgIC8vIHBsYXkgZnJvbSAwIHRvIDFcbiAgICAgICAgICBUd2Vlbi50aW1lU2NhbGUoZ3NhcEZvcndhcmRTcGVlZCkucGxheSgpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gcGxheSBmcm9tIDEgdG8gMFxuICAgICAgICAgIFR3ZWVuLnRpbWVTY2FsZShnc2FwUmV2ZXJzZVNwZWVkKS5yZXZlcnNlKClcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gZ28gdG8gYSBzcGVjaWZpYyBwb2ludCBpbiB0aW1lXG4gICAgICAgIC8vIGp1c3QgaGFyZCBzZXQgaXRcbiAgICAgICAgVHdlZW4ucHJvZ3Jlc3MocHJvZ3Jlc3MpLnBhdXNlKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuY29uc3QgcmVtb3ZlVHdlZW4gPSBmdW5jdGlvbihUd2Vlbikge1xuICBpZiAoVHdlZW4pIHtcbiAgICBUd2Vlbi5wYXVzZSgwKVxuICAgIFR3ZWVuLmtpbGwoKVxuICB9XG59XG5cbmNvbnN0IHNldER1cmF0aW9uID0gKFNjZW5lLCBkdXJhdGlvbikgPT4ge1xuICBpZiAoaXNPYmplY3QoZHVyYXRpb24pKSB7XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGR1cmF0aW9uKS5yZXZlcnNlKClcblxuICAgIGNvbnN0IGZuID0gKCkgPT4ge1xuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGtleXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIGNvbnN0IGJyZWFrcG9pbnQgPSBwYXJzZUZsb2F0KGtleXNbaW5kZXhdKVxuXG4gICAgICAgIGlmIChicmVha3BvaW50IDw9IHdpbmRvdy5pbm5lcldpZHRoKSB7XG4gICAgICAgICAgU2NlbmUuZHVyYXRpb24oZHVyYXRpb25bYnJlYWtwb2ludF0pXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGZuKClcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aHJvdHRsZShmbiwgNzAwKSlcbiAgfSBlbHNlIHtcbiAgICBTY2VuZS5kdXJhdGlvbihkdXJhdGlvbilcbiAgfVxufVxuXG5jb25zdCBzZXRDbGFzc05hbWUgPSAoU2NlbmUsIG9wdGlvbnMsIGR1cmF0aW9uKSA9PiB7XG4gIGNvbnN0IHRvZ2dsZSA9IHtcbiAgICBjbGFzc05hbWU6IG51bGwsXG4gICAgZWxlbWVudDogbnVsbCxcbiAgICByZXZlcnNlOiBmYWxzZSxcbiAgICAuLi5vcHRpb25zLFxuICB9XG5cbiAgaWYgKCF0b2dnbGUuY2xhc3NOYW1lKSB7XG4gICAgZXJyb3JMb2cobmFtZVNwYWNlLCBgQmUgc3VyZSB0byBzZXQgYSBjbGFzc05hbWUgaW4gdGhlIG5ldyAke25hbWVTcGFjZX0oeyB0b2dnbGU6IHsgY2xhc3NOYW1lOiBcIm15LWNsYXNzXCIgfSB9KWApXG4gIH1cblxuICBpZiAoIXRvZ2dsZS5lbGVtZW50KSB7XG4gICAgZXJyb3JMb2coXG4gICAgICBuYW1lU3BhY2UsXG4gICAgICBgQmUgc3VyZSB0byBzZXQgYSBjb25zdCB0b2dnbGVFbGVtZW50ID0gKHJlYWN0UmVmLmN1cnJlbnQgb3IgZG9jdW1lbnQucXVlcnlTZWxlY3RvcikgaW4gdGhlIG5ldyAke25hbWVTcGFjZX0oeyB0b2dnbGU6IHsgZWxlbWVudDogdG9nZ2xlRWxlbWVudCB9IH0pYCxcbiAgICApXG4gIH1cblxuICBjb25zdCBhZGRDbGFzc05hbWUgPSAoKSA9PlxuICAgICF0b2dnbGUuZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnModG9nZ2xlLmNsYXNzTmFtZSkgJiYgdG9nZ2xlLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCh0b2dnbGUuY2xhc3NOYW1lKVxuXG4gIGNvbnN0IHJlbW92ZUNsYXNzTmFtZSA9ICgpID0+XG4gICAgdG9nZ2xlLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKHRvZ2dsZS5jbGFzc05hbWUpICYmIHRvZ2dsZS5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUodG9nZ2xlLmNsYXNzTmFtZSlcblxuICBTY2VuZS5vbignZW50ZXInLCBmdW5jdGlvbigpIHtcbiAgICBhZGRDbGFzc05hbWUoKVxuICB9KVxuXG4gIFNjZW5lLm9uKCdhZGQnLCBmdW5jdGlvbigpIHtcbiAgICBpZiAoU2NlbmUuc3RhdGUoKSA9PT0gJ0RVUklORycpIHtcbiAgICAgIGFkZENsYXNzTmFtZSgpXG4gICAgfVxuICB9KVxuXG4gIFNjZW5lLm9uKCdsZWF2ZScsIGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgaWYgKCF0b2dnbGUucmV2ZXJzZSAmJiBkdXJhdGlvbikge1xuICAgICAgLy8gbmVlZHMgdG8gYmUgYmFzZWQgb24gd2hldGhlciBvciBub3Qgd2UgaGF2ZSBhIGR1cmF0aW9uXG4gICAgICBldmVudC5zY3JvbGxEaXJlY3Rpb24gPT09ICdSRVZFUlNFJyAmJiByZW1vdmVDbGFzc05hbWUoKVxuICAgIH0gZWxzZSB7XG4gICAgICByZW1vdmVDbGFzc05hbWUoKVxuICAgIH1cbiAgfSlcblxuICBTY2VuZS5vbigncmVtb3ZlJywgZnVuY3Rpb24oKSB7XG4gICAgcmVtb3ZlQ2xhc3NOYW1lKClcbiAgfSlcbn1cblxuY29uc3Qgc2V0VHdlZW4gPSAoU2NlbmUsIG9wdGlvbnMpID0+IHtcbiAgY29uc3QgZ3NhcCA9IHtcbiAgICBmb3J3YXJkU3BlZWQ6IDEsXG4gICAgcmV2ZXJzZVNwZWVkOiAxLFxuICAgIHRpbWVsaW5lOiBudWxsLFxuICAgIC4uLm9wdGlvbnMsXG4gIH1cblxuICBpZiAoIWdzYXAudGltZWxpbmUpIHtcbiAgICBlcnJvckxvZyhcbiAgICAgIG5hbWVTcGFjZSxcbiAgICAgIGBCZSBzdXJlIHRvIHNldCBhIGNvbnN0IHRsID0gZ3NhcC50aW1lbGluZSh7IHBhdXNlZDogdHJ1ZSB9KSBpbiB0aGUgbmV3ICR7bmFtZVNwYWNlfSh7IGdzYXA6IHsgdGltZWxpbmU6IHRsIH0gfSlgLFxuICAgIClcbiAgfVxuXG4gIFNjZW5lLm9uKCdwcm9ncmVzcycsIGZ1bmN0aW9uKCkge1xuICAgIHVwZGF0ZVR3ZWVuUHJvZ3Jlc3MoU2NlbmUsIGdzYXAudGltZWxpbmUsIGdzYXAuZm9yd2FyZFNwZWVkLCBnc2FwLnJldmVyc2VTcGVlZClcbiAgfSlcblxuICBTY2VuZS5vbigncmVtb3ZlJywgZnVuY3Rpb24oKSB7XG4gICAgcmVtb3ZlVHdlZW4oZ3NhcC50aW1lbGluZSlcbiAgfSlcbn1cblxuaW50ZXJmYWNlIElTY3JvbGxTY2VuZVRvZ2dsZSBleHRlbmRzIElTY3JvbGxPYnNlcnZlclRvZ2dsZSB7XG4gIC8qKlxuICAgKiByZXZlcnNlXG4gICAqIEBkZXNjIFNwZWNpZnkgdGhlIGNsYXNzTmFtZSBzaG91bGQgYmUgcmVtb3ZlZCBhZnRlciB0aGUgZHVyYXRpb24gb2Ygc2NlbmUgaXMgbWV0LiBPbmx5IGFwcGxpZXMgaWYgc2NlbmUgaGFzIGR1cmF0aW9uLlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEBleGFtcGxlXG4gICAqIHRvZ2dsZTogeyByZXZlcnNlOiB0cnVlIH1cbiAgICovXG4gIHJldmVyc2U/OiBib29sZWFuXG59XG5cbmludGVyZmFjZSBJU2Nyb2xsU2NlbmUge1xuICAvKipcbiAgICogYnJlYWtwb2ludHNcbiAgICogQGRlc2MgVXNlIHRvIHNldCByZXNwb25zaXZlbmVzcyBvZiB0aGUgbmV3IFNjcm9sbE1hZ2ljLlNjZW5lLCBtb2JpbGUtZmlyc3RcbiAgICogQHR5cGUgb2JqZWN0XG4gICAqIEBleGFtcGxlXG4gICAqIGJyZWFrcG9pbnRzOiB7IDA6IGZhbHNlLCA3Njg6IHRydWUgfVxuICAgKi9cbiAgYnJlYWtwb2ludHM/OiBvYmplY3RcblxuICAvKipcbiAgICogY29udHJvbGxlclxuICAgKiBAZGVzYyBFeHRyYSBvcHRpb25zIHRvIHBhc3MgdGhlIG5ldyBTY3JvbGxNYWdpYy5Db250cm9sbGVyLCBsaWtlIHZlcnRpY2FsLCBldGMuXG4gICAqIEB0eXBlIG9iamVjdFxuICAgKiBAZXhhbXBsZVxuICAgKiBjb250cm9sbGVyOiB7IHZlcnRpY2FsOiBmYWxzZSB9XG4gICAqL1xuICBjb250cm9sbGVyPzogb2JqZWN0XG5cbiAgLyoqXG4gICAqIGR1cmF0aW9uXG4gICAqIEBkZXNjIFVzZSB0byBzZXQgcmVzcG9uc2l2ZW5lc3Mgb2YgdGhlIG5ldyBTY3JvbGxNYWdpYy5TY2VuZSwgbW9iaWxlLWZpcnN0IChpZiBzZXR0aW5nIGJyZWFrcG9pbnRzKVxuICAgKiBNdXN0IGJlIHN0cmluZyBmb3IgcGVyY2VudGFnZSwgYW5kIG51bWJlciBmb3IgcGl4ZWwuXG4gICAqIEB0eXBlIG9iamVjdFxuICAgKiBAZXhhbXBsZVxuICAgKiBkdXJhdGlvbjogJzEwMCUnID0gMTAwdmhcbiAgICogZHVyYXRpb246IDEwMCA9IDEwMHB4XG4gICAqIGR1cmF0aW9uOiB7IDA6ICc1MCUnLCA3Njg6ICcxMDAlIH0gLy8gPSBTY3JvbGxTY2VuZSBsYXN0cyA1MHZoIG9uIG1vYmlsZSwgMTAwJSBhZnRlclxuICAgKi9cbiAgZHVyYXRpb24/OiBzdHJpbmcgfCBudW1iZXIgfCBvYmplY3RcblxuICAvKipcbiAgICogZ3NhcFxuICAgKiBAZGVzYyBVc2UgdG8gc2V0IG9wdGlvbnMgZm9yIHRoZSBnc2FwIGFuaW1hdGlvbiBvZiB0aGUgU2Nyb2xsT2JzZXJ2ZXIuXG4gICAqIEB0eXBlIG9iamVjdFxuICAgKiBAZXhhbXBsZVxuICAgKiBnc2FwOiB7IHRpbWVsaW5lOiBteVRpbWVsaW5lLCB5b3lvOiB0cnVlLCByZXZlcnNlU3BlZWQ6IDIgfVxuICAgKi9cbiAgZ3NhcD86IElTY3JvbGxPYnNlcnZlckdzYXBcblxuICAvKipcbiAgICogdHJpZ2dlckhvb2tcbiAgICogQGRlc2MgU2V0IHRoZSBvZmZzZXQgb2YgdGhlIFNjcm9sbE1hZ2ljIHNjZW5lLlxuICAgKiBAdHlwZSAgbnVtYmVyIHwgc3RyaW5nXG4gICAqIEBkZWZhdWx0dmFsdWUgMFxuICAgKiBAZXhhbXBsZVxuICAgKiBvZmZzZXQ6IDEwMFxuICAgKiBvZmZzZXQ6ICcxMCUnXG4gICAqL1xuICBvZmZzZXQ/OiBudW1iZXIgfCBzdHJpbmdcblxuICAvKipcbiAgICogc2NlbmVcbiAgICogQGRlc2MgRXh0cmEgb3B0aW9ucyB0byBwYXNzIHRoZSBuZXcgU2Nyb2xsTWFnaWMuU2NlbmUsIGxpa2UgbG9nTGV2ZWwsIGV0Yy5cbiAgICogQHR5cGUgb2JqZWN0XG4gICAqIEBleGFtcGxlXG4gICAqIHNjZW5lOiB7IGxvZ0xldmVsOiAyIH1cbiAgICovXG4gIHNjZW5lPzogb2JqZWN0XG5cbiAgLyoqXG4gICAqIHRvZ2dsZVxuICAgKiBAZGVzYyBVc2UgdG8gc2V0IHRoZSBvcHRpb25zIGZvciB0aGUgdG9nZ2xpbmcgb2YgYSBjbGFzc05hbWVcbiAgICogQHR5cGUgb2JqZWN0XG4gICAqIEBleGFtcGxlXG4gICAqIHRvZ2dsZTogeyBlbGVtZW50OiBjb250YWluZXJSZWYuY3VycmVudCwgY2xhc3NOYW1lOiAnbGV0cy1kby10aGlzJyB9XG4gICAqL1xuICB0b2dnbGU/OiBJU2Nyb2xsU2NlbmVUb2dnbGVcblxuICAvKipcbiAgICogdHJpZ2dlckVsZW1lbnRcbiAgICogQGRlc2MgU2V0IHRoZSBlbGVtZW50IHlvdSB3aXNoIHRvIHRyaWdnZXIgZXZlbnRzIGJhc2VkIHVwb24sIHRoZSBvYnNlcnZlZCBlbGVtZW50LlxuICAgKiBAdHlwZSAgSFRNTEVsZW1lbnQgfCBhbnlcbiAgICogQGV4YW1wbGVcbiAgICogdHJpZ2dlckVsZW1lbnQ6IHRyaWdnZXJSZWYuY3VycmVudFxuICAgKi9cbiAgdHJpZ2dlckVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgYW55XG5cbiAgLyoqXG4gICAqIHRyaWdnZXJIb29rXG4gICAqIEBkZXNjIFNldCB0aGUgdHJpZ2dlckhvb2sgb2YgdGhlIFNjcm9sbE1hZ2ljIHNjZW5lLlxuICAgKiBAdHlwZSAgbnVtYmVyXG4gICAqIEBkZWZhdWx0dmFsdWUgJ29uRW50ZXInXG4gICAqIEBleGFtcGxlXG4gICAqIHRyaWdnZXJIb29rOiAwLjVcbiAgICovXG4gIHRyaWdnZXJIb29rPzogbnVtYmVyIHwgc3RyaW5nXG5cbiAgLyoqXG4gICAqIHVzZUdsb2JhbENvbnRyb2xsZXJcbiAgICogQGRlc2MgQ2hvc2Ugd2hldGhlciBvciBub3QgdG8gdXNlIHRoZSBnbG9iYWxDb250cm9sbGVyIHByb3ZpZGVkIGZvciB5b3UsIG9yIGEgZnJlc2ggbmV3IFNjcm9sbE1hZ2ljLkNvbnRyb2xsZXIgaW5zdGFuY2UuXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHRWYWx1ZSB0cnVlXG4gICAqIEBleGFtcGxlXG4gICAqIHVzZUdsb2JhbENvbnRyb2xsZXI6IGZhbHNlXG4gICAqL1xuICB1c2VHbG9iYWxDb250cm9sbGVyPzogYm9vbGVhblxufVxuXG4vLyBhZGQgY29udHJvbGxlciB2YXJcbmxldCBnbG9iYWxDb250cm9sbGVyXG5cbmNvbnN0IFNjcm9sbFNjZW5lID0gZnVuY3Rpb24oXG4gIHRoaXM6IGFueSxcbiAge1xuICAgIGJyZWFrcG9pbnRzLFxuICAgIGNvbnRyb2xsZXIgPSB7fSxcbiAgICBkdXJhdGlvbixcbiAgICBnc2FwLFxuICAgIG9mZnNldCA9IDAsXG4gICAgc2NlbmUgPSB7fSxcbiAgICB0b2dnbGUsXG4gICAgdHJpZ2dlckVsZW1lbnQsXG4gICAgdHJpZ2dlckhvb2sgPSAnb25FbnRlcicsXG4gICAgdXNlR2xvYmFsQ29udHJvbGxlciA9IHRydWUsXG4gIH06IElTY3JvbGxTY2VuZSxcbikge1xuICBsZXQgbG9jYWxDb250cm9sbGVyXG5cbiAgLy8gY2hlY2sgaWYgdXNpbmcgYSBsb2NhbCBjb250cm9sbGVyXG4gIGlmICghdXNlR2xvYmFsQ29udHJvbGxlcikge1xuICAgIGxvY2FsQ29udHJvbGxlciA9IG5ldyBTY3JvbGxNYWdpYy5Db250cm9sbGVyKGNvbnRyb2xsZXIpXG4gIH1cblxuICAvLyBtb3VudCBjb250cm9sbGVyXG4gIGlmICghZ2xvYmFsQ29udHJvbGxlciAmJiB1c2VHbG9iYWxDb250cm9sbGVyKSB7XG4gICAgZ2xvYmFsQ29udHJvbGxlciA9IG5ldyBTY3JvbGxNYWdpYy5Db250cm9sbGVyKGNvbnRyb2xsZXIpXG4gIH1cblxuICBjb25zdCBjb250cm9sbGVySXNVc2UgPSBsb2NhbENvbnRyb2xsZXIgPyBsb2NhbENvbnRyb2xsZXIgOiBnbG9iYWxDb250cm9sbGVyXG5cbiAgaWYgKCF0cmlnZ2VyRWxlbWVudCkge1xuICAgIGVycm9yTG9nKFxuICAgICAgbmFtZVNwYWNlLFxuICAgICAgYEJlIHN1cmUgdG8gc2V0IGEgY29uc3QgdHJpZ2dlckVsZW1lbnQgPSAocmVhY3RSZWYuY3VycmVudCBvciBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKSBpbiB0aGUgbmV3ICR7bmFtZVNwYWNlfSh7IHRyaWdnZXJFbGVtZW50OiB0cmlnZ2VyRWxlbWVudCB9KWAsXG4gICAgKVxuICB9XG5cbiAgY29uc3QgU2NlbmUgPSBuZXcgU2Nyb2xsTWFnaWMuU2NlbmUoe1xuICAgIHRyaWdnZXJFbGVtZW50LFxuICAgIHRyaWdnZXJIb29rLFxuICAgIG9mZnNldCxcbiAgICAuLi5zY2VuZSxcbiAgfSlcblxuICBpZiAoZHVyYXRpb24pIHtcbiAgICBzZXREdXJhdGlvbihTY2VuZSwgZHVyYXRpb24pXG4gIH1cblxuICBpZiAodG9nZ2xlICYmIGlzT2JqZWN0KHRvZ2dsZSkpIHtcbiAgICBzZXRDbGFzc05hbWUoU2NlbmUsIHRvZ2dsZSwgZHVyYXRpb24pXG4gIH1cblxuICBpZiAoZ3NhcCAmJiBpc09iamVjdChnc2FwKSkge1xuICAgIHNldFR3ZWVuKFNjZW5lLCBnc2FwKVxuICB9XG5cbiAgdGhpcy5pbml0ID0gZnVuY3Rpb24oKSB7XG4gICAgY29udHJvbGxlcklzVXNlICYmIFNjZW5lLmFkZFRvKGNvbnRyb2xsZXJJc1VzZSlcbiAgfVxuXG4gIHRoaXMuZGVzdHJveSA9IGZ1bmN0aW9uKCkge1xuICAgIFNjZW5lLnJlbW92ZSgpXG4gIH1cblxuICB0aGlzLlNjZW5lID0gU2NlbmVcbiAgdGhpcy5Db250cm9sbGVyID0gY29udHJvbGxlcklzVXNlXG5cbiAgc2Nyb2xsQW5pbWF0aW9uSW5pdChicmVha3BvaW50cywgdGhpcy5pbml0LCB0aGlzLmRlc3Ryb3kpXG59XG5cbmV4cG9ydCB7IFNjcm9sbFNjZW5lIH1cbiJdfQ==

@@ -1,2 +0,1 @@

/// <reference types="react" />
export interface IScrollObserverGsap {

@@ -61,7 +60,7 @@ /**

* @desc Specify the element you wish to toggle the className on.
* @type HTMLElement | React.ReactNode | any
* @type HTMLElement | any
* @example
* toggle: { element: containerRef.current }
*/
element: HTMLElement | React.ReactNode | any;
element: HTMLElement | any;
}

@@ -72,7 +71,7 @@ export interface IScrollObserverVideo {

* @desc Specify the video element you wish to interact with.
* @type HTMLElement | React.ReactNode | any
* @type HTMLElement | any
* @example
* video: { element: videoRef.current }
*/
element: HTMLElement | React.ReactNode | any;
element: HTMLElement | any;
}

@@ -152,7 +151,7 @@ interface IScrollObserver {

* @desc Set the element you wish to trigger events based upon, the observed element.
* @type HTMLElement | React.ReactNode | any
* @type HTMLElement | any
* @example
* triggerElement: triggerRef.current
*/
triggerElement: HTMLElement | React.ReactNode | any;
triggerElement: HTMLElement | any;
/**

@@ -159,0 +158,0 @@ * useDuration

@@ -302,2 +302,2 @@ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";

export { ScrollObserver };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TY3JvbGxPYnNlcnZlci50cyJdLCJuYW1lcyI6WyJlcnJvckxvZyIsImlzRnVuYyIsImlzT2JqZWN0Iiwic2Nyb2xsQW5pbWF0aW9uSW5pdCIsImNyZWF0ZUFycmF5IiwiaXNTdHJpbmciLCJzdHJpbmdDb250YWlucyIsIm5hbWVTcGFjZSIsInN0YXRlIiwidmlzaWJsZSIsImFscmVhZHlGaXJlZCIsInNldENsYXNzTmFtZSIsIm9wdGlvbnMiLCJ0b2dnbGUiLCJlbGVtZW50IiwiY2xhc3NOYW1lIiwiYWRkIiwiY2xhc3NMaXN0IiwiY29udGFpbnMiLCJyZW1vdmUiLCJ1cGRhdGUiLCJzZXRTdGF0ZSIsInNldFR3ZWVuIiwiZ3NhcCIsInRpbWVsaW5lIiwieW95byIsInNwZWVkIiwicmV2ZXJzZVNwZWVkIiwiZGVsYXkiLCJ0bCIsInJlcGVhdCIsInJlcGVhdERlbGF5IiwicGxheSIsInRpbWVTY2FsZSIsInBhdXNlIiwicmV2ZXJzZSIsImtpbGwiLCJzY3J1YiIsImludGVyc2VjdGlvblJhdGlvIiwicHJvZ3Jlc3MiLCJzZXRQbGF5ZXIiLCJ2aWRlbyIsInNldEZ1bmN0aW9uIiwiY2FsbGJhY2siLCJhY3RpdmUiLCJub3RBY3RpdmUiLCJTY3JvbGxPYnNlcnZlciIsImJyZWFrcG9pbnRzIiwiZGVzdHJveUltbWVkaWF0ZWx5Iiwib2JzZXJ2ZXIiLCJvZmZzZXQiLCJ3aGVuVmlzaWJsZSIsInRocmVzaG9sZHMiLCJ0cmlnZ2VyRWxlbWVudCIsInVzZUR1cmF0aW9uIiwiJHRoaXMiLCJzZXRUb2dnbGUiLCJzZXRHc2FwIiwic2V0VmlkZW8iLCJzZXRDYWxsYmFjayIsInJhdGlvIiwic2V0Um9vdE1hcmdpbiIsIk1hdGgiLCJhYnMiLCJwYXJzZUZsb2F0Iiwib2JzZXJ2ZXJDYWxsYmFjayIsImVudHJpZXMiLCJmb3JFYWNoIiwiaXNJbnRlcnNlY3RpbmciLCJkZXN0cm95IiwiZ2V0UGVyY2VudGFnZSIsInZhbHVlIiwicGFyc2VkIiwicGFyc2VJbnQiLCJyZXBsYWNlIiwiZ2V0VGhyZXNvbGRzIiwiZGVmYXVsdHMiLCJvbmUiLCJyZXR1cm5lZFRocmVzaG9sZHMiLCJPYnNlcnZlciIsIkludGVyc2VjdGlvbk9ic2VydmVyIiwidGhyZXNob2xkIiwicm9vdE1hcmdpbiIsImluaXQiLCJvYnNlcnZlIiwidW5vYnNlcnZlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxTQUFTQSxRQUFULEVBQW1CQyxNQUFuQixFQUEyQkMsUUFBM0IsRUFBcUNDLG1CQUFyQyxFQUEwREMsV0FBMUQsRUFBdUVDLFFBQXZFLEVBQWlGQyxjQUFqRjtBQUVBLElBQU1DLFNBQVMsR0FBRyxnQkFBbEI7O0FBR0EsSUFBTUMsS0FBSyxHQUFHLFNBQVJBLEtBQVEsQ0FBU0MsT0FBVCxFQUFrQkMsWUFBbEIsRUFBZ0M7QUFDNUMsT0FBS0QsT0FBTCxHQUFlLEtBQWY7QUFDQSxPQUFLQyxZQUFMLEdBQW9CLEtBQXBCO0FBQ0QsQ0FIRDs7QUFLQSxJQUFNQyxZQUFZLEdBQUcsU0FBZkEsWUFBZSxDQUFvQkMsT0FBcEIsRUFBNkI7QUFDaEQsTUFBTUMsTUFBTTtBQUNWQyxJQUFBQSxPQUFPLEVBQUUsSUFEQztBQUVWQyxJQUFBQSxTQUFTLEVBQUU7QUFGRCxLQUdQSCxPQUhPLENBQVo7O0FBTUEsTUFBSSxDQUFDQyxNQUFNLENBQUNDLE9BQVosRUFBcUI7QUFDbkJkLElBQUFBLFFBQVEsQ0FDTk8sU0FETSwyR0FFNEZBLFNBRjVGLDhDQUFSO0FBSUQ7O0FBRUQsTUFBSSxDQUFDTSxNQUFNLENBQUNFLFNBQVosRUFBdUI7QUFDckJmLElBQUFBLFFBQVEsQ0FDTk8sU0FETSx1RUFFd0RBLFNBRnhELCtDQUFSO0FBSUQ7O0FBRUQsT0FBS1MsR0FBTCxHQUFXLFlBQVc7QUFFcEIsS0FBQ0gsTUFBTSxDQUFDQyxPQUFQLENBQWVHLFNBQWYsQ0FBeUJDLFFBQXpCLENBQWtDTCxNQUFNLENBQUNFLFNBQXpDLENBQUQsSUFBd0RGLE1BQU0sQ0FBQ0MsT0FBUCxDQUFlRyxTQUFmLENBQXlC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RyxXQUFKLEVBQWlCO0FBQ2Z3QixNQUFBQSxrQkFBa0IsR0FBR0YsUUFBUSxDQUFDckQsSUFBOUI7QUFDRDs7QUFFRCxRQUFJNkIsVUFBSixFQUFnQjtBQUNkMEIsTUFBQUEsa0JBQWtCLEdBQUcxRSxXQUFXLENBQUNnRCxVQUFELENBQWhDO0FBQ0Q7O0FBRUQsV0FBTzBCLGtCQUFQO0FBQ0QsR0FyQkQ7O0FBdUJBLE1BQU1DLFFBQVEsR0FBRyxJQUFJQyxvQkFBSixDQUF5QmYsZ0JBQXpCO0FBQ2ZnQixJQUFBQSxTQUFTLEVBQUVOLFlBQVksRUFEUjtBQUVmTyxJQUFBQSxVQUFVLEVBQUVyQjtBQUZHLEtBR1paLFFBSFksRUFBakI7O0FBTUEsT0FBS2tDLElBQUwsR0FBWSxZQUFXO0FBQ3JCSixJQUFBQSxRQUFRLENBQUNLLE9BQVQsQ0FBaUIvQixjQUFqQjtBQUNELEdBRkQ7O0FBSUEsT0FBS2dCLE9BQUwsR0FBZSxZQUFXO0FBQ3hCLFFBQUloQixjQUFjLElBQUkwQixRQUF0QixFQUFnQztBQUM5QixVQUFJdkIsU0FBSixFQUFlO0FBQ2JBLFFBQUFBLFNBQVMsQ0FBQ3JDLE1BQVY7QUFDRDs7QUFFRCxVQUFJc0MsT0FBSixFQUFhO0FBQ1hBLFFBQUFBLE9BQU8sQ0FBQ3JCLElBQVI7QUFDRDs7QUFFRCxVQUFJc0IsUUFBSixFQUFjO0FBQ1pBLFFBQUFBLFFBQVEsQ0FBQ3RCLElBQVQ7QUFDRDs7QUFFRDJDLE1BQUFBLFFBQVEsQ0FBQ00sU0FBVCxDQUFtQmhDLGNBQW5CO0FBQ0Q7QUFDRixHQWhCRDs7QUFrQkFsRCxFQUFBQSxtQkFBbUIsQ0FBQzRDLFdBQUQsRUFBYyxLQUFLb0MsSUFBbkIsRUFBeUIsS0FBS2QsT0FBOUIsQ0FBbkI7QUFDRCxDQXhKRDs7QUEwSkEsU0FBU3ZCLGNBQVQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlcnJvckxvZywgaXNGdW5jLCBpc09iamVjdCwgc2Nyb2xsQW5pbWF0aW9uSW5pdCwgY3JlYXRlQXJyYXksIGlzU3RyaW5nLCBzdHJpbmdDb250YWlucyB9IGZyb20gJy4vaGVscGVycydcblxuY29uc3QgbmFtZVNwYWNlID0gJ1Njcm9sbE9ic2VydmVyJ1xuXG4vLyBAdHMtaWdub3JlXG5jb25zdCBzdGF0ZSA9IGZ1bmN0aW9uKHZpc2libGUsIGFscmVhZHlGaXJlZCkge1xuICB0aGlzLnZpc2libGUgPSBmYWxzZVxuICB0aGlzLmFscmVhZHlGaXJlZCA9IGZhbHNlXG59XG5cbmNvbnN0IHNldENsYXNzTmFtZSA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgb3B0aW9ucykge1xuICBjb25zdCB0b2dnbGUgPSB7XG4gICAgZWxlbWVudDogbnVsbCxcbiAgICBjbGFzc05hbWU6IG51bGwsXG4gICAgLi4ub3B0aW9ucyxcbiAgfVxuXG4gIGlmICghdG9nZ2xlLmVsZW1lbnQpIHtcbiAgICBlcnJvckxvZyhcbiAgICAgIG5hbWVTcGFjZSxcbiAgICAgIGBCZSBzdXJlIHRvIHNldCBhIGNvbnN0IHRvZ2dsZUVsZW1lbnQgPSAocmVhY3RSZWYuY3VycmVudCBvciBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKSBpbiB0aGUgbmV3ICR7bmFtZVNwYWNlfSh7IHRvZ2dsZTogeyBlbGVtZW50OiB0b2dnbGVFbGVtZW50IH0gfSlgLFxuICAgIClcbiAgfVxuXG4gIGlmICghdG9nZ2xlLmNsYXNzTmFtZSkge1xuICAgIGVycm9yTG9nKFxuICAgICAgbmFtZVNwYWNlLFxuICAgICAgYEJlIHN1cmUgdG8gc2V0IHRoZSBjbGFzc05hbWUgeW91IHdhbnQgdG8gdG9nZ2xlIGluIHRoZSBuZXcgJHtuYW1lU3BhY2V9KHsgdG9nZ2xlOiB7IGNsYXNzTmFtZTogXCJteS1jbGFzc1wiIH0gfSlgLFxuICAgIClcbiAgfVxuXG4gIHRoaXMuYWRkID0gZnVuY3Rpb24oKSB7XG4gICAgLyogYWRkIGNsYXNzTmFtZSBpZiBpdCdzIG5vdCBhbHJlYWR5IHRoZXJlICovXG4gICAgIXRvZ2dsZS5lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyh0b2dnbGUuY2xhc3NOYW1lKSAmJiB0b2dnbGUuZWxlbWVudC5jbGFzc0xpc3QuYWRkKHRvZ2dsZS5jbGFzc05hbWUpXG4gIH1cblxuICB0aGlzLnJlbW92ZSA9IGZ1bmN0aW9uKCkge1xuICAgIC8qIHJlbW92ZSBjbGFzc05hbWUgaWYgaXQncyB0aGVyZSAqL1xuICAgIHRvZ2dsZS5lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyh0b2dnbGUuY2xhc3NOYW1lKSAmJiB0b2dnbGUuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKHRvZ2dsZS5jbGFzc05hbWUpXG4gIH1cblxuICB0aGlzLnVwZGF0ZSA9IGZ1bmN0aW9uKHNldFN0YXRlKSB7XG4gICAgaWYgKCFzZXRTdGF0ZS5hbHJlYWR5RmlyZWQgJiYgc2V0U3RhdGUudmlzaWJsZSkge1xuICAgICAgdGhpcy5hZGQoKVxuICAgICAgc2V0U3RhdGUuYWxyZWFkeUZpcmVkID0gdHJ1ZVxuICAgIH1cblxuICAgIGlmIChzZXRTdGF0ZS5hbHJlYWR5RmlyZWQgJiYgIXNldFN0YXRlLnZpc2libGUpIHtcbiAgICAgIHRoaXMucmVtb3ZlKClcbiAgICAgIHNldFN0YXRlLmFscmVhZHlGaXJlZCA9IGZhbHNlXG4gICAgfVxuICB9XG59XG5cbmNvbnN0IHNldFR3ZWVuID0gZnVuY3Rpb24odGhpczogYW55LCBvcHRpb25zKSB7XG4gIGNvbnN0IGdzYXAgPSB7XG4gICAgdGltZWxpbmU6IG51bGwsXG4gICAgeW95bzogZmFsc2UsXG4gICAgc3BlZWQ6IDEsXG4gICAgcmV2ZXJzZVNwZWVkOiAxLFxuICAgIGRlbGF5OiAyLFxuICAgIC4uLm9wdGlvbnMsXG4gIH1cblxuICBpZiAoIWdzYXAudGltZWxpbmUpIHtcbiAgICBlcnJvckxvZyhcbiAgICAgIG5hbWVTcGFjZSxcbiAgICAgIGBCZSBzdXJlIHRvIHNldCBhIGNvbnN0IHRsID0gZ3NhcC50aW1lbGluZSh7IHBhdXNlZDogdHJ1ZSB9KSBpbiB0aGUgbmV3ICR7bmFtZVNwYWNlfSh7IGdzYXA6IHsgdGltZWxpbmU6IHRsIH0gfSlgLFxuICAgIClcbiAgfVxuXG4gIGNvbnN0IHRsID0gZ3NhcC50aW1lbGluZVxuXG4gIGlmIChnc2FwLnlveW8pIHtcbiAgICB0bC5yZXBlYXQoLTEpXG4gICAgICAueW95byhnc2FwLnlveW8pXG4gICAgICAucmVwZWF0RGVsYXkoZ3NhcC5kZWxheSlcbiAgfVxuXG4gIHRoaXMucGxheSA9IGZ1bmN0aW9uKCkge1xuICAgIHRsLnRpbWVTY2FsZShnc2FwLnNwZWVkKS5wbGF5KClcbiAgfVxuXG4gIHRoaXMucGF1c2UgPSBmdW5jdGlvbigpIHtcbiAgICB0bC5wYXVzZSgpXG4gIH1cblxuICB0aGlzLnJldmVyc2UgPSBmdW5jdGlvbigpIHtcbiAgICB0bC50aW1lU2NhbGUoZ3NhcC5yZXZlcnNlU3BlZWQpLnJldmVyc2UoKVxuICB9XG5cbiAgdGhpcy5raWxsID0gZnVuY3Rpb24oKSB7XG4gICAgaWYgKHRsKSB7XG4gICAgICB0bC5wYXVzZSgwKVxuICAgICAgdGwua2lsbCgpXG4gICAgfVxuICB9XG5cbiAgdGhpcy51cGRhdGUgPSBmdW5jdGlvbihzZXRTdGF0ZSkge1xuICAgIGlmICghc2V0U3RhdGUuYWxyZWFkeUZpcmVkICYmIHNldFN0YXRlLnZpc2libGUpIHtcbiAgICAgIHRoaXMucGxheSgpXG4gICAgICBzZXRTdGF0ZS5hbHJlYWR5RmlyZWQgPSB0cnVlXG4gICAgfVxuXG4gICAgaWYgKHNldFN0YXRlLmFscmVhZHlGaXJlZCAmJiAhc2V0U3RhdGUudmlzaWJsZSkge1xuICAgICAgZ3NhcC55b3lvID8gdGhpcy5wYXVzZSgpIDogdGhpcy5yZXZlcnNlKClcbiAgICAgIHNldFN0YXRlLmFscmVhZHlGaXJlZCA9IGZhbHNlXG4gICAgfVxuICB9XG5cbiAgdGhpcy5zY3J1YiA9IGZ1bmN0aW9uKGludGVyc2VjdGlvblJhdGlvKSB7XG4gICAgdGwucHJvZ3Jlc3MoaW50ZXJzZWN0aW9uUmF0aW8pXG4gIH1cbn1cblxuY29uc3Qgc2V0UGxheWVyID0gZnVuY3Rpb24odGhpczogYW55LCBvcHRpb25zKSB7XG4gIGNvbnN0IHZpZGVvID0ge1xuICAgIGVsZW1lbnQ6IG51bGwsXG4gICAgLi4ub3B0aW9ucyxcbiAgfVxuXG4gIGlmICghdmlkZW8uZWxlbWVudCkge1xuICAgIGVycm9yTG9nKFxuICAgICAgbmFtZVNwYWNlLFxuICAgICAgYEJlIHN1cmUgdG8gc2V0IGEgdmlkZW8gZWxlbWVudCBpbiB0aGUgbmV3ICR7bmFtZVNwYWNlfSh7IHZpZGVvOiB7IGVsZW1lbnQ6IHZpZGVvUmVmLmN1cnJlbnQgfSB9KWAsXG4gICAgKVxuICB9XG5cbiAgdGhpcy5wbGF5ID0gZnVuY3Rpb24oKSB7XG4gICAgdmlkZW8uZWxlbWVudC5wbGF5KClcbiAgfVxuXG4gIHRoaXMucGF1c2UgPSBmdW5jdGlvbigpIHtcbiAgICB2aWRlby5lbGVtZW50LnBhdXNlKClcbiAgfVxuXG4gIHRoaXMua2lsbCA9IGZ1bmN0aW9uKCkge1xuICAgIHZpZGVvLmVsZW1lbnQucGF1c2UoKVxuICB9XG5cbiAgdGhpcy51cGRhdGUgPSBmdW5jdGlvbihzZXRTdGF0ZSkge1xuICAgIGlmICghc2V0U3RhdGUuYWxyZWFkeUZpcmVkICYmIHNldFN0YXRlLnZpc2libGUpIHtcbiAgICAgIHRoaXMucGxheSgpXG4gICAgICBzZXRTdGF0ZS5hbHJlYWR5RmlyZWQgPSB0cnVlXG4gICAgfVxuXG4gICAgaWYgKHNldFN0YXRlLmFscmVhZHlGaXJlZCAmJiAhc2V0U3RhdGUudmlzaWJsZSkge1xuICAgICAgdGhpcy5wYXVzZSgpXG4gICAgICBzZXRTdGF0ZS5hbHJlYWR5RmlyZWQgPSBmYWxzZVxuICAgIH1cbiAgfVxufVxuXG5jb25zdCBzZXRGdW5jdGlvbjogYW55ID0gZnVuY3Rpb24odGhpczogYW55LCBvcHRpb25zKSB7XG4gIGNvbnN0IGNhbGxiYWNrID0ge1xuICAgIGFjdGl2ZTogbnVsbCxcbiAgICBub3RBY3RpdmU6IG51bGwsXG4gICAgLi4ub3B0aW9ucyxcbiAgfVxuXG4gIGlmICghY2FsbGJhY2suYWN0aXZlICYmICFjYWxsYmFjay5ub3RBY3RpdmUpIHtcbiAgICBlcnJvckxvZyhcbiAgICAgIG5hbWVTcGFjZSxcbiAgICAgIGBCZSBzdXJlIHRvIHNldCBhIGNhbGxiYWNrIGFjdGl2ZSBvciBub3RBY3RpdmUgZnVuY3Rpb24gaW4gdGhlIG5ldyAke25hbWVTcGFjZX0oeyBjYWxsYmFjazogeyBhY3RpdmU6ICgpID0+ICgpIH0gfSlgLFxuICAgIClcbiAgfVxuXG4gIGlmICgoY2FsbGJhY2suYWN0aXZlICYmICFpc0Z1bmMoY2FsbGJhY2suYWN0aXZlKSkgfHwgKGNhbGxiYWNrLm5vdEFjdGl2ZSAmJiAhaXNGdW5jKGNhbGxiYWNrLm5vdEFjdGl2ZSkpKSB7XG4gICAgZXJyb3JMb2cobmFtZVNwYWNlLCBgQmUgc3VyZSB0byBzZXQgdGhlIGNhbGxiYWNrIGFzIGEgZnVuY3Rpb24gYClcbiAgfVxuXG4gIHRoaXMudXBkYXRlID0gZnVuY3Rpb24oc2V0U3RhdGUpIHtcbiAgICBpZiAoIXNldFN0YXRlLmFscmVhZHlGaXJlZCAmJiBzZXRTdGF0ZS52aXNpYmxlICYmIGNhbGxiYWNrLmFjdGl2ZSkge1xuICAgICAgY2FsbGJhY2suYWN0aXZlKClcbiAgICAgIHNldFN0YXRlLmFscmVhZHlGaXJlZCA9IHRydWVcbiAgICB9XG5cbiAgICBpZiAoc2V0U3RhdGUuYWxyZWFkeUZpcmVkICYmICFzZXRTdGF0ZS52aXNpYmxlICYmIGNhbGxiYWNrLmFjdGl2ZSkge1xuICAgICAgY2FsbGJhY2subm90QWN0aXZlKClcbiAgICAgIHNldFN0YXRlLmFscmVhZHlGaXJlZCA9IGZhbHNlXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNjcm9sbE9ic2VydmVyR3NhcCB7XG4gIC8qKlxuICAgKiB0aW1lbGluZVxuICAgKiBAZGVzYyBJbnNlcnQgeW91ciBnc2FwLnRpbWVsaW5lIG9iamVjdCB2YXJcbiAgICogQHR5cGUgb2JqZWN0XG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IG15VGltZWxpbmUgPSBnc2FwLnRpbWVsaW5lKClcbiAgICogZ3NhcDogeyB0aW1lbGluZTogbXlUaW1lbGluZSB9XG4gICAqL1xuICB0aW1lbGluZTogYW55XG5cbiAgLyoqXG4gICAqIHlveW9cbiAgICogQGRlc2MgRG8geW91IHdhbnQgZ3NhcCBhbmltYXRpb24gdG8gbG9vcCBiYWNrIGFuZCBmb3J0aD9cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAZXhhbXBsZVxuICAgKiBnc2FwOiB7IHlveW86IHRydWUgfVxuICAgKi9cbiAgeW95bz86IGJvb2xlYW5cblxuICAvKipcbiAgICogc3BlZWRcbiAgICogQGRlc2MgVGhlIHNwZWVkIGF0IHdoaWNoIHRoZSBnc2FwIGFuaW1hdGlvbiB3aWxsIHBsYXkgcmVsYXRpdmUgdG8gaXQncyBjdXJyZW50IHNwZWVkLlxuICAgKiBAdHlwZSBudW1iZXJcbiAgICogQGRlZmF1bHQgMVxuICAgKiBAZXhhbXBsZVxuICAgKiBnc2FwOiB7IHNwZWVkOiAyIH0gLy8gPSB0d2ljZSBhcyBmYXN0XG4gICAqL1xuICBzcGVlZD86IG51bWJlclxuXG4gIC8qKlxuICAgKiBzcGVlZFxuICAgKiBAZGVzYyBUaGUgc3BlZWQgYXQgd2hpY2ggdGhlIGdzYXAgYW5pbWF0aW9uIHdpbGwgcmV2ZXJzZSByZWxhdGl2ZSB0byBpdCdzIGN1cnJlbnQgc3BlZWQuXG4gICAqIEB0eXBlIG51bWJlclxuICAgKiBAZGVmYXVsdCA0XG4gICAqIEBleGFtcGxlXG4gICAqIGdzYXA6IHsgc3BlZWQ6IDQgfSAvLyA9IDR4IGFzIGZhc3RcbiAgICovXG4gIHJldmVyc2VTcGVlZD86IG51bWJlclxuXG4gIC8qKlxuICAgKiBkZWxheVxuICAgKiBAZGVzYyBUaGUgZGVsYXkgKGluIHNlY29uZHMpIGF0IHdoaWNoIHRoZSBnc2FwIGFuaW1hdGlvbiB3YWl0IGJlZm9yZSByZXZlcnNpbmcuXG4gICAqIEB0eXBlIG51bWJlclxuICAgKiBAZGVmYXVsdCAyXG4gICAqIEBleGFtcGxlXG4gICAqIGdzYXA6IHsgZGVsYXk6IDMgfSAvLyA9IFdhaXQgMyBzZWNvbmRzXG4gICAqL1xuICBkZWxheT86IG51bWJlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTY3JvbGxPYnNlcnZlclRvZ2dsZSB7XG4gIC8qKlxuICAgKiBjbGFzc05hbWVcbiAgICogQGRlc2MgU3BlY2lmeSB0aGUgY2xhc3NOYW1lIHlvdSB3aXNoIHRvIHRvZ2dsZS5cbiAgICogQHR5cGUgc3RyaW5nXG4gICAqIEBleGFtcGxlXG4gICAqIHRvZ2dsZTogeyBjbGFzc05hbWU6ICd0dXJuLW1lLWJsdWUtYmFieScgfVxuICAgKi9cbiAgY2xhc3NOYW1lOiBzdHJpbmdcblxuICAvKipcbiAgICogZWxlbWVudFxuICAgKiBAZGVzYyBTcGVjaWZ5IHRoZSBlbGVtZW50IHlvdSB3aXNoIHRvIHRvZ2dsZSB0aGUgY2xhc3NOYW1lIG9uLlxuICAgKiBAdHlwZSBIVE1MRWxlbWVudCB8IFJlYWN0LlJlYWN0Tm9kZSB8IGFueVxuICAgKiBAZXhhbXBsZVxuICAgKiB0b2dnbGU6IHsgZWxlbWVudDogY29udGFpbmVyUmVmLmN1cnJlbnQgfVxuICAgKi9cbiAgZWxlbWVudDogSFRNTEVsZW1lbnQgfCBSZWFjdC5SZWFjdE5vZGUgfCBhbnlcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU2Nyb2xsT2JzZXJ2ZXJWaWRlbyB7XG4gIC8qKlxuICAgKiBlbGVtZW50XG4gICAqIEBkZXNjIFNwZWNpZnkgdGhlIHZpZGVvIGVsZW1lbnQgeW91IHdpc2ggdG8gaW50ZXJhY3Qgd2l0aC5cbiAgICogQHR5cGUgSFRNTEVsZW1lbnQgfCBSZWFjdC5SZWFjdE5vZGUgfCBhbnlcbiAgICogQGV4YW1wbGVcbiAgICogdmlkZW86IHsgZWxlbWVudDogdmlkZW9SZWYuY3VycmVudCB9XG4gICAqL1xuICBlbGVtZW50OiBIVE1MRWxlbWVudCB8IFJlYWN0LlJlYWN0Tm9kZSB8IGFueVxufVxuXG5pbnRlcmZhY2UgSVNjcm9sbE9ic2VydmVyIHtcbiAgLyoqXG4gICAqIGJyZWFrcG9pbnRzXG4gICAqIEBkZXNjIFVzZSB0byBzZXQgcmVzcG9uc2l2ZW5lc3Mgb2YgdGhlIFNjcm9sbE9ic2VydmVyLCBtb2JpbGUtZmlyc3RcbiAgICogQHR5cGUgb2JqZWN0XG4gICAqIEBleGFtcGxlXG4gICAqIGJyZWFrcG9pbnRzOiB7IDA6IGZhbHNlLCA3Njg6IHRydWUgfVxuICAgKi9cbiAgYnJlYWtwb2ludHM/OiBvYmplY3RcblxuICAvKipcbiAgICogY2FsbGJhY2tcbiAgICogQGRlc2MgVXNlIHRvIHNldCBhIGNhbGxiYWNrIHdoZW4gdGhlIHNjZW5lIGlzIGFjdGl2ZS5cbiAgICogQHR5cGUgb2JqZWN0XG4gICAqIEBleGFtcGxlXG4gICAqIGNhbGxiYWNrOiB7IGFjdGl2ZTogKCkgPT4gKCksIG5vdEFjdGl2ZTogKCkgPT4gKCkgfVxuICAgKi9cbiAgY2FsbGJhY2s/OiBvYmplY3RcblxuICAvKipcbiAgICogZGVzdHJveUltbWVkaWF0ZWx5XG4gICAqIEBkZXNjIFVzZSB0byBkZXN0cm95IHRoZSBzY2VuZSBpbW1lZGlhdGVseSBhZnRlciBmaXJpbmcgb25jZSB0aGUgZWxlbWVudCBpcyB2aXNpYmxlLlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBleGFtcGxlXG4gICAqIGRlc3Ryb3lJbW1lZGlhdGVseTogdHJ1ZVxuICAgKi9cbiAgZGVzdHJveUltbWVkaWF0ZWx5PzogYm9vbGVhblxuXG4gIC8qKlxuICAgKiBnc2FwXG4gICAqIEBkZXNjIFVzZSB0byBzZXQgb3B0aW9ucyBmb3IgdGhlIGdzYXAgYW5pbWF0aW9uIG9mIHRoZSBTY3JvbGxPYnNlcnZlci5cbiAgICogQHR5cGUgb2JqZWN0XG4gICAqIEBleGFtcGxlXG4gICAqIGdzYXA6IHsgdGltZWxpbmU6IG15VGltZWxpbmUsIHlveW86IHRydWUsIHJldmVyc2VTcGVlZDogMiB9XG4gICAqL1xuICBnc2FwPzogSVNjcm9sbE9ic2VydmVyR3NhcFxuXG4gIC8qKlxuICAgKiBvYnNlcnZlclxuICAgKiBAZGVzYyBFeHRyYSBvcHRpb25zIHRvIHBhc3MgdGhlIEludGVyc2VjdGlvbk9ic2VydmVyLCBsaWtlIHJvb3QsIHJvb3RNYXJnaW4sIHRocmVzaG9sZCAodG8gb3ZlcnJpZGUgdGhlIHRocmVzaG9sZHMgb3B0aW9uKVxuICAgKiBAdHlwZSBvYmplY3RcbiAgICogQGV4YW1wbGVcbiAgICogb2JzZXJ2ZXI6IHsgcm9vdE1hcmdpbjogJy01MCUgMCUnIH1cbiAgICovXG4gIG9ic2VydmVyPzogb2JqZWN0XG5cbiAgLyoqXG4gICAqIG9mZnNldFxuICAgKiBAZGVzYyBDaGFuZ2UgdGhlIG9mZnNldC4gVGhpcyB1c2VzIHJvb3RNYXJnaW4gdGh1cyBvbmx5IHdvcmtzIGFzIGEgbmVnYXRpdmUgb2Zmc2V0LlxuICAgKiBAdHlwZSBudW1iZXIgfCBzdHJpbmdcbiAgICogQGRlZmF1bHR2YWx1ZSAnMCUgMCUnXG4gICAqIEBleGFtcGxlXG4gICAqIG9mZnNldDogNTAwIC8vIHRoaXMgd2lsbCBiZSByb290TWFyZ2luOiAnLTUwMHB4IDAlJ1xuICAgKi9cbiAgb2Zmc2V0PzogbnVtYmVyIHwgc3RyaW5nXG5cbiAgLyoqXG4gICAqIHRocmVzaG9sZHNcbiAgICogQGRlc2MgU2V0IHRoZSBudW1iZXIgb2YgdGhyZXNob2xkcyB5b3Ugd2FudC5cbiAgICogQHJldHVybnMgQW4gQXJyYXkgb2YgbnVtYmVyIGZyb20gMCB0byAxLiBBZGQgMSB0byB5b3VyIG51bWJlciB0byBhY2NvdW50IGZvciAwLlxuICAgKiBAdHlwZSBudW1iZXJcbiAgICogQGV4YW1wbGVcbiAgICogdGhyZXNob2xkczogMSA9IFswLCAxXVxuICAgKiB0aHJlc2hvbGRzOiAyID0gWzAsIDAuNSwgMV1cbiAgICogdGhyZXNob2xkczogMyA9IFswLCAwLjMzLCAwLjY3LCAxXVxuICAgKiB0aHJlc2hvbGRzOiAxMDAgPSBbMCwgMC4xLCAwLjIsIC4uLiAwLjk4LCAwLjk5LCAxXVxuICAgKi9cbiAgdGhyZXNob2xkcz86IG51bWJlclxuXG4gIC8qKlxuICAgKiB0b2dnbGVcbiAgICogQGRlc2MgVXNlIHRvIHNldCB0aGUgb3B0aW9ucyBmb3IgdGhlIHRvZ2dsaW5nIG9mIGEgY2xhc3NOYW1lXG4gICAqIEB0eXBlIG9iamVjdFxuICAgKiBAZXhhbXBsZVxuICAgKiB0b2dnbGU6IHsgZWxlbWVudDogY29udGFpbmVyUmVmLmN1cnJlbnQsIGNsYXNzTmFtZTogJ2xldHMtZG8tdGhpcycgfVxuICAgKi9cbiAgdG9nZ2xlPzogSVNjcm9sbE9ic2VydmVyVG9nZ2xlXG5cbiAgLyoqXG4gICAqIHRyaWdnZXJFbGVtZW50XG4gICAqIEBkZXNjIFNldCB0aGUgZWxlbWVudCB5b3Ugd2lzaCB0byB0cmlnZ2VyIGV2ZW50cyBiYXNlZCB1cG9uLCB0aGUgb2JzZXJ2ZWQgZWxlbWVudC5cbiAgICogQHR5cGUgSFRNTEVsZW1lbnQgfCBSZWFjdC5SZWFjdE5vZGUgfCBhbnlcbiAgICogQGV4YW1wbGVcbiAgICogdHJpZ2dlckVsZW1lbnQ6IHRyaWdnZXJSZWYuY3VycmVudFxuICAgKi9cbiAgdHJpZ2dlckVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgUmVhY3QuUmVhY3ROb2RlIHwgYW55XG5cbiAgLyoqXG4gICAqIHVzZUR1cmF0aW9uXG4gICAqIEBkZXNjIFVzZSB0aGUgcGVyY2VudGFnZSBvZiBlbGVtZW50IHZpc2liaWxpdHkgdG8gc2NydWIgdGhlIGdzYXAgdGltZWxpbmUuXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGV4YW1wbGVcbiAgICogdXNlRHVyYXRpb246IHRydWVcbiAgICovXG4gIHVzZUR1cmF0aW9uPzogYm9vbGVhblxuXG4gIC8qKlxuICAgKiB2aWRlb1xuICAgKiBAZGVzYyBVc2UgdG8gc2V0IHRoZSBvcHRpb25zIGZvciBwbGF5aW5nIGFuZCBwYXVzaW5nIG9mIHRoZSB2aWRlby5cbiAgICogQHR5cGUgb2JqZWN0XG4gICAqIEBleGFtcGxlXG4gICAqIHZpZGVvOiB7IGVsZW1lbnQ6IHZpZGVvUmVmLmN1cnJlbnQgfVxuICAgKi9cbiAgdmlkZW8/OiBJU2Nyb2xsT2JzZXJ2ZXJWaWRlb1xuXG4gIC8qKlxuICAgKiB3aGVuVmlzaWJsZVxuICAgKiBAZGVzYyBTZXQgd2hlbiB0aGUgc2NlbmUgc2hvdWxkIGJlIGFjdGl2ZSBiYXNlZCBvbiB0aGUgcGVyY2VudGFnZSBvZiB0aGUgZWxlbWVudCB2aXNpYmxlXG4gICAqIEB0eXBlIG51bWJlclxuICAgKiBAZXhhbXBsZVxuICAgKiB3aGVuVmlzaWJsZTogJzUwJSdcbiAgICovXG4gIHdoZW5WaXNpYmxlPzogc3RyaW5nXG59XG5cbmNvbnN0IFNjcm9sbE9ic2VydmVyID0gZnVuY3Rpb24oXG4gIHRoaXM6IGFueSxcbiAge1xuICAgIGJyZWFrcG9pbnRzLFxuICAgIGNhbGxiYWNrLFxuICAgIGRlc3Ryb3lJbW1lZGlhdGVseSxcbiAgICBnc2FwLFxuICAgIG9ic2VydmVyLFxuICAgIG9mZnNldCxcbiAgICB3aGVuVmlzaWJsZSxcbiAgICB0aHJlc2hvbGRzLFxuICAgIHRvZ2dsZSxcbiAgICB0cmlnZ2VyRWxlbWVudCxcbiAgICB1c2VEdXJhdGlvbixcbiAgICB2aWRlbyxcbiAgfTogSVNjcm9sbE9ic2VydmVyLFxuKSB7XG4gIGlmICghdHJpZ2dlckVsZW1lbnQpIHtcbiAgICBlcnJvckxvZyhcbiAgICAgIG5hbWVTcGFjZSxcbiAgICAgICdCZSBzdXJlIHRvIHNldCBhIGNvbnN0IHRyaWdnZXJFbGVtZW50ID0gKHJlYWN0UmVmLmN1cnJlbnQgb3IgZG9jdW1lbnQucXVlcnlTZWxlY3RvcikgaW4gdGhlIG5ldyBTY3JvbGxTY2VuZSh7IHRyaWdnZXJFbGVtZW50OiB0cmlnZ2VyRWxlbWVudCB9KScsXG4gICAgKVxuICB9XG5cbiAgY29uc3QgJHRoaXMgPSB0aGlzXG4gIGxldCBzZXRUb2dnbGVcbiAgbGV0IHNldEdzYXBcbiAgbGV0IHNldFZpZGVvXG4gIGxldCBzZXRDYWxsYmFja1xuICBsZXQgcmF0aW9cbiAgbGV0IHNldFJvb3RNYXJnaW4gPSAnMCUgMCUnXG4gIGxldCBzZXRTdGF0ZSA9IG5ldyBzdGF0ZShmYWxzZSwgZmFsc2UpXG5cbiAgaWYgKHR5cGVvZiBvZmZzZXQgPT09ICdudW1iZXInKSB7XG4gICAgLy8gcHJvdGVjdCBhZ2FpbnN0IHBvc2l0aXZlIHB4IHZhbHVlcywgZm9yIG5vd1xuICAgIHNldFJvb3RNYXJnaW4gPSBgLSR7TWF0aC5hYnMob2Zmc2V0KX1weCAwJWBcbiAgfSBlbHNlIGlmICh0eXBlb2Ygb2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgIC8vIHByb3RlY3QgYWdhaW5zdCBwb3NpdGl2ZSBwZXJjZW50YWdlIHZhbHVlcywgZm9yIG5vd1xuICAgIHNldFJvb3RNYXJnaW4gPSBgLSR7TWF0aC5hYnMocGFyc2VGbG9hdChvZmZzZXQpKX0lIDAlYFxuICB9XG5cbiAgaWYgKHRvZ2dsZSAmJiBpc09iamVjdCh0b2dnbGUpKSB7XG4gICAgc2V0VG9nZ2xlID0gbmV3IHNldENsYXNzTmFtZSh0b2dnbGUpXG4gIH1cblxuICBpZiAoZ3NhcCAmJiBpc09iamVjdChnc2FwKSkge1xuICAgIHNldEdzYXAgPSBuZXcgc2V0VHdlZW4oZ3NhcClcbiAgfVxuXG4gIGlmICh2aWRlbyAmJiBpc09iamVjdCh2aWRlbykpIHtcbiAgICBzZXRWaWRlbyA9IG5ldyBzZXRQbGF5ZXIodmlkZW8pXG4gIH1cblxuICBpZiAoY2FsbGJhY2spIHtcbiAgICBzZXRDYWxsYmFjayA9IG5ldyBzZXRGdW5jdGlvbihjYWxsYmFjaylcbiAgfVxuXG4gIGNvbnN0IG9ic2VydmVyQ2FsbGJhY2sgPSBmdW5jdGlvbihlbnRyaWVzKSB7XG4gICAgZW50cmllcy5mb3JFYWNoKCh7IGlzSW50ZXJzZWN0aW5nLCBpbnRlcnNlY3Rpb25SYXRpbyB9KSA9PiB7XG4gICAgICAvKlxuICAgICAgICogVG8gaGVscCB0aGUgd29ua2luZXNzIG9mIEludGVyc2VjdGlvbk9ic2VydmVyLCBpc0ludGVyc2VjdGluZyBmaXJpbmcgdHJ1ZSB3aGVuIGl0J3MgcmVhbGx5IGZhbHNlXG4gICAgICAgKi9cbiAgICAgIGlmIChyYXRpbykge1xuICAgICAgICBzZXRTdGF0ZS52aXNpYmxlID0gaW50ZXJzZWN0aW9uUmF0aW8gPj0gcmF0aW9cbiAgICAgIH0gZWxzZSBpZiAoaXNJbnRlcnNlY3RpbmcgJiYgIXNldFN0YXRlLnZpc2libGUpIHtcbiAgICAgICAgLypcbiAgICAgICAgICogVG8gaGVscCB3aXRoIHNldENhbGxiYWNrIGFuZCBpZ25vcmluZyByZWZpcmluZyBleHRyYSBmdW5jdGlvblxuICAgICAgICAgKiBjYWxscyBkdWUgdG8gaW50ZXJzZWN0aW9uUmF0aW9cbiAgICAgICAgICovXG4gICAgICAgIHNldFN0YXRlLnZpc2libGUgPSB0cnVlXG4gICAgICB9IGVsc2UgaWYgKCFpc0ludGVyc2VjdGluZyAmJiBzZXRTdGF0ZS52aXNpYmxlKSB7XG4gICAgICAgIHNldFN0YXRlLnZpc2libGUgPSBmYWxzZVxuICAgICAgfVxuXG4gICAgICBzZXRUb2dnbGUgJiYgc2V0VG9nZ2xlLnVwZGF0ZShzZXRTdGF0ZSlcbiAgICAgIHNldEdzYXAgJiYgKCF1c2VEdXJhdGlvbiA/IHNldEdzYXAudXBkYXRlKHNldFN0YXRlKSA6IHNldEdzYXAuc2NydWIoaW50ZXJzZWN0aW9uUmF0aW8pKVxuICAgICAgc2V0VmlkZW8gJiYgc2V0VmlkZW8udXBkYXRlKHNldFN0YXRlKVxuICAgICAgc2V0Q2FsbGJhY2sgJiYgc2V0Q2FsbGJhY2sudXBkYXRlKHNldFN0YXRlKVxuXG4gICAgICBpZiAoaXNJbnRlcnNlY3RpbmcgJiYgZGVzdHJveUltbWVkaWF0ZWx5KSB7XG4gICAgICAgIC8qXG4gICAgICAgICAqIGRlc3Ryb3kgdGhlIHNjZW5lIGFmdGVyIHVzZWQgb25jZVxuICAgICAgICAgKi9cbiAgICAgICAgJHRoaXMuZGVzdHJveSgpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGdldFBlcmNlbnRhZ2UgPSB2YWx1ZSA9PiB7XG4gICAgaWYgKCFpc1N0cmluZyh3aGVuVmlzaWJsZSkgJiYgIXN0cmluZ0NvbnRhaW5zKHdoZW5WaXNpYmxlLCAnJScpKSB7XG4gICAgICBlcnJvckxvZyhuYW1lU3BhY2UsICdCZSBzdXJlIHRvIHNldCBhIHBlcmNlbnRhZ2UgYXMgYSBzdHJpbmcuIHsgd2hlblZpc2libGU6IFwiNTAlXCIgfScpXG4gICAgfVxuXG4gICAgY29uc3QgcGFyc2VkID0gcGFyc2VJbnQodmFsdWUucmVwbGFjZSgnJScsICcnKSkgLyAxMDBcblxuICAgIHJhdGlvID0gcGFyc2VkXG5cbiAgICByZXR1cm4gcGFyc2VkXG4gIH1cblxuICBjb25zdCBnZXRUaHJlc29sZHMgPSAoKSA9PiB7XG4gICAgY29uc3QgZGVmYXVsdHMgPSB7XG4gICAgICBvbmU6IFswLCAxXSxcbiAgICAgIGdzYXA6IGNyZWF0ZUFycmF5KDE5OSksXG4gICAgfVxuXG4gICAgbGV0IHJldHVybmVkVGhyZXNob2xkczogYW55ID0gZGVmYXVsdHMub25lXG5cbiAgICBpZiAod2hlblZpc2libGUpIHtcbiAgICAgIHJldHVybmVkVGhyZXNob2xkcyA9IGdldFBlcmNlbnRhZ2Uod2hlblZpc2libGUpXG4gICAgfVxuXG4gICAgaWYgKHVzZUR1cmF0aW9uKSB7XG4gICAgICByZXR1cm5lZFRocmVzaG9sZHMgPSBkZWZhdWx0cy5nc2FwXG4gICAgfVxuXG4gICAgaWYgKHRocmVzaG9sZHMpIHtcbiAgICAgIHJldHVybmVkVGhyZXNob2xkcyA9IGNyZWF0ZUFycmF5KHRocmVzaG9sZHMpXG4gICAgfVxuXG4gICAgcmV0dXJuIHJldHVybmVkVGhyZXNob2xkc1xuICB9XG5cbiAgY29uc3QgT2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIob2JzZXJ2ZXJDYWxsYmFjaywge1xuICAgIHRocmVzaG9sZDogZ2V0VGhyZXNvbGRzKCksXG4gICAgcm9vdE1hcmdpbjogc2V0Um9vdE1hcmdpbixcbiAgICAuLi5vYnNlcnZlcixcbiAgfSlcblxuICB0aGlzLmluaXQgPSBmdW5jdGlvbigpIHtcbiAgICBPYnNlcnZlci5vYnNlcnZlKHRyaWdnZXJFbGVtZW50KVxuICB9XG5cbiAgdGhpcy5kZXN0cm95ID0gZnVuY3Rpb24oKSB7XG4gICAgaWYgKHRyaWdnZXJFbGVtZW50ICYmIE9ic2VydmVyKSB7XG4gICAgICBpZiAoc2V0VG9nZ2xlKSB7XG4gICAgICAgIHNldFRvZ2dsZS5yZW1vdmUoKVxuICAgICAgfVxuXG4gICAgICBpZiAoc2V0R3NhcCkge1xuICAgICAgICBzZXRHc2FwLmtpbGwoKVxuICAgICAgfVxuXG4gICAgICBpZiAoc2V0VmlkZW8pIHtcbiAgICAgICAgc2V0VmlkZW8ua2lsbCgpXG4gICAgICB9XG5cbiAgICAgIE9ic2VydmVyLnVub2JzZXJ2ZSh0cmlnZ2VyRWxlbWVudClcbiAgICB9XG4gIH1cblxuICBzY3JvbGxBbmltYXRpb25Jbml0KGJyZWFrcG9pbnRzLCB0aGlzLmluaXQsIHRoaXMuZGVzdHJveSlcbn1cblxuZXhwb3J0IHsgU2Nyb2xsT2JzZXJ2ZXIgfVxuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TY3JvbGxPYnNlcnZlci50cyJdLCJuYW1lcyI6WyJlcnJvckxvZyIsImlzRnVuYyIsImlzT2JqZWN0Iiwic2Nyb2xsQW5pbWF0aW9uSW5pdCIsImNyZWF0ZUFycmF5IiwiaXNTdHJpbmciLCJzdHJpbmdDb250YWlucyIsIm5hbWVTcGFjZSIsInN0YXRlIiwidmlzaWJsZSIsImFscmVhZHlGaXJlZCIsInNldENsYXNzTmFtZSIsIm9wdGlvbnMiLCJ0b2dnbGUiLCJlbGVtZW50IiwiY2xhc3NOYW1lIiwiYWRkIiwiY2xhc3NMaXN0IiwiY29udGFpbnMiLCJyZW1vdmUiLCJ1cGRhdGUiLCJzZXRTdGF0ZSIsInNldFR3ZWVuIiwiZ3NhcCIsInRpbWVsaW5lIiwieW95byIsInNwZWVkIiwicmV2ZXJzZVNwZWVkIiwiZGVsYXkiLCJ0bCIsInJlcGVhdCIsInJlcGVhdERlbGF5IiwicGxheSIsInRpbWVTY2FsZSIsInBhdXNlIiwicmV2ZXJzZSIsImtpbGwiLCJzY3J1YiIsImludGVyc2VjdGlvblJhdGlvIiwicHJvZ3Jlc3MiLCJzZXRQbGF5ZXIiLCJ2aWRlbyIsInNldEZ1bmN0aW9uIiwiY2FsbGJhY2siLCJhY3RpdmUiLCJub3RBY3RpdmUiLCJTY3JvbGxPYnNlcnZlciIsImJyZWFrcG9pbnRzIiwiZGVzdHJveUltbWVkaWF0ZWx5Iiwib2JzZXJ2ZXIiLCJvZmZzZXQiLCJ3aGVuVmlzaWJsZSIsInRocmVzaG9sZHMiLCJ0cmlnZ2VyRWxlbWVudCIsInVzZUR1cmF0aW9uIiwiJHRoaXMiLCJzZXRUb2dnbGUiLCJzZXRHc2FwIiwic2V0VmlkZW8iLCJzZXRDYWxsYmFjayIsInJhdGlvIiwic2V0Um9vdE1hcmdpbiIsIk1hdGgiLCJhYnMiLCJwYXJzZUZsb2F0Iiwib2JzZXJ2ZXJDYWxsYmFjayIsImVudHJpZXMiLCJmb3JFYWNoIiwiaXNJbnRlcnNlY3RpbmciLCJkZXN0cm95IiwiZ2V0UGVyY2VudGFnZSIsInZhbHVlIiwicGFyc2VkIiwicGFyc2VJbnQiLCJyZXBsYWNlIiwiZ2V0VGhyZXNvbGRzIiwiZGVmYXVsdHMiLCJvbmUiLCJyZXR1cm5lZFRocmVzaG9sZHMiLCJPYnNlcnZlciIsIkludGVyc2VjdGlvbk9ic2VydmVyIiwidGhyZXNob2xkIiwicm9vdE1hcmdpbiIsImluaXQiLCJvYnNlcnZlIiwidW5vYnNlcnZlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxTQUFTQSxRQUFULEVBQW1CQyxNQUFuQixFQUEyQkMsUUFBM0IsRUFBcUNDLG1CQUFyQyxFQUEwREMsV0FBMUQsRUFBdUVDLFFBQXZFLEVBQWlGQyxjQUFqRjtBQUVBLElBQU1DLFNBQVMsR0FBRyxnQkFBbEI7O0FBR0EsSUFBTUMsS0FBSyxHQUFHLFNBQVJBLEtBQVEsQ0FBU0MsT0FBVCxFQUFrQkMsWUFBbEIsRUFBZ0M7QUFDNUMsT0FBS0QsT0FBTCxHQUFlLEtBQWY7QUFDQSxPQUFLQyxZQUFMLEdBQW9CLEtBQXBCO0FBQ0QsQ0FIRDs7QUFLQSxJQUFNQyxZQUFZLEdBQUcsU0FBZkEsWUFBZSxDQUFvQkMsT0FBcEIsRUFBNkI7QUFDaEQsTUFBTUMsTUFBTTtBQUNWQyxJQUFBQSxPQUFPLEVBQUUsSUFEQztBQUVWQyxJQUFBQSxTQUFTLEVBQUU7QUFGRCxLQUdQSCxPQUhPLENBQVo7O0FBTUEsTUFBSSxDQUFDQyxNQUFNLENBQUNDLE9BQVosRUFBcUI7QUFDbkJkLElBQUFBLFFBQVEsQ0FDTk8sU0FETSwyR0FFNEZBLFNBRjVGLDhDQUFSO0FBSUQ7O0FBRUQsTUFBSSxDQUFDTSxNQUFNLENBQUNFLFNBQVosRUFBdUI7QUFDckJmLElBQUFBLFFBQVEsQ0FDTk8sU0FETSx1RUFFd0RBLFNBRnhELCtDQUFSO0FBSUQ7O0FBRUQsT0FBS1MsR0FBTCxHQUFXLFlBQVc7QUFFcEIsS0FBQ0gsTUFBTSxDQUFDQyxPQUFQLENBQWVHLFNBQWYsQ0FBeUJDLFFBQXpCLENBQWtDTCxNQUFNLENBQUNFLFNBQXpDLENBQUQsSUFBd0RGLE1BQU0sQ0FBQ0MsT0FBUCxDQUFlRyxTQUFmLENBQXlC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RyxXQUFKLEVBQWlCO0FBQ2Z3QixNQUFBQSxrQkFBa0IsR0FBR0YsUUFBUSxDQUFDckQsSUFBOUI7QUFDRDs7QUFFRCxRQUFJNkIsVUFBSixFQUFnQjtBQUNkMEIsTUFBQUEsa0JBQWtCLEdBQUcxRSxXQUFXLENBQUNnRCxVQUFELENBQWhDO0FBQ0Q7O0FBRUQsV0FBTzBCLGtCQUFQO0FBQ0QsR0FyQkQ7O0FBdUJBLE1BQU1DLFFBQVEsR0FBRyxJQUFJQyxvQkFBSixDQUF5QmYsZ0JBQXpCO0FBQ2ZnQixJQUFBQSxTQUFTLEVBQUVOLFlBQVksRUFEUjtBQUVmTyxJQUFBQSxVQUFVLEVBQUVyQjtBQUZHLEtBR1paLFFBSFksRUFBakI7O0FBTUEsT0FBS2tDLElBQUwsR0FBWSxZQUFXO0FBQ3JCSixJQUFBQSxRQUFRLENBQUNLLE9BQVQsQ0FBaUIvQixjQUFqQjtBQUNELEdBRkQ7O0FBSUEsT0FBS2dCLE9BQUwsR0FBZSxZQUFXO0FBQ3hCLFFBQUloQixjQUFjLElBQUkwQixRQUF0QixFQUFnQztBQUM5QixVQUFJdkIsU0FBSixFQUFlO0FBQ2JBLFFBQUFBLFNBQVMsQ0FBQ3JDLE1BQVY7QUFDRDs7QUFFRCxVQUFJc0MsT0FBSixFQUFhO0FBQ1hBLFFBQUFBLE9BQU8sQ0FBQ3JCLElBQVI7QUFDRDs7QUFFRCxVQUFJc0IsUUFBSixFQUFjO0FBQ1pBLFFBQUFBLFFBQVEsQ0FBQ3RCLElBQVQ7QUFDRDs7QUFFRDJDLE1BQUFBLFFBQVEsQ0FBQ00sU0FBVCxDQUFtQmhDLGNBQW5CO0FBQ0Q7QUFDRixHQWhCRDs7QUFrQkFsRCxFQUFBQSxtQkFBbUIsQ0FBQzRDLFdBQUQsRUFBYyxLQUFLb0MsSUFBbkIsRUFBeUIsS0FBS2QsT0FBOUIsQ0FBbkI7QUFDRCxDQXhKRDs7QUEwSkEsU0FBU3ZCLGNBQVQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlcnJvckxvZywgaXNGdW5jLCBpc09iamVjdCwgc2Nyb2xsQW5pbWF0aW9uSW5pdCwgY3JlYXRlQXJyYXksIGlzU3RyaW5nLCBzdHJpbmdDb250YWlucyB9IGZyb20gJy4vaGVscGVycydcblxuY29uc3QgbmFtZVNwYWNlID0gJ1Njcm9sbE9ic2VydmVyJ1xuXG4vLyBAdHMtaWdub3JlXG5jb25zdCBzdGF0ZSA9IGZ1bmN0aW9uKHZpc2libGUsIGFscmVhZHlGaXJlZCkge1xuICB0aGlzLnZpc2libGUgPSBmYWxzZVxuICB0aGlzLmFscmVhZHlGaXJlZCA9IGZhbHNlXG59XG5cbmNvbnN0IHNldENsYXNzTmFtZSA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgb3B0aW9ucykge1xuICBjb25zdCB0b2dnbGUgPSB7XG4gICAgZWxlbWVudDogbnVsbCxcbiAgICBjbGFzc05hbWU6IG51bGwsXG4gICAgLi4ub3B0aW9ucyxcbiAgfVxuXG4gIGlmICghdG9nZ2xlLmVsZW1lbnQpIHtcbiAgICBlcnJvckxvZyhcbiAgICAgIG5hbWVTcGFjZSxcbiAgICAgIGBCZSBzdXJlIHRvIHNldCBhIGNvbnN0IHRvZ2dsZUVsZW1lbnQgPSAocmVhY3RSZWYuY3VycmVudCBvciBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKSBpbiB0aGUgbmV3ICR7bmFtZVNwYWNlfSh7IHRvZ2dsZTogeyBlbGVtZW50OiB0b2dnbGVFbGVtZW50IH0gfSlgLFxuICAgIClcbiAgfVxuXG4gIGlmICghdG9nZ2xlLmNsYXNzTmFtZSkge1xuICAgIGVycm9yTG9nKFxuICAgICAgbmFtZVNwYWNlLFxuICAgICAgYEJlIHN1cmUgdG8gc2V0IHRoZSBjbGFzc05hbWUgeW91IHdhbnQgdG8gdG9nZ2xlIGluIHRoZSBuZXcgJHtuYW1lU3BhY2V9KHsgdG9nZ2xlOiB7IGNsYXNzTmFtZTogXCJteS1jbGFzc1wiIH0gfSlgLFxuICAgIClcbiAgfVxuXG4gIHRoaXMuYWRkID0gZnVuY3Rpb24oKSB7XG4gICAgLyogYWRkIGNsYXNzTmFtZSBpZiBpdCdzIG5vdCBhbHJlYWR5IHRoZXJlICovXG4gICAgIXRvZ2dsZS5lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyh0b2dnbGUuY2xhc3NOYW1lKSAmJiB0b2dnbGUuZWxlbWVudC5jbGFzc0xpc3QuYWRkKHRvZ2dsZS5jbGFzc05hbWUpXG4gIH1cblxuICB0aGlzLnJlbW92ZSA9IGZ1bmN0aW9uKCkge1xuICAgIC8qIHJlbW92ZSBjbGFzc05hbWUgaWYgaXQncyB0aGVyZSAqL1xuICAgIHRvZ2dsZS5lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyh0b2dnbGUuY2xhc3NOYW1lKSAmJiB0b2dnbGUuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKHRvZ2dsZS5jbGFzc05hbWUpXG4gIH1cblxuICB0aGlzLnVwZGF0ZSA9IGZ1bmN0aW9uKHNldFN0YXRlKSB7XG4gICAgaWYgKCFzZXRTdGF0ZS5hbHJlYWR5RmlyZWQgJiYgc2V0U3RhdGUudmlzaWJsZSkge1xuICAgICAgdGhpcy5hZGQoKVxuICAgICAgc2V0U3RhdGUuYWxyZWFkeUZpcmVkID0gdHJ1ZVxuICAgIH1cblxuICAgIGlmIChzZXRTdGF0ZS5hbHJlYWR5RmlyZWQgJiYgIXNldFN0YXRlLnZpc2libGUpIHtcbiAgICAgIHRoaXMucmVtb3ZlKClcbiAgICAgIHNldFN0YXRlLmFscmVhZHlGaXJlZCA9IGZhbHNlXG4gICAgfVxuICB9XG59XG5cbmNvbnN0IHNldFR3ZWVuID0gZnVuY3Rpb24odGhpczogYW55LCBvcHRpb25zKSB7XG4gIGNvbnN0IGdzYXAgPSB7XG4gICAgdGltZWxpbmU6IG51bGwsXG4gICAgeW95bzogZmFsc2UsXG4gICAgc3BlZWQ6IDEsXG4gICAgcmV2ZXJzZVNwZWVkOiAxLFxuICAgIGRlbGF5OiAyLFxuICAgIC4uLm9wdGlvbnMsXG4gIH1cblxuICBpZiAoIWdzYXAudGltZWxpbmUpIHtcbiAgICBlcnJvckxvZyhcbiAgICAgIG5hbWVTcGFjZSxcbiAgICAgIGBCZSBzdXJlIHRvIHNldCBhIGNvbnN0IHRsID0gZ3NhcC50aW1lbGluZSh7IHBhdXNlZDogdHJ1ZSB9KSBpbiB0aGUgbmV3ICR7bmFtZVNwYWNlfSh7IGdzYXA6IHsgdGltZWxpbmU6IHRsIH0gfSlgLFxuICAgIClcbiAgfVxuXG4gIGNvbnN0IHRsID0gZ3NhcC50aW1lbGluZVxuXG4gIGlmIChnc2FwLnlveW8pIHtcbiAgICB0bC5yZXBlYXQoLTEpXG4gICAgICAueW95byhnc2FwLnlveW8pXG4gICAgICAucmVwZWF0RGVsYXkoZ3NhcC5kZWxheSlcbiAgfVxuXG4gIHRoaXMucGxheSA9IGZ1bmN0aW9uKCkge1xuICAgIHRsLnRpbWVTY2FsZShnc2FwLnNwZWVkKS5wbGF5KClcbiAgfVxuXG4gIHRoaXMucGF1c2UgPSBmdW5jdGlvbigpIHtcbiAgICB0bC5wYXVzZSgpXG4gIH1cblxuICB0aGlzLnJldmVyc2UgPSBmdW5jdGlvbigpIHtcbiAgICB0bC50aW1lU2NhbGUoZ3NhcC5yZXZlcnNlU3BlZWQpLnJldmVyc2UoKVxuICB9XG5cbiAgdGhpcy5raWxsID0gZnVuY3Rpb24oKSB7XG4gICAgaWYgKHRsKSB7XG4gICAgICB0bC5wYXVzZSgwKVxuICAgICAgdGwua2lsbCgpXG4gICAgfVxuICB9XG5cbiAgdGhpcy51cGRhdGUgPSBmdW5jdGlvbihzZXRTdGF0ZSkge1xuICAgIGlmICghc2V0U3RhdGUuYWxyZWFkeUZpcmVkICYmIHNldFN0YXRlLnZpc2libGUpIHtcbiAgICAgIHRoaXMucGxheSgpXG4gICAgICBzZXRTdGF0ZS5hbHJlYWR5RmlyZWQgPSB0cnVlXG4gICAgfVxuXG4gICAgaWYgKHNldFN0YXRlLmFscmVhZHlGaXJlZCAmJiAhc2V0U3RhdGUudmlzaWJsZSkge1xuICAgICAgZ3NhcC55b3lvID8gdGhpcy5wYXVzZSgpIDogdGhpcy5yZXZlcnNlKClcbiAgICAgIHNldFN0YXRlLmFscmVhZHlGaXJlZCA9IGZhbHNlXG4gICAgfVxuICB9XG5cbiAgdGhpcy5zY3J1YiA9IGZ1bmN0aW9uKGludGVyc2VjdGlvblJhdGlvKSB7XG4gICAgdGwucHJvZ3Jlc3MoaW50ZXJzZWN0aW9uUmF0aW8pXG4gIH1cbn1cblxuY29uc3Qgc2V0UGxheWVyID0gZnVuY3Rpb24odGhpczogYW55LCBvcHRpb25zKSB7XG4gIGNvbnN0IHZpZGVvID0ge1xuICAgIGVsZW1lbnQ6IG51bGwsXG4gICAgLi4ub3B0aW9ucyxcbiAgfVxuXG4gIGlmICghdmlkZW8uZWxlbWVudCkge1xuICAgIGVycm9yTG9nKFxuICAgICAgbmFtZVNwYWNlLFxuICAgICAgYEJlIHN1cmUgdG8gc2V0IGEgdmlkZW8gZWxlbWVudCBpbiB0aGUgbmV3ICR7bmFtZVNwYWNlfSh7IHZpZGVvOiB7IGVsZW1lbnQ6IHZpZGVvUmVmLmN1cnJlbnQgfSB9KWAsXG4gICAgKVxuICB9XG5cbiAgdGhpcy5wbGF5ID0gZnVuY3Rpb24oKSB7XG4gICAgdmlkZW8uZWxlbWVudC5wbGF5KClcbiAgfVxuXG4gIHRoaXMucGF1c2UgPSBmdW5jdGlvbigpIHtcbiAgICB2aWRlby5lbGVtZW50LnBhdXNlKClcbiAgfVxuXG4gIHRoaXMua2lsbCA9IGZ1bmN0aW9uKCkge1xuICAgIHZpZGVvLmVsZW1lbnQucGF1c2UoKVxuICB9XG5cbiAgdGhpcy51cGRhdGUgPSBmdW5jdGlvbihzZXRTdGF0ZSkge1xuICAgIGlmICghc2V0U3RhdGUuYWxyZWFkeUZpcmVkICYmIHNldFN0YXRlLnZpc2libGUpIHtcbiAgICAgIHRoaXMucGxheSgpXG4gICAgICBzZXRTdGF0ZS5hbHJlYWR5RmlyZWQgPSB0cnVlXG4gICAgfVxuXG4gICAgaWYgKHNldFN0YXRlLmFscmVhZHlGaXJlZCAmJiAhc2V0U3RhdGUudmlzaWJsZSkge1xuICAgICAgdGhpcy5wYXVzZSgpXG4gICAgICBzZXRTdGF0ZS5hbHJlYWR5RmlyZWQgPSBmYWxzZVxuICAgIH1cbiAgfVxufVxuXG5jb25zdCBzZXRGdW5jdGlvbjogYW55ID0gZnVuY3Rpb24odGhpczogYW55LCBvcHRpb25zKSB7XG4gIGNvbnN0IGNhbGxiYWNrID0ge1xuICAgIGFjdGl2ZTogbnVsbCxcbiAgICBub3RBY3RpdmU6IG51bGwsXG4gICAgLi4ub3B0aW9ucyxcbiAgfVxuXG4gIGlmICghY2FsbGJhY2suYWN0aXZlICYmICFjYWxsYmFjay5ub3RBY3RpdmUpIHtcbiAgICBlcnJvckxvZyhcbiAgICAgIG5hbWVTcGFjZSxcbiAgICAgIGBCZSBzdXJlIHRvIHNldCBhIGNhbGxiYWNrIGFjdGl2ZSBvciBub3RBY3RpdmUgZnVuY3Rpb24gaW4gdGhlIG5ldyAke25hbWVTcGFjZX0oeyBjYWxsYmFjazogeyBhY3RpdmU6ICgpID0+ICgpIH0gfSlgLFxuICAgIClcbiAgfVxuXG4gIGlmICgoY2FsbGJhY2suYWN0aXZlICYmICFpc0Z1bmMoY2FsbGJhY2suYWN0aXZlKSkgfHwgKGNhbGxiYWNrLm5vdEFjdGl2ZSAmJiAhaXNGdW5jKGNhbGxiYWNrLm5vdEFjdGl2ZSkpKSB7XG4gICAgZXJyb3JMb2cobmFtZVNwYWNlLCBgQmUgc3VyZSB0byBzZXQgdGhlIGNhbGxiYWNrIGFzIGEgZnVuY3Rpb24gYClcbiAgfVxuXG4gIHRoaXMudXBkYXRlID0gZnVuY3Rpb24oc2V0U3RhdGUpIHtcbiAgICBpZiAoIXNldFN0YXRlLmFscmVhZHlGaXJlZCAmJiBzZXRTdGF0ZS52aXNpYmxlICYmIGNhbGxiYWNrLmFjdGl2ZSkge1xuICAgICAgY2FsbGJhY2suYWN0aXZlKClcbiAgICAgIHNldFN0YXRlLmFscmVhZHlGaXJlZCA9IHRydWVcbiAgICB9XG5cbiAgICBpZiAoc2V0U3RhdGUuYWxyZWFkeUZpcmVkICYmICFzZXRTdGF0ZS52aXNpYmxlICYmIGNhbGxiYWNrLmFjdGl2ZSkge1xuICAgICAgY2FsbGJhY2subm90QWN0aXZlKClcbiAgICAgIHNldFN0YXRlLmFscmVhZHlGaXJlZCA9IGZhbHNlXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNjcm9sbE9ic2VydmVyR3NhcCB7XG4gIC8qKlxuICAgKiB0aW1lbGluZVxuICAgKiBAZGVzYyBJbnNlcnQgeW91ciBnc2FwLnRpbWVsaW5lIG9iamVjdCB2YXJcbiAgICogQHR5cGUgb2JqZWN0XG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IG15VGltZWxpbmUgPSBnc2FwLnRpbWVsaW5lKClcbiAgICogZ3NhcDogeyB0aW1lbGluZTogbXlUaW1lbGluZSB9XG4gICAqL1xuICB0aW1lbGluZTogYW55XG5cbiAgLyoqXG4gICAqIHlveW9cbiAgICogQGRlc2MgRG8geW91IHdhbnQgZ3NhcCBhbmltYXRpb24gdG8gbG9vcCBiYWNrIGFuZCBmb3J0aD9cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAZXhhbXBsZVxuICAgKiBnc2FwOiB7IHlveW86IHRydWUgfVxuICAgKi9cbiAgeW95bz86IGJvb2xlYW5cblxuICAvKipcbiAgICogc3BlZWRcbiAgICogQGRlc2MgVGhlIHNwZWVkIGF0IHdoaWNoIHRoZSBnc2FwIGFuaW1hdGlvbiB3aWxsIHBsYXkgcmVsYXRpdmUgdG8gaXQncyBjdXJyZW50IHNwZWVkLlxuICAgKiBAdHlwZSBudW1iZXJcbiAgICogQGRlZmF1bHQgMVxuICAgKiBAZXhhbXBsZVxuICAgKiBnc2FwOiB7IHNwZWVkOiAyIH0gLy8gPSB0d2ljZSBhcyBmYXN0XG4gICAqL1xuICBzcGVlZD86IG51bWJlclxuXG4gIC8qKlxuICAgKiBzcGVlZFxuICAgKiBAZGVzYyBUaGUgc3BlZWQgYXQgd2hpY2ggdGhlIGdzYXAgYW5pbWF0aW9uIHdpbGwgcmV2ZXJzZSByZWxhdGl2ZSB0byBpdCdzIGN1cnJlbnQgc3BlZWQuXG4gICAqIEB0eXBlIG51bWJlclxuICAgKiBAZGVmYXVsdCA0XG4gICAqIEBleGFtcGxlXG4gICAqIGdzYXA6IHsgc3BlZWQ6IDQgfSAvLyA9IDR4IGFzIGZhc3RcbiAgICovXG4gIHJldmVyc2VTcGVlZD86IG51bWJlclxuXG4gIC8qKlxuICAgKiBkZWxheVxuICAgKiBAZGVzYyBUaGUgZGVsYXkgKGluIHNlY29uZHMpIGF0IHdoaWNoIHRoZSBnc2FwIGFuaW1hdGlvbiB3YWl0IGJlZm9yZSByZXZlcnNpbmcuXG4gICAqIEB0eXBlIG51bWJlclxuICAgKiBAZGVmYXVsdCAyXG4gICAqIEBleGFtcGxlXG4gICAqIGdzYXA6IHsgZGVsYXk6IDMgfSAvLyA9IFdhaXQgMyBzZWNvbmRzXG4gICAqL1xuICBkZWxheT86IG51bWJlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTY3JvbGxPYnNlcnZlclRvZ2dsZSB7XG4gIC8qKlxuICAgKiBjbGFzc05hbWVcbiAgICogQGRlc2MgU3BlY2lmeSB0aGUgY2xhc3NOYW1lIHlvdSB3aXNoIHRvIHRvZ2dsZS5cbiAgICogQHR5cGUgc3RyaW5nXG4gICAqIEBleGFtcGxlXG4gICAqIHRvZ2dsZTogeyBjbGFzc05hbWU6ICd0dXJuLW1lLWJsdWUtYmFieScgfVxuICAgKi9cbiAgY2xhc3NOYW1lOiBzdHJpbmdcblxuICAvKipcbiAgICogZWxlbWVudFxuICAgKiBAZGVzYyBTcGVjaWZ5IHRoZSBlbGVtZW50IHlvdSB3aXNoIHRvIHRvZ2dsZSB0aGUgY2xhc3NOYW1lIG9uLlxuICAgKiBAdHlwZSBIVE1MRWxlbWVudCB8IGFueVxuICAgKiBAZXhhbXBsZVxuICAgKiB0b2dnbGU6IHsgZWxlbWVudDogY29udGFpbmVyUmVmLmN1cnJlbnQgfVxuICAgKi9cbiAgZWxlbWVudDogSFRNTEVsZW1lbnQgfCBhbnlcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU2Nyb2xsT2JzZXJ2ZXJWaWRlbyB7XG4gIC8qKlxuICAgKiBlbGVtZW50XG4gICAqIEBkZXNjIFNwZWNpZnkgdGhlIHZpZGVvIGVsZW1lbnQgeW91IHdpc2ggdG8gaW50ZXJhY3Qgd2l0aC5cbiAgICogQHR5cGUgSFRNTEVsZW1lbnQgfCBhbnlcbiAgICogQGV4YW1wbGVcbiAgICogdmlkZW86IHsgZWxlbWVudDogdmlkZW9SZWYuY3VycmVudCB9XG4gICAqL1xuICBlbGVtZW50OiBIVE1MRWxlbWVudCB8IGFueVxufVxuXG5pbnRlcmZhY2UgSVNjcm9sbE9ic2VydmVyIHtcbiAgLyoqXG4gICAqIGJyZWFrcG9pbnRzXG4gICAqIEBkZXNjIFVzZSB0byBzZXQgcmVzcG9uc2l2ZW5lc3Mgb2YgdGhlIFNjcm9sbE9ic2VydmVyLCBtb2JpbGUtZmlyc3RcbiAgICogQHR5cGUgb2JqZWN0XG4gICAqIEBleGFtcGxlXG4gICAqIGJyZWFrcG9pbnRzOiB7IDA6IGZhbHNlLCA3Njg6IHRydWUgfVxuICAgKi9cbiAgYnJlYWtwb2ludHM/OiBvYmplY3RcblxuICAvKipcbiAgICogY2FsbGJhY2tcbiAgICogQGRlc2MgVXNlIHRvIHNldCBhIGNhbGxiYWNrIHdoZW4gdGhlIHNjZW5lIGlzIGFjdGl2ZS5cbiAgICogQHR5cGUgb2JqZWN0XG4gICAqIEBleGFtcGxlXG4gICAqIGNhbGxiYWNrOiB7IGFjdGl2ZTogKCkgPT4gKCksIG5vdEFjdGl2ZTogKCkgPT4gKCkgfVxuICAgKi9cbiAgY2FsbGJhY2s/OiBvYmplY3RcblxuICAvKipcbiAgICogZGVzdHJveUltbWVkaWF0ZWx5XG4gICAqIEBkZXNjIFVzZSB0byBkZXN0cm95IHRoZSBzY2VuZSBpbW1lZGlhdGVseSBhZnRlciBmaXJpbmcgb25jZSB0aGUgZWxlbWVudCBpcyB2aXNpYmxlLlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBleGFtcGxlXG4gICAqIGRlc3Ryb3lJbW1lZGlhdGVseTogdHJ1ZVxuICAgKi9cbiAgZGVzdHJveUltbWVkaWF0ZWx5PzogYm9vbGVhblxuXG4gIC8qKlxuICAgKiBnc2FwXG4gICAqIEBkZXNjIFVzZSB0byBzZXQgb3B0aW9ucyBmb3IgdGhlIGdzYXAgYW5pbWF0aW9uIG9mIHRoZSBTY3JvbGxPYnNlcnZlci5cbiAgICogQHR5cGUgb2JqZWN0XG4gICAqIEBleGFtcGxlXG4gICAqIGdzYXA6IHsgdGltZWxpbmU6IG15VGltZWxpbmUsIHlveW86IHRydWUsIHJldmVyc2VTcGVlZDogMiB9XG4gICAqL1xuICBnc2FwPzogSVNjcm9sbE9ic2VydmVyR3NhcFxuXG4gIC8qKlxuICAgKiBvYnNlcnZlclxuICAgKiBAZGVzYyBFeHRyYSBvcHRpb25zIHRvIHBhc3MgdGhlIEludGVyc2VjdGlvbk9ic2VydmVyLCBsaWtlIHJvb3QsIHJvb3RNYXJnaW4sIHRocmVzaG9sZCAodG8gb3ZlcnJpZGUgdGhlIHRocmVzaG9sZHMgb3B0aW9uKVxuICAgKiBAdHlwZSBvYmplY3RcbiAgICogQGV4YW1wbGVcbiAgICogb2JzZXJ2ZXI6IHsgcm9vdE1hcmdpbjogJy01MCUgMCUnIH1cbiAgICovXG4gIG9ic2VydmVyPzogb2JqZWN0XG5cbiAgLyoqXG4gICAqIG9mZnNldFxuICAgKiBAZGVzYyBDaGFuZ2UgdGhlIG9mZnNldC4gVGhpcyB1c2VzIHJvb3RNYXJnaW4gdGh1cyBvbmx5IHdvcmtzIGFzIGEgbmVnYXRpdmUgb2Zmc2V0LlxuICAgKiBAdHlwZSBudW1iZXIgfCBzdHJpbmdcbiAgICogQGRlZmF1bHR2YWx1ZSAnMCUgMCUnXG4gICAqIEBleGFtcGxlXG4gICAqIG9mZnNldDogNTAwIC8vIHRoaXMgd2lsbCBiZSByb290TWFyZ2luOiAnLTUwMHB4IDAlJ1xuICAgKi9cbiAgb2Zmc2V0PzogbnVtYmVyIHwgc3RyaW5nXG5cbiAgLyoqXG4gICAqIHRocmVzaG9sZHNcbiAgICogQGRlc2MgU2V0IHRoZSBudW1iZXIgb2YgdGhyZXNob2xkcyB5b3Ugd2FudC5cbiAgICogQHJldHVybnMgQW4gQXJyYXkgb2YgbnVtYmVyIGZyb20gMCB0byAxLiBBZGQgMSB0byB5b3VyIG51bWJlciB0byBhY2NvdW50IGZvciAwLlxuICAgKiBAdHlwZSBudW1iZXJcbiAgICogQGV4YW1wbGVcbiAgICogdGhyZXNob2xkczogMSA9IFswLCAxXVxuICAgKiB0aHJlc2hvbGRzOiAyID0gWzAsIDAuNSwgMV1cbiAgICogdGhyZXNob2xkczogMyA9IFswLCAwLjMzLCAwLjY3LCAxXVxuICAgKiB0aHJlc2hvbGRzOiAxMDAgPSBbMCwgMC4xLCAwLjIsIC4uLiAwLjk4LCAwLjk5LCAxXVxuICAgKi9cbiAgdGhyZXNob2xkcz86IG51bWJlclxuXG4gIC8qKlxuICAgKiB0b2dnbGVcbiAgICogQGRlc2MgVXNlIHRvIHNldCB0aGUgb3B0aW9ucyBmb3IgdGhlIHRvZ2dsaW5nIG9mIGEgY2xhc3NOYW1lXG4gICAqIEB0eXBlIG9iamVjdFxuICAgKiBAZXhhbXBsZVxuICAgKiB0b2dnbGU6IHsgZWxlbWVudDogY29udGFpbmVyUmVmLmN1cnJlbnQsIGNsYXNzTmFtZTogJ2xldHMtZG8tdGhpcycgfVxuICAgKi9cbiAgdG9nZ2xlPzogSVNjcm9sbE9ic2VydmVyVG9nZ2xlXG5cbiAgLyoqXG4gICAqIHRyaWdnZXJFbGVtZW50XG4gICAqIEBkZXNjIFNldCB0aGUgZWxlbWVudCB5b3Ugd2lzaCB0byB0cmlnZ2VyIGV2ZW50cyBiYXNlZCB1cG9uLCB0aGUgb2JzZXJ2ZWQgZWxlbWVudC5cbiAgICogQHR5cGUgSFRNTEVsZW1lbnQgfCBhbnlcbiAgICogQGV4YW1wbGVcbiAgICogdHJpZ2dlckVsZW1lbnQ6IHRyaWdnZXJSZWYuY3VycmVudFxuICAgKi9cbiAgdHJpZ2dlckVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgYW55XG5cbiAgLyoqXG4gICAqIHVzZUR1cmF0aW9uXG4gICAqIEBkZXNjIFVzZSB0aGUgcGVyY2VudGFnZSBvZiBlbGVtZW50IHZpc2liaWxpdHkgdG8gc2NydWIgdGhlIGdzYXAgdGltZWxpbmUuXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGV4YW1wbGVcbiAgICogdXNlRHVyYXRpb246IHRydWVcbiAgICovXG4gIHVzZUR1cmF0aW9uPzogYm9vbGVhblxuXG4gIC8qKlxuICAgKiB2aWRlb1xuICAgKiBAZGVzYyBVc2UgdG8gc2V0IHRoZSBvcHRpb25zIGZvciBwbGF5aW5nIGFuZCBwYXVzaW5nIG9mIHRoZSB2aWRlby5cbiAgICogQHR5cGUgb2JqZWN0XG4gICAqIEBleGFtcGxlXG4gICAqIHZpZGVvOiB7IGVsZW1lbnQ6IHZpZGVvUmVmLmN1cnJlbnQgfVxuICAgKi9cbiAgdmlkZW8/OiBJU2Nyb2xsT2JzZXJ2ZXJWaWRlb1xuXG4gIC8qKlxuICAgKiB3aGVuVmlzaWJsZVxuICAgKiBAZGVzYyBTZXQgd2hlbiB0aGUgc2NlbmUgc2hvdWxkIGJlIGFjdGl2ZSBiYXNlZCBvbiB0aGUgcGVyY2VudGFnZSBvZiB0aGUgZWxlbWVudCB2aXNpYmxlXG4gICAqIEB0eXBlIG51bWJlclxuICAgKiBAZXhhbXBsZVxuICAgKiB3aGVuVmlzaWJsZTogJzUwJSdcbiAgICovXG4gIHdoZW5WaXNpYmxlPzogc3RyaW5nXG59XG5cbmNvbnN0IFNjcm9sbE9ic2VydmVyID0gZnVuY3Rpb24oXG4gIHRoaXM6IGFueSxcbiAge1xuICAgIGJyZWFrcG9pbnRzLFxuICAgIGNhbGxiYWNrLFxuICAgIGRlc3Ryb3lJbW1lZGlhdGVseSxcbiAgICBnc2FwLFxuICAgIG9ic2VydmVyLFxuICAgIG9mZnNldCxcbiAgICB3aGVuVmlzaWJsZSxcbiAgICB0aHJlc2hvbGRzLFxuICAgIHRvZ2dsZSxcbiAgICB0cmlnZ2VyRWxlbWVudCxcbiAgICB1c2VEdXJhdGlvbixcbiAgICB2aWRlbyxcbiAgfTogSVNjcm9sbE9ic2VydmVyLFxuKSB7XG4gIGlmICghdHJpZ2dlckVsZW1lbnQpIHtcbiAgICBlcnJvckxvZyhcbiAgICAgIG5hbWVTcGFjZSxcbiAgICAgICdCZSBzdXJlIHRvIHNldCBhIGNvbnN0IHRyaWdnZXJFbGVtZW50ID0gKHJlYWN0UmVmLmN1cnJlbnQgb3IgZG9jdW1lbnQucXVlcnlTZWxlY3RvcikgaW4gdGhlIG5ldyBTY3JvbGxTY2VuZSh7IHRyaWdnZXJFbGVtZW50OiB0cmlnZ2VyRWxlbWVudCB9KScsXG4gICAgKVxuICB9XG5cbiAgY29uc3QgJHRoaXMgPSB0aGlzXG4gIGxldCBzZXRUb2dnbGVcbiAgbGV0IHNldEdzYXBcbiAgbGV0IHNldFZpZGVvXG4gIGxldCBzZXRDYWxsYmFja1xuICBsZXQgcmF0aW9cbiAgbGV0IHNldFJvb3RNYXJnaW4gPSAnMCUgMCUnXG4gIGxldCBzZXRTdGF0ZSA9IG5ldyBzdGF0ZShmYWxzZSwgZmFsc2UpXG5cbiAgaWYgKHR5cGVvZiBvZmZzZXQgPT09ICdudW1iZXInKSB7XG4gICAgLy8gcHJvdGVjdCBhZ2FpbnN0IHBvc2l0aXZlIHB4IHZhbHVlcywgZm9yIG5vd1xuICAgIHNldFJvb3RNYXJnaW4gPSBgLSR7TWF0aC5hYnMob2Zmc2V0KX1weCAwJWBcbiAgfSBlbHNlIGlmICh0eXBlb2Ygb2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgIC8vIHByb3RlY3QgYWdhaW5zdCBwb3NpdGl2ZSBwZXJjZW50YWdlIHZhbHVlcywgZm9yIG5vd1xuICAgIHNldFJvb3RNYXJnaW4gPSBgLSR7TWF0aC5hYnMocGFyc2VGbG9hdChvZmZzZXQpKX0lIDAlYFxuICB9XG5cbiAgaWYgKHRvZ2dsZSAmJiBpc09iamVjdCh0b2dnbGUpKSB7XG4gICAgc2V0VG9nZ2xlID0gbmV3IHNldENsYXNzTmFtZSh0b2dnbGUpXG4gIH1cblxuICBpZiAoZ3NhcCAmJiBpc09iamVjdChnc2FwKSkge1xuICAgIHNldEdzYXAgPSBuZXcgc2V0VHdlZW4oZ3NhcClcbiAgfVxuXG4gIGlmICh2aWRlbyAmJiBpc09iamVjdCh2aWRlbykpIHtcbiAgICBzZXRWaWRlbyA9IG5ldyBzZXRQbGF5ZXIodmlkZW8pXG4gIH1cblxuICBpZiAoY2FsbGJhY2spIHtcbiAgICBzZXRDYWxsYmFjayA9IG5ldyBzZXRGdW5jdGlvbihjYWxsYmFjaylcbiAgfVxuXG4gIGNvbnN0IG9ic2VydmVyQ2FsbGJhY2sgPSBmdW5jdGlvbihlbnRyaWVzKSB7XG4gICAgZW50cmllcy5mb3JFYWNoKCh7IGlzSW50ZXJzZWN0aW5nLCBpbnRlcnNlY3Rpb25SYXRpbyB9KSA9PiB7XG4gICAgICAvKlxuICAgICAgICogVG8gaGVscCB0aGUgd29ua2luZXNzIG9mIEludGVyc2VjdGlvbk9ic2VydmVyLCBpc0ludGVyc2VjdGluZyBmaXJpbmcgdHJ1ZSB3aGVuIGl0J3MgcmVhbGx5IGZhbHNlXG4gICAgICAgKi9cbiAgICAgIGlmIChyYXRpbykge1xuICAgICAgICBzZXRTdGF0ZS52aXNpYmxlID0gaW50ZXJzZWN0aW9uUmF0aW8gPj0gcmF0aW9cbiAgICAgIH0gZWxzZSBpZiAoaXNJbnRlcnNlY3RpbmcgJiYgIXNldFN0YXRlLnZpc2libGUpIHtcbiAgICAgICAgLypcbiAgICAgICAgICogVG8gaGVscCB3aXRoIHNldENhbGxiYWNrIGFuZCBpZ25vcmluZyByZWZpcmluZyBleHRyYSBmdW5jdGlvblxuICAgICAgICAgKiBjYWxscyBkdWUgdG8gaW50ZXJzZWN0aW9uUmF0aW9cbiAgICAgICAgICovXG4gICAgICAgIHNldFN0YXRlLnZpc2libGUgPSB0cnVlXG4gICAgICB9IGVsc2UgaWYgKCFpc0ludGVyc2VjdGluZyAmJiBzZXRTdGF0ZS52aXNpYmxlKSB7XG4gICAgICAgIHNldFN0YXRlLnZpc2libGUgPSBmYWxzZVxuICAgICAgfVxuXG4gICAgICBzZXRUb2dnbGUgJiYgc2V0VG9nZ2xlLnVwZGF0ZShzZXRTdGF0ZSlcbiAgICAgIHNldEdzYXAgJiYgKCF1c2VEdXJhdGlvbiA/IHNldEdzYXAudXBkYXRlKHNldFN0YXRlKSA6IHNldEdzYXAuc2NydWIoaW50ZXJzZWN0aW9uUmF0aW8pKVxuICAgICAgc2V0VmlkZW8gJiYgc2V0VmlkZW8udXBkYXRlKHNldFN0YXRlKVxuICAgICAgc2V0Q2FsbGJhY2sgJiYgc2V0Q2FsbGJhY2sudXBkYXRlKHNldFN0YXRlKVxuXG4gICAgICBpZiAoaXNJbnRlcnNlY3RpbmcgJiYgZGVzdHJveUltbWVkaWF0ZWx5KSB7XG4gICAgICAgIC8qXG4gICAgICAgICAqIGRlc3Ryb3kgdGhlIHNjZW5lIGFmdGVyIHVzZWQgb25jZVxuICAgICAgICAgKi9cbiAgICAgICAgJHRoaXMuZGVzdHJveSgpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGdldFBlcmNlbnRhZ2UgPSB2YWx1ZSA9PiB7XG4gICAgaWYgKCFpc1N0cmluZyh3aGVuVmlzaWJsZSkgJiYgIXN0cmluZ0NvbnRhaW5zKHdoZW5WaXNpYmxlLCAnJScpKSB7XG4gICAgICBlcnJvckxvZyhuYW1lU3BhY2UsICdCZSBzdXJlIHRvIHNldCBhIHBlcmNlbnRhZ2UgYXMgYSBzdHJpbmcuIHsgd2hlblZpc2libGU6IFwiNTAlXCIgfScpXG4gICAgfVxuXG4gICAgY29uc3QgcGFyc2VkID0gcGFyc2VJbnQodmFsdWUucmVwbGFjZSgnJScsICcnKSkgLyAxMDBcblxuICAgIHJhdGlvID0gcGFyc2VkXG5cbiAgICByZXR1cm4gcGFyc2VkXG4gIH1cblxuICBjb25zdCBnZXRUaHJlc29sZHMgPSAoKSA9PiB7XG4gICAgY29uc3QgZGVmYXVsdHMgPSB7XG4gICAgICBvbmU6IFswLCAxXSxcbiAgICAgIGdzYXA6IGNyZWF0ZUFycmF5KDE5OSksXG4gICAgfVxuXG4gICAgbGV0IHJldHVybmVkVGhyZXNob2xkczogYW55ID0gZGVmYXVsdHMub25lXG5cbiAgICBpZiAod2hlblZpc2libGUpIHtcbiAgICAgIHJldHVybmVkVGhyZXNob2xkcyA9IGdldFBlcmNlbnRhZ2Uod2hlblZpc2libGUpXG4gICAgfVxuXG4gICAgaWYgKHVzZUR1cmF0aW9uKSB7XG4gICAgICByZXR1cm5lZFRocmVzaG9sZHMgPSBkZWZhdWx0cy5nc2FwXG4gICAgfVxuXG4gICAgaWYgKHRocmVzaG9sZHMpIHtcbiAgICAgIHJldHVybmVkVGhyZXNob2xkcyA9IGNyZWF0ZUFycmF5KHRocmVzaG9sZHMpXG4gICAgfVxuXG4gICAgcmV0dXJuIHJldHVybmVkVGhyZXNob2xkc1xuICB9XG5cbiAgY29uc3QgT2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIob2JzZXJ2ZXJDYWxsYmFjaywge1xuICAgIHRocmVzaG9sZDogZ2V0VGhyZXNvbGRzKCksXG4gICAgcm9vdE1hcmdpbjogc2V0Um9vdE1hcmdpbixcbiAgICAuLi5vYnNlcnZlcixcbiAgfSlcblxuICB0aGlzLmluaXQgPSBmdW5jdGlvbigpIHtcbiAgICBPYnNlcnZlci5vYnNlcnZlKHRyaWdnZXJFbGVtZW50KVxuICB9XG5cbiAgdGhpcy5kZXN0cm95ID0gZnVuY3Rpb24oKSB7XG4gICAgaWYgKHRyaWdnZXJFbGVtZW50ICYmIE9ic2VydmVyKSB7XG4gICAgICBpZiAoc2V0VG9nZ2xlKSB7XG4gICAgICAgIHNldFRvZ2dsZS5yZW1vdmUoKVxuICAgICAgfVxuXG4gICAgICBpZiAoc2V0R3NhcCkge1xuICAgICAgICBzZXRHc2FwLmtpbGwoKVxuICAgICAgfVxuXG4gICAgICBpZiAoc2V0VmlkZW8pIHtcbiAgICAgICAgc2V0VmlkZW8ua2lsbCgpXG4gICAgICB9XG5cbiAgICAgIE9ic2VydmVyLnVub2JzZXJ2ZSh0cmlnZ2VyRWxlbWVudClcbiAgICB9XG4gIH1cblxuICBzY3JvbGxBbmltYXRpb25Jbml0KGJyZWFrcG9pbnRzLCB0aGlzLmluaXQsIHRoaXMuZGVzdHJveSlcbn1cblxuZXhwb3J0IHsgU2Nyb2xsT2JzZXJ2ZXIgfVxuIl19

@@ -1,2 +0,1 @@

/// <reference types="react" />
import { IScrollObserverToggle, IScrollObserverGsap } from './ScrollObserver';

@@ -79,7 +78,7 @@ interface IScrollSceneToggle extends IScrollObserverToggle {

* @desc Set the element you wish to trigger events based upon, the observed element.
* @type HTMLElement | React.ReactNode | any
* @type HTMLElement | any
* @example
* triggerElement: triggerRef.current
*/
triggerElement: HTMLElement | React.ReactNode | any;
triggerElement: HTMLElement | any;
/**

@@ -86,0 +85,0 @@ * triggerHook

@@ -194,2 +194,2 @@ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";

export { ScrollScene };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TY3JvbGxTY2VuZS50cyJdLCJuYW1lcyI6WyJTY3JvbGxNYWdpYyIsInRocm90dGxlIiwiZXJyb3JMb2ciLCJpc09iamVjdCIsInNjcm9sbEFuaW1hdGlvbkluaXQiLCJuYW1lU3BhY2UiLCJ1cGRhdGVUd2VlblByb2dyZXNzIiwiU2NlbmUiLCJUd2VlbiIsImdzYXBGb3J3YXJkU3BlZWQiLCJnc2FwUmV2ZXJzZVNwZWVkIiwicHJvZ3Jlc3MiLCJzdGF0ZSIsInJlcGVhdCIsInBhdXNlZCIsInRpbWVTY2FsZSIsInBsYXkiLCJwYXVzZSIsImR1cmF0aW9uIiwicmV2ZXJzZSIsInJlbW92ZVR3ZWVuIiwia2lsbCIsInNldER1cmF0aW9uIiwia2V5cyIsIk9iamVjdCIsImZuIiwiaW5kZXgiLCJsZW5ndGgiLCJicmVha3BvaW50IiwicGFyc2VGbG9hdCIsIndpbmRvdyIsImlubmVyV2lkdGgiLCJhZGRFdmVudExpc3RlbmVyIiwic2V0Q2xhc3NOYW1lIiwib3B0aW9ucyIsInRvZ2dsZSIsImNsYXNzTmFtZSIsImVsZW1lbnQiLCJhZGRDbGFzc05hbWUiLCJjbGFzc0xpc3QiLCJjb250YWlucyIsImFkZCIsInJlbW92ZUNsYXNzTmFtZSIsInJlbW92ZSIsIm9uIiwiZXZlbnQiLCJzY3JvbGxEaXJlY3Rpb24iLCJzZXRUd2VlbiIsImdzYXAiLCJmb3J3YXJkU3BlZWQiLCJyZXZlcnNlU3BlZWQiLCJ0aW1lbGluZSIsImdsb2JhbENvbnRyb2xsZXIiLCJTY3JvbGxTY2VuZSIsImJyZWFrcG9pbnRzIiwiY29udHJvbGxlciIsIm9mZnNldCIsInNjZW5lIiwidHJpZ2dlckVsZW1lbnQiLCJ0cmlnZ2VySG9vayIsInVzZUdsb2JhbENvbnRyb2xsZXIiLCJsb2NhbENvbnRyb2xsZXIiLCJDb250cm9sbGVyIiwiY29udHJvbGxlcklzVXNlIiwiaW5pdCIsImFkZFRvIiwiZGVzdHJveSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBT0EsV0FBUDtB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QUNabUQsSUFBQUEsY0FBYyxFQUFkQSxjQURZO0FBRVpDLElBQUFBLFdBQVcsRUFBWEEsV0FGWTtBQUdaSCxJQUFBQSxNQUFNLEVBQU5BO0FBSFksS0FJVEMsS0FKUyxFQUFkOztBQU9BLE1BQUl2QyxRQUFKLEVBQWM7QUFDWkksSUFBQUEsV0FBVyxDQUFDZixLQUFELEVBQVFXLFFBQVIsQ0FBWDtBQUNEOztBQUVELE1BQUlpQixNQUFNLElBQUloQyxRQUFRLENBQUNnQyxNQUFELENBQXRCLEVBQWdDO0FBQzlCRixJQUFBQSxZQUFZLENBQUMxQixLQUFELEVBQVE0QixNQUFSLEVBQWdCakIsUUFBaEIsQ0FBWjtBQUNEOztBQUVELE1BQUk4QixJQUFJLElBQUk3QyxRQUFRLENBQUM2QyxJQUFELENBQXBCLEVBQTRCO0FBQzFCRCxJQUFBQSxRQUFRLENBQUN4QyxLQUFELEVBQVF5QyxJQUFSLENBQVI7QUFDRDs7QUFFRCxPQUFLZ0IsSUFBTCxHQUFZLFlBQVc7QUFDckJELElBQUFBLGVBQWUsSUFBSXhELEtBQUssQ0FBQzBELEtBQU4sQ0FBWUYsZUFBWixDQUFuQjtBQUNELEdBRkQ7O0FBSUEsT0FBS0csT0FBTCxHQUFlLFlBQVc7QUFDeEIzRCxJQUFBQSxLQUFLLENBQUNvQyxNQUFOO0FBQ0QsR0FGRDs7QUFJQSxPQUFLcEMsS0FBTCxHQUFhQSxLQUFiO0FBQ0EsT0FBS3VELFVBQUwsR0FBa0JDLGVBQWxCO0FBRUEzRCxFQUFBQSxtQkFBbUIsQ0FBQ2tELFdBQUQsRUFBYyxLQUFLVSxJQUFuQixFQUF5QixLQUFLRSxPQUE5QixDQUFuQjtBQUNELENBbkVEOztBQXFFQSxTQUFTYixXQUFUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFNjcm9sbE1hZ2ljIGZyb20gJy4vc2Nyb2xsbWFnaWMtd2l0aC1zc3InXG5pbXBvcnQgdGhyb3R0bGUgZnJvbSAnbG9kYXNoLnRocm90dGxlJ1xuaW1wb3J0IHsgZXJyb3JMb2csIGlzT2JqZWN0LCBzY3JvbGxBbmltYXRpb25Jbml0IH0gZnJvbSAnLi9oZWxwZXJzJ1xuaW1wb3J0IHsgSVNjcm9sbE9ic2VydmVyVG9nZ2xlLCBJU2Nyb2xsT2JzZXJ2ZXJHc2FwIH0gZnJvbSAnLi9TY3JvbGxPYnNlcnZlcidcblxuY29uc3QgbmFtZVNwYWNlID0gJ1Njcm9sbFNjZW5lJ1xuXG5jb25zdCB1cGRhdGVUd2VlblByb2dyZXNzID0gZnVuY3Rpb24oU2NlbmUsIFR3ZWVuLCBnc2FwRm9yd2FyZFNwZWVkLCBnc2FwUmV2ZXJzZVNwZWVkKSB7XG4gIGlmIChUd2Vlbikge1xuICAgIGNvbnN0IHByb2dyZXNzID0gU2NlbmUucHJvZ3Jlc3MoKVxuICAgIGNvbnN0IHN0YXRlID0gU2NlbmUuc3RhdGUoKVxuICAgIGlmIChUd2Vlbi5yZXBlYXQgJiYgVHdlZW4ucmVwZWF0KCkgPT09IC0xKSB7XG4gICAgICAvLyBpbmZpbml0ZSBsb29wLCBzbyBub3QgaW4gcmVsYXRpb24gdG8gcHJvZ3Jlc3NcbiAgICAgIGlmIChzdGF0ZSA9PT0gJ0RVUklORycgJiYgVHdlZW4ucGF1c2VkKCkpIHtcbiAgICAgICAgVHdlZW4udGltZVNjYWxlKGdzYXBGb3J3YXJkU3BlZWQpLnBsYXkoKVxuICAgICAgfSBlbHNlIGlmIChzdGF0ZSAhPT0gJ0RVUklORycgJiYgIVR3ZWVuLnBhdXNlZCgpKSB7XG4gICAgICAgIFR3ZWVuLnBhdXNlKClcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHByb2dyZXNzICE9IFR3ZWVuLnByb2dyZXNzKCkpIHtcbiAgICAgIC8vIGRvIHdlIGV2ZW4gbmVlZCB0byB1cGRhdGUgdGhlIHByb2dyZXNzP1xuICAgICAgLy8gbm8gaW5maW5pdGUgbG9vcCAtIHNvIHNob3VsZCB3ZSBqdXN0IHBsYXkgb3IgZ28gdG8gYSBzcGVjaWZpYyBwb2ludCBpbiB0aW1lP1xuICAgICAgaWYgKFNjZW5lLmR1cmF0aW9uKCkgPT09IDApIHtcbiAgICAgICAgLy8gcGxheSB0aGUgYW5pbWF0aW9uXG4gICAgICAgIGlmIChwcm9ncmVzcyA+IDApIHtcbiAgICAgICAgICAvLyBwbGF5IGZyb20gMCB0byAxXG4gICAgICAgICAgVHdlZW4udGltZVNjYWxlKGdzYXBGb3J3YXJkU3BlZWQpLnBsYXkoKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHBsYXkgZnJvbSAxIHRvIDBcbiAgICAgICAgICBUd2Vlbi50aW1lU2NhbGUoZ3NhcFJldmVyc2VTcGVlZCkucmV2ZXJzZSgpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGdvIHRvIGEgc3BlY2lmaWMgcG9pbnQgaW4gdGltZVxuICAgICAgICAvLyBqdXN0IGhhcmQgc2V0IGl0XG4gICAgICAgIFR3ZWVuLnByb2dyZXNzKHByb2dyZXNzKS5wYXVzZSgpXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmNvbnN0IHJlbW92ZVR3ZWVuID0gZnVuY3Rpb24oVHdlZW4pIHtcbiAgaWYgKFR3ZWVuKSB7XG4gICAgVHdlZW4ucGF1c2UoMClcbiAgICBUd2Vlbi5raWxsKClcbiAgfVxufVxuXG5jb25zdCBzZXREdXJhdGlvbiA9IChTY2VuZSwgZHVyYXRpb24pID0+IHtcbiAgaWYgKGlzT2JqZWN0KGR1cmF0aW9uKSkge1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhkdXJhdGlvbikucmV2ZXJzZSgpXG5cbiAgICBjb25zdCBmbiA9ICgpID0+IHtcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBrZXlzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICBjb25zdCBicmVha3BvaW50ID0gcGFyc2VGbG9hdChrZXlzW2luZGV4XSlcblxuICAgICAgICBpZiAoYnJlYWtwb2ludCA8PSB3aW5kb3cuaW5uZXJXaWR0aCkge1xuICAgICAgICAgIFNjZW5lLmR1cmF0aW9uKGR1cmF0aW9uW2JyZWFrcG9pbnRdKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBmbigpXG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhyb3R0bGUoZm4sIDcwMCkpXG4gIH0gZWxzZSB7XG4gICAgU2NlbmUuZHVyYXRpb24oZHVyYXRpb24pXG4gIH1cbn1cblxuY29uc3Qgc2V0Q2xhc3NOYW1lID0gKFNjZW5lLCBvcHRpb25zLCBkdXJhdGlvbikgPT4ge1xuICBjb25zdCB0b2dnbGUgPSB7XG4gICAgY2xhc3NOYW1lOiBudWxsLFxuICAgIGVsZW1lbnQ6IG51bGwsXG4gICAgcmV2ZXJzZTogZmFsc2UsXG4gICAgLi4ub3B0aW9ucyxcbiAgfVxuXG4gIGlmICghdG9nZ2xlLmNsYXNzTmFtZSkge1xuICAgIGVycm9yTG9nKG5hbWVTcGFjZSwgYEJlIHN1cmUgdG8gc2V0IGEgY2xhc3NOYW1lIGluIHRoZSBuZXcgJHtuYW1lU3BhY2V9KHsgdG9nZ2xlOiB7IGNsYXNzTmFtZTogXCJteS1jbGFzc1wiIH0gfSlgKVxuICB9XG5cbiAgaWYgKCF0b2dnbGUuZWxlbWVudCkge1xuICAgIGVycm9yTG9nKFxuICAgICAgbmFtZVNwYWNlLFxuICAgICAgYEJlIHN1cmUgdG8gc2V0IGEgY29uc3QgdG9nZ2xlRWxlbWVudCA9IChyZWFjdFJlZi5jdXJyZW50IG9yIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IpIGluIHRoZSBuZXcgJHtuYW1lU3BhY2V9KHsgdG9nZ2xlOiB7IGVsZW1lbnQ6IHRvZ2dsZUVsZW1lbnQgfSB9KWAsXG4gICAgKVxuICB9XG5cbiAgY29uc3QgYWRkQ2xhc3NOYW1lID0gKCkgPT5cbiAgICAhdG9nZ2xlLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKHRvZ2dsZS5jbGFzc05hbWUpICYmIHRvZ2dsZS5lbGVtZW50LmNsYXNzTGlzdC5hZGQodG9nZ2xlLmNsYXNzTmFtZSlcblxuICBjb25zdCByZW1vdmVDbGFzc05hbWUgPSAoKSA9PlxuICAgIHRvZ2dsZS5lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyh0b2dnbGUuY2xhc3NOYW1lKSAmJiB0b2dnbGUuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKHRvZ2dsZS5jbGFzc05hbWUpXG5cbiAgU2NlbmUub24oJ2VudGVyJywgZnVuY3Rpb24oKSB7XG4gICAgYWRkQ2xhc3NOYW1lKClcbiAgfSlcblxuICBTY2VuZS5vbignYWRkJywgZnVuY3Rpb24oKSB7XG4gICAgaWYgKFNjZW5lLnN0YXRlKCkgPT09ICdEVVJJTkcnKSB7XG4gICAgICBhZGRDbGFzc05hbWUoKVxuICAgIH1cbiAgfSlcblxuICBTY2VuZS5vbignbGVhdmUnLCBmdW5jdGlvbihldmVudCkge1xuICAgIGlmICghdG9nZ2xlLnJldmVyc2UgJiYgZHVyYXRpb24pIHtcbiAgICAgIC8vIG5lZWRzIHRvIGJlIGJhc2VkIG9uIHdoZXRoZXIgb3Igbm90IHdlIGhhdmUgYSBkdXJhdGlvblxuICAgICAgZXZlbnQuc2Nyb2xsRGlyZWN0aW9uID09PSAnUkVWRVJTRScgJiYgcmVtb3ZlQ2xhc3NOYW1lKClcbiAgICB9IGVsc2Uge1xuICAgICAgcmVtb3ZlQ2xhc3NOYW1lKClcbiAgICB9XG4gIH0pXG5cbiAgU2NlbmUub24oJ3JlbW92ZScsIGZ1bmN0aW9uKCkge1xuICAgIHJlbW92ZUNsYXNzTmFtZSgpXG4gIH0pXG59XG5cbmNvbnN0IHNldFR3ZWVuID0gKFNjZW5lLCBvcHRpb25zKSA9PiB7XG4gIGNvbnN0IGdzYXAgPSB7XG4gICAgZm9yd2FyZFNwZWVkOiAxLFxuICAgIHJldmVyc2VTcGVlZDogMSxcbiAgICB0aW1lbGluZTogbnVsbCxcbiAgICAuLi5vcHRpb25zLFxuICB9XG5cbiAgaWYgKCFnc2FwLnRpbWVsaW5lKSB7XG4gICAgZXJyb3JMb2coXG4gICAgICBuYW1lU3BhY2UsXG4gICAgICBgQmUgc3VyZSB0byBzZXQgYSBjb25zdCB0bCA9IGdzYXAudGltZWxpbmUoeyBwYXVzZWQ6IHRydWUgfSkgaW4gdGhlIG5ldyAke25hbWVTcGFjZX0oeyBnc2FwOiB7IHRpbWVsaW5lOiB0bCB9IH0pYCxcbiAgICApXG4gIH1cblxuICBTY2VuZS5vbigncHJvZ3Jlc3MnLCBmdW5jdGlvbigpIHtcbiAgICB1cGRhdGVUd2VlblByb2dyZXNzKFNjZW5lLCBnc2FwLnRpbWVsaW5lLCBnc2FwLmZvcndhcmRTcGVlZCwgZ3NhcC5yZXZlcnNlU3BlZWQpXG4gIH0pXG5cbiAgU2NlbmUub24oJ3JlbW92ZScsIGZ1bmN0aW9uKCkge1xuICAgIHJlbW92ZVR3ZWVuKGdzYXAudGltZWxpbmUpXG4gIH0pXG59XG5cbmludGVyZmFjZSBJU2Nyb2xsU2NlbmVUb2dnbGUgZXh0ZW5kcyBJU2Nyb2xsT2JzZXJ2ZXJUb2dnbGUge1xuICAvKipcbiAgICogcmV2ZXJzZVxuICAgKiBAZGVzYyBTcGVjaWZ5IHRoZSBjbGFzc05hbWUgc2hvdWxkIGJlIHJlbW92ZWQgYWZ0ZXIgdGhlIGR1cmF0aW9uIG9mIHNjZW5lIGlzIG1ldC4gT25seSBhcHBsaWVzIGlmIHNjZW5lIGhhcyBkdXJhdGlvbi5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAZXhhbXBsZVxuICAgKiB0b2dnbGU6IHsgcmV2ZXJzZTogdHJ1ZSB9XG4gICAqL1xuICByZXZlcnNlPzogYm9vbGVhblxufVxuXG5pbnRlcmZhY2UgSVNjcm9sbFNjZW5lIHtcbiAgLyoqXG4gICAqIGJyZWFrcG9pbnRzXG4gICAqIEBkZXNjIFVzZSB0byBzZXQgcmVzcG9uc2l2ZW5lc3Mgb2YgdGhlIG5ldyBTY3JvbGxNYWdpYy5TY2VuZSwgbW9iaWxlLWZpcnN0XG4gICAqIEB0eXBlIG9iamVjdFxuICAgKiBAZXhhbXBsZVxuICAgKiBicmVha3BvaW50czogeyAwOiBmYWxzZSwgNzY4OiB0cnVlIH1cbiAgICovXG4gIGJyZWFrcG9pbnRzPzogb2JqZWN0XG5cbiAgLyoqXG4gICAqIGNvbnRyb2xsZXJcbiAgICogQGRlc2MgRXh0cmEgb3B0aW9ucyB0byBwYXNzIHRoZSBuZXcgU2Nyb2xsTWFnaWMuQ29udHJvbGxlciwgbGlrZSB2ZXJ0aWNhbCwgZXRjLlxuICAgKiBAdHlwZSBvYmplY3RcbiAgICogQGV4YW1wbGVcbiAgICogY29udHJvbGxlcjogeyB2ZXJ0aWNhbDogZmFsc2UgfVxuICAgKi9cbiAgY29udHJvbGxlcj86IG9iamVjdFxuXG4gIC8qKlxuICAgKiBkdXJhdGlvblxuICAgKiBAZGVzYyBVc2UgdG8gc2V0IHJlc3BvbnNpdmVuZXNzIG9mIHRoZSBuZXcgU2Nyb2xsTWFnaWMuU2NlbmUsIG1vYmlsZS1maXJzdCAoaWYgc2V0dGluZyBicmVha3BvaW50cylcbiAgICogTXVzdCBiZSBzdHJpbmcgZm9yIHBlcmNlbnRhZ2UsIGFuZCBudW1iZXIgZm9yIHBpeGVsLlxuICAgKiBAdHlwZSBvYmplY3RcbiAgICogQGV4YW1wbGVcbiAgICogZHVyYXRpb246ICcxMDAlJyA9IDEwMHZoXG4gICAqIGR1cmF0aW9uOiAxMDAgPSAxMDBweFxuICAgKiBkdXJhdGlvbjogeyAwOiAnNTAlJywgNzY4OiAnMTAwJSB9IC8vID0gU2Nyb2xsU2NlbmUgbGFzdHMgNTB2aCBvbiBtb2JpbGUsIDEwMCUgYWZ0ZXJcbiAgICovXG4gIGR1cmF0aW9uPzogc3RyaW5nIHwgbnVtYmVyIHwgb2JqZWN0XG5cbiAgLyoqXG4gICAqIGdzYXBcbiAgICogQGRlc2MgVXNlIHRvIHNldCBvcHRpb25zIGZvciB0aGUgZ3NhcCBhbmltYXRpb24gb2YgdGhlIFNjcm9sbE9ic2VydmVyLlxuICAgKiBAdHlwZSBvYmplY3RcbiAgICogQGV4YW1wbGVcbiAgICogZ3NhcDogeyB0aW1lbGluZTogbXlUaW1lbGluZSwgeW95bzogdHJ1ZSwgcmV2ZXJzZVNwZWVkOiAyIH1cbiAgICovXG4gIGdzYXA/OiBJU2Nyb2xsT2JzZXJ2ZXJHc2FwXG5cbiAgLyoqXG4gICAqIHRyaWdnZXJIb29rXG4gICAqIEBkZXNjIFNldCB0aGUgb2Zmc2V0IG9mIHRoZSBTY3JvbGxNYWdpYyBzY2VuZS5cbiAgICogQHR5cGUgIG51bWJlciB8IHN0cmluZ1xuICAgKiBAZGVmYXVsdHZhbHVlIDBcbiAgICogQGV4YW1wbGVcbiAgICogb2Zmc2V0OiAxMDBcbiAgICogb2Zmc2V0OiAnMTAlJ1xuICAgKi9cbiAgb2Zmc2V0PzogbnVtYmVyIHwgc3RyaW5nXG5cbiAgLyoqXG4gICAqIHNjZW5lXG4gICAqIEBkZXNjIEV4dHJhIG9wdGlvbnMgdG8gcGFzcyB0aGUgbmV3IFNjcm9sbE1hZ2ljLlNjZW5lLCBsaWtlIGxvZ0xldmVsLCBldGMuXG4gICAqIEB0eXBlIG9iamVjdFxuICAgKiBAZXhhbXBsZVxuICAgKiBzY2VuZTogeyBsb2dMZXZlbDogMiB9XG4gICAqL1xuICBzY2VuZT86IG9iamVjdFxuXG4gIC8qKlxuICAgKiB0b2dnbGVcbiAgICogQGRlc2MgVXNlIHRvIHNldCB0aGUgb3B0aW9ucyBmb3IgdGhlIHRvZ2dsaW5nIG9mIGEgY2xhc3NOYW1lXG4gICAqIEB0eXBlIG9iamVjdFxuICAgKiBAZXhhbXBsZVxuICAgKiB0b2dnbGU6IHsgZWxlbWVudDogY29udGFpbmVyUmVmLmN1cnJlbnQsIGNsYXNzTmFtZTogJ2xldHMtZG8tdGhpcycgfVxuICAgKi9cbiAgdG9nZ2xlPzogSVNjcm9sbFNjZW5lVG9nZ2xlXG5cbiAgLyoqXG4gICAqIHRyaWdnZXJFbGVtZW50XG4gICAqIEBkZXNjIFNldCB0aGUgZWxlbWVudCB5b3Ugd2lzaCB0byB0cmlnZ2VyIGV2ZW50cyBiYXNlZCB1cG9uLCB0aGUgb2JzZXJ2ZWQgZWxlbWVudC5cbiAgICogQHR5cGUgIEhUTUxFbGVtZW50IHwgUmVhY3QuUmVhY3ROb2RlIHwgYW55XG4gICAqIEBleGFtcGxlXG4gICAqIHRyaWdnZXJFbGVtZW50OiB0cmlnZ2VyUmVmLmN1cnJlbnRcbiAgICovXG4gIHRyaWdnZXJFbGVtZW50OiBIVE1MRWxlbWVudCB8IFJlYWN0LlJlYWN0Tm9kZSB8IGFueVxuXG4gIC8qKlxuICAgKiB0cmlnZ2VySG9va1xuICAgKiBAZGVzYyBTZXQgdGhlIHRyaWdnZXJIb29rIG9mIHRoZSBTY3JvbGxNYWdpYyBzY2VuZS5cbiAgICogQHR5cGUgIG51bWJlclxuICAgKiBAZGVmYXVsdHZhbHVlICdvbkVudGVyJ1xuICAgKiBAZXhhbXBsZVxuICAgKiB0cmlnZ2VySG9vazogMC41XG4gICAqL1xuICB0cmlnZ2VySG9vaz86IG51bWJlciB8IHN0cmluZ1xuXG4gIC8qKlxuICAgKiB1c2VHbG9iYWxDb250cm9sbGVyXG4gICAqIEBkZXNjIENob3NlIHdoZXRoZXIgb3Igbm90IHRvIHVzZSB0aGUgZ2xvYmFsQ29udHJvbGxlciBwcm92aWRlZCBmb3IgeW91LCBvciBhIGZyZXNoIG5ldyBTY3JvbGxNYWdpYy5Db250cm9sbGVyIGluc3RhbmNlLlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0VmFsdWUgdHJ1ZVxuICAgKiBAZXhhbXBsZVxuICAgKiB1c2VHbG9iYWxDb250cm9sbGVyOiBmYWxzZVxuICAgKi9cbiAgdXNlR2xvYmFsQ29udHJvbGxlcj86IGJvb2xlYW5cbn1cblxuLy8gYWRkIGNvbnRyb2xsZXIgdmFyXG5sZXQgZ2xvYmFsQ29udHJvbGxlclxuXG5jb25zdCBTY3JvbGxTY2VuZSA9IGZ1bmN0aW9uKFxuICB0aGlzOiBhbnksXG4gIHtcbiAgICBicmVha3BvaW50cyxcbiAgICBjb250cm9sbGVyID0ge30sXG4gICAgZHVyYXRpb24sXG4gICAgZ3NhcCxcbiAgICBvZmZzZXQgPSAwLFxuICAgIHNjZW5lID0ge30sXG4gICAgdG9nZ2xlLFxuICAgIHRyaWdnZXJFbGVtZW50LFxuICAgIHRyaWdnZXJIb29rID0gJ29uRW50ZXInLFxuICAgIHVzZUdsb2JhbENvbnRyb2xsZXIgPSB0cnVlLFxuICB9OiBJU2Nyb2xsU2NlbmUsXG4pIHtcbiAgbGV0IGxvY2FsQ29udHJvbGxlclxuXG4gIC8vIGNoZWNrIGlmIHVzaW5nIGEgbG9jYWwgY29udHJvbGxlclxuICBpZiAoIXVzZUdsb2JhbENvbnRyb2xsZXIpIHtcbiAgICBsb2NhbENvbnRyb2xsZXIgPSBuZXcgU2Nyb2xsTWFnaWMuQ29udHJvbGxlcihjb250cm9sbGVyKVxuICB9XG5cbiAgLy8gbW91bnQgY29udHJvbGxlclxuICBpZiAoIWdsb2JhbENvbnRyb2xsZXIgJiYgdXNlR2xvYmFsQ29udHJvbGxlcikge1xuICAgIGdsb2JhbENvbnRyb2xsZXIgPSBuZXcgU2Nyb2xsTWFnaWMuQ29udHJvbGxlcihjb250cm9sbGVyKVxuICB9XG5cbiAgY29uc3QgY29udHJvbGxlcklzVXNlID0gbG9jYWxDb250cm9sbGVyID8gbG9jYWxDb250cm9sbGVyIDogZ2xvYmFsQ29udHJvbGxlclxuXG4gIGlmICghdHJpZ2dlckVsZW1lbnQpIHtcbiAgICBlcnJvckxvZyhcbiAgICAgIG5hbWVTcGFjZSxcbiAgICAgIGBCZSBzdXJlIHRvIHNldCBhIGNvbnN0IHRyaWdnZXJFbGVtZW50ID0gKHJlYWN0UmVmLmN1cnJlbnQgb3IgZG9jdW1lbnQucXVlcnlTZWxlY3RvcikgaW4gdGhlIG5ldyAke25hbWVTcGFjZX0oeyB0cmlnZ2VyRWxlbWVudDogdHJpZ2dlckVsZW1lbnQgfSlgLFxuICAgIClcbiAgfVxuXG4gIGNvbnN0IFNjZW5lID0gbmV3IFNjcm9sbE1hZ2ljLlNjZW5lKHtcbiAgICB0cmlnZ2VyRWxlbWVudCxcbiAgICB0cmlnZ2VySG9vayxcbiAgICBvZmZzZXQsXG4gICAgLi4uc2NlbmUsXG4gIH0pXG5cbiAgaWYgKGR1cmF0aW9uKSB7XG4gICAgc2V0RHVyYXRpb24oU2NlbmUsIGR1cmF0aW9uKVxuICB9XG5cbiAgaWYgKHRvZ2dsZSAmJiBpc09iamVjdCh0b2dnbGUpKSB7XG4gICAgc2V0Q2xhc3NOYW1lKFNjZW5lLCB0b2dnbGUsIGR1cmF0aW9uKVxuICB9XG5cbiAgaWYgKGdzYXAgJiYgaXNPYmplY3QoZ3NhcCkpIHtcbiAgICBzZXRUd2VlbihTY2VuZSwgZ3NhcClcbiAgfVxuXG4gIHRoaXMuaW5pdCA9IGZ1bmN0aW9uKCkge1xuICAgIGNvbnRyb2xsZXJJc1VzZSAmJiBTY2VuZS5hZGRUbyhjb250cm9sbGVySXNVc2UpXG4gIH1cblxuICB0aGlzLmRlc3Ryb3kgPSBmdW5jdGlvbigpIHtcbiAgICBTY2VuZS5yZW1vdmUoKVxuICB9XG5cbiAgdGhpcy5TY2VuZSA9IFNjZW5lXG4gIHRoaXMuQ29udHJvbGxlciA9IGNvbnRyb2xsZXJJc1VzZVxuXG4gIHNjcm9sbEFuaW1hdGlvbkluaXQoYnJlYWtwb2ludHMsIHRoaXMuaW5pdCwgdGhpcy5kZXN0cm95KVxufVxuXG5leHBvcnQgeyBTY3JvbGxTY2VuZSB9XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TY3JvbGxTY2VuZS50cyJdLCJuYW1lcyI6WyJTY3JvbGxNYWdpYyIsInRocm90dGxlIiwiZXJyb3JMb2ciLCJpc09iamVjdCIsInNjcm9sbEFuaW1hdGlvbkluaXQiLCJuYW1lU3BhY2UiLCJ1cGRhdGVUd2VlblByb2dyZXNzIiwiU2NlbmUiLCJUd2VlbiIsImdzYXBGb3J3YXJkU3BlZWQiLCJnc2FwUmV2ZXJzZVNwZWVkIiwicHJvZ3Jlc3MiLCJzdGF0ZSIsInJlcGVhdCIsInBhdXNlZCIsInRpbWVTY2FsZSIsInBsYXkiLCJwYXVzZSIsImR1cmF0aW9uIiwicmV2ZXJzZSIsInJlbW92ZVR3ZWVuIiwia2lsbCIsInNldER1cmF0aW9uIiwia2V5cyIsIk9iamVjdCIsImZuIiwiaW5kZXgiLCJsZW5ndGgiLCJicmVha3BvaW50IiwicGFyc2VGbG9hdCIsIndpbmRvdyIsImlubmVyV2lkdGgiLCJhZGRFdmVudExpc3RlbmVyIiwic2V0Q2xhc3NOYW1lIiwib3B0aW9ucyIsInRvZ2dsZSIsImNsYXNzTmFtZSIsImVsZW1lbnQiLCJhZGRDbGFzc05hbWUiLCJjbGFzc0xpc3QiLCJjb250YWlucyIsImFkZCIsInJlbW92ZUNsYXNzTmFtZSIsInJlbW92ZSIsIm9uIiwiZXZlbnQiLCJzY3JvbGxEaXJlY3Rpb24iLCJzZXRUd2VlbiIsImdzYXAiLCJmb3J3YXJkU3BlZWQiLCJyZXZlcnNlU3BlZWQiLCJ0aW1lbGluZSIsImdsb2JhbENvbnRyb2xsZXIiLCJTY3JvbGxTY2VuZSIsImJyZWFrcG9pbnRzIiwiY29udHJvbGxlciIsIm9mZnNldCIsInNjZW5lIiwidHJpZ2dlckVsZW1lbnQiLCJ0cmlnZ2VySG9vayIsInVzZUdsb2JhbENvbnRyb2xsZXIiLCJsb2NhbENvbnRyb2xsZXIiLCJDb250cm9sbGVyIiwiY29udHJvbGxlcklzVXNlIiwiaW5pdCIsImFkZFRvIiwiZGVzdHJveSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBT0EsV0FBUDtB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QUNabUQsSUFBQUEsY0FBYyxFQUFkQSxjQURZO0FBRVpDLElBQUFBLFdBQVcsRUFBWEEsV0FGWTtBQUdaSCxJQUFBQSxNQUFNLEVBQU5BO0FBSFksS0FJVEMsS0FKUyxFQUFkOztBQU9BLE1BQUl2QyxRQUFKLEVBQWM7QUFDWkksSUFBQUEsV0FBVyxDQUFDZixLQUFELEVBQVFXLFFBQVIsQ0FBWDtBQUNEOztBQUVELE1BQUlpQixNQUFNLElBQUloQyxRQUFRLENBQUNnQyxNQUFELENBQXRCLEVBQWdDO0FBQzlCRixJQUFBQSxZQUFZLENBQUMxQixLQUFELEVBQVE0QixNQUFSLEVBQWdCakIsUUFBaEIsQ0FBWjtBQUNEOztBQUVELE1BQUk4QixJQUFJLElBQUk3QyxRQUFRLENBQUM2QyxJQUFELENBQXBCLEVBQTRCO0FBQzFCRCxJQUFBQSxRQUFRLENBQUN4QyxLQUFELEVBQVF5QyxJQUFSLENBQVI7QUFDRDs7QUFFRCxPQUFLZ0IsSUFBTCxHQUFZLFlBQVc7QUFDckJELElBQUFBLGVBQWUsSUFBSXhELEtBQUssQ0FBQzBELEtBQU4sQ0FBWUYsZUFBWixDQUFuQjtBQUNELEdBRkQ7O0FBSUEsT0FBS0csT0FBTCxHQUFlLFlBQVc7QUFDeEIzRCxJQUFBQSxLQUFLLENBQUNvQyxNQUFOO0FBQ0QsR0FGRDs7QUFJQSxPQUFLcEMsS0FBTCxHQUFhQSxLQUFiO0FBQ0EsT0FBS3VELFVBQUwsR0FBa0JDLGVBQWxCO0FBRUEzRCxFQUFBQSxtQkFBbUIsQ0FBQ2tELFdBQUQsRUFBYyxLQUFLVSxJQUFuQixFQUF5QixLQUFLRSxPQUE5QixDQUFuQjtBQUNELENBbkVEOztBQXFFQSxTQUFTYixXQUFUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFNjcm9sbE1hZ2ljIGZyb20gJy4vc2Nyb2xsbWFnaWMtd2l0aC1zc3InXG5pbXBvcnQgdGhyb3R0bGUgZnJvbSAnbG9kYXNoLnRocm90dGxlJ1xuaW1wb3J0IHsgZXJyb3JMb2csIGlzT2JqZWN0LCBzY3JvbGxBbmltYXRpb25Jbml0IH0gZnJvbSAnLi9oZWxwZXJzJ1xuaW1wb3J0IHsgSVNjcm9sbE9ic2VydmVyVG9nZ2xlLCBJU2Nyb2xsT2JzZXJ2ZXJHc2FwIH0gZnJvbSAnLi9TY3JvbGxPYnNlcnZlcidcblxuY29uc3QgbmFtZVNwYWNlID0gJ1Njcm9sbFNjZW5lJ1xuXG5jb25zdCB1cGRhdGVUd2VlblByb2dyZXNzID0gZnVuY3Rpb24oU2NlbmUsIFR3ZWVuLCBnc2FwRm9yd2FyZFNwZWVkLCBnc2FwUmV2ZXJzZVNwZWVkKSB7XG4gIGlmIChUd2Vlbikge1xuICAgIGNvbnN0IHByb2dyZXNzID0gU2NlbmUucHJvZ3Jlc3MoKVxuICAgIGNvbnN0IHN0YXRlID0gU2NlbmUuc3RhdGUoKVxuICAgIGlmIChUd2Vlbi5yZXBlYXQgJiYgVHdlZW4ucmVwZWF0KCkgPT09IC0xKSB7XG4gICAgICAvLyBpbmZpbml0ZSBsb29wLCBzbyBub3QgaW4gcmVsYXRpb24gdG8gcHJvZ3Jlc3NcbiAgICAgIGlmIChzdGF0ZSA9PT0gJ0RVUklORycgJiYgVHdlZW4ucGF1c2VkKCkpIHtcbiAgICAgICAgVHdlZW4udGltZVNjYWxlKGdzYXBGb3J3YXJkU3BlZWQpLnBsYXkoKVxuICAgICAgfSBlbHNlIGlmIChzdGF0ZSAhPT0gJ0RVUklORycgJiYgIVR3ZWVuLnBhdXNlZCgpKSB7XG4gICAgICAgIFR3ZWVuLnBhdXNlKClcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHByb2dyZXNzICE9IFR3ZWVuLnByb2dyZXNzKCkpIHtcbiAgICAgIC8vIGRvIHdlIGV2ZW4gbmVlZCB0byB1cGRhdGUgdGhlIHByb2dyZXNzP1xuICAgICAgLy8gbm8gaW5maW5pdGUgbG9vcCAtIHNvIHNob3VsZCB3ZSBqdXN0IHBsYXkgb3IgZ28gdG8gYSBzcGVjaWZpYyBwb2ludCBpbiB0aW1lP1xuICAgICAgaWYgKFNjZW5lLmR1cmF0aW9uKCkgPT09IDApIHtcbiAgICAgICAgLy8gcGxheSB0aGUgYW5pbWF0aW9uXG4gICAgICAgIGlmIChwcm9ncmVzcyA+IDApIHtcbiAgICAgICAgICAvLyBwbGF5IGZyb20gMCB0byAxXG4gICAgICAgICAgVHdlZW4udGltZVNjYWxlKGdzYXBGb3J3YXJkU3BlZWQpLnBsYXkoKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHBsYXkgZnJvbSAxIHRvIDBcbiAgICAgICAgICBUd2Vlbi50aW1lU2NhbGUoZ3NhcFJldmVyc2VTcGVlZCkucmV2ZXJzZSgpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGdvIHRvIGEgc3BlY2lmaWMgcG9pbnQgaW4gdGltZVxuICAgICAgICAvLyBqdXN0IGhhcmQgc2V0IGl0XG4gICAgICAgIFR3ZWVuLnByb2dyZXNzKHByb2dyZXNzKS5wYXVzZSgpXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmNvbnN0IHJlbW92ZVR3ZWVuID0gZnVuY3Rpb24oVHdlZW4pIHtcbiAgaWYgKFR3ZWVuKSB7XG4gICAgVHdlZW4ucGF1c2UoMClcbiAgICBUd2Vlbi5raWxsKClcbiAgfVxufVxuXG5jb25zdCBzZXREdXJhdGlvbiA9IChTY2VuZSwgZHVyYXRpb24pID0+IHtcbiAgaWYgKGlzT2JqZWN0KGR1cmF0aW9uKSkge1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhkdXJhdGlvbikucmV2ZXJzZSgpXG5cbiAgICBjb25zdCBmbiA9ICgpID0+IHtcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBrZXlzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICBjb25zdCBicmVha3BvaW50ID0gcGFyc2VGbG9hdChrZXlzW2luZGV4XSlcblxuICAgICAgICBpZiAoYnJlYWtwb2ludCA8PSB3aW5kb3cuaW5uZXJXaWR0aCkge1xuICAgICAgICAgIFNjZW5lLmR1cmF0aW9uKGR1cmF0aW9uW2JyZWFrcG9pbnRdKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBmbigpXG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhyb3R0bGUoZm4sIDcwMCkpXG4gIH0gZWxzZSB7XG4gICAgU2NlbmUuZHVyYXRpb24oZHVyYXRpb24pXG4gIH1cbn1cblxuY29uc3Qgc2V0Q2xhc3NOYW1lID0gKFNjZW5lLCBvcHRpb25zLCBkdXJhdGlvbikgPT4ge1xuICBjb25zdCB0b2dnbGUgPSB7XG4gICAgY2xhc3NOYW1lOiBudWxsLFxuICAgIGVsZW1lbnQ6IG51bGwsXG4gICAgcmV2ZXJzZTogZmFsc2UsXG4gICAgLi4ub3B0aW9ucyxcbiAgfVxuXG4gIGlmICghdG9nZ2xlLmNsYXNzTmFtZSkge1xuICAgIGVycm9yTG9nKG5hbWVTcGFjZSwgYEJlIHN1cmUgdG8gc2V0IGEgY2xhc3NOYW1lIGluIHRoZSBuZXcgJHtuYW1lU3BhY2V9KHsgdG9nZ2xlOiB7IGNsYXNzTmFtZTogXCJteS1jbGFzc1wiIH0gfSlgKVxuICB9XG5cbiAgaWYgKCF0b2dnbGUuZWxlbWVudCkge1xuICAgIGVycm9yTG9nKFxuICAgICAgbmFtZVNwYWNlLFxuICAgICAgYEJlIHN1cmUgdG8gc2V0IGEgY29uc3QgdG9nZ2xlRWxlbWVudCA9IChyZWFjdFJlZi5jdXJyZW50IG9yIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IpIGluIHRoZSBuZXcgJHtuYW1lU3BhY2V9KHsgdG9nZ2xlOiB7IGVsZW1lbnQ6IHRvZ2dsZUVsZW1lbnQgfSB9KWAsXG4gICAgKVxuICB9XG5cbiAgY29uc3QgYWRkQ2xhc3NOYW1lID0gKCkgPT5cbiAgICAhdG9nZ2xlLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKHRvZ2dsZS5jbGFzc05hbWUpICYmIHRvZ2dsZS5lbGVtZW50LmNsYXNzTGlzdC5hZGQodG9nZ2xlLmNsYXNzTmFtZSlcblxuICBjb25zdCByZW1vdmVDbGFzc05hbWUgPSAoKSA9PlxuICAgIHRvZ2dsZS5lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyh0b2dnbGUuY2xhc3NOYW1lKSAmJiB0b2dnbGUuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKHRvZ2dsZS5jbGFzc05hbWUpXG5cbiAgU2NlbmUub24oJ2VudGVyJywgZnVuY3Rpb24oKSB7XG4gICAgYWRkQ2xhc3NOYW1lKClcbiAgfSlcblxuICBTY2VuZS5vbignYWRkJywgZnVuY3Rpb24oKSB7XG4gICAgaWYgKFNjZW5lLnN0YXRlKCkgPT09ICdEVVJJTkcnKSB7XG4gICAgICBhZGRDbGFzc05hbWUoKVxuICAgIH1cbiAgfSlcblxuICBTY2VuZS5vbignbGVhdmUnLCBmdW5jdGlvbihldmVudCkge1xuICAgIGlmICghdG9nZ2xlLnJldmVyc2UgJiYgZHVyYXRpb24pIHtcbiAgICAgIC8vIG5lZWRzIHRvIGJlIGJhc2VkIG9uIHdoZXRoZXIgb3Igbm90IHdlIGhhdmUgYSBkdXJhdGlvblxuICAgICAgZXZlbnQuc2Nyb2xsRGlyZWN0aW9uID09PSAnUkVWRVJTRScgJiYgcmVtb3ZlQ2xhc3NOYW1lKClcbiAgICB9IGVsc2Uge1xuICAgICAgcmVtb3ZlQ2xhc3NOYW1lKClcbiAgICB9XG4gIH0pXG5cbiAgU2NlbmUub24oJ3JlbW92ZScsIGZ1bmN0aW9uKCkge1xuICAgIHJlbW92ZUNsYXNzTmFtZSgpXG4gIH0pXG59XG5cbmNvbnN0IHNldFR3ZWVuID0gKFNjZW5lLCBvcHRpb25zKSA9PiB7XG4gIGNvbnN0IGdzYXAgPSB7XG4gICAgZm9yd2FyZFNwZWVkOiAxLFxuICAgIHJldmVyc2VTcGVlZDogMSxcbiAgICB0aW1lbGluZTogbnVsbCxcbiAgICAuLi5vcHRpb25zLFxuICB9XG5cbiAgaWYgKCFnc2FwLnRpbWVsaW5lKSB7XG4gICAgZXJyb3JMb2coXG4gICAgICBuYW1lU3BhY2UsXG4gICAgICBgQmUgc3VyZSB0byBzZXQgYSBjb25zdCB0bCA9IGdzYXAudGltZWxpbmUoeyBwYXVzZWQ6IHRydWUgfSkgaW4gdGhlIG5ldyAke25hbWVTcGFjZX0oeyBnc2FwOiB7IHRpbWVsaW5lOiB0bCB9IH0pYCxcbiAgICApXG4gIH1cblxuICBTY2VuZS5vbigncHJvZ3Jlc3MnLCBmdW5jdGlvbigpIHtcbiAgICB1cGRhdGVUd2VlblByb2dyZXNzKFNjZW5lLCBnc2FwLnRpbWVsaW5lLCBnc2FwLmZvcndhcmRTcGVlZCwgZ3NhcC5yZXZlcnNlU3BlZWQpXG4gIH0pXG5cbiAgU2NlbmUub24oJ3JlbW92ZScsIGZ1bmN0aW9uKCkge1xuICAgIHJlbW92ZVR3ZWVuKGdzYXAudGltZWxpbmUpXG4gIH0pXG59XG5cbmludGVyZmFjZSBJU2Nyb2xsU2NlbmVUb2dnbGUgZXh0ZW5kcyBJU2Nyb2xsT2JzZXJ2ZXJUb2dnbGUge1xuICAvKipcbiAgICogcmV2ZXJzZVxuICAgKiBAZGVzYyBTcGVjaWZ5IHRoZSBjbGFzc05hbWUgc2hvdWxkIGJlIHJlbW92ZWQgYWZ0ZXIgdGhlIGR1cmF0aW9uIG9mIHNjZW5lIGlzIG1ldC4gT25seSBhcHBsaWVzIGlmIHNjZW5lIGhhcyBkdXJhdGlvbi5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAZXhhbXBsZVxuICAgKiB0b2dnbGU6IHsgcmV2ZXJzZTogdHJ1ZSB9XG4gICAqL1xuICByZXZlcnNlPzogYm9vbGVhblxufVxuXG5pbnRlcmZhY2UgSVNjcm9sbFNjZW5lIHtcbiAgLyoqXG4gICAqIGJyZWFrcG9pbnRzXG4gICAqIEBkZXNjIFVzZSB0byBzZXQgcmVzcG9uc2l2ZW5lc3Mgb2YgdGhlIG5ldyBTY3JvbGxNYWdpYy5TY2VuZSwgbW9iaWxlLWZpcnN0XG4gICAqIEB0eXBlIG9iamVjdFxuICAgKiBAZXhhbXBsZVxuICAgKiBicmVha3BvaW50czogeyAwOiBmYWxzZSwgNzY4OiB0cnVlIH1cbiAgICovXG4gIGJyZWFrcG9pbnRzPzogb2JqZWN0XG5cbiAgLyoqXG4gICAqIGNvbnRyb2xsZXJcbiAgICogQGRlc2MgRXh0cmEgb3B0aW9ucyB0byBwYXNzIHRoZSBuZXcgU2Nyb2xsTWFnaWMuQ29udHJvbGxlciwgbGlrZSB2ZXJ0aWNhbCwgZXRjLlxuICAgKiBAdHlwZSBvYmplY3RcbiAgICogQGV4YW1wbGVcbiAgICogY29udHJvbGxlcjogeyB2ZXJ0aWNhbDogZmFsc2UgfVxuICAgKi9cbiAgY29udHJvbGxlcj86IG9iamVjdFxuXG4gIC8qKlxuICAgKiBkdXJhdGlvblxuICAgKiBAZGVzYyBVc2UgdG8gc2V0IHJlc3BvbnNpdmVuZXNzIG9mIHRoZSBuZXcgU2Nyb2xsTWFnaWMuU2NlbmUsIG1vYmlsZS1maXJzdCAoaWYgc2V0dGluZyBicmVha3BvaW50cylcbiAgICogTXVzdCBiZSBzdHJpbmcgZm9yIHBlcmNlbnRhZ2UsIGFuZCBudW1iZXIgZm9yIHBpeGVsLlxuICAgKiBAdHlwZSBvYmplY3RcbiAgICogQGV4YW1wbGVcbiAgICogZHVyYXRpb246ICcxMDAlJyA9IDEwMHZoXG4gICAqIGR1cmF0aW9uOiAxMDAgPSAxMDBweFxuICAgKiBkdXJhdGlvbjogeyAwOiAnNTAlJywgNzY4OiAnMTAwJSB9IC8vID0gU2Nyb2xsU2NlbmUgbGFzdHMgNTB2aCBvbiBtb2JpbGUsIDEwMCUgYWZ0ZXJcbiAgICovXG4gIGR1cmF0aW9uPzogc3RyaW5nIHwgbnVtYmVyIHwgb2JqZWN0XG5cbiAgLyoqXG4gICAqIGdzYXBcbiAgICogQGRlc2MgVXNlIHRvIHNldCBvcHRpb25zIGZvciB0aGUgZ3NhcCBhbmltYXRpb24gb2YgdGhlIFNjcm9sbE9ic2VydmVyLlxuICAgKiBAdHlwZSBvYmplY3RcbiAgICogQGV4YW1wbGVcbiAgICogZ3NhcDogeyB0aW1lbGluZTogbXlUaW1lbGluZSwgeW95bzogdHJ1ZSwgcmV2ZXJzZVNwZWVkOiAyIH1cbiAgICovXG4gIGdzYXA/OiBJU2Nyb2xsT2JzZXJ2ZXJHc2FwXG5cbiAgLyoqXG4gICAqIHRyaWdnZXJIb29rXG4gICAqIEBkZXNjIFNldCB0aGUgb2Zmc2V0IG9mIHRoZSBTY3JvbGxNYWdpYyBzY2VuZS5cbiAgICogQHR5cGUgIG51bWJlciB8IHN0cmluZ1xuICAgKiBAZGVmYXVsdHZhbHVlIDBcbiAgICogQGV4YW1wbGVcbiAgICogb2Zmc2V0OiAxMDBcbiAgICogb2Zmc2V0OiAnMTAlJ1xuICAgKi9cbiAgb2Zmc2V0PzogbnVtYmVyIHwgc3RyaW5nXG5cbiAgLyoqXG4gICAqIHNjZW5lXG4gICAqIEBkZXNjIEV4dHJhIG9wdGlvbnMgdG8gcGFzcyB0aGUgbmV3IFNjcm9sbE1hZ2ljLlNjZW5lLCBsaWtlIGxvZ0xldmVsLCBldGMuXG4gICAqIEB0eXBlIG9iamVjdFxuICAgKiBAZXhhbXBsZVxuICAgKiBzY2VuZTogeyBsb2dMZXZlbDogMiB9XG4gICAqL1xuICBzY2VuZT86IG9iamVjdFxuXG4gIC8qKlxuICAgKiB0b2dnbGVcbiAgICogQGRlc2MgVXNlIHRvIHNldCB0aGUgb3B0aW9ucyBmb3IgdGhlIHRvZ2dsaW5nIG9mIGEgY2xhc3NOYW1lXG4gICAqIEB0eXBlIG9iamVjdFxuICAgKiBAZXhhbXBsZVxuICAgKiB0b2dnbGU6IHsgZWxlbWVudDogY29udGFpbmVyUmVmLmN1cnJlbnQsIGNsYXNzTmFtZTogJ2xldHMtZG8tdGhpcycgfVxuICAgKi9cbiAgdG9nZ2xlPzogSVNjcm9sbFNjZW5lVG9nZ2xlXG5cbiAgLyoqXG4gICAqIHRyaWdnZXJFbGVtZW50XG4gICAqIEBkZXNjIFNldCB0aGUgZWxlbWVudCB5b3Ugd2lzaCB0byB0cmlnZ2VyIGV2ZW50cyBiYXNlZCB1cG9uLCB0aGUgb2JzZXJ2ZWQgZWxlbWVudC5cbiAgICogQHR5cGUgIEhUTUxFbGVtZW50IHwgYW55XG4gICAqIEBleGFtcGxlXG4gICAqIHRyaWdnZXJFbGVtZW50OiB0cmlnZ2VyUmVmLmN1cnJlbnRcbiAgICovXG4gIHRyaWdnZXJFbGVtZW50OiBIVE1MRWxlbWVudCB8IGFueVxuXG4gIC8qKlxuICAgKiB0cmlnZ2VySG9va1xuICAgKiBAZGVzYyBTZXQgdGhlIHRyaWdnZXJIb29rIG9mIHRoZSBTY3JvbGxNYWdpYyBzY2VuZS5cbiAgICogQHR5cGUgIG51bWJlclxuICAgKiBAZGVmYXVsdHZhbHVlICdvbkVudGVyJ1xuICAgKiBAZXhhbXBsZVxuICAgKiB0cmlnZ2VySG9vazogMC41XG4gICAqL1xuICB0cmlnZ2VySG9vaz86IG51bWJlciB8IHN0cmluZ1xuXG4gIC8qKlxuICAgKiB1c2VHbG9iYWxDb250cm9sbGVyXG4gICAqIEBkZXNjIENob3NlIHdoZXRoZXIgb3Igbm90IHRvIHVzZSB0aGUgZ2xvYmFsQ29udHJvbGxlciBwcm92aWRlZCBmb3IgeW91LCBvciBhIGZyZXNoIG5ldyBTY3JvbGxNYWdpYy5Db250cm9sbGVyIGluc3RhbmNlLlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0VmFsdWUgdHJ1ZVxuICAgKiBAZXhhbXBsZVxuICAgKiB1c2VHbG9iYWxDb250cm9sbGVyOiBmYWxzZVxuICAgKi9cbiAgdXNlR2xvYmFsQ29udHJvbGxlcj86IGJvb2xlYW5cbn1cblxuLy8gYWRkIGNvbnRyb2xsZXIgdmFyXG5sZXQgZ2xvYmFsQ29udHJvbGxlclxuXG5jb25zdCBTY3JvbGxTY2VuZSA9IGZ1bmN0aW9uKFxuICB0aGlzOiBhbnksXG4gIHtcbiAgICBicmVha3BvaW50cyxcbiAgICBjb250cm9sbGVyID0ge30sXG4gICAgZHVyYXRpb24sXG4gICAgZ3NhcCxcbiAgICBvZmZzZXQgPSAwLFxuICAgIHNjZW5lID0ge30sXG4gICAgdG9nZ2xlLFxuICAgIHRyaWdnZXJFbGVtZW50LFxuICAgIHRyaWdnZXJIb29rID0gJ29uRW50ZXInLFxuICAgIHVzZUdsb2JhbENvbnRyb2xsZXIgPSB0cnVlLFxuICB9OiBJU2Nyb2xsU2NlbmUsXG4pIHtcbiAgbGV0IGxvY2FsQ29udHJvbGxlclxuXG4gIC8vIGNoZWNrIGlmIHVzaW5nIGEgbG9jYWwgY29udHJvbGxlclxuICBpZiAoIXVzZUdsb2JhbENvbnRyb2xsZXIpIHtcbiAgICBsb2NhbENvbnRyb2xsZXIgPSBuZXcgU2Nyb2xsTWFnaWMuQ29udHJvbGxlcihjb250cm9sbGVyKVxuICB9XG5cbiAgLy8gbW91bnQgY29udHJvbGxlclxuICBpZiAoIWdsb2JhbENvbnRyb2xsZXIgJiYgdXNlR2xvYmFsQ29udHJvbGxlcikge1xuICAgIGdsb2JhbENvbnRyb2xsZXIgPSBuZXcgU2Nyb2xsTWFnaWMuQ29udHJvbGxlcihjb250cm9sbGVyKVxuICB9XG5cbiAgY29uc3QgY29udHJvbGxlcklzVXNlID0gbG9jYWxDb250cm9sbGVyID8gbG9jYWxDb250cm9sbGVyIDogZ2xvYmFsQ29udHJvbGxlclxuXG4gIGlmICghdHJpZ2dlckVsZW1lbnQpIHtcbiAgICBlcnJvckxvZyhcbiAgICAgIG5hbWVTcGFjZSxcbiAgICAgIGBCZSBzdXJlIHRvIHNldCBhIGNvbnN0IHRyaWdnZXJFbGVtZW50ID0gKHJlYWN0UmVmLmN1cnJlbnQgb3IgZG9jdW1lbnQucXVlcnlTZWxlY3RvcikgaW4gdGhlIG5ldyAke25hbWVTcGFjZX0oeyB0cmlnZ2VyRWxlbWVudDogdHJpZ2dlckVsZW1lbnQgfSlgLFxuICAgIClcbiAgfVxuXG4gIGNvbnN0IFNjZW5lID0gbmV3IFNjcm9sbE1hZ2ljLlNjZW5lKHtcbiAgICB0cmlnZ2VyRWxlbWVudCxcbiAgICB0cmlnZ2VySG9vayxcbiAgICBvZmZzZXQsXG4gICAgLi4uc2NlbmUsXG4gIH0pXG5cbiAgaWYgKGR1cmF0aW9uKSB7XG4gICAgc2V0RHVyYXRpb24oU2NlbmUsIGR1cmF0aW9uKVxuICB9XG5cbiAgaWYgKHRvZ2dsZSAmJiBpc09iamVjdCh0b2dnbGUpKSB7XG4gICAgc2V0Q2xhc3NOYW1lKFNjZW5lLCB0b2dnbGUsIGR1cmF0aW9uKVxuICB9XG5cbiAgaWYgKGdzYXAgJiYgaXNPYmplY3QoZ3NhcCkpIHtcbiAgICBzZXRUd2VlbihTY2VuZSwgZ3NhcClcbiAgfVxuXG4gIHRoaXMuaW5pdCA9IGZ1bmN0aW9uKCkge1xuICAgIGNvbnRyb2xsZXJJc1VzZSAmJiBTY2VuZS5hZGRUbyhjb250cm9sbGVySXNVc2UpXG4gIH1cblxuICB0aGlzLmRlc3Ryb3kgPSBmdW5jdGlvbigpIHtcbiAgICBTY2VuZS5yZW1vdmUoKVxuICB9XG5cbiAgdGhpcy5TY2VuZSA9IFNjZW5lXG4gIHRoaXMuQ29udHJvbGxlciA9IGNvbnRyb2xsZXJJc1VzZVxuXG4gIHNjcm9sbEFuaW1hdGlvbkluaXQoYnJlYWtwb2ludHMsIHRoaXMuaW5pdCwgdGhpcy5kZXN0cm95KVxufVxuXG5leHBvcnQgeyBTY3JvbGxTY2VuZSB9XG4iXX0=
{
"name": "scrollscene",
"title": "ScrollScene",
"version": "0.0.10",
"version": "0.0.11",
"description": "ScrollScene is an extra layer on top of ScrollMagic as well as using IntersectionObserver to achieve similar effects.",

@@ -6,0 +6,0 @@ "author": "Jon K. Wheeler",

@@ -23,2 +23,8 @@ [![GitHub tag (latest by date)](https://img.shields.io/github/v/tag/jonkwheeler/ScrollScene?label=latest%20release)](https://img.shields.io/github/v/tag/jonkwheeler/ScrollScene?color=forest&label=latest%20release)

If plan to use only the ScrollObserver, currently you can
```js
yarn add scrollscene && yarn add -D scrollmagic
```
to avoid import errors.
## Import

@@ -91,3 +97,3 @@

- Is written in TypeScript so you have access to the types.
- This does not include `gsap` or `scrollmagic`. If you plan to use them, you'll need to install them in addition to `scrollscene`.
- This does not include `gsap` or `scrollmagic`. If you plan to use them, you'll need to install them in addition to `scrollscene`. If you don't plan to use ScrollScene, you currently still have to install `scrollmagic`, but can so as a dev dependency. `yarn add -D scrollmagic`,
- This works with Gsap without having to import the extra `animation.gsap.js` file from ScrollMagic (though you'll have to install in yourself `yarn add gsap` or `npm install gsap`). In turn this is smaller than using ScrollMagic and animation.gsap.js.

@@ -100,2 +106,7 @@ - It allows for scene init breakpoints, and for scene duration breakpoints. This will also will on SSR if implemented correctly.

## Next Steps
- Add native setPin functionality using ScrollObserver to deprecate using it with ScrollMagic.
- Add out-of-the-box split text animations, svg line draw, etc...
## Usage

@@ -106,2 +117,4 @@

```js
import { ScrollScene } from 'scrollscene'
const myElement = document.querySelector('#element')

@@ -117,2 +130,4 @@

```js
import { ScrollScene } from 'scrollscene'
const scrollScene = new ScrollScene({

@@ -130,2 +145,4 @@ triggerElement: domNode,

```js
import { ScrollScene } from 'scrollscene'
const scrollScene = new ScrollScene({

@@ -146,2 +163,4 @@ triggerElement: domNode,

```js
import { ScrollScene } from 'scrollscene'
const scrollScene = new ScrollScene({

@@ -161,2 +180,4 @@ triggerElement: domNode,

```js
import { ScrollScene } from 'scrollscene'
const scrollScene = new ScrollScene({

@@ -178,2 +199,4 @@ triggerElement: domNode,

```js
import { ScrollScene } from 'scrollscene'
const scrollScene = new ScrollScene({

@@ -194,2 +217,4 @@ triggerElement: domNode,

```js
import { ScrollScene } from 'scrollscene'
const scrollScene = new ScrollScene({

@@ -208,2 +233,4 @@ triggerElement: domNode,

```js
import { ScrollScene } from 'scrollscene'
const scrollScene = new ScrollScene({

@@ -219,2 +246,4 @@ triggerElement: domNode,

```js
import { ScrollScene } from 'scrollscene'
const scrollScene = new ScrollScene({

@@ -230,2 +259,5 @@ triggerElement: domNode,

```js
import { ScrollScene } from 'scrollscene'
import { gsap } from 'gsap'
// create a timeline and add a tween

@@ -251,2 +283,5 @@ const myTimeline = gsap.timeline({ paused: true })

```js
import { ScrollScene } from 'scrollscene'
import { gsap } from 'gsap'
// create a timeline and add a tween

@@ -273,2 +308,5 @@ const myTimeline = gsap.timeline({ paused: true })

```js
import { ScrollScene } from 'scrollscene'
import { gsap } from 'gsap'
// create a timeline and add a tween

@@ -297,2 +335,5 @@ const myTimeline = gsap.timeline({ paused: true })

```js
import { ScrollScene } from 'scrollscene'
import { gsap } from 'gsap'
const scrollObserver = new ScrollObserver({

@@ -310,2 +351,5 @@ triggerElement: domNode,

```js
import { ScrollScene } from 'scrollscene'
import { gsap } from 'gsap'
// create a timeline and add a tween

@@ -331,2 +375,5 @@ const tl = gsap.timeline({ paused: true })

```js
import { ScrollScene } from 'scrollscene'
import { gsap } from 'gsap'
// create a timeline and add a tween

@@ -354,2 +401,5 @@ const tl = gsap.timeline({ paused: true })

```js
import { ScrollObserver } from 'scrollscene'
import { gsap } from 'gsap'
// create a timeline and add a tween

@@ -376,2 +426,4 @@ const tl = gsap.timeline({ paused: true })

```js
import { ScrollObserver } from 'scrollscene'
const scrollObserver = new ScrollObserver({

@@ -389,2 +441,4 @@ triggerElement: domNode,

```js
import { ScrollObserver } from 'scrollscene'
const scrollObserver = new ScrollObserver({

@@ -399,2 +453,4 @@ triggerElement: domNode,

```js
import { ScrollObserver } from 'scrollscene'
const scrollObserver = new ScrollObserver({

@@ -411,2 +467,4 @@ triggerElement: domNode,

```js
import { ScrollObserver } from 'scrollscene'
const scrollObserver = new ScrollObserver({

@@ -423,2 +481,4 @@ triggerElement: domNode,

```js
import { ScrollObserver } from 'scrollscene'
const scrollObserver = new ScrollObserver({

@@ -433,2 +493,4 @@ triggerElement: domNode,

```js
import { ScrollObserver } from 'scrollscene'
const scrollObserver = new ScrollObserver({

@@ -435,0 +497,0 @@ triggerElement: domNode,

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc