Socket
Socket
Sign inDemoInstall

@glimmer/object

Package Overview
Dependencies
Maintainers
10
Versions
160
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@glimmer/object - npm Package Compare versions

Comparing version 0.26.2 to 0.27.0

2

dist/commonjs/es2017/index.js

@@ -80,2 +80,2 @@ 'use strict';

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbImRlZmF1bHQiLCJDbGFzc01ldGEiLCJJbnN0YW5jZU1ldGEiLCJjb21wdXRlZCIsIm9ic2VydmVyIiwiTWl4aW4iLCJCbHVlcHJpbnQiLCJ0b01peGluIiwiYWxpYXNNZXRob2QiLCJhbGlhcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7MkNBQVNBLE87Ozs7OzttQkFBU0MsUzs7Ozs7O21CQUFXQyxZOzs7Ozs7Ozs7cUJBQ3BCQyxROzs7Ozs7cUJBQVVDLFE7Ozs7Ozs7OztrQkFDVkMsSzs7Ozs7O2tCQUFPQyxTOzs7Ozs7a0JBQVdDLE87Ozs7Ozs7Ozt3QkFDbEJDLFc7Ozs7Ozt3QkFBYUMsSyIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGRlZmF1bHQsIENsYXNzTWV0YSwgSW5zdGFuY2VNZXRhIH0gZnJvbSAnLi9saWIvb2JqZWN0JztcbmV4cG9ydCB7IGNvbXB1dGVkLCBvYnNlcnZlciB9IGZyb20gJy4vbGliL2NvbXB1dGVkJztcbmV4cG9ydCB7IE1peGluLCBCbHVlcHJpbnQsIHRvTWl4aW4gfSBmcm9tICcuL2xpYi9taXhpbic7XG5leHBvcnQgeyBhbGlhc01ldGhvZCwgYWxpYXMgfSBmcm9tICcuL2xpYi9kZXNjcmlwdG9ycyc7Il19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7MkNBQVMsQUFBTyxBQUFJLEFBQU87Ozs7OzttQkFBRSxBQUFTOzs7Ozs7bUJBQUUsQUFBWSxBQUF3QixBQUFNLEFBQWMsQUFBQyxBQUNqRyxBQUFPOzs7Ozs7Ozs7cUJBQUUsQUFBUTs7Ozs7O3FCQUFFLEFBQVEsQUFBRSxBQUFNLEFBQWdCLEFBQUMsQUFDcEQsQUFBTzs7Ozs7Ozs7O2tCQUFFLEFBQUs7Ozs7OztrQkFBRSxBQUFTOzs7Ozs7a0JBQUUsQUFBTyxBQUFFLEFBQU0sQUFBYSxBQUFDLEFBQ3hELEFBQU87Ozs7Ozs7Ozt3QkFBRSxBQUFXOzs7Ozs7d0JBQUUsQUFBSyxBQUFFLEFBQU0sQUFBbUIsQUFBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGRlZmF1bHQgYXMgZGVmYXVsdCwgQ2xhc3NNZXRhLCBJbnN0YW5jZU1ldGEsIEdsaW1tZXJPYmplY3RGYWN0b3J5IH0gZnJvbSAnLi9saWIvb2JqZWN0JztcbmV4cG9ydCB7IGNvbXB1dGVkLCBvYnNlcnZlciB9IGZyb20gJy4vbGliL2NvbXB1dGVkJztcbmV4cG9ydCB7IE1peGluLCBCbHVlcHJpbnQsIHRvTWl4aW4gfSBmcm9tICcuL2xpYi9taXhpbic7XG5leHBvcnQgeyBhbGlhc01ldGhvZCwgYWxpYXMgfSBmcm9tICcuL2xpYi9kZXNjcmlwdG9ycyc7XG4iXX0=

@@ -151,2 +151,2 @@ 'use strict';

function observer(..._args) {}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21wdXRlZC5qcyJdLCJuYW1lcyI6WyJjb21wdXRlZCIsIm9ic2VydmVyIiwiQ29tcHV0ZWRCbHVlcHJpbnQiLCJjb25zdHJ1Y3RvciIsImFjY2Vzc29yIiwiZGVwcyIsIm1ldGFkYXRhIiwiZGVzY3JpcHRvciIsIl90YXJnZXQiLCJrZXkiLCJjbGFzc01ldGEiLCJhZGRSZWZlcmVuY2VUeXBlRm9yIiwiYWRkUHJvcGVydHlNZXRhZGF0YSIsImFkZFNsb3RGb3IiLCJDb21wdXRlZCIsInByb3BlcnR5IiwicGF0aHMiLCJtYXAiLCJkIiwic3BsaXQiLCJtZXRhIiwib2JqZWN0Iiwidm9sYXRpbGUiLCJkZWZpbmUiLCJwcm90b3R5cGUiLCJob21lIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJ3cmFwQWNjZXNzb3IiLCJhY2Nlc3Nvck5hbWUiLCJfZGVzYyIsInN1cGVyRGVzYyIsImdldFByb3BlcnR5RGVzY3JpcHRvciIsIm9yaWdpbmFsR2V0Iiwib3JpZ2luYWxTZXQiLCJkZXNjIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsImdldCIsImxlbmd0aCIsImNhbGwiLCJzZXQiLCJ2YWx1ZSIsImNhY2hlR2V0IiwiZXhpc3RzIiwic2xvdCIsImZvciIsImdldFNsb3RzIiwiY2FjaGVTZXQiLCJzbG90cyIsInJldCIsInVuZGVmaW5lZCIsImxhc3RTdXBlciIsIl9zdXBlciIsInZhbCIsInN1YmplY3QiLCJuYW1lIiwicGQiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJwcm90byIsImdldFByb3RvdHlwZU9mIiwiYXJncyIsImxhc3QiLCJwb3AiLCJUeXBlRXJyb3IiLCJfYXJncyJdLCJtYXBwaW5ncyI6Ijs7Ozs7O1FBMkhnQkEsUSxHQUFBQSxRO1FBYUFDLFEsR0FBQUEsUTs7QUF4SWhCOztBQUNBOztBQUNBOztBQUNPLE1BQU1DLGlCQUFOLDBCQUEwQztBQUM3Q0MsZ0JBQVlDLFFBQVosRUFBc0JDLE9BQU8sRUFBN0IsRUFBaUM7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RUE7QUFDSCxjQUFNLElBQUkyRCxTQUFKLENBQWMsMkRBQWQsQ0FBTjtBQUNIO0FBQ0o7QUFDTSxTQUFTL0QsUUFBVCxDQUFrQixHQUFHZ0UsS0FBckIsRUFBNEIsQ0FBRSIsImZpbGUiOiJsaWIvY29tcHV0ZWQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wdXRlZFJlZmVyZW5jZUJsdWVwcmludCwgTWV0YSB9IGZyb20gJ0BnbGltbWVyL29iamVjdC1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgRU1QVFlfQ0FDSEUgfSBmcm9tICcuL29iamVjdCc7XG5pbXBvcnQgeyBCbHVlcHJpbnQgfSBmcm9tICcuL21peGluJztcbmV4cG9ydCBjbGFzcyBDb21wdXRlZEJsdWVwcmludCBleHRlbmRzIEJsdWVwcmludCB7XG4gICAgY29uc3RydWN0b3IoYWNjZXNzb3IsIGRlcHMgPSBbXSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm1ldGFkYXRhID0ge307XG4gICAgICAgIHRoaXMuYWNjZXNzb3IgPSBhY2Nlc3NvcjtcbiAgICAgICAgdGhpcy5kZXBzID0gZGVwcztcbiAgICB9XG4gICAgZGVzY3JpcHRvcihfdGFyZ2V0LCBrZXksIGNsYXNzTWV0YSkge1xuICAgICAgICBjbGFzc01ldGEuYWRkUmVmZXJlbmNlVHlwZUZvcihrZXksIENvbXB1dGVkUmVmZXJlbmNlQmx1ZXByaW50KGtleSwgdGhpcy5kZXBzKSk7XG4gICAgICAgIGNsYXNzTWV0YS5hZGRQcm9wZXJ0eU1ldGFkYXRhKGtleSwgdGhpcy5tZXRhZGF0YSk7XG4gICAgICAgIGNsYXNzTWV0YS5hZGRTbG90Rm9yKGtleSk7XG4gICAgICAgIHJldHVybiBuZXcgQ29tcHV0ZWQodGhpcy5hY2Nlc3Nvcik7XG4gICAgfVxuICAgIHByb3BlcnR5KC4uLnBhdGhzKSB7XG4gICAgICAgIHRoaXMuZGVwcyA9IHBhdGhzLm1hcChkID0+IGQuc3BsaXQoJy4nKSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBtZXRhKG9iamVjdCkge1xuICAgICAgICB0aGlzLm1ldGFkYXRhID0gb2JqZWN0O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgdm9sYXRpbGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbn1cbmNsYXNzIENvbXB1dGVkIHtcbiAgICBjb25zdHJ1Y3RvcihhY2Nlc3Nvcikge1xuICAgICAgICB0aGlzW1wiNWQ5MGY4NGYtOTA4ZS00YTQyLTk3NDktM2QwZjUyM2MyNjJjXCJdID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5hY2Nlc3NvciA9IGFjY2Vzc29yO1xuICAgIH1cbiAgICBkZWZpbmUocHJvdG90eXBlLCBrZXksIGhvbWUpIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3RvdHlwZSwga2V5LCB3cmFwQWNjZXNzb3IoaG9tZSwga2V5LCB0aGlzLmFjY2Vzc29yKSk7XG4gICAgfVxufVxuZnVuY3Rpb24gd3JhcEFjY2Vzc29yKGhvbWUsIGFjY2Vzc29yTmFtZSwgX2Rlc2MpIHtcbiAgICBsZXQgc3VwZXJEZXNjID0gZ2V0UHJvcGVydHlEZXNjcmlwdG9yKGhvbWUsIGFjY2Vzc29yTmFtZSk7XG4gICAgbGV0IG9yaWdpbmFsR2V0O1xuICAgIGxldCBvcmlnaW5hbFNldDtcbiAgICBsZXQgZGVzYyA9IHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfTtcbiAgICBsZXQgZ2V0ID0gX2Rlc2MuZ2V0O1xuICAgIGlmIChnZXQgJiYgZ2V0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgb3JpZ2luYWxHZXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0LmNhbGwodGhpcywgYWNjZXNzb3JOYW1lKTtcbiAgICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBvcmlnaW5hbEdldCA9IF9kZXNjLmdldDtcbiAgICB9XG4gICAgbGV0IHNldCA9IF9kZXNjLnNldDtcbiAgICBpZiAoc2V0ICYmIHNldC5sZW5ndGggPiAxKSB7XG4gICAgICAgIG9yaWdpbmFsU2V0ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gc2V0LmNhbGwodGhpcywgYWNjZXNzb3JOYW1lLCB2YWx1ZSk7XG4gICAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgICAgb3JpZ2luYWxTZXQgPSBfZGVzYy5zZXQ7XG4gICAgfVxuICAgIGxldCBjYWNoZUdldCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKE1ldGEuZXhpc3RzKHRoaXMpKSB7XG4gICAgICAgICAgICBsZXQgc2xvdCA9IE1ldGEuZm9yKHRoaXMpLmdldFNsb3RzKClbYWNjZXNzb3JOYW1lXTtcbiAgICAgICAgICAgIGlmIChzbG90ICE9PSBFTVBUWV9DQUNIRSkgcmV0dXJuIHNsb3Q7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9yaWdpbmFsR2V0LmNhbGwodGhpcyk7XG4gICAgfTtcbiAgICBsZXQgY2FjaGVTZXQ7XG4gICAgaWYgKG9yaWdpbmFsU2V0KSB7XG4gICAgICAgIGNhY2hlU2V0ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBsZXQgbWV0YSA9IE1ldGEuZm9yKHRoaXMpO1xuICAgICAgICAgICAgbGV0IHNsb3RzID0gbWV0YS5nZXRTbG90cygpO1xuICAgICAgICAgICAgbGV0IHJldCA9IG9yaWdpbmFsU2V0LmNhbGwodGhpcywgdmFsdWUpO1xuICAgICAgICAgICAgaWYgKHJldCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgc2xvdHNbYWNjZXNzb3JOYW1lXSA9IHJldDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjYWNoZVNldCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgbGV0IG1ldGEgPSBNZXRhLmZvcih0aGlzKTtcbiAgICAgICAgICAgIGxldCBzbG90cyA9IG1ldGEuZ2V0U2xvdHMoKTtcbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSBzbG90c1thY2Nlc3Nvck5hbWVdID0gdmFsdWU7XG4gICAgICAgIH07XG4gICAgfVxuICAgIGlmICghc3VwZXJEZXNjIHx8ICd2YWx1ZScgaW4gc3VwZXJEZXNjKSB7XG4gICAgICAgIGRlc2MuZ2V0ID0gY2FjaGVHZXQ7XG4gICAgICAgIGRlc2Muc2V0ID0gY2FjaGVTZXQ7XG4gICAgICAgIHJldHVybiBkZXNjO1xuICAgIH1cbiAgICBkZXNjLmdldCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgbGV0IGxhc3RTdXBlciA9IHRoaXMuX3N1cGVyO1xuICAgICAgICB0aGlzLl9zdXBlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBzdXBlckRlc2MuZ2V0LmNhbGwodGhpcyk7XG4gICAgICAgIH07XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVHZXQuY2FsbCh0aGlzKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMuX3N1cGVyID0gbGFzdFN1cGVyO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBkZXNjLnNldCA9IGZ1bmN0aW9uICh2YWwpIHtcbiAgICAgICAgbGV0IGxhc3RTdXBlciA9IHRoaXMuX3N1cGVyO1xuICAgICAgICB0aGlzLl9zdXBlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBzdXBlckRlc2Muc2V0LmNhbGwodGhpcywgdmFsKTtcbiAgICAgICAgfTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBjYWNoZVNldC5jYWxsKHRoaXMsIHZhbCk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICB0aGlzLl9zdXBlciA9IGxhc3RTdXBlcjtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIGRlc2M7XG59XG5mdW5jdGlvbiBnZXRQcm9wZXJ0eURlc2NyaXB0b3Ioc3ViamVjdCwgbmFtZSkge1xuICAgIGxldCBwZCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc3ViamVjdCwgbmFtZSk7XG4gICAgbGV0IHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHN1YmplY3QpO1xuICAgIHdoaWxlICh0eXBlb2YgcGQgPT09ICd1bmRlZmluZWQnICYmIHByb3RvICE9PSBudWxsKSB7XG4gICAgICAgIHBkID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90bywgbmFtZSk7XG4gICAgICAgIHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHByb3RvKTtcbiAgICB9XG4gICAgcmV0dXJuIHBkO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVkKC4uLmFyZ3MpIHtcbiAgICBsZXQgbGFzdCA9IGFyZ3MucG9wKCk7XG4gICAgbGV0IGRlcHMgPSBhcmdzO1xuICAgIGlmICh0eXBlb2YgbGFzdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gbmV3IENvbXB1dGVkQmx1ZXByaW50KHtcbiAgICAgICAgICAgIGdldDogbGFzdFxuICAgICAgICB9KS5wcm9wZXJ0eSguLi5kZXBzKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBsYXN0ID09PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4gbmV3IENvbXB1dGVkQmx1ZXByaW50KGxhc3QpLnByb3BlcnR5KC4uLmRlcHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJjb21wdXRlZCBleHBlY3RzIGEgZnVuY3Rpb24gb3IgYW4gb2JqZWN0IGFzIGxhc3QgYXJndW1lbnRcIik7XG4gICAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIG9ic2VydmVyKC4uLl9hcmdzKSB7fSJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL2NvbXB1dGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLEFBQU8sQUFBRSxBQUEwQixBQUFFLEFBQUksQUFBRSxBQUFNLEFBQTJCLEFBQUM7O0FBQzdFLEFBQU8sQUFBRSxBQUFXLEFBQWEsQUFBTSxBQUFVLEFBQUM7O0FBQ2xELEFBQU8sQUFBYyxBQUFTLEFBQUUsQUFBTSxBQUFTLEFBQUMsQUF5QmhELEFBQU07O01BQXlCLEFBQVEsQUFBUztnQkFLbEMsQUFBNEIsVUFBRSxPQUFtQixBQUFFLElBQzdELEFBQUssQUFBRSxBQUFDO0FBSEY7YUFBUSxXQUFXLEFBQUUsQUFBQyxBQUk1QixBQUFJO2FBQUMsQUFBUSxXQUFHLEFBQVEsQUFBQyxBQUN6QixBQUFJO2FBQUMsQUFBSSxPQUFHLEFBQUksQUFBQyxBQUNuQixBQUFDO0FBRUQsQUFBVTtlQUFDLEFBQWUsU0FBRSxBQUFXLEtBQUUsQUFBb0IsV0FDM0QsQUFBUztrQkFBQyxBQUFtQixvQkFBQyxBQUFHLEtBQUUsQUFBMEIsaURBQUMsQUFBRyxLQUFFLEFBQUksS0FBQyxBQUFJLEFBQUMsQUFBQyxBQUFDLEFBQy9FLEFBQVM7a0JBQUMsQUFBbUIsb0JBQUMsQUFBRyxLQUFFLEFBQUksS0FBQyxBQUFRLEFBQUMsQUFBQyxBQUNsRCxBQUFTO2tCQUFDLEFBQVUsV0FBQyxBQUFHLEFBQUMsQUFBQyxBQUMxQixBQUFNO2VBQUMsSUFBSSxBQUFRLFNBQUMsQUFBSSxLQUFDLEFBQVEsQUFBQyxBQUFDLEFBQ3JDLEFBQUM7QUFFRCxBQUFRO2FBQUMsR0FBRyxBQUFlLE9BQ3pCLEFBQUk7YUFBQyxBQUFJLE9BQUcsQUFBSyxNQUFDLEFBQUcsSUFBQyxBQUFDLEtBQUksQUFBQyxFQUFDLEFBQUssTUFBQyxBQUFHLEFBQUMsQUFBQyxBQUFDLEFB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QyxPQUFPLEFBQUksU0FBSyxBQUFVLEFBQUMsWUFBQyxBQUFDLEFBQy9CLEFBQU07bUJBQUssQUFBaUI7aUJBQXJCLEFBQXNCLEFBQzJCLEFBQUksQUFDM0QsQUFBQztBQURBLEFBQUcsV0FDRixBQUFRLFNBQUMsR0FBRyxBQUFJLEFBQUMsQUFBQyxBQUN2QixBQUFDLEFBQUMsQUFBSTtlQUFLLE9BQU8sQUFBSSxTQUFLLEFBQVEsQUFBQyxVQUFDLEFBQUMsQUFDcEMsQUFBTTtlQUFDLElBQUksQUFBaUIsa0JBQXFCLEFBQUksQUFBQyxNQUFDLEFBQVEsU0FBQyxHQUFHLEFBQUksQUFBQyxBQUFDLEFBQzNFLEFBQUMsQUFBQyxBQUFJO0FBRkMsQUFBRSxBQUFDLFdBRUgsQUFBQyxBQUNOO2NBQU0sSUFBSSxBQUFTLFVBQUMsQUFBMkQsQUFBQyxBQUFDLEFBQ25GLEFBQUMsQUFDSDtBQUFDO0FBRUQsQUFBTTtrQkFBbUIsR0FBRyxBQUFZLE9BRXhDLEFBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wdXRlZFJlZmVyZW5jZUJsdWVwcmludCwgTWV0YSB9IGZyb20gJ0BnbGltbWVyL29iamVjdC1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgRU1QVFlfQ0FDSEUsIENsYXNzTWV0YSB9IGZyb20gJy4vb2JqZWN0JztcbmltcG9ydCB7IERlc2NyaXB0b3IsIEJsdWVwcmludCB9IGZyb20gJy4vbWl4aW4nO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbXB1dGVkR2V0Q2FsbGJhY2sge1xuICAoKTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExlZ2FjeUNvbXB1dGVkR2V0Q2FsbGJhY2sge1xuICAoa2V5OiBzdHJpbmcpOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcHV0ZWRTZXRDYWxsYmFjayB7XG4gICh2YWw6IGFueSk6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMZWdhY3lDb21wdXRlZFNldENhbGxiYWNrIHtcbiAgKGtleTogc3RyaW5nLCB2YWw6IGFueSk6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wdXRlZERlc2NyaXB0b3Ige1xuICBnZXQ/OiBDb21wdXRlZEdldENhbGxiYWNrIHwgTGVnYWN5Q29tcHV0ZWRHZXRDYWxsYmFjaztcbiAgc2V0PzogQ29tcHV0ZWRTZXRDYWxsYmFjayB8IExlZ2FjeUNvbXB1dGVkU2V0Q2FsbGJhY2s7XG59XG5cbnR5cGUgQ29tcHV0ZWRBcmd1bWVudCA9IENvbXB1dGVkR2V0Q2FsbGJhY2sgfCBDb21wdXRlZERlc2NyaXB0b3I7XG5cbmV4cG9ydCBjbGFzcyBDb21wdXRlZEJsdWVwcmludCBleHRlbmRzIEJsdWVwcmludCB7XG4gIHByaXZhdGUgYWNjZXNzb3I6IENvbXB1dGVkRGVzY3JpcHRvcjtcbiAgcHJpdmF0ZSBkZXBzOiBzdHJpbmdbXVtdO1xuICBwcml2YXRlIG1ldGFkYXRhOiBPYmplY3QgPSB7fTtcblxuICBjb25zdHJ1Y3RvcihhY2Nlc3NvcjogQ29tcHV0ZWREZXNjcmlwdG9yLCBkZXBzOiBzdHJpbmdbXVtdID0gW10pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYWNjZXNzb3IgPSBhY2Nlc3NvcjtcbiAgICB0aGlzLmRlcHMgPSBkZXBzO1xuICB9XG5cbiAgZGVzY3JpcHRvcihfdGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBjbGFzc01ldGE6IENsYXNzTWV0YSk6IERlc2NyaXB0b3Ige1xuICAgIGNsYXNzTWV0YS5hZGRSZWZlcmVuY2VUeXBlRm9yKGtleSwgQ29tcHV0ZWRSZWZlcmVuY2VCbHVlcHJpbnQoa2V5LCB0aGlzLmRlcHMpKTtcbiAgICBjbGFzc01ldGEuYWRkUHJvcGVydHlNZXRhZGF0YShrZXksIHRoaXMubWV0YWRhdGEpO1xuICAgIGNsYXNzTWV0YS5hZGRTbG90Rm9yKGtleSk7XG4gICAgcmV0dXJuIG5ldyBDb21wdXRlZCh0aGlzLmFjY2Vzc29yKTtcbiAgfVxuXG4gIHByb3BlcnR5KC4uLnBhdGhzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuZGVwcyA9IHBhdGhzLm1hcChkID0+IGQuc3BsaXQoJy4nKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBtZXRhKG9iamVjdDogT2JqZWN0KSB7XG4gICAgdGhpcy5tZXRhZGF0YSA9IG9iamVjdDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHZvbGF0aWxlKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG5cbmNsYXNzIENvbXB1dGVkIGltcGxlbWVudHMgRGVzY3JpcHRvciB7XG4gIGVudW1lcmFibGU6IGJvb2xlYW47XG4gIGNvbmZpZ3VyYWJsZTogYm9vbGVhbjtcblxuICBwcml2YXRlIGFjY2Vzc29yOiBDb21wdXRlZERlc2NyaXB0b3I7XG4gIFwiNWQ5MGY4NGYtOTA4ZS00YTQyLTk3NDktM2QwZjUyM2MyNjJjXCIgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKGFjY2Vzc29yOiBDb21wdXRlZERlc2NyaXB0b3IpIHtcbiAgICB0aGlzLmFjY2Vzc29yID0gYWNjZXNzb3I7XG4gIH1cblxuICBkZWZpbmUocHJvdG90eXBlOiBPYmplY3QsIGtleTogc3RyaW5nLCBob21lOiBPYmplY3QpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvdG90eXBlLCBrZXksIHdyYXBBY2Nlc3Nvcihob21lLCBrZXksIHRoaXMuYWNjZXNzb3IpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB3cmFwQWNjZXNzb3IoaG9tZTogT2JqZWN0LCBhY2Nlc3Nvck5hbWU6IHN0cmluZywgX2Rlc2M6IENvbXB1dGVkRGVzY3JpcHRvcik6IFByb3BlcnR5RGVzY3JpcHRvciB7XG4gIGxldCBzdXBlckRlc2MgPSBnZXRQcm9wZXJ0eURlc2NyaXB0b3IoaG9tZSwgYWNjZXNzb3JOYW1lKTtcblxuICBsZXQgb3JpZ2luYWxHZXQ6IENvbXB1dGVkR2V0Q2FsbGJhY2s7XG4gIGxldCBvcmlnaW5hbFNldDogQ29tcHV0ZWRTZXRDYWxsYmFjaztcblxuICBsZXQgZGVzYzogUHJvcGVydHlEZXNjcmlwdG9yID0ge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICB9O1xuXG4gIGxldCBnZXQgPSBfZGVzYy5nZXQ7XG5cbiAgaWYgKGdldCAmJiBnZXQubGVuZ3RoID4gMCkge1xuICAgIG9yaWdpbmFsR2V0ID0gZnVuY3Rpb24odGhpczogYW55KSB7IHJldHVybiAoZ2V0IGFzIGFueSkuY2FsbCh0aGlzLCBhY2Nlc3Nvck5hbWUpOyB9O1xuICB9IGVsc2Uge1xuICAgIG9yaWdpbmFsR2V0ID0gPENvbXB1dGVkR2V0Q2FsbGJhY2s+X2Rlc2MuZ2V0O1xuICB9XG5cbiAgbGV0IHNldCA9IF9kZXNjLnNldDtcblxuICBpZiAoc2V0ICYmIHNldC5sZW5ndGggPiAxKSB7XG4gICAgb3JpZ2luYWxTZXQgPSBmdW5jdGlvbih0aGlzOiBhbnksIHZhbHVlOiBhbnkpIHtcbiAgICAgIHJldHVybiAoc2V0IGFzIGFueSkuY2FsbCh0aGlzLCBhY2Nlc3Nvck5hbWUsIHZhbHVlKTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIG9yaWdpbmFsU2V0ID0gPENvbXB1dGVkR2V0Q2FsbGJhY2s+X2Rlc2Muc2V0O1xuICB9XG5cbiAgbGV0IGNhY2hlR2V0ID0gZnVuY3Rpb24odGhpczogYW55KSB7XG4gICAgaWYgKE1ldGEuZXhpc3RzKHRoaXMpKSB7XG4gICAgICBsZXQgc2xvdCA9IE1ldGEuZm9yKHRoaXMpLmdldFNsb3RzKClbYWNjZXNzb3JOYW1lXTtcbiAgICAgIGlmIChzbG90ICE9PSBFTVBUWV9DQUNIRSkgcmV0dXJuIHNsb3Q7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9yaWdpbmFsR2V0LmNhbGwodGhpcyk7XG4gIH07XG5cbiAgbGV0IGNhY2hlU2V0OiAodmFsdWU6IGFueSkgPT4gdm9pZDtcblxuICBpZiAob3JpZ2luYWxTZXQpIHtcbiAgICBjYWNoZVNldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgdmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgbGV0IG1ldGEgPSBNZXRhLmZvcih0aGlzKTtcbiAgICAgIGxldCBzbG90cyA9IG1ldGEuZ2V0U2xvdHMoKTtcblxuICAgICAgbGV0IHJldCA9IG9yaWdpbmFsU2V0LmNhbGwodGhpcywgdmFsdWUpO1xuXG4gICAgICBpZiAocmV0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgc2xvdHNbYWNjZXNzb3JOYW1lXSA9IHJldDtcbiAgICAgIH1cbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIGNhY2hlU2V0ID0gZnVuY3Rpb24odGhpczogYW55LCB2YWx1ZTogYW55KSB7XG4gICAgICBsZXQgbWV0YSA9IE1ldGEuZm9yKHRoaXMpO1xuICAgICAgbGV0IHNsb3RzID0gbWV0YS5nZXRTbG90cygpO1xuICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHNsb3RzW2FjY2Vzc29yTmFtZV0gPSB2YWx1ZTtcbiAgICB9O1xuICB9XG5cbiAgaWYgKCFzdXBlckRlc2MgfHwgJ3ZhbHVlJyBpbiBzdXBlckRlc2MpIHtcbiAgICBkZXNjLmdldCA9IGNhY2hlR2V0O1xuICAgIGRlc2Muc2V0ID0gY2FjaGVTZXQ7XG4gICAgcmV0dXJuIGRlc2M7XG4gIH1cblxuICBkZXNjLmdldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgIGxldCBsYXN0U3VwZXIgPSB0aGlzLl9zdXBlcjtcbiAgICB0aGlzLl9zdXBlciA9IGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgICAgcmV0dXJuIChzdXBlckRlc2MuZ2V0IGFzIGFueSkuY2FsbCh0aGlzKTtcbiAgICB9O1xuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBjYWNoZUdldC5jYWxsKHRoaXMpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLl9zdXBlciA9IGxhc3RTdXBlcjtcbiAgICB9XG4gIH07XG5cbiAgZGVzYy5zZXQgPSBmdW5jdGlvbih0aGlzOiBhbnksIHZhbDogYW55KSB7XG4gICAgbGV0IGxhc3RTdXBlciA9IHRoaXMuX3N1cGVyO1xuICAgIHRoaXMuX3N1cGVyID0gZnVuY3Rpb24odGhpczogYW55KSB7XG4gICAgICByZXR1cm4gKHN1cGVyRGVzYyBhcyBhbnkpLnNldC5jYWxsKHRoaXMsIHZhbCk7XG4gICAgfTtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gY2FjaGVTZXQuY2FsbCh0aGlzLCB2YWwpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLl9zdXBlciA9IGxhc3RTdXBlcjtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIGRlc2M7XG59XG5cbmZ1bmN0aW9uIGdldFByb3BlcnR5RGVzY3JpcHRvcihzdWJqZWN0OiBhbnksIG5hbWU6IHN0cmluZykge1xuICBsZXQgcGQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHN1YmplY3QsIG5hbWUpO1xuICBsZXQgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yoc3ViamVjdCk7XG4gIHdoaWxlICh0eXBlb2YgcGQgPT09ICd1bmRlZmluZWQnICYmIHByb3RvICE9PSBudWxsKSB7XG4gICAgcGQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCBuYW1lKTtcbiAgICBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihwcm90byk7XG4gIH1cbiAgcmV0dXJuIHBkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZWQoZGVzYzogQ29tcHV0ZWREZXNjcmlwdG9yKTogQ29tcHV0ZWRCbHVlcHJpbnQ7XG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZWQoZ2V0dGVyOiBDb21wdXRlZEdldENhbGxiYWNrIHwgTGVnYWN5Q29tcHV0ZWRHZXRDYWxsYmFjayk6IENvbXB1dGVkQmx1ZXByaW50O1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVkKC4uLmFyZ3M6IGFueVtdKTogQ29tcHV0ZWRCbHVlcHJpbnQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlZCguLi5hcmdzOiBhbnlbXSkge1xuICBsZXQgbGFzdDogQ29tcHV0ZWRBcmd1bWVudCA9IGFyZ3MucG9wKCk7XG4gIGxldCBkZXBzID0gYXJncztcblxuICBpZiAodHlwZW9mIGxhc3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gbmV3IENvbXB1dGVkQmx1ZXByaW50KHtcbiAgICAgIGdldDogPENvbXB1dGVkR2V0Q2FsbGJhY2sgfCBMZWdhY3lDb21wdXRlZEdldENhbGxiYWNrPmxhc3RcbiAgICB9KS5wcm9wZXJ0eSguLi5kZXBzKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgbGFzdCA9PT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gbmV3IENvbXB1dGVkQmx1ZXByaW50KDxDb21wdXRlZERlc2NyaXB0b3I+bGFzdCkucHJvcGVydHkoLi4uZGVwcyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcImNvbXB1dGVkIGV4cGVjdHMgYSBmdW5jdGlvbiBvciBhbiBvYmplY3QgYXMgbGFzdCBhcmd1bWVudFwiKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gb2JzZXJ2ZXIoLi4uX2FyZ3M6IGFueVtdKSB7XG5cbn1cbiJdfQ==

@@ -63,2 +63,2 @@ 'use strict';

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9kZXNjcmlwdG9ycy5qcyJdLCJuYW1lcyI6WyJhbGlhc01ldGhvZCIsImFsaWFzIiwiQWxpYXNNZXRob2REZXNjcmlwdG9yIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZGVmaW5lIiwidGFyZ2V0Iiwia2V5IiwiX2hvbWUiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJnZXQiLCJBbGlhc01ldGhvZEJsdWVwcmludCIsImRlc2NyaXB0b3IiLCJfdGFyZ2V0IiwiX2tleSIsIl9tZXRhIiwiQWxpYXNCbHVlcHJpbnQiLCJwYXJlbnQiLCJzbGljZSIsImxhc3QiLCJsZW5ndGgiLCJyZWR1Y2UiLCJvYmoiLCJuIiwic2V0IiwidmFsdWUiLCJwIiwibWV0YSIsIkVycm9yIiwic3BsaXQiXSwibWFwcGluZ3MiOiI7Ozs7O1FBMkJnQkEsVyxHQUFBQSxXO1FBc0JBQyxLLEdBQUFBLEs7O0FBakRoQjs7QUFDQTs7QUFDQSxNQUFNQyxxQkFBTiwyQkFBK0M7QUFDM0NDLGdCQUFZQyxJQUFaLEVBQWtCO0FBQ2Q7QUFDQSxhQUFLQSxJQUFMLEdBQVlBLElBQVo7QUFDSDtBQUNEQyxXQUFPQyxNQUFQLEVBQWVDLEdBQWYsRUFBb0JDLEtBQXBCLEVBQTJCO0FBQ3ZCLFlBQUlKLE9BQU8sS0FBS0EsSUFBaEI7QUFDQUssZUFBT0MsY0FBUCxDQUFzQkosTUFBdEIsRUFBOEJDLEdBQTlCLEVBQW1DO0FBQy9CSSx3QkFBWSxJQURtQjtBQUUvQkMsMEJBQWMsSUFGaUI7QUFHL0JDLGtCQUFNO0FBQ0YsdUJBQU8sS0FBS1QsSUFBTCxDQUFQO0FBQ0g7QUFMOEIsU0FBbkM7QUFPSDtBQWQwQztBQWdCL0MsTUFBTVUsb0JBQU4sMEJBQTZDO0FBQ3pDWCxnQkFBWUMsSUFBWixFQUFrQjtBQUNkO0FBQ0EsYUFBS0EsSUFBTCxHQUFZQSxJQUFaO0FBQ0g7QUFDRFcsZUFBV0MsT0FBWCxFQUFvQkMsSUFBcEIsRUFBMEJDLEtBQTFCLEVBQWlDO0FBQzdCLGVBQU8sSUFBSWhCLHFCQUFKLENBQTBCLEtBQUtFLElBQS9CLENBQVA7QUFDSDtBQVB3QztBQVN0QyxTQUFTSixXQUFULENBQXFCSSxJQUFyQixFQUEyQjtBQUM5QixXQUFPLElBQUlVLG9CQUFKLENBQXlCVixJQUF6QixDQUFQO0FBQ0g7QUFDRCxNQUFNZSxjQUFOLHFDQUErQztBQUMzQ2hCLGdCQUFZQyxJQUFaLEVBQWtCO0FBQ2QsWUFBSWdCLFNBQVNoQixLQUFLaUIsS0FBTCxDQUFXLENBQVgsRUFBYyxDQUFDLENBQWYsQ0FBYjtBQUNBLFlBQUlDLE9BQU9sQixLQUFLQSxLQUFLbUIsTUFBTCxHQUFjLENBQW5CLENBQVg7QUFDQSxZQUFJVixNQUFNLFlBQVk7QUFDbEIsbUJBQU9ULEtBQUtvQixNQUFMLENBQVksQ0FBQ0MsR0FBRCxFQUFNQyxDQUFOLEtBQVlELElBQUlDLENBQUosQ0FBeEIsRUFBZ0MsSUFBaEMsQ0FBUDtBQUNILFNBRkQ7QUFHQSxZQUFJQyxNQUFNLFVBQVVDLEtBQVYsRUFBaUI7QUFDdkIsZ0JBQUlDLElBQUlULE9BQU9JLE1BQVAsQ0FBYyxDQUFDQyxHQUFELEVBQU1DLENBQU4sS0FBWUQsSUFBSUMsQ0FBSixDQUExQixFQUFrQyxJQUFsQyxDQUFSO0FBQ0FHLGNBQUVQLElBQUYsSUFBVU0sS0FBVjtBQUNILFNBSEQ7QUFJQSxjQUFNLEVBQUVmLEdBQUYsRUFBT2MsR0FBUCxFQUFOLEVBQW9CLENBQUN2QixJQUFELENBQXBCO0FBQ0EsYUFBS0EsSUFBTCxHQUFZQSxJQUFaO0FBQ0g7QUFDRFcsZUFBV1QsTUFBWCxFQUFtQkMsR0FBbkIsRUFBd0J1QixJQUF4QixFQUE4QjtBQUMxQixZQUFJLEtBQUsxQixJQUFMLENBQVUsQ0FBVixNQUFpQkcsR0FBckIsRUFBMEIsTUFBTSxJQUFJd0IsS0FBSixDQUFXLGtCQUFpQnhCLEdBQUksV0FBaEMsQ0FBTjtBQUMxQixlQUFPLE1BQU1RLFVBQU4sQ0FBaUJULE1BQWpCLEVBQXlCQyxHQUF6QixFQUE4QnVCLElBQTlCLENBQVA7QUFDSDtBQWpCMEM7QUFtQnhDLFNBQVM3QixLQUFULENBQWVHLElBQWYsRUFBcUI7QUFDeEIsV0FBTyxJQUFJZSxjQUFKLENBQW1CZixLQUFLNEIsS0FBTCxDQUFXLEdBQVgsQ0FBbkIsQ0FBUDtBQUNIIiwiZmlsZSI6ImxpYi9kZXNjcmlwdG9ycy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJsdWVwcmludCwgRGVzY3JpcHRvciB9IGZyb20gJy4vbWl4aW4nO1xuaW1wb3J0IHsgQ29tcHV0ZWRCbHVlcHJpbnQgfSBmcm9tICcuL2NvbXB1dGVkJztcbmNsYXNzIEFsaWFzTWV0aG9kRGVzY3JpcHRvciBleHRlbmRzIERlc2NyaXB0b3Ige1xuICAgIGNvbnN0cnVjdG9yKG5hbWUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB9XG4gICAgZGVmaW5lKHRhcmdldCwga2V5LCBfaG9tZSkge1xuICAgICAgICBsZXQgbmFtZSA9IHRoaXMubmFtZTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCB7XG4gICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgZ2V0KCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzW25hbWVdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG5jbGFzcyBBbGlhc01ldGhvZEJsdWVwcmludCBleHRlbmRzIEJsdWVwcmludCB7XG4gICAgY29uc3RydWN0b3IobmFtZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIH1cbiAgICBkZXNjcmlwdG9yKF90YXJnZXQsIF9rZXksIF9tZXRhKSB7XG4gICAgICAgIHJldHVybiBuZXcgQWxpYXNNZXRob2REZXNjcmlwdG9yKHRoaXMubmFtZSk7XG4gICAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIGFsaWFzTWV0aG9kKG5hbWUpIHtcbiAgICByZXR1cm4gbmV3IEFsaWFzTWV0aG9kQmx1ZXByaW50KG5hbWUpO1xufVxuY2xhc3MgQWxpYXNCbHVlcHJpbnQgZXh0ZW5kcyBDb21wdXRlZEJsdWVwcmludCB7XG4gICAgY29uc3RydWN0b3IobmFtZSkge1xuICAgICAgICBsZXQgcGFyZW50ID0gbmFtZS5zbGljZSgwLCAtMSk7XG4gICAgICAgIGxldCBsYXN0ID0gbmFtZVtuYW1lLmxlbmd0aCAtIDFdO1xuICAgICAgICBsZXQgZ2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIG5hbWUucmVkdWNlKChvYmosIG4pID0+IG9ialtuXSwgdGhpcyk7XG4gICAgICAgIH07XG4gICAgICAgIGxldCBzZXQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGxldCBwID0gcGFyZW50LnJlZHVjZSgob2JqLCBuKSA9PiBvYmpbbl0sIHRoaXMpO1xuICAgICAgICAgICAgcFtsYXN0XSA9IHZhbHVlO1xuICAgICAgICB9O1xuICAgICAgICBzdXBlcih7IGdldCwgc2V0IH0sIFtuYW1lXSk7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgfVxuICAgIGRlc2NyaXB0b3IodGFyZ2V0LCBrZXksIG1ldGEpIHtcbiAgICAgICAgaWYgKHRoaXMubmFtZVswXSA9PT0ga2V5KSB0aHJvdyBuZXcgRXJyb3IoYFNldHRpbmcgYWxpYXMgJyR7a2V5fScgb24gc2VsZmApO1xuICAgICAgICByZXR1cm4gc3VwZXIuZGVzY3JpcHRvcih0YXJnZXQsIGtleSwgbWV0YSk7XG4gICAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIGFsaWFzKG5hbWUpIHtcbiAgICByZXR1cm4gbmV3IEFsaWFzQmx1ZXByaW50KG5hbWUuc3BsaXQoJy4nKSk7XG59Il19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpcHRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL2Rlc2NyaXB0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsQUFBTyxBQUFFLEFBQVMsQUFBRSxBQUFVLEFBQUUsQUFBTSxBQUFTLEFBQUM7O0FBRWhELEFBQU8sQUFBRSxBQUFpQixBQUFFLEFBQU0sQUFBWSxBQUFDOztBQUUvQyxNQUE0QixBQUFRLEFBQVU7Z0JBR2hDLEFBQVksTUFDdEIsQUFBSyxBQUFFLEFBQUM7QUFDUixBQUFJO2FBQUMsQUFBSSxPQUFHLEFBQUksQUFBQyxBQUNuQixBQUFDO0FBRUQsQUFBTTtXQUFDLEFBQWMsUUFBRSxBQUFXLEtBQUUsQUFBYSxPQUMvQztZQUFJLEFBQUksT0FBVyxBQUFJLEtBQUMsQUFBSSxBQUFDLEFBRTdCLEFBQU07ZUFBQyxBQUFjLGVBQUMsQUFBTSxRQUFFLEFBQUc7d0JBQ25CLEFBQUksQUFDaEIsQUFBWTswQkFBRSxBQUFJLEFBQ2xCLEFBQUc7a0JBQ0QsQUFBTTt1QkFBQyxBQUFJLEtBQUMsQUFBSSxBQUFDLEFBQUMsQUFDcEIsQUFBQyxBQUNGLEFBQUMsQUFBQyxBQUNMO0FBUHFDLEFBT3BDLEFBQ0Y7QUFQSyxBQUFVOztBQVRkO0FBa0JGLE1BQTJCLEFBQVEsQUFBUztnQkFHOUIsQUFBWSxNQUN0QixBQUFLLEFBQUUsQUFBQztBQUNSLEFBQUk7YUFBQyxBQUFJLE9BQUcsQUFBSSxBQUFDLEFBQ25CLEFBQUM7QUFFRCxBQUFVO2VBQUMsQUFBZSxTQUFFLEFBQVksTUFBRSxBQUFnQixPQUN4RCxBQUFNO2VBQUMsSUFBSSxBQUFxQixzQkFBQyxBQUFJLEtBQUMsQUFBSSxBQUFDLEFBQUMsQUFDOUMsQUFBQyxBQUNGO0FBRUQsQUFBTTtBQVZKO3FCQVUwQixBQUFZLE1BQ3RDLEFBQU07V0FBQyxJQUFJLEFBQW9CLHFCQUFDLEFBQUksQUFBQyxBQUFDLEFBQ3hDLEFBQUM7O0FBRUQsTUFBcUIsQUFBUSxBQUFpQjtnQkFHaEMsQUFBYyxNQUN4QjtZQUFJLEFBQU0sU0FBRyxBQUFJLEtBQUMsQUFBSyxNQUFDLEFBQUMsR0FBRSxDQUFDLEFBQUMsQUFBQyxBQUFDLEFBQy9CO1lBQUksQUFBSSxPQUFHLEFBQUksS0FBQyxBQUFJLEtBQUMsQUFBTSxTQUFHLEFBQUMsQUFBQyxBQUFDLEFBRWpDO1lBQUksQUFBRyxNQUFHLFlBQ1IsQUFBTTttQkFBQyxBQUFJLEtBQUMsQUFBTSxPQUFDLENBQUMsQUFBRyxLQUFFLEFBQUMsTUFBSyxBQUFHLElBQUMsQUFBQyxBQUFDLElBQUUsQUFBSSxBQUFDLEFBQUMsQUFDL0MsQUFBQyxBQUFDO0FBRUY7WUFBSSxBQUFHLE1BQUcsVUFBb0IsQUFBVSxPQUN0QztnQkFBSSxBQUFDLElBQUcsQUFBTSxPQUFDLEFBQU0sT0FBQyxDQUFDLEFBQUcsS0FBRSxBQUFDLE1BQUssQUFBRyxJQUFDLEFBQUMsQUFBQyxJQUFFLEFBQUksQUFBQyxBQUFDLEFBQ2hELEFBQUM7Y0FBQyxBQUFJLEFBQUMsUUFBRyxBQUFLLEFBQUMsQUFDbEIsQUFBQyxBQUFDO0FBRUYsQUFBSztjQUFDLEVBQUUsQUFBRyxLQUFFLEFBQUcsQUFBRSxPQUFFLENBQUMsQUFBSSxBQUFDLEFBQUMsQUFBQyxBQUM1QixBQUFJO2FBQUMsQUFBSSxPQUFHLEFBQUksQUFBQyxBQUNuQixBQUFDO0FBRUQsQUFBVTtlQUFDLEFBQWMsUUFBRSxBQUFXLEtBQUUsQUFBZSxNQUNyRCxBQUFFLEFBQUM7WUFBQyxBQUFJLEtBQUMsQUFBSSxLQUFDLEFBQUMsQUFBQyxPQUFLLEFBQUcsQUFBQyxLQUFDLE1BQU0sSUFBSSxBQUFLLEFBQUMsd0JBQWtCLEFBQUcsQUFBVyxBQUFDLEFBQUMsR0FDNUUsQUFBTTtlQUFDLEFBQUssTUFBQyxBQUFVLFdBQUMsQUFBTSxRQUFFLEFBQUcsS0FBRSxBQUFJLEFBQUMsQUFBQyxBQUM3QyxBQUFDLEFBQ0Y7QUFFRCxBQUFNO0FBdkJKO2VBdUJvQixBQUFZLE1BQ2hDLEFBQU07V0FBQyxJQUFJLEFBQWMsZUFBQyxBQUFJLEtBQUMsQUFBSyxNQUFDLEFBQUcsQUFBQyxBQUFDLEFBQUMsQUFDN0MsQUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJsdWVwcmludCwgRGVzY3JpcHRvciB9IGZyb20gJy4vbWl4aW4nO1xuaW1wb3J0IHsgQ2xhc3NNZXRhIH0gZnJvbSAnLi9vYmplY3QnO1xuaW1wb3J0IHsgQ29tcHV0ZWRCbHVlcHJpbnQgfSBmcm9tICcuL2NvbXB1dGVkJztcblxuY2xhc3MgQWxpYXNNZXRob2REZXNjcmlwdG9yIGV4dGVuZHMgRGVzY3JpcHRvciB7XG4gIHByaXZhdGUgbmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgfVxuXG4gIGRlZmluZSh0YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIF9ob21lOiBPYmplY3QpIHtcbiAgICBsZXQgbmFtZSA9IDxzdHJpbmc+dGhpcy5uYW1lO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCB7XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0KHRoaXM6IHR5cGVvZiB0YXJnZXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbbmFtZV07XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgQWxpYXNNZXRob2RCbHVlcHJpbnQgZXh0ZW5kcyBCbHVlcHJpbnQge1xuICBwcml2YXRlIG5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gIH1cblxuICBkZXNjcmlwdG9yKF90YXJnZXQ6IE9iamVjdCwgX2tleTogc3RyaW5nLCBfbWV0YTogQ2xhc3NNZXRhKTogRGVzY3JpcHRvciB7XG4gICAgcmV0dXJuIG5ldyBBbGlhc01ldGhvZERlc2NyaXB0b3IodGhpcy5uYW1lKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWxpYXNNZXRob2QobmFtZTogc3RyaW5nKTogQmx1ZXByaW50IHtcbiAgcmV0dXJuIG5ldyBBbGlhc01ldGhvZEJsdWVwcmludChuYW1lKTtcbn1cblxuY2xhc3MgQWxpYXNCbHVlcHJpbnQgZXh0ZW5kcyBDb21wdXRlZEJsdWVwcmludCB7XG4gIHByaXZhdGUgbmFtZTogc3RyaW5nW107XG5cbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nW10pIHtcbiAgICBsZXQgcGFyZW50ID0gbmFtZS5zbGljZSgwLCAtMSk7XG4gICAgbGV0IGxhc3QgPSBuYW1lW25hbWUubGVuZ3RoIC0gMV07XG5cbiAgICBsZXQgZ2V0ID0gZnVuY3Rpb24odGhpczogYW55KSB7XG4gICAgICByZXR1cm4gbmFtZS5yZWR1Y2UoKG9iaiwgbikgPT4gb2JqW25dLCB0aGlzKTtcbiAgICB9O1xuXG4gICAgbGV0IHNldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgdmFsdWU6IGFueSkge1xuICAgICAgbGV0IHAgPSBwYXJlbnQucmVkdWNlKChvYmosIG4pID0+IG9ialtuXSwgdGhpcyk7XG4gICAgICBwW2xhc3RdID0gdmFsdWU7XG4gICAgfTtcblxuICAgIHN1cGVyKHsgZ2V0LCBzZXQgfSwgW25hbWVdKTtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICB9XG5cbiAgZGVzY3JpcHRvcih0YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIG1ldGE6IENsYXNzTWV0YSk6IERlc2NyaXB0b3Ige1xuICAgIGlmICh0aGlzLm5hbWVbMF0gPT09IGtleSkgdGhyb3cgbmV3IEVycm9yKGBTZXR0aW5nIGFsaWFzICcke2tleX0nIG9uIHNlbGZgKTtcbiAgICByZXR1cm4gc3VwZXIuZGVzY3JpcHRvcih0YXJnZXQsIGtleSwgbWV0YSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFsaWFzKG5hbWU6IHN0cmluZyk6IEJsdWVwcmludCB7XG4gIHJldHVybiBuZXcgQWxpYXNCbHVlcHJpbnQobmFtZS5zcGxpdCgnLicpKTtcbn1cbiJdfQ==

@@ -278,2 +278,2 @@ 'use strict';

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9taXhpbi5qcyJdLCJuYW1lcyI6WyJleHRlbmQiLCJyZWxpbmtTdWJjbGFzc2VzIiwidG9NaXhpbiIsIndyYXBNZXRob2QiLCJpc0FycmF5IiwiQXJyYXkiLCJERVNDUklQVE9SIiwiQkxVRVBSSU5UIiwiRGVzY3JpcHRvciIsImNvbnN0cnVjdG9yIiwiQmx1ZXByaW50IiwiTWl4aW4iLCJleHRlbnNpb25zIiwibWl4aW5zIiwiY29uY2F0ZW5hdGVkUHJvcGVydGllcyIsIm1lcmdlZFByb3BlcnRpZXMiLCJkZXBlbmRlbmNpZXMiLCJyZW9wZW4iLCJwdXNoIiwiY3JlYXRlIiwiYXJncyIsImxlbmd0aCIsImRlcHMiLCJzbGljZSIsIm1hcCIsIm9iaiIsIm1ldGEiLCJmb3IiLCJnZXRBcHBsaWVkTWl4aW5zIiwiZGV0ZWN0IiwiaW5kZXhPZiIsImhhc0FwcGxpZWRNaXhpbiIsImNvbmNhdCIsInJhd0NvbmNhdCIsInVuZGVmaW5lZCIsIm1lcmdlZCIsInJhd01lcmdlZCIsIm5vcm1hbGl6ZWQiLCJPYmplY3QiLCJrZXlzIiwicmVkdWNlIiwia2V5IiwidmFsdWUiLCJNZXRob2RCbHVlcHJpbnQiLCJEYXRhQmx1ZXByaW50IiwiYXBwbHkiLCJ0YXJnZXQiLCJmb3JFYWNoIiwibSIsIm1lcmdlUHJvcGVydGllcyIsImFkZE1peGluIiwic2VhbCIsInJlc2VhbCIsImV4dGVuZFByb3RvdHlwZSIsIk9yaWdpbmFsIiwicHJvdG90eXBlIiwiZXh0ZW5kUHJvdG90eXBlT250byIsIlN1YmNsYXNzIiwiUGFyZW50IiwiZXh0ZW5kU3RhdGljIiwiVGFyZ2V0IiwiZ2V0UHJvdG90eXBlT2YiLCJhZGRTdGF0aWNNaXhpbiIsInBhcmVudCIsImFkZEFwcGxpZWRNaXhpbiIsImsiLCJhZGRNZXJnZWRQcm9wZXJ0eSIsImFkZENvbmNhdGVuYXRlZFByb3BlcnR5IiwiVmFsdWVEZXNjcmlwdG9yIiwiZ2V0Q29uY2F0ZW5hdGVkUHJvcGVydGllcyIsImRlZmluZSIsImdldE1lcmdlZFByb3BlcnRpZXMiLCJleHRlbnNpb24iLCJkZXNjIiwiZGVzY3JpcHRvciIsIlN1cGVyIiwiZnJvbVBhcmVudCIsImFkZFN1YmNsYXNzIiwiYXBwbHlBbGxNaXhpbnMiLCJnZXRTdWJjbGFzc2VzIiwicmVzZXQiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfaG9tZSIsImRlZmluZVByb3BlcnR5IiwiX3RhcmdldCIsImNsYXNzTWV0YSIsImhhc0NvbmNhdGVuYXRlZFByb3BlcnR5IiwiZ2V0Q29uY2F0ZW5hdGVkUHJvcGVydHkiLCJoYXNNZXJnZWRQcm9wZXJ0eSIsImdldE1lcmdlZFByb3BlcnR5IiwiQWNjZXNzb3JCbHVlcHJpbnQiLCJnZXQiLCJzZXQiLCJfa2V5IiwiX2NsYXNzTWV0YSIsIk1ldGhvZERlc2NyaXB0b3IiLCJob21lIiwibWV0aG9kTmFtZSIsIm9yaWdpbmFsIiwibWF5YmVXcmFwIiwic3VwZXJNZXRob2QiLCJmdW5jIiwibGFzdFN1cGVyIiwiX3N1cGVyIiwiX193cmFwcGVkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7UUE0SWdCQSxNLEdBQUFBLE07UUFVQUMsZ0IsR0FBQUEsZ0I7UUFTQUMsTyxHQUFBQSxPO1FBcUVBQyxVLEdBQUFBLFU7O0FBcE9oQjs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQSxNQUFNLEVBQUVDLE9BQUYsS0FBY0MsS0FBcEI7QUFDTyxNQUFNQyxrQ0FBYSxzQ0FBbkI7QUFDQSxNQUFNQyxnQ0FBWSxzQ0FBbEI7QUFDQSxNQUFNQyxVQUFOLENBQWlCO0FBQ3BCQyxrQkFBYztBQUNWLGFBQUssc0NBQUwsSUFBK0MsSUFBL0M7QUFDSDtBQUhtQjtRQUFYRCxVLEdBQUFBLFU7QUFLTixNQUFNRSxTQUFOLENBQWdCO0FBQ25CRCxrQkFBYztBQUNWLGFBQUssc0NBQUwsSUFBK0MsSUFBL0M7QUFDSDtBQUhrQjtRQUFWQyxTLEdBQUFBLFM7QUFLTixNQUFNQyxLQUFOLENBQVk7QUFDZkYsZ0JBQVlHLFVBQVosRUFBd0JDLE1BQXhC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QWUsSUFBZixFQUFxQnpCLElBQXJCLENBQVA7QUFDSCxTQUZELFNBRVU7QUFDTixpQkFBS3FGLE1BQUwsR0FBY0QsU0FBZDtBQUNIO0FBQ0osS0FURDtBQVVIIiwiZmlsZSI6ImxpYi9taXhpbi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENMQVNTX01FVEEgfSBmcm9tICdAZ2xpbW1lci9vYmplY3QtcmVmZXJlbmNlJztcbmltcG9ydCB7IGRpY3QsIGFzc2lnbiB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgQ2xhc3NNZXRhLCBJbnN0YW5jZU1ldGEsIHR1cmJvY2hhcmdlIH0gZnJvbSAnLi9vYmplY3QnO1xuaW1wb3J0IHsgUk9PVCB9IGZyb20gJy4vdXRpbHMnO1xuY29uc3QgeyBpc0FycmF5IH0gPSBBcnJheTtcbmV4cG9ydCBjb25zdCBERVNDUklQVE9SID0gXCI1ZDkwZjg0Zi05MDhlLTRhNDItOTc0OS0zZDBmNTIzYzI2MmNcIjtcbmV4cG9ydCBjb25zdCBCTFVFUFJJTlQgPSBcIjhkOTdjZjVmLWRiOWUtNDhkOC1hNmIyLTdhNzViNzE3MDgwNVwiO1xuZXhwb3J0IGNsYXNzIERlc2NyaXB0b3Ige1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzW1wiNWQ5MGY4NGYtOTA4ZS00YTQyLTk3NDktM2QwZjUyM2MyNjJjXCJdID0gdHJ1ZTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgQmx1ZXByaW50IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpc1tcIjhkOTdjZjVmLWRiOWUtNDhkOC1hNmIyLTdhNzViNzE3MDgwNVwiXSA9IHRydWU7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIE1peGluIHtcbiAgICBjb25zdHJ1Y3RvcihleHRlbnNpb25zLCBtaXhpbnMpIHtcbiAgICAgICAgdGhpcy5leHRlbnNpb25zID0gbnVsbDtcbiAgICAgICAgdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzID0gW107XG4gICAgICAgIHRoaXMubWVyZ2VkUHJvcGVydGllcyA9IFtdO1xuICAgICAgICB0aGlzLmRlcGVuZGVuY2llcyA9IFtdO1xuICAgICAgICB0aGlzLnJlb3BlbihleHRlbnNpb25zKTtcbiAgICAgICAgdGhpcy5kZXBlbmRlbmNpZXMucHVzaCguLi5taXhpbnMpO1xuICAgIH1cbiAgICBzdGF0aWMgY3JlYXRlKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGV4dGVuc2lvbnMgPSBhcmdzW2FyZ3MubGVuZ3RoIC0gMV07XG4gICAgICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyB0aGlzKHt9LCBbXSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXh0ZW5zaW9ucyBpbnN0YW5jZW9mIE1peGluKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IHRoaXMoe30sIGFyZ3MpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IGRlcHMgPSBhcmdzLnNsaWNlKDAsIC0xKS5tYXAodG9NaXhpbik7XG4gICAgICAgICAgICByZXR1cm4gbmV3IHRoaXMoZXh0ZW5zaW9ucywgZGVwcyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgc3RhdGljIG1peGlucyhvYmopIHtcbiAgICAgICAgaWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnIHx8IG9iaiA9PT0gbnVsbCkgcmV0dXJuIFtdO1xuICAgICAgICBsZXQgbWV0YSA9IENsYXNzTWV0YS5mb3Iob2JqKTtcbiAgICAgICAgaWYgKCFtZXRhKSByZXR1cm4gW107XG4gICAgICAgIHJldHVybiBtZXRhLmdldEFwcGxpZWRNaXhpbnMoKTtcbiAgICB9XG4gICAgZGV0ZWN0KG9iaikge1xuICAgICAgICBpZiAodHlwZW9mIG9iaiAhPT0gJ29iamVjdCcgfHwgb2JqID09PSBudWxsKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmIChvYmogaW5zdGFuY2VvZiBNaXhpbikge1xuICAgICAgICAgICAgcmV0dXJuIG9iai5kZXBlbmRlbmNpZXMuaW5kZXhPZih0aGlzKSAhPT0gLTE7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IG1ldGEgPSBDbGFzc01ldGEuZm9yKG9iaik7XG4gICAgICAgIHJldHVybiAhIW1ldGEgJiYgbWV0YS5oYXNBcHBsaWVkTWl4aW4odGhpcyk7XG4gICAgfVxuICAgIHJlb3BlbihleHRlbnNpb25zKSB7XG4gICAgICAgIGlmICh0aGlzLmV4dGVuc2lvbnMpIHtcbiAgICAgICAgICAgIHRoaXMuZGVwZW5kZW5jaWVzLnB1c2godG9NaXhpbih0aGlzLmV4dGVuc2lvbnMpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIGV4dGVuc2lvbnMgPT09ICdvYmplY3QnICYmICdjb25jYXRlbmF0ZWRQcm9wZXJ0aWVzJyBpbiBleHRlbnNpb25zKSB7XG4gICAgICAgICAgICBsZXQgY29uY2F0O1xuICAgICAgICAgICAgbGV0IHJhd0NvbmNhdCA9IGV4dGVuc2lvbnMuY29uY2F0ZW5hdGVkUHJvcGVydGllcztcbiAgICAgICAgICAgIGlmIChpc0FycmF5KHJhd0NvbmNhdCkpIHtcbiAgICAgICAgICAgICAgICBjb25jYXQgPSByYXdDb25jYXQuc2xpY2UoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmF3Q29uY2F0ID09PSBudWxsIHx8IHJhd0NvbmNhdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgY29uY2F0ID0gW107XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbmNhdCA9IFtyYXdDb25jYXRdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVsZXRlIGV4dGVuc2lvbnMuY29uY2F0ZW5hdGVkUHJvcGVydGllcztcbiAgICAgICAgICAgIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IGNvbmNhdDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIGV4dGVuc2lvbnMgPT09ICdvYmplY3QnICYmICdtZXJnZWRQcm9wZXJ0aWVzJyBpbiBleHRlbnNpb25zKSB7XG4gICAgICAgICAgICBsZXQgbWVyZ2VkO1xuICAgICAgICAgICAgbGV0IHJhd01lcmdlZCA9IGV4dGVuc2lvbnMubWVyZ2VkUHJvcGVydGllcztcbiAgICAgICAgICAgIGlmIChpc0FycmF5KHJhd01lcmdlZCkpIHtcbiAgICAgICAgICAgICAgICBtZXJnZWQgPSByYXdNZXJnZWQuc2xpY2UoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmF3TWVyZ2VkID09PSBudWxsIHx8IHJhd01lcmdlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgbWVyZ2VkID0gW107XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG1lcmdlZCA9IFtyYXdNZXJnZWRdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVsZXRlIGV4dGVuc2lvbnMubWVyZ2VkUHJvcGVydGllcztcbiAgICAgICAgICAgIHRoaXMubWVyZ2VkUHJvcGVydGllcyA9IG1lcmdlZDtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbm9ybWFsaXplZCA9IE9iamVjdC5rZXlzKGV4dGVuc2lvbnMpLnJlZHVjZSgob2JqLCBrZXkpID0+IHtcbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IGV4dGVuc2lvbnNba2V5XTtcbiAgICAgICAgICAgIHN3aXRjaCAodHlwZW9mIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnZnVuY3Rpb24nOlxuICAgICAgICAgICAgICAgICAgICBvYmpba2V5XSA9IG5ldyBNZXRob2RCbHVlcHJpbnQoeyB2YWx1ZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlICYmIEJMVUVQUklOVCBpbiB2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb2JqW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIG9ialtrZXldID0gbmV3IERhdGFCbHVlcHJpbnQoeyB2YWx1ZSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBvYmo7XG4gICAgICAgIH0sIGRpY3QoKSk7XG4gICAgICAgIHRoaXMuZXh0ZW5zaW9ucyA9IGRpY3QoKTtcbiAgICAgICAgYXNzaWduKHRoaXMuZXh0ZW5zaW9ucywgdHVyYm9jaGFyZ2Uobm9ybWFsaXplZCkpO1xuICAgIH1cbiAgICBhcHBseSh0YXJnZXQpIHtcbiAgICAgICAgbGV0IG1ldGEgPSB0YXJnZXRbQ0xBU1NfTUVUQV0gPSB0YXJnZXRbQ0xBU1NfTUVUQV0gfHwgbmV3IENsYXNzTWV0YSgpO1xuICAgICAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKG0gPT4gbS5hcHBseSh0YXJnZXQpKTtcbiAgICAgICAgdGhpcy5tZXJnZVByb3BlcnRpZXModGFyZ2V0LCB0YXJnZXQsIG1ldGEpO1xuICAgICAgICBtZXRhLmFkZE1peGluKHRoaXMpO1xuICAgICAgICBtZXRhLnNlYWwoKTtcbiAgICAgICAgbWV0YS5yZXNlYWwodGFyZ2V0KTtcbiAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9XG4gICAgZXh0ZW5kUHJvdG90eXBlKE9yaWdpbmFsKSB7XG4gICAgICAgIE9yaWdpbmFsLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoT3JpZ2luYWwucHJvdG90eXBlKTtcbiAgICAgICAgdGhpcy5kZXBlbmRlbmNpZXMuZm9yRWFjaChtID0+IG0uZXh0ZW5kUHJvdG90eXBlKE9yaWdpbmFsKSk7XG4gICAgICAgIHRoaXMuZXh0ZW5kUHJvdG90eXBlT250byhPcmlnaW5hbCwgT3JpZ2luYWwpO1xuICAgIH1cbiAgICBleHRlbmRQcm90b3R5cGVPbnRvKFN1YmNsYXNzLCBQYXJlbnQpIHtcbiAgICAgICAgdGhpcy5kZXBlbmRlbmNpZXMuZm9yRWFjaChtID0+IG0uZXh0ZW5kUHJvdG90eXBlT250byhTdWJjbGFzcywgUGFyZW50KSk7XG4gICAgICAgIHRoaXMubWVyZ2VQcm9wZXJ0aWVzKFN1YmNsYXNzLnByb3RvdHlwZSwgUGFyZW50LnByb3RvdHlwZSwgU3ViY2xhc3NbQ0xBU1NfTUVUQV0pO1xuICAgICAgICBTdWJjbGFzc1tDTEFTU19NRVRBXS5hZGRNaXhpbih0aGlzKTtcbiAgICB9XG4gICAgZXh0ZW5kU3RhdGljKFRhcmdldCkge1xuICAgICAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKG0gPT4gbS5leHRlbmRTdGF0aWMoVGFyZ2V0KSk7XG4gICAgICAgIHRoaXMubWVyZ2VQcm9wZXJ0aWVzKFRhcmdldCwgT2JqZWN0LmdldFByb3RvdHlwZU9mKFRhcmdldCksIFRhcmdldFtDTEFTU19NRVRBXVtDTEFTU19NRVRBXSk7XG4gICAgICAgIFRhcmdldFtDTEFTU19NRVRBXS5hZGRTdGF0aWNNaXhpbih0aGlzKTtcbiAgICB9XG4gICAgbWVyZ2VQcm9wZXJ0aWVzKHRhcmdldCwgcGFyZW50LCBtZXRhKSB7XG4gICAgICAgIGlmIChtZXRhLmhhc0FwcGxpZWRNaXhpbih0aGlzKSkgcmV0dXJuO1xuICAgICAgICBtZXRhLmFkZEFwcGxpZWRNaXhpbih0aGlzKTtcbiAgICAgICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzLmZvckVhY2goayA9PiBtZXRhLmFkZE1lcmdlZFByb3BlcnR5KGssIHBhcmVudFtrXSkpO1xuICAgICAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMuZm9yRWFjaChrID0+IG1ldGEuYWRkQ29uY2F0ZW5hdGVkUHJvcGVydHkoaywgW10pKTtcbiAgICAgICAgbmV3IFZhbHVlRGVzY3JpcHRvcih7IHZhbHVlOiBtZXRhLmdldENvbmNhdGVuYXRlZFByb3BlcnRpZXMoKSB9KS5kZWZpbmUodGFyZ2V0LCAnY29uY2F0ZW5hdGVkUHJvcGVydGllcycpO1xuICAgICAgICBuZXcgVmFsdWVEZXNjcmlwdG9yKHsgdmFsdWU6IG1ldGEuZ2V0TWVyZ2VkUHJvcGVydGllcygpIH0pLmRlZmluZSh0YXJnZXQsICdtZXJnZWRQcm9wZXJ0aWVzJyk7XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuZXh0ZW5zaW9ucykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgbGV0IGV4dGVuc2lvbiA9IHRoaXMuZXh0ZW5zaW9uc1trZXldO1xuICAgICAgICAgICAgbGV0IGRlc2MgPSBleHRlbnNpb24uZGVzY3JpcHRvcih0YXJnZXQsIGtleSwgbWV0YSk7XG4gICAgICAgICAgICBkZXNjLmRlZmluZSh0YXJnZXQsIGtleSwgcGFyZW50KTtcbiAgICAgICAgfSk7XG4gICAgICAgIG5ldyBWYWx1ZURlc2NyaXB0b3IoeyB2YWx1ZTogUk9PVCB9KS5kZWZpbmUodGFyZ2V0LCAnX3N1cGVyJyk7XG4gICAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIGV4dGVuZChQYXJlbnQsIC4uLmV4dGVuc2lvbnMpIHtcbiAgICBsZXQgU3VwZXIgPSBQYXJlbnQ7XG4gICAgbGV0IFN1YmNsYXNzID0gY2xhc3MgZXh0ZW5kcyBTdXBlciB7fTtcbiAgICBTdWJjbGFzc1tDTEFTU19NRVRBXSA9IEluc3RhbmNlTWV0YS5mcm9tUGFyZW50KFBhcmVudFtDTEFTU19NRVRBXSk7XG4gICAgbGV0IG1peGlucyA9IGV4dGVuc2lvbnMubWFwKHRvTWl4aW4pO1xuICAgIFBhcmVudFtDTEFTU19NRVRBXS5hZGRTdWJjbGFzcyhTdWJjbGFzcyk7XG4gICAgbWl4aW5zLmZvckVhY2gobSA9PiBTdWJjbGFzc1tDTEFTU19NRVRBXS5hZGRNaXhpbihtKSk7XG4gICAgQ2xhc3NNZXRhLmFwcGx5QWxsTWl4aW5zKFN1YmNsYXNzLCBQYXJlbnQpO1xuICAgIHJldHVybiBTdWJjbGFzcztcbn1cbmV4cG9ydCBmdW5jdGlvbiByZWxpbmtTdWJjbGFzc2VzKFBhcmVudCkge1xuICAgIFBhcmVudFtDTEFTU19NRVRBXS5nZXRTdWJjbGFzc2VzKCkuZm9yRWFjaChTdWJjbGFzcyA9PiB7XG4gICAgICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLnJlc2V0KFBhcmVudFtDTEFTU19NRVRBXSk7XG4gICAgICAgIFN1YmNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoUGFyZW50LnByb3RvdHlwZSk7XG4gICAgICAgIENsYXNzTWV0YS5hcHBseUFsbE1peGlucyhTdWJjbGFzcywgUGFyZW50KTtcbiAgICAgICAgLy8gcmVjdXJzZSBpbnRvIHN1Yi1zdWJjbGFzc2VzXG4gICAgICAgIHJlbGlua1N1YmNsYXNzZXMoU3ViY2xhc3MpO1xuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHRvTWl4aW4oZXh0ZW5zaW9uKSB7XG4gICAgaWYgKGV4dGVuc2lvbiBpbnN0YW5jZW9mIE1peGluKSByZXR1cm4gZXh0ZW5zaW9uO2Vsc2UgcmV0dXJuIG5ldyBNaXhpbihleHRlbnNpb24sIFtdKTtcbn1cbmNsYXNzIFZhbHVlRGVzY3JpcHRvciBleHRlbmRzIERlc2NyaXB0b3Ige1xuICAgIGNvbnN0cnVjdG9yKHsgZW51bWVyYWJsZSA9IHRydWUsIGNvbmZpZ3VyYWJsZSA9IHRydWUsIHdyaXRhYmxlID0gdHJ1ZSwgdmFsdWUgfSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmVudW1lcmFibGUgPSBlbnVtZXJhYmxlO1xuICAgICAgICB0aGlzLmNvbmZpZ3VyYWJsZSA9IGNvbmZpZ3VyYWJsZTtcbiAgICAgICAgdGhpcy53cml0YWJsZSA9IHdyaXRhYmxlO1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICAgIGRlZmluZSh0YXJnZXQsIGtleSwgX2hvbWUpIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCB7XG4gICAgICAgICAgICBlbnVtZXJhYmxlOiB0aGlzLmVudW1lcmFibGUsXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRoaXMuY29uZmlndXJhYmxlLFxuICAgICAgICAgICAgd3JpdGFibGU6IHRoaXMud3JpdGFibGUsXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy52YWx1ZVxuICAgICAgICB9KTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgRGF0YUJsdWVwcmludCBleHRlbmRzIEJsdWVwcmludCB7XG4gICAgY29uc3RydWN0b3IoeyBlbnVtZXJhYmxlID0gdHJ1ZSwgY29uZmlndXJhYmxlID0gdHJ1ZSwgd3JpdGFibGUgPSB0cnVlLCB2YWx1ZSB9KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuZW51bWVyYWJsZSA9IGVudW1lcmFibGU7XG4gICAgICAgIHRoaXMuY29uZmlndXJhYmxlID0gY29uZmlndXJhYmxlO1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMud3JpdGFibGUgPSB3cml0YWJsZTtcbiAgICB9XG4gICAgZGVzY3JpcHRvcihfdGFyZ2V0LCBrZXksIGNsYXNzTWV0YSkge1xuICAgICAgICBsZXQgeyBlbnVtZXJhYmxlLCBjb25maWd1cmFibGUsIHdyaXRhYmxlLCB2YWx1ZSB9ID0gdGhpcztcbiAgICAgICAgaWYgKGNsYXNzTWV0YS5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICBjbGFzc01ldGEuYWRkQ29uY2F0ZW5hdGVkUHJvcGVydHkoa2V5LCB2YWx1ZSk7XG4gICAgICAgICAgICB2YWx1ZSA9IGNsYXNzTWV0YS5nZXRDb25jYXRlbmF0ZWRQcm9wZXJ0eShrZXkpO1xuICAgICAgICB9IGVsc2UgaWYgKGNsYXNzTWV0YS5oYXNNZXJnZWRQcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICBjbGFzc01ldGEuYWRkTWVyZ2VkUHJvcGVydHkoa2V5LCB2YWx1ZSk7XG4gICAgICAgICAgICB2YWx1ZSA9IGNsYXNzTWV0YS5nZXRNZXJnZWRQcm9wZXJ0eShrZXkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgVmFsdWVEZXNjcmlwdG9yKHsgZW51bWVyYWJsZSwgY29uZmlndXJhYmxlLCB3cml0YWJsZSwgdmFsdWUgfSk7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIEFjY2Vzc29yQmx1ZXByaW50IGV4dGVuZHMgQmx1ZXByaW50IHtcbiAgICBjb25zdHJ1Y3Rvcih7IGVudW1lcmFibGUgPSB0cnVlLCBjb25maWd1cmFibGUgPSB0cnVlLCBnZXQsIHNldCB9KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuZW51bWVyYWJsZSA9IGVudW1lcmFibGU7XG4gICAgICAgIHRoaXMuY29uZmlndXJhYmxlID0gY29uZmlndXJhYmxlO1xuICAgICAgICB0aGlzLmdldCA9IGdldDtcbiAgICAgICAgdGhpcy5zZXQgPSBzZXQ7XG4gICAgfVxuICAgIGRlc2NyaXB0b3IoX3RhcmdldCwgX2tleSwgX2NsYXNzTWV0YSkge1xuICAgICAgICByZXR1cm4gbmV3IFZhbHVlRGVzY3JpcHRvcih7XG4gICAgICAgICAgICBlbnVtZXJhYmxlOiB0aGlzLmVudW1lcmFibGUsXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRoaXMuY29uZmlndXJhYmxlLFxuICAgICAgICAgICAgZ2V0OiB0aGlzLmdldCxcbiAgICAgICAgICAgIHNldDogdGhpcy5zZXRcbiAgICAgICAgfSk7XG4gICAgfVxufVxuY2xhc3MgTWV0aG9kRGVzY3JpcHRvciBleHRlbmRzIFZhbHVlRGVzY3JpcHRvciB7XG4gICAgZGVmaW5lKHRhcmdldCwga2V5LCBob21lKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB3cmFwTWV0aG9kKGhvbWUsIGtleSwgdGhpcy52YWx1ZSk7XG4gICAgICAgIHN1cGVyLmRlZmluZSh0YXJnZXQsIGtleSwgaG9tZSk7XG4gICAgfVxufVxuY2xhc3MgTWV0aG9kQmx1ZXByaW50IGV4dGVuZHMgRGF0YUJsdWVwcmludCB7XG4gICAgZGVzY3JpcHRvcih0YXJnZXQsIGtleSwgY2xhc3NNZXRhKSB7XG4gICAgICAgIGxldCBkZXNjID0gc3VwZXIuZGVzY3JpcHRvcih0YXJnZXQsIGtleSwgY2xhc3NNZXRhKTtcbiAgICAgICAgcmV0dXJuIG5ldyBNZXRob2REZXNjcmlwdG9yKGRlc2MpO1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiB3cmFwTWV0aG9kKGhvbWUsIG1ldGhvZE5hbWUsIG9yaWdpbmFsKSB7XG4gICAgaWYgKCEobWV0aG9kTmFtZSBpbiBob21lKSkgcmV0dXJuIG1heWJlV3JhcChvcmlnaW5hbCk7XG4gICAgbGV0IHN1cGVyTWV0aG9kID0gaG9tZVttZXRob2ROYW1lXTtcbiAgICBsZXQgZnVuYyA9IGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgICAgIGlmICghdGhpcykgcmV0dXJuIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICBsZXQgbGFzdFN1cGVyID0gdGhpcy5fc3VwZXI7XG4gICAgICAgIHRoaXMuX3N1cGVyID0gc3VwZXJNZXRob2Q7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICB0aGlzLl9zdXBlciA9IGxhc3RTdXBlcjtcbiAgICAgICAgfVxuICAgIH07XG4gICAgZnVuYy5fX3dyYXBwZWQgPSB0cnVlO1xuICAgIHJldHVybiBmdW5jO1xufVxuZnVuY3Rpb24gbWF5YmVXcmFwKG9yaWdpbmFsKSB7XG4gICAgaWYgKCdfX3dyYXBwZWQnIGluIG9yaWdpbmFsKSByZXR1cm4gb3JpZ2luYWw7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgICAgIGlmICghdGhpcykgcmV0dXJuIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICBsZXQgbGFzdFN1cGVyID0gdGhpcy5fc3VwZXI7XG4gICAgICAgIHRoaXMuX3N1cGVyID0gUk9PVDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMuX3N1cGVyID0gbGFzdFN1cGVyO1xuICAgICAgICB9XG4gICAgfTtcbn0iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWl4aW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL21peGluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUEsQUFBTyxBQUFFLEFBQVUsQUFBRSxBQUFNLEFBQTJCLEFBQUM7O0FBQ3ZELEFBQU8sQUFBUSxBQUFJLEFBQUUsQUFBTSxBQUFFLEFBQU0sQUFBZSxBQUFDOztBQUNuRCxBQUFzQixBQUVwQixBQUFTLEFBQ1QsQUFBWSxBQUNaLEFBQVcsQUFDWixBQUFNLEFBQVUsQUFBQzs7QUFFbEIsQUFBTyxBQUFFLEFBQUksQUFBRSxBQUFNLEFBQVMsQUFBQzs7QUFHL0IsTUFBTSxFQUFFLEFBQU8sQUFBRSxZQUFHLEFBQUssQUFBQyxBQUUxQixBQUFNO0FBQUMsTUFBTSxBQUFVLGtDQUFHLEFBQXNDLEFBQUMsQUFDakUsQUFBTTtBQUFDLE1BQU0sQUFBUyxnQ0FBSSxBQUFzQyxBQUFDLEFBRWpFLEFBQU07O2tCQUNKO2FBQXNDLDBDQUFHLEFBQUksQUFBQyxBQUVoRCxBQUFDO0FBRUQsQUFBTTtBQUxOOzs7a0JBTUU7YUFBc0MsMENBQUcsQUFBSSxBQUFDLEFBRWhELEFBQUM7QUFTRCxBQUFNO0FBWk47OztnQkF3Q2MsQUFBc0IsWUFBRSxBQUFlLFFBM0IzQzthQUFVLGFBQXNCLEFBQUksQUFBQyxBQUNyQzthQUFzQix5QkFBYSxBQUFFLEFBQUMsQUFDdEM7YUFBZ0IsbUJBQWEsQUFBRSxBQUFDLEFBQ2hDO2FBQVksZUFBWSxBQUFFLEFBQUMsQUF5QmpDLEFBQUk7YUFBQyxBQUFNLE9BQUMsQUFBVSxBQUFDLEFBQUMsQUFDeEIsQUFBSTthQUFDLEFBQVksYUFBQyxBQUFJLEtBQUMsR0FBRyxBQUFNLEFBQUMsQUFBQyxBQUNwQyxBQUFDO0FBekJELEFBQU07V0FBQyxBQUFNLE9BQUMsR0FBRyxBQUE0QixNQUMzQztZQUFJLEFBQVUsYUFBRyxBQUFJ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QUFBSyxNQUFDLEFBQUksTUFBRSxBQUFJLEFBQUMsQUFBQyxBQUU3QztZQUFJLEFBQVMsWUFBRyxBQUFJLEtBQUMsQUFBTSxBQUFDLEFBQzVCLEFBQUk7YUFBQyxBQUFNLFNBQUcsQUFBVyxBQUFDLEFBRTFCO1lBQUksQUFBQyxBQUNILEFBQU07bUJBQUMsQUFBUSxTQUFDLEFBQUssTUFBQyxBQUFJLE1BQUUsQUFBSSxBQUFDLEFBQUMsQUFDcEMsQUFBQztrQkFBUyxBQUFDLEFBQ1QsQUFBSTtpQkFBQyxBQUFNLFNBQUcsQUFBUyxBQUFDLEFBQzFCLEFBQUMsQUFDSDtBQUFDLEFBQUM7QUFFSSxBQUFLO1NBQUMsQUFBUyxZQUFHLEFBQUksQUFBQyxBQUU3QixBQUFNO1dBQUMsQUFBSSxBQUFDLEFBQ2QsQUFBQzs7QUFFRCxtQkFBbUIsQUFBa0IsVUFDbkMsQUFBRSxBQUFDO1FBQUMsQUFBVyxlQUFJLEFBQVEsQUFBQyxVQUFDLEFBQU0sT0FBQyxBQUFRLEFBQUMsQUFFN0MsQUFBTTtXQUFDLFVBQThCLEdBQUcsQUFBVyxNQUNqRCxBQUFFLEFBQUM7WUFBQyxDQUFDLEFBQUksQUFBQyxNQUFDLEFBQU0sT0FBQyxBQUFRLFNBQUMsQUFBSyxNQUFDLEFBQUksTUFBRSxBQUFJLEFBQUMsQUFBQyxBQUU3QztZQUFJLEFBQVMsWUFBRyxBQUFJLEtBQUMsQUFBTSxBQUFDLEFBQzVCLEFBQUk7YUFBQyxBQUFNLEFBQUcsQUFBSSxBQUFDLEFBRW5CO1lBQUksQUFBQyxBQUNILEFBQU07bUJBQUMsQUFBUSxTQUFDLEFBQUssTUFBQyxBQUFJLE1BQUUsQUFBSSxBQUFDLEFBQUMsQUFDcEMsQUFBQztrQkFBUyxBQUFDLEFBQ1QsQUFBSTtpQkFBQyxBQUFNLFNBQUcsQUFBUyxBQUFDLEFBQzFCLEFBQUMsQUFDSDtBQUFDLEFBQUMsQUFDSjtBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ0xBU1NfTUVUQSB9IGZyb20gJ0BnbGltbWVyL29iamVjdC1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgRGljdCwgZGljdCwgYXNzaWduIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgR2xpbW1lck9iamVjdCwge1xuICBHbGltbWVyT2JqZWN0RmFjdG9yeSxcbiAgQ2xhc3NNZXRhLFxuICBJbnN0YW5jZU1ldGEsXG4gIHR1cmJvY2hhcmdlXG59IGZyb20gJy4vb2JqZWN0JztcblxuaW1wb3J0IHsgUk9PVCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgT3B0aW9uIH0gZnJvbSBcIkBnbGltbWVyL2ludGVyZmFjZXNcIjtcblxuY29uc3QgeyBpc0FycmF5IH0gPSBBcnJheTtcblxuZXhwb3J0IGNvbnN0IERFU0NSSVBUT1IgPSBcIjVkOTBmODRmLTkwOGUtNGE0Mi05NzQ5LTNkMGY1MjNjMjYyY1wiO1xuZXhwb3J0IGNvbnN0IEJMVUVQUklOVCAgPSBcIjhkOTdjZjVmLWRiOWUtNDhkOC1hNmIyLTdhNzViNzE3MDgwNVwiO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRGVzY3JpcHRvciB7XG4gIFwiNWQ5MGY4NGYtOTA4ZS00YTQyLTk3NDktM2QwZjUyM2MyNjJjXCIgPSB0cnVlO1xuICBhYnN0cmFjdCBkZWZpbmUocHJvdG90eXBlOiBPYmplY3QsIGtleTogc3RyaW5nLCBob21lOiBPYmplY3QpOiB2b2lkO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmx1ZXByaW50IHtcbiAgXCI4ZDk3Y2Y1Zi1kYjllLTQ4ZDgtYTZiMi03YTc1YjcxNzA4MDVcIiA9IHRydWU7XG4gIGFic3RyYWN0IGRlc2NyaXB0b3IodGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBjbGFzc01ldGE6IENsYXNzTWV0YSk6IERlc2NyaXB0b3I7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXh0ZW5zaW9ucyB7XG4gIGNvbmNhdGVuYXRlZFByb3BlcnRpZXM/OiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGw7XG4gIG1lcmdlZFByb3BlcnRpZXM/OiBzdHJpbmdbXSB8IHN0cmluZztcbiAgX3N1cGVyPzogRnVuY3Rpb247XG4gIFtpbmRleDogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgY2xhc3MgTWl4aW4ge1xuICBwcml2YXRlIGV4dGVuc2lvbnM6IE9wdGlvbjxEaWN0PGFueT4+ID0gbnVsbDtcbiAgcHJpdmF0ZSBjb25jYXRlbmF0ZWRQcm9wZXJ0aWVzOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIG1lcmdlZFByb3BlcnRpZXM6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgZGVwZW5kZW5jaWVzOiBNaXhpbltdID0gW107XG5cbiAgc3RhdGljIGNyZWF0ZSguLi5hcmdzOiAoTWl4aW4gfCBFeHRlbnNpb25zKVtdKSB7XG4gICAgbGV0IGV4dGVuc2lvbnMgPSBhcmdzW2FyZ3MubGVuZ3RoIC0gMV07XG5cbiAgICBpZiAoYXJncy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBuZXcgdGhpcyh7fSwgW10pO1xuICAgIH0gZWxzZSBpZiAoZXh0ZW5zaW9ucyBpbnN0YW5jZW9mIE1peGluKSB7XG4gICAgICByZXR1cm4gbmV3IHRoaXMoe30sIDxNaXhpbltdPmFyZ3MpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgZGVwcyA9IGFyZ3Muc2xpY2UoMCwgLTEpLm1hcCh0b01peGluKTtcbiAgICAgIHJldHVybiBuZXcgdGhpcyg8RXh0ZW5zaW9ucz5leHRlbnNpb25zLCBkZXBzKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgbWl4aW5zKG9iajogYW55KTogTWl4aW5bXSB7XG4gICAgaWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnIHx8IG9iaiA9PT0gbnVsbCkgcmV0dXJuIFtdO1xuXG4gICAgbGV0IG1ldGEgPSBDbGFzc01ldGEuZm9yKG9iaik7XG4gICAgaWYgKCFtZXRhKSByZXR1cm4gW107XG5cbiAgICByZXR1cm4gbWV0YS5nZXRBcHBsaWVkTWl4aW5zKCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihleHRlbnNpb25zOiBFeHRlbnNpb25zLCBtaXhpbnM6IE1peGluW10pIHtcbiAgICB0aGlzLnJlb3BlbihleHRlbnNpb25zKTtcbiAgICB0aGlzLmRlcGVuZGVuY2llcy5wdXNoKC4uLm1peGlucyk7XG4gIH1cblxuICBkZXRlY3Qob2JqOiBhbnkpOiBib29sZWFuIHtcbiAgICBpZiAodHlwZW9mIG9iaiAhPT0gJ29iamVjdCcgfHwgb2JqID09PSBudWxsKSByZXR1cm4gZmFsc2U7XG5cbiAgICBpZiAob2JqIGluc3RhbmNlb2YgTWl4aW4pIHtcbiAgICAgIHJldHVybiBvYmouZGVwZW5kZW5jaWVzLmluZGV4T2YodGhpcykgIT09IC0xO1xuICAgIH1cblxuICAgIGxldCBtZXRhID0gQ2xhc3NNZXRhLmZvcihvYmopO1xuICAgIHJldHVybiAhIW1ldGEgJiYgbWV0YS5oYXNBcHBsaWVkTWl4aW4odGhpcyk7XG4gIH1cblxuICByZW9wZW4oZXh0ZW5zaW9uczogRXh0ZW5zaW9ucykge1xuICAgIGlmICh0aGlzLmV4dGVuc2lvbnMpIHtcbiAgICAgIHRoaXMuZGVwZW5kZW5jaWVzLnB1c2godG9NaXhpbih0aGlzLmV4dGVuc2lvbnMpKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGV4dGVuc2lvbnMgPT09ICdvYmplY3QnICYmICdjb25jYXRlbmF0ZWRQcm9wZXJ0aWVzJyBpbiBleHRlbnNpb25zKSB7XG4gICAgICBsZXQgY29uY2F0OiBzdHJpbmdbXTtcbiAgICAgIGxldCByYXdDb25jYXQgPSBleHRlbnNpb25zLmNvbmNhdGVuYXRlZFByb3BlcnRpZXM7XG5cbiAgICAgIGlmIChpc0FycmF5KHJhd0NvbmNhdCkpIHtcbiAgICAgICAgY29uY2F0ID0gKDxzdHJpbmdbXT5yYXdDb25jYXQpLnNsaWNlKCk7XG4gICAgICB9IGVsc2UgaWYgKHJhd0NvbmNhdCA9PT0gbnVsbCB8fCByYXdDb25jYXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25jYXQgPSBbXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbmNhdCA9IFs8c3RyaW5nPnJhd0NvbmNhdF07XG4gICAgICB9XG5cbiAgICAgIGRlbGV0ZSBleHRlbnNpb25zLmNvbmNhdGVuYXRlZFByb3BlcnRpZXM7XG4gICAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSBjb25jYXQ7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBleHRlbnNpb25zID09PSAnb2JqZWN0JyAmJiAnbWVyZ2VkUHJvcGVydGllcycgaW4gZXh0ZW5zaW9ucykge1xuICAgICAgbGV0IG1lcmdlZDogc3RyaW5nW107XG4gICAgICBsZXQgcmF3TWVyZ2VkID0gZXh0ZW5zaW9ucy5tZXJnZWRQcm9wZXJ0aWVzO1xuXG4gICAgICBpZiAoaXNBcnJheShyYXdNZXJnZWQpKSB7XG4gICAgICAgIG1lcmdlZCA9ICg8c3RyaW5nW10+cmF3TWVyZ2VkKS5zbGljZSgpO1xuICAgICAgfSBlbHNlIGlmIChyYXdNZXJnZWQgPT09IG51bGwgfHwgcmF3TWVyZ2VkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbWVyZ2VkID0gW107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtZXJnZWQgPSBbPHN0cmluZz5yYXdNZXJnZWRdO1xuICAgICAgfVxuXG4gICAgICBkZWxldGUgZXh0ZW5zaW9ucy5tZXJnZWRQcm9wZXJ0aWVzO1xuICAgICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzID0gbWVyZ2VkO1xuICAgIH1cblxuICAgIGxldCBub3JtYWxpemVkOiBEaWN0PEJsdWVwcmludD4gPSBPYmplY3Qua2V5cyhleHRlbnNpb25zKS5yZWR1Y2UoKG9iaiwga2V5KSA9PiB7XG4gICAgICBsZXQgdmFsdWUgPSBleHRlbnNpb25zW2tleV07XG5cbiAgICAgIHN3aXRjaCAodHlwZW9mIHZhbHVlKSB7XG4gICAgICAgIGNhc2UgJ2Z1bmN0aW9uJzpcbiAgICAgICAgICBvYmpba2V5XSA9IG5ldyBNZXRob2RCbHVlcHJpbnQoeyB2YWx1ZSB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAgICBpZiAodmFsdWUgJiYgQkxVRVBSSU5UIGluIHZhbHVlKSB7XG4gICAgICAgICAgICBvYmpba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBvYmpba2V5XSA9IG5ldyBEYXRhQmx1ZXByaW50KHsgdmFsdWUgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvYmo7XG4gICAgfSwgZGljdDxCbHVlcHJpbnQ+KCkpO1xuXG4gICAgdGhpcy5leHRlbnNpb25zID0gZGljdDxhbnk+KCk7XG4gICAgYXNzaWduKHRoaXMuZXh0ZW5zaW9ucywgdHVyYm9jaGFyZ2Uobm9ybWFsaXplZCkpO1xuICB9XG5cbiAgYXBwbHkodGFyZ2V0OiBhbnkpIHtcbiAgICBsZXQgbWV0YTogQ2xhc3NNZXRhID0gdGFyZ2V0W0NMQVNTX01FVEFdID0gdGFyZ2V0W0NMQVNTX01FVEFdIHx8IG5ldyBDbGFzc01ldGEoKTtcbiAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKG0gPT4gbS5hcHBseSh0YXJnZXQpKTtcbiAgICB0aGlzLm1lcmdlUHJvcGVydGllcyh0YXJnZXQsIHRhcmdldCwgbWV0YSk7XG4gICAgbWV0YS5hZGRNaXhpbih0aGlzKTtcbiAgICBtZXRhLnNlYWwoKTtcbiAgICBtZXRhLnJlc2VhbCh0YXJnZXQpO1xuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuXG4gIGV4dGVuZFByb3RvdHlwZShPcmlnaW5hbDogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICAgIE9yaWdpbmFsLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoT3JpZ2luYWwucHJvdG90eXBlKTtcbiAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKG0gPT4gbS5leHRlbmRQcm90b3R5cGUoT3JpZ2luYWwpKTtcbiAgICB0aGlzLmV4dGVuZFByb3RvdHlwZU9udG8oT3JpZ2luYWwsIE9yaWdpbmFsKTtcbiAgfVxuXG4gIGV4dGVuZFByb3RvdHlwZU9udG8oU3ViY2xhc3M6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4sIFBhcmVudDogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICAgIHRoaXMuZGVwZW5kZW5jaWVzLmZvckVhY2gobSA9PiBtLmV4dGVuZFByb3RvdHlwZU9udG8oU3ViY2xhc3MsIFBhcmVudCkpO1xuICAgIHRoaXMubWVyZ2VQcm9wZXJ0aWVzKFN1YmNsYXNzLnByb3RvdHlwZSwgUGFyZW50LnByb3RvdHlwZSwgU3ViY2xhc3NbQ0xBU1NfTUVUQV0pO1xuICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLmFkZE1peGluKHRoaXMpO1xuICB9XG5cbiAgZXh0ZW5kU3RhdGljKFRhcmdldDogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICAgIHRoaXMuZGVwZW5kZW5jaWVzLmZvckVhY2gobSA9PiBtLmV4dGVuZFN0YXRpYyhUYXJnZXQpKTtcbiAgICB0aGlzLm1lcmdlUHJvcGVydGllcyhUYXJnZXQsIE9iamVjdC5nZXRQcm90b3R5cGVPZihUYXJnZXQpLCBUYXJnZXRbQ0xBU1NfTUVUQV1bQ0xBU1NfTUVUQV0pO1xuICAgIFRhcmdldFtDTEFTU19NRVRBXS5hZGRTdGF0aWNNaXhpbih0aGlzKTtcbiAgfVxuXG4gIG1lcmdlUHJvcGVydGllcyh0YXJnZXQ6IE9iamVjdCwgcGFyZW50OiBPYmplY3QsIG1ldGE6IENsYXNzTWV0YSkge1xuICAgIGlmIChtZXRhLmhhc0FwcGxpZWRNaXhpbih0aGlzKSkgcmV0dXJuO1xuICAgIG1ldGEuYWRkQXBwbGllZE1peGluKHRoaXMpO1xuXG4gICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzLmZvckVhY2goayA9PiBtZXRhLmFkZE1lcmdlZFByb3BlcnR5KGssIHBhcmVudFtrXSkpO1xuICAgIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcy5mb3JFYWNoKGsgPT4gbWV0YS5hZGRDb25jYXRlbmF0ZWRQcm9wZXJ0eShrLCBbXSkpO1xuXG4gICAgbmV3IFZhbHVlRGVzY3JpcHRvcih7IHZhbHVlOiBtZXRhLmdldENvbmNhdGVuYXRlZFByb3BlcnRpZXMoKSB9KS5kZWZpbmUodGFyZ2V0LCAnY29uY2F0ZW5hdGVkUHJvcGVydGllcycpO1xuICAgIG5ldyBWYWx1ZURlc2NyaXB0b3IoeyB2YWx1ZTogbWV0YS5nZXRNZXJnZWRQcm9wZXJ0aWVzKCkgfSkuZGVmaW5lKHRhcmdldCwgJ21lcmdlZFByb3BlcnRpZXMnKTtcblxuICAgIE9iamVjdC5rZXlzKHRoaXMuZXh0ZW5zaW9ucykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgbGV0IGV4dGVuc2lvbjogQmx1ZXByaW50ID0gdGhpcy5leHRlbnNpb25zIVtrZXldO1xuICAgICAgbGV0IGRlc2MgPSBleHRlbnNpb24uZGVzY3JpcHRvcih0YXJnZXQsIDxzdHJpbmc+a2V5LCBtZXRhKTtcbiAgICAgIGRlc2MuZGVmaW5lKHRhcmdldCwgPHN0cmluZz5rZXksIHBhcmVudCk7XG4gICAgfSk7XG5cbiAgICBuZXcgVmFsdWVEZXNjcmlwdG9yKHsgdmFsdWU6IFJPT1QgfSkuZGVmaW5lKHRhcmdldCwgPHN0cmluZz4nX3N1cGVyJyk7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgRXh0ZW5zaW9uID0gTWl4aW4gfCBFeHRlbnNpb25zO1xuXG5leHBvcnQgZnVuY3Rpb24gZXh0ZW5kPFQgZXh0ZW5kcyBHbGltbWVyT2JqZWN0PihQYXJlbnQ6IEdsaW1tZXJPYmplY3RGYWN0b3J5PFQ+LCAuLi5leHRlbnNpb25zOiBFeHRlbnNpb25bXSk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4ge1xuICBsZXQgU3VwZXIgPSA8dHlwZW9mIEdsaW1tZXJPYmplY3Q+UGFyZW50O1xuXG4gIGxldCBTdWJjbGFzcyA9IGNsYXNzIGV4dGVuZHMgU3VwZXIge307XG4gIFN1YmNsYXNzW0NMQVNTX01FVEFdID0gSW5zdGFuY2VNZXRhLmZyb21QYXJlbnQoUGFyZW50W0NMQVNTX01FVEFdKTtcblxuICBsZXQgbWl4aW5zID0gZXh0ZW5zaW9ucy5tYXAodG9NaXhpbik7XG4gIFBhcmVudFtDTEFTU19NRVRBXS5hZGRTdWJjbGFzcyhTdWJjbGFzcyBhcyBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+KTtcbiAgbWl4aW5zLmZvckVhY2gobSA9PiBTdWJjbGFzc1tDTEFTU19NRVRBXS5hZGRNaXhpbihtKSk7XG5cbiAgQ2xhc3NNZXRhLmFwcGx5QWxsTWl4aW5zKFN1YmNsYXNzIGFzIEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4sIFBhcmVudCk7XG5cbiAgcmV0dXJuIFN1YmNsYXNzIGFzIGFueTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbGlua1N1YmNsYXNzZXMoUGFyZW50OiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+KSB7XG4gIFBhcmVudFtDTEFTU19NRVRBXS5nZXRTdWJjbGFzc2VzKCkuZm9yRWFjaCgoU3ViY2xhc3M6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pID0+IHtcbiAgICBTdWJjbGFzc1tDTEFTU19NRVRBXS5yZXNldChQYXJlbnRbQ0xBU1NfTUVUQV0pO1xuICAgIFN1YmNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoUGFyZW50LnByb3RvdHlwZSk7XG5cbiAgICBDbGFzc01ldGEuYXBwbHlBbGxNaXhpbnMoU3ViY2xhc3MsIFBhcmVudCk7XG5cbiAgICAvLyByZWN1cnNlIGludG8gc3ViLXN1YmNsYXNzZXNcbiAgICByZWxpbmtTdWJjbGFzc2VzKFN1YmNsYXNzKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b01peGluKGV4dGVuc2lvbjogRXh0ZW5zaW9uKTogTWl4aW4ge1xuICBpZiAoZXh0ZW5zaW9uIGluc3RhbmNlb2YgTWl4aW4pIHJldHVybiBleHRlbnNpb247XG4gIGVsc2UgcmV0dXJuIG5ldyBNaXhpbig8T2JqZWN0PmV4dGVuc2lvbiwgW10pO1xufVxuXG5jbGFzcyBWYWx1ZURlc2NyaXB0b3IgZXh0ZW5kcyBEZXNjcmlwdG9yIHtcbiAgcHVibGljIGVudW1lcmFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyBjb25maWd1cmFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyB3cml0YWJsZTogYm9vbGVhbjtcbiAgcHVibGljIHZhbHVlOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoeyBlbnVtZXJhYmxlPXRydWUsIGNvbmZpZ3VyYWJsZT10cnVlLCB3cml0YWJsZT10cnVlLCB2YWx1ZSB9OiBQcm9wZXJ0eURlc2NyaXB0b3IpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZW51bWVyYWJsZSA9IGVudW1lcmFibGU7XG4gICAgdGhpcy5jb25maWd1cmFibGUgPSBjb25maWd1cmFibGU7XG4gICAgdGhpcy53cml0YWJsZSA9IHdyaXRhYmxlO1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIGRlZmluZSh0YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIF9ob21lPzogYW55KSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCB7XG4gICAgICBlbnVtZXJhYmxlOiB0aGlzLmVudW1lcmFibGUsXG4gICAgICBjb25maWd1cmFibGU6IHRoaXMuY29uZmlndXJhYmxlLFxuICAgICAgd3JpdGFibGU6IHRoaXMud3JpdGFibGUsXG4gICAgICB2YWx1ZTogdGhpcy52YWx1ZVxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEYXRhQmx1ZXByaW50IGV4dGVuZHMgQmx1ZXByaW50IHtcbiAgcHVibGljIGVudW1lcmFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyBjb25maWd1cmFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyB2YWx1ZTogYW55O1xuICBwdWJsaWMgd3JpdGFibGU6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoeyBlbnVtZXJhYmxlPXRydWUsIGNvbmZpZ3VyYWJsZT10cnVlLCB3cml0YWJsZT10cnVlLCB2YWx1ZSB9OiBQcm9wZXJ0eURlc2NyaXB0b3IpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZW51bWVyYWJsZSA9IGVudW1lcmFibGU7XG4gICAgdGhpcy5jb25maWd1cmFibGUgPSBjb25maWd1cmFibGU7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMud3JpdGFibGUgPSB3cml0YWJsZTtcbiAgfVxuXG4gIGRlc2NyaXB0b3IoX3RhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgY2xhc3NNZXRhOiBDbGFzc01ldGEpOiBEZXNjcmlwdG9yIHtcbiAgICBsZXQgeyBlbnVtZXJhYmxlLCBjb25maWd1cmFibGUsIHdyaXRhYmxlLCB2YWx1ZSB9ID0gdGhpcztcblxuICAgIGlmIChjbGFzc01ldGEuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydHkoPHN0cmluZz5rZXkpKSB7XG4gICAgICBjbGFzc01ldGEuYWRkQ29uY2F0ZW5hdGVkUHJvcGVydHkoPHN0cmluZz5rZXksIHZhbHVlKTtcbiAgICAgIHZhbHVlID0gY2xhc3NNZXRhLmdldENvbmNhdGVuYXRlZFByb3BlcnR5KDxzdHJpbmc+a2V5KTtcbiAgICB9IGVsc2UgaWYgKGNsYXNzTWV0YS5oYXNNZXJnZWRQcm9wZXJ0eSg8c3RyaW5nPmtleSkpIHtcbiAgICAgIGNsYXNzTWV0YS5hZGRNZXJnZWRQcm9wZXJ0eSg8c3RyaW5nPmtleSwgdmFsdWUpO1xuICAgICAgdmFsdWUgPSBjbGFzc01ldGEuZ2V0TWVyZ2VkUHJvcGVydHkoPHN0cmluZz5rZXkpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgVmFsdWVEZXNjcmlwdG9yKHsgZW51bWVyYWJsZSwgY29uZmlndXJhYmxlLCB3cml0YWJsZSwgdmFsdWUgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFjY2Vzc29yQmx1ZXByaW50IGV4dGVuZHMgQmx1ZXByaW50IHtcbiAgcHVibGljIGVudW1lcmFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyBjb25maWd1cmFibGU6IGJvb2xlYW47XG4gIGdldDogKCkgPT4gYW55O1xuICBzZXQ6ICh2YWx1ZTogYW55KSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKHsgZW51bWVyYWJsZT10cnVlLCBjb25maWd1cmFibGU9dHJ1ZSwgZ2V0LCBzZXQgfTogUHJvcGVydHlEZXNjcmlwdG9yICYgeyBnZXQ6IGFueSwgc2V0OiBhbnkgfSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5lbnVtZXJhYmxlID0gZW51bWVyYWJsZTtcbiAgICB0aGlzLmNvbmZpZ3VyYWJsZSA9IGNvbmZpZ3VyYWJsZTtcbiAgICB0aGlzLmdldCA9IGdldDtcbiAgICB0aGlzLnNldCA9IHNldDtcbiAgfVxuXG4gIGRlc2NyaXB0b3IoX3RhcmdldDogT2JqZWN0LCBfa2V5OiBzdHJpbmcsIF9jbGFzc01ldGE6IENsYXNzTWV0YSk6IERlc2NyaXB0b3Ige1xuICAgIHJldHVybiBuZXcgVmFsdWVEZXNjcmlwdG9yKHtcbiAgICAgIGVudW1lcmFibGU6IHRoaXMuZW51bWVyYWJsZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdGhpcy5jb25maWd1cmFibGUsXG4gICAgICBnZXQ6IHRoaXMuZ2V0LFxuICAgICAgc2V0OiB0aGlzLnNldFxuICAgIH0pO1xuICB9XG59XG5cbmNsYXNzIE1ldGhvZERlc2NyaXB0b3IgZXh0ZW5kcyBWYWx1ZURlc2NyaXB0b3Ige1xuICBkZWZpbmUodGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBob21lOiBPYmplY3QpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gd3JhcE1ldGhvZChob21lLCBrZXksIHRoaXMudmFsdWUpO1xuICAgIHN1cGVyLmRlZmluZSh0YXJnZXQsIGtleSwgaG9tZSk7XG4gIH1cbn1cblxuY2xhc3MgTWV0aG9kQmx1ZXByaW50IGV4dGVuZHMgRGF0YUJsdWVwcmludCB7XG4gIGRlc2NyaXB0b3IodGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBjbGFzc01ldGE6IENsYXNzTWV0YSk6IE1ldGhvZERlc2NyaXB0b3Ige1xuICAgIGxldCBkZXNjID0gc3VwZXIuZGVzY3JpcHRvcih0YXJnZXQsIGtleSwgY2xhc3NNZXRhKTtcbiAgICByZXR1cm4gbmV3IE1ldGhvZERlc2NyaXB0b3IoZGVzYyBhcyBQcm9wZXJ0eURlc2NyaXB0b3IpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cmFwTWV0aG9kKGhvbWU6IE9iamVjdCwgbWV0aG9kTmFtZTogc3RyaW5nLCBvcmlnaW5hbDogKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnkpIHtcbiAgaWYgKCEoPHN0cmluZz5tZXRob2ROYW1lIGluIGhvbWUpKSByZXR1cm4gbWF5YmVXcmFwKG9yaWdpbmFsKTtcblxuICBsZXQgc3VwZXJNZXRob2QgPSBob21lW21ldGhvZE5hbWVdO1xuXG4gIGxldCBmdW5jID0gZnVuY3Rpb24odGhpczogR2xpbW1lck9iamVjdCwgLi4uYXJnczogYW55W10pIHtcbiAgICBpZiAoIXRoaXMpIHJldHVybiBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcblxuICAgIGxldCBsYXN0U3VwZXIgPSB0aGlzLl9zdXBlcjtcbiAgICB0aGlzLl9zdXBlciA9IHN1cGVyTWV0aG9kO1xuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fc3VwZXIgPSBsYXN0U3VwZXI7XG4gICAgfVxuICB9O1xuXG4gICg8YW55PmZ1bmMpLl9fd3JhcHBlZCA9IHRydWU7XG5cbiAgcmV0dXJuIGZ1bmM7XG59XG5cbmZ1bmN0aW9uIG1heWJlV3JhcChvcmlnaW5hbDogRnVuY3Rpb24pIHtcbiAgaWYgKCdfX3dyYXBwZWQnIGluIG9yaWdpbmFsKSByZXR1cm4gb3JpZ2luYWw7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uKHRoaXM6IEdsaW1tZXJPYmplY3QsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgaWYgKCF0aGlzKSByZXR1cm4gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJncyk7XG5cbiAgICBsZXQgbGFzdFN1cGVyID0gdGhpcy5fc3VwZXI7XG4gICAgdGhpcy5fc3VwZXIgPSBST09UO1xuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fc3VwZXIgPSBsYXN0U3VwZXI7XG4gICAgfVxuICB9O1xufVxuIl19

@@ -311,2 +311,2 @@ 'use strict';

GlimmerObject.isClass = true;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9vYmplY3QuanMiXSwibmFtZXMiOlsidHVyYm9jaGFyZ2UiLCJpc0FycmF5IiwiQXJyYXkiLCJFTVBUWV9DQUNIRSIsIkNMQVNTX01FVEEiLCJvYmoiLCJTZWFsZWRNZXRhIiwiYWRkUmVmZXJlbmNlVHlwZUZvciIsIl9hcmdzIiwiRXJyb3IiLCJDbGFzc01ldGEiLCJjb25zdHJ1Y3RvciIsInJlZmVyZW5jZVR5cGVzIiwicHJvcGVydHlNZXRhZGF0YSIsImNvbmNhdGVuYXRlZFByb3BlcnRpZXMiLCJoYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzIiwibWVyZ2VkUHJvcGVydGllcyIsImhhc01lcmdlZFByb3BlcnRpZXMiLCJtaXhpbnMiLCJhcHBsaWVkTWl4aW5zIiwic3RhdGljTWl4aW5zIiwic3ViY2xhc3NlcyIsInNsb3RzIiwiSW5zdGFuY2VNZXRhQ29uc3RydWN0b3IiLCJmcm9tUGFyZW50IiwicGFyZW50IiwibWV0YSIsInJlc2V0IiwiZm9yIiwib2JqZWN0IiwiaW5pdCIsImF0dHJzIiwiY29uY2F0UHJvcHMiLCJwcm9wIiwiY29uY2F0Iiwic2xpY2UiLCJtZXJnZWRQcm9wcyIsIm1lcmdlZCIsImFkZFN0YXRpY01peGluIiwibWl4aW4iLCJwdXNoIiwiYWRkTWl4aW4iLCJnZXRTdGF0aWNNaXhpbnMiLCJnZXRNaXhpbnMiLCJhZGRBcHBsaWVkTWl4aW4iLCJoYXNBcHBsaWVkTWl4aW4iLCJpbmRleE9mIiwiZ2V0QXBwbGllZE1peGlucyIsImhhc1N0YXRpY01peGluIiwiYXBwbHlBbGxNaXhpbnMiLCJTdWJjbGFzcyIsIlBhcmVudCIsImZvckVhY2giLCJtIiwiZXh0ZW5kUHJvdG90eXBlT250byIsImV4dGVuZFN0YXRpYyIsInNlYWwiLCJhZGRTdWJjbGFzcyIsImdldFN1YmNsYXNzZXMiLCJhZGRQcm9wZXJ0eU1ldGFkYXRhIiwicHJvcGVydHkiLCJ2YWx1ZSIsIm1ldGFkYXRhRm9yUHJvcGVydHkiLCJ0eXBlIiwiYWRkU2xvdEZvciIsImhhc0NvbmNhdGVuYXRlZFByb3BlcnR5IiwiZ2V0Q29uY2F0ZW5hdGVkUHJvcGVydHkiLCJnZXRDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzIiwiT2JqZWN0Iiwia2V5cyIsImFkZENvbmNhdGVuYXRlZFByb3BlcnR5IiwidmFsIiwiaGFzTWVyZ2VkUHJvcGVydHkiLCJnZXRNZXJnZWRQcm9wZXJ0eSIsImdldE1lcmdlZFByb3BlcnRpZXMiLCJhZGRNZXJnZWRQcm9wZXJ0eSIsIkpTT04iLCJzdHJpbmdpZnkiLCJtZXJnZU1lcmdlZFByb3BlcnRpZXMiLCJnZXRSZWZlcmVuY2VUeXBlcyIsImdldFByb3BlcnR5TWV0YWRhdGEiLCJyZXNlYWwiLCJmcmVzaCIsImdldFNsb3RzIiwiU2xvdHMiLCJuYW1lIiwiYXJndW1lbnRzIiwicmVmZXJlbmNlVHlwZUZvciIsIndyYXBwZWQiLCJJbnN0YW5jZU1ldGEiLCJHbGltbWVyT2JqZWN0IiwiX3N1cGVyIiwiX21ldGEiLCJleHRlbmQiLCJleHRlbnNpb25zIiwiY3JlYXRlIiwicmVvcGVuIiwiZXh0ZW5kUHJvdG90eXBlIiwicmVvcGVuQ2xhc3MiLCJtZXRhRm9yUHJvcGVydHkiLCJlYWNoQ29tcHV0ZWRQcm9wZXJ0eSIsImNhbGxiYWNrIiwibWV0YWRhdGEiLCJnZXQiLCJrZXkiLCJzZXQiLCJzZXRQcm9wZXJ0aWVzIiwiZGVzdHJveSIsImlzQ2xhc3MiXSwibWFwcGluZ3MiOiI7Ozs7OztRQU9nQkEsVyxHQUFBQSxXOztBQVBoQjs7QUFDQTs7QUFDQTs7QUFFQTs7QUFEQSxNQUFNLEVBQUVDLE9BQUYsS0FBY0MsS0FBcEI7QUFFTyxNQUFNQyxvQ0FBYyxTQUFTQSxXQUFULEdBQXVCLENBQUUsQ0FBN0M7QUFDUCxNQUFNQyxhQUFhLHNDQUFuQjtBQUNPLFNBQVNKLFdBQVQsQ0FBcUJLLEdBQXJCLEVBQTBCO0FBQzdCO0FBQ0E7QUFDQSxXQUFPQSxHQUFQO0FBQ0g7QUFDRCxNQUFNQyxVQUFOLCtCQUE4QjtBQUMxQkMsd0JBQW9CLEdBQUdDLEtBQXZCLEVBQThC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QUNBLGFBQUtuRCxVQUFMLEVBQWlCb0QsSUFBakI7QUFDSDtBQUNELFdBQU8yQyxlQUFQLENBQXVCdkMsUUFBdkIsRUFBaUM7QUFDN0IsWUFBSUMsUUFBUSxLQUFLekQsVUFBTCxFQUFpQjBELG1CQUFqQixDQUFxQ0YsUUFBckMsQ0FBWjtBQUNBLFlBQUksQ0FBQ0MsS0FBTCxFQUFZLE1BQU0sSUFBSXBELEtBQUosQ0FBVyxrRUFBaUVtRCxRQUFTLElBQXJGLENBQU47QUFDWixlQUFPQyxLQUFQO0FBQ0g7QUFDRCxXQUFPdUMsb0JBQVAsQ0FBNEJDLFFBQTVCLEVBQXNDO0FBQ2xDLFlBQUlDLFdBQVcsS0FBS2xHLFVBQUwsRUFBaUI0RSxtQkFBakIsRUFBZjtBQUNBLFlBQUksQ0FBQ3NCLFFBQUwsRUFBZTtBQUNmLGFBQUssSUFBSXJFLElBQVQsSUFBaUJxRSxRQUFqQixFQUEyQjtBQUN2QkQscUJBQVNwRSxJQUFULEVBQWVxRSxTQUFTckUsSUFBVCxDQUFmO0FBQ0g7QUFDSjtBQUNESCxXQUFPLENBQUU7QUFDVHlFLFFBQUlDLEdBQUosRUFBUztBQUNMLGVBQU8sS0FBS0EsR0FBTCxDQUFQO0FBQ0g7QUFDREMsUUFBSUQsR0FBSixFQUFTM0MsS0FBVCxFQUFnQjtBQUNaLGFBQUsyQyxHQUFMLElBQVkzQyxLQUFaO0FBQ0g7QUFDRDZDLGtCQUFjM0UsS0FBZCxFQUFxQjtBQUNqQiwwQkFBTyxJQUFQLEVBQWFBLEtBQWI7QUFDSDtBQUNENEUsY0FBVSxDQUFFO0FBL0NtQjtrQkFBZGpCLGE7QUFpRHJCQSxjQUFjLHNDQUFkLElBQXdERCxhQUFhakUsVUFBYixDQUF3QixJQUF4QixDQUF4RDtBQUNBa0UsY0FBY2tCLE9BQWQsR0FBd0IsSUFBeEIiLCJmaWxlIjoibGliL29iamVjdC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1ldGEsIFByb3BlcnR5UmVmZXJlbmNlIH0gZnJvbSAnQGdsaW1tZXIvb2JqZWN0LXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBkaWN0LCBhc3NpZ24sIGluaXRpYWxpemVHdWlkIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBleHRlbmQgYXMgZXh0ZW5kQ2xhc3MsIHRvTWl4aW4sIHJlbGlua1N1YmNsYXNzZXMsIHdyYXBNZXRob2QgfSBmcm9tICcuL21peGluJztcbmNvbnN0IHsgaXNBcnJheSB9ID0gQXJyYXk7XG5pbXBvcnQgeyBST09UIH0gZnJvbSAnLi91dGlscyc7XG5leHBvcnQgY29uc3QgRU1QVFlfQ0FDSEUgPSBmdW5jdGlvbiBFTVBUWV9DQUNIRSgpIHt9O1xuY29uc3QgQ0xBU1NfTUVUQSA9IFwiZGY4YmU0YzgtNGU4OS00NGUyLWE4ZjktNTUwYzhkYWNkY2E3XCI7XG5leHBvcnQgZnVuY3Rpb24gdHVyYm9jaGFyZ2Uob2JqKSB7XG4gICAgLy8gZnVuY3Rpb24gRHVtbXkoKSB7fVxuICAgIC8vIER1bW15LnByb3RvdHlwZSA9IG9iajtcbiAgICByZXR1cm4gb2JqO1xufVxuY2xhc3MgU2VhbGVkTWV0YSBleHRlbmRzIE1ldGEge1xuICAgIGFkZFJlZmVyZW5jZVR5cGVGb3IoLi4uX2FyZ3MpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IG1vZGlmeSByZWZlcmVuY2UgdHlwZXMgb24gYSBzZWFsZWQgbWV0YVwiKTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgQ2xhc3NNZXRhIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5yZWZlcmVuY2VUeXBlcyA9IGRpY3QoKTtcbiAgICAgICAgdGhpcy5wcm9wZXJ0eU1ldGFkYXRhID0gZGljdCgpO1xuICAgICAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSBkaWN0KCk7XG4gICAgICAgIHRoaXMuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLm1lcmdlZFByb3BlcnRpZXMgPSBkaWN0KCk7XG4gICAgICAgIHRoaXMuaGFzTWVyZ2VkUHJvcGVydGllcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLm1peGlucyA9IFtdO1xuICAgICAgICB0aGlzLmFwcGxpZWRNaXhpbnMgPSBbXTtcbiAgICAgICAgdGhpcy5zdGF0aWNNaXhpbnMgPSBbXTtcbiAgICAgICAgdGhpcy5zdWJjbGFzc2VzID0gW107XG4gICAgICAgIHRoaXMuc2xvdHMgPSBbXTtcbiAgICAgICAgdGhpcy5JbnN0YW5jZU1ldGFDb25zdHJ1Y3RvciA9IG51bGw7XG4gICAgfVxuICAgIHN0YXRpYyBmcm9tUGFyZW50KHBhcmVudCkge1xuICAgICAgICBsZXQgbWV0YSA9IG5ldyB0aGlzKCk7XG4gICAgICAgIG1ldGEucmVzZXQocGFyZW50KTtcbiAgICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfVxuICAgIHN0YXRpYyBmb3Iob2JqZWN0KSB7XG4gICAgICAgIGlmIChDTEFTU19NRVRBIGluIG9iamVjdCkgcmV0dXJuIG9iamVjdFtDTEFTU19NRVRBXTtlbHNlIGlmIChvYmplY3QuY29uc3RydWN0b3IpIHJldHVybiBvYmplY3QuY29uc3RydWN0b3JbQ0xBU1NfTUVUQV0gfHwgbnVsbDtlbHNlIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBpbml0KG9iamVjdCwgYXR0cnMpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhdHRycyAhPT0gJ29iamVjdCcgfHwgYXR0cnMgPT09IG51bGwpIHJldHVybjtcbiAgICAgICAgaWYgKHRoaXMuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcykge1xuICAgICAgICAgICAgbGV0IGNvbmNhdFByb3BzID0gdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzO1xuICAgICAgICAgICAgZm9yIChsZXQgcHJvcCBpbiBjb25jYXRQcm9wcykge1xuICAgICAgICAgICAgICAgIGlmIChwcm9wIGluIGF0dHJzKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBjb25jYXQgPSBjb25jYXRQcm9wc1twcm9wXS5zbGljZSgpO1xuICAgICAgICAgICAgICAgICAgICBvYmplY3RbcHJvcF0gPSBjb25jYXQuY29uY2F0KGF0dHJzW3Byb3BdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaGFzTWVyZ2VkUHJvcGVydGllcykge1xuICAgICAgICAgICAgbGV0IG1lcmdlZFByb3BzID0gdGhpcy5tZXJnZWRQcm9wZXJ0aWVzO1xuICAgICAgICAgICAgZm9yIChsZXQgcHJvcCBpbiBtZXJnZWRQcm9wcykge1xuICAgICAgICAgICAgICAgIGlmIChwcm9wIGluIGF0dHJzKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBtZXJnZWQgPSBhc3NpZ24oe30sIG1lcmdlZFByb3BzW3Byb3BdKTtcbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0W3Byb3BdID0gYXNzaWduKG1lcmdlZCwgYXR0cnNbcHJvcF0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBhZGRTdGF0aWNNaXhpbihtaXhpbikge1xuICAgICAgICB0aGlzLnN0YXRpY01peGlucy5wdXNoKG1peGluKTtcbiAgICB9XG4gICAgYWRkTWl4aW4obWl4aW4pIHtcbiAgICAgICAgdGhpcy5taXhpbnMucHVzaChtaXhpbik7XG4gICAgfVxuICAgIGdldFN0YXRpY01peGlucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGljTWl4aW5zO1xuICAgIH1cbiAgICBnZXRNaXhpbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1peGlucztcbiAgICB9XG4gICAgYWRkQXBwbGllZE1peGluKG1peGluKSB7XG4gICAgICAgIHRoaXMuYXBwbGllZE1peGlucy5wdXNoKG1peGluKTtcbiAgICB9XG4gICAgaGFzQXBwbGllZE1peGluKG1peGluKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwcGxpZWRNaXhpbnMuaW5kZXhPZihtaXhpbikgIT09IC0xO1xuICAgIH1cbiAgICBnZXRBcHBsaWVkTWl4aW5zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcHBsaWVkTWl4aW5zO1xuICAgIH1cbiAgICBoYXNTdGF0aWNNaXhpbihtaXhpbikge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0aWNNaXhpbnMuaW5kZXhPZihtaXhpbikgIT09IC0xO1xuICAgIH1cbiAgICBzdGF0aWMgYXBwbHlBbGxNaXhpbnMoU3ViY2xhc3MsIFBhcmVudCkge1xuICAgICAgICBTdWJjbGFzc1tDTEFTU19NRVRBXS5nZXRNaXhpbnMoKS5mb3JFYWNoKG0gPT4gbS5leHRlbmRQcm90b3R5cGVPbnRvKFN1YmNsYXNzLCBQYXJlbnQpKTtcbiAgICAgICAgU3ViY2xhc3NbQ0xBU1NfTUVUQV0uZ2V0U3RhdGljTWl4aW5zKCkuZm9yRWFjaChtID0+IG0uZXh0ZW5kU3RhdGljKFN1YmNsYXNzKSk7XG4gICAgICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLnNlYWwoKTtcbiAgICB9XG4gICAgYWRkU3ViY2xhc3MoY29uc3RydWN0b3IpIHtcbiAgICAgICAgdGhpcy5zdWJjbGFzc2VzLnB1c2goY29uc3RydWN0b3IpO1xuICAgIH1cbiAgICBnZXRTdWJjbGFzc2VzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdWJjbGFzc2VzO1xuICAgIH1cbiAgICBhZGRQcm9wZXJ0eU1ldGFkYXRhKHByb3BlcnR5LCB2YWx1ZSkge1xuICAgICAgICB0aGlzLnByb3BlcnR5TWV0YWRhdGFbcHJvcGVydHldID0gdmFsdWU7XG4gICAgfVxuICAgIG1ldGFkYXRhRm9yUHJvcGVydHkocHJvcGVydHkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvcGVydHlNZXRhZGF0YVtwcm9wZXJ0eV07XG4gICAgfVxuICAgIGFkZFJlZmVyZW5jZVR5cGVGb3IocHJvcGVydHksIHR5cGUpIHtcbiAgICAgICAgdGhpcy5yZWZlcmVuY2VUeXBlc1twcm9wZXJ0eV0gPSB0eXBlO1xuICAgIH1cbiAgICBhZGRTbG90Rm9yKHByb3BlcnR5KSB7XG4gICAgICAgIHRoaXMuc2xvdHMucHVzaChwcm9wZXJ0eSk7XG4gICAgfVxuICAgIGhhc0NvbmNhdGVuYXRlZFByb3BlcnR5KHByb3BlcnR5KSB7XG4gICAgICAgIGlmICghdGhpcy5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJldHVybiBwcm9wZXJ0eSBpbiB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXM7XG4gICAgfVxuICAgIGdldENvbmNhdGVuYXRlZFByb3BlcnR5KHByb3BlcnR5KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcGVydHldO1xuICAgIH1cbiAgICBnZXRDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKCkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKTtcbiAgICB9XG4gICAgYWRkQ29uY2F0ZW5hdGVkUHJvcGVydHkocHJvcGVydHksIHZhbHVlKSB7XG4gICAgICAgIHRoaXMuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IHRydWU7XG4gICAgICAgIGlmIChwcm9wZXJ0eSBpbiB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIGxldCB2YWwgPSB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcGVydHldLmNvbmNhdCh2YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcGVydHldID0gdmFsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGhhc01lcmdlZFByb3BlcnR5KHByb3BlcnR5KSB7XG4gICAgICAgIGlmICghdGhpcy5oYXNNZXJnZWRQcm9wZXJ0aWVzKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJldHVybiBwcm9wZXJ0eSBpbiB0aGlzLm1lcmdlZFByb3BlcnRpZXM7XG4gICAgfVxuICAgIGdldE1lcmdlZFByb3BlcnR5KHByb3BlcnR5KSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1lcmdlZFByb3BlcnRpZXNbcHJvcGVydHldO1xuICAgIH1cbiAgICBnZXRNZXJnZWRQcm9wZXJ0aWVzKCkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5tZXJnZWRQcm9wZXJ0aWVzKTtcbiAgICB9XG4gICAgYWRkTWVyZ2VkUHJvcGVydHkocHJvcGVydHksIHZhbHVlKSB7XG4gICAgICAgIHRoaXMuaGFzTWVyZ2VkUHJvcGVydGllcyA9IHRydWU7XG4gICAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBZb3UgcGFzc2VkIGluIFxcYCR7SlNPTi5zdHJpbmdpZnkodmFsdWUpfVxcYCBhcyB0aGUgdmFsdWUgZm9yIFxcYGZvb1xcYCBidXQgXFxgZm9vXFxgIGNhbm5vdCBiZSBhbiBBcnJheWApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcm9wZXJ0eSBpbiB0aGlzLm1lcmdlZFByb3BlcnRpZXMgJiYgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XSAmJiB2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XSA9IG1lcmdlTWVyZ2VkUHJvcGVydGllcyh2YWx1ZSwgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlID09PSBudWxsID8gdmFsdWUgOiB2YWx1ZSB8fCB7fTtcbiAgICAgICAgICAgIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXRSZWZlcmVuY2VUeXBlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlVHlwZXM7XG4gICAgfVxuICAgIGdldFByb3BlcnR5TWV0YWRhdGEoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3BlcnR5TWV0YWRhdGE7XG4gICAgfVxuICAgIHJlc2V0KHBhcmVudCkge1xuICAgICAgICB0aGlzLnJlZmVyZW5jZVR5cGVzID0gZGljdCgpO1xuICAgICAgICB0aGlzLnByb3BlcnR5TWV0YWRhdGEgPSBkaWN0KCk7XG4gICAgICAgIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IGRpY3QoKTtcbiAgICAgICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzID0gZGljdCgpO1xuICAgICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgICAgICB0aGlzLmhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSBwYXJlbnQuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcztcbiAgICAgICAgICAgIGZvciAobGV0IHByb3AgaW4gcGFyZW50LmNvbmNhdGVuYXRlZFByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcF0gPSBwYXJlbnQuY29uY2F0ZW5hdGVkUHJvcGVydGllc1twcm9wXS5zbGljZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5oYXNNZXJnZWRQcm9wZXJ0aWVzID0gcGFyZW50Lmhhc01lcmdlZFByb3BlcnRpZXM7XG4gICAgICAgICAgICBmb3IgKGxldCBwcm9wIGluIHBhcmVudC5tZXJnZWRQcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BdID0gYXNzaWduKHt9LCBwYXJlbnQubWVyZ2VkUHJvcGVydGllc1twcm9wXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhc3NpZ24odGhpcy5yZWZlcmVuY2VUeXBlcywgcGFyZW50LnJlZmVyZW5jZVR5cGVzKTtcbiAgICAgICAgICAgIGFzc2lnbih0aGlzLnByb3BlcnR5TWV0YWRhdGEsIHBhcmVudC5wcm9wZXJ0eU1ldGFkYXRhKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXNlYWwob2JqKSB7XG4gICAgICAgIGxldCBtZXRhID0gTWV0YS5mb3Iob2JqKTtcbiAgICAgICAgbGV0IGZyZXNoID0gbmV3IHRoaXMuSW5zdGFuY2VNZXRhQ29uc3RydWN0b3Iob2JqLCB7fSk7XG4gICAgICAgIGxldCByZWZlcmVuY2VUeXBlcyA9IG1ldGEuZ2V0UmVmZXJlbmNlVHlwZXMoKTtcbiAgICAgICAgbGV0IHNsb3RzID0gbWV0YS5nZXRTbG90cygpO1xuICAgICAgICB0dXJib2NoYXJnZShhc3NpZ24ocmVmZXJlbmNlVHlwZXMsIHRoaXMucmVmZXJlbmNlVHlwZXMpKTtcbiAgICAgICAgdHVyYm9jaGFyZ2UoYXNzaWduKHNsb3RzLCBmcmVzaC5nZXRTbG90cygpKSk7XG4gICAgfVxuICAgIHNlYWwoKSB7XG4gICAgICAgIGxldCByZWZlcmVuY2VUeXBlcyA9IHR1cmJvY2hhcmdlKGFzc2lnbih7fSwgdGhpcy5yZWZlcmVuY2VUeXBlcykpO1xuICAgICAgICB0dXJib2NoYXJnZSh0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMpO1xuICAgICAgICB0dXJib2NoYXJnZSh0aGlzLm1lcmdlZFByb3BlcnRpZXMpO1xuICAgICAgICBpZiAoIXRoaXMuaGFzTWVyZ2VkUHJvcGVydGllcyAmJiAhdGhpcy5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICB0aGlzLmluaXQgPSBmdW5jdGlvbiAoKSB7fTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgc2xvdHMgPSB0aGlzLnNsb3RzO1xuICAgICAgICBjbGFzcyBTbG90cyB7XG4gICAgICAgICAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgICAgICAgICBzbG90cy5mb3JFYWNoKG5hbWUgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzW25hbWVdID0gRU1QVFlfQ0FDSEU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5JbnN0YW5jZU1ldGFDb25zdHJ1Y3RvciA9IGNsYXNzIGV4dGVuZHMgU2VhbGVkTWV0YSB7XG4gICAgICAgICAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2xvdHMgPSBuZXcgU2xvdHMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlZmVyZW5jZVR5cGVzID0gcmVmZXJlbmNlVHlwZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBnZXRSZWZlcmVuY2VUeXBlcygpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2VUeXBlcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlZmVyZW5jZVR5cGVGb3IocHJvcGVydHkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2VUeXBlc1twcm9wZXJ0eV0gfHwgUHJvcGVydHlSZWZlcmVuY2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBnZXRTbG90cygpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zbG90cztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdHVyYm9jaGFyZ2UodGhpcyk7XG4gICAgfVxufVxuZnVuY3Rpb24gbWVyZ2VNZXJnZWRQcm9wZXJ0aWVzKGF0dHJzLCBwYXJlbnQpIHtcbiAgICBsZXQgbWVyZ2VkID0gYXNzaWduKHt9LCBwYXJlbnQpO1xuICAgIGZvciAobGV0IHByb3AgaW4gYXR0cnMpIHtcbiAgICAgICAgaWYgKHByb3AgaW4gcGFyZW50ICYmIHR5cGVvZiBwYXJlbnRbcHJvcF0gPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGF0dHJzW3Byb3BdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBsZXQgd3JhcHBlZCA9IHdyYXBNZXRob2QocGFyZW50LCBwcm9wLCBhdHRyc1twcm9wXSk7XG4gICAgICAgICAgICBtZXJnZWRbcHJvcF0gPSB3cmFwcGVkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbWVyZ2VkW3Byb3BdID0gYXR0cnNbcHJvcF07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1lcmdlZDtcbn1cbmV4cG9ydCBjbGFzcyBJbnN0YW5jZU1ldGEgZXh0ZW5kcyBDbGFzc01ldGEge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzW1wiZGY4YmU0YzgtNGU4OS00NGUyLWE4ZjktNTUwYzhkYWNkY2E3XCJdID0gQ2xhc3NNZXRhLmZyb21QYXJlbnQobnVsbCk7XG4gICAgfVxuICAgIHN0YXRpYyBmcm9tUGFyZW50KHBhcmVudCkge1xuICAgICAgICByZXR1cm4gc3VwZXIuZnJvbVBhcmVudChwYXJlbnQpO1xuICAgIH1cbiAgICByZXNldChwYXJlbnQpIHtcbiAgICAgICAgc3VwZXIucmVzZXQocGFyZW50KTtcbiAgICAgICAgaWYgKHBhcmVudCkgdGhpc1tDTEFTU19NRVRBXS5yZXNldChwYXJlbnRbQ0xBU1NfTUVUQV0pO1xuICAgIH1cbiAgICBzZWFsKCkge1xuICAgICAgICBzdXBlci5zZWFsKCk7XG4gICAgICAgIHRoaXNbQ0xBU1NfTUVUQV0uc2VhbCgpO1xuICAgIH1cbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdsaW1tZXJPYmplY3Qge1xuICAgIGNvbnN0cnVjdG9yKGF0dHJzKSB7XG4gICAgICAgIHRoaXMuX3N1cGVyID0gUk9PVDtcbiAgICAgICAgdGhpcy5fbWV0YSA9IG51bGw7XG4gICAgICAgIGlmIChhdHRycykgYXNzaWduKHRoaXMsIGF0dHJzKTtcbiAgICAgICAgdGhpcy5jb25zdHJ1Y3RvcltDTEFTU19NRVRBXS5pbml0KHRoaXMsIGF0dHJzIHx8IG51bGwpO1xuICAgICAgICB0aGlzLl9zdXBlciA9IFJPT1Q7XG4gICAgICAgIGluaXRpYWxpemVHdWlkKHRoaXMpO1xuICAgICAgICB0aGlzLmluaXQoKTtcbiAgICB9XG4gICAgc3RhdGljIGV4dGVuZCguLi5leHRlbnNpb25zKSB7XG4gICAgICAgIHJldHVybiBleHRlbmRDbGFzcyh0aGlzLCAuLi5leHRlbnNpb25zKTtcbiAgICB9XG4gICAgc3RhdGljIGNyZWF0ZShhdHRycykge1xuICAgICAgICByZXR1cm4gbmV3IHRoaXMoYXR0cnMpO1xuICAgIH1cbiAgICBzdGF0aWMgcmVvcGVuKGV4dGVuc2lvbnMpIHtcbiAgICAgICAgdG9NaXhpbihleHRlbnNpb25zKS5leHRlbmRQcm90b3R5cGUodGhpcyk7XG4gICAgICAgIHRoaXNbQ0xBU1NfTUVUQV0uc2VhbCgpO1xuICAgICAgICByZWxpbmtTdWJjbGFzc2VzKHRoaXMpO1xuICAgIH1cbiAgICBzdGF0aWMgcmVvcGVuQ2xhc3MoZXh0ZW5zaW9ucykge1xuICAgICAgICB0b01peGluKGV4dGVuc2lvbnMpLmV4dGVuZFN0YXRpYyh0aGlzKTtcbiAgICAgICAgdGhpc1tDTEFTU19NRVRBXS5zZWFsKCk7XG4gICAgfVxuICAgIHN0YXRpYyBtZXRhRm9yUHJvcGVydHkocHJvcGVydHkpIHtcbiAgICAgICAgbGV0IHZhbHVlID0gdGhpc1tDTEFTU19NRVRBXS5tZXRhZGF0YUZvclByb3BlcnR5KHByb3BlcnR5KTtcbiAgICAgICAgaWYgKCF2YWx1ZSkgdGhyb3cgbmV3IEVycm9yKGBtZXRhRm9yUHJvcGVydHkoKSBjb3VsZCBub3QgZmluZCBhIGNvbXB1dGVkIHByb3BlcnR5IHdpdGgga2V5ICcke3Byb3BlcnR5fScuYCk7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgc3RhdGljIGVhY2hDb21wdXRlZFByb3BlcnR5KGNhbGxiYWNrKSB7XG4gICAgICAgIGxldCBtZXRhZGF0YSA9IHRoaXNbQ0xBU1NfTUVUQV0uZ2V0UHJvcGVydHlNZXRhZGF0YSgpO1xuICAgICAgICBpZiAoIW1ldGFkYXRhKSByZXR1cm47XG4gICAgICAgIGZvciAobGV0IHByb3AgaW4gbWV0YWRhdGEpIHtcbiAgICAgICAgICAgIGNhbGxiYWNrKHByb3AsIG1ldGFkYXRhW3Byb3BdKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpbml0KCkge31cbiAgICBnZXQoa2V5KSB7XG4gICAgICAgIHJldHVybiB0aGlzW2tleV07XG4gICAgfVxuICAgIHNldChrZXksIHZhbHVlKSB7XG4gICAgICAgIHRoaXNba2V5XSA9IHZhbHVlO1xuICAgIH1cbiAgICBzZXRQcm9wZXJ0aWVzKGF0dHJzKSB7XG4gICAgICAgIGFzc2lnbih0aGlzLCBhdHRycyk7XG4gICAgfVxuICAgIGRlc3Ryb3koKSB7fVxufVxuR2xpbW1lck9iamVjdFtcImRmOGJlNGM4LTRlODktNDRlMi1hOGY5LTU1MGM4ZGFjZGNhN1wiXSA9IEluc3RhbmNlTWV0YS5mcm9tUGFyZW50KG51bGwpO1xuR2xpbW1lck9iamVjdC5pc0NsYXNzID0gdHJ1ZTsiXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvQGdsaW1tZXIvb2JqZWN0L2xpYi9vYmplY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxBQUFPLEFBQ0wsQUFBSSxBQUVKLEFBQWlCLEFBQ2xCLEFBQU0sQUFBMkIsQUFBQzs7QUFDbkMsQUFBTyxBQUFRLEFBQUksQUFBRSxBQUFNLEFBQUUsQUFBYyxBQUFFLEFBQU0sQUFBZSxBQUFDOztBQUNuRSxBQUFPLEFBRUwsQUFBTSxBQUFJLEFBQVcsQUFDckIsQUFBTyxBQUNQLEFBQWdCLEFBQ2hCLEFBQVUsQUFDWCxBQUFNLEFBQVMsQUFBQzs7QUFJakIsQUFBTyxBQUFFLEFBQUksQUFBRSxBQUFNLEFBQVMsQUFBQyxBQUcvQixBQUFNOztBQUxOLE1BQU0sRUFBRSxBQUFPLEFBQUUsWUFBRyxBQUFLLEFBQUM7QUFLbkIsTUFBTSxBQUFXLG9DQUFHLHVCQUF3QixBQUFDLEFBQUM7QUFFckQsTUFBTSxBQUFVLGFBQUcsQUFBc0MsQUFBQyxBQXdCMUQsQUFBTTtxQkFBeUIsQUFBTSxLQUNuQyxBQUFzQjtBQUN0QixBQUF5QjtBQUN6QixBQUFNO1dBQUMsQUFBRyxBQUFDLEFBQ2IsQUFBQzs7QUFFRCxNQUEwQixBQUFRLEFBQUk7d0JBQ2hCLEdBQUcsQUFBWSxPQUNqQztjQUFNLElBQUksQUFBSyxNQUFDLEFBQWdELEFBQUMsQUFBQyxBQUNwRSxBQUFDLEFBQ0Y7QUFFRCxBQUFNO0FBTEosQUFBbUI7O2tCQU1YO2FBQWMsaUJBQUcsQUFBSSxBQUE4QixBQUFDLEFBQ3BEO2FBQWdCLG1CQUFHLEFBQUksQUFBTyxBQUFDLEFBQy9CO2FBQXNCLHlCQUFHLEFBQUksQUFBUyxBQUFDLEFBQ3ZDO2FBQXlCLDRCQUFHLEFBQUssQUFBQyxBQUNsQzthQUFnQixtQkFBRyxBQUFJLEFBQVUsQUFBQyxBQUNsQzthQUFtQixzQkFBRyxBQUFLLEFBQUMs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USxXQUFHLEFBQUksS0FBQyxBQUFVLEFBQUMsWUFBQyxBQUFtQixBQUFFLEFBQUMsQUFDdEQsQUFBRSxBQUFDO1lBQUMsQ0FBQyxBQUFRLEFBQUMsVUFBQyxBQUFNLEFBQUMsQUFFdEIsQUFBRyxBQUFDO2FBQUMsSUFBSSxBQUFJLFFBQUksQUFBUSxBQUFDLFVBQUMsQUFBQyxBQUMxQixBQUFRO3FCQUFDLEFBQUksTUFBRSxBQUFRLFNBQUMsQUFBSSxBQUFDLEFBQUMsQUFBQyxBQUNqQyxBQUFDLEFBQ0g7QUFBQztBQU1ELEFBQUk7V0FBSSxBQUFDLENBVVQsQUFBRztRQUFDLEFBQVcsS0FDYixBQUFNO2VBQUMsQUFBSSxLQUFDLEFBQUcsQUFBQyxBQUFDLEFBQ25CLEFBQUM7QUFFRCxBQUFHO1FBQUMsQUFBVyxLQUFFLEFBQVUsT0FDekIsQUFBSTthQUFDLEFBQUcsQUFBQyxPQUFHLEFBQUssQUFBQyxBQUNwQixBQUFDO0FBRUQsQUFBYTtrQkFBQyxBQUFhLE9BQ3pCLEFBQU07MEJBQUMsQUFBSSxNQUFFLEFBQUssQUFBQyxBQUFDLEFBQ3RCLEFBQUM7QUFFRCxBQUFPO2NBQUksQUFBQztBQXBCWjs7QUFoRE8sY0FBc0MsMENBQWlCLEFBQVksYUFBQyxBQUFVLFdBQUMsQUFBSSxBQUFDLEFBQUM7QUFDckYsY0FBTyxVQUFHLEFBQUksQUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIE1ldGEsXG4gIElubmVyUmVmZXJlbmNlRmFjdG9yeSxcbiAgUHJvcGVydHlSZWZlcmVuY2Vcbn0gZnJvbSAnQGdsaW1tZXIvb2JqZWN0LXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBEaWN0LCBkaWN0LCBhc3NpZ24sIGluaXRpYWxpemVHdWlkIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQge1xuICBNaXhpbixcbiAgZXh0ZW5kIGFzIGV4dGVuZENsYXNzLFxuICB0b01peGluLFxuICByZWxpbmtTdWJjbGFzc2VzLFxuICB3cmFwTWV0aG9kXG59IGZyb20gJy4vbWl4aW4nO1xuXG5jb25zdCB7IGlzQXJyYXkgfSA9IEFycmF5O1xuXG5pbXBvcnQgeyBST09UIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBPcHRpb24gfSBmcm9tIFwiQGdsaW1tZXIvaW50ZXJmYWNlc1wiO1xuXG5leHBvcnQgY29uc3QgRU1QVFlfQ0FDSEUgPSBmdW5jdGlvbiBFTVBUWV9DQUNIRSgpIHt9O1xuXG5jb25zdCBDTEFTU19NRVRBID0gXCJkZjhiZTRjOC00ZTg5LTQ0ZTItYThmOS01NTBjOGRhY2RjYTdcIjtcblxuZXhwb3J0IGludGVyZmFjZSBPYmplY3RXaXRoTWl4aW5zIHtcbiAgXCJkZjhiZTRjOC00ZTg5LTQ0ZTItYThmOS01NTBjOGRhY2RjYTdcIjogQ2xhc3NNZXRhO1xuICBfbWV0YTogTWV0YTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnN0YW5jZVdpdGhNaXhpbnMge1xuICBjb25zdHJ1Y3RvcjogT2JqZWN0V2l0aE1peGlucztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHbGltbWVyT2JqZWN0RmFjdG9yeTxUPiB7XG4gIG5ldzxVPihhdHRycz86IFUpOiBHbGltbWVyT2JqZWN0ICYgVCAmIFU7XG4gIGV4dGVuZCgpOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxPYmplY3Q+O1xuICBleHRlbmQ8VD4oZXh0ZW5zaW9uOiBUKTogR2xpbW1lck9iamVjdEZhY3Rvcnk8VD47XG4gIGV4dGVuZCguLi5leHRlbnNpb25zOiBPYmplY3RbXSk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PE9iamVjdD47XG4gIGNyZWF0ZTxVPihhdHRycz86IFUpOiBHbGltbWVyT2JqZWN0ICYgVCAmIFU7XG4gIHJlb3BlbjxVPihleHRlbnNpb25zOiBVKTogdm9pZDtcbiAgcmVvcGVuQ2xhc3M8VT4oZXh0ZW5zaW9uczogVSk6IHZvaWQ7XG4gIG1ldGFGb3JQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nKTogT2JqZWN0O1xuICBlYWNoQ29tcHV0ZWRQcm9wZXJ0eShjYWxsYmFjazogKHM6IHN0cmluZywgbzogT2JqZWN0KSA9PiB2b2lkKTogdm9pZDtcbiAgXCJkZjhiZTRjOC00ZTg5LTQ0ZTItYThmOS01NTBjOGRhY2RjYTdcIjogSW5zdGFuY2VNZXRhO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHVyYm9jaGFyZ2U8VD4ob2JqOiBUKTogVCB7XG4gIC8vIGZ1bmN0aW9uIER1bW15KCkge31cbiAgLy8gRHVtbXkucHJvdG90eXBlID0gb2JqO1xuICByZXR1cm4gb2JqO1xufVxuXG5hYnN0cmFjdCBjbGFzcyBTZWFsZWRNZXRhIGV4dGVuZHMgTWV0YSB7XG4gIGFkZFJlZmVyZW5jZVR5cGVGb3IoLi4uX2FyZ3M6IGFueVtdKTogSW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4ge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBtb2RpZnkgcmVmZXJlbmNlIHR5cGVzIG9uIGEgc2VhbGVkIG1ldGFcIik7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENsYXNzTWV0YSB7XG4gIHByaXZhdGUgcmVmZXJlbmNlVHlwZXMgPSBkaWN0PElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+PigpO1xuICBwcml2YXRlIHByb3BlcnR5TWV0YWRhdGEgPSBkaWN0PGFueT4oKTtcbiAgcHJpdmF0ZSBjb25jYXRlbmF0ZWRQcm9wZXJ0aWVzID0gZGljdDxhbnlbXT4oKTtcbiAgcHJpdmF0ZSBoYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzID0gZmFsc2U7XG4gIHByaXZhdGUgbWVyZ2VkUHJvcGVydGllcyA9IGRpY3Q8T2JqZWN0PigpO1xuICBwcml2YXRlIGhhc01lcmdlZFByb3BlcnRpZXMgPSBmYWxzZTtcbiAgcHJpdmF0ZSBtaXhpbnM6IE1peGluW10gPSBbXTtcbiAgcHJpdmF0ZSBhcHBsaWVkTWl4aW5zOiBNaXhpbltdID0gW107XG4gIHByaXZhdGUgc3RhdGljTWl4aW5zOiBNaXhpbltdID0gW107XG4gIHByaXZhdGUgc3ViY2xhc3NlczogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PltdID0gW107XG4gIHByaXZhdGUgc2xvdHM6IHN0cmluZ1tdID0gW107XG4gIHB1YmxpYyBJbnN0YW5jZU1ldGFDb25zdHJ1Y3RvcjogT3B0aW9uPHR5cGVvZiBNZXRhPiA9IG51bGw7XG5cbiAgc3RhdGljIGZyb21QYXJlbnQocGFyZW50OiBPcHRpb248Q2xhc3NNZXRhPikge1xuICAgIGxldCBtZXRhID0gbmV3IHRoaXMoKTtcbiAgICBtZXRhLnJlc2V0KHBhcmVudCk7XG4gICAgcmV0dXJuIG1ldGE7XG4gIH1cblxuICBzdGF0aWMgZm9yKG9iamVjdDogT2JqZWN0V2l0aE1peGlucyB8IEluc3RhbmNlV2l0aE1peGlucyk6IE9wdGlvbjxDbGFzc01ldGE+IHtcbiAgICBpZiAoQ0xBU1NfTUVUQSBpbiBvYmplY3QpIHJldHVybiAoPE9iamVjdFdpdGhNaXhpbnM+b2JqZWN0KVtDTEFTU19NRVRBXTtcbiAgICBlbHNlIGlmIChvYmplY3QuY29uc3RydWN0b3IpIHJldHVybiAoPEluc3RhbmNlV2l0aE1peGlucz5vYmplY3QpLmNvbnN0cnVjdG9yW0NMQVNTX01FVEFdIHx8IG51bGw7XG4gICAgZWxzZSByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGluaXQob2JqZWN0OiBHbGltbWVyT2JqZWN0LCBhdHRyczogT3B0aW9uPE9iamVjdD4pIHtcbiAgICBpZiAodHlwZW9mIGF0dHJzICE9PSAnb2JqZWN0JyB8fCBhdHRycyA9PT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgaWYgKHRoaXMuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcykge1xuICAgICAgbGV0IGNvbmNhdFByb3BzID0gdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzO1xuICAgICAgZm9yIChsZXQgcHJvcCBpbiBjb25jYXRQcm9wcykge1xuICAgICAgICBpZiAocHJvcCBpbiBhdHRycykge1xuICAgICAgICAgIGxldCBjb25jYXQgPSBjb25jYXRQcm9wc1twcm9wXS5zbGljZSgpO1xuICAgICAgICAgIG9iamVjdFtwcm9wXSA9IGNvbmNhdC5jb25jYXQoYXR0cnNbcHJvcF0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaGFzTWVyZ2VkUHJvcGVydGllcykge1xuICAgICAgbGV0IG1lcmdlZFByb3BzID0gdGhpcy5tZXJnZWRQcm9wZXJ0aWVzO1xuICAgICAgZm9yIChsZXQgcHJvcCBpbiBtZXJnZWRQcm9wcykge1xuICAgICAgICBpZiAocHJvcCBpbiBhdHRycykge1xuICAgICAgICAgIGxldCBtZXJnZWQgPSBhc3NpZ24oe30sIG1lcmdlZFByb3BzW3Byb3BdKTtcbiAgICAgICAgICBvYmplY3RbcHJvcF0gPSBhc3NpZ24obWVyZ2VkLCBhdHRyc1twcm9wXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhZGRTdGF0aWNNaXhpbihtaXhpbjogTWl4aW4pIHtcbiAgICB0aGlzLnN0YXRpY01peGlucy5wdXNoKG1peGluKTtcbiAgfVxuXG4gIGFkZE1peGluKG1peGluOiBNaXhpbikge1xuICAgIHRoaXMubWl4aW5zLnB1c2gobWl4aW4pO1xuICB9XG5cbiAgZ2V0U3RhdGljTWl4aW5zKCk6IE1peGluW10ge1xuICAgIHJldHVybiB0aGlzLnN0YXRpY01peGlucztcbiAgfVxuXG4gIGdldE1peGlucygpOiBNaXhpbltdIHtcbiAgICByZXR1cm4gdGhpcy5taXhpbnM7XG4gIH1cblxuICBhZGRBcHBsaWVkTWl4aW4obWl4aW46IE1peGluKSB7XG4gICAgdGhpcy5hcHBsaWVkTWl4aW5zLnB1c2gobWl4aW4pO1xuICB9XG5cbiAgaGFzQXBwbGllZE1peGluKG1peGluOiBNaXhpbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFwcGxpZWRNaXhpbnMuaW5kZXhPZihtaXhpbikgIT09IC0xO1xuICB9XG5cbiAgZ2V0QXBwbGllZE1peGlucygpOiBNaXhpbltdIHtcbiAgICByZXR1cm4gdGhpcy5hcHBsaWVkTWl4aW5zO1xuICB9XG5cbiAgaGFzU3RhdGljTWl4aW4obWl4aW46IE1peGluKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGljTWl4aW5zLmluZGV4T2YobWl4aW4pICE9PSAtMTtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUFsbE1peGlucyhTdWJjbGFzczogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PiwgUGFyZW50OiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+KSB7XG4gICAgU3ViY2xhc3NbQ0xBU1NfTUVUQV0uZ2V0TWl4aW5zKCkuZm9yRWFjaCgobTogTWl4aW4pID0+IG0uZXh0ZW5kUHJvdG90eXBlT250byhTdWJjbGFzcywgUGFyZW50KSk7XG4gICAgU3ViY2xhc3NbQ0xBU1NfTUVUQV0uZ2V0U3RhdGljTWl4aW5zKCkuZm9yRWFjaCgobTogTWl4aW4pID0+IG0uZXh0ZW5kU3RhdGljKFN1YmNsYXNzKSk7XG4gICAgU3ViY2xhc3NbQ0xBU1NfTUVUQV0uc2VhbCgpO1xuICB9XG5cbiAgYWRkU3ViY2xhc3MoY29uc3RydWN0b3I6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pIHtcbiAgICB0aGlzLnN1YmNsYXNzZXMucHVzaChjb25zdHJ1Y3Rvcik7XG4gIH1cblxuICBnZXRTdWJjbGFzc2VzKCk6IEZ1bmN0aW9uW10ge1xuICAgIHJldHVybiB0aGlzLnN1YmNsYXNzZXM7XG4gIH1cblxuICBhZGRQcm9wZXJ0eU1ldGFkYXRhKHByb3BlcnR5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLnByb3BlcnR5TWV0YWRhdGFbcHJvcGVydHldID0gdmFsdWU7XG4gIH1cblxuICBtZXRhZGF0YUZvclByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBPYmplY3Qge1xuICAgIHJldHVybiB0aGlzLnByb3BlcnR5TWV0YWRhdGFbcHJvcGVydHldO1xuICB9XG5cbiAgYWRkUmVmZXJlbmNlVHlwZUZvcihwcm9wZXJ0eTogc3RyaW5nLCB0eXBlOiBJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55Pikge1xuICAgIHRoaXMucmVmZXJlbmNlVHlwZXNbcHJvcGVydHldID0gdHlwZTtcbiAgfVxuXG4gIGFkZFNsb3RGb3IocHJvcGVydHk6IHN0cmluZykge1xuICAgIHRoaXMuc2xvdHMucHVzaChwcm9wZXJ0eSk7XG4gIH1cblxuICBoYXNDb25jYXRlbmF0ZWRQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXMpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gPHN0cmluZz5wcm9wZXJ0eSBpbiB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXM7XG4gIH1cblxuICBnZXRDb25jYXRlbmF0ZWRQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcGVydHldO1xuICB9XG5cbiAgZ2V0Q29uY2F0ZW5hdGVkUHJvcGVydGllcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIDxzdHJpbmdbXT5PYmplY3Qua2V5cyh0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMpO1xuICB9XG5cbiAgYWRkQ29uY2F0ZW5hdGVkUHJvcGVydHkocHJvcGVydHk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIHRoaXMuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IHRydWU7XG5cbiAgICBpZiAoPHN0cmluZz5wcm9wZXJ0eSBpbiB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMpIHtcbiAgICAgIGxldCB2YWwgPSB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcGVydHldLmNvbmNhdCh2YWx1ZSk7XG4gICAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcGVydHldID0gdmFsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcGVydHldID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgaGFzTWVyZ2VkUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5oYXNNZXJnZWRQcm9wZXJ0aWVzKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIDxzdHJpbmc+cHJvcGVydHkgaW4gdGhpcy5tZXJnZWRQcm9wZXJ0aWVzO1xuICB9XG5cbiAgZ2V0TWVyZ2VkUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IE9iamVjdCB7XG4gICAgcmV0dXJuIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wZXJ0eV07XG4gIH1cblxuICBnZXRNZXJnZWRQcm9wZXJ0aWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gPHN0cmluZ1tdPk9iamVjdC5rZXlzKHRoaXMubWVyZ2VkUHJvcGVydGllcyk7XG4gIH1cblxuICBhZGRNZXJnZWRQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nLCB2YWx1ZTogT2JqZWN0KSB7XG4gICAgdGhpcy5oYXNNZXJnZWRQcm9wZXJ0aWVzID0gdHJ1ZTtcblxuICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBZb3UgcGFzc2VkIGluIFxcYCR7SlNPTi5zdHJpbmdpZnkodmFsdWUpfVxcYCBhcyB0aGUgdmFsdWUgZm9yIFxcYGZvb1xcYCBidXQgXFxgZm9vXFxgIGNhbm5vdCBiZSBhbiBBcnJheWApO1xuICAgIH1cblxuICAgIGlmICg8c3RyaW5nPnByb3BlcnR5IGluIHRoaXMubWVyZ2VkUHJvcGVydGllcyAmJiB0aGlzLm1lcmdlZFByb3BlcnRpZXNbcHJvcGVydHldICYmIHZhbHVlKSB7XG4gICAgICB0aGlzLm1lcmdlZFByb3BlcnRpZXNbcHJvcGVydHldID0gbWVyZ2VNZXJnZWRQcm9wZXJ0aWVzKHZhbHVlLCB0aGlzLm1lcmdlZFByb3BlcnRpZXNbcHJvcGVydHldKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgPSB2YWx1ZSA9PT0gbnVsbCA/IHZhbHVlIDogdmFsdWUgfHwge307XG4gICAgICB0aGlzLm1lcmdlZFByb3BlcnRpZXNbcHJvcGVydHldID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgZ2V0UmVmZXJlbmNlVHlwZXMoKTogRGljdDxJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55Pj4ge1xuICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZVR5cGVzO1xuICB9XG5cbiAgZ2V0UHJvcGVydHlNZXRhZGF0YSgpOiBEaWN0PGFueT4ge1xuICAgIHJldHVybiB0aGlzLnByb3BlcnR5TWV0YWRhdGE7XG4gIH1cblxuICByZXNldChwYXJlbnQ6IE9wdGlvbjxDbGFzc01ldGE+KSB7XG4gICAgdGhpcy5yZWZlcmVuY2VUeXBlcyA9IGRpY3Q8SW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4+KCk7XG4gICAgdGhpcy5wcm9wZXJ0eU1ldGFkYXRhID0gZGljdCgpO1xuICAgIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IGRpY3Q8YW55W10+KCk7XG4gICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzID0gZGljdDxPYmplY3Q+KCk7XG5cbiAgICBpZiAocGFyZW50KSB7XG4gICAgICB0aGlzLmhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSBwYXJlbnQuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcztcbiAgICAgIGZvciAobGV0IHByb3AgaW4gcGFyZW50LmNvbmNhdGVuYXRlZFByb3BlcnRpZXMpIHtcbiAgICAgICAgdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzW3Byb3BdID0gcGFyZW50LmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcF0uc2xpY2UoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5oYXNNZXJnZWRQcm9wZXJ0aWVzID0gcGFyZW50Lmhhc01lcmdlZFByb3BlcnRpZXM7XG4gICAgICBmb3IgKGxldCBwcm9wIGluIHBhcmVudC5tZXJnZWRQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wXSA9IGFzc2lnbih7fSwgcGFyZW50Lm1lcmdlZFByb3BlcnRpZXNbcHJvcF0pO1xuICAgICAgfVxuXG4gICAgICBhc3NpZ24odGhpcy5yZWZlcmVuY2VUeXBlcywgcGFyZW50LnJlZmVyZW5jZVR5cGVzKTtcbiAgICAgIGFzc2lnbih0aGlzLnByb3BlcnR5TWV0YWRhdGEsIHBhcmVudC5wcm9wZXJ0eU1ldGFkYXRhKTtcbiAgICB9XG4gIH1cblxuICByZXNlYWwob2JqOiBPYmplY3QpIHtcbiAgICBsZXQgbWV0YSA9IE1ldGEuZm9yKG9iaik7XG4gICAgbGV0IGZyZXNoID0gbmV3IHRoaXMuSW5zdGFuY2VNZXRhQ29uc3RydWN0b3IhKG9iaiwge30pO1xuICAgIGxldCByZWZlcmVuY2VUeXBlcyA9IG1ldGEuZ2V0UmVmZXJlbmNlVHlwZXMoKTtcbiAgICBsZXQgc2xvdHMgPSBtZXRhLmdldFNsb3RzKCk7XG5cbiAgICB0dXJib2NoYXJnZShhc3NpZ24ocmVmZXJlbmNlVHlwZXMsIHRoaXMucmVmZXJlbmNlVHlwZXMpKTtcbiAgICB0dXJib2NoYXJnZShhc3NpZ24oc2xvdHMsIGZyZXNoLmdldFNsb3RzKCkpKTtcbiAgfVxuXG4gIHNlYWwoKSB7XG4gICAgbGV0IHJlZmVyZW5jZVR5cGVzOiBEaWN0PElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+PiA9IHR1cmJvY2hhcmdlKGFzc2lnbih7fSwgdGhpcy5yZWZlcmVuY2VUeXBlcykpO1xuICAgIHR1cmJvY2hhcmdlKHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcyk7XG4gICAgdHVyYm9jaGFyZ2UodGhpcy5tZXJnZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmICghdGhpcy5oYXNNZXJnZWRQcm9wZXJ0aWVzICYmICF0aGlzLmhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXMpIHtcbiAgICAgIHRoaXMuaW5pdCA9IGZ1bmN0aW9uKCkge307XG4gICAgfVxuXG4gICAgbGV0IHNsb3RzID0gdGhpcy5zbG90cztcblxuICAgIGNsYXNzIFNsb3RzIHtcbiAgICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzbG90cy5mb3JFYWNoKG5hbWUgPT4ge1xuICAgICAgICAgIHRoaXNbbmFtZV0gPSBFTVBUWV9DQUNIRTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5JbnN0YW5jZU1ldGFDb25zdHJ1Y3RvciA9IGNsYXNzIGV4dGVuZHMgU2VhbGVkTWV0YSB7XG4gICAgICBwcm90ZWN0ZWQgc2xvdHM6IFNsb3RzID0gbmV3IFNsb3RzKCk7XG4gICAgICBwdWJsaWMgcmVmZXJlbmNlVHlwZXM6IERpY3Q8SW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4+ID0gcmVmZXJlbmNlVHlwZXM7XG5cbiAgICAgIGdldFJlZmVyZW5jZVR5cGVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2VUeXBlcztcbiAgICAgIH1cblxuICAgICAgcmVmZXJlbmNlVHlwZUZvcihwcm9wZXJ0eTogc3RyaW5nKTogSW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2VUeXBlc1twcm9wZXJ0eV0gfHwgUHJvcGVydHlSZWZlcmVuY2U7XG4gICAgICB9XG5cbiAgICAgIGdldFNsb3RzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zbG90cztcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdHVyYm9jaGFyZ2UodGhpcyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWVyZ2VNZXJnZWRQcm9wZXJ0aWVzKGF0dHJzOiBPYmplY3QsIHBhcmVudDogT2JqZWN0KSB7XG4gIGxldCBtZXJnZWQgPSBhc3NpZ24oe30sIHBhcmVudCk7XG5cbiAgZm9yIChsZXQgcHJvcCBpbiBhdHRycykge1xuICAgIGlmIChwcm9wIGluIHBhcmVudCAmJiB0eXBlb2YgcGFyZW50W3Byb3BdID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBhdHRyc1twcm9wXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgbGV0IHdyYXBwZWQgPSB3cmFwTWV0aG9kKHBhcmVudCwgcHJvcCwgYXR0cnNbcHJvcF0pO1xuICAgICAgbWVyZ2VkW3Byb3BdID0gd3JhcHBlZDtcbiAgICB9IGVsc2Uge1xuICAgICAgbWVyZ2VkW3Byb3BdID0gYXR0cnNbcHJvcF07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1lcmdlZDtcbn1cblxuZXhwb3J0IGNsYXNzIEluc3RhbmNlTWV0YSBleHRlbmRzIENsYXNzTWV0YSB7XG4gIHB1YmxpYyBcImRmOGJlNGM4LTRlODktNDRlMi1hOGY5LTU1MGM4ZGFjZGNhN1wiOiBDbGFzc01ldGEgPSBDbGFzc01ldGEuZnJvbVBhcmVudChudWxsKTtcblxuICBzdGF0aWMgZnJvbVBhcmVudChwYXJlbnQ6IE9wdGlvbjxJbnN0YW5jZU1ldGE+KTogSW5zdGFuY2VNZXRhIHtcbiAgICByZXR1cm4gPEluc3RhbmNlTWV0YT5zdXBlci5mcm9tUGFyZW50KHBhcmVudCk7XG4gIH1cblxuICByZXNldChwYXJlbnQ6IEluc3RhbmNlTWV0YSkge1xuICAgIHN1cGVyLnJlc2V0KHBhcmVudCk7XG4gICAgaWYgKHBhcmVudCkgdGhpc1tDTEFTU19NRVRBXS5yZXNldChwYXJlbnRbQ0xBU1NfTUVUQV0pO1xuICB9XG5cbiAgc2VhbCgpIHtcbiAgICBzdXBlci5zZWFsKCk7XG4gICAgdGhpc1tDTEFTU19NRVRBXS5zZWFsKCk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgR2xpbW1lck9iamVjdCB7XG4gIHN0YXRpYyBcImRmOGJlNGM4LTRlODktNDRlMi1hOGY5LTU1MGM4ZGFjZGNhN1wiOiBJbnN0YW5jZU1ldGEgPSBJbnN0YW5jZU1ldGEuZnJvbVBhcmVudChudWxsKTtcbiAgc3RhdGljIGlzQ2xhc3MgPSB0cnVlO1xuXG4gIHN0YXRpYyBleHRlbmQoKTogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PiAmIHR5cGVvZiBHbGltbWVyT2JqZWN0O1xuICBzdGF0aWMgZXh0ZW5kPFQ+KGV4dGVuc2lvbjogVCk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PFQ+ICYgdHlwZW9mIEdsaW1tZXJPYmplY3Q7XG4gIHN0YXRpYyBleHRlbmQoLi4uZXh0ZW5zaW9uczogT2JqZWN0W10pOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+ICYgdHlwZW9mIEdsaW1tZXJPYmplY3Q7XG5cbiAgc3RhdGljIGV4dGVuZCh0aGlzOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+LCAuLi5leHRlbnNpb25zOiBhbnlbXSkge1xuICAgIHJldHVybiBleHRlbmRDbGFzcyh0aGlzLCAuLi5leHRlbnNpb25zKTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGUoYXR0cnM/OiBPYmplY3QgfCBudWxsKTogR2xpbW1lck9iamVjdCB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKGF0dHJzKTtcbiAgfVxuXG4gIHN0YXRpYyByZW9wZW48VT4oZXh0ZW5zaW9uczogVSk6IHZvaWQge1xuICAgIHRvTWl4aW4oZXh0ZW5zaW9ucykuZXh0ZW5kUHJvdG90eXBlKHRoaXMpO1xuICAgIHRoaXNbQ0xBU1NfTUVUQV0uc2VhbCgpO1xuXG4gICAgcmVsaW5rU3ViY2xhc3Nlcyh0aGlzKTtcbiAgfVxuXG4gIHN0YXRpYyByZW9wZW5DbGFzczxVPihleHRlbnNpb25zOiBVKTogdm9pZCB7XG4gICAgdG9NaXhpbihleHRlbnNpb25zKS5leHRlbmRTdGF0aWModGhpcyk7XG4gICAgdGhpc1tDTEFTU19NRVRBXS5zZWFsKCk7XG4gIH1cblxuICBzdGF0aWMgbWV0YUZvclByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBPYmplY3Qge1xuICAgIGxldCB2YWx1ZSA9IHRoaXNbQ0xBU1NfTUVUQV0ubWV0YWRhdGFGb3JQcm9wZXJ0eShwcm9wZXJ0eSk7XG4gICAgaWYgKCF2YWx1ZSkgdGhyb3cgbmV3IEVycm9yKGBtZXRhRm9yUHJvcGVydHkoKSBjb3VsZCBub3QgZmluZCBhIGNvbXB1dGVkIHByb3BlcnR5IHdpdGgga2V5ICcke3Byb3BlcnR5fScuYCk7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgc3RhdGljIGVhY2hDb21wdXRlZFByb3BlcnR5KGNhbGxiYWNrOiAoczogc3RyaW5nLCBvOiBPYmplY3QpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBsZXQgbWV0YWRhdGEgPSB0aGlzW0NMQVNTX01FVEFdLmdldFByb3BlcnR5TWV0YWRhdGEoKTtcbiAgICBpZiAoIW1ldGFkYXRhKSByZXR1cm47XG5cbiAgICBmb3IgKGxldCBwcm9wIGluIG1ldGFkYXRhKSB7XG4gICAgICBjYWxsYmFjayhwcm9wLCBtZXRhZGF0YVtwcm9wXSk7XG4gICAgfVxuICB9XG5cbiAgX3N1cGVyID0gUk9PVDtcbiAgX21ldGEgPSBudWxsO1xuICBfZ3VpZDogbnVtYmVyO1xuXG4gIGluaXQoKSB7fVxuXG4gIGNvbnN0cnVjdG9yKGF0dHJzPzogT2JqZWN0IHwgbnVsbCkge1xuICAgIGlmIChhdHRycykgYXNzaWduKHRoaXMsIGF0dHJzKTtcbiAgICAoPHR5cGVvZiBHbGltbWVyT2JqZWN0PnRoaXMuY29uc3RydWN0b3IpW0NMQVNTX01FVEFdLmluaXQodGhpcywgYXR0cnMgfHwgbnVsbCk7XG4gICAgdGhpcy5fc3VwZXIgPSBST09UO1xuICAgIGluaXRpYWxpemVHdWlkKHRoaXMpO1xuICAgIHRoaXMuaW5pdCgpO1xuICB9XG5cbiAgZ2V0KGtleTogc3RyaW5nKTogYW55IHtcbiAgICByZXR1cm4gdGhpc1trZXldO1xuICB9XG5cbiAgc2V0KGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgdGhpc1trZXldID0gdmFsdWU7XG4gIH1cblxuICBzZXRQcm9wZXJ0aWVzKGF0dHJzOiBPYmplY3QpIHtcbiAgICBhc3NpZ24odGhpcywgYXR0cnMpO1xuICB9XG5cbiAgZGVzdHJveSgpIHt9XG59XG4iXX0=

@@ -30,2 +30,2 @@ 'use strict';

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi91dGlscy5qcyJdLCJuYW1lcyI6WyJST09UIiwiaGFzU3VwZXIiLCJIQVNfU1VQRVJfUEFUVEVSTiIsImNoZWNrSGFzU3VwZXIiLCJzb3VyY2VBdmFpbGFibGUiLCJ0b1N0cmluZyIsImluZGV4T2YiLCJmdW5jIiwidGVzdCIsIl9hcmdzIiwiX19oYXNTdXBlciIsInVuZGVmaW5lZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7UUFjZ0JBLEksR0FBQUEsSTtRQUVBQyxRLEdBQUFBLFE7QUFoQmhCLE1BQU1DLG9CQUFvQixtQ0FBMUI7QUFDTyxNQUFNQyx3Q0FBZ0IsWUFBWTtBQUNyQyxRQUFJQyxrQkFBa0IsWUFBWTtBQUM5QixlQUFPLElBQVA7QUFDSCxLQUZxQixDQUVwQkMsUUFGb0IsR0FFVEMsT0FGUyxDQUVELGFBRkMsSUFFZ0IsQ0FBQyxDQUZ2QztBQUdBLFFBQUlGLGVBQUosRUFBcUI7QUFDakIsZUFBTyxTQUFTRCxhQUFULENBQXVCSSxJQUF2QixFQUE2QjtBQUNoQyxtQkFBT0wsa0JBQWtCTSxJQUFsQixDQUF1QkQsS0FBS0YsUUFBTCxFQUF2QixDQUFQO0FBQ0gsU0FGRDtBQUdIO0FBQ0QsV0FBTyxTQUFTRixhQUFULEdBQXlCO0FBQzVCLGVBQU8sSUFBUDtBQUNILEtBRkQ7QUFHSCxDQVo0QixFQUF0QjtBQWFBLFNBQVNILElBQVQsQ0FBYyxHQUFHUyxLQUFqQixFQUF3QixDQUFFO0FBQ2pDVCxLQUFLVSxVQUFMLEdBQWtCLEtBQWxCO0FBQ08sU0FBU1QsUUFBVCxDQUFrQk0sSUFBbEIsRUFBd0I7QUFDM0IsUUFBSUEsS0FBSyxZQUFMLE1BQXVCSSxTQUEzQixFQUFzQztBQUNsQ0osYUFBSyxZQUFMLElBQXFCSixjQUFjSSxJQUFkLENBQXJCO0FBQ0g7QUFDRCxXQUFPQSxLQUFLLFlBQUwsQ0FBUDtBQUNIIiwiZmlsZSI6ImxpYi91dGlscy5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEhBU19TVVBFUl9QQVRURVJOID0gL1xcLihfc3VwZXJ8Y2FsbFxcKHRoaXN8YXBwbHlcXCh0aGlzKS87XG5leHBvcnQgY29uc3QgY2hlY2tIYXNTdXBlciA9IGZ1bmN0aW9uICgpIHtcbiAgICBsZXQgc291cmNlQXZhaWxhYmxlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9LnRvU3RyaW5nKCkuaW5kZXhPZigncmV0dXJuIHRoaXMnKSA+IC0xO1xuICAgIGlmIChzb3VyY2VBdmFpbGFibGUpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIGNoZWNrSGFzU3VwZXIoZnVuYykge1xuICAgICAgICAgICAgcmV0dXJuIEhBU19TVVBFUl9QQVRURVJOLnRlc3QoZnVuYy50b1N0cmluZygpKTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGNoZWNrSGFzU3VwZXIoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG59KCk7XG5leHBvcnQgZnVuY3Rpb24gUk9PVCguLi5fYXJncykge31cblJPT1QuX19oYXNTdXBlciA9IGZhbHNlO1xuZXhwb3J0IGZ1bmN0aW9uIGhhc1N1cGVyKGZ1bmMpIHtcbiAgICBpZiAoZnVuY1snX19oYXNTdXBlciddID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZnVuY1snX19oYXNTdXBlciddID0gY2hlY2tIYXNTdXBlcihmdW5jKTtcbiAgICB9XG4gICAgcmV0dXJuIGZ1bmNbJ19faGFzU3VwZXInXTtcbn0iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxNQUFNLEFBQWlCLG9CQUFHLEFBQW1DLEFBQUMsQUFFOUQsQUFBTTtNQUFPLEFBQWEsQUFBRyxvREFDM0I7UUFBSSxBQUFlLDhCQUNqQixBQUFNO2VBQUMsQUFBSSxBQUFDLEFBQ2QsQUFBQyxBQUFDO0FBRm9CLEtBQUMsQ0FFcEIsQUFBUSxBQUFFLFdBQUMsQUFBTyxRQUFDLEFBQWEsQUFBQyxpQkFBRyxDQUFDLEFBQUMsQUFBQyxBQUUxQyxBQUFFLEFBQUM7UUFBQyxBQUFlLEFBQUMsaUJBQUMsQUFBQyxBQUNwQixBQUFNO2VBQUMsdUJBQXVCLEFBQWMsTUFDMUMsQUFBTTttQkFBQyxBQUFpQixrQkFBQyxBQUFJLEtBQUMsQUFBSSxLQUFDLEFBQVEsQUFBRSxBQUFDLEFBQUMsQUFDakQsQUFBQyxBQUFDLEFBQ0o7QUFBQztBQUVELEFBQU07V0FBQyx5QkFDTCxBQUFNO2VBQUMsQUFBSSxBQUFDLEFBQ2QsQUFBQyxBQUFDLEFBQ0o7QUFBQyxBQUFFLEFBQUMsQUFBQztBQWRFLEFBQXVCLEFBZ0I5QixBQUFNO2NBQWUsR0FBRyxBQUFZLE9BQUcsQUFBQztBQUNsQyxBQUFLLEtBQUMsQUFBVSxhQUFHLEFBQUssQUFBQyxBQUUvQixBQUFNO2tCQUFtQixBQUFjLE1BQ3JDLEFBQUUsQUFBQztRQUFDLEFBQUksS0FBQyxBQUFZLEFBQUMsa0JBQUssQUFBUyxBQUFDLFdBQUMsQUFBQyxBQUNyQyxBQUFJO2FBQUMsQUFBWSxBQUFDLGdCQUFHLEFBQWEsY0FBQyxBQUFJLEFBQUMsQUFBQyxBQUMzQyxBQUFDO0FBQ0QsQUFBTTtXQUFDLEFBQUksS0FBQyxBQUFZLEFBQUMsQUFBQyxBQUM1QixBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgSEFTX1NVUEVSX1BBVFRFUk4gPSAvXFwuKF9zdXBlcnxjYWxsXFwodGhpc3xhcHBseVxcKHRoaXMpLztcblxuZXhwb3J0IGNvbnN0IGNoZWNrSGFzU3VwZXIgPSAoZnVuY3Rpb24gKCkge1xuICBsZXQgc291cmNlQXZhaWxhYmxlID0gKGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgIHJldHVybiB0aGlzO1xuICB9KS50b1N0cmluZygpLmluZGV4T2YoJ3JldHVybiB0aGlzJykgPiAtMTtcblxuICBpZiAoc291cmNlQXZhaWxhYmxlKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGNoZWNrSGFzU3VwZXIoZnVuYzogRnVuY3Rpb24pIHtcbiAgICAgIHJldHVybiBIQVNfU1VQRVJfUEFUVEVSTi50ZXN0KGZ1bmMudG9TdHJpbmcoKSk7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiBjaGVja0hhc1N1cGVyKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9O1xufSgpKTtcblxuZXhwb3J0IGZ1bmN0aW9uIFJPT1QoLi4uX2FyZ3M6IGFueVtdKSB7fVxuKDxhbnk+Uk9PVCkuX19oYXNTdXBlciA9IGZhbHNlO1xuXG5leHBvcnQgZnVuY3Rpb24gaGFzU3VwZXIoZnVuYzogRnVuY3Rpb24pIHtcbiAgaWYgKGZ1bmNbJ19faGFzU3VwZXInXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZnVuY1snX19oYXNTdXBlciddID0gY2hlY2tIYXNTdXBlcihmdW5jKTtcbiAgfVxuICByZXR1cm4gZnVuY1snX19oYXNTdXBlciddO1xufSJdfQ==

@@ -80,2 +80,2 @@ 'use strict';

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbImRlZmF1bHQiLCJDbGFzc01ldGEiLCJJbnN0YW5jZU1ldGEiLCJjb21wdXRlZCIsIm9ic2VydmVyIiwiTWl4aW4iLCJCbHVlcHJpbnQiLCJ0b01peGluIiwiYWxpYXNNZXRob2QiLCJhbGlhcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7MkNBQVMsQUFBVDs7Ozs7O21CQUFrQixBQUFsQjs7Ozs7O21CQUE2QixBQUE3QixBQUFpRCxBQUFqRCxBQUNBOzs7Ozs7Ozs7cUJBQVMsQUFBVDs7Ozs7O3FCQUFtQixBQUFuQixBQUFtQyxBQUFuQyxBQUNBOzs7Ozs7Ozs7a0JBQVMsQUFBVDs7Ozs7O2tCQUFnQixBQUFoQjs7Ozs7O2tCQUEyQixBQUEzQixBQUEwQyxBQUExQyxBQUNBOzs7Ozs7Ozs7d0JBQVMsQUFBVDs7Ozs7O3dCQUFzQixBQUF0QixBQUFtQyxBQUFuQyIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGRlZmF1bHQsIENsYXNzTWV0YSwgSW5zdGFuY2VNZXRhIH0gZnJvbSAnLi9saWIvb2JqZWN0JztcbmV4cG9ydCB7IGNvbXB1dGVkLCBvYnNlcnZlciB9IGZyb20gJy4vbGliL2NvbXB1dGVkJztcbmV4cG9ydCB7IE1peGluLCBCbHVlcHJpbnQsIHRvTWl4aW4gfSBmcm9tICcuL2xpYi9taXhpbic7XG5leHBvcnQgeyBhbGlhc01ldGhvZCwgYWxpYXMgfSBmcm9tICcuL2xpYi9kZXNjcmlwdG9ycyc7Il19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7MkNBQVMsQUFBTyxBQUFJLEFBQU87Ozs7OzttQkFBRSxBQUFTOzs7Ozs7bUJBQUUsQUFBWSxBQUF3QixBQUFNLEFBQWMsQUFBQyxBQUNqRyxBQUFPOzs7Ozs7Ozs7cUJBQUUsQUFBUTs7Ozs7O3FCQUFFLEFBQVEsQUFBRSxBQUFNLEFBQWdCLEFBQUMsQUFDcEQsQUFBTzs7Ozs7Ozs7O2tCQUFFLEFBQUs7Ozs7OztrQkFBRSxBQUFTOzs7Ozs7a0JBQUUsQUFBTyxBQUFFLEFBQU0sQUFBYSxBQUFDLEFBQ3hELEFBQU87Ozs7Ozs7Ozt3QkFBRSxBQUFXOzs7Ozs7d0JBQUUsQUFBSyxBQUFFLEFBQU0sQUFBbUIsQUFBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGRlZmF1bHQgYXMgZGVmYXVsdCwgQ2xhc3NNZXRhLCBJbnN0YW5jZU1ldGEsIEdsaW1tZXJPYmplY3RGYWN0b3J5IH0gZnJvbSAnLi9saWIvb2JqZWN0JztcbmV4cG9ydCB7IGNvbXB1dGVkLCBvYnNlcnZlciB9IGZyb20gJy4vbGliL2NvbXB1dGVkJztcbmV4cG9ydCB7IE1peGluLCBCbHVlcHJpbnQsIHRvTWl4aW4gfSBmcm9tICcuL2xpYi9taXhpbic7XG5leHBvcnQgeyBhbGlhc01ldGhvZCwgYWxpYXMgfSBmcm9tICcuL2xpYi9kZXNjcmlwdG9ycyc7XG4iXX0=

@@ -113,3 +113,3 @@ "use strict";

if (get && get.length > 0) {
originalGet = function () {
originalGet = function originalGet() {
return get.call(this, accessorName);

@@ -122,3 +122,3 @@ };

if (set && set.length > 1) {
originalSet = function (value) {
originalSet = function originalSet(value) {
return set.call(this, accessorName, value);

@@ -129,3 +129,3 @@ };

}
var cacheGet = function () {
var cacheGet = function cacheGet() {
if (_objectReference.Meta.exists(this)) {

@@ -139,3 +139,3 @@ var slot = _objectReference.Meta.for(this).getSlots()[accessorName];

if (originalSet) {
cacheSet = function (value) {
cacheSet = function cacheSet(value) {
var meta = _objectReference.Meta.for(this);

@@ -149,3 +149,3 @@ var slots = meta.getSlots();

} else {
cacheSet = function (value) {
cacheSet = function cacheSet(value) {
var meta = _objectReference.Meta.for(this);

@@ -216,2 +216,2 @@ var slots = meta.getSlots();

function observer() {}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21wdXRlZC5qcyJdLCJuYW1lcyI6WyJDb21wdXRlZFJlZmVyZW5jZUJsdWVwcmludCIsIk1ldGEiLCJFTVBUWV9DQUNIRSIsIkJsdWVwcmludCIsIkNvbXB1dGVkQmx1ZXByaW50IiwiYWNjZXNzb3IiLCJkZXBzIiwibWV0YWRhdGEiLCJkZXNjcmlwdG9yIiwiX3RhcmdldCIsImtleSIsImNsYXNzTWV0YSIsImFkZFJlZmVyZW5jZVR5cGVGb3IiLCJhZGRQcm9wZXJ0eU1ldGFkYXRhIiwiYWRkU2xvdEZvciIsIkNvbXB1dGVkIiwicHJvcGVydHkiLCJwYXRocyIsIm1hcCIsImQiLCJzcGxpdCIsIm1ldGEiLCJvYmplY3QiLCJ2b2xhdGlsZSIsImRlZmluZSIsInByb3RvdHlwZSIsImhvbWUiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsIndyYXBBY2Nlc3NvciIsImFjY2Vzc29yTmFtZSIsIl9kZXNjIiwic3VwZXJEZXNjIiwiZ2V0UHJvcGVydHlEZXNjcmlwdG9yIiwib3JpZ2luYWxHZXQiLCJvcmlnaW5hbFNldCIsImRlc2MiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwiZ2V0IiwibGVuZ3RoIiwiY2FsbCIsInNldCIsInZhbHVlIiwiY2FjaGVHZXQiLCJleGlzdHMiLCJzbG90IiwiZm9yIiwiZ2V0U2xvdHMiLCJjYWNoZVNldCIsInNsb3RzIiwicmV0IiwidW5kZWZpbmVkIiwibGFzdFN1cGVyIiwiX3N1cGVyIiwidmFsIiwic3ViamVjdCIsIm5hbWUiLCJwZCIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInByb3RvIiwiZ2V0UHJvdG90eXBlT2YiLCJjb21wdXRlZCIsImFyZ3MiLCJsYXN0IiwicG9wIiwiVHlwZUVycm9yIiwib2JzZXJ2ZXIiXSwibWFwcGluZ3MiOiI7Ozs7OztRQTJITyxBQUFTO1FBYVQsQUFBUzs7QUF4SWhCLEFBQVMsQUFBNEIsQUFBWTs7QUFDakQsQUFBUyxBQUFtQjs7QUFDNUIsQUFBUyxBQUFpQixB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QUFPLG9CQUE0QixBQUFFIiwiZmlsZSI6ImxpYi9jb21wdXRlZC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXB1dGVkUmVmZXJlbmNlQmx1ZXByaW50LCBNZXRhIH0gZnJvbSAnQGdsaW1tZXIvb2JqZWN0LXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBFTVBUWV9DQUNIRSB9IGZyb20gJy4vb2JqZWN0JztcbmltcG9ydCB7IEJsdWVwcmludCB9IGZyb20gJy4vbWl4aW4nO1xuZXhwb3J0IGNsYXNzIENvbXB1dGVkQmx1ZXByaW50IGV4dGVuZHMgQmx1ZXByaW50IHtcbiAgICBjb25zdHJ1Y3RvcihhY2Nlc3NvciwgZGVwcyA9IFtdKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubWV0YWRhdGEgPSB7fTtcbiAgICAgICAgdGhpcy5hY2Nlc3NvciA9IGFjY2Vzc29yO1xuICAgICAgICB0aGlzLmRlcHMgPSBkZXBzO1xuICAgIH1cbiAgICBkZXNjcmlwdG9yKF90YXJnZXQsIGtleSwgY2xhc3NNZXRhKSB7XG4gICAgICAgIGNsYXNzTWV0YS5hZGRSZWZlcmVuY2VUeXBlRm9yKGtleSwgQ29tcHV0ZWRSZWZlcmVuY2VCbHVlcHJpbnQoa2V5LCB0aGlzLmRlcHMpKTtcbiAgICAgICAgY2xhc3NNZXRhLmFkZFByb3BlcnR5TWV0YWRhdGEoa2V5LCB0aGlzLm1ldGFkYXRhKTtcbiAgICAgICAgY2xhc3NNZXRhLmFkZFNsb3RGb3Ioa2V5KTtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21wdXRlZCh0aGlzLmFjY2Vzc29yKTtcbiAgICB9XG4gICAgcHJvcGVydHkoLi4ucGF0aHMpIHtcbiAgICAgICAgdGhpcy5kZXBzID0gcGF0aHMubWFwKGQgPT4gZC5zcGxpdCgnLicpKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIG1ldGEob2JqZWN0KSB7XG4gICAgICAgIHRoaXMubWV0YWRhdGEgPSBvYmplY3Q7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICB2b2xhdGlsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxufVxuY2xhc3MgQ29tcHV0ZWQge1xuICAgIGNvbnN0cnVjdG9yKGFjY2Vzc29yKSB7XG4gICAgICAgIHRoaXNbXCI1ZDkwZjg0Zi05MDhlLTRhNDItOTc0OS0zZDBmNTIzYzI2MmNcIl0gPSB0cnVlO1xuICAgICAgICB0aGlzLmFjY2Vzc29yID0gYWNjZXNzb3I7XG4gICAgfVxuICAgIGRlZmluZShwcm90b3R5cGUsIGtleSwgaG9tZSkge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvdG90eXBlLCBrZXksIHdyYXBBY2Nlc3Nvcihob21lLCBrZXksIHRoaXMuYWNjZXNzb3IpKTtcbiAgICB9XG59XG5mdW5jdGlvbiB3cmFwQWNjZXNzb3IoaG9tZSwgYWNjZXNzb3JOYW1lLCBfZGVzYykge1xuICAgIGxldCBzdXBlckRlc2MgPSBnZXRQcm9wZXJ0eURlc2NyaXB0b3IoaG9tZSwgYWNjZXNzb3JOYW1lKTtcbiAgICBsZXQgb3JpZ2luYWxHZXQ7XG4gICAgbGV0IG9yaWdpbmFsU2V0O1xuICAgIGxldCBkZXNjID0ge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9O1xuICAgIGxldCBnZXQgPSBfZGVzYy5nZXQ7XG4gICAgaWYgKGdldCAmJiBnZXQubGVuZ3RoID4gMCkge1xuICAgICAgICBvcmlnaW5hbEdldCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBnZXQuY2FsbCh0aGlzLCBhY2Nlc3Nvck5hbWUpO1xuICAgICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG9yaWdpbmFsR2V0ID0gX2Rlc2MuZ2V0O1xuICAgIH1cbiAgICBsZXQgc2V0ID0gX2Rlc2Muc2V0O1xuICAgIGlmIChzZXQgJiYgc2V0Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgb3JpZ2luYWxTZXQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiBzZXQuY2FsbCh0aGlzLCBhY2Nlc3Nvck5hbWUsIHZhbHVlKTtcbiAgICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBvcmlnaW5hbFNldCA9IF9kZXNjLnNldDtcbiAgICB9XG4gICAgbGV0IGNhY2hlR2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoTWV0YS5leGlzdHModGhpcykpIHtcbiAgICAgICAgICAgIGxldCBzbG90ID0gTWV0YS5mb3IodGhpcykuZ2V0U2xvdHMoKVthY2Nlc3Nvck5hbWVdO1xuICAgICAgICAgICAgaWYgKHNsb3QgIT09IEVNUFRZX0NBQ0hFKSByZXR1cm4gc2xvdDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3JpZ2luYWxHZXQuY2FsbCh0aGlzKTtcbiAgICB9O1xuICAgIGxldCBjYWNoZVNldDtcbiAgICBpZiAob3JpZ2luYWxTZXQpIHtcbiAgICAgICAgY2FjaGVTZXQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGxldCBtZXRhID0gTWV0YS5mb3IodGhpcyk7XG4gICAgICAgICAgICBsZXQgc2xvdHMgPSBtZXRhLmdldFNsb3RzKCk7XG4gICAgICAgICAgICBsZXQgcmV0ID0gb3JpZ2luYWxTZXQuY2FsbCh0aGlzLCB2YWx1ZSk7XG4gICAgICAgICAgICBpZiAocmV0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBzbG90c1thY2Nlc3Nvck5hbWVdID0gcmV0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNhY2hlU2V0ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBsZXQgbWV0YSA9IE1ldGEuZm9yKHRoaXMpO1xuICAgICAgICAgICAgbGV0IHNsb3RzID0gbWV0YS5nZXRTbG90cygpO1xuICAgICAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHNsb3RzW2FjY2Vzc29yTmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgaWYgKCFzdXBlckRlc2MgfHwgJ3ZhbHVlJyBpbiBzdXBlckRlc2MpIHtcbiAgICAgICAgZGVzYy5nZXQgPSBjYWNoZUdldDtcbiAgICAgICAgZGVzYy5zZXQgPSBjYWNoZVNldDtcbiAgICAgICAgcmV0dXJuIGRlc2M7XG4gICAgfVxuICAgIGRlc2MuZ2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBsZXQgbGFzdFN1cGVyID0gdGhpcy5fc3VwZXI7XG4gICAgICAgIHRoaXMuX3N1cGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHN1cGVyRGVzYy5nZXQuY2FsbCh0aGlzKTtcbiAgICAgICAgfTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBjYWNoZUdldC5jYWxsKHRoaXMpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy5fc3VwZXIgPSBsYXN0U3VwZXI7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGRlc2Muc2V0ID0gZnVuY3Rpb24gKHZhbCkge1xuICAgICAgICBsZXQgbGFzdFN1cGVyID0gdGhpcy5fc3VwZXI7XG4gICAgICAgIHRoaXMuX3N1cGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHN1cGVyRGVzYy5zZXQuY2FsbCh0aGlzLCB2YWwpO1xuICAgICAgICB9O1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIGNhY2hlU2V0LmNhbGwodGhpcywgdmFsKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMuX3N1cGVyID0gbGFzdFN1cGVyO1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gZGVzYztcbn1cbmZ1bmN0aW9uIGdldFByb3BlcnR5RGVzY3JpcHRvcihzdWJqZWN0LCBuYW1lKSB7XG4gICAgbGV0IHBkID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzdWJqZWN0LCBuYW1lKTtcbiAgICBsZXQgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yoc3ViamVjdCk7XG4gICAgd2hpbGUgKHR5cGVvZiBwZCA9PT0gJ3VuZGVmaW5lZCcgJiYgcHJvdG8gIT09IG51bGwpIHtcbiAgICAgICAgcGQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCBuYW1lKTtcbiAgICAgICAgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJvdG8pO1xuICAgIH1cbiAgICByZXR1cm4gcGQ7XG59XG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZWQoLi4uYXJncykge1xuICAgIGxldCBsYXN0ID0gYXJncy5wb3AoKTtcbiAgICBsZXQgZGVwcyA9IGFyZ3M7XG4gICAgaWYgKHR5cGVvZiBsYXN0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiBuZXcgQ29tcHV0ZWRCbHVlcHJpbnQoe1xuICAgICAgICAgICAgZ2V0OiBsYXN0XG4gICAgICAgIH0pLnByb3BlcnR5KC4uLmRlcHMpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGxhc3QgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIHJldHVybiBuZXcgQ29tcHV0ZWRCbHVlcHJpbnQobGFzdCkucHJvcGVydHkoLi4uZGVwcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcImNvbXB1dGVkIGV4cGVjdHMgYSBmdW5jdGlvbiBvciBhbiBvYmplY3QgYXMgbGFzdCBhcmd1bWVudFwiKTtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gb2JzZXJ2ZXIoLi4uX2FyZ3MpIHt9Il19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL2NvbXB1dGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztRQXdMeUI7UUFlQSxBQUFHLEFBQVk7O0FBdk14QyxBQUFPLEFBQUUsQUFBMEIsQUFBRSxBQUFJLEFBQUUsQUFBTSxBQUEyQixBQUFDOztBQUM3RSxBQUFPLEFBQUUsQUFBVyxBQUFhLEFBQU0sQUFBVSxBQUFDOztBQUNsRCxBQUFPLEFBQWMsQUFBUyxBQUFFLEFBQU0sQUFBUyxBQUFDLEFBeUJoRCxBQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQXlCOzs7K0JBS2pCLEFBQTRCLFVBQ3RDLEFBQUssQUFBRSxBQUFDO1lBRGdDLDJFQUFtQixBQUFFOzs7O3FEQUZ2RDs7Y0FBUSxXQUFXLEFBQUUsQUFBQyxBQUk1QixBQUFJO2NBQUMsQUFBUSxXQUFHLEFBQVEsQUFBQyxBQUN6QixBQUFJO2NBQUMsQUFBSSxPQUFHLEFBQUksQUFBQyxBQUNuQixBQUFDO2VBRUQsQUFBVTs7O2lFQUFDLEFBQWUsU0FBRSxBQUFXLEtBQUUsQUFBb0IsV0FDM0QsQUFBUztrQkFBQyxBQUFtQixvQkFBQyxBQUFHLEtBQUUsQUFBMEIsaURBQUMsQUFBRyxLQUFFLEFBQUksS0FBQyxBQUFJLEFBQUMsQUFBQyxBQUFDLEFBQy9FLEFBQVM7a0JBQUMsQUFBbUIsb0JBQUMsQUFBRyxLQUFFLEFBQUksS0FBQyxBQUFRLEFBQUMsQUFBQyxBQUNsRCxBQUFTO2tCQUFDLEFBQVUsV0FBQyxBQUFHLEFBQUMsQUFBQyxBQUMxQixBQUFNO2VBQUMsSUFBSSxBQUFRLFNBQUMsQUFBSSxLQUFDLEFBQVEsQUFBQyxBQUFDLEFBQ3JDLEFBQUMsQUFFRCxBQUFROzs7Z0NBQUMsK0JBQ1AsQUFBSTs4RkFETSxBQUFlOzs7O2FBQ3BCLEFBQUksYUFBUyxBQUFHLGlCQUFDLEFB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Q0o7K0ZBRDBCLEFBQVc7Ozs7UUFDakMsQUFBSSxPQUFxQixBQUFJLEtBQUMsQUFBRyxBQUFFLEFBQUMsQUFDeEM7UUFBSSxBQUFJLE9BQUcsQUFBSSxBQUFDLEFBRWhCLEFBQUUsQUFBQztRQUFDLE9BQU8sQUFBSSxTQUFLLEFBQVUsQUFBQyxZQUFDLEFBQUMsQUFDL0IsQUFBTTs7OzJCQUFLLEFBQWlCO2lCQUFyQixBQUFzQixBQUMzQixBQUFHLEFBQW1ELEFBQUksQUFDM0QsQUFBQztZQUFDLEFBQVEsQUFBQyxxQkFBRyxBQUFJLEFBQUMsQUFBQyxBQUN2QixBQUFDLEFBQUMsQUFBSTtlQUFLLE9BQU8sQUFBSSxTQUFLLEFBQVEsQUFBQyxVQUFDLEFBQUMsQUFDcEMsQUFBTTs7O2VBQUMsYUFBSSxBQUFpQixrQkFBcUIsQUFBSSxBQUFDLE9BQUMsQUFBUSxBQUFDLHNCQUQzRCxBQUFFLEFBQUMsQUFDMkQsQUFBSSxBQUFDLEFBQUMsQUFDM0UsQUFBQyxBQUFDLEFBQUk7V0FBQyxBQUFDLEFBQ047Y0FBTSxJQUFJLEFBQVMsVUFBQyxBQUEyRCxBQUFDLEFBQUMsQUFDbkYsQUFBQyxBQUNILEFBQUM7O0FBRUQsQUFBTTtvQkFFTixBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcHV0ZWRSZWZlcmVuY2VCbHVlcHJpbnQsIE1ldGEgfSBmcm9tICdAZ2xpbW1lci9vYmplY3QtcmVmZXJlbmNlJztcbmltcG9ydCB7IEVNUFRZX0NBQ0hFLCBDbGFzc01ldGEgfSBmcm9tICcuL29iamVjdCc7XG5pbXBvcnQgeyBEZXNjcmlwdG9yLCBCbHVlcHJpbnQgfSBmcm9tICcuL21peGluJztcblxuZXhwb3J0IGludGVyZmFjZSBDb21wdXRlZEdldENhbGxiYWNrIHtcbiAgKCk6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMZWdhY3lDb21wdXRlZEdldENhbGxiYWNrIHtcbiAgKGtleTogc3RyaW5nKTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXB1dGVkU2V0Q2FsbGJhY2sge1xuICAodmFsOiBhbnkpOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGVnYWN5Q29tcHV0ZWRTZXRDYWxsYmFjayB7XG4gIChrZXk6IHN0cmluZywgdmFsOiBhbnkpOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcHV0ZWREZXNjcmlwdG9yIHtcbiAgZ2V0PzogQ29tcHV0ZWRHZXRDYWxsYmFjayB8IExlZ2FjeUNvbXB1dGVkR2V0Q2FsbGJhY2s7XG4gIHNldD86IENvbXB1dGVkU2V0Q2FsbGJhY2sgfCBMZWdhY3lDb21wdXRlZFNldENhbGxiYWNrO1xufVxuXG50eXBlIENvbXB1dGVkQXJndW1lbnQgPSBDb21wdXRlZEdldENhbGxiYWNrIHwgQ29tcHV0ZWREZXNjcmlwdG9yO1xuXG5leHBvcnQgY2xhc3MgQ29tcHV0ZWRCbHVlcHJpbnQgZXh0ZW5kcyBCbHVlcHJpbnQge1xuICBwcml2YXRlIGFjY2Vzc29yOiBDb21wdXRlZERlc2NyaXB0b3I7XG4gIHByaXZhdGUgZGVwczogc3RyaW5nW11bXTtcbiAgcHJpdmF0ZSBtZXRhZGF0YTogT2JqZWN0ID0ge307XG5cbiAgY29uc3RydWN0b3IoYWNjZXNzb3I6IENvbXB1dGVkRGVzY3JpcHRvciwgZGVwczogc3RyaW5nW11bXSA9IFtdKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFjY2Vzc29yID0gYWNjZXNzb3I7XG4gICAgdGhpcy5kZXBzID0gZGVwcztcbiAgfVxuXG4gIGRlc2NyaXB0b3IoX3RhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgY2xhc3NNZXRhOiBDbGFzc01ldGEpOiBEZXNjcmlwdG9yIHtcbiAgICBjbGFzc01ldGEuYWRkUmVmZXJlbmNlVHlwZUZvcihrZXksIENvbXB1dGVkUmVmZXJlbmNlQmx1ZXByaW50KGtleSwgdGhpcy5kZXBzKSk7XG4gICAgY2xhc3NNZXRhLmFkZFByb3BlcnR5TWV0YWRhdGEoa2V5LCB0aGlzLm1ldGFkYXRhKTtcbiAgICBjbGFzc01ldGEuYWRkU2xvdEZvcihrZXkpO1xuICAgIHJldHVybiBuZXcgQ29tcHV0ZWQodGhpcy5hY2Nlc3Nvcik7XG4gIH1cblxuICBwcm9wZXJ0eSguLi5wYXRoczogc3RyaW5nW10pIHtcbiAgICB0aGlzLmRlcHMgPSBwYXRocy5tYXAoZCA9PiBkLnNwbGl0KCcuJykpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbWV0YShvYmplY3Q6IE9iamVjdCkge1xuICAgIHRoaXMubWV0YWRhdGEgPSBvYmplY3Q7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB2b2xhdGlsZSgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxufVxuXG5jbGFzcyBDb21wdXRlZCBpbXBsZW1lbnRzIERlc2NyaXB0b3Ige1xuICBlbnVtZXJhYmxlOiBib29sZWFuO1xuICBjb25maWd1cmFibGU6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBhY2Nlc3NvcjogQ29tcHV0ZWREZXNjcmlwdG9yO1xuICBcIjVkOTBmODRmLTkwOGUtNGE0Mi05NzQ5LTNkMGY1MjNjMjYyY1wiID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihhY2Nlc3NvcjogQ29tcHV0ZWREZXNjcmlwdG9yKSB7XG4gICAgdGhpcy5hY2Nlc3NvciA9IGFjY2Vzc29yO1xuICB9XG5cbiAgZGVmaW5lKHByb3RvdHlwZTogT2JqZWN0LCBrZXk6IHN0cmluZywgaG9tZTogT2JqZWN0KSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3RvdHlwZSwga2V5LCB3cmFwQWNjZXNzb3IoaG9tZSwga2V5LCB0aGlzLmFjY2Vzc29yKSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gd3JhcEFjY2Vzc29yKGhvbWU6IE9iamVjdCwgYWNjZXNzb3JOYW1lOiBzdHJpbmcsIF9kZXNjOiBDb21wdXRlZERlc2NyaXB0b3IpOiBQcm9wZXJ0eURlc2NyaXB0b3Ige1xuICBsZXQgc3VwZXJEZXNjID0gZ2V0UHJvcGVydHlEZXNjcmlwdG9yKGhvbWUsIGFjY2Vzc29yTmFtZSk7XG5cbiAgbGV0IG9yaWdpbmFsR2V0OiBDb21wdXRlZEdldENhbGxiYWNrO1xuICBsZXQgb3JpZ2luYWxTZXQ6IENvbXB1dGVkU2V0Q2FsbGJhY2s7XG5cbiAgbGV0IGRlc2M6IFByb3BlcnR5RGVzY3JpcHRvciA9IHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgfTtcblxuICBsZXQgZ2V0ID0gX2Rlc2MuZ2V0O1xuXG4gIGlmIChnZXQgJiYgZ2V0Lmxlbmd0aCA+IDApIHtcbiAgICBvcmlnaW5hbEdldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSkgeyByZXR1cm4gKGdldCBhcyBhbnkpLmNhbGwodGhpcywgYWNjZXNzb3JOYW1lKTsgfTtcbiAgfSBlbHNlIHtcbiAgICBvcmlnaW5hbEdldCA9IDxDb21wdXRlZEdldENhbGxiYWNrPl9kZXNjLmdldDtcbiAgfVxuXG4gIGxldCBzZXQgPSBfZGVzYy5zZXQ7XG5cbiAgaWYgKHNldCAmJiBzZXQubGVuZ3RoID4gMSkge1xuICAgIG9yaWdpbmFsU2V0ID0gZnVuY3Rpb24odGhpczogYW55LCB2YWx1ZTogYW55KSB7XG4gICAgICByZXR1cm4gKHNldCBhcyBhbnkpLmNhbGwodGhpcywgYWNjZXNzb3JOYW1lLCB2YWx1ZSk7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBvcmlnaW5hbFNldCA9IDxDb21wdXRlZEdldENhbGxiYWNrPl9kZXNjLnNldDtcbiAgfVxuXG4gIGxldCBjYWNoZUdldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgIGlmIChNZXRhLmV4aXN0cyh0aGlzKSkge1xuICAgICAgbGV0IHNsb3QgPSBNZXRhLmZvcih0aGlzKS5nZXRTbG90cygpW2FjY2Vzc29yTmFtZV07XG4gICAgICBpZiAoc2xvdCAhPT0gRU1QVFlfQ0FDSEUpIHJldHVybiBzbG90O1xuICAgIH1cblxuICAgIHJldHVybiBvcmlnaW5hbEdldC5jYWxsKHRoaXMpO1xuICB9O1xuXG4gIGxldCBjYWNoZVNldDogKHZhbHVlOiBhbnkpID0+IHZvaWQ7XG5cbiAgaWYgKG9yaWdpbmFsU2V0KSB7XG4gICAgY2FjaGVTZXQgPSBmdW5jdGlvbih0aGlzOiBhbnksIHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgIGxldCBtZXRhID0gTWV0YS5mb3IodGhpcyk7XG4gICAgICBsZXQgc2xvdHMgPSBtZXRhLmdldFNsb3RzKCk7XG5cbiAgICAgIGxldCByZXQgPSBvcmlnaW5hbFNldC5jYWxsKHRoaXMsIHZhbHVlKTtcblxuICAgICAgaWYgKHJldCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHNsb3RzW2FjY2Vzc29yTmFtZV0gPSByZXQ7XG4gICAgICB9XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBjYWNoZVNldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgdmFsdWU6IGFueSkge1xuICAgICAgbGV0IG1ldGEgPSBNZXRhLmZvcih0aGlzKTtcbiAgICAgIGxldCBzbG90cyA9IG1ldGEuZ2V0U2xvdHMoKTtcbiAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSBzbG90c1thY2Nlc3Nvck5hbWVdID0gdmFsdWU7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghc3VwZXJEZXNjIHx8ICd2YWx1ZScgaW4gc3VwZXJEZXNjKSB7XG4gICAgZGVzYy5nZXQgPSBjYWNoZUdldDtcbiAgICBkZXNjLnNldCA9IGNhY2hlU2V0O1xuICAgIHJldHVybiBkZXNjO1xuICB9XG5cbiAgZGVzYy5nZXQgPSBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICBsZXQgbGFzdFN1cGVyID0gdGhpcy5fc3VwZXI7XG4gICAgdGhpcy5fc3VwZXIgPSBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICAgIHJldHVybiAoc3VwZXJEZXNjLmdldCBhcyBhbnkpLmNhbGwodGhpcyk7XG4gICAgfTtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gY2FjaGVHZXQuY2FsbCh0aGlzKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fc3VwZXIgPSBsYXN0U3VwZXI7XG4gICAgfVxuICB9O1xuXG4gIGRlc2Muc2V0ID0gZnVuY3Rpb24odGhpczogYW55LCB2YWw6IGFueSkge1xuICAgIGxldCBsYXN0U3VwZXIgPSB0aGlzLl9zdXBlcjtcbiAgICB0aGlzLl9zdXBlciA9IGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgICAgcmV0dXJuIChzdXBlckRlc2MgYXMgYW55KS5zZXQuY2FsbCh0aGlzLCB2YWwpO1xuICAgIH07XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGNhY2hlU2V0LmNhbGwodGhpcywgdmFsKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fc3VwZXIgPSBsYXN0U3VwZXI7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBkZXNjO1xufVxuXG5mdW5jdGlvbiBnZXRQcm9wZXJ0eURlc2NyaXB0b3Ioc3ViamVjdDogYW55LCBuYW1lOiBzdHJpbmcpIHtcbiAgbGV0IHBkID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzdWJqZWN0LCBuYW1lKTtcbiAgbGV0IHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHN1YmplY3QpO1xuICB3aGlsZSAodHlwZW9mIHBkID09PSAndW5kZWZpbmVkJyAmJiBwcm90byAhPT0gbnVsbCkge1xuICAgIHBkID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90bywgbmFtZSk7XG4gICAgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJvdG8pO1xuICB9XG4gIHJldHVybiBwZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVkKGRlc2M6IENvbXB1dGVkRGVzY3JpcHRvcik6IENvbXB1dGVkQmx1ZXByaW50O1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVkKGdldHRlcjogQ29tcHV0ZWRHZXRDYWxsYmFjayB8IExlZ2FjeUNvbXB1dGVkR2V0Q2FsbGJhY2spOiBDb21wdXRlZEJsdWVwcmludDtcbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlZCguLi5hcmdzOiBhbnlbXSk6IENvbXB1dGVkQmx1ZXByaW50O1xuXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZWQoLi4uYXJnczogYW55W10pIHtcbiAgbGV0IGxhc3Q6IENvbXB1dGVkQXJndW1lbnQgPSBhcmdzLnBvcCgpO1xuICBsZXQgZGVwcyA9IGFyZ3M7XG5cbiAgaWYgKHR5cGVvZiBsYXN0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIG5ldyBDb21wdXRlZEJsdWVwcmludCh7XG4gICAgICBnZXQ6IDxDb21wdXRlZEdldENhbGxiYWNrIHwgTGVnYWN5Q29tcHV0ZWRHZXRDYWxsYmFjaz5sYXN0XG4gICAgfSkucHJvcGVydHkoLi4uZGVwcyk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGxhc3QgPT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIG5ldyBDb21wdXRlZEJsdWVwcmludCg8Q29tcHV0ZWREZXNjcmlwdG9yPmxhc3QpLnByb3BlcnR5KC4uLmRlcHMpO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJjb21wdXRlZCBleHBlY3RzIGEgZnVuY3Rpb24gb3IgYW4gb2JqZWN0IGFzIGxhc3QgYXJndW1lbnRcIik7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9ic2VydmVyKC4uLl9hcmdzOiBhbnlbXSkge1xuXG59XG4iXX0=

@@ -56,3 +56,3 @@ "use strict";

configurable: true,
get: function () {
get: function get() {
return this[name];

@@ -97,3 +97,3 @@ }

var last = name[name.length - 1];
var get = function () {
var get = function get() {
return name.reduce(function (obj, n) {

@@ -103,3 +103,3 @@ return obj[n];

};
var set = function (value) {
var set = function set(value) {
var p = parent.reduce(function (obj, n) {

@@ -128,2 +128,2 @@ return obj[n];

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9kZXNjcmlwdG9ycy5qcyJdLCJuYW1lcyI6WyJCbHVlcHJpbnQiLCJEZXNjcmlwdG9yIiwiQ29tcHV0ZWRCbHVlcHJpbnQiLCJBbGlhc01ldGhvZERlc2NyaXB0b3IiLCJuYW1lIiwiZGVmaW5lIiwidGFyZ2V0Iiwia2V5IiwiX2hvbWUiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJnZXQiLCJBbGlhc01ldGhvZEJsdWVwcmludCIsImRlc2NyaXB0b3IiLCJfdGFyZ2V0IiwiX2tleSIsIl9tZXRhIiwiYWxpYXNNZXRob2QiLCJBbGlhc0JsdWVwcmludCIsInBhcmVudCIsInNsaWNlIiwibGFzdCIsImxlbmd0aCIsInJlZHVjZSIsIm9iaiIsIm4iLCJzZXQiLCJ2YWx1ZSIsInAiLCJtZXRhIiwiRXJyb3IiLCJhbGlhcyIsInNwbGl0Il0sIm1hcHBpbmdzIjoiOzs7OztRQTJCTyxBQUFTO1FBc0JULEFBQVM7O0FBakRoQixBQUFTLEFBQVcsQUFBa0I7O0FBQ3RDLEFBQVMsQUFBeUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxBQUM1QjtxQ0FDRjs7bUNBQUEsQUFBWSxNQUFNOzhCQUFBOztxREFDZCxpQkFEYyxBQUVkOztjQUFBLEFBQUssT0FGUyxBQUVkLEFBQVk7ZUFDZjs7O29DLEFBQ0QseUIsQUFBTyxRQUFRLEEsSyxBQUFLLE9BQU8sQUFDdkI7WUFBSSxPQUFPLEtBQVgsQUFBZ0IsQUFDaEI7ZUFBQSxBQUFPLGVBQVAsQUFBc0IsUUFBdEIsQUFBOEI7d0JBQUssQUFDbkIsQUFDWjswQkFGK0IsQUFFakIsQUFDZDtBQUgrQiw2QkFHekIsQUFDRjt1QkFBTyxLQUFQLEFBQU8sQUFBSyxBQUNmO0FBTEwsQUFBbUMsQUFPdEM7QUFQc0MsQUFDL0I7QTs7O0FBUndCLEE7O0lBZ0I5QixBO29DQUNGOztrQ0FBQSxBQUFZLE1BQU07OEJBQUE7O3NEQUNkLGdCQURjLEFBRWQ7O2VBQUEsQUFBSyxPQUZTLEFBRWQsQUFBWTtlQUNmOzs7bUNBQ0QsQSxpQ0FBVyxBLFMsQUFBUyxNQUFNLEEsT0FBTyxBQUM3QjtlQUFPLElBQUEsQUFBSSxzQkFBc0IsS0FBakMsQUFBTyxBQUErQixBQUN6QztBOzs7QUFFTCxBLEFBVG1DOztBQVM1QixxQkFBQSxBQUFxQixNQUFNLEFBQzlCO1dBQU8sSUFBQSxBQUFJLHFCQUFYLEFBQU8sQUFBeUIsQUFDbkM7OztJLEFBQ0s7OEJBQ0Y7OzRCQUFBLEFBQVksTUFBTTs4QkFDZDs7WUFBSSxTQUFTLEtBQUEsQUFBSyxNQUFMLEFBQVcsR0FBRyxDQUEzQixBQUFhLEFBQWUsQUFDNUI7WUFBSSxPQUFPLEtBQUssS0FBQSxBQUFLLFNBQXJCLEFBQVcsQUFBbUIsQUFDOUI7WUFBSSxNQUFNLFlBQVksQUFDbEI7d0JBQU8sQUFBSyxPQUFPLFVBQUEsQUFBQyxLQUFELEFBQU0sR0FBTjt1QkFBWSxJQUFaLEFBQVksQUFBSTtBQUE1QixhQUFBLEVBQVAsQUFBTyxBQUFnQyxBQUMxQztBQUZELEFBR0E7WUFBSSxNQUFNLFVBQUEsQUFBVSxPQUFPLEFBQ3ZCO2dCQUFJLFdBQUksQUFBTyxPQUFPLFVBQUEsQUFBQyxLQUFELEFBQU0sR0FBTjt1QkFBWSxJQUFaLEFBQVksQUFBSTtBQUE5QixhQUFBLEVBQVIsQUFBUSxBQUFrQyxBQUMxQztjQUFBLEFBQUUsUUFBRixBQUFVLEFBQ2I7QUFUYSxBQU1kOztzREFJQSw4QkFBTSxFQUFFLEtBQUYsS0FBTyxLQUFiLEFBQU0sT0FBYyxDQVZOLEFBVWQsQUFBb0IsQUFBQyxBQUNyQjs7ZUFBQSxBQUFLLE9BWFMsQUFXZCxBQUFZO2VBQ2Y7Ozs2QixBQUNELGlDLEFBQVcsUSxBQUFRLEtBQUssQSxNQUFNLEFBQzFCO1lBQUksS0FBQSxBQUFLLEtBQUwsQUFBVSxPQUFkLEFBQXFCLEtBQUssTUFBTSxJQUFBLEFBQUksMkJBQUosQUFBNEIsTUFBbEMsQUFDMUI7ZUFBTyw2QkFBQSxBQUFNLHNCQUFOLEFBQWlCLFFBQWpCLEFBQXlCLEtBQWhDLEFBQU8sQUFBOEIsQUFDeEM7QTs7O0EsQUFqQndCLEFBbUI3Qjs7QUFBTyxlQUFBLEFBQWUsTUFBTSxBQUN4QjtXQUFPLElBQUEsQUFBSSxlQUFlLEtBQUEsQUFBSyxNQUEvQixBQUFPLEFBQW1CLEFBQVcsQUFDeEMiLCJmaWxlIjoibGliL2Rlc2NyaXB0b3JzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmx1ZXByaW50LCBEZXNjcmlwdG9yIH0gZnJvbSAnLi9taXhpbic7XG5pbXBvcnQgeyBDb21wdXRlZEJsdWVwcmludCB9IGZyb20gJy4vY29tcHV0ZWQnO1xuY2xhc3MgQWxpYXNNZXRob2REZXNjcmlwdG9yIGV4dGVuZHMgRGVzY3JpcHRvciB7XG4gICAgY29uc3RydWN0b3IobmFtZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIH1cbiAgICBkZWZpbmUodGFyZ2V0LCBrZXksIF9ob21lKSB7XG4gICAgICAgIGxldCBuYW1lID0gdGhpcy5uYW1lO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHtcbiAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgICBnZXQoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNbbmFtZV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbmNsYXNzIEFsaWFzTWV0aG9kQmx1ZXByaW50IGV4dGVuZHMgQmx1ZXByaW50IHtcbiAgICBjb25zdHJ1Y3RvcihuYW1lKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgfVxuICAgIGRlc2NyaXB0b3IoX3RhcmdldCwgX2tleSwgX21ldGEpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBBbGlhc01ldGhvZERlc2NyaXB0b3IodGhpcy5uYW1lKTtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gYWxpYXNNZXRob2QobmFtZSkge1xuICAgIHJldHVybiBuZXcgQWxpYXNNZXRob2RCbHVlcHJpbnQobmFtZSk7XG59XG5jbGFzcyBBbGlhc0JsdWVwcmludCBleHRlbmRzIENvbXB1dGVkQmx1ZXByaW50IHtcbiAgICBjb25zdHJ1Y3RvcihuYW1lKSB7XG4gICAgICAgIGxldCBwYXJlbnQgPSBuYW1lLnNsaWNlKDAsIC0xKTtcbiAgICAgICAgbGV0IGxhc3QgPSBuYW1lW25hbWUubGVuZ3RoIC0gMV07XG4gICAgICAgIGxldCBnZXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gbmFtZS5yZWR1Y2UoKG9iaiwgbikgPT4gb2JqW25dLCB0aGlzKTtcbiAgICAgICAgfTtcbiAgICAgICAgbGV0IHNldCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgbGV0IHAgPSBwYXJlbnQucmVkdWNlKChvYmosIG4pID0+IG9ialtuXSwgdGhpcyk7XG4gICAgICAgICAgICBwW2xhc3RdID0gdmFsdWU7XG4gICAgICAgIH07XG4gICAgICAgIHN1cGVyKHsgZ2V0LCBzZXQgfSwgW25hbWVdKTtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB9XG4gICAgZGVzY3JpcHRvcih0YXJnZXQsIGtleSwgbWV0YSkge1xuICAgICAgICBpZiAodGhpcy5uYW1lWzBdID09PSBrZXkpIHRocm93IG5ldyBFcnJvcihgU2V0dGluZyBhbGlhcyAnJHtrZXl9JyBvbiBzZWxmYCk7XG4gICAgICAgIHJldHVybiBzdXBlci5kZXNjcmlwdG9yKHRhcmdldCwga2V5LCBtZXRhKTtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gYWxpYXMobmFtZSkge1xuICAgIHJldHVybiBuZXcgQWxpYXNCbHVlcHJpbnQobmFtZS5zcGxpdCgnLicpKTtcbn0iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpcHRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL2Rlc2NyaXB0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsQUFBTyxBQUFFLEFBQVMsQUFBRSxBQUFVLEFBQUUsQUFBTSxBQUFTLEFBQUM7O0FBRWhELEFBQU8sQUFBRSxBQUFpQixBQUFFLEFBQU0sQUFBWSxBQUFDLEFBRS9DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQTRCOzs7bUNBR2QsQUFBWSxNQUN0QixBQUFLLEFBQUUsQUFBQzs7O3FEQUNSLEFBQUk7O2NBQUMsQUFBSSxPQUFHLEFBQUksQUFBQyxBQUNuQixBQUFDO2VBRUQsQUFBTTs7OzZEQUFDLEFBQWMsUUFBRSxBQUFXLEtBQUUsQUFBYSxPQUMvQztZQUFJLEFBQUksT0FBVyxBQUFJLEtBQUMsQUFBSSxBQUFDLEFBRTdCLEFBQU07ZUFBQyxBQUFjLGVBQUMsQUFBTSxRQUFFLEFBQUc7d0JBQ25CLEFBQUksQUFDaEIsQUFBWTswQkFBRSxBQUFJLEFBQ2xCLEFBQUc7Z0NBQ0QsQUFBTTt1QkFBQyxBQUFJLEtBQUMsQUFBSSxBQUFDLEFBQUMsQUFDcEIsQUFBQyxBQUNGLEFBQUMsQUFBQyxBQUNMLEFBUHFDLEFBT3BDLEFBQ0Y7QUFQSyxBQUFVLEFBU2hCOzs7OztBQXJCb0MsQUFBVSxBQUc1Qzs7SUFrQnlCOzs7a0NBR2IsQUFBWSxNQUN0QixBQUFLLEFBQUUsQUFBQzs7O3NEQUNSLEFBQUk7O2VBQUMsQUFBSSxPQUFHLEFBQUksQUFBQyxBQUNuQixBQUFDO2VBRUQsQUFBVTs7O29FQUFDLEFBQWUsU0FBRSxBQUFZLE1BQUUsQUFBZ0IsT0FDeEQsQUFBTTtlQUFDLElBQUksQUFBcUIsc0JBQUMsQUFBSSxLQUFDLEFBQUksQUFBQyxBQUFDLEFBQzlDLEFBQUMsQUFDRjs7OztBQVhrQyxBQUFTLEFBRzFDLEFBVUYsQUFBTTs7cUJBQXNCLEFBQVksTUFDdEMsQUFBTTtXQUFDLElBQUksQUFBb0IscUJBQUMsQUFBSSxBQUFDLEFBQUMsQUFDeEMsQUFBQyxBQUVEOzs7SUFBcUI7Ozs0QkFHUCxBQUFjLE1BQ3hCOzs7WUFBSSxBQUFNLFNBQUcsQUFBSSxLQUFDLEFBQUssTUFBQyxBQUFDLEdBQUUsQ0FBQyxBQUFDLEFBQUMsQUFBQyxBQUMvQjtZQUFJLEFBQUksT0FBRyxBQUFJLEtBQUMsQUFBSSxLQUFDLEFBQU0sU0FBRyxBQUFDLEFBQUMsQUFBQyxBQUVqQztZQUFJLEFBQUcsTUFBRyxlQUNSLEFBQU07d0JBQU0sQUFBTSxpQkFBRSxBQUFHLEtBQUUsQUFBQyxHQUFQO3VCQUFZLEFBQUcsSUFBQyxBQUFDLEFBQUM7QUFBOUIsQUFBSSxlQUE0QixBQUFJLEFBQUMsQUFBQyxBQUMvQyxBQUFDLEFBQUMsQUFFRjs7WUFBSSxBQUFHLE1BQUcsYUFBb0IsQUFBVSxPQUN0QztnQkFBSSxBQUFDLFdBQVUsQUFBTSxpQkFBRSxBQUFHLEtBQUUsQUFBQyxHQUFQO3VCQUFZLEFBQUcsSUFBQyxBQUFDLEFBQUM7QUFBaEMsQUFBTSxlQUE0QixBQUFJLEFBQUMsQUFBQyxBQUNoRCxBQUFDO2NBQUMsQUFBSSxBQUFDLFFBQUcsQUFBSyxBQUFDLEFBQ2xCLEFBQUMsQUFBQyxBQUVGLEFBQUs7OztvRkFBQyxFQUFFLEFBQUcsVUFBRSxBQUFHLEFBQUUsWUFBRSxDQUFDLEFBQUksQUFBQyxBQUFDLEFBQUMsQUFDNUIsQUFBSTs7ZUFBQyxBQUFJLE9BQUcsQUFBSSxBQUFDLEFBQ25CLEFBQUM7ZUFFRCxBQUFVOzs7OERBQUMsQUFBYyxRQUFFLEFBQVcsS0FBRSxBQUFlLE1BQ3JELEFBQUUsQUFBQztZQUFDLEFBQUksS0FBQyxBQUFJLEtBQUMsQUFBQyxBQUFDLE9BQUssQUFBRyxBQUFDLEtBQUMsTUFBTSxJQUFJLEFBQUssQUFBQywyQkFBa0IsQUFBRyxBQUFXLEFBQUMsQUFBQyxBQUM1RSxBQUFNO2VBQUMsQUFBSyw2QkFBQyxBQUFVLHNCQUFDLEFBQU0sUUFBRSxBQUFHLEtBQUUsQUFBSSxBQUFDLEFBQUMsQUFDN0MsQUFBQyxBQUNGOzs7O0FBeEI0QixBQUFpQixBQUc1QyxBQXVCRixBQUFNOztlQUFnQixBQUFZLE1BQ2hDLEFBQU07V0FBQyxJQUFJLEFBQWMsZUFBQyxBQUFJLEtBQUMsQUFBSyxNQUFDLEFBQUcsQUFBQyxBQUFDLEFBQUMsQUFDN0MsQUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJsdWVwcmludCwgRGVzY3JpcHRvciB9IGZyb20gJy4vbWl4aW4nO1xuaW1wb3J0IHsgQ2xhc3NNZXRhIH0gZnJvbSAnLi9vYmplY3QnO1xuaW1wb3J0IHsgQ29tcHV0ZWRCbHVlcHJpbnQgfSBmcm9tICcuL2NvbXB1dGVkJztcblxuY2xhc3MgQWxpYXNNZXRob2REZXNjcmlwdG9yIGV4dGVuZHMgRGVzY3JpcHRvciB7XG4gIHByaXZhdGUgbmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgfVxuXG4gIGRlZmluZSh0YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIF9ob21lOiBPYmplY3QpIHtcbiAgICBsZXQgbmFtZSA9IDxzdHJpbmc+dGhpcy5uYW1lO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCB7XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0KHRoaXM6IHR5cGVvZiB0YXJnZXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbbmFtZV07XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgQWxpYXNNZXRob2RCbHVlcHJpbnQgZXh0ZW5kcyBCbHVlcHJpbnQge1xuICBwcml2YXRlIG5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gIH1cblxuICBkZXNjcmlwdG9yKF90YXJnZXQ6IE9iamVjdCwgX2tleTogc3RyaW5nLCBfbWV0YTogQ2xhc3NNZXRhKTogRGVzY3JpcHRvciB7XG4gICAgcmV0dXJuIG5ldyBBbGlhc01ldGhvZERlc2NyaXB0b3IodGhpcy5uYW1lKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWxpYXNNZXRob2QobmFtZTogc3RyaW5nKTogQmx1ZXByaW50IHtcbiAgcmV0dXJuIG5ldyBBbGlhc01ldGhvZEJsdWVwcmludChuYW1lKTtcbn1cblxuY2xhc3MgQWxpYXNCbHVlcHJpbnQgZXh0ZW5kcyBDb21wdXRlZEJsdWVwcmludCB7XG4gIHByaXZhdGUgbmFtZTogc3RyaW5nW107XG5cbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nW10pIHtcbiAgICBsZXQgcGFyZW50ID0gbmFtZS5zbGljZSgwLCAtMSk7XG4gICAgbGV0IGxhc3QgPSBuYW1lW25hbWUubGVuZ3RoIC0gMV07XG5cbiAgICBsZXQgZ2V0ID0gZnVuY3Rpb24odGhpczogYW55KSB7XG4gICAgICByZXR1cm4gbmFtZS5yZWR1Y2UoKG9iaiwgbikgPT4gb2JqW25dLCB0aGlzKTtcbiAgICB9O1xuXG4gICAgbGV0IHNldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgdmFsdWU6IGFueSkge1xuICAgICAgbGV0IHAgPSBwYXJlbnQucmVkdWNlKChvYmosIG4pID0+IG9ialtuXSwgdGhpcyk7XG4gICAgICBwW2xhc3RdID0gdmFsdWU7XG4gICAgfTtcblxuICAgIHN1cGVyKHsgZ2V0LCBzZXQgfSwgW25hbWVdKTtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICB9XG5cbiAgZGVzY3JpcHRvcih0YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIG1ldGE6IENsYXNzTWV0YSk6IERlc2NyaXB0b3Ige1xuICAgIGlmICh0aGlzLm5hbWVbMF0gPT09IGtleSkgdGhyb3cgbmV3IEVycm9yKGBTZXR0aW5nIGFsaWFzICcke2tleX0nIG9uIHNlbGZgKTtcbiAgICByZXR1cm4gc3VwZXIuZGVzY3JpcHRvcih0YXJnZXQsIGtleSwgbWV0YSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFsaWFzKG5hbWU6IHN0cmluZyk6IEJsdWVwcmludCB7XG4gIHJldHVybiBuZXcgQWxpYXNCbHVlcHJpbnQobmFtZS5zcGxpdCgnLicpKTtcbn1cbiJdfQ==

@@ -403,3 +403,3 @@ "use strict";

var superMethod = home[methodName];
var func = function () {
var func = function func() {
for (var _len3 = arguments.length, args = Array(_len3), _key4 = 0; _key4 < _len3; _key4++) {

@@ -438,2 +438,2 @@ args[_key4] = arguments[_key4];

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9taXhpbi5qcyJdLCJuYW1lcyI6WyJDTEFTU19NRVRBIiwiZGljdCIsImFzc2lnbiIsIkNsYXNzTWV0YSIsIkluc3RhbmNlTWV0YSIsInR1cmJvY2hhcmdlIiwiUk9PVCIsImlzQXJyYXkiLCJBcnJheSIsIkRFU0NSSVBUT1IiLCJCTFVFUFJJTlQiLCJEZXNjcmlwdG9yIiwiQmx1ZXByaW50IiwiTWl4aW4iLCJleHRlbnNpb25zIiwibWl4aW5zIiwiY29uY2F0ZW5hdGVkUHJvcGVydGllcyIsIm1lcmdlZFByb3BlcnRpZXMiLCJkZXBlbmRlbmNpZXMiLCJyZW9wZW4iLCJwdXNoIiwiY3JlYXRlIiwiYXJncyIsImxlbmd0aCIsImRlcHMiLCJzbGljZSIsIm1hcCIsInRvTWl4aW4iLCJvYmoiLCJtZXRhIiwiZm9yIiwiZ2V0QXBwbGllZE1peGlucyIsImRldGVjdCIsImluZGV4T2YiLCJoYXNBcHBsaWVkTWl4aW4iLCJjb25jYXQiLCJyYXdDb25jYXQiLCJ1bmRlZmluZWQiLCJtZXJnZWQiLCJyYXdNZXJnZWQiLCJub3JtYWxpemVkIiwiT2JqZWN0Iiwia2V5cyIsInJlZHVjZSIsImtleSIsInZhbHVlIiwiTWV0aG9kQmx1ZXByaW50IiwiRGF0YUJsdWVwcmludCIsImFwcGx5IiwidGFyZ2V0IiwiZm9yRWFjaCIsIm0iLCJtZXJnZVByb3BlcnRpZXMiLCJhZGRNaXhpbiIsInNlYWwiLCJyZXNlYWwiLCJleHRlbmRQcm90b3R5cGUiLCJPcmlnaW5hbCIsInByb3RvdHlwZSIsImV4dGVuZFByb3RvdHlwZU9udG8iLCJTdWJjbGFzcyIsIlBhcmVudCIsImV4dGVuZFN0YXRpYyIsIlRhcmdldCIsImdldFByb3RvdHlwZU9mIiwiYWRkU3RhdGljTWl4aW4iLCJwYXJlbnQiLCJhZGRBcHBsaWVkTWl4aW4iLCJhZGRNZXJnZWRQcm9wZXJ0eSIsImsiLCJhZGRDb25jYXRlbmF0ZWRQcm9wZXJ0eSIsIlZhbHVlRGVzY3JpcHRvciIsImdldENvbmNhdGVuYXRlZFByb3BlcnRpZXMiLCJkZWZpbmUiLCJnZXRNZXJnZWRQcm9wZXJ0aWVzIiwiZXh0ZW5zaW9uIiwiZGVzYyIsImRlc2NyaXB0b3IiLCJleHRlbmQiLCJTdXBlciIsImZyb21QYXJlbnQiLCJhZGRTdWJjbGFzcyIsImFwcGx5QWxsTWl4aW5zIiwicmVsaW5rU3ViY2xhc3NlcyIsImdldFN1YmNsYXNzZXMiLCJyZXNldCIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIl9ob21lIiwiZGVmaW5lUHJvcGVydHkiLCJfdGFyZ2V0IiwiY2xhc3NNZXRhIiwiaGFzQ29uY2F0ZW5hdGVkUHJvcGVydHkiLCJnZXRDb25jYXRlbmF0ZWRQcm9wZXJ0eSIsImhhc01lcmdlZFByb3BlcnR5IiwiZ2V0TWVyZ2VkUHJvcGVydHkiLCJBY2Nlc3NvckJsdWVwcmludCIsImdldCIsInNldCIsIl9rZXkiLCJfY2xhc3NNZXRhIiwiTWV0aG9kRGVzY3JpcHRvciIsImhvbWUiLCJ3cmFwTWV0aG9kIiwibWV0aG9kTmFtZSIsIm9yaWdpbmFsIiwibWF5YmVXcmFwIiwic3VwZXJNZXRob2QiLCJmdW5jIiwibGFzdFN1cGVyIiwiX3N1cGVyIiwiX193cmFwcGVkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7UUE0SU8sQUFBUztRQVVULEFBQVM7UUFTVCxBQUFTO1FBcUVULEFBQVM7O0FBcE9oQixBQUFTLEFBQWtCOztBQUMzQixBQUFTLEFBQU0sQUFBYzs7QUFDN0IsQUFBUyxBQUFXLEFBQWMsQUFBbUI7O0FBQ3JELEFBQVMsQUFBWTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUNiLEEsVSxBQUFZLE1BQVosQSxBQUNSOztBQUFPLElBQU0sa0NBQU4sQUFBbUIsQUFDMUI7QUFBTyxJQUFNLGdDQUFOLEFBQWtCLEFBQ3pCO0lBQUEsQUFBYSxrQ0FDVCxzQkFBYzswQkFDVjs7U0FBQSxBQUFLLDBDQUFMLEFBQStDLEFBQ2xEO0FBSEwsQUFLQTtJQUFBLEFBQWEsZ0NBQ1QscUJBQWM7MEJBQ1Y7O1NBQUEsQUFBSyww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Q3JCO2FBQUEsQUFBSyxBQUFTLEFBQ2Q7WUFBSSxBQUNBO21CQUFPLFNBQUEsQUFBUyxNQUFULEFBQWUsTUFBdEIsQUFBTyxBQUFxQixBQUMvQjtBQUZELGtCQUVVLEFBQ047aUJBQUEsQUFBSyxTQUFMLEFBQWMsQUFDakI7QUFDSjtBQVRELEFBVUgiLCJmaWxlIjoibGliL21peGluLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ0xBU1NfTUVUQSB9IGZyb20gJ0BnbGltbWVyL29iamVjdC1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgZGljdCwgYXNzaWduIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBDbGFzc01ldGEsIEluc3RhbmNlTWV0YSwgdHVyYm9jaGFyZ2UgfSBmcm9tICcuL29iamVjdCc7XG5pbXBvcnQgeyBST09UIH0gZnJvbSAnLi91dGlscyc7XG5jb25zdCB7IGlzQXJyYXkgfSA9IEFycmF5O1xuZXhwb3J0IGNvbnN0IERFU0NSSVBUT1IgPSBcIjVkOTBmODRmLTkwOGUtNGE0Mi05NzQ5LTNkMGY1MjNjMjYyY1wiO1xuZXhwb3J0IGNvbnN0IEJMVUVQUklOVCA9IFwiOGQ5N2NmNWYtZGI5ZS00OGQ4LWE2YjItN2E3NWI3MTcwODA1XCI7XG5leHBvcnQgY2xhc3MgRGVzY3JpcHRvciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXNbXCI1ZDkwZjg0Zi05MDhlLTRhNDItOTc0OS0zZDBmNTIzYzI2MmNcIl0gPSB0cnVlO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBCbHVlcHJpbnQge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzW1wiOGQ5N2NmNWYtZGI5ZS00OGQ4LWE2YjItN2E3NWI3MTcwODA1XCJdID0gdHJ1ZTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgTWl4aW4ge1xuICAgIGNvbnN0cnVjdG9yKGV4dGVuc2lvbnMsIG1peGlucykge1xuICAgICAgICB0aGlzLmV4dGVuc2lvbnMgPSBudWxsO1xuICAgICAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSBbXTtcbiAgICAgICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzID0gW107XG4gICAgICAgIHRoaXMuZGVwZW5kZW5jaWVzID0gW107XG4gICAgICAgIHRoaXMucmVvcGVuKGV4dGVuc2lvbnMpO1xuICAgICAgICB0aGlzLmRlcGVuZGVuY2llcy5wdXNoKC4uLm1peGlucyk7XG4gICAgfVxuICAgIHN0YXRpYyBjcmVhdGUoLi4uYXJncykge1xuICAgICAgICBsZXQgZXh0ZW5zaW9ucyA9IGFyZ3NbYXJncy5sZW5ndGggLSAxXTtcbiAgICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IHRoaXMoe30sIFtdKTtcbiAgICAgICAgfSBlbHNlIGlmIChleHRlbnNpb25zIGluc3RhbmNlb2YgTWl4aW4pIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgdGhpcyh7fSwgYXJncyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgZGVwcyA9IGFyZ3Muc2xpY2UoMCwgLTEpLm1hcCh0b01peGluKTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgdGhpcyhleHRlbnNpb25zLCBkZXBzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzdGF0aWMgbWl4aW5zKG9iaikge1xuICAgICAgICBpZiAodHlwZW9mIG9iaiAhPT0gJ29iamVjdCcgfHwgb2JqID09PSBudWxsKSByZXR1cm4gW107XG4gICAgICAgIGxldCBtZXRhID0gQ2xhc3NNZXRhLmZvcihvYmopO1xuICAgICAgICBpZiAoIW1ldGEpIHJldHVybiBbXTtcbiAgICAgICAgcmV0dXJuIG1ldGEuZ2V0QXBwbGllZE1peGlucygpO1xuICAgIH1cbiAgICBkZXRlY3Qob2JqKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JyB8fCBvYmogPT09IG51bGwpIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKG9iaiBpbnN0YW5jZW9mIE1peGluKSB7XG4gICAgICAgICAgICByZXR1cm4gb2JqLmRlcGVuZGVuY2llcy5pbmRleE9mKHRoaXMpICE9PSAtMTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbWV0YSA9IENsYXNzTWV0YS5mb3Iob2JqKTtcbiAgICAgICAgcmV0dXJuICEhbWV0YSAmJiBtZXRhLmhhc0FwcGxpZWRNaXhpbih0aGlzKTtcbiAgICB9XG4gICAgcmVvcGVuKGV4dGVuc2lvbnMpIHtcbiAgICAgICAgaWYgKHRoaXMuZXh0ZW5zaW9ucykge1xuICAgICAgICAgICAgdGhpcy5kZXBlbmRlbmNpZXMucHVzaCh0b01peGluKHRoaXMuZXh0ZW5zaW9ucykpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgZXh0ZW5zaW9ucyA9PT0gJ29iamVjdCcgJiYgJ2NvbmNhdGVuYXRlZFByb3BlcnRpZXMnIGluIGV4dGVuc2lvbnMpIHtcbiAgICAgICAgICAgIGxldCBjb25jYXQ7XG4gICAgICAgICAgICBsZXQgcmF3Q29uY2F0ID0gZXh0ZW5zaW9ucy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzO1xuICAgICAgICAgICAgaWYgKGlzQXJyYXkocmF3Q29uY2F0KSkge1xuICAgICAgICAgICAgICAgIGNvbmNhdCA9IHJhd0NvbmNhdC5zbGljZSgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChyYXdDb25jYXQgPT09IG51bGwgfHwgcmF3Q29uY2F0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBjb25jYXQgPSBbXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uY2F0ID0gW3Jhd0NvbmNhdF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWxldGUgZXh0ZW5zaW9ucy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzO1xuICAgICAgICAgICAgdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzID0gY29uY2F0O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgZXh0ZW5zaW9ucyA9PT0gJ29iamVjdCcgJiYgJ21lcmdlZFByb3BlcnRpZXMnIGluIGV4dGVuc2lvbnMpIHtcbiAgICAgICAgICAgIGxldCBtZXJnZWQ7XG4gICAgICAgICAgICBsZXQgcmF3TWVyZ2VkID0gZXh0ZW5zaW9ucy5tZXJnZWRQcm9wZXJ0aWVzO1xuICAgICAgICAgICAgaWYgKGlzQXJyYXkocmF3TWVyZ2VkKSkge1xuICAgICAgICAgICAgICAgIG1lcmdlZCA9IHJhd01lcmdlZC5zbGljZSgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChyYXdNZXJnZWQgPT09IG51bGwgfHwgcmF3TWVyZ2VkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBtZXJnZWQgPSBbXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbWVyZ2VkID0gW3Jhd01lcmdlZF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWxldGUgZXh0ZW5zaW9ucy5tZXJnZWRQcm9wZXJ0aWVzO1xuICAgICAgICAgICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzID0gbWVyZ2VkO1xuICAgICAgICB9XG4gICAgICAgIGxldCBub3JtYWxpemVkID0gT2JqZWN0LmtleXMoZXh0ZW5zaW9ucykucmVkdWNlKChvYmosIGtleSkgPT4ge1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gZXh0ZW5zaW9uc1trZXldO1xuICAgICAgICAgICAgc3dpdGNoICh0eXBlb2YgdmFsdWUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdmdW5jdGlvbic6XG4gICAgICAgICAgICAgICAgICAgIG9ialtrZXldID0gbmV3IE1ldGhvZEJsdWVwcmludCh7IHZhbHVlIH0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgJiYgQkxVRVBSSU5UIGluIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvYmpba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgb2JqW2tleV0gPSBuZXcgRGF0YUJsdWVwcmludCh7IHZhbHVlIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgICAgfSwgZGljdCgpKTtcbiAgICAgICAgdGhpcy5leHRlbnNpb25zID0gZGljdCgpO1xuICAgICAgICBhc3NpZ24odGhpcy5leHRlbnNpb25zLCB0dXJib2NoYXJnZShub3JtYWxpemVkKSk7XG4gICAgfVxuICAgIGFwcGx5KHRhcmdldCkge1xuICAgICAgICBsZXQgbWV0YSA9IHRhcmdldFtDTEFTU19NRVRBXSA9IHRhcmdldFtDTEFTU19NRVRBXSB8fCBuZXcgQ2xhc3NNZXRhKCk7XG4gICAgICAgIHRoaXMuZGVwZW5kZW5jaWVzLmZvckVhY2gobSA9PiBtLmFwcGx5KHRhcmdldCkpO1xuICAgICAgICB0aGlzLm1lcmdlUHJvcGVydGllcyh0YXJnZXQsIHRhcmdldCwgbWV0YSk7XG4gICAgICAgIG1ldGEuYWRkTWl4aW4odGhpcyk7XG4gICAgICAgIG1ldGEuc2VhbCgpO1xuICAgICAgICBtZXRhLnJlc2VhbCh0YXJnZXQpO1xuICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgIH1cbiAgICBleHRlbmRQcm90b3R5cGUoT3JpZ2luYWwpIHtcbiAgICAgICAgT3JpZ2luYWwucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShPcmlnaW5hbC5wcm90b3R5cGUpO1xuICAgICAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKG0gPT4gbS5leHRlbmRQcm90b3R5cGUoT3JpZ2luYWwpKTtcbiAgICAgICAgdGhpcy5leHRlbmRQcm90b3R5cGVPbnRvKE9yaWdpbmFsLCBPcmlnaW5hbCk7XG4gICAgfVxuICAgIGV4dGVuZFByb3RvdHlwZU9udG8oU3ViY2xhc3MsIFBhcmVudCkge1xuICAgICAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKG0gPT4gbS5leHRlbmRQcm90b3R5cGVPbnRvKFN1YmNsYXNzLCBQYXJlbnQpKTtcbiAgICAgICAgdGhpcy5tZXJnZVByb3BlcnRpZXMoU3ViY2xhc3MucHJvdG90eXBlLCBQYXJlbnQucHJvdG90eXBlLCBTdWJjbGFzc1tDTEFTU19NRVRBXSk7XG4gICAgICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLmFkZE1peGluKHRoaXMpO1xuICAgIH1cbiAgICBleHRlbmRTdGF0aWMoVGFyZ2V0KSB7XG4gICAgICAgIHRoaXMuZGVwZW5kZW5jaWVzLmZvckVhY2gobSA9PiBtLmV4dGVuZFN0YXRpYyhUYXJnZXQpKTtcbiAgICAgICAgdGhpcy5tZXJnZVByb3BlcnRpZXMoVGFyZ2V0LCBPYmplY3QuZ2V0UHJvdG90eXBlT2YoVGFyZ2V0KSwgVGFyZ2V0W0NMQVNTX01FVEFdW0NMQVNTX01FVEFdKTtcbiAgICAgICAgVGFyZ2V0W0NMQVNTX01FVEFdLmFkZFN0YXRpY01peGluKHRoaXMpO1xuICAgIH1cbiAgICBtZXJnZVByb3BlcnRpZXModGFyZ2V0LCBwYXJlbnQsIG1ldGEpIHtcbiAgICAgICAgaWYgKG1ldGEuaGFzQXBwbGllZE1peGluKHRoaXMpKSByZXR1cm47XG4gICAgICAgIG1ldGEuYWRkQXBwbGllZE1peGluKHRoaXMpO1xuICAgICAgICB0aGlzLm1lcmdlZFByb3BlcnRpZXMuZm9yRWFjaChrID0+IG1ldGEuYWRkTWVyZ2VkUHJvcGVydHkoaywgcGFyZW50W2tdKSk7XG4gICAgICAgIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcy5mb3JFYWNoKGsgPT4gbWV0YS5hZGRDb25jYXRlbmF0ZWRQcm9wZXJ0eShrLCBbXSkpO1xuICAgICAgICBuZXcgVmFsdWVEZXNjcmlwdG9yKHsgdmFsdWU6IG1ldGEuZ2V0Q29uY2F0ZW5hdGVkUHJvcGVydGllcygpIH0pLmRlZmluZSh0YXJnZXQsICdjb25jYXRlbmF0ZWRQcm9wZXJ0aWVzJyk7XG4gICAgICAgIG5ldyBWYWx1ZURlc2NyaXB0b3IoeyB2YWx1ZTogbWV0YS5nZXRNZXJnZWRQcm9wZXJ0aWVzKCkgfSkuZGVmaW5lKHRhcmdldCwgJ21lcmdlZFByb3BlcnRpZXMnKTtcbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5leHRlbnNpb25zKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgICBsZXQgZXh0ZW5zaW9uID0gdGhpcy5leHRlbnNpb25zW2tleV07XG4gICAgICAgICAgICBsZXQgZGVzYyA9IGV4dGVuc2lvbi5kZXNjcmlwdG9yKHRhcmdldCwga2V5LCBtZXRhKTtcbiAgICAgICAgICAgIGRlc2MuZGVmaW5lKHRhcmdldCwga2V5LCBwYXJlbnQpO1xuICAgICAgICB9KTtcbiAgICAgICAgbmV3IFZhbHVlRGVzY3JpcHRvcih7IHZhbHVlOiBST09UIH0pLmRlZmluZSh0YXJnZXQsICdfc3VwZXInKTtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gZXh0ZW5kKFBhcmVudCwgLi4uZXh0ZW5zaW9ucykge1xuICAgIGxldCBTdXBlciA9IFBhcmVudDtcbiAgICBsZXQgU3ViY2xhc3MgPSBjbGFzcyBleHRlbmRzIFN1cGVyIHt9O1xuICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdID0gSW5zdGFuY2VNZXRhLmZyb21QYXJlbnQoUGFyZW50W0NMQVNTX01FVEFdKTtcbiAgICBsZXQgbWl4aW5zID0gZXh0ZW5zaW9ucy5tYXAodG9NaXhpbik7XG4gICAgUGFyZW50W0NMQVNTX01FVEFdLmFkZFN1YmNsYXNzKFN1YmNsYXNzKTtcbiAgICBtaXhpbnMuZm9yRWFjaChtID0+IFN1YmNsYXNzW0NMQVNTX01FVEFdLmFkZE1peGluKG0pKTtcbiAgICBDbGFzc01ldGEuYXBwbHlBbGxNaXhpbnMoU3ViY2xhc3MsIFBhcmVudCk7XG4gICAgcmV0dXJuIFN1YmNsYXNzO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJlbGlua1N1YmNsYXNzZXMoUGFyZW50KSB7XG4gICAgUGFyZW50W0NMQVNTX01FVEFdLmdldFN1YmNsYXNzZXMoKS5mb3JFYWNoKFN1YmNsYXNzID0+IHtcbiAgICAgICAgU3ViY2xhc3NbQ0xBU1NfTUVUQV0ucmVzZXQoUGFyZW50W0NMQVNTX01FVEFdKTtcbiAgICAgICAgU3ViY2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShQYXJlbnQucHJvdG90eXBlKTtcbiAgICAgICAgQ2xhc3NNZXRhLmFwcGx5QWxsTWl4aW5zKFN1YmNsYXNzLCBQYXJlbnQpO1xuICAgICAgICAvLyByZWN1cnNlIGludG8gc3ViLXN1YmNsYXNzZXNcbiAgICAgICAgcmVsaW5rU3ViY2xhc3NlcyhTdWJjbGFzcyk7XG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gdG9NaXhpbihleHRlbnNpb24pIHtcbiAgICBpZiAoZXh0ZW5zaW9uIGluc3RhbmNlb2YgTWl4aW4pIHJldHVybiBleHRlbnNpb247ZWxzZSByZXR1cm4gbmV3IE1peGluKGV4dGVuc2lvbiwgW10pO1xufVxuY2xhc3MgVmFsdWVEZXNjcmlwdG9yIGV4dGVuZHMgRGVzY3JpcHRvciB7XG4gICAgY29uc3RydWN0b3IoeyBlbnVtZXJhYmxlID0gdHJ1ZSwgY29uZmlndXJhYmxlID0gdHJ1ZSwgd3JpdGFibGUgPSB0cnVlLCB2YWx1ZSB9KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuZW51bWVyYWJsZSA9IGVudW1lcmFibGU7XG4gICAgICAgIHRoaXMuY29uZmlndXJhYmxlID0gY29uZmlndXJhYmxlO1xuICAgICAgICB0aGlzLndyaXRhYmxlID0gd3JpdGFibGU7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG4gICAgZGVmaW5lKHRhcmdldCwga2V5LCBfaG9tZSkge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHtcbiAgICAgICAgICAgIGVudW1lcmFibGU6IHRoaXMuZW51bWVyYWJsZSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdGhpcy5jb25maWd1cmFibGUsXG4gICAgICAgICAgICB3cml0YWJsZTogdGhpcy53cml0YWJsZSxcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLnZhbHVlXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBEYXRhQmx1ZXByaW50IGV4dGVuZHMgQmx1ZXByaW50IHtcbiAgICBjb25zdHJ1Y3Rvcih7IGVudW1lcmFibGUgPSB0cnVlLCBjb25maWd1cmFibGUgPSB0cnVlLCB3cml0YWJsZSA9IHRydWUsIHZhbHVlIH0pIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5lbnVtZXJhYmxlID0gZW51bWVyYWJsZTtcbiAgICAgICAgdGhpcy5jb25maWd1cmFibGUgPSBjb25maWd1cmFibGU7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy53cml0YWJsZSA9IHdyaXRhYmxlO1xuICAgIH1cbiAgICBkZXNjcmlwdG9yKF90YXJnZXQsIGtleSwgY2xhc3NNZXRhKSB7XG4gICAgICAgIGxldCB7IGVudW1lcmFibGUsIGNvbmZpZ3VyYWJsZSwgd3JpdGFibGUsIHZhbHVlIH0gPSB0aGlzO1xuICAgICAgICBpZiAoY2xhc3NNZXRhLmhhc0NvbmNhdGVuYXRlZFByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgIGNsYXNzTWV0YS5hZGRDb25jYXRlbmF0ZWRQcm9wZXJ0eShrZXksIHZhbHVlKTtcbiAgICAgICAgICAgIHZhbHVlID0gY2xhc3NNZXRhLmdldENvbmNhdGVuYXRlZFByb3BlcnR5KGtleSk7XG4gICAgICAgIH0gZWxzZSBpZiAoY2xhc3NNZXRhLmhhc01lcmdlZFByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgIGNsYXNzTWV0YS5hZGRNZXJnZWRQcm9wZXJ0eShrZXksIHZhbHVlKTtcbiAgICAgICAgICAgIHZhbHVlID0gY2xhc3NNZXRhLmdldE1lcmdlZFByb3BlcnR5KGtleSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBWYWx1ZURlc2NyaXB0b3IoeyBlbnVtZXJhYmxlLCBjb25maWd1cmFibGUsIHdyaXRhYmxlLCB2YWx1ZSB9KTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgQWNjZXNzb3JCbHVlcHJpbnQgZXh0ZW5kcyBCbHVlcHJpbnQge1xuICAgIGNvbnN0cnVjdG9yKHsgZW51bWVyYWJsZSA9IHRydWUsIGNvbmZpZ3VyYWJsZSA9IHRydWUsIGdldCwgc2V0IH0pIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5lbnVtZXJhYmxlID0gZW51bWVyYWJsZTtcbiAgICAgICAgdGhpcy5jb25maWd1cmFibGUgPSBjb25maWd1cmFibGU7XG4gICAgICAgIHRoaXMuZ2V0ID0gZ2V0O1xuICAgICAgICB0aGlzLnNldCA9IHNldDtcbiAgICB9XG4gICAgZGVzY3JpcHRvcihfdGFyZ2V0LCBfa2V5LCBfY2xhc3NNZXRhKSB7XG4gICAgICAgIHJldHVybiBuZXcgVmFsdWVEZXNjcmlwdG9yKHtcbiAgICAgICAgICAgIGVudW1lcmFibGU6IHRoaXMuZW51bWVyYWJsZSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdGhpcy5jb25maWd1cmFibGUsXG4gICAgICAgICAgICBnZXQ6IHRoaXMuZ2V0LFxuICAgICAgICAgICAgc2V0OiB0aGlzLnNldFxuICAgICAgICB9KTtcbiAgICB9XG59XG5jbGFzcyBNZXRob2REZXNjcmlwdG9yIGV4dGVuZHMgVmFsdWVEZXNjcmlwdG9yIHtcbiAgICBkZWZpbmUodGFyZ2V0LCBrZXksIGhvbWUpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHdyYXBNZXRob2QoaG9tZSwga2V5LCB0aGlzLnZhbHVlKTtcbiAgICAgICAgc3VwZXIuZGVmaW5lKHRhcmdldCwga2V5LCBob21lKTtcbiAgICB9XG59XG5jbGFzcyBNZXRob2RCbHVlcHJpbnQgZXh0ZW5kcyBEYXRhQmx1ZXByaW50IHtcbiAgICBkZXNjcmlwdG9yKHRhcmdldCwga2V5LCBjbGFzc01ldGEpIHtcbiAgICAgICAgbGV0IGRlc2MgPSBzdXBlci5kZXNjcmlwdG9yKHRhcmdldCwga2V5LCBjbGFzc01ldGEpO1xuICAgICAgICByZXR1cm4gbmV3IE1ldGhvZERlc2NyaXB0b3IoZGVzYyk7XG4gICAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIHdyYXBNZXRob2QoaG9tZSwgbWV0aG9kTmFtZSwgb3JpZ2luYWwpIHtcbiAgICBpZiAoIShtZXRob2ROYW1lIGluIGhvbWUpKSByZXR1cm4gbWF5YmVXcmFwKG9yaWdpbmFsKTtcbiAgICBsZXQgc3VwZXJNZXRob2QgPSBob21lW21ldGhvZE5hbWVdO1xuICAgIGxldCBmdW5jID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgaWYgKCF0aGlzKSByZXR1cm4gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgIGxldCBsYXN0U3VwZXIgPSB0aGlzLl9zdXBlcjtcbiAgICAgICAgdGhpcy5fc3VwZXIgPSBzdXBlck1ldGhvZDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMuX3N1cGVyID0gbGFzdFN1cGVyO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBmdW5jLl9fd3JhcHBlZCA9IHRydWU7XG4gICAgcmV0dXJuIGZ1bmM7XG59XG5mdW5jdGlvbiBtYXliZVdyYXAob3JpZ2luYWwpIHtcbiAgICBpZiAoJ19fd3JhcHBlZCcgaW4gb3JpZ2luYWwpIHJldHVybiBvcmlnaW5hbDtcbiAgICByZXR1cm4gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgaWYgKCF0aGlzKSByZXR1cm4gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgIGxldCBsYXN0U3VwZXIgPSB0aGlzLl9zdXBlcjtcbiAgICAgICAgdGhpcy5fc3VwZXIgPSBST09UO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy5fc3VwZXIgPSBsYXN0U3VwZXI7XG4gICAgICAgIH1cbiAgICB9O1xufSJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWl4aW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL21peGluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUEsQUFBTyxBQUFFLEFBQVUsQUFBRSxBQUFNLEFBQTJCLEFBQUM7O0FBQ3ZELEFBQU8sQUFBUSxBQUFJLEFBQUUsQUFBTSxBQUFFLEFBQU0sQUFBZSxBQUFDOztBQUNuRCxBQUFzQixBQUVwQixBQUFTLEFBQ1QsQUFBWSxBQUNaLEFBQVcsQUFDWixBQUFNLEFBQVUsQUFBQzs7QUFFbEIsQUFBTyxBQUFFLEFBQUksQUFBRSxBQUFNLEFBQVMsQUFBQyxBQUcvQixBQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQUUsQUFBTyxBQUFFLFVBQUcsQUFBSyxBQUFDLE1BRTFCLEFBQU07O0FBQUMsSUFBTSxBQUFVLGtDQUFHLEFBQXNDLEFBQUMsQUFDakUsQUFBTTtBQUFDLElBQU0sQUFBUyxnQ0FBSSxBQUFzQyxBQUFDLEFBRWpFLEFBQU07SUFBTix3REFDRTs7O1NBQXNDLDBDQUFHLEFBQUksQUFBQyxBQUVoRCxBQUFDO0FBRUQsQUFBTTtJQUFOLHFEQUNFOzs7U0FBc0MsMENBQUcsQUFBSSxBQUFDLEFBRWhELEFBQUM7QUFTRCxBQUFNO0lBNEJKO21CQUFZLEFBQXNCLFlBQUUsQUFBZSxRQTNCM0M7Ozs7O2FBQVUsYUFBc0IsQUFBSSxBQUFDLEFBQ3JDO2FBQXNCLHlCQUFhLEFBQUUsQUFBQyxBQUN0QzthQUFnQixtQkFBYSxBQUFFLEFBQUMsQUFDaEM7YUFBWSxlQUFZLEFBQUUsQUFBQyxBQXlCakMsQUFBSTthQUFDLEFBQU0sT0FBQyxBQUFVLEFBQUMsQUFBQyxBQUN4QixBQUFJOzhCQUFDLEFBQVksY0FBQyxBQUFJLEFBQUMsMEJBQUcsQUFBTSxBQUFDLEFBQUMsQUFDcEMsQUFBQyxBQXpCRCxBQUFNOzs7VUFBQyxBQUFNLEFB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QyxBQUFJLE1BQUUsQUFBSSxBQUFDLEFBQUMsQUFDcEMsQUFBQztrQkFBUyxBQUFDLEFBQ1QsQUFBSTtpQkFBQyxBQUFNLFNBQUcsQUFBUyxBQUFDLEFBQzFCLEFBQUMsQUFDSCxBQUFDLEFBQUMsQUFDSjtBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ0xBU1NfTUVUQSB9IGZyb20gJ0BnbGltbWVyL29iamVjdC1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgRGljdCwgZGljdCwgYXNzaWduIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgR2xpbW1lck9iamVjdCwge1xuICBHbGltbWVyT2JqZWN0RmFjdG9yeSxcbiAgQ2xhc3NNZXRhLFxuICBJbnN0YW5jZU1ldGEsXG4gIHR1cmJvY2hhcmdlXG59IGZyb20gJy4vb2JqZWN0JztcblxuaW1wb3J0IHsgUk9PVCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgT3B0aW9uIH0gZnJvbSBcIkBnbGltbWVyL2ludGVyZmFjZXNcIjtcblxuY29uc3QgeyBpc0FycmF5IH0gPSBBcnJheTtcblxuZXhwb3J0IGNvbnN0IERFU0NSSVBUT1IgPSBcIjVkOTBmODRmLTkwOGUtNGE0Mi05NzQ5LTNkMGY1MjNjMjYyY1wiO1xuZXhwb3J0IGNvbnN0IEJMVUVQUklOVCAgPSBcIjhkOTdjZjVmLWRiOWUtNDhkOC1hNmIyLTdhNzViNzE3MDgwNVwiO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRGVzY3JpcHRvciB7XG4gIFwiNWQ5MGY4NGYtOTA4ZS00YTQyLTk3NDktM2QwZjUyM2MyNjJjXCIgPSB0cnVlO1xuICBhYnN0cmFjdCBkZWZpbmUocHJvdG90eXBlOiBPYmplY3QsIGtleTogc3RyaW5nLCBob21lOiBPYmplY3QpOiB2b2lkO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmx1ZXByaW50IHtcbiAgXCI4ZDk3Y2Y1Zi1kYjllLTQ4ZDgtYTZiMi03YTc1YjcxNzA4MDVcIiA9IHRydWU7XG4gIGFic3RyYWN0IGRlc2NyaXB0b3IodGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBjbGFzc01ldGE6IENsYXNzTWV0YSk6IERlc2NyaXB0b3I7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXh0ZW5zaW9ucyB7XG4gIGNvbmNhdGVuYXRlZFByb3BlcnRpZXM/OiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGw7XG4gIG1lcmdlZFByb3BlcnRpZXM/OiBzdHJpbmdbXSB8IHN0cmluZztcbiAgX3N1cGVyPzogRnVuY3Rpb247XG4gIFtpbmRleDogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgY2xhc3MgTWl4aW4ge1xuICBwcml2YXRlIGV4dGVuc2lvbnM6IE9wdGlvbjxEaWN0PGFueT4+ID0gbnVsbDtcbiAgcHJpdmF0ZSBjb25jYXRlbmF0ZWRQcm9wZXJ0aWVzOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIG1lcmdlZFByb3BlcnRpZXM6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgZGVwZW5kZW5jaWVzOiBNaXhpbltdID0gW107XG5cbiAgc3RhdGljIGNyZWF0ZSguLi5hcmdzOiAoTWl4aW4gfCBFeHRlbnNpb25zKVtdKSB7XG4gICAgbGV0IGV4dGVuc2lvbnMgPSBhcmdzW2FyZ3MubGVuZ3RoIC0gMV07XG5cbiAgICBpZiAoYXJncy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBuZXcgdGhpcyh7fSwgW10pO1xuICAgIH0gZWxzZSBpZiAoZXh0ZW5zaW9ucyBpbnN0YW5jZW9mIE1peGluKSB7XG4gICAgICByZXR1cm4gbmV3IHRoaXMoe30sIDxNaXhpbltdPmFyZ3MpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgZGVwcyA9IGFyZ3Muc2xpY2UoMCwgLTEpLm1hcCh0b01peGluKTtcbiAgICAgIHJldHVybiBuZXcgdGhpcyg8RXh0ZW5zaW9ucz5leHRlbnNpb25zLCBkZXBzKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgbWl4aW5zKG9iajogYW55KTogTWl4aW5bXSB7XG4gICAgaWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnIHx8IG9iaiA9PT0gbnVsbCkgcmV0dXJuIFtdO1xuXG4gICAgbGV0IG1ldGEgPSBDbGFzc01ldGEuZm9yKG9iaik7XG4gICAgaWYgKCFtZXRhKSByZXR1cm4gW107XG5cbiAgICByZXR1cm4gbWV0YS5nZXRBcHBsaWVkTWl4aW5zKCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihleHRlbnNpb25zOiBFeHRlbnNpb25zLCBtaXhpbnM6IE1peGluW10pIHtcbiAgICB0aGlzLnJlb3BlbihleHRlbnNpb25zKTtcbiAgICB0aGlzLmRlcGVuZGVuY2llcy5wdXNoKC4uLm1peGlucyk7XG4gIH1cblxuICBkZXRlY3Qob2JqOiBhbnkpOiBib29sZWFuIHtcbiAgICBpZiAodHlwZW9mIG9iaiAhPT0gJ29iamVjdCcgfHwgb2JqID09PSBudWxsKSByZXR1cm4gZmFsc2U7XG5cbiAgICBpZiAob2JqIGluc3RhbmNlb2YgTWl4aW4pIHtcbiAgICAgIHJldHVybiBvYmouZGVwZW5kZW5jaWVzLmluZGV4T2YodGhpcykgIT09IC0xO1xuICAgIH1cblxuICAgIGxldCBtZXRhID0gQ2xhc3NNZXRhLmZvcihvYmopO1xuICAgIHJldHVybiAhIW1ldGEgJiYgbWV0YS5oYXNBcHBsaWVkTWl4aW4odGhpcyk7XG4gIH1cblxuICByZW9wZW4oZXh0ZW5zaW9uczogRXh0ZW5zaW9ucykge1xuICAgIGlmICh0aGlzLmV4dGVuc2lvbnMpIHtcbiAgICAgIHRoaXMuZGVwZW5kZW5jaWVzLnB1c2godG9NaXhpbih0aGlzLmV4dGVuc2lvbnMpKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGV4dGVuc2lvbnMgPT09ICdvYmplY3QnICYmICdjb25jYXRlbmF0ZWRQcm9wZXJ0aWVzJyBpbiBleHRlbnNpb25zKSB7XG4gICAgICBsZXQgY29uY2F0OiBzdHJpbmdbXTtcbiAgICAgIGxldCByYXdDb25jYXQgPSBleHRlbnNpb25zLmNvbmNhdGVuYXRlZFByb3BlcnRpZXM7XG5cbiAgICAgIGlmIChpc0FycmF5KHJhd0NvbmNhdCkpIHtcbiAgICAgICAgY29uY2F0ID0gKDxzdHJpbmdbXT5yYXdDb25jYXQpLnNsaWNlKCk7XG4gICAgICB9IGVsc2UgaWYgKHJhd0NvbmNhdCA9PT0gbnVsbCB8fCByYXdDb25jYXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25jYXQgPSBbXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbmNhdCA9IFs8c3RyaW5nPnJhd0NvbmNhdF07XG4gICAgICB9XG5cbiAgICAgIGRlbGV0ZSBleHRlbnNpb25zLmNvbmNhdGVuYXRlZFByb3BlcnRpZXM7XG4gICAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSBjb25jYXQ7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBleHRlbnNpb25zID09PSAnb2JqZWN0JyAmJiAnbWVyZ2VkUHJvcGVydGllcycgaW4gZXh0ZW5zaW9ucykge1xuICAgICAgbGV0IG1lcmdlZDogc3RyaW5nW107XG4gICAgICBsZXQgcmF3TWVyZ2VkID0gZXh0ZW5zaW9ucy5tZXJnZWRQcm9wZXJ0aWVzO1xuXG4gICAgICBpZiAoaXNBcnJheShyYXdNZXJnZWQpKSB7XG4gICAgICAgIG1lcmdlZCA9ICg8c3RyaW5nW10+cmF3TWVyZ2VkKS5zbGljZSgpO1xuICAgICAgfSBlbHNlIGlmIChyYXdNZXJnZWQgPT09IG51bGwgfHwgcmF3TWVyZ2VkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbWVyZ2VkID0gW107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtZXJnZWQgPSBbPHN0cmluZz5yYXdNZXJnZWRdO1xuICAgICAgfVxuXG4gICAgICBkZWxldGUgZXh0ZW5zaW9ucy5tZXJnZWRQcm9wZXJ0aWVzO1xuICAgICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzID0gbWVyZ2VkO1xuICAgIH1cblxuICAgIGxldCBub3JtYWxpemVkOiBEaWN0PEJsdWVwcmludD4gPSBPYmplY3Qua2V5cyhleHRlbnNpb25zKS5yZWR1Y2UoKG9iaiwga2V5KSA9PiB7XG4gICAgICBsZXQgdmFsdWUgPSBleHRlbnNpb25zW2tleV07XG5cbiAgICAgIHN3aXRjaCAodHlwZW9mIHZhbHVlKSB7XG4gICAgICAgIGNhc2UgJ2Z1bmN0aW9uJzpcbiAgICAgICAgICBvYmpba2V5XSA9IG5ldyBNZXRob2RCbHVlcHJpbnQoeyB2YWx1ZSB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAgICBpZiAodmFsdWUgJiYgQkxVRVBSSU5UIGluIHZhbHVlKSB7XG4gICAgICAgICAgICBvYmpba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBvYmpba2V5XSA9IG5ldyBEYXRhQmx1ZXByaW50KHsgdmFsdWUgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvYmo7XG4gICAgfSwgZGljdDxCbHVlcHJpbnQ+KCkpO1xuXG4gICAgdGhpcy5leHRlbnNpb25zID0gZGljdDxhbnk+KCk7XG4gICAgYXNzaWduKHRoaXMuZXh0ZW5zaW9ucywgdHVyYm9jaGFyZ2Uobm9ybWFsaXplZCkpO1xuICB9XG5cbiAgYXBwbHkodGFyZ2V0OiBhbnkpIHtcbiAgICBsZXQgbWV0YTogQ2xhc3NNZXRhID0gdGFyZ2V0W0NMQVNTX01FVEFdID0gdGFyZ2V0W0NMQVNTX01FVEFdIHx8IG5ldyBDbGFzc01ldGEoKTtcbiAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKG0gPT4gbS5hcHBseSh0YXJnZXQpKTtcbiAgICB0aGlzLm1lcmdlUHJvcGVydGllcyh0YXJnZXQsIHRhcmdldCwgbWV0YSk7XG4gICAgbWV0YS5hZGRNaXhpbih0aGlzKTtcbiAgICBtZXRhLnNlYWwoKTtcbiAgICBtZXRhLnJlc2VhbCh0YXJnZXQpO1xuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuXG4gIGV4dGVuZFByb3RvdHlwZShPcmlnaW5hbDogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICAgIE9yaWdpbmFsLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoT3JpZ2luYWwucHJvdG90eXBlKTtcbiAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKG0gPT4gbS5leHRlbmRQcm90b3R5cGUoT3JpZ2luYWwpKTtcbiAgICB0aGlzLmV4dGVuZFByb3RvdHlwZU9udG8oT3JpZ2luYWwsIE9yaWdpbmFsKTtcbiAgfVxuXG4gIGV4dGVuZFByb3RvdHlwZU9udG8oU3ViY2xhc3M6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4sIFBhcmVudDogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICAgIHRoaXMuZGVwZW5kZW5jaWVzLmZvckVhY2gobSA9PiBtLmV4dGVuZFByb3RvdHlwZU9udG8oU3ViY2xhc3MsIFBhcmVudCkpO1xuICAgIHRoaXMubWVyZ2VQcm9wZXJ0aWVzKFN1YmNsYXNzLnByb3RvdHlwZSwgUGFyZW50LnByb3RvdHlwZSwgU3ViY2xhc3NbQ0xBU1NfTUVUQV0pO1xuICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLmFkZE1peGluKHRoaXMpO1xuICB9XG5cbiAgZXh0ZW5kU3RhdGljKFRhcmdldDogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICAgIHRoaXMuZGVwZW5kZW5jaWVzLmZvckVhY2gobSA9PiBtLmV4dGVuZFN0YXRpYyhUYXJnZXQpKTtcbiAgICB0aGlzLm1lcmdlUHJvcGVydGllcyhUYXJnZXQsIE9iamVjdC5nZXRQcm90b3R5cGVPZihUYXJnZXQpLCBUYXJnZXRbQ0xBU1NfTUVUQV1bQ0xBU1NfTUVUQV0pO1xuICAgIFRhcmdldFtDTEFTU19NRVRBXS5hZGRTdGF0aWNNaXhpbih0aGlzKTtcbiAgfVxuXG4gIG1lcmdlUHJvcGVydGllcyh0YXJnZXQ6IE9iamVjdCwgcGFyZW50OiBPYmplY3QsIG1ldGE6IENsYXNzTWV0YSkge1xuICAgIGlmIChtZXRhLmhhc0FwcGxpZWRNaXhpbih0aGlzKSkgcmV0dXJuO1xuICAgIG1ldGEuYWRkQXBwbGllZE1peGluKHRoaXMpO1xuXG4gICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzLmZvckVhY2goayA9PiBtZXRhLmFkZE1lcmdlZFByb3BlcnR5KGssIHBhcmVudFtrXSkpO1xuICAgIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcy5mb3JFYWNoKGsgPT4gbWV0YS5hZGRDb25jYXRlbmF0ZWRQcm9wZXJ0eShrLCBbXSkpO1xuXG4gICAgbmV3IFZhbHVlRGVzY3JpcHRvcih7IHZhbHVlOiBtZXRhLmdldENvbmNhdGVuYXRlZFByb3BlcnRpZXMoKSB9KS5kZWZpbmUodGFyZ2V0LCAnY29uY2F0ZW5hdGVkUHJvcGVydGllcycpO1xuICAgIG5ldyBWYWx1ZURlc2NyaXB0b3IoeyB2YWx1ZTogbWV0YS5nZXRNZXJnZWRQcm9wZXJ0aWVzKCkgfSkuZGVmaW5lKHRhcmdldCwgJ21lcmdlZFByb3BlcnRpZXMnKTtcblxuICAgIE9iamVjdC5rZXlzKHRoaXMuZXh0ZW5zaW9ucykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgbGV0IGV4dGVuc2lvbjogQmx1ZXByaW50ID0gdGhpcy5leHRlbnNpb25zIVtrZXldO1xuICAgICAgbGV0IGRlc2MgPSBleHRlbnNpb24uZGVzY3JpcHRvcih0YXJnZXQsIDxzdHJpbmc+a2V5LCBtZXRhKTtcbiAgICAgIGRlc2MuZGVmaW5lKHRhcmdldCwgPHN0cmluZz5rZXksIHBhcmVudCk7XG4gICAgfSk7XG5cbiAgICBuZXcgVmFsdWVEZXNjcmlwdG9yKHsgdmFsdWU6IFJPT1QgfSkuZGVmaW5lKHRhcmdldCwgPHN0cmluZz4nX3N1cGVyJyk7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgRXh0ZW5zaW9uID0gTWl4aW4gfCBFeHRlbnNpb25zO1xuXG5leHBvcnQgZnVuY3Rpb24gZXh0ZW5kPFQgZXh0ZW5kcyBHbGltbWVyT2JqZWN0PihQYXJlbnQ6IEdsaW1tZXJPYmplY3RGYWN0b3J5PFQ+LCAuLi5leHRlbnNpb25zOiBFeHRlbnNpb25bXSk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4ge1xuICBsZXQgU3VwZXIgPSA8dHlwZW9mIEdsaW1tZXJPYmplY3Q+UGFyZW50O1xuXG4gIGxldCBTdWJjbGFzcyA9IGNsYXNzIGV4dGVuZHMgU3VwZXIge307XG4gIFN1YmNsYXNzW0NMQVNTX01FVEFdID0gSW5zdGFuY2VNZXRhLmZyb21QYXJlbnQoUGFyZW50W0NMQVNTX01FVEFdKTtcblxuICBsZXQgbWl4aW5zID0gZXh0ZW5zaW9ucy5tYXAodG9NaXhpbik7XG4gIFBhcmVudFtDTEFTU19NRVRBXS5hZGRTdWJjbGFzcyhTdWJjbGFzcyBhcyBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+KTtcbiAgbWl4aW5zLmZvckVhY2gobSA9PiBTdWJjbGFzc1tDTEFTU19NRVRBXS5hZGRNaXhpbihtKSk7XG5cbiAgQ2xhc3NNZXRhLmFwcGx5QWxsTWl4aW5zKFN1YmNsYXNzIGFzIEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4sIFBhcmVudCk7XG5cbiAgcmV0dXJuIFN1YmNsYXNzIGFzIGFueTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbGlua1N1YmNsYXNzZXMoUGFyZW50OiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+KSB7XG4gIFBhcmVudFtDTEFTU19NRVRBXS5nZXRTdWJjbGFzc2VzKCkuZm9yRWFjaCgoU3ViY2xhc3M6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pID0+IHtcbiAgICBTdWJjbGFzc1tDTEFTU19NRVRBXS5yZXNldChQYXJlbnRbQ0xBU1NfTUVUQV0pO1xuICAgIFN1YmNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoUGFyZW50LnByb3RvdHlwZSk7XG5cbiAgICBDbGFzc01ldGEuYXBwbHlBbGxNaXhpbnMoU3ViY2xhc3MsIFBhcmVudCk7XG5cbiAgICAvLyByZWN1cnNlIGludG8gc3ViLXN1YmNsYXNzZXNcbiAgICByZWxpbmtTdWJjbGFzc2VzKFN1YmNsYXNzKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b01peGluKGV4dGVuc2lvbjogRXh0ZW5zaW9uKTogTWl4aW4ge1xuICBpZiAoZXh0ZW5zaW9uIGluc3RhbmNlb2YgTWl4aW4pIHJldHVybiBleHRlbnNpb247XG4gIGVsc2UgcmV0dXJuIG5ldyBNaXhpbig8T2JqZWN0PmV4dGVuc2lvbiwgW10pO1xufVxuXG5jbGFzcyBWYWx1ZURlc2NyaXB0b3IgZXh0ZW5kcyBEZXNjcmlwdG9yIHtcbiAgcHVibGljIGVudW1lcmFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyBjb25maWd1cmFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyB3cml0YWJsZTogYm9vbGVhbjtcbiAgcHVibGljIHZhbHVlOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoeyBlbnVtZXJhYmxlPXRydWUsIGNvbmZpZ3VyYWJsZT10cnVlLCB3cml0YWJsZT10cnVlLCB2YWx1ZSB9OiBQcm9wZXJ0eURlc2NyaXB0b3IpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZW51bWVyYWJsZSA9IGVudW1lcmFibGU7XG4gICAgdGhpcy5jb25maWd1cmFibGUgPSBjb25maWd1cmFibGU7XG4gICAgdGhpcy53cml0YWJsZSA9IHdyaXRhYmxlO1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIGRlZmluZSh0YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIF9ob21lPzogYW55KSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCB7XG4gICAgICBlbnVtZXJhYmxlOiB0aGlzLmVudW1lcmFibGUsXG4gICAgICBjb25maWd1cmFibGU6IHRoaXMuY29uZmlndXJhYmxlLFxuICAgICAgd3JpdGFibGU6IHRoaXMud3JpdGFibGUsXG4gICAgICB2YWx1ZTogdGhpcy52YWx1ZVxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEYXRhQmx1ZXByaW50IGV4dGVuZHMgQmx1ZXByaW50IHtcbiAgcHVibGljIGVudW1lcmFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyBjb25maWd1cmFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyB2YWx1ZTogYW55O1xuICBwdWJsaWMgd3JpdGFibGU6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoeyBlbnVtZXJhYmxlPXRydWUsIGNvbmZpZ3VyYWJsZT10cnVlLCB3cml0YWJsZT10cnVlLCB2YWx1ZSB9OiBQcm9wZXJ0eURlc2NyaXB0b3IpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZW51bWVyYWJsZSA9IGVudW1lcmFibGU7XG4gICAgdGhpcy5jb25maWd1cmFibGUgPSBjb25maWd1cmFibGU7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMud3JpdGFibGUgPSB3cml0YWJsZTtcbiAgfVxuXG4gIGRlc2NyaXB0b3IoX3RhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgY2xhc3NNZXRhOiBDbGFzc01ldGEpOiBEZXNjcmlwdG9yIHtcbiAgICBsZXQgeyBlbnVtZXJhYmxlLCBjb25maWd1cmFibGUsIHdyaXRhYmxlLCB2YWx1ZSB9ID0gdGhpcztcblxuICAgIGlmIChjbGFzc01ldGEuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydHkoPHN0cmluZz5rZXkpKSB7XG4gICAgICBjbGFzc01ldGEuYWRkQ29uY2F0ZW5hdGVkUHJvcGVydHkoPHN0cmluZz5rZXksIHZhbHVlKTtcbiAgICAgIHZhbHVlID0gY2xhc3NNZXRhLmdldENvbmNhdGVuYXRlZFByb3BlcnR5KDxzdHJpbmc+a2V5KTtcbiAgICB9IGVsc2UgaWYgKGNsYXNzTWV0YS5oYXNNZXJnZWRQcm9wZXJ0eSg8c3RyaW5nPmtleSkpIHtcbiAgICAgIGNsYXNzTWV0YS5hZGRNZXJnZWRQcm9wZXJ0eSg8c3RyaW5nPmtleSwgdmFsdWUpO1xuICAgICAgdmFsdWUgPSBjbGFzc01ldGEuZ2V0TWVyZ2VkUHJvcGVydHkoPHN0cmluZz5rZXkpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgVmFsdWVEZXNjcmlwdG9yKHsgZW51bWVyYWJsZSwgY29uZmlndXJhYmxlLCB3cml0YWJsZSwgdmFsdWUgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFjY2Vzc29yQmx1ZXByaW50IGV4dGVuZHMgQmx1ZXByaW50IHtcbiAgcHVibGljIGVudW1lcmFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyBjb25maWd1cmFibGU6IGJvb2xlYW47XG4gIGdldDogKCkgPT4gYW55O1xuICBzZXQ6ICh2YWx1ZTogYW55KSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKHsgZW51bWVyYWJsZT10cnVlLCBjb25maWd1cmFibGU9dHJ1ZSwgZ2V0LCBzZXQgfTogUHJvcGVydHlEZXNjcmlwdG9yICYgeyBnZXQ6IGFueSwgc2V0OiBhbnkgfSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5lbnVtZXJhYmxlID0gZW51bWVyYWJsZTtcbiAgICB0aGlzLmNvbmZpZ3VyYWJsZSA9IGNvbmZpZ3VyYWJsZTtcbiAgICB0aGlzLmdldCA9IGdldDtcbiAgICB0aGlzLnNldCA9IHNldDtcbiAgfVxuXG4gIGRlc2NyaXB0b3IoX3RhcmdldDogT2JqZWN0LCBfa2V5OiBzdHJpbmcsIF9jbGFzc01ldGE6IENsYXNzTWV0YSk6IERlc2NyaXB0b3Ige1xuICAgIHJldHVybiBuZXcgVmFsdWVEZXNjcmlwdG9yKHtcbiAgICAgIGVudW1lcmFibGU6IHRoaXMuZW51bWVyYWJsZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdGhpcy5jb25maWd1cmFibGUsXG4gICAgICBnZXQ6IHRoaXMuZ2V0LFxuICAgICAgc2V0OiB0aGlzLnNldFxuICAgIH0pO1xuICB9XG59XG5cbmNsYXNzIE1ldGhvZERlc2NyaXB0b3IgZXh0ZW5kcyBWYWx1ZURlc2NyaXB0b3Ige1xuICBkZWZpbmUodGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBob21lOiBPYmplY3QpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gd3JhcE1ldGhvZChob21lLCBrZXksIHRoaXMudmFsdWUpO1xuICAgIHN1cGVyLmRlZmluZSh0YXJnZXQsIGtleSwgaG9tZSk7XG4gIH1cbn1cblxuY2xhc3MgTWV0aG9kQmx1ZXByaW50IGV4dGVuZHMgRGF0YUJsdWVwcmludCB7XG4gIGRlc2NyaXB0b3IodGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBjbGFzc01ldGE6IENsYXNzTWV0YSk6IE1ldGhvZERlc2NyaXB0b3Ige1xuICAgIGxldCBkZXNjID0gc3VwZXIuZGVzY3JpcHRvcih0YXJnZXQsIGtleSwgY2xhc3NNZXRhKTtcbiAgICByZXR1cm4gbmV3IE1ldGhvZERlc2NyaXB0b3IoZGVzYyBhcyBQcm9wZXJ0eURlc2NyaXB0b3IpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cmFwTWV0aG9kKGhvbWU6IE9iamVjdCwgbWV0aG9kTmFtZTogc3RyaW5nLCBvcmlnaW5hbDogKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnkpIHtcbiAgaWYgKCEoPHN0cmluZz5tZXRob2ROYW1lIGluIGhvbWUpKSByZXR1cm4gbWF5YmVXcmFwKG9yaWdpbmFsKTtcblxuICBsZXQgc3VwZXJNZXRob2QgPSBob21lW21ldGhvZE5hbWVdO1xuXG4gIGxldCBmdW5jID0gZnVuY3Rpb24odGhpczogR2xpbW1lck9iamVjdCwgLi4uYXJnczogYW55W10pIHtcbiAgICBpZiAoIXRoaXMpIHJldHVybiBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcblxuICAgIGxldCBsYXN0U3VwZXIgPSB0aGlzLl9zdXBlcjtcbiAgICB0aGlzLl9zdXBlciA9IHN1cGVyTWV0aG9kO1xuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fc3VwZXIgPSBsYXN0U3VwZXI7XG4gICAgfVxuICB9O1xuXG4gICg8YW55PmZ1bmMpLl9fd3JhcHBlZCA9IHRydWU7XG5cbiAgcmV0dXJuIGZ1bmM7XG59XG5cbmZ1bmN0aW9uIG1heWJlV3JhcChvcmlnaW5hbDogRnVuY3Rpb24pIHtcbiAgaWYgKCdfX3dyYXBwZWQnIGluIG9yaWdpbmFsKSByZXR1cm4gb3JpZ2luYWw7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uKHRoaXM6IEdsaW1tZXJPYmplY3QsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgaWYgKCF0aGlzKSByZXR1cm4gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJncyk7XG5cbiAgICBsZXQgbGFzdFN1cGVyID0gdGhpcy5fc3VwZXI7XG4gICAgdGhpcy5fc3VwZXIgPSBST09UO1xuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fc3VwZXIgPSBsYXN0U3VwZXI7XG4gICAgfVxuICB9O1xufVxuIl19

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

GlimmerObject.isClass = true;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9vYmplY3QuanMiXSwibmFtZXMiOlsiTWV0YSIsIlByb3BlcnR5UmVmZXJlbmNlIiwiZGljdCIsImFzc2lnbiIsImluaXRpYWxpemVHdWlkIiwiZXh0ZW5kIiwiZXh0ZW5kQ2xhc3MiLCJ0b01peGluIiwicmVsaW5rU3ViY2xhc3NlcyIsIndyYXBNZXRob2QiLCJpc0FycmF5IiwiQXJyYXkiLCJST09UIiwiRU1QVFlfQ0FDSEUiLCJDTEFTU19NRVRBIiwidHVyYm9jaGFyZ2UiLCJvYmoiLCJTZWFsZWRNZXRhIiwiYWRkUmVmZXJlbmNlVHlwZUZvciIsIkVycm9yIiwiQ2xhc3NNZXRhIiwicmVmZXJlbmNlVHlwZXMiLCJwcm9wZXJ0eU1ldGFkYXRhIiwiY29uY2F0ZW5hdGVkUHJvcGVydGllcyIsImhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXMiLCJtZXJnZWRQcm9wZXJ0aWVzIiwiaGFzTWVyZ2VkUHJvcGVydGllcyIsIm1peGlucyIsImFwcGxpZWRNaXhpbnMiLCJzdGF0aWNNaXhpbnMiLCJzdWJjbGFzc2VzIiwic2xvdHMiLCJJbnN0YW5jZU1ldGFDb25zdHJ1Y3RvciIsImZyb21QYXJlbnQiLCJwYXJlbnQiLCJtZXRhIiwicmVzZXQiLCJmb3IiLCJvYmplY3QiLCJjb25zdHJ1Y3RvciIsImluaXQiLCJhdHRycyIsImNvbmNhdFByb3BzIiwicHJvcCIsImNvbmNhdCIsInNsaWNlIiwibWVyZ2VkUHJvcHMiLCJtZXJnZWQiLCJhZGRTdGF0aWNNaXhpbiIsIm1peGluIiwicHVzaCIsImFkZE1peGluIiwiZ2V0U3RhdGljTWl4aW5zIiwiZ2V0TWl4aW5zIiwiYWRkQXBwbGllZE1peGluIiwiaGFzQXBwbGllZE1peGluIiwiaW5kZXhPZiIsImdldEFwcGxpZWRNaXhpbnMiLCJoYXNTdGF0aWNNaXhpbiIsImFwcGx5QWxsTWl4aW5zIiwiU3ViY2xhc3MiLCJQYXJlbnQiLCJmb3JFYWNoIiwibSIsImV4dGVuZFByb3RvdHlwZU9udG8iLCJleHRlbmRTdGF0aWMiLCJzZWFsIiwiYWRkU3ViY2xhc3MiLCJnZXRTdWJjbGFzc2VzIiwiYWRkUHJvcGVydHlNZXRhZGF0YSIsInByb3BlcnR5IiwidmFsdWUiLCJtZXRhZGF0YUZvclByb3BlcnR5IiwidHlwZSIsImFkZFNsb3RGb3IiLCJoYXNDb25jYXRlbmF0ZWRQcm9wZXJ0eSIsImdldENvbmNhdGVuYXRlZFByb3BlcnR5IiwiZ2V0Q29uY2F0ZW5hdGVkUHJvcGVydGllcyIsIk9iamVjdCIsImtleXMiLCJhZGRDb25jYXRlbmF0ZWRQcm9wZXJ0eSIsInZhbCIsImhhc01lcmdlZFByb3BlcnR5IiwiZ2V0TWVyZ2VkUHJvcGVydHkiLCJnZXRNZXJnZWRQcm9wZXJ0aWVzIiwiYWRkTWVyZ2VkUHJvcGVydHkiLCJKU09OIiwic3RyaW5naWZ5IiwibWVyZ2VNZXJnZWRQcm9wZXJ0aWVzIiwiZ2V0UmVmZXJlbmNlVHlwZXMiLCJnZXRQcm9wZXJ0eU1ldGFkYXRhIiwicmVzZWFsIiwiZnJlc2giLCJnZXRTbG90cyIsIlNsb3RzIiwibmFtZSIsImFyZ3VtZW50cyIsInJlZmVyZW5jZVR5cGVGb3IiLCJ3cmFwcGVkIiwiSW5zdGFuY2VNZXRhIiwiR2xpbW1lck9iamVjdCIsIl9zdXBlciIsIl9tZXRhIiwiZXh0ZW5zaW9ucyIsImNyZWF0ZSIsInJlb3BlbiIsImV4dGVuZFByb3RvdHlwZSIsInJlb3BlbkNsYXNzIiwibWV0YUZvclByb3BlcnR5IiwiZWFjaENvbXB1dGVkUHJvcGVydHkiLCJjYWxsYmFjayIsIm1ldGFkYXRhIiwiZ2V0Iiwia2V5Iiwic2V0Iiwic2V0UHJvcGVydGllcyIsImRlc3Ryb3kiLCJpc0NsYXNzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7UUFPTyxBQUFTOztBQVBoQixBQUFTLEFBQU0sQUFBeUI7O0FBQ3hDLEFBQVMsQUFBTSxBQUFRLEFBQXNCOztBQUM3QyxBQUFTLEFBQVUsQUFBYSxBQUFTLEFBQWtCLEFBQWtCOztBQUU3RSxBQUFTLEFBQVksQUFDckI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QzthQUFBLEFBQUssWUFBTCxBQUFpQixBQUNqQjtxQ0FBQSxBQUFpQixBQUNwQjtBOztrQkFDTSxBLG1DLEFBQVksWUFBWSxBQUMzQjs0QkFBQSxBQUFRLFlBQVIsQUFBb0IsYUFBcEIsQUFBaUMsQUFDakM7YUFBQSxBQUFLLFlBQUwsQUFBaUIsQUFDcEI7QTs7a0JBQ00sQSwyQ0FBZ0IsQSxVQUFVLEFBQzdCO1lBQUksUUFBUSxLQUFBLEFBQUssWUFBTCxBQUFpQixvQkFBN0IsQUFBWSxBQUFxQyxBQUNqRDtZQUFJLENBQUosQUFBSyxPQUFPLE1BQU0sSUFBQSxBQUFJLDJFQUFKLEFBQTRFLFdBQWxGLEFBQ1o7ZUFBQSxBQUFPLEFBQ1Y7QTs7a0JBQ00sQSxxREFBcUIsQSxVQUFVLEFBQ2xDO1lBQUksV0FBVyxLQUFBLEFBQUssWUFBcEIsQUFBZSxBQUFpQixBQUNoQztZQUFJLENBQUosQUFBSyxVQUFVLEFBQ2Y7YUFBSyxJQUFMLEFBQVMsUUFBVCxBQUFpQixVQUFVLEFBQ3ZCO3FCQUFBLEFBQVMsTUFBTSxTQUFmLEFBQWUsQUFBUyxBQUMzQjtBQUNKO0E7OzRCQUNELEEsdUJBQU8sQUFBRSxDOzs0QixBQUNULG1CQUFJLEEsS0FBSyxBQUNMO2VBQU8sS0FBUCxBQUFPLEFBQUssQUFDZjtBOzs0QkFDRCxBLG1CQUFJLEEsSyxBQUFLLE9BQU8sQUFDWjthQUFBLEFBQUssT0FBTCxBQUFZLEFBQ2Y7QTs7NEJBQ0QsQSx1Q0FBYyxBLE9BQU8sQUFDakI7MEJBQUEsQUFBTyxNQUFQLEFBQWEsQUFDaEI7QTs7NEIsQUFDRCw2QkFBVSxBQUFFLEM7Ozs7O2tCQS9DSyxBOzs7QUFpRHJCLGNBQUEsQUFBYywwQ0FBMEMsYUFBQSxBQUFhLFdBQXJFLEFBQXdELEFBQXdCO0FBQ2hGLGNBQUEsQUFBYyxVQUFkLEFBQXdCIiwiZmlsZSI6ImxpYi9vYmplY3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNZXRhLCBQcm9wZXJ0eVJlZmVyZW5jZSB9IGZyb20gJ0BnbGltbWVyL29iamVjdC1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgZGljdCwgYXNzaWduLCBpbml0aWFsaXplR3VpZCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgZXh0ZW5kIGFzIGV4dGVuZENsYXNzLCB0b01peGluLCByZWxpbmtTdWJjbGFzc2VzLCB3cmFwTWV0aG9kIH0gZnJvbSAnLi9taXhpbic7XG5jb25zdCB7IGlzQXJyYXkgfSA9IEFycmF5O1xuaW1wb3J0IHsgUk9PVCB9IGZyb20gJy4vdXRpbHMnO1xuZXhwb3J0IGNvbnN0IEVNUFRZX0NBQ0hFID0gZnVuY3Rpb24gRU1QVFlfQ0FDSEUoKSB7fTtcbmNvbnN0IENMQVNTX01FVEEgPSBcImRmOGJlNGM4LTRlODktNDRlMi1hOGY5LTU1MGM4ZGFjZGNhN1wiO1xuZXhwb3J0IGZ1bmN0aW9uIHR1cmJvY2hhcmdlKG9iaikge1xuICAgIC8vIGZ1bmN0aW9uIER1bW15KCkge31cbiAgICAvLyBEdW1teS5wcm90b3R5cGUgPSBvYmo7XG4gICAgcmV0dXJuIG9iajtcbn1cbmNsYXNzIFNlYWxlZE1ldGEgZXh0ZW5kcyBNZXRhIHtcbiAgICBhZGRSZWZlcmVuY2VUeXBlRm9yKC4uLl9hcmdzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBtb2RpZnkgcmVmZXJlbmNlIHR5cGVzIG9uIGEgc2VhbGVkIG1ldGFcIik7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIENsYXNzTWV0YSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMucmVmZXJlbmNlVHlwZXMgPSBkaWN0KCk7XG4gICAgICAgIHRoaXMucHJvcGVydHlNZXRhZGF0YSA9IGRpY3QoKTtcbiAgICAgICAgdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzID0gZGljdCgpO1xuICAgICAgICB0aGlzLmhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzID0gZGljdCgpO1xuICAgICAgICB0aGlzLmhhc01lcmdlZFByb3BlcnRpZXMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5taXhpbnMgPSBbXTtcbiAgICAgICAgdGhpcy5hcHBsaWVkTWl4aW5zID0gW107XG4gICAgICAgIHRoaXMuc3RhdGljTWl4aW5zID0gW107XG4gICAgICAgIHRoaXMuc3ViY2xhc3NlcyA9IFtdO1xuICAgICAgICB0aGlzLnNsb3RzID0gW107XG4gICAgICAgIHRoaXMuSW5zdGFuY2VNZXRhQ29uc3RydWN0b3IgPSBudWxsO1xuICAgIH1cbiAgICBzdGF0aWMgZnJvbVBhcmVudChwYXJlbnQpIHtcbiAgICAgICAgbGV0IG1ldGEgPSBuZXcgdGhpcygpO1xuICAgICAgICBtZXRhLnJlc2V0KHBhcmVudCk7XG4gICAgICAgIHJldHVybiBtZXRhO1xuICAgIH1cbiAgICBzdGF0aWMgZm9yKG9iamVjdCkge1xuICAgICAgICBpZiAoQ0xBU1NfTUVUQSBpbiBvYmplY3QpIHJldHVybiBvYmplY3RbQ0xBU1NfTUVUQV07ZWxzZSBpZiAob2JqZWN0LmNvbnN0cnVjdG9yKSByZXR1cm4gb2JqZWN0LmNvbnN0cnVjdG9yW0NMQVNTX01FVEFdIHx8IG51bGw7ZWxzZSByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaW5pdChvYmplY3QsIGF0dHJzKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXR0cnMgIT09ICdvYmplY3QnIHx8IGF0dHJzID09PSBudWxsKSByZXR1cm47XG4gICAgICAgIGlmICh0aGlzLmhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIGxldCBjb25jYXRQcm9wcyA9IHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcztcbiAgICAgICAgICAgIGZvciAobGV0IHByb3AgaW4gY29uY2F0UHJvcHMpIHtcbiAgICAgICAgICAgICAgICBpZiAocHJvcCBpbiBhdHRycykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgY29uY2F0ID0gY29uY2F0UHJvcHNbcHJvcF0uc2xpY2UoKTtcbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0W3Byb3BdID0gY29uY2F0LmNvbmNhdChhdHRyc1twcm9wXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmhhc01lcmdlZFByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIGxldCBtZXJnZWRQcm9wcyA9IHRoaXMubWVyZ2VkUHJvcGVydGllcztcbiAgICAgICAgICAgIGZvciAobGV0IHByb3AgaW4gbWVyZ2VkUHJvcHMpIHtcbiAgICAgICAgICAgICAgICBpZiAocHJvcCBpbiBhdHRycykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbWVyZ2VkID0gYXNzaWduKHt9LCBtZXJnZWRQcm9wc1twcm9wXSk7XG4gICAgICAgICAgICAgICAgICAgIG9iamVjdFtwcm9wXSA9IGFzc2lnbihtZXJnZWQsIGF0dHJzW3Byb3BdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgYWRkU3RhdGljTWl4aW4obWl4aW4pIHtcbiAgICAgICAgdGhpcy5zdGF0aWNNaXhpbnMucHVzaChtaXhpbik7XG4gICAgfVxuICAgIGFkZE1peGluKG1peGluKSB7XG4gICAgICAgIHRoaXMubWl4aW5zLnB1c2gobWl4aW4pO1xuICAgIH1cbiAgICBnZXRTdGF0aWNNaXhpbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRpY01peGlucztcbiAgICB9XG4gICAgZ2V0TWl4aW5zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5taXhpbnM7XG4gICAgfVxuICAgIGFkZEFwcGxpZWRNaXhpbihtaXhpbikge1xuICAgICAgICB0aGlzLmFwcGxpZWRNaXhpbnMucHVzaChtaXhpbik7XG4gICAgfVxuICAgIGhhc0FwcGxpZWRNaXhpbihtaXhpbikge1xuICAgICAgICByZXR1cm4gdGhpcy5hcHBsaWVkTWl4aW5zLmluZGV4T2YobWl4aW4pICE9PSAtMTtcbiAgICB9XG4gICAgZ2V0QXBwbGllZE1peGlucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBwbGllZE1peGlucztcbiAgICB9XG4gICAgaGFzU3RhdGljTWl4aW4obWl4aW4pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGljTWl4aW5zLmluZGV4T2YobWl4aW4pICE9PSAtMTtcbiAgICB9XG4gICAgc3RhdGljIGFwcGx5QWxsTWl4aW5zKFN1YmNsYXNzLCBQYXJlbnQpIHtcbiAgICAgICAgU3ViY2xhc3NbQ0xBU1NfTUVUQV0uZ2V0TWl4aW5zKCkuZm9yRWFjaChtID0+IG0uZXh0ZW5kUHJvdG90eXBlT250byhTdWJjbGFzcywgUGFyZW50KSk7XG4gICAgICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLmdldFN0YXRpY01peGlucygpLmZvckVhY2gobSA9PiBtLmV4dGVuZFN0YXRpYyhTdWJjbGFzcykpO1xuICAgICAgICBTdWJjbGFzc1tDTEFTU19NRVRBXS5zZWFsKCk7XG4gICAgfVxuICAgIGFkZFN1YmNsYXNzKGNvbnN0cnVjdG9yKSB7XG4gICAgICAgIHRoaXMuc3ViY2xhc3Nlcy5wdXNoKGNvbnN0cnVjdG9yKTtcbiAgICB9XG4gICAgZ2V0U3ViY2xhc3NlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3ViY2xhc3NlcztcbiAgICB9XG4gICAgYWRkUHJvcGVydHlNZXRhZGF0YShwcm9wZXJ0eSwgdmFsdWUpIHtcbiAgICAgICAgdGhpcy5wcm9wZXJ0eU1ldGFkYXRhW3Byb3BlcnR5XSA9IHZhbHVlO1xuICAgIH1cbiAgICBtZXRhZGF0YUZvclByb3BlcnR5KHByb3BlcnR5KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3BlcnR5TWV0YWRhdGFbcHJvcGVydHldO1xuICAgIH1cbiAgICBhZGRSZWZlcmVuY2VUeXBlRm9yKHByb3BlcnR5LCB0eXBlKSB7XG4gICAgICAgIHRoaXMucmVmZXJlbmNlVHlwZXNbcHJvcGVydHldID0gdHlwZTtcbiAgICB9XG4gICAgYWRkU2xvdEZvcihwcm9wZXJ0eSkge1xuICAgICAgICB0aGlzLnNsb3RzLnB1c2gocHJvcGVydHkpO1xuICAgIH1cbiAgICBoYXNDb25jYXRlbmF0ZWRQcm9wZXJ0eShwcm9wZXJ0eSkge1xuICAgICAgICBpZiAoIXRoaXMuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcykgcmV0dXJuIGZhbHNlO1xuICAgICAgICByZXR1cm4gcHJvcGVydHkgaW4gdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzO1xuICAgIH1cbiAgICBnZXRDb25jYXRlbmF0ZWRQcm9wZXJ0eShwcm9wZXJ0eSkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XTtcbiAgICB9XG4gICAgZ2V0Q29uY2F0ZW5hdGVkUHJvcGVydGllcygpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcyk7XG4gICAgfVxuICAgIGFkZENvbmNhdGVuYXRlZFByb3BlcnR5KHByb3BlcnR5LCB2YWx1ZSkge1xuICAgICAgICB0aGlzLmhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSB0cnVlO1xuICAgICAgICBpZiAocHJvcGVydHkgaW4gdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICBsZXQgdmFsID0gdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XS5jb25jYXQodmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XSA9IHZhbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllc1twcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBoYXNNZXJnZWRQcm9wZXJ0eShwcm9wZXJ0eSkge1xuICAgICAgICBpZiAoIXRoaXMuaGFzTWVyZ2VkUHJvcGVydGllcykgcmV0dXJuIGZhbHNlO1xuICAgICAgICByZXR1cm4gcHJvcGVydHkgaW4gdGhpcy5tZXJnZWRQcm9wZXJ0aWVzO1xuICAgIH1cbiAgICBnZXRNZXJnZWRQcm9wZXJ0eShwcm9wZXJ0eSkge1xuICAgICAgICByZXR1cm4gdGhpcy5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XTtcbiAgICB9XG4gICAgZ2V0TWVyZ2VkUHJvcGVydGllcygpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMubWVyZ2VkUHJvcGVydGllcyk7XG4gICAgfVxuICAgIGFkZE1lcmdlZFByb3BlcnR5KHByb3BlcnR5LCB2YWx1ZSkge1xuICAgICAgICB0aGlzLmhhc01lcmdlZFByb3BlcnRpZXMgPSB0cnVlO1xuICAgICAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgWW91IHBhc3NlZCBpbiBcXGAke0pTT04uc3RyaW5naWZ5KHZhbHVlKX1cXGAgYXMgdGhlIHZhbHVlIGZvciBcXGBmb29cXGAgYnV0IFxcYGZvb1xcYCBjYW5ub3QgYmUgYW4gQXJyYXlgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvcGVydHkgaW4gdGhpcy5tZXJnZWRQcm9wZXJ0aWVzICYmIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wZXJ0eV0gJiYgdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wZXJ0eV0gPSBtZXJnZU1lcmdlZFByb3BlcnRpZXModmFsdWUsIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wZXJ0eV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZSA9PT0gbnVsbCA/IHZhbHVlIDogdmFsdWUgfHwge307XG4gICAgICAgICAgICB0aGlzLm1lcmdlZFByb3BlcnRpZXNbcHJvcGVydHldID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0UmVmZXJlbmNlVHlwZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZVR5cGVzO1xuICAgIH1cbiAgICBnZXRQcm9wZXJ0eU1ldGFkYXRhKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9wZXJ0eU1ldGFkYXRhO1xuICAgIH1cbiAgICByZXNldChwYXJlbnQpIHtcbiAgICAgICAgdGhpcy5yZWZlcmVuY2VUeXBlcyA9IGRpY3QoKTtcbiAgICAgICAgdGhpcy5wcm9wZXJ0eU1ldGFkYXRhID0gZGljdCgpO1xuICAgICAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSBkaWN0KCk7XG4gICAgICAgIHRoaXMubWVyZ2VkUHJvcGVydGllcyA9IGRpY3QoKTtcbiAgICAgICAgaWYgKHBhcmVudCkge1xuICAgICAgICAgICAgdGhpcy5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzID0gcGFyZW50Lmhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXM7XG4gICAgICAgICAgICBmb3IgKGxldCBwcm9wIGluIHBhcmVudC5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzW3Byb3BdID0gcGFyZW50LmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcF0uc2xpY2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuaGFzTWVyZ2VkUHJvcGVydGllcyA9IHBhcmVudC5oYXNNZXJnZWRQcm9wZXJ0aWVzO1xuICAgICAgICAgICAgZm9yIChsZXQgcHJvcCBpbiBwYXJlbnQubWVyZ2VkUHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wXSA9IGFzc2lnbih7fSwgcGFyZW50Lm1lcmdlZFByb3BlcnRpZXNbcHJvcF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXNzaWduKHRoaXMucmVmZXJlbmNlVHlwZXMsIHBhcmVudC5yZWZlcmVuY2VUeXBlcyk7XG4gICAgICAgICAgICBhc3NpZ24odGhpcy5wcm9wZXJ0eU1ldGFkYXRhLCBwYXJlbnQucHJvcGVydHlNZXRhZGF0YSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmVzZWFsKG9iaikge1xuICAgICAgICBsZXQgbWV0YSA9IE1ldGEuZm9yKG9iaik7XG4gICAgICAgIGxldCBmcmVzaCA9IG5ldyB0aGlzLkluc3RhbmNlTWV0YUNvbnN0cnVjdG9yKG9iaiwge30pO1xuICAgICAgICBsZXQgcmVmZXJlbmNlVHlwZXMgPSBtZXRhLmdldFJlZmVyZW5jZVR5cGVzKCk7XG4gICAgICAgIGxldCBzbG90cyA9IG1ldGEuZ2V0U2xvdHMoKTtcbiAgICAgICAgdHVyYm9jaGFyZ2UoYXNzaWduKHJlZmVyZW5jZVR5cGVzLCB0aGlzLnJlZmVyZW5jZVR5cGVzKSk7XG4gICAgICAgIHR1cmJvY2hhcmdlKGFzc2lnbihzbG90cywgZnJlc2guZ2V0U2xvdHMoKSkpO1xuICAgIH1cbiAgICBzZWFsKCkge1xuICAgICAgICBsZXQgcmVmZXJlbmNlVHlwZXMgPSB0dXJib2NoYXJnZShhc3NpZ24oe30sIHRoaXMucmVmZXJlbmNlVHlwZXMpKTtcbiAgICAgICAgdHVyYm9jaGFyZ2UodGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKTtcbiAgICAgICAgdHVyYm9jaGFyZ2UodGhpcy5tZXJnZWRQcm9wZXJ0aWVzKTtcbiAgICAgICAgaWYgKCF0aGlzLmhhc01lcmdlZFByb3BlcnRpZXMgJiYgIXRoaXMuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcykge1xuICAgICAgICAgICAgdGhpcy5pbml0ID0gZnVuY3Rpb24gKCkge307XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHNsb3RzID0gdGhpcy5zbG90cztcbiAgICAgICAgY2xhc3MgU2xvdHMge1xuICAgICAgICAgICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgICAgICAgICAgc2xvdHMuZm9yRWFjaChuYW1lID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpc1tuYW1lXSA9IEVNUFRZX0NBQ0hFO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuSW5zdGFuY2VNZXRhQ29uc3RydWN0b3IgPSBjbGFzcyBleHRlbmRzIFNlYWxlZE1ldGEge1xuICAgICAgICAgICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgICAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNsb3RzID0gbmV3IFNsb3RzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWZlcmVuY2VUeXBlcyA9IHJlZmVyZW5jZVR5cGVzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZ2V0UmVmZXJlbmNlVHlwZXMoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlVHlwZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZWZlcmVuY2VUeXBlRm9yKHByb3BlcnR5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlVHlwZXNbcHJvcGVydHldIHx8IFByb3BlcnR5UmVmZXJlbmNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZ2V0U2xvdHMoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2xvdHM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHR1cmJvY2hhcmdlKHRoaXMpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIG1lcmdlTWVyZ2VkUHJvcGVydGllcyhhdHRycywgcGFyZW50KSB7XG4gICAgbGV0IG1lcmdlZCA9IGFzc2lnbih7fSwgcGFyZW50KTtcbiAgICBmb3IgKGxldCBwcm9wIGluIGF0dHJzKSB7XG4gICAgICAgIGlmIChwcm9wIGluIHBhcmVudCAmJiB0eXBlb2YgcGFyZW50W3Byb3BdID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBhdHRyc1twcm9wXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgbGV0IHdyYXBwZWQgPSB3cmFwTWV0aG9kKHBhcmVudCwgcHJvcCwgYXR0cnNbcHJvcF0pO1xuICAgICAgICAgICAgbWVyZ2VkW3Byb3BdID0gd3JhcHBlZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1lcmdlZFtwcm9wXSA9IGF0dHJzW3Byb3BdO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtZXJnZWQ7XG59XG5leHBvcnQgY2xhc3MgSW5zdGFuY2VNZXRhIGV4dGVuZHMgQ2xhc3NNZXRhIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgdGhpc1tcImRmOGJlNGM4LTRlODktNDRlMi1hOGY5LTU1MGM4ZGFjZGNhN1wiXSA9IENsYXNzTWV0YS5mcm9tUGFyZW50KG51bGwpO1xuICAgIH1cbiAgICBzdGF0aWMgZnJvbVBhcmVudChwYXJlbnQpIHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmZyb21QYXJlbnQocGFyZW50KTtcbiAgICB9XG4gICAgcmVzZXQocGFyZW50KSB7XG4gICAgICAgIHN1cGVyLnJlc2V0KHBhcmVudCk7XG4gICAgICAgIGlmIChwYXJlbnQpIHRoaXNbQ0xBU1NfTUVUQV0ucmVzZXQocGFyZW50W0NMQVNTX01FVEFdKTtcbiAgICB9XG4gICAgc2VhbCgpIHtcbiAgICAgICAgc3VwZXIuc2VhbCgpO1xuICAgICAgICB0aGlzW0NMQVNTX01FVEFdLnNlYWwoKTtcbiAgICB9XG59XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHbGltbWVyT2JqZWN0IHtcbiAgICBjb25zdHJ1Y3RvcihhdHRycykge1xuICAgICAgICB0aGlzLl9zdXBlciA9IFJPT1Q7XG4gICAgICAgIHRoaXMuX21ldGEgPSBudWxsO1xuICAgICAgICBpZiAoYXR0cnMpIGFzc2lnbih0aGlzLCBhdHRycyk7XG4gICAgICAgIHRoaXMuY29uc3RydWN0b3JbQ0xBU1NfTUVUQV0uaW5pdCh0aGlzLCBhdHRycyB8fCBudWxsKTtcbiAgICAgICAgdGhpcy5fc3VwZXIgPSBST09UO1xuICAgICAgICBpbml0aWFsaXplR3VpZCh0aGlzKTtcbiAgICAgICAgdGhpcy5pbml0KCk7XG4gICAgfVxuICAgIHN0YXRpYyBleHRlbmQoLi4uZXh0ZW5zaW9ucykge1xuICAgICAgICByZXR1cm4gZXh0ZW5kQ2xhc3ModGhpcywgLi4uZXh0ZW5zaW9ucyk7XG4gICAgfVxuICAgIHN0YXRpYyBjcmVhdGUoYXR0cnMpIHtcbiAgICAgICAgcmV0dXJuIG5ldyB0aGlzKGF0dHJzKTtcbiAgICB9XG4gICAgc3RhdGljIHJlb3BlbihleHRlbnNpb25zKSB7XG4gICAgICAgIHRvTWl4aW4oZXh0ZW5zaW9ucykuZXh0ZW5kUHJvdG90eXBlKHRoaXMpO1xuICAgICAgICB0aGlzW0NMQVNTX01FVEFdLnNlYWwoKTtcbiAgICAgICAgcmVsaW5rU3ViY2xhc3Nlcyh0aGlzKTtcbiAgICB9XG4gICAgc3RhdGljIHJlb3BlbkNsYXNzKGV4dGVuc2lvbnMpIHtcbiAgICAgICAgdG9NaXhpbihleHRlbnNpb25zKS5leHRlbmRTdGF0aWModGhpcyk7XG4gICAgICAgIHRoaXNbQ0xBU1NfTUVUQV0uc2VhbCgpO1xuICAgIH1cbiAgICBzdGF0aWMgbWV0YUZvclByb3BlcnR5KHByb3BlcnR5KSB7XG4gICAgICAgIGxldCB2YWx1ZSA9IHRoaXNbQ0xBU1NfTUVUQV0ubWV0YWRhdGFGb3JQcm9wZXJ0eShwcm9wZXJ0eSk7XG4gICAgICAgIGlmICghdmFsdWUpIHRocm93IG5ldyBFcnJvcihgbWV0YUZvclByb3BlcnR5KCkgY291bGQgbm90IGZpbmQgYSBjb21wdXRlZCBwcm9wZXJ0eSB3aXRoIGtleSAnJHtwcm9wZXJ0eX0nLmApO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIHN0YXRpYyBlYWNoQ29tcHV0ZWRQcm9wZXJ0eShjYWxsYmFjaykge1xuICAgICAgICBsZXQgbWV0YWRhdGEgPSB0aGlzW0NMQVNTX01FVEFdLmdldFByb3BlcnR5TWV0YWRhdGEoKTtcbiAgICAgICAgaWYgKCFtZXRhZGF0YSkgcmV0dXJuO1xuICAgICAgICBmb3IgKGxldCBwcm9wIGluIG1ldGFkYXRhKSB7XG4gICAgICAgICAgICBjYWxsYmFjayhwcm9wLCBtZXRhZGF0YVtwcm9wXSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaW5pdCgpIHt9XG4gICAgZ2V0KGtleSkge1xuICAgICAgICByZXR1cm4gdGhpc1trZXldO1xuICAgIH1cbiAgICBzZXQoa2V5LCB2YWx1ZSkge1xuICAgICAgICB0aGlzW2tleV0gPSB2YWx1ZTtcbiAgICB9XG4gICAgc2V0UHJvcGVydGllcyhhdHRycykge1xuICAgICAgICBhc3NpZ24odGhpcywgYXR0cnMpO1xuICAgIH1cbiAgICBkZXN0cm95KCkge31cbn1cbkdsaW1tZXJPYmplY3RbXCJkZjhiZTRjOC00ZTg5LTQ0ZTItYThmOS01NTBjOGRhY2RjYTdcIl0gPSBJbnN0YW5jZU1ldGEuZnJvbVBhcmVudChudWxsKTtcbkdsaW1tZXJPYmplY3QuaXNDbGFzcyA9IHRydWU7Il19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvQGdsaW1tZXIvb2JqZWN0L2xpYi9vYmplY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxBQUFPLEFBQ0wsQUFBSSxBQUVKLEFBQWlCLEFBQ2xCLEFBQU0sQUFBMkIsQUFBQzs7QUFDbkMsQUFBTyxBQUFRLEFBQUksQUFBRSxBQUFNLEFBQUUsQUFBYyxBQUFFLEFBQU0sQUFBZSxBQUFDOztBQUNuRSxBQUFPLEFBRUwsQUFBTSxBQUFJLEFBQVcsQUFDckIsQUFBTyxBQUNQLEFBQWdCLEFBQ2hCLEFBQVUsQUFDWCxBQUFNLEFBQVMsQUFBQyxBQUVqQixBQUFNOztBQUVOLEFBQU8sQUFBRSxBQUFJLEFBQUUsQUFBTSxBQUFTLEFBQUMsQUFHL0IsQUFBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUxFLEFBQU8sQUFBRSxVQUFHLEFBQUssQUFBQzs7QUFLbkIsSUFBTSxBQUFXLG9DQUFHLHVCQUF3QixBQUFDLEFBQUM7QUFFckQsSUFBTSxBQUFVLGFBQUcsQUFBc0MsQUFBQyxBQXdCMUQsQUFBTTtxQkFBeUIsQUFBTSxLQUNuQyxBQUFzQixBQUN0QixBQUF5QjtBQUN6QixBQUFNOztXQUFDLEFBQUcsQUFBQyxBQUNiLEFBQUMsQUFFRDs7O0lBQTBCOzs7Ozs7Ozs7eUJBQ0osQUFBRyxBQUFZLHFEQUNqQztjQUFNLElBQUksQUFBSyxNQUFDLEFBQWdELEFBQUMsQUFBQyxBQUNwRSxBQUFDLEFBQ0Y7Ozs7QUFKaUMsQUFBSSxBQUNwQyxBQUFtQixBQUtyQixBQUFNOztJQUFOO3lCQUNVOzs7YUFBYyxpQkFBRyxBQUFJLEFBQThCLEFBQUMsQUFDcEQ7YUFBZ0IsbUJBQUcsQUFBSSxBQUFPLEFBQUMsQUFDL0I7YUFBc0IseUJBQUcsQUFBSSxBQUFTLEFBQUMsQUFDdkM7YUFBeUIsNEJBQUcsQUFBSyxBQUFDLEFBQ2xDO2FBQWdC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QUFDLFlBQUMsQUFBbUIsb0JBQUMsQUFBUSxBQUFDLEFBQUMsQUFDM0QsQUFBRSxBQUFDO1lBQUMsQ0FBQyxBQUFLLEFBQUMsT0FBQyxNQUFNLElBQUksQUFBSyxBQUFDLDJFQUFrRSxBQUFRLEFBQUksQUFBQyxBQUFDLEFBQzVHLEFBQU07ZUFBQyxBQUFLLEFBQUMsQUFDZixBQUFDLEFBRUQsQUFBTTs7O2tCQUFDLEFBQW9CLHFEQUFDLEFBQXdDLFVBQ2xFO1lBQUksQUFBUSxXQUFHLEFBQUksS0FBQyxBQUFVLEFBQUMsWUFBQyxBQUFtQixBQUFFLEFBQUMsQUFDdEQsQUFBRSxBQUFDO1lBQUMsQ0FBQyxBQUFRLEFBQUMsVUFBQyxBQUFNLEFBQUMsQUFFdEIsQUFBRyxBQUFDO2FBQUMsSUFBSSxBQUFJLFFBQUksQUFBUSxBQUFDLFVBQUMsQUFBQyxBQUMxQixBQUFRO3FCQUFDLEFBQUksTUFBRSxBQUFRLFNBQUMsQUFBSSxBQUFDLEFBQUMsQUFBQyxBQUNqQyxBQUFDLEFBQ0gsQUFBQztBQU1ELEFBQUk7OzttREFBSSxBQUFDLEFBVVQsQUFBRzs7K0NBQUMsQUFBVyxLQUNiLEFBQU07ZUFBQyxBQUFJLEtBQUMsQUFBRyxBQUFDLEFBQUMsQUFDbkIsQUFBQyxBQUVELEFBQUc7OzsrQ0FBQyxBQUFXLEtBQUUsQUFBVSxPQUN6QixBQUFJO2FBQUMsQUFBRyxBQUFDLE9BQUcsQUFBSyxBQUFDLEFBQ3BCLEFBQUMsQUFFRCxBQUFhOzs7bUVBQUMsQUFBYSxPQUN6QixBQUFNOzBCQUFDLEFBQUksTUFBRSxBQUFLLEFBQUMsQUFBQyxBQUN0QixBQUFDLEFBRUQsQUFBTzs7O3lEQUFJLEFBQUM7Ozs7Ozs7O0FBcEVMLGNBQXNDLDBDQUFpQixBQUFZLGFBQUMsQUFBVSxXQUFDLEFBQUksQUFBQyxBQUFDO0FBQ3JGLGNBQU8sVUFBRyxBQUFJLEFBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBNZXRhLFxuICBJbm5lclJlZmVyZW5jZUZhY3RvcnksXG4gIFByb3BlcnR5UmVmZXJlbmNlXG59IGZyb20gJ0BnbGltbWVyL29iamVjdC1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgRGljdCwgZGljdCwgYXNzaWduLCBpbml0aWFsaXplR3VpZCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHtcbiAgTWl4aW4sXG4gIGV4dGVuZCBhcyBleHRlbmRDbGFzcyxcbiAgdG9NaXhpbixcbiAgcmVsaW5rU3ViY2xhc3NlcyxcbiAgd3JhcE1ldGhvZFxufSBmcm9tICcuL21peGluJztcblxuY29uc3QgeyBpc0FycmF5IH0gPSBBcnJheTtcblxuaW1wb3J0IHsgUk9PVCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgT3B0aW9uIH0gZnJvbSBcIkBnbGltbWVyL2ludGVyZmFjZXNcIjtcblxuZXhwb3J0IGNvbnN0IEVNUFRZX0NBQ0hFID0gZnVuY3Rpb24gRU1QVFlfQ0FDSEUoKSB7fTtcblxuY29uc3QgQ0xBU1NfTUVUQSA9IFwiZGY4YmU0YzgtNGU4OS00NGUyLWE4ZjktNTUwYzhkYWNkY2E3XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2JqZWN0V2l0aE1peGlucyB7XG4gIFwiZGY4YmU0YzgtNGU4OS00NGUyLWE4ZjktNTUwYzhkYWNkY2E3XCI6IENsYXNzTWV0YTtcbiAgX21ldGE6IE1ldGE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5zdGFuY2VXaXRoTWl4aW5zIHtcbiAgY29uc3RydWN0b3I6IE9iamVjdFdpdGhNaXhpbnM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2xpbW1lck9iamVjdEZhY3Rvcnk8VD4ge1xuICBuZXc8VT4oYXR0cnM/OiBVKTogR2xpbW1lck9iamVjdCAmIFQgJiBVO1xuICBleHRlbmQoKTogR2xpbW1lck9iamVjdEZhY3Rvcnk8T2JqZWN0PjtcbiAgZXh0ZW5kPFQ+KGV4dGVuc2lvbjogVCk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PFQ+O1xuICBleHRlbmQoLi4uZXh0ZW5zaW9uczogT2JqZWN0W10pOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxPYmplY3Q+O1xuICBjcmVhdGU8VT4oYXR0cnM/OiBVKTogR2xpbW1lck9iamVjdCAmIFQgJiBVO1xuICByZW9wZW48VT4oZXh0ZW5zaW9uczogVSk6IHZvaWQ7XG4gIHJlb3BlbkNsYXNzPFU+KGV4dGVuc2lvbnM6IFUpOiB2b2lkO1xuICBtZXRhRm9yUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IE9iamVjdDtcbiAgZWFjaENvbXB1dGVkUHJvcGVydHkoY2FsbGJhY2s6IChzOiBzdHJpbmcsIG86IE9iamVjdCkgPT4gdm9pZCk6IHZvaWQ7XG4gIFwiZGY4YmU0YzgtNGU4OS00NGUyLWE4ZjktNTUwYzhkYWNkY2E3XCI6IEluc3RhbmNlTWV0YTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR1cmJvY2hhcmdlPFQ+KG9iajogVCk6IFQge1xuICAvLyBmdW5jdGlvbiBEdW1teSgpIHt9XG4gIC8vIER1bW15LnByb3RvdHlwZSA9IG9iajtcbiAgcmV0dXJuIG9iajtcbn1cblxuYWJzdHJhY3QgY2xhc3MgU2VhbGVkTWV0YSBleHRlbmRzIE1ldGEge1xuICBhZGRSZWZlcmVuY2VUeXBlRm9yKC4uLl9hcmdzOiBhbnlbXSk6IElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgbW9kaWZ5IHJlZmVyZW5jZSB0eXBlcyBvbiBhIHNlYWxlZCBtZXRhXCIpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDbGFzc01ldGEge1xuICBwcml2YXRlIHJlZmVyZW5jZVR5cGVzID0gZGljdDxJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55Pj4oKTtcbiAgcHJpdmF0ZSBwcm9wZXJ0eU1ldGFkYXRhID0gZGljdDxhbnk+KCk7XG4gIHByaXZhdGUgY29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IGRpY3Q8YW55W10+KCk7XG4gIHByaXZhdGUgaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IGZhbHNlO1xuICBwcml2YXRlIG1lcmdlZFByb3BlcnRpZXMgPSBkaWN0PE9iamVjdD4oKTtcbiAgcHJpdmF0ZSBoYXNNZXJnZWRQcm9wZXJ0aWVzID0gZmFsc2U7XG4gIHByaXZhdGUgbWl4aW5zOiBNaXhpbltdID0gW107XG4gIHByaXZhdGUgYXBwbGllZE1peGluczogTWl4aW5bXSA9IFtdO1xuICBwcml2YXRlIHN0YXRpY01peGluczogTWl4aW5bXSA9IFtdO1xuICBwcml2YXRlIHN1YmNsYXNzZXM6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT5bXSA9IFtdO1xuICBwcml2YXRlIHNsb3RzOiBzdHJpbmdbXSA9IFtdO1xuICBwdWJsaWMgSW5zdGFuY2VNZXRhQ29uc3RydWN0b3I6IE9wdGlvbjx0eXBlb2YgTWV0YT4gPSBudWxsO1xuXG4gIHN0YXRpYyBmcm9tUGFyZW50KHBhcmVudDogT3B0aW9uPENsYXNzTWV0YT4pIHtcbiAgICBsZXQgbWV0YSA9IG5ldyB0aGlzKCk7XG4gICAgbWV0YS5yZXNldChwYXJlbnQpO1xuICAgIHJldHVybiBtZXRhO1xuICB9XG5cbiAgc3RhdGljIGZvcihvYmplY3Q6IE9iamVjdFdpdGhNaXhpbnMgfCBJbnN0YW5jZVdpdGhNaXhpbnMpOiBPcHRpb248Q2xhc3NNZXRhPiB7XG4gICAgaWYgKENMQVNTX01FVEEgaW4gb2JqZWN0KSByZXR1cm4gKDxPYmplY3RXaXRoTWl4aW5zPm9iamVjdClbQ0xBU1NfTUVUQV07XG4gICAgZWxzZSBpZiAob2JqZWN0LmNvbnN0cnVjdG9yKSByZXR1cm4gKDxJbnN0YW5jZVdpdGhNaXhpbnM+b2JqZWN0KS5jb25zdHJ1Y3RvcltDTEFTU19NRVRBXSB8fCBudWxsO1xuICAgIGVsc2UgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpbml0KG9iamVjdDogR2xpbW1lck9iamVjdCwgYXR0cnM6IE9wdGlvbjxPYmplY3Q+KSB7XG4gICAgaWYgKHR5cGVvZiBhdHRycyAhPT0gJ29iamVjdCcgfHwgYXR0cnMgPT09IG51bGwpIHJldHVybjtcblxuICAgIGlmICh0aGlzLmhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXMpIHtcbiAgICAgIGxldCBjb25jYXRQcm9wcyA9IHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcztcbiAgICAgIGZvciAobGV0IHByb3AgaW4gY29uY2F0UHJvcHMpIHtcbiAgICAgICAgaWYgKHByb3AgaW4gYXR0cnMpIHtcbiAgICAgICAgICBsZXQgY29uY2F0ID0gY29uY2F0UHJvcHNbcHJvcF0uc2xpY2UoKTtcbiAgICAgICAgICBvYmplY3RbcHJvcF0gPSBjb25jYXQuY29uY2F0KGF0dHJzW3Byb3BdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmhhc01lcmdlZFByb3BlcnRpZXMpIHtcbiAgICAgIGxldCBtZXJnZWRQcm9wcyA9IHRoaXMubWVyZ2VkUHJvcGVydGllcztcbiAgICAgIGZvciAobGV0IHByb3AgaW4gbWVyZ2VkUHJvcHMpIHtcbiAgICAgICAgaWYgKHByb3AgaW4gYXR0cnMpIHtcbiAgICAgICAgICBsZXQgbWVyZ2VkID0gYXNzaWduKHt9LCBtZXJnZWRQcm9wc1twcm9wXSk7XG4gICAgICAgICAgb2JqZWN0W3Byb3BdID0gYXNzaWduKG1lcmdlZCwgYXR0cnNbcHJvcF0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYWRkU3RhdGljTWl4aW4obWl4aW46IE1peGluKSB7XG4gICAgdGhpcy5zdGF0aWNNaXhpbnMucHVzaChtaXhpbik7XG4gIH1cblxuICBhZGRNaXhpbihtaXhpbjogTWl4aW4pIHtcbiAgICB0aGlzLm1peGlucy5wdXNoKG1peGluKTtcbiAgfVxuXG4gIGdldFN0YXRpY01peGlucygpOiBNaXhpbltdIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0aWNNaXhpbnM7XG4gIH1cblxuICBnZXRNaXhpbnMoKTogTWl4aW5bXSB7XG4gICAgcmV0dXJuIHRoaXMubWl4aW5zO1xuICB9XG5cbiAgYWRkQXBwbGllZE1peGluKG1peGluOiBNaXhpbikge1xuICAgIHRoaXMuYXBwbGllZE1peGlucy5wdXNoKG1peGluKTtcbiAgfVxuXG4gIGhhc0FwcGxpZWRNaXhpbihtaXhpbjogTWl4aW4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hcHBsaWVkTWl4aW5zLmluZGV4T2YobWl4aW4pICE9PSAtMTtcbiAgfVxuXG4gIGdldEFwcGxpZWRNaXhpbnMoKTogTWl4aW5bXSB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbGllZE1peGlucztcbiAgfVxuXG4gIGhhc1N0YXRpY01peGluKG1peGluOiBNaXhpbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0YXRpY01peGlucy5pbmRleE9mKG1peGluKSAhPT0gLTE7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlBbGxNaXhpbnMoU3ViY2xhc3M6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4sIFBhcmVudDogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLmdldE1peGlucygpLmZvckVhY2goKG06IE1peGluKSA9PiBtLmV4dGVuZFByb3RvdHlwZU9udG8oU3ViY2xhc3MsIFBhcmVudCkpO1xuICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLmdldFN0YXRpY01peGlucygpLmZvckVhY2goKG06IE1peGluKSA9PiBtLmV4dGVuZFN0YXRpYyhTdWJjbGFzcykpO1xuICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLnNlYWwoKTtcbiAgfVxuXG4gIGFkZFN1YmNsYXNzKGNvbnN0cnVjdG9yOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+KSB7XG4gICAgdGhpcy5zdWJjbGFzc2VzLnB1c2goY29uc3RydWN0b3IpO1xuICB9XG5cbiAgZ2V0U3ViY2xhc3NlcygpOiBGdW5jdGlvbltdIHtcbiAgICByZXR1cm4gdGhpcy5zdWJjbGFzc2VzO1xuICB9XG5cbiAgYWRkUHJvcGVydHlNZXRhZGF0YShwcm9wZXJ0eTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5wcm9wZXJ0eU1ldGFkYXRhW3Byb3BlcnR5XSA9IHZhbHVlO1xuICB9XG5cbiAgbWV0YWRhdGFGb3JQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nKTogT2JqZWN0IHtcbiAgICByZXR1cm4gdGhpcy5wcm9wZXJ0eU1ldGFkYXRhW3Byb3BlcnR5XTtcbiAgfVxuXG4gIGFkZFJlZmVyZW5jZVR5cGVGb3IocHJvcGVydHk6IHN0cmluZywgdHlwZTogSW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4pIHtcbiAgICB0aGlzLnJlZmVyZW5jZVR5cGVzW3Byb3BlcnR5XSA9IHR5cGU7XG4gIH1cblxuICBhZGRTbG90Rm9yKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICB0aGlzLnNsb3RzLnB1c2gocHJvcGVydHkpO1xuICB9XG5cbiAgaGFzQ29uY2F0ZW5hdGVkUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIDxzdHJpbmc+cHJvcGVydHkgaW4gdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzO1xuICB9XG5cbiAgZ2V0Q29uY2F0ZW5hdGVkUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XTtcbiAgfVxuXG4gIGdldENvbmNhdGVuYXRlZFByb3BlcnRpZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiA8c3RyaW5nW10+T2JqZWN0LmtleXModGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKTtcbiAgfVxuXG4gIGFkZENvbmNhdGVuYXRlZFByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSB0cnVlO1xuXG4gICAgaWYgKDxzdHJpbmc+cHJvcGVydHkgaW4gdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKSB7XG4gICAgICBsZXQgdmFsID0gdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XS5jb25jYXQodmFsdWUpO1xuICAgICAgdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XSA9IHZhbDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGhhc01lcmdlZFByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuaGFzTWVyZ2VkUHJvcGVydGllcykgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiA8c3RyaW5nPnByb3BlcnR5IGluIHRoaXMubWVyZ2VkUHJvcGVydGllcztcbiAgfVxuXG4gIGdldE1lcmdlZFByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBPYmplY3Qge1xuICAgIHJldHVybiB0aGlzLm1lcmdlZFByb3BlcnRpZXNbcHJvcGVydHldO1xuICB9XG5cbiAgZ2V0TWVyZ2VkUHJvcGVydGllcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIDxzdHJpbmdbXT5PYmplY3Qua2V5cyh0aGlzLm1lcmdlZFByb3BlcnRpZXMpO1xuICB9XG5cbiAgYWRkTWVyZ2VkUHJvcGVydHkocHJvcGVydHk6IHN0cmluZywgdmFsdWU6IE9iamVjdCkge1xuICAgIHRoaXMuaGFzTWVyZ2VkUHJvcGVydGllcyA9IHRydWU7XG5cbiAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgWW91IHBhc3NlZCBpbiBcXGAke0pTT04uc3RyaW5naWZ5KHZhbHVlKX1cXGAgYXMgdGhlIHZhbHVlIGZvciBcXGBmb29cXGAgYnV0IFxcYGZvb1xcYCBjYW5ub3QgYmUgYW4gQXJyYXlgKTtcbiAgICB9XG5cbiAgICBpZiAoPHN0cmluZz5wcm9wZXJ0eSBpbiB0aGlzLm1lcmdlZFByb3BlcnRpZXMgJiYgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XSAmJiB2YWx1ZSkge1xuICAgICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XSA9IG1lcmdlTWVyZ2VkUHJvcGVydGllcyh2YWx1ZSwgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlID0gdmFsdWUgPT09IG51bGwgPyB2YWx1ZSA6IHZhbHVlIHx8IHt9O1xuICAgICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGdldFJlZmVyZW5jZVR5cGVzKCk6IERpY3Q8SW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4+IHtcbiAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2VUeXBlcztcbiAgfVxuXG4gIGdldFByb3BlcnR5TWV0YWRhdGEoKTogRGljdDxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5wcm9wZXJ0eU1ldGFkYXRhO1xuICB9XG5cbiAgcmVzZXQocGFyZW50OiBPcHRpb248Q2xhc3NNZXRhPikge1xuICAgIHRoaXMucmVmZXJlbmNlVHlwZXMgPSBkaWN0PElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+PigpO1xuICAgIHRoaXMucHJvcGVydHlNZXRhZGF0YSA9IGRpY3QoKTtcbiAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSBkaWN0PGFueVtdPigpO1xuICAgIHRoaXMubWVyZ2VkUHJvcGVydGllcyA9IGRpY3Q8T2JqZWN0PigpO1xuXG4gICAgaWYgKHBhcmVudCkge1xuICAgICAgdGhpcy5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzID0gcGFyZW50Lmhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXM7XG4gICAgICBmb3IgKGxldCBwcm9wIGluIHBhcmVudC5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllc1twcm9wXSA9IHBhcmVudC5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzW3Byb3BdLnNsaWNlKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaGFzTWVyZ2VkUHJvcGVydGllcyA9IHBhcmVudC5oYXNNZXJnZWRQcm9wZXJ0aWVzO1xuICAgICAgZm9yIChsZXQgcHJvcCBpbiBwYXJlbnQubWVyZ2VkUHJvcGVydGllcykge1xuICAgICAgICB0aGlzLm1lcmdlZFByb3BlcnRpZXNbcHJvcF0gPSBhc3NpZ24oe30sIHBhcmVudC5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BdKTtcbiAgICAgIH1cblxuICAgICAgYXNzaWduKHRoaXMucmVmZXJlbmNlVHlwZXMsIHBhcmVudC5yZWZlcmVuY2VUeXBlcyk7XG4gICAgICBhc3NpZ24odGhpcy5wcm9wZXJ0eU1ldGFkYXRhLCBwYXJlbnQucHJvcGVydHlNZXRhZGF0YSk7XG4gICAgfVxuICB9XG5cbiAgcmVzZWFsKG9iajogT2JqZWN0KSB7XG4gICAgbGV0IG1ldGEgPSBNZXRhLmZvcihvYmopO1xuICAgIGxldCBmcmVzaCA9IG5ldyB0aGlzLkluc3RhbmNlTWV0YUNvbnN0cnVjdG9yIShvYmosIHt9KTtcbiAgICBsZXQgcmVmZXJlbmNlVHlwZXMgPSBtZXRhLmdldFJlZmVyZW5jZVR5cGVzKCk7XG4gICAgbGV0IHNsb3RzID0gbWV0YS5nZXRTbG90cygpO1xuXG4gICAgdHVyYm9jaGFyZ2UoYXNzaWduKHJlZmVyZW5jZVR5cGVzLCB0aGlzLnJlZmVyZW5jZVR5cGVzKSk7XG4gICAgdHVyYm9jaGFyZ2UoYXNzaWduKHNsb3RzLCBmcmVzaC5nZXRTbG90cygpKSk7XG4gIH1cblxuICBzZWFsKCkge1xuICAgIGxldCByZWZlcmVuY2VUeXBlczogRGljdDxJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55Pj4gPSB0dXJib2NoYXJnZShhc3NpZ24oe30sIHRoaXMucmVmZXJlbmNlVHlwZXMpKTtcbiAgICB0dXJib2NoYXJnZSh0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMpO1xuICAgIHR1cmJvY2hhcmdlKHRoaXMubWVyZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoIXRoaXMuaGFzTWVyZ2VkUHJvcGVydGllcyAmJiAhdGhpcy5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKSB7XG4gICAgICB0aGlzLmluaXQgPSBmdW5jdGlvbigpIHt9O1xuICAgIH1cblxuICAgIGxldCBzbG90cyA9IHRoaXMuc2xvdHM7XG5cbiAgICBjbGFzcyBTbG90cyB7XG4gICAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc2xvdHMuZm9yRWFjaChuYW1lID0+IHtcbiAgICAgICAgICB0aGlzW25hbWVdID0gRU1QVFlfQ0FDSEU7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuSW5zdGFuY2VNZXRhQ29uc3RydWN0b3IgPSBjbGFzcyBleHRlbmRzIFNlYWxlZE1ldGEge1xuICAgICAgcHJvdGVjdGVkIHNsb3RzOiBTbG90cyA9IG5ldyBTbG90cygpO1xuICAgICAgcHVibGljIHJlZmVyZW5jZVR5cGVzOiBEaWN0PElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+PiA9IHJlZmVyZW5jZVR5cGVzO1xuXG4gICAgICBnZXRSZWZlcmVuY2VUeXBlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlVHlwZXM7XG4gICAgICB9XG5cbiAgICAgIHJlZmVyZW5jZVR5cGVGb3IocHJvcGVydHk6IHN0cmluZyk6IElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlVHlwZXNbcHJvcGVydHldIHx8IFByb3BlcnR5UmVmZXJlbmNlO1xuICAgICAgfVxuXG4gICAgICBnZXRTbG90cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2xvdHM7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHR1cmJvY2hhcmdlKHRoaXMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1lcmdlTWVyZ2VkUHJvcGVydGllcyhhdHRyczogT2JqZWN0LCBwYXJlbnQ6IE9iamVjdCkge1xuICBsZXQgbWVyZ2VkID0gYXNzaWduKHt9LCBwYXJlbnQpO1xuXG4gIGZvciAobGV0IHByb3AgaW4gYXR0cnMpIHtcbiAgICBpZiAocHJvcCBpbiBwYXJlbnQgJiYgdHlwZW9mIHBhcmVudFtwcm9wXSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgYXR0cnNbcHJvcF0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGxldCB3cmFwcGVkID0gd3JhcE1ldGhvZChwYXJlbnQsIHByb3AsIGF0dHJzW3Byb3BdKTtcbiAgICAgIG1lcmdlZFtwcm9wXSA9IHdyYXBwZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1lcmdlZFtwcm9wXSA9IGF0dHJzW3Byb3BdO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtZXJnZWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBJbnN0YW5jZU1ldGEgZXh0ZW5kcyBDbGFzc01ldGEge1xuICBwdWJsaWMgXCJkZjhiZTRjOC00ZTg5LTQ0ZTItYThmOS01NTBjOGRhY2RjYTdcIjogQ2xhc3NNZXRhID0gQ2xhc3NNZXRhLmZyb21QYXJlbnQobnVsbCk7XG5cbiAgc3RhdGljIGZyb21QYXJlbnQocGFyZW50OiBPcHRpb248SW5zdGFuY2VNZXRhPik6IEluc3RhbmNlTWV0YSB7XG4gICAgcmV0dXJuIDxJbnN0YW5jZU1ldGE+c3VwZXIuZnJvbVBhcmVudChwYXJlbnQpO1xuICB9XG5cbiAgcmVzZXQocGFyZW50OiBJbnN0YW5jZU1ldGEpIHtcbiAgICBzdXBlci5yZXNldChwYXJlbnQpO1xuICAgIGlmIChwYXJlbnQpIHRoaXNbQ0xBU1NfTUVUQV0ucmVzZXQocGFyZW50W0NMQVNTX01FVEFdKTtcbiAgfVxuXG4gIHNlYWwoKSB7XG4gICAgc3VwZXIuc2VhbCgpO1xuICAgIHRoaXNbQ0xBU1NfTUVUQV0uc2VhbCgpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdsaW1tZXJPYmplY3Qge1xuICBzdGF0aWMgXCJkZjhiZTRjOC00ZTg5LTQ0ZTItYThmOS01NTBjOGRhY2RjYTdcIjogSW5zdGFuY2VNZXRhID0gSW5zdGFuY2VNZXRhLmZyb21QYXJlbnQobnVsbCk7XG4gIHN0YXRpYyBpc0NsYXNzID0gdHJ1ZTtcblxuICBzdGF0aWMgZXh0ZW5kKCk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4gJiB0eXBlb2YgR2xpbW1lck9iamVjdDtcbiAgc3RhdGljIGV4dGVuZDxUPihleHRlbnNpb246IFQpOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxUPiAmIHR5cGVvZiBHbGltbWVyT2JqZWN0O1xuICBzdGF0aWMgZXh0ZW5kKC4uLmV4dGVuc2lvbnM6IE9iamVjdFtdKTogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PiAmIHR5cGVvZiBHbGltbWVyT2JqZWN0O1xuXG4gIHN0YXRpYyBleHRlbmQodGhpczogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PiwgLi4uZXh0ZW5zaW9uczogYW55W10pIHtcbiAgICByZXR1cm4gZXh0ZW5kQ2xhc3ModGhpcywgLi4uZXh0ZW5zaW9ucyk7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlKGF0dHJzPzogT2JqZWN0IHwgbnVsbCk6IEdsaW1tZXJPYmplY3Qge1xuICAgIHJldHVybiBuZXcgdGhpcyhhdHRycyk7XG4gIH1cblxuICBzdGF0aWMgcmVvcGVuPFU+KGV4dGVuc2lvbnM6IFUpOiB2b2lkIHtcbiAgICB0b01peGluKGV4dGVuc2lvbnMpLmV4dGVuZFByb3RvdHlwZSh0aGlzKTtcbiAgICB0aGlzW0NMQVNTX01FVEFdLnNlYWwoKTtcblxuICAgIHJlbGlua1N1YmNsYXNzZXModGhpcyk7XG4gIH1cblxuICBzdGF0aWMgcmVvcGVuQ2xhc3M8VT4oZXh0ZW5zaW9uczogVSk6IHZvaWQge1xuICAgIHRvTWl4aW4oZXh0ZW5zaW9ucykuZXh0ZW5kU3RhdGljKHRoaXMpO1xuICAgIHRoaXNbQ0xBU1NfTUVUQV0uc2VhbCgpO1xuICB9XG5cbiAgc3RhdGljIG1ldGFGb3JQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nKTogT2JqZWN0IHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzW0NMQVNTX01FVEFdLm1ldGFkYXRhRm9yUHJvcGVydHkocHJvcGVydHkpO1xuICAgIGlmICghdmFsdWUpIHRocm93IG5ldyBFcnJvcihgbWV0YUZvclByb3BlcnR5KCkgY291bGQgbm90IGZpbmQgYSBjb21wdXRlZCBwcm9wZXJ0eSB3aXRoIGtleSAnJHtwcm9wZXJ0eX0nLmApO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHN0YXRpYyBlYWNoQ29tcHV0ZWRQcm9wZXJ0eShjYWxsYmFjazogKHM6IHN0cmluZywgbzogT2JqZWN0KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgbGV0IG1ldGFkYXRhID0gdGhpc1tDTEFTU19NRVRBXS5nZXRQcm9wZXJ0eU1ldGFkYXRhKCk7XG4gICAgaWYgKCFtZXRhZGF0YSkgcmV0dXJuO1xuXG4gICAgZm9yIChsZXQgcHJvcCBpbiBtZXRhZGF0YSkge1xuICAgICAgY2FsbGJhY2socHJvcCwgbWV0YWRhdGFbcHJvcF0pO1xuICAgIH1cbiAgfVxuXG4gIF9zdXBlciA9IFJPT1Q7XG4gIF9tZXRhID0gbnVsbDtcbiAgX2d1aWQ6IG51bWJlcjtcblxuICBpbml0KCkge31cblxuICBjb25zdHJ1Y3RvcihhdHRycz86IE9iamVjdCB8IG51bGwpIHtcbiAgICBpZiAoYXR0cnMpIGFzc2lnbih0aGlzLCBhdHRycyk7XG4gICAgKDx0eXBlb2YgR2xpbW1lck9iamVjdD50aGlzLmNvbnN0cnVjdG9yKVtDTEFTU19NRVRBXS5pbml0KHRoaXMsIGF0dHJzIHx8IG51bGwpO1xuICAgIHRoaXMuX3N1cGVyID0gUk9PVDtcbiAgICBpbml0aWFsaXplR3VpZCh0aGlzKTtcbiAgICB0aGlzLmluaXQoKTtcbiAgfVxuXG4gIGdldChrZXk6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXNba2V5XTtcbiAgfVxuXG4gIHNldChrZXk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIHRoaXNba2V5XSA9IHZhbHVlO1xuICB9XG5cbiAgc2V0UHJvcGVydGllcyhhdHRyczogT2JqZWN0KSB7XG4gICAgYXNzaWduKHRoaXMsIGF0dHJzKTtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7fVxufVxuIl19

@@ -30,2 +30,2 @@ 'use strict';

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi91dGlscy5qcyJdLCJuYW1lcyI6WyJIQVNfU1VQRVJfUEFUVEVSTiIsImNoZWNrSGFzU3VwZXIiLCJzb3VyY2VBdmFpbGFibGUiLCJ0b1N0cmluZyIsImluZGV4T2YiLCJmdW5jIiwidGVzdCIsIlJPT1QiLCJfX2hhc1N1cGVyIiwiaGFzU3VwZXIiLCJ1bmRlZmluZWQiXSwibWFwcGluZ3MiOiI7Ozs7O1FBY08sQUFBUztRQUVULEFBQVM7QUFoQmhCLElBQU0sb0JBQU4sQUFBMEIsQUFDMUI7QUFBTyxJQUFNLG9EQUE0QixBQUNyQztRQUFJLDhCQUE4QixBQUM5QjtlQUFBLEFBQU8sQUFDVjtBQUZxQixLQUFBLENBQUEsQUFFcEIsV0FGb0IsQUFFVCxRQUZTLEFBRUQsaUJBQWlCLENBRnRDLEFBRXVDLEFBQ3ZDO1FBQUEsQUFBSSxpQkFBaUIsQUFDakI7ZUFBTyxTQUFBLEFBQVMsY0FBVCxBQUF1QixNQUFNLEFBQ2hDO21CQUFPLGtCQUFBLEFBQWtCLEtBQUssS0FBOUIsQUFBTyxBQUF1QixBQUFLLEFBQ3RDO0FBRkQsQUFHSDtBQUNEO1dBQU8sU0FBQSxBQUFTLGdCQUFnQixBQUM1QjtlQUFBLEFBQU8sQUFDVjtBQUZELEFBR0g7QUFaTSxBQUFzQixBQWE3QixDQWI2QjtBQWF0QixnQkFBd0IsQUFBRTtBQUNqQyxLQUFBLEFBQUssYUFBTCxBQUFrQixBQUNsQjtBQUFPLGtCQUFBLEFBQWtCLE1BQU0sQUFDM0I7UUFBSSxLQUFBLEFBQUssa0JBQVQsQUFBMkIsV0FBVyxBQUNsQzthQUFBLEFBQUssZ0JBQWdCLGNBQXJCLEFBQXFCLEFBQWMsQUFDdEM7QUFDRDtXQUFPLEtBQVAsQUFBTyxBQUFLLEFBQ2YiLCJmaWxlIjoibGliL3V0aWxzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgSEFTX1NVUEVSX1BBVFRFUk4gPSAvXFwuKF9zdXBlcnxjYWxsXFwodGhpc3xhcHBseVxcKHRoaXMpLztcbmV4cG9ydCBjb25zdCBjaGVja0hhc1N1cGVyID0gZnVuY3Rpb24gKCkge1xuICAgIGxldCBzb3VyY2VBdmFpbGFibGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH0udG9TdHJpbmcoKS5pbmRleE9mKCdyZXR1cm4gdGhpcycpID4gLTE7XG4gICAgaWYgKHNvdXJjZUF2YWlsYWJsZSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gY2hlY2tIYXNTdXBlcihmdW5jKSB7XG4gICAgICAgICAgICByZXR1cm4gSEFTX1NVUEVSX1BBVFRFUk4udGVzdChmdW5jLnRvU3RyaW5nKCkpO1xuICAgICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gZnVuY3Rpb24gY2hlY2tIYXNTdXBlcigpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcbn0oKTtcbmV4cG9ydCBmdW5jdGlvbiBST09UKC4uLl9hcmdzKSB7fVxuUk9PVC5fX2hhc1N1cGVyID0gZmFsc2U7XG5leHBvcnQgZnVuY3Rpb24gaGFzU3VwZXIoZnVuYykge1xuICAgIGlmIChmdW5jWydfX2hhc1N1cGVyJ10gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBmdW5jWydfX2hhc1N1cGVyJ10gPSBjaGVja0hhc1N1cGVyKGZ1bmMpO1xuICAgIH1cbiAgICByZXR1cm4gZnVuY1snX19oYXNTdXBlciddO1xufSJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O1FBa0JxQixBQUFHLEFBQVk7O0FBbEJwQyxJQUFNLEFBQWlCLG9CQUFHLEFBQW1DLEFBQUMsQUFFOUQsQUFBTTtJQUFPLEFBQWEsQUFBRyxvREFDM0I7UUFBSSxBQUFlLDhCQUNqQixBQUFNO2VBRGMsQUFDYixBQUFJLEFBQUMsQUFDZCxBQUFDLEFBQUM7QUFGcUIsTUFFcEIsQUFBUSxBQUFFLFdBQUMsQUFBTyxRQUFDLEFBQWEsQUFBQyxpQkFBRyxDQUFDLEFBQUMsQUFBQyxBQUUxQyxBQUFFLEFBQUM7UUFBQyxBQUFlLEFBQUMsaUJBQUMsQUFBQyxBQUNwQixBQUFNO2VBQUMsdUJBQXVCLEFBQWMsTUFDMUMsQUFBTTttQkFBQyxBQUFpQixrQkFBQyxBQUFJLEtBQUMsQUFBSSxLQUFDLEFBQVEsQUFBRSxBQUFDLEFBQUMsQUFDakQsQUFBQyxBQUFDLEFBQ0osQUFBQztBQUVELEFBQU07O1dBQUMseUJBQ0wsQUFBTTtlQUFDLEFBQUksQUFBQyxBQUNkLEFBQUMsQUFBQyxBQUNKLEFBQUMsQUFBRSxBQUFDLEFBQUM7QUFkRSxBQUF1QjtBQWdCOUIsQUFBTTtnQkFBaUMsQUFBQztBQUNsQyxBQUFLLEtBQUMsQUFBVSxhQUFHLEFBQUssQUFBQyxBQUUvQixBQUFNO2tCQUFtQixBQUFjLE1BQ3JDLEFBQUUsQUFBQztRQUFDLEFBQUksS0FBQyxBQUFZLEFBQUMsa0JBQUssQUFBUyxBQUFDLFdBQUMsQUFBQyxBQUNyQyxBQUFJO2FBQUMsQUFBWSxBQUFDLGdCQUFHLEFBQWEsY0FBQyxBQUFJLEFBQUMsQUFBQyxBQUMzQyxBQUFDLEFBQ0QsQUFBTTs7V0FBQyxBQUFJLEtBQUMsQUFBWSxBQUFDLEFBQUMsQUFDNUIsQUFBQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEhBU19TVVBFUl9QQVRURVJOID0gL1xcLihfc3VwZXJ8Y2FsbFxcKHRoaXN8YXBwbHlcXCh0aGlzKS87XG5cbmV4cG9ydCBjb25zdCBjaGVja0hhc1N1cGVyID0gKGZ1bmN0aW9uICgpIHtcbiAgbGV0IHNvdXJjZUF2YWlsYWJsZSA9IChmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfSkudG9TdHJpbmcoKS5pbmRleE9mKCdyZXR1cm4gdGhpcycpID4gLTE7XG5cbiAgaWYgKHNvdXJjZUF2YWlsYWJsZSkge1xuICAgIHJldHVybiBmdW5jdGlvbiBjaGVja0hhc1N1cGVyKGZ1bmM6IEZ1bmN0aW9uKSB7XG4gICAgICByZXR1cm4gSEFTX1NVUEVSX1BBVFRFUk4udGVzdChmdW5jLnRvU3RyaW5nKCkpO1xuICAgIH07XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gY2hlY2tIYXNTdXBlcigpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcbn0oKSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBST09UKC4uLl9hcmdzOiBhbnlbXSkge31cbig8YW55PlJPT1QpLl9faGFzU3VwZXIgPSBmYWxzZTtcblxuZXhwb3J0IGZ1bmN0aW9uIGhhc1N1cGVyKGZ1bmM6IEZ1bmN0aW9uKSB7XG4gIGlmIChmdW5jWydfX2hhc1N1cGVyJ10gPT09IHVuZGVmaW5lZCkge1xuICAgIGZ1bmNbJ19faGFzU3VwZXInXSA9IGNoZWNrSGFzU3VwZXIoZnVuYyk7XG4gIH1cbiAgcmV0dXJuIGZ1bmNbJ19faGFzU3VwZXInXTtcbn0iXX0=
export { default, ClassMeta, InstanceMeta } from './lib/object';
export { computed, observer } from './lib/computed';
export { Mixin, Blueprint, toMixin } from './lib/mixin';
export { aliasMethod, alias } from './lib/descriptors';
export { aliasMethod, alias } from './lib/descriptors';
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQUFBTyxTQUFFLEFBQU8sQUFBSSxBQUFPLFNBQUUsQUFBUyxXQUFFLEFBQVksQUFBd0Isb0JBQU0sQUFBYyxBQUFDO0FBQ2pHLEFBQU8sU0FBRSxBQUFRLFVBQUUsQUFBUSxBQUFFLGdCQUFNLEFBQWdCLEFBQUM7QUFDcEQsQUFBTyxTQUFFLEFBQUssT0FBRSxBQUFTLFdBQUUsQUFBTyxBQUFFLGVBQU0sQUFBYSxBQUFDO0FBQ3hELEFBQU8sU0FBRSxBQUFXLGFBQUUsQUFBSyxBQUFFLGFBQU0sQUFBbUIsQUFBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGRlZmF1bHQgYXMgZGVmYXVsdCwgQ2xhc3NNZXRhLCBJbnN0YW5jZU1ldGEsIEdsaW1tZXJPYmplY3RGYWN0b3J5IH0gZnJvbSAnLi9saWIvb2JqZWN0JztcbmV4cG9ydCB7IGNvbXB1dGVkLCBvYnNlcnZlciB9IGZyb20gJy4vbGliL2NvbXB1dGVkJztcbmV4cG9ydCB7IE1peGluLCBCbHVlcHJpbnQsIHRvTWl4aW4gfSBmcm9tICcuL2xpYi9taXhpbic7XG5leHBvcnQgeyBhbGlhc01ldGhvZCwgYWxpYXMgfSBmcm9tICcuL2xpYi9kZXNjcmlwdG9ycyc7XG4iXX0=

@@ -137,2 +137,3 @@ import { ComputedReferenceBlueprint, Meta } from '@glimmer/object-reference';

}
export function observer(..._args) {}
export function observer(..._args) {}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL2NvbXB1dGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLEFBQU8sU0FBRSxBQUEwQiw0QkFBRSxBQUFJLEFBQUUsWUFBTSxBQUEyQixBQUFDO0FBQzdFLEFBQU8sU0FBRSxBQUFXLEFBQWEsbUJBQU0sQUFBVSxBQUFDO0FBQ2xELEFBQU8sU0FBYyxBQUFTLEFBQUUsaUJBQU0sQUFBUyxBQUFDO0FBeUJoRCxBQUFNLGFBQXlCLDBCQUFRLEFBQVM7QUFLOUMsZ0JBQVksQUFBNEIsVUFBRSxPQUFtQixBQUFFO0FBQzdELEFBQUssQUFBRSxBQUFDO0FBSEYsYUFBUSxXQUFXLEFBQUUsQUFBQztBQUk1QixBQUFJLGFBQUMsQUFBUSxXQUFHLEFBQVEsQUFBQztBQUN6QixBQUFJLGFBQUMsQUFBSSxPQUFHLEFBQUksQUFBQyxBQUNuQjtBQUFDO0FBRUQsQUFBVSxlQUFDLEFBQWUsU0FBRSxBQUFXLEtBQUUsQUFBb0I7QUFDM0QsQUFBUyxrQkFBQyxBQUFtQixvQkFBQyxBQUFHLEtBQUUsQUFBMEIsMkJBQUMsQUFBRyxLQUFFLEFBQUksS0FBQyxBQUFJLEFBQUMsQUFBQyxBQUFDO0FBQy9FLEFBQVMsa0JBQUMsQUFBbUIsb0JBQUMsQUFBRyxLQUFFLEFBQUksS0FBQyxBQUFRLEFBQUMsQUFBQztBQUNsRCxBQUFTLGtCQUFDLEFBQVUsV0FBQyxBQUFHLEFBQUMsQUFBQztBQUMxQixBQUFNLGVBQUMsSUFBSSxBQUFRLFNBQUMsQUFBSSxLQUFDLEFBQVEsQUFBQyxBQUFDLEFBQ3JDO0FBQUM7QUFFRCxBQUFRLGFBQUMsR0FBRyxBQUFlO0FBQ3pCLEFBQUksYUFBQyxBQUFJLE9BQUcsQUFBSyxNQUFDLEFBQUcsSUFBQyxBQUFDLEtBQUksQUFBQyxFQUFDLEFBQUssTUFBQyxBQUFHLEFBQUMsQUFBQyxBQUFDO0FBQ3pD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LEFBQVUsQUFBQyxZQUFDLEFBQUM7QUFDL0IsQUFBTSxtQkFBSyxBQUFpQjtBQUMxQixBQUFHLGlCQUFtRCxBQUFJLEFBQzNELEFBQUM7QUFGMkIsU0FBdEIsRUFFSixBQUFRLFNBQUMsR0FBRyxBQUFJLEFBQUMsQUFBQyxBQUN2QjtBQUFDLEFBQUMsQUFBSSxlQUFLLE9BQU8sQUFBSSxTQUFLLEFBQVEsQUFBQyxVQUFDLEFBQUM7QUFDcEMsQUFBTSxlQUFDLElBQUksQUFBaUIsa0JBQXFCLEFBQUksQUFBQyxNQUFDLEFBQVEsU0FBQyxHQUFHLEFBQUksQUFBQyxBQUFDLEFBQzNFO0FBQUMsQUFBQyxBQUFJLEtBRkMsQUFBRSxBQUFDLE1BRUgsQUFBQztBQUNOLGNBQU0sSUFBSSxBQUFTLFVBQUMsQUFBMkQsQUFBQyxBQUFDLEFBQ25GO0FBQUMsQUFDSDtBQUFDO0FBRUQsQUFBTSx5QkFBbUIsR0FBRyxBQUFZLE9BRXhDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wdXRlZFJlZmVyZW5jZUJsdWVwcmludCwgTWV0YSB9IGZyb20gJ0BnbGltbWVyL29iamVjdC1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgRU1QVFlfQ0FDSEUsIENsYXNzTWV0YSB9IGZyb20gJy4vb2JqZWN0JztcbmltcG9ydCB7IERlc2NyaXB0b3IsIEJsdWVwcmludCB9IGZyb20gJy4vbWl4aW4nO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbXB1dGVkR2V0Q2FsbGJhY2sge1xuICAoKTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExlZ2FjeUNvbXB1dGVkR2V0Q2FsbGJhY2sge1xuICAoa2V5OiBzdHJpbmcpOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcHV0ZWRTZXRDYWxsYmFjayB7XG4gICh2YWw6IGFueSk6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMZWdhY3lDb21wdXRlZFNldENhbGxiYWNrIHtcbiAgKGtleTogc3RyaW5nLCB2YWw6IGFueSk6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wdXRlZERlc2NyaXB0b3Ige1xuICBnZXQ/OiBDb21wdXRlZEdldENhbGxiYWNrIHwgTGVnYWN5Q29tcHV0ZWRHZXRDYWxsYmFjaztcbiAgc2V0PzogQ29tcHV0ZWRTZXRDYWxsYmFjayB8IExlZ2FjeUNvbXB1dGVkU2V0Q2FsbGJhY2s7XG59XG5cbnR5cGUgQ29tcHV0ZWRBcmd1bWVudCA9IENvbXB1dGVkR2V0Q2FsbGJhY2sgfCBDb21wdXRlZERlc2NyaXB0b3I7XG5cbmV4cG9ydCBjbGFzcyBDb21wdXRlZEJsdWVwcmludCBleHRlbmRzIEJsdWVwcmludCB7XG4gIHByaXZhdGUgYWNjZXNzb3I6IENvbXB1dGVkRGVzY3JpcHRvcjtcbiAgcHJpdmF0ZSBkZXBzOiBzdHJpbmdbXVtdO1xuICBwcml2YXRlIG1ldGFkYXRhOiBPYmplY3QgPSB7fTtcblxuICBjb25zdHJ1Y3RvcihhY2Nlc3NvcjogQ29tcHV0ZWREZXNjcmlwdG9yLCBkZXBzOiBzdHJpbmdbXVtdID0gW10pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYWNjZXNzb3IgPSBhY2Nlc3NvcjtcbiAgICB0aGlzLmRlcHMgPSBkZXBzO1xuICB9XG5cbiAgZGVzY3JpcHRvcihfdGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBjbGFzc01ldGE6IENsYXNzTWV0YSk6IERlc2NyaXB0b3Ige1xuICAgIGNsYXNzTWV0YS5hZGRSZWZlcmVuY2VUeXBlRm9yKGtleSwgQ29tcHV0ZWRSZWZlcmVuY2VCbHVlcHJpbnQoa2V5LCB0aGlzLmRlcHMpKTtcbiAgICBjbGFzc01ldGEuYWRkUHJvcGVydHlNZXRhZGF0YShrZXksIHRoaXMubWV0YWRhdGEpO1xuICAgIGNsYXNzTWV0YS5hZGRTbG90Rm9yKGtleSk7XG4gICAgcmV0dXJuIG5ldyBDb21wdXRlZCh0aGlzLmFjY2Vzc29yKTtcbiAgfVxuXG4gIHByb3BlcnR5KC4uLnBhdGhzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuZGVwcyA9IHBhdGhzLm1hcChkID0+IGQuc3BsaXQoJy4nKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBtZXRhKG9iamVjdDogT2JqZWN0KSB7XG4gICAgdGhpcy5tZXRhZGF0YSA9IG9iamVjdDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHZvbGF0aWxlKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG5cbmNsYXNzIENvbXB1dGVkIGltcGxlbWVudHMgRGVzY3JpcHRvciB7XG4gIGVudW1lcmFibGU6IGJvb2xlYW47XG4gIGNvbmZpZ3VyYWJsZTogYm9vbGVhbjtcblxuICBwcml2YXRlIGFjY2Vzc29yOiBDb21wdXRlZERlc2NyaXB0b3I7XG4gIFwiNWQ5MGY4NGYtOTA4ZS00YTQyLTk3NDktM2QwZjUyM2MyNjJjXCIgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKGFjY2Vzc29yOiBDb21wdXRlZERlc2NyaXB0b3IpIHtcbiAgICB0aGlzLmFjY2Vzc29yID0gYWNjZXNzb3I7XG4gIH1cblxuICBkZWZpbmUocHJvdG90eXBlOiBPYmplY3QsIGtleTogc3RyaW5nLCBob21lOiBPYmplY3QpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvdG90eXBlLCBrZXksIHdyYXBBY2Nlc3Nvcihob21lLCBrZXksIHRoaXMuYWNjZXNzb3IpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB3cmFwQWNjZXNzb3IoaG9tZTogT2JqZWN0LCBhY2Nlc3Nvck5hbWU6IHN0cmluZywgX2Rlc2M6IENvbXB1dGVkRGVzY3JpcHRvcik6IFByb3BlcnR5RGVzY3JpcHRvciB7XG4gIGxldCBzdXBlckRlc2MgPSBnZXRQcm9wZXJ0eURlc2NyaXB0b3IoaG9tZSwgYWNjZXNzb3JOYW1lKTtcblxuICBsZXQgb3JpZ2luYWxHZXQ6IENvbXB1dGVkR2V0Q2FsbGJhY2s7XG4gIGxldCBvcmlnaW5hbFNldDogQ29tcHV0ZWRTZXRDYWxsYmFjaztcblxuICBsZXQgZGVzYzogUHJvcGVydHlEZXNjcmlwdG9yID0ge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICB9O1xuXG4gIGxldCBnZXQgPSBfZGVzYy5nZXQ7XG5cbiAgaWYgKGdldCAmJiBnZXQubGVuZ3RoID4gMCkge1xuICAgIG9yaWdpbmFsR2V0ID0gZnVuY3Rpb24odGhpczogYW55KSB7IHJldHVybiAoZ2V0IGFzIGFueSkuY2FsbCh0aGlzLCBhY2Nlc3Nvck5hbWUpOyB9O1xuICB9IGVsc2Uge1xuICAgIG9yaWdpbmFsR2V0ID0gPENvbXB1dGVkR2V0Q2FsbGJhY2s+X2Rlc2MuZ2V0O1xuICB9XG5cbiAgbGV0IHNldCA9IF9kZXNjLnNldDtcblxuICBpZiAoc2V0ICYmIHNldC5sZW5ndGggPiAxKSB7XG4gICAgb3JpZ2luYWxTZXQgPSBmdW5jdGlvbih0aGlzOiBhbnksIHZhbHVlOiBhbnkpIHtcbiAgICAgIHJldHVybiAoc2V0IGFzIGFueSkuY2FsbCh0aGlzLCBhY2Nlc3Nvck5hbWUsIHZhbHVlKTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIG9yaWdpbmFsU2V0ID0gPENvbXB1dGVkR2V0Q2FsbGJhY2s+X2Rlc2Muc2V0O1xuICB9XG5cbiAgbGV0IGNhY2hlR2V0ID0gZnVuY3Rpb24odGhpczogYW55KSB7XG4gICAgaWYgKE1ldGEuZXhpc3RzKHRoaXMpKSB7XG4gICAgICBsZXQgc2xvdCA9IE1ldGEuZm9yKHRoaXMpLmdldFNsb3RzKClbYWNjZXNzb3JOYW1lXTtcbiAgICAgIGlmIChzbG90ICE9PSBFTVBUWV9DQUNIRSkgcmV0dXJuIHNsb3Q7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9yaWdpbmFsR2V0LmNhbGwodGhpcyk7XG4gIH07XG5cbiAgbGV0IGNhY2hlU2V0OiAodmFsdWU6IGFueSkgPT4gdm9pZDtcblxuICBpZiAob3JpZ2luYWxTZXQpIHtcbiAgICBjYWNoZVNldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgdmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgbGV0IG1ldGEgPSBNZXRhLmZvcih0aGlzKTtcbiAgICAgIGxldCBzbG90cyA9IG1ldGEuZ2V0U2xvdHMoKTtcblxuICAgICAgbGV0IHJldCA9IG9yaWdpbmFsU2V0LmNhbGwodGhpcywgdmFsdWUpO1xuXG4gICAgICBpZiAocmV0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgc2xvdHNbYWNjZXNzb3JOYW1lXSA9IHJldDtcbiAgICAgIH1cbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIGNhY2hlU2V0ID0gZnVuY3Rpb24odGhpczogYW55LCB2YWx1ZTogYW55KSB7XG4gICAgICBsZXQgbWV0YSA9IE1ldGEuZm9yKHRoaXMpO1xuICAgICAgbGV0IHNsb3RzID0gbWV0YS5nZXRTbG90cygpO1xuICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHNsb3RzW2FjY2Vzc29yTmFtZV0gPSB2YWx1ZTtcbiAgICB9O1xuICB9XG5cbiAgaWYgKCFzdXBlckRlc2MgfHwgJ3ZhbHVlJyBpbiBzdXBlckRlc2MpIHtcbiAgICBkZXNjLmdldCA9IGNhY2hlR2V0O1xuICAgIGRlc2Muc2V0ID0gY2FjaGVTZXQ7XG4gICAgcmV0dXJuIGRlc2M7XG4gIH1cblxuICBkZXNjLmdldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgIGxldCBsYXN0U3VwZXIgPSB0aGlzLl9zdXBlcjtcbiAgICB0aGlzLl9zdXBlciA9IGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgICAgcmV0dXJuIChzdXBlckRlc2MuZ2V0IGFzIGFueSkuY2FsbCh0aGlzKTtcbiAgICB9O1xuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBjYWNoZUdldC5jYWxsKHRoaXMpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLl9zdXBlciA9IGxhc3RTdXBlcjtcbiAgICB9XG4gIH07XG5cbiAgZGVzYy5zZXQgPSBmdW5jdGlvbih0aGlzOiBhbnksIHZhbDogYW55KSB7XG4gICAgbGV0IGxhc3RTdXBlciA9IHRoaXMuX3N1cGVyO1xuICAgIHRoaXMuX3N1cGVyID0gZnVuY3Rpb24odGhpczogYW55KSB7XG4gICAgICByZXR1cm4gKHN1cGVyRGVzYyBhcyBhbnkpLnNldC5jYWxsKHRoaXMsIHZhbCk7XG4gICAgfTtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gY2FjaGVTZXQuY2FsbCh0aGlzLCB2YWwpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLl9zdXBlciA9IGxhc3RTdXBlcjtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIGRlc2M7XG59XG5cbmZ1bmN0aW9uIGdldFByb3BlcnR5RGVzY3JpcHRvcihzdWJqZWN0OiBhbnksIG5hbWU6IHN0cmluZykge1xuICBsZXQgcGQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHN1YmplY3QsIG5hbWUpO1xuICBsZXQgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yoc3ViamVjdCk7XG4gIHdoaWxlICh0eXBlb2YgcGQgPT09ICd1bmRlZmluZWQnICYmIHByb3RvICE9PSBudWxsKSB7XG4gICAgcGQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCBuYW1lKTtcbiAgICBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihwcm90byk7XG4gIH1cbiAgcmV0dXJuIHBkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZWQoZGVzYzogQ29tcHV0ZWREZXNjcmlwdG9yKTogQ29tcHV0ZWRCbHVlcHJpbnQ7XG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZWQoZ2V0dGVyOiBDb21wdXRlZEdldENhbGxiYWNrIHwgTGVnYWN5Q29tcHV0ZWRHZXRDYWxsYmFjayk6IENvbXB1dGVkQmx1ZXByaW50O1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVkKC4uLmFyZ3M6IGFueVtdKTogQ29tcHV0ZWRCbHVlcHJpbnQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlZCguLi5hcmdzOiBhbnlbXSkge1xuICBsZXQgbGFzdDogQ29tcHV0ZWRBcmd1bWVudCA9IGFyZ3MucG9wKCk7XG4gIGxldCBkZXBzID0gYXJncztcblxuICBpZiAodHlwZW9mIGxhc3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gbmV3IENvbXB1dGVkQmx1ZXByaW50KHtcbiAgICAgIGdldDogPENvbXB1dGVkR2V0Q2FsbGJhY2sgfCBMZWdhY3lDb21wdXRlZEdldENhbGxiYWNrPmxhc3RcbiAgICB9KS5wcm9wZXJ0eSguLi5kZXBzKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgbGFzdCA9PT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gbmV3IENvbXB1dGVkQmx1ZXByaW50KDxDb21wdXRlZERlc2NyaXB0b3I+bGFzdCkucHJvcGVydHkoLi4uZGVwcyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcImNvbXB1dGVkIGV4cGVjdHMgYSBmdW5jdGlvbiBvciBhbiBvYmplY3QgYXMgbGFzdCBhcmd1bWVudFwiKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gb2JzZXJ2ZXIoLi4uX2FyZ3M6IGFueVtdKSB7XG5cbn1cbiJdfQ==

@@ -52,2 +52,3 @@ import { Blueprint, Descriptor } from './mixin';

return new AliasBlueprint(name.split('.'));
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpcHRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL2Rlc2NyaXB0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLEFBQU8sU0FBRSxBQUFTLFdBQUUsQUFBVSxBQUFFLGtCQUFNLEFBQVMsQUFBQztBQUVoRCxBQUFPLFNBQUUsQUFBaUIsQUFBRSx5QkFBTSxBQUFZLEFBQUM7QUFFL0MsTUFBNEIsOEJBQVEsQUFBVTtBQUc1QyxnQkFBWSxBQUFZO0FBQ3RCLEFBQUssQUFBRSxBQUFDO0FBQ1IsQUFBSSxhQUFDLEFBQUksT0FBRyxBQUFJLEFBQUMsQUFDbkI7QUFBQztBQUVELEFBQU0sV0FBQyxBQUFjLFFBQUUsQUFBVyxLQUFFLEFBQWE7QUFDL0MsWUFBSSxBQUFJLE9BQVcsQUFBSSxLQUFDLEFBQUksQUFBQztBQUU3QixBQUFNLGVBQUMsQUFBYyxlQUFDLEFBQU0sUUFBRSxBQUFHO0FBQy9CLEFBQVUsd0JBQUUsQUFBSTtBQUNoQixBQUFZLDBCQUFFLEFBQUk7QUFDbEIsQUFBRztBQUNELEFBQU0sdUJBQUMsQUFBSSxLQUFDLEFBQUksQUFBQyxBQUFDLEFBQ3BCO0FBQUMsQUFDRixBQUFDLEFBQUMsQUFDTDtBQVBxQztBQU9wQyxBQUNGOztBQUVELE1BQTJCLDZCQUFRLEFBQVM7QUFHMUMsZ0JBQVksQUFBWTtBQUN0QixBQUFLLEFBQUUsQUFBQztBQUNSLEFBQUksYUFBQyxBQUFJLE9BQUcsQUFBSSxBQUFDLEFBQ25CO0FBQUM7QUFFRCxBQUFVLGVBQUMsQUFBZSxTQUFFLEFBQVksTUFBRSxBQUFnQjtBQUN4RCxBQUFNLGVBQUMsSUFBSSxBQUFxQixzQkFBQyxBQUFJLEtBQUMsQUFBSSxBQUFDLEFBQUMsQUFDOUM7QUFBQyxBQUNGOztBQUVELEFBQU0sNEJBQXNCLEFBQVk7QUFDdEMsQUFBTSxXQUFDLElBQUksQUFBb0IscUJBQUMsQUFBSSxBQUFDLEFBQUMsQUFDeEM7QUFBQztBQUVELE1BQXFCLHVCQUFRLEFBQWlCO0FBRzVDLGdCQUFZLEFBQWM7QUFDeEIsWUFBSSxBQUFNLFNBQUcsQUFBSSxLQUFDLEFBQUssTUFBQyxBQUFDLEdBQUUsQ0FBQyxBQUFDLEFBQUMsQUFBQztBQUMvQixZQUFJLEFBQUksT0FBRyxBQUFJLEtBQUMsQUFBSSxLQUFDLEFBQU0sU0FBRyxBQUFDLEFBQUMsQUFBQztBQUVqQyxZQUFJLEFBQUcsTUFBRztBQUNSLEFBQU0sbUJBQUMsQUFBSSxLQUFDLEFBQU0sT0FBQyxDQUFDLEFBQUcsS0FBRSxBQUFDLE1BQUssQUFBRyxJQUFDLEFBQUMsQUFBQyxJQUFFLEFBQUksQUFBQyxBQUFDLEFBQy9DO0FBQUMsQUFBQztBQUVGLFlBQUksQUFBRyxNQUFHLFVBQW9CLEFBQVU7QUFDdEMsZ0JBQUksQUFBQyxJQUFHLEFBQU0sT0FBQyxBQUFNLE9BQUMsQ0FBQyxBQUFHLEtBQUUsQUFBQyxNQUFLLEFBQUcsSUFBQyxBQUFDLEFBQUMsSUFBRSxBQUFJLEFBQUMsQUFBQztBQUNoRCxBQUFDLGNBQUMsQUFBSSxBQUFDLFFBQUcsQUFBSyxBQUFDLEFBQ2xCO0FBQUMsQUFBQztBQUVGLEFBQUssY0FBQyxFQUFFLEFBQUcsS0FBRSxBQUFHLEFBQUUsT0FBRSxDQUFDLEFBQUksQUFBQyxBQUFDLEFBQUM7QUFDNUIsQUFBSSxhQUFDLEFBQUksT0FBRyxBQUFJLEFBQUMsQUFDbkI7QUFBQztBQUVELEFBQVUsZUFBQyxBQUFjLFFBQUUsQUFBVyxLQUFFLEFBQWU7QUFDckQsQUFBRSxBQUFDLFlBQUMsQUFBSSxLQUFDLEFBQUksS0FBQyxBQUFDLEFBQUMsT0FBSyxBQUFHLEFBQUMsS0FBQyxNQUFNLElBQUksQUFBSyxBQUFDLHdCQUFrQixBQUFHLEdBQVcsQUFBQyxBQUFDO0FBQzVFLEFBQU0sZUFBQyxBQUFLLE1BQUMsQUFBVSxXQUFDLEFBQU0sUUFBRSxBQUFHLEtBQUUsQUFBSSxBQUFDLEFBQUMsQUFDN0M7QUFBQyxBQUNGOztBQUVELEFBQU0sc0JBQWdCLEFBQVk7QUFDaEMsQUFBTSxXQUFDLElBQUksQUFBYyxlQUFDLEFBQUksS0FBQyxBQUFLLE1BQUMsQUFBRyxBQUFDLEFBQUMsQUFBQyxBQUM3QztBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmx1ZXByaW50LCBEZXNjcmlwdG9yIH0gZnJvbSAnLi9taXhpbic7XG5pbXBvcnQgeyBDbGFzc01ldGEgfSBmcm9tICcuL29iamVjdCc7XG5pbXBvcnQgeyBDb21wdXRlZEJsdWVwcmludCB9IGZyb20gJy4vY29tcHV0ZWQnO1xuXG5jbGFzcyBBbGlhc01ldGhvZERlc2NyaXB0b3IgZXh0ZW5kcyBEZXNjcmlwdG9yIHtcbiAgcHJpdmF0ZSBuYW1lOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICB9XG5cbiAgZGVmaW5lKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgX2hvbWU6IE9iamVjdCkge1xuICAgIGxldCBuYW1lID0gPHN0cmluZz50aGlzLm5hbWU7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHtcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICBnZXQodGhpczogdHlwZW9mIHRhcmdldCkge1xuICAgICAgICByZXR1cm4gdGhpc1tuYW1lXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG5jbGFzcyBBbGlhc01ldGhvZEJsdWVwcmludCBleHRlbmRzIEJsdWVwcmludCB7XG4gIHByaXZhdGUgbmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgfVxuXG4gIGRlc2NyaXB0b3IoX3RhcmdldDogT2JqZWN0LCBfa2V5OiBzdHJpbmcsIF9tZXRhOiBDbGFzc01ldGEpOiBEZXNjcmlwdG9yIHtcbiAgICByZXR1cm4gbmV3IEFsaWFzTWV0aG9kRGVzY3JpcHRvcih0aGlzLm5hbWUpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbGlhc01ldGhvZChuYW1lOiBzdHJpbmcpOiBCbHVlcHJpbnQge1xuICByZXR1cm4gbmV3IEFsaWFzTWV0aG9kQmx1ZXByaW50KG5hbWUpO1xufVxuXG5jbGFzcyBBbGlhc0JsdWVwcmludCBleHRlbmRzIENvbXB1dGVkQmx1ZXByaW50IHtcbiAgcHJpdmF0ZSBuYW1lOiBzdHJpbmdbXTtcblxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmdbXSkge1xuICAgIGxldCBwYXJlbnQgPSBuYW1lLnNsaWNlKDAsIC0xKTtcbiAgICBsZXQgbGFzdCA9IG5hbWVbbmFtZS5sZW5ndGggLSAxXTtcblxuICAgIGxldCBnZXQgPSBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICAgIHJldHVybiBuYW1lLnJlZHVjZSgob2JqLCBuKSA9PiBvYmpbbl0sIHRoaXMpO1xuICAgIH07XG5cbiAgICBsZXQgc2V0ID0gZnVuY3Rpb24odGhpczogYW55LCB2YWx1ZTogYW55KSB7XG4gICAgICBsZXQgcCA9IHBhcmVudC5yZWR1Y2UoKG9iaiwgbikgPT4gb2JqW25dLCB0aGlzKTtcbiAgICAgIHBbbGFzdF0gPSB2YWx1ZTtcbiAgICB9O1xuXG4gICAgc3VwZXIoeyBnZXQsIHNldCB9LCBbbmFtZV0pO1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gIH1cblxuICBkZXNjcmlwdG9yKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgbWV0YTogQ2xhc3NNZXRhKTogRGVzY3JpcHRvciB7XG4gICAgaWYgKHRoaXMubmFtZVswXSA9PT0ga2V5KSB0aHJvdyBuZXcgRXJyb3IoYFNldHRpbmcgYWxpYXMgJyR7a2V5fScgb24gc2VsZmApO1xuICAgIHJldHVybiBzdXBlci5kZXNjcmlwdG9yKHRhcmdldCwga2V5LCBtZXRhKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWxpYXMobmFtZTogc3RyaW5nKTogQmx1ZXByaW50IHtcbiAgcmV0dXJuIG5ldyBBbGlhc0JsdWVwcmludChuYW1lLnNwbGl0KCcuJykpO1xufVxuIl19

@@ -257,2 +257,3 @@ import { CLASS_META } from '@glimmer/object-reference';

};
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWl4aW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL21peGluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLEFBQU8sU0FBRSxBQUFVLEFBQUUsa0JBQU0sQUFBMkIsQUFBQztBQUN2RCxBQUFPLFNBQVEsQUFBSSxNQUFFLEFBQU0sQUFBRSxjQUFNLEFBQWUsQUFBQztBQUNuRCxBQUFzQixTQUVwQixBQUFTLFdBQ1QsQUFBWSxjQUNaLEFBQVcsQUFDWixtQkFBTSxBQUFVLEFBQUM7QUFFbEIsQUFBTyxTQUFFLEFBQUksQUFBRSxZQUFNLEFBQVMsQUFBQztBQUcvQixNQUFNLEVBQUUsQUFBTyxBQUFFLFlBQUcsQUFBSyxBQUFDO0FBRTFCLEFBQU0sT0FBQyxNQUFNLEFBQVUsYUFBRyxBQUFzQyxBQUFDO0FBQ2pFLEFBQU0sT0FBQyxNQUFNLEFBQVMsWUFBSSxBQUFzQyxBQUFDO0FBRWpFLEFBQU07QUFBTjtBQUNFLGFBQXNDLDBDQUFHLEFBQUksQUFBQyxBQUVoRDtBQUFDOztBQUVELEFBQU07QUFBTjtBQUNFLGFBQXNDLDBDQUFHLEFBQUksQUFBQyxBQUVoRDtBQUFDOztBQVNELEFBQU07QUE0QkosZ0JBQVksQUFBc0IsWUFBRSxBQUFlO0FBM0IzQyxhQUFVLGFBQXNCLEFBQUksQUFBQztBQUNyQyxhQUFzQix5QkFBYSxBQUFFLEFBQUM7QUFDdEMsYUFBZ0IsbUJBQWEsQUFBRSxBQUFDO0FBQ2hDLGFBQVksZUFBWSxBQUFFLEFBQUM7QUF5QmpDLEFBQUksYUFBQyxBQUFNLE9BQUMsQUFBVSxBQUFDLEFBQUM7QUFDeEIsQUFBSSxhQUFDLEFBQVksYUFBQyxBQUFJLEtBQUMsR0FBRyxBQUFNLEFBQUMsQUFBQyxBQUNwQztBQUFDO0FBekJELEFBQU0sV0FBQyxBQUFNLE9BQUMsR0FBRyxBQUE0QjtBQUMzQyxZQUFJLEFBQVUsYUFBRyxBQUFJLEtBQUMsQUFBSSxLQUFD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LFlBQUksQUFBUyxZQUFHLEFBQUksS0FBQyxBQUFNLEFBQUM7QUFDNUIsQUFBSSxhQUFDLEFBQU0sU0FBRyxBQUFXLEFBQUM7QUFFMUIsWUFBSSxBQUFDO0FBQ0gsQUFBTSxtQkFBQyxBQUFRLFNBQUMsQUFBSyxNQUFDLEFBQUksTUFBRSxBQUFJLEFBQUMsQUFBQyxBQUNwQztBQUFDLGtCQUFTLEFBQUM7QUFDVCxBQUFJLGlCQUFDLEFBQU0sU0FBRyxBQUFTLEFBQUMsQUFDMUI7QUFBQyxBQUNIO0FBQUMsQUFBQztBQUVJLEFBQUssU0FBQyxBQUFTLFlBQUcsQUFBSSxBQUFDO0FBRTdCLEFBQU0sV0FBQyxBQUFJLEFBQUMsQUFDZDtBQUFDO0FBRUQsbUJBQW1CLEFBQWtCO0FBQ25DLEFBQUUsQUFBQyxRQUFDLEFBQVcsZUFBSSxBQUFRLEFBQUMsVUFBQyxBQUFNLE9BQUMsQUFBUSxBQUFDO0FBRTdDLEFBQU0sV0FBQyxVQUE4QixHQUFHLEFBQVc7QUFDakQsQUFBRSxBQUFDLFlBQUMsQ0FBQyxBQUFJLEFBQUMsTUFBQyxBQUFNLE9BQUMsQUFBUSxTQUFDLEFBQUssTUFBQyxBQUFJLE1BQUUsQUFBSSxBQUFDLEFBQUM7QUFFN0MsWUFBSSxBQUFTLFlBQUcsQUFBSSxLQUFDLEFBQU0sQUFBQztBQUM1QixBQUFJLGFBQUMsQUFBTSxTQUFHLEFBQUksQUFBQztBQUVuQixZQUFJLEFBQUM7QUFDSCxBQUFNLG1CQUFDLEFBQVEsU0FBQyxBQUFLLE1BQUMsQUFBSSxNQUFFLEFBQUksQUFBQyxBQUFDLEFBQ3BDO0FBQUMsa0JBQVMsQUFBQztBQUNULEFBQUksaUJBQUMsQUFBTSxTQUFHLEFBQVMsQUFBQyxBQUMxQjtBQUFDLEFBQ0g7QUFBQyxBQUFDLEFBQ0o7QUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENMQVNTX01FVEEgfSBmcm9tICdAZ2xpbW1lci9vYmplY3QtcmVmZXJlbmNlJztcbmltcG9ydCB7IERpY3QsIGRpY3QsIGFzc2lnbiB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IEdsaW1tZXJPYmplY3QsIHtcbiAgR2xpbW1lck9iamVjdEZhY3RvcnksXG4gIENsYXNzTWV0YSxcbiAgSW5zdGFuY2VNZXRhLFxuICB0dXJib2NoYXJnZVxufSBmcm9tICcuL29iamVjdCc7XG5cbmltcG9ydCB7IFJPT1QgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IE9wdGlvbiB9IGZyb20gXCJAZ2xpbW1lci9pbnRlcmZhY2VzXCI7XG5cbmNvbnN0IHsgaXNBcnJheSB9ID0gQXJyYXk7XG5cbmV4cG9ydCBjb25zdCBERVNDUklQVE9SID0gXCI1ZDkwZjg0Zi05MDhlLTRhNDItOTc0OS0zZDBmNTIzYzI2MmNcIjtcbmV4cG9ydCBjb25zdCBCTFVFUFJJTlQgID0gXCI4ZDk3Y2Y1Zi1kYjllLTQ4ZDgtYTZiMi03YTc1YjcxNzA4MDVcIjtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERlc2NyaXB0b3Ige1xuICBcIjVkOTBmODRmLTkwOGUtNGE0Mi05NzQ5LTNkMGY1MjNjMjYyY1wiID0gdHJ1ZTtcbiAgYWJzdHJhY3QgZGVmaW5lKHByb3RvdHlwZTogT2JqZWN0LCBrZXk6IHN0cmluZywgaG9tZTogT2JqZWN0KTogdm9pZDtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJsdWVwcmludCB7XG4gIFwiOGQ5N2NmNWYtZGI5ZS00OGQ4LWE2YjItN2E3NWI3MTcwODA1XCIgPSB0cnVlO1xuICBhYnN0cmFjdCBkZXNjcmlwdG9yKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgY2xhc3NNZXRhOiBDbGFzc01ldGEpOiBEZXNjcmlwdG9yO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV4dGVuc2lvbnMge1xuICBjb25jYXRlbmF0ZWRQcm9wZXJ0aWVzPzogc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsO1xuICBtZXJnZWRQcm9wZXJ0aWVzPzogc3RyaW5nW10gfCBzdHJpbmc7XG4gIF9zdXBlcj86IEZ1bmN0aW9uO1xuICBbaW5kZXg6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGNsYXNzIE1peGluIHtcbiAgcHJpdmF0ZSBleHRlbnNpb25zOiBPcHRpb248RGljdDxhbnk+PiA9IG51bGw7XG4gIHByaXZhdGUgY29uY2F0ZW5hdGVkUHJvcGVydGllczogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBtZXJnZWRQcm9wZXJ0aWVzOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIGRlcGVuZGVuY2llczogTWl4aW5bXSA9IFtdO1xuXG4gIHN0YXRpYyBjcmVhdGUoLi4uYXJnczogKE1peGluIHwgRXh0ZW5zaW9ucylbXSkge1xuICAgIGxldCBleHRlbnNpb25zID0gYXJnc1thcmdzLmxlbmd0aCAtIDFdO1xuXG4gICAgaWYgKGFyZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbmV3IHRoaXMoe30sIFtdKTtcbiAgICB9IGVsc2UgaWYgKGV4dGVuc2lvbnMgaW5zdGFuY2VvZiBNaXhpbikge1xuICAgICAgcmV0dXJuIG5ldyB0aGlzKHt9LCA8TWl4aW5bXT5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGRlcHMgPSBhcmdzLnNsaWNlKDAsIC0xKS5tYXAodG9NaXhpbik7XG4gICAgICByZXR1cm4gbmV3IHRoaXMoPEV4dGVuc2lvbnM+ZXh0ZW5zaW9ucywgZGVwcyk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIG1peGlucyhvYmo6IGFueSk6IE1peGluW10ge1xuICAgIGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JyB8fCBvYmogPT09IG51bGwpIHJldHVybiBbXTtcblxuICAgIGxldCBtZXRhID0gQ2xhc3NNZXRhLmZvcihvYmopO1xuICAgIGlmICghbWV0YSkgcmV0dXJuIFtdO1xuXG4gICAgcmV0dXJuIG1ldGEuZ2V0QXBwbGllZE1peGlucygpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoZXh0ZW5zaW9uczogRXh0ZW5zaW9ucywgbWl4aW5zOiBNaXhpbltdKSB7XG4gICAgdGhpcy5yZW9wZW4oZXh0ZW5zaW9ucyk7XG4gICAgdGhpcy5kZXBlbmRlbmNpZXMucHVzaCguLi5taXhpbnMpO1xuICB9XG5cbiAgZGV0ZWN0KG9iajogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnIHx8IG9iaiA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgaWYgKG9iaiBpbnN0YW5jZW9mIE1peGluKSB7XG4gICAgICByZXR1cm4gb2JqLmRlcGVuZGVuY2llcy5pbmRleE9mKHRoaXMpICE9PSAtMTtcbiAgICB9XG5cbiAgICBsZXQgbWV0YSA9IENsYXNzTWV0YS5mb3Iob2JqKTtcbiAgICByZXR1cm4gISFtZXRhICYmIG1ldGEuaGFzQXBwbGllZE1peGluKHRoaXMpO1xuICB9XG5cbiAgcmVvcGVuKGV4dGVuc2lvbnM6IEV4dGVuc2lvbnMpIHtcbiAgICBpZiAodGhpcy5leHRlbnNpb25zKSB7XG4gICAgICB0aGlzLmRlcGVuZGVuY2llcy5wdXNoKHRvTWl4aW4odGhpcy5leHRlbnNpb25zKSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBleHRlbnNpb25zID09PSAnb2JqZWN0JyAmJiAnY29uY2F0ZW5hdGVkUHJvcGVydGllcycgaW4gZXh0ZW5zaW9ucykge1xuICAgICAgbGV0IGNvbmNhdDogc3RyaW5nW107XG4gICAgICBsZXQgcmF3Q29uY2F0ID0gZXh0ZW5zaW9ucy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzO1xuXG4gICAgICBpZiAoaXNBcnJheShyYXdDb25jYXQpKSB7XG4gICAgICAgIGNvbmNhdCA9ICg8c3RyaW5nW10+cmF3Q29uY2F0KS5zbGljZSgpO1xuICAgICAgfSBlbHNlIGlmIChyYXdDb25jYXQgPT09IG51bGwgfHwgcmF3Q29uY2F0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uY2F0ID0gW107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25jYXQgPSBbPHN0cmluZz5yYXdDb25jYXRdO1xuICAgICAgfVxuXG4gICAgICBkZWxldGUgZXh0ZW5zaW9ucy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzO1xuICAgICAgdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzID0gY29uY2F0O1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZXh0ZW5zaW9ucyA9PT0gJ29iamVjdCcgJiYgJ21lcmdlZFByb3BlcnRpZXMnIGluIGV4dGVuc2lvbnMpIHtcbiAgICAgIGxldCBtZXJnZWQ6IHN0cmluZ1tdO1xuICAgICAgbGV0IHJhd01lcmdlZCA9IGV4dGVuc2lvbnMubWVyZ2VkUHJvcGVydGllcztcblxuICAgICAgaWYgKGlzQXJyYXkocmF3TWVyZ2VkKSkge1xuICAgICAgICBtZXJnZWQgPSAoPHN0cmluZ1tdPnJhd01lcmdlZCkuc2xpY2UoKTtcbiAgICAgIH0gZWxzZSBpZiAocmF3TWVyZ2VkID09PSBudWxsIHx8IHJhd01lcmdlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG1lcmdlZCA9IFtdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWVyZ2VkID0gWzxzdHJpbmc+cmF3TWVyZ2VkXTtcbiAgICAgIH1cblxuICAgICAgZGVsZXRlIGV4dGVuc2lvbnMubWVyZ2VkUHJvcGVydGllcztcbiAgICAgIHRoaXMubWVyZ2VkUHJvcGVydGllcyA9IG1lcmdlZDtcbiAgICB9XG5cbiAgICBsZXQgbm9ybWFsaXplZDogRGljdDxCbHVlcHJpbnQ+ID0gT2JqZWN0LmtleXMoZXh0ZW5zaW9ucykucmVkdWNlKChvYmosIGtleSkgPT4ge1xuICAgICAgbGV0IHZhbHVlID0gZXh0ZW5zaW9uc1trZXldO1xuXG4gICAgICBzd2l0Y2ggKHR5cGVvZiB2YWx1ZSkge1xuICAgICAgICBjYXNlICdmdW5jdGlvbic6XG4gICAgICAgICAgb2JqW2tleV0gPSBuZXcgTWV0aG9kQmx1ZXByaW50KHsgdmFsdWUgfSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgaWYgKHZhbHVlICYmIEJMVUVQUklOVCBpbiB2YWx1ZSkge1xuICAgICAgICAgICAgb2JqW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgb2JqW2tleV0gPSBuZXcgRGF0YUJsdWVwcmludCh7IHZhbHVlIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb2JqO1xuICAgIH0sIGRpY3Q8Qmx1ZXByaW50PigpKTtcblxuICAgIHRoaXMuZXh0ZW5zaW9ucyA9IGRpY3Q8YW55PigpO1xuICAgIGFzc2lnbih0aGlzLmV4dGVuc2lvbnMsIHR1cmJvY2hhcmdlKG5vcm1hbGl6ZWQpKTtcbiAgfVxuXG4gIGFwcGx5KHRhcmdldDogYW55KSB7XG4gICAgbGV0IG1ldGE6IENsYXNzTWV0YSA9IHRhcmdldFtDTEFTU19NRVRBXSA9IHRhcmdldFtDTEFTU19NRVRBXSB8fCBuZXcgQ2xhc3NNZXRhKCk7XG4gICAgdGhpcy5kZXBlbmRlbmNpZXMuZm9yRWFjaChtID0+IG0uYXBwbHkodGFyZ2V0KSk7XG4gICAgdGhpcy5tZXJnZVByb3BlcnRpZXModGFyZ2V0LCB0YXJnZXQsIG1ldGEpO1xuICAgIG1ldGEuYWRkTWl4aW4odGhpcyk7XG4gICAgbWV0YS5zZWFsKCk7XG4gICAgbWV0YS5yZXNlYWwodGFyZ2V0KTtcblxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cblxuICBleHRlbmRQcm90b3R5cGUoT3JpZ2luYWw6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pIHtcbiAgICBPcmlnaW5hbC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKE9yaWdpbmFsLnByb3RvdHlwZSk7XG4gICAgdGhpcy5kZXBlbmRlbmNpZXMuZm9yRWFjaChtID0+IG0uZXh0ZW5kUHJvdG90eXBlKE9yaWdpbmFsKSk7XG4gICAgdGhpcy5leHRlbmRQcm90b3R5cGVPbnRvKE9yaWdpbmFsLCBPcmlnaW5hbCk7XG4gIH1cblxuICBleHRlbmRQcm90b3R5cGVPbnRvKFN1YmNsYXNzOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+LCBQYXJlbnQ6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pIHtcbiAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKG0gPT4gbS5leHRlbmRQcm90b3R5cGVPbnRvKFN1YmNsYXNzLCBQYXJlbnQpKTtcbiAgICB0aGlzLm1lcmdlUHJvcGVydGllcyhTdWJjbGFzcy5wcm90b3R5cGUsIFBhcmVudC5wcm90b3R5cGUsIFN1YmNsYXNzW0NMQVNTX01FVEFdKTtcbiAgICBTdWJjbGFzc1tDTEFTU19NRVRBXS5hZGRNaXhpbih0aGlzKTtcbiAgfVxuXG4gIGV4dGVuZFN0YXRpYyhUYXJnZXQ6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pIHtcbiAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKG0gPT4gbS5leHRlbmRTdGF0aWMoVGFyZ2V0KSk7XG4gICAgdGhpcy5tZXJnZVByb3BlcnRpZXMoVGFyZ2V0LCBPYmplY3QuZ2V0UHJvdG90eXBlT2YoVGFyZ2V0KSwgVGFyZ2V0W0NMQVNTX01FVEFdW0NMQVNTX01FVEFdKTtcbiAgICBUYXJnZXRbQ0xBU1NfTUVUQV0uYWRkU3RhdGljTWl4aW4odGhpcyk7XG4gIH1cblxuICBtZXJnZVByb3BlcnRpZXModGFyZ2V0OiBPYmplY3QsIHBhcmVudDogT2JqZWN0LCBtZXRhOiBDbGFzc01ldGEpIHtcbiAgICBpZiAobWV0YS5oYXNBcHBsaWVkTWl4aW4odGhpcykpIHJldHVybjtcbiAgICBtZXRhLmFkZEFwcGxpZWRNaXhpbih0aGlzKTtcblxuICAgIHRoaXMubWVyZ2VkUHJvcGVydGllcy5mb3JFYWNoKGsgPT4gbWV0YS5hZGRNZXJnZWRQcm9wZXJ0eShrLCBwYXJlbnRba10pKTtcbiAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMuZm9yRWFjaChrID0+IG1ldGEuYWRkQ29uY2F0ZW5hdGVkUHJvcGVydHkoaywgW10pKTtcblxuICAgIG5ldyBWYWx1ZURlc2NyaXB0b3IoeyB2YWx1ZTogbWV0YS5nZXRDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKCkgfSkuZGVmaW5lKHRhcmdldCwgJ2NvbmNhdGVuYXRlZFByb3BlcnRpZXMnKTtcbiAgICBuZXcgVmFsdWVEZXNjcmlwdG9yKHsgdmFsdWU6IG1ldGEuZ2V0TWVyZ2VkUHJvcGVydGllcygpIH0pLmRlZmluZSh0YXJnZXQsICdtZXJnZWRQcm9wZXJ0aWVzJyk7XG5cbiAgICBPYmplY3Qua2V5cyh0aGlzLmV4dGVuc2lvbnMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGxldCBleHRlbnNpb246IEJsdWVwcmludCA9IHRoaXMuZXh0ZW5zaW9ucyFba2V5XTtcbiAgICAgIGxldCBkZXNjID0gZXh0ZW5zaW9uLmRlc2NyaXB0b3IodGFyZ2V0LCA8c3RyaW5nPmtleSwgbWV0YSk7XG4gICAgICBkZXNjLmRlZmluZSh0YXJnZXQsIDxzdHJpbmc+a2V5LCBwYXJlbnQpO1xuICAgIH0pO1xuXG4gICAgbmV3IFZhbHVlRGVzY3JpcHRvcih7IHZhbHVlOiBST09UIH0pLmRlZmluZSh0YXJnZXQsIDxzdHJpbmc+J19zdXBlcicpO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIEV4dGVuc2lvbiA9IE1peGluIHwgRXh0ZW5zaW9ucztcblxuZXhwb3J0IGZ1bmN0aW9uIGV4dGVuZDxUIGV4dGVuZHMgR2xpbW1lck9iamVjdD4oUGFyZW50OiBHbGltbWVyT2JqZWN0RmFjdG9yeTxUPiwgLi4uZXh0ZW5zaW9uczogRXh0ZW5zaW9uW10pOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+IHtcbiAgbGV0IFN1cGVyID0gPHR5cGVvZiBHbGltbWVyT2JqZWN0PlBhcmVudDtcblxuICBsZXQgU3ViY2xhc3MgPSBjbGFzcyBleHRlbmRzIFN1cGVyIHt9O1xuICBTdWJjbGFzc1tDTEFTU19NRVRBXSA9IEluc3RhbmNlTWV0YS5mcm9tUGFyZW50KFBhcmVudFtDTEFTU19NRVRBXSk7XG5cbiAgbGV0IG1peGlucyA9IGV4dGVuc2lvbnMubWFwKHRvTWl4aW4pO1xuICBQYXJlbnRbQ0xBU1NfTUVUQV0uYWRkU3ViY2xhc3MoU3ViY2xhc3MgYXMgR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pik7XG4gIG1peGlucy5mb3JFYWNoKG0gPT4gU3ViY2xhc3NbQ0xBU1NfTUVUQV0uYWRkTWl4aW4obSkpO1xuXG4gIENsYXNzTWV0YS5hcHBseUFsbE1peGlucyhTdWJjbGFzcyBhcyBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+LCBQYXJlbnQpO1xuXG4gIHJldHVybiBTdWJjbGFzcyBhcyBhbnk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWxpbmtTdWJjbGFzc2VzKFBhcmVudDogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICBQYXJlbnRbQ0xBU1NfTUVUQV0uZ2V0U3ViY2xhc3NlcygpLmZvckVhY2goKFN1YmNsYXNzOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+KSA9PiB7XG4gICAgU3ViY2xhc3NbQ0xBU1NfTUVUQV0ucmVzZXQoUGFyZW50W0NMQVNTX01FVEFdKTtcbiAgICBTdWJjbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFBhcmVudC5wcm90b3R5cGUpO1xuXG4gICAgQ2xhc3NNZXRhLmFwcGx5QWxsTWl4aW5zKFN1YmNsYXNzLCBQYXJlbnQpO1xuXG4gICAgLy8gcmVjdXJzZSBpbnRvIHN1Yi1zdWJjbGFzc2VzXG4gICAgcmVsaW5rU3ViY2xhc3NlcyhTdWJjbGFzcyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9NaXhpbihleHRlbnNpb246IEV4dGVuc2lvbik6IE1peGluIHtcbiAgaWYgKGV4dGVuc2lvbiBpbnN0YW5jZW9mIE1peGluKSByZXR1cm4gZXh0ZW5zaW9uO1xuICBlbHNlIHJldHVybiBuZXcgTWl4aW4oPE9iamVjdD5leHRlbnNpb24sIFtdKTtcbn1cblxuY2xhc3MgVmFsdWVEZXNjcmlwdG9yIGV4dGVuZHMgRGVzY3JpcHRvciB7XG4gIHB1YmxpYyBlbnVtZXJhYmxlOiBib29sZWFuO1xuICBwdWJsaWMgY29uZmlndXJhYmxlOiBib29sZWFuO1xuICBwdWJsaWMgd3JpdGFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyB2YWx1ZTogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHsgZW51bWVyYWJsZT10cnVlLCBjb25maWd1cmFibGU9dHJ1ZSwgd3JpdGFibGU9dHJ1ZSwgdmFsdWUgfTogUHJvcGVydHlEZXNjcmlwdG9yKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmVudW1lcmFibGUgPSBlbnVtZXJhYmxlO1xuICAgIHRoaXMuY29uZmlndXJhYmxlID0gY29uZmlndXJhYmxlO1xuICAgIHRoaXMud3JpdGFibGUgPSB3cml0YWJsZTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBkZWZpbmUodGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBfaG9tZT86IGFueSkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwge1xuICAgICAgZW51bWVyYWJsZTogdGhpcy5lbnVtZXJhYmxlLFxuICAgICAgY29uZmlndXJhYmxlOiB0aGlzLmNvbmZpZ3VyYWJsZSxcbiAgICAgIHdyaXRhYmxlOiB0aGlzLndyaXRhYmxlLFxuICAgICAgdmFsdWU6IHRoaXMudmFsdWVcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGF0YUJsdWVwcmludCBleHRlbmRzIEJsdWVwcmludCB7XG4gIHB1YmxpYyBlbnVtZXJhYmxlOiBib29sZWFuO1xuICBwdWJsaWMgY29uZmlndXJhYmxlOiBib29sZWFuO1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIHdyaXRhYmxlOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHsgZW51bWVyYWJsZT10cnVlLCBjb25maWd1cmFibGU9dHJ1ZSwgd3JpdGFibGU9dHJ1ZSwgdmFsdWUgfTogUHJvcGVydHlEZXNjcmlwdG9yKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmVudW1lcmFibGUgPSBlbnVtZXJhYmxlO1xuICAgIHRoaXMuY29uZmlndXJhYmxlID0gY29uZmlndXJhYmxlO1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLndyaXRhYmxlID0gd3JpdGFibGU7XG4gIH1cblxuICBkZXNjcmlwdG9yKF90YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIGNsYXNzTWV0YTogQ2xhc3NNZXRhKTogRGVzY3JpcHRvciB7XG4gICAgbGV0IHsgZW51bWVyYWJsZSwgY29uZmlndXJhYmxlLCB3cml0YWJsZSwgdmFsdWUgfSA9IHRoaXM7XG5cbiAgICBpZiAoY2xhc3NNZXRhLmhhc0NvbmNhdGVuYXRlZFByb3BlcnR5KDxzdHJpbmc+a2V5KSkge1xuICAgICAgY2xhc3NNZXRhLmFkZENvbmNhdGVuYXRlZFByb3BlcnR5KDxzdHJpbmc+a2V5LCB2YWx1ZSk7XG4gICAgICB2YWx1ZSA9IGNsYXNzTWV0YS5nZXRDb25jYXRlbmF0ZWRQcm9wZXJ0eSg8c3RyaW5nPmtleSk7XG4gICAgfSBlbHNlIGlmIChjbGFzc01ldGEuaGFzTWVyZ2VkUHJvcGVydHkoPHN0cmluZz5rZXkpKSB7XG4gICAgICBjbGFzc01ldGEuYWRkTWVyZ2VkUHJvcGVydHkoPHN0cmluZz5rZXksIHZhbHVlKTtcbiAgICAgIHZhbHVlID0gY2xhc3NNZXRhLmdldE1lcmdlZFByb3BlcnR5KDxzdHJpbmc+a2V5KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFZhbHVlRGVzY3JpcHRvcih7IGVudW1lcmFibGUsIGNvbmZpZ3VyYWJsZSwgd3JpdGFibGUsIHZhbHVlIH0pO1xuICB9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBY2Nlc3NvckJsdWVwcmludCBleHRlbmRzIEJsdWVwcmludCB7XG4gIHB1YmxpYyBlbnVtZXJhYmxlOiBib29sZWFuO1xuICBwdWJsaWMgY29uZmlndXJhYmxlOiBib29sZWFuO1xuICBnZXQ6ICgpID0+IGFueTtcbiAgc2V0OiAodmFsdWU6IGFueSkgPT4gdm9pZDtcblxuICBjb25zdHJ1Y3Rvcih7IGVudW1lcmFibGU9dHJ1ZSwgY29uZmlndXJhYmxlPXRydWUsIGdldCwgc2V0IH06IFByb3BlcnR5RGVzY3JpcHRvciAmIHsgZ2V0OiBhbnksIHNldDogYW55IH0pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZW51bWVyYWJsZSA9IGVudW1lcmFibGU7XG4gICAgdGhpcy5jb25maWd1cmFibGUgPSBjb25maWd1cmFibGU7XG4gICAgdGhpcy5nZXQgPSBnZXQ7XG4gICAgdGhpcy5zZXQgPSBzZXQ7XG4gIH1cblxuICBkZXNjcmlwdG9yKF90YXJnZXQ6IE9iamVjdCwgX2tleTogc3RyaW5nLCBfY2xhc3NNZXRhOiBDbGFzc01ldGEpOiBEZXNjcmlwdG9yIHtcbiAgICByZXR1cm4gbmV3IFZhbHVlRGVzY3JpcHRvcih7XG4gICAgICBlbnVtZXJhYmxlOiB0aGlzLmVudW1lcmFibGUsXG4gICAgICBjb25maWd1cmFibGU6IHRoaXMuY29uZmlndXJhYmxlLFxuICAgICAgZ2V0OiB0aGlzLmdldCxcbiAgICAgIHNldDogdGhpcy5zZXRcbiAgICB9KTtcbiAgfVxufVxuXG5jbGFzcyBNZXRob2REZXNjcmlwdG9yIGV4dGVuZHMgVmFsdWVEZXNjcmlwdG9yIHtcbiAgZGVmaW5lKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgaG9tZTogT2JqZWN0KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHdyYXBNZXRob2QoaG9tZSwga2V5LCB0aGlzLnZhbHVlKTtcbiAgICBzdXBlci5kZWZpbmUodGFyZ2V0LCBrZXksIGhvbWUpO1xuICB9XG59XG5cbmNsYXNzIE1ldGhvZEJsdWVwcmludCBleHRlbmRzIERhdGFCbHVlcHJpbnQge1xuICBkZXNjcmlwdG9yKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgY2xhc3NNZXRhOiBDbGFzc01ldGEpOiBNZXRob2REZXNjcmlwdG9yIHtcbiAgICBsZXQgZGVzYyA9IHN1cGVyLmRlc2NyaXB0b3IodGFyZ2V0LCBrZXksIGNsYXNzTWV0YSk7XG4gICAgcmV0dXJuIG5ldyBNZXRob2REZXNjcmlwdG9yKGRlc2MgYXMgUHJvcGVydHlEZXNjcmlwdG9yKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JhcE1ldGhvZChob21lOiBPYmplY3QsIG1ldGhvZE5hbWU6IHN0cmluZywgb3JpZ2luYWw6ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55KSB7XG4gIGlmICghKDxzdHJpbmc+bWV0aG9kTmFtZSBpbiBob21lKSkgcmV0dXJuIG1heWJlV3JhcChvcmlnaW5hbCk7XG5cbiAgbGV0IHN1cGVyTWV0aG9kID0gaG9tZVttZXRob2ROYW1lXTtcblxuICBsZXQgZnVuYyA9IGZ1bmN0aW9uKHRoaXM6IEdsaW1tZXJPYmplY3QsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgaWYgKCF0aGlzKSByZXR1cm4gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJncyk7XG5cbiAgICBsZXQgbGFzdFN1cGVyID0gdGhpcy5fc3VwZXI7XG4gICAgdGhpcy5fc3VwZXIgPSBzdXBlck1ldGhvZDtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX3N1cGVyID0gbGFzdFN1cGVyO1xuICAgIH1cbiAgfTtcblxuICAoPGFueT5mdW5jKS5fX3dyYXBwZWQgPSB0cnVlO1xuXG4gIHJldHVybiBmdW5jO1xufVxuXG5mdW5jdGlvbiBtYXliZVdyYXAob3JpZ2luYWw6IEZ1bmN0aW9uKSB7XG4gIGlmICgnX193cmFwcGVkJyBpbiBvcmlnaW5hbCkgcmV0dXJuIG9yaWdpbmFsO1xuXG4gIHJldHVybiBmdW5jdGlvbih0aGlzOiBHbGltbWVyT2JqZWN0LCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIGlmICghdGhpcykgcmV0dXJuIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuXG4gICAgbGV0IGxhc3RTdXBlciA9IHRoaXMuX3N1cGVyO1xuICAgIHRoaXMuX3N1cGVyID0gUk9PVDtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX3N1cGVyID0gbGFzdFN1cGVyO1xuICAgIH1cbiAgfTtcbn1cbiJdfQ==

@@ -295,2 +295,3 @@ import { Meta, PropertyReference } from '@glimmer/object-reference';

GlimmerObject["df8be4c8-4e89-44e2-a8f9-550c8dacdca7"] = InstanceMeta.fromParent(null);
GlimmerObject.isClass = true;
GlimmerObject.isClass = true;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvQGdsaW1tZXIvb2JqZWN0L2xpYi9vYmplY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQUFBTyxTQUNMLEFBQUksTUFFSixBQUFpQixBQUNsQix5QkFBTSxBQUEyQixBQUFDO0FBQ25DLEFBQU8sU0FBUSxBQUFJLE1BQUUsQUFBTSxRQUFFLEFBQWMsQUFBRSxzQkFBTSxBQUFlLEFBQUM7QUFDbkUsQUFBTyxTQUVMLEFBQU0sVUFBSSxBQUFXLGFBQ3JCLEFBQU8sU0FDUCxBQUFnQixrQkFDaEIsQUFBVSxBQUNYLGtCQUFNLEFBQVMsQUFBQztBQUVqQixNQUFNLEVBQUUsQUFBTyxBQUFFLFlBQUcsQUFBSyxBQUFDO0FBRTFCLEFBQU8sU0FBRSxBQUFJLEFBQUUsWUFBTSxBQUFTLEFBQUM7QUFHL0IsQUFBTSxPQUFDLE1BQU0sQUFBVyxjQUFHLHVCQUF3QixDQUFDLEFBQUM7QUFFckQsTUFBTSxBQUFVLGFBQUcsQUFBc0MsQUFBQztBQXdCMUQsQUFBTSw0QkFBeUIsQUFBTTtBQUNuQyxBQUFzQjtBQUN0QixBQUF5QjtBQUN6QixBQUFNLFdBQUMsQUFBRyxBQUFDLEFBQ2I7QUFBQztBQUVELE1BQTBCLG1CQUFRLEFBQUk7QUFDcEMsQUFBbUIsd0JBQUMsR0FBRyxBQUFZO0FBQ2pDLGNBQU0sSUFBSSxBQUFLLE1BQUMsQUFBZ0QsQUFBQyxBQUFDLEFBQ3BFO0FBQUMsQUFDRjs7QUFFRCxBQUFNO0FBQU47QUFDVSxhQUFjLGlCQUFHLEFBQUksQUFBOEIsQUFBQztBQUNwRCxhQUFnQixtQkFBRyxBQUFJLEFBQU8sQUFBQztBQUMvQixhQUFzQix5QkFBRyxBQUFJLEFBQVMsQUFBQztBQUN2QyxhQUF5Qiw0QkFBRyxBQUFLLEFBQUM7QUFDbEMsYUFBZ0IsbUJBQUcsQUFBSSxBQUFVLEFBQUM7QUFDbEMsYUFBbUIsc0JBQUcsQUFBSyxBQUFDO0FBQzVC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QixBQUFFLEFBQUM7QUFDdEQsQUFBRSxBQUFDLFlBQUMsQ0FBQyxBQUFRLEFBQUMsVUFBQyxBQUFNLEFBQUM7QUFFdEIsQUFBRyxBQUFDLGFBQUMsSUFBSSxBQUFJLFFBQUksQUFBUSxBQUFDLFVBQUMsQUFBQztBQUMxQixBQUFRLHFCQUFDLEFBQUksTUFBRSxBQUFRLFNBQUMsQUFBSSxBQUFDLEFBQUMsQUFBQyxBQUNqQztBQUFDLEFBQ0g7QUFBQztBQU1ELEFBQUksV0FBSSxDQUFDO0FBVVQsQUFBRyxRQUFDLEFBQVc7QUFDYixBQUFNLGVBQUMsQUFBSSxLQUFDLEFBQUcsQUFBQyxBQUFDLEFBQ25CO0FBQUM7QUFFRCxBQUFHLFFBQUMsQUFBVyxLQUFFLEFBQVU7QUFDekIsQUFBSSxhQUFDLEFBQUcsQUFBQyxPQUFHLEFBQUssQUFBQyxBQUNwQjtBQUFDO0FBRUQsQUFBYSxrQkFBQyxBQUFhO0FBQ3pCLEFBQU0sZUFBQyxBQUFJLE1BQUUsQUFBSyxBQUFDLEFBQUMsQUFDdEI7QUFBQztBQUVELEFBQU8sY0FBSSxDQUFDOztBQXBFTCxjQUFzQywwQ0FBaUIsQUFBWSxhQUFDLEFBQVUsV0FBQyxBQUFJLEFBQUMsQUFBQztBQUNyRixjQUFPLFVBQUcsQUFBSSxBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgTWV0YSxcbiAgSW5uZXJSZWZlcmVuY2VGYWN0b3J5LFxuICBQcm9wZXJ0eVJlZmVyZW5jZVxufSBmcm9tICdAZ2xpbW1lci9vYmplY3QtcmVmZXJlbmNlJztcbmltcG9ydCB7IERpY3QsIGRpY3QsIGFzc2lnbiwgaW5pdGlhbGl6ZUd1aWQgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7XG4gIE1peGluLFxuICBleHRlbmQgYXMgZXh0ZW5kQ2xhc3MsXG4gIHRvTWl4aW4sXG4gIHJlbGlua1N1YmNsYXNzZXMsXG4gIHdyYXBNZXRob2Rcbn0gZnJvbSAnLi9taXhpbic7XG5cbmNvbnN0IHsgaXNBcnJheSB9ID0gQXJyYXk7XG5cbmltcG9ydCB7IFJPT1QgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IE9wdGlvbiB9IGZyb20gXCJAZ2xpbW1lci9pbnRlcmZhY2VzXCI7XG5cbmV4cG9ydCBjb25zdCBFTVBUWV9DQUNIRSA9IGZ1bmN0aW9uIEVNUFRZX0NBQ0hFKCkge307XG5cbmNvbnN0IENMQVNTX01FVEEgPSBcImRmOGJlNGM4LTRlODktNDRlMi1hOGY5LTU1MGM4ZGFjZGNhN1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9iamVjdFdpdGhNaXhpbnMge1xuICBcImRmOGJlNGM4LTRlODktNDRlMi1hOGY5LTU1MGM4ZGFjZGNhN1wiOiBDbGFzc01ldGE7XG4gIF9tZXRhOiBNZXRhO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEluc3RhbmNlV2l0aE1peGlucyB7XG4gIGNvbnN0cnVjdG9yOiBPYmplY3RXaXRoTWl4aW5zO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdsaW1tZXJPYmplY3RGYWN0b3J5PFQ+IHtcbiAgbmV3PFU+KGF0dHJzPzogVSk6IEdsaW1tZXJPYmplY3QgJiBUICYgVTtcbiAgZXh0ZW5kKCk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PE9iamVjdD47XG4gIGV4dGVuZDxUPihleHRlbnNpb246IFQpOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxUPjtcbiAgZXh0ZW5kKC4uLmV4dGVuc2lvbnM6IE9iamVjdFtdKTogR2xpbW1lck9iamVjdEZhY3Rvcnk8T2JqZWN0PjtcbiAgY3JlYXRlPFU+KGF0dHJzPzogVSk6IEdsaW1tZXJPYmplY3QgJiBUICYgVTtcbiAgcmVvcGVuPFU+KGV4dGVuc2lvbnM6IFUpOiB2b2lkO1xuICByZW9wZW5DbGFzczxVPihleHRlbnNpb25zOiBVKTogdm9pZDtcbiAgbWV0YUZvclByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBPYmplY3Q7XG4gIGVhY2hDb21wdXRlZFByb3BlcnR5KGNhbGxiYWNrOiAoczogc3RyaW5nLCBvOiBPYmplY3QpID0+IHZvaWQpOiB2b2lkO1xuICBcImRmOGJlNGM4LTRlODktNDRlMi1hOGY5LTU1MGM4ZGFjZGNhN1wiOiBJbnN0YW5jZU1ldGE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0dXJib2NoYXJnZTxUPihvYmo6IFQpOiBUIHtcbiAgLy8gZnVuY3Rpb24gRHVtbXkoKSB7fVxuICAvLyBEdW1teS5wcm90b3R5cGUgPSBvYmo7XG4gIHJldHVybiBvYmo7XG59XG5cbmFic3RyYWN0IGNsYXNzIFNlYWxlZE1ldGEgZXh0ZW5kcyBNZXRhIHtcbiAgYWRkUmVmZXJlbmNlVHlwZUZvciguLi5fYXJnczogYW55W10pOiBJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55PiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IG1vZGlmeSByZWZlcmVuY2UgdHlwZXMgb24gYSBzZWFsZWQgbWV0YVwiKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ2xhc3NNZXRhIHtcbiAgcHJpdmF0ZSByZWZlcmVuY2VUeXBlcyA9IGRpY3Q8SW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4+KCk7XG4gIHByaXZhdGUgcHJvcGVydHlNZXRhZGF0YSA9IGRpY3Q8YW55PigpO1xuICBwcml2YXRlIGNvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSBkaWN0PGFueVtdPigpO1xuICBwcml2YXRlIGhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSBmYWxzZTtcbiAgcHJpdmF0ZSBtZXJnZWRQcm9wZXJ0aWVzID0gZGljdDxPYmplY3Q+KCk7XG4gIHByaXZhdGUgaGFzTWVyZ2VkUHJvcGVydGllcyA9IGZhbHNlO1xuICBwcml2YXRlIG1peGluczogTWl4aW5bXSA9IFtdO1xuICBwcml2YXRlIGFwcGxpZWRNaXhpbnM6IE1peGluW10gPSBbXTtcbiAgcHJpdmF0ZSBzdGF0aWNNaXhpbnM6IE1peGluW10gPSBbXTtcbiAgcHJpdmF0ZSBzdWJjbGFzc2VzOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+W10gPSBbXTtcbiAgcHJpdmF0ZSBzbG90czogc3RyaW5nW10gPSBbXTtcbiAgcHVibGljIEluc3RhbmNlTWV0YUNvbnN0cnVjdG9yOiBPcHRpb248dHlwZW9mIE1ldGE+ID0gbnVsbDtcblxuICBzdGF0aWMgZnJvbVBhcmVudChwYXJlbnQ6IE9wdGlvbjxDbGFzc01ldGE+KSB7XG4gICAgbGV0IG1ldGEgPSBuZXcgdGhpcygpO1xuICAgIG1ldGEucmVzZXQocGFyZW50KTtcbiAgICByZXR1cm4gbWV0YTtcbiAgfVxuXG4gIHN0YXRpYyBmb3Iob2JqZWN0OiBPYmplY3RXaXRoTWl4aW5zIHwgSW5zdGFuY2VXaXRoTWl4aW5zKTogT3B0aW9uPENsYXNzTWV0YT4ge1xuICAgIGlmIChDTEFTU19NRVRBIGluIG9iamVjdCkgcmV0dXJuICg8T2JqZWN0V2l0aE1peGlucz5vYmplY3QpW0NMQVNTX01FVEFdO1xuICAgIGVsc2UgaWYgKG9iamVjdC5jb25zdHJ1Y3RvcikgcmV0dXJuICg8SW5zdGFuY2VXaXRoTWl4aW5zPm9iamVjdCkuY29uc3RydWN0b3JbQ0xBU1NfTUVUQV0gfHwgbnVsbDtcbiAgICBlbHNlIHJldHVybiBudWxsO1xuICB9XG5cbiAgaW5pdChvYmplY3Q6IEdsaW1tZXJPYmplY3QsIGF0dHJzOiBPcHRpb248T2JqZWN0Pikge1xuICAgIGlmICh0eXBlb2YgYXR0cnMgIT09ICdvYmplY3QnIHx8IGF0dHJzID09PSBudWxsKSByZXR1cm47XG5cbiAgICBpZiAodGhpcy5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKSB7XG4gICAgICBsZXQgY29uY2F0UHJvcHMgPSB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXM7XG4gICAgICBmb3IgKGxldCBwcm9wIGluIGNvbmNhdFByb3BzKSB7XG4gICAgICAgIGlmIChwcm9wIGluIGF0dHJzKSB7XG4gICAgICAgICAgbGV0IGNvbmNhdCA9IGNvbmNhdFByb3BzW3Byb3BdLnNsaWNlKCk7XG4gICAgICAgICAgb2JqZWN0W3Byb3BdID0gY29uY2F0LmNvbmNhdChhdHRyc1twcm9wXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5oYXNNZXJnZWRQcm9wZXJ0aWVzKSB7XG4gICAgICBsZXQgbWVyZ2VkUHJvcHMgPSB0aGlzLm1lcmdlZFByb3BlcnRpZXM7XG4gICAgICBmb3IgKGxldCBwcm9wIGluIG1lcmdlZFByb3BzKSB7XG4gICAgICAgIGlmIChwcm9wIGluIGF0dHJzKSB7XG4gICAgICAgICAgbGV0IG1lcmdlZCA9IGFzc2lnbih7fSwgbWVyZ2VkUHJvcHNbcHJvcF0pO1xuICAgICAgICAgIG9iamVjdFtwcm9wXSA9IGFzc2lnbihtZXJnZWQsIGF0dHJzW3Byb3BdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFkZFN0YXRpY01peGluKG1peGluOiBNaXhpbikge1xuICAgIHRoaXMuc3RhdGljTWl4aW5zLnB1c2gobWl4aW4pO1xuICB9XG5cbiAgYWRkTWl4aW4obWl4aW46IE1peGluKSB7XG4gICAgdGhpcy5taXhpbnMucHVzaChtaXhpbik7XG4gIH1cblxuICBnZXRTdGF0aWNNaXhpbnMoKTogTWl4aW5bXSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGljTWl4aW5zO1xuICB9XG5cbiAgZ2V0TWl4aW5zKCk6IE1peGluW10ge1xuICAgIHJldHVybiB0aGlzLm1peGlucztcbiAgfVxuXG4gIGFkZEFwcGxpZWRNaXhpbihtaXhpbjogTWl4aW4pIHtcbiAgICB0aGlzLmFwcGxpZWRNaXhpbnMucHVzaChtaXhpbik7XG4gIH1cblxuICBoYXNBcHBsaWVkTWl4aW4obWl4aW46IE1peGluKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbGllZE1peGlucy5pbmRleE9mKG1peGluKSAhPT0gLTE7XG4gIH1cblxuICBnZXRBcHBsaWVkTWl4aW5zKCk6IE1peGluW10ge1xuICAgIHJldHVybiB0aGlzLmFwcGxpZWRNaXhpbnM7XG4gIH1cblxuICBoYXNTdGF0aWNNaXhpbihtaXhpbjogTWl4aW4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0aWNNaXhpbnMuaW5kZXhPZihtaXhpbikgIT09IC0xO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5QWxsTWl4aW5zKFN1YmNsYXNzOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+LCBQYXJlbnQ6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pIHtcbiAgICBTdWJjbGFzc1tDTEFTU19NRVRBXS5nZXRNaXhpbnMoKS5mb3JFYWNoKChtOiBNaXhpbikgPT4gbS5leHRlbmRQcm90b3R5cGVPbnRvKFN1YmNsYXNzLCBQYXJlbnQpKTtcbiAgICBTdWJjbGFzc1tDTEFTU19NRVRBXS5nZXRTdGF0aWNNaXhpbnMoKS5mb3JFYWNoKChtOiBNaXhpbikgPT4gbS5leHRlbmRTdGF0aWMoU3ViY2xhc3MpKTtcbiAgICBTdWJjbGFzc1tDTEFTU19NRVRBXS5zZWFsKCk7XG4gIH1cblxuICBhZGRTdWJjbGFzcyhjb25zdHJ1Y3RvcjogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICAgIHRoaXMuc3ViY2xhc3Nlcy5wdXNoKGNvbnN0cnVjdG9yKTtcbiAgfVxuXG4gIGdldFN1YmNsYXNzZXMoKTogRnVuY3Rpb25bXSB7XG4gICAgcmV0dXJuIHRoaXMuc3ViY2xhc3NlcztcbiAgfVxuXG4gIGFkZFByb3BlcnR5TWV0YWRhdGEocHJvcGVydHk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIHRoaXMucHJvcGVydHlNZXRhZGF0YVtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgfVxuXG4gIG1ldGFkYXRhRm9yUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IE9iamVjdCB7XG4gICAgcmV0dXJuIHRoaXMucHJvcGVydHlNZXRhZGF0YVtwcm9wZXJ0eV07XG4gIH1cblxuICBhZGRSZWZlcmVuY2VUeXBlRm9yKHByb3BlcnR5OiBzdHJpbmcsIHR5cGU6IElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+KSB7XG4gICAgdGhpcy5yZWZlcmVuY2VUeXBlc1twcm9wZXJ0eV0gPSB0eXBlO1xuICB9XG5cbiAgYWRkU2xvdEZvcihwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgdGhpcy5zbG90cy5wdXNoKHByb3BlcnR5KTtcbiAgfVxuXG4gIGhhc0NvbmNhdGVuYXRlZFByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcykgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiA8c3RyaW5nPnByb3BlcnR5IGluIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcztcbiAgfVxuXG4gIGdldENvbmNhdGVuYXRlZFByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllc1twcm9wZXJ0eV07XG4gIH1cblxuICBnZXRDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gPHN0cmluZ1tdPk9iamVjdC5rZXlzKHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcyk7XG4gIH1cblxuICBhZGRDb25jYXRlbmF0ZWRQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzID0gdHJ1ZTtcblxuICAgIGlmICg8c3RyaW5nPnByb3BlcnR5IGluIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcykge1xuICAgICAgbGV0IHZhbCA9IHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllc1twcm9wZXJ0eV0uY29uY2F0KHZhbHVlKTtcbiAgICAgIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllc1twcm9wZXJ0eV0gPSB2YWw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllc1twcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBoYXNNZXJnZWRQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmhhc01lcmdlZFByb3BlcnRpZXMpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gPHN0cmluZz5wcm9wZXJ0eSBpbiB0aGlzLm1lcmdlZFByb3BlcnRpZXM7XG4gIH1cblxuICBnZXRNZXJnZWRQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nKTogT2JqZWN0IHtcbiAgICByZXR1cm4gdGhpcy5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XTtcbiAgfVxuXG4gIGdldE1lcmdlZFByb3BlcnRpZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiA8c3RyaW5nW10+T2JqZWN0LmtleXModGhpcy5tZXJnZWRQcm9wZXJ0aWVzKTtcbiAgfVxuXG4gIGFkZE1lcmdlZFByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcsIHZhbHVlOiBPYmplY3QpIHtcbiAgICB0aGlzLmhhc01lcmdlZFByb3BlcnRpZXMgPSB0cnVlO1xuXG4gICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFlvdSBwYXNzZWQgaW4gXFxgJHtKU09OLnN0cmluZ2lmeSh2YWx1ZSl9XFxgIGFzIHRoZSB2YWx1ZSBmb3IgXFxgZm9vXFxgIGJ1dCBcXGBmb29cXGAgY2Fubm90IGJlIGFuIEFycmF5YCk7XG4gICAgfVxuXG4gICAgaWYgKDxzdHJpbmc+cHJvcGVydHkgaW4gdGhpcy5tZXJnZWRQcm9wZXJ0aWVzICYmIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wZXJ0eV0gJiYgdmFsdWUpIHtcbiAgICAgIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wZXJ0eV0gPSBtZXJnZU1lcmdlZFByb3BlcnRpZXModmFsdWUsIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wZXJ0eV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlID09PSBudWxsID8gdmFsdWUgOiB2YWx1ZSB8fCB7fTtcbiAgICAgIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBnZXRSZWZlcmVuY2VUeXBlcygpOiBEaWN0PElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+PiB7XG4gICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlVHlwZXM7XG4gIH1cblxuICBnZXRQcm9wZXJ0eU1ldGFkYXRhKCk6IERpY3Q8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucHJvcGVydHlNZXRhZGF0YTtcbiAgfVxuXG4gIHJlc2V0KHBhcmVudDogT3B0aW9uPENsYXNzTWV0YT4pIHtcbiAgICB0aGlzLnJlZmVyZW5jZVR5cGVzID0gZGljdDxJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55Pj4oKTtcbiAgICB0aGlzLnByb3BlcnR5TWV0YWRhdGEgPSBkaWN0KCk7XG4gICAgdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzID0gZGljdDxhbnlbXT4oKTtcbiAgICB0aGlzLm1lcmdlZFByb3BlcnRpZXMgPSBkaWN0PE9iamVjdD4oKTtcblxuICAgIGlmIChwYXJlbnQpIHtcbiAgICAgIHRoaXMuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IHBhcmVudC5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzO1xuICAgICAgZm9yIChsZXQgcHJvcCBpbiBwYXJlbnQuY29uY2F0ZW5hdGVkUHJvcGVydGllcykge1xuICAgICAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcF0gPSBwYXJlbnQuY29uY2F0ZW5hdGVkUHJvcGVydGllc1twcm9wXS5zbGljZSgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmhhc01lcmdlZFByb3BlcnRpZXMgPSBwYXJlbnQuaGFzTWVyZ2VkUHJvcGVydGllcztcbiAgICAgIGZvciAobGV0IHByb3AgaW4gcGFyZW50Lm1lcmdlZFByb3BlcnRpZXMpIHtcbiAgICAgICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BdID0gYXNzaWduKHt9LCBwYXJlbnQubWVyZ2VkUHJvcGVydGllc1twcm9wXSk7XG4gICAgICB9XG5cbiAgICAgIGFzc2lnbih0aGlzLnJlZmVyZW5jZVR5cGVzLCBwYXJlbnQucmVmZXJlbmNlVHlwZXMpO1xuICAgICAgYXNzaWduKHRoaXMucHJvcGVydHlNZXRhZGF0YSwgcGFyZW50LnByb3BlcnR5TWV0YWRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIHJlc2VhbChvYmo6IE9iamVjdCkge1xuICAgIGxldCBtZXRhID0gTWV0YS5mb3Iob2JqKTtcbiAgICBsZXQgZnJlc2ggPSBuZXcgdGhpcy5JbnN0YW5jZU1ldGFDb25zdHJ1Y3RvciEob2JqLCB7fSk7XG4gICAgbGV0IHJlZmVyZW5jZVR5cGVzID0gbWV0YS5nZXRSZWZlcmVuY2VUeXBlcygpO1xuICAgIGxldCBzbG90cyA9IG1ldGEuZ2V0U2xvdHMoKTtcblxuICAgIHR1cmJvY2hhcmdlKGFzc2lnbihyZWZlcmVuY2VUeXBlcywgdGhpcy5yZWZlcmVuY2VUeXBlcykpO1xuICAgIHR1cmJvY2hhcmdlKGFzc2lnbihzbG90cywgZnJlc2guZ2V0U2xvdHMoKSkpO1xuICB9XG5cbiAgc2VhbCgpIHtcbiAgICBsZXQgcmVmZXJlbmNlVHlwZXM6IERpY3Q8SW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4+ID0gdHVyYm9jaGFyZ2UoYXNzaWduKHt9LCB0aGlzLnJlZmVyZW5jZVR5cGVzKSk7XG4gICAgdHVyYm9jaGFyZ2UodGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKTtcbiAgICB0dXJib2NoYXJnZSh0aGlzLm1lcmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKCF0aGlzLmhhc01lcmdlZFByb3BlcnRpZXMgJiYgIXRoaXMuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcykge1xuICAgICAgdGhpcy5pbml0ID0gZnVuY3Rpb24oKSB7fTtcbiAgICB9XG5cbiAgICBsZXQgc2xvdHMgPSB0aGlzLnNsb3RzO1xuXG4gICAgY2xhc3MgU2xvdHMge1xuICAgICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHNsb3RzLmZvckVhY2gobmFtZSA9PiB7XG4gICAgICAgICAgdGhpc1tuYW1lXSA9IEVNUFRZX0NBQ0hFO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLkluc3RhbmNlTWV0YUNvbnN0cnVjdG9yID0gY2xhc3MgZXh0ZW5kcyBTZWFsZWRNZXRhIHtcbiAgICAgIHByb3RlY3RlZCBzbG90czogU2xvdHMgPSBuZXcgU2xvdHMoKTtcbiAgICAgIHB1YmxpYyByZWZlcmVuY2VUeXBlczogRGljdDxJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55Pj4gPSByZWZlcmVuY2VUeXBlcztcblxuICAgICAgZ2V0UmVmZXJlbmNlVHlwZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZVR5cGVzO1xuICAgICAgfVxuXG4gICAgICByZWZlcmVuY2VUeXBlRm9yKHByb3BlcnR5OiBzdHJpbmcpOiBJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZVR5cGVzW3Byb3BlcnR5XSB8fCBQcm9wZXJ0eVJlZmVyZW5jZTtcbiAgICAgIH1cblxuICAgICAgZ2V0U2xvdHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNsb3RzO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB0dXJib2NoYXJnZSh0aGlzKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBtZXJnZU1lcmdlZFByb3BlcnRpZXMoYXR0cnM6IE9iamVjdCwgcGFyZW50OiBPYmplY3QpIHtcbiAgbGV0IG1lcmdlZCA9IGFzc2lnbih7fSwgcGFyZW50KTtcblxuICBmb3IgKGxldCBwcm9wIGluIGF0dHJzKSB7XG4gICAgaWYgKHByb3AgaW4gcGFyZW50ICYmIHR5cGVvZiBwYXJlbnRbcHJvcF0gPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGF0dHJzW3Byb3BdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBsZXQgd3JhcHBlZCA9IHdyYXBNZXRob2QocGFyZW50LCBwcm9wLCBhdHRyc1twcm9wXSk7XG4gICAgICBtZXJnZWRbcHJvcF0gPSB3cmFwcGVkO1xuICAgIH0gZWxzZSB7XG4gICAgICBtZXJnZWRbcHJvcF0gPSBhdHRyc1twcm9wXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWVyZ2VkO1xufVxuXG5leHBvcnQgY2xhc3MgSW5zdGFuY2VNZXRhIGV4dGVuZHMgQ2xhc3NNZXRhIHtcbiAgcHVibGljIFwiZGY4YmU0YzgtNGU4OS00NGUyLWE4ZjktNTUwYzhkYWNkY2E3XCI6IENsYXNzTWV0YSA9IENsYXNzTWV0YS5mcm9tUGFyZW50KG51bGwpO1xuXG4gIHN0YXRpYyBmcm9tUGFyZW50KHBhcmVudDogT3B0aW9uPEluc3RhbmNlTWV0YT4pOiBJbnN0YW5jZU1ldGEge1xuICAgIHJldHVybiA8SW5zdGFuY2VNZXRhPnN1cGVyLmZyb21QYXJlbnQocGFyZW50KTtcbiAgfVxuXG4gIHJlc2V0KHBhcmVudDogSW5zdGFuY2VNZXRhKSB7XG4gICAgc3VwZXIucmVzZXQocGFyZW50KTtcbiAgICBpZiAocGFyZW50KSB0aGlzW0NMQVNTX01FVEFdLnJlc2V0KHBhcmVudFtDTEFTU19NRVRBXSk7XG4gIH1cblxuICBzZWFsKCkge1xuICAgIHN1cGVyLnNlYWwoKTtcbiAgICB0aGlzW0NMQVNTX01FVEFdLnNlYWwoKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHbGltbWVyT2JqZWN0IHtcbiAgc3RhdGljIFwiZGY4YmU0YzgtNGU4OS00NGUyLWE4ZjktNTUwYzhkYWNkY2E3XCI6IEluc3RhbmNlTWV0YSA9IEluc3RhbmNlTWV0YS5mcm9tUGFyZW50KG51bGwpO1xuICBzdGF0aWMgaXNDbGFzcyA9IHRydWU7XG5cbiAgc3RhdGljIGV4dGVuZCgpOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+ICYgdHlwZW9mIEdsaW1tZXJPYmplY3Q7XG4gIHN0YXRpYyBleHRlbmQ8VD4oZXh0ZW5zaW9uOiBUKTogR2xpbW1lck9iamVjdEZhY3Rvcnk8VD4gJiB0eXBlb2YgR2xpbW1lck9iamVjdDtcbiAgc3RhdGljIGV4dGVuZCguLi5leHRlbnNpb25zOiBPYmplY3RbXSk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4gJiB0eXBlb2YgR2xpbW1lck9iamVjdDtcblxuICBzdGF0aWMgZXh0ZW5kKHRoaXM6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4sIC4uLmV4dGVuc2lvbnM6IGFueVtdKSB7XG4gICAgcmV0dXJuIGV4dGVuZENsYXNzKHRoaXMsIC4uLmV4dGVuc2lvbnMpO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZShhdHRycz86IE9iamVjdCB8IG51bGwpOiBHbGltbWVyT2JqZWN0IHtcbiAgICByZXR1cm4gbmV3IHRoaXMoYXR0cnMpO1xuICB9XG5cbiAgc3RhdGljIHJlb3BlbjxVPihleHRlbnNpb25zOiBVKTogdm9pZCB7XG4gICAgdG9NaXhpbihleHRlbnNpb25zKS5leHRlbmRQcm90b3R5cGUodGhpcyk7XG4gICAgdGhpc1tDTEFTU19NRVRBXS5zZWFsKCk7XG5cbiAgICByZWxpbmtTdWJjbGFzc2VzKHRoaXMpO1xuICB9XG5cbiAgc3RhdGljIHJlb3BlbkNsYXNzPFU+KGV4dGVuc2lvbnM6IFUpOiB2b2lkIHtcbiAgICB0b01peGluKGV4dGVuc2lvbnMpLmV4dGVuZFN0YXRpYyh0aGlzKTtcbiAgICB0aGlzW0NMQVNTX01FVEFdLnNlYWwoKTtcbiAgfVxuXG4gIHN0YXRpYyBtZXRhRm9yUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IE9iamVjdCB7XG4gICAgbGV0IHZhbHVlID0gdGhpc1tDTEFTU19NRVRBXS5tZXRhZGF0YUZvclByb3BlcnR5KHByb3BlcnR5KTtcbiAgICBpZiAoIXZhbHVlKSB0aHJvdyBuZXcgRXJyb3IoYG1ldGFGb3JQcm9wZXJ0eSgpIGNvdWxkIG5vdCBmaW5kIGEgY29tcHV0ZWQgcHJvcGVydHkgd2l0aCBrZXkgJyR7cHJvcGVydHl9Jy5gKTtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBzdGF0aWMgZWFjaENvbXB1dGVkUHJvcGVydHkoY2FsbGJhY2s6IChzOiBzdHJpbmcsIG86IE9iamVjdCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIGxldCBtZXRhZGF0YSA9IHRoaXNbQ0xBU1NfTUVUQV0uZ2V0UHJvcGVydHlNZXRhZGF0YSgpO1xuICAgIGlmICghbWV0YWRhdGEpIHJldHVybjtcblxuICAgIGZvciAobGV0IHByb3AgaW4gbWV0YWRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKHByb3AsIG1ldGFkYXRhW3Byb3BdKTtcbiAgICB9XG4gIH1cblxuICBfc3VwZXIgPSBST09UO1xuICBfbWV0YSA9IG51bGw7XG4gIF9ndWlkOiBudW1iZXI7XG5cbiAgaW5pdCgpIHt9XG5cbiAgY29uc3RydWN0b3IoYXR0cnM/OiBPYmplY3QgfCBudWxsKSB7XG4gICAgaWYgKGF0dHJzKSBhc3NpZ24odGhpcywgYXR0cnMpO1xuICAgICg8dHlwZW9mIEdsaW1tZXJPYmplY3Q+dGhpcy5jb25zdHJ1Y3RvcilbQ0xBU1NfTUVUQV0uaW5pdCh0aGlzLCBhdHRycyB8fCBudWxsKTtcbiAgICB0aGlzLl9zdXBlciA9IFJPT1Q7XG4gICAgaW5pdGlhbGl6ZUd1aWQodGhpcyk7XG4gICAgdGhpcy5pbml0KCk7XG4gIH1cblxuICBnZXQoa2V5OiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiB0aGlzW2tleV07XG4gIH1cblxuICBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzW2tleV0gPSB2YWx1ZTtcbiAgfVxuXG4gIHNldFByb3BlcnRpZXMoYXR0cnM6IE9iamVjdCkge1xuICAgIGFzc2lnbih0aGlzLCBhdHRycyk7XG4gIH1cblxuICBkZXN0cm95KCkge31cbn1cbiJdfQ==

@@ -22,2 +22,3 @@ const HAS_SUPER_PATTERN = /\.(_super|call\(this|apply\(this)/;

return func['__hasSuper'];
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQUFBaUIsb0JBQUcsQUFBbUMsQUFBQztBQUU5RCxBQUFNLGFBQU8sQUFBYSxBQUFHO0FBQzNCLFFBQUksQUFBZSxrQkFBSTtBQUNyQixBQUFNLGVBQUMsQUFBSSxBQUFDLEFBQ2Q7QUFBQyxBQUFDLEtBRm9CLENBRW5CLEFBQVEsQUFBRSxXQUFDLEFBQU8sUUFBQyxBQUFhLEFBQUMsaUJBQUcsQ0FBQyxBQUFDLEFBQUM7QUFFMUMsQUFBRSxBQUFDLFFBQUMsQUFBZSxBQUFDLGlCQUFDLEFBQUM7QUFDcEIsQUFBTSxlQUFDLHVCQUF1QixBQUFjO0FBQzFDLEFBQU0sbUJBQUMsQUFBaUIsa0JBQUMsQUFBSSxLQUFDLEFBQUksS0FBQyxBQUFRLEFBQUUsQUFBQyxBQUFDLEFBQ2pEO0FBQUMsQUFBQyxBQUNKO0FBQUM7QUFFRCxBQUFNLFdBQUM7QUFDTCxBQUFNLGVBQUMsQUFBSSxBQUFDLEFBQ2Q7QUFBQyxBQUFDLEFBQ0o7QUFBQyxBQUFFLEFBQUMsQUFBQyxDQWR5QixFQUF2QjtBQWdCUCxBQUFNLHFCQUFlLEdBQUcsQUFBWSxPQUFHLENBQUM7QUFDbEMsQUFBSyxLQUFDLEFBQVUsYUFBRyxBQUFLLEFBQUM7QUFFL0IsQUFBTSx5QkFBbUIsQUFBYztBQUNyQyxBQUFFLEFBQUMsUUFBQyxBQUFJLEtBQUMsQUFBWSxBQUFDLGtCQUFLLEFBQVMsQUFBQyxXQUFDLEFBQUM7QUFDckMsQUFBSSxhQUFDLEFBQVksQUFBQyxnQkFBRyxBQUFhLGNBQUMsQUFBSSxBQUFDLEFBQUMsQUFDM0M7QUFBQztBQUNELEFBQU0sV0FBQyxBQUFJLEtBQUMsQUFBWSxBQUFDLEFBQUMsQUFDNUI7QUFBQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEhBU19TVVBFUl9QQVRURVJOID0gL1xcLihfc3VwZXJ8Y2FsbFxcKHRoaXN8YXBwbHlcXCh0aGlzKS87XG5cbmV4cG9ydCBjb25zdCBjaGVja0hhc1N1cGVyID0gKGZ1bmN0aW9uICgpIHtcbiAgbGV0IHNvdXJjZUF2YWlsYWJsZSA9IChmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfSkudG9TdHJpbmcoKS5pbmRleE9mKCdyZXR1cm4gdGhpcycpID4gLTE7XG5cbiAgaWYgKHNvdXJjZUF2YWlsYWJsZSkge1xuICAgIHJldHVybiBmdW5jdGlvbiBjaGVja0hhc1N1cGVyKGZ1bmM6IEZ1bmN0aW9uKSB7XG4gICAgICByZXR1cm4gSEFTX1NVUEVSX1BBVFRFUk4udGVzdChmdW5jLnRvU3RyaW5nKCkpO1xuICAgIH07XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gY2hlY2tIYXNTdXBlcigpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcbn0oKSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBST09UKC4uLl9hcmdzOiBhbnlbXSkge31cbig8YW55PlJPT1QpLl9faGFzU3VwZXIgPSBmYWxzZTtcblxuZXhwb3J0IGZ1bmN0aW9uIGhhc1N1cGVyKGZ1bmM6IEZ1bmN0aW9uKSB7XG4gIGlmIChmdW5jWydfX2hhc1N1cGVyJ10gPT09IHVuZGVmaW5lZCkge1xuICAgIGZ1bmNbJ19faGFzU3VwZXInXSA9IGNoZWNrSGFzU3VwZXIoZnVuYyk7XG4gIH1cbiAgcmV0dXJuIGZ1bmNbJ19faGFzU3VwZXInXTtcbn0iXX0=

@@ -5,2 +5,2 @@ export { default, ClassMeta, InstanceMeta } from './lib/object';

export { aliasMethod, alias } from './lib/descriptors';
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbImRlZmF1bHQiLCJDbGFzc01ldGEiLCJJbnN0YW5jZU1ldGEiLCJjb21wdXRlZCIsIm9ic2VydmVyIiwiTWl4aW4iLCJCbHVlcHJpbnQiLCJ0b01peGluIiwiYWxpYXNNZXRob2QiLCJhbGlhcyJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsT0FBVCxFQUFrQkMsU0FBbEIsRUFBNkJDLFlBQTdCLFFBQWlELGNBQWpEO0FBQ0EsU0FBU0MsUUFBVCxFQUFtQkMsUUFBbkIsUUFBbUMsZ0JBQW5DO0FBQ0EsU0FBU0MsS0FBVCxFQUFnQkMsU0FBaEIsRUFBMkJDLE9BQTNCLFFBQTBDLGFBQTFDO0FBQ0EsU0FBU0MsV0FBVCxFQUFzQkMsS0FBdEIsUUFBbUMsbUJBQW5DIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgZGVmYXVsdCwgQ2xhc3NNZXRhLCBJbnN0YW5jZU1ldGEgfSBmcm9tICcuL2xpYi9vYmplY3QnO1xuZXhwb3J0IHsgY29tcHV0ZWQsIG9ic2VydmVyIH0gZnJvbSAnLi9saWIvY29tcHV0ZWQnO1xuZXhwb3J0IHsgTWl4aW4sIEJsdWVwcmludCwgdG9NaXhpbiB9IGZyb20gJy4vbGliL21peGluJztcbmV4cG9ydCB7IGFsaWFzTWV0aG9kLCBhbGlhcyB9IGZyb20gJy4vbGliL2Rlc2NyaXB0b3JzJzsiXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQUFBTyxTQUFFLEFBQU8sQUFBSSxBQUFPLFNBQUUsQUFBUyxXQUFFLEFBQVksQUFBd0Isb0JBQU0sQUFBYyxBQUFDO0FBQ2pHLEFBQU8sU0FBRSxBQUFRLFVBQUUsQUFBUSxBQUFFLGdCQUFNLEFBQWdCLEFBQUM7QUFDcEQsQUFBTyxTQUFFLEFBQUssT0FBRSxBQUFTLFdBQUUsQUFBTyxBQUFFLGVBQU0sQUFBYSxBQUFDO0FBQ3hELEFBQU8sU0FBRSxBQUFXLGFBQUUsQUFBSyxBQUFFLGFBQU0sQUFBbUIsQUFBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGRlZmF1bHQgYXMgZGVmYXVsdCwgQ2xhc3NNZXRhLCBJbnN0YW5jZU1ldGEsIEdsaW1tZXJPYmplY3RGYWN0b3J5IH0gZnJvbSAnLi9saWIvb2JqZWN0JztcbmV4cG9ydCB7IGNvbXB1dGVkLCBvYnNlcnZlciB9IGZyb20gJy4vbGliL2NvbXB1dGVkJztcbmV4cG9ydCB7IE1peGluLCBCbHVlcHJpbnQsIHRvTWl4aW4gfSBmcm9tICcuL2xpYi9taXhpbic7XG5leHBvcnQgeyBhbGlhc01ldGhvZCwgYWxpYXMgfSBmcm9tICcuL2xpYi9kZXNjcmlwdG9ycyc7XG4iXX0=

@@ -83,3 +83,3 @@ function _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; }

if (get && get.length > 0) {
originalGet = function () {
originalGet = function originalGet() {
return get.call(this, accessorName);

@@ -92,3 +92,3 @@ };

if (set && set.length > 1) {
originalSet = function (value) {
originalSet = function originalSet(value) {
return set.call(this, accessorName, value);

@@ -99,3 +99,3 @@ };

}
var cacheGet = function () {
var cacheGet = function cacheGet() {
if (Meta.exists(this)) {

@@ -109,3 +109,3 @@ var slot = Meta.for(this).getSlots()[accessorName];

if (originalSet) {
cacheSet = function (value) {
cacheSet = function cacheSet(value) {
var meta = Meta.for(this);

@@ -119,3 +119,3 @@ var slots = meta.getSlots();

} else {
cacheSet = function (value) {
cacheSet = function cacheSet(value) {
var meta = Meta.for(this);

@@ -186,2 +186,2 @@ var slots = meta.getSlots();

export function observer() {}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21wdXRlZC5qcyJdLCJuYW1lcyI6WyJDb21wdXRlZFJlZmVyZW5jZUJsdWVwcmludCIsIk1ldGEiLCJFTVBUWV9DQUNIRSIsIkJsdWVwcmludCIsIkNvbXB1dGVkQmx1ZXByaW50IiwiYWNjZXNzb3IiLCJkZXBzIiwibWV0YWRhdGEiLCJkZXNjcmlwdG9yIiwiX3RhcmdldCIsImtleSIsImNsYXNzTWV0YSIsImFkZFJlZmVyZW5jZVR5cGVGb3IiLCJhZGRQcm9wZXJ0eU1ldGFkYXRhIiwiYWRkU2xvdEZvciIsIkNvbXB1dGVkIiwicHJvcGVydHkiLCJwYXRocyIsIm1hcCIsImQiLCJzcGxpdCIsIm1ldGEiLCJvYmplY3QiLCJ2b2xhdGlsZSIsImRlZmluZSIsInByb3RvdHlwZSIsImhvbWUiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsIndyYXBBY2Nlc3NvciIsImFjY2Vzc29yTmFtZSIsIl9kZXNjIiwic3VwZXJEZXNjIiwiZ2V0UHJvcGVydHlEZXNjcmlwdG9yIiwib3JpZ2luYWxHZXQiLCJvcmlnaW5hbFNldCIsImRlc2MiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwiZ2V0IiwibGVuZ3RoIiwiY2FsbCIsInNldCIsInZhbHVlIiwiY2FjaGVHZXQiLCJleGlzdHMiLCJzbG90IiwiZm9yIiwiZ2V0U2xvdHMiLCJjYWNoZVNldCIsInNsb3RzIiwicmV0IiwidW5kZWZpbmVkIiwibGFzdFN1cGVyIiwiX3N1cGVyIiwidmFsIiwic3ViamVjdCIsIm5hbWUiLCJwZCIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInByb3RvIiwiZ2V0UHJvdG90eXBlT2YiLCJjb21wdXRlZCIsImFyZ3MiLCJsYXN0IiwicG9wIiwiVHlwZUVycm9yIiwib2JzZXJ2ZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsU0FBU0EsMEJBQVQsRUFBcUNDLElBQXJDLFFBQWlELDJCQUFqRDtBQUNBLFNBQVNDLFdBQVQsUUFBNEIsVUFBNUI7QUFDQSxTQUFT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LE9BQU9DLElBQVAsS0FBZ0IsVUFBcEIsRUFBZ0M7QUFBQTs7QUFDNUIsZUFBTyxZQUFJNUQsaUJBQUosQ0FBc0I7QUFDekJtQyxpQkFBS3lCO0FBRG9CLFNBQXRCLEdBRUpoRCxRQUZJLGFBRVFWLElBRlIsQ0FBUDtBQUdILEtBSkQsTUFJTyxJQUFJLE9BQU8wRCxJQUFQLEtBQWdCLFFBQXBCLEVBQThCO0FBQUE7O0FBQ2pDLGVBQU8sYUFBSTVELGlCQUFKLENBQXNCNEQsSUFBdEIsR0FBNEJoRCxRQUE1QixjQUF3Q1YsSUFBeEMsQ0FBUDtBQUNILEtBRk0sTUFFQTtBQUNILGNBQU0sSUFBSTRELFNBQUosQ0FBYywyREFBZCxDQUFOO0FBQ0g7QUFDSjtBQUNELE9BQU8sU0FBU0MsUUFBVCxHQUE0QixDQUFFIiwiZmlsZSI6ImxpYi9jb21wdXRlZC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXB1dGVkUmVmZXJlbmNlQmx1ZXByaW50LCBNZXRhIH0gZnJvbSAnQGdsaW1tZXIvb2JqZWN0LXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBFTVBUWV9DQUNIRSB9IGZyb20gJy4vb2JqZWN0JztcbmltcG9ydCB7IEJsdWVwcmludCB9IGZyb20gJy4vbWl4aW4nO1xuZXhwb3J0IGNsYXNzIENvbXB1dGVkQmx1ZXByaW50IGV4dGVuZHMgQmx1ZXByaW50IHtcbiAgICBjb25zdHJ1Y3RvcihhY2Nlc3NvciwgZGVwcyA9IFtdKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubWV0YWRhdGEgPSB7fTtcbiAgICAgICAgdGhpcy5hY2Nlc3NvciA9IGFjY2Vzc29yO1xuICAgICAgICB0aGlzLmRlcHMgPSBkZXBzO1xuICAgIH1cbiAgICBkZXNjcmlwdG9yKF90YXJnZXQsIGtleSwgY2xhc3NNZXRhKSB7XG4gICAgICAgIGNsYXNzTWV0YS5hZGRSZWZlcmVuY2VUeXBlRm9yKGtleSwgQ29tcHV0ZWRSZWZlcmVuY2VCbHVlcHJpbnQoa2V5LCB0aGlzLmRlcHMpKTtcbiAgICAgICAgY2xhc3NNZXRhLmFkZFByb3BlcnR5TWV0YWRhdGEoa2V5LCB0aGlzLm1ldGFkYXRhKTtcbiAgICAgICAgY2xhc3NNZXRhLmFkZFNsb3RGb3Ioa2V5KTtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21wdXRlZCh0aGlzLmFjY2Vzc29yKTtcbiAgICB9XG4gICAgcHJvcGVydHkoLi4ucGF0aHMpIHtcbiAgICAgICAgdGhpcy5kZXBzID0gcGF0aHMubWFwKGQgPT4gZC5zcGxpdCgnLicpKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIG1ldGEob2JqZWN0KSB7XG4gICAgICAgIHRoaXMubWV0YWRhdGEgPSBvYmplY3Q7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICB2b2xhdGlsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxufVxuY2xhc3MgQ29tcHV0ZWQge1xuICAgIGNvbnN0cnVjdG9yKGFjY2Vzc29yKSB7XG4gICAgICAgIHRoaXNbXCI1ZDkwZjg0Zi05MDhlLTRhNDItOTc0OS0zZDBmNTIzYzI2MmNcIl0gPSB0cnVlO1xuICAgICAgICB0aGlzLmFjY2Vzc29yID0gYWNjZXNzb3I7XG4gICAgfVxuICAgIGRlZmluZShwcm90b3R5cGUsIGtleSwgaG9tZSkge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvdG90eXBlLCBrZXksIHdyYXBBY2Nlc3Nvcihob21lLCBrZXksIHRoaXMuYWNjZXNzb3IpKTtcbiAgICB9XG59XG5mdW5jdGlvbiB3cmFwQWNjZXNzb3IoaG9tZSwgYWNjZXNzb3JOYW1lLCBfZGVzYykge1xuICAgIGxldCBzdXBlckRlc2MgPSBnZXRQcm9wZXJ0eURlc2NyaXB0b3IoaG9tZSwgYWNjZXNzb3JOYW1lKTtcbiAgICBsZXQgb3JpZ2luYWxHZXQ7XG4gICAgbGV0IG9yaWdpbmFsU2V0O1xuICAgIGxldCBkZXNjID0ge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9O1xuICAgIGxldCBnZXQgPSBfZGVzYy5nZXQ7XG4gICAgaWYgKGdldCAmJiBnZXQubGVuZ3RoID4gMCkge1xuICAgICAgICBvcmlnaW5hbEdldCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBnZXQuY2FsbCh0aGlzLCBhY2Nlc3Nvck5hbWUpO1xuICAgICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG9yaWdpbmFsR2V0ID0gX2Rlc2MuZ2V0O1xuICAgIH1cbiAgICBsZXQgc2V0ID0gX2Rlc2Muc2V0O1xuICAgIGlmIChzZXQgJiYgc2V0Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgb3JpZ2luYWxTZXQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiBzZXQuY2FsbCh0aGlzLCBhY2Nlc3Nvck5hbWUsIHZhbHVlKTtcbiAgICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBvcmlnaW5hbFNldCA9IF9kZXNjLnNldDtcbiAgICB9XG4gICAgbGV0IGNhY2hlR2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoTWV0YS5leGlzdHModGhpcykpIHtcbiAgICAgICAgICAgIGxldCBzbG90ID0gTWV0YS5mb3IodGhpcykuZ2V0U2xvdHMoKVthY2Nlc3Nvck5hbWVdO1xuICAgICAgICAgICAgaWYgKHNsb3QgIT09IEVNUFRZX0NBQ0hFKSByZXR1cm4gc2xvdDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3JpZ2luYWxHZXQuY2FsbCh0aGlzKTtcbiAgICB9O1xuICAgIGxldCBjYWNoZVNldDtcbiAgICBpZiAob3JpZ2luYWxTZXQpIHtcbiAgICAgICAgY2FjaGVTZXQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGxldCBtZXRhID0gTWV0YS5mb3IodGhpcyk7XG4gICAgICAgICAgICBsZXQgc2xvdHMgPSBtZXRhLmdldFNsb3RzKCk7XG4gICAgICAgICAgICBsZXQgcmV0ID0gb3JpZ2luYWxTZXQuY2FsbCh0aGlzLCB2YWx1ZSk7XG4gICAgICAgICAgICBpZiAocmV0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBzbG90c1thY2Nlc3Nvck5hbWVdID0gcmV0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNhY2hlU2V0ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBsZXQgbWV0YSA9IE1ldGEuZm9yKHRoaXMpO1xuICAgICAgICAgICAgbGV0IHNsb3RzID0gbWV0YS5nZXRTbG90cygpO1xuICAgICAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHNsb3RzW2FjY2Vzc29yTmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgaWYgKCFzdXBlckRlc2MgfHwgJ3ZhbHVlJyBpbiBzdXBlckRlc2MpIHtcbiAgICAgICAgZGVzYy5nZXQgPSBjYWNoZUdldDtcbiAgICAgICAgZGVzYy5zZXQgPSBjYWNoZVNldDtcbiAgICAgICAgcmV0dXJuIGRlc2M7XG4gICAgfVxuICAgIGRlc2MuZ2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBsZXQgbGFzdFN1cGVyID0gdGhpcy5fc3VwZXI7XG4gICAgICAgIHRoaXMuX3N1cGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHN1cGVyRGVzYy5nZXQuY2FsbCh0aGlzKTtcbiAgICAgICAgfTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBjYWNoZUdldC5jYWxsKHRoaXMpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy5fc3VwZXIgPSBsYXN0U3VwZXI7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGRlc2Muc2V0ID0gZnVuY3Rpb24gKHZhbCkge1xuICAgICAgICBsZXQgbGFzdFN1cGVyID0gdGhpcy5fc3VwZXI7XG4gICAgICAgIHRoaXMuX3N1cGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHN1cGVyRGVzYy5zZXQuY2FsbCh0aGlzLCB2YWwpO1xuICAgICAgICB9O1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIGNhY2hlU2V0LmNhbGwodGhpcywgdmFsKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMuX3N1cGVyID0gbGFzdFN1cGVyO1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gZGVzYztcbn1cbmZ1bmN0aW9uIGdldFByb3BlcnR5RGVzY3JpcHRvcihzdWJqZWN0LCBuYW1lKSB7XG4gICAgbGV0IHBkID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzdWJqZWN0LCBuYW1lKTtcbiAgICBsZXQgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yoc3ViamVjdCk7XG4gICAgd2hpbGUgKHR5cGVvZiBwZCA9PT0gJ3VuZGVmaW5lZCcgJiYgcHJvdG8gIT09IG51bGwpIHtcbiAgICAgICAgcGQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCBuYW1lKTtcbiAgICAgICAgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJvdG8pO1xuICAgIH1cbiAgICByZXR1cm4gcGQ7XG59XG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZWQoLi4uYXJncykge1xuICAgIGxldCBsYXN0ID0gYXJncy5wb3AoKTtcbiAgICBsZXQgZGVwcyA9IGFyZ3M7XG4gICAgaWYgKHR5cGVvZiBsYXN0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiBuZXcgQ29tcHV0ZWRCbHVlcHJpbnQoe1xuICAgICAgICAgICAgZ2V0OiBsYXN0XG4gICAgICAgIH0pLnByb3BlcnR5KC4uLmRlcHMpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGxhc3QgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIHJldHVybiBuZXcgQ29tcHV0ZWRCbHVlcHJpbnQobGFzdCkucHJvcGVydHkoLi4uZGVwcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcImNvbXB1dGVkIGV4cGVjdHMgYSBmdW5jdGlvbiBvciBhbiBvYmplY3QgYXMgbGFzdCBhcmd1bWVudFwiKTtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gb2JzZXJ2ZXIoLi4uX2FyZ3MpIHt9Il19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL2NvbXB1dGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsQUFBTyxTQUFFLEFBQTBCLDRCQUFFLEFBQUksQUFBRSxZQUFNLEFBQTJCLEFBQUM7QUFDN0UsQUFBTyxTQUFFLEFBQVcsQUFBYSxtQkFBTSxBQUFVLEFBQUM7QUFDbEQsQUFBTyxTQUFjLEFBQVMsQUFBRSxpQkFBTSxBQUFTLEFBQUM7QUF5QmhELEFBQU0sV0FBeUI7OzsrQkFLakIsQUFBNEI7QUFDdEMsQUFBSyxBQUFFLEFBQUMsWUFEZ0MsMkVBQW1CLEFBQUU7Ozs7cURBRnZEOztjQUFRLFdBQVcsQUFBRSxBQUFDLEFBSTVCLEFBQUk7Y0FBQyxBQUFRLFdBQUcsQUFBUSxBQUFDLEFBQ3pCLEFBQUk7Y0FBQyxBQUFJLE9BQUcsQUFBSSxBQUFDLEFBQ25CLEFBQUM7O0FBRUQsQUFBVTs7aUVBQUMsQUFBZSxTQUFFLEFBQVcsS0FBRSxBQUFvQixXQUMzRCxBQUFTO2tCQUFDLEFBQW1CLG9CQUFDLEFBQUcsS0FBRSxBQUEwQiwyQkFBQyxBQUFHLEtBQUUsQUFBSSxLQUFDLEFBQUksQUFBQyxBQUFDLEFBQUMsQUFDL0UsQUFBUztrQkFBQyxBQUFtQixvQkFBQyxBQUFHLEtBQUUsQUFBSSxLQUFDLEFBQVEsQUFBQyxBQUFDLEFBQ2xELEFBQVM7a0JBQUMsQUFBVSxXQUFDLEFBQUcsQUFBQyxBQUFDLEFBQzFCLEFBQU07ZUFBQyxJQUFJLEFBQVEsU0FBQyxBQUFJLEtBQUMsQUFBUSxBQUFDLEFBQUMsQUFDckMsQUFBQztBQUVELEFBQVE7O2dDQUFDO0FBQ1AsQUFBSTtBQURNLEFBQWU7OzthQUNwQixBQUFJLGFBQVMsQUFBRztBQUFDLEFBQUMsbUJBQUksQUFBQyxFQUFDLEFBQUssTUFBQyxBQUFHLEFBQUMsQUFBQyxBQUFDLEFBQ3pDLEFBQU07U0FETSxBQUFLO2VBQ1YsQUFBSSxBQUFDLEFBQ2QsQUFBQztBQUVELEFBQUk7O3FEQUFDLEFBQWMsUUFDakIsQUFBSTthQUFDLEFBQVEsV0FBRyxBQUFNLEFBQUMsQUFDdkIsQUFBTTtlQUFDLEFBQUksQUFBQyxBQUNkLEFBQUM7QUFFRCxBQUFROzsrREFDTixBQUFNO2VBQUMsQUFBSSxBQUFDLEFBQ2QsQUFBQyxBQUNGO0FBRUQ7OztFQWpDdUMsQUFBUyxBQUs5Qzs7SUFtQ0E7c0JBQVksQUFBNEI7QUFGeEM7O2FBQXNDLDBDQUFHLEFBQUksQUFBQyxBQUc1QyxBQUFJO2FBQUMsQUFBUSxXQUFHLEFBQVEsQUFBQyxBQUMzQixBQUFDO0FBRUQsQUFBTTs7Z0RBQUMsQUFBaUIsV0FBRSxBQUFXLEtBQUUsQUFBWSxNQUNqRCxBQUFNO2VBQUMsQUFBYyxlQUFDLEFBQVMsV0FBRSxBQUFHLEtBQUUsQUFBWSxhQUFDLEFBQUksTUFBRSxBQUFHLEtBQUUsQUFBSSxLQUFDLEFBQVEsQUFBQyxBQUFDLEFBQUMsQUFDaEYsQUFBQyxBQUNGOzs7Ozs7QUFFRCxzQkFBc0IsQUFBWSxNQUFFLEFBQW9CLGNBQUUsQUFBeUIsT0FDakY7UUFBSSxBQUFTLFlBQUcsQUFBcUIsc0JBQUMsQUFBSSxNQUFFLEFBQVksQUFBQyxBQUFDLEFBRTFEO1FBQUksQUFBZ0MsQUFBQyxBQUNyQztRQUFJLEFBQWdDLEFBQUMsQUFFckM7UUFBSSxBQUFJO29CQUNNLEFBQUksQUFDaEIsQUFBWTtzQkFGaUIsQUFFZixBQUFJLEFBQ25CLEFBQUMsQUFFRjtBQUpFLEFBQVU7UUFJUixBQUFHLE1BQUcsQUFBSyxNQUFDLEFBQUcsQUFBQyxBQUVwQixBQUFFLEFBQUM7UUFBQyxBQUFHLE9BQUksQUFBRyxJQUFDLEFBQU0sU0FBRyxBQUFDLEFBQUMsR0FBQyxBQUFDLEFBQzFCLEFBQVc7c0JBQUcsdUJBQXNCLEFBQU07bUJBQUUsQUFBVyxJQUFDLEFBQUksS0FBQyxBQUFJLE1BQUUsQUFBWSxBQUFDLEFBQUMsQUFBQyxBQUFDLEFBQUMsQUFDdEY7QUFBQyxBQUFDLEFBQUk7V0FBQyxBQUFDLEFBQ04sQUFBVztzQkFBd0IsQUFBSyxNQUFDLEFBQUcsQUFBQyxBQUMvQyxBQUFDO0FBRUQ7UUFBSSxBQUFHLE1BQUcsQUFBSyxNQUFDLEFBQUcsQUFBQyxBQUVwQixBQUFFLEFBQUM7UUFBQyxBQUFHLE9BQUksQUFBRyxJQUFDLEFBQU0sU0FBRyxBQUFDLEFBQUMsR0FBQyxBQUFDLEFBQzFCLEFBQVc7c0JBQUcscUJBQW9CLEFBQVUsT0FDMUMsQUFBTTttQkFBRSxBQUFXLElBQUMsQUFBSSxLQUFDLEFBQUksTUFBRSxBQUFZLGNBQUUsQUFBSyxBQUFDLEFBQUMsQUFDdEQsQUFBQyxBQUFDLEFBQ0o7QUFBQyxBQUFDLEFBQUk7V0FBQyxBQUFDLEFBQ04sQUFBVztzQkFBd0IsQUFBSyxNQUFDLEFBQUcsQUFBQyxBQUMvQyxBQUFDO0FBRUQ7UUFBSSxBQUFRLFdBQUcsb0JBQ2IsQUFBRSxBQUFDO1lBQUMsQUFBSSxLQUFDLEFBQU0sT0FBQyxBQUFJLEFBQUMsQUFBQyxPQUFDLEFBQUMsQUFDdEI7Z0JBQUksQUFBSSxPQUFHLEFBQUksS0FBQyxBQUFHLElBQUMsQUFBSSxBQUFDLE1BQUMsQUFBUSxBQUFFLFdBQUMsQUFBWSxBQUFDLEFBQUMsQUFDbkQsQUFBRSxBQUFDO2dCQUFDLEFBQUksU0FBSyxBQUFXLEFBQUMsYUFBQyxBQUFNLE9BQUMsQUFBSSxBQUFDLEFBQ3hDLEFBQUM7QUFFRCxBQUFNO2VBQUMsQUFBVyxZQUFDLEFBQUksS0FBQyxBQUFJLEFBQUMsQUFBQyxBQUNoQyxBQUFDLEFBQUM7QUFFRjtRQUFJLEFBQThCLEFBQUMsQUFFbkMsQUFBRSxBQUFDO1FBQUMsQUFBVyxBQUFDLGFBQUMsQUFBQyxBQUNoQixBQUFRO21CQUFHLGtCQUFvQixBQUFVLE9BQ3ZDO2dCQUFJLEFBQUksT0FBRyxBQUFJLEtBQUMsQUFBRyxJQUFDLEFBQUksQUFBQyxBQUFDLEFBQzFCO2dCQUFJLEFBQUssUUFBRyxBQUFJLEtBQUMsQUFBUSxBQUFFLEFBQUMsQUFFNUI7Z0JBQUksQUFBRyxNQUFHLEFBQVcsWUFBQyxBQUFJLEtBQUMsQUFBSSxNQUFFLEFBQUssQUFBQyxBQUFDLEFBRXhDLEFBQUUsQUFBQztnQkFBQyxBQUFHLFFBQUssQUFBUyxBQUFDLFdBQUMsQUFBQyxBQUN0QixBQUFLO3NCQUFDLEFBQVksQUFBQyxnQkFBRyxBQUFHLEFBQUMsQUFDNUIsQUFBQyxBQUNIO0FBQUMsQUFBQyxBQUNKO0FBQUMsQUFBQyxBQUFJO1dBQUMsQUFBQyxBQUNOLEFBQVE7bUJBQUcsa0JBQW9CLEFBQVUsT0FDdkM7Z0JBQUksQUFBSSxPQUFHLEFBQUksS0FBQyxBQUFHLElBQUMsQUFBSSxBQUFDLEFBQUMsQUFDMUI7Z0JBQUksQUFBSyxRQUFHLEFBQUksS0FBQyxBQUFRLEFBQUUsQUFBQyxBQUM1QixBQUFFLEFBQUM7Z0JBQUMsQUFBSyxVQUFLLEFBQVMsQUFBQyxXQUFDLEFBQUssTUFBQyxBQUFZLEFBQUMsZ0JBQUcsQUFBSyxBQUFDLEFBQ3ZELEFBQUMsQUFBQyxBQUNKO0FBQUM7QUFFRCxBQUFFLEFBQUM7UUFBQyxDQUFDLEFBQVMsYUFBSSxBQUFPLFdBQUksQUFBUyxBQUFDLFdBQUMsQUFBQyxBQUN2QyxBQUFJO2FBQUMsQUFBRyxNQUFHLEFBQVEsQUFBQyxBQUNwQixBQUFJO2FBQUMsQUFBRyxNQUFHLEFBQVEsQUFBQyxBQUNwQixBQUFNO2VBQUMsQUFBSSxBQUFDLEFBQ2QsQUFBQztBQUVELEFBQUk7U0FBQyxBQUFHLE1BQUcsWUFDVDtZQUFJLEFBQVMsWUFBRyxBQUFJLEtBQUMsQUFBTSxBQUFDLEFBQzVCLEFBQUk7YUFBQyxBQUFNLFNBQUcsWUFDWixBQUFNO21CQUFFLEFBQVMsVUFBQyxBQUFXLElBQUMsQUFBSSxLQUFDLEFBQUksQUFBQyxBQUFDLEFBQzNDLEFBQUMsQUFBQztBQUVGO1lBQUksQUFBQyxBQUNILEFBQU07bUJBQUMsQUFBUSxTQUFDLEFBQUksS0FBQyxBQUFJLEFBQUMsQUFBQyxBQUM3QixBQUFDO2tCQUFTLEFBQUMsQUFDVCxBQUFJO2lCQUFDLEFBQU0sU0FBRyxBQUFTLEFBQUMsQUFDMUIsQUFBQyxBQUNIO0FBQUMsQUFBQztBQUVGLEFBQUk7U0FBQyxBQUFHLE1BQUcsVUFBb0IsQUFBUSxLQUNyQztZQUFJLEFBQVMsWUFBRyxBQUFJLEtBQUMsQUFBTSxBQUFDLEFBQzVCLEFBQUk7YUFBQyxBQUFNLFNBQUcsWUFDWixBQUFNO21CQUFFLEFBQWlCLFVBQUMsQUFBRyxJQUFDLEFBQUksS0FBQyxBQUFJLE1BQUUsQUFBRyxBQUFDLEFBQUMsQUFDaEQsQUFBQyxBQUFDO0FBRUY7WUFBSSxBQUFDLEFBQ0gsQUFBTTttQkFBQyxBQUFRLFNBQUMsQUFBSSxLQUFDLEFBQUksTUFBRSxBQUFHLEFBQUMsQUFBQyxBQUNsQyxBQUFDO2tCQUFTLEFBQUMsQUFDVCxBQUFJO2lCQUFDLEFBQU0sU0FBRyxBQUFTLEFBQUMsQUFDMUIsQUFBQyxBQUNIO0FBQUMsQUFBQztBQUVGLEFBQU07V0FBQyxBQUFJLEFBQUMsQUFDZCxBQUFDOztBQUVELCtCQUErQixBQUFZLFNBQUUsQUFBWSxNQUN2RDtRQUFJLEFBQUUsS0FBRyxBQUFNLE9BQUMsQUFBd0IseUJBQUMsQUFBTyxTQUFFLEFBQUksQUFBQyxBQUFDLEFBQ3hEO1FBQUksQUFBSyxRQUFHLEFBQU0sT0FBQyxBQUFjLGVBQUMsQUFBTyxBQUFDLEFBQUMsQUFDM0M7V0FBTyxPQUFPLEFBQUUsT0FBSyxBQUFXLGVBQUksQUFBSyxVQUFLLEFBQUksTUFBRSxBQUFDLEFBQ25ELEFBQUU7YUFBRyxBQUFNLE9BQUMsQUFBd0IseUJBQUMsQUFBSyxPQUFFLEFBQUksQUFBQyxBQUFDLEFBQ2xELEFBQUs7Z0JBQUcsQUFBTSxPQUFDLEFBQWMsZUFBQyxBQUFLLEFBQUMsQUFBQyxBQUN2QyxBQUFDO0FBQ0QsQUFBTTtXQUFDLEFBQUUsQUFBQyxBQUNaLEFBQUM7O0FBTUQsQUFBTSxnQkFBbUI7QUFDdkI7QUFEMEIsQUFBVzs7O1FBQ2pDLEFBQUksT0FBcUIsQUFBSSxLQUFDLEFBQUcsQUFBRSxBQUFDLEFBQ3hDO1FBQUksQUFBSSxPQUFHLEFBQUksQUFBQyxBQUVoQixBQUFFLEFBQUM7UUFBQyxPQUFPLEFBQUksU0FBSyxBQUFVLEFBQUM7QUFBQyxBQUFDLEFBQy9CLEFBQU07OzJCQUFLLEFBQWlCO2lCQUFyQixBQUFzQixBQUMyQixBQUFJLEFBQzNELEFBQUM7QUFEQSxBQUFHLFlBQ0YsQUFBUSxBQUFDLHFCQUFHLEFBQUksQUFBQyxBQUFDLEFBQ3ZCLEFBQUMsQUFBQyxBQUFJO2VBQUssT0FBTyxBQUFJLFNBQUssQUFBUSxBQUFDO0FBQUMsQUFBQyxBQUNwQyxBQUFNOztlQUFDLGFBQUksQUFBaUIsa0JBQXFCLEFBQUksQUFBQyxPQUFDLEFBQVEsQUFBQyxzQkFBRyxBQUFJLEFBQUMsQUFBQyxBQUMzRSxBQUFDLEFBQUMsQUFBSTtBQUZDLEFBQUUsQUFBQyxXQUVILEFBQUMsQUFDTjtjQUFNLElBQUksQUFBUyxVQUFDLEFBQTJELEFBQUMsQUFBQyxBQUNuRixBQUFDLEFBQ0g7QUFBQzs7QUFFRCxBQUFNLGdCQUFtQixBQUFHLEFBQVksV0FFeEMsQUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXB1dGVkUmVmZXJlbmNlQmx1ZXByaW50LCBNZXRhIH0gZnJvbSAnQGdsaW1tZXIvb2JqZWN0LXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBFTVBUWV9DQUNIRSwgQ2xhc3NNZXRhIH0gZnJvbSAnLi9vYmplY3QnO1xuaW1wb3J0IHsgRGVzY3JpcHRvciwgQmx1ZXByaW50IH0gZnJvbSAnLi9taXhpbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcHV0ZWRHZXRDYWxsYmFjayB7XG4gICgpOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGVnYWN5Q29tcHV0ZWRHZXRDYWxsYmFjayB7XG4gIChrZXk6IHN0cmluZyk6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wdXRlZFNldENhbGxiYWNrIHtcbiAgKHZhbDogYW55KTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExlZ2FjeUNvbXB1dGVkU2V0Q2FsbGJhY2sge1xuICAoa2V5OiBzdHJpbmcsIHZhbDogYW55KTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXB1dGVkRGVzY3JpcHRvciB7XG4gIGdldD86IENvbXB1dGVkR2V0Q2FsbGJhY2sgfCBMZWdhY3lDb21wdXRlZEdldENhbGxiYWNrO1xuICBzZXQ/OiBDb21wdXRlZFNldENhbGxiYWNrIHwgTGVnYWN5Q29tcHV0ZWRTZXRDYWxsYmFjaztcbn1cblxudHlwZSBDb21wdXRlZEFyZ3VtZW50ID0gQ29tcHV0ZWRHZXRDYWxsYmFjayB8IENvbXB1dGVkRGVzY3JpcHRvcjtcblxuZXhwb3J0IGNsYXNzIENvbXB1dGVkQmx1ZXByaW50IGV4dGVuZHMgQmx1ZXByaW50IHtcbiAgcHJpdmF0ZSBhY2Nlc3NvcjogQ29tcHV0ZWREZXNjcmlwdG9yO1xuICBwcml2YXRlIGRlcHM6IHN0cmluZ1tdW107XG4gIHByaXZhdGUgbWV0YWRhdGE6IE9iamVjdCA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKGFjY2Vzc29yOiBDb21wdXRlZERlc2NyaXB0b3IsIGRlcHM6IHN0cmluZ1tdW10gPSBbXSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hY2Nlc3NvciA9IGFjY2Vzc29yO1xuICAgIHRoaXMuZGVwcyA9IGRlcHM7XG4gIH1cblxuICBkZXNjcmlwdG9yKF90YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIGNsYXNzTWV0YTogQ2xhc3NNZXRhKTogRGVzY3JpcHRvciB7XG4gICAgY2xhc3NNZXRhLmFkZFJlZmVyZW5jZVR5cGVGb3Ioa2V5LCBDb21wdXRlZFJlZmVyZW5jZUJsdWVwcmludChrZXksIHRoaXMuZGVwcykpO1xuICAgIGNsYXNzTWV0YS5hZGRQcm9wZXJ0eU1ldGFkYXRhKGtleSwgdGhpcy5tZXRhZGF0YSk7XG4gICAgY2xhc3NNZXRhLmFkZFNsb3RGb3Ioa2V5KTtcbiAgICByZXR1cm4gbmV3IENvbXB1dGVkKHRoaXMuYWNjZXNzb3IpO1xuICB9XG5cbiAgcHJvcGVydHkoLi4ucGF0aHM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5kZXBzID0gcGF0aHMubWFwKGQgPT4gZC5zcGxpdCgnLicpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIG1ldGEob2JqZWN0OiBPYmplY3QpIHtcbiAgICB0aGlzLm1ldGFkYXRhID0gb2JqZWN0O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdm9sYXRpbGUoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn1cblxuY2xhc3MgQ29tcHV0ZWQgaW1wbGVtZW50cyBEZXNjcmlwdG9yIHtcbiAgZW51bWVyYWJsZTogYm9vbGVhbjtcbiAgY29uZmlndXJhYmxlOiBib29sZWFuO1xuXG4gIHByaXZhdGUgYWNjZXNzb3I6IENvbXB1dGVkRGVzY3JpcHRvcjtcbiAgXCI1ZDkwZjg0Zi05MDhlLTRhNDItOTc0OS0zZDBmNTIzYzI2MmNcIiA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoYWNjZXNzb3I6IENvbXB1dGVkRGVzY3JpcHRvcikge1xuICAgIHRoaXMuYWNjZXNzb3IgPSBhY2Nlc3NvcjtcbiAgfVxuXG4gIGRlZmluZShwcm90b3R5cGU6IE9iamVjdCwga2V5OiBzdHJpbmcsIGhvbWU6IE9iamVjdCkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm90b3R5cGUsIGtleSwgd3JhcEFjY2Vzc29yKGhvbWUsIGtleSwgdGhpcy5hY2Nlc3NvcikpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHdyYXBBY2Nlc3Nvcihob21lOiBPYmplY3QsIGFjY2Vzc29yTmFtZTogc3RyaW5nLCBfZGVzYzogQ29tcHV0ZWREZXNjcmlwdG9yKTogUHJvcGVydHlEZXNjcmlwdG9yIHtcbiAgbGV0IHN1cGVyRGVzYyA9IGdldFByb3BlcnR5RGVzY3JpcHRvcihob21lLCBhY2Nlc3Nvck5hbWUpO1xuXG4gIGxldCBvcmlnaW5hbEdldDogQ29tcHV0ZWRHZXRDYWxsYmFjaztcbiAgbGV0IG9yaWdpbmFsU2V0OiBDb21wdXRlZFNldENhbGxiYWNrO1xuXG4gIGxldCBkZXNjOiBQcm9wZXJ0eURlc2NyaXB0b3IgPSB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gIH07XG5cbiAgbGV0IGdldCA9IF9kZXNjLmdldDtcblxuICBpZiAoZ2V0ICYmIGdldC5sZW5ndGggPiAwKSB7XG4gICAgb3JpZ2luYWxHZXQgPSBmdW5jdGlvbih0aGlzOiBhbnkpIHsgcmV0dXJuIChnZXQgYXMgYW55KS5jYWxsKHRoaXMsIGFjY2Vzc29yTmFtZSk7IH07XG4gIH0gZWxzZSB7XG4gICAgb3JpZ2luYWxHZXQgPSA8Q29tcHV0ZWRHZXRDYWxsYmFjaz5fZGVzYy5nZXQ7XG4gIH1cblxuICBsZXQgc2V0ID0gX2Rlc2Muc2V0O1xuXG4gIGlmIChzZXQgJiYgc2V0Lmxlbmd0aCA+IDEpIHtcbiAgICBvcmlnaW5hbFNldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgdmFsdWU6IGFueSkge1xuICAgICAgcmV0dXJuIChzZXQgYXMgYW55KS5jYWxsKHRoaXMsIGFjY2Vzc29yTmFtZSwgdmFsdWUpO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgb3JpZ2luYWxTZXQgPSA8Q29tcHV0ZWRHZXRDYWxsYmFjaz5fZGVzYy5zZXQ7XG4gIH1cblxuICBsZXQgY2FjaGVHZXQgPSBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICBpZiAoTWV0YS5leGlzdHModGhpcykpIHtcbiAgICAgIGxldCBzbG90ID0gTWV0YS5mb3IodGhpcykuZ2V0U2xvdHMoKVthY2Nlc3Nvck5hbWVdO1xuICAgICAgaWYgKHNsb3QgIT09IEVNUFRZX0NBQ0hFKSByZXR1cm4gc2xvdDtcbiAgICB9XG5cbiAgICByZXR1cm4gb3JpZ2luYWxHZXQuY2FsbCh0aGlzKTtcbiAgfTtcblxuICBsZXQgY2FjaGVTZXQ6ICh2YWx1ZTogYW55KSA9PiB2b2lkO1xuXG4gIGlmIChvcmlnaW5hbFNldCkge1xuICAgIGNhY2hlU2V0ID0gZnVuY3Rpb24odGhpczogYW55LCB2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICBsZXQgbWV0YSA9IE1ldGEuZm9yKHRoaXMpO1xuICAgICAgbGV0IHNsb3RzID0gbWV0YS5nZXRTbG90cygpO1xuXG4gICAgICBsZXQgcmV0ID0gb3JpZ2luYWxTZXQuY2FsbCh0aGlzLCB2YWx1ZSk7XG5cbiAgICAgIGlmIChyZXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzbG90c1thY2Nlc3Nvck5hbWVdID0gcmV0O1xuICAgICAgfVxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgY2FjaGVTZXQgPSBmdW5jdGlvbih0aGlzOiBhbnksIHZhbHVlOiBhbnkpIHtcbiAgICAgIGxldCBtZXRhID0gTWV0YS5mb3IodGhpcyk7XG4gICAgICBsZXQgc2xvdHMgPSBtZXRhLmdldFNsb3RzKCk7XG4gICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkgc2xvdHNbYWNjZXNzb3JOYW1lXSA9IHZhbHVlO1xuICAgIH07XG4gIH1cblxuICBpZiAoIXN1cGVyRGVzYyB8fCAndmFsdWUnIGluIHN1cGVyRGVzYykge1xuICAgIGRlc2MuZ2V0ID0gY2FjaGVHZXQ7XG4gICAgZGVzYy5zZXQgPSBjYWNoZVNldDtcbiAgICByZXR1cm4gZGVzYztcbiAgfVxuXG4gIGRlc2MuZ2V0ID0gZnVuY3Rpb24odGhpczogYW55KSB7XG4gICAgbGV0IGxhc3RTdXBlciA9IHRoaXMuX3N1cGVyO1xuICAgIHRoaXMuX3N1cGVyID0gZnVuY3Rpb24odGhpczogYW55KSB7XG4gICAgICByZXR1cm4gKHN1cGVyRGVzYy5nZXQgYXMgYW55KS5jYWxsKHRoaXMpO1xuICAgIH07XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGNhY2hlR2V0LmNhbGwodGhpcyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX3N1cGVyID0gbGFzdFN1cGVyO1xuICAgIH1cbiAgfTtcblxuICBkZXNjLnNldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgdmFsOiBhbnkpIHtcbiAgICBsZXQgbGFzdFN1cGVyID0gdGhpcy5fc3VwZXI7XG4gICAgdGhpcy5fc3VwZXIgPSBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICAgIHJldHVybiAoc3VwZXJEZXNjIGFzIGFueSkuc2V0LmNhbGwodGhpcywgdmFsKTtcbiAgICB9O1xuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBjYWNoZVNldC5jYWxsKHRoaXMsIHZhbCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX3N1cGVyID0gbGFzdFN1cGVyO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gZGVzYztcbn1cblxuZnVuY3Rpb24gZ2V0UHJvcGVydHlEZXNjcmlwdG9yKHN1YmplY3Q6IGFueSwgbmFtZTogc3RyaW5nKSB7XG4gIGxldCBwZCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc3ViamVjdCwgbmFtZSk7XG4gIGxldCBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihzdWJqZWN0KTtcbiAgd2hpbGUgKHR5cGVvZiBwZCA9PT0gJ3VuZGVmaW5lZCcgJiYgcHJvdG8gIT09IG51bGwpIHtcbiAgICBwZCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sIG5hbWUpO1xuICAgIHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHByb3RvKTtcbiAgfVxuICByZXR1cm4gcGQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlZChkZXNjOiBDb21wdXRlZERlc2NyaXB0b3IpOiBDb21wdXRlZEJsdWVwcmludDtcbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlZChnZXR0ZXI6IENvbXB1dGVkR2V0Q2FsbGJhY2sgfCBMZWdhY3lDb21wdXRlZEdldENhbGxiYWNrKTogQ29tcHV0ZWRCbHVlcHJpbnQ7XG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZWQoLi4uYXJnczogYW55W10pOiBDb21wdXRlZEJsdWVwcmludDtcblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVkKC4uLmFyZ3M6IGFueVtdKSB7XG4gIGxldCBsYXN0OiBDb21wdXRlZEFyZ3VtZW50ID0gYXJncy5wb3AoKTtcbiAgbGV0IGRlcHMgPSBhcmdzO1xuXG4gIGlmICh0eXBlb2YgbGFzdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBuZXcgQ29tcHV0ZWRCbHVlcHJpbnQoe1xuICAgICAgZ2V0OiA8Q29tcHV0ZWRHZXRDYWxsYmFjayB8IExlZ2FjeUNvbXB1dGVkR2V0Q2FsbGJhY2s+bGFzdFxuICAgIH0pLnByb3BlcnR5KC4uLmRlcHMpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBsYXN0ID09PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBuZXcgQ29tcHV0ZWRCbHVlcHJpbnQoPENvbXB1dGVkRGVzY3JpcHRvcj5sYXN0KS5wcm9wZXJ0eSguLi5kZXBzKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiY29tcHV0ZWQgZXhwZWN0cyBhIGZ1bmN0aW9uIG9yIGFuIG9iamVjdCBhcyBsYXN0IGFyZ3VtZW50XCIpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvYnNlcnZlciguLi5fYXJnczogYW55W10pIHtcblxufVxuIl19

@@ -29,3 +29,3 @@ function _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; }

configurable: true,
get: function () {
get: function get() {
return this[name];

@@ -70,3 +70,3 @@ }

var last = name[name.length - 1];
var get = function () {
var get = function get() {
return name.reduce(function (obj, n) {

@@ -76,3 +76,3 @@ return obj[n];

};
var set = function (value) {
var set = function set(value) {
var p = parent.reduce(function (obj, n) {

@@ -101,2 +101,2 @@ return obj[n];

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9kZXNjcmlwdG9ycy5qcyJdLCJuYW1lcyI6WyJCbHVlcHJpbnQiLCJEZXNjcmlwdG9yIiwiQ29tcHV0ZWRCbHVlcHJpbnQiLCJBbGlhc01ldGhvZERlc2NyaXB0b3IiLCJuYW1lIiwiZGVmaW5lIiwidGFyZ2V0Iiwia2V5IiwiX2hvbWUiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJnZXQiLCJBbGlhc01ldGhvZEJsdWVwcmludCIsImRlc2NyaXB0b3IiLCJfdGFyZ2V0IiwiX2tleSIsIl9tZXRhIiwiYWxpYXNNZXRob2QiLCJBbGlhc0JsdWVwcmludCIsInBhcmVudCIsInNsaWNlIiwibGFzdCIsImxlbmd0aCIsInJlZHVjZSIsIm9iaiIsIm4iLCJzZXQiLCJ2YWx1ZSIsInAiLCJtZXRhIiwiRXJyb3IiLCJhbGlhcyIsInNwbGl0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLFNBQVNBLFNBQVQsRUFBb0JDLFVBQXBCLFFBQXNDLFNBQXRDO0FBQ0EsU0FBU0MsaUJBQVQsUUFBa0MsWUFBbEM7O0lBQ01DLHFCOzs7QUFDRixtQ0FBWUMsSUFBWixFQUFrQjtBQUFBOztBQUFBLHFEQUNkLHNCQURjOztBQUVkLGNBQUtBLElBQUwsR0FBWUEsSUFBWjtBQUZjO0FBR2pCOztvQ0FDREMsTSxtQkFBT0MsTSxFQUFRQyxHLEVBQUtDLEssRUFBTztBQUN2QixZQUFJSixPQUFPLEtBQUtBLElBQWhCO0FBQ0FLLGVBQU9DLGNBQVAsQ0FBc0JKLE1BQXRCLEVBQThCQyxHQUE5QixFQUFtQztBQUMvQkksd0JBQVksSUFEbUI7QUFFL0JDLDBCQUFjLElBRmlCO0FBRy9CQyxlQUgrQixjQUd6QjtBQUNGLHVCQUFPLEtBQUtULElBQUwsQ0FBUDtBQUNIO0FBTDhCLFNBQW5DO0FBT0gsSzs7O0VBZCtCSCxVOztJQWdCOUJhLG9COzs7QUFDRixrQ0FBWVYsSUFBWixFQUFrQjtBQUFBOztBQUFBLHNEQUNkLHFCQURjOztBQUVkLGVBQUtBLElBQUwsR0FBWUEsSUFBWjtBQUZjO0FBR2pCOzttQ0FDRFcsVSx1QkFBV0MsTyxFQUFTQyxJLEVBQU1DLEssRUFBTztBQUM3QixlQUFPLElBQUlmLHFCQUFKLENBQTBCLEtBQUtDLElBQS9CLENBQVA7QUFDSCxLOzs7RUFQOEJKLFM7O0FBU25DLE9BQU8sU0FBU21CLFdBQVQsQ0FBcUJmLElBQXJCLEVBQTJCO0FBQzlCLFdBQU8sSUFBSVUsb0JBQUosQ0FBeUJWLElBQXpCLENBQVA7QUFDSDs7SUFDS2dCLGM7OztBQUNGLDRCQUFZaEIsSUFBWixFQUFrQjtBQUFBOztBQUNkLFlBQUlpQixTQUFTakIsS0FBS2tCLEtBQUwsQ0FBVyxDQUFYLEVBQWMsQ0FBQyxDQUFmLENBQWI7QUFDQSxZQUFJQyxPQUFPbkIsS0FBS0EsS0FBS29CLE1BQUwsR0FBYyxDQUFuQixDQUFYO0FBQ0EsWUFBSVgsTUFBTSxZQUFZO0FBQ2xCLG1CQUFPVCxLQUFLcUIsTUFBTCxDQUFZLFVBQUNDLEdBQUQsRUFBTUMsQ0FBTjtBQUFBLHVCQUFZRCxJQUFJQyxDQUFKLENBQVo7QUFBQSxhQUFaLEVBQWdDLElBQWhDLENBQVA7QUFDSCxTQUZEO0FBR0EsWUFBSUMsTUFBTSxVQUFVQyxLQUFWLEVBQWlCO0FBQ3ZCLGdCQUFJQyxJQUFJVCxPQUFPSSxNQUFQLENBQWMsVUFBQ0MsR0FBRCxFQUFNQyxDQUFOO0FBQUEsdUJBQVlELElBQUlDLENBQUosQ0FBWjtBQUFBLGFBQWQsRUFBa0MsSUFBbEMsQ0FBUjtBQUNBRyxjQUFFUCxJQUFGLElBQVVNLEtBQVY7QUFDSCxTQUhEOztBQU5jLHNEQVVkLDhCQUFNLEVBQUVoQixRQUFGLEVBQU9lLFFBQVAsRUFBTixFQUFvQixDQUFDeEIsSUFBRCxDQUFwQixDQVZjOztBQVdkLGVBQUtBLElBQUwsR0FBWUEsSUFBWjtBQVhjO0FBWWpCOzs2QkFDRFcsVSx1QkFBV1QsTSxFQUFRQyxHLEVBQUt3QixJLEVBQU07QUFDMUIsWUFBSSxLQUFLM0IsSUFBTCxDQUFVLENBQVYsTUFBaUJHLEdBQXJCLEVBQTBCLE1BQU0sSUFBSXlCLEtBQUosc0JBQTRCekIsR0FBNUIsZ0JBQU47QUFDMUIsZUFBTyw2QkFBTVEsVUFBTixZQUFpQlQsTUFBakIsRUFBeUJDLEdBQXpCLEVBQThCd0IsSUFBOUIsQ0FBUDtBQUNILEs7OztFQWpCd0I3QixpQjs7QUFtQjdCLE9BQU8sU0FBUytCLEtBQVQsQ0FBZTdCLElBQWYsRUFBcUI7QUFDeEIsV0FBTyxJQUFJZ0IsY0FBSixDQUFtQmhCLEtBQUs4QixLQUFMLENBQVcsR0FBWCxDQUFuQixDQUFQO0FBQ0giLCJmaWxlIjoibGliL2Rlc2NyaXB0b3JzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmx1ZXByaW50LCBEZXNjcmlwdG9yIH0gZnJvbSAnLi9taXhpbic7XG5pbXBvcnQgeyBDb21wdXRlZEJsdWVwcmludCB9IGZyb20gJy4vY29tcHV0ZWQnO1xuY2xhc3MgQWxpYXNNZXRob2REZXNjcmlwdG9yIGV4dGVuZHMgRGVzY3JpcHRvciB7XG4gICAgY29uc3RydWN0b3IobmFtZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIH1cbiAgICBkZWZpbmUodGFyZ2V0LCBrZXksIF9ob21lKSB7XG4gICAgICAgIGxldCBuYW1lID0gdGhpcy5uYW1lO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHtcbiAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgICBnZXQoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNbbmFtZV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbmNsYXNzIEFsaWFzTWV0aG9kQmx1ZXByaW50IGV4dGVuZHMgQmx1ZXByaW50IHtcbiAgICBjb25zdHJ1Y3RvcihuYW1lKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgfVxuICAgIGRlc2NyaXB0b3IoX3RhcmdldCwgX2tleSwgX21ldGEpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBBbGlhc01ldGhvZERlc2NyaXB0b3IodGhpcy5uYW1lKTtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gYWxpYXNNZXRob2QobmFtZSkge1xuICAgIHJldHVybiBuZXcgQWxpYXNNZXRob2RCbHVlcHJpbnQobmFtZSk7XG59XG5jbGFzcyBBbGlhc0JsdWVwcmludCBleHRlbmRzIENvbXB1dGVkQmx1ZXByaW50IHtcbiAgICBjb25zdHJ1Y3RvcihuYW1lKSB7XG4gICAgICAgIGxldCBwYXJlbnQgPSBuYW1lLnNsaWNlKDAsIC0xKTtcbiAgICAgICAgbGV0IGxhc3QgPSBuYW1lW25hbWUubGVuZ3RoIC0gMV07XG4gICAgICAgIGxldCBnZXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gbmFtZS5yZWR1Y2UoKG9iaiwgbikgPT4gb2JqW25dLCB0aGlzKTtcbiAgICAgICAgfTtcbiAgICAgICAgbGV0IHNldCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgbGV0IHAgPSBwYXJlbnQucmVkdWNlKChvYmosIG4pID0+IG9ialtuXSwgdGhpcyk7XG4gICAgICAgICAgICBwW2xhc3RdID0gdmFsdWU7XG4gICAgICAgIH07XG4gICAgICAgIHN1cGVyKHsgZ2V0LCBzZXQgfSwgW25hbWVdKTtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB9XG4gICAgZGVzY3JpcHRvcih0YXJnZXQsIGtleSwgbWV0YSkge1xuICAgICAgICBpZiAodGhpcy5uYW1lWzBdID09PSBrZXkpIHRocm93IG5ldyBFcnJvcihgU2V0dGluZyBhbGlhcyAnJHtrZXl9JyBvbiBzZWxmYCk7XG4gICAgICAgIHJldHVybiBzdXBlci5kZXNjcmlwdG9yKHRhcmdldCwga2V5LCBtZXRhKTtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gYWxpYXMobmFtZSkge1xuICAgIHJldHVybiBuZXcgQWxpYXNCbHVlcHJpbnQobmFtZS5zcGxpdCgnLicpKTtcbn0iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpcHRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL2Rlc2NyaXB0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsQUFBTyxTQUFFLEFBQVMsV0FBRSxBQUFVLEFBQUUsa0JBQU0sQUFBUyxBQUFDO0FBRWhELEFBQU8sU0FBRSxBQUFpQixBQUFFLHlCQUFNLEFBQVksQUFBQyxBQUUvQzs7SUFBNEI7OzttQ0FHZCxBQUFZO0FBQ3RCLEFBQUssQUFBRSxBQUFDOztxREFDUixBQUFJOztjQUFDLEFBQUksT0FBRyxBQUFJLEFBQUMsQUFDbkIsQUFBQzs7QUFFRCxBQUFNOzs2REFBQyxBQUFjLFFBQUUsQUFBVyxLQUFFLEFBQWEsT0FDL0M7WUFBSSxBQUFJLE9BQVcsQUFBSSxLQUFDLEFBQUksQUFBQyxBQUU3QixBQUFNO2VBQUMsQUFBYyxlQUFDLEFBQU0sUUFBRSxBQUFHO3dCQUNuQixBQUFJLEFBQ2hCLEFBQVk7MEJBQUUsQUFBSSxBQUNsQixBQUFHO2dDQUNELEFBQU07dUJBQUMsQUFBSSxLQUFDLEFBQUksQUFBQyxBQUFDLEFBQ3BCLEFBQUMsQUFDRixBQUFDLEFBQUMsQUFDTDtBQVBxQyxBQU9wQyxBQUNGO0FBUEssQUFBVTtBQVNoQjs7O0VBckJvQyxBQUFVLEFBRzVDOztJQWtCeUI7OztrQ0FHYixBQUFZO0FBQ3RCLEFBQUssQUFBRSxBQUFDOztzREFDUixBQUFJOztlQUFDLEFBQUksT0FBRyxBQUFJLEFBQUMsQUFDbkIsQUFBQzs7QUFFRCxBQUFVOztvRUFBQyxBQUFlLFNBQUUsQUFBWSxNQUFFLEFBQWdCLE9BQ3hELEFBQU07ZUFBQyxJQUFJLEFBQXFCLHNCQUFDLEFBQUksS0FBQyxBQUFJLEFBQUMsQUFBQyxBQUM5QyxBQUFDLEFBQ0Y7Ozs7RUFYa0MsQUFBUyxBQUcxQzs7QUFVRixBQUFNLDRCQUFzQixBQUFZLE1BQ3RDLEFBQU07V0FBQyxJQUFJLEFBQW9CLHFCQUFDLEFBQUksQUFBQyxBQUFDLEFBQ3hDLEFBQUM7QUFFRDs7SUFBcUI7Ozs0QkFHUCxBQUFjO0FBQ3hCOztZQUFJLEFBQU0sU0FBRyxBQUFJLEtBQUMsQUFBSyxNQUFDLEFBQUMsR0FBRSxDQUFDLEFBQUMsQUFBQyxBQUFDLEFBQy9CO1lBQUksQUFBSSxPQUFHLEFBQUksS0FBQyxBQUFJLEtBQUMsQUFBTSxTQUFHLEFBQUMsQUFBQyxBQUFDLEFBRWpDO1lBQUksQUFBRyxNQUFHLGVBQ1IsQUFBTTt3QkFBTSxBQUFNLGlCQUFFLEFBQUcsS0FBRSxBQUFDO0FBQVAsdUJBQVksQUFBRyxJQUFDLEFBQUMsQUFBQzthQUE5QixBQUFJLEVBQTRCLEFBQUksQUFBQyxBQUFDLEFBQy9DLEFBQUMsQUFBQztBQUVGO1lBQUksQUFBRyxNQUFHLGFBQW9CLEFBQVUsT0FDdEM7Z0JBQUksQUFBQyxXQUFVLEFBQU0saUJBQUUsQUFBRyxLQUFFLEFBQUM7QUFBUCx1QkFBWSxBQUFHLElBQUMsQUFBQyxBQUFDO2FBQWhDLEFBQU0sRUFBNEIsQUFBSSxBQUFDLEFBQUMsQUFDaEQsQUFBQztjQUFDLEFBQUksQUFBQyxRQUFHLEFBQUssQUFBQyxBQUNsQixBQUFDLEFBQUM7QUFFRixBQUFLOztvRkFBQyxFQUFFLEFBQUcsVUFBRSxBQUFHLEFBQUUsWUFBRSxDQUFDLEFBQUksQUFBQyxBQUFDLEFBQUMsQUFDNUIsQUFBSTs7ZUFBQyxBQUFJLE9BQUcsQUFBSSxBQUFDLEFBQ25CLEFBQUM7O0FBRUQsQUFBVTs7OERBQUMsQUFBYyxRQUFFLEFBQVcsS0FBRSxBQUFlLE1BQ3JELEFBQUUsQUFBQztZQUFDLEFBQUksS0FBQyxBQUFJLEtBQUMsQUFBQyxBQUFDLE9BQUssQUFBRyxBQUFDLEtBQUMsTUFBTSxJQUFJLEFBQUssQUFBQywyQkFBa0IsQUFBRyxBQUFXLEFBQUMsQUFBQyxBQUM1RSxBQUFNO2VBQUMsQUFBSyw2QkFBQyxBQUFVLHNCQUFDLEFBQU0sUUFBRSxBQUFHLEtBQUUsQUFBSSxBQUFDLEFBQUMsQUFDN0MsQUFBQyxBQUNGOzs7O0VBeEI0QixBQUFpQixBQUc1Qzs7QUF1QkYsQUFBTSxzQkFBZ0IsQUFBWSxNQUNoQyxBQUFNO1dBQUMsSUFBSSxBQUFjLGVBQUMsQUFBSSxLQUFDLEFBQUssTUFBQyxBQUFHLEFBQUMsQUFBQyxBQUFDLEFBQzdDLEFBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCbHVlcHJpbnQsIERlc2NyaXB0b3IgfSBmcm9tICcuL21peGluJztcbmltcG9ydCB7IENsYXNzTWV0YSB9IGZyb20gJy4vb2JqZWN0JztcbmltcG9ydCB7IENvbXB1dGVkQmx1ZXByaW50IH0gZnJvbSAnLi9jb21wdXRlZCc7XG5cbmNsYXNzIEFsaWFzTWV0aG9kRGVzY3JpcHRvciBleHRlbmRzIERlc2NyaXB0b3Ige1xuICBwcml2YXRlIG5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gIH1cblxuICBkZWZpbmUodGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBfaG9tZTogT2JqZWN0KSB7XG4gICAgbGV0IG5hbWUgPSA8c3RyaW5nPnRoaXMubmFtZTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwge1xuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGdldCh0aGlzOiB0eXBlb2YgdGFyZ2V0KSB7XG4gICAgICAgIHJldHVybiB0aGlzW25hbWVdO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbmNsYXNzIEFsaWFzTWV0aG9kQmx1ZXByaW50IGV4dGVuZHMgQmx1ZXByaW50IHtcbiAgcHJpdmF0ZSBuYW1lOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICB9XG5cbiAgZGVzY3JpcHRvcihfdGFyZ2V0OiBPYmplY3QsIF9rZXk6IHN0cmluZywgX21ldGE6IENsYXNzTWV0YSk6IERlc2NyaXB0b3Ige1xuICAgIHJldHVybiBuZXcgQWxpYXNNZXRob2REZXNjcmlwdG9yKHRoaXMubmFtZSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFsaWFzTWV0aG9kKG5hbWU6IHN0cmluZyk6IEJsdWVwcmludCB7XG4gIHJldHVybiBuZXcgQWxpYXNNZXRob2RCbHVlcHJpbnQobmFtZSk7XG59XG5cbmNsYXNzIEFsaWFzQmx1ZXByaW50IGV4dGVuZHMgQ29tcHV0ZWRCbHVlcHJpbnQge1xuICBwcml2YXRlIG5hbWU6IHN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZ1tdKSB7XG4gICAgbGV0IHBhcmVudCA9IG5hbWUuc2xpY2UoMCwgLTEpO1xuICAgIGxldCBsYXN0ID0gbmFtZVtuYW1lLmxlbmd0aCAtIDFdO1xuXG4gICAgbGV0IGdldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgICAgcmV0dXJuIG5hbWUucmVkdWNlKChvYmosIG4pID0+IG9ialtuXSwgdGhpcyk7XG4gICAgfTtcblxuICAgIGxldCBzZXQgPSBmdW5jdGlvbih0aGlzOiBhbnksIHZhbHVlOiBhbnkpIHtcbiAgICAgIGxldCBwID0gcGFyZW50LnJlZHVjZSgob2JqLCBuKSA9PiBvYmpbbl0sIHRoaXMpO1xuICAgICAgcFtsYXN0XSA9IHZhbHVlO1xuICAgIH07XG5cbiAgICBzdXBlcih7IGdldCwgc2V0IH0sIFtuYW1lXSk7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgfVxuXG4gIGRlc2NyaXB0b3IodGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBtZXRhOiBDbGFzc01ldGEpOiBEZXNjcmlwdG9yIHtcbiAgICBpZiAodGhpcy5uYW1lWzBdID09PSBrZXkpIHRocm93IG5ldyBFcnJvcihgU2V0dGluZyBhbGlhcyAnJHtrZXl9JyBvbiBzZWxmYCk7XG4gICAgcmV0dXJuIHN1cGVyLmRlc2NyaXB0b3IodGFyZ2V0LCBrZXksIG1ldGEpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbGlhcyhuYW1lOiBzdHJpbmcpOiBCbHVlcHJpbnQge1xuICByZXR1cm4gbmV3IEFsaWFzQmx1ZXByaW50KG5hbWUuc3BsaXQoJy4nKSk7XG59XG4iXX0=

@@ -370,3 +370,3 @@ function _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; }

var superMethod = home[methodName];
var func = function () {
var func = function func() {
for (var _len3 = arguments.length, args = Array(_len3), _key4 = 0; _key4 < _len3; _key4++) {

@@ -405,2 +405,2 @@ args[_key4] = arguments[_key4];

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9taXhpbi5qcyJdLCJuYW1lcyI6WyJDTEFTU19NRVRBIiwiZGljdCIsImFzc2lnbiIsIkNsYXNzTWV0YSIsIkluc3RhbmNlTWV0YSIsInR1cmJvY2hhcmdlIiwiUk9PVCIsImlzQXJyYXkiLCJBcnJheSIsIkRFU0NSSVBUT1IiLCJCTFVFUFJJTlQiLCJEZXNjcmlwdG9yIiwiQmx1ZXByaW50IiwiTWl4aW4iLCJleHRlbnNpb25zIiwibWl4aW5zIiwiY29uY2F0ZW5hdGVkUHJvcGVydGllcyIsIm1lcmdlZFByb3BlcnRpZXMiLCJkZXBlbmRlbmNpZXMiLCJyZW9wZW4iLCJwdXNoIiwiY3JlYXRlIiwiYXJncyIsImxlbmd0aCIsImRlcHMiLCJzbGljZSIsIm1hcCIsInRvTWl4aW4iLCJvYmoiLCJtZXRhIiwiZm9yIiwiZ2V0QXBwbGllZE1peGlucyIsImRldGVjdCIsImluZGV4T2YiLCJoYXNBcHBsaWVkTWl4aW4iLCJjb25jYXQiLCJyYXdDb25jYXQiLCJ1bmRlZmluZWQiLCJtZXJnZWQiLCJyYXdNZXJnZWQiLCJub3JtYWxpemVkIiwiT2JqZWN0Iiwia2V5cyIsInJlZHVjZSIsImtleSIsInZhbHVlIiwiTWV0aG9kQmx1ZXByaW50IiwiRGF0YUJsdWVwcmludCIsImFwcGx5IiwidGFyZ2V0IiwiZm9yRWFjaCIsIm0iLCJtZXJnZVByb3BlcnRpZXMiLCJhZGRNaXhpbiIsInNlYWwiLCJyZXNlYWwiLCJleHRlbmRQcm90b3R5cGUiLCJPcmlnaW5hbCIsInByb3RvdHlwZSIsImV4dGVuZFByb3RvdHlwZU9udG8iLCJTdWJjbGFzcyIsIlBhcmVudCIsImV4dGVuZFN0YXRpYyIsIlRhcmdldCIsImdldFByb3RvdHlwZU9mIiwiYWRkU3RhdGljTWl4aW4iLCJwYXJlbnQiLCJhZGRBcHBsaWVkTWl4aW4iLCJhZGRNZXJnZWRQcm9wZXJ0eSIsImsiLCJhZGRDb25jYXRlbmF0ZWRQcm9wZXJ0eSIsIlZhbHVlRGVzY3JpcHRvciIsImdldENvbmNhdGVuYXRlZFByb3BlcnRpZXMiLCJkZWZpbmUiLCJnZXRNZXJnZWRQcm9wZXJ0aWVzIiwiZXh0ZW5zaW9uIiwiZGVzYyIsImRlc2NyaXB0b3IiLCJleHRlbmQiLCJTdXBlciIsImZyb21QYXJlbnQiLCJhZGRTdWJjbGFzcyIsImFwcGx5QWxsTWl4aW5zIiwicmVsaW5rU3ViY2xhc3NlcyIsImdldFN1YmNsYXNzZXMiLCJyZXNldCIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIl9ob21lIiwiZGVmaW5lUHJvcGVydHkiLCJfdGFyZ2V0IiwiY2xhc3NNZXRhIiwiaGFzQ29uY2F0ZW5hdGVkUHJvcGVydHkiLCJnZXRDb25jYXRlbmF0ZWRQcm9wZXJ0eSIsImhhc01lcmdlZFByb3BlcnR5IiwiZ2V0TWVyZ2VkUHJvcGVydHkiLCJBY2Nlc3NvckJsdWVwcmludCIsImdldCIsInNldCIsIl9rZXkiLCJfY2xhc3NNZXRhIiwiTWV0aG9kRGVzY3JpcHRvciIsImhvbWUiLCJ3cmFwTWV0aG9kIiwibWV0aG9kTmFtZSIsIm9yaWdpbmFsIiwibWF5YmVXcmFwIiwic3VwZXJNZXRob2QiLCJmdW5jIiwibGFzdFN1cGVyIiwiX3N1cGVyIiwiX193cmFwcGVkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLFNBQVNBLFVBQVQsUUFBMkIsMkJBQTNCO0FBQ0EsU0FBU0MsSUFBVCxFQUFlQyxNQUFmLFFBQTZCLGVBQTdCO0FBQ0EsU0FBU0MsU0FBVCxFQUFvQkMsWUFBcEIsRUFBa0NDLFdBQWxDLFFBQXFELFVBQXJEO0FBQ0EsU0FBU0MsSUFBVCxRQUFxQixTQUFyQjtJQUNRQyxPLEdBQVlDLEssQ0FBWkQsTzs7QUFDUixPQUFPLElBQU1FLGFBQWEsc0NBQW5CO0FBQ1AsT0FBTyxJQUFNQyxZQUFZLHNDQUFsQjtBQUNQLFdBQWFDLFVBQWIsR0FDSSxzQkFBYztBQUFBOztBQUNWLFNBQUssc0NBQUwsSUFBK0MsSUFBL0M7QUFDSCxDQUhMO0FBS0EsV0FBYUMsU0FBYixHQUNJLHFCQUFjO0FBQUE7O0FBQ1YsU0FB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O0FBQUEsMkNBQU5wRixJQUFNO0FBQU5BLGdCQUFNO0FBQUE7O0FBQ3RCLFlBQUksQ0FBQyxJQUFMLEVBQVcsT0FBT29GLFNBQVMxRCxLQUFULENBQWUsSUFBZixFQUFxQjFCLElBQXJCLENBQVA7QUFDWCxZQUFJd0YsWUFBWSxLQUFLQyxNQUFyQjtBQUNBLGFBQUtBLE1BQUwsR0FBY3pHLElBQWQ7QUFDQSxZQUFJO0FBQ0EsbUJBQU9vRyxTQUFTMUQsS0FBVCxDQUFlLElBQWYsRUFBcUIxQixJQUFyQixDQUFQO0FBQ0gsU0FGRCxTQUVVO0FBQ04saUJBQUt5RixNQUFMLEdBQWNELFNBQWQ7QUFDSDtBQUNKLEtBVEQ7QUFVSCIsImZpbGUiOiJsaWIvbWl4aW4uanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDTEFTU19NRVRBIH0gZnJvbSAnQGdsaW1tZXIvb2JqZWN0LXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBkaWN0LCBhc3NpZ24gfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IENsYXNzTWV0YSwgSW5zdGFuY2VNZXRhLCB0dXJib2NoYXJnZSB9IGZyb20gJy4vb2JqZWN0JztcbmltcG9ydCB7IFJPT1QgfSBmcm9tICcuL3V0aWxzJztcbmNvbnN0IHsgaXNBcnJheSB9ID0gQXJyYXk7XG5leHBvcnQgY29uc3QgREVTQ1JJUFRPUiA9IFwiNWQ5MGY4NGYtOTA4ZS00YTQyLTk3NDktM2QwZjUyM2MyNjJjXCI7XG5leHBvcnQgY29uc3QgQkxVRVBSSU5UID0gXCI4ZDk3Y2Y1Zi1kYjllLTQ4ZDgtYTZiMi03YTc1YjcxNzA4MDVcIjtcbmV4cG9ydCBjbGFzcyBEZXNjcmlwdG9yIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpc1tcIjVkOTBmODRmLTkwOGUtNGE0Mi05NzQ5LTNkMGY1MjNjMjYyY1wiXSA9IHRydWU7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIEJsdWVwcmludCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXNbXCI4ZDk3Y2Y1Zi1kYjllLTQ4ZDgtYTZiMi03YTc1YjcxNzA4MDVcIl0gPSB0cnVlO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBNaXhpbiB7XG4gICAgY29uc3RydWN0b3IoZXh0ZW5zaW9ucywgbWl4aW5zKSB7XG4gICAgICAgIHRoaXMuZXh0ZW5zaW9ucyA9IG51bGw7XG4gICAgICAgIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IFtdO1xuICAgICAgICB0aGlzLm1lcmdlZFByb3BlcnRpZXMgPSBbXTtcbiAgICAgICAgdGhpcy5kZXBlbmRlbmNpZXMgPSBbXTtcbiAgICAgICAgdGhpcy5yZW9wZW4oZXh0ZW5zaW9ucyk7XG4gICAgICAgIHRoaXMuZGVwZW5kZW5jaWVzLnB1c2goLi4ubWl4aW5zKTtcbiAgICB9XG4gICAgc3RhdGljIGNyZWF0ZSguLi5hcmdzKSB7XG4gICAgICAgIGxldCBleHRlbnNpb25zID0gYXJnc1thcmdzLmxlbmd0aCAtIDFdO1xuICAgICAgICBpZiAoYXJncy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgdGhpcyh7fSwgW10pO1xuICAgICAgICB9IGVsc2UgaWYgKGV4dGVuc2lvbnMgaW5zdGFuY2VvZiBNaXhpbikge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyB0aGlzKHt9LCBhcmdzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBkZXBzID0gYXJncy5zbGljZSgwLCAtMSkubWFwKHRvTWl4aW4pO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyB0aGlzKGV4dGVuc2lvbnMsIGRlcHMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHN0YXRpYyBtaXhpbnMob2JqKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JyB8fCBvYmogPT09IG51bGwpIHJldHVybiBbXTtcbiAgICAgICAgbGV0IG1ldGEgPSBDbGFzc01ldGEuZm9yKG9iaik7XG4gICAgICAgIGlmICghbWV0YSkgcmV0dXJuIFtdO1xuICAgICAgICByZXR1cm4gbWV0YS5nZXRBcHBsaWVkTWl4aW5zKCk7XG4gICAgfVxuICAgIGRldGVjdChvYmopIHtcbiAgICAgICAgaWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnIHx8IG9iaiA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAob2JqIGluc3RhbmNlb2YgTWl4aW4pIHtcbiAgICAgICAgICAgIHJldHVybiBvYmouZGVwZW5kZW5jaWVzLmluZGV4T2YodGhpcykgIT09IC0xO1xuICAgICAgICB9XG4gICAgICAgIGxldCBtZXRhID0gQ2xhc3NNZXRhLmZvcihvYmopO1xuICAgICAgICByZXR1cm4gISFtZXRhICYmIG1ldGEuaGFzQXBwbGllZE1peGluKHRoaXMpO1xuICAgIH1cbiAgICByZW9wZW4oZXh0ZW5zaW9ucykge1xuICAgICAgICBpZiAodGhpcy5leHRlbnNpb25zKSB7XG4gICAgICAgICAgICB0aGlzLmRlcGVuZGVuY2llcy5wdXNoKHRvTWl4aW4odGhpcy5leHRlbnNpb25zKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBleHRlbnNpb25zID09PSAnb2JqZWN0JyAmJiAnY29uY2F0ZW5hdGVkUHJvcGVydGllcycgaW4gZXh0ZW5zaW9ucykge1xuICAgICAgICAgICAgbGV0IGNvbmNhdDtcbiAgICAgICAgICAgIGxldCByYXdDb25jYXQgPSBleHRlbnNpb25zLmNvbmNhdGVuYXRlZFByb3BlcnRpZXM7XG4gICAgICAgICAgICBpZiAoaXNBcnJheShyYXdDb25jYXQpKSB7XG4gICAgICAgICAgICAgICAgY29uY2F0ID0gcmF3Q29uY2F0LnNsaWNlKCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJhd0NvbmNhdCA9PT0gbnVsbCB8fCByYXdDb25jYXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGNvbmNhdCA9IFtdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25jYXQgPSBbcmF3Q29uY2F0XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlbGV0ZSBleHRlbnNpb25zLmNvbmNhdGVuYXRlZFByb3BlcnRpZXM7XG4gICAgICAgICAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSBjb25jYXQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBleHRlbnNpb25zID09PSAnb2JqZWN0JyAmJiAnbWVyZ2VkUHJvcGVydGllcycgaW4gZXh0ZW5zaW9ucykge1xuICAgICAgICAgICAgbGV0IG1lcmdlZDtcbiAgICAgICAgICAgIGxldCByYXdNZXJnZWQgPSBleHRlbnNpb25zLm1lcmdlZFByb3BlcnRpZXM7XG4gICAgICAgICAgICBpZiAoaXNBcnJheShyYXdNZXJnZWQpKSB7XG4gICAgICAgICAgICAgICAgbWVyZ2VkID0gcmF3TWVyZ2VkLnNsaWNlKCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJhd01lcmdlZCA9PT0gbnVsbCB8fCByYXdNZXJnZWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIG1lcmdlZCA9IFtdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBtZXJnZWQgPSBbcmF3TWVyZ2VkXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlbGV0ZSBleHRlbnNpb25zLm1lcmdlZFByb3BlcnRpZXM7XG4gICAgICAgICAgICB0aGlzLm1lcmdlZFByb3BlcnRpZXMgPSBtZXJnZWQ7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IG5vcm1hbGl6ZWQgPSBPYmplY3Qua2V5cyhleHRlbnNpb25zKS5yZWR1Y2UoKG9iaiwga2V5KSA9PiB7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBleHRlbnNpb25zW2tleV07XG4gICAgICAgICAgICBzd2l0Y2ggKHR5cGVvZiB2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2Z1bmN0aW9uJzpcbiAgICAgICAgICAgICAgICAgICAgb2JqW2tleV0gPSBuZXcgTWV0aG9kQmx1ZXByaW50KHsgdmFsdWUgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAmJiBCTFVFUFJJTlQgaW4gdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9ialtrZXldID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBvYmpba2V5XSA9IG5ldyBEYXRhQmx1ZXByaW50KHsgdmFsdWUgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgICB9LCBkaWN0KCkpO1xuICAgICAgICB0aGlzLmV4dGVuc2lvbnMgPSBkaWN0KCk7XG4gICAgICAgIGFzc2lnbih0aGlzLmV4dGVuc2lvbnMsIHR1cmJvY2hhcmdlKG5vcm1hbGl6ZWQpKTtcbiAgICB9XG4gICAgYXBwbHkodGFyZ2V0KSB7XG4gICAgICAgIGxldCBtZXRhID0gdGFyZ2V0W0NMQVNTX01FVEFdID0gdGFyZ2V0W0NMQVNTX01FVEFdIHx8IG5ldyBDbGFzc01ldGEoKTtcbiAgICAgICAgdGhpcy5kZXBlbmRlbmNpZXMuZm9yRWFjaChtID0+IG0uYXBwbHkodGFyZ2V0KSk7XG4gICAgICAgIHRoaXMubWVyZ2VQcm9wZXJ0aWVzKHRhcmdldCwgdGFyZ2V0LCBtZXRhKTtcbiAgICAgICAgbWV0YS5hZGRNaXhpbih0aGlzKTtcbiAgICAgICAgbWV0YS5zZWFsKCk7XG4gICAgICAgIG1ldGEucmVzZWFsKHRhcmdldCk7XG4gICAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfVxuICAgIGV4dGVuZFByb3RvdHlwZShPcmlnaW5hbCkge1xuICAgICAgICBPcmlnaW5hbC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKE9yaWdpbmFsLnByb3RvdHlwZSk7XG4gICAgICAgIHRoaXMuZGVwZW5kZW5jaWVzLmZvckVhY2gobSA9PiBtLmV4dGVuZFByb3RvdHlwZShPcmlnaW5hbCkpO1xuICAgICAgICB0aGlzLmV4dGVuZFByb3RvdHlwZU9udG8oT3JpZ2luYWwsIE9yaWdpbmFsKTtcbiAgICB9XG4gICAgZXh0ZW5kUHJvdG90eXBlT250byhTdWJjbGFzcywgUGFyZW50KSB7XG4gICAgICAgIHRoaXMuZGVwZW5kZW5jaWVzLmZvckVhY2gobSA9PiBtLmV4dGVuZFByb3RvdHlwZU9udG8oU3ViY2xhc3MsIFBhcmVudCkpO1xuICAgICAgICB0aGlzLm1lcmdlUHJvcGVydGllcyhTdWJjbGFzcy5wcm90b3R5cGUsIFBhcmVudC5wcm90b3R5cGUsIFN1YmNsYXNzW0NMQVNTX01FVEFdKTtcbiAgICAgICAgU3ViY2xhc3NbQ0xBU1NfTUVUQV0uYWRkTWl4aW4odGhpcyk7XG4gICAgfVxuICAgIGV4dGVuZFN0YXRpYyhUYXJnZXQpIHtcbiAgICAgICAgdGhpcy5kZXBlbmRlbmNpZXMuZm9yRWFjaChtID0+IG0uZXh0ZW5kU3RhdGljKFRhcmdldCkpO1xuICAgICAgICB0aGlzLm1lcmdlUHJvcGVydGllcyhUYXJnZXQsIE9iamVjdC5nZXRQcm90b3R5cGVPZihUYXJnZXQpLCBUYXJnZXRbQ0xBU1NfTUVUQV1bQ0xBU1NfTUVUQV0pO1xuICAgICAgICBUYXJnZXRbQ0xBU1NfTUVUQV0uYWRkU3RhdGljTWl4aW4odGhpcyk7XG4gICAgfVxuICAgIG1lcmdlUHJvcGVydGllcyh0YXJnZXQsIHBhcmVudCwgbWV0YSkge1xuICAgICAgICBpZiAobWV0YS5oYXNBcHBsaWVkTWl4aW4odGhpcykpIHJldHVybjtcbiAgICAgICAgbWV0YS5hZGRBcHBsaWVkTWl4aW4odGhpcyk7XG4gICAgICAgIHRoaXMubWVyZ2VkUHJvcGVydGllcy5mb3JFYWNoKGsgPT4gbWV0YS5hZGRNZXJnZWRQcm9wZXJ0eShrLCBwYXJlbnRba10pKTtcbiAgICAgICAgdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzLmZvckVhY2goayA9PiBtZXRhLmFkZENvbmNhdGVuYXRlZFByb3BlcnR5KGssIFtdKSk7XG4gICAgICAgIG5ldyBWYWx1ZURlc2NyaXB0b3IoeyB2YWx1ZTogbWV0YS5nZXRDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKCkgfSkuZGVmaW5lKHRhcmdldCwgJ2NvbmNhdGVuYXRlZFByb3BlcnRpZXMnKTtcbiAgICAgICAgbmV3IFZhbHVlRGVzY3JpcHRvcih7IHZhbHVlOiBtZXRhLmdldE1lcmdlZFByb3BlcnRpZXMoKSB9KS5kZWZpbmUodGFyZ2V0LCAnbWVyZ2VkUHJvcGVydGllcycpO1xuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmV4dGVuc2lvbnMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgIGxldCBleHRlbnNpb24gPSB0aGlzLmV4dGVuc2lvbnNba2V5XTtcbiAgICAgICAgICAgIGxldCBkZXNjID0gZXh0ZW5zaW9uLmRlc2NyaXB0b3IodGFyZ2V0LCBrZXksIG1ldGEpO1xuICAgICAgICAgICAgZGVzYy5kZWZpbmUodGFyZ2V0LCBrZXksIHBhcmVudCk7XG4gICAgICAgIH0pO1xuICAgICAgICBuZXcgVmFsdWVEZXNjcmlwdG9yKHsgdmFsdWU6IFJPT1QgfSkuZGVmaW5lKHRhcmdldCwgJ19zdXBlcicpO1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBleHRlbmQoUGFyZW50LCAuLi5leHRlbnNpb25zKSB7XG4gICAgbGV0IFN1cGVyID0gUGFyZW50O1xuICAgIGxldCBTdWJjbGFzcyA9IGNsYXNzIGV4dGVuZHMgU3VwZXIge307XG4gICAgU3ViY2xhc3NbQ0xBU1NfTUVUQV0gPSBJbnN0YW5jZU1ldGEuZnJvbVBhcmVudChQYXJlbnRbQ0xBU1NfTUVUQV0pO1xuICAgIGxldCBtaXhpbnMgPSBleHRlbnNpb25zLm1hcCh0b01peGluKTtcbiAgICBQYXJlbnRbQ0xBU1NfTUVUQV0uYWRkU3ViY2xhc3MoU3ViY2xhc3MpO1xuICAgIG1peGlucy5mb3JFYWNoKG0gPT4gU3ViY2xhc3NbQ0xBU1NfTUVUQV0uYWRkTWl4aW4obSkpO1xuICAgIENsYXNzTWV0YS5hcHBseUFsbE1peGlucyhTdWJjbGFzcywgUGFyZW50KTtcbiAgICByZXR1cm4gU3ViY2xhc3M7XG59XG5leHBvcnQgZnVuY3Rpb24gcmVsaW5rU3ViY2xhc3NlcyhQYXJlbnQpIHtcbiAgICBQYXJlbnRbQ0xBU1NfTUVUQV0uZ2V0U3ViY2xhc3NlcygpLmZvckVhY2goU3ViY2xhc3MgPT4ge1xuICAgICAgICBTdWJjbGFzc1tDTEFTU19NRVRBXS5yZXNldChQYXJlbnRbQ0xBU1NfTUVUQV0pO1xuICAgICAgICBTdWJjbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFBhcmVudC5wcm90b3R5cGUpO1xuICAgICAgICBDbGFzc01ldGEuYXBwbHlBbGxNaXhpbnMoU3ViY2xhc3MsIFBhcmVudCk7XG4gICAgICAgIC8vIHJlY3Vyc2UgaW50byBzdWItc3ViY2xhc3Nlc1xuICAgICAgICByZWxpbmtTdWJjbGFzc2VzKFN1YmNsYXNzKTtcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB0b01peGluKGV4dGVuc2lvbikge1xuICAgIGlmIChleHRlbnNpb24gaW5zdGFuY2VvZiBNaXhpbikgcmV0dXJuIGV4dGVuc2lvbjtlbHNlIHJldHVybiBuZXcgTWl4aW4oZXh0ZW5zaW9uLCBbXSk7XG59XG5jbGFzcyBWYWx1ZURlc2NyaXB0b3IgZXh0ZW5kcyBEZXNjcmlwdG9yIHtcbiAgICBjb25zdHJ1Y3Rvcih7IGVudW1lcmFibGUgPSB0cnVlLCBjb25maWd1cmFibGUgPSB0cnVlLCB3cml0YWJsZSA9IHRydWUsIHZhbHVlIH0pIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5lbnVtZXJhYmxlID0gZW51bWVyYWJsZTtcbiAgICAgICAgdGhpcy5jb25maWd1cmFibGUgPSBjb25maWd1cmFibGU7XG4gICAgICAgIHRoaXMud3JpdGFibGUgPSB3cml0YWJsZTtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgICBkZWZpbmUodGFyZ2V0LCBrZXksIF9ob21lKSB7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwge1xuICAgICAgICAgICAgZW51bWVyYWJsZTogdGhpcy5lbnVtZXJhYmxlLFxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0aGlzLmNvbmZpZ3VyYWJsZSxcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0aGlzLndyaXRhYmxlLFxuICAgICAgICAgICAgdmFsdWU6IHRoaXMudmFsdWVcbiAgICAgICAgfSk7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIERhdGFCbHVlcHJpbnQgZXh0ZW5kcyBCbHVlcHJpbnQge1xuICAgIGNvbnN0cnVjdG9yKHsgZW51bWVyYWJsZSA9IHRydWUsIGNvbmZpZ3VyYWJsZSA9IHRydWUsIHdyaXRhYmxlID0gdHJ1ZSwgdmFsdWUgfSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmVudW1lcmFibGUgPSBlbnVtZXJhYmxlO1xuICAgICAgICB0aGlzLmNvbmZpZ3VyYWJsZSA9IGNvbmZpZ3VyYWJsZTtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLndyaXRhYmxlID0gd3JpdGFibGU7XG4gICAgfVxuICAgIGRlc2NyaXB0b3IoX3RhcmdldCwga2V5LCBjbGFzc01ldGEpIHtcbiAgICAgICAgbGV0IHsgZW51bWVyYWJsZSwgY29uZmlndXJhYmxlLCB3cml0YWJsZSwgdmFsdWUgfSA9IHRoaXM7XG4gICAgICAgIGlmIChjbGFzc01ldGEuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgY2xhc3NNZXRhLmFkZENvbmNhdGVuYXRlZFByb3BlcnR5KGtleSwgdmFsdWUpO1xuICAgICAgICAgICAgdmFsdWUgPSBjbGFzc01ldGEuZ2V0Q29uY2F0ZW5hdGVkUHJvcGVydHkoa2V5KTtcbiAgICAgICAgfSBlbHNlIGlmIChjbGFzc01ldGEuaGFzTWVyZ2VkUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgY2xhc3NNZXRhLmFkZE1lcmdlZFByb3BlcnR5KGtleSwgdmFsdWUpO1xuICAgICAgICAgICAgdmFsdWUgPSBjbGFzc01ldGEuZ2V0TWVyZ2VkUHJvcGVydHkoa2V5KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFZhbHVlRGVzY3JpcHRvcih7IGVudW1lcmFibGUsIGNvbmZpZ3VyYWJsZSwgd3JpdGFibGUsIHZhbHVlIH0pO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBBY2Nlc3NvckJsdWVwcmludCBleHRlbmRzIEJsdWVwcmludCB7XG4gICAgY29uc3RydWN0b3IoeyBlbnVtZXJhYmxlID0gdHJ1ZSwgY29uZmlndXJhYmxlID0gdHJ1ZSwgZ2V0LCBzZXQgfSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmVudW1lcmFibGUgPSBlbnVtZXJhYmxlO1xuICAgICAgICB0aGlzLmNvbmZpZ3VyYWJsZSA9IGNvbmZpZ3VyYWJsZTtcbiAgICAgICAgdGhpcy5nZXQgPSBnZXQ7XG4gICAgICAgIHRoaXMuc2V0ID0gc2V0O1xuICAgIH1cbiAgICBkZXNjcmlwdG9yKF90YXJnZXQsIF9rZXksIF9jbGFzc01ldGEpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBWYWx1ZURlc2NyaXB0b3Ioe1xuICAgICAgICAgICAgZW51bWVyYWJsZTogdGhpcy5lbnVtZXJhYmxlLFxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0aGlzLmNvbmZpZ3VyYWJsZSxcbiAgICAgICAgICAgIGdldDogdGhpcy5nZXQsXG4gICAgICAgICAgICBzZXQ6IHRoaXMuc2V0XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbmNsYXNzIE1ldGhvZERlc2NyaXB0b3IgZXh0ZW5kcyBWYWx1ZURlc2NyaXB0b3Ige1xuICAgIGRlZmluZSh0YXJnZXQsIGtleSwgaG9tZSkge1xuICAgICAgICB0aGlzLnZhbHVlID0gd3JhcE1ldGhvZChob21lLCBrZXksIHRoaXMudmFsdWUpO1xuICAgICAgICBzdXBlci5kZWZpbmUodGFyZ2V0LCBrZXksIGhvbWUpO1xuICAgIH1cbn1cbmNsYXNzIE1ldGhvZEJsdWVwcmludCBleHRlbmRzIERhdGFCbHVlcHJpbnQge1xuICAgIGRlc2NyaXB0b3IodGFyZ2V0LCBrZXksIGNsYXNzTWV0YSkge1xuICAgICAgICBsZXQgZGVzYyA9IHN1cGVyLmRlc2NyaXB0b3IodGFyZ2V0LCBrZXksIGNsYXNzTWV0YSk7XG4gICAgICAgIHJldHVybiBuZXcgTWV0aG9kRGVzY3JpcHRvcihkZXNjKTtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gd3JhcE1ldGhvZChob21lLCBtZXRob2ROYW1lLCBvcmlnaW5hbCkge1xuICAgIGlmICghKG1ldGhvZE5hbWUgaW4gaG9tZSkpIHJldHVybiBtYXliZVdyYXAob3JpZ2luYWwpO1xuICAgIGxldCBzdXBlck1ldGhvZCA9IGhvbWVbbWV0aG9kTmFtZV07XG4gICAgbGV0IGZ1bmMgPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBpZiAoIXRoaXMpIHJldHVybiBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgICAgbGV0IGxhc3RTdXBlciA9IHRoaXMuX3N1cGVyO1xuICAgICAgICB0aGlzLl9zdXBlciA9IHN1cGVyTWV0aG9kO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy5fc3VwZXIgPSBsYXN0U3VwZXI7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGZ1bmMuX193cmFwcGVkID0gdHJ1ZTtcbiAgICByZXR1cm4gZnVuYztcbn1cbmZ1bmN0aW9uIG1heWJlV3JhcChvcmlnaW5hbCkge1xuICAgIGlmICgnX193cmFwcGVkJyBpbiBvcmlnaW5hbCkgcmV0dXJuIG9yaWdpbmFsO1xuICAgIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBpZiAoIXRoaXMpIHJldHVybiBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgICAgbGV0IGxhc3RTdXBlciA9IHRoaXMuX3N1cGVyO1xuICAgICAgICB0aGlzLl9zdXBlciA9IFJPT1Q7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICB0aGlzLl9zdXBlciA9IGxhc3RTdXBlcjtcbiAgICAgICAgfVxuICAgIH07XG59Il19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWl4aW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL21peGluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsQUFBTyxTQUFFLEFBQVUsQUFBRSxrQkFBTSxBQUEyQixBQUFDO0FBQ3ZELEFBQU8sU0FBUSxBQUFJLE1BQUUsQUFBTSxBQUFFLGNBQU0sQUFBZSxBQUFDO0FBQ25ELEFBQXNCLFNBRXBCLEFBQVMsV0FDVCxBQUFZLGNBQ1osQUFBVyxBQUNaLG1CQUFNLEFBQVUsQUFBQztBQUVsQixBQUFPLFNBQUUsQUFBSSxBQUFFLFlBQU0sQUFBUyxBQUFDLEFBRy9CLEFBQU07SUFBRSxBQUFPLEFBQUUsVUFBRyxBQUFLLEFBQUM7O0FBRTFCLEFBQU0sT0FBQyxJQUFNLEFBQVUsYUFBRyxBQUFzQyxBQUFDO0FBQ2pFLEFBQU0sT0FBQyxJQUFNLEFBQVMsWUFBSSxBQUFzQyxBQUFDO0FBRWpFLEFBQU0sV0FBTjtBQUNFOztTQUFzQywwQ0FBRyxBQUFJLEFBQUMsQUFFaEQsQUFBQzs7QUFFRCxBQUFNLFdBQU47QUFDRTs7U0FBc0MsMENBQUcsQUFBSSxBQUFDLEFBRWhELEFBQUM7O0FBU0QsQUFBTSxXQTRCSjttQkFBWSxBQUFzQixZQUFFLEFBQWU7QUEzQjNDOzs7O2FBQVUsYUFBc0IsQUFBSSxBQUFDLEFBQ3JDO2FBQXNCLHlCQUFhLEFBQUUsQUFBQyxBQUN0QzthQUFnQixtQkFBYSxBQUFFLEFBQUMsQUFDaEM7YUFBWSxlQUFZLEFBQUUsQUFBQyxBQXlCakMsQUFBSTthQUFDLEFBQU0sT0FBQyxBQUFVLEFBQUMsQUFBQyxBQUN4QixBQUFJOzhCQUFDLEFBQVksY0FBQyxBQUFJLEFBQUMsMEJBQUcsQUFBTSxBQUFDLEFBQUMsQUFDcEMsQUFBQztBQXpCRCxBQUFNOztVQUFDLEFBQU0sQUFBQztBQUNaO0FBRGUsQUFBNEI7OztZQUN2QyxBQUFVLGFBQUcs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SDtBQUFDLEFBQUMsQUFDSjtBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ0xBU1NfTUVUQSB9IGZyb20gJ0BnbGltbWVyL29iamVjdC1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgRGljdCwgZGljdCwgYXNzaWduIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgR2xpbW1lck9iamVjdCwge1xuICBHbGltbWVyT2JqZWN0RmFjdG9yeSxcbiAgQ2xhc3NNZXRhLFxuICBJbnN0YW5jZU1ldGEsXG4gIHR1cmJvY2hhcmdlXG59IGZyb20gJy4vb2JqZWN0JztcblxuaW1wb3J0IHsgUk9PVCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgT3B0aW9uIH0gZnJvbSBcIkBnbGltbWVyL2ludGVyZmFjZXNcIjtcblxuY29uc3QgeyBpc0FycmF5IH0gPSBBcnJheTtcblxuZXhwb3J0IGNvbnN0IERFU0NSSVBUT1IgPSBcIjVkOTBmODRmLTkwOGUtNGE0Mi05NzQ5LTNkMGY1MjNjMjYyY1wiO1xuZXhwb3J0IGNvbnN0IEJMVUVQUklOVCAgPSBcIjhkOTdjZjVmLWRiOWUtNDhkOC1hNmIyLTdhNzViNzE3MDgwNVwiO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRGVzY3JpcHRvciB7XG4gIFwiNWQ5MGY4NGYtOTA4ZS00YTQyLTk3NDktM2QwZjUyM2MyNjJjXCIgPSB0cnVlO1xuICBhYnN0cmFjdCBkZWZpbmUocHJvdG90eXBlOiBPYmplY3QsIGtleTogc3RyaW5nLCBob21lOiBPYmplY3QpOiB2b2lkO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmx1ZXByaW50IHtcbiAgXCI4ZDk3Y2Y1Zi1kYjllLTQ4ZDgtYTZiMi03YTc1YjcxNzA4MDVcIiA9IHRydWU7XG4gIGFic3RyYWN0IGRlc2NyaXB0b3IodGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBjbGFzc01ldGE6IENsYXNzTWV0YSk6IERlc2NyaXB0b3I7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXh0ZW5zaW9ucyB7XG4gIGNvbmNhdGVuYXRlZFByb3BlcnRpZXM/OiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGw7XG4gIG1lcmdlZFByb3BlcnRpZXM/OiBzdHJpbmdbXSB8IHN0cmluZztcbiAgX3N1cGVyPzogRnVuY3Rpb247XG4gIFtpbmRleDogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgY2xhc3MgTWl4aW4ge1xuICBwcml2YXRlIGV4dGVuc2lvbnM6IE9wdGlvbjxEaWN0PGFueT4+ID0gbnVsbDtcbiAgcHJpdmF0ZSBjb25jYXRlbmF0ZWRQcm9wZXJ0aWVzOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIG1lcmdlZFByb3BlcnRpZXM6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgZGVwZW5kZW5jaWVzOiBNaXhpbltdID0gW107XG5cbiAgc3RhdGljIGNyZWF0ZSguLi5hcmdzOiAoTWl4aW4gfCBFeHRlbnNpb25zKVtdKSB7XG4gICAgbGV0IGV4dGVuc2lvbnMgPSBhcmdzW2FyZ3MubGVuZ3RoIC0gMV07XG5cbiAgICBpZiAoYXJncy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBuZXcgdGhpcyh7fSwgW10pO1xuICAgIH0gZWxzZSBpZiAoZXh0ZW5zaW9ucyBpbnN0YW5jZW9mIE1peGluKSB7XG4gICAgICByZXR1cm4gbmV3IHRoaXMoe30sIDxNaXhpbltdPmFyZ3MpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgZGVwcyA9IGFyZ3Muc2xpY2UoMCwgLTEpLm1hcCh0b01peGluKTtcbiAgICAgIHJldHVybiBuZXcgdGhpcyg8RXh0ZW5zaW9ucz5leHRlbnNpb25zLCBkZXBzKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgbWl4aW5zKG9iajogYW55KTogTWl4aW5bXSB7XG4gICAgaWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnIHx8IG9iaiA9PT0gbnVsbCkgcmV0dXJuIFtdO1xuXG4gICAgbGV0IG1ldGEgPSBDbGFzc01ldGEuZm9yKG9iaik7XG4gICAgaWYgKCFtZXRhKSByZXR1cm4gW107XG5cbiAgICByZXR1cm4gbWV0YS5nZXRBcHBsaWVkTWl4aW5zKCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihleHRlbnNpb25zOiBFeHRlbnNpb25zLCBtaXhpbnM6IE1peGluW10pIHtcbiAgICB0aGlzLnJlb3BlbihleHRlbnNpb25zKTtcbiAgICB0aGlzLmRlcGVuZGVuY2llcy5wdXNoKC4uLm1peGlucyk7XG4gIH1cblxuICBkZXRlY3Qob2JqOiBhbnkpOiBib29sZWFuIHtcbiAgICBpZiAodHlwZW9mIG9iaiAhPT0gJ29iamVjdCcgfHwgb2JqID09PSBudWxsKSByZXR1cm4gZmFsc2U7XG5cbiAgICBpZiAob2JqIGluc3RhbmNlb2YgTWl4aW4pIHtcbiAgICAgIHJldHVybiBvYmouZGVwZW5kZW5jaWVzLmluZGV4T2YodGhpcykgIT09IC0xO1xuICAgIH1cblxuICAgIGxldCBtZXRhID0gQ2xhc3NNZXRhLmZvcihvYmopO1xuICAgIHJldHVybiAhIW1ldGEgJiYgbWV0YS5oYXNBcHBsaWVkTWl4aW4odGhpcyk7XG4gIH1cblxuICByZW9wZW4oZXh0ZW5zaW9uczogRXh0ZW5zaW9ucykge1xuICAgIGlmICh0aGlzLmV4dGVuc2lvbnMpIHtcbiAgICAgIHRoaXMuZGVwZW5kZW5jaWVzLnB1c2godG9NaXhpbih0aGlzLmV4dGVuc2lvbnMpKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGV4dGVuc2lvbnMgPT09ICdvYmplY3QnICYmICdjb25jYXRlbmF0ZWRQcm9wZXJ0aWVzJyBpbiBleHRlbnNpb25zKSB7XG4gICAgICBsZXQgY29uY2F0OiBzdHJpbmdbXTtcbiAgICAgIGxldCByYXdDb25jYXQgPSBleHRlbnNpb25zLmNvbmNhdGVuYXRlZFByb3BlcnRpZXM7XG5cbiAgICAgIGlmIChpc0FycmF5KHJhd0NvbmNhdCkpIHtcbiAgICAgICAgY29uY2F0ID0gKDxzdHJpbmdbXT5yYXdDb25jYXQpLnNsaWNlKCk7XG4gICAgICB9IGVsc2UgaWYgKHJhd0NvbmNhdCA9PT0gbnVsbCB8fCByYXdDb25jYXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25jYXQgPSBbXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbmNhdCA9IFs8c3RyaW5nPnJhd0NvbmNhdF07XG4gICAgICB9XG5cbiAgICAgIGRlbGV0ZSBleHRlbnNpb25zLmNvbmNhdGVuYXRlZFByb3BlcnRpZXM7XG4gICAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSBjb25jYXQ7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBleHRlbnNpb25zID09PSAnb2JqZWN0JyAmJiAnbWVyZ2VkUHJvcGVydGllcycgaW4gZXh0ZW5zaW9ucykge1xuICAgICAgbGV0IG1lcmdlZDogc3RyaW5nW107XG4gICAgICBsZXQgcmF3TWVyZ2VkID0gZXh0ZW5zaW9ucy5tZXJnZWRQcm9wZXJ0aWVzO1xuXG4gICAgICBpZiAoaXNBcnJheShyYXdNZXJnZWQpKSB7XG4gICAgICAgIG1lcmdlZCA9ICg8c3RyaW5nW10+cmF3TWVyZ2VkKS5zbGljZSgpO1xuICAgICAgfSBlbHNlIGlmIChyYXdNZXJnZWQgPT09IG51bGwgfHwgcmF3TWVyZ2VkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbWVyZ2VkID0gW107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtZXJnZWQgPSBbPHN0cmluZz5yYXdNZXJnZWRdO1xuICAgICAgfVxuXG4gICAgICBkZWxldGUgZXh0ZW5zaW9ucy5tZXJnZWRQcm9wZXJ0aWVzO1xuICAgICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzID0gbWVyZ2VkO1xuICAgIH1cblxuICAgIGxldCBub3JtYWxpemVkOiBEaWN0PEJsdWVwcmludD4gPSBPYmplY3Qua2V5cyhleHRlbnNpb25zKS5yZWR1Y2UoKG9iaiwga2V5KSA9PiB7XG4gICAgICBsZXQgdmFsdWUgPSBleHRlbnNpb25zW2tleV07XG5cbiAgICAgIHN3aXRjaCAodHlwZW9mIHZhbHVlKSB7XG4gICAgICAgIGNhc2UgJ2Z1bmN0aW9uJzpcbiAgICAgICAgICBvYmpba2V5XSA9IG5ldyBNZXRob2RCbHVlcHJpbnQoeyB2YWx1ZSB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAgICBpZiAodmFsdWUgJiYgQkxVRVBSSU5UIGluIHZhbHVlKSB7XG4gICAgICAgICAgICBvYmpba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBvYmpba2V5XSA9IG5ldyBEYXRhQmx1ZXByaW50KHsgdmFsdWUgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvYmo7XG4gICAgfSwgZGljdDxCbHVlcHJpbnQ+KCkpO1xuXG4gICAgdGhpcy5leHRlbnNpb25zID0gZGljdDxhbnk+KCk7XG4gICAgYXNzaWduKHRoaXMuZXh0ZW5zaW9ucywgdHVyYm9jaGFyZ2Uobm9ybWFsaXplZCkpO1xuICB9XG5cbiAgYXBwbHkodGFyZ2V0OiBhbnkpIHtcbiAgICBsZXQgbWV0YTogQ2xhc3NNZXRhID0gdGFyZ2V0W0NMQVNTX01FVEFdID0gdGFyZ2V0W0NMQVNTX01FVEFdIHx8IG5ldyBDbGFzc01ldGEoKTtcbiAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKG0gPT4gbS5hcHBseSh0YXJnZXQpKTtcbiAgICB0aGlzLm1lcmdlUHJvcGVydGllcyh0YXJnZXQsIHRhcmdldCwgbWV0YSk7XG4gICAgbWV0YS5hZGRNaXhpbih0aGlzKTtcbiAgICBtZXRhLnNlYWwoKTtcbiAgICBtZXRhLnJlc2VhbCh0YXJnZXQpO1xuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuXG4gIGV4dGVuZFByb3RvdHlwZShPcmlnaW5hbDogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICAgIE9yaWdpbmFsLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoT3JpZ2luYWwucHJvdG90eXBlKTtcbiAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKG0gPT4gbS5leHRlbmRQcm90b3R5cGUoT3JpZ2luYWwpKTtcbiAgICB0aGlzLmV4dGVuZFByb3RvdHlwZU9udG8oT3JpZ2luYWwsIE9yaWdpbmFsKTtcbiAgfVxuXG4gIGV4dGVuZFByb3RvdHlwZU9udG8oU3ViY2xhc3M6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4sIFBhcmVudDogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICAgIHRoaXMuZGVwZW5kZW5jaWVzLmZvckVhY2gobSA9PiBtLmV4dGVuZFByb3RvdHlwZU9udG8oU3ViY2xhc3MsIFBhcmVudCkpO1xuICAgIHRoaXMubWVyZ2VQcm9wZXJ0aWVzKFN1YmNsYXNzLnByb3RvdHlwZSwgUGFyZW50LnByb3RvdHlwZSwgU3ViY2xhc3NbQ0xBU1NfTUVUQV0pO1xuICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLmFkZE1peGluKHRoaXMpO1xuICB9XG5cbiAgZXh0ZW5kU3RhdGljKFRhcmdldDogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICAgIHRoaXMuZGVwZW5kZW5jaWVzLmZvckVhY2gobSA9PiBtLmV4dGVuZFN0YXRpYyhUYXJnZXQpKTtcbiAgICB0aGlzLm1lcmdlUHJvcGVydGllcyhUYXJnZXQsIE9iamVjdC5nZXRQcm90b3R5cGVPZihUYXJnZXQpLCBUYXJnZXRbQ0xBU1NfTUVUQV1bQ0xBU1NfTUVUQV0pO1xuICAgIFRhcmdldFtDTEFTU19NRVRBXS5hZGRTdGF0aWNNaXhpbih0aGlzKTtcbiAgfVxuXG4gIG1lcmdlUHJvcGVydGllcyh0YXJnZXQ6IE9iamVjdCwgcGFyZW50OiBPYmplY3QsIG1ldGE6IENsYXNzTWV0YSkge1xuICAgIGlmIChtZXRhLmhhc0FwcGxpZWRNaXhpbih0aGlzKSkgcmV0dXJuO1xuICAgIG1ldGEuYWRkQXBwbGllZE1peGluKHRoaXMpO1xuXG4gICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzLmZvckVhY2goayA9PiBtZXRhLmFkZE1lcmdlZFByb3BlcnR5KGssIHBhcmVudFtrXSkpO1xuICAgIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcy5mb3JFYWNoKGsgPT4gbWV0YS5hZGRDb25jYXRlbmF0ZWRQcm9wZXJ0eShrLCBbXSkpO1xuXG4gICAgbmV3IFZhbHVlRGVzY3JpcHRvcih7IHZhbHVlOiBtZXRhLmdldENvbmNhdGVuYXRlZFByb3BlcnRpZXMoKSB9KS5kZWZpbmUodGFyZ2V0LCAnY29uY2F0ZW5hdGVkUHJvcGVydGllcycpO1xuICAgIG5ldyBWYWx1ZURlc2NyaXB0b3IoeyB2YWx1ZTogbWV0YS5nZXRNZXJnZWRQcm9wZXJ0aWVzKCkgfSkuZGVmaW5lKHRhcmdldCwgJ21lcmdlZFByb3BlcnRpZXMnKTtcblxuICAgIE9iamVjdC5rZXlzKHRoaXMuZXh0ZW5zaW9ucykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgbGV0IGV4dGVuc2lvbjogQmx1ZXByaW50ID0gdGhpcy5leHRlbnNpb25zIVtrZXldO1xuICAgICAgbGV0IGRlc2MgPSBleHRlbnNpb24uZGVzY3JpcHRvcih0YXJnZXQsIDxzdHJpbmc+a2V5LCBtZXRhKTtcbiAgICAgIGRlc2MuZGVmaW5lKHRhcmdldCwgPHN0cmluZz5rZXksIHBhcmVudCk7XG4gICAgfSk7XG5cbiAgICBuZXcgVmFsdWVEZXNjcmlwdG9yKHsgdmFsdWU6IFJPT1QgfSkuZGVmaW5lKHRhcmdldCwgPHN0cmluZz4nX3N1cGVyJyk7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgRXh0ZW5zaW9uID0gTWl4aW4gfCBFeHRlbnNpb25zO1xuXG5leHBvcnQgZnVuY3Rpb24gZXh0ZW5kPFQgZXh0ZW5kcyBHbGltbWVyT2JqZWN0PihQYXJlbnQ6IEdsaW1tZXJPYmplY3RGYWN0b3J5PFQ+LCAuLi5leHRlbnNpb25zOiBFeHRlbnNpb25bXSk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4ge1xuICBsZXQgU3VwZXIgPSA8dHlwZW9mIEdsaW1tZXJPYmplY3Q+UGFyZW50O1xuXG4gIGxldCBTdWJjbGFzcyA9IGNsYXNzIGV4dGVuZHMgU3VwZXIge307XG4gIFN1YmNsYXNzW0NMQVNTX01FVEFdID0gSW5zdGFuY2VNZXRhLmZyb21QYXJlbnQoUGFyZW50W0NMQVNTX01FVEFdKTtcblxuICBsZXQgbWl4aW5zID0gZXh0ZW5zaW9ucy5tYXAodG9NaXhpbik7XG4gIFBhcmVudFtDTEFTU19NRVRBXS5hZGRTdWJjbGFzcyhTdWJjbGFzcyBhcyBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+KTtcbiAgbWl4aW5zLmZvckVhY2gobSA9PiBTdWJjbGFzc1tDTEFTU19NRVRBXS5hZGRNaXhpbihtKSk7XG5cbiAgQ2xhc3NNZXRhLmFwcGx5QWxsTWl4aW5zKFN1YmNsYXNzIGFzIEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4sIFBhcmVudCk7XG5cbiAgcmV0dXJuIFN1YmNsYXNzIGFzIGFueTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbGlua1N1YmNsYXNzZXMoUGFyZW50OiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+KSB7XG4gIFBhcmVudFtDTEFTU19NRVRBXS5nZXRTdWJjbGFzc2VzKCkuZm9yRWFjaCgoU3ViY2xhc3M6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pID0+IHtcbiAgICBTdWJjbGFzc1tDTEFTU19NRVRBXS5yZXNldChQYXJlbnRbQ0xBU1NfTUVUQV0pO1xuICAgIFN1YmNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoUGFyZW50LnByb3RvdHlwZSk7XG5cbiAgICBDbGFzc01ldGEuYXBwbHlBbGxNaXhpbnMoU3ViY2xhc3MsIFBhcmVudCk7XG5cbiAgICAvLyByZWN1cnNlIGludG8gc3ViLXN1YmNsYXNzZXNcbiAgICByZWxpbmtTdWJjbGFzc2VzKFN1YmNsYXNzKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b01peGluKGV4dGVuc2lvbjogRXh0ZW5zaW9uKTogTWl4aW4ge1xuICBpZiAoZXh0ZW5zaW9uIGluc3RhbmNlb2YgTWl4aW4pIHJldHVybiBleHRlbnNpb247XG4gIGVsc2UgcmV0dXJuIG5ldyBNaXhpbig8T2JqZWN0PmV4dGVuc2lvbiwgW10pO1xufVxuXG5jbGFzcyBWYWx1ZURlc2NyaXB0b3IgZXh0ZW5kcyBEZXNjcmlwdG9yIHtcbiAgcHVibGljIGVudW1lcmFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyBjb25maWd1cmFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyB3cml0YWJsZTogYm9vbGVhbjtcbiAgcHVibGljIHZhbHVlOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoeyBlbnVtZXJhYmxlPXRydWUsIGNvbmZpZ3VyYWJsZT10cnVlLCB3cml0YWJsZT10cnVlLCB2YWx1ZSB9OiBQcm9wZXJ0eURlc2NyaXB0b3IpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZW51bWVyYWJsZSA9IGVudW1lcmFibGU7XG4gICAgdGhpcy5jb25maWd1cmFibGUgPSBjb25maWd1cmFibGU7XG4gICAgdGhpcy53cml0YWJsZSA9IHdyaXRhYmxlO1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIGRlZmluZSh0YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIF9ob21lPzogYW55KSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCB7XG4gICAgICBlbnVtZXJhYmxlOiB0aGlzLmVudW1lcmFibGUsXG4gICAgICBjb25maWd1cmFibGU6IHRoaXMuY29uZmlndXJhYmxlLFxuICAgICAgd3JpdGFibGU6IHRoaXMud3JpdGFibGUsXG4gICAgICB2YWx1ZTogdGhpcy52YWx1ZVxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEYXRhQmx1ZXByaW50IGV4dGVuZHMgQmx1ZXByaW50IHtcbiAgcHVibGljIGVudW1lcmFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyBjb25maWd1cmFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyB2YWx1ZTogYW55O1xuICBwdWJsaWMgd3JpdGFibGU6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoeyBlbnVtZXJhYmxlPXRydWUsIGNvbmZpZ3VyYWJsZT10cnVlLCB3cml0YWJsZT10cnVlLCB2YWx1ZSB9OiBQcm9wZXJ0eURlc2NyaXB0b3IpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZW51bWVyYWJsZSA9IGVudW1lcmFibGU7XG4gICAgdGhpcy5jb25maWd1cmFibGUgPSBjb25maWd1cmFibGU7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMud3JpdGFibGUgPSB3cml0YWJsZTtcbiAgfVxuXG4gIGRlc2NyaXB0b3IoX3RhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgY2xhc3NNZXRhOiBDbGFzc01ldGEpOiBEZXNjcmlwdG9yIHtcbiAgICBsZXQgeyBlbnVtZXJhYmxlLCBjb25maWd1cmFibGUsIHdyaXRhYmxlLCB2YWx1ZSB9ID0gdGhpcztcblxuICAgIGlmIChjbGFzc01ldGEuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydHkoPHN0cmluZz5rZXkpKSB7XG4gICAgICBjbGFzc01ldGEuYWRkQ29uY2F0ZW5hdGVkUHJvcGVydHkoPHN0cmluZz5rZXksIHZhbHVlKTtcbiAgICAgIHZhbHVlID0gY2xhc3NNZXRhLmdldENvbmNhdGVuYXRlZFByb3BlcnR5KDxzdHJpbmc+a2V5KTtcbiAgICB9IGVsc2UgaWYgKGNsYXNzTWV0YS5oYXNNZXJnZWRQcm9wZXJ0eSg8c3RyaW5nPmtleSkpIHtcbiAgICAgIGNsYXNzTWV0YS5hZGRNZXJnZWRQcm9wZXJ0eSg8c3RyaW5nPmtleSwgdmFsdWUpO1xuICAgICAgdmFsdWUgPSBjbGFzc01ldGEuZ2V0TWVyZ2VkUHJvcGVydHkoPHN0cmluZz5rZXkpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgVmFsdWVEZXNjcmlwdG9yKHsgZW51bWVyYWJsZSwgY29uZmlndXJhYmxlLCB3cml0YWJsZSwgdmFsdWUgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFjY2Vzc29yQmx1ZXByaW50IGV4dGVuZHMgQmx1ZXByaW50IHtcbiAgcHVibGljIGVudW1lcmFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyBjb25maWd1cmFibGU6IGJvb2xlYW47XG4gIGdldDogKCkgPT4gYW55O1xuICBzZXQ6ICh2YWx1ZTogYW55KSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKHsgZW51bWVyYWJsZT10cnVlLCBjb25maWd1cmFibGU9dHJ1ZSwgZ2V0LCBzZXQgfTogUHJvcGVydHlEZXNjcmlwdG9yICYgeyBnZXQ6IGFueSwgc2V0OiBhbnkgfSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5lbnVtZXJhYmxlID0gZW51bWVyYWJsZTtcbiAgICB0aGlzLmNvbmZpZ3VyYWJsZSA9IGNvbmZpZ3VyYWJsZTtcbiAgICB0aGlzLmdldCA9IGdldDtcbiAgICB0aGlzLnNldCA9IHNldDtcbiAgfVxuXG4gIGRlc2NyaXB0b3IoX3RhcmdldDogT2JqZWN0LCBfa2V5OiBzdHJpbmcsIF9jbGFzc01ldGE6IENsYXNzTWV0YSk6IERlc2NyaXB0b3Ige1xuICAgIHJldHVybiBuZXcgVmFsdWVEZXNjcmlwdG9yKHtcbiAgICAgIGVudW1lcmFibGU6IHRoaXMuZW51bWVyYWJsZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdGhpcy5jb25maWd1cmFibGUsXG4gICAgICBnZXQ6IHRoaXMuZ2V0LFxuICAgICAgc2V0OiB0aGlzLnNldFxuICAgIH0pO1xuICB9XG59XG5cbmNsYXNzIE1ldGhvZERlc2NyaXB0b3IgZXh0ZW5kcyBWYWx1ZURlc2NyaXB0b3Ige1xuICBkZWZpbmUodGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBob21lOiBPYmplY3QpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gd3JhcE1ldGhvZChob21lLCBrZXksIHRoaXMudmFsdWUpO1xuICAgIHN1cGVyLmRlZmluZSh0YXJnZXQsIGtleSwgaG9tZSk7XG4gIH1cbn1cblxuY2xhc3MgTWV0aG9kQmx1ZXByaW50IGV4dGVuZHMgRGF0YUJsdWVwcmludCB7XG4gIGRlc2NyaXB0b3IodGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBjbGFzc01ldGE6IENsYXNzTWV0YSk6IE1ldGhvZERlc2NyaXB0b3Ige1xuICAgIGxldCBkZXNjID0gc3VwZXIuZGVzY3JpcHRvcih0YXJnZXQsIGtleSwgY2xhc3NNZXRhKTtcbiAgICByZXR1cm4gbmV3IE1ldGhvZERlc2NyaXB0b3IoZGVzYyBhcyBQcm9wZXJ0eURlc2NyaXB0b3IpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cmFwTWV0aG9kKGhvbWU6IE9iamVjdCwgbWV0aG9kTmFtZTogc3RyaW5nLCBvcmlnaW5hbDogKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnkpIHtcbiAgaWYgKCEoPHN0cmluZz5tZXRob2ROYW1lIGluIGhvbWUpKSByZXR1cm4gbWF5YmVXcmFwKG9yaWdpbmFsKTtcblxuICBsZXQgc3VwZXJNZXRob2QgPSBob21lW21ldGhvZE5hbWVdO1xuXG4gIGxldCBmdW5jID0gZnVuY3Rpb24odGhpczogR2xpbW1lck9iamVjdCwgLi4uYXJnczogYW55W10pIHtcbiAgICBpZiAoIXRoaXMpIHJldHVybiBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcblxuICAgIGxldCBsYXN0U3VwZXIgPSB0aGlzLl9zdXBlcjtcbiAgICB0aGlzLl9zdXBlciA9IHN1cGVyTWV0aG9kO1xuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fc3VwZXIgPSBsYXN0U3VwZXI7XG4gICAgfVxuICB9O1xuXG4gICg8YW55PmZ1bmMpLl9fd3JhcHBlZCA9IHRydWU7XG5cbiAgcmV0dXJuIGZ1bmM7XG59XG5cbmZ1bmN0aW9uIG1heWJlV3JhcChvcmlnaW5hbDogRnVuY3Rpb24pIHtcbiAgaWYgKCdfX3dyYXBwZWQnIGluIG9yaWdpbmFsKSByZXR1cm4gb3JpZ2luYWw7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uKHRoaXM6IEdsaW1tZXJPYmplY3QsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgaWYgKCF0aGlzKSByZXR1cm4gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJncyk7XG5cbiAgICBsZXQgbGFzdFN1cGVyID0gdGhpcy5fc3VwZXI7XG4gICAgdGhpcy5fc3VwZXIgPSBST09UO1xuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fc3VwZXIgPSBsYXN0U3VwZXI7XG4gICAgfVxuICB9O1xufVxuIl19

@@ -405,2 +405,2 @@ function _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; }

GlimmerObject.isClass = true;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9vYmplY3QuanMiXSwibmFtZXMiOlsiTWV0YSIsIlByb3BlcnR5UmVmZXJlbmNlIiwiZGljdCIsImFzc2lnbiIsImluaXRpYWxpemVHdWlkIiwiZXh0ZW5kIiwiZXh0ZW5kQ2xhc3MiLCJ0b01peGluIiwicmVsaW5rU3ViY2xhc3NlcyIsIndyYXBNZXRob2QiLCJpc0FycmF5IiwiQXJyYXkiLCJST09UIiwiRU1QVFlfQ0FDSEUiLCJDTEFTU19NRVRBIiwidHVyYm9jaGFyZ2UiLCJvYmoiLCJTZWFsZWRNZXRhIiwiYWRkUmVmZXJlbmNlVHlwZUZvciIsIkVycm9yIiwiQ2xhc3NNZXRhIiwicmVmZXJlbmNlVHlwZXMiLCJwcm9wZXJ0eU1ldGFkYXRhIiwiY29uY2F0ZW5hdGVkUHJvcGVydGllcyIsImhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXMiLCJtZXJnZWRQcm9wZXJ0aWVzIiwiaGFzTWVyZ2VkUHJvcGVydGllcyIsIm1peGlucyIsImFwcGxpZWRNaXhpbnMiLCJzdGF0aWNNaXhpbnMiLCJzdWJjbGFzc2VzIiwic2xvdHMiLCJJbnN0YW5jZU1ldGFDb25zdHJ1Y3RvciIsImZyb21QYXJlbnQiLCJwYXJlbnQiLCJtZXRhIiwicmVzZXQiLCJmb3IiLCJvYmplY3QiLCJjb25zdHJ1Y3RvciIsImluaXQiLCJhdHRycyIsImNvbmNhdFByb3BzIiwicHJvcCIsImNvbmNhdCIsInNsaWNlIiwibWVyZ2VkUHJvcHMiLCJtZXJnZWQiLCJhZGRTdGF0aWNNaXhpbiIsIm1peGluIiwicHVzaCIsImFkZE1peGluIiwiZ2V0U3RhdGljTWl4aW5zIiwiZ2V0TWl4aW5zIiwiYWRkQXBwbGllZE1peGluIiwiaGFzQXBwbGllZE1peGluIiwiaW5kZXhPZiIsImdldEFwcGxpZWRNaXhpbnMiLCJoYXNTdGF0aWNNaXhpbiIsImFwcGx5QWxsTWl4aW5zIiwiU3ViY2xhc3MiLCJQYXJlbnQiLCJmb3JFYWNoIiwibSIsImV4dGVuZFByb3RvdHlwZU9udG8iLCJleHRlbmRTdGF0aWMiLCJzZWFsIiwiYWRkU3ViY2xhc3MiLCJnZXRTdWJjbGFzc2VzIiwiYWRkUHJvcGVydHlNZXRhZGF0YSIsInByb3BlcnR5IiwidmFsdWUiLCJtZXRhZGF0YUZvclByb3BlcnR5IiwidHlwZSIsImFkZFNsb3RGb3IiLCJoYXNDb25jYXRlbmF0ZWRQcm9wZXJ0eSIsImdldENvbmNhdGVuYXRlZFByb3BlcnR5IiwiZ2V0Q29uY2F0ZW5hdGVkUHJvcGVydGllcyIsIk9iamVjdCIsImtleXMiLCJhZGRDb25jYXRlbmF0ZWRQcm9wZXJ0eSIsInZhbCIsImhhc01lcmdlZFByb3BlcnR5IiwiZ2V0TWVyZ2VkUHJvcGVydHkiLCJnZXRNZXJnZWRQcm9wZXJ0aWVzIiwiYWRkTWVyZ2VkUHJvcGVydHkiLCJKU09OIiwic3RyaW5naWZ5IiwibWVyZ2VNZXJnZWRQcm9wZXJ0aWVzIiwiZ2V0UmVmZXJlbmNlVHlwZXMiLCJnZXRQcm9wZXJ0eU1ldGFkYXRhIiwicmVzZWFsIiwiZnJlc2giLCJnZXRTbG90cyIsIlNsb3RzIiwibmFtZSIsImFyZ3VtZW50cyIsInJlZmVyZW5jZVR5cGVGb3IiLCJ3cmFwcGVkIiwiSW5zdGFuY2VNZXRhIiwiR2xpbW1lck9iamVjdCIsIl9zdXBlciIsIl9tZXRhIiwiZXh0ZW5zaW9ucyIsImNyZWF0ZSIsInJlb3BlbiIsImV4dGVuZFByb3RvdHlwZSIsInJlb3BlbkNsYXNzIiwibWV0YUZvclByb3BlcnR5IiwiZWFjaENvbXB1dGVkUHJvcGVydHkiLCJjYWxsYmFjayIsIm1ldGFkYXRhIiwiZ2V0Iiwia2V5Iiwic2V0Iiwic2V0UHJvcGVydGllcyIsImRlc3Ryb3kiLCJpc0NsYXNzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLFNBQVNBLElBQVQsRUFBZUMsaUJBQWYsUUFBd0MsMkJBQXhDO0FBQ0EsU0FBU0MsSUFBVCxFQUFlQyxNQUFmLEVBQXVCQyxjQUF2QixRQUE2QyxlQUE3QztBQUNBLFNBQVNDLFVBQVVDLFdBQW5CLEVBQWdDQyxPQUFoQyxFQUF5Q0MsZ0JBQXpDLEVBQTJE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QS9DS2hCLGE7O0FBaURyQkEsY0FBYyxzQ0FBZCxJQUF3REQsYUFBYWxFLFVBQWIsQ0FBd0IsSUFBeEIsQ0FBeEQ7QUFDQW1FLGNBQWNpQixPQUFkLEdBQXdCLElBQXhCIiwiZmlsZSI6ImxpYi9vYmplY3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNZXRhLCBQcm9wZXJ0eVJlZmVyZW5jZSB9IGZyb20gJ0BnbGltbWVyL29iamVjdC1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgZGljdCwgYXNzaWduLCBpbml0aWFsaXplR3VpZCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgZXh0ZW5kIGFzIGV4dGVuZENsYXNzLCB0b01peGluLCByZWxpbmtTdWJjbGFzc2VzLCB3cmFwTWV0aG9kIH0gZnJvbSAnLi9taXhpbic7XG5jb25zdCB7IGlzQXJyYXkgfSA9IEFycmF5O1xuaW1wb3J0IHsgUk9PVCB9IGZyb20gJy4vdXRpbHMnO1xuZXhwb3J0IGNvbnN0IEVNUFRZX0NBQ0hFID0gZnVuY3Rpb24gRU1QVFlfQ0FDSEUoKSB7fTtcbmNvbnN0IENMQVNTX01FVEEgPSBcImRmOGJlNGM4LTRlODktNDRlMi1hOGY5LTU1MGM4ZGFjZGNhN1wiO1xuZXhwb3J0IGZ1bmN0aW9uIHR1cmJvY2hhcmdlKG9iaikge1xuICAgIC8vIGZ1bmN0aW9uIER1bW15KCkge31cbiAgICAvLyBEdW1teS5wcm90b3R5cGUgPSBvYmo7XG4gICAgcmV0dXJuIG9iajtcbn1cbmNsYXNzIFNlYWxlZE1ldGEgZXh0ZW5kcyBNZXRhIHtcbiAgICBhZGRSZWZlcmVuY2VUeXBlRm9yKC4uLl9hcmdzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBtb2RpZnkgcmVmZXJlbmNlIHR5cGVzIG9uIGEgc2VhbGVkIG1ldGFcIik7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIENsYXNzTWV0YSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMucmVmZXJlbmNlVHlwZXMgPSBkaWN0KCk7XG4gICAgICAgIHRoaXMucHJvcGVydHlNZXRhZGF0YSA9IGRpY3QoKTtcbiAgICAgICAgdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzID0gZGljdCgpO1xuICAgICAgICB0aGlzLmhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzID0gZGljdCgpO1xuICAgICAgICB0aGlzLmhhc01lcmdlZFByb3BlcnRpZXMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5taXhpbnMgPSBbXTtcbiAgICAgICAgdGhpcy5hcHBsaWVkTWl4aW5zID0gW107XG4gICAgICAgIHRoaXMuc3RhdGljTWl4aW5zID0gW107XG4gICAgICAgIHRoaXMuc3ViY2xhc3NlcyA9IFtdO1xuICAgICAgICB0aGlzLnNsb3RzID0gW107XG4gICAgICAgIHRoaXMuSW5zdGFuY2VNZXRhQ29uc3RydWN0b3IgPSBudWxsO1xuICAgIH1cbiAgICBzdGF0aWMgZnJvbVBhcmVudChwYXJlbnQpIHtcbiAgICAgICAgbGV0IG1ldGEgPSBuZXcgdGhpcygpO1xuICAgICAgICBtZXRhLnJlc2V0KHBhcmVudCk7XG4gICAgICAgIHJldHVybiBtZXRhO1xuICAgIH1cbiAgICBzdGF0aWMgZm9yKG9iamVjdCkge1xuICAgICAgICBpZiAoQ0xBU1NfTUVUQSBpbiBvYmplY3QpIHJldHVybiBvYmplY3RbQ0xBU1NfTUVUQV07ZWxzZSBpZiAob2JqZWN0LmNvbnN0cnVjdG9yKSByZXR1cm4gb2JqZWN0LmNvbnN0cnVjdG9yW0NMQVNTX01FVEFdIHx8IG51bGw7ZWxzZSByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaW5pdChvYmplY3QsIGF0dHJzKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXR0cnMgIT09ICdvYmplY3QnIHx8IGF0dHJzID09PSBudWxsKSByZXR1cm47XG4gICAgICAgIGlmICh0aGlzLmhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIGxldCBjb25jYXRQcm9wcyA9IHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcztcbiAgICAgICAgICAgIGZvciAobGV0IHByb3AgaW4gY29uY2F0UHJvcHMpIHtcbiAgICAgICAgICAgICAgICBpZiAocHJvcCBpbiBhdHRycykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgY29uY2F0ID0gY29uY2F0UHJvcHNbcHJvcF0uc2xpY2UoKTtcbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0W3Byb3BdID0gY29uY2F0LmNvbmNhdChhdHRyc1twcm9wXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmhhc01lcmdlZFByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIGxldCBtZXJnZWRQcm9wcyA9IHRoaXMubWVyZ2VkUHJvcGVydGllcztcbiAgICAgICAgICAgIGZvciAobGV0IHByb3AgaW4gbWVyZ2VkUHJvcHMpIHtcbiAgICAgICAgICAgICAgICBpZiAocHJvcCBpbiBhdHRycykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbWVyZ2VkID0gYXNzaWduKHt9LCBtZXJnZWRQcm9wc1twcm9wXSk7XG4gICAgICAgICAgICAgICAgICAgIG9iamVjdFtwcm9wXSA9IGFzc2lnbihtZXJnZWQsIGF0dHJzW3Byb3BdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgYWRkU3RhdGljTWl4aW4obWl4aW4pIHtcbiAgICAgICAgdGhpcy5zdGF0aWNNaXhpbnMucHVzaChtaXhpbik7XG4gICAgfVxuICAgIGFkZE1peGluKG1peGluKSB7XG4gICAgICAgIHRoaXMubWl4aW5zLnB1c2gobWl4aW4pO1xuICAgIH1cbiAgICBnZXRTdGF0aWNNaXhpbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRpY01peGlucztcbiAgICB9XG4gICAgZ2V0TWl4aW5zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5taXhpbnM7XG4gICAgfVxuICAgIGFkZEFwcGxpZWRNaXhpbihtaXhpbikge1xuICAgICAgICB0aGlzLmFwcGxpZWRNaXhpbnMucHVzaChtaXhpbik7XG4gICAgfVxuICAgIGhhc0FwcGxpZWRNaXhpbihtaXhpbikge1xuICAgICAgICByZXR1cm4gdGhpcy5hcHBsaWVkTWl4aW5zLmluZGV4T2YobWl4aW4pICE9PSAtMTtcbiAgICB9XG4gICAgZ2V0QXBwbGllZE1peGlucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBwbGllZE1peGlucztcbiAgICB9XG4gICAgaGFzU3RhdGljTWl4aW4obWl4aW4pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGljTWl4aW5zLmluZGV4T2YobWl4aW4pICE9PSAtMTtcbiAgICB9XG4gICAgc3RhdGljIGFwcGx5QWxsTWl4aW5zKFN1YmNsYXNzLCBQYXJlbnQpIHtcbiAgICAgICAgU3ViY2xhc3NbQ0xBU1NfTUVUQV0uZ2V0TWl4aW5zKCkuZm9yRWFjaChtID0+IG0uZXh0ZW5kUHJvdG90eXBlT250byhTdWJjbGFzcywgUGFyZW50KSk7XG4gICAgICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLmdldFN0YXRpY01peGlucygpLmZvckVhY2gobSA9PiBtLmV4dGVuZFN0YXRpYyhTdWJjbGFzcykpO1xuICAgICAgICBTdWJjbGFzc1tDTEFTU19NRVRBXS5zZWFsKCk7XG4gICAgfVxuICAgIGFkZFN1YmNsYXNzKGNvbnN0cnVjdG9yKSB7XG4gICAgICAgIHRoaXMuc3ViY2xhc3Nlcy5wdXNoKGNvbnN0cnVjdG9yKTtcbiAgICB9XG4gICAgZ2V0U3ViY2xhc3NlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3ViY2xhc3NlcztcbiAgICB9XG4gICAgYWRkUHJvcGVydHlNZXRhZGF0YShwcm9wZXJ0eSwgdmFsdWUpIHtcbiAgICAgICAgdGhpcy5wcm9wZXJ0eU1ldGFkYXRhW3Byb3BlcnR5XSA9IHZhbHVlO1xuICAgIH1cbiAgICBtZXRhZGF0YUZvclByb3BlcnR5KHByb3BlcnR5KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3BlcnR5TWV0YWRhdGFbcHJvcGVydHldO1xuICAgIH1cbiAgICBhZGRSZWZlcmVuY2VUeXBlRm9yKHByb3BlcnR5LCB0eXBlKSB7XG4gICAgICAgIHRoaXMucmVmZXJlbmNlVHlwZXNbcHJvcGVydHldID0gdHlwZTtcbiAgICB9XG4gICAgYWRkU2xvdEZvcihwcm9wZXJ0eSkge1xuICAgICAgICB0aGlzLnNsb3RzLnB1c2gocHJvcGVydHkpO1xuICAgIH1cbiAgICBoYXNDb25jYXRlbmF0ZWRQcm9wZXJ0eShwcm9wZXJ0eSkge1xuICAgICAgICBpZiAoIXRoaXMuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcykgcmV0dXJuIGZhbHNlO1xuICAgICAgICByZXR1cm4gcHJvcGVydHkgaW4gdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzO1xuICAgIH1cbiAgICBnZXRDb25jYXRlbmF0ZWRQcm9wZXJ0eShwcm9wZXJ0eSkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XTtcbiAgICB9XG4gICAgZ2V0Q29uY2F0ZW5hdGVkUHJvcGVydGllcygpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcyk7XG4gICAgfVxuICAgIGFkZENvbmNhdGVuYXRlZFByb3BlcnR5KHByb3BlcnR5LCB2YWx1ZSkge1xuICAgICAgICB0aGlzLmhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSB0cnVlO1xuICAgICAgICBpZiAocHJvcGVydHkgaW4gdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICBsZXQgdmFsID0gdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XS5jb25jYXQodmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XSA9IHZhbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllc1twcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBoYXNNZXJnZWRQcm9wZXJ0eShwcm9wZXJ0eSkge1xuICAgICAgICBpZiAoIXRoaXMuaGFzTWVyZ2VkUHJvcGVydGllcykgcmV0dXJuIGZhbHNlO1xuICAgICAgICByZXR1cm4gcHJvcGVydHkgaW4gdGhpcy5tZXJnZWRQcm9wZXJ0aWVzO1xuICAgIH1cbiAgICBnZXRNZXJnZWRQcm9wZXJ0eShwcm9wZXJ0eSkge1xuICAgICAgICByZXR1cm4gdGhpcy5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XTtcbiAgICB9XG4gICAgZ2V0TWVyZ2VkUHJvcGVydGllcygpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMubWVyZ2VkUHJvcGVydGllcyk7XG4gICAgfVxuICAgIGFkZE1lcmdlZFByb3BlcnR5KHByb3BlcnR5LCB2YWx1ZSkge1xuICAgICAgICB0aGlzLmhhc01lcmdlZFByb3BlcnRpZXMgPSB0cnVlO1xuICAgICAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgWW91IHBhc3NlZCBpbiBcXGAke0pTT04uc3RyaW5naWZ5KHZhbHVlKX1cXGAgYXMgdGhlIHZhbHVlIGZvciBcXGBmb29cXGAgYnV0IFxcYGZvb1xcYCBjYW5ub3QgYmUgYW4gQXJyYXlgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvcGVydHkgaW4gdGhpcy5tZXJnZWRQcm9wZXJ0aWVzICYmIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wZXJ0eV0gJiYgdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wZXJ0eV0gPSBtZXJnZU1lcmdlZFByb3BlcnRpZXModmFsdWUsIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wZXJ0eV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZSA9PT0gbnVsbCA/IHZhbHVlIDogdmFsdWUgfHwge307XG4gICAgICAgICAgICB0aGlzLm1lcmdlZFByb3BlcnRpZXNbcHJvcGVydHldID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0UmVmZXJlbmNlVHlwZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZVR5cGVzO1xuICAgIH1cbiAgICBnZXRQcm9wZXJ0eU1ldGFkYXRhKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9wZXJ0eU1ldGFkYXRhO1xuICAgIH1cbiAgICByZXNldChwYXJlbnQpIHtcbiAgICAgICAgdGhpcy5yZWZlcmVuY2VUeXBlcyA9IGRpY3QoKTtcbiAgICAgICAgdGhpcy5wcm9wZXJ0eU1ldGFkYXRhID0gZGljdCgpO1xuICAgICAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSBkaWN0KCk7XG4gICAgICAgIHRoaXMubWVyZ2VkUHJvcGVydGllcyA9IGRpY3QoKTtcbiAgICAgICAgaWYgKHBhcmVudCkge1xuICAgICAgICAgICAgdGhpcy5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzID0gcGFyZW50Lmhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXM7XG4gICAgICAgICAgICBmb3IgKGxldCBwcm9wIGluIHBhcmVudC5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzW3Byb3BdID0gcGFyZW50LmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcF0uc2xpY2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuaGFzTWVyZ2VkUHJvcGVydGllcyA9IHBhcmVudC5oYXNNZXJnZWRQcm9wZXJ0aWVzO1xuICAgICAgICAgICAgZm9yIChsZXQgcHJvcCBpbiBwYXJlbnQubWVyZ2VkUHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wXSA9IGFzc2lnbih7fSwgcGFyZW50Lm1lcmdlZFByb3BlcnRpZXNbcHJvcF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXNzaWduKHRoaXMucmVmZXJlbmNlVHlwZXMsIHBhcmVudC5yZWZlcmVuY2VUeXBlcyk7XG4gICAgICAgICAgICBhc3NpZ24odGhpcy5wcm9wZXJ0eU1ldGFkYXRhLCBwYXJlbnQucHJvcGVydHlNZXRhZGF0YSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmVzZWFsKG9iaikge1xuICAgICAgICBsZXQgbWV0YSA9IE1ldGEuZm9yKG9iaik7XG4gICAgICAgIGxldCBmcmVzaCA9IG5ldyB0aGlzLkluc3RhbmNlTWV0YUNvbnN0cnVjdG9yKG9iaiwge30pO1xuICAgICAgICBsZXQgcmVmZXJlbmNlVHlwZXMgPSBtZXRhLmdldFJlZmVyZW5jZVR5cGVzKCk7XG4gICAgICAgIGxldCBzbG90cyA9IG1ldGEuZ2V0U2xvdHMoKTtcbiAgICAgICAgdHVyYm9jaGFyZ2UoYXNzaWduKHJlZmVyZW5jZVR5cGVzLCB0aGlzLnJlZmVyZW5jZVR5cGVzKSk7XG4gICAgICAgIHR1cmJvY2hhcmdlKGFzc2lnbihzbG90cywgZnJlc2guZ2V0U2xvdHMoKSkpO1xuICAgIH1cbiAgICBzZWFsKCkge1xuICAgICAgICBsZXQgcmVmZXJlbmNlVHlwZXMgPSB0dXJib2NoYXJnZShhc3NpZ24oe30sIHRoaXMucmVmZXJlbmNlVHlwZXMpKTtcbiAgICAgICAgdHVyYm9jaGFyZ2UodGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKTtcbiAgICAgICAgdHVyYm9jaGFyZ2UodGhpcy5tZXJnZWRQcm9wZXJ0aWVzKTtcbiAgICAgICAgaWYgKCF0aGlzLmhhc01lcmdlZFByb3BlcnRpZXMgJiYgIXRoaXMuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcykge1xuICAgICAgICAgICAgdGhpcy5pbml0ID0gZnVuY3Rpb24gKCkge307XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHNsb3RzID0gdGhpcy5zbG90cztcbiAgICAgICAgY2xhc3MgU2xvdHMge1xuICAgICAgICAgICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgICAgICAgICAgc2xvdHMuZm9yRWFjaChuYW1lID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpc1tuYW1lXSA9IEVNUFRZX0NBQ0hFO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuSW5zdGFuY2VNZXRhQ29uc3RydWN0b3IgPSBjbGFzcyBleHRlbmRzIFNlYWxlZE1ldGEge1xuICAgICAgICAgICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgICAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNsb3RzID0gbmV3IFNsb3RzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWZlcmVuY2VUeXBlcyA9IHJlZmVyZW5jZVR5cGVzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZ2V0UmVmZXJlbmNlVHlwZXMoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlVHlwZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZWZlcmVuY2VUeXBlRm9yKHByb3BlcnR5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlVHlwZXNbcHJvcGVydHldIHx8IFByb3BlcnR5UmVmZXJlbmNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZ2V0U2xvdHMoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2xvdHM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHR1cmJvY2hhcmdlKHRoaXMpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIG1lcmdlTWVyZ2VkUHJvcGVydGllcyhhdHRycywgcGFyZW50KSB7XG4gICAgbGV0IG1lcmdlZCA9IGFzc2lnbih7fSwgcGFyZW50KTtcbiAgICBmb3IgKGxldCBwcm9wIGluIGF0dHJzKSB7XG4gICAgICAgIGlmIChwcm9wIGluIHBhcmVudCAmJiB0eXBlb2YgcGFyZW50W3Byb3BdID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBhdHRyc1twcm9wXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgbGV0IHdyYXBwZWQgPSB3cmFwTWV0aG9kKHBhcmVudCwgcHJvcCwgYXR0cnNbcHJvcF0pO1xuICAgICAgICAgICAgbWVyZ2VkW3Byb3BdID0gd3JhcHBlZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1lcmdlZFtwcm9wXSA9IGF0dHJzW3Byb3BdO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtZXJnZWQ7XG59XG5leHBvcnQgY2xhc3MgSW5zdGFuY2VNZXRhIGV4dGVuZHMgQ2xhc3NNZXRhIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgdGhpc1tcImRmOGJlNGM4LTRlODktNDRlMi1hOGY5LTU1MGM4ZGFjZGNhN1wiXSA9IENsYXNzTWV0YS5mcm9tUGFyZW50KG51bGwpO1xuICAgIH1cbiAgICBzdGF0aWMgZnJvbVBhcmVudChwYXJlbnQpIHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmZyb21QYXJlbnQocGFyZW50KTtcbiAgICB9XG4gICAgcmVzZXQocGFyZW50KSB7XG4gICAgICAgIHN1cGVyLnJlc2V0KHBhcmVudCk7XG4gICAgICAgIGlmIChwYXJlbnQpIHRoaXNbQ0xBU1NfTUVUQV0ucmVzZXQocGFyZW50W0NMQVNTX01FVEFdKTtcbiAgICB9XG4gICAgc2VhbCgpIHtcbiAgICAgICAgc3VwZXIuc2VhbCgpO1xuICAgICAgICB0aGlzW0NMQVNTX01FVEFdLnNlYWwoKTtcbiAgICB9XG59XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHbGltbWVyT2JqZWN0IHtcbiAgICBjb25zdHJ1Y3RvcihhdHRycykge1xuICAgICAgICB0aGlzLl9zdXBlciA9IFJPT1Q7XG4gICAgICAgIHRoaXMuX21ldGEgPSBudWxsO1xuICAgICAgICBpZiAoYXR0cnMpIGFzc2lnbih0aGlzLCBhdHRycyk7XG4gICAgICAgIHRoaXMuY29uc3RydWN0b3JbQ0xBU1NfTUVUQV0uaW5pdCh0aGlzLCBhdHRycyB8fCBudWxsKTtcbiAgICAgICAgdGhpcy5fc3VwZXIgPSBST09UO1xuICAgICAgICBpbml0aWFsaXplR3VpZCh0aGlzKTtcbiAgICAgICAgdGhpcy5pbml0KCk7XG4gICAgfVxuICAgIHN0YXRpYyBleHRlbmQoLi4uZXh0ZW5zaW9ucykge1xuICAgICAgICByZXR1cm4gZXh0ZW5kQ2xhc3ModGhpcywgLi4uZXh0ZW5zaW9ucyk7XG4gICAgfVxuICAgIHN0YXRpYyBjcmVhdGUoYXR0cnMpIHtcbiAgICAgICAgcmV0dXJuIG5ldyB0aGlzKGF0dHJzKTtcbiAgICB9XG4gICAgc3RhdGljIHJlb3BlbihleHRlbnNpb25zKSB7XG4gICAgICAgIHRvTWl4aW4oZXh0ZW5zaW9ucykuZXh0ZW5kUHJvdG90eXBlKHRoaXMpO1xuICAgICAgICB0aGlzW0NMQVNTX01FVEFdLnNlYWwoKTtcbiAgICAgICAgcmVsaW5rU3ViY2xhc3Nlcyh0aGlzKTtcbiAgICB9XG4gICAgc3RhdGljIHJlb3BlbkNsYXNzKGV4dGVuc2lvbnMpIHtcbiAgICAgICAgdG9NaXhpbihleHRlbnNpb25zKS5leHRlbmRTdGF0aWModGhpcyk7XG4gICAgICAgIHRoaXNbQ0xBU1NfTUVUQV0uc2VhbCgpO1xuICAgIH1cbiAgICBzdGF0aWMgbWV0YUZvclByb3BlcnR5KHByb3BlcnR5KSB7XG4gICAgICAgIGxldCB2YWx1ZSA9IHRoaXNbQ0xBU1NfTUVUQV0ubWV0YWRhdGFGb3JQcm9wZXJ0eShwcm9wZXJ0eSk7XG4gICAgICAgIGlmICghdmFsdWUpIHRocm93IG5ldyBFcnJvcihgbWV0YUZvclByb3BlcnR5KCkgY291bGQgbm90IGZpbmQgYSBjb21wdXRlZCBwcm9wZXJ0eSB3aXRoIGtleSAnJHtwcm9wZXJ0eX0nLmApO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIHN0YXRpYyBlYWNoQ29tcHV0ZWRQcm9wZXJ0eShjYWxsYmFjaykge1xuICAgICAgICBsZXQgbWV0YWRhdGEgPSB0aGlzW0NMQVNTX01FVEFdLmdldFByb3BlcnR5TWV0YWRhdGEoKTtcbiAgICAgICAgaWYgKCFtZXRhZGF0YSkgcmV0dXJuO1xuICAgICAgICBmb3IgKGxldCBwcm9wIGluIG1ldGFkYXRhKSB7XG4gICAgICAgICAgICBjYWxsYmFjayhwcm9wLCBtZXRhZGF0YVtwcm9wXSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaW5pdCgpIHt9XG4gICAgZ2V0KGtleSkge1xuICAgICAgICByZXR1cm4gdGhpc1trZXldO1xuICAgIH1cbiAgICBzZXQoa2V5LCB2YWx1ZSkge1xuICAgICAgICB0aGlzW2tleV0gPSB2YWx1ZTtcbiAgICB9XG4gICAgc2V0UHJvcGVydGllcyhhdHRycykge1xuICAgICAgICBhc3NpZ24odGhpcywgYXR0cnMpO1xuICAgIH1cbiAgICBkZXN0cm95KCkge31cbn1cbkdsaW1tZXJPYmplY3RbXCJkZjhiZTRjOC00ZTg5LTQ0ZTItYThmOS01NTBjOGRhY2RjYTdcIl0gPSBJbnN0YW5jZU1ldGEuZnJvbVBhcmVudChudWxsKTtcbkdsaW1tZXJPYmplY3QuaXNDbGFzcyA9IHRydWU7Il19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvQGdsaW1tZXIvb2JqZWN0L2xpYi9vYmplY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxBQUFPLFNBQ0wsQUFBSSxNQUVKLEFBQWlCLEFBQ2xCLHlCQUFNLEFBQTJCLEFBQUM7QUFDbkMsQUFBTyxTQUFRLEFBQUksTUFBRSxBQUFNLFFBQUUsQUFBYyxBQUFFLHNCQUFNLEFBQWUsQUFBQztBQUNuRSxBQUFPLFNBRUwsQUFBTSxVQUFJLEFBQVcsYUFDckIsQUFBTyxTQUNQLEFBQWdCLGtCQUNoQixBQUFVLEFBQ1gsa0JBQU0sQUFBUyxBQUFDLEFBRWpCLEFBQU07SUFBRSxBQUFPLEFBQUUsVUFBRyxBQUFLLEFBQUM7O0FBRTFCLEFBQU8sU0FBRSxBQUFJLEFBQUUsWUFBTSxBQUFTLEFBQUM7QUFHL0IsQUFBTSxPQUFDLElBQU0sQUFBVyxjQUFHLHVCQUF3QixBQUFDLEFBQUM7QUFFckQsSUFBTSxBQUFVLGFBQUcsQUFBc0MsQUFBQztBQXdCMUQsQUFBTSw0QkFBeUIsQUFBTSxLQUNuQyxBQUFzQjtBQUN0QixBQUF5QjtBQUN6QixBQUFNO1dBQUMsQUFBRyxBQUFDLEFBQ2IsQUFBQztBQUVEOztJQUEwQjs7Ozs7Ozs7O3lCQUNKLEFBQUcsQUFBWSxxREFDakM7Y0FBTSxJQUFJLEFBQUssTUFBQyxBQUFnRCxBQUFDLEFBQUMsQUFDcEUsQUFBQyxBQUNGOzs7O0VBSmlDLEFBQUksQUFDcEMsQUFBbUI7O0FBS3JCLEFBQU0sV0FBTjs7QUFDVTs7YUFBYyxpQkFBRyxBQUFJLEFBQThCLEFBQUMsQUFDcEQ7YUFBZ0IsbUJBQUcsQUFBSSxBQUFPLEFBQUMsQUFDL0I7YUFBc0IseUJBQUcsQUFBSSxBQUFTLEFBQUMsQUFDdkM7YUFBeUIsNEJBQUcsQUFBSyxBQUFDLEFBQ2xDO2FBQWdCLG1CQUFHLEFBQUksQUFBVSxBQUFDLEFBQ2xDO2FB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a0UsQUFBUSxBQUFJLEFBQUMsQUFBQyxBQUM1RyxBQUFNO2VBQUMsQUFBSyxBQUFDLEFBQ2YsQUFBQztBQUVELEFBQU07O2tCQUFDLEFBQW9CLHFEQUFDLEFBQXdDLFVBQ2xFO1lBQUksQUFBUSxXQUFHLEFBQUksS0FBQyxBQUFVLEFBQUMsWUFBQyxBQUFtQixBQUFFLEFBQUMsQUFDdEQsQUFBRSxBQUFDO1lBQUMsQ0FBQyxBQUFRLEFBQUMsVUFBQyxBQUFNLEFBQUMsQUFFdEIsQUFBRyxBQUFDO2FBQUMsSUFBSSxBQUFJLFFBQUksQUFBUSxBQUFDLFVBQUMsQUFBQyxBQUMxQixBQUFRO3FCQUFDLEFBQUksTUFBRSxBQUFRLFNBQUMsQUFBSSxBQUFDLEFBQUMsQUFBQyxBQUNqQyxBQUFDLEFBQ0g7QUFBQztBQU1ELEFBQUk7O21EQUFJLEFBQUMsQ0FVVCxBQUFHOzsrQ0FBQyxBQUFXLEtBQ2IsQUFBTTtlQUFDLEFBQUksS0FBQyxBQUFHLEFBQUMsQUFBQyxBQUNuQixBQUFDO0FBRUQsQUFBRzs7K0NBQUMsQUFBVyxLQUFFLEFBQVUsT0FDekIsQUFBSTthQUFDLEFBQUcsQUFBQyxPQUFHLEFBQUssQUFBQyxBQUNwQixBQUFDO0FBRUQsQUFBYTs7bUVBQUMsQUFBYSxPQUN6QixBQUFNO2VBQUMsQUFBSSxNQUFFLEFBQUssQUFBQyxBQUFDLEFBQ3RCLEFBQUM7QUFFRCxBQUFPOzt5REFBSSxBQUFDOzs7Ozs7O0FBcEVMLGNBQXNDLDBDQUFpQixBQUFZLGFBQUMsQUFBVSxXQUFDLEFBQUksQUFBQyxBQUFDO0FBQ3JGLGNBQU8sVUFBRyxBQUFJLEFBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBNZXRhLFxuICBJbm5lclJlZmVyZW5jZUZhY3RvcnksXG4gIFByb3BlcnR5UmVmZXJlbmNlXG59IGZyb20gJ0BnbGltbWVyL29iamVjdC1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgRGljdCwgZGljdCwgYXNzaWduLCBpbml0aWFsaXplR3VpZCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHtcbiAgTWl4aW4sXG4gIGV4dGVuZCBhcyBleHRlbmRDbGFzcyxcbiAgdG9NaXhpbixcbiAgcmVsaW5rU3ViY2xhc3NlcyxcbiAgd3JhcE1ldGhvZFxufSBmcm9tICcuL21peGluJztcblxuY29uc3QgeyBpc0FycmF5IH0gPSBBcnJheTtcblxuaW1wb3J0IHsgUk9PVCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgT3B0aW9uIH0gZnJvbSBcIkBnbGltbWVyL2ludGVyZmFjZXNcIjtcblxuZXhwb3J0IGNvbnN0IEVNUFRZX0NBQ0hFID0gZnVuY3Rpb24gRU1QVFlfQ0FDSEUoKSB7fTtcblxuY29uc3QgQ0xBU1NfTUVUQSA9IFwiZGY4YmU0YzgtNGU4OS00NGUyLWE4ZjktNTUwYzhkYWNkY2E3XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2JqZWN0V2l0aE1peGlucyB7XG4gIFwiZGY4YmU0YzgtNGU4OS00NGUyLWE4ZjktNTUwYzhkYWNkY2E3XCI6IENsYXNzTWV0YTtcbiAgX21ldGE6IE1ldGE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5zdGFuY2VXaXRoTWl4aW5zIHtcbiAgY29uc3RydWN0b3I6IE9iamVjdFdpdGhNaXhpbnM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2xpbW1lck9iamVjdEZhY3Rvcnk8VD4ge1xuICBuZXc8VT4oYXR0cnM/OiBVKTogR2xpbW1lck9iamVjdCAmIFQgJiBVO1xuICBleHRlbmQoKTogR2xpbW1lck9iamVjdEZhY3Rvcnk8T2JqZWN0PjtcbiAgZXh0ZW5kPFQ+KGV4dGVuc2lvbjogVCk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PFQ+O1xuICBleHRlbmQoLi4uZXh0ZW5zaW9uczogT2JqZWN0W10pOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxPYmplY3Q+O1xuICBjcmVhdGU8VT4oYXR0cnM/OiBVKTogR2xpbW1lck9iamVjdCAmIFQgJiBVO1xuICByZW9wZW48VT4oZXh0ZW5zaW9uczogVSk6IHZvaWQ7XG4gIHJlb3BlbkNsYXNzPFU+KGV4dGVuc2lvbnM6IFUpOiB2b2lkO1xuICBtZXRhRm9yUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IE9iamVjdDtcbiAgZWFjaENvbXB1dGVkUHJvcGVydHkoY2FsbGJhY2s6IChzOiBzdHJpbmcsIG86IE9iamVjdCkgPT4gdm9pZCk6IHZvaWQ7XG4gIFwiZGY4YmU0YzgtNGU4OS00NGUyLWE4ZjktNTUwYzhkYWNkY2E3XCI6IEluc3RhbmNlTWV0YTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR1cmJvY2hhcmdlPFQ+KG9iajogVCk6IFQge1xuICAvLyBmdW5jdGlvbiBEdW1teSgpIHt9XG4gIC8vIER1bW15LnByb3RvdHlwZSA9IG9iajtcbiAgcmV0dXJuIG9iajtcbn1cblxuYWJzdHJhY3QgY2xhc3MgU2VhbGVkTWV0YSBleHRlbmRzIE1ldGEge1xuICBhZGRSZWZlcmVuY2VUeXBlRm9yKC4uLl9hcmdzOiBhbnlbXSk6IElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgbW9kaWZ5IHJlZmVyZW5jZSB0eXBlcyBvbiBhIHNlYWxlZCBtZXRhXCIpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDbGFzc01ldGEge1xuICBwcml2YXRlIHJlZmVyZW5jZVR5cGVzID0gZGljdDxJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55Pj4oKTtcbiAgcHJpdmF0ZSBwcm9wZXJ0eU1ldGFkYXRhID0gZGljdDxhbnk+KCk7XG4gIHByaXZhdGUgY29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IGRpY3Q8YW55W10+KCk7XG4gIHByaXZhdGUgaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IGZhbHNlO1xuICBwcml2YXRlIG1lcmdlZFByb3BlcnRpZXMgPSBkaWN0PE9iamVjdD4oKTtcbiAgcHJpdmF0ZSBoYXNNZXJnZWRQcm9wZXJ0aWVzID0gZmFsc2U7XG4gIHByaXZhdGUgbWl4aW5zOiBNaXhpbltdID0gW107XG4gIHByaXZhdGUgYXBwbGllZE1peGluczogTWl4aW5bXSA9IFtdO1xuICBwcml2YXRlIHN0YXRpY01peGluczogTWl4aW5bXSA9IFtdO1xuICBwcml2YXRlIHN1YmNsYXNzZXM6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT5bXSA9IFtdO1xuICBwcml2YXRlIHNsb3RzOiBzdHJpbmdbXSA9IFtdO1xuICBwdWJsaWMgSW5zdGFuY2VNZXRhQ29uc3RydWN0b3I6IE9wdGlvbjx0eXBlb2YgTWV0YT4gPSBudWxsO1xuXG4gIHN0YXRpYyBmcm9tUGFyZW50KHBhcmVudDogT3B0aW9uPENsYXNzTWV0YT4pIHtcbiAgICBsZXQgbWV0YSA9IG5ldyB0aGlzKCk7XG4gICAgbWV0YS5yZXNldChwYXJlbnQpO1xuICAgIHJldHVybiBtZXRhO1xuICB9XG5cbiAgc3RhdGljIGZvcihvYmplY3Q6IE9iamVjdFdpdGhNaXhpbnMgfCBJbnN0YW5jZVdpdGhNaXhpbnMpOiBPcHRpb248Q2xhc3NNZXRhPiB7XG4gICAgaWYgKENMQVNTX01FVEEgaW4gb2JqZWN0KSByZXR1cm4gKDxPYmplY3RXaXRoTWl4aW5zPm9iamVjdClbQ0xBU1NfTUVUQV07XG4gICAgZWxzZSBpZiAob2JqZWN0LmNvbnN0cnVjdG9yKSByZXR1cm4gKDxJbnN0YW5jZVdpdGhNaXhpbnM+b2JqZWN0KS5jb25zdHJ1Y3RvcltDTEFTU19NRVRBXSB8fCBudWxsO1xuICAgIGVsc2UgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpbml0KG9iamVjdDogR2xpbW1lck9iamVjdCwgYXR0cnM6IE9wdGlvbjxPYmplY3Q+KSB7XG4gICAgaWYgKHR5cGVvZiBhdHRycyAhPT0gJ29iamVjdCcgfHwgYXR0cnMgPT09IG51bGwpIHJldHVybjtcblxuICAgIGlmICh0aGlzLmhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXMpIHtcbiAgICAgIGxldCBjb25jYXRQcm9wcyA9IHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcztcbiAgICAgIGZvciAobGV0IHByb3AgaW4gY29uY2F0UHJvcHMpIHtcbiAgICAgICAgaWYgKHByb3AgaW4gYXR0cnMpIHtcbiAgICAgICAgICBsZXQgY29uY2F0ID0gY29uY2F0UHJvcHNbcHJvcF0uc2xpY2UoKTtcbiAgICAgICAgICBvYmplY3RbcHJvcF0gPSBjb25jYXQuY29uY2F0KGF0dHJzW3Byb3BdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmhhc01lcmdlZFByb3BlcnRpZXMpIHtcbiAgICAgIGxldCBtZXJnZWRQcm9wcyA9IHRoaXMubWVyZ2VkUHJvcGVydGllcztcbiAgICAgIGZvciAobGV0IHByb3AgaW4gbWVyZ2VkUHJvcHMpIHtcbiAgICAgICAgaWYgKHByb3AgaW4gYXR0cnMpIHtcbiAgICAgICAgICBsZXQgbWVyZ2VkID0gYXNzaWduKHt9LCBtZXJnZWRQcm9wc1twcm9wXSk7XG4gICAgICAgICAgb2JqZWN0W3Byb3BdID0gYXNzaWduKG1lcmdlZCwgYXR0cnNbcHJvcF0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYWRkU3RhdGljTWl4aW4obWl4aW46IE1peGluKSB7XG4gICAgdGhpcy5zdGF0aWNNaXhpbnMucHVzaChtaXhpbik7XG4gIH1cblxuICBhZGRNaXhpbihtaXhpbjogTWl4aW4pIHtcbiAgICB0aGlzLm1peGlucy5wdXNoKG1peGluKTtcbiAgfVxuXG4gIGdldFN0YXRpY01peGlucygpOiBNaXhpbltdIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0aWNNaXhpbnM7XG4gIH1cblxuICBnZXRNaXhpbnMoKTogTWl4aW5bXSB7XG4gICAgcmV0dXJuIHRoaXMubWl4aW5zO1xuICB9XG5cbiAgYWRkQXBwbGllZE1peGluKG1peGluOiBNaXhpbikge1xuICAgIHRoaXMuYXBwbGllZE1peGlucy5wdXNoKG1peGluKTtcbiAgfVxuXG4gIGhhc0FwcGxpZWRNaXhpbihtaXhpbjogTWl4aW4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hcHBsaWVkTWl4aW5zLmluZGV4T2YobWl4aW4pICE9PSAtMTtcbiAgfVxuXG4gIGdldEFwcGxpZWRNaXhpbnMoKTogTWl4aW5bXSB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbGllZE1peGlucztcbiAgfVxuXG4gIGhhc1N0YXRpY01peGluKG1peGluOiBNaXhpbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0YXRpY01peGlucy5pbmRleE9mKG1peGluKSAhPT0gLTE7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlBbGxNaXhpbnMoU3ViY2xhc3M6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4sIFBhcmVudDogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLmdldE1peGlucygpLmZvckVhY2goKG06IE1peGluKSA9PiBtLmV4dGVuZFByb3RvdHlwZU9udG8oU3ViY2xhc3MsIFBhcmVudCkpO1xuICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLmdldFN0YXRpY01peGlucygpLmZvckVhY2goKG06IE1peGluKSA9PiBtLmV4dGVuZFN0YXRpYyhTdWJjbGFzcykpO1xuICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLnNlYWwoKTtcbiAgfVxuXG4gIGFkZFN1YmNsYXNzKGNvbnN0cnVjdG9yOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+KSB7XG4gICAgdGhpcy5zdWJjbGFzc2VzLnB1c2goY29uc3RydWN0b3IpO1xuICB9XG5cbiAgZ2V0U3ViY2xhc3NlcygpOiBGdW5jdGlvbltdIHtcbiAgICByZXR1cm4gdGhpcy5zdWJjbGFzc2VzO1xuICB9XG5cbiAgYWRkUHJvcGVydHlNZXRhZGF0YShwcm9wZXJ0eTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5wcm9wZXJ0eU1ldGFkYXRhW3Byb3BlcnR5XSA9IHZhbHVlO1xuICB9XG5cbiAgbWV0YWRhdGFGb3JQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nKTogT2JqZWN0IHtcbiAgICByZXR1cm4gdGhpcy5wcm9wZXJ0eU1ldGFkYXRhW3Byb3BlcnR5XTtcbiAgfVxuXG4gIGFkZFJlZmVyZW5jZVR5cGVGb3IocHJvcGVydHk6IHN0cmluZywgdHlwZTogSW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4pIHtcbiAgICB0aGlzLnJlZmVyZW5jZVR5cGVzW3Byb3BlcnR5XSA9IHR5cGU7XG4gIH1cblxuICBhZGRTbG90Rm9yKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICB0aGlzLnNsb3RzLnB1c2gocHJvcGVydHkpO1xuICB9XG5cbiAgaGFzQ29uY2F0ZW5hdGVkUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIDxzdHJpbmc+cHJvcGVydHkgaW4gdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzO1xuICB9XG5cbiAgZ2V0Q29uY2F0ZW5hdGVkUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XTtcbiAgfVxuXG4gIGdldENvbmNhdGVuYXRlZFByb3BlcnRpZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiA8c3RyaW5nW10+T2JqZWN0LmtleXModGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKTtcbiAgfVxuXG4gIGFkZENvbmNhdGVuYXRlZFByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSB0cnVlO1xuXG4gICAgaWYgKDxzdHJpbmc+cHJvcGVydHkgaW4gdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKSB7XG4gICAgICBsZXQgdmFsID0gdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XS5jb25jYXQodmFsdWUpO1xuICAgICAgdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XSA9IHZhbDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGhhc01lcmdlZFByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuaGFzTWVyZ2VkUHJvcGVydGllcykgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiA8c3RyaW5nPnByb3BlcnR5IGluIHRoaXMubWVyZ2VkUHJvcGVydGllcztcbiAgfVxuXG4gIGdldE1lcmdlZFByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBPYmplY3Qge1xuICAgIHJldHVybiB0aGlzLm1lcmdlZFByb3BlcnRpZXNbcHJvcGVydHldO1xuICB9XG5cbiAgZ2V0TWVyZ2VkUHJvcGVydGllcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIDxzdHJpbmdbXT5PYmplY3Qua2V5cyh0aGlzLm1lcmdlZFByb3BlcnRpZXMpO1xuICB9XG5cbiAgYWRkTWVyZ2VkUHJvcGVydHkocHJvcGVydHk6IHN0cmluZywgdmFsdWU6IE9iamVjdCkge1xuICAgIHRoaXMuaGFzTWVyZ2VkUHJvcGVydGllcyA9IHRydWU7XG5cbiAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgWW91IHBhc3NlZCBpbiBcXGAke0pTT04uc3RyaW5naWZ5KHZhbHVlKX1cXGAgYXMgdGhlIHZhbHVlIGZvciBcXGBmb29cXGAgYnV0IFxcYGZvb1xcYCBjYW5ub3QgYmUgYW4gQXJyYXlgKTtcbiAgICB9XG5cbiAgICBpZiAoPHN0cmluZz5wcm9wZXJ0eSBpbiB0aGlzLm1lcmdlZFByb3BlcnRpZXMgJiYgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XSAmJiB2YWx1ZSkge1xuICAgICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XSA9IG1lcmdlTWVyZ2VkUHJvcGVydGllcyh2YWx1ZSwgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlID0gdmFsdWUgPT09IG51bGwgPyB2YWx1ZSA6IHZhbHVlIHx8IHt9O1xuICAgICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGdldFJlZmVyZW5jZVR5cGVzKCk6IERpY3Q8SW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4+IHtcbiAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2VUeXBlcztcbiAgfVxuXG4gIGdldFByb3BlcnR5TWV0YWRhdGEoKTogRGljdDxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5wcm9wZXJ0eU1ldGFkYXRhO1xuICB9XG5cbiAgcmVzZXQocGFyZW50OiBPcHRpb248Q2xhc3NNZXRhPikge1xuICAgIHRoaXMucmVmZXJlbmNlVHlwZXMgPSBkaWN0PElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+PigpO1xuICAgIHRoaXMucHJvcGVydHlNZXRhZGF0YSA9IGRpY3QoKTtcbiAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSBkaWN0PGFueVtdPigpO1xuICAgIHRoaXMubWVyZ2VkUHJvcGVydGllcyA9IGRpY3Q8T2JqZWN0PigpO1xuXG4gICAgaWYgKHBhcmVudCkge1xuICAgICAgdGhpcy5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzID0gcGFyZW50Lmhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXM7XG4gICAgICBmb3IgKGxldCBwcm9wIGluIHBhcmVudC5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllc1twcm9wXSA9IHBhcmVudC5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzW3Byb3BdLnNsaWNlKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaGFzTWVyZ2VkUHJvcGVydGllcyA9IHBhcmVudC5oYXNNZXJnZWRQcm9wZXJ0aWVzO1xuICAgICAgZm9yIChsZXQgcHJvcCBpbiBwYXJlbnQubWVyZ2VkUHJvcGVydGllcykge1xuICAgICAgICB0aGlzLm1lcmdlZFByb3BlcnRpZXNbcHJvcF0gPSBhc3NpZ24oe30sIHBhcmVudC5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BdKTtcbiAgICAgIH1cblxuICAgICAgYXNzaWduKHRoaXMucmVmZXJlbmNlVHlwZXMsIHBhcmVudC5yZWZlcmVuY2VUeXBlcyk7XG4gICAgICBhc3NpZ24odGhpcy5wcm9wZXJ0eU1ldGFkYXRhLCBwYXJlbnQucHJvcGVydHlNZXRhZGF0YSk7XG4gICAgfVxuICB9XG5cbiAgcmVzZWFsKG9iajogT2JqZWN0KSB7XG4gICAgbGV0IG1ldGEgPSBNZXRhLmZvcihvYmopO1xuICAgIGxldCBmcmVzaCA9IG5ldyB0aGlzLkluc3RhbmNlTWV0YUNvbnN0cnVjdG9yIShvYmosIHt9KTtcbiAgICBsZXQgcmVmZXJlbmNlVHlwZXMgPSBtZXRhLmdldFJlZmVyZW5jZVR5cGVzKCk7XG4gICAgbGV0IHNsb3RzID0gbWV0YS5nZXRTbG90cygpO1xuXG4gICAgdHVyYm9jaGFyZ2UoYXNzaWduKHJlZmVyZW5jZVR5cGVzLCB0aGlzLnJlZmVyZW5jZVR5cGVzKSk7XG4gICAgdHVyYm9jaGFyZ2UoYXNzaWduKHNsb3RzLCBmcmVzaC5nZXRTbG90cygpKSk7XG4gIH1cblxuICBzZWFsKCkge1xuICAgIGxldCByZWZlcmVuY2VUeXBlczogRGljdDxJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55Pj4gPSB0dXJib2NoYXJnZShhc3NpZ24oe30sIHRoaXMucmVmZXJlbmNlVHlwZXMpKTtcbiAgICB0dXJib2NoYXJnZSh0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMpO1xuICAgIHR1cmJvY2hhcmdlKHRoaXMubWVyZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoIXRoaXMuaGFzTWVyZ2VkUHJvcGVydGllcyAmJiAhdGhpcy5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKSB7XG4gICAgICB0aGlzLmluaXQgPSBmdW5jdGlvbigpIHt9O1xuICAgIH1cblxuICAgIGxldCBzbG90cyA9IHRoaXMuc2xvdHM7XG5cbiAgICBjbGFzcyBTbG90cyB7XG4gICAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc2xvdHMuZm9yRWFjaChuYW1lID0+IHtcbiAgICAgICAgICB0aGlzW25hbWVdID0gRU1QVFlfQ0FDSEU7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuSW5zdGFuY2VNZXRhQ29uc3RydWN0b3IgPSBjbGFzcyBleHRlbmRzIFNlYWxlZE1ldGEge1xuICAgICAgcHJvdGVjdGVkIHNsb3RzOiBTbG90cyA9IG5ldyBTbG90cygpO1xuICAgICAgcHVibGljIHJlZmVyZW5jZVR5cGVzOiBEaWN0PElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+PiA9IHJlZmVyZW5jZVR5cGVzO1xuXG4gICAgICBnZXRSZWZlcmVuY2VUeXBlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlVHlwZXM7XG4gICAgICB9XG5cbiAgICAgIHJlZmVyZW5jZVR5cGVGb3IocHJvcGVydHk6IHN0cmluZyk6IElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlVHlwZXNbcHJvcGVydHldIHx8IFByb3BlcnR5UmVmZXJlbmNlO1xuICAgICAgfVxuXG4gICAgICBnZXRTbG90cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2xvdHM7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHR1cmJvY2hhcmdlKHRoaXMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1lcmdlTWVyZ2VkUHJvcGVydGllcyhhdHRyczogT2JqZWN0LCBwYXJlbnQ6IE9iamVjdCkge1xuICBsZXQgbWVyZ2VkID0gYXNzaWduKHt9LCBwYXJlbnQpO1xuXG4gIGZvciAobGV0IHByb3AgaW4gYXR0cnMpIHtcbiAgICBpZiAocHJvcCBpbiBwYXJlbnQgJiYgdHlwZW9mIHBhcmVudFtwcm9wXSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgYXR0cnNbcHJvcF0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGxldCB3cmFwcGVkID0gd3JhcE1ldGhvZChwYXJlbnQsIHByb3AsIGF0dHJzW3Byb3BdKTtcbiAgICAgIG1lcmdlZFtwcm9wXSA9IHdyYXBwZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1lcmdlZFtwcm9wXSA9IGF0dHJzW3Byb3BdO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtZXJnZWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBJbnN0YW5jZU1ldGEgZXh0ZW5kcyBDbGFzc01ldGEge1xuICBwdWJsaWMgXCJkZjhiZTRjOC00ZTg5LTQ0ZTItYThmOS01NTBjOGRhY2RjYTdcIjogQ2xhc3NNZXRhID0gQ2xhc3NNZXRhLmZyb21QYXJlbnQobnVsbCk7XG5cbiAgc3RhdGljIGZyb21QYXJlbnQocGFyZW50OiBPcHRpb248SW5zdGFuY2VNZXRhPik6IEluc3RhbmNlTWV0YSB7XG4gICAgcmV0dXJuIDxJbnN0YW5jZU1ldGE+c3VwZXIuZnJvbVBhcmVudChwYXJlbnQpO1xuICB9XG5cbiAgcmVzZXQocGFyZW50OiBJbnN0YW5jZU1ldGEpIHtcbiAgICBzdXBlci5yZXNldChwYXJlbnQpO1xuICAgIGlmIChwYXJlbnQpIHRoaXNbQ0xBU1NfTUVUQV0ucmVzZXQocGFyZW50W0NMQVNTX01FVEFdKTtcbiAgfVxuXG4gIHNlYWwoKSB7XG4gICAgc3VwZXIuc2VhbCgpO1xuICAgIHRoaXNbQ0xBU1NfTUVUQV0uc2VhbCgpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdsaW1tZXJPYmplY3Qge1xuICBzdGF0aWMgXCJkZjhiZTRjOC00ZTg5LTQ0ZTItYThmOS01NTBjOGRhY2RjYTdcIjogSW5zdGFuY2VNZXRhID0gSW5zdGFuY2VNZXRhLmZyb21QYXJlbnQobnVsbCk7XG4gIHN0YXRpYyBpc0NsYXNzID0gdHJ1ZTtcblxuICBzdGF0aWMgZXh0ZW5kKCk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4gJiB0eXBlb2YgR2xpbW1lck9iamVjdDtcbiAgc3RhdGljIGV4dGVuZDxUPihleHRlbnNpb246IFQpOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxUPiAmIHR5cGVvZiBHbGltbWVyT2JqZWN0O1xuICBzdGF0aWMgZXh0ZW5kKC4uLmV4dGVuc2lvbnM6IE9iamVjdFtdKTogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PiAmIHR5cGVvZiBHbGltbWVyT2JqZWN0O1xuXG4gIHN0YXRpYyBleHRlbmQodGhpczogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PiwgLi4uZXh0ZW5zaW9uczogYW55W10pIHtcbiAgICByZXR1cm4gZXh0ZW5kQ2xhc3ModGhpcywgLi4uZXh0ZW5zaW9ucyk7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlKGF0dHJzPzogT2JqZWN0IHwgbnVsbCk6IEdsaW1tZXJPYmplY3Qge1xuICAgIHJldHVybiBuZXcgdGhpcyhhdHRycyk7XG4gIH1cblxuICBzdGF0aWMgcmVvcGVuPFU+KGV4dGVuc2lvbnM6IFUpOiB2b2lkIHtcbiAgICB0b01peGluKGV4dGVuc2lvbnMpLmV4dGVuZFByb3RvdHlwZSh0aGlzKTtcbiAgICB0aGlzW0NMQVNTX01FVEFdLnNlYWwoKTtcblxuICAgIHJlbGlua1N1YmNsYXNzZXModGhpcyk7XG4gIH1cblxuICBzdGF0aWMgcmVvcGVuQ2xhc3M8VT4oZXh0ZW5zaW9uczogVSk6IHZvaWQge1xuICAgIHRvTWl4aW4oZXh0ZW5zaW9ucykuZXh0ZW5kU3RhdGljKHRoaXMpO1xuICAgIHRoaXNbQ0xBU1NfTUVUQV0uc2VhbCgpO1xuICB9XG5cbiAgc3RhdGljIG1ldGFGb3JQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nKTogT2JqZWN0IHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzW0NMQVNTX01FVEFdLm1ldGFkYXRhRm9yUHJvcGVydHkocHJvcGVydHkpO1xuICAgIGlmICghdmFsdWUpIHRocm93IG5ldyBFcnJvcihgbWV0YUZvclByb3BlcnR5KCkgY291bGQgbm90IGZpbmQgYSBjb21wdXRlZCBwcm9wZXJ0eSB3aXRoIGtleSAnJHtwcm9wZXJ0eX0nLmApO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHN0YXRpYyBlYWNoQ29tcHV0ZWRQcm9wZXJ0eShjYWxsYmFjazogKHM6IHN0cmluZywgbzogT2JqZWN0KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgbGV0IG1ldGFkYXRhID0gdGhpc1tDTEFTU19NRVRBXS5nZXRQcm9wZXJ0eU1ldGFkYXRhKCk7XG4gICAgaWYgKCFtZXRhZGF0YSkgcmV0dXJuO1xuXG4gICAgZm9yIChsZXQgcHJvcCBpbiBtZXRhZGF0YSkge1xuICAgICAgY2FsbGJhY2socHJvcCwgbWV0YWRhdGFbcHJvcF0pO1xuICAgIH1cbiAgfVxuXG4gIF9zdXBlciA9IFJPT1Q7XG4gIF9tZXRhID0gbnVsbDtcbiAgX2d1aWQ6IG51bWJlcjtcblxuICBpbml0KCkge31cblxuICBjb25zdHJ1Y3RvcihhdHRycz86IE9iamVjdCB8IG51bGwpIHtcbiAgICBpZiAoYXR0cnMpIGFzc2lnbih0aGlzLCBhdHRycyk7XG4gICAgKDx0eXBlb2YgR2xpbW1lck9iamVjdD50aGlzLmNvbnN0cnVjdG9yKVtDTEFTU19NRVRBXS5pbml0KHRoaXMsIGF0dHJzIHx8IG51bGwpO1xuICAgIHRoaXMuX3N1cGVyID0gUk9PVDtcbiAgICBpbml0aWFsaXplR3VpZCh0aGlzKTtcbiAgICB0aGlzLmluaXQoKTtcbiAgfVxuXG4gIGdldChrZXk6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXNba2V5XTtcbiAgfVxuXG4gIHNldChrZXk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIHRoaXNba2V5XSA9IHZhbHVlO1xuICB9XG5cbiAgc2V0UHJvcGVydGllcyhhdHRyczogT2JqZWN0KSB7XG4gICAgYXNzaWduKHRoaXMsIGF0dHJzKTtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7fVxufVxuIl19

@@ -23,2 +23,2 @@ var HAS_SUPER_PATTERN = /\.(_super|call\(this|apply\(this)/;

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi91dGlscy5qcyJdLCJuYW1lcyI6WyJIQVNfU1VQRVJfUEFUVEVSTiIsImNoZWNrSGFzU3VwZXIiLCJzb3VyY2VBdmFpbGFibGUiLCJ0b1N0cmluZyIsImluZGV4T2YiLCJmdW5jIiwidGVzdCIsIlJPT1QiLCJfX2hhc1N1cGVyIiwiaGFzU3VwZXIiLCJ1bmRlZmluZWQiXSwibWFwcGluZ3MiOiJBQUFBLElBQU1BLG9CQUFvQixtQ0FBMUI7QUFDQSxPQUFPLElBQU1DLGdCQUFnQixZQUFZO0FBQ3JDLFFBQUlDLGtCQUFrQixZQUFZO0FBQzlCLGVBQU8sSUFBUDtBQUNILEtBRnFCLENBRXBCQyxRQUZvQixHQUVUQyxPQUZTLENBRUQsYUFGQyxJQUVnQixDQUFDLENBRnZDO0FBR0EsUUFBSUYsZUFBSixFQUFxQjtBQUNqQixlQUFPLFNBQVNELGFBQVQsQ0FBdUJJLElBQXZCLEVBQTZCO0FBQ2hDLG1CQUFPTCxrQkFBa0JNLElBQWxCLENBQXVCRCxLQUFLRixRQUFMLEVBQXZCLENBQVA7QUFDSCxTQUZEO0FBR0g7QUFDRCxXQUFPLFNBQVNGLGFBQVQsR0FBeUI7QUFDNUIsZUFBTyxJQUFQO0FBQ0gsS0FGRDtBQUdILENBWjRCLEVBQXRCO0FBYVAsT0FBTyxTQUFTTSxJQUFULEdBQXdCLENBQUU7QUFDakNBLEtBQUtDLFVBQUwsR0FBa0IsS0FBbEI7QUFDQSxPQUFPLFNBQVNDLFFBQVQsQ0FBa0JKLElBQWxCLEVBQXdCO0FBQzNCLFFBQUlBLEtBQUssWUFBTCxNQUF1QkssU0FBM0IsRUFBc0M7QUFDbENMLGFBQUssWUFBTCxJQUFxQkosY0FBY0ksSUFBZCxDQUFyQjtBQUNIO0FBQ0QsV0FBT0EsS0FBSyxZQUFMLENBQVA7QUFDSCIsImZpbGUiOiJsaWIvdXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBIQVNfU1VQRVJfUEFUVEVSTiA9IC9cXC4oX3N1cGVyfGNhbGxcXCh0aGlzfGFwcGx5XFwodGhpcykvO1xuZXhwb3J0IGNvbnN0IGNoZWNrSGFzU3VwZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgbGV0IHNvdXJjZUF2YWlsYWJsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfS50b1N0cmluZygpLmluZGV4T2YoJ3JldHVybiB0aGlzJykgPiAtMTtcbiAgICBpZiAoc291cmNlQXZhaWxhYmxlKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiBjaGVja0hhc1N1cGVyKGZ1bmMpIHtcbiAgICAgICAgICAgIHJldHVybiBIQVNfU1VQRVJfUEFUVEVSTi50ZXN0KGZ1bmMudG9TdHJpbmcoKSk7XG4gICAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBmdW5jdGlvbiBjaGVja0hhc1N1cGVyKCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xufSgpO1xuZXhwb3J0IGZ1bmN0aW9uIFJPT1QoLi4uX2FyZ3MpIHt9XG5ST09ULl9faGFzU3VwZXIgPSBmYWxzZTtcbmV4cG9ydCBmdW5jdGlvbiBoYXNTdXBlcihmdW5jKSB7XG4gICAgaWYgKGZ1bmNbJ19faGFzU3VwZXInXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGZ1bmNbJ19faGFzU3VwZXInXSA9IGNoZWNrSGFzU3VwZXIoZnVuYyk7XG4gICAgfVxuICAgIHJldHVybiBmdW5jWydfX2hhc1N1cGVyJ107XG59Il19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLElBQU0sQUFBaUIsb0JBQUcsQUFBbUMsQUFBQztBQUU5RCxBQUFNLFdBQU8sQUFBYSxBQUFHLDRCQUMzQjtRQUFJLEFBQWUsOEJBQ2pCLEFBQU07ZUFBQyxBQUFJLEFBQUMsQUFDZCxBQUFDLEFBQUM7QUFGb0IsS0FBQyxDQUVwQixBQUFRLEFBQUUsV0FBQyxBQUFPLFFBQUMsQUFBYSxBQUFDLGlCQUFHLENBQUMsQUFBQyxBQUFDLEFBRTFDLEFBQUUsQUFBQztRQUFDLEFBQWUsQUFBQyxpQkFBQyxBQUFDLEFBQ3BCLEFBQU07ZUFBQyx1QkFBdUIsQUFBYyxNQUMxQyxBQUFNO21CQUFDLEFBQWlCLGtCQUFDLEFBQUksS0FBQyxBQUFJLEtBQUMsQUFBUSxBQUFFLEFBQUMsQUFBQyxBQUNqRCxBQUFDLEFBQUMsQUFDSjtBQUFDO0FBRUQsQUFBTTtXQUFDLHlCQUNMLEFBQU07ZUFBQyxBQUFJLEFBQUMsQUFDZCxBQUFDLEFBQUMsQUFDSjtBQUFDLEFBQUUsQUFBQyxBQUFDO0FBZEUsQUFBdUI7QUFnQjlCLEFBQU0sZ0JBQWUsQUFBRyxBQUFZLE9BQUcsQUFBQztBQUNsQyxBQUFLLEtBQUMsQUFBVSxhQUFHLEFBQUssQUFBQztBQUUvQixBQUFNLHlCQUFtQixBQUFjLE1BQ3JDLEFBQUUsQUFBQztRQUFDLEFBQUksS0FBQyxBQUFZLEFBQUMsa0JBQUssQUFBUyxBQUFDLFdBQUMsQUFBQyxBQUNyQyxBQUFJO2FBQUMsQUFBWSxBQUFDLGdCQUFHLEFBQWEsY0FBQyxBQUFJLEFBQUMsQUFBQyxBQUMzQyxBQUFDO0FBQ0QsQUFBTTtXQUFDLEFBQUksS0FBQyxBQUFZLEFBQUMsQUFBQyxBQUM1QixBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgSEFTX1NVUEVSX1BBVFRFUk4gPSAvXFwuKF9zdXBlcnxjYWxsXFwodGhpc3xhcHBseVxcKHRoaXMpLztcblxuZXhwb3J0IGNvbnN0IGNoZWNrSGFzU3VwZXIgPSAoZnVuY3Rpb24gKCkge1xuICBsZXQgc291cmNlQXZhaWxhYmxlID0gKGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgIHJldHVybiB0aGlzO1xuICB9KS50b1N0cmluZygpLmluZGV4T2YoJ3JldHVybiB0aGlzJykgPiAtMTtcblxuICBpZiAoc291cmNlQXZhaWxhYmxlKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGNoZWNrSGFzU3VwZXIoZnVuYzogRnVuY3Rpb24pIHtcbiAgICAgIHJldHVybiBIQVNfU1VQRVJfUEFUVEVSTi50ZXN0KGZ1bmMudG9TdHJpbmcoKSk7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiBjaGVja0hhc1N1cGVyKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9O1xufSgpKTtcblxuZXhwb3J0IGZ1bmN0aW9uIFJPT1QoLi4uX2FyZ3M6IGFueVtdKSB7fVxuKDxhbnk+Uk9PVCkuX19oYXNTdXBlciA9IGZhbHNlO1xuXG5leHBvcnQgZnVuY3Rpb24gaGFzU3VwZXIoZnVuYzogRnVuY3Rpb24pIHtcbiAgaWYgKGZ1bmNbJ19faGFzU3VwZXInXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZnVuY1snX19oYXNTdXBlciddID0gY2hlY2tIYXNTdXBlcihmdW5jKTtcbiAgfVxuICByZXR1cm4gZnVuY1snX19oYXNTdXBlciddO1xufSJdfQ==

@@ -35,3 +35,3 @@ import GlimmerObject, { GlimmerObjectFactory, ClassMeta } from './object';

export declare type Extension = Mixin | Extensions;
export declare function extend<T extends GlimmerObject>(Parent: GlimmerObjectFactory<T>, ...extensions: Extension[]): typeof GlimmerObject;
export declare function extend<T extends GlimmerObject>(Parent: GlimmerObjectFactory<T>, ...extensions: Extension[]): GlimmerObjectFactory<any>;
export declare function relinkSubclasses(Parent: GlimmerObjectFactory<any>): void;

@@ -38,0 +38,0 @@ export declare function toMixin(extension: Extension): Mixin;

@@ -15,3 +15,3 @@ import { Meta, InnerReferenceFactory } from '@glimmer/object-reference';

export interface GlimmerObjectFactory<T> {
new <U>(attrs?: U): T & U;
new <U>(attrs?: U): GlimmerObject & T & U;
extend(): GlimmerObjectFactory<Object>;

@@ -82,12 +82,12 @@ extend<T>(extension: T): GlimmerObjectFactory<T>;

static isClass: boolean;
static extend(): typeof GlimmerObject;
static extend<T>(extension: T): typeof GlimmerObject;
static extend(...extensions: Object[]): typeof GlimmerObject;
static extend(): GlimmerObjectFactory<any> & typeof GlimmerObject;
static extend<T>(extension: T): GlimmerObjectFactory<T> & typeof GlimmerObject;
static extend(...extensions: Object[]): GlimmerObjectFactory<any> & typeof GlimmerObject;
static create(attrs?: Object | null): GlimmerObject;
static reopen<U>(extensions: U): void;
static reopenClass(extensions: Object): void;
static reopenClass<U>(extensions: U): void;
static metaForProperty(property: string): Object;
static eachComputedProperty(callback: (s: string, o: Object) => void): void;
_super: typeof ROOT;
_meta: any;
_meta: null;
_guid: number;

@@ -94,0 +94,0 @@ init(): void;

{
"name": "@glimmer/object",
"version": "0.26.2",
"version": "0.27.0",
"repository": "https://github.com/glimmerjs/glimmer-vm/tree/master/packages/@glimmer/object",
"dependencies": {
"@glimmer/object-reference": "^0.26.2",
"@glimmer/util": "^0.26.2"
"@glimmer/object-reference": "^0.27.0",
"@glimmer/util": "^0.27.0"
},

@@ -15,5 +15,5 @@ "devDependencies": {

"jsnext:main": "dist/modules/es5/index.js",
"module": "dist/modules/es5/index.js",
"module": "dist/modules/es2017/index.js",
"typings": "dist/types/index.d.ts",
"license": "MIT"
}

Sorry, the diff of this file is too big to display

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