@carto/kepler.gl 0.0.42 → 0.0.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +711 -0
- package/dist/components/common/field-selector.js +62 -17
- package/dist/components/common/field-token.js +4 -12
- package/dist/components/common/icons/chevron-right.js +69 -0
- package/dist/components/common/icons/index.js +9 -1
- package/dist/components/common/item-selector/dropdown-list.js +137 -21
- package/dist/components/common/item-selector/item-selector-submenu.js +133 -0
- package/dist/components/common/item-selector/item-selector.js +7 -4
- package/dist/components/common/item-selector/typeahead.js +16 -16
- package/dist/components/side-panel/layer-panel/layer-configurator.js +11 -4
- package/dist/components/side-panel/layer-panel/vis-config-by-field-selector.js +7 -3
- package/dist/constants/default-settings.js +33 -3
- package/dist/constants/index.js +7 -1
- package/dist/styles/base.js +4 -4
- package/package.json +1 -1
- package/src/components/common/field-selector.js +62 -21
- package/src/components/common/field-token.js +13 -14
- package/src/components/common/icons/chevron-right.js +47 -0
- package/src/components/common/icons/index.js +1 -0
- package/src/components/common/item-selector/dropdown-list.js +135 -36
- package/src/components/common/item-selector/item-selector-submenu.js +88 -0
- package/src/components/common/item-selector/item-selector.d.ts +2 -1
- package/src/components/common/item-selector/item-selector.js +5 -2
- package/src/components/common/item-selector/typeahead.js +27 -21
- package/src/components/side-panel/layer-panel/layer-configurator.js +17 -1
- package/src/components/side-panel/layer-panel/vis-config-by-field-selector.js +5 -1
- package/src/constants/default-settings.js +51 -0
- package/src/constants/index.js +2 -1
- package/src/styles/base.js +4 -0
- package/umd/keplergl.min.js +25 -25
|
@@ -227,7 +227,8 @@ var ItemSelector = /*#__PURE__*/function (_Component) {
|
|
|
227
227
|
searchable: this.props.searchable,
|
|
228
228
|
showOptionsWhenEmpty: true,
|
|
229
229
|
selectedItems: (0, _utils.toArray)(this.props.selectedItems),
|
|
230
|
-
light: this.props.inputTheme === 'light'
|
|
230
|
+
light: this.props.inputTheme === 'light',
|
|
231
|
+
withSubOptions: this.props.withSubOptions
|
|
231
232
|
}));
|
|
232
233
|
}
|
|
233
234
|
}, {
|
|
@@ -313,7 +314,8 @@ var ItemSelector = /*#__PURE__*/function (_Component) {
|
|
|
313
314
|
DropdownHeaderComponent: _propTypes["default"].func,
|
|
314
315
|
DropDownRenderComponent: _propTypes["default"].func,
|
|
315
316
|
DropDownLineItemRenderComponent: _propTypes["default"].func,
|
|
316
|
-
CustomChickletComponent: _propTypes["default"].func
|
|
317
|
+
CustomChickletComponent: _propTypes["default"].func,
|
|
318
|
+
withSubOptions: _propTypes["default"].bool
|
|
317
319
|
});
|
|
318
320
|
(0, _defineProperty2["default"])(ItemSelector, "defaultProps", {
|
|
319
321
|
erasable: false,
|
|
@@ -332,7 +334,8 @@ var ItemSelector = /*#__PURE__*/function (_Component) {
|
|
|
332
334
|
dropdownHeader: null,
|
|
333
335
|
DropdownHeaderComponent: null,
|
|
334
336
|
DropDownRenderComponent: _dropdownList["default"],
|
|
335
|
-
DropDownLineItemRenderComponent: _dropdownList.ListItem
|
|
337
|
+
DropDownLineItemRenderComponent: _dropdownList.ListItem,
|
|
338
|
+
withSubOptions: false
|
|
336
339
|
});
|
|
337
340
|
var ItemSelectorListen = (0, _reactOnclickoutside["default"])(ItemSelector);
|
|
338
341
|
exports.ItemSelectorListen = ItemSelectorListen;
|
|
@@ -340,4 +343,4 @@ exports.ItemSelectorListen = ItemSelectorListen;
|
|
|
340
343
|
var _default = (0, _reactIntl.injectIntl)((0, _reactOnclickoutside["default"])(ItemSelector));
|
|
341
344
|
|
|
342
345
|
exports["default"] = _default;
|
|
343
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2NvbW1vbi9pdGVtLXNlbGVjdG9yL2l0ZW0tc2VsZWN0b3IuanMiXSwibmFtZXMiOlsiU3R5bGVkRHJvcGRvd25TZWxlY3QiLCJzdHlsZWQiLCJkaXYiLCJhdHRycyIsImNsYXNzTmFtZSIsInByb3BzIiwiaW5wdXRUaGVtZSIsInRoZW1lIiwic2Vjb25kYXJ5SW5wdXQiLCJpbnB1dExUIiwiaW5wdXQiLCJzaXplIiwiaW5wdXRCb3hIZWlnaHRTbWFsbCIsImlucHV0Qm94SGVpZ2h0IiwiZHJvcGRvd25MaXN0QW5jaG9yIiwiRHJvcGRvd25TZWxlY3RWYWx1ZSIsInNwYW4iLCJoYXNQbGFjZWhvbGRlciIsInNlbGVjdENvbG9yUGxhY2VIb2xkZXJMVCIsInNlbGVjdENvbG9yUGxhY2VIb2xkZXIiLCJzZWxlY3RDb2xvckxUIiwic2VsZWN0Q29sb3IiLCJkcm9wZG93bkxpc3RJdGVtTFQiLCJkcm9wZG93bkxpc3RJdGVtIiwiZHJvcGRvd25MaXN0QW5jaG9yTFQiLCJEcm9wZG93blNlbGVjdEFjdGlvblJpZ2h0Iiwic3VidGV4dENvbG9yIiwidGV4dENvbG9yIiwiRHJvcGRvd25XcmFwcGVyIiwiZHJvcGRvd25XcmFwcGVyWiIsInBsYWNlbWVudCIsImRyb3Bkb3duV2FwcGVyTWFyZ2luIiwiSXRlbVNlbGVjdG9yIiwic2hvd1R5cGVhaGVhZCIsIl9oaWRlVHlwZWFoZWFkIiwib25CbHVyIiwiaXRlbSIsImUiLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsInNlbGVjdGVkSXRlbXMiLCJpbmRleCIsImZpbmRJbmRleCIsInQiLCJpdGVtcyIsInNsaWNlIiwibGVuZ3RoIiwib25DaGFuZ2UiLCJjbG9zZU9uU2VsZWN0Iiwic2V0U3RhdGUiLCJfb25CbHVyIiwiZ2V0VmFsdWUiLCJBY2Nlc3NvciIsImdlbmVyYXRlT3B0aW9uVG9TdHJpbmdGb3IiLCJnZXRPcHRpb25WYWx1ZSIsImRpc3BsYXlPcHRpb24iLCJwcmV2aW91c1NlbGVjdGVkIiwibXVsdGlTZWxlY3QiLCJjb25jYXQiLCJkaXNhYmxlZCIsImlzTG9hZGluZyIsImludGwiLCJyZXN1bHRzIiwibGlzdEl0ZW0iLCJsaXN0QW5jaG9yIiwib3B0aW9ucyIsImZpbHRlck9wdGlvbiIsImZpeGVkT3B0aW9ucyIsInR5cGVhaGVhZFBsYWNlaG9sZGVyIiwiZm9ybWF0TWVzc2FnZSIsImlkIiwiX3NlbGVjdEl0ZW0iLCJEcm9wRG93blJlbmRlckNvbXBvbmVudCIsIkRyb3Bkb3duSGVhZGVyQ29tcG9uZW50IiwiRHJvcERvd25MaW5lSXRlbVJlbmRlckNvbXBvbmVudCIsInNlYXJjaGFibGUiLCJzZWxlY3RlZCIsImhhc1ZhbHVlIiwiZHJvcGRvd25TZWxlY3RQcm9wcyIsImFjdGl2ZSIsInN0YXRlIiwib25DbGljayIsIl9zaG93VHlwZWFoZWFkIiwiZXJyb3IiLCJpc0Vycm9yIiwicG9zaXRpb24iLCJwbGFjZWhvbGRlciIsIl9yZW1vdmVJdGVtIiwiQ3VzdG9tQ2hpY2tsZXRDb21wb25lbnQiLCJlcmFzYWJsZSIsIl9vbkVyYXNlIiwic2hvd0Fycm93IiwiX3JlbmRlckRyb3Bkb3duIiwiQ29tcG9uZW50IiwiUHJvcFR5cGVzIiwib25lT2ZUeXBlIiwiYXJyYXkiLCJzdHJpbmciLCJudW1iZXIiLCJib29sIiwib2JqZWN0IiwiZnVuYyIsImlzUmVxdWlyZWQiLCJhcnJheU9mIiwiYW55IiwiZHJvcGRvd25IZWFkZXIiLCJEcm9wZG93bkxpc3QiLCJMaXN0SXRlbSIsIkl0ZW1TZWxlY3Rvckxpc3RlbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7QUFFTyxJQUFNQSxvQkFBb0IsR0FBR0MsNkJBQU9DLEdBQVAsQ0FBV0MsS0FBWCxD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RUFBQUEsdUJBQXVCLEVBQUUsSUFmTDtBQWdCcEJELEVBQUFBLHVCQUF1QixFQUFFa0Msd0JBaEJMO0FBaUJwQmhDLEVBQUFBLCtCQUErQixFQUFFaUM7QUFqQmIsQztBQTBNakIsSUFBTUMsa0JBQWtCLEdBQUcscUNBQXNCNUUsWUFBdEIsQ0FBM0I7OztlQUNRLDJCQUFXLHFDQUFzQkEsWUFBdEIsQ0FBWCxDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgdW5pcUJ5IGZyb20gJ2xvZGFzaC51bmlxYnknO1xuaW1wb3J0IGxpc3RlbnNUb0NsaWNrT3V0c2lkZSBmcm9tICdyZWFjdC1vbmNsaWNrb3V0c2lkZSc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcblxuaW1wb3J0IEFjY2Vzc29yIGZyb20gJy4vYWNjZXNzb3InO1xuaW1wb3J0IENoaWNrbGV0ZWRJbnB1dCBmcm9tICcuL2NoaWNrbGV0ZWQtaW5wdXQnO1xuaW1wb3J0IFR5cGVhaGVhZCBmcm9tICcuL3R5cGVhaGVhZCc7XG5pbXBvcnQge0RlbGV0ZSwgQXJyb3dEb3dufSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9pY29ucyc7XG5pbXBvcnQgTG9hZGluZ1NwaW5uZXIgZnJvbSAnY29tcG9uZW50cy9jb21tb24vbG9hZGluZy1zcGlubmVyJztcbmltcG9ydCBEcm9wZG93bkxpc3QsIHtMaXN0SXRlbX0gZnJvbSAnLi9kcm9wZG93bi1saXN0JztcblxuaW1wb3J0IHt0b0FycmF5fSBmcm9tICd1dGlscy91dGlscyc7XG5pbXBvcnQge2luamVjdEludGx9IGZyb20gJ3JlYWN0LWludGwnO1xuaW1wb3J0IHtGb3JtYXR0ZWRNZXNzYWdlfSBmcm9tICdsb2NhbGl6YXRpb24nO1xuXG5leHBvcnQgY29uc3QgU3R5bGVkRHJvcGRvd25TZWxlY3QgPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnaXRlbS1zZWxlY3Rvcl9fZHJvcGRvd24nXG59KWBcbiAgJHtwcm9wcyA9PlxuICAgIHByb3BzLmlucHV0VGhlbWUgPT09ICdzZWNvbmRhcnknXG4gICAgICA/IHByb3BzLnRoZW1lLnNlY29uZGFyeUlucHV0XG4gICAgICA6IHByb3BzLmlucHV0VGhlbWUgPT09ICdsaWdodCdcbiAgICAgID8gcHJvcHMudGhlbWUuaW5wdXRMVFxuICAgICAgOiBwcm9wcy50aGVtZS5pbnB1dH07XG5cbiAgaGVpZ2h0OiAke3Byb3BzID0+XG4gICAgcHJvcHMuc2l6ZSA9PT0gJ3NtYWxsJyA/IHByb3BzLnRoZW1lLmlucHV0Qm94SGVpZ2h0U21hbGwgOiBwcm9wcy50aGVtZS5pbnB1dEJveEhlaWdodH07XG5cbiAgLmxpc3RfX2l0ZW1fX2FuY2hvciB7XG4gICAgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RBbmNob3J9O1xuICB9XG5gO1xuXG5jb25zdCBEcm9wZG93blNlbGVjdFZhbHVlID0gc3R5bGVkLnNwYW5gXG4gIGNvbG9yOiAke3Byb3BzID0+XG4gICAgcHJvcHMuaGFzUGxhY2Vob2xkZXIgJiYgcHJvcHMuaW5wdXRUaGVtZSA9PT0gJ2xpZ2h0J1xuICAgICAgPyBwcm9wcy50aGVtZS5zZWxlY3RDb2xvclBsYWNlSG9sZGVyTFRcbiAgICAgIDogcHJvcHMuaGFzUGxhY2Vob2xkZXJcbiAgICAgID8gcHJvcHMudGhlbWUuc2VsZWN0Q29sb3JQbGFjZUhvbGRlclxuICAgICAgOiBwcm9wcy5pbnB1dFRoZW1lID09PSAnbGlnaHQnXG4gICAgICA/IHByb3BzLnRoZW1lLnNlbGVjdENvbG9yTFRcbiAgICAgIDogcHJvcHMudGhlbWUuc2VsZWN0Q29sb3J9O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuICAubGlzdF9faXRlbSB7XG4gICAgJHtwcm9wcyA9PlxuICAgICAgcHJvcHMuaW5wdXRUaGVtZSA9PT0gJ2xpZ2h0JyA/IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdEl0ZW1MVCA6IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdEl0ZW19O1xuICB9XG5cbiAgLmxpc3RfX2l0ZW1fX2FuY2hvciB7XG4gICAgJHtwcm9wcyA9PlxuICAgICAgcHJvcHMuaW5wdXRUaGVtZSA9PT0gJ2xpZ2h0J1xuICAgICAgICA/IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdEFuY2hvckxUXG4gICAgICAgIDogcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0QW5jaG9yfTtcbiAgfVxuYDtcblxuY29uc3QgRHJvcGRvd25TZWxlY3RBY3Rpb25SaWdodCA9IHN0eWxlZC5kaXZgXG4gIG1hcmdpbi1yaWdodDogNnB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zdWJ0ZXh0Q29sb3J9O1xuXG4gIDpob3ZlciB7XG4gICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9yfTtcbiAgfVxuYDtcblxuY29uc3QgRHJvcGRvd25XcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgYm9yZGVyOiAwO1xuICB3aWR0aDogMTAwJTtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5kcm9wZG93bldyYXBwZXJafTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206ICR7cHJvcHMgPT4gKHByb3BzLnBsYWNlbWVudCA9PT0gJ3RvcCcgPyBwcm9wcy50aGVtZS5pbnB1dEJveEhlaWdodCA6ICdhdXRvJyl9O1xuICBtYXJnaW4tdG9wOiAke3Byb3BzID0+XG4gICAgcHJvcHMucGxhY2VtZW50ID09PSAnYm90dG9tJyA/IGAke3Byb3BzLnRoZW1lLmRyb3Bkb3duV2FwcGVyTWFyZ2lufXB4YCA6ICdhdXRvJ307XG4gIG1hcmdpbi1ib3R0b206ICR7cHJvcHMgPT5cbiAgICBwcm9wcy5wbGFjZW1lbnQgPT09ICd0b3AnID8gYCR7cHJvcHMudGhlbWUuZHJvcGRvd25XYXBwZXJNYXJnaW59cHhgIDogJ2F1dG8nfTtcbmA7XG5cbmNsYXNzIEl0ZW1TZWxlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgLy8gcmVxdWlyZWQgcHJvcGVydGllc1xuICAgIHNlbGVjdGVkSXRlbXM6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICAgICAgUHJvcFR5cGVzLmFycmF5LFxuICAgICAgUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgIFByb3BUeXBlcy5udW1iZXIsXG4gICAgICBQcm9wVHlwZXMuYm9vbCxcbiAgICAgIFByb3BUeXBlcy5vYmplY3RcbiAgICBdKSxcbiAgICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICBvcHRpb25zOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuYW55KS5pc1JlcXVpcmVkLFxuXG4gICAgLy8gb3B0aW9uYWwgcHJvcGVydGllc1xuICAgIGZpeGVkT3B0aW9uczogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmFueSksXG4gICAgZXJhc2FibGU6IFByb3BUeXBlcy5ib29sLFxuICAgIHNob3dBcnJvdzogUHJvcFR5cGVzLmJvb2wsXG4gICAgZGlzcGxheU9wdGlvbjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLmZ1bmNdKSxcbiAgICBnZXRPcHRpb25WYWx1ZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLmZ1bmNdKSxcbiAgICBmaWx0ZXJPcHRpb246IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5mdW5jXSksXG4gICAgcGxhY2VtZW50OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBpc0Vycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBpc0xvYWRpbmc6IFByb3BUeXBlcy5ib29sLFxuICAgIG11bHRpU2VsZWN0OiBQcm9wVHlwZXMuYm9vbCxcbiAgICBpbnB1dFRoZW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIG9uQmx1cjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgcGxhY2Vob2xkZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgY2xvc2VPblNlbGVjdDogUHJvcFR5cGVzLmJvb2wsXG4gICAgdHlwZWFoZWFkUGxhY2Vob2xkZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgRHJvcGRvd25IZWFkZXJDb21wb25lbnQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIERyb3BEb3duUmVuZGVyQ29tcG9uZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgICBEcm9wRG93bkxpbmVJdGVtUmVuZGVyQ29tcG9uZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgICBDdXN0b21DaGlja2xldENvbXBvbmVudDogUHJvcFR5cGVzLmZ1bmNcbiAgfTtcblxuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIGVyYXNhYmxlOiBmYWxzZSxcbiAgICBzaG93QXJyb3c6IGZhbHNlLFxuICAgIHBsYWNlbWVudDogJ2JvdHRvbScsXG4gICAgc2VsZWN0ZWRJdGVtczogW10sXG4gICAgZGlzcGxheU9wdGlvbjogbnVsbCxcbiAgICBnZXRPcHRpb25WYWx1ZTogbnVsbCxcbiAgICBmaWx0ZXJPcHRpb246IG51bGwsXG4gICAgZml4ZWRPcHRpb25zOiBudWxsLFxuICAgIGlucHV0VGhlbWU6ICdwcmltYXJ5JyxcbiAgICBtdWx0aVNlbGVjdDogdHJ1ZSxcbiAgICBwbGFjZWhvbGRlcjogJ3BsYWNlaG9sZGVyLmVudGVyVmFsdWUnLFxuICAgIGNsb3NlT25TZWxlY3Q6IHRydWUsXG4gICAgc2VhcmNoYWJsZTogdHJ1ZSxcbiAgICBkcm9wZG93bkhlYWRlcjogbnVsbCxcbiAgICBEcm9wZG93bkhlYWRlckNvbXBvbmVudDogbnVsbCxcbiAgICBEcm9wRG93blJlbmRlckNvbXBvbmVudDogRHJvcGRvd25MaXN0LFxuICAgIERyb3BEb3duTGluZUl0ZW1SZW5kZXJDb21wb25lbnQ6IExpc3RJdGVtXG4gIH07XG5cbiAgc3RhdGUgPSB7XG4gICAgc2hvd1R5cGVhaGVhZDogZmFsc2VcbiAgfTtcblxuICBoYW5kbGVDbGlja091dHNpZGUgPSAoKSA9PiB7XG4gICAgdGhpcy5faGlkZVR5cGVhaGVhZCgpO1xuICB9O1xuXG4gIF9oaWRlVHlwZWFoZWFkKCkge1xuICAgIHRoaXMuc2V0U3RhdGUoe3Nob3dUeXBlYWhlYWQ6IGZhbHNlfSk7XG4gICAgdGhpcy5fb25CbHVyKCk7XG4gIH1cblxuICBfb25CbHVyID0gKCkgPT4ge1xuICAgIC8vIG5vdGU6IGNoaWNrbGV0ZWQgaW5wdXQgaXMgbm90IGEgcmVhbCBmb3JtIGVsZW1lbnQgc28gd2UgY2FsbCBvbkJsdXIoKVxuICAgIC8vIHdoZW4gd2UgZmVlbCB0aGUgZXZlbnRzIGFyZSBhcHByb3ByaWF0ZVxuICAgIGlmICh0aGlzLnByb3BzLm9uQmx1cikge1xuICAgICAgdGhpcy5wcm9wcy5vbkJsdXIoKTtcbiAgICB9XG4gIH07XG5cbiAgX3JlbW92ZUl0ZW0gPSAoaXRlbSwgZSkgPT4ge1xuICAgIC8vIG9ubHkgdXNlZCB3aGVuIG11bHRpU2VsZWN0ID0gdHJ1ZVxuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGNvbnN0IHtzZWxlY3RlZEl0ZW1zfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgaW5kZXggPSBzZWxlY3RlZEl0ZW1zLmZpbmRJbmRleCh0ID0+IHQgPT09IGl0ZW0pO1xuXG4gICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGl0ZW1zID0gW1xuICAgICAgLi4uc2VsZWN0ZWRJdGVtcy5zbGljZSgwLCBpbmRleCksXG4gICAgICAuLi5zZWxlY3RlZEl0ZW1zLnNsaWNlKGluZGV4ICsgMSwgc2VsZWN0ZWRJdGVtcy5sZW5ndGgpXG4gICAgXTtcblxuICAgIHRoaXMucHJvcHMub25DaGFuZ2UoaXRlbXMpO1xuXG4gICAgaWYgKHRoaXMucHJvcHMuY2xvc2VPblNlbGVjdCkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7c2hvd1R5cGVhaGVhZDogZmFsc2V9KTtcbiAgICAgIHRoaXMuX29uQmx1cigpO1xuICAgIH1cbiAgfTtcblxuICBfc2VsZWN0SXRlbSA9IGl0ZW0gPT4ge1xuICAgIGNvbnN0IGdldFZhbHVlID0gQWNjZXNzb3IuZ2VuZXJhdGVPcHRpb25Ub1N0cmluZ0ZvcihcbiAgICAgIHRoaXMucHJvcHMuZ2V0T3B0aW9uVmFsdWUgfHwgdGhpcy5wcm9wcy5kaXNwbGF5T3B0aW9uXG4gICAgKTtcblxuICAgIGNvbnN0IHByZXZpb3VzU2VsZWN0ZWQgPSB0b0FycmF5KHRoaXMucHJvcHMuc2VsZWN0ZWRJdGVtcyk7XG5cbiAgICBpZiAodGhpcy5wcm9wcy5tdWx0aVNlbGVjdCkge1xuICAgICAgY29uc3QgaXRlbXMgPSB1bmlxQnkocHJldmlvdXNTZWxlY3RlZC5jb25jYXQodG9BcnJheShpdGVtKSksIGdldFZhbHVlKTtcbiAgICAgIHRoaXMucHJvcHMub25DaGFuZ2UoaXRlbXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnByb3BzLm9uQ2hhbmdlKGdldFZhbHVlKGl0ZW0pKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wcm9wcy5jbG9zZU9uU2VsZWN0KSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtzaG93VHlwZWFoZWFkOiBmYWxzZX0pO1xuICAgICAgdGhpcy5fb25CbHVyKCk7XG4gICAgfVxuICB9O1xuXG4gIF9vbkVyYXNlID0gZSA9PiB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnByb3BzLm9uQ2hhbmdlKG51bGwpO1xuICB9O1xuXG4gIF9zaG93VHlwZWFoZWFkID0gZSA9PiB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAoIXRoaXMucHJvcHMuZGlzYWJsZWQgJiYgIXRoaXMucHJvcHMuaXNMb2FkaW5nKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgc2hvd1R5cGVhaGVhZDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIF9yZW5kZXJEcm9wZG93bihpbnRsKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxEcm9wZG93bldyYXBwZXIgcGxhY2VtZW50PXt0aGlzLnByb3BzLnBsYWNlbWVudH0+XG4gICAgICAgIDxUeXBlYWhlYWRcbiAgICAgICAgICBjdXN0b21DbGFzc2VzPXt7XG4gICAgICAgICAgICByZXN1bHRzOiAnbGlzdC1zZWxlY3RvcicsXG4gICAgICAgICAgICBpbnB1dDogJ3R5cGVhaGVhZF9faW5wdXQnLFxuICAgICAgICAgICAgbGlzdEl0ZW06ICdsaXN0X19pdGVtJyxcbiAgICAgICAgICAgIGxpc3RBbmNob3I6ICdsaXN0X19pdGVtX19hbmNob3InXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvcHRpb25zPXt0aGlzLnByb3BzLm9wdGlvbnN9XG4gICAgICAgICAgZmlsdGVyT3B0aW9uPXt0aGlzLnByb3BzLmZpbHRlck9wdGlvbn1cbiAgICAgICAgICBmaXhlZE9wdGlvbnM9e3RoaXMucHJvcHMuZml4ZWRPcHRpb25zfVxuICAgICAgICAgIHBsYWNlaG9sZGVyPXtcbiAgICAgICAgICAgIHRoaXMucHJvcHMudHlwZWFoZWFkUGxhY2Vob2xkZXIgfHwgaW50bFxuICAgICAgICAgICAgICA/IGludGwuZm9ybWF0TWVzc2FnZSh7aWQ6ICdwbGFjZWhvbGRlci5zZWFyY2gnfSlcbiAgICAgICAgICAgICAgOiAnU2VhcmNoJ1xuICAgICAgICAgIH1cbiAgICAgICAgICBvbk9wdGlvblNlbGVjdGVkPXt0aGlzLl9zZWxlY3RJdGVtfVxuICAgICAgICAgIGN1c3RvbUxpc3RDb21wb25lbnQ9e3RoaXMucHJvcHMuRHJvcERvd25SZW5kZXJDb21wb25lbnR9XG4gICAgICAgICAgY3VzdG9tTGlzdEhlYWRlckNvbXBvbmVudD17dGhpcy5wcm9wcy5Ecm9wZG93bkhlYWRlckNvbXBvbmVudH1cbiAgICAgICAgICBjdXN0b21MaXN0SXRlbUNvbXBvbmVudD17dGhpcy5wcm9wcy5Ecm9wRG93bkxpbmVJdGVtUmVuZGVyQ29tcG9uZW50fVxuICAgICAgICAgIGRpc3BsYXlPcHRpb249e0FjY2Vzc29yLmdlbmVyYXRlT3B0aW9uVG9TdHJpbmdGb3IodGhpcy5wcm9wcy5kaXNwbGF5T3B0aW9uKX1cbiAgICAgICAgICBzZWFyY2hhYmxlPXt0aGlzLnByb3BzLnNlYXJjaGFibGV9XG4gICAgICAgICAgc2hvd09wdGlvbnNXaGVuRW1wdHlcbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zPXt0b0FycmF5KHRoaXMucHJvcHMuc2VsZWN0ZWRJdGVtcyl9XG4gICAgICAgICAgbGlnaHQ9e3RoaXMucHJvcHMuaW5wdXRUaGVtZSA9PT0gJ2xpZ2h0J31cbiAgICAgICAgLz5cbiAgICAgIDwvRHJvcGRvd25XcmFwcGVyPlxuICAgICk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWQgPSB0b0FycmF5KHRoaXMucHJvcHMuc2VsZWN0ZWRJdGVtcyk7XG4gICAgY29uc3QgaGFzVmFsdWUgPSBzZWxlY3RlZC5sZW5ndGg7XG4gICAgY29uc3QgZGlzcGxheU9wdGlvbiA9IEFjY2Vzc29yLmdlbmVyYXRlT3B0aW9uVG9TdHJpbmdGb3IodGhpcy5wcm9wcy5kaXNwbGF5T3B0aW9uKTtcblxuICAgIGNvbnN0IGRyb3Bkb3duU2VsZWN0UHJvcHMgPSB7XG4gICAgICBjbGFzc05hbWU6IGNsYXNzbmFtZXMoe1xuICAgICAgICBhY3RpdmU6IHRoaXMuc3RhdGUuc2hvd1R5cGVhaGVhZFxuICAgICAgfSksXG4gICAgICBkaXNwbGF5T3B0aW9uLFxuICAgICAgZGlzYWJsZWQ6IHRoaXMucHJvcHMuZGlzYWJsZWQsXG4gICAgICBvbkNsaWNrOiB0aGlzLl9zaG93VHlwZWFoZWFkLFxuICAgICAgZXJyb3I6IHRoaXMucHJvcHMuaXNFcnJvcixcbiAgICAgIGlucHV0VGhlbWU6IHRoaXMucHJvcHMuaW5wdXRUaGVtZSxcbiAgICAgIHNpemU6IHRoaXMucHJvcHMuc2l6ZVxuICAgIH07XG4gICAgY29uc3QgaW50bCA9IHRoaXMucHJvcHMuaW50bDtcblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIml0ZW0tc2VsZWN0b3JcIj5cbiAgICAgICAgPGRpdiBzdHlsZT17e3Bvc2l0aW9uOiAncmVsYXRpdmUnfX0+XG4gICAgICAgICAgey8qIHRoaXMgcGFydCBpcyB1c2VkIHRvIGRpc3BsYXkgdGhlIGxhYmVsICovfVxuICAgICAgICAgIHt0aGlzLnByb3BzLm11bHRpU2VsZWN0ID8gKFxuICAgICAgICAgICAgPENoaWNrbGV0ZWRJbnB1dFxuICAgICAgICAgICAgICB7Li4uZHJvcGRvd25TZWxlY3RQcm9wc31cbiAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcz17dG9BcnJheSh0aGlzLnByb3BzLnNlbGVjdGVkSXRlbXMpfVxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17dGhpcy5wcm9wcy5wbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgcmVtb3ZlSXRlbT17dGhpcy5fcmVtb3ZlSXRlbX1cbiAgICAgICAgICAgICAgQ3VzdG9tQ2hpY2tsZXRDb21wb25lbnQ9e3RoaXMucHJvcHMuQ3VzdG9tQ2hpY2tsZXRDb21wb25lbnR9XG4gICAgICAgICAgICAgIGlucHV0VGhlbWU9e3RoaXMucHJvcHMuaW5wdXRUaGVtZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxTdHlsZWREcm9wZG93blNlbGVjdCB7Li4uZHJvcGRvd25TZWxlY3RQcm9wc30+XG4gICAgICAgICAgICAgIDxEcm9wZG93blNlbGVjdFZhbHVlXG4gICAgICAgICAgICAgICAgaGFzUGxhY2Vob2xkZXI9eyFoYXNWYWx1ZX1cbiAgICAgICAgICAgICAgICBpbnB1dFRoZW1lPXt0aGlzLnByb3BzLmlucHV0VGhlbWV9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaXRlbS1zZWxlY3Rvcl9fZHJvcGRvd25fX3ZhbHVlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtoYXNWYWx1ZSA/IChcbiAgICAgICAgICAgICAgICAgIDx0aGlzLnByb3BzLkRyb3BEb3duTGluZUl0ZW1SZW5kZXJDb21wb25lbnRcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheU9wdGlvbj17ZGlzcGxheU9wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3NlbGVjdGVkWzBdfVxuICAgICAgICAgICAgICAgICAgICBsaWdodD17dGhpcy5wcm9wcy5pbnB1dFRoZW1lID09PSAnbGlnaHQnfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9e3RoaXMucHJvcHMucGxhY2Vob2xkZXIgfHwgJ3BsYWNlaG9sZGVyLnNlbGVjdFZhbHVlJ30gLz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L0Ryb3Bkb3duU2VsZWN0VmFsdWU+XG4gICAgICAgICAgICAgIHt0aGlzLnByb3BzLmVyYXNhYmxlICYmIGhhc1ZhbHVlID8gKFxuICAgICAgICAgICAgICAgIDxEcm9wZG93blNlbGVjdEFjdGlvblJpZ2h0PlxuICAgICAgICAgICAgICAgICAge3RoaXMucHJvcHMuaXNMb2FkaW5nID8gKFxuICAgICAgICAgICAgICAgICAgICA8TG9hZGluZ1NwaW5uZXIgc2l6ZT17MTh9IHN0cm9rZVdpZHRoPXsyfSBnYXA9ezB9IC8+XG4gICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICA8RGVsZXRlIGhlaWdodD1cIjEycHhcIiBvbkNsaWNrPXt0aGlzLl9vbkVyYXNlfSAvPlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duU2VsZWN0QWN0aW9uUmlnaHQ+XG4gICAgICAgICAgICAgICkgOiB0aGlzLnByb3BzLnNob3dBcnJvdyA/IChcbiAgICAgICAgICAgICAgICA8RHJvcGRvd25TZWxlY3RBY3Rpb25SaWdodD5cbiAgICAgICAgICAgICAgICAgIDxBcnJvd0Rvd24gaGVpZ2h0PVwiMTRweFwiIG9uQ2xpY2s9e3RoaXMuX3Nob3dUeXBlYWhlYWR9IC8+XG4gICAgICAgICAgICAgICAgPC9Ecm9wZG93blNlbGVjdEFjdGlvblJpZ2h0PlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDwvU3R5bGVkRHJvcGRvd25TZWxlY3Q+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7LyogdGhpcyBwYXJ0IGlzIHVzZWQgdG8gYnVpbHQgdGhlIGxpc3QgKi99XG4gICAgICAgICAge3RoaXMuc3RhdGUuc2hvd1R5cGVhaGVhZCAmJiB0aGlzLl9yZW5kZXJEcm9wZG93bihpbnRsKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBJdGVtU2VsZWN0b3JMaXN0ZW4gPSBsaXN0ZW5zVG9DbGlja091dHNpZGUoSXRlbVNlbGVjdG9yKTtcbmV4cG9ydCBkZWZhdWx0IGluamVjdEludGwobGlzdGVuc1RvQ2xpY2tPdXRzaWRlKEl0ZW1TZWxlY3RvcikpO1xuIl19
|
|
346
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2NvbW1vbi9pdGVtLXNlbGVjdG9yL2l0ZW0tc2VsZWN0b3IuanMiXSwibmFtZXMiOlsiU3R5bGVkRHJvcGRvd25TZWxlY3QiLCJzdHlsZWQiLCJkaXYiLCJhdHRycyIsImNsYXNzTmFtZSIsInByb3BzIiwiaW5wdXRUaGVtZSIsInRoZW1lIiwic2Vjb25kYXJ5SW5wdXQiLCJpbnB1dExUIiwiaW5wdXQiLCJzaXplIiwiaW5wdXRCb3hIZWlnaHRTbWFsbCIsImlucHV0Qm94SGVpZ2h0IiwiZHJvcGRvd25MaXN0QW5jaG9yIiwiRHJvcGRvd25TZWxlY3RWYWx1ZSIsInNwYW4iLCJoYXNQbGFjZWhvbGRlciIsInNlbGVjdENvbG9yUGxhY2VIb2xkZXJMVCIsInNlbGVjdENvbG9yUGxhY2VIb2xkZXIiLCJzZWxlY3RDb2xvckxUIiwic2VsZWN0Q29sb3IiLCJkcm9wZG93bkxpc3RJdGVtTFQiLCJkcm9wZG93bkxpc3RJdGVtIiwiZHJvcGRvd25MaXN0QW5jaG9yTFQiLCJEcm9wZG93blNlbGVjdEFjdGlvblJpZ2h0Iiwic3VidGV4dENvbG9yIiwidGV4dENvbG9yIiwiRHJvcGRvd25XcmFwcGVyIiwiZHJvcGRvd25XcmFwcGVyWiIsInBsYWNlbWVudCIsImRyb3Bkb3duV2FwcGVyTWFyZ2luIiwiSXRlbVNlbGVjdG9yIiwic2hvd1R5cGVhaGVhZCIsIl9oaWRlVHlwZWFoZWFkIiwib25CbHVyIiwiaXRlbSIsImUiLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsInNlbGVjdGVkSXRlbXMiLCJpbmRleCIsImZpbmRJbmRleCIsInQiLCJpdGVtcyIsInNsaWNlIiwibGVuZ3RoIiwib25DaGFuZ2UiLCJjbG9zZU9uU2VsZWN0Iiwic2V0U3RhdGUiLCJfb25CbHVyIiwiZ2V0VmFsdWUiLCJBY2Nlc3NvciIsImdlbmVyYXRlT3B0aW9uVG9TdHJpbmdGb3IiLCJnZXRPcHRpb25WYWx1ZSIsImRpc3BsYXlPcHRpb24iLCJwcmV2aW91c1NlbGVjdGVkIiwibXVsdGlTZWxlY3QiLCJjb25jYXQiLCJkaXNhYmxlZCIsImlzTG9hZGluZyIsImludGwiLCJyZXN1bHRzIiwibGlzdEl0ZW0iLCJsaXN0QW5jaG9yIiwib3B0aW9ucyIsImZpbHRlck9wdGlvbiIsImZpeGVkT3B0aW9ucyIsInR5cGVhaGVhZFBsYWNlaG9sZGVyIiwiZm9ybWF0TWVzc2FnZSIsImlkIiwiX3NlbGVjdEl0ZW0iLCJEcm9wRG93blJlbmRlckNvbXBvbmVudCIsIkRyb3Bkb3duSGVhZGVyQ29tcG9uZW50IiwiRHJvcERvd25MaW5lSXRlbVJlbmRlckNvbXBvbmVudCIsInNlYXJjaGFibGUiLCJ3aXRoU3ViT3B0aW9ucyIsInNlbGVjdGVkIiwiaGFzVmFsdWUiLCJkcm9wZG93blNlbGVjdFByb3BzIiwiYWN0aXZlIiwic3RhdGUiLCJvbkNsaWNrIiwiX3Nob3dUeXBlYWhlYWQiLCJlcnJvciIsImlzRXJyb3IiLCJwb3NpdGlvbiIsInBsYWNlaG9sZGVyIiwiX3JlbW92ZUl0ZW0iLCJDdXN0b21DaGlja2xldENvbXBvbmVudCIsImVyYXNhYmxlIiwiX29uRXJhc2UiLCJzaG93QXJyb3ciLCJfcmVuZGVyRHJvcGRvd24iLCJDb21wb25lbnQiLCJQcm9wVHlwZXMiLCJvbmVPZlR5cGUiLCJhcnJheSIsInN0cmluZyIsIm51bWJlciIsImJvb2wiLCJvYmplY3QiLCJmdW5jIiwiaXNSZXF1aXJlZCIsImFycmF5T2YiLCJhbnkiLCJkcm9wZG93bkhlYWRlciIsIkRyb3Bkb3duTGlzdCIsIkxpc3RJdGVtIiwiSXRlbVNlbGVjdG9yTGlzdGVuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOzs7Ozs7OztBQUVPLElBQU1BLG9CQUFvQixHQUFHQyw2QkFBT0Ms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LHdCQVhPO0FBWXBCdkMsRUFBQUEsYUFBYSxFQUFFLElBWks7QUFhcEIyQixFQUFBQSxVQUFVLEVBQUUsSUFiUTtBQWNwQitCLEVBQUFBLGNBQWMsRUFBRSxJQWRJO0FBZXBCakMsRUFBQUEsdUJBQXVCLEVBQUUsSUFmTDtBQWdCcEJELEVBQUFBLHVCQUF1QixFQUFFbUMsd0JBaEJMO0FBaUJwQmpDLEVBQUFBLCtCQUErQixFQUFFa0Msc0JBakJiO0FBa0JwQmhDLEVBQUFBLGNBQWMsRUFBRTtBQWxCSSxDO0FBNE1qQixJQUFNaUMsa0JBQWtCLEdBQUcscUNBQXNCN0UsWUFBdEIsQ0FBM0I7OztlQUNRLDJCQUFXLHFDQUFzQkEsWUFBdEIsQ0FBWCxDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgdW5pcUJ5IGZyb20gJ2xvZGFzaC51bmlxYnknO1xuaW1wb3J0IGxpc3RlbnNUb0NsaWNrT3V0c2lkZSBmcm9tICdyZWFjdC1vbmNsaWNrb3V0c2lkZSc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcblxuaW1wb3J0IEFjY2Vzc29yIGZyb20gJy4vYWNjZXNzb3InO1xuaW1wb3J0IENoaWNrbGV0ZWRJbnB1dCBmcm9tICcuL2NoaWNrbGV0ZWQtaW5wdXQnO1xuaW1wb3J0IFR5cGVhaGVhZCBmcm9tICcuL3R5cGVhaGVhZCc7XG5pbXBvcnQge0RlbGV0ZSwgQXJyb3dEb3dufSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9pY29ucyc7XG5pbXBvcnQgTG9hZGluZ1NwaW5uZXIgZnJvbSAnY29tcG9uZW50cy9jb21tb24vbG9hZGluZy1zcGlubmVyJztcbmltcG9ydCBEcm9wZG93bkxpc3QsIHtMaXN0SXRlbX0gZnJvbSAnLi9kcm9wZG93bi1saXN0JztcblxuaW1wb3J0IHt0b0FycmF5fSBmcm9tICd1dGlscy91dGlscyc7XG5pbXBvcnQge2luamVjdEludGx9IGZyb20gJ3JlYWN0LWludGwnO1xuaW1wb3J0IHtGb3JtYXR0ZWRNZXNzYWdlfSBmcm9tICdsb2NhbGl6YXRpb24nO1xuXG5leHBvcnQgY29uc3QgU3R5bGVkRHJvcGRvd25TZWxlY3QgPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnaXRlbS1zZWxlY3Rvcl9fZHJvcGRvd24nXG59KWBcbiAgJHtwcm9wcyA9PlxuICAgIHByb3BzLmlucHV0VGhlbWUgPT09ICdzZWNvbmRhcnknXG4gICAgICA/IHByb3BzLnRoZW1lLnNlY29uZGFyeUlucHV0XG4gICAgICA6IHByb3BzLmlucHV0VGhlbWUgPT09ICdsaWdodCdcbiAgICAgID8gcHJvcHMudGhlbWUuaW5wdXRMVFxuICAgICAgOiBwcm9wcy50aGVtZS5pbnB1dH07XG5cbiAgaGVpZ2h0OiAke3Byb3BzID0+XG4gICAgcHJvcHMuc2l6ZSA9PT0gJ3NtYWxsJyA/IHByb3BzLnRoZW1lLmlucHV0Qm94SGVpZ2h0U21hbGwgOiBwcm9wcy50aGVtZS5pbnB1dEJveEhlaWdodH07XG5cbiAgLmxpc3RfX2l0ZW1fX2FuY2hvciB7XG4gICAgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RBbmNob3J9O1xuICB9XG5gO1xuXG5jb25zdCBEcm9wZG93blNlbGVjdFZhbHVlID0gc3R5bGVkLnNwYW5gXG4gIGNvbG9yOiAke3Byb3BzID0+XG4gICAgcHJvcHMuaGFzUGxhY2Vob2xkZXIgJiYgcHJvcHMuaW5wdXRUaGVtZSA9PT0gJ2xpZ2h0J1xuICAgICAgPyBwcm9wcy50aGVtZS5zZWxlY3RDb2xvclBsYWNlSG9sZGVyTFRcbiAgICAgIDogcHJvcHMuaGFzUGxhY2Vob2xkZXJcbiAgICAgID8gcHJvcHMudGhlbWUuc2VsZWN0Q29sb3JQbGFjZUhvbGRlclxuICAgICAgOiBwcm9wcy5pbnB1dFRoZW1lID09PSAnbGlnaHQnXG4gICAgICA/IHByb3BzLnRoZW1lLnNlbGVjdENvbG9yTFRcbiAgICAgIDogcHJvcHMudGhlbWUuc2VsZWN0Q29sb3J9O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuICAubGlzdF9faXRlbSB7XG4gICAgJHtwcm9wcyA9PlxuICAgICAgcHJvcHMuaW5wdXRUaGVtZSA9PT0gJ2xpZ2h0JyA/IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdEl0ZW1MVCA6IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdEl0ZW19O1xuICB9XG5cbiAgLmxpc3RfX2l0ZW1fX2FuY2hvciB7XG4gICAgJHtwcm9wcyA9PlxuICAgICAgcHJvcHMuaW5wdXRUaGVtZSA9PT0gJ2xpZ2h0J1xuICAgICAgICA/IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdEFuY2hvckxUXG4gICAgICAgIDogcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0QW5jaG9yfTtcbiAgfVxuYDtcblxuY29uc3QgRHJvcGRvd25TZWxlY3RBY3Rpb25SaWdodCA9IHN0eWxlZC5kaXZgXG4gIG1hcmdpbi1yaWdodDogNnB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zdWJ0ZXh0Q29sb3J9O1xuXG4gIDpob3ZlciB7XG4gICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9yfTtcbiAgfVxuYDtcblxuY29uc3QgRHJvcGRvd25XcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgYm9yZGVyOiAwO1xuICB3aWR0aDogMTAwJTtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5kcm9wZG93bldyYXBwZXJafTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206ICR7cHJvcHMgPT4gKHByb3BzLnBsYWNlbWVudCA9PT0gJ3RvcCcgPyBwcm9wcy50aGVtZS5pbnB1dEJveEhlaWdodCA6ICdhdXRvJyl9O1xuICBtYXJnaW4tdG9wOiAke3Byb3BzID0+XG4gICAgcHJvcHMucGxhY2VtZW50ID09PSAnYm90dG9tJyA/IGAke3Byb3BzLnRoZW1lLmRyb3Bkb3duV2FwcGVyTWFyZ2lufXB4YCA6ICdhdXRvJ307XG4gIG1hcmdpbi1ib3R0b206ICR7cHJvcHMgPT5cbiAgICBwcm9wcy5wbGFjZW1lbnQgPT09ICd0b3AnID8gYCR7cHJvcHMudGhlbWUuZHJvcGRvd25XYXBwZXJNYXJnaW59cHhgIDogJ2F1dG8nfTtcbmA7XG5cbmNsYXNzIEl0ZW1TZWxlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgLy8gcmVxdWlyZWQgcHJvcGVydGllc1xuICAgIHNlbGVjdGVkSXRlbXM6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICAgICAgUHJvcFR5cGVzLmFycmF5LFxuICAgICAgUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgIFByb3BUeXBlcy5udW1iZXIsXG4gICAgICBQcm9wVHlwZXMuYm9vbCxcbiAgICAgIFByb3BUeXBlcy5vYmplY3RcbiAgICBdKSxcbiAgICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICBvcHRpb25zOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuYW55KS5pc1JlcXVpcmVkLFxuXG4gICAgLy8gb3B0aW9uYWwgcHJvcGVydGllc1xuICAgIGZpeGVkT3B0aW9uczogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmFueSksXG4gICAgZXJhc2FibGU6IFByb3BUeXBlcy5ib29sLFxuICAgIHNob3dBcnJvdzogUHJvcFR5cGVzLmJvb2wsXG4gICAgZGlzcGxheU9wdGlvbjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLmZ1bmNdKSxcbiAgICBnZXRPcHRpb25WYWx1ZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLmZ1bmNdKSxcbiAgICBmaWx0ZXJPcHRpb246IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5mdW5jXSksXG4gICAgcGxhY2VtZW50OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBpc0Vycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBpc0xvYWRpbmc6IFByb3BUeXBlcy5ib29sLFxuICAgIG11bHRpU2VsZWN0OiBQcm9wVHlwZXMuYm9vbCxcbiAgICBpbnB1dFRoZW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIG9uQmx1cjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgcGxhY2Vob2xkZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgY2xvc2VPblNlbGVjdDogUHJvcFR5cGVzLmJvb2wsXG4gICAgdHlwZWFoZWFkUGxhY2Vob2xkZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgRHJvcGRvd25IZWFkZXJDb21wb25lbnQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIERyb3BEb3duUmVuZGVyQ29tcG9uZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgICBEcm9wRG93bkxpbmVJdGVtUmVuZGVyQ29tcG9uZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgICBDdXN0b21DaGlja2xldENvbXBvbmVudDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgd2l0aFN1Yk9wdGlvbnM6IFByb3BUeXBlcy5ib29sXG4gIH07XG5cbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBlcmFzYWJsZTogZmFsc2UsXG4gICAgc2hvd0Fycm93OiBmYWxzZSxcbiAgICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICAgIHNlbGVjdGVkSXRlbXM6IFtdLFxuICAgIGRpc3BsYXlPcHRpb246IG51bGwsXG4gICAgZ2V0T3B0aW9uVmFsdWU6IG51bGwsXG4gICAgZmlsdGVyT3B0aW9uOiBudWxsLFxuICAgIGZpeGVkT3B0aW9uczogbnVsbCxcbiAgICBpbnB1dFRoZW1lOiAncHJpbWFyeScsXG4gICAgbXVsdGlTZWxlY3Q6IHRydWUsXG4gICAgcGxhY2Vob2xkZXI6ICdwbGFjZWhvbGRlci5lbnRlclZhbHVlJyxcbiAgICBjbG9zZU9uU2VsZWN0OiB0cnVlLFxuICAgIHNlYXJjaGFibGU6IHRydWUsXG4gICAgZHJvcGRvd25IZWFkZXI6IG51bGwsXG4gICAgRHJvcGRvd25IZWFkZXJDb21wb25lbnQ6IG51bGwsXG4gICAgRHJvcERvd25SZW5kZXJDb21wb25lbnQ6IERyb3Bkb3duTGlzdCxcbiAgICBEcm9wRG93bkxpbmVJdGVtUmVuZGVyQ29tcG9uZW50OiBMaXN0SXRlbSxcbiAgICB3aXRoU3ViT3B0aW9uczogZmFsc2VcbiAgfTtcblxuICBzdGF0ZSA9IHtcbiAgICBzaG93VHlwZWFoZWFkOiBmYWxzZVxuICB9O1xuXG4gIGhhbmRsZUNsaWNrT3V0c2lkZSA9ICgpID0+IHtcbiAgICB0aGlzLl9oaWRlVHlwZWFoZWFkKCk7XG4gIH07XG5cbiAgX2hpZGVUeXBlYWhlYWQoKSB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7c2hvd1R5cGVhaGVhZDogZmFsc2V9KTtcbiAgICB0aGlzLl9vbkJsdXIoKTtcbiAgfVxuXG4gIF9vbkJsdXIgPSAoKSA9PiB7XG4gICAgLy8gbm90ZTogY2hpY2tsZXRlZCBpbnB1dCBpcyBub3QgYSByZWFsIGZvcm0gZWxlbWVudCBzbyB3ZSBjYWxsIG9uQmx1cigpXG4gICAgLy8gd2hlbiB3ZSBmZWVsIHRoZSBldmVudHMgYXJlIGFwcHJvcHJpYXRlXG4gICAgaWYgKHRoaXMucHJvcHMub25CbHVyKSB7XG4gICAgICB0aGlzLnByb3BzLm9uQmx1cigpO1xuICAgIH1cbiAgfTtcblxuICBfcmVtb3ZlSXRlbSA9IChpdGVtLCBlKSA9PiB7XG4gICAgLy8gb25seSB1c2VkIHdoZW4gbXVsdGlTZWxlY3QgPSB0cnVlXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgY29uc3Qge3NlbGVjdGVkSXRlbXN9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBpbmRleCA9IHNlbGVjdGVkSXRlbXMuZmluZEluZGV4KHQgPT4gdCA9PT0gaXRlbSk7XG5cbiAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaXRlbXMgPSBbXG4gICAgICAuLi5zZWxlY3RlZEl0ZW1zLnNsaWNlKDAsIGluZGV4KSxcbiAgICAgIC4uLnNlbGVjdGVkSXRlbXMuc2xpY2UoaW5kZXggKyAxLCBzZWxlY3RlZEl0ZW1zLmxlbmd0aClcbiAgICBdO1xuXG4gICAgdGhpcy5wcm9wcy5vbkNoYW5nZShpdGVtcyk7XG5cbiAgICBpZiAodGhpcy5wcm9wcy5jbG9zZU9uU2VsZWN0KSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtzaG93VHlwZWFoZWFkOiBmYWxzZX0pO1xuICAgICAgdGhpcy5fb25CbHVyKCk7XG4gICAgfVxuICB9O1xuXG4gIF9zZWxlY3RJdGVtID0gaXRlbSA9PiB7XG4gICAgY29uc3QgZ2V0VmFsdWUgPSBBY2Nlc3Nvci5nZW5lcmF0ZU9wdGlvblRvU3RyaW5nRm9yKFxuICAgICAgdGhpcy5wcm9wcy5nZXRPcHRpb25WYWx1ZSB8fCB0aGlzLnByb3BzLmRpc3BsYXlPcHRpb25cbiAgICApO1xuXG4gICAgY29uc3QgcHJldmlvdXNTZWxlY3RlZCA9IHRvQXJyYXkodGhpcy5wcm9wcy5zZWxlY3RlZEl0ZW1zKTtcblxuICAgIGlmICh0aGlzLnByb3BzLm11bHRpU2VsZWN0KSB7XG4gICAgICBjb25zdCBpdGVtcyA9IHVuaXFCeShwcmV2aW91c1NlbGVjdGVkLmNvbmNhdCh0b0FycmF5KGl0ZW0pKSwgZ2V0VmFsdWUpO1xuICAgICAgdGhpcy5wcm9wcy5vbkNoYW5nZShpdGVtcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHJvcHMub25DaGFuZ2UoZ2V0VmFsdWUoaXRlbSkpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnByb3BzLmNsb3NlT25TZWxlY3QpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe3Nob3dUeXBlYWhlYWQ6IGZhbHNlfSk7XG4gICAgICB0aGlzLl9vbkJsdXIoKTtcbiAgICB9XG4gIH07XG5cbiAgX29uRXJhc2UgPSBlID0+IHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMucHJvcHMub25DaGFuZ2UobnVsbCk7XG4gIH07XG5cbiAgX3Nob3dUeXBlYWhlYWQgPSBlID0+IHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGlmICghdGhpcy5wcm9wcy5kaXNhYmxlZCAmJiAhdGhpcy5wcm9wcy5pc0xvYWRpbmcpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBzaG93VHlwZWFoZWFkOiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgX3JlbmRlckRyb3Bkb3duKGludGwpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPERyb3Bkb3duV3JhcHBlciBwbGFjZW1lbnQ9e3RoaXMucHJvcHMucGxhY2VtZW50fT5cbiAgICAgICAgPFR5cGVhaGVhZFxuICAgICAgICAgIGN1c3RvbUNsYXNzZXM9e3tcbiAgICAgICAgICAgIHJlc3VsdHM6ICdsaXN0LXNlbGVjdG9yJyxcbiAgICAgICAgICAgIGlucHV0OiAndHlwZWFoZWFkX19pbnB1dCcsXG4gICAgICAgICAgICBsaXN0SXRlbTogJ2xpc3RfX2l0ZW0nLFxuICAgICAgICAgICAgbGlzdEFuY2hvcjogJ2xpc3RfX2l0ZW1fX2FuY2hvcidcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9wdGlvbnM9e3RoaXMucHJvcHMub3B0aW9uc31cbiAgICAgICAgICBmaWx0ZXJPcHRpb249e3RoaXMucHJvcHMuZmlsdGVyT3B0aW9ufVxuICAgICAgICAgIGZpeGVkT3B0aW9ucz17dGhpcy5wcm9wcy5maXhlZE9wdGlvbnN9XG4gICAgICAgICAgcGxhY2Vob2xkZXI9e1xuICAgICAgICAgICAgdGhpcy5wcm9wcy50eXBlYWhlYWRQbGFjZWhvbGRlciB8fCBpbnRsXG4gICAgICAgICAgICAgID8gaW50bC5mb3JtYXRNZXNzYWdlKHtpZDogJ3BsYWNlaG9sZGVyLnNlYXJjaCd9KVxuICAgICAgICAgICAgICA6ICdTZWFyY2gnXG4gICAgICAgICAgfVxuICAgICAgICAgIG9uT3B0aW9uU2VsZWN0ZWQ9e3RoaXMuX3NlbGVjdEl0ZW19XG4gICAgICAgICAgY3VzdG9tTGlzdENvbXBvbmVudD17dGhpcy5wcm9wcy5Ecm9wRG93blJlbmRlckNvbXBvbmVudH1cbiAgICAgICAgICBjdXN0b21MaXN0SGVhZGVyQ29tcG9uZW50PXt0aGlzLnByb3BzLkRyb3Bkb3duSGVhZGVyQ29tcG9uZW50fVxuICAgICAgICAgIGN1c3RvbUxpc3RJdGVtQ29tcG9uZW50PXt0aGlzLnByb3BzLkRyb3BEb3duTGluZUl0ZW1SZW5kZXJDb21wb25lbnR9XG4gICAgICAgICAgZGlzcGxheU9wdGlvbj17QWNjZXNzb3IuZ2VuZXJhdGVPcHRpb25Ub1N0cmluZ0Zvcih0aGlzLnByb3BzLmRpc3BsYXlPcHRpb24pfVxuICAgICAgICAgIHNlYXJjaGFibGU9e3RoaXMucHJvcHMuc2VhcmNoYWJsZX1cbiAgICAgICAgICBzaG93T3B0aW9uc1doZW5FbXB0eVxuICAgICAgICAgIHNlbGVjdGVkSXRlbXM9e3RvQXJyYXkodGhpcy5wcm9wcy5zZWxlY3RlZEl0ZW1zKX1cbiAgICAgICAgICBsaWdodD17dGhpcy5wcm9wcy5pbnB1dFRoZW1lID09PSAnbGlnaHQnfVxuICAgICAgICAgIHdpdGhTdWJPcHRpb25zPXt0aGlzLnByb3BzLndpdGhTdWJPcHRpb25zfVxuICAgICAgICAvPlxuICAgICAgPC9Ecm9wZG93bldyYXBwZXI+XG4gICAgKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCBzZWxlY3RlZCA9IHRvQXJyYXkodGhpcy5wcm9wcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICBjb25zdCBoYXNWYWx1ZSA9IHNlbGVjdGVkLmxlbmd0aDtcbiAgICBjb25zdCBkaXNwbGF5T3B0aW9uID0gQWNjZXNzb3IuZ2VuZXJhdGVPcHRpb25Ub1N0cmluZ0Zvcih0aGlzLnByb3BzLmRpc3BsYXlPcHRpb24pO1xuXG4gICAgY29uc3QgZHJvcGRvd25TZWxlY3RQcm9wcyA9IHtcbiAgICAgIGNsYXNzTmFtZTogY2xhc3NuYW1lcyh7XG4gICAgICAgIGFjdGl2ZTogdGhpcy5zdGF0ZS5zaG93VHlwZWFoZWFkXG4gICAgICB9KSxcbiAgICAgIGRpc3BsYXlPcHRpb24sXG4gICAgICBkaXNhYmxlZDogdGhpcy5wcm9wcy5kaXNhYmxlZCxcbiAgICAgIG9uQ2xpY2s6IHRoaXMuX3Nob3dUeXBlYWhlYWQsXG4gICAgICBlcnJvcjogdGhpcy5wcm9wcy5pc0Vycm9yLFxuICAgICAgaW5wdXRUaGVtZTogdGhpcy5wcm9wcy5pbnB1dFRoZW1lLFxuICAgICAgc2l6ZTogdGhpcy5wcm9wcy5zaXplXG4gICAgfTtcbiAgICBjb25zdCBpbnRsID0gdGhpcy5wcm9wcy5pbnRsO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaXRlbS1zZWxlY3RvclwiPlxuICAgICAgICA8ZGl2IHN0eWxlPXt7cG9zaXRpb246ICdyZWxhdGl2ZSd9fT5cbiAgICAgICAgICB7LyogdGhpcyBwYXJ0IGlzIHVzZWQgdG8gZGlzcGxheSB0aGUgbGFiZWwgKi99XG4gICAgICAgICAge3RoaXMucHJvcHMubXVsdGlTZWxlY3QgPyAoXG4gICAgICAgICAgICA8Q2hpY2tsZXRlZElucHV0XG4gICAgICAgICAgICAgIHsuLi5kcm9wZG93blNlbGVjdFByb3BzfVxuICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zPXt0b0FycmF5KHRoaXMucHJvcHMuc2VsZWN0ZWRJdGVtcyl9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXt0aGlzLnByb3BzLnBsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICByZW1vdmVJdGVtPXt0aGlzLl9yZW1vdmVJdGVtfVxuICAgICAgICAgICAgICBDdXN0b21DaGlja2xldENvbXBvbmVudD17dGhpcy5wcm9wcy5DdXN0b21DaGlja2xldENvbXBvbmVudH1cbiAgICAgICAgICAgICAgaW5wdXRUaGVtZT17dGhpcy5wcm9wcy5pbnB1dFRoZW1lfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPFN0eWxlZERyb3Bkb3duU2VsZWN0IHsuLi5kcm9wZG93blNlbGVjdFByb3BzfT5cbiAgICAgICAgICAgICAgPERyb3Bkb3duU2VsZWN0VmFsdWVcbiAgICAgICAgICAgICAgICBoYXNQbGFjZWhvbGRlcj17IWhhc1ZhbHVlfVxuICAgICAgICAgICAgICAgIGlucHV0VGhlbWU9e3RoaXMucHJvcHMuaW5wdXRUaGVtZX1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJpdGVtLXNlbGVjdG9yX19kcm9wZG93bl9fdmFsdWVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge2hhc1ZhbHVlID8gKFxuICAgICAgICAgICAgICAgICAgPHRoaXMucHJvcHMuRHJvcERvd25MaW5lSXRlbVJlbmRlckNvbXBvbmVudFxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5T3B0aW9uPXtkaXNwbGF5T3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17c2VsZWN0ZWRbMF19XG4gICAgICAgICAgICAgICAgICAgIGxpZ2h0PXt0aGlzLnByb3BzLmlucHV0VGhlbWUgPT09ICdsaWdodCd9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD17dGhpcy5wcm9wcy5wbGFjZWhvbGRlciB8fCAncGxhY2Vob2xkZXIuc2VsZWN0VmFsdWUnfSAvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25TZWxlY3RWYWx1ZT5cbiAgICAgICAgICAgICAge3RoaXMucHJvcHMuZXJhc2FibGUgJiYgaGFzVmFsdWUgPyAoXG4gICAgICAgICAgICAgICAgPERyb3Bkb3duU2VsZWN0QWN0aW9uUmlnaHQ+XG4gICAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5pc0xvYWRpbmcgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxMb2FkaW5nU3Bpbm5lciBzaXplPXsxOH0gc3Ryb2tlV2lkdGg9ezJ9IGdhcD17MH0gLz5cbiAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgIDxEZWxldGUgaGVpZ2h0PVwiMTJweFwiIG9uQ2xpY2s9e3RoaXMuX29uRXJhc2V9IC8+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvRHJvcGRvd25TZWxlY3RBY3Rpb25SaWdodD5cbiAgICAgICAgICAgICAgKSA6IHRoaXMucHJvcHMuc2hvd0Fycm93ID8gKFxuICAgICAgICAgICAgICAgIDxEcm9wZG93blNlbGVjdEFjdGlvblJpZ2h0PlxuICAgICAgICAgICAgICAgICAgPEFycm93RG93biBoZWlnaHQ9XCIxNHB4XCIgb25DbGljaz17dGhpcy5fc2hvd1R5cGVhaGVhZH0gLz5cbiAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duU2VsZWN0QWN0aW9uUmlnaHQ+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgPC9TdHlsZWREcm9wZG93blNlbGVjdD5cbiAgICAgICAgICApfVxuICAgICAgICAgIHsvKiB0aGlzIHBhcnQgaXMgdXNlZCB0byBidWlsdCB0aGUgbGlzdCAqL31cbiAgICAgICAgICB7dGhpcy5zdGF0ZS5zaG93VHlwZWFoZWFkICYmIHRoaXMuX3JlbmRlckRyb3Bkb3duKGludGwpfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IEl0ZW1TZWxlY3Rvckxpc3RlbiA9IGxpc3RlbnNUb0NsaWNrT3V0c2lkZShJdGVtU2VsZWN0b3IpO1xuZXhwb3J0IGRlZmF1bHQgaW5qZWN0SW50bChsaXN0ZW5zVG9DbGlja091dHNpZGUoSXRlbVNlbGVjdG9yKSk7XG4iXX0=
|
|
@@ -64,24 +64,20 @@ var DEFAULT_CLASS = 'typeahead';
|
|
|
64
64
|
*/
|
|
65
65
|
|
|
66
66
|
var TypeaheadWrapper = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n background-color: ", ";\n box-shadow: ", ";\n\n :focus {\n outline: 0;\n }\n"])), function (props) {
|
|
67
|
-
return props.light ? props.theme.dropdownListBgdLT : props.theme.
|
|
67
|
+
return props.light ? props.theme.dropdownListBgdLT : props.theme.inputBgd;
|
|
68
68
|
}, function (props) {
|
|
69
69
|
return props.theme.dropdownListShadow;
|
|
70
70
|
});
|
|
71
71
|
|
|
72
|
-
var InputBox = _styledComponents["default"].div
|
|
73
|
-
className: 'typeahead__input_box'
|
|
74
|
-
})(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n padding: 8px;\n"])));
|
|
72
|
+
var InputBox = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n position: relative;\n margin: 8px;\n"])));
|
|
75
73
|
|
|
76
|
-
var TypeaheadInput = _styledComponents["default"].input(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n ", "
|
|
74
|
+
var TypeaheadInput = _styledComponents["default"].input(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n ", ";\n width: 100%;\n padding-left: 35px;\n background-color: ", ";\n border: none;\n"])), function (props) {
|
|
77
75
|
return props.light ? props.theme.inputLT : props.theme.secondaryInput;
|
|
78
76
|
}, function (props) {
|
|
79
|
-
return props.light ? props.theme.
|
|
77
|
+
return props.light ? props.theme.inputBgd : '#eee';
|
|
80
78
|
});
|
|
81
79
|
|
|
82
|
-
var InputIcon = _styledComponents["default"].div
|
|
83
|
-
className: 'typeahead__input_icon'
|
|
84
|
-
})(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n right: 15px;\n top: 14px;\n color: ", ";\n"])), function (props) {
|
|
80
|
+
var InputIcon = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n left: 10px;\n top: 50%;\n z-index: 2;\n transform: translateY(-50%);\n color: ", ";\n svg {\n display: block;\n }\n"])), function (props) {
|
|
85
81
|
return props.theme.inputPlaceholderColor;
|
|
86
82
|
});
|
|
87
83
|
|
|
@@ -324,6 +320,7 @@ var Typeahead = /*#__PURE__*/function (_Component) {
|
|
|
324
320
|
value: function _renderIncrementalSearchResults() {
|
|
325
321
|
return /*#__PURE__*/_react["default"].createElement(this.props.customListComponent, {
|
|
326
322
|
fixedOptions: this.props.fixedOptions,
|
|
323
|
+
searchEntryValue: this.state.entryValue,
|
|
327
324
|
options: this.props.maxVisible ? this.state.searchResults.slice(0, this.props.maxVisible) : this.state.searchResults,
|
|
328
325
|
areResultsTruncated: this.props.maxVisible && this.state.searchResults.length > this.props.maxVisible,
|
|
329
326
|
resultsTruncatedMessage: this.props.resultsTruncatedMessage,
|
|
@@ -337,7 +334,8 @@ var Typeahead = /*#__PURE__*/function (_Component) {
|
|
|
337
334
|
defaultClassNames: this.props.defaultClassNames,
|
|
338
335
|
displayOption: this.props.displayOption,
|
|
339
336
|
selectedItems: this.props.selectedItems,
|
|
340
|
-
light: this.props.light
|
|
337
|
+
light: this.props.light,
|
|
338
|
+
withSubOptions: this.props.withSubOptions
|
|
341
339
|
});
|
|
342
340
|
}
|
|
343
341
|
}, {
|
|
@@ -400,7 +398,9 @@ var Typeahead = /*#__PURE__*/function (_Component) {
|
|
|
400
398
|
onKeyUp: this.props.onKeyUp,
|
|
401
399
|
onFocus: this._onFocus,
|
|
402
400
|
light: this.props.light
|
|
403
|
-
}, this._renderHiddenInput(), this.props.searchable ? /*#__PURE__*/_react["default"].createElement(InputBox, null, /*#__PURE__*/_react["default"].createElement(
|
|
401
|
+
}, this._renderHiddenInput(), this.props.searchable ? /*#__PURE__*/_react["default"].createElement(InputBox, null, /*#__PURE__*/_react["default"].createElement(InputIcon, null, /*#__PURE__*/_react["default"].createElement(this.props.inputIcon, {
|
|
402
|
+
height: "18px"
|
|
403
|
+
})), /*#__PURE__*/_react["default"].createElement(TypeaheadInput, (0, _extends2["default"])({
|
|
404
404
|
ref: this.entry,
|
|
405
405
|
type: "text",
|
|
406
406
|
disabled: this.props.disabled
|
|
@@ -411,8 +411,6 @@ var Typeahead = /*#__PURE__*/function (_Component) {
|
|
|
411
411
|
onChange: this._onChange,
|
|
412
412
|
onBlur: this._onBlur,
|
|
413
413
|
light: this.props.light
|
|
414
|
-
})), /*#__PURE__*/_react["default"].createElement(InputIcon, null, /*#__PURE__*/_react["default"].createElement(this.props.inputIcon, {
|
|
415
|
-
height: "18px"
|
|
416
414
|
}))) : null, this._renderIncrementalSearchResults());
|
|
417
415
|
}
|
|
418
416
|
}], [{
|
|
@@ -459,7 +457,8 @@ var Typeahead = /*#__PURE__*/function (_Component) {
|
|
|
459
457
|
customListItemComponent: _propTypes["default"].oneOfType([_propTypes["default"].element, _propTypes["default"].func]),
|
|
460
458
|
customListHeaderComponent: _propTypes["default"].oneOfType([_propTypes["default"].element, _propTypes["default"].func]),
|
|
461
459
|
showOptionsWhenEmpty: _propTypes["default"].bool,
|
|
462
|
-
searchable: _propTypes["default"].bool
|
|
460
|
+
searchable: _propTypes["default"].bool,
|
|
461
|
+
withSubOptions: _propTypes["default"].bool
|
|
463
462
|
});
|
|
464
463
|
(0, _defineProperty2["default"])(Typeahead, "defaultProps", {
|
|
465
464
|
options: [],
|
|
@@ -488,9 +487,10 @@ var Typeahead = /*#__PURE__*/function (_Component) {
|
|
|
488
487
|
customListHeaderComponent: null,
|
|
489
488
|
showOptionsWhenEmpty: true,
|
|
490
489
|
searchable: true,
|
|
491
|
-
resultsTruncatedMessage: null
|
|
490
|
+
resultsTruncatedMessage: null,
|
|
491
|
+
withSubOptions: false
|
|
492
492
|
});
|
|
493
493
|
(0, _reactLifecyclesCompat.polyfill)(Typeahead);
|
|
494
494
|
var _default = Typeahead;
|
|
495
495
|
exports["default"] = _default;
|
|
496
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2NvbW1vbi9pdGVtLXNlbGVjdG9yL3R5cGVhaGVhZC5qcyJdLCJuYW1lcyI6WyJERUZBVUxUX0NMQVNTIiwiVHlwZWFoZWFkV3JhcHBlciIsInN0eWxlZCIsImRpdiIsInByb3BzIiwibGlnaHQiLCJ0aGVtZSIsImRyb3Bkb3duTGlzdEJnZExUIiwiZHJvcGRvd25MaXN0QmdkIiwiZHJvcGRvd25MaXN0U2hhZG93IiwiSW5wdXRCb3giLCJhdHRycyIsImNsYXNzTmFtZSIsIlR5cGVhaGVhZElucHV0IiwiaW5wdXQiLCJpbnB1dExUIiwic2Vjb25kYXJ5SW5wdXQiLCJzZWxlY3RCYWNrZ3JvdW5kTFQiLCJzZWNvbmRhcnlJbnB1dEJnZCIsIklucHV0SWNvbiIsImlucHV0UGxhY2Vob2xkZXJDb2xvciIsImdlbmVyYXRlU2VhcmNoRnVuY3Rpb24iLCJzZWFyY2hPcHRpb25zIiwiZmlsdGVyT3B0aW9uIiwiQ29uc29sZSIsIndhcm4iLCJ2YWx1ZSIsIm9wdGlvbnMiLCJmaWx0ZXIiLCJvIiwibWFwcGVyIiwiQWNjZXNzb3IiLCJnZW5lcmF0ZUFjY2Vzc29yIiwiSURFTlRJVFlfRk4iLCJmdXp6eSIsImV4dHJhY3QiLCJtYXAiLCJyZXMiLCJpbmRleCIsImdldE9wdGlvbnNGb3JWYWx1ZSIsInN0YXRlIiwic2hvd09wdGlvbnNXaGVuRW1wdHkiLCJzZWFyY2hhYmxlIiwic2hvdWxkU2tpcFNlYXJjaCIsImVtcHR5VmFsdWUiLCJ0cmltIiwibGVuZ3RoIiwiaXNGb2N1c2VkIiwiVHlwZWFoZWFkIiwiZW50cnkiLCJjdXJyZW50IiwiZm9jdXMiLCJhbGxvd0N1c3RvbVZhbHVlcyIsImVudHJ5VmFsdWUiLCJzZWFyY2hSZXN1bHRzIiwiaW5kZXhPZiIsIl9oYXNDdXN0b21WYWx1ZSIsIm9wdGlvbiIsImV2ZW50Iiwic2V0U3RhdGUiLCJzZWxlY3Rpb24iLCJvbk9wdGlvblNlbGVjdGVkIiwiZ2V0U2VsZWN0aW9uIiwib25LZXlEb3duIiwiX29uT3B0aW9uU2VsZWN0ZWQiLCJzZWxlY3Rpb25JbmRleCIsIl9nZXRDdXN0b21WYWx1ZSIsImV2ZW50cyIsIktleUV2ZW50IiwiRE9NX1ZLX1VQIiwibmF2VXAiLCJET01fVktfRE9XTiIsIm5hdkRvd24iLCJET01fVktfUkVUVVJOIiwiRE9NX1ZLX0VOVEVSIiwiX29uRW50ZXIiLCJET01fVktfRVNDQVBFIiwiX29uRXNjYXBlIiwiRE9NX1ZLX1RBQiIsIl9vblRhYiIsImRlbHRhIiwiX2hhc0hpbnQiLCJuZXdJbmRleCIsIm1heFZpc2libGUiLCJzbGljZSIsIl9uYXYiLCJvbkNoYW5nZSIsIl9vblRleHRFbnRyeVVwZGF0ZWQiLCJzaGlmdEtleSIsImhhbmRsZXIiLCJldmVudE1hcCIsImtleUNvZGUiLCJwcmV2ZW50RGVmYXVsdCIsIm9uRm9jdXMiLCJvbkJsdXIiLCJpbml0aWFsVmFsdWUiLCJyb290IiwiZml4ZWRPcHRpb25zIiwicmVzdWx0c1RydW5jYXRlZE1lc3NhZ2UiLCJjdXN0b21DbGFzc2VzIiwiY3VzdG9tTGlzdEl0ZW1Db21wb25lbnQiLCJjdXN0b21MaXN0SGVhZGVyQ29tcG9uZW50IiwiZGVmYXVsdENsYXNzTmFtZXMiLCJkaXNwbGF5T3B0aW9uIiwic2VsZWN0ZWRJdGVtcyIsIl9oYXNGaXhlZE9wdGlvbnMiLCJuYW1lIiwiQXJyYXkiLCJpc0FycmF5IiwiaW5wdXRDbGFzc2VzIiwiQm9vbGVhbiIsImlucHV0Q2xhc3NMaXN0IiwiY2xhc3NlcyIsImNsYXNzTGlzdCIsIl9vbktleURvd24iLCJvbktleVByZXNzIiwib25LZXlVcCIsIl9vbkZvY3VzIiwiX3JlbmRlckhpZGRlbklucHV0IiwiZGlzYWJsZWQiLCJpbnB1dFByb3BzIiwicGxhY2Vob2xkZXIiLCJfb25DaGFuZ2UiLCJfb25CbHVyIiwiX3JlbmRlckluY3JlbWVudGFsU2VhcmNoUmVzdWx0cyIsIkNvbXBvbmVudCIsIlByb3BUeXBlcyIsInN0cmluZyIsIm9iamVjdCIsIm51bWJlciIsImFycmF5T2YiLCJhbnkiLCJib29sIiwidGV4dGFyZWEiLCJmdW5jIiwib25lT2ZUeXBlIiwiaW5wdXREaXNwbGF5T3B0aW9uIiwiZm9ybUlucHV0T3B0aW9uIiwiY3VzdG9tTGlzdENvbXBvbmVudCIsImVsZW1lbnQiLCJEcm9wZG93bkxpc3QiLCJMaXN0SXRlbSIsImlucHV0SWNvbiIsIlNlYXJjaCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFvQkE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7O0FBRUEsSUFBTUEsYUFBYSxHQUFHLFdBQXRCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLElBQU1DLGdCQUFnQixHQUFHQyw2QkFBT0MsR0FBViwwTkFHQSxVQUFBQyxLQUFLO0FBQUEsU0FDdkJBLEtBQUssQ0FBQ0MsS0FBTixHQUFjRCxLQUFLLENBQUNFLEtBQU4sQ0FBWUMsaUJBQTFCLEdBQThDSCxLQUFLLENBQUNFLEtBQU4sQ0FBWUUsZUFEbkM7QUFBQSxDQUhMLEVBS04sVUFBQUosS0FBSztBQUFBLFNBQUlBLEtBQUssQ0FBQ0UsS0FBTixDQUFZRyxrQkFBaEI7QUFBQSxDQUxDLENBQXRCOztBQVlBLElBQU1DLFFBQVEsR0FBR1IsNkJBQU9DLEdBQVAsQ0FBV1EsS0FBWCxDQUFpQjtBQUNoQ0MsRUFBQUEsU0FBUyxFQUFFO0FBRHFCLENBQWpCLENBQUgsMkdBQWQ7O0FBTUEsSUFBTUMsY0FBYyxHQUFHWCw2QkFBT1ksS0FBVixvS0FDaEIsVUFBQVYsS0FBSztBQUFBLFNBQUtBLEtBQUssQ0FBQ0MsS0FBTixHQUFjRCxLQUFLLENBQUNFLEtBQU4sQ0FBWVMsT0FBMUIsR0FBb0NYLEtBQUssQ0FBQ0UsS0FBTixDQUFZVSxjQUFyRDtBQUFBLENBRFcsRUFHSSxVQUFBWixLQUFLO0FBQUEsU0FDdkJBLEtBQUssQ0FBQ0MsS0FBTixHQUFjRCxLQUFLLENBQUNFLEtBQU4sQ0FBWVcsa0JBQTFCLEdBQStDYixLQUFLLENBQUNFLEtBQU4sQ0FBWVksaUJBRHBDO0FBQUEsQ0FIVCxDQUFwQjs7QUFRQSxJQUFNQyxTQUFTLEdBQUdqQiw2QkFBT0MsR0FBUCxDQUFXUSxLQUFYLENBQWlCO0FBQ2pDQyxFQUFBQSxTQUFTLEVBQUU7QUFEc0IsQ0FBakIsQ0FBSCxnS0FNSixVQUFBUixLQUFLO0FBQUEsU0FBSUEsS0FBSyxDQUFDRSxLQUFOLENBQVljLHFCQUFoQjtBQUFBLENBTkQsQ0FBZjs7QUFTQSxTQUFTQyxzQkFBVCxDQUFnQ2pCLEtBQWhDLEVBQXVDO0FBQUEsTUFDOUJrQixhQUQ4QixHQUNDbEIsS0FERCxDQUM5QmtCLGFBRDhCO0FBQUEsTUFDZkMsWUFEZSxHQUNDbkIsS0FERCxDQUNmbUIsWUFEZTs7QUFFckMsTUFBSSxPQUFPRCxhQUFQLEtBQXlCLFVBQTdCLEVBQXlDO0FBQ3ZDLFFBQUlDLFlBQVksS0FBSyxJQUFyQixFQUEyQjtBQUN6QkMsc0JBQVFDLElBQVIsQ0FBYSxxRUFBYjtBQUNEOztBQUNELFdBQU9ILGFBQVA7QUFDRCxHQUxELE1BS08sSUFBSSxPQUFPQyxZQUFQLEtBQXdCLFVBQTVCLEVBQXdDO0FBQzdDO0FBQ0EsV0FBTyxVQUFDRyxLQUFELEVBQVFDLE9BQVI7QUFBQSxhQUFvQkEsT0FBTyxDQUFDQyxNQUFSLENBQWUsVUFBQUMsQ0FBQztBQUFBLGVBQUlOLFlBQVksQ0FBQ0csS0FBRCxFQUFRRyxDQUFSLENBQWhCO0FBQUEsT0FBaEIsQ0FBcEI7QUFBQSxLQUFQO0FBQ0Q7O0FBRUQsTUFBTUMsTUFBTSxHQUNWLE9BQU9QLFlBQVAsS0FBd0IsUUFBeEIsR0FDSVEscUJBQVNDLGdCQUFULENBQTBCVCxZQUExQixDQURKLEdBRUlRLHFCQUFTRSxXQUhmO0FBS0EsU0FBTyxVQUFDUCxLQUFELEVBQVFDLE9BQVI7QUFBQSxXQUNMTyxrQkFBTU4sTUFBTixDQUFhRixLQUFiLEVBQW9CQyxPQUFwQixFQUE2QjtBQUFDUSxNQUFBQSxPQUFPLEVBQUVMO0FBQVYsS0FBN0IsRUFBZ0RNLEdBQWhELENBQW9ELFVBQUFDLEdBQUc7QUFBQSxhQUFJVixPQUFPLENBQUNVLEdBQUcsQ0FBQ0MsS0FBTCxDQUFYO0FBQUEsS0FBdkQsQ0FESztBQUFBLEdBQVA7QUFFRDs7QUFFRCxTQUFTQyxrQkFBVCxDQUE0QmIsS0FBNUIsRUFBbUN0QixLQUFuQyxFQUEwQ29DLEtBQTFDLEVBQWlEO0FBQUEsTUFDeENiLE9BRHdDLEdBQ1B2QixLQURPLENBQ3hDdUIsT0FEd0M7QUFBQSxNQUMvQmMsb0JBRCtCLEdBQ1ByQyxLQURPLENBQy9CcUMsb0JBRCtCOztBQUcvQyxNQUFJLENBQUNyQyxLQUFLLENBQUNzQyxVQUFYLEVBQXVCO0FBQ3JCO0FBQ0EsV0FBT2YsT0FBUDtBQUNEOztBQUNELE1BQUlnQixnQkFBZ0IsQ0FBQ2pCLEtBQUQsRUFBUWMsS0FBUixFQUFlQyxvQkFBZixDQUFwQixFQUEwRDtBQUN4RCxXQUFPZCxPQUFQO0FBQ0Q7O0FBRUQsTUFBTUwsYUFBYSxHQUFHRCxzQkFBc0IsQ0FBQ2pCLEtBQUQsQ0FBNUM7QUFDQSxTQUFPa0IsYUFBYSxDQUFDSSxLQUFELEVBQVFDLE9BQVIsQ0FBcEI7QUFDRDs7QUFFRCxTQUFTZ0IsZ0JBQVQsQ0FBMEI3QixLQUExQixFQUFpQzBCLEtBQWpDLEVBQXdDQyxvQkFBeEMsRUFBOEQ7QUFDNUQsTUFBTUcsVUFBVSxHQUFHLENBQUM5QixLQUFELElBQVVBLEtBQUssQ0FBQytCLElBQU4sR0FBYUMsTUFBYixLQUF3QixDQUFyRCxDQUQ0RCxDQUc1RDtBQUNBOztBQUNBLE1BQU1DLFNBQVMsR0FBR1AsS0FBSyxJQUFJQSxLQUFLLENBQUNPLFNBQWpDO0FBQ0EsU0FBTyxFQUFFTixvQkFBb0IsSUFBSU0sU0FBMUIsS0FBd0NILFVBQS9DO0FBQ0Q7O0lBRUtJLFM7Ozs7O0FBd0VKLHFCQUFZNUMsS0FBWixFQUFtQjtBQUFBOztBQUFBO0FBQ2pCLDhCQUFNQSxLQUFOO0FBRGlCLDBHQStCWix1QkEvQlk7QUFBQSwyR0FnQ1gsdUJBaENXO0FBQUEsOEZBa0NYLFlBQU07QUFDWixVQUFJLE1BQUs2QyxLQUFMLENBQVdDLE9BQWYsRUFBd0I7QUFDdEIsY0FBS0QsS0FBTCxDQUFXQyxPQUFYLENBQW1CQyxLQUFuQjtBQUNEO0FBQ0YsS0F0Q2tCO0FBQUEsd0dBd0NELFlBQU07QUFDdEIsYUFDRSxNQUFLL0MsS0FBTCxDQUFXZ0QsaUJBQVgsR0FBK0IsQ0FBL0IsSUFDQSxNQUFLWixLQUFMLENBQVdhLFVBQVgsQ0FBc0JQLE1BQXRCLElBQWdDLE1BQUsxQyxLQUFMLENBQVdnRCxpQkFEM0MsSUFFQSxNQUFLWixLQUFMLENBQVdjLGFBQVgsQ0FBeUJDLE9BQXpCLENBQWlDLE1BQUtmLEtBQUwsQ0FBV2EsVUFBNUMsSUFBMEQsQ0FINUQ7QUFLRCxLQTlDa0I7QUFBQSx3R0FnREQsWUFBTTtBQUN0QixhQUFPLE1BQUtHLGVBQUwsS0FBeUIsTUFBS2hCLEtBQUwsQ0FBV2EsVUFBcEMsR0FBaUQsSUFBeEQ7QUFDRCxLQWxEa0I7QUFBQSwwR0FpR0MsVUFBQ0ksTUFBRCxFQUFTQyxLQUFULEVBQW1CO0FBQ3JDLFVBQUksTUFBS3RELEtBQUwsQ0FBV3NDLFVBQWYsRUFBMkI7QUFDekI7QUFDQSxjQUFLaUIsUUFBTCxDQUFjO0FBQ1pMLFVBQUFBLGFBQWEsRUFBRWYsa0JBQWtCLENBQUMsRUFBRCxFQUFLLE1BQUtuQyxLQUFWLEVBQWlCLE1BQUtvQyxLQUF0QixDQURyQjtBQUVab0IsVUFBQUEsU0FBUyxFQUFFLEVBRkM7QUFHWlAsVUFBQUEsVUFBVSxFQUFFO0FBSEEsU0FBZDtBQUtEOztBQUVELGFBQU8sTUFBS2pELEtBQUwsQ0FBV3lELGdCQUFYLENBQTRCSixNQUE1QixFQUFvQ0MsS0FBcEMsQ0FBUDtBQUNELEtBNUdrQjtBQUFBLDRHQStHRyxZQUFNO0FBQzFCLFVBQUksTUFBS3RELEtBQUwsQ0FBV3NDLFVBQWYsRUFBMkI7QUFDekIsWUFBTWhCLEtBQUssR0FBRyxNQUFLdUIsS0FBTCxDQUFXQyxPQUFYLENBQW1CeEIsS0FBakM7O0FBRUEsY0FBS2lDLFFBQUwsQ0FBYztBQUNaTCxVQUFBQSxhQUFhLEVBQUVmLGtCQUFrQixDQUFDYixLQUFELEVBQVEsTUFBS3RCLEtBQWIsRUFBb0IsTUFBS29DLEtBQXpCLENBRHJCO0FBRVpvQixVQUFBQSxTQUFTLEVBQUUsRUFGQztBQUdaUCxVQUFBQSxVQUFVLEVBQUUzQjtBQUhBLFNBQWQ7QUFLRDtBQUNGLEtBekhrQjtBQUFBLGlHQTJIUixVQUFBZ0MsS0FBSyxFQUFJO0FBQ2xCLFVBQU1FLFNBQVMsR0FBRyxNQUFLRSxZQUFMLEVBQWxCOztBQUNBLFVBQUksQ0FBQ0YsU0FBTCxFQUFnQjtBQUNkLGVBQU8sTUFBS3hELEtBQUwsQ0FBVzJELFNBQVgsQ0FBcUJMLEtBQXJCLENBQVA7QUFDRDs7QUFDRCxhQUFPLE1BQUtNLGlCQUFMLENBQXVCSixTQUF2QixFQUFrQ0YsS0FBbEMsQ0FBUDtBQUNELEtBaklrQjtBQUFBLGtHQW1JUCxZQUFNO0FBQ2hCLFlBQUtDLFFBQUwsQ0FBYztBQUNaTSxRQUFBQSxjQUFjLEVBQUU7QUFESixPQUFkO0FBR0QsS0F2SWtCO0FBQUEsK0ZBeUlWLFVBQUFQLEtBQUssRUFBSTtBQUNoQixVQUFNRSxTQUFTLEdBQUcsTUFBS0UsWUFBTCxFQUFsQjs7QUFDQSxVQUFJTCxNQUFNLEdBQUdHLFNBQVMsR0FDbEJBLFNBRGtCLEdBRWxCLE1BQUtwQixLQUFMLENBQVdjLGFBQVgsQ0FBeUJSLE1BQXpCLEdBQWtDLENBQWxDLEdBQ0EsTUFBS04sS0FBTCxDQUFXYyxhQUFYLENBQXlCLENBQXpCLENBREEsR0FFQSxJQUpKOztBQU1BLFVBQUlHLE1BQU0sS0FBSyxJQUFYLElBQW1CLE1BQUtELGVBQUwsRUFBdkIsRUFBK0M7QUFDN0NDLFFBQUFBLE1BQU0sR0FBRyxNQUFLUyxlQUFMLEVBQVQ7QUFDRDs7QUFFRCxVQUFJVCxNQUFNLEtBQUssSUFBZixFQUFxQjtBQUNuQixlQUFPLE1BQUtPLGlCQUFMLENBQXVCUCxNQUF2QixFQUErQkMsS0FBL0IsQ0FBUDtBQUNEO0FBQ0YsS0F4SmtCO0FBQUEsaUdBMEpSLFVBQUFBLEtBQUssRUFBSTtBQUNsQixVQUFNUyxNQUFNLEdBQUcsRUFBZjtBQUVBQSxNQUFBQSxNQUFNLENBQUNDLHFCQUFTQyxTQUFWLENBQU4sR0FBNkIsTUFBS0MsS0FBbEM7QUFDQUgsTUFBQUEsTUFBTSxDQUFDQyxxQkFBU0csV0FBVixDQUFOLEdBQStCLE1BQUtDLE9BQXBDO0FBQ0FMLE1BQUFBLE1BQU0sQ0FBQ0MscUJBQVNLLGFBQVYsQ0FBTixHQUFpQ04sTUFBTSxDQUFDQyxxQkFBU00sWUFBVixDQUFOLEdBQWdDLE1BQUtDLFFBQXRFO0FBQ0FSLE1BQUFBLE1BQU0sQ0FBQ0MscUJBQVNRLGFBQVYsQ0FBTixHQUFpQyxNQUFLQyxTQUF0QztBQUNBVixNQUFBQSxNQUFNLENBQUNDLHFCQUFTVSxVQUFWLENBQU4sR0FBOEIsTUFBS0MsTUFBbkM7QUFFQSxhQUFPWixNQUFQO0FBQ0QsS0FwS2tCO0FBQUEsNkZBc0taLFVBQUFhLEtBQUssRUFBSTtBQUNkLFVBQUksQ0FBQyxNQUFLQyxRQUFMLEVBQUwsRUFBc0I7QUFDcEI7QUFDRDs7QUFDRCxVQUFJQyxRQUFRLEdBQ1YsTUFBSzFDLEtBQUwsQ0FBV3lCLGNBQVgsS0FBOEIsSUFBOUIsR0FDSWUsS0FBSyxLQUFLLENBQVYsR0FDRSxDQURGLEdBRUVBLEtBSE4sR0FJSSxNQUFLeEMsS0FBTCxDQUFXeUIsY0FBWCxHQUE0QmUsS0FMbEM7QUFNQSxVQUFJbEMsTUFBTSxHQUFHLE1BQUsxQyxLQUFMLENBQVcrRSxVQUFYLEdBQ1QsTUFBSzNDLEtBQUwsQ0FBV2MsYUFBWCxDQUF5QjhCLEtBQXpCLENBQStCLENBQS9CLEVBQWtDLE1BQUtoRixLQUFMLENBQVcrRSxVQUE3QyxFQUF5RHJDLE1BRGhELEdBRVQsTUFBS04sS0FBTCxDQUFXYyxhQUFYLENBQXlCUixNQUY3Qjs7QUFHQSxVQUFJLE1BQUtVLGVBQUwsRUFBSixFQUE0QjtBQUMxQlYsUUFBQUEsTUFBTSxJQUFJLENBQVY7QUFDRDs7QUFFRCxVQUFJb0MsUUFBUSxHQUFHLENBQWYsRUFBa0I7QUFDaEJBLFFBQUFBLFFBQVEsSUFBSXBDLE1BQVo7QUFDRCxPQUZELE1BRU8sSUFBSW9DLFFBQVEsSUFBSXBDLE1BQWhCLEVBQXdCO0FBQzdCb0MsUUFBQUEsUUFBUSxJQUFJcEMsTUFBWjtBQUNEOztBQUVELFlBQUthLFFBQUwsQ0FBYztBQUFDTSxRQUFBQSxjQUFjLEVBQUVpQjtBQUFqQixPQUFkO0FBQ0QsS0E5TGtCO0FBQUEsZ0dBZ01ULFlBQU07QUFDZCxZQUFLRyxJQUFMLENBQVUsQ0FBVjtBQUNELEtBbE1rQjtBQUFBLDhGQW9NWCxZQUFNO0FBQ1osWUFBS0EsSUFBTCxDQUFVLENBQUMsQ0FBWDtBQUNELEtBdE1rQjtBQUFBLGtHQXdNUCxVQUFBM0IsS0FBSyxFQUFJO0FBQ25CLFVBQUksTUFBS3RELEtBQUwsQ0FBV2tGLFFBQWYsRUFBeUI7QUFDdkIsY0FBS2xGLEtBQUwsQ0FBV2tGLFFBQVgsQ0FBb0I1QixLQUFwQjtBQUNEOztBQUVELFlBQUs2QixtQkFBTDtBQUNELEtBOU1rQjtBQUFBLG1HQWdOTixVQUFBN0IsS0FBSyxFQUFJO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBLFVBQUksQ0FBQyxNQUFLdUIsUUFBTCxFQUFELElBQW9CdkIsS0FBSyxDQUFDOEIsUUFBOUIsRUFBd0M7QUFDdEMsZUFBTyxNQUFLcEYsS0FBTCxDQUFXMkQsU0FBWCxDQUFxQkwsS0FBckIsQ0FBUDtBQUNEOztBQUVELFVBQU0rQixPQUFPLEdBQUcsTUFBS0MsUUFBTCxHQUFnQmhDLEtBQUssQ0FBQ2lDLE9BQXRCLENBQWhCOztBQUVBLFVBQUlGLE9BQUosRUFBYTtBQUNYQSxRQUFBQSxPQUFPLENBQUMvQixLQUFELENBQVA7QUFDRCxPQUZELE1BRU87QUFDTCxlQUFPLE1BQUt0RCxLQUFMLENBQVcyRCxTQUFYLENBQXFCTCxLQUFyQixDQUFQO0FBQ0QsT0FkbUIsQ0FlcEI7OztBQUNBQSxNQUFBQSxLQUFLLENBQUNrQyxjQUFOO0FBQ0QsS0FqT2tCO0FBQUEsaUdBbU9SLFVBQUFsQyxLQUFLLEVBQUk7QUFDbEIsWUFBS0MsUUFBTCxDQUFjO0FBQUNaLFFBQUFBLFNBQVMsRUFBRTtBQUFaLE9BQWQ7O0FBQ0EsVUFBSSxNQUFLM0MsS0FBTCxDQUFXeUYsT0FBZixFQUF3QjtBQUN0QixlQUFPLE1BQUt6RixLQUFMLENBQVd5RixPQUFYLENBQW1CbkMsS0FBbkIsQ0FBUDtBQUNEO0FBQ0YsS0F4T2tCO0FBQUEsZ0dBME9ULFVBQUFBLEtBQUssRUFBSTtBQUNqQixZQUFLQyxRQUFMLENBQWM7QUFBQ1osUUFBQUEsU0FBUyxFQUFFO0FBQVosT0FBZDs7QUFDQSxVQUFJLE1BQUszQyxLQUFMLENBQVcwRixNQUFmLEVBQXVCO0FBQ3JCLGVBQU8sTUFBSzFGLEtBQUwsQ0FBVzBGLE1BQVgsQ0FBa0JwQyxLQUFsQixDQUFQO0FBQ0Q7QUFDRixLQS9Pa0I7QUFHakIsVUFBS2xCLEtBQUwsR0FBYTtBQUNYO0FBQ0FjLE1BQUFBLGFBQWEsRUFBRSxFQUZKO0FBSVg7QUFDQUQsTUFBQUEsVUFBVSxFQUFFLE1BQUtqRCxLQUFMLENBQVdzQixLQUFYLElBQW9CLE1BQUt0QixLQUFMLENBQVcyRixZQUxoQztBQU9YO0FBQ0FuQyxNQUFBQSxTQUFTLEVBQUUsTUFBS3hELEtBQUwsQ0FBV3NCLEtBUlg7QUFVWDtBQUNBdUMsTUFBQUEsY0FBYyxFQUFFLElBWEw7QUFhWDtBQUNBO0FBQ0FsQixNQUFBQSxTQUFTLEVBQUU7QUFmQSxLQUFiO0FBSGlCO0FBb0JsQjs7OztXQUVELDZCQUFvQjtBQUNsQjtBQUNBLFVBQUksS0FBS0UsS0FBTCxDQUFXQyxPQUFmLEVBQXdCO0FBQ3RCLGFBQUtELEtBQUwsQ0FBV0MsT0FBWCxDQUFtQkMsS0FBbkI7QUFDRCxPQUZELE1BRU87QUFDTCxhQUFLNkMsSUFBTCxDQUFVOUMsT0FBVixDQUFrQkMsS0FBbEI7QUFDRDtBQUNGOzs7V0F1QkQsMkNBQWtDO0FBQ2hDLDBCQUNFLHFDQUFNLEtBQU4sQ0FBWSxtQkFBWjtBQUNFLFFBQUEsWUFBWSxFQUFFLEtBQUsvQyxLQUFMLENBQVc2RixZQUQzQjtBQUVFLFFBQUEsT0FBTyxFQUNMLEtBQUs3RixLQUFMLENBQVcrRSxVQUFYLEdBQ0ksS0FBSzNDLEtBQUwsQ0FBV2MsYUFBWCxDQUF5QjhCLEtBQXpCLENBQStCLENBQS9CLEVBQWtDLEtBQUtoRixLQUFMLENBQVcrRSxVQUE3QyxDQURKLEdBRUksS0FBSzNDLEtBQUwsQ0FBV2MsYUFMbkI7QUFPRSxRQUFBLG1CQUFtQixFQUNqQixLQUFLbEQsS0FBTCxDQUFXK0UsVUFBWCxJQUF5QixLQUFLM0MsS0FBTCxDQUFXYyxhQUFYLENBQXlCUixNQUF6QixHQUFrQyxLQUFLMUMsS0FBTCxDQUFXK0UsVUFSMUU7QUFVRSxRQUFBLHVCQUF1QixFQUFFLEtBQUsvRSxLQUFMLENBQVc4Rix1QkFWdEM7QUFXRSxRQUFBLGdCQUFnQixFQUFFLEtBQUtsQyxpQkFYekI7QUFZRSxRQUFBLGlCQUFpQixFQUFFLEtBQUs1RCxLQUFMLENBQVdnRCxpQkFaaEM7QUFhRSxRQUFBLFdBQVcsRUFBRSxLQUFLYyxlQUFMLEVBYmY7QUFjRSxRQUFBLGFBQWEsRUFBRSxLQUFLOUQsS0FBTCxDQUFXK0YsYUFkNUI7QUFlRSxRQUFBLHVCQUF1QixFQUFFLEtBQUsvRixLQUFMLENBQVdnRyx1QkFmdEM7QUFnQkUsUUFBQSx5QkFBeUIsRUFBRSxLQUFLaEcsS0FBTCxDQUFXaUcseUJBaEJ4QztBQWlCRSxRQUFBLGNBQWMsRUFBRSxLQUFLN0QsS0FBTCxDQUFXeUIsY0FqQjdCO0FBa0JFLFFBQUEsaUJBQWlCLEVBQUUsS0FBSzdELEtBQUwsQ0FBV2tHLGlCQWxCaEM7QUFtQkUsUUFBQSxhQUFhLEVBQUUsS0FBS2xHLEtBQUwsQ0FBV21HLGFBbkI1QjtBQW9CRSxRQUFBLGFBQWEsRUFBRSxLQUFLbkcsS0FBTCxDQUFXb0csYUFwQjVCO0FBcUJFLFFBQUEsS0FBSyxFQUFFLEtBQUtwRyxLQUFMLENBQVdDO0FBckJwQixRQURGO0FBeUJEOzs7V0FFRCx3QkFBZTtBQUNiLFVBQUlpQyxLQUFLLEdBQUcsS0FBS0UsS0FBTCxDQUFXeUIsY0FBdkI7O0FBRUEsVUFBSSxLQUFLVCxlQUFMLEVBQUosRUFBNEI7QUFDMUIsWUFBSWxCLEtBQUssS0FBSyxDQUFkLEVBQWlCO0FBQ2YsaUJBQU8sS0FBS0UsS0FBTCxDQUFXYSxVQUFsQjtBQUNEOztBQUNEZixRQUFBQSxLQUFLO0FBQ047O0FBQ0QsVUFBSSxLQUFLbUUsZ0JBQUwsRUFBSixFQUE2QjtBQUMzQixlQUFPbkUsS0FBSyxHQUFHLEtBQUtsQyxLQUFMLENBQVc2RixZQUFYLENBQXdCbkQsTUFBaEMsR0FDSCxLQUFLMUMsS0FBTCxDQUFXNkYsWUFBWCxDQUF3QjNELEtBQXhCLENBREcsR0FFSCxLQUFLRSxLQUFMLENBQVdjLGFBQVgsQ0FBeUJoQixLQUFLLEdBQUcsS0FBS2xDLEtBQUwsQ0FBVzZGLFlBQVgsQ0FBd0JuRCxNQUF6RCxDQUZKO0FBR0Q7O0FBQ0QsYUFBTyxLQUFLTixLQUFMLENBQVdjLGFBQVgsQ0FBeUJoQixLQUF6QixDQUFQO0FBQ0Q7OztXQWtKRCw4QkFBcUI7QUFDbkIsVUFBSSxDQUFDLEtBQUtsQyxLQUFMLENBQVdzRyxJQUFoQixFQUFzQjtBQUNwQixlQUFPLElBQVA7QUFDRDs7QUFFRCwwQkFBTztBQUFPLFFBQUEsSUFBSSxFQUFDLFFBQVo7QUFBcUIsUUFBQSxJQUFJLEVBQUUsS0FBS3RHLEtBQUwsQ0FBV3NHLElBQXRDO0FBQTRDLFFBQUEsS0FBSyxFQUFFLEtBQUtsRSxLQUFMLENBQVdvQjtBQUE5RCxRQUFQO0FBQ0Q7OztXQUVELG9CQUFXO0FBQ1QsYUFBTyxLQUFLcEIsS0FBTCxDQUFXYyxhQUFYLENBQXlCUixNQUF6QixHQUFrQyxDQUFsQyxJQUF1QyxLQUFLVSxlQUFMLEVBQTlDO0FBQ0Q7OztXQUVELDRCQUFtQjtBQUNqQixhQUFPbUQsS0FBSyxDQUFDQyxPQUFOLENBQWMsS0FBS3hHLEtBQUwsQ0FBVzZGLFlBQXpCLEtBQTBDLEtBQUs3RixLQUFMLENBQVc2RixZQUFYLENBQXdCbkQsTUFBekU7QUFDRDs7O1dBRUQsa0JBQVM7QUFDUCxVQUFNK0QsWUFBWSxHQUFHLEVBQXJCO0FBQ0FBLE1BQUFBLFlBQVksQ0FBQyxLQUFLekcsS0FBTCxDQUFXK0YsYUFBWCxDQUF5QnJGLEtBQTFCLENBQVosR0FBK0NnRyxPQUFPLENBQUMsS0FBSzFHLEtBQUwsQ0FBVytGLGFBQVgsQ0FBeUJyRixLQUExQixDQUF0RDtBQUNBLFVBQU1pRyxjQUFjLEdBQUcsNEJBQVdGLFlBQVgsQ0FBdkI7QUFFQSxVQUFNRyxPQUFPLHdDQUNWaEgsYUFEVSxFQUNNLEtBQUtJLEtBQUwsQ0FBV2tHLGlCQURqQixDQUFiO0FBR0FVLE1BQUFBLE9BQU8sQ0FBQyxLQUFLNUcsS0FBTCxDQUFXUSxTQUFaLENBQVAsR0FBZ0NrRyxPQUFPLENBQUMsS0FBSzFHLEtBQUwsQ0FBV1EsU0FBWixDQUF2QztBQUNBLFVBQU1xRyxTQUFTLEdBQUcsNEJBQVdELE9BQVgsQ0FBbEI7QUFFQSwwQkFDRSxnQ0FBQyxnQkFBRDtBQUNFLFFBQUEsU0FBUyxFQUFFQyxTQURiO0FBRUUsUUFBQSxHQUFHLEVBQUUsS0FBS2pCLElBRlo7QUFHRSxRQUFBLFFBQVEsRUFBQyxHQUhYO0FBSUUsUUFBQSxTQUFTLEVBQUUsS0FBS2tCLFVBSmxCO0FBS0UsUUFBQSxVQUFVLEVBQUUsS0FBSzlHLEtBQUwsQ0FBVytHLFVBTHpCO0FBTUUsUUFBQSxPQUFPLEVBQUUsS0FBSy9HLEtBQUwsQ0FBV2dILE9BTnRCO0FBT0UsUUFBQSxPQUFPLEVBQUUsS0FBS0MsUUFQaEI7QUFRRSxRQUFBLEtBQUssRUFBRSxLQUFLakgsS0FBTCxDQUFXQztBQVJwQixTQVVHLEtBQUtpSCxrQkFBTCxFQVZILEVBV0csS0FBS2xILEtBQUwsQ0FBV3NDLFVBQVgsZ0JBQ0MsZ0NBQUMsUUFBRCxxQkFDRSxnQ0FBQyxjQUFEO0FBQ0UsUUFBQSxHQUFHLEVBQUUsS0FBS08sS0FEWjtBQUVFLFFBQUEsSUFBSSxFQUFDLE1BRlA7QUFHRSxRQUFBLFFBQVEsRUFBRSxLQUFLN0MsS0FBTCxDQUFXbUg7QUFIdkIsU0FJTSxLQUFLbkgsS0FBTCxDQUFXb0gsVUFKakI7QUFLRSxRQUFBLFdBQVcsRUFBRSxLQUFLcEgsS0FBTCxDQUFXcUgsV0FMMUI7QUFNRSxRQUFBLFNBQVMsRUFBRVYsY0FOYjtBQU9FLFFBQUEsS0FBSyxFQUFFLEtBQUt2RSxLQUFMLENBQVdhLFVBUHBCO0FBUUUsUUFBQSxRQUFRLEVBQUUsS0FBS3FFLFNBUmpCO0FBU0UsUUFBQSxNQUFNLEVBQUUsS0FBS0MsT0FUZjtBQVVFLFFBQUEsS0FBSyxFQUFFLEtBQUt2SCxLQUFMLENBQVdDO0FBVnBCLFNBREYsZUFhRSxnQ0FBQyxTQUFELHFCQUNFLHFDQUFNLEtBQU4sQ0FBWSxTQUFaO0FBQXNCLFFBQUEsTUFBTSxFQUFDO0FBQTdCLFFBREYsQ0FiRixDQURELEdBa0JHLElBN0JOLEVBOEJHLEtBQUt1SCwrQkFBTCxFQTlCSCxDQURGO0FBa0NEOzs7V0FyVEQsa0NBQWdDeEgsS0FBaEMsRUFBdUNvQyxLQUF2QyxFQUE4QztBQUM1QztBQUNBLFVBQU1jLGFBQWEsR0FBR2Ysa0JBQWtCLENBQUNDLEtBQUssQ0FBQ2EsVUFBUCxFQUFtQmpELEtBQW5CLEVBQTBCb0MsS0FBMUIsQ0FBeEM7QUFFQSxhQUFPO0FBQUNjLFFBQUFBLGFBQWEsRUFBYkE7QUFBRCxPQUFQO0FBQ0Q7OztFQXRFcUJ1RSxnQjs7aUNBQWxCN0UsUyxlQUNlO0FBQ2pCMEQsRUFBQUEsSUFBSSxFQUFFb0Isc0JBQVVDLE1BREM7QUFFakI1QixFQUFBQSxhQUFhLEVBQUUyQixzQkFBVUUsTUFGUjtBQUdqQjdDLEVBQUFBLFVBQVUsRUFBRTJDLHNCQUFVRyxNQUhMO0FBSWpCL0IsRUFBQUEsdUJBQXVCLEVBQUU0QixzQkFBVUMsTUFKbEI7QUFLakJwRyxFQUFBQSxPQUFPLEVBQUVtRyxzQkFBVUksT0FBVixDQUFrQkosc0JBQVVLLEdBQTVCLENBTFE7QUFNakJsQyxFQUFBQSxZQUFZLEVBQUU2QixzQkFBVUksT0FBVixDQUFrQkosc0JBQVVLLEdBQTVCLENBTkc7QUFPakIvRSxFQUFBQSxpQkFBaUIsRUFBRTBFLHNCQUFVRyxNQVBaO0FBUWpCbEMsRUFBQUEsWUFBWSxFQUFFK0Isc0JBQVVDLE1BUlA7QUFTakJyRyxFQUFBQSxLQUFLLEVBQUVvRyxzQkFBVUMsTUFUQTtBQVVqQk4sRUFBQUEsV0FBVyxFQUFFSyxzQkFBVUMsTUFWTjtBQVdqQlIsRUFBQUEsUUFBUSxFQUFFTyxzQkFBVU0sSUFYSDtBQVlqQkMsRUFBQUEsUUFBUSxFQUFFUCxzQkFBVU0sSUFaSDtBQWFqQlosRUFBQUEsVUFBVSxFQUFFTSxzQkFBVUUsTUFiTDtBQWNqQm5FLEVBQUFBLGdCQUFnQixFQUFFaUUsc0JBQVVRLElBZFg7QUFlakJoRCxFQUFBQSxRQUFRLEVBQUV3QyxzQkFBVVEsSUFmSDtBQWdCakJ2RSxFQUFBQSxTQUFTLEVBQUUrRCxzQkFBVVEsSUFoQko7QUFpQmpCbkIsRUFBQUEsVUFBVSxFQUFFVyxzQkFBVVEsSUFqQkw7QUFrQmpCbEIsRUFBQUEsT0FBTyxFQUFFVSxzQkFBVVEsSUFsQkY7QUFtQmpCekMsRUFBQUEsT0FBTyxFQUFFaUMsc0JBQVVRLElBbkJGO0FBb0JqQnhDLEVBQUFBLE1BQU0sRUFBRWdDLHNCQUFVUSxJQXBCRDtBQXFCakIvRyxFQUFBQSxZQUFZLEVBQUV1RyxzQkFBVVMsU0FBVixDQUFvQixDQUFDVCxzQkFBVUMsTUFBWCxFQUFtQkQsc0JBQVVRLElBQTdCLENBQXBCLENBckJHO0FBc0JqQmhILEVBQUFBLGFBQWEsRUFBRXdHLHNCQUFVUSxJQXRCUjtBQXVCakIvQixFQUFBQSxhQUFhLEVBQUV1QixzQkFBVVMsU0FBVixDQUFvQixDQUFDVCxzQkFBVUMsTUFBWCxFQUFtQkQsc0JBQVVRLElBQTdCLENBQXBCLENBdkJFO0FBd0JqQkUsRUFBQUEsa0JBQWtCLEVBQUVWLHNCQUFVUyxTQUFWLENBQW9CLENBQUNULHNCQUFVQyxNQUFYLEVBQW1CRCxzQkFBVVEsSUFBN0IsQ0FBcEIsQ0F4Qkg7QUF5QmpCRyxFQUFBQSxlQUFlLEVBQUVYLHNCQUFVUyxTQUFWLENBQW9CLENBQUNULHNCQUFVQyxNQUFYLEVBQW1CRCxzQkFBVVEsSUFBN0IsQ0FBcEIsQ0F6QkE7QUEwQmpCaEMsRUFBQUEsaUJBQWlCLEVBQUV3QixzQkFBVU0sSUExQlo7QUEyQmpCTSxFQUFBQSxtQkFBbUIsRUFBRVosc0JBQVVTLFNBQVYsQ0FBb0IsQ0FBQ1Qsc0JBQVVhLE9BQVgsRUFBb0JiLHNCQUFVUSxJQUE5QixDQUFwQixDQTNCSjtBQTRCakJsQyxFQUFBQSx1QkFBdUIsRUFBRTBCLHNCQUFVUyxTQUFWLENBQW9CLENBQUNULHNCQUFVYSxPQUFYLEVBQW9CYixzQkFBVVEsSUFBOUIsQ0FBcEIsQ0E1QlI7QUE2QmpCakMsRUFBQUEseUJBQXlCLEVBQUV5QixzQkFBVVMsU0FBVixDQUFvQixDQUFDVCxzQkFBVWEsT0FBWCxFQUFvQmIsc0JBQVVRLElBQTlCLENBQXBCLENBN0JWO0FBOEJqQjdGLEVBQUFBLG9CQUFvQixFQUFFcUYsc0JBQVVNLElBOUJmO0FBK0JqQjFGLEVBQUFBLFVBQVUsRUFBRW9GLHNCQUFVTTtBQS9CTCxDO2lDQURmcEYsUyxrQkFtQ2tCO0FBQ3BCckIsRUFBQUEsT0FBTyxFQUFFLEVBRFc7QUFFcEJ3RSxFQUFBQSxhQUFhLEVBQUUsRUFGSztBQUdwQi9DLEVBQUFBLGlCQUFpQixFQUFFLENBSEM7QUFJcEIyQyxFQUFBQSxZQUFZLEVBQUUsRUFKTTtBQUtwQnJFLEVBQUFBLEtBQUssRUFBRSxFQUxhO0FBTXBCK0YsRUFBQUEsV0FBVyxFQUFFLEVBTk87QUFPcEJGLEVBQUFBLFFBQVEsRUFBRSxLQVBVO0FBUXBCYyxFQUFBQSxRQUFRLEVBQUUsS0FSVTtBQVNwQmIsRUFBQUEsVUFBVSxFQUFFLEVBVFE7QUFVcEIzRCxFQUFBQSxnQkFWb0IsNEJBVUhKLE1BVkcsRUFVSyxDQUFFLENBVlA7QUFXcEI2QixFQUFBQSxRQVhvQixvQkFXWDVCLEtBWFcsRUFXSixDQUFFLENBWEU7QUFZcEJLLEVBQUFBLFNBWm9CLHFCQVlWTCxLQVpVLEVBWUgsQ0FBRSxDQVpDO0FBYXBCeUQsRUFBQUEsVUFib0Isc0JBYVR6RCxLQWJTLEVBYUYsQ0FBRSxDQWJBO0FBY3BCMEQsRUFBQUEsT0Fkb0IsbUJBY1oxRCxLQWRZLEVBY0wsQ0FBRSxDQWRHO0FBZXBCbUMsRUFBQUEsT0Fmb0IsbUJBZVpuQyxLQWZZLEVBZUwsQ0FBRSxDQWZHO0FBZ0JwQm9DLEVBQUFBLE1BaEJvQixrQkFnQmJwQyxLQWhCYSxFQWdCTixDQUFFLENBaEJJO0FBaUJwQm5DLEVBQUFBLFlBQVksRUFBRSxJQWpCTTtBQWtCcEJELEVBQUFBLGFBQWEsRUFBRSxJQWxCSztBQW1CcEJrSCxFQUFBQSxrQkFBa0IsRUFBRSxJQW5CQTtBQW9CcEJsQyxFQUFBQSxpQkFBaUIsRUFBRSxJQXBCQztBQXFCcEJvQyxFQUFBQSxtQkFBbUIsRUFBRUUsd0JBckJEO0FBc0JwQnhDLEVBQUFBLHVCQUF1QixFQUFFeUMsc0JBdEJMO0FBdUJwQkMsRUFBQUEsU0FBUyxFQUFFQyxhQXZCUztBQXdCcEIxQyxFQUFBQSx5QkFBeUIsRUFBRSxJQXhCUDtBQXlCcEI1RCxFQUFBQSxvQkFBb0IsRUFBRSxJQXpCRjtBQTBCcEJDLEVBQUFBLFVBQVUsRUFBRSxJQTFCUTtBQTJCcEJ3RCxFQUFBQSx1QkFBdUIsRUFBRTtBQTNCTCxDO0FBc1Z4QixxQ0FBU2xELFNBQVQ7ZUFFZUEsUyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMiBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCBSZWFjdCwge0NvbXBvbmVudCwgY3JlYXRlUmVmfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge3BvbHlmaWxsfSBmcm9tICdyZWFjdC1saWZlY3ljbGVzLWNvbXBhdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGZ1enp5IGZyb20gJ2Z1enp5JztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge2NvbnNvbGUgYXMgQ29uc29sZX0gZnJvbSAnZ2xvYmFsL3dpbmRvdyc7XG5cbmltcG9ydCBBY2Nlc3NvciBmcm9tICcuL2FjY2Vzc29yJztcbmltcG9ydCBEcm9wZG93bkxpc3QsIHtMaXN0SXRlbX0gZnJvbSAnLi9kcm9wZG93bi1saXN0JztcbmltcG9ydCB7U2VhcmNofSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9pY29ucyc7XG5pbXBvcnQgS2V5RXZlbnQgZnJvbSAnY29uc3RhbnRzL2tleWV2ZW50JztcblxuY29uc3QgREVGQVVMVF9DTEFTUyA9ICd0eXBlYWhlYWQnO1xuLyoqXG4gKiBDb3BpZWQgbW9zdGx5IGZyb20gJ3JlYWN0LXR5cGVhaGVhZCcsIGFuIGF1dG8tY29tcGxldGluZyB0ZXh0IGlucHV0XG4gKlxuICogUmVuZGVycyBhbiB0ZXh0IGlucHV0IHRoYXQgc2hvd3Mgb3B0aW9ucyBuZWFyYnkgdGhhdCB5b3UgY2FuIHVzZSB0aGVcbiAqIGtleWJvYXJkIG9yIG1vdXNlIHRvIHNlbGVjdC5cbiAqL1xuXG5jb25zdCBUeXBlYWhlYWRXcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PlxuICAgIHByb3BzLmxpZ2h0ID8gcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0QmdkTFQgOiBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RCZ2R9O1xuICBib3gtc2hhZG93OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdFNoYWRvd307XG5cbiAgOmZvY3VzIHtcbiAgICBvdXRsaW5lOiAwO1xuICB9XG5gO1xuXG5jb25zdCBJbnB1dEJveCA9IHN0eWxlZC5kaXYuYXR0cnMoe1xuICBjbGFzc05hbWU6ICd0eXBlYWhlYWRfX2lucHV0X2JveCdcbn0pYFxuICBwYWRkaW5nOiA4cHg7XG5gO1xuXG5jb25zdCBUeXBlYWhlYWRJbnB1dCA9IHN0eWxlZC5pbnB1dGBcbiAgJHtwcm9wcyA9PiAocHJvcHMubGlnaHQgPyBwcm9wcy50aGVtZS5pbnB1dExUIDogcHJvcHMudGhlbWUuc2Vjb25kYXJ5SW5wdXQpfSA6aG92ZXIge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+XG4gICAgICBwcm9wcy5saWdodCA/IHByb3BzLnRoZW1lLnNlbGVjdEJhY2tncm91bmRMVCA6IHByb3BzLnRoZW1lLnNlY29uZGFyeUlucHV0QmdkfTtcbiAgfVxuYDtcblxuY29uc3QgSW5wdXRJY29uID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ3R5cGVhaGVhZF9faW5wdXRfaWNvbidcbn0pYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiAxNXB4O1xuICB0b3A6IDE0cHg7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmlucHV0UGxhY2Vob2xkZXJDb2xvcn07XG5gO1xuXG5mdW5jdGlvbiBnZW5lcmF0ZVNlYXJjaEZ1bmN0aW9uKHByb3BzKSB7XG4gIGNvbnN0IHtzZWFyY2hPcHRpb25zLCBmaWx0ZXJPcHRpb259ID0gcHJvcHM7XG4gIGlmICh0eXBlb2Ygc2VhcmNoT3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGlmIChmaWx0ZXJPcHRpb24gIT09IG51bGwpIHtcbiAgICAgIENvbnNvbGUud2Fybignc2VhcmNoT3B0aW9ucyBwcm9wIGlzIGJlaW5nIHVzZWQsIGZpbHRlck9wdGlvbiBwcm9wIHdpbGwgYmUgaWdub3JlZCcpO1xuICAgIH1cbiAgICByZXR1cm4gc2VhcmNoT3B0aW9ucztcbiAgfSBlbHNlIGlmICh0eXBlb2YgZmlsdGVyT3B0aW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgLy8gdXNlIGN1c3RvbSBmaWx0ZXIgb3B0aW9uXG4gICAgcmV0dXJuICh2YWx1ZSwgb3B0aW9ucykgPT4gb3B0aW9ucy5maWx0ZXIobyA9PiBmaWx0ZXJPcHRpb24odmFsdWUsIG8pKTtcbiAgfVxuXG4gIGNvbnN0IG1hcHBlciA9XG4gICAgdHlwZW9mIGZpbHRlck9wdGlvbiA9PT0gJ3N0cmluZydcbiAgICAgID8gQWNjZXNzb3IuZ2VuZXJhdGVBY2Nlc3NvcihmaWx0ZXJPcHRpb24pXG4gICAgICA6IEFjY2Vzc29yLklERU5USVRZX0ZOO1xuXG4gIHJldHVybiAodmFsdWUsIG9wdGlvbnMpID0+XG4gICAgZnV6enkuZmlsdGVyKHZhbHVlLCBvcHRpb25zLCB7ZXh0cmFjdDogbWFwcGVyfSkubWFwKHJlcyA9PiBvcHRpb25zW3Jlcy5pbmRleF0pO1xufVxuXG5mdW5jdGlvbiBnZXRPcHRpb25zRm9yVmFsdWUodmFsdWUsIHByb3BzLCBzdGF0ZSkge1xuICBjb25zdCB7b3B0aW9ucywgc2hvd09wdGlvbnNXaGVuRW1wdHl9ID0gcHJvcHM7XG5cbiAgaWYgKCFwcm9wcy5zZWFyY2hhYmxlKSB7XG4gICAgLy8gZGlyZWN0bHkgcGFzcyB0aHJvdWdoIG9wdGlvbnMgaWYgY2FuIG5vdCBiZSBzZWFyY2hlZFxuICAgIHJldHVybiBvcHRpb25zO1xuICB9XG4gIGlmIChzaG91bGRTa2lwU2VhcmNoKHZhbHVlLCBzdGF0ZSwgc2hvd09wdGlvbnNXaGVuRW1wdHkpKSB7XG4gICAgcmV0dXJuIG9wdGlvbnM7XG4gIH1cblxuICBjb25zdCBzZWFyY2hPcHRpb25zID0gZ2VuZXJhdGVTZWFyY2hGdW5jdGlvbihwcm9wcyk7XG4gIHJldHVybiBzZWFyY2hPcHRpb25zKHZhbHVlLCBvcHRpb25zKTtcbn1cblxuZnVuY3Rpb24gc2hvdWxkU2tpcFNlYXJjaChpbnB1dCwgc3RhdGUsIHNob3dPcHRpb25zV2hlbkVtcHR5KSB7XG4gIGNvbnN0IGVtcHR5VmFsdWUgPSAhaW5wdXQgfHwgaW5wdXQudHJpbSgpLmxlbmd0aCA9PT0gMDtcblxuICAvLyB0aGlzLnN0YXRlIG11c3QgYmUgY2hlY2tlZCBiZWNhdXNlIGl0IG1heSBub3QgYmUgZGVmaW5lZCB5ZXQgaWYgdGhpcyBmdW5jdGlvblxuICAvLyBpcyBjYWxsZWQgZnJvbSB3aXRoaW4gZ2V0SW5pdGlhbFN0YXRlXG4gIGNvbnN0IGlzRm9jdXNlZCA9IHN0YXRlICYmIHN0YXRlLmlzRm9jdXNlZDtcbiAgcmV0dXJuICEoc2hvd09wdGlvbnNXaGVuRW1wdHkgJiYgaXNGb2N1c2VkKSAmJiBlbXB0eVZhbHVlO1xufVxuXG5jbGFzcyBUeXBlYWhlYWQgZXh0ZW5kcyBDb21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIG5hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgY3VzdG9tQ2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBtYXhWaXNpYmxlOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHJlc3VsdHNUcnVuY2F0ZWRNZXNzYWdlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIG9wdGlvbnM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5hbnkpLFxuICAgIGZpeGVkT3B0aW9uczogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmFueSksXG4gICAgYWxsb3dDdXN0b21WYWx1ZXM6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgaW5pdGlhbFZhbHVlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHZhbHVlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHBsYWNlaG9sZGVyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgICB0ZXh0YXJlYTogUHJvcFR5cGVzLmJvb2wsXG4gICAgaW5wdXRQcm9wczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBvbk9wdGlvblNlbGVjdGVkOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25LZXlEb3duOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvbktleVByZXNzOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvbktleVVwOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvbkZvY3VzOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvbkJsdXI6IFByb3BUeXBlcy5mdW5jLFxuICAgIGZpbHRlck9wdGlvbjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLmZ1bmNdKSxcbiAgICBzZWFyY2hPcHRpb25zOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBkaXNwbGF5T3B0aW9uOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMuZnVuY10pLFxuICAgIGlucHV0RGlzcGxheU9wdGlvbjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLmZ1bmNdKSxcbiAgICBmb3JtSW5wdXRPcHRpb246IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5mdW5jXSksXG4gICAgZGVmYXVsdENsYXNzTmFtZXM6IFByb3BUeXBlcy5ib29sLFxuICAgIGN1c3RvbUxpc3RDb21wb25lbnQ6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5lbGVtZW50LCBQcm9wVHlwZXMuZnVuY10pLFxuICAgIGN1c3RvbUxpc3RJdGVtQ29tcG9uZW50OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZWxlbWVudCwgUHJvcFR5cGVzLmZ1bmNdKSxcbiAgICBjdXN0b21MaXN0SGVhZGVyQ29tcG9uZW50OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZWxlbWVudCwgUHJvcFR5cGVzLmZ1bmNdKSxcbiAgICBzaG93T3B0aW9uc1doZW5FbXB0eTogUHJvcFR5cGVzLmJvb2wsXG4gICAgc2VhcmNoYWJsZTogUHJvcFR5cGVzLmJvb2xcbiAgfTtcblxuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIG9wdGlvbnM6IFtdLFxuICAgIGN1c3RvbUNsYXNzZXM6IHt9LFxuICAgIGFsbG93Q3VzdG9tVmFsdWVzOiAwLFxuICAgIGluaXRpYWxWYWx1ZTogJycsXG4gICAgdmFsdWU6ICcnLFxuICAgIHBsYWNlaG9sZGVyOiAnJyxcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgdGV4dGFyZWE6IGZhbHNlLFxuICAgIGlucHV0UHJvcHM6IHt9LFxuICAgIG9uT3B0aW9uU2VsZWN0ZWQob3B0aW9uKSB7fSxcbiAgICBvbkNoYW5nZShldmVudCkge30sXG4gICAgb25LZXlEb3duKGV2ZW50KSB7fSxcbiAgICBvbktleVByZXNzKGV2ZW50KSB7fSxcbiAgICBvbktleVVwKGV2ZW50KSB7fSxcbiAgICBvbkZvY3VzKGV2ZW50KSB7fSxcbiAgICBvbkJsdXIoZXZlbnQpIHt9LFxuICAgIGZpbHRlck9wdGlvbjogbnVsbCxcbiAgICBzZWFyY2hPcHRpb25zOiBudWxsLFxuICAgIGlucHV0RGlzcGxheU9wdGlvbjogbnVsbCxcbiAgICBkZWZhdWx0Q2xhc3NOYW1lczogdHJ1ZSxcbiAgICBjdXN0b21MaXN0Q29tcG9uZW50OiBEcm9wZG93bkxpc3QsXG4gICAgY3VzdG9tTGlzdEl0ZW1Db21wb25lbnQ6IExpc3RJdGVtLFxuICAgIGlucHV0SWNvbjogU2VhcmNoLFxuICAgIGN1c3RvbUxpc3RIZWFkZXJDb21wb25lbnQ6IG51bGwsXG4gICAgc2hvd09wdGlvbnNXaGVuRW1wdHk6IHRydWUsXG4gICAgc2VhcmNoYWJsZTogdHJ1ZSxcbiAgICByZXN1bHRzVHJ1bmNhdGVkTWVzc2FnZTogbnVsbFxuICB9O1xuXG4gIHN0YXRpYyBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMocHJvcHMsIHN0YXRlKSB7XG4gICAgLy8gIGludm9rZWQgYWZ0ZXIgYSBjb21wb25lbnQgaXMgaW5zdGFudGlhdGVkIGFzIHdlbGwgYXMgYmVmb3JlIGl0IGlzIHJlLXJlbmRlcmVkXG4gICAgY29uc3Qgc2VhcmNoUmVzdWx0cyA9IGdldE9wdGlvbnNGb3JWYWx1ZShzdGF0ZS5lbnRyeVZhbHVlLCBwcm9wcywgc3RhdGUpO1xuXG4gICAgcmV0dXJuIHtzZWFyY2hSZXN1bHRzfTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIC8qKiBAdHlwZSB7UmVhZG9ubHlBcnJheTxzdHJpbmc+fSAqL1xuICAgICAgc2VhcmNoUmVzdWx0czogW10sXG5cbiAgICAgIC8vIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBzb21ldGhpbmcgZWxzZSwgJ2VudHJ5VmFsdWUnXG4gICAgICBlbnRyeVZhbHVlOiB0aGlzLnByb3BzLnZhbHVlIHx8IHRoaXMucHJvcHMuaW5pdGlhbFZhbHVlLFxuXG4gICAgICAvLyBBIHZhbGlkIHR5cGVhaGVhZCB2YWx1ZVxuICAgICAgc2VsZWN0aW9uOiB0aGlzLnByb3BzLnZhbHVlLFxuXG4gICAgICAvLyBJbmRleCBvZiB0aGUgc2VsZWN0aW9uXG4gICAgICBzZWxlY3Rpb25JbmRleDogbnVsbCxcblxuICAgICAgLy8gS2VlcCB0cmFjayBvZiB0aGUgZm9jdXMgc3RhdGUgb2YgdGhlIGlucHV0IGVsZW1lbnQsIHRvIGRldGVybWluZVxuICAgICAgLy8gd2hldGhlciB0byBzaG93IG9wdGlvbnMgd2hlbiBlbXB0eSAoaWYgc2hvd09wdGlvbnNXaGVuRW1wdHkgaXMgdHJ1ZSlcbiAgICAgIGlzRm9jdXNlZDogZmFsc2VcbiAgICB9O1xuICB9XG5cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgLy8gY2FsbCBmb2N1cyBvbiBlbnRyeSBvciBkaXYgdG8gdHJpZ2dlciBrZXkgZXZlbnRzIGxpc3RlbmVyXG4gICAgaWYgKHRoaXMuZW50cnkuY3VycmVudCkge1xuICAgICAgdGhpcy5lbnRyeS5jdXJyZW50LmZvY3VzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucm9vdC5jdXJyZW50LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgcm9vdCA9IGNyZWF0ZVJlZigpO1xuICBlbnRyeSA9IGNyZWF0ZVJlZigpO1xuXG4gIGZvY3VzID0gKCkgPT4ge1xuICAgIGlmICh0aGlzLmVudHJ5LmN1cnJlbnQpIHtcbiAgICAgIHRoaXMuZW50cnkuY3VycmVudC5mb2N1cygpO1xuICAgIH1cbiAgfTtcblxuICBfaGFzQ3VzdG9tVmFsdWUgPSAoKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMucHJvcHMuYWxsb3dDdXN0b21WYWx1ZXMgPiAwICYmXG4gICAgICB0aGlzLnN0YXRlLmVudHJ5VmFsdWUubGVuZ3RoID49IHRoaXMucHJvcHMuYWxsb3dDdXN0b21WYWx1ZXMgJiZcbiAgICAgIHRoaXMuc3RhdGUuc2VhcmNoUmVzdWx0cy5pbmRleE9mKHRoaXMuc3RhdGUuZW50cnlWYWx1ZSkgPCAwXG4gICAgKTtcbiAgfTtcblxuICBfZ2V0Q3VzdG9tVmFsdWUgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuX2hhc0N1c3RvbVZhbHVlKCkgPyB0aGlzLnN0YXRlLmVudHJ5VmFsdWUgOiBudWxsO1xuICB9O1xuXG4gIF9yZW5kZXJJbmNyZW1lbnRhbFNlYXJjaFJlc3VsdHMoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDx0aGlzLnByb3BzLmN1c3RvbUxpc3RDb21wb25lbnRcbiAgICAgICAgZml4ZWRPcHRpb25zPXt0aGlzLnByb3BzLmZpeGVkT3B0aW9uc31cbiAgICAgICAgb3B0aW9ucz17XG4gICAgICAgICAgdGhpcy5wcm9wcy5tYXhWaXNpYmxlXG4gICAgICAgICAgICA/IHRoaXMuc3RhdGUuc2VhcmNoUmVzdWx0cy5zbGljZSgwLCB0aGlzLnByb3BzLm1heFZpc2libGUpXG4gICAgICAgICAgICA6IHRoaXMuc3RhdGUuc2VhcmNoUmVzdWx0c1xuICAgICAgICB9XG4gICAgICAgIGFyZVJlc3VsdHNUcnVuY2F0ZWQ9e1xuICAgICAgICAgIHRoaXMucHJvcHMubWF4VmlzaWJsZSAmJiB0aGlzLnN0YXRlLnNlYXJjaFJlc3VsdHMubGVuZ3RoID4gdGhpcy5wcm9wcy5tYXhWaXNpYmxlXG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0c1RydW5jYXRlZE1lc3NhZ2U9e3RoaXMucHJvcHMucmVzdWx0c1RydW5jYXRlZE1lc3NhZ2V9XG4gICAgICAgIG9uT3B0aW9uU2VsZWN0ZWQ9e3RoaXMuX29uT3B0aW9uU2VsZWN0ZWR9XG4gICAgICAgIGFsbG93Q3VzdG9tVmFsdWVzPXt0aGlzLnByb3BzLmFsbG93Q3VzdG9tVmFsdWVzfVxuICAgICAgICBjdXN0b21WYWx1ZT17dGhpcy5fZ2V0Q3VzdG9tVmFsdWUoKX1cbiAgICAgICAgY3VzdG9tQ2xhc3Nlcz17dGhpcy5wcm9wcy5jdXN0b21DbGFzc2VzfVxuICAgICAgICBjdXN0b21MaXN0SXRlbUNvbXBvbmVudD17dGhpcy5wcm9wcy5jdXN0b21MaXN0SXRlbUNvbXBvbmVudH1cbiAgICAgICAgY3VzdG9tTGlzdEhlYWRlckNvbXBvbmVudD17dGhpcy5wcm9wcy5jdXN0b21MaXN0SGVhZGVyQ29tcG9uZW50fVxuICAgICAgICBzZWxlY3Rpb25JbmRleD17dGhpcy5zdGF0ZS5zZWxlY3Rpb25JbmRleH1cbiAgICAgICAgZGVmYXVsdENsYXNzTmFtZXM9e3RoaXMucHJvcHMuZGVmYXVsdENsYXNzTmFtZXN9XG4gICAgICAgIGRpc3BsYXlPcHRpb249e3RoaXMucHJvcHMuZGlzcGxheU9wdGlvbn1cbiAgICAgICAgc2VsZWN0ZWRJdGVtcz17dGhpcy5wcm9wcy5zZWxlY3RlZEl0ZW1zfVxuICAgICAgICBsaWdodD17dGhpcy5wcm9wcy5saWdodH1cbiAgICAgIC8+XG4gICAgKTtcbiAgfVxuXG4gIGdldFNlbGVjdGlvbigpIHtcbiAgICBsZXQgaW5kZXggPSB0aGlzLnN0YXRlLnNlbGVjdGlvbkluZGV4O1xuXG4gICAgaWYgKHRoaXMuX2hhc0N1c3RvbVZhbHVlKCkpIHtcbiAgICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS5lbnRyeVZhbHVlO1xuICAgICAgfVxuICAgICAgaW5kZXgtLTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2hhc0ZpeGVkT3B0aW9ucygpKSB7XG4gICAgICByZXR1cm4gaW5kZXggPCB0aGlzLnByb3BzLmZpeGVkT3B0aW9ucy5sZW5ndGhcbiAgICAgICAgPyB0aGlzLnByb3BzLmZpeGVkT3B0aW9uc1tpbmRleF1cbiAgICAgICAgOiB0aGlzLnN0YXRlLnNlYXJjaFJlc3VsdHNbaW5kZXggLSB0aGlzLnByb3BzLmZpeGVkT3B0aW9ucy5sZW5ndGhdO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5zZWFyY2hSZXN1bHRzW2luZGV4XTtcbiAgfVxuXG4gIF9vbk9wdGlvblNlbGVjdGVkID0gKG9wdGlvbiwgZXZlbnQpID0+IHtcbiAgICBpZiAodGhpcy5wcm9wcy5zZWFyY2hhYmxlKSB7XG4gICAgICAvLyByZXNldCBlbnRyeSBpbnB1dFxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIHNlYXJjaFJlc3VsdHM6IGdldE9wdGlvbnNGb3JWYWx1ZSgnJywgdGhpcy5wcm9wcywgdGhpcy5zdGF0ZSksXG4gICAgICAgIHNlbGVjdGlvbjogJycsXG4gICAgICAgIGVudHJ5VmFsdWU6ICcnXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5wcm9wcy5vbk9wdGlvblNlbGVjdGVkKG9wdGlvbiwgZXZlbnQpO1xuICB9O1xuXG4gIC8vIHVzZSAoKSA9PiB7fSB0byBhdm9pZCBiaW5kaW5nICd0aGlzJ1xuICBfb25UZXh0RW50cnlVcGRhdGVkID0gKCkgPT4ge1xuICAgIGlmICh0aGlzLnByb3BzLnNlYXJjaGFibGUpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5lbnRyeS5jdXJyZW50LnZhbHVlO1xuXG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgc2VhcmNoUmVzdWx0czogZ2V0T3B0aW9uc0ZvclZhbHVlKHZhbHVlLCB0aGlzLnByb3BzLCB0aGlzLnN0YXRlKSxcbiAgICAgICAgc2VsZWN0aW9uOiAnJyxcbiAgICAgICAgZW50cnlWYWx1ZTogdmFsdWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBfb25FbnRlciA9IGV2ZW50ID0+IHtcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpO1xuICAgIGlmICghc2VsZWN0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy5wcm9wcy5vbktleURvd24oZXZlbnQpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fb25PcHRpb25TZWxlY3RlZChzZWxlY3Rpb24sIGV2ZW50KTtcbiAgfTtcblxuICBfb25Fc2NhcGUgPSAoKSA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBzZWxlY3Rpb25JbmRleDogbnVsbFxuICAgIH0pO1xuICB9O1xuXG4gIF9vblRhYiA9IGV2ZW50ID0+IHtcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpO1xuICAgIGxldCBvcHRpb24gPSBzZWxlY3Rpb25cbiAgICAgID8gc2VsZWN0aW9uXG4gICAgICA6IHRoaXMuc3RhdGUuc2VhcmNoUmVzdWx0cy5sZW5ndGggPiAwXG4gICAgICA/IHRoaXMuc3RhdGUuc2VhcmNoUmVzdWx0c1swXVxuICAgICAgOiBudWxsO1xuXG4gICAgaWYgKG9wdGlvbiA9PT0gbnVsbCAmJiB0aGlzLl9oYXNDdXN0b21WYWx1ZSgpKSB7XG4gICAgICBvcHRpb24gPSB0aGlzLl9nZXRDdXN0b21WYWx1ZSgpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb24gIT09IG51bGwpIHtcbiAgICAgIHJldHVybiB0aGlzLl9vbk9wdGlvblNlbGVjdGVkKG9wdGlvbiwgZXZlbnQpO1xuICAgIH1cbiAgfTtcblxuICBldmVudE1hcCA9IGV2ZW50ID0+IHtcbiAgICBjb25zdCBldmVudHMgPSB7fTtcblxuICAgIGV2ZW50c1tLZXlFdmVudC5ET01fVktfVVBdID0gdGhpcy5uYXZVcDtcbiAgICBldmVudHNbS2V5RXZlbnQuRE9NX1ZLX0RPV05dID0gdGhpcy5uYXZEb3duO1xuICAgIGV2ZW50c1tLZXlFdmVudC5ET01fVktfUkVUVVJOXSA9IGV2ZW50c1tLZXlFdmVudC5ET01fVktfRU5URVJdID0gdGhpcy5fb25FbnRlcjtcbiAgICBldmVudHNbS2V5RXZlbnQuRE9NX1ZLX0VTQ0FQRV0gPSB0aGlzLl9vbkVzY2FwZTtcbiAgICBldmVudHNbS2V5RXZlbnQuRE9NX1ZLX1RBQl0gPSB0aGlzLl9vblRhYjtcblxuICAgIHJldHVybiBldmVudHM7XG4gIH07XG5cbiAgX25hdiA9IGRlbHRhID0+IHtcbiAgICBpZiAoIXRoaXMuX2hhc0hpbnQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgbmV3SW5kZXggPVxuICAgICAgdGhpcy5zdGF0ZS5zZWxlY3Rpb25JbmRleCA9PT0gbnVsbFxuICAgICAgICA/IGRlbHRhID09PSAxXG4gICAgICAgICAgPyAwXG4gICAgICAgICAgOiBkZWx0YVxuICAgICAgICA6IHRoaXMuc3RhdGUuc2VsZWN0aW9uSW5kZXggKyBkZWx0YTtcbiAgICBsZXQgbGVuZ3RoID0gdGhpcy5wcm9wcy5tYXhWaXNpYmxlXG4gICAgICA/IHRoaXMuc3RhdGUuc2VhcmNoUmVzdWx0cy5zbGljZSgwLCB0aGlzLnByb3BzLm1heFZpc2libGUpLmxlbmd0aFxuICAgICAgOiB0aGlzLnN0YXRlLnNlYXJjaFJlc3VsdHMubGVuZ3RoO1xuICAgIGlmICh0aGlzLl9oYXNDdXN0b21WYWx1ZSgpKSB7XG4gICAgICBsZW5ndGggKz0gMTtcbiAgICB9XG5cbiAgICBpZiAobmV3SW5kZXggPCAwKSB7XG4gICAgICBuZXdJbmRleCArPSBsZW5ndGg7XG4gICAgfSBlbHNlIGlmIChuZXdJbmRleCA+PSBsZW5ndGgpIHtcbiAgICAgIG5ld0luZGV4IC09IGxlbmd0aDtcbiAgICB9XG5cbiAgICB0aGlzLnNldFN0YXRlKHtzZWxlY3Rpb25JbmRleDogbmV3SW5kZXh9KTtcbiAgfTtcblxuICBuYXZEb3duID0gKCkgPT4ge1xuICAgIHRoaXMuX25hdigxKTtcbiAgfTtcblxuICBuYXZVcCA9ICgpID0+IHtcbiAgICB0aGlzLl9uYXYoLTEpO1xuICB9O1xuXG4gIF9vbkNoYW5nZSA9IGV2ZW50ID0+IHtcbiAgICBpZiAodGhpcy5wcm9wcy5vbkNoYW5nZSkge1xuICAgICAgdGhpcy5wcm9wcy5vbkNoYW5nZShldmVudCk7XG4gICAgfVxuXG4gICAgdGhpcy5fb25UZXh0RW50cnlVcGRhdGVkKCk7XG4gIH07XG5cbiAgX29uS2V5RG93biA9IGV2ZW50ID0+IHtcbiAgICAvLyBJZiB0aGVyZSBhcmUgbm8gdmlzaWJsZSBlbGVtZW50cywgZG9uJ3QgcGVyZm9ybSBzZWxlY3RvciBuYXZpZ2F0aW9uLlxuICAgIC8vIEp1c3QgcGFzcyB0aGlzIHVwIHRvIHRoZSB1cHN0cmVhbSBvbktleWRvd24gaGFuZGxlci5cbiAgICAvLyBBbHNvIHNraXAgaWYgdGhlIHVzZXIgaXMgcHJlc3NpbmcgdGhlIHNoaWZ0IGtleSwgc2luY2Ugbm9uZSBvZiBvdXIgaGFuZGxlcnMgYXJlIGxvb2tpbmcgZm9yIHNoaWZ0XG4gICAgaWYgKCF0aGlzLl9oYXNIaW50KCkgfHwgZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLm9uS2V5RG93bihldmVudCk7XG4gICAgfVxuXG4gICAgY29uc3QgaGFuZGxlciA9IHRoaXMuZXZlbnRNYXAoKVtldmVudC5rZXlDb2RlXTtcblxuICAgIGlmIChoYW5kbGVyKSB7XG4gICAgICBoYW5kbGVyKGV2ZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMub25LZXlEb3duKGV2ZW50KTtcbiAgICB9XG4gICAgLy8gRG9uJ3QgcHJvcGFnYXRlIHRoZSBrZXlzdHJva2UgYmFjayB0byB0aGUgRE9NL2Jyb3dzZXJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9O1xuXG4gIF9vbkZvY3VzID0gZXZlbnQgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoe2lzRm9jdXNlZDogdHJ1ZX0pO1xuICAgIGlmICh0aGlzLnByb3BzLm9uRm9jdXMpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLm9uRm9jdXMoZXZlbnQpO1xuICAgIH1cbiAgfTtcblxuICBfb25CbHVyID0gZXZlbnQgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoe2lzRm9jdXNlZDogZmFsc2V9KTtcbiAgICBpZiAodGhpcy5wcm9wcy5vbkJsdXIpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLm9uQmx1cihldmVudCk7XG4gICAgfVxuICB9O1xuXG4gIF9yZW5kZXJIaWRkZW5JbnB1dCgpIHtcbiAgICBpZiAoIXRoaXMucHJvcHMubmFtZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT17dGhpcy5wcm9wcy5uYW1lfSB2YWx1ZT17dGhpcy5zdGF0ZS5zZWxlY3Rpb259IC8+O1xuICB9XG5cbiAgX2hhc0hpbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuc2VhcmNoUmVzdWx0cy5sZW5ndGggPiAwIHx8IHRoaXMuX2hhc0N1c3RvbVZhbHVlKCk7XG4gIH1cblxuICBfaGFzRml4ZWRPcHRpb25zKCkge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHRoaXMucHJvcHMuZml4ZWRPcHRpb25zKSAmJiB0aGlzLnByb3BzLmZpeGVkT3B0aW9ucy5sZW5ndGg7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgaW5wdXRDbGFzc2VzID0ge307XG4gICAgaW5wdXRDbGFzc2VzW3RoaXMucHJvcHMuY3VzdG9tQ2xhc3Nlcy5pbnB1dF0gPSBCb29sZWFuKHRoaXMucHJvcHMuY3VzdG9tQ2xhc3Nlcy5pbnB1dCk7XG4gICAgY29uc3QgaW5wdXRDbGFzc0xpc3QgPSBjbGFzc05hbWVzKGlucHV0Q2xhc3Nlcyk7XG5cbiAgICBjb25zdCBjbGFzc2VzID0ge1xuICAgICAgW0RFRkFVTFRfQ0xBU1NdOiB0aGlzLnByb3BzLmRlZmF1bHRDbGFzc05hbWVzXG4gICAgfTtcbiAgICBjbGFzc2VzW3RoaXMucHJvcHMuY2xhc3NOYW1lXSA9IEJvb2xlYW4odGhpcy5wcm9wcy5jbGFzc05hbWUpO1xuICAgIGNvbnN0IGNsYXNzTGlzdCA9IGNsYXNzTmFtZXMoY2xhc3Nlcyk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFR5cGVhaGVhZFdyYXBwZXJcbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc0xpc3R9XG4gICAgICAgIHJlZj17dGhpcy5yb290fVxuICAgICAgICB0YWJJbmRleD1cIjBcIlxuICAgICAgICBvbktleURvd249e3RoaXMuX29uS2V5RG93bn1cbiAgICAgICAgb25LZXlQcmVzcz17dGhpcy5wcm9wcy5vbktleVByZXNzfVxuICAgICAgICBvbktleVVwPXt0aGlzLnByb3BzLm9uS2V5VXB9XG4gICAgICAgIG9uRm9jdXM9e3RoaXMuX29uRm9jdXN9XG4gICAgICAgIGxpZ2h0PXt0aGlzLnByb3BzLmxpZ2h0fVxuICAgICAgPlxuICAgICAgICB7dGhpcy5fcmVuZGVySGlkZGVuSW5wdXQoKX1cbiAgICAgICAge3RoaXMucHJvcHMuc2VhcmNoYWJsZSA/IChcbiAgICAgICAgICA8SW5wdXRCb3g+XG4gICAgICAgICAgICA8VHlwZWFoZWFkSW5wdXRcbiAgICAgICAgICAgICAgcmVmPXt0aGlzLmVudHJ5fVxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIGRpc2FibGVkPXt0aGlzLnByb3BzLmRpc2FibGVkfVxuICAgICAgICAgICAgICB7Li4udGhpcy5wcm9wcy5pbnB1dFByb3BzfVxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17dGhpcy5wcm9wcy5wbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtpbnB1dENsYXNzTGlzdH1cbiAgICAgICAgICAgICAgdmFsdWU9e3RoaXMuc3RhdGUuZW50cnlWYWx1ZX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMuX29uQ2hhbmdlfVxuICAgICAgICAgICAgICBvbkJsdXI9e3RoaXMuX29uQmx1cn1cbiAgICAgICAgICAgICAgbGlnaHQ9e3RoaXMucHJvcHMubGlnaHR9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPElucHV0SWNvbj5cbiAgICAgICAgICAgICAgPHRoaXMucHJvcHMuaW5wdXRJY29uIGhlaWdodD1cIjE4cHhcIiAvPlxuICAgICAgICAgICAgPC9JbnB1dEljb24+XG4gICAgICAgICAgPC9JbnB1dEJveD5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIHt0aGlzLl9yZW5kZXJJbmNyZW1lbnRhbFNlYXJjaFJlc3VsdHMoKX1cbiAgICAgIDwvVHlwZWFoZWFkV3JhcHBlcj5cbiAgICApO1xuICB9XG59XG5cbnBvbHlmaWxsKFR5cGVhaGVhZCk7XG5cbmV4cG9ydCBkZWZhdWx0IFR5cGVhaGVhZDtcbiJdfQ==
|
|
496
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2NvbW1vbi9pdGVtLXNlbGVjdG9yL3R5cGVhaGVhZC5qcyJdLCJuYW1lcyI6WyJERUZBVUxUX0NMQVNTIiwiVHlwZWFoZWFkV3JhcHBlciIsInN0eWxlZCIsImRpdiIsInByb3BzIiwibGlnaHQiLCJ0aGVtZSIsImRyb3Bkb3duTGlzdEJnZExUIiwiaW5wdXRCZ2QiLCJkcm9wZG93bkxpc3RTaGFkb3ciLCJJbnB1dEJveCIsIlR5cGVhaGVhZElucHV0IiwiaW5wdXQiLCJpbnB1dExUIiwic2Vjb25kYXJ5SW5wdXQiLCJJbnB1dEljb24iLCJpbnB1dFBsYWNlaG9sZGVyQ29sb3IiLCJnZW5lcmF0ZVNlYXJjaEZ1bmN0aW9uIiwic2VhcmNoT3B0aW9ucyIsImZpbHRlck9wdGlvbiIsIkNvbnNvbGUiLCJ3YXJuIiwidmFsdWUiLCJvcHRpb25zIiwiZmlsdGVyIiwibyIsIm1hcHBlciIsIkFjY2Vzc29yIiwiZ2VuZXJhdGVBY2Nlc3NvciIsIklERU5USVRZX0ZOIiwiZnV6enkiLCJleHRyYWN0IiwibWFwIiwicmVzIiwiaW5kZXgiLCJnZXRPcHRpb25zRm9yVmFsdWUiLCJzdGF0ZSIsInNob3dPcHRpb25zV2hlbkVtcHR5Iiwic2VhcmNoYWJsZSIsInNob3VsZFNraXBTZWFyY2giLCJlbXB0eVZhbHVlIiwidHJpbSIsImxlbmd0aCIsImlzRm9jdXNlZCIsIlR5cGVhaGVhZCIsImVudHJ5IiwiY3VycmVudCIsImZvY3VzIiwiYWxsb3dDdXN0b21WYWx1ZXMiLCJlbnRyeVZhbHVlIiwic2VhcmNoUmVzdWx0cyIsImluZGV4T2YiLCJfaGFzQ3VzdG9tVmFsdWUiLCJvcHRpb24iLCJldmVudCIsInNldFN0YXRlIiwic2VsZWN0aW9uIiwib25PcHRpb25TZWxlY3RlZCIsImdldFNlbGVjdGlvbiIsIm9uS2V5RG93biIsIl9vbk9wdGlvblNlbGVjdGVkIiwic2VsZWN0aW9uSW5kZXgiLCJfZ2V0Q3VzdG9tVmFsdWUiLCJldmVudHMiLCJLZXlFdmVudCIsIkRPTV9WS19VUCIsIm5hdlVwIiwiRE9NX1ZLX0RPV04iLCJuYXZEb3duIiwiRE9NX1ZLX1JFVFVSTiIsIkRPTV9WS19FTlRFUiIsIl9vbkVudGVyIiwiRE9NX1ZLX0VTQ0FQRSIsIl9vbkVzY2FwZSIsIkRPTV9WS19UQUIiLCJfb25UYWIiLCJkZWx0YSIsIl9oYXNIaW50IiwibmV3SW5kZXgiLCJtYXhWaXNpYmxlIiwic2xpY2UiLCJfbmF2Iiwib25DaGFuZ2UiLCJfb25UZXh0RW50cnlVcGRhdGVkIiwic2hpZnRLZXkiLCJoYW5kbGVyIiwiZXZlbnRNYXAiLCJrZXlDb2RlIiwicHJldmVudERlZmF1bHQiLCJvbkZvY3VzIiwib25CbHVyIiwiaW5pdGlhbFZhbHVlIiwicm9vdCIsImZpeGVkT3B0aW9ucyIsInJlc3VsdHNUcnVuY2F0ZWRNZXNzYWdlIiwiY3VzdG9tQ2xhc3NlcyIsImN1c3RvbUxpc3RJdGVtQ29tcG9uZW50IiwiY3VzdG9tTGlzdEhlYWRlckNvbXBvbmVudCIsImRlZmF1bHRDbGFzc05hbWVzIiwiZGlzcGxheU9wdGlvbiIsInNlbGVjdGVkSXRlbXMiLCJ3aXRoU3ViT3B0aW9ucyIsIl9oYXNGaXhlZE9wdGlvbnMiLCJuYW1lIiwiQXJyYXkiLCJpc0FycmF5IiwiaW5wdXRDbGFzc2VzIiwiQm9vbGVhbiIsImlucHV0Q2xhc3NMaXN0IiwiY2xhc3NlcyIsImNsYXNzTmFtZSIsImNsYXNzTGlzdCIsIl9vbktleURvd24iLCJvbktleVByZXNzIiwib25LZXlVcCIsIl9vbkZvY3VzIiwiX3JlbmRlckhpZGRlbklucHV0IiwiZGlzYWJsZWQiLCJpbnB1dFByb3BzIiwicGxhY2Vob2xkZXIiLCJfb25DaGFuZ2UiLCJfb25CbHVyIiwiX3JlbmRlckluY3JlbWVudGFsU2VhcmNoUmVzdWx0cyIsIkNvbXBvbmVudCIsIlByb3BUeXBlcyIsInN0cmluZyIsIm9iamVjdCIsIm51bWJlciIsImFycmF5T2YiLCJhbnkiLCJib29sIiwidGV4dGFyZWEiLCJmdW5jIiwib25lT2ZUeXBlIiwiaW5wdXREaXNwbGF5T3B0aW9uIiwiZm9ybUlucHV0T3B0aW9uIiwiY3VzdG9tTGlzdENvbXBvbmVudCIsImVsZW1lbnQiLCJEcm9wZG93bkxpc3QiLCJMaXN0SXRlbSIsImlucHV0SWNvbiIsIlNlYXJjaCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFvQkE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7O0FBRUEsSUFBTUEsYUFBYSxHQUFHLFdBQXRCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLElBQU1DLGdCQUFnQixHQUFHQyw2QkFBT0MsR0FBViwwTkFHQSxVQUFBQyxLQUFLO0FBQUEsU0FDdkJBLEtBQUssQ0FBQ0MsS0FBTixHQUFjRCxLQUFLLENBQUNFLEtBQU4sQ0FBWUMsaUJBQTFCLEdBQThDSCxLQUFLLENBQUNFLEtBQU4sQ0FBWUUsUUFEbkM7QUFBQSxDQUhMLEVBS04sVUFBQUosS0FBSztBQUFBLFNBQUlBLEtBQUssQ0FBQ0UsS0FBTixDQUFZRyxrQkFBaEI7QUFBQSxDQUxDLENBQXRCOztBQVlBLElBQU1DLFFBQVEsR0FBR1IsNkJBQU9DLEdBQVYsaUlBQWQ7O0FBS0EsSUFBTVEsY0FBYyxHQUFHVCw2QkFBT1UsS0FBVix1TEFDaEIsVUFBQVIsS0FBSztBQUFBLFNBQUtBLEtBQUssQ0FBQ0MsS0FBTixHQUFjRCxLQUFLLENBQUNFLEtBQU4sQ0FBWU8sT0FBMUIsR0FBb0NULEtBQUssQ0FBQ0UsS0FBTixDQUFZUSxjQUFyRDtBQUFBLENBRFcsRUFJRSxVQUFBVixLQUFLO0FBQUEsU0FBSUEsS0FBSyxDQUFDQyxLQUFOLEdBQWNELEtBQUssQ0FBQ0UsS0FBTixDQUFZRSxRQUExQixHQUFxQyxNQUF6QztBQUFBLENBSlAsQ0FBcEI7O0FBUUEsSUFBTU8sU0FBUyxHQUFHYiw2QkFBT0MsR0FBVixnUEFNSixVQUFBQyxLQUFLO0FBQUEsU0FB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QyxLQWZZLEVBZUwsQ0FBRSxDQWZHO0FBZ0JwQm9DLEVBQUFBLE1BaEJvQixrQkFnQmJwQyxLQWhCYSxFQWdCTixDQUFFLENBaEJJO0FBaUJwQm5DLEVBQUFBLFlBQVksRUFBRSxJQWpCTTtBQWtCcEJELEVBQUFBLGFBQWEsRUFBRSxJQWxCSztBQW1CcEJvSCxFQUFBQSxrQkFBa0IsRUFBRSxJQW5CQTtBQW9CcEJwQyxFQUFBQSxpQkFBaUIsRUFBRSxJQXBCQztBQXFCcEJzQyxFQUFBQSxtQkFBbUIsRUFBRUUsd0JBckJEO0FBc0JwQjFDLEVBQUFBLHVCQUF1QixFQUFFMkMsc0JBdEJMO0FBdUJwQkMsRUFBQUEsU0FBUyxFQUFFQyxhQXZCUztBQXdCcEI1QyxFQUFBQSx5QkFBeUIsRUFBRSxJQXhCUDtBQXlCcEI1RCxFQUFBQSxvQkFBb0IsRUFBRSxJQXpCRjtBQTBCcEJDLEVBQUFBLFVBQVUsRUFBRSxJQTFCUTtBQTJCcEJ3RCxFQUFBQSx1QkFBdUIsRUFBRSxJQTNCTDtBQTRCcEJPLEVBQUFBLGNBQWMsRUFBRTtBQTVCSSxDO0FBeVZ4QixxQ0FBU3pELFNBQVQ7ZUFFZUEsUyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMiBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCBSZWFjdCwge0NvbXBvbmVudCwgY3JlYXRlUmVmfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge3BvbHlmaWxsfSBmcm9tICdyZWFjdC1saWZlY3ljbGVzLWNvbXBhdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGZ1enp5IGZyb20gJ2Z1enp5JztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge2NvbnNvbGUgYXMgQ29uc29sZX0gZnJvbSAnZ2xvYmFsL3dpbmRvdyc7XG5cbmltcG9ydCBBY2Nlc3NvciBmcm9tICcuL2FjY2Vzc29yJztcbmltcG9ydCBEcm9wZG93bkxpc3QsIHtMaXN0SXRlbX0gZnJvbSAnLi9kcm9wZG93bi1saXN0JztcbmltcG9ydCB7U2VhcmNofSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9pY29ucyc7XG5pbXBvcnQgS2V5RXZlbnQgZnJvbSAnY29uc3RhbnRzL2tleWV2ZW50JztcblxuY29uc3QgREVGQVVMVF9DTEFTUyA9ICd0eXBlYWhlYWQnO1xuLyoqXG4gKiBDb3BpZWQgbW9zdGx5IGZyb20gJ3JlYWN0LXR5cGVhaGVhZCcsIGFuIGF1dG8tY29tcGxldGluZyB0ZXh0IGlucHV0XG4gKlxuICogUmVuZGVycyBhbiB0ZXh0IGlucHV0IHRoYXQgc2hvd3Mgb3B0aW9ucyBuZWFyYnkgdGhhdCB5b3UgY2FuIHVzZSB0aGVcbiAqIGtleWJvYXJkIG9yIG1vdXNlIHRvIHNlbGVjdC5cbiAqL1xuXG5jb25zdCBUeXBlYWhlYWRXcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PlxuICAgIHByb3BzLmxpZ2h0ID8gcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0QmdkTFQgOiBwcm9wcy50aGVtZS5pbnB1dEJnZH07XG4gIGJveC1zaGFkb3c6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0U2hhZG93fTtcblxuICA6Zm9jdXMge1xuICAgIG91dGxpbmU6IDA7XG4gIH1cbmA7XG5cbmNvbnN0IElucHV0Qm94ID0gc3R5bGVkLmRpdmBcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW46IDhweDtcbmBcblxuY29uc3QgVHlwZWFoZWFkSW5wdXQgPSBzdHlsZWQuaW5wdXRgXG4gICR7cHJvcHMgPT4gKHByb3BzLmxpZ2h0ID8gcHJvcHMudGhlbWUuaW5wdXRMVCA6IHByb3BzLnRoZW1lLnNlY29uZGFyeUlucHV0KX07XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nLWxlZnQ6IDM1cHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMubGlnaHQgPyBwcm9wcy50aGVtZS5pbnB1dEJnZCA6ICcjZWVlJ307XG4gIGJvcmRlcjogbm9uZTtcbmA7XG5cbmNvbnN0IElucHV0SWNvbiA9IHN0eWxlZC5kaXZgXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMTBweDtcbiAgdG9wOiA1MCU7XG4gIHotaW5kZXg6IDI7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaW5wdXRQbGFjZWhvbGRlckNvbG9yfTtcbiAgc3ZnIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuYDtcblxuZnVuY3Rpb24gZ2VuZXJhdGVTZWFyY2hGdW5jdGlvbihwcm9wcykge1xuICBjb25zdCB7c2VhcmNoT3B0aW9ucywgZmlsdGVyT3B0aW9ufSA9IHByb3BzO1xuICBpZiAodHlwZW9mIHNlYXJjaE9wdGlvbnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICBpZiAoZmlsdGVyT3B0aW9uICE9PSBudWxsKSB7XG4gICAgICBDb25zb2xlLndhcm4oJ3NlYXJjaE9wdGlvbnMgcHJvcCBpcyBiZWluZyB1c2VkLCBmaWx0ZXJPcHRpb24gcHJvcCB3aWxsIGJlIGlnbm9yZWQnKTtcbiAgICB9XG4gICAgcmV0dXJuIHNlYXJjaE9wdGlvbnM7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGZpbHRlck9wdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIC8vIHVzZSBjdXN0b20gZmlsdGVyIG9wdGlvblxuICAgIHJldHVybiAodmFsdWUsIG9wdGlvbnMpID0+IG9wdGlvbnMuZmlsdGVyKG8gPT4gZmlsdGVyT3B0aW9uKHZhbHVlLCBvKSk7XG4gIH1cblxuICBjb25zdCBtYXBwZXIgPVxuICAgIHR5cGVvZiBmaWx0ZXJPcHRpb24gPT09ICdzdHJpbmcnXG4gICAgICA/IEFjY2Vzc29yLmdlbmVyYXRlQWNjZXNzb3IoZmlsdGVyT3B0aW9uKVxuICAgICAgOiBBY2Nlc3Nvci5JREVOVElUWV9GTjtcblxuICByZXR1cm4gKHZhbHVlLCBvcHRpb25zKSA9PlxuICAgIGZ1enp5LmZpbHRlcih2YWx1ZSwgb3B0aW9ucywge2V4dHJhY3Q6IG1hcHBlcn0pLm1hcChyZXMgPT4gb3B0aW9uc1tyZXMuaW5kZXhdKTtcbn1cblxuZnVuY3Rpb24gZ2V0T3B0aW9uc0ZvclZhbHVlKHZhbHVlLCBwcm9wcywgc3RhdGUpIHtcbiAgY29uc3Qge29wdGlvbnMsIHNob3dPcHRpb25zV2hlbkVtcHR5fSA9IHByb3BzO1xuXG4gIGlmICghcHJvcHMuc2VhcmNoYWJsZSkge1xuICAgIC8vIGRpcmVjdGx5IHBhc3MgdGhyb3VnaCBvcHRpb25zIGlmIGNhbiBub3QgYmUgc2VhcmNoZWRcbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfVxuICBpZiAoc2hvdWxkU2tpcFNlYXJjaCh2YWx1ZSwgc3RhdGUsIHNob3dPcHRpb25zV2hlbkVtcHR5KSkge1xuICAgIHJldHVybiBvcHRpb25zO1xuICB9XG5cbiAgY29uc3Qgc2VhcmNoT3B0aW9ucyA9IGdlbmVyYXRlU2VhcmNoRnVuY3Rpb24ocHJvcHMpO1xuICByZXR1cm4gc2VhcmNoT3B0aW9ucyh2YWx1ZSwgb3B0aW9ucyk7XG59XG5cbmZ1bmN0aW9uIHNob3VsZFNraXBTZWFyY2goaW5wdXQsIHN0YXRlLCBzaG93T3B0aW9uc1doZW5FbXB0eSkge1xuICBjb25zdCBlbXB0eVZhbHVlID0gIWlucHV0IHx8IGlucHV0LnRyaW0oKS5sZW5ndGggPT09IDA7XG5cbiAgLy8gdGhpcy5zdGF0ZSBtdXN0IGJlIGNoZWNrZWQgYmVjYXVzZSBpdCBtYXkgbm90IGJlIGRlZmluZWQgeWV0IGlmIHRoaXMgZnVuY3Rpb25cbiAgLy8gaXMgY2FsbGVkIGZyb20gd2l0aGluIGdldEluaXRpYWxTdGF0ZVxuICBjb25zdCBpc0ZvY3VzZWQgPSBzdGF0ZSAmJiBzdGF0ZS5pc0ZvY3VzZWQ7XG4gIHJldHVybiAhKHNob3dPcHRpb25zV2hlbkVtcHR5ICYmIGlzRm9jdXNlZCkgJiYgZW1wdHlWYWx1ZTtcbn1cblxuY2xhc3MgVHlwZWFoZWFkIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGN1c3RvbUNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgbWF4VmlzaWJsZTogUHJvcFR5cGVzLm51bWJlcixcbiAgICByZXN1bHRzVHJ1bmNhdGVkTWVzc2FnZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBvcHRpb25zOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuYW55KSxcbiAgICBmaXhlZE9wdGlvbnM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5hbnkpLFxuICAgIGFsbG93Q3VzdG9tVmFsdWVzOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIGluaXRpYWxWYWx1ZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICB2YWx1ZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBwbGFjZWhvbGRlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gICAgdGV4dGFyZWE6IFByb3BUeXBlcy5ib29sLFxuICAgIGlucHV0UHJvcHM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgb25PcHRpb25TZWxlY3RlZDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICAgIG9uS2V5RG93bjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25LZXlQcmVzczogUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25LZXlVcDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25Gb2N1czogUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25CbHVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBmaWx0ZXJPcHRpb246IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5mdW5jXSksXG4gICAgc2VhcmNoT3B0aW9uczogUHJvcFR5cGVzLmZ1bmMsXG4gICAgZGlzcGxheU9wdGlvbjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLmZ1bmNdKSxcbiAgICBpbnB1dERpc3BsYXlPcHRpb246IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5mdW5jXSksXG4gICAgZm9ybUlucHV0T3B0aW9uOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMuZnVuY10pLFxuICAgIGRlZmF1bHRDbGFzc05hbWVzOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBjdXN0b21MaXN0Q29tcG9uZW50OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZWxlbWVudCwgUHJvcFR5cGVzLmZ1bmNdKSxcbiAgICBjdXN0b21MaXN0SXRlbUNvbXBvbmVudDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmVsZW1lbnQsIFByb3BUeXBlcy5mdW5jXSksXG4gICAgY3VzdG9tTGlzdEhlYWRlckNvbXBvbmVudDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmVsZW1lbnQsIFByb3BUeXBlcy5mdW5jXSksXG4gICAgc2hvd09wdGlvbnNXaGVuRW1wdHk6IFByb3BUeXBlcy5ib29sLFxuICAgIHNlYXJjaGFibGU6IFByb3BUeXBlcy5ib29sLFxuICAgIHdpdGhTdWJPcHRpb25zOiBQcm9wVHlwZXMuYm9vbFxuICB9O1xuXG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgb3B0aW9uczogW10sXG4gICAgY3VzdG9tQ2xhc3Nlczoge30sXG4gICAgYWxsb3dDdXN0b21WYWx1ZXM6IDAsXG4gICAgaW5pdGlhbFZhbHVlOiAnJyxcbiAgICB2YWx1ZTogJycsXG4gICAgcGxhY2Vob2xkZXI6ICcnLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICB0ZXh0YXJlYTogZmFsc2UsXG4gICAgaW5wdXRQcm9wczoge30sXG4gICAgb25PcHRpb25TZWxlY3RlZChvcHRpb24pIHt9LFxuICAgIG9uQ2hhbmdlKGV2ZW50KSB7fSxcbiAgICBvbktleURvd24oZXZlbnQpIHt9LFxuICAgIG9uS2V5UHJlc3MoZXZlbnQpIHt9LFxuICAgIG9uS2V5VXAoZXZlbnQpIHt9LFxuICAgIG9uRm9jdXMoZXZlbnQpIHt9LFxuICAgIG9uQmx1cihldmVudCkge30sXG4gICAgZmlsdGVyT3B0aW9uOiBudWxsLFxuICAgIHNlYXJjaE9wdGlvbnM6IG51bGwsXG4gICAgaW5wdXREaXNwbGF5T3B0aW9uOiBudWxsLFxuICAgIGRlZmF1bHRDbGFzc05hbWVzOiB0cnVlLFxuICAgIGN1c3RvbUxpc3RDb21wb25lbnQ6IERyb3Bkb3duTGlzdCxcbiAgICBjdXN0b21MaXN0SXRlbUNvbXBvbmVudDogTGlzdEl0ZW0sXG4gICAgaW5wdXRJY29uOiBTZWFyY2gsXG4gICAgY3VzdG9tTGlzdEhlYWRlckNvbXBvbmVudDogbnVsbCxcbiAgICBzaG93T3B0aW9uc1doZW5FbXB0eTogdHJ1ZSxcbiAgICBzZWFyY2hhYmxlOiB0cnVlLFxuICAgIHJlc3VsdHNUcnVuY2F0ZWRNZXNzYWdlOiBudWxsLFxuICAgIHdpdGhTdWJPcHRpb25zOiBmYWxzZVxuICB9O1xuXG4gIHN0YXRpYyBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMocHJvcHMsIHN0YXRlKSB7XG4gICAgLy8gIGludm9rZWQgYWZ0ZXIgYSBjb21wb25lbnQgaXMgaW5zdGFudGlhdGVkIGFzIHdlbGwgYXMgYmVmb3JlIGl0IGlzIHJlLXJlbmRlcmVkXG4gICAgY29uc3Qgc2VhcmNoUmVzdWx0cyA9IGdldE9wdGlvbnNGb3JWYWx1ZShzdGF0ZS5lbnRyeVZhbHVlLCBwcm9wcywgc3RhdGUpO1xuXG4gICAgcmV0dXJuIHtzZWFyY2hSZXN1bHRzfTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIC8qKiBAdHlwZSB7UmVhZG9ubHlBcnJheTxzdHJpbmc+fSAqL1xuICAgICAgc2VhcmNoUmVzdWx0czogW10sXG5cbiAgICAgIC8vIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBzb21ldGhpbmcgZWxzZSwgJ2VudHJ5VmFsdWUnXG4gICAgICBlbnRyeVZhbHVlOiB0aGlzLnByb3BzLnZhbHVlIHx8IHRoaXMucHJvcHMuaW5pdGlhbFZhbHVlLFxuXG4gICAgICAvLyBBIHZhbGlkIHR5cGVhaGVhZCB2YWx1ZVxuICAgICAgc2VsZWN0aW9uOiB0aGlzLnByb3BzLnZhbHVlLFxuXG4gICAgICAvLyBJbmRleCBvZiB0aGUgc2VsZWN0aW9uXG4gICAgICBzZWxlY3Rpb25JbmRleDogbnVsbCxcblxuICAgICAgLy8gS2VlcCB0cmFjayBvZiB0aGUgZm9jdXMgc3RhdGUgb2YgdGhlIGlucHV0IGVsZW1lbnQsIHRvIGRldGVybWluZVxuICAgICAgLy8gd2hldGhlciB0byBzaG93IG9wdGlvbnMgd2hlbiBlbXB0eSAoaWYgc2hvd09wdGlvbnNXaGVuRW1wdHkgaXMgdHJ1ZSlcbiAgICAgIGlzRm9jdXNlZDogZmFsc2VcbiAgICB9O1xuICB9XG5cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgLy8gY2FsbCBmb2N1cyBvbiBlbnRyeSBvciBkaXYgdG8gdHJpZ2dlciBrZXkgZXZlbnRzIGxpc3RlbmVyXG4gICAgaWYgKHRoaXMuZW50cnkuY3VycmVudCkge1xuICAgICAgdGhpcy5lbnRyeS5jdXJyZW50LmZvY3VzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucm9vdC5jdXJyZW50LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgcm9vdCA9IGNyZWF0ZVJlZigpO1xuICBlbnRyeSA9IGNyZWF0ZVJlZigpO1xuXG4gIGZvY3VzID0gKCkgPT4ge1xuICAgIGlmICh0aGlzLmVudHJ5LmN1cnJlbnQpIHtcbiAgICAgIHRoaXMuZW50cnkuY3VycmVudC5mb2N1cygpO1xuICAgIH1cbiAgfTtcblxuICBfaGFzQ3VzdG9tVmFsdWUgPSAoKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMucHJvcHMuYWxsb3dDdXN0b21WYWx1ZXMgPiAwICYmXG4gICAgICB0aGlzLnN0YXRlLmVudHJ5VmFsdWUubGVuZ3RoID49IHRoaXMucHJvcHMuYWxsb3dDdXN0b21WYWx1ZXMgJiZcbiAgICAgIHRoaXMuc3RhdGUuc2VhcmNoUmVzdWx0cy5pbmRleE9mKHRoaXMuc3RhdGUuZW50cnlWYWx1ZSkgPCAwXG4gICAgKTtcbiAgfTtcblxuICBfZ2V0Q3VzdG9tVmFsdWUgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuX2hhc0N1c3RvbVZhbHVlKCkgPyB0aGlzLnN0YXRlLmVudHJ5VmFsdWUgOiBudWxsO1xuICB9O1xuXG4gIF9yZW5kZXJJbmNyZW1lbnRhbFNlYXJjaFJlc3VsdHMoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDx0aGlzLnByb3BzLmN1c3RvbUxpc3RDb21wb25lbnRcbiAgICAgICAgZml4ZWRPcHRpb25zPXt0aGlzLnByb3BzLmZpeGVkT3B0aW9uc31cbiAgICAgICAgc2VhcmNoRW50cnlWYWx1ZT17dGhpcy5zdGF0ZS5lbnRyeVZhbHVlfVxuICAgICAgICBvcHRpb25zPXtcbiAgICAgICAgICB0aGlzLnByb3BzLm1heFZpc2libGVcbiAgICAgICAgICAgID8gdGhpcy5zdGF0ZS5zZWFyY2hSZXN1bHRzLnNsaWNlKDAsIHRoaXMucHJvcHMubWF4VmlzaWJsZSlcbiAgICAgICAgICAgIDogdGhpcy5zdGF0ZS5zZWFyY2hSZXN1bHRzXG4gICAgICAgIH1cbiAgICAgICAgYXJlUmVzdWx0c1RydW5jYXRlZD17XG4gICAgICAgICAgdGhpcy5wcm9wcy5tYXhWaXNpYmxlICYmIHRoaXMuc3RhdGUuc2VhcmNoUmVzdWx0cy5sZW5ndGggPiB0aGlzLnByb3BzLm1heFZpc2libGVcbiAgICAgICAgfVxuICAgICAgICByZXN1bHRzVHJ1bmNhdGVkTWVzc2FnZT17dGhpcy5wcm9wcy5yZXN1bHRzVHJ1bmNhdGVkTWVzc2FnZX1cbiAgICAgICAgb25PcHRpb25TZWxlY3RlZD17dGhpcy5fb25PcHRpb25TZWxlY3RlZH1cbiAgICAgICAgYWxsb3dDdXN0b21WYWx1ZXM9e3RoaXMucHJvcHMuYWxsb3dDdXN0b21WYWx1ZXN9XG4gICAgICAgIGN1c3RvbVZhbHVlPXt0aGlzLl9nZXRDdXN0b21WYWx1ZSgpfVxuICAgICAgICBjdXN0b21DbGFzc2VzPXt0aGlzLnByb3BzLmN1c3RvbUNsYXNzZXN9XG4gICAgICAgIGN1c3RvbUxpc3RJdGVtQ29tcG9uZW50PXt0aGlzLnByb3BzLmN1c3RvbUxpc3RJdGVtQ29tcG9uZW50fVxuICAgICAgICBjdXN0b21MaXN0SGVhZGVyQ29tcG9uZW50PXt0aGlzLnByb3BzLmN1c3RvbUxpc3RIZWFkZXJDb21wb25lbnR9XG4gICAgICAgIHNlbGVjdGlvbkluZGV4PXt0aGlzLnN0YXRlLnNlbGVjdGlvbkluZGV4fVxuICAgICAgICBkZWZhdWx0Q2xhc3NOYW1lcz17dGhpcy5wcm9wcy5kZWZhdWx0Q2xhc3NOYW1lc31cbiAgICAgICAgZGlzcGxheU9wdGlvbj17dGhpcy5wcm9wcy5kaXNwbGF5T3B0aW9ufVxuICAgICAgICBzZWxlY3RlZEl0ZW1zPXt0aGlzLnByb3BzLnNlbGVjdGVkSXRlbXN9XG4gICAgICAgIGxpZ2h0PXt0aGlzLnByb3BzLmxpZ2h0fVxuICAgICAgICB3aXRoU3ViT3B0aW9ucz17dGhpcy5wcm9wcy53aXRoU3ViT3B0aW9uc31cbiAgICAgIC8+XG4gICAgKTtcbiAgfVxuXG4gIGdldFNlbGVjdGlvbigpIHtcbiAgICBsZXQgaW5kZXggPSB0aGlzLnN0YXRlLnNlbGVjdGlvbkluZGV4O1xuXG4gICAgaWYgKHRoaXMuX2hhc0N1c3RvbVZhbHVlKCkpIHtcbiAgICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS5lbnRyeVZhbHVlO1xuICAgICAgfVxuICAgICAgaW5kZXgtLTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2hhc0ZpeGVkT3B0aW9ucygpKSB7XG4gICAgICByZXR1cm4gaW5kZXggPCB0aGlzLnByb3BzLmZpeGVkT3B0aW9ucy5sZW5ndGhcbiAgICAgICAgPyB0aGlzLnByb3BzLmZpeGVkT3B0aW9uc1tpbmRleF1cbiAgICAgICAgOiB0aGlzLnN0YXRlLnNlYXJjaFJlc3VsdHNbaW5kZXggLSB0aGlzLnByb3BzLmZpeGVkT3B0aW9ucy5sZW5ndGhdO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5zZWFyY2hSZXN1bHRzW2luZGV4XTtcbiAgfVxuXG4gIF9vbk9wdGlvblNlbGVjdGVkID0gKG9wdGlvbiwgZXZlbnQpID0+IHtcbiAgICBpZiAodGhpcy5wcm9wcy5zZWFyY2hhYmxlKSB7XG4gICAgICAvLyByZXNldCBlbnRyeSBpbnB1dFxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIHNlYXJjaFJlc3VsdHM6IGdldE9wdGlvbnNGb3JWYWx1ZSgnJywgdGhpcy5wcm9wcywgdGhpcy5zdGF0ZSksXG4gICAgICAgIHNlbGVjdGlvbjogJycsXG4gICAgICAgIGVudHJ5VmFsdWU6ICcnXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5wcm9wcy5vbk9wdGlvblNlbGVjdGVkKG9wdGlvbiwgZXZlbnQpO1xuICB9O1xuXG4gIC8vIHVzZSAoKSA9PiB7fSB0byBhdm9pZCBiaW5kaW5nICd0aGlzJ1xuICBfb25UZXh0RW50cnlVcGRhdGVkID0gKCkgPT4ge1xuICAgIGlmICh0aGlzLnByb3BzLnNlYXJjaGFibGUpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5lbnRyeS5jdXJyZW50LnZhbHVlO1xuXG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgc2VhcmNoUmVzdWx0czogZ2V0T3B0aW9uc0ZvclZhbHVlKHZhbHVlLCB0aGlzLnByb3BzLCB0aGlzLnN0YXRlKSxcbiAgICAgICAgc2VsZWN0aW9uOiAnJyxcbiAgICAgICAgZW50cnlWYWx1ZTogdmFsdWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBfb25FbnRlciA9IGV2ZW50ID0+IHtcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpO1xuICAgIGlmICghc2VsZWN0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy5wcm9wcy5vbktleURvd24oZXZlbnQpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fb25PcHRpb25TZWxlY3RlZChzZWxlY3Rpb24sIGV2ZW50KTtcbiAgfTtcblxuICBfb25Fc2NhcGUgPSAoKSA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBzZWxlY3Rpb25JbmRleDogbnVsbFxuICAgIH0pO1xuICB9O1xuXG4gIF9vblRhYiA9IGV2ZW50ID0+IHtcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpO1xuICAgIGxldCBvcHRpb24gPSBzZWxlY3Rpb25cbiAgICAgID8gc2VsZWN0aW9uXG4gICAgICA6IHRoaXMuc3RhdGUuc2VhcmNoUmVzdWx0cy5sZW5ndGggPiAwXG4gICAgICA/IHRoaXMuc3RhdGUuc2VhcmNoUmVzdWx0c1swXVxuICAgICAgOiBudWxsO1xuXG4gICAgaWYgKG9wdGlvbiA9PT0gbnVsbCAmJiB0aGlzLl9oYXNDdXN0b21WYWx1ZSgpKSB7XG4gICAgICBvcHRpb24gPSB0aGlzLl9nZXRDdXN0b21WYWx1ZSgpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb24gIT09IG51bGwpIHtcbiAgICAgIHJldHVybiB0aGlzLl9vbk9wdGlvblNlbGVjdGVkKG9wdGlvbiwgZXZlbnQpO1xuICAgIH1cbiAgfTtcblxuICBldmVudE1hcCA9IGV2ZW50ID0+IHtcbiAgICBjb25zdCBldmVudHMgPSB7fTtcblxuICAgIGV2ZW50c1tLZXlFdmVudC5ET01fVktfVVBdID0gdGhpcy5uYXZVcDtcbiAgICBldmVudHNbS2V5RXZlbnQuRE9NX1ZLX0RPV05dID0gdGhpcy5uYXZEb3duO1xuICAgIGV2ZW50c1tLZXlFdmVudC5ET01fVktfUkVUVVJOXSA9IGV2ZW50c1tLZXlFdmVudC5ET01fVktfRU5URVJdID0gdGhpcy5fb25FbnRlcjtcbiAgICBldmVudHNbS2V5RXZlbnQuRE9NX1ZLX0VTQ0FQRV0gPSB0aGlzLl9vbkVzY2FwZTtcbiAgICBldmVudHNbS2V5RXZlbnQuRE9NX1ZLX1RBQl0gPSB0aGlzLl9vblRhYjtcblxuICAgIHJldHVybiBldmVudHM7XG4gIH07XG5cbiAgX25hdiA9IGRlbHRhID0+IHtcbiAgICBpZiAoIXRoaXMuX2hhc0hpbnQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgbmV3SW5kZXggPVxuICAgICAgdGhpcy5zdGF0ZS5zZWxlY3Rpb25JbmRleCA9PT0gbnVsbFxuICAgICAgICA/IGRlbHRhID09PSAxXG4gICAgICAgICAgPyAwXG4gICAgICAgICAgOiBkZWx0YVxuICAgICAgICA6IHRoaXMuc3RhdGUuc2VsZWN0aW9uSW5kZXggKyBkZWx0YTtcbiAgICBsZXQgbGVuZ3RoID0gdGhpcy5wcm9wcy5tYXhWaXNpYmxlXG4gICAgICA/IHRoaXMuc3RhdGUuc2VhcmNoUmVzdWx0cy5zbGljZSgwLCB0aGlzLnByb3BzLm1heFZpc2libGUpLmxlbmd0aFxuICAgICAgOiB0aGlzLnN0YXRlLnNlYXJjaFJlc3VsdHMubGVuZ3RoO1xuICAgIGlmICh0aGlzLl9oYXNDdXN0b21WYWx1ZSgpKSB7XG4gICAgICBsZW5ndGggKz0gMTtcbiAgICB9XG5cbiAgICBpZiAobmV3SW5kZXggPCAwKSB7XG4gICAgICBuZXdJbmRleCArPSBsZW5ndGg7XG4gICAgfSBlbHNlIGlmIChuZXdJbmRleCA+PSBsZW5ndGgpIHtcbiAgICAgIG5ld0luZGV4IC09IGxlbmd0aDtcbiAgICB9XG5cbiAgICB0aGlzLnNldFN0YXRlKHtzZWxlY3Rpb25JbmRleDogbmV3SW5kZXh9KTtcbiAgfTtcblxuICBuYXZEb3duID0gKCkgPT4ge1xuICAgIHRoaXMuX25hdigxKTtcbiAgfTtcblxuICBuYXZVcCA9ICgpID0+IHtcbiAgICB0aGlzLl9uYXYoLTEpO1xuICB9O1xuXG4gIF9vbkNoYW5nZSA9IGV2ZW50ID0+IHtcbiAgICBpZiAodGhpcy5wcm9wcy5vbkNoYW5nZSkge1xuICAgICAgdGhpcy5wcm9wcy5vbkNoYW5nZShldmVudCk7XG4gICAgfVxuXG4gICAgdGhpcy5fb25UZXh0RW50cnlVcGRhdGVkKCk7XG4gIH07XG5cbiAgX29uS2V5RG93biA9IGV2ZW50ID0+IHtcbiAgICAvLyBJZiB0aGVyZSBhcmUgbm8gdmlzaWJsZSBlbGVtZW50cywgZG9uJ3QgcGVyZm9ybSBzZWxlY3RvciBuYXZpZ2F0aW9uLlxuICAgIC8vIEp1c3QgcGFzcyB0aGlzIHVwIHRvIHRoZSB1cHN0cmVhbSBvbktleWRvd24gaGFuZGxlci5cbiAgICAvLyBBbHNvIHNraXAgaWYgdGhlIHVzZXIgaXMgcHJlc3NpbmcgdGhlIHNoaWZ0IGtleSwgc2luY2Ugbm9uZSBvZiBvdXIgaGFuZGxlcnMgYXJlIGxvb2tpbmcgZm9yIHNoaWZ0XG4gICAgaWYgKCF0aGlzLl9oYXNIaW50KCkgfHwgZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLm9uS2V5RG93bihldmVudCk7XG4gICAgfVxuXG4gICAgY29uc3QgaGFuZGxlciA9IHRoaXMuZXZlbnRNYXAoKVtldmVudC5rZXlDb2RlXTtcblxuICAgIGlmIChoYW5kbGVyKSB7XG4gICAgICBoYW5kbGVyKGV2ZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMub25LZXlEb3duKGV2ZW50KTtcbiAgICB9XG4gICAgLy8gRG9uJ3QgcHJvcGFnYXRlIHRoZSBrZXlzdHJva2UgYmFjayB0byB0aGUgRE9NL2Jyb3dzZXJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9O1xuXG4gIF9vbkZvY3VzID0gZXZlbnQgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoe2lzRm9jdXNlZDogdHJ1ZX0pO1xuICAgIGlmICh0aGlzLnByb3BzLm9uRm9jdXMpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLm9uRm9jdXMoZXZlbnQpO1xuICAgIH1cbiAgfTtcblxuICBfb25CbHVyID0gZXZlbnQgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoe2lzRm9jdXNlZDogZmFsc2V9KTtcbiAgICBpZiAodGhpcy5wcm9wcy5vbkJsdXIpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLm9uQmx1cihldmVudCk7XG4gICAgfVxuICB9O1xuXG4gIF9yZW5kZXJIaWRkZW5JbnB1dCgpIHtcbiAgICBpZiAoIXRoaXMucHJvcHMubmFtZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT17dGhpcy5wcm9wcy5uYW1lfSB2YWx1ZT17dGhpcy5zdGF0ZS5zZWxlY3Rpb259IC8+O1xuICB9XG5cbiAgX2hhc0hpbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuc2VhcmNoUmVzdWx0cy5sZW5ndGggPiAwIHx8IHRoaXMuX2hhc0N1c3RvbVZhbHVlKCk7XG4gIH1cblxuICBfaGFzRml4ZWRPcHRpb25zKCkge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHRoaXMucHJvcHMuZml4ZWRPcHRpb25zKSAmJiB0aGlzLnByb3BzLmZpeGVkT3B0aW9ucy5sZW5ndGg7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgaW5wdXRDbGFzc2VzID0ge307XG4gICAgaW5wdXRDbGFzc2VzW3RoaXMucHJvcHMuY3VzdG9tQ2xhc3Nlcy5pbnB1dF0gPSBCb29sZWFuKHRoaXMucHJvcHMuY3VzdG9tQ2xhc3Nlcy5pbnB1dCk7XG4gICAgY29uc3QgaW5wdXRDbGFzc0xpc3QgPSBjbGFzc05hbWVzKGlucHV0Q2xhc3Nlcyk7XG5cbiAgICBjb25zdCBjbGFzc2VzID0ge1xuICAgICAgW0RFRkFVTFRfQ0xBU1NdOiB0aGlzLnByb3BzLmRlZmF1bHRDbGFzc05hbWVzXG4gICAgfTtcbiAgICBjbGFzc2VzW3RoaXMucHJvcHMuY2xhc3NOYW1lXSA9IEJvb2xlYW4odGhpcy5wcm9wcy5jbGFzc05hbWUpO1xuICAgIGNvbnN0IGNsYXNzTGlzdCA9IGNsYXNzTmFtZXMoY2xhc3Nlcyk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFR5cGVhaGVhZFdyYXBwZXJcbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc0xpc3R9XG4gICAgICAgIHJlZj17dGhpcy5yb290fVxuICAgICAgICB0YWJJbmRleD1cIjBcIlxuICAgICAgICBvbktleURvd249e3RoaXMuX29uS2V5RG93bn1cbiAgICAgICAgb25LZXlQcmVzcz17dGhpcy5wcm9wcy5vbktleVByZXNzfVxuICAgICAgICBvbktleVVwPXt0aGlzLnByb3BzLm9uS2V5VXB9XG4gICAgICAgIG9uRm9jdXM9e3RoaXMuX29uRm9jdXN9XG4gICAgICAgIGxpZ2h0PXt0aGlzLnByb3BzLmxpZ2h0fVxuICAgICAgPlxuICAgICAgICB7dGhpcy5fcmVuZGVySGlkZGVuSW5wdXQoKX1cbiAgICAgICAge3RoaXMucHJvcHMuc2VhcmNoYWJsZSA/IChcbiAgICAgICAgICA8SW5wdXRCb3g+XG4gICAgICAgICAgICA8SW5wdXRJY29uPlxuICAgICAgICAgICAgICA8dGhpcy5wcm9wcy5pbnB1dEljb24gaGVpZ2h0PVwiMThweFwiIC8+XG4gICAgICAgICAgICA8L0lucHV0SWNvbj5cbiAgICAgICAgICAgIDxUeXBlYWhlYWRJbnB1dFxuICAgICAgICAgICAgICByZWY9e3RoaXMuZW50cnl9XG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e3RoaXMucHJvcHMuZGlzYWJsZWR9XG4gICAgICAgICAgICAgIHsuLi50aGlzLnByb3BzLmlucHV0UHJvcHN9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXt0aGlzLnByb3BzLnBsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2lucHV0Q2xhc3NMaXN0fVxuICAgICAgICAgICAgICB2YWx1ZT17dGhpcy5zdGF0ZS5lbnRyeVZhbHVlfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17dGhpcy5fb25DaGFuZ2V9XG4gICAgICAgICAgICAgIG9uQmx1cj17dGhpcy5fb25CbHVyfVxuICAgICAgICAgICAgICBsaWdodD17dGhpcy5wcm9wcy5saWdodH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JbnB1dEJveD5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIHt0aGlzLl9yZW5kZXJJbmNyZW1lbnRhbFNlYXJjaFJlc3VsdHMoKX1cbiAgICAgIDwvVHlwZWFoZWFkV3JhcHBlcj5cbiAgICApO1xuICB9XG59XG5cbnBvbHlmaWxsKFR5cGVhaGVhZCk7XG5cbmV4cG9ydCBkZWZhdWx0IFR5cGVhaGVhZDtcbiJdfQ==
|