@carto/kepler.gl 0.0.69-alpha.hackathon-3dtiles.4 → 0.0.69-alpha.hackathon-3dtiles.5
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.
|
@@ -112,7 +112,7 @@ var CustomTile3DLayer = /*#__PURE__*/function (_Tile3DLayer) {
|
|
|
112
112
|
var layer = _ref.layer,
|
|
113
113
|
viewport = _ref.viewport;
|
|
114
114
|
// Do not show tiles which are many layers too low in resolution (avoids artifacts)
|
|
115
|
-
var lodZoom =
|
|
115
|
+
var lodZoom = 22 - Math.log2(layer.props.tile.lodMetricValue);
|
|
116
116
|
return lodZoom > (viewport === null || viewport === void 0 ? void 0 : viewport.zoom);
|
|
117
117
|
}
|
|
118
118
|
}]);
|
|
@@ -831,4 +831,4 @@ function MapContainerFactory(MapPopover, MapControl, Editor) {
|
|
|
831
831
|
MapContainer.displayName = 'MapContainer';
|
|
832
832
|
return MapContainer;
|
|
833
833
|
}
|
|
834
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL21hcC1jb250YWluZXIuanMiXSwibmFtZXMiOlsiR09PR0xFX01BUFNfQVBJX0tFWSIsIkN1c3RvbVRpbGUzRExheWVyIiwibGF5ZXIiLCJ2aWV3cG9ydCIsImxvZFpvb20iLCJNYXRoIiwibG9nMiIsInByb3BzIiwidGlsZSIsImxvZE1ldHJpY1ZhbHVlIiwiem9vbSIsIlRpbGUzRExheWVyIiwiaCIsInRpbGVzM2QiLCJpZCIsImRhdGEiLCJvblRpbGVzZXRMb2FkIiwidGlsZXNldDNkIiwib3B0aW9ucyIsIm1heGltdW1TY3JlZW5TcGFjZUVycm9yIiwiX29uVGlsZUxvYWRFcnJvciIsIm9uVHJhdmVyc2FsQ29tcGxldGUiLCJzZWxlY3RlZFRpbGVzIiwibWluTG9kIiwiSW5maW5pdHkiLCJmaWx0ZXJlZCIsImZpbHRlciIsInQiLCJsZW5ndGgiLCJtYXAiLCJib3VuZGluZ0JveCIsInJlZHVjZSIsImEiLCJuIiwibG9hZE9wdGlvbnMiLCJmZXRjaCIsImhlYWRlcnMiLCJvcGVyYXRpb24iLCJ0ZXJyYWluRXh0ZW5zaW9uIiwiVGVycmFpbkV4dGVuc2lvbiIsImFtYmllbnRMaWdodCIsIkFtYmllbnRMaWdodCIsImNvbG9yIiwiaW50ZW5zaXR5Iiwic3VuTGlnaHQiLCJfU3VuTGlnaHQiLCJ0aW1lc3RhbXAiLCJfc2hhZG93IiwibGlnaHRpbmdFZmZlY3QiLCJMaWdodGluZ0VmZmVjdCIsInNoYWRvd0NvbG9yIiwiYnJpZ2h0bmVzc0NvbnRyYXN0RWZmZWN0IiwiUG9zdFByb2Nlc3NFZmZlY3QiLCJicmlnaHRuZXNzQ29udHJhc3QiLCJjb250cmFzdCIsImJyaWdodG5lc3MiLCJodWVTYXR1cmF0aW9uRWZmZWN0IiwiaHVlU2F0dXJhdGlvbiIsImh1ZSIsInNhdHVyYXRpb24iLCJ2aWJyYW5jZUVmZmVjdCIsInZpYnJhbmNlIiwiYW1vdW50IiwiaW5rRWZmZWN0IiwiaW5rIiwic3RyZW5ndGgiLCJhbGxFZmZlY3RzIiwidHJhY2tlcnMiLCJQRVJGX0RFQlVHIiwid2luZG93IiwibG9jYXRpb24iLCJzZWFyY2giLCJpbmNsdWRlcyIsImRyYXdDb3VudCIsInZpZXdwb3J0Q2hhbmdlQ291bnQiLCJMYXllciIsIlRpbGVMYXllciIsIk1BUF9TVFlMRSIsImNvbnRhaW5lciIsImRpc3BsYXkiLCJwb3NpdGlvbiIsIndpZHRoIiwiaGVpZ2h0IiwidG9wIiwicG9pbnRlckV2ZW50cyIsIk1BUEJPWEdMX1NUWUxFX1VQREFURSIsIk1BUEJPWEdMX1JFTkRFUiIsIlRSQU5TSVRJT05fRFVSQVRJT04iLCJBdHRyaWJ1dGlvbiIsIk1hcENvbnRhaW5lckZhY3RvcnkiLCJkZXBzIiwiTWFwUG9wb3ZlckZhY3RvcnkiLCJNYXBDb250cm9sRmFjdG9yeSIsIkVkaXRvckZhY3RvcnkiLCJNYXBQb3BvdmVyIiwiTWFwQ29udHJvbCIsIkVkaXRvciIsIk1hcENvbnRhaW5lciIsImRpbWVuc2lvbnMiLCJwcmltYXJ5IiwiaXNFeHBvcnQiLCJtYXBTdGF0ZUFjdGlvbnMiLCJ1cGRhdGVNYXAiLCJsYXllcnMiLCJsYXllckRhdGEiLCJtYXBMYXllcnMiLCJsYXllck9yZGVyIiwicG9wdXBTZXR0aW5ncyIsImxheWVyc1NlbGVjdG9yIiwibGF5ZXJEYXRhU2VsZWN0b3IiLCJtYXBMYXllcnNTZWxlY3RvciIsInBvcHVwU2V0dGluZ3NTZWxlY3RvciIsInByZXBhcmVMYXllcnNUb1JlbmRlciIsInByZXBhcmVMYXllcnNGb3JEZWNrIiwiZmlsdGVycyIsImZpbHRlcnNTZWxlY3RvciIsImYiLCJ0eXBlIiwiRklMVEVSX1RZUEVTIiwicG9seWdvbiIsImxheWVyT3JkZXJTZWxlY3RvciIsImxheWVyc1RvUmVuZGVyU2VsZWN0b3IiLCJnZW5lcmF0ZU1hcGJveExheWVycyIsInZpc1N0YXRlQWN0aW9ucyIsIm9uTGF5ZXJDbGljayIsImlkeCIsImNvbG9yRG9tYWluIiwibGF5ZXJDb25maWdDaGFuZ2UiLCJsYXllcklkIiwiaW5kZXgiLCJtYXBJbmRleCIsInRvZ2dsZUxheWVyRm9yTWFwIiwicHJldmlvdXNMYXllcnMiLCJfdXBkYXRlTWFwYm94TGF5ZXJzIiwib25NYXBTdHlsZUxvYWRlZCIsIl9tYXAiLCJtYXBib3giLCJnZXRNYXAiLCJvbiIsIl9vbk1hcGJveFN0eWxlVXBkYXRlIiwib25NYXBSZW5kZXIiLCJnZXRNYXBib3hSZWYiLCJnbCIsImxheWVyQmxlbmRpbmciLCJlcnJvciIsIm1lc3NhZ2UiLCJzZXRTdGF0ZSIsImNvbnRleHRMb3N0IiwiZXJyb3JNZXNzYWdlIiwibm90aWZpY2F0aW9uSWQiLCJfZGVja0dMRXJyb3JzRWxhcHNlZCIsImxhc3RTaG93biIsIkRhdGUiLCJub3ciLCJUSFJPVFRMRV9OT1RJRklDQVRJT05fVElNRSIsInVpU3RhdGVBY3Rpb25zIiwiYWRkTm90aWZpY2F0aW9uIiwidmlld1N0YXRlIiwiaW50ZXJhY3Rpb25TdGF0ZSIsImluY3JlbWVudCIsInJlc3RWaWV3U3RhdGUiLCJuZXh0IiwiaW5UcmFuc2l0aW9uIiwib25WaWV3U3RhdGVDaGFuZ2UiLCJwYW5lbElkIiwidG9nZ2xlTWFwQ29udHJvbCIsIl9kZWNrIiwiX3JlZiIsIl9oYXNSZW5kZXJlZCIsIl9tb3VzZVBvc2l0aW9uIiwiY3VycmVudCIsIl9oYW5kbGVSZXNpemUiLCJzdGF0ZSIsIm9mZiIsIm9uRGVja0luaXRpYWxpemVkIiwibGF5ZXJzVG9SZW5kZXIiLCJsbmdMYXQiLCJzY3JlZW5Db29yZCIsInByb2plY3QiLCJ4IiwieSIsImxheWVyc0ZvckRlY2siLCJtYXBTdGF0ZSIsIm1hcFN0eWxlIiwibWFwYm94QXBpQWNjZXNzVG9rZW4iLCJtYXBib3hBcGlVcmwiLCJtYXNrUG9seWdvbiIsImRlY2tHbExheWVycyIsImRlY2tHbFByb3BzIiwiZGF0YUxheWVycyIsInNsaWNlIiwicmV2ZXJzZSIsIm92ZXJsYXlzIiwibGF5ZXJDYWxsYmFja3MiLCJvblNldExheWVyRG9tYWluIiwidmFsIiwiX29uTGF5ZXJTZXREb21haW4iLCJsYXllck92ZXJsYXkiLCJjb25jYXQiLCJsYXllcnNPblRvcCIsInB1c2giLCJTb2xpZFBvbHlnb25MYXllciIsIk1BU0tfTEFZRVJfSUQiLCJPUEVSQVRJT04iLCJNQVNLIiwiZGF0YUNvbXBhcmF0b3IiLCJvbGREYXRhIiwiZ2V0UG9seWdvbiIsImQiLCJnZXRGaWxsQ29sb3IiLCJ2aXNpYmxlTGF5ZXJHcm91cHMiLCJUaHJlZURCdWlsZGluZ0xheWVyIiwidGhyZWVEQnVpbGRpbmdDb2xvciIsInVwZGF0ZVRyaWdnZXJzIiwiZWZmZWN0cyIsImJvdHRvbU1hcFN0eWxlIiwibCIsIkJvb2xlYW4iLCJjbG9uZSIsImV4dGVuc2lvbnMiLCJzdHlsZVR5cGUiLCJoYXNSZW5kZXJlZCIsInJlc2V0SGFzUmVuZGVyZWQiLCJfb25WaWV3cG9ydENoYW5nZSIsIm9wdHMiLCJfb25CZWZvcmVSZW5kZXIiLCJvbkxheWVySG92ZXIiLCJlIiwiX29uRGVja0Vycm9yIiwiY29tcCIsImRlY2siLCJfb25EZWNrSW5pdGlhbGl6ZWQiLCJpc05hTiIsInZpc2liaWxpdHlCeVpvb20iLCJtaW4iLCJtYXgiLCJjdXJyZW50Wm9vbVJhbmdlIiwicm91bmQiLCJtYXBib3hMYXllcnMiLCJtYXBib3hMYXllcnNTZWxlY3RvciIsIk9iamVjdCIsImtleXMiLCJpc1N0eWxlTG9hZGVkIiwiTWFwQ29tcG9uZW50IiwiZGF0YXNldHMiLCJtYXBDb250cm9scyIsImxvY2FsZSIsImludGVyYWN0aW9uQ29uZmlnIiwiZWRpdG9yIiwibGF5ZXJzRm9yRGVja1NlbGVjdG9yIiwibWFwUHJvcHMiLCJwcmVzZXJ2ZURyYXdpbmdCdWZmZXIiLCJ0cmFuc2Zvcm1SZXF1ZXN0IiwiaXNFZGl0IiwibWFwRHJhdyIsImFjdGl2ZSIsImhhc0dlb2NvZGVyTGF5ZXIiLCJmaW5kIiwiR0VPQ09ERVJfTEFZRVJfSUQiLCJpc1NwbGl0IiwibW91c2VQb3NpdGlvbiIsIm5lZWRzQmFzZW1hcCIsIkxPQ0FMRV9DT0RFUyIsImRyYWdSb3RhdGUiLCJyZWFkT25seSIsInNjYWxlIiwiZ2VvY29kZXIiLCJlbmFibGVkIiwidG9nZ2xlUGVyc3BlY3RpdmUiLCJ0b2dnbGVTcGxpdE1hcCIsIl9oYW5kbGVNYXBUb2dnbGVMYXllciIsIl90b2dnbGVNYXBDb250cm9sIiwic2V0RWRpdG9yTW9kZSIsInNldExvY2FsZSIsInRvZ2dsZUVkaXRvclZpc2liaWxpdHkiLCJfc2V0TWFwYm94TWFwIiwiaG92ZXJJbmZvIiwidW5kZWZpbmVkIiwiZXZ0IiwicG9pbnQiLCJfcmVuZGVyRGVja092ZXJsYXkiLCJfcmVuZGVyTWFwYm94T3ZlcmxheXMiLCJwb2x5Z29uRmlsdGVycyIsImRlbGV0ZUZlYXR1cmUiLCJzZXRTZWxlY3RlZEZlYXR1cmUiLCJzZXRGZWF0dXJlcyIsInNldFBvbHlnb25GaWx0ZXJMYXllciIsInZpc2libGUiLCJ0b3BNYXBTdHlsZSIsIl9yZW5kZXJNYXBQb3BvdmVyIiwiZ2xvYmUiLCJfcmVuZGVyTWFwIiwiQ29tcG9uZW50IiwiUHJvcFR5cGVzIiwib2JqZWN0IiwiaXNSZXF1aXJlZCIsInN0cmluZyIsImFycmF5T2YiLCJhbnkiLCJib29sIiwiY2xpY2tlZCIsIm9uTWFwVG9nZ2xlTGF5ZXIiLCJmdW5jIiwibnVtYmVyIiwiTWFwYm94R0xNYXAiLCJkaXNwbGF5TmFtZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFxQkE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBUUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBT0E7O0FBQ0E7O0FBR0E7O0FBNkVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUExRUEsSUFBTUEsbUJBQW1CLEdBQUcseUNBQTVCOztJQUVNQyxpQjs7Ozs7Ozs7Ozs7O1dBQ0osOEJBQWtDO0FBQUEsVUFBbEJDLEtBQWtCLFFBQWxCQSxLQUFrQjtBQUFBLFVBQVhDLFFBQVcsUUFBWEEsUUFBVztB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QUFBQSxhQUFhLEVBQUUwTCxzQkFBVUM7QUE5QlIsR0FGcUQ7QUFBQSxtQ0FDcEVyTSxZQURvRSxrQkFtQ2xEO0FBQ3BCa0osSUFBQUEsWUFBWSxFQUFFNkQsc0JBRE07QUFFcEJwSCxJQUFBQSxXQUFXLEVBQUUsRUFGTztBQUdwQjNELElBQUFBLEtBQUssRUFBRSxDQUhhO0FBSXBCOUIsSUFBQUEsT0FBTyxFQUFFO0FBSlcsR0FuQ2tEO0FBNGhCMUVGLEVBQUFBLFlBQVksQ0FBQ2dOLFdBQWIsR0FBMkIsY0FBM0I7QUFFQSxTQUFPaE4sWUFBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuLy8gbGlicmFyaWVzXG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnQsIGNyZWF0ZVJlZn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBNYXBib3hHTE1hcCBmcm9tICdyZWFjdC1tYXAtZ2wnO1xuaW1wb3J0IERlY2tHTCBmcm9tICdAZGVjay5nbC9yZWFjdCc7XG5pbXBvcnQge2NyZWF0ZVNlbGVjdG9yfSBmcm9tICdyZXNlbGVjdCc7XG5pbXBvcnQge1xuICBPUEVSQVRJT04sXG4gIExheWVyLFxuICBBbWJpZW50TGlnaHQsXG4gIExpZ2h0aW5nRWZmZWN0LFxuICBQb3N0UHJvY2Vzc0VmZmVjdCxcbiAgX1N1bkxpZ2h0XG59IGZyb20gJ0BkZWNrLmdsL2NvcmUnO1xuaW1wb3J0IHticmlnaHRuZXNzQ29udHJhc3QsIGh1ZVNhdHVyYXRpb24sIGluaywgdmlicmFuY2V9IGZyb20gJ0BsdW1hLmdsL3NoYWRlcnRvb2xzJztcbmltcG9ydCB7U29saWRQb2x5Z29uTGF5ZXJ9IGZyb20gJ0BkZWNrLmdsL2xheWVycyc7XG5pbXBvcnQge1RpbGVMYXllcn0gZnJvbSAnQGRlY2suZ2wvZ2VvLWxheWVycyc7XG5pbXBvcnQge2Vycm9yTm90aWZpY2F0aW9ufSBmcm9tICd1dGlscy9ub3RpZmljYXRpb25zLXV0aWxzJztcblxuLy8gY29tcG9uZW50c1xuaW1wb3J0IE1hcFBvcG92ZXJGYWN0b3J5IGZyb20gJ2NvbXBvbmVudHMvbWFwL21hcC1wb3BvdmVyJztcbmltcG9ydCBNYXBDb250cm9sRmFjdG9yeSBmcm9tICdjb21wb25lbnRzL21hcC9tYXAtY29udHJvbCc7XG5pbXBvcnQge1N0eWxlZE1hcENvbnRhaW5lciwgU3R5bGVkQXR0cmJ1dGlvbn0gZnJvbSAnY29tcG9uZW50cy9jb21tb24vc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQgRWRpdG9yRmFjdG9yeSBmcm9tICcuL2VkaXRvci9lZGl0b3InO1xuXG4vLyB1dGlsc1xuaW1wb3J0IHtnZW5lcmF0ZU1hcGJveExheWVycywgdXBkYXRlTWFwYm94TGF5ZXJzfSBmcm9tICdsYXllcnMvbWFwYm94LXV0aWxzJztcbmltcG9ydCB7c2V0TGF5ZXJCbGVuZGluZ30gZnJvbSAndXRpbHMvZ2wtdXRpbHMnO1xuaW1wb3J0IHt0cmFuc2Zvcm1SZXF1ZXN0fSBmcm9tICd1dGlscy9tYXAtc3R5bGUtdXRpbHMvbWFwYm94LXV0aWxzJztcbmltcG9ydCB7cmVuZGVyRGVja0dsTGF5ZXIsIHByZXBhcmVMYXllcnNUb1JlbmRlciwgcHJlcGFyZUxheWVyc0ZvckRlY2t9IGZyb20gJ3V0aWxzL2xheWVyLXV0aWxzJztcblxuLy8gZGVmYXVsdC1zZXR0aW5nc1xuaW1wb3J0IFRocmVlREJ1aWxkaW5nTGF5ZXIgZnJvbSAnZGVja2dsLWxheWVycy8zZC1idWlsZGluZy1sYXllci8zZC1idWlsZGluZy1sYXllcic7XG5pbXBvcnQge1xuICBGSUxURVJfVFlQRVMsXG4gIEdFT0NPREVSX0xBWUVSX0lELFxuICBNQVNLX0xBWUVSX0lELFxuICBUSFJPVFRMRV9OT1RJRklDQVRJT05fVElNRVxufSBmcm9tICdjb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncyc7XG5cbmltcG9ydCB7b2JzZXJ2ZURpbWVuc2lvbnMsIHVub2JzZXJ2ZURpbWVuc2lvbnN9IGZyb20gJy4uL3V0aWxzL29ic2VydmUtZGltZW5zaW9ucyc7XG5pbXBvcnQge0xPQ0FMRV9DT0RFU30gZnJvbSAnbG9jYWxpemF0aW9uL2xvY2FsZXMnO1xuXG4vLyAzRCB0aWxlc1xuaW1wb3J0IHtfVGVycmFpbkV4dGVuc2lvbiBhcyBUZXJyYWluRXh0ZW5zaW9ufSBmcm9tICdAZGVjay5nbC9leHRlbnNpb25zJztcbmltcG9ydCB7VGlsZTNETGF5ZXJ9IGZyb20gJ0BkZWNrLmdsL2dlby1sYXllcnMnO1xuXG5jb25zdCBHT09HTEVfTUFQU19BUElfS0VZID0gJ0FJemFTeUNwdlF5bWM1d2pTWUlzeHkzUlYxd2lkTTNwM2g3OENBayc7XG5cbmNsYXNzIEN1c3RvbVRpbGUzRExheWVyIGV4dGVuZHMgVGlsZTNETGF5ZXIge1xuICBmaWx0ZXJTdWJMYXllcih7bGF5ZXIsIHZpZXdwb3J0fSkge1xuICAgIC8vIERvIG5vdCBzaG93IHRpbGVzIHdoaWNoIGFyZSBtYW55IGxheWVycyB0b28gbG93IGluIHJlc29sdXRpb24gKGF2b2lkcyBhcnRpZmFjdHMpXG4gICAgY29uc3QgbG9kWm9vbSA9IDI0IC0gTWF0aC5sb2cyKGxheWVyLnByb3BzLnRpbGUubG9kTWV0cmljVmFsdWUpO1xuICAgIHJldHVybiBsb2Rab29tID4gdmlld3BvcnQ/Lnpvb207XG4gIH1cbn1cblxubGV0IGggPSAwO1xuY29uc3QgdGlsZXMzZCA9IG5ldyBDdXN0b21UaWxlM0RMYXllcih7XG4gIGlkOiAnZ29vZ2xlLTNkLXRpbGVzJyxcbiAgZGF0YTogJ2h0dHBzOi8vdGlsZS5nb29nbGVhcGlzLmNvbS92MS8zZHRpbGVzL3Jvb3QuanNvbicsXG4gIG9uVGlsZXNldExvYWQ6IHRpbGVzZXQzZCA9PiB7XG4gICAgdGlsZXNldDNkLm9wdGlvbnMubWF4aW11bVNjcmVlblNwYWNlRXJyb3IgPSA1O1xuICAgIHRpbGVzZXQzZC5fb25UaWxlTG9hZEVycm9yID0gKCkgPT4ge307XG4gICAgdGlsZXNldDNkLm9wdGlvbnMub25UcmF2ZXJzYWxDb21wbGV0ZSA9IHNlbGVjdGVkVGlsZXMgPT4ge1xuICAgICAgbGV0IG1pbkxvZCA9IEluZmluaXR5O1xuICAgICAgZm9yIChjb25zdCB7bG9kTWV0cmljVmFsdWV9IG9mIHNlbGVjdGVkVGlsZXMpIHtcbiAgICAgICAgaWYgKGxvZE1ldHJpY1ZhbHVlIDwgbWluTG9kKSBtaW5Mb2QgPSBsb2RNZXRyaWNWYWx1ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGZpbHRlcmVkID0gc2VsZWN0ZWRUaWxlcy5maWx0ZXIodCA9PiB0LmxvZE1ldHJpY1ZhbHVlIDwgNCAqIG1pbkxvZCk7XG5cbiAgICAgIC8vIEhhY2t5IHdheSB0byBvYnRhaW4gaGVpZ2h0IGFib3ZlIHNlYSBsZXZlbCB0byBpbXByb3ZlIGNvbnRyb2xzXG4gICAgICBpZiAoZmlsdGVyZWQubGVuZ3RoKSB7XG4gICAgICAgIGggPSBmaWx0ZXJlZC5tYXAodCA9PiB0LmJvdW5kaW5nQm94WzBdWzJdKS5yZWR1Y2UoKGEsIG4pID0+IGEgKyBuKSAvIGZpbHRlcmVkLmxlbmd0aDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHNlbGVjdGVkVGlsZXM7XG4gICAgfTtcbiAgfSxcbiAgbG9hZE9wdGlvbnM6IHtcbiAgICBmZXRjaDoge2hlYWRlcnM6IHsnWC1HT09HLUFQSS1LRVknOiBHT09HTEVfTUFQU19BUElfS0VZfX1cbiAgfSxcbiAgLy8gQHRzLWlnbm9yZVxuICBvcGVyYXRpb246ICd0ZXJyYWluK2RyYXcnIC8vIFJlcXVpcmVkIHRvIGVuYWJsZSBkcmFwaW5nIG9mIG90aGVyIGxheWVyc1xufSk7XG5jb25zdCB0ZXJyYWluRXh0ZW5zaW9uID0gbmV3IFRlcnJhaW5FeHRlbnNpb24oKTtcblxuLy8gRWZmZWN0c1xuY29uc3QgYW1iaWVudExpZ2h0ID0gbmV3IEFtYmllbnRMaWdodCh7Y29sb3I6IFsyNTUsIDI1NSwgMjU1XSwgaW50ZW5zaXR5OiAxfSk7XG5jb25zdCBzdW5MaWdodCA9IG5ldyBfU3VuTGlnaHQoe1xuICB0aW1lc3RhbXA6IDE2ODM4Njk5MTU3NzcsXG4gIGNvbG9yOiBbMjU1LCAyNTUsIDI1NV0sXG4gIGludGVuc2l0eTogMSxcbiAgX3NoYWRvdzogdHJ1ZVxufSk7XG5jb25zdCBsaWdodGluZ0VmZmVjdCA9IG5ldyBMaWdodGluZ0VmZmVjdCh7XG4gIGFtYmllbnRMaWdodCxcbiAgc3VuTGlnaHRcbn0pO1xubGlnaHRpbmdFZmZlY3Quc2hhZG93Q29sb3IgPSBbMCwgMCwgMCwgMF07XG5cbmNvbnN0IGJyaWdodG5lc3NDb250cmFzdEVmZmVjdCA9IG5ldyBQb3N0UHJvY2Vzc0VmZmVjdChicmlnaHRuZXNzQ29udHJhc3QsIHtcbiAgY29udHJhc3Q6IDAsXG4gIGJyaWdodG5lc3M6IDAuMlxufSk7XG5cbmNvbnN0IGh1ZVNhdHVyYXRpb25FZmZlY3QgPSBuZXcgUG9zdFByb2Nlc3NFZmZlY3QoaHVlU2F0dXJhdGlvbiwge2h1ZTogMCwgc2F0dXJhdGlvbjogMC4zfSk7XG5cbmNvbnN0IHZpYnJhbmNlRWZmZWN0ID0gbmV3IFBvc3RQcm9jZXNzRWZmZWN0KHZpYnJhbmNlLCB7YW1vdW50OiAxfSk7XG5cbmNvbnN0IGlua0VmZmVjdCA9IG5ldyBQb3N0UHJvY2Vzc0VmZmVjdChpbmssIHtzdHJlbmd0aDogMC4zfSk7XG5cbmNvbnN0IGFsbEVmZmVjdHMgPSBbXG4gIGxpZ2h0aW5nRWZmZWN0LFxuICBodWVTYXR1cmF0aW9uRWZmZWN0LFxuICBicmlnaHRuZXNzQ29udHJhc3RFZmZlY3QsXG4gIHZpYnJhbmNlRWZmZWN0LFxuICBpbmtFZmZlY3Rcbl07XG5cbi8vIFBlcmZvcm1hbmNlIGRlYnVnZ2luZ1xuaW1wb3J0IHtjcmVhdGVUcmFja2VyLCBjcmVhdGVMYXllclVwZGF0ZVRyYWNrZXIsIHJlbmRlclBlcmZvcm1hbmNlU3RhdHN9IGZyb20gJy4vcGVyZm9ybWFuY2UnO1xuY29uc3QgdHJhY2tlcnMgPSB7fTtcbmNvbnN0IFBFUkZfREVCVUcgPSB3aW5kb3c/LmxvY2F0aW9uPy5zZWFyY2g/LmluY2x1ZGVzKCdQRVJGX0RFQlVHJyk7XG5pZiAoUEVSRl9ERUJVRykge1xuICB0cmFja2Vycy5kcmF3Q291bnQgPSBjcmVhdGVUcmFja2VyKCdkcmF3cycpO1xuICB0cmFja2Vycy52aWV3cG9ydENoYW5nZUNvdW50ID0gY3JlYXRlVHJhY2tlcigndmlld3BvcnQgY2hhbmdlcycpO1xuICBjcmVhdGVMYXllclVwZGF0ZVRyYWNrZXIoJ3N0YXRlIHVwZGF0ZXMnLCBbTGF5ZXIsIFRpbGVMYXllcl0pO1xufVxuXG4vKiogQHR5cGUge3tba2V5OiBzdHJpbmddOiBSZWFjdC5DU1NQcm9wZXJ0aWVzfX0gKi9cbmNvbnN0IE1BUF9TVFlMRSA9IHtcbiAgY29udGFpbmVyOiB7XG4gICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICBoZWlnaHQ6ICcxMDAlJ1xuICB9LFxuICB0b3A6IHtcbiAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICB0b3A6ICcwcHgnLFxuICAgIHBvaW50ZXJFdmVudHM6ICdub25lJyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIGhlaWdodDogJzEwMCUnXG4gIH1cbn07XG5cbmNvbnN0IE1BUEJPWEdMX1NUWUxFX1VQREFURSA9ICdzdHlsZS5sb2FkJztcbmNvbnN0IE1BUEJPWEdMX1JFTkRFUiA9ICdyZW5kZXInO1xuY29uc3QgVFJBTlNJVElPTl9EVVJBVElPTiA9IDA7XG5cbmV4cG9ydCBjb25zdCBBdHRyaWJ1dGlvbiA9ICgpID0+IChcbiAgPFN0eWxlZEF0dHJidXRpb24+XG4gICAgPGRpdiBjbGFzc05hbWU9XCJhdHRyaXRpb24tbG9nb1wiPlxuICAgICAgQmFzZW1hcCBieTpcbiAgICAgIDxhXG4gICAgICAgIGNsYXNzTmFtZT1cIm1hcGJveGdsLWN0cmwtbG9nb1wiXG4gICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICBocmVmPVwiaHR0cHM6Ly93d3cubWFwYm94LmNvbS9cIlxuICAgICAgICBhcmlhLWxhYmVsPVwiTWFwYm94IGxvZ29cIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzTmFtZT1cImF0dHJpdGlvbi1saW5rXCI+XG4gICAgICA8YSBocmVmPVwiaHR0cHM6Ly9rZXBsZXIuZ2wvcG9saWN5L1wiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj5cbiAgICAgICAgwqkga2VwbGVyLmdsIHx7JyAnfVxuICAgICAgPC9hPlxuICAgICAgPGEgaHJlZj1cImh0dHBzOi8vd3d3Lm1hcGJveC5jb20vYWJvdXQvbWFwcy9cIiB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+XG4gICAgICAgIMKpIE1hcGJveCB8eycgJ31cbiAgICAgIDwvYT5cbiAgICAgIDxhIGhyZWY9XCJodHRwOi8vd3d3Lm9wZW5zdHJlZXRtYXAub3JnL2NvcHlyaWdodFwiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj5cbiAgICAgICAgwqkgT3BlblN0cmVldE1hcCB8eycgJ31cbiAgICAgIDwvYT5cbiAgICAgIDxhIGhyZWY9XCJodHRwczovL3d3dy5tYXBib3guY29tL21hcC1mZWVkYmFjay9cIiB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+XG4gICAgICAgIDxzdHJvbmc+SW1wcm92ZSB0aGlzIG1hcDwvc3Ryb25nPlxuICAgICAgPC9hPlxuICAgIDwvZGl2PlxuICA8L1N0eWxlZEF0dHJidXRpb24+XG4pO1xuXG5NYXBDb250YWluZXJGYWN0b3J5LmRlcHMgPSBbTWFwUG9wb3ZlckZhY3RvcnksIE1hcENvbnRyb2xGYWN0b3J5LCBFZGl0b3JGYWN0b3J5XTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTWFwQ29udGFpbmVyRmFjdG9yeShNYXBQb3BvdmVyLCBNYXBDb250cm9sLCBFZGl0b3IpIHtcbiAgY2xhc3MgTWFwQ29udGFpbmVyIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgICAgLy8gcmVxdWlyZWRcbiAgICAgIGRhdGFzZXRzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgICAgaW50ZXJhY3Rpb25Db25maWc6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICAgIGxheWVyQmxlbmRpbmc6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAgIGxheWVyT3JkZXI6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5hbnkpLmlzUmVxdWlyZWQsXG4gICAgICBsYXllckRhdGE6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5hbnkpLmlzUmVxdWlyZWQsXG4gICAgICBsYXllcnM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5hbnkpLmlzUmVxdWlyZWQsXG4gICAgICBmaWx0ZXJzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuYW55KS5pc1JlcXVpcmVkLFxuICAgICAgbWFwU3RhdGU6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICAgIG1hcENvbnRyb2xzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgICBtYXBTdHlsZTogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW46IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAgIG1hcGJveEFwaVVybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgIHZpc1N0YXRlQWN0aW9uczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgICAgbWFwU3RhdGVBY3Rpb25zOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgICB1aVN0YXRlQWN0aW9uczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuXG4gICAgICAvLyBvcHRpb25hbFxuICAgICAgcHJpbWFyeTogUHJvcFR5cGVzLmJvb2wsIC8vIHByaW1hcnkgb25lIHdpbGwgYmUgcmVwb3J0aW5nIGl0cyBzaXplIHRvIGFwcFN0YXRlXG4gICAgICByZWFkT25seTogUHJvcFR5cGVzLmJvb2wsXG4gICAgICBpc0V4cG9ydDogUHJvcFR5cGVzLmJvb2wsXG4gICAgICBjbGlja2VkOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgICAgaG92ZXJJbmZvOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgICAgbWFwTGF5ZXJzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgICAgb25NYXBUb2dnbGVMYXllcjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICBvbk1hcFN0eWxlTG9hZGVkOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgIG9uTWFwUmVuZGVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgIGdldE1hcGJveFJlZjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICBpbmRleDogUHJvcFR5cGVzLm51bWJlcixcbiAgICAgIHBvcHVwU2V0dGluZ3M6IFByb3BUeXBlcy5vYmplY3RcbiAgICB9O1xuXG4gICAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICAgIE1hcENvbXBvbmVudDogTWFwYm94R0xNYXAsXG4gICAgICBkZWNrR2xQcm9wczoge30sXG4gICAgICBpbmRleDogMCxcbiAgICAgIHByaW1hcnk6IHRydWVcbiAgICB9O1xuXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICAgIHN1cGVyKHByb3BzKTtcblxuICAgICAgdGhpcy5wcmV2aW91c0xheWVycyA9IHtcbiAgICAgICAgLy8gW2xheWVycy5pZF06IG1hcGJveExheWVyQ29uZmlnXG4gICAgICB9O1xuXG4gICAgICB0aGlzLl9kZWNrID0gbnVsbDtcbiAgICAgIHRoaXMuX3JlZiA9IGNyZWF0ZVJlZigpO1xuXG4gICAgICAvLyBSZW5kZXIgbGltaXRpbmcgbWVjaGFuaXNtXG4gICAgICB0aGlzLl9oYXNSZW5kZXJlZCA9IGNyZWF0ZVJlZigpO1xuICAgICAgdGhpcy5fbW91c2VQb3NpdGlvbiA9IGNyZWF0ZVJlZigpO1xuICAgIH1cblxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgb2JzZXJ2ZURpbWVuc2lvbnModGhpcy5fcmVmLmN1cnJlbnQsIHRoaXMuX2hhbmRsZVJlc2l6ZSk7XG4gICAgfVxuXG4gICAgY29tcG9uZW50RGlkVXBkYXRlKCkge1xuICAgICAgY29uc3QgY29udGV4dExvc3QgPSB0aGlzLnN0YXRlPy5jb250ZXh0TG9zdDtcblxuICAgICAgaWYgKGNvbnRleHRMb3N0KSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby1kaWQtdXBkYXRlLXNldC1zdGF0ZVxuICAgICAgICB0aGlzLnNldFN0YXRlKHtjb250ZXh0TG9zdDogZmFsc2V9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgIC8vIHVuYmluZCBtYXBib3hnbCBldmVudCBsaXN0ZW5lclxuICAgICAgaWYgKHRoaXMuX21hcCkge1xuICAgICAgICB0aGlzLl9tYXAub2ZmKE1BUEJPWEdMX1NUWUxFX1VQREFURSk7XG4gICAgICAgIHRoaXMuX21hcC5vZmYoTUFQQk9YR0xfUkVOREVSKTtcbiAgICAgIH1cbiAgICAgIHVub2JzZXJ2ZURpbWVuc2lvbnModGhpcy5fcmVmLmN1cnJlbnQpO1xuICAgIH1cblxuICAgIF9oYW5kbGVSZXNpemUgPSBkaW1lbnNpb25zID0+IHtcbiAgICAgIGNvbnN0IHtwcmltYXJ5LCBpc0V4cG9ydH0gPSB0aGlzLnByb3BzO1xuICAgICAgaWYgKHByaW1hcnkpIHtcbiAgICAgICAgY29uc3Qge21hcFN0YXRlQWN0aW9uc30gPSB0aGlzLnByb3BzO1xuICAgICAgICBpZiAoIWlzRXhwb3J0ICYmIGRpbWVuc2lvbnMgJiYgZGltZW5zaW9ucy53aWR0aCA+IDAgJiYgZGltZW5zaW9ucy5oZWlnaHQgPiAwKSB7XG4gICAgICAgICAgbWFwU3RhdGVBY3Rpb25zLnVwZGF0ZU1hcChkaW1lbnNpb25zKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBsYXllcnNTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLmxheWVycztcbiAgICBsYXllckRhdGFTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLmxheWVyRGF0YTtcbiAgICBtYXBMYXllcnNTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLm1hcExheWVycztcbiAgICBsYXllck9yZGVyU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy5sYXllck9yZGVyO1xuICAgIHBvcHVwU2V0dGluZ3NTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLnBvcHVwU2V0dGluZ3M7XG5cbiAgICBsYXllcnNUb1JlbmRlclNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICB0aGlzLmxheWVyc1NlbGVjdG9yLFxuICAgICAgdGhpcy5sYXllckRhdGFTZWxlY3RvcixcbiAgICAgIHRoaXMubWFwTGF5ZXJzU2VsZWN0b3IsXG4gICAgICB0aGlzLnBvcHVwU2V0dGluZ3NTZWxlY3RvcixcbiAgICAgIHByZXBhcmVMYXllcnNUb1JlbmRlclxuICAgICk7XG4gICAgbGF5ZXJzRm9yRGVja1NlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICB0aGlzLmxheWVyc1NlbGVjdG9yLFxuICAgICAgdGhpcy5sYXllckRhdGFTZWxlY3RvcixcbiAgICAgIHByZXBhcmVMYXllcnNGb3JEZWNrXG4gICAgKTtcbiAgICBmaWx0ZXJzU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy5maWx0ZXJzO1xuICAgIHBvbHlnb25GaWx0ZXJzID0gY3JlYXRlU2VsZWN0b3IodGhpcy5maWx0ZXJzU2VsZWN0b3IsIGZpbHRlcnMgPT5cbiAgICAgIGZpbHRlcnMuZmlsdGVyKGYgPT4gZi50eXBlID09PSBGSUxURVJfVFlQRVMucG9seWdvbilcbiAgICApO1xuXG4gICAgbWFwYm94TGF5ZXJzU2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihcbiAgICAgIHRoaXMubGF5ZXJzU2VsZWN0b3IsXG4gICAgICB0aGlzLmxheWVyRGF0YVNlbGVjdG9yLFxuICAgICAgdGhpcy5sYXllck9yZGVyU2VsZWN0b3IsXG4gICAgICB0aGlzLmxheWVyc1RvUmVuZGVyU2VsZWN0b3IsXG4gICAgICBnZW5lcmF0ZU1hcGJveExheWVyc1xuICAgICk7XG5cbiAgICAvKiBjb21wb25lbnQgcHJpdmF0ZSBmdW5jdGlvbnMgKi9cbiAgICBfb25DbG9zZU1hcFBvcG92ZXIgPSAoKSA9PiB7XG4gICAgICB0aGlzLnByb3BzLnZpc1N0YXRlQWN0aW9ucy5vbkxheWVyQ2xpY2sobnVsbCk7XG4gICAgfTtcblxuICAgIF9vbkxheWVyU2V0RG9tYWluID0gKGlkeCwgY29sb3JEb21haW4pID0+IHtcbiAgICAgIHRoaXMucHJvcHMudmlzU3RhdGVBY3Rpb25zLmxheWVyQ29uZmlnQ2hhbmdlKHRoaXMucHJvcHMubGF5ZXJzW2lkeF0sIHtcbiAgICAgICAgY29sb3JEb21haW5cbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBfaGFuZGxlTWFwVG9nZ2xlTGF5ZXIgPSBsYXllcklkID0+IHtcbiAgICAgIGNvbnN0IHtpbmRleDogbWFwSW5kZXggPSAwLCB2aXNTdGF0ZUFjdGlvbnN9ID0gdGhpcy5wcm9wcztcbiAgICAgIHZpc1N0YXRlQWN0aW9ucy50b2dnbGVMYXllckZvck1hcChtYXBJbmRleCwgbGF5ZXJJZCk7XG4gICAgfTtcblxuICAgIF9vbk1hcGJveFN0eWxlVXBkYXRlID0gKCkgPT4ge1xuICAgICAgLy8gZm9yY2UgcmVmcmVzaCBtYXBib3hnbCBsYXllcnNcbiAgICAgIHRoaXMucHJldmlvdXNMYXllcnMgPSB7fTtcbiAgICAgIHRoaXMuX3VwZGF0ZU1hcGJveExheWVycygpO1xuXG4gICAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMub25NYXBTdHlsZUxvYWRlZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzLnByb3BzLm9uTWFwU3R5bGVMb2FkZWQodGhpcy5fbWFwKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgX3NldE1hcGJveE1hcCA9IG1hcGJveCA9PiB7XG4gICAgICBpZiAoIXRoaXMuX21hcCAmJiBtYXBib3gpIHtcbiAgICAgICAgdGhpcy5fbWFwID0gbWFwYm94LmdldE1hcCgpO1xuICAgICAgICAvLyBpIG5vdGljZWQgaW4gY2VydGFpbiBjb250ZXh0IHdlIGRvbid0IGFjY2VzcyB0aGUgYWN0dWFsIG1hcCBlbGVtZW50XG4gICAgICAgIGlmICghdGhpcy5fbWFwKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIGJpbmQgbWFwYm94Z2wgZXZlbnQgbGlzdGVuZXJcbiAgICAgICAgdGhpcy5fbWFwLm9uKE1BUEJPWEdMX1NUWUxFX1VQREFURSwgdGhpcy5fb25NYXBib3hTdHlsZVVwZGF0ZSk7XG5cbiAgICAgICAgdGhpcy5fbWFwLm9uKE1BUEJPWEdMX1JFTkRFUiwgKCkgPT4ge1xuICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5wcm9wcy5vbk1hcFJlbmRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdGhpcy5wcm9wcy5vbk1hcFJlbmRlcih0aGlzLl9tYXApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnByb3BzLmdldE1hcGJveFJlZikge1xuICAgICAgICAvLyBUaGUgcGFyZW50IGNvbXBvbmVudCBjYW4gZ2FpbiBhY2Nlc3MgdG8gb3VyIE1hcGJveEdsTWFwIGJ5XG4gICAgICAgIC8vIHByb3ZpZGluZyB0aGlzIGNhbGxiYWNrLiBOb3RlIHRoYXQgJ21hcGJveCcgd2lsbCBiZSBudWxsIHdoZW4gdGhlXG4gICAgICAgIC8vIHJlZiBpcyB1bnNldCAoZS5nLiB3aGVuIGEgc3BsaXQgbWFwIGlzIGNsb3NlZCkuXG4gICAgICAgIHRoaXMucHJvcHMuZ2V0TWFwYm94UmVmKG1hcGJveCwgdGhpcy5wcm9wcy5pbmRleCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF9vbkRlY2tJbml0aWFsaXplZChnbCkge1xuICAgICAgaWYgKHRoaXMucHJvcHMub25EZWNrSW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5vbkRlY2tJbml0aWFsaXplZCh0aGlzLl9kZWNrLCBnbCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgX29uQmVmb3JlUmVuZGVyID0gKHtnbH0pID0+IHtcbiAgICAgIHNldExheWVyQmxlbmRpbmcoZ2wsIHRoaXMucHJvcHMubGF5ZXJCbGVuZGluZyk7XG4gICAgfTtcblxuICAgIF9vbkRlY2tFcnJvciA9IChlcnJvciwgbGF5ZXIpID0+IHtcbiAgICAgIGlmIChlcnJvcj8ubWVzc2FnZSA9PT0gJ1dlYkdMIGNvbnRleHQgaXMgbG9zdCcpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7Y29udGV4dExvc3Q6IHRydWV9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBgQW4gZXJyb3IgaW4gZGVjay5nbDogJHtlcnJvcj8ubWVzc2FnZX0gaW4gJHtsYXllcj8uaWR9YDtcbiAgICAgIGNvbnN0IG5vdGlmaWNhdGlvbklkID0gYCR7bGF5ZXI/LmlkfS0ke2Vycm9yPy5tZXNzYWdlfWA7XG5cbiAgICAgIC8vIFRocm90dGxlIGVycm9yIG5vdGlmaWNhdGlvbnMsIGFzIFJlYWN0IGRvZXNuJ3QgbGlrZSB0b28gbWFueSBzdGF0ZSBjaGFuZ2VzIGZyb20gaGVyZS5cbiAgICAgIHRoaXMuX2RlY2tHTEVycm9yc0VsYXBzZWQgPSB0aGlzLl9kZWNrR0xFcnJvcnNFbGFwc2VkIHx8IHt9O1xuICAgICAgY29uc3QgbGFzdFNob3duID0gdGhpcy5fZGVja0dMRXJyb3JzRWxhcHNlZFtub3RpZmljYXRpb25JZF07XG4gICAgICBpZiAoIWxhc3RTaG93biB8fCBsYXN0U2hvd24gPCBEYXRlLm5vdygpIC0gVEhST1RUTEVfTk9USUZJQ0FUSU9OX1RJTUUpIHtcbiAgICAgICAgdGhpcy5fZGVja0dMRXJyb3JzRWxhcHNlZFtub3RpZmljYXRpb25JZF0gPSBEYXRlLm5vdygpO1xuXG4gICAgICAgIC8vIENyZWF0ZSBuZXcgZXJyb3Igbm90aWZpY2F0aW9uIG9yIHVwZGF0ZSBleGlzdGluZyBvbmUgd2l0aCBzYW1lIGlkLlxuICAgICAgICAvLyBVcGRhdGUgaXMgcmVxdWlyZWQgdG8gcHJlc2VydmUgdGhlIG9yZGVyIG9mIG5vdGlmaWNhdGlvbnMgYXMgdGhleSBwcm9iYWJseSBhcmUgZ29pbmcgdG8gXCJqdW1wXCIgYmFzZWQgb24gb3JkZXIgb2YgZXJyb3JzLlxuICAgICAgICBjb25zdCB7dWlTdGF0ZUFjdGlvbnN9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgdWlTdGF0ZUFjdGlvbnMuYWRkTm90aWZpY2F0aW9uKFxuICAgICAgICAgIGVycm9yTm90aWZpY2F0aW9uKHtcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yTWVzc2FnZSxcbiAgICAgICAgICAgIGlkOiBub3RpZmljYXRpb25JZFxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8qIGNvbXBvbmVudCByZW5kZXIgZnVuY3Rpb25zICovXG5cbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBjb21wbGV4aXR5ICovXG4gICAgX3JlbmRlck1hcFBvcG92ZXIobGF5ZXJzVG9SZW5kZXIpIHtcbiAgICAgIC8vIE92ZXJyaWRlbiBpbiBCdWlsZGVyOiBmZWF0dXJlcy9idWlsZGVyL3VpL0tlcGxlckdsL01hcENvbnRhaW5lci9NYXBDb250YWluZXIudHN4XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvKiBlc2xpbnQtZW5hYmxlIGNvbXBsZXhpdHkgKi9cblxuICAgIF9nZXRIb3ZlclhZKHZpZXdwb3J0LCBsbmdMYXQpIHtcbiAgICAgIGNvbnN0IHNjcmVlbkNvb3JkID0gIXZpZXdwb3J0IHx8ICFsbmdMYXQgPyBudWxsIDogdmlld3BvcnQucHJvamVjdChsbmdMYXQpO1xuICAgICAgcmV0dXJuIHNjcmVlbkNvb3JkICYmIHt4OiBzY3JlZW5Db29yZFswXSwgeTogc2NyZWVuQ29vcmRbMV19O1xuICAgIH1cblxuICAgIF9yZW5kZXJEZWNrT3ZlcmxheShsYXllcnNGb3JEZWNrKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG1hcFN0YXRlLFxuICAgICAgICBtYXBTdHlsZSxcbiAgICAgICAgbGF5ZXJEYXRhLFxuICAgICAgICBsYXllck9yZGVyLFxuICAgICAgICBsYXllcnMsXG4gICAgICAgIHZpc1N0YXRlQWN0aW9ucyxcbiAgICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgICAgIG1hcGJveEFwaVVybCxcbiAgICAgICAgbWFza1BvbHlnb25cbiAgICAgIH0gPSB0aGlzLnByb3BzO1xuICAgICAgdHJhY2tlcnMuZHJhd0NvdW50Py5pbmNyZW1lbnQoKTtcblxuICAgICAgLy8gaW5pdGlhbGlzZSBsYXllcnMgZnJvbSBwcm9wcyBpZiBleGlzdHNcbiAgICAgIGxldCBkZWNrR2xMYXllcnMgPSB0aGlzLnByb3BzLmRlY2tHbFByb3BzPy5sYXllcnMgfHwgW107XG5cbiAgICAgIC8vIHdhaXQgdW50aWwgZGF0YSBpcyByZWFkeSBiZWZvcmUgcmVuZGVyIGRhdGEgbGF5ZXJzXG4gICAgICBpZiAobGF5ZXJEYXRhICYmIGxheWVyRGF0YS5sZW5ndGgpIHtcbiAgICAgICAgLy8gbGFzdCBsYXllciByZW5kZXIgZmlyc3RcbiAgICAgICAgY29uc3QgZGF0YUxheWVycyA9IGxheWVyT3JkZXJcbiAgICAgICAgICAuc2xpY2UoKVxuICAgICAgICAgIC5yZXZlcnNlKClcbiAgICAgICAgICAuZmlsdGVyKGlkeCA9PiBsYXllcnNGb3JEZWNrW2xheWVyc1tpZHhdLmlkXSlcbiAgICAgICAgICAucmVkdWNlKChvdmVybGF5cywgaWR4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsYXllckNhbGxiYWNrcyA9IHtcbiAgICAgICAgICAgICAgb25TZXRMYXllckRvbWFpbjogdmFsID0+IHRoaXMuX29uTGF5ZXJTZXREb21haW4oaWR4LCB2YWwpXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgbGF5ZXJPdmVybGF5ID0gcmVuZGVyRGVja0dsTGF5ZXIodGhpcy5wcm9wcywgbGF5ZXJDYWxsYmFja3MsIGlkeCk7XG4gICAgICAgICAgICByZXR1cm4gb3ZlcmxheXMuY29uY2F0KGxheWVyT3ZlcmxheSB8fCBbXSk7XG4gICAgICAgICAgfSwgW10pO1xuICAgICAgICBkZWNrR2xMYXllcnMgPSBkZWNrR2xMYXllcnMuY29uY2F0KGRhdGFMYXllcnMpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5wcm9wcy5kZWNrR2xQcm9wcz8ubGF5ZXJzT25Ub3ApIHtcbiAgICAgICAgZGVja0dsTGF5ZXJzID0gZGVja0dsTGF5ZXJzLmNvbmNhdCh0aGlzLnByb3BzLmRlY2tHbFByb3BzLmxheWVyc09uVG9wKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1hc2tQb2x5Z29uKSB7XG4gICAgICAgIGRlY2tHbExheWVycy5wdXNoKFxuICAgICAgICAgIG5ldyBTb2xpZFBvbHlnb25MYXllcih7XG4gICAgICAgICAgICBpZDogTUFTS19MQVlFUl9JRCxcbiAgICAgICAgICAgIG9wZXJhdGlvbjogT1BFUkFUSU9OLk1BU0ssXG4gICAgICAgICAgICBkYXRhOiBbbWFza1BvbHlnb25dLFxuICAgICAgICAgICAgZGF0YUNvbXBhcmF0b3I6IChkYXRhLCBvbGREYXRhKSA9PiBkYXRhWzBdID09PSBvbGREYXRhWzBdLFxuICAgICAgICAgICAgZ2V0UG9seWdvbjogZCA9PiBkLFxuICAgICAgICAgICAgZ2V0RmlsbENvbG9yOiBbMjU1LCAyNTUsIDI1NSwgMjU1XVxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChtYXBTdHlsZS52aXNpYmxlTGF5ZXJHcm91cHNbJzNkIGJ1aWxkaW5nJ10pIHtcbiAgICAgICAgZGVja0dsTGF5ZXJzLnB1c2goXG4gICAgICAgICAgbmV3IFRocmVlREJ1aWxkaW5nTGF5ZXIoe1xuICAgICAgICAgICAgaWQ6ICdfa2VwbGVyZ2xfM2QtYnVpbGRpbmcnLFxuICAgICAgICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgICAgICAgICBtYXBib3hBcGlVcmwsXG4gICAgICAgICAgICB0aHJlZURCdWlsZGluZ0NvbG9yOiBtYXBTdHlsZS50aHJlZURCdWlsZGluZ0NvbG9yLFxuICAgICAgICAgICAgdXBkYXRlVHJpZ2dlcnM6IHtcbiAgICAgICAgICAgICAgZ2V0RmlsbENvbG9yOiBtYXBTdHlsZS50aHJlZURCdWlsZGluZ0NvbG9yXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgbGV0IGVmZmVjdHMgPSBbXTtcbiAgICAgIGlmIChtYXBTdHlsZS5ib3R0b21NYXBTdHlsZS50eXBlID09PSAnZ21hcHNfM2QnKSB7XG4gICAgICAgIC8vIEluamVjdCAzRCB0aWxlcyB3aGVuIG1hcCBzdHlsZSBpcyBWb3lhZ2VyIHdpdGhvdXQgbGF5ZXJzXG4gICAgICAgIGRlY2tHbExheWVycyA9IGRlY2tHbExheWVyc1xuICAgICAgICAgIC5maWx0ZXIobCA9PiBCb29sZWFuKGwgJiYgbC5jbG9uZSkpXG4gICAgICAgICAgLm1hcChsID0+IGwuY2xvbmUoe2V4dGVuc2lvbnM6IFsuLi5sLnByb3BzLmV4dGVuc2lvbnMsIHRlcnJhaW5FeHRlbnNpb25dfSkpO1xuICAgICAgICBkZWNrR2xMYXllcnMucHVzaCh0aWxlczNkLmNsb25lKCkpO1xuXG4gICAgICAgIGlmIChtYXBTdHlsZS5zdHlsZVR5cGUgPT09ICdnb29nbGUtM2Qtc2tldGNoJykge1xuICAgICAgICAgIGVmZmVjdHMgPSBhbGxFZmZlY3RzO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIExpbWl0IHJlbmRlcnNcbiAgICAgIGNvbnN0IGhhc1JlbmRlcmVkID0gdGhpcy5faGFzUmVuZGVyZWQ7XG4gICAgICBjb25zdCByZXNldEhhc1JlbmRlcmVkID0gKCkgPT4gKGhhc1JlbmRlcmVkLmN1cnJlbnQgPSBmYWxzZSk7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8RGVja0dMXG4gICAgICAgICAgY29udHJvbGxlcj17dHJ1ZX1cbiAgICAgICAgICB7Li4udGhpcy5wcm9wcy5kZWNrR2xQcm9wc31cbiAgICAgICAgICB2aWV3U3RhdGU9e21hcFN0YXRlfVxuICAgICAgICAgIG9uVmlld1N0YXRlQ2hhbmdlPXsoe3ZpZXdTdGF0ZSwgaW50ZXJhY3Rpb25TdGF0ZX0pID0+IHtcbiAgICAgICAgICAgIC8vIExpbWl0IHVwZGF0ZXMgKHByZXZlbnRzIGZyZWV6ZXMgd2hlbiBkZXYgdG9vbHMgb3BlbilcbiAgICAgICAgICAgIGlmICghaGFzUmVuZGVyZWQuY3VycmVudCAmJiB2aWV3U3RhdGUud2lkdGggPiAxICYmIHZpZXdTdGF0ZS5oZWlnaHQgPiAxKSB7XG4gICAgICAgICAgICAgIGhhc1JlbmRlcmVkLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICAgICAgICB0aGlzLl9vblZpZXdwb3J0Q2hhbmdlKHZpZXdTdGF0ZSwgaW50ZXJhY3Rpb25TdGF0ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgICBpZD1cImRlZmF1bHQtZGVja2dsLW92ZXJsYXlcIlxuICAgICAgICAgIGxheWVycz17ZGVja0dsTGF5ZXJzfVxuICAgICAgICAgIGVmZmVjdHM9e2VmZmVjdHN9XG4gICAgICAgICAgb25CZWZvcmVSZW5kZXI9e29wdHMgPT4ge1xuICAgICAgICAgICAgcmVzZXRIYXNSZW5kZXJlZCgpO1xuICAgICAgICAgICAgdGhpcy5fb25CZWZvcmVSZW5kZXIob3B0cyk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkhvdmVyPXt2aXNTdGF0ZUFjdGlvbnMub25MYXllckhvdmVyfVxuICAgICAgICAgIG9uQ2xpY2s9e3Zpc1N0YXRlQWN0aW9ucy5vbkxheWVyQ2xpY2t9XG4gICAgICAgICAgb25FcnJvcj17ZSA9PiB7XG4gICAgICAgICAgICBkZWJ1Z2dlcjtcbiAgICAgICAgICAgIHRoaXMuX29uRGVja0Vycm9yKGUpO1xuICAgICAgICAgIH19XG4gICAgICAgICAgcmVmPXtjb21wID0+IHtcbiAgICAgICAgICAgIGlmIChjb21wICYmIGNvbXAuZGVjayAmJiBjb21wLmRlY2sgIT09IHRoaXMuX2RlY2spIHtcbiAgICAgICAgICAgICAgdGhpcy5fZGVjayA9IGNvbXAuZGVjaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uV2ViR0xJbml0aWFsaXplZD17Z2wgPT4gdGhpcy5fb25EZWNrSW5pdGlhbGl6ZWQoZ2wpfVxuICAgICAgICAgIGxheWVyRmlsdGVyPXsoe2xheWVyLCB2aWV3cG9ydH0pID0+IHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgaXNOYU4obGF5ZXIucHJvcHMudmlzaWJpbGl0eUJ5Wm9vbT8ubWluKSB8fFxuICAgICAgICAgICAgICBpc05hTihsYXllci5wcm9wcy52aXNpYmlsaXR5Qnlab29tPy5tYXgpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50Wm9vbVJhbmdlID0gTWF0aC5yb3VuZChtYXBTdGF0ZS56b29tKTtcblxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgbGF5ZXIucHJvcHMudmlzaWJpbGl0eUJ5Wm9vbS5taW4gPD0gY3VycmVudFpvb21SYW5nZSAmJlxuICAgICAgICAgICAgICBsYXllci5wcm9wcy52aXNpYmlsaXR5Qnlab29tLm1heCA+PSBjdXJyZW50Wm9vbVJhbmdlXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICApO1xuICAgIH1cblxuICAgIF91cGRhdGVNYXBib3hMYXllcnMoKSB7XG4gICAgICBjb25zdCBtYXBib3hMYXllcnMgPSB0aGlzLm1hcGJveExheWVyc1NlbGVjdG9yKHRoaXMucHJvcHMpO1xuICAgICAgaWYgKCFPYmplY3Qua2V5cyhtYXBib3hMYXllcnMpLmxlbmd0aCAmJiAhT2JqZWN0LmtleXModGhpcy5wcmV2aW91c0xheWVycykubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdXBkYXRlTWFwYm94TGF5ZXJzKHRoaXMuX21hcCwgbWFwYm94TGF5ZXJzLCB0aGlzLnByZXZpb3VzTGF5ZXJzKTtcblxuICAgICAgdGhpcy5wcmV2aW91c0xheWVycyA9IG1hcGJveExheWVycztcbiAgICB9XG5cbiAgICBfcmVuZGVyTWFwYm94T3ZlcmxheXMoKSB7XG4gICAgICBpZiAodGhpcy5fbWFwICYmIHRoaXMuX21hcC5pc1N0eWxlTG9hZGVkKCkpIHtcbiAgICAgICAgdGhpcy5fdXBkYXRlTWFwYm94TGF5ZXJzKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgX29uVmlld3BvcnRDaGFuZ2UgPSAodmlld1N0YXRlLCBpbnRlcmFjdGlvblN0YXRlKSA9PiB7XG4gICAgICB0cmFja2Vycy52aWV3cG9ydENoYW5nZUNvdW50Py5pbmNyZW1lbnQoKTtcblxuICAgICAgY29uc3Qge3dpZHRoLCBoZWlnaHQsIC4uLnJlc3RWaWV3U3RhdGV9ID0gdmlld1N0YXRlO1xuICAgICAgY29uc3Qge3ByaW1hcnksIGlzRXhwb3J0fSA9IHRoaXMucHJvcHM7XG4gICAgICAvLyByZWFjdC1tYXAtZ2wgc2VuZHMgMCwwIGRpbWVuc2lvbnMgZHVyaW5nIGluaXRpYWxpemF0aW9uXG4gICAgICAvLyBhZnRlciB3ZSBoYXZlIHJlY2VpdmVkIHByb3BlciBkaW1lbnNpb25zIGZyb20gb2JzZXJ2ZURpbWVuc2lvbnNcbiAgICAgIGNvbnN0IG5leHQgPSB7XG4gICAgICAgIC4uLih3aWR0aCA+IDAgJiYgaGVpZ2h0ID4gMCA/IHZpZXdTdGF0ZSA6IHJlc3RWaWV3U3RhdGUpLFxuXG4gICAgICAgIC8vIEF1dG8tdXBkYXRlIHRoZSBjYW1lcmEgaGVpZ2h0IGFjY29yZGluZyB0byAzRCB0aWxlcywgZXhjZXB0IHdoZW4gdHJhbnNpdGlvbmluZ1xuICAgICAgICAuLi4oaW50ZXJhY3Rpb25TdGF0ZSAmJiAhaW50ZXJhY3Rpb25TdGF0ZS5pblRyYW5zaXRpb24gJiYge3Bvc2l0aW9uOiBbMCwgMCwgaF19KVxuICAgICAgICAvLyBlbmFibGluZyB0cmFuc2l0aW9uIGluIHR3byBtYXBzIG1heSBsZWFkIHRvIGVuZGxlc3MgdXBkYXRlIGxvb3BzXG4gICAgICAgIC8vIHRyYW5zaXRpb25EdXJhdGlvbjogcHJpbWFyeSA/IFRSQU5TSVRJT05fRFVSQVRJT04gOiAwIC8vIERpc2FibGUgZm9yIDNEIHRpbGVzIHRyYW5zaXRpb25zXG4gICAgICB9O1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLm9uVmlld1N0YXRlQ2hhbmdlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRoaXMucHJvcHMub25WaWV3U3RhdGVDaGFuZ2UobmV4dCk7XG4gICAgICB9XG5cbiAgICAgIGlmICghaXNFeHBvcnQpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5tYXBTdGF0ZUFjdGlvbnMudXBkYXRlTWFwKG5leHQpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBfdG9nZ2xlTWFwQ29udHJvbCA9IHBhbmVsSWQgPT4ge1xuICAgICAgY29uc3Qge2luZGV4LCB1aVN0YXRlQWN0aW9uc30gPSB0aGlzLnByb3BzO1xuXG4gICAgICB1aVN0YXRlQWN0aW9ucy50b2dnbGVNYXBDb250cm9sKHBhbmVsSWQsIGluZGV4KTtcbiAgICB9O1xuXG4gICAgLyogZXNsaW50LWRpc2FibGUgY29tcGxleGl0eSAqL1xuICAgIF9yZW5kZXJNYXAoKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG1hcFN0YXRlLFxuICAgICAgICBtYXBTdHlsZSxcbiAgICAgICAgbWFwU3RhdGVBY3Rpb25zLFxuICAgICAgICBsYXllcnMsXG4gICAgICAgIE1hcENvbXBvbmVudCxcbiAgICAgICAgZGF0YXNldHMsXG4gICAgICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICAgICAgICBtYXBib3hBcGlVcmwsXG4gICAgICAgIG1hcENvbnRyb2xzLFxuICAgICAgICBpc0V4cG9ydCxcbiAgICAgICAgbG9jYWxlLFxuICAgICAgICB1aVN0YXRlQWN0aW9ucyxcbiAgICAgICAgdmlzU3RhdGVBY3Rpb25zLFxuICAgICAgICBpbnRlcmFjdGlvbkNvbmZpZyxcbiAgICAgICAgZWRpdG9yLFxuICAgICAgICBpbmRleCxcbiAgICAgICAgcHJpbWFyeVxuICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgIGNvbnN0IGxheWVyc1RvUmVuZGVyID0gdGhpcy5sYXllcnNUb1JlbmRlclNlbGVjdG9yKHRoaXMucHJvcHMpO1xuICAgICAgY29uc3QgbGF5ZXJzRm9yRGVjayA9IHRoaXMubGF5ZXJzRm9yRGVja1NlbGVjdG9yKHRoaXMucHJvcHMpO1xuXG4gICAgICBjb25zdCBtYXBQcm9wcyA9IHtcbiAgICAgICAgLi4ubWFwU3RhdGUsXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICBwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6IHRydWUsXG4gICAgICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICAgICAgICBtYXBib3hBcGlVcmwsXG4gICAgICAgIHRyYW5zZm9ybVJlcXVlc3RcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGlzRWRpdCA9IChtYXBDb250cm9scy5tYXBEcmF3IHx8IHt9KS5hY3RpdmU7XG5cbiAgICAgIGNvbnN0IGhhc0dlb2NvZGVyTGF5ZXIgPSBsYXllcnMuZmluZChsID0+IGwuaWQgPT09IEdFT0NPREVSX0xBWUVSX0lEKTtcbiAgICAgIGNvbnN0IGlzU3BsaXQgPSBCb29sZWFuKG1hcFN0YXRlLmlzU3BsaXQpO1xuICAgICAgY29uc3QgbW91c2VQb3NpdGlvbiA9IHRoaXMuX21vdXNlUG9zaXRpb247XG5cbiAgICAgIGNvbnN0IG5lZWRzQmFzZW1hcCA9IG1hcFN0eWxlLmJvdHRvbU1hcFN0eWxlLnR5cGUgIT09ICdnbWFwc18zZCc7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPE1hcENvbnRyb2xcbiAgICAgICAgICAgIGRhdGFzZXRzPXtkYXRhc2V0c31cbiAgICAgICAgICAgIGF2YWlsYWJsZUxvY2FsZXM9e09iamVjdC5rZXlzKExPQ0FMRV9DT0RFUyl9XG4gICAgICAgICAgICBkcmFnUm90YXRlPXttYXBTdGF0ZS5kcmFnUm90YXRlfVxuICAgICAgICAgICAgaXNTcGxpdD17aXNTcGxpdH1cbiAgICAgICAgICAgIHByaW1hcnk9e3ByaW1hcnl9XG4gICAgICAgICAgICBpc0V4cG9ydD17aXNFeHBvcnR9XG4gICAgICAgICAgICBsYXllcnM9e2xheWVyc31cbiAgICAgICAgICAgIGxheWVyc1RvUmVuZGVyPXtsYXllcnNUb1JlbmRlcn1cbiAgICAgICAgICAgIG1hcEluZGV4PXtpbmRleH1cbiAgICAgICAgICAgIG1hcENvbnRyb2xzPXttYXBDb250cm9sc31cbiAgICAgICAgICAgIHJlYWRPbmx5PXt0aGlzLnByb3BzLnJlYWRPbmx5fVxuICAgICAgICAgICAgc2NhbGU9e21hcFN0YXRlLnNjYWxlIHx8IDF9XG4gICAgICAgICAgICB0b3A9e2ludGVyYWN0aW9uQ29uZmlnLmdlb2NvZGVyICYmIGludGVyYWN0aW9uQ29uZmlnLmdlb2NvZGVyLmVuYWJsZWQgPyA1MiA6IDB9XG4gICAgICAgICAgICBlZGl0b3I9e2VkaXRvcn1cbiAgICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgICAgb25Ub2dnbGVQZXJzcGVjdGl2ZT17bWFwU3RhdGVBY3Rpb25zLnRvZ2dsZVBlcnNwZWN0aXZlfVxuICAgICAgICAgICAgb25Ub2dnbGVTcGxpdE1hcD17bWFwU3RhdGVBY3Rpb25zLnRvZ2dsZVNwbGl0TWFwfVxuICAgICAgICAgICAgb25NYXBUb2dnbGVMYXllcj17dGhpcy5faGFuZGxlTWFwVG9nZ2xlTGF5ZXJ9XG4gICAgICAgICAgICBvblRvZ2dsZU1hcENvbnRyb2w9e3RoaXMuX3RvZ2dsZU1hcENvbnRyb2x9XG4gICAgICAgICAgICBvblNldEVkaXRvck1vZGU9e3Zpc1N0YXRlQWN0aW9ucy5zZXRFZGl0b3JNb2RlfVxuICAgICAgICAgICAgb25TZXRMb2NhbGU9e3VpU3RhdGVBY3Rpb25zLnNldExvY2FsZX1cbiAgICAgICAgICAgIG9uVG9nZ2xlRWRpdG9yVmlzaWJpbGl0eT17dmlzU3RhdGVBY3Rpb25zLnRvZ2dsZUVkaXRvclZpc2liaWxpdHl9XG4gICAgICAgICAgLz5cbiAgICAgICAgICB7bmVlZHNCYXNlbWFwID8gKFxuICAgICAgICAgICAgPE1hcENvbXBvbmVudFxuICAgICAgICAgICAgICB7Li4ubWFwUHJvcHN9XG4gICAgICAgICAgICAgIGtleT1cImJvdHRvbVwiXG4gICAgICAgICAgICAgIHJlZj17dGhpcy5fc2V0TWFwYm94TWFwfVxuICAgICAgICAgICAgICBtYXBTdHlsZT17bWFwU3R5bGUuYm90dG9tTWFwU3R5bGV9XG4gICAgICAgICAgICAgIGdldEN1cnNvcj17dGhpcy5wcm9wcy5ob3ZlckluZm8gPyAoKSA9PiAncG9pbnRlcicgOiB1bmRlZmluZWR9XG4gICAgICAgICAgICAgIG9uTW91c2VNb3ZlPXtldnQgPT4ge1xuICAgICAgICAgICAgICAgIC8vIFNlbmRpbmcgbW91c2UgbW92ZSB1cGRhdGVzIHZpYSBSZWR1eCBpcyBleHBlbnNpdmUuIFN0b3JlXG4gICAgICAgICAgICAgICAgLy8gbG9jYWxseSBhbmQgcmVseSBvbiBkZWNrLmdsIHRvIGRyaXZlIHJlbmRlciB1cGRhdGVzXG4gICAgICAgICAgICAgICAgLy8gU2VlIEJ1aWxkZXI6IGZlYXR1cmVzL2J1aWxkZXIvdWkvS2VwbGVyR2wvTWFwQ29udGFpbmVyL01hcENvbnRhaW5lci50c3hcbiAgICAgICAgICAgICAgICBtb3VzZVBvc2l0aW9uLmN1cnJlbnQgPSB7bW91c2VQb3NpdGlvbjogZXZ0LnBvaW50fTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge1BFUkZfREVCVUcgJiYgcmVuZGVyUGVyZm9ybWFuY2VTdGF0cygpfVxuICAgICAgICAgICAgICB7dGhpcy5fcmVuZGVyRGVja092ZXJsYXkobGF5ZXJzRm9yRGVjayl9XG4gICAgICAgICAgICAgIHt0aGlzLl9yZW5kZXJNYXBib3hPdmVybGF5cygpfVxuICAgICAgICAgICAgICA8RWRpdG9yXG4gICAgICAgICAgICAgICAgaW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgICAgIGRhdGFzZXRzPXtkYXRhc2V0c31cbiAgICAgICAgICAgICAgICBlZGl0b3I9e2VkaXRvcn1cbiAgICAgICAgICAgICAgICBmaWx0ZXJzPXt0aGlzLnBvbHlnb25GaWx0ZXJzKHRoaXMucHJvcHMpfVxuICAgICAgICAgICAgICAgIGlzRW5hYmxlZD17aXNFZGl0fVxuICAgICAgICAgICAgICAgIGxheWVycz17bGF5ZXJzfVxuICAgICAgICAgICAgICAgIGxheWVyc1RvUmVuZGVyPXtsYXllcnNUb1JlbmRlcn1cbiAgICAgICAgICAgICAgICBvbkRlbGV0ZUZlYXR1cmU9e3Zpc1N0YXRlQWN0aW9ucy5kZWxldGVGZWF0dXJlfVxuICAgICAgICAgICAgICAgIG9uU2VsZWN0PXt2aXNTdGF0ZUFjdGlvbnMuc2V0U2VsZWN0ZWRGZWF0dXJlfVxuICAgICAgICAgICAgICAgIG9uVXBkYXRlPXt2aXNTdGF0ZUFjdGlvbnMuc2V0RmVhdHVyZXN9XG4gICAgICAgICAgICAgICAgb25Ub2dnbGVQb2x5Z29uRmlsdGVyPXt2aXNTdGF0ZUFjdGlvbnMuc2V0UG9seWdvbkZpbHRlckxheWVyfVxuICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICBwb2ludGVyRXZlbnRzOiBpc0VkaXQgPyAnYWxsJyA6ICdub25lJyxcbiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgICAgICAgZGlzcGxheTogZWRpdG9yLnZpc2libGUgPyAnYmxvY2snIDogJ25vbmUnXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvTWFwQ29tcG9uZW50PlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICB7UEVSRl9ERUJVRyAmJiByZW5kZXJQZXJmb3JtYW5jZVN0YXRzKCl9XG4gICAgICAgICAgICAgIHt0aGlzLl9yZW5kZXJEZWNrT3ZlcmxheShsYXllcnNGb3JEZWNrKX1cbiAgICAgICAgICAgIDwvPlxuICAgICAgICAgICl9XG4gICAgICAgICAge21hcFN0eWxlLnRvcE1hcFN0eWxlIHx8IGhhc0dlb2NvZGVyTGF5ZXIgPyAoXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXtNQVBfU1RZTEUudG9wfT5cbiAgICAgICAgICAgICAgPE1hcENvbXBvbmVudCB7Li4ubWFwUHJvcHN9IGtleT1cInRvcFwiIG1hcFN0eWxlPXttYXBTdHlsZS50b3BNYXBTdHlsZX0+XG4gICAgICAgICAgICAgICAge3RoaXMuX3JlbmRlckRlY2tPdmVybGF5KHtbR0VPQ09ERVJfTEFZRVJfSURdOiB0cnVlfSl9XG4gICAgICAgICAgICAgIDwvTWFwQ29tcG9uZW50PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAge3RoaXMuX3JlbmRlck1hcFBvcG92ZXIobGF5ZXJzVG9SZW5kZXIpfVxuICAgICAgICAgIHshaXNTcGxpdCB8fCBpbmRleCA9PT0gMSA/IDxBdHRyaWJ1dGlvbiAvPiA6IG51bGx9XG4gICAgICAgIDwvPlxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICBjb25zdCB7bWFwU3RhdGUsIG1hcFN0eWxlfSA9IHRoaXMucHJvcHM7XG4gICAgICBjb25zdCBjb250ZXh0TG9zdCA9IHRoaXMuc3RhdGU/LmNvbnRleHRMb3N0O1xuXG4gICAgICBpZiAoY29udGV4dExvc3QpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTdHlsZWRNYXBDb250YWluZXIgcmVmPXt0aGlzLl9yZWZ9IHN0eWxlPXtNQVBfU1RZTEUuY29udGFpbmVyfSBnbG9iZT17bWFwU3RhdGUuZ2xvYmV9PlxuICAgICAgICAgIHttYXBTdHlsZS5ib3R0b21NYXBTdHlsZSAmJiB0aGlzLl9yZW5kZXJNYXAoKX1cbiAgICAgICAgPC9TdHlsZWRNYXBDb250YWluZXI+XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIE1hcENvbnRhaW5lci5kaXNwbGF5TmFtZSA9ICdNYXBDb250YWluZXInO1xuXG4gIHJldHVybiBNYXBDb250YWluZXI7XG59XG4iXX0=
|
|
834
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL21hcC1jb250YWluZXIuanMiXSwibmFtZXMiOlsiR09PR0xFX01BUFNfQVBJX0tFWSIsIkN1c3RvbVRpbGUzRExheWVyIiwibGF5ZXIiLCJ2aWV3cG9ydCIsImxvZFpvb20iLCJNYXRoIiwibG9nMiIsInByb3BzIiwidGlsZSIsImxvZE1ldHJpY1ZhbHVlIiwiem9vbSIsIlRpbGUzRExheWVyIiwiaCIsInRpbGVzM2QiLCJpZCIsImRhdGEiLCJvblRpbGVzZXRMb2FkIiwidGlsZXNldDNkIiwib3B0aW9ucyIsIm1heGltdW1TY3JlZW5TcGFjZUVycm9yIiwiX29uVGlsZUxvYWRFcnJvciIsIm9uVHJhdmVyc2FsQ29tcGxldGUiLCJzZWxlY3RlZFRpbGVzIiwibWluTG9kIiwiSW5maW5pdHkiLCJmaWx0ZXJlZCIsImZpbHRlciIsInQiLCJsZW5ndGgiLCJtYXAiLCJib3VuZGluZ0JveCIsInJlZHVjZSIsImEiLCJuIiwibG9hZE9wdGlvbnMiLCJmZXRjaCIsImhlYWRlcnMiLCJvcGVyYXRpb24iLCJ0ZXJyYWluRXh0ZW5zaW9uIiwiVGVycmFpbkV4dGVuc2lvbiIsImFtYmllbnRMaWdodCIsIkFtYmllbnRMaWdodCIsImNvbG9yIiwiaW50ZW5zaXR5Iiwic3VuTGlnaHQiLCJfU3VuTGlnaHQiLCJ0aW1lc3RhbXAiLCJfc2hhZG93IiwibGlnaHRpbmdFZmZlY3QiLCJMaWdodGluZ0VmZmVjdCIsInNoYWRvd0NvbG9yIiwiYnJpZ2h0bmVzc0NvbnRyYXN0RWZmZWN0IiwiUG9zdFByb2Nlc3NFZmZlY3QiLCJicmlnaHRuZXNzQ29udHJhc3QiLCJjb250cmFzdCIsImJyaWdodG5lc3MiLCJodWVTYXR1cmF0aW9uRWZmZWN0IiwiaHVlU2F0dXJhdGlvbiIsImh1ZSIsInNhdHVyYXRpb24iLCJ2aWJyYW5jZUVmZmVjdCIsInZpYnJhbmNlIiwiYW1vdW50IiwiaW5rRWZmZWN0IiwiaW5rIiwic3RyZW5ndGgiLCJhbGxFZmZlY3RzIiwidHJhY2tlcnMiLCJQRVJGX0RFQlVHIiwid2luZG93IiwibG9jYXRpb24iLCJzZWFyY2giLCJpbmNsdWRlcyIsImRyYXdDb3VudCIsInZpZXdwb3J0Q2hhbmdlQ291bnQiLCJMYXllciIsIlRpbGVMYXllciIsIk1BUF9TVFlMRSIsImNvbnRhaW5lciIsImRpc3BsYXkiLCJwb3NpdGlvbiIsIndpZHRoIiwiaGVpZ2h0IiwidG9wIiwicG9pbnRlckV2ZW50cyIsIk1BUEJPWEdMX1NUWUxFX1VQREFURSIsIk1BUEJPWEdMX1JFTkRFUiIsIlRSQU5TSVRJT05fRFVSQVRJT04iLCJBdHRyaWJ1dGlvbiIsIk1hcENvbnRhaW5lckZhY3RvcnkiLCJkZXBzIiwiTWFwUG9wb3ZlckZhY3RvcnkiLCJNYXBDb250cm9sRmFjdG9yeSIsIkVkaXRvckZhY3RvcnkiLCJNYXBQb3BvdmVyIiwiTWFwQ29udHJvbCIsIkVkaXRvciIsIk1hcENvbnRhaW5lciIsImRpbWVuc2lvbnMiLCJwcmltYXJ5IiwiaXNFeHBvcnQiLCJtYXBTdGF0ZUFjdGlvbnMiLCJ1cGRhdGVNYXAiLCJsYXllcnMiLCJsYXllckRhdGEiLCJtYXBMYXllcnMiLCJsYXllck9yZGVyIiwicG9wdXBTZXR0aW5ncyIsImxheWVyc1NlbGVjdG9yIiwibGF5ZXJEYXRhU2VsZWN0b3IiLCJtYXBMYXllcnNTZWxlY3RvciIsInBvcHVwU2V0dGluZ3NTZWxlY3RvciIsInByZXBhcmVMYXllcnNUb1JlbmRlciIsInByZXBhcmVMYXllcnNGb3JEZWNrIiwiZmlsdGVycyIsImZpbHRlcnNTZWxlY3RvciIsImYiLCJ0eXBlIiwiRklMVEVSX1RZUEVTIiwicG9seWdvbiIsImxheWVyT3JkZXJTZWxlY3RvciIsImxheWVyc1RvUmVuZGVyU2VsZWN0b3IiLCJnZW5lcmF0ZU1hcGJveExheWVycyIsInZpc1N0YXRlQWN0aW9ucyIsIm9uTGF5ZXJDbGljayIsImlkeCIsImNvbG9yRG9tYWluIiwibGF5ZXJDb25maWdDaGFuZ2UiLCJsYXllcklkIiwiaW5kZXgiLCJtYXBJbmRleCIsInRvZ2dsZUxheWVyRm9yTWFwIiwicHJldmlvdXNMYXllcnMiLCJfdXBkYXRlTWFwYm94TGF5ZXJzIiwib25NYXBTdHlsZUxvYWRlZCIsIl9tYXAiLCJtYXBib3giLCJnZXRNYXAiLCJvbiIsIl9vbk1hcGJveFN0eWxlVXBkYXRlIiwib25NYXBSZW5kZXIiLCJnZXRNYXBib3hSZWYiLCJnbCIsImxheWVyQmxlbmRpbmciLCJlcnJvciIsIm1lc3NhZ2UiLCJzZXRTdGF0ZSIsImNvbnRleHRMb3N0IiwiZXJyb3JNZXNzYWdlIiwibm90aWZpY2F0aW9uSWQiLCJfZGVja0dMRXJyb3JzRWxhcHNlZCIsImxhc3RTaG93biIsIkRhdGUiLCJub3ciLCJUSFJPVFRMRV9OT1RJRklDQVRJT05fVElNRSIsInVpU3RhdGVBY3Rpb25zIiwiYWRkTm90aWZpY2F0aW9uIiwidmlld1N0YXRlIiwiaW50ZXJhY3Rpb25TdGF0ZSIsImluY3JlbWVudCIsInJlc3RWaWV3U3RhdGUiLCJuZXh0IiwiaW5UcmFuc2l0aW9uIiwib25WaWV3U3RhdGVDaGFuZ2UiLCJwYW5lbElkIiwidG9nZ2xlTWFwQ29udHJvbCIsIl9kZWNrIiwiX3JlZiIsIl9oYXNSZW5kZXJlZCIsIl9tb3VzZVBvc2l0aW9uIiwiY3VycmVudCIsIl9oYW5kbGVSZXNpemUiLCJzdGF0ZSIsIm9mZiIsIm9uRGVja0luaXRpYWxpemVkIiwibGF5ZXJzVG9SZW5kZXIiLCJsbmdMYXQiLCJzY3JlZW5Db29yZCIsInByb2plY3QiLCJ4IiwieSIsImxheWVyc0ZvckRlY2siLCJtYXBTdGF0ZSIsIm1hcFN0eWxlIiwibWFwYm94QXBpQWNjZXNzVG9rZW4iLCJtYXBib3hBcGlVcmwiLCJtYXNrUG9seWdvbiIsImRlY2tHbExheWVycyIsImRlY2tHbFByb3BzIiwiZGF0YUxheWVycyIsInNsaWNlIiwicmV2ZXJzZSIsIm92ZXJsYXlzIiwibGF5ZXJDYWxsYmFja3MiLCJvblNldExheWVyRG9tYWluIiwidmFsIiwiX29uTGF5ZXJTZXREb21haW4iLCJsYXllck92ZXJsYXkiLCJjb25jYXQiLCJsYXllcnNPblRvcCIsInB1c2giLCJTb2xpZFBvbHlnb25MYXllciIsIk1BU0tfTEFZRVJfSUQiLCJPUEVSQVRJT04iLCJNQVNLIiwiZGF0YUNvbXBhcmF0b3IiLCJvbGREYXRhIiwiZ2V0UG9seWdvbiIsImQiLCJnZXRGaWxsQ29sb3IiLCJ2aXNpYmxlTGF5ZXJHcm91cHMiLCJUaHJlZURCdWlsZGluZ0xheWVyIiwidGhyZWVEQnVpbGRpbmdDb2xvciIsInVwZGF0ZVRyaWdnZXJzIiwiZWZmZWN0cyIsImJvdHRvbU1hcFN0eWxlIiwibCIsIkJvb2xlYW4iLCJjbG9uZSIsImV4dGVuc2lvbnMiLCJzdHlsZVR5cGUiLCJoYXNSZW5kZXJlZCIsInJlc2V0SGFzUmVuZGVyZWQiLCJfb25WaWV3cG9ydENoYW5nZSIsIm9wdHMiLCJfb25CZWZvcmVSZW5kZXIiLCJvbkxheWVySG92ZXIiLCJlIiwiX29uRGVja0Vycm9yIiwiY29tcCIsImRlY2siLCJfb25EZWNrSW5pdGlhbGl6ZWQiLCJpc05hTiIsInZpc2liaWxpdHlCeVpvb20iLCJtaW4iLCJtYXgiLCJjdXJyZW50Wm9vbVJhbmdlIiwicm91bmQiLCJtYXBib3hMYXllcnMiLCJtYXBib3hMYXllcnNTZWxlY3RvciIsIk9iamVjdCIsImtleXMiLCJpc1N0eWxlTG9hZGVkIiwiTWFwQ29tcG9uZW50IiwiZGF0YXNldHMiLCJtYXBDb250cm9scyIsImxvY2FsZSIsImludGVyYWN0aW9uQ29uZmlnIiwiZWRpdG9yIiwibGF5ZXJzRm9yRGVja1NlbGVjdG9yIiwibWFwUHJvcHMiLCJwcmVzZXJ2ZURyYXdpbmdCdWZmZXIiLCJ0cmFuc2Zvcm1SZXF1ZXN0IiwiaXNFZGl0IiwibWFwRHJhdyIsImFjdGl2ZSIsImhhc0dlb2NvZGVyTGF5ZXIiLCJmaW5kIiwiR0VPQ09ERVJfTEFZRVJfSUQiLCJpc1NwbGl0IiwibW91c2VQb3NpdGlvbiIsIm5lZWRzQmFzZW1hcCIsIkxPQ0FMRV9DT0RFUyIsImRyYWdSb3RhdGUiLCJyZWFkT25seSIsInNjYWxlIiwiZ2VvY29kZXIiLCJlbmFibGVkIiwidG9nZ2xlUGVyc3BlY3RpdmUiLCJ0b2dnbGVTcGxpdE1hcCIsIl9oYW5kbGVNYXBUb2dnbGVMYXllciIsIl90b2dnbGVNYXBDb250cm9sIiwic2V0RWRpdG9yTW9kZSIsInNldExvY2FsZSIsInRvZ2dsZUVkaXRvclZpc2liaWxpdHkiLCJfc2V0TWFwYm94TWFwIiwiaG92ZXJJbmZvIiwidW5kZWZpbmVkIiwiZXZ0IiwicG9pbnQiLCJfcmVuZGVyRGVja092ZXJsYXkiLCJfcmVuZGVyTWFwYm94T3ZlcmxheXMiLCJwb2x5Z29uRmlsdGVycyIsImRlbGV0ZUZlYXR1cmUiLCJzZXRTZWxlY3RlZEZlYXR1cmUiLCJzZXRGZWF0dXJlcyIsInNldFBvbHlnb25GaWx0ZXJMYXllciIsInZpc2libGUiLCJ0b3BNYXBTdHlsZSIsIl9yZW5kZXJNYXBQb3BvdmVyIiwiZ2xvYmUiLCJfcmVuZGVyTWFwIiwiQ29tcG9uZW50IiwiUHJvcFR5cGVzIiwib2JqZWN0IiwiaXNSZXF1aXJlZCIsInN0cmluZyIsImFycmF5T2YiLCJhbnkiLCJib29sIiwiY2xpY2tlZCIsIm9uTWFwVG9nZ2xlTGF5ZXIiLCJmdW5jIiwibnVtYmVyIiwiTWFwYm94R0xNYXAiLCJkaXNwbGF5TmFtZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFxQkE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBUUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBT0E7O0FBQ0E7O0FBR0E7O0FBNkVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUExRUEsSUFBTUEsbUJBQW1CLEdBQUcseUNBQTVCOztJQUVNQyxpQjs7Ozs7Ozs7Ozs7O1dBQ0osOEJBQWtDO0FBQUEsVUFBbEJDLEtBQWtCLFFBQWxCQSxLQUFrQjtBQUFBLFVBQVhDLFFBQVcsUUFBWEEsUUFBVztB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QUFBQSxhQUFhLEVBQUUwTCxzQkFBVUM7QUE5QlIsR0FGcUQ7QUFBQSxtQ0FDcEVyTSxZQURvRSxrQkFtQ2xEO0FBQ3BCa0osSUFBQUEsWUFBWSxFQUFFNkQsc0JBRE07QUFFcEJwSCxJQUFBQSxXQUFXLEVBQUUsRUFGTztBQUdwQjNELElBQUFBLEtBQUssRUFBRSxDQUhhO0FBSXBCOUIsSUFBQUEsT0FBTyxFQUFFO0FBSlcsR0FuQ2tEO0FBNGhCMUVGLEVBQUFBLFlBQVksQ0FBQ2dOLFdBQWIsR0FBMkIsY0FBM0I7QUFFQSxTQUFPaE4sWUFBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuLy8gbGlicmFyaWVzXG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnQsIGNyZWF0ZVJlZn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBNYXBib3hHTE1hcCBmcm9tICdyZWFjdC1tYXAtZ2wnO1xuaW1wb3J0IERlY2tHTCBmcm9tICdAZGVjay5nbC9yZWFjdCc7XG5pbXBvcnQge2NyZWF0ZVNlbGVjdG9yfSBmcm9tICdyZXNlbGVjdCc7XG5pbXBvcnQge1xuICBPUEVSQVRJT04sXG4gIExheWVyLFxuICBBbWJpZW50TGlnaHQsXG4gIExpZ2h0aW5nRWZmZWN0LFxuICBQb3N0UHJvY2Vzc0VmZmVjdCxcbiAgX1N1bkxpZ2h0XG59IGZyb20gJ0BkZWNrLmdsL2NvcmUnO1xuaW1wb3J0IHticmlnaHRuZXNzQ29udHJhc3QsIGh1ZVNhdHVyYXRpb24sIGluaywgdmlicmFuY2V9IGZyb20gJ0BsdW1hLmdsL3NoYWRlcnRvb2xzJztcbmltcG9ydCB7U29saWRQb2x5Z29uTGF5ZXJ9IGZyb20gJ0BkZWNrLmdsL2xheWVycyc7XG5pbXBvcnQge1RpbGVMYXllcn0gZnJvbSAnQGRlY2suZ2wvZ2VvLWxheWVycyc7XG5pbXBvcnQge2Vycm9yTm90aWZpY2F0aW9ufSBmcm9tICd1dGlscy9ub3RpZmljYXRpb25zLXV0aWxzJztcblxuLy8gY29tcG9uZW50c1xuaW1wb3J0IE1hcFBvcG92ZXJGYWN0b3J5IGZyb20gJ2NvbXBvbmVudHMvbWFwL21hcC1wb3BvdmVyJztcbmltcG9ydCBNYXBDb250cm9sRmFjdG9yeSBmcm9tICdjb21wb25lbnRzL21hcC9tYXAtY29udHJvbCc7XG5pbXBvcnQge1N0eWxlZE1hcENvbnRhaW5lciwgU3R5bGVkQXR0cmJ1dGlvbn0gZnJvbSAnY29tcG9uZW50cy9jb21tb24vc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQgRWRpdG9yRmFjdG9yeSBmcm9tICcuL2VkaXRvci9lZGl0b3InO1xuXG4vLyB1dGlsc1xuaW1wb3J0IHtnZW5lcmF0ZU1hcGJveExheWVycywgdXBkYXRlTWFwYm94TGF5ZXJzfSBmcm9tICdsYXllcnMvbWFwYm94LXV0aWxzJztcbmltcG9ydCB7c2V0TGF5ZXJCbGVuZGluZ30gZnJvbSAndXRpbHMvZ2wtdXRpbHMnO1xuaW1wb3J0IHt0cmFuc2Zvcm1SZXF1ZXN0fSBmcm9tICd1dGlscy9tYXAtc3R5bGUtdXRpbHMvbWFwYm94LXV0aWxzJztcbmltcG9ydCB7cmVuZGVyRGVja0dsTGF5ZXIsIHByZXBhcmVMYXllcnNUb1JlbmRlciwgcHJlcGFyZUxheWVyc0ZvckRlY2t9IGZyb20gJ3V0aWxzL2xheWVyLXV0aWxzJztcblxuLy8gZGVmYXVsdC1zZXR0aW5nc1xuaW1wb3J0IFRocmVlREJ1aWxkaW5nTGF5ZXIgZnJvbSAnZGVja2dsLWxheWVycy8zZC1idWlsZGluZy1sYXllci8zZC1idWlsZGluZy1sYXllcic7XG5pbXBvcnQge1xuICBGSUxURVJfVFlQRVMsXG4gIEdFT0NPREVSX0xBWUVSX0lELFxuICBNQVNLX0xBWUVSX0lELFxuICBUSFJPVFRMRV9OT1RJRklDQVRJT05fVElNRVxufSBmcm9tICdjb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncyc7XG5cbmltcG9ydCB7b2JzZXJ2ZURpbWVuc2lvbnMsIHVub2JzZXJ2ZURpbWVuc2lvbnN9IGZyb20gJy4uL3V0aWxzL29ic2VydmUtZGltZW5zaW9ucyc7XG5pbXBvcnQge0xPQ0FMRV9DT0RFU30gZnJvbSAnbG9jYWxpemF0aW9uL2xvY2FsZXMnO1xuXG4vLyAzRCB0aWxlc1xuaW1wb3J0IHtfVGVycmFpbkV4dGVuc2lvbiBhcyBUZXJyYWluRXh0ZW5zaW9ufSBmcm9tICdAZGVjay5nbC9leHRlbnNpb25zJztcbmltcG9ydCB7VGlsZTNETGF5ZXJ9IGZyb20gJ0BkZWNrLmdsL2dlby1sYXllcnMnO1xuXG5jb25zdCBHT09HTEVfTUFQU19BUElfS0VZID0gJ0FJemFTeUNwdlF5bWM1d2pTWUlzeHkzUlYxd2lkTTNwM2g3OENBayc7XG5cbmNsYXNzIEN1c3RvbVRpbGUzRExheWVyIGV4dGVuZHMgVGlsZTNETGF5ZXIge1xuICBmaWx0ZXJTdWJMYXllcih7bGF5ZXIsIHZpZXdwb3J0fSkge1xuICAgIC8vIERvIG5vdCBzaG93IHRpbGVzIHdoaWNoIGFyZSBtYW55IGxheWVycyB0b28gbG93IGluIHJlc29sdXRpb24gKGF2b2lkcyBhcnRpZmFjdHMpXG4gICAgY29uc3QgbG9kWm9vbSA9IDIyIC0gTWF0aC5sb2cyKGxheWVyLnByb3BzLnRpbGUubG9kTWV0cmljVmFsdWUpO1xuICAgIHJldHVybiBsb2Rab29tID4gdmlld3BvcnQ/Lnpvb207XG4gIH1cbn1cblxubGV0IGggPSAwO1xuY29uc3QgdGlsZXMzZCA9IG5ldyBDdXN0b21UaWxlM0RMYXllcih7XG4gIGlkOiAnZ29vZ2xlLTNkLXRpbGVzJyxcbiAgZGF0YTogJ2h0dHBzOi8vdGlsZS5nb29nbGVhcGlzLmNvbS92MS8zZHRpbGVzL3Jvb3QuanNvbicsXG4gIG9uVGlsZXNldExvYWQ6IHRpbGVzZXQzZCA9PiB7XG4gICAgdGlsZXNldDNkLm9wdGlvbnMubWF4aW11bVNjcmVlblNwYWNlRXJyb3IgPSA1O1xuICAgIHRpbGVzZXQzZC5fb25UaWxlTG9hZEVycm9yID0gKCkgPT4ge307XG4gICAgdGlsZXNldDNkLm9wdGlvbnMub25UcmF2ZXJzYWxDb21wbGV0ZSA9IHNlbGVjdGVkVGlsZXMgPT4ge1xuICAgICAgbGV0IG1pbkxvZCA9IEluZmluaXR5O1xuICAgICAgZm9yIChjb25zdCB7bG9kTWV0cmljVmFsdWV9IG9mIHNlbGVjdGVkVGlsZXMpIHtcbiAgICAgICAgaWYgKGxvZE1ldHJpY1ZhbHVlIDwgbWluTG9kKSBtaW5Mb2QgPSBsb2RNZXRyaWNWYWx1ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGZpbHRlcmVkID0gc2VsZWN0ZWRUaWxlcy5maWx0ZXIodCA9PiB0LmxvZE1ldHJpY1ZhbHVlIDwgNCAqIG1pbkxvZCk7XG5cbiAgICAgIC8vIEhhY2t5IHdheSB0byBvYnRhaW4gaGVpZ2h0IGFib3ZlIHNlYSBsZXZlbCB0byBpbXByb3ZlIGNvbnRyb2xzXG4gICAgICBpZiAoZmlsdGVyZWQubGVuZ3RoKSB7XG4gICAgICAgIGggPSBmaWx0ZXJlZC5tYXAodCA9PiB0LmJvdW5kaW5nQm94WzBdWzJdKS5yZWR1Y2UoKGEsIG4pID0+IGEgKyBuKSAvIGZpbHRlcmVkLmxlbmd0aDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHNlbGVjdGVkVGlsZXM7XG4gICAgfTtcbiAgfSxcbiAgbG9hZE9wdGlvbnM6IHtcbiAgICBmZXRjaDoge2hlYWRlcnM6IHsnWC1HT09HLUFQSS1LRVknOiBHT09HTEVfTUFQU19BUElfS0VZfX1cbiAgfSxcbiAgLy8gQHRzLWlnbm9yZVxuICBvcGVyYXRpb246ICd0ZXJyYWluK2RyYXcnIC8vIFJlcXVpcmVkIHRvIGVuYWJsZSBkcmFwaW5nIG9mIG90aGVyIGxheWVyc1xufSk7XG5jb25zdCB0ZXJyYWluRXh0ZW5zaW9uID0gbmV3IFRlcnJhaW5FeHRlbnNpb24oKTtcblxuLy8gRWZmZWN0c1xuY29uc3QgYW1iaWVudExpZ2h0ID0gbmV3IEFtYmllbnRMaWdodCh7Y29sb3I6IFsyNTUsIDI1NSwgMjU1XSwgaW50ZW5zaXR5OiAxfSk7XG5jb25zdCBzdW5MaWdodCA9IG5ldyBfU3VuTGlnaHQoe1xuICB0aW1lc3RhbXA6IDE2ODM4Njk5MTU3NzcsXG4gIGNvbG9yOiBbMjU1LCAyNTUsIDI1NV0sXG4gIGludGVuc2l0eTogMSxcbiAgX3NoYWRvdzogdHJ1ZVxufSk7XG5jb25zdCBsaWdodGluZ0VmZmVjdCA9IG5ldyBMaWdodGluZ0VmZmVjdCh7XG4gIGFtYmllbnRMaWdodCxcbiAgc3VuTGlnaHRcbn0pO1xubGlnaHRpbmdFZmZlY3Quc2hhZG93Q29sb3IgPSBbMCwgMCwgMCwgMF07XG5cbmNvbnN0IGJyaWdodG5lc3NDb250cmFzdEVmZmVjdCA9IG5ldyBQb3N0UHJvY2Vzc0VmZmVjdChicmlnaHRuZXNzQ29udHJhc3QsIHtcbiAgY29udHJhc3Q6IDAsXG4gIGJyaWdodG5lc3M6IDAuMlxufSk7XG5cbmNvbnN0IGh1ZVNhdHVyYXRpb25FZmZlY3QgPSBuZXcgUG9zdFByb2Nlc3NFZmZlY3QoaHVlU2F0dXJhdGlvbiwge2h1ZTogMCwgc2F0dXJhdGlvbjogMC4zfSk7XG5cbmNvbnN0IHZpYnJhbmNlRWZmZWN0ID0gbmV3IFBvc3RQcm9jZXNzRWZmZWN0KHZpYnJhbmNlLCB7YW1vdW50OiAxfSk7XG5cbmNvbnN0IGlua0VmZmVjdCA9IG5ldyBQb3N0UHJvY2Vzc0VmZmVjdChpbmssIHtzdHJlbmd0aDogMC4zfSk7XG5cbmNvbnN0IGFsbEVmZmVjdHMgPSBbXG4gIGxpZ2h0aW5nRWZmZWN0LFxuICBodWVTYXR1cmF0aW9uRWZmZWN0LFxuICBicmlnaHRuZXNzQ29udHJhc3RFZmZlY3QsXG4gIHZpYnJhbmNlRWZmZWN0LFxuICBpbmtFZmZlY3Rcbl07XG5cbi8vIFBlcmZvcm1hbmNlIGRlYnVnZ2luZ1xuaW1wb3J0IHtjcmVhdGVUcmFja2VyLCBjcmVhdGVMYXllclVwZGF0ZVRyYWNrZXIsIHJlbmRlclBlcmZvcm1hbmNlU3RhdHN9IGZyb20gJy4vcGVyZm9ybWFuY2UnO1xuY29uc3QgdHJhY2tlcnMgPSB7fTtcbmNvbnN0IFBFUkZfREVCVUcgPSB3aW5kb3c/LmxvY2F0aW9uPy5zZWFyY2g/LmluY2x1ZGVzKCdQRVJGX0RFQlVHJyk7XG5pZiAoUEVSRl9ERUJVRykge1xuICB0cmFja2Vycy5kcmF3Q291bnQgPSBjcmVhdGVUcmFja2VyKCdkcmF3cycpO1xuICB0cmFja2Vycy52aWV3cG9ydENoYW5nZUNvdW50ID0gY3JlYXRlVHJhY2tlcigndmlld3BvcnQgY2hhbmdlcycpO1xuICBjcmVhdGVMYXllclVwZGF0ZVRyYWNrZXIoJ3N0YXRlIHVwZGF0ZXMnLCBbTGF5ZXIsIFRpbGVMYXllcl0pO1xufVxuXG4vKiogQHR5cGUge3tba2V5OiBzdHJpbmddOiBSZWFjdC5DU1NQcm9wZXJ0aWVzfX0gKi9cbmNvbnN0IE1BUF9TVFlMRSA9IHtcbiAgY29udGFpbmVyOiB7XG4gICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICBoZWlnaHQ6ICcxMDAlJ1xuICB9LFxuICB0b3A6IHtcbiAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICB0b3A6ICcwcHgnLFxuICAgIHBvaW50ZXJFdmVudHM6ICdub25lJyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIGhlaWdodDogJzEwMCUnXG4gIH1cbn07XG5cbmNvbnN0IE1BUEJPWEdMX1NUWUxFX1VQREFURSA9ICdzdHlsZS5sb2FkJztcbmNvbnN0IE1BUEJPWEdMX1JFTkRFUiA9ICdyZW5kZXInO1xuY29uc3QgVFJBTlNJVElPTl9EVVJBVElPTiA9IDA7XG5cbmV4cG9ydCBjb25zdCBBdHRyaWJ1dGlvbiA9ICgpID0+IChcbiAgPFN0eWxlZEF0dHJidXRpb24+XG4gICAgPGRpdiBjbGFzc05hbWU9XCJhdHRyaXRpb24tbG9nb1wiPlxuICAgICAgQmFzZW1hcCBieTpcbiAgICAgIDxhXG4gICAgICAgIGNsYXNzTmFtZT1cIm1hcGJveGdsLWN0cmwtbG9nb1wiXG4gICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICBocmVmPVwiaHR0cHM6Ly93d3cubWFwYm94LmNvbS9cIlxuICAgICAgICBhcmlhLWxhYmVsPVwiTWFwYm94IGxvZ29cIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzTmFtZT1cImF0dHJpdGlvbi1saW5rXCI+XG4gICAgICA8YSBocmVmPVwiaHR0cHM6Ly9rZXBsZXIuZ2wvcG9saWN5L1wiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj5cbiAgICAgICAgwqkga2VwbGVyLmdsIHx7JyAnfVxuICAgICAgPC9hPlxuICAgICAgPGEgaHJlZj1cImh0dHBzOi8vd3d3Lm1hcGJveC5jb20vYWJvdXQvbWFwcy9cIiB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+XG4gICAgICAgIMKpIE1hcGJveCB8eycgJ31cbiAgICAgIDwvYT5cbiAgICAgIDxhIGhyZWY9XCJodHRwOi8vd3d3Lm9wZW5zdHJlZXRtYXAub3JnL2NvcHlyaWdodFwiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj5cbiAgICAgICAgwqkgT3BlblN0cmVldE1hcCB8eycgJ31cbiAgICAgIDwvYT5cbiAgICAgIDxhIGhyZWY9XCJodHRwczovL3d3dy5tYXBib3guY29tL21hcC1mZWVkYmFjay9cIiB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+XG4gICAgICAgIDxzdHJvbmc+SW1wcm92ZSB0aGlzIG1hcDwvc3Ryb25nPlxuICAgICAgPC9hPlxuICAgIDwvZGl2PlxuICA8L1N0eWxlZEF0dHJidXRpb24+XG4pO1xuXG5NYXBDb250YWluZXJGYWN0b3J5LmRlcHMgPSBbTWFwUG9wb3ZlckZhY3RvcnksIE1hcENvbnRyb2xGYWN0b3J5LCBFZGl0b3JGYWN0b3J5XTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTWFwQ29udGFpbmVyRmFjdG9yeShNYXBQb3BvdmVyLCBNYXBDb250cm9sLCBFZGl0b3IpIHtcbiAgY2xhc3MgTWFwQ29udGFpbmVyIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgICAgLy8gcmVxdWlyZWRcbiAgICAgIGRhdGFzZXRzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgICAgaW50ZXJhY3Rpb25Db25maWc6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICAgIGxheWVyQmxlbmRpbmc6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAgIGxheWVyT3JkZXI6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5hbnkpLmlzUmVxdWlyZWQsXG4gICAgICBsYXllckRhdGE6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5hbnkpLmlzUmVxdWlyZWQsXG4gICAgICBsYXllcnM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5hbnkpLmlzUmVxdWlyZWQsXG4gICAgICBmaWx0ZXJzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuYW55KS5pc1JlcXVpcmVkLFxuICAgICAgbWFwU3RhdGU6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICAgIG1hcENvbnRyb2xzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgICBtYXBTdHlsZTogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW46IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAgIG1hcGJveEFwaVVybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgIHZpc1N0YXRlQWN0aW9uczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgICAgbWFwU3RhdGVBY3Rpb25zOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgICB1aVN0YXRlQWN0aW9uczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuXG4gICAgICAvLyBvcHRpb25hbFxuICAgICAgcHJpbWFyeTogUHJvcFR5cGVzLmJvb2wsIC8vIHByaW1hcnkgb25lIHdpbGwgYmUgcmVwb3J0aW5nIGl0cyBzaXplIHRvIGFwcFN0YXRlXG4gICAgICByZWFkT25seTogUHJvcFR5cGVzLmJvb2wsXG4gICAgICBpc0V4cG9ydDogUHJvcFR5cGVzLmJvb2wsXG4gICAgICBjbGlja2VkOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgICAgaG92ZXJJbmZvOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgICAgbWFwTGF5ZXJzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgICAgb25NYXBUb2dnbGVMYXllcjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICBvbk1hcFN0eWxlTG9hZGVkOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgIG9uTWFwUmVuZGVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgIGdldE1hcGJveFJlZjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICBpbmRleDogUHJvcFR5cGVzLm51bWJlcixcbiAgICAgIHBvcHVwU2V0dGluZ3M6IFByb3BUeXBlcy5vYmplY3RcbiAgICB9O1xuXG4gICAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICAgIE1hcENvbXBvbmVudDogTWFwYm94R0xNYXAsXG4gICAgICBkZWNrR2xQcm9wczoge30sXG4gICAgICBpbmRleDogMCxcbiAgICAgIHByaW1hcnk6IHRydWVcbiAgICB9O1xuXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICAgIHN1cGVyKHByb3BzKTtcblxuICAgICAgdGhpcy5wcmV2aW91c0xheWVycyA9IHtcbiAgICAgICAgLy8gW2xheWVycy5pZF06IG1hcGJveExheWVyQ29uZmlnXG4gICAgICB9O1xuXG4gICAgICB0aGlzLl9kZWNrID0gbnVsbDtcbiAgICAgIHRoaXMuX3JlZiA9IGNyZWF0ZVJlZigpO1xuXG4gICAgICAvLyBSZW5kZXIgbGltaXRpbmcgbWVjaGFuaXNtXG4gICAgICB0aGlzLl9oYXNSZW5kZXJlZCA9IGNyZWF0ZVJlZigpO1xuICAgICAgdGhpcy5fbW91c2VQb3NpdGlvbiA9IGNyZWF0ZVJlZigpO1xuICAgIH1cblxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgb2JzZXJ2ZURpbWVuc2lvbnModGhpcy5fcmVmLmN1cnJlbnQsIHRoaXMuX2hhbmRsZVJlc2l6ZSk7XG4gICAgfVxuXG4gICAgY29tcG9uZW50RGlkVXBkYXRlKCkge1xuICAgICAgY29uc3QgY29udGV4dExvc3QgPSB0aGlzLnN0YXRlPy5jb250ZXh0TG9zdDtcblxuICAgICAgaWYgKGNvbnRleHRMb3N0KSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby1kaWQtdXBkYXRlLXNldC1zdGF0ZVxuICAgICAgICB0aGlzLnNldFN0YXRlKHtjb250ZXh0TG9zdDogZmFsc2V9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgIC8vIHVuYmluZCBtYXBib3hnbCBldmVudCBsaXN0ZW5lclxuICAgICAgaWYgKHRoaXMuX21hcCkge1xuICAgICAgICB0aGlzLl9tYXAub2ZmKE1BUEJPWEdMX1NUWUxFX1VQREFURSk7XG4gICAgICAgIHRoaXMuX21hcC5vZmYoTUFQQk9YR0xfUkVOREVSKTtcbiAgICAgIH1cbiAgICAgIHVub2JzZXJ2ZURpbWVuc2lvbnModGhpcy5fcmVmLmN1cnJlbnQpO1xuICAgIH1cblxuICAgIF9oYW5kbGVSZXNpemUgPSBkaW1lbnNpb25zID0+IHtcbiAgICAgIGNvbnN0IHtwcmltYXJ5LCBpc0V4cG9ydH0gPSB0aGlzLnByb3BzO1xuICAgICAgaWYgKHByaW1hcnkpIHtcbiAgICAgICAgY29uc3Qge21hcFN0YXRlQWN0aW9uc30gPSB0aGlzLnByb3BzO1xuICAgICAgICBpZiAoIWlzRXhwb3J0ICYmIGRpbWVuc2lvbnMgJiYgZGltZW5zaW9ucy53aWR0aCA+IDAgJiYgZGltZW5zaW9ucy5oZWlnaHQgPiAwKSB7XG4gICAgICAgICAgbWFwU3RhdGVBY3Rpb25zLnVwZGF0ZU1hcChkaW1lbnNpb25zKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBsYXllcnNTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLmxheWVycztcbiAgICBsYXllckRhdGFTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLmxheWVyRGF0YTtcbiAgICBtYXBMYXllcnNTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLm1hcExheWVycztcbiAgICBsYXllck9yZGVyU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy5sYXllck9yZGVyO1xuICAgIHBvcHVwU2V0dGluZ3NTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLnBvcHVwU2V0dGluZ3M7XG5cbiAgICBsYXllcnNUb1JlbmRlclNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICB0aGlzLmxheWVyc1NlbGVjdG9yLFxuICAgICAgdGhpcy5sYXllckRhdGFTZWxlY3RvcixcbiAgICAgIHRoaXMubWFwTGF5ZXJzU2VsZWN0b3IsXG4gICAgICB0aGlzLnBvcHVwU2V0dGluZ3NTZWxlY3RvcixcbiAgICAgIHByZXBhcmVMYXllcnNUb1JlbmRlclxuICAgICk7XG4gICAgbGF5ZXJzRm9yRGVja1NlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICB0aGlzLmxheWVyc1NlbGVjdG9yLFxuICAgICAgdGhpcy5sYXllckRhdGFTZWxlY3RvcixcbiAgICAgIHByZXBhcmVMYXllcnNGb3JEZWNrXG4gICAgKTtcbiAgICBmaWx0ZXJzU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy5maWx0ZXJzO1xuICAgIHBvbHlnb25GaWx0ZXJzID0gY3JlYXRlU2VsZWN0b3IodGhpcy5maWx0ZXJzU2VsZWN0b3IsIGZpbHRlcnMgPT5cbiAgICAgIGZpbHRlcnMuZmlsdGVyKGYgPT4gZi50eXBlID09PSBGSUxURVJfVFlQRVMucG9seWdvbilcbiAgICApO1xuXG4gICAgbWFwYm94TGF5ZXJzU2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihcbiAgICAgIHRoaXMubGF5ZXJzU2VsZWN0b3IsXG4gICAgICB0aGlzLmxheWVyRGF0YVNlbGVjdG9yLFxuICAgICAgdGhpcy5sYXllck9yZGVyU2VsZWN0b3IsXG4gICAgICB0aGlzLmxheWVyc1RvUmVuZGVyU2VsZWN0b3IsXG4gICAgICBnZW5lcmF0ZU1hcGJveExheWVyc1xuICAgICk7XG5cbiAgICAvKiBjb21wb25lbnQgcHJpdmF0ZSBmdW5jdGlvbnMgKi9cbiAgICBfb25DbG9zZU1hcFBvcG92ZXIgPSAoKSA9PiB7XG4gICAgICB0aGlzLnByb3BzLnZpc1N0YXRlQWN0aW9ucy5vbkxheWVyQ2xpY2sobnVsbCk7XG4gICAgfTtcblxuICAgIF9vbkxheWVyU2V0RG9tYWluID0gKGlkeCwgY29sb3JEb21haW4pID0+IHtcbiAgICAgIHRoaXMucHJvcHMudmlzU3RhdGVBY3Rpb25zLmxheWVyQ29uZmlnQ2hhbmdlKHRoaXMucHJvcHMubGF5ZXJzW2lkeF0sIHtcbiAgICAgICAgY29sb3JEb21haW5cbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBfaGFuZGxlTWFwVG9nZ2xlTGF5ZXIgPSBsYXllcklkID0+IHtcbiAgICAgIGNvbnN0IHtpbmRleDogbWFwSW5kZXggPSAwLCB2aXNTdGF0ZUFjdGlvbnN9ID0gdGhpcy5wcm9wcztcbiAgICAgIHZpc1N0YXRlQWN0aW9ucy50b2dnbGVMYXllckZvck1hcChtYXBJbmRleCwgbGF5ZXJJZCk7XG4gICAgfTtcblxuICAgIF9vbk1hcGJveFN0eWxlVXBkYXRlID0gKCkgPT4ge1xuICAgICAgLy8gZm9yY2UgcmVmcmVzaCBtYXBib3hnbCBsYXllcnNcbiAgICAgIHRoaXMucHJldmlvdXNMYXllcnMgPSB7fTtcbiAgICAgIHRoaXMuX3VwZGF0ZU1hcGJveExheWVycygpO1xuXG4gICAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMub25NYXBTdHlsZUxvYWRlZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzLnByb3BzLm9uTWFwU3R5bGVMb2FkZWQodGhpcy5fbWFwKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgX3NldE1hcGJveE1hcCA9IG1hcGJveCA9PiB7XG4gICAgICBpZiAoIXRoaXMuX21hcCAmJiBtYXBib3gpIHtcbiAgICAgICAgdGhpcy5fbWFwID0gbWFwYm94LmdldE1hcCgpO1xuICAgICAgICAvLyBpIG5vdGljZWQgaW4gY2VydGFpbiBjb250ZXh0IHdlIGRvbid0IGFjY2VzcyB0aGUgYWN0dWFsIG1hcCBlbGVtZW50XG4gICAgICAgIGlmICghdGhpcy5fbWFwKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIGJpbmQgbWFwYm94Z2wgZXZlbnQgbGlzdGVuZXJcbiAgICAgICAgdGhpcy5fbWFwLm9uKE1BUEJPWEdMX1NUWUxFX1VQREFURSwgdGhpcy5fb25NYXBib3hTdHlsZVVwZGF0ZSk7XG5cbiAgICAgICAgdGhpcy5fbWFwLm9uKE1BUEJPWEdMX1JFTkRFUiwgKCkgPT4ge1xuICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5wcm9wcy5vbk1hcFJlbmRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdGhpcy5wcm9wcy5vbk1hcFJlbmRlcih0aGlzLl9tYXApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnByb3BzLmdldE1hcGJveFJlZikge1xuICAgICAgICAvLyBUaGUgcGFyZW50IGNvbXBvbmVudCBjYW4gZ2FpbiBhY2Nlc3MgdG8gb3VyIE1hcGJveEdsTWFwIGJ5XG4gICAgICAgIC8vIHByb3ZpZGluZyB0aGlzIGNhbGxiYWNrLiBOb3RlIHRoYXQgJ21hcGJveCcgd2lsbCBiZSBudWxsIHdoZW4gdGhlXG4gICAgICAgIC8vIHJlZiBpcyB1bnNldCAoZS5nLiB3aGVuIGEgc3BsaXQgbWFwIGlzIGNsb3NlZCkuXG4gICAgICAgIHRoaXMucHJvcHMuZ2V0TWFwYm94UmVmKG1hcGJveCwgdGhpcy5wcm9wcy5pbmRleCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF9vbkRlY2tJbml0aWFsaXplZChnbCkge1xuICAgICAgaWYgKHRoaXMucHJvcHMub25EZWNrSW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5vbkRlY2tJbml0aWFsaXplZCh0aGlzLl9kZWNrLCBnbCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgX29uQmVmb3JlUmVuZGVyID0gKHtnbH0pID0+IHtcbiAgICAgIHNldExheWVyQmxlbmRpbmcoZ2wsIHRoaXMucHJvcHMubGF5ZXJCbGVuZGluZyk7XG4gICAgfTtcblxuICAgIF9vbkRlY2tFcnJvciA9IChlcnJvciwgbGF5ZXIpID0+IHtcbiAgICAgIGlmIChlcnJvcj8ubWVzc2FnZSA9PT0gJ1dlYkdMIGNvbnRleHQgaXMgbG9zdCcpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7Y29udGV4dExvc3Q6IHRydWV9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBgQW4gZXJyb3IgaW4gZGVjay5nbDogJHtlcnJvcj8ubWVzc2FnZX0gaW4gJHtsYXllcj8uaWR9YDtcbiAgICAgIGNvbnN0IG5vdGlmaWNhdGlvbklkID0gYCR7bGF5ZXI/LmlkfS0ke2Vycm9yPy5tZXNzYWdlfWA7XG5cbiAgICAgIC8vIFRocm90dGxlIGVycm9yIG5vdGlmaWNhdGlvbnMsIGFzIFJlYWN0IGRvZXNuJ3QgbGlrZSB0b28gbWFueSBzdGF0ZSBjaGFuZ2VzIGZyb20gaGVyZS5cbiAgICAgIHRoaXMuX2RlY2tHTEVycm9yc0VsYXBzZWQgPSB0aGlzLl9kZWNrR0xFcnJvcnNFbGFwc2VkIHx8IHt9O1xuICAgICAgY29uc3QgbGFzdFNob3duID0gdGhpcy5fZGVja0dMRXJyb3JzRWxhcHNlZFtub3RpZmljYXRpb25JZF07XG4gICAgICBpZiAoIWxhc3RTaG93biB8fCBsYXN0U2hvd24gPCBEYXRlLm5vdygpIC0gVEhST1RUTEVfTk9USUZJQ0FUSU9OX1RJTUUpIHtcbiAgICAgICAgdGhpcy5fZGVja0dMRXJyb3JzRWxhcHNlZFtub3RpZmljYXRpb25JZF0gPSBEYXRlLm5vdygpO1xuXG4gICAgICAgIC8vIENyZWF0ZSBuZXcgZXJyb3Igbm90aWZpY2F0aW9uIG9yIHVwZGF0ZSBleGlzdGluZyBvbmUgd2l0aCBzYW1lIGlkLlxuICAgICAgICAvLyBVcGRhdGUgaXMgcmVxdWlyZWQgdG8gcHJlc2VydmUgdGhlIG9yZGVyIG9mIG5vdGlmaWNhdGlvbnMgYXMgdGhleSBwcm9iYWJseSBhcmUgZ29pbmcgdG8gXCJqdW1wXCIgYmFzZWQgb24gb3JkZXIgb2YgZXJyb3JzLlxuICAgICAgICBjb25zdCB7dWlTdGF0ZUFjdGlvbnN9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgdWlTdGF0ZUFjdGlvbnMuYWRkTm90aWZpY2F0aW9uKFxuICAgICAgICAgIGVycm9yTm90aWZpY2F0aW9uKHtcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yTWVzc2FnZSxcbiAgICAgICAgICAgIGlkOiBub3RpZmljYXRpb25JZFxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8qIGNvbXBvbmVudCByZW5kZXIgZnVuY3Rpb25zICovXG5cbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBjb21wbGV4aXR5ICovXG4gICAgX3JlbmRlck1hcFBvcG92ZXIobGF5ZXJzVG9SZW5kZXIpIHtcbiAgICAgIC8vIE92ZXJyaWRlbiBpbiBCdWlsZGVyOiBmZWF0dXJlcy9idWlsZGVyL3VpL0tlcGxlckdsL01hcENvbnRhaW5lci9NYXBDb250YWluZXIudHN4XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvKiBlc2xpbnQtZW5hYmxlIGNvbXBsZXhpdHkgKi9cblxuICAgIF9nZXRIb3ZlclhZKHZpZXdwb3J0LCBsbmdMYXQpIHtcbiAgICAgIGNvbnN0IHNjcmVlbkNvb3JkID0gIXZpZXdwb3J0IHx8ICFsbmdMYXQgPyBudWxsIDogdmlld3BvcnQucHJvamVjdChsbmdMYXQpO1xuICAgICAgcmV0dXJuIHNjcmVlbkNvb3JkICYmIHt4OiBzY3JlZW5Db29yZFswXSwgeTogc2NyZWVuQ29vcmRbMV19O1xuICAgIH1cblxuICAgIF9yZW5kZXJEZWNrT3ZlcmxheShsYXllcnNGb3JEZWNrKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG1hcFN0YXRlLFxuICAgICAgICBtYXBTdHlsZSxcbiAgICAgICAgbGF5ZXJEYXRhLFxuICAgICAgICBsYXllck9yZGVyLFxuICAgICAgICBsYXllcnMsXG4gICAgICAgIHZpc1N0YXRlQWN0aW9ucyxcbiAgICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgICAgIG1hcGJveEFwaVVybCxcbiAgICAgICAgbWFza1BvbHlnb25cbiAgICAgIH0gPSB0aGlzLnByb3BzO1xuICAgICAgdHJhY2tlcnMuZHJhd0NvdW50Py5pbmNyZW1lbnQoKTtcblxuICAgICAgLy8gaW5pdGlhbGlzZSBsYXllcnMgZnJvbSBwcm9wcyBpZiBleGlzdHNcbiAgICAgIGxldCBkZWNrR2xMYXllcnMgPSB0aGlzLnByb3BzLmRlY2tHbFByb3BzPy5sYXllcnMgfHwgW107XG5cbiAgICAgIC8vIHdhaXQgdW50aWwgZGF0YSBpcyByZWFkeSBiZWZvcmUgcmVuZGVyIGRhdGEgbGF5ZXJzXG4gICAgICBpZiAobGF5ZXJEYXRhICYmIGxheWVyRGF0YS5sZW5ndGgpIHtcbiAgICAgICAgLy8gbGFzdCBsYXllciByZW5kZXIgZmlyc3RcbiAgICAgICAgY29uc3QgZGF0YUxheWVycyA9IGxheWVyT3JkZXJcbiAgICAgICAgICAuc2xpY2UoKVxuICAgICAgICAgIC5yZXZlcnNlKClcbiAgICAgICAgICAuZmlsdGVyKGlkeCA9PiBsYXllcnNGb3JEZWNrW2xheWVyc1tpZHhdLmlkXSlcbiAgICAgICAgICAucmVkdWNlKChvdmVybGF5cywgaWR4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsYXllckNhbGxiYWNrcyA9IHtcbiAgICAgICAgICAgICAgb25TZXRMYXllckRvbWFpbjogdmFsID0+IHRoaXMuX29uTGF5ZXJTZXREb21haW4oaWR4LCB2YWwpXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgbGF5ZXJPdmVybGF5ID0gcmVuZGVyRGVja0dsTGF5ZXIodGhpcy5wcm9wcywgbGF5ZXJDYWxsYmFja3MsIGlkeCk7XG4gICAgICAgICAgICByZXR1cm4gb3ZlcmxheXMuY29uY2F0KGxheWVyT3ZlcmxheSB8fCBbXSk7XG4gICAgICAgICAgfSwgW10pO1xuICAgICAgICBkZWNrR2xMYXllcnMgPSBkZWNrR2xMYXllcnMuY29uY2F0KGRhdGFMYXllcnMpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5wcm9wcy5kZWNrR2xQcm9wcz8ubGF5ZXJzT25Ub3ApIHtcbiAgICAgICAgZGVja0dsTGF5ZXJzID0gZGVja0dsTGF5ZXJzLmNvbmNhdCh0aGlzLnByb3BzLmRlY2tHbFByb3BzLmxheWVyc09uVG9wKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1hc2tQb2x5Z29uKSB7XG4gICAgICAgIGRlY2tHbExheWVycy5wdXNoKFxuICAgICAgICAgIG5ldyBTb2xpZFBvbHlnb25MYXllcih7XG4gICAgICAgICAgICBpZDogTUFTS19MQVlFUl9JRCxcbiAgICAgICAgICAgIG9wZXJhdGlvbjogT1BFUkFUSU9OLk1BU0ssXG4gICAgICAgICAgICBkYXRhOiBbbWFza1BvbHlnb25dLFxuICAgICAgICAgICAgZGF0YUNvbXBhcmF0b3I6IChkYXRhLCBvbGREYXRhKSA9PiBkYXRhWzBdID09PSBvbGREYXRhWzBdLFxuICAgICAgICAgICAgZ2V0UG9seWdvbjogZCA9PiBkLFxuICAgICAgICAgICAgZ2V0RmlsbENvbG9yOiBbMjU1LCAyNTUsIDI1NSwgMjU1XVxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChtYXBTdHlsZS52aXNpYmxlTGF5ZXJHcm91cHNbJzNkIGJ1aWxkaW5nJ10pIHtcbiAgICAgICAgZGVja0dsTGF5ZXJzLnB1c2goXG4gICAgICAgICAgbmV3IFRocmVlREJ1aWxkaW5nTGF5ZXIoe1xuICAgICAgICAgICAgaWQ6ICdfa2VwbGVyZ2xfM2QtYnVpbGRpbmcnLFxuICAgICAgICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgICAgICAgICBtYXBib3hBcGlVcmwsXG4gICAgICAgICAgICB0aHJlZURCdWlsZGluZ0NvbG9yOiBtYXBTdHlsZS50aHJlZURCdWlsZGluZ0NvbG9yLFxuICAgICAgICAgICAgdXBkYXRlVHJpZ2dlcnM6IHtcbiAgICAgICAgICAgICAgZ2V0RmlsbENvbG9yOiBtYXBTdHlsZS50aHJlZURCdWlsZGluZ0NvbG9yXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgbGV0IGVmZmVjdHMgPSBbXTtcbiAgICAgIGlmIChtYXBTdHlsZS5ib3R0b21NYXBTdHlsZS50eXBlID09PSAnZ21hcHNfM2QnKSB7XG4gICAgICAgIC8vIEluamVjdCAzRCB0aWxlcyB3aGVuIG1hcCBzdHlsZSBpcyBWb3lhZ2VyIHdpdGhvdXQgbGF5ZXJzXG4gICAgICAgIGRlY2tHbExheWVycyA9IGRlY2tHbExheWVyc1xuICAgICAgICAgIC5maWx0ZXIobCA9PiBCb29sZWFuKGwgJiYgbC5jbG9uZSkpXG4gICAgICAgICAgLm1hcChsID0+IGwuY2xvbmUoe2V4dGVuc2lvbnM6IFsuLi5sLnByb3BzLmV4dGVuc2lvbnMsIHRlcnJhaW5FeHRlbnNpb25dfSkpO1xuICAgICAgICBkZWNrR2xMYXllcnMucHVzaCh0aWxlczNkLmNsb25lKCkpO1xuXG4gICAgICAgIGlmIChtYXBTdHlsZS5zdHlsZVR5cGUgPT09ICdnb29nbGUtM2Qtc2tldGNoJykge1xuICAgICAgICAgIGVmZmVjdHMgPSBhbGxFZmZlY3RzO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIExpbWl0IHJlbmRlcnNcbiAgICAgIGNvbnN0IGhhc1JlbmRlcmVkID0gdGhpcy5faGFzUmVuZGVyZWQ7XG4gICAgICBjb25zdCByZXNldEhhc1JlbmRlcmVkID0gKCkgPT4gKGhhc1JlbmRlcmVkLmN1cnJlbnQgPSBmYWxzZSk7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8RGVja0dMXG4gICAgICAgICAgY29udHJvbGxlcj17dHJ1ZX1cbiAgICAgICAgICB7Li4udGhpcy5wcm9wcy5kZWNrR2xQcm9wc31cbiAgICAgICAgICB2aWV3U3RhdGU9e21hcFN0YXRlfVxuICAgICAgICAgIG9uVmlld1N0YXRlQ2hhbmdlPXsoe3ZpZXdTdGF0ZSwgaW50ZXJhY3Rpb25TdGF0ZX0pID0+IHtcbiAgICAgICAgICAgIC8vIExpbWl0IHVwZGF0ZXMgKHByZXZlbnRzIGZyZWV6ZXMgd2hlbiBkZXYgdG9vbHMgb3BlbilcbiAgICAgICAgICAgIGlmICghaGFzUmVuZGVyZWQuY3VycmVudCAmJiB2aWV3U3RhdGUud2lkdGggPiAxICYmIHZpZXdTdGF0ZS5oZWlnaHQgPiAxKSB7XG4gICAgICAgICAgICAgIGhhc1JlbmRlcmVkLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICAgICAgICB0aGlzLl9vblZpZXdwb3J0Q2hhbmdlKHZpZXdTdGF0ZSwgaW50ZXJhY3Rpb25TdGF0ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgICBpZD1cImRlZmF1bHQtZGVja2dsLW92ZXJsYXlcIlxuICAgICAgICAgIGxheWVycz17ZGVja0dsTGF5ZXJzfVxuICAgICAgICAgIGVmZmVjdHM9e2VmZmVjdHN9XG4gICAgICAgICAgb25CZWZvcmVSZW5kZXI9e29wdHMgPT4ge1xuICAgICAgICAgICAgcmVzZXRIYXNSZW5kZXJlZCgpO1xuICAgICAgICAgICAgdGhpcy5fb25CZWZvcmVSZW5kZXIob3B0cyk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkhvdmVyPXt2aXNTdGF0ZUFjdGlvbnMub25MYXllckhvdmVyfVxuICAgICAgICAgIG9uQ2xpY2s9e3Zpc1N0YXRlQWN0aW9ucy5vbkxheWVyQ2xpY2t9XG4gICAgICAgICAgb25FcnJvcj17ZSA9PiB7XG4gICAgICAgICAgICBkZWJ1Z2dlcjtcbiAgICAgICAgICAgIHRoaXMuX29uRGVja0Vycm9yKGUpO1xuICAgICAgICAgIH19XG4gICAgICAgICAgcmVmPXtjb21wID0+IHtcbiAgICAgICAgICAgIGlmIChjb21wICYmIGNvbXAuZGVjayAmJiBjb21wLmRlY2sgIT09IHRoaXMuX2RlY2spIHtcbiAgICAgICAgICAgICAgdGhpcy5fZGVjayA9IGNvbXAuZGVjaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uV2ViR0xJbml0aWFsaXplZD17Z2wgPT4gdGhpcy5fb25EZWNrSW5pdGlhbGl6ZWQoZ2wpfVxuICAgICAgICAgIGxheWVyRmlsdGVyPXsoe2xheWVyLCB2aWV3cG9ydH0pID0+IHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgaXNOYU4obGF5ZXIucHJvcHMudmlzaWJpbGl0eUJ5Wm9vbT8ubWluKSB8fFxuICAgICAgICAgICAgICBpc05hTihsYXllci5wcm9wcy52aXNpYmlsaXR5Qnlab29tPy5tYXgpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50Wm9vbVJhbmdlID0gTWF0aC5yb3VuZChtYXBTdGF0ZS56b29tKTtcblxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgbGF5ZXIucHJvcHMudmlzaWJpbGl0eUJ5Wm9vbS5taW4gPD0gY3VycmVudFpvb21SYW5nZSAmJlxuICAgICAgICAgICAgICBsYXllci5wcm9wcy52aXNpYmlsaXR5Qnlab29tLm1heCA+PSBjdXJyZW50Wm9vbVJhbmdlXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICApO1xuICAgIH1cblxuICAgIF91cGRhdGVNYXBib3hMYXllcnMoKSB7XG4gICAgICBjb25zdCBtYXBib3hMYXllcnMgPSB0aGlzLm1hcGJveExheWVyc1NlbGVjdG9yKHRoaXMucHJvcHMpO1xuICAgICAgaWYgKCFPYmplY3Qua2V5cyhtYXBib3hMYXllcnMpLmxlbmd0aCAmJiAhT2JqZWN0LmtleXModGhpcy5wcmV2aW91c0xheWVycykubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdXBkYXRlTWFwYm94TGF5ZXJzKHRoaXMuX21hcCwgbWFwYm94TGF5ZXJzLCB0aGlzLnByZXZpb3VzTGF5ZXJzKTtcblxuICAgICAgdGhpcy5wcmV2aW91c0xheWVycyA9IG1hcGJveExheWVycztcbiAgICB9XG5cbiAgICBfcmVuZGVyTWFwYm94T3ZlcmxheXMoKSB7XG4gICAgICBpZiAodGhpcy5fbWFwICYmIHRoaXMuX21hcC5pc1N0eWxlTG9hZGVkKCkpIHtcbiAgICAgICAgdGhpcy5fdXBkYXRlTWFwYm94TGF5ZXJzKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgX29uVmlld3BvcnRDaGFuZ2UgPSAodmlld1N0YXRlLCBpbnRlcmFjdGlvblN0YXRlKSA9PiB7XG4gICAgICB0cmFja2Vycy52aWV3cG9ydENoYW5nZUNvdW50Py5pbmNyZW1lbnQoKTtcblxuICAgICAgY29uc3Qge3dpZHRoLCBoZWlnaHQsIC4uLnJlc3RWaWV3U3RhdGV9ID0gdmlld1N0YXRlO1xuICAgICAgY29uc3Qge3ByaW1hcnksIGlzRXhwb3J0fSA9IHRoaXMucHJvcHM7XG4gICAgICAvLyByZWFjdC1tYXAtZ2wgc2VuZHMgMCwwIGRpbWVuc2lvbnMgZHVyaW5nIGluaXRpYWxpemF0aW9uXG4gICAgICAvLyBhZnRlciB3ZSBoYXZlIHJlY2VpdmVkIHByb3BlciBkaW1lbnNpb25zIGZyb20gb2JzZXJ2ZURpbWVuc2lvbnNcbiAgICAgIGNvbnN0IG5leHQgPSB7XG4gICAgICAgIC4uLih3aWR0aCA+IDAgJiYgaGVpZ2h0ID4gMCA/IHZpZXdTdGF0ZSA6IHJlc3RWaWV3U3RhdGUpLFxuXG4gICAgICAgIC8vIEF1dG8tdXBkYXRlIHRoZSBjYW1lcmEgaGVpZ2h0IGFjY29yZGluZyB0byAzRCB0aWxlcywgZXhjZXB0IHdoZW4gdHJhbnNpdGlvbmluZ1xuICAgICAgICAuLi4oaW50ZXJhY3Rpb25TdGF0ZSAmJiAhaW50ZXJhY3Rpb25TdGF0ZS5pblRyYW5zaXRpb24gJiYge3Bvc2l0aW9uOiBbMCwgMCwgaF19KVxuICAgICAgICAvLyBlbmFibGluZyB0cmFuc2l0aW9uIGluIHR3byBtYXBzIG1heSBsZWFkIHRvIGVuZGxlc3MgdXBkYXRlIGxvb3BzXG4gICAgICAgIC8vIHRyYW5zaXRpb25EdXJhdGlvbjogcHJpbWFyeSA/IFRSQU5TSVRJT05fRFVSQVRJT04gOiAwIC8vIERpc2FibGUgZm9yIDNEIHRpbGVzIHRyYW5zaXRpb25zXG4gICAgICB9O1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLm9uVmlld1N0YXRlQ2hhbmdlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRoaXMucHJvcHMub25WaWV3U3RhdGVDaGFuZ2UobmV4dCk7XG4gICAgICB9XG5cbiAgICAgIGlmICghaXNFeHBvcnQpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5tYXBTdGF0ZUFjdGlvbnMudXBkYXRlTWFwKG5leHQpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBfdG9nZ2xlTWFwQ29udHJvbCA9IHBhbmVsSWQgPT4ge1xuICAgICAgY29uc3Qge2luZGV4LCB1aVN0YXRlQWN0aW9uc30gPSB0aGlzLnByb3BzO1xuXG4gICAgICB1aVN0YXRlQWN0aW9ucy50b2dnbGVNYXBDb250cm9sKHBhbmVsSWQsIGluZGV4KTtcbiAgICB9O1xuXG4gICAgLyogZXNsaW50LWRpc2FibGUgY29tcGxleGl0eSAqL1xuICAgIF9yZW5kZXJNYXAoKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG1hcFN0YXRlLFxuICAgICAgICBtYXBTdHlsZSxcbiAgICAgICAgbWFwU3RhdGVBY3Rpb25zLFxuICAgICAgICBsYXllcnMsXG4gICAgICAgIE1hcENvbXBvbmVudCxcbiAgICAgICAgZGF0YXNldHMsXG4gICAgICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICAgICAgICBtYXBib3hBcGlVcmwsXG4gICAgICAgIG1hcENvbnRyb2xzLFxuICAgICAgICBpc0V4cG9ydCxcbiAgICAgICAgbG9jYWxlLFxuICAgICAgICB1aVN0YXRlQWN0aW9ucyxcbiAgICAgICAgdmlzU3RhdGVBY3Rpb25zLFxuICAgICAgICBpbnRlcmFjdGlvbkNvbmZpZyxcbiAgICAgICAgZWRpdG9yLFxuICAgICAgICBpbmRleCxcbiAgICAgICAgcHJpbWFyeVxuICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgIGNvbnN0IGxheWVyc1RvUmVuZGVyID0gdGhpcy5sYXllcnNUb1JlbmRlclNlbGVjdG9yKHRoaXMucHJvcHMpO1xuICAgICAgY29uc3QgbGF5ZXJzRm9yRGVjayA9IHRoaXMubGF5ZXJzRm9yRGVja1NlbGVjdG9yKHRoaXMucHJvcHMpO1xuXG4gICAgICBjb25zdCBtYXBQcm9wcyA9IHtcbiAgICAgICAgLi4ubWFwU3RhdGUsXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICBwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6IHRydWUsXG4gICAgICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICAgICAgICBtYXBib3hBcGlVcmwsXG4gICAgICAgIHRyYW5zZm9ybVJlcXVlc3RcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGlzRWRpdCA9IChtYXBDb250cm9scy5tYXBEcmF3IHx8IHt9KS5hY3RpdmU7XG5cbiAgICAgIGNvbnN0IGhhc0dlb2NvZGVyTGF5ZXIgPSBsYXllcnMuZmluZChsID0+IGwuaWQgPT09IEdFT0NPREVSX0xBWUVSX0lEKTtcbiAgICAgIGNvbnN0IGlzU3BsaXQgPSBCb29sZWFuKG1hcFN0YXRlLmlzU3BsaXQpO1xuICAgICAgY29uc3QgbW91c2VQb3NpdGlvbiA9IHRoaXMuX21vdXNlUG9zaXRpb247XG5cbiAgICAgIGNvbnN0IG5lZWRzQmFzZW1hcCA9IG1hcFN0eWxlLmJvdHRvbU1hcFN0eWxlLnR5cGUgIT09ICdnbWFwc18zZCc7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPE1hcENvbnRyb2xcbiAgICAgICAgICAgIGRhdGFzZXRzPXtkYXRhc2V0c31cbiAgICAgICAgICAgIGF2YWlsYWJsZUxvY2FsZXM9e09iamVjdC5rZXlzKExPQ0FMRV9DT0RFUyl9XG4gICAgICAgICAgICBkcmFnUm90YXRlPXttYXBTdGF0ZS5kcmFnUm90YXRlfVxuICAgICAgICAgICAgaXNTcGxpdD17aXNTcGxpdH1cbiAgICAgICAgICAgIHByaW1hcnk9e3ByaW1hcnl9XG4gICAgICAgICAgICBpc0V4cG9ydD17aXNFeHBvcnR9XG4gICAgICAgICAgICBsYXllcnM9e2xheWVyc31cbiAgICAgICAgICAgIGxheWVyc1RvUmVuZGVyPXtsYXllcnNUb1JlbmRlcn1cbiAgICAgICAgICAgIG1hcEluZGV4PXtpbmRleH1cbiAgICAgICAgICAgIG1hcENvbnRyb2xzPXttYXBDb250cm9sc31cbiAgICAgICAgICAgIHJlYWRPbmx5PXt0aGlzLnByb3BzLnJlYWRPbmx5fVxuICAgICAgICAgICAgc2NhbGU9e21hcFN0YXRlLnNjYWxlIHx8IDF9XG4gICAgICAgICAgICB0b3A9e2ludGVyYWN0aW9uQ29uZmlnLmdlb2NvZGVyICYmIGludGVyYWN0aW9uQ29uZmlnLmdlb2NvZGVyLmVuYWJsZWQgPyA1MiA6IDB9XG4gICAgICAgICAgICBlZGl0b3I9e2VkaXRvcn1cbiAgICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgICAgb25Ub2dnbGVQZXJzcGVjdGl2ZT17bWFwU3RhdGVBY3Rpb25zLnRvZ2dsZVBlcnNwZWN0aXZlfVxuICAgICAgICAgICAgb25Ub2dnbGVTcGxpdE1hcD17bWFwU3RhdGVBY3Rpb25zLnRvZ2dsZVNwbGl0TWFwfVxuICAgICAgICAgICAgb25NYXBUb2dnbGVMYXllcj17dGhpcy5faGFuZGxlTWFwVG9nZ2xlTGF5ZXJ9XG4gICAgICAgICAgICBvblRvZ2dsZU1hcENvbnRyb2w9e3RoaXMuX3RvZ2dsZU1hcENvbnRyb2x9XG4gICAgICAgICAgICBvblNldEVkaXRvck1vZGU9e3Zpc1N0YXRlQWN0aW9ucy5zZXRFZGl0b3JNb2RlfVxuICAgICAgICAgICAgb25TZXRMb2NhbGU9e3VpU3RhdGVBY3Rpb25zLnNldExvY2FsZX1cbiAgICAgICAgICAgIG9uVG9nZ2xlRWRpdG9yVmlzaWJpbGl0eT17dmlzU3RhdGVBY3Rpb25zLnRvZ2dsZUVkaXRvclZpc2liaWxpdHl9XG4gICAgICAgICAgLz5cbiAgICAgICAgICB7bmVlZHNCYXNlbWFwID8gKFxuICAgICAgICAgICAgPE1hcENvbXBvbmVudFxuICAgICAgICAgICAgICB7Li4ubWFwUHJvcHN9XG4gICAgICAgICAgICAgIGtleT1cImJvdHRvbVwiXG4gICAgICAgICAgICAgIHJlZj17dGhpcy5fc2V0TWFwYm94TWFwfVxuICAgICAgICAgICAgICBtYXBTdHlsZT17bWFwU3R5bGUuYm90dG9tTWFwU3R5bGV9XG4gICAgICAgICAgICAgIGdldEN1cnNvcj17dGhpcy5wcm9wcy5ob3ZlckluZm8gPyAoKSA9PiAncG9pbnRlcicgOiB1bmRlZmluZWR9XG4gICAgICAgICAgICAgIG9uTW91c2VNb3ZlPXtldnQgPT4ge1xuICAgICAgICAgICAgICAgIC8vIFNlbmRpbmcgbW91c2UgbW92ZSB1cGRhdGVzIHZpYSBSZWR1eCBpcyBleHBlbnNpdmUuIFN0b3JlXG4gICAgICAgICAgICAgICAgLy8gbG9jYWxseSBhbmQgcmVseSBvbiBkZWNrLmdsIHRvIGRyaXZlIHJlbmRlciB1cGRhdGVzXG4gICAgICAgICAgICAgICAgLy8gU2VlIEJ1aWxkZXI6IGZlYXR1cmVzL2J1aWxkZXIvdWkvS2VwbGVyR2wvTWFwQ29udGFpbmVyL01hcENvbnRhaW5lci50c3hcbiAgICAgICAgICAgICAgICBtb3VzZVBvc2l0aW9uLmN1cnJlbnQgPSB7bW91c2VQb3NpdGlvbjogZXZ0LnBvaW50fTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge1BFUkZfREVCVUcgJiYgcmVuZGVyUGVyZm9ybWFuY2VTdGF0cygpfVxuICAgICAgICAgICAgICB7dGhpcy5fcmVuZGVyRGVja092ZXJsYXkobGF5ZXJzRm9yRGVjayl9XG4gICAgICAgICAgICAgIHt0aGlzLl9yZW5kZXJNYXBib3hPdmVybGF5cygpfVxuICAgICAgICAgICAgICA8RWRpdG9yXG4gICAgICAgICAgICAgICAgaW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgICAgIGRhdGFzZXRzPXtkYXRhc2V0c31cbiAgICAgICAgICAgICAgICBlZGl0b3I9e2VkaXRvcn1cbiAgICAgICAgICAgICAgICBmaWx0ZXJzPXt0aGlzLnBvbHlnb25GaWx0ZXJzKHRoaXMucHJvcHMpfVxuICAgICAgICAgICAgICAgIGlzRW5hYmxlZD17aXNFZGl0fVxuICAgICAgICAgICAgICAgIGxheWVycz17bGF5ZXJzfVxuICAgICAgICAgICAgICAgIGxheWVyc1RvUmVuZGVyPXtsYXllcnNUb1JlbmRlcn1cbiAgICAgICAgICAgICAgICBvbkRlbGV0ZUZlYXR1cmU9e3Zpc1N0YXRlQWN0aW9ucy5kZWxldGVGZWF0dXJlfVxuICAgICAgICAgICAgICAgIG9uU2VsZWN0PXt2aXNTdGF0ZUFjdGlvbnMuc2V0U2VsZWN0ZWRGZWF0dXJlfVxuICAgICAgICAgICAgICAgIG9uVXBkYXRlPXt2aXNTdGF0ZUFjdGlvbnMuc2V0RmVhdHVyZXN9XG4gICAgICAgICAgICAgICAgb25Ub2dnbGVQb2x5Z29uRmlsdGVyPXt2aXNTdGF0ZUFjdGlvbnMuc2V0UG9seWdvbkZpbHRlckxheWVyfVxuICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICBwb2ludGVyRXZlbnRzOiBpc0VkaXQgPyAnYWxsJyA6ICdub25lJyxcbiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgICAgICAgZGlzcGxheTogZWRpdG9yLnZpc2libGUgPyAnYmxvY2snIDogJ25vbmUnXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvTWFwQ29tcG9uZW50PlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICB7UEVSRl9ERUJVRyAmJiByZW5kZXJQZXJmb3JtYW5jZVN0YXRzKCl9XG4gICAgICAgICAgICAgIHt0aGlzLl9yZW5kZXJEZWNrT3ZlcmxheShsYXllcnNGb3JEZWNrKX1cbiAgICAgICAgICAgIDwvPlxuICAgICAgICAgICl9XG4gICAgICAgICAge21hcFN0eWxlLnRvcE1hcFN0eWxlIHx8IGhhc0dlb2NvZGVyTGF5ZXIgPyAoXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXtNQVBfU1RZTEUudG9wfT5cbiAgICAgICAgICAgICAgPE1hcENvbXBvbmVudCB7Li4ubWFwUHJvcHN9IGtleT1cInRvcFwiIG1hcFN0eWxlPXttYXBTdHlsZS50b3BNYXBTdHlsZX0+XG4gICAgICAgICAgICAgICAge3RoaXMuX3JlbmRlckRlY2tPdmVybGF5KHtbR0VPQ09ERVJfTEFZRVJfSURdOiB0cnVlfSl9XG4gICAgICAgICAgICAgIDwvTWFwQ29tcG9uZW50PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAge3RoaXMuX3JlbmRlck1hcFBvcG92ZXIobGF5ZXJzVG9SZW5kZXIpfVxuICAgICAgICAgIHshaXNTcGxpdCB8fCBpbmRleCA9PT0gMSA/IDxBdHRyaWJ1dGlvbiAvPiA6IG51bGx9XG4gICAgICAgIDwvPlxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICBjb25zdCB7bWFwU3RhdGUsIG1hcFN0eWxlfSA9IHRoaXMucHJvcHM7XG4gICAgICBjb25zdCBjb250ZXh0TG9zdCA9IHRoaXMuc3RhdGU/LmNvbnRleHRMb3N0O1xuXG4gICAgICBpZiAoY29udGV4dExvc3QpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTdHlsZWRNYXBDb250YWluZXIgcmVmPXt0aGlzLl9yZWZ9IHN0eWxlPXtNQVBfU1RZTEUuY29udGFpbmVyfSBnbG9iZT17bWFwU3RhdGUuZ2xvYmV9PlxuICAgICAgICAgIHttYXBTdHlsZS5ib3R0b21NYXBTdHlsZSAmJiB0aGlzLl9yZW5kZXJNYXAoKX1cbiAgICAgICAgPC9TdHlsZWRNYXBDb250YWluZXI+XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIE1hcENvbnRhaW5lci5kaXNwbGF5TmFtZSA9ICdNYXBDb250YWluZXInO1xuXG4gIHJldHVybiBNYXBDb250YWluZXI7XG59XG4iXX0=
|
|
@@ -134,7 +134,7 @@ var KEPLER_GL_NAME = 'kepler.gl'; // __PACKAGE_VERSION__ is automatically inject
|
|
|
134
134
|
// an empty string which will allow us to retrieve the latest umd version
|
|
135
135
|
|
|
136
136
|
exports.KEPLER_GL_NAME = KEPLER_GL_NAME;
|
|
137
|
-
var KEPLER_GL_VERSION = "0.0.69-alpha.hackathon-3dtiles.
|
|
137
|
+
var KEPLER_GL_VERSION = "0.0.69-alpha.hackathon-3dtiles.5";
|
|
138
138
|
exports.KEPLER_GL_VERSION = KEPLER_GL_VERSION;
|
|
139
139
|
var KEPLER_GL_WEBSITE = 'http://kepler.gl/';
|
|
140
140
|
exports.KEPLER_GL_WEBSITE = KEPLER_GL_WEBSITE;
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@carto/kepler.gl",
|
|
3
3
|
"author": "CARTO",
|
|
4
4
|
"homepage": "https://github.com/CartoDB/carto-kepler#readme",
|
|
5
|
-
"version": "0.0.69-alpha.hackathon-3dtiles.
|
|
5
|
+
"version": "0.0.69-alpha.hackathon-3dtiles.5",
|
|
6
6
|
"description": "kepler.gl is a webgl based application to visualize large scale location data in the browser",
|
|
7
7
|
"license": "MIT",
|
|
8
8
|
"main": "dist/index.js",
|
|
Binary file
|
|
@@ -71,7 +71,7 @@ const GOOGLE_MAPS_API_KEY = 'AIzaSyCpvQymc5wjSYIsxy3RV1widM3p3h78CAk';
|
|
|
71
71
|
class CustomTile3DLayer extends Tile3DLayer {
|
|
72
72
|
filterSubLayer({layer, viewport}) {
|
|
73
73
|
// Do not show tiles which are many layers too low in resolution (avoids artifacts)
|
|
74
|
-
const lodZoom =
|
|
74
|
+
const lodZoom = 22 - Math.log2(layer.props.tile.lodMetricValue);
|
|
75
75
|
return lodZoom > viewport?.zoom;
|
|
76
76
|
}
|
|
77
77
|
}
|