@dereekb/dbx-form 10.1.1 → 10.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/calendar/lib/calendar.schedule.selection.store.mjs +3 -3
- package/esm2022/lib/form/io/form.input.directive.mjs +14 -4
- package/esm2022/lib/formly/field/value/date/date.value.mjs +3 -3
- package/esm2022/lib/formly/field/value/date/datetime.field.component.mjs +16 -11
- package/esm2022/lib/formly/field/value/date/datetime.field.mjs +1 -1
- package/esm2022/lib/formly/field/value/date/fixeddaterange.field.component.mjs +3 -3
- package/fesm2022/dereekb-dbx-form-calendar.mjs +2 -2
- package/fesm2022/dereekb-dbx-form-calendar.mjs.map +1 -1
- package/fesm2022/dereekb-dbx-form.mjs +30 -15
- package/fesm2022/dereekb-dbx-form.mjs.map +1 -1
- package/lib/form/io/form.input.directive.d.ts +3 -2
- package/lib/formly/field/value/date/datetime.field.component.d.ts +27 -22
- package/lib/formly/field/value/date/datetime.field.d.ts +1 -1
- package/mapbox/package.json +1 -1
- package/package.json +1 -1
|
@@ -138,4 +138,4 @@ export function fixedDateRangeField(config = {}) {
|
|
|
138
138
|
});
|
|
139
139
|
return fieldConfig;
|
|
140
140
|
}
|
|
141
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUuZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC92YWx1ZS9kYXRlL2RhdGV0aW1lLmZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdEMsT0FBTyxFQUFzQixXQUFXLEVBQUUsNEJBQTRCLEVBQW1ELE1BQU0sYUFBYSxDQUFDO0FBQzdJLE9BQU8sRUFBeUIsd0JBQXdCLEVBQWtDLE1BQU0sNEJBQTRCLENBQUM7QUFDN0gsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFPMUQsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQXFELEdBQUcsRUFBRSxDQUN2RyxFQUFFLENBQUM7SUFDRCxvQkFBb0IsRUFBRSxJQUFJO0lBQzFCLGlCQUFpQixFQUFFLElBQUk7Q0FDeEIsQ0FBQyxDQUFDO0FBRUw7O0dBRUc7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUFDLFNBQW1DLEVBQUU7SUFDakUsT0FBTyxhQUFhLENBQUM7UUFDbkIsR0FBRyxNQUFNO1FBQ1QsUUFBUSxFQUFFLHdCQUF3QixDQUFDLFFBQVE7UUFDM0MsUUFBUSxFQUFFLElBQUk7S0FDZixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxTQUF1QyxFQUFFO0lBQ3JFLE1BQU0sRUFBRSxHQUFHLEdBQUcsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxRQUFRLEdBQUcsd0JBQXdCLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxZQUFZ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O1FBQ0gsSUFBSSxFQUFFLGdCQUFnQjtRQUN0QixHQUFHLDRCQUE0QixDQUFDLE1BQU0sRUFBRTtZQUN0QyxHQUFHLGlCQUFpQjtZQUNwQixXQUFXO1lBQ1gsY0FBYztZQUNkLFlBQVk7WUFDWixTQUFTO1lBQ1QsT0FBTztZQUNQLFFBQVE7WUFDUixhQUFhO1lBQ2IsWUFBWTtZQUNaLFlBQVk7WUFDWixjQUFjO1NBQ2YsQ0FBQztLQUNILENBQUMsQ0FBQztJQUVILE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRm9ybWx5RmllbGRDb25maWcgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IExhYmVsZWRGaWVsZENvbmZpZywgZm9ybWx5RmllbGQsIHByb3BzQW5kQ29uZmlnRm9yRmllbGRDb25maWcsIERlc2NyaXB0aW9uRmllbGRDb25maWcsIE1hdGVyaWFsRm9ybUZpZWxkQ29uZmlnIH0gZnJvbSAnLi4vLi4vZmllbGQnO1xuaW1wb3J0IHsgRGJ4RGF0ZVRpbWVGaWVsZFByb3BzLCBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGUsIERieERhdGVUaW1lUGlja2VyQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vZGF0ZXRpbWUuZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7IGZsZXhMYXlvdXRXcmFwcGVyIH0gZnJvbSAnLi4vLi4vd3JhcHBlci93cmFwcGVyJztcbmltcG9ydCB7IE1heWJlIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBEYnhGaXhlZERhdGVSYW5nZUZpZWxkUHJvcHMgfSBmcm9tICcuL2ZpeGVkZGF0ZXJhbmdlLmZpZWxkLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZVRpbWVGaWVsZENvbmZpZyBleHRlbmRzIExhYmVsZWRGaWVsZENvbmZpZywgRGVzY3JpcHRpb25GaWVsZENvbmZpZywgRGJ4RGF0ZVRpbWVGaWVsZFByb3BzLCBNYXRlcmlhbEZvcm1GaWVsZENvbmZpZyB7fVxuZXhwb3J0IHR5cGUgVGltZUZpZWxkQ29uZmlnID0gT21pdDxEYXRlVGltZUZpZWxkQ29uZmlnLCAnc2hvd0RhdGUnPjtcblxuZXhwb3J0IGNvbnN0IFRBS0VfTkVYVF9VUENPTUlOR19USU1FX0NPTkZJR19PQlM6ICgpID0+IE9ic2VydmFibGU8RGJ4RGF0ZVRpbWVQaWNrZXJDb25maWd1cmF0aW9uPiA9ICgpID0+XG4gIG9mKHtcbiAgICB0YWtlTmV4dFVwY29taW5nVGltZTogdHJ1ZSxcbiAgICByb3VuZERvd25Ub01pbnV0ZTogdHJ1ZVxuICB9KTtcblxuLyoqXG4gKiBTYW1lIGFzIERhdGVUaW1lIGZpZWxkIGJ1dCB3aXRoIHRoZSBEYXRlIGlucHV0IGhpZGRlbiBieSBkZWZhdWx0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdGltZU9ubHlGaWVsZChjb25maWc6IFBhcnRpYWw8VGltZUZpZWxkQ29uZmlnPiA9IHt9KTogRm9ybWx5RmllbGRDb25maWcge1xuICByZXR1cm4gZGF0ZVRpbWVGaWVsZCh7XG4gICAgLi4uY29uZmlnLFxuICAgIHRpbWVNb2RlOiBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGUuUkVRVUlSRUQsXG4gICAgdGltZU9ubHk6IHRydWVcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRlVGltZUZpZWxkKGNvbmZpZzogUGFydGlhbDxEYXRlVGltZUZpZWxkQ29uZmlnPiA9IHt9KSB7XG4gIGNvbnN0IHsga2V5ID0gJ2RhdGUnLCBkYXRlTGFiZWwsIHRpbWVMYWJlbCwgYWxsRGF5TGFiZWwsIGF0VGltZUxhYmVsLCB0aW1lRGF0ZSwgdGltZXpvbmUsIHNob3dUaW1lem9uZSwgdGltZU1vZGUgPSBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGUuUkVRVUlSRUQsIHZhbHVlTW9kZSwgZnVsbERheUluVVRDLCBmdWxsRGF5RmllbGROYW1lLCBwaWNrZXJDb25maWcsIGdldFN5bmNGaWVsZHNPYnMsIGhpZGVEYXRlUGlja2VyLCBoaWRlRGF0ZUhpbnQsIHRpbWVPbmx5ID0gZmFsc2UsIHByZXNldHMsIG1hdGVyaWFsRm9ybUZpZWxkIH0gPSBjb25maWc7XG5cbiAgY29uc3QgY2xhc3NHZXR0ZXIgPSAnZGJ4LW1hdC1mb3JtLWZpZWxkLWRpc2FibGUtdW5kZXJsaW5lIGRieC1tYXQtZm9ybS1kYXRlLXRpbWUtZmllbGQtd3JhcHBlcic7XG4gIGNvbnN0IGZpZWxkQ29uZmlnOiBGb3JtbHlGaWVsZENvbmZpZzxEYnhEYXRlVGltZUZpZWxkUHJvcHM+ID0gZm9ybWx5RmllbGQoe1xuICAgIGtleSxcbiAgICB0eXBlOiAnZGF0ZXRpbWUnLFxuICAgIC4uLnByb3BzQW5kQ29uZmlnRm9yRmllbGRDb25maWcoY29uZmlnLCB7XG4gICAgICAuLi5tYXRlcmlhbEZvcm1GaWVsZCxcbiAgICAgIGNsYXNzR2V0dGVyLFxuICAgICAgZGF0ZUxhYmVsLFxuICAgICAgdGltZUxhYmVsLFxuICAgICAgYWxsRGF5TGFiZWwsXG4gICAgICBhdFRpbWVMYWJlbCxcbiAgICAgIHZhbHVlTW9kZSxcbiAgICAgIHRpbWVPbmx5LFxuICAgICAgcHJlc2V0cyxcbiAgICAgIHRpbWVNb2RlOiB0aW1lT25seSA/IERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5SRVFVSVJFRCA6IHRpbWVNb2RlLFxuICAgICAgdGltZXpvbmUsXG4gICAgICB0aW1lRGF0ZSxcbiAgICAgIHNob3dUaW1lem9uZSxcbiAgICAgIGZ1bGxEYXlGaWVsZE5hbWUsXG4gICAgICBmdWxsRGF5SW5VVEMsXG4gICAgICBoaWRlRGF0ZVBpY2tlcixcbiAgICAgIGhpZGVEYXRlSGludCxcbiAgICAgIHBpY2tlckNvbmZpZyxcbiAgICAgIGdldFN5bmNGaWVsZHNPYnNcbiAgICB9KVxuICB9KTtcblxuICByZXR1cm4gZmllbGRDb25maWc7XG59XG5cbmV4cG9ydCB0eXBlIERhdGVEYXRlUmFuZ2VGaWVsZERhdGVDb25maWcgPSBPbWl0PERhdGVUaW1lRmllbGRDb25maWcsICdkYXRlTGFiZWwnIHwgJ3RpbWVPbmx5JyB8ICd0aW1lTW9kZScgfCAnZ2V0U3luY0ZpZWxkc09icyc+O1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVEYXRlUmFuZ2VGaWVsZENvbmZpZyBleHRlbmRzIFBpY2s8RGF0ZVRpbWVGaWVsZENvbmZpZywgJ3RpbWVEYXRlJyB8ICd0aW1lem9uZScgfCAnc2hvd1RpbWV6b25lJyB8ICdwcmVzZXRzJz4ge1xuICByZXF1aXJlZD86IGJvb2xlYW47XG4gIHN0YXJ0PzogUGFydGlhbDxEYXRlRGF0ZVJhbmdlRmllbGREYXRlQ29uZmlnPjtcbiAgZW5kPzogUGFydGlhbDxEYXRlRGF0ZVJhbmdlRmllbGREYXRlQ29uZmlnPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGVSYW5nZUZpZWxkKGNvbmZpZzogRGF0ZURhdGVSYW5nZUZpZWxkQ29uZmlnID0ge30pOiBGb3JtbHlGaWVsZENvbmZpZyB7XG4gIGNvbnN0IHsgcmVxdWlyZWQ6IGlucHV0UmVxdWlyZWQsIHN0YXJ0LCBlbmQsIHRpbWVEYXRlLCB0aW1lem9uZSwgc2hvd1RpbWV6b25lLCBwcmVzZXRzIH0gPSBjb25maWc7XG4gIGNvbnN0IHJlcXVpcmVkID0gaW5wdXRSZXF1aXJlZCA/PyBzdGFydD8ucmVxdWlyZWQgPz8gZmFsc2U7XG5cbiAgY29uc3Qgc3RhcnRGaWVsZEtleSA9IHN0YXJ0Py5rZXkgPz8gJ3N0YXJ0JztcbiAgY29uc3QgZW5kRmllbGRLZXkgPSBlbmQ/LmtleSA/PyAnZW5kJztcblxuICBjb25zdCBzdGFydEZpZWxkID0gZGF0ZVRpbWVGaWVsZCh7XG4gICAgZGF0ZUxhYmVsOiAnU3RhcnQnLFxuICAgIHRpbWVNb2RlOiBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGUuTk9ORSxcbiAgICBnZXRTeW5jRmllbGRzT2JzOiAoKSA9PiBvZihbeyBzeW5jV2l0aDogZW5kRmllbGRLZXksIHN5bmNUeXBlOiAnYWZ0ZXInIH1dKSxcbiAgICBwcmVzZXRzLFxuICAgIGFsbERheUxhYmVsOiAnJyxcbiAgICB0aW1lRGF0ZSxcbiAgICB0aW1lem9uZSxcbiAgICBzaG93VGltZXpvbmUsXG4gICAgLi4uc3RhcnQsXG4gICAgcmVxdWlyZWQsXG4gICAga2V5OiBzdGFydEZpZWxkS2V5XG4gIH0pO1xuXG4gIGNvbnN0IGVuZEZpZWxkID0gZGF0ZVRpbWVGaWVsZCh7XG4gICAgZGF0ZUxhYmVsOiAnRW5kJyxcbiAgICB0aW1lTW9kZTogRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLk5PTkUsXG4gICAgZ2V0U3luY0ZpZWxkc09iczogKCkgPT4gb2YoW3sgc3luY1dpdGg6IHN0YXJ0RmllbGRLZXksIHN5bmNUeXBlOiAnYmVmb3JlJyB9XSksXG4gICAgcHJlc2V0cyxcbiAgICBhbGxEYXlMYWJlbDogJycsXG4gICAgdGltZURhdGUsXG4gICAgdGltZXpvbmUsXG4gICAgc2hvd1RpbWV6b25lLFxuICAgIC4uLmVuZCxcbiAgICByZXF1aXJlZCxcbiAgICBrZXk6IGVuZEZpZWxkS2V5XG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAga2V5OiB1bmRlZmluZWQsXG4gICAgZmllbGRHcm91cDogW2ZsZXhMYXlvdXRXcmFwcGVyKFtzdGFydEZpZWxkLCBlbmRGaWVsZF0sIHsgcmVsYXRpdmU6IHRydWUsIGJyZWFrVG9Db2x1bW46IHRydWUsIGJyZWFrcG9pbnQ6ICdsYXJnZScgfSldXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIERhdGVUaW1lUmFuZ2VGaWVsZFRpbWVDb25maWcgPSBPbWl0PERhdGVEYXRlUmFuZ2VGaWVsZERhdGVDb25maWcsICdhbGxEYXlMYWJlbCcgfCAnZnVsbERheUZpZWxkTmFtZScgfCAnZnVsbERheUluVVRDJz47XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZURhdGVUaW1lUmFuZ2VGaWVsZENvbmZpZyBleHRlbmRzIFBpY2s8RGF0ZVRpbWVGaWVsZENvbmZpZywgJ3RpbWVEYXRlJyB8ICd0aW1lem9uZScgfCAnc2hvd1RpbWV6b25lJyB8ICdwcmVzZXRzJz4ge1xuICByZXF1aXJlZD86IGJvb2xlYW47XG4gIHN0YXJ0PzogUGFydGlhbDxEYXRlVGltZVJhbmdlRmllbGRUaW1lQ29uZmlnPjtcbiAgZW5kPzogUGFydGlhbDxEYXRlVGltZVJhbmdlRmllbGRUaW1lQ29uZmlnPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGVUaW1lUmFuZ2VGaWVsZChpbnB1dENvbmZpZzogRGF0ZURhdGVUaW1lUmFuZ2VGaWVsZENvbmZpZyA9IHt9KTogRm9ybWx5RmllbGRDb25maWcge1xuICBjb25zdCB7IHJlcXVpcmVkID0gZmFsc2UsIHN0YXJ0OiBpbnB1dFN0YXJ0LCBlbmQ6IGlucHV0RW5kLCB0aW1lem9uZSwgdGltZURhdGUsIHNob3dUaW1lem9uZSwgcHJlc2V0cyB9ID0gaW5wdXRDb25maWc7XG5cbiAgZnVuY3Rpb24gZGF0ZVRpbWVSYW5nZUZpZWxkQ29uZmlnKGNvbmZpZzogTWF5YmU8UGFydGlhbDxEYXRlVGltZVJhbmdlRmllbGRUaW1lQ29uZmlnPj4pOiBQYXJ0aWFsPERhdGVUaW1lRmllbGRDb25maWc+IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uY29uZmlnLFxuICAgICAgcmVxdWlyZWQsXG4gICAgICB0aW1lTW9kZTogRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLlJFUVVJUkVELFxuICAgICAgZ2V0U3luY0ZpZWxkc09iczogdW5kZWZpbmVkLFxuICAgICAgdGltZU9ubHk6IHRydWUsXG4gICAgICBoaWRlRGF0ZUhpbnQ6IHRydWVcbiAgICB9O1xuICB9XG5cbiAgY29uc3Qgc3RhcnRLZXkgPSBpbnB1dFN0YXJ0Py5rZXkgPz8gJ3N0YXJ0JztcbiAgY29uc3QgZW5kS2V5ID0gaW5wdXRFbmQ/LmtleSA/PyAnZW5kJztcblxuICBjb25zdCBzdGFydDogUGFydGlhbDxEYXRlVGltZUZpZWxkQ29uZmlnPiA9IHtcbiAgICBsYWJlbDogJ1N0YXJ0IFRpbWUnLFxuICAgIC4uLmRhdGVUaW1lUmFuZ2VGaWVsZENvbmZpZyhpbnB1dFN0YXJ0KSxcbiAgICBrZXk6IHN0YXJ0S2V5XG4gIH07XG5cbiAgY29uc3QgZW5kOiBQYXJ0aWFsPERhdGVUaW1lRmllbGRDb25maWc+ID0ge1xuICAgIGxhYmVsOiAnRW5kIFRpbWUnLFxuICAgIC4uLmRhdGVUaW1lUmFuZ2VGaWVsZENvbmZpZyhpbnB1dEVuZCksXG4gICAga2V5OiBlbmRLZXlcbiAgfTtcblxuICBjb25zdCBjb25maWcgPSB7XG4gICAgdGltZXpvbmUsXG4gICAgdGltZURhdGUsXG4gICAgc2hvd1RpbWV6b25lLFxuICAgIHByZXNldHMsXG4gICAgc3RhcnQsXG4gICAgZW5kXG4gIH07XG5cbiAgcmV0dXJuIGRhdGVSYW5nZUZpZWxkKGNvbmZpZyk7XG59XG5cbi8vIE1BUks6IEZpeGVkRGF0ZVJhbmdlXG5leHBvcnQgaW50ZXJmYWNlIEZpeGVkRGF0ZVJhbmdlRmllbGRDb25maWcgZXh0ZW5kcyBMYWJlbGVkRmllbGRDb25maWcsIERlc2NyaXB0aW9uRmllbGRDb25maWcsIERieEZpeGVkRGF0ZVJhbmdlRmllbGRQcm9wcywgTWF0ZXJpYWxGb3JtRmllbGRDb25maWcge31cblxuZXhwb3J0IGZ1bmN0aW9uIGZpeGVkRGF0ZVJhbmdlRmllbGQoY29uZmlnOiBQYXJ0aWFsPEZpeGVkRGF0ZVJhbmdlRmllbGRDb25maWc+ID0ge30pIHtcbiAgY29uc3QgeyBrZXkgPSAnZGF0ZVJhbmdlJywgZGF0ZVJhbmdlSW5wdXQsIHBpY2tlckNvbmZpZywgdGltZXpvbmUsIHNlbGVjdGlvbk1vZGUsIHNob3dUaW1lem9uZSwgdmFsdWVNb2RlLCBmdWxsRGF5SW5VVEMsIHByZXNldHMsIHNob3dSYW5nZUlucHV0LCBtYXRlcmlhbEZvcm1GaWVsZCB9ID0gY29uZmlnO1xuXG4gIGNvbnN0IGNsYXNzR2V0dGVyID0gJ2RieC1tYXQtZm9ybS1maWVsZC1kaXNhYmxlLXVuZGVybGluZSBkYngtZm9ybS1maXhlZC1kYXRlLXJhbmdlLWZpZWxkLXdyYXBwZXInO1xuICBjb25zdCBmaWVsZENvbmZpZzogRm9ybWx5RmllbGRDb25maWc8RGJ4RGF0ZVRpbWVGaWVsZFByb3BzPiA9IGZvcm1seUZpZWxkKHtcbiAgICBrZXksXG4gICAgdHlwZTogJ2ZpeGVkZGF0ZXJhbmdlJyxcbiAgICAuLi5wcm9wc0FuZENvbmZpZ0ZvckZpZWxkQ29uZmlnKGNvbmZpZywge1xuICAgICAgLi4ubWF0ZXJpYWxGb3JtRmllbGQsXG4gICAgICBjbGFzc0dldHRlcixcbiAgICAgIGRhdGVSYW5nZUlucHV0LFxuICAgICAgcGlja2VyQ29uZmlnLFxuICAgICAgdmFsdWVNb2RlLFxuICAgICAgcHJlc2V0cyxcbiAgICAgIHRpbWV6b25lLFxuICAgICAgc2VsZWN0aW9uTW9kZSxcbiAgICAgIHNob3dUaW1lem9uZSxcbiAgICAgIGZ1bGxEYXlJblVUQyxcbiAgICAgIHNob3dSYW5nZUlucHV0XG4gICAgfSlcbiAgfSk7XG5cbiAgcmV0dXJuIGZpZWxkQ29uZmlnO1xufVxuIl19
|
|
141
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUuZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC92YWx1ZS9kYXRlL2RhdGV0aW1lLmZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdEMsT0FBTyxFQUFzQixXQUFXLEVBQUUsNEJBQTRCLEVBQW1ELE1BQU0sYUFBYSxDQUFDO0FBQzdJLE9BQU8sRUFBeUIsd0JBQXdCLEVBQWtDLE1BQU0sNEJBQTRCLENBQUM7QUFDN0gsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFPMUQsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQXFELEdBQUcsRUFBRSxDQUN2RyxFQUFFLENBQUM7SUFDRCxvQkFBb0IsRUFBRSxJQUFJO0lBQzFCLGlCQUFpQixFQUFFLElBQUk7Q0FDeEIsQ0FBQyxDQUFDO0FBRUw7O0dBRUc7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUFDLFNBQW1DLEVBQUU7SUFDakUsT0FBTyxhQUFhLENBQUM7UUFDbkIsR0FBRyxNQUFNO1FBQ1QsUUFBUSxFQUFFLHdCQUF3QixDQUFDLFFBQVE7UUFDM0MsUUFBUSxFQUFFLElBQUk7S0FDZixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxTQUF1QyxFQUFFO0lBQ3JFLE1BQU0sRUFBRSxHQUFHLEdBQUcsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxRQUFRLEdBQUcsd0JBQXdCLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxZQUFZ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O1FBQ0gsSUFBSSxFQUFFLGdCQUFnQjtRQUN0QixHQUFHLDRCQUE0QixDQUFDLE1BQU0sRUFBRTtZQUN0QyxHQUFHLGlCQUFpQjtZQUNwQixXQUFXO1lBQ1gsY0FBYztZQUNkLFlBQVk7WUFDWixTQUFTO1lBQ1QsT0FBTztZQUNQLFFBQVE7WUFDUixhQUFhO1lBQ2IsWUFBWTtZQUNaLFlBQVk7WUFDWixjQUFjO1NBQ2YsQ0FBQztLQUNILENBQUMsQ0FBQztJQUVILE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRm9ybWx5RmllbGRDb25maWcgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IExhYmVsZWRGaWVsZENvbmZpZywgZm9ybWx5RmllbGQsIHByb3BzQW5kQ29uZmlnRm9yRmllbGRDb25maWcsIERlc2NyaXB0aW9uRmllbGRDb25maWcsIE1hdGVyaWFsRm9ybUZpZWxkQ29uZmlnIH0gZnJvbSAnLi4vLi4vZmllbGQnO1xuaW1wb3J0IHsgRGJ4RGF0ZVRpbWVGaWVsZFByb3BzLCBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGUsIERieERhdGVUaW1lUGlja2VyQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vZGF0ZXRpbWUuZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7IGZsZXhMYXlvdXRXcmFwcGVyIH0gZnJvbSAnLi4vLi4vd3JhcHBlci93cmFwcGVyJztcbmltcG9ydCB7IE1heWJlIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBEYnhGaXhlZERhdGVSYW5nZUZpZWxkUHJvcHMgfSBmcm9tICcuL2ZpeGVkZGF0ZXJhbmdlLmZpZWxkLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZVRpbWVGaWVsZENvbmZpZyBleHRlbmRzIExhYmVsZWRGaWVsZENvbmZpZywgRGVzY3JpcHRpb25GaWVsZENvbmZpZywgRGJ4RGF0ZVRpbWVGaWVsZFByb3BzLCBNYXRlcmlhbEZvcm1GaWVsZENvbmZpZyB7fVxuZXhwb3J0IHR5cGUgVGltZUZpZWxkQ29uZmlnID0gT21pdDxEYXRlVGltZUZpZWxkQ29uZmlnLCAnc2hvd0RhdGUnIHwgJ3RpbWVPbmx5Jz47XG5cbmV4cG9ydCBjb25zdCBUQUtFX05FWFRfVVBDT01JTkdfVElNRV9DT05GSUdfT0JTOiAoKSA9PiBPYnNlcnZhYmxlPERieERhdGVUaW1lUGlja2VyQ29uZmlndXJhdGlvbj4gPSAoKSA9PlxuICBvZih7XG4gICAgdGFrZU5leHRVcGNvbWluZ1RpbWU6IHRydWUsXG4gICAgcm91bmREb3duVG9NaW51dGU6IHRydWVcbiAgfSk7XG5cbi8qKlxuICogU2FtZSBhcyBEYXRlVGltZSBmaWVsZCBidXQgd2l0aCB0aGUgRGF0ZSBpbnB1dCBoaWRkZW4gYnkgZGVmYXVsdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRpbWVPbmx5RmllbGQoY29uZmlnOiBQYXJ0aWFsPFRpbWVGaWVsZENvbmZpZz4gPSB7fSk6IEZvcm1seUZpZWxkQ29uZmlnIHtcbiAgcmV0dXJuIGRhdGVUaW1lRmllbGQoe1xuICAgIC4uLmNvbmZpZyxcbiAgICB0aW1lTW9kZTogRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLlJFUVVJUkVELFxuICAgIHRpbWVPbmx5OiB0cnVlXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZVRpbWVGaWVsZChjb25maWc6IFBhcnRpYWw8RGF0ZVRpbWVGaWVsZENvbmZpZz4gPSB7fSkge1xuICBjb25zdCB7IGtleSA9ICdkYXRlJywgZGF0ZUxhYmVsLCB0aW1lTGFiZWwsIGFsbERheUxhYmVsLCBhdFRpbWVMYWJlbCwgdGltZURhdGUsIHRpbWV6b25lLCBzaG93VGltZXpvbmUsIHRpbWVNb2RlID0gRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLlJFUVVJUkVELCB2YWx1ZU1vZGUsIGZ1bGxEYXlJblVUQywgZnVsbERheUZpZWxkTmFtZSwgcGlja2VyQ29uZmlnLCBnZXRTeW5jRmllbGRzT2JzLCBoaWRlRGF0ZVBpY2tlciwgaGlkZURhdGVIaW50LCB0aW1lT25seSA9IGZhbHNlLCBwcmVzZXRzLCBtYXRlcmlhbEZvcm1GaWVsZCB9ID0gY29uZmlnO1xuXG4gIGNvbnN0IGNsYXNzR2V0dGVyID0gJ2RieC1tYXQtZm9ybS1maWVsZC1kaXNhYmxlLXVuZGVybGluZSBkYngtbWF0LWZvcm0tZGF0ZS10aW1lLWZpZWxkLXdyYXBwZXInO1xuICBjb25zdCBmaWVsZENvbmZpZzogRm9ybWx5RmllbGRDb25maWc8RGJ4RGF0ZVRpbWVGaWVsZFByb3BzPiA9IGZvcm1seUZpZWxkKHtcbiAgICBrZXksXG4gICAgdHlwZTogJ2RhdGV0aW1lJyxcbiAgICAuLi5wcm9wc0FuZENvbmZpZ0ZvckZpZWxkQ29uZmlnKGNvbmZpZywge1xuICAgICAgLi4ubWF0ZXJpYWxGb3JtRmllbGQsXG4gICAgICBjbGFzc0dldHRlcixcbiAgICAgIGRhdGVMYWJlbCxcbiAgICAgIHRpbWVMYWJlbCxcbiAgICAgIGFsbERheUxhYmVsLFxuICAgICAgYXRUaW1lTGFiZWwsXG4gICAgICB2YWx1ZU1vZGUsXG4gICAgICB0aW1lT25seSxcbiAgICAgIHByZXNldHMsXG4gICAgICB0aW1lTW9kZTogdGltZU9ubHkgPyBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGUuUkVRVUlSRUQgOiB0aW1lTW9kZSxcbiAgICAgIHRpbWV6b25lLFxuICAgICAgdGltZURhdGUsXG4gICAgICBzaG93VGltZXpvbmUsXG4gICAgICBmdWxsRGF5RmllbGROYW1lLFxuICAgICAgZnVsbERheUluVVRDLFxuICAgICAgaGlkZURhdGVQaWNrZXIsXG4gICAgICBoaWRlRGF0ZUhpbnQsXG4gICAgICBwaWNrZXJDb25maWcsXG4gICAgICBnZXRTeW5jRmllbGRzT2JzXG4gICAgfSlcbiAgfSk7XG5cbiAgcmV0dXJuIGZpZWxkQ29uZmlnO1xufVxuXG5leHBvcnQgdHlwZSBEYXRlRGF0ZVJhbmdlRmllbGREYXRlQ29uZmlnID0gT21pdDxEYXRlVGltZUZpZWxkQ29uZmlnLCAnZGF0ZUxhYmVsJyB8ICd0aW1lT25seScgfCAndGltZU1vZGUnIHwgJ2dldFN5bmNGaWVsZHNPYnMnPjtcblxuZXhwb3J0IGludGVyZmFjZSBEYXRlRGF0ZVJhbmdlRmllbGRDb25maWcgZXh0ZW5kcyBQaWNrPERhdGVUaW1lRmllbGRDb25maWcsICd0aW1lRGF0ZScgfCAndGltZXpvbmUnIHwgJ3Nob3dUaW1lem9uZScgfCAncHJlc2V0cyc+IHtcbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICBzdGFydD86IFBhcnRpYWw8RGF0ZURhdGVSYW5nZUZpZWxkRGF0ZUNvbmZpZz47XG4gIGVuZD86IFBhcnRpYWw8RGF0ZURhdGVSYW5nZUZpZWxkRGF0ZUNvbmZpZz47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRlUmFuZ2VGaWVsZChjb25maWc6IERhdGVEYXRlUmFuZ2VGaWVsZENvbmZpZyA9IHt9KTogRm9ybWx5RmllbGRDb25maWcge1xuICBjb25zdCB7IHJlcXVpcmVkOiBpbnB1dFJlcXVpcmVkLCBzdGFydCwgZW5kLCB0aW1lRGF0ZSwgdGltZXpvbmUsIHNob3dUaW1lem9uZSwgcHJlc2V0cyB9ID0gY29uZmlnO1xuICBjb25zdCByZXF1aXJlZCA9IGlucHV0UmVxdWlyZWQgPz8gc3RhcnQ/LnJlcXVpcmVkID8/IGZhbHNlO1xuXG4gIGNvbnN0IHN0YXJ0RmllbGRLZXkgPSBzdGFydD8ua2V5ID8/ICdzdGFydCc7XG4gIGNvbnN0IGVuZEZpZWxkS2V5ID0gZW5kPy5rZXkgPz8gJ2VuZCc7XG5cbiAgY29uc3Qgc3RhcnRGaWVsZCA9IGRhdGVUaW1lRmllbGQoe1xuICAgIGRhdGVMYWJlbDogJ1N0YXJ0JyxcbiAgICB0aW1lTW9kZTogRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLk5PTkUsXG4gICAgZ2V0U3luY0ZpZWxkc09iczogKCkgPT4gb2YoW3sgc3luY1dpdGg6IGVuZEZpZWxkS2V5LCBzeW5jVHlwZTogJ2FmdGVyJyB9XSksXG4gICAgcHJlc2V0cyxcbiAgICBhbGxEYXlMYWJlbDogJycsXG4gICAgdGltZURhdGUsXG4gICAgdGltZXpvbmUsXG4gICAgc2hvd1RpbWV6b25lLFxuICAgIC4uLnN0YXJ0LFxuICAgIHJlcXVpcmVkLFxuICAgIGtleTogc3RhcnRGaWVsZEtleVxuICB9KTtcblxuICBjb25zdCBlbmRGaWVsZCA9IGRhdGVUaW1lRmllbGQoe1xuICAgIGRhdGVMYWJlbDogJ0VuZCcsXG4gICAgdGltZU1vZGU6IERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5OT05FLFxuICAgIGdldFN5bmNGaWVsZHNPYnM6ICgpID0+IG9mKFt7IHN5bmNXaXRoOiBzdGFydEZpZWxkS2V5LCBzeW5jVHlwZTogJ2JlZm9yZScgfV0pLFxuICAgIHByZXNldHMsXG4gICAgYWxsRGF5TGFiZWw6ICcnLFxuICAgIHRpbWVEYXRlLFxuICAgIHRpbWV6b25lLFxuICAgIHNob3dUaW1lem9uZSxcbiAgICAuLi5lbmQsXG4gICAgcmVxdWlyZWQsXG4gICAga2V5OiBlbmRGaWVsZEtleVxuICB9KTtcblxuICByZXR1cm4ge1xuICAgIGtleTogdW5kZWZpbmVkLFxuICAgIGZpZWxkR3JvdXA6IFtmbGV4TGF5b3V0V3JhcHBlcihbc3RhcnRGaWVsZCwgZW5kRmllbGRdLCB7IHJlbGF0aXZlOiB0cnVlLCBicmVha1RvQ29sdW1uOiB0cnVlLCBicmVha3BvaW50OiAnbGFyZ2UnIH0pXVxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBEYXRlVGltZVJhbmdlRmllbGRUaW1lQ29uZmlnID0gT21pdDxEYXRlRGF0ZVJhbmdlRmllbGREYXRlQ29uZmlnLCAnYWxsRGF5TGFiZWwnIHwgJ2Z1bGxEYXlGaWVsZE5hbWUnIHwgJ2Z1bGxEYXlJblVUQyc+O1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVEYXRlVGltZVJhbmdlRmllbGRDb25maWcgZXh0ZW5kcyBQaWNrPERhdGVUaW1lRmllbGRDb25maWcsICd0aW1lRGF0ZScgfCAndGltZXpvbmUnIHwgJ3Nob3dUaW1lem9uZScgfCAncHJlc2V0cyc+IHtcbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICBzdGFydD86IFBhcnRpYWw8RGF0ZVRpbWVSYW5nZUZpZWxkVGltZUNvbmZpZz47XG4gIGVuZD86IFBhcnRpYWw8RGF0ZVRpbWVSYW5nZUZpZWxkVGltZUNvbmZpZz47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRlVGltZVJhbmdlRmllbGQoaW5wdXRDb25maWc6IERhdGVEYXRlVGltZVJhbmdlRmllbGRDb25maWcgPSB7fSk6IEZvcm1seUZpZWxkQ29uZmlnIHtcbiAgY29uc3QgeyByZXF1aXJlZCA9IGZhbHNlLCBzdGFydDogaW5wdXRTdGFydCwgZW5kOiBpbnB1dEVuZCwgdGltZXpvbmUsIHRpbWVEYXRlLCBzaG93VGltZXpvbmUsIHByZXNldHMgfSA9IGlucHV0Q29uZmlnO1xuXG4gIGZ1bmN0aW9uIGRhdGVUaW1lUmFuZ2VGaWVsZENvbmZpZyhjb25maWc6IE1heWJlPFBhcnRpYWw8RGF0ZVRpbWVSYW5nZUZpZWxkVGltZUNvbmZpZz4+KTogUGFydGlhbDxEYXRlVGltZUZpZWxkQ29uZmlnPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmNvbmZpZyxcbiAgICAgIHJlcXVpcmVkLFxuICAgICAgdGltZU1vZGU6IERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5SRVFVSVJFRCxcbiAgICAgIGdldFN5bmNGaWVsZHNPYnM6IHVuZGVmaW5lZCxcbiAgICAgIHRpbWVPbmx5OiB0cnVlLFxuICAgICAgaGlkZURhdGVIaW50OiB0cnVlXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IHN0YXJ0S2V5ID0gaW5wdXRTdGFydD8ua2V5ID8/ICdzdGFydCc7XG4gIGNvbnN0IGVuZEtleSA9IGlucHV0RW5kPy5rZXkgPz8gJ2VuZCc7XG5cbiAgY29uc3Qgc3RhcnQ6IFBhcnRpYWw8RGF0ZVRpbWVGaWVsZENvbmZpZz4gPSB7XG4gICAgbGFiZWw6ICdTdGFydCBUaW1lJyxcbiAgICAuLi5kYXRlVGltZVJhbmdlRmllbGRDb25maWcoaW5wdXRTdGFydCksXG4gICAga2V5OiBzdGFydEtleVxuICB9O1xuXG4gIGNvbnN0IGVuZDogUGFydGlhbDxEYXRlVGltZUZpZWxkQ29uZmlnPiA9IHtcbiAgICBsYWJlbDogJ0VuZCBUaW1lJyxcbiAgICAuLi5kYXRlVGltZVJhbmdlRmllbGRDb25maWcoaW5wdXRFbmQpLFxuICAgIGtleTogZW5kS2V5XG4gIH07XG5cbiAgY29uc3QgY29uZmlnID0ge1xuICAgIHRpbWV6b25lLFxuICAgIHRpbWVEYXRlLFxuICAgIHNob3dUaW1lem9uZSxcbiAgICBwcmVzZXRzLFxuICAgIHN0YXJ0LFxuICAgIGVuZFxuICB9O1xuXG4gIHJldHVybiBkYXRlUmFuZ2VGaWVsZChjb25maWcpO1xufVxuXG4vLyBNQVJLOiBGaXhlZERhdGVSYW5nZVxuZXhwb3J0IGludGVyZmFjZSBGaXhlZERhdGVSYW5nZUZpZWxkQ29uZmlnIGV4dGVuZHMgTGFiZWxlZEZpZWxkQ29uZmlnLCBEZXNjcmlwdGlvbkZpZWxkQ29uZmlnLCBEYnhGaXhlZERhdGVSYW5nZUZpZWxkUHJvcHMsIE1hdGVyaWFsRm9ybUZpZWxkQ29uZmlnIHt9XG5cbmV4cG9ydCBmdW5jdGlvbiBmaXhlZERhdGVSYW5nZUZpZWxkKGNvbmZpZzogUGFydGlhbDxGaXhlZERhdGVSYW5nZUZpZWxkQ29uZmlnPiA9IHt9KSB7XG4gIGNvbnN0IHsga2V5ID0gJ2RhdGVSYW5nZScsIGRhdGVSYW5nZUlucHV0LCBwaWNrZXJDb25maWcsIHRpbWV6b25lLCBzZWxlY3Rpb25Nb2RlLCBzaG93VGltZXpvbmUsIHZhbHVlTW9kZSwgZnVsbERheUluVVRDLCBwcmVzZXRzLCBzaG93UmFuZ2VJbnB1dCwgbWF0ZXJpYWxGb3JtRmllbGQgfSA9IGNvbmZpZztcblxuICBjb25zdCBjbGFzc0dldHRlciA9ICdkYngtbWF0LWZvcm0tZmllbGQtZGlzYWJsZS11bmRlcmxpbmUgZGJ4LWZvcm0tZml4ZWQtZGF0ZS1yYW5nZS1maWVsZC13cmFwcGVyJztcbiAgY29uc3QgZmllbGRDb25maWc6IEZvcm1seUZpZWxkQ29uZmlnPERieERhdGVUaW1lRmllbGRQcm9wcz4gPSBmb3JtbHlGaWVsZCh7XG4gICAga2V5LFxuICAgIHR5cGU6ICdmaXhlZGRhdGVyYW5nZScsXG4gICAgLi4ucHJvcHNBbmRDb25maWdGb3JGaWVsZENvbmZpZyhjb25maWcsIHtcbiAgICAgIC4uLm1hdGVyaWFsRm9ybUZpZWxkLFxuICAgICAgY2xhc3NHZXR0ZXIsXG4gICAgICBkYXRlUmFuZ2VJbnB1dCxcbiAgICAgIHBpY2tlckNvbmZpZyxcbiAgICAgIHZhbHVlTW9kZSxcbiAgICAgIHByZXNldHMsXG4gICAgICB0aW1lem9uZSxcbiAgICAgIHNlbGVjdGlvbk1vZGUsXG4gICAgICBzaG93VGltZXpvbmUsXG4gICAgICBmdWxsRGF5SW5VVEMsXG4gICAgICBzaG93UmFuZ2VJbnB1dFxuICAgIH0pXG4gIH0pO1xuXG4gIHJldHVybiBmaWVsZENvbmZpZztcbn1cbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { isMonthDaySlashDate, MS_IN_MINUTE } from '@dereekb/util';
|
|
2
|
-
import { guessCurrentTimezone,
|
|
2
|
+
import { guessCurrentTimezone, dateTimezoneUtcNormal, isSameDateDayRange, dateRange, isDateInDateRange, clampDateRangeToDateRange, isSameDateRange, isSameDateDay, limitDateTimeInstance, dateTimeMinuteWholeDayDecisionFunction } from '@dereekb/date';
|
|
3
3
|
import { switchMap, shareReplay, map, startWith, distinctUntilChanged, debounceTime, throttleTime, BehaviorSubject, Subject, of, combineLatestWith, filter, combineLatest, scan, first, timer } from 'rxjs';
|
|
4
4
|
import { Component, ElementRef, Injectable, ViewChild, forwardRef } from '@angular/core';
|
|
5
5
|
import { FormControl, FormGroup } from '@angular/forms';
|
|
@@ -270,7 +270,7 @@ export class DbxFixedDateRangeFieldComponent extends FieldType {
|
|
|
270
270
|
this.max$ = this.minMaxRange$.pipe(map((x) => x?.end ?? null), distinctUntilChanged(), shareReplay(1));
|
|
271
271
|
this.pickerFilter$ = this.config$.pipe(distinctUntilChanged(), map((x) => {
|
|
272
272
|
if (x) {
|
|
273
|
-
const filter =
|
|
273
|
+
const filter = dateTimeMinuteWholeDayDecisionFunction(x, false);
|
|
274
274
|
return (x) => (x != null ? filter(x) : true);
|
|
275
275
|
}
|
|
276
276
|
else {
|
|
@@ -503,4 +503,4 @@ export class DbxFixedDateRangeFieldSelectionStrategy {
|
|
|
503
503
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DbxFixedDateRangeFieldSelectionStrategy, decorators: [{
|
|
504
504
|
type: Injectable
|
|
505
505
|
}], ctorParameters: function () { return [{ type: i7.DateAdapter }, { type: DbxFixedDateRangeFieldComponent }]; } });
|
|
506
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4ZWRkYXRlcmFuZ2UuZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vc3JjL2xpYi9mb3JtbHkvZmllbGQvdmFsdWUvZGF0ZS9maXhlZGRhdGVyYW5nZS5maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC92YWx1ZS9kYXRlL2ZpeGVkZGF0ZXJhbmdlLmZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBK0gsbUJBQW1CLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9MLE9BQU8sRUFBRSxvQkFBb0IsRUFBaUMsOEJBQThCLEVBQUUscUJBQXFCLEVBQTZCLGtCQUFrQixFQUF3RCxTQUFTLEVBQUUsaUJBQWlCLEVBQUUseUJBQXlCLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoVyxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLG9CQUFvQixFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFjLE9BQU8sRUFBRSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4TixPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQXFCLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUFtQixXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNC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QU0sR0FBRyxHQUFlLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN2QyxNQUFNLFVBQVUsR0FBYyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUMsTUFBTSxJQUFJLEdBQWUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRTVDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUM3RCxDQUFDOytHQXZEVSx1Q0FBdUM7bUhBQXZDLHVDQUF1Qzs7NEZBQXZDLHVDQUF1QztrQkFEbkQsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgTWF5YmUsIHR5cGUgRGVjaXNpb25GdW5jdGlvbiwgdHlwZSBNaWxsaXNlY29uZHMsIHR5cGUgVGltZXpvbmVTdHJpbmcsIHR5cGUgRGF0ZU1vbnRoLCB0eXBlIERheU9mTW9udGgsIHR5cGUgWWVhck51bWJlciwgaXNNb250aERheVNsYXNoRGF0ZSwgTVNfSU5fTUlOVVRFIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBndWVzc0N1cnJlbnRUaW1lem9uZSwgRGF0ZVRpbWV6b25lVXRjTm9ybWFsSW5zdGFuY2UsIGRhdGVUaW1lTWludXRlRGVjaXNpb25GdW5jdGlvbiwgZGF0ZVRpbWV6b25lVXRjTm9ybWFsLCBEYXRlUmFuZ2VJbnB1dCwgRGF0ZVJhbmdlLCBpc1NhbWVEYXRlRGF5UmFuZ2UsIERhdGVSYW5nZVdpdGhEYXRlT3JTdHJpbmdWYWx1ZSwgRGF0ZVRpbWVNaW51dGVDb25maWcsIGRhdGVSYW5nZSwgaXNEYXRlSW5EYXRlUmFuZ2UsIGNsYW1wRGF0ZVJhbmdlVG9EYXRlUmFuZ2UsIGlzU2FtZURhdGVSYW5nZSwgaXNTYW1lRGF0ZURheSwgbGltaXREYXRlVGltZUluc3RhbmNlIH0gZnJvbSAnQGRlcmVla2IvZGF0ZSc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAsIHNoYXJlUmVwbGF5LCBtYXAsIHN0YXJ0V2l0aCwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGRlYm91bmNlVGltZSwgdGhyb3R0bGVUaW1lLCBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QsIG9mLCBjb21iaW5lTGF0ZXN0V2l0aCwgZmlsdGVyLCBjb21iaW5lTGF0ZXN0LCBzY2FuLCBmaXJzdCwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5qZWN0YWJsZSwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCwgZm9yd2FyZFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRmllbGRUeXBlIH0gZnJvbSAnQG5neC1mb3JtbHkvbWF0ZXJpYWwnO1xuaW1wb3J0IHsgRmllbGRUeXBlQ29uZmlnLCBGb3JtbHlGaWVsZFByb3BzIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBNYXREYXRlUmFuZ2VTZWxlY3Rpb25TdHJhdGVneSwgTUFUX0RBVEVfUkFOR0VfU0VMRUNUSU9OX1NUUkFURUdZLCBEYXRlUmFuZ2UgYXMgRGF0ZVBpY2tlckRhdGVSYW5nZSwgTWF0Q2FsZW5kYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcbmltcG9ydCB7IGFzT2JzZXJ2YWJsZUZyb21HZXR0ZXIsIGZpbHRlck1heWJlLCBPYnNlcnZhYmxlT3JWYWx1ZUdldHRlciwgc2tpcEZpcnN0TWF5YmUsIFN1YnNjcmlwdGlvbk9iamVjdCwgc3dpdGNoTWFwTWF5YmVEZWZhdWx0IH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5pbXBvcnQgeyBEYnhEYXRlVGltZVZhbHVlTW9kZSwgZGJ4RGF0ZVJhbmdlSXNTYW1lRGF0ZVJhbmdlRmllbGRWYWx1ZSwgZGJ4RGF0ZVRpbWVJbnB1dFZhbHVlUGFyc2VGYWN0b3J5LCBkYnhEYXRlVGltZU91dHB1dFZhbHVlRmFjdG9yeSB9IGZyb20gJy4vZGF0ZS52YWx1ZSc7XG5pbXBvcnQgeyBEYXRlVGltZVByZXNldENvbmZpZ3VyYXRpb24gfSBmcm9tICcuL2RhdGV0aW1lJztcbmltcG9ydCB7IERieERhdGVUaW1lRmllbGRNZW51UHJlc2V0c1NlcnZpY2UgfSBmcm9tICcuL2RhdGV0aW1lLmZpZWxkLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IGlzQWZ0ZXIgfSBmcm9tICdkYXRlLWZucyc7XG5cbmV4cG9ydCB0eXBlIERieEZpeGVkRGF0ZVJhbmdlRGF0ZVJhbmdlSW5wdXQgPSBPbWl0PERhdGVSYW5nZUlucHV0LCAnZGF0ZSc+O1xuXG5leHBvcnQgdHlwZSBEYnhGaXhlZERhdGVSYW5nZVBpY2tlckNvbmZpZ3VyYXRpb24gPSBPbWl0PERhdGVUaW1lTWludXRlQ29uZmlnLCAnZGF0ZSc+O1xuXG5leHBvcnQgdHlwZSBEYnhGaXhlZERhdGVSYW5nZVNlbGVjdGlvbk1vZGUgPSAnc2luZ2xlJyB8ICdub3JtYWwnIHwgJ2FyYml0cmFyeScgfCAnYXJiaXRyYXJ5X3F1aWNrJztcbmV4cG9ydCB0eXBlIERieEZpeGVkRGF0ZVJhbmdlUGlja2luZyA9ICdzdGFydCcgfCAnZW5kJztcblxuZXhwb3J0IGludGVyZmFjZSBEYnhGaXhlZERhdGVSYW5nZUZpZWxkUHJvcHMgZXh0ZW5kcyBGb3JtbHlGaWVsZFByb3BzIHtcbiAgLyoqXG4gICAqIERhdGUgcmFuZ2UgaW5wdXQgdG8gYnVpbGQgdGhlIGRhdGUgcmFuZ2UuXG4gICAqL1xuICBkYXRlUmFuZ2VJbnB1dDogT2JzZXJ2YWJsZU9yVmFsdWVHZXR0ZXI8RGJ4Rml4ZWREYXRlUmFuZ2VEYXRlUmFuZ2VJbnB1dD47XG5cbiAgLyoqXG4gICAqIFNlbGVjdGlvbiBtb2RlIHRvIHVzZSB3aGVuIHBpY2tpbmcgZGF0ZXMgb24gdGhlIGNhbGVuZGFyLlxuICAgKi9cbiAgc2VsZWN0aW9uTW9kZT86IE1heWJlPE9ic2VydmFibGVPclZhbHVlR2V0dGVyPERieEZpeGVkRGF0ZVJhbmdlU2VsZWN0aW9uTW9kZT4+O1xuXG4gIC8qKlxuICAgKiBWYWx1ZSBtb2RlIGZvciB0aGUgZGF0ZXMgaW4gdGhlIG91dHB1dCBEYXRlUmFuZ2UuXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIERBVEVcbiAgICovXG4gIHZhbHVlTW9kZT86IERieERhdGVUaW1lVmFsdWVNb2RlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBwYXNzIHRoZSBkYXRlIHZhbHVlIGFzIGEgVVRDIGRhdGUsIG9yIGEgZGF0ZSBpbiB0aGUgY3VycmVudCB0aW1lem9uZS5cbiAgICovXG4gIGZ1bGxEYXlJblVUQz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBwaWNrZXIgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcGlja2VyQ29uZmlnPzogT2JzZXJ2YWJsZU9yVmFsdWVHZXR0ZXI8RGJ4Rml4ZWREYXRlUmFuZ2VQaWNrZXJDb25maWd1cmF0aW9uPjtcblxuICAvKipcbiAgICogKE9wdGlvbmFsKSBUaGUgaW5wdXQgdGltZXpvbmUgdG8gZGVmYXVsdCB0by5cbiAgICpcbiAgICogSWdub3JlZCBpZiBmdWxsRGF5SW5VVEMgaXMgdHJ1ZS5cbiAgICovXG4gIHRpbWV6b25lPzogTWF5YmU8T2JzZXJ2YWJsZU9yVmFsdWVHZXR0ZXI8TWF5YmU8VGltZXpvbmVTdHJpbmc+Pj47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIGRpc3BsYXkgdGhlIHRpbWV6b25lLiBUcnVlIGJ5IGRlZmF1bHQuXG4gICAqL1xuICBzaG93VGltZXpvbmU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gcHJlc2V0cyB0byBzaG93IGluIHRoZSBkcm9wZG93bi5cbiAgICovXG4gIHByZXNldHM/OiBPYnNlcnZhYmxlT3JWYWx1ZUdldHRlcjxEYXRlVGltZVByZXNldENvbmZpZ3VyYXRpb25bXT47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIHNob3cgdGhlIHJhbmdlIGlucHV0LiBEZWZhdWx0cyB0byB0cnVlLlxuICAgKi9cbiAgc2hvd1JhbmdlSW5wdXQ/OiBib29sZWFuO1xufVxuXG5mdW5jdGlvbiBkYnhGaXhlZERhdGVSYW5nZUlucHV0VmFsdWVGYWN0b3J5KG1vZGU6IERieERhdGVUaW1lVmFsdWVNb2RlLCB0aW1lem9uZUluc3RhbmNlOiBNYXliZTxEYXRlVGltZXpvbmVVdGNOb3JtYWxJbnN0YW5jZT4pOiAoaW5wdXQ6IE1heWJlPERhdGVSYW5nZVdpdGhEYXRlT3JTdHJpbmdWYWx1ZT4pID0+IE1heWJlPERhdGVSYW5nZT4ge1xuICBjb25zdCBkYXRlSW5wdXRUcmFuc2Zvcm1lciA9IGRieERhdGVUaW1lSW5wdXRWYWx1ZVBhcnNlRmFjdG9yeShtb2RlLCB0aW1lem9uZUluc3RhbmNlKTtcblxuICByZXR1cm4gKHkpID0+IHtcbiAgICBsZXQgcmVzdWx0OiBNYXliZTxEYXRlUmFuZ2U+O1xuXG4gICAgaWYgKHkpIHtcbiAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgc3RhcnQ6IGRhdGVJbnB1dFRyYW5zZm9ybWVyKHkuc3RhcnQpIGFzIERhdGUsXG4gICAgICAgIGVuZDogZGF0ZUlucHV0VHJhbnNmb3JtZXIoeS5lbmQpIGFzIERhdGVcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn1cblxuZnVuY3Rpb24gZGJ4Rml4ZWREYXRlUmFuZ2VPdXRwdXRWYWx1ZUZhY3RvcnkobW9kZTogRGJ4RGF0ZVRpbWVWYWx1ZU1vZGUsIHRpbWV6b25lSW5zdGFuY2U6IE1heWJlPERhdGVUaW1lem9uZVV0Y05vcm1hbEluc3RhbmNlPik6IChkYXRlOiBNYXliZTxEYXRlUmFuZ2U+KSA9PiBNYXliZTxEYXRlUmFuZ2VXaXRoRGF0ZU9yU3RyaW5nVmFsdWU+IHtcbiAgY29uc3QgZGF0ZU91dHB1dFRyYW5zZm9ybWVyID0gZGJ4RGF0ZVRpbWVPdXRwdXRWYWx1ZUZhY3RvcnkobW9kZSwgdGltZXpvbmVJbnN0YW5jZSk7XG5cbiAgcmV0dXJuICh5KSA9PiB7XG4gICAgbGV0IHJlc3VsdDogTWF5YmU8RGF0ZVJhbmdlPjtcblxuICAgIGlmICh5KSB7XG4gICAgICByZXN1bHQgPSB7XG4gICAgICAgIHN0YXJ0OiBkYXRlT3V0cHV0VHJhbnNmb3JtZXIoeS5zdGFydCkgYXMgRGF0ZSxcbiAgICAgICAgZW5kOiBkYXRlT3V0cHV0VHJhbnNmb3JtZXIoeS5lbmQpIGFzIERhdGVcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn1cblxuY29uc3QgVElNRV9PVVRQVVRfVEhST1RUTEVfVElNRTogTWlsbGlzZWNvbmRzID0gMTA7XG5cbmV4cG9ydCB0eXBlIEZpeGVkRGF0ZVJhbmdlU2NhblR5cGUgPSAnc3RhcnQnIHwgJ2VuZCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRml4ZWREYXRlUmFuZ2VTY2FuIHtcbiAgLyoqXG4gICAqIFBpY2tlZCB0aGUgc3RhcnQgb3IgZW5kIG9mIHRoZSByYW5nZSBvbiB0aGUgbGFzdCBwaWNrLlxuICAgKi9cbiAgbGFzdFBpY2tUeXBlPzogTWF5YmU8Rml4ZWREYXRlUmFuZ2VTY2FuVHlwZT47XG4gIC8qKlxuICAgKiBUaGUgbGF0ZXN0IGRhdGUgcGFzc2VkLCBpZiBhcHBsaWNhYmxlLlxuICAgKi9cbiAgbGFzdERhdGVSYW5nZT86IE1heWJlPFBhcnRpYWw8RGF0ZVJhbmdlPj47XG4gIC8qKlxuICAgKiBUaGUgZ2VuZXJhdGVkIGJvdW5kYXJ5IHJhbmdlLlxuICAgKi9cbiAgYm91bmRhcnk/OiBEYXRlUmFuZ2U7XG4gIC8qKlxuICAgKiBOZXcgRGF0ZSBSYW5nZVxuICAgKi9cbiAgcmFuZ2U/OiBEYXRlUmFuZ2U7XG59XG5cbnR5cGUgU2VsZWN0ZWREYXRlRXZlbnRUeXBlID0gJ2NhbGVuZGFyJyB8ICdpbnB1dCc7XG5cbmludGVyZmFjZSBTZWxlY3RlZERhdGVFdmVudCB7XG4gIHR5cGU6IFNlbGVjdGVkRGF0ZUV2ZW50VHlwZTtcbiAgcmFuZ2U/OiBNYXliZTxQYXJ0aWFsPERhdGVSYW5nZT4+O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICdmaXhlZGRhdGVyYW5nZS5maWVsZC5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE1BVF9EQVRFX1JBTkdFX1NFTEVDVElPTl9TVFJBVEVHWSxcbiAgICAgIHVzZUNsYXNzOiBmb3J3YXJkUmVmKCgpID0+IERieEZpeGVkRGF0ZVJhbmdlRmllbGRTZWxlY3Rpb25TdHJhdGVneSlcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRGJ4Rml4ZWREYXRlUmFuZ2VGaWVsZENvbXBvbmVudCBleHRlbmRzIEZpZWxkVHlwZTxGaWVsZFR5cGVDb25maWc8RGJ4Rml4ZWREYXRlUmFuZ2VGaWVsZFByb3BzPj4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX3N1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcblxuICBwcml2YXRlIF9pbnB1dFJhbmdlRm9ybVN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcbiAgcHJpdmF0ZSBfaW5wdXRSYW5nZUZvcm1WYWx1ZVN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcblxuICBwcml2YXRlIF9kYXRlUmFuZ2VJbnB1dFN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcbiAgcHJpdmF0ZSBfY3VycmVudFNlbGVjdGlvbk1vZGVTdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG4gIHByaXZhdGUgX2xhdGVzdEJvdW5kYXJ5U3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuICBwcml2YXRlIF9kaXNhYmxlRW5kU3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuICBwcml2YXRlIF9hY3RpdmVEYXRlU3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuXG4gIHByaXZhdGUgX2N1cnJlbnREYXRlUmFuZ2VJbnB1dDogTWF5YmU8RGJ4Rml4ZWREYXRlUmFuZ2VEYXRlUmFuZ2VJbnB1dD4gPSB7fTtcbiAgcHJpdmF0ZSBfY3VycmVudFNlbGVjdGlvbk1vZGU6IERieEZpeGVkRGF0ZVJhbmdlU2VsZWN0aW9uTW9kZSA9ICdzaW5nbGUnO1xuICBwcml2YXRlIF9sYXRlc3RCb3VuZGFyeTogTWF5YmU8RGF0ZVJhbmdlPiA9IG51bGw7XG5cbiAgcHJpdmF0ZSBfY29uZmlnID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxPYnNlcnZhYmxlPERieEZpeGVkRGF0ZVJhbmdlUGlja2VyQ29uZmlndXJhdGlvbj4+Pih1bmRlZmluZWQpO1xuICBwcml2YXRlIF9zZWxlY3Rpb25Nb2RlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxPYnNlcnZhYmxlPERieEZpeGVkRGF0ZVJhbmdlU2VsZWN0aW9uTW9kZT4+Pih1bmRlZmluZWQpO1xuICBwcml2YXRlIF9kYXRlUmFuZ2VJbnB1dCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF5YmU8T2JzZXJ2YWJsZTxEYnhGaXhlZERhdGVSYW5nZURhdGVSYW5nZUlucHV0Pj4+KHVuZGVmaW5lZCk7XG5cbiAgcHJpdmF0ZSBfdGltZXpvbmUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPE9ic2VydmFibGU8TWF5YmU8VGltZXpvbmVTdHJpbmc+Pj4+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgX3ByZXNldHMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE9ic2VydmFibGU8RGF0ZVRpbWVQcmVzZXRDb25maWd1cmF0aW9uW10+PihvZihbXSkpO1xuXG4gIHByaXZhdGUgX3NlbGVjdGlvbkV2ZW50ID0gbmV3IFN1YmplY3Q8U2VsZWN0ZWREYXRlRXZlbnQ+KCk7XG4gIHJlYWRvbmx5IHNlbGVjdGVkRGF0ZVJhbmdlJDogT2JzZXJ2YWJsZTxNYXliZTxQYXJ0aWFsPERhdGVSYW5nZT4+PiA9IHRoaXMuX3NlbGVjdGlvbkV2ZW50LnBpcGUobWFwKCh4KSA9PiB4LnJhbmdlKSk7XG5cbiAgcHJpdmF0ZSBfZm9ybUNvbnRyb2xPYnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPEFic3RyYWN0Q29udHJvbDxNYXliZTxEYXRlUmFuZ2U+Pj4+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGZvcm1Db250cm9sJCA9IHRoaXMuX2Zvcm1Db250cm9sT2JzLnBpcGUoZmlsdGVyTWF5YmUoKSk7XG5cbiAgQFZpZXdDaGlsZChNYXRDYWxlbmRhcilcbiAgY2FsZW5kYXIhOiBNYXRDYWxlbmRhcjxEYXRlPjtcblxuICBAVmlld0NoaWxkKCdzdGFydERhdGVJbnB1dCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBzdGFydERhdGVJbnB1dEVsZW1lbnQhOiBFbGVtZW50UmVmO1xuXG4gIEBWaWV3Q2hpbGQoJ2VuZERhdGVJbnB1dCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBlbmREYXRlSW5wdXRFbGVtZW50ITogRWxlbWVudFJlZjtcblxuICBnZXQgY3VycmVudERhdGVSYW5nZUlucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50RGF0ZVJhbmdlSW5wdXQ7XG4gIH1cblxuICBnZXQgY3VycmVudFNlbGVjdGlvbk1vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRTZWxlY3Rpb25Nb2RlO1xuICB9XG5cbiAgZ2V0IGxhdGVzdEJvdW5kYXJ5KCkge1xuICAgIHJldHVybiB0aGlzLl9sYXRlc3RCb3VuZGFyeTtcbiAgfVxuXG4gIHJlYWRvbmx5IGNvbmZpZyQ6IE9ic2VydmFibGU8RGJ4Rml4ZWREYXRlUmFuZ2VQaWNrZXJDb25maWd1cmF0aW9uPiA9IHRoaXMuX2NvbmZpZy5waXBlKFxuICAgIGZpbHRlck1heWJlKCksXG4gICAgc3dpdGNoTWFwKCh4KSA9PiB4KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgbGltaXREYXRlVGltZUluc3RhbmNlJCA9IHRoaXMuY29uZmlnJC5waXBlKG1hcChsaW1pdERhdGVUaW1lSW5zdGFuY2UpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgcmVhZG9ubHkgc2VsZWN0aW9uTW9kZSQ6IE9ic2VydmFibGU8RGJ4Rml4ZWREYXRlUmFuZ2VTZWxlY3Rpb25Nb2RlPiA9IHRoaXMuX3NlbGVjdGlvbk1vZGUucGlwZShcbiAgICBzd2l0Y2hNYXBNYXliZURlZmF1bHQ8RGJ4Rml4ZWREYXRlUmFuZ2VTZWxlY3Rpb25Nb2RlPignc2luZ2xlJyksXG4gICAgbWFwKCh4KSA9PiB4ID8/ICdzaW5nbGUnKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgZGF0ZVJhbmdlSW5wdXQkID0gdGhpcy5fZGF0ZVJhbmdlSW5wdXQucGlwZShzd2l0Y2hNYXBNYXliZURlZmF1bHQoKSwgc2hhcmVSZXBsYXkoMSkpO1xuXG4gIHJlYWRvbmx5IHRpbWV6b25lJDogT2JzZXJ2YWJsZTxNYXliZTxUaW1lem9uZVN0cmluZz4+ID0gdGhpcy5fdGltZXpvbmUucGlwZShzd2l0Y2hNYXBNYXliZURlZmF1bHQoKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSkucGlwZShcbiAgICBtYXAoKGRlZmF1bHRUaW1lem9uZSkgPT4ge1xuICAgICAgcmV0dXJuIGRlZmF1bHRUaW1lem9uZSA/PyBndWVzc0N1cnJlbnRUaW1lem9uZSgpO1xuICAgIH0pLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSB0aW1lem9uZUluc3RhbmNlJDogT2JzZXJ2YWJsZTxNYXliZTxEYXRlVGltZXpvbmVVdGNOb3JtYWxJbnN0YW5jZT4+ID0gdGhpcy50aW1lem9uZSQucGlwZShcbiAgICBtYXAoKHRpbWV6b25lKSA9PiAodGltZXpvbmUgPyBkYXRlVGltZXpvbmVVdGNOb3JtYWwoeyB0aW1lem9uZSB9KSA6IHVuZGVmaW5lZCkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgdmFsdWVJblN5c3RlbVRpbWV6b25lJDogT2JzZXJ2YWJsZTxNYXliZTxEYXRlUmFuZ2U+PiA9IHRoaXMuZm9ybUNvbnRyb2wkLnBpcGUoXG4gICAgbWFwKChjb250cm9sKSA9PiBjb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aDxNYXliZTxEYXRlUmFuZ2VXaXRoRGF0ZU9yU3RyaW5nVmFsdWU+Pihjb250cm9sLnZhbHVlKSwgc2hhcmVSZXBsYXkoMSkpKSxcbiAgICBjb21iaW5lTGF0ZXN0V2l0aCh0aGlzLnRpbWV6b25lSW5zdGFuY2UkKSxcbiAgICBzd2l0Y2hNYXAoKFt4LCB0aW1lem9uZUluc3RhbmNlXSkgPT4ge1xuICAgICAgcmV0dXJuIHgucGlwZShtYXAoZGJ4Rml4ZWREYXRlUmFuZ2VJbnB1dFZhbHVlRmFjdG9yeSh0aGlzLnZhbHVlTW9kZSwgdGltZXpvbmVJbnN0YW5jZSkpKTtcbiAgICB9KSxcbiAgICB0aHJvdHRsZVRpbWUoMjAsIHVuZGVmaW5lZCwgeyBsZWFkaW5nOiBmYWxzZSwgdHJhaWxpbmc6IHRydWUgfSksIC8vIHRocm90dGxlIGluY29taW5nIHZhbHVlcyBhbmQgdGltZXpvbmUgY2hhbmdlc1xuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkPE1heWJlPERhdGVSYW5nZT4+KGlzU2FtZURhdGVEYXlSYW5nZSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICBkYXRlUmFuZ2VTZWxlY3Rpb25Gb3JNb2RlKG1vZGU6IERieEZpeGVkRGF0ZVJhbmdlU2VsZWN0aW9uTW9kZSkge1xuICAgIGNvbnN0IHJlc3VsdDogT2JzZXJ2YWJsZTxNYXliZTxEYXRlUmFuZ2U+PiA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuZGF0ZVJhbmdlSW5wdXQkLCB0aGlzLmxpbWl0RGF0ZVRpbWVJbnN0YW5jZSRdKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChbZGF0ZVJhbmdlSW5wdXQsIGxpbWl0SW5zdGFuY2VdKSA9PiB7XG4gICAgICAgIGNvbnN0IGhhc0RhdGVSYW5nZUNvbmZpZ3VyYXRpb24gPSBCb29sZWFuKGRhdGVSYW5nZUlucHV0KTtcbiAgICAgICAgY29uc3QgbWluTWF4Q2xhbXAgPSAoZGF0ZVJhbmdlOiBEYXRlUmFuZ2UpID0+IGxpbWl0SW5zdGFuY2UuY2xhbXBEYXRlUmFuZ2UoZGF0ZVJhbmdlKTtcblxuICAgICAgICBpZiAobW9kZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgICAgICAvLyBvbmx5IHVzZSB0aGUgc3RhcnQgZGF0ZS5cbiAgICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZERhdGVSYW5nZSQucGlwZShcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKGlzU2FtZURhdGVEYXlSYW5nZSksXG4gICAgICAgICAgICBtYXAoKGlucHV0RGF0ZVJhbmdlKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBpbnB1dERhdGVSYW5nZT8uc3RhcnQ7XG4gICAgICAgICAgICAgIHJldHVybiBkYXRlID8gKG1pbk1heENsYW1wKGRhdGVSYW5nZSh7IC4uLmRhdGVSYW5nZUlucHV0LCBkYXRlIH0gYXMgRGF0ZVJhbmdlSW5wdXQpKSBhcyBEYXRlUmFuZ2UpIDogbnVsbDtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyB0YWtlIHRoZSBmaXJzdCBkYXRlLCB0aGVuIHdhaXQgdW5sZXNzIHRoZSBkYXRlIGlzIG91dHNpZGUgb2YgdGhlIHJhbmdlLlxuICAgICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlJC5waXBlKFxuICAgICAgICAgICAgc2NhbigoYWNjOiBGaXhlZERhdGVSYW5nZVNjYW4sIG5leHREYXRlUmFuZ2U6IE1heWJlPFBhcnRpYWw8RGF0ZVJhbmdlPj4pID0+IHtcbiAgICAgICAgICAgICAgbGV0IHJlc3VsdDogRml4ZWREYXRlUmFuZ2VTY2FuO1xuICAgICAgICAgICAgICBsZXQgcGlja1R5cGU6IE1heWJlPEZpeGVkRGF0ZVJhbmdlU2NhblR5cGU+ID0gJ3N0YXJ0JztcblxuICAgICAgICAgICAgICBpZiAobmV4dERhdGVSYW5nZSAmJiBuZXh0RGF0ZVJhbmdlLnN0YXJ0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHN0YXJ0OiBzdGFydE9yTmV4dERhdGUsIGVuZCB9ID0gbmV4dERhdGVSYW5nZTtcbiAgICAgICAgICAgICAgICBjb25zdCBwb3RlbnRpYWxCb3VuZGFyeSA9IGRhdGVSYW5nZSh7IC4uLmRhdGVSYW5nZUlucHV0LCBkYXRlOiBzdGFydE9yTmV4dERhdGUgfSBhcyBEYXRlUmFuZ2VJbnB1dCk7XG5cbiAgICAgICAgICAgICAgICAvLyBvbmx5IGNvbWVzIHRocm91Z2ggd2hlbiBwYXNzZWQgYnkgdGhlIHRleHQgaW5wdXRzXG4gICAgICAgICAgICAgICAgaWYgKHN0YXJ0T3JOZXh0RGF0ZSAmJiBlbmQpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHJhbmdlID0gY2xhbXBEYXRlUmFuZ2VUb0RhdGVSYW5nZShuZXh0RGF0ZVJhbmdlLCBwb3RlbnRpYWxCb3VuZGFyeSkgYXMgRGF0ZVJhbmdlO1xuICAgICAgICAgICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgICAgICAgICBsYXN0RGF0ZVJhbmdlOiBuZXh0RGF0ZVJhbmdlLFxuICAgICAgICAgICAgICAgICAgICBib3VuZGFyeTogcmFuZ2UsXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlXG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBsZXQgcmFuZ2U6IE1heWJlPERhdGVSYW5nZT4gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICBsZXQgYm91bmRhcnk6IE1heWJlPERhdGVSYW5nZT4gPSBwb3RlbnRpYWxCb3VuZGFyeTtcblxuICAgICAgICAgICAgICAgICAgaWYgKG1vZGUgPT09ICdub3JtYWwnKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaGFzRGF0ZVJhbmdlQ29uZmlndXJhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZXJlIGlzIG5vIGNvbmZpZ3VyZWQgcmFuZ2UvYm91bmRhcnksIHRoZW4ganVzdCBzZXQgdGhlIHBpY2sgdHlwZSBiYXNlZCBvbiB0aGUgbGFzdCB0eXBlXG4gICAgICAgICAgICAgICAgICAgICAgYm91bmRhcnkgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgcGlja1R5cGUgPSBhY2MubGFzdFBpY2tUeXBlID09PSAnc3RhcnQnID8gJ2VuZCcgOiAnc3RhcnQnO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBwaWNrIGlzIG91dHNpZGUgdGhlIGJvdW5kYXJ5LCB0aGVuIGNvbnNpZGVyIGl0IGEgc3RhcnQgcGljayB0eXBlLlxuICAgICAgICAgICAgICAgICAgICAgIHBpY2tUeXBlID0gYWNjLmxhc3RQaWNrVHlwZSA9PT0gJ3N0YXJ0JyAmJiBhY2MuYm91bmRhcnkgJiYgaXNEYXRlSW5EYXRlUmFuZ2Uoc3RhcnRPck5leHREYXRlLCBhY2MuYm91bmRhcnkpID8gJ2VuZCcgOiAnc3RhcnQnO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gYXNzZXJ0IHRoZSBzdGFydCBleGlzdHMgZnJvbSB0aGUgcHJldmlvdXMgY2xpY2ssIG90aGVyd2lzZSBjbGVhciBpdC5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHBpY2tUeXBlID09PSAnZW5kJykge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RTdGFydCA9IGFjYy5sYXN0RGF0ZVJhbmdlPy5zdGFydDtcblxuICAgICAgICAgICAgICAgICAgICAgIGlmICghbGFzdFN0YXJ0IHx8ICFpc0FmdGVyKHN0YXJ0T3JOZXh0RGF0ZSwgbGFzdFN0YXJ0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGlja1R5cGUgPSAnc3RhcnQnO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIHJlYWN0IGJhc2VkIG9uIGhvdyB0aGlzXG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAocGlja1R5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICBjYXNlICdlbmQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgd2UncmUgcGlja2luZyB0aGUgZW5kIHRoZW4gc2V0IHRoZSByYW5nZS5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydDogYWNjLmxhc3REYXRlUmFuZ2U/LnN0YXJ0IGFzIERhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogc3RhcnRPck5leHREYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRhcnkgPSByYW5nZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3N0YXJ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJldGFpbiB0aGUgYm91bmRhcnkgYXMgcG90ZW50aWFsIGJvdW5kYXJ5LCBhbmQgc2V0IG91ciBuZXcgcmFuZ2UgZnJvbSB0aGUgc2luZ2xlIGRhdGUuXG4gICAgICAgICAgICAgICAgICAgICAgICByYW5nZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IHN0YXJ0T3JOZXh0RGF0ZSBhcyBEYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IHN0YXJ0T3JOZXh0RGF0ZSBhcyBEYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYWNjLmJvdW5kYXJ5ICYmIGlzRGF0ZUluRGF0ZVJhbmdlKHN0YXJ0T3JOZXh0RGF0ZSwgYWNjLmJvdW5kYXJ5KSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBpZiBpbiB0aGUgZGF0ZSByYW5nZSwgdXNlcyB0aGUgcGljayBhcyB0aGUgbGFzdCBkYXRlLlxuICAgICAgICAgICAgICAgICAgICByYW5nZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydDogYWNjLmJvdW5kYXJ5LnN0YXJ0LFxuICAgICAgICAgICAgICAgICAgICAgIGVuZDogc3RhcnRPck5leHREYXRlXG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKG1vZGUgPT09ICdhcmJpdHJhcnlfcXVpY2snKSB7XG4gICAgICAgICAgICAgICAgICAgICAgLy8gbW9kaWZ5IGJvdW5kYXJ5IHRvIG1hdGNoIHJhbmdlXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGlzU2FtZURhdGVSYW5nZShhY2MucmFuZ2UsIHJhbmdlKSAmJiBpc1NhbWVEYXRlRGF5KHJhbmdlLmVuZCwgc3RhcnRPck5leHREYXRlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgd2UgY2xpY2tlZCBvbiB0aGUgZW5kIHJhbmdlLCB0aGVuIGV4cGFuZCB0aGUgYm91bmRhcnkgYWdhaW4gdG8gdGhlIGZ1bGwgcmFuZ2UuXG4gICAgICAgICAgICAgICAgICAgICAgICByYW5nZSA9IGRhdGVSYW5nZSh7IC4uLmRhdGVSYW5nZUlucHV0LCBkYXRlOiByYW5nZS5zdGFydCB9IGFzIERhdGVSYW5nZUlucHV0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kYXJ5ID0gcmFuZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kYXJ5ID0gcmFuZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIC8vIHJldGFpbiBzYW1lIGJvdW5kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgYm91bmRhcnkgPSBhY2MuYm91bmRhcnk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobW9kZSA9PT0gJ2FyYml0cmFyeV9xdWljaycpIHtcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UgPSBwb3RlbnRpYWxCb3VuZGFyeTtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgICAgICAgICBsYXN0RGF0ZVJhbmdlOiBuZXh0RGF0ZVJhbmdlLFxuICAgICAgICAgICAgICAgICAgICBib3VuZGFyeSxcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2VcbiAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgICAgICAgIGxhc3REYXRlUmFuZ2U6IG5leHREYXRlUmFuZ2VcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgICAgICAgIGxhc3RQaWNrVHlwZTogcGlja1R5cGUsXG4gICAgICAgICAgICAgICAgICBsYXN0RGF0ZVJhbmdlOiByZXN1bHQubGFzdERhdGVSYW5nZSxcbiAgICAgICAgICAgICAgICAgIGJvdW5kYXJ5OiByZXN1bHQuYm91bmRhcnkgPyAobWluTWF4Q2xhbXAocmVzdWx0LmJvdW5kYXJ5KSBhcyBEYXRlUmFuZ2UpIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgcmFuZ2U6IHJlc3VsdC5yYW5nZSA/IChtaW5NYXhDbGFtcChyZXN1bHQucmFuZ2UpIGFzIERhdGVSYW5nZSkgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH0sIHt9KSxcbiAgICAgICAgICAgIGZpbHRlcigoeCkgPT4gIXgubGFzdERhdGVSYW5nZSB8fCB4LnJhbmdlICE9IG51bGwpLCAvLyBwYXNzIHRocm91Z2ggbnVsbC9kYXRlIGNsZWFyaW5ncyBvciByYW5nZXNcbiAgICAgICAgICAgIG1hcCgoeCkgPT4geC5yYW5nZSA/PyBudWxsKSAvLyByZXR1cm4gdGhlIHJhbmdlXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHJlYWRvbmx5IGZ1bGxCb3VuZGFyeSQ6IE9ic2VydmFibGU8TWF5YmU8RGF0ZVJhbmdlPj4gPSB0aGlzLmRhdGVSYW5nZVNlbGVjdGlvbkZvck1vZGUoJ3NpbmdsZScpLnBpcGUoc2hhcmVSZXBsYXkoMSkpO1xuICByZWFkb25seSBsYXRlc3RCb3VuZGFyeSQ6IE9ic2VydmFibGU8TWF5YmU8RGF0ZVJhbmdlPj4gPSB0aGlzLnNlbGVjdGlvbk1vZGUkLnBpcGUoXG4gICAgc3dpdGNoTWFwKChtb2RlKSA9PiB7XG4gICAgICBpZiAobW9kZSA9PT0gJ2FyYml0cmFyeV9xdWljaycpIHtcbiAgICAgICAgLy8gaW4gYXJiaXRyYXJ5X3F1aWNrIG1vZGUsIHRoZSBsYXRlc3QgdmFsdWUgaXMgdGhlIGJvdW5kYXJ5LCBzaW5jZSB3ZSBhbHdheXMgc2V0IHRoZSB2YWx1ZSBpbW1lZGlhdGVseS5cbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVJblN5c3RlbVRpbWV6b25lJDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZ1bGxCb3VuZGFyeSQ7XG4gICAgICB9XG4gICAgfSlcbiAgKTtcblxuICAvKipcbiAgICogRm9jdXNlcyBvbiB0aGUgZGF0ZSBhbnkgdGltZSB0aGUgc2VsZWN0aW9uIGV2ZW50IGZyb20gdGhlIHBpY2tlciBvY2N1cmVkLCBvdGhlcndpc2UgdXNlIHRoZSBzeXN0ZW0gdmFsdWVcbiAgICovXG4gIHJlYWRvbmx5IGNhbGVuZGFyRm9jdXNEYXRlJDogT2JzZXJ2YWJsZTxEYXRlPiA9IHRoaXMuX3NlbGVjdGlvbkV2ZW50LnBpcGUoc3RhcnRXaXRoKG51bGwpKS5waXBlKFxuICAgIHN3aXRjaE1hcCgoc2VsZWN0aW9uRXZlbnQpID0+IHtcbiAgICAgIGlmIChzZWxlY3Rpb25FdmVudCAmJiBzZWxlY3Rpb25FdmVudC50eXBlID09PSAnY2FsZW5kYXInICYmIHNlbGVjdGlvbkV2ZW50LnJhbmdlPy5zdGFydCkge1xuICAgICAgICByZXR1cm4gb2Yoc2VsZWN0aW9uRXZlbnQucmFuZ2Uuc3RhcnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZnVsbEJvdW5kYXJ5JC5waXBlKFxuICAgICAgICAgIGZpcnN0KCksXG4gICAgICAgICAgbWFwKChmdWxsQm91bmRhcnkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBmdWxsQm91bmRhcnk/LnN0YXJ0ID8/IHNlbGVjdGlvbkV2ZW50Py5yYW5nZT8uc3RhcnQ7XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KSxcbiAgICBmaWx0ZXJNYXliZSgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgZGF0ZVJhbmdlU2VsZWN0aW9uJDogT2JzZXJ2YWJsZTxNYXliZTxEYXRlUmFuZ2U+PiA9IHRoaXMuc2VsZWN0aW9uTW9kZSQucGlwZShzd2l0Y2hNYXAoKG1vZGUpID0+IHRoaXMuZGF0ZVJhbmdlU2VsZWN0aW9uRm9yTW9kZShtb2RlKSkpO1xuXG4gIHJlYWRvbmx5IGNhbGVuZGFyU2VsZWN0aW9uJDogT2JzZXJ2YWJsZTxEYXRlUGlja2VyRGF0ZVJhbmdlPERhdGU+IHwgbnVsbD4gPSB0aGlzLnZhbHVlSW5TeXN0ZW1UaW1lem9uZSQucGlwZShcbiAgICBtYXAoKHgpID0+ICh4ID8gbmV3IERhdGVQaWNrZXJEYXRlUmFuZ2U8RGF0ZT4oeC5zdGFydCwgeC5lbmQpIDogbnVsbCkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgZW5kRGlzYWJsZWQkID0gdGhpcy5zZWxlY3Rpb25Nb2RlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geCA9PT0gJ3NpbmdsZScpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBpbnB1dFJhbmdlRm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xuICAgIHN0YXJ0OiBuZXcgRm9ybUNvbnRyb2w8TWF5YmU8RGF0ZT4+KG51bGwpLFxuICAgIGVuZDogbmV3IEZvcm1Db250cm9sPE1heWJlPERhdGU+PihudWxsKVxuICB9KTtcblxuICBnZXQgZml4ZWREYXRlUmFuZ2VGaWVsZCgpOiBEYnhGaXhlZERhdGVSYW5nZUZpZWxkUHJvcHMge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnByb3BzO1xuICB9XG5cbiAgZ2V0IHNlbGVjdGlvbk1vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQucHJvcHMuc2VsZWN0aW9uTW9kZTtcbiAgfVxuXG4gIGdldCB2YWx1ZU1vZGUoKTogRGJ4RGF0ZVRpbWVWYWx1ZU1vZGUge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnByb3BzLnZhbHVlTW9kZSA/PyBEYnhEYXRlVGltZVZhbHVlTW9kZS5EQVRFO1xuICB9XG5cbiAgZ2V0IGRlc2NyaXB0aW9uKCk6IE1heWJlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnByb3BzLmRlc2NyaXB0aW9uO1xuICB9XG5cbiAgZ2V0IHRpbWV6b25lKCkge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnByb3BzLnRpbWV6b25lO1xuICB9XG5cbiAgZ2V0IHNob3dUaW1lem9uZSgpIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5wcm9wcy5zaG93VGltZXpvbmUgPz8gdHJ1ZTtcbiAgfVxuXG4gIGdldCBwcmVzZXRzKCkge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnByb3BzLnByZXNldHM7XG4gIH1cblxuICBnZXQgc2hvd1JhbmdlSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQucHJvcHMuc2hvd1JhbmdlSW5wdXQgPz8gdHJ1ZTtcbiAgfVxuXG4gIHJlYWRvbmx5IG1pbk1heFJhbmdlJCA9IHRoaXMubGltaXREYXRlVGltZUluc3RhbmNlJC5waXBlKFxuICAgIGNvbWJpbmVMYXRlc3RXaXRoKHRpbWVyKE1TX0lOX01JTlVURSkpLCAvLyByZWZyZXNoIGV2ZXJ5IG1pbnV0ZVxuICAgIG1hcCgoW3hdKSA9PiB4LmRhdGVSYW5nZSgpKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChpc1NhbWVEYXRlRGF5UmFuZ2UpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgbWluJCA9IHRoaXMubWluTWF4UmFuZ2UkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4Py5zdGFydCA/PyBudWxsKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgbWF4JCA9IHRoaXMubWluTWF4UmFuZ2UkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4Py5lbmQgPz8gbnVsbCksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHBpY2tlckZpbHRlciQ6IE9ic2VydmFibGU8RGVjaXNpb25GdW5jdGlvbjxEYXRlIHwgbnVsbD4+ID0gdGhpcy5jb25maWckLnBpcGUoXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBtYXAoKHgpID0+IHtcbiAgICAgIGlmICh4KSB7XG4gICAgICAgIGNvbnN0IGZpbHRlciA9IGRhdGVUaW1lTWludXRlRGVjaXNpb25GdW5jdGlvbih4KTtcbiAgICAgICAgcmV0dXJuICh4OiBEYXRlIHwgbnVsbCkgPT4gKHggIT0gbnVsbCA/IGZpbHRlcih4KSA6IHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuICgpID0+IHRydWU7XG4gICAgICB9XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBkZWZhdWx0UGlja2VyRmlsdGVyOiBEZWNpc2lvbkZ1bmN0aW9uPERhdGUgfCBudWxsPiA9ICgpID0+IHRydWU7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBkYnhEYXRlVGltZUZpZWxkQ29uZmlnU2VydmljZTogRGJ4RGF0ZVRpbWVGaWVsZE1lbnVQcmVzZXRzU2VydmljZSkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9mb3JtQ29udHJvbE9icy5uZXh0KHRoaXMuZm9ybUNvbnRyb2wpO1xuXG4gICAgY29uc3QgZGF0ZVJhbmdlU2VsZWN0aW9uID0gdGhpcy5kYXRlUmFuZ2VTZWxlY3Rpb24kLnBpcGUoc2hhcmVSZXBsYXkoMSkpO1xuXG4gICAgY29uc3Qgc2V0SW5wdXRGb3JtVmFsdWUgPSAodmFsdWU6IE1heWJlPERhdGVSYW5nZT4pID0+IHtcbiAgICAgIGlmICghaXNTYW1lRGF0ZURheVJhbmdlKHZhbHVlLCB0aGlzLmlucHV0UmFuZ2VGb3JtLnZhbHVlIGFzIFBhcnRpYWw8RGF0ZVJhbmdlPikpIHtcbiAgICAgICAgdGhpcy5pbnB1dFJhbmdlRm9ybS5zZXRWYWx1ZSh7XG4gICAgICAgICAgc3RhcnQ6IHZhbHVlPy5zdGFydCA/PyBudWxsLFxuICAgICAgICAgIGVuZDogdmFsdWU/LmVuZCA/PyBudWxsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB0aGlzLl9zdWIuc3Vic2NyaXB0aW9uID0gdGhpcy52YWx1ZUluU3lzdGVtVGltZXpvbmUkXG4gICAgICAucGlwZShcbiAgICAgICAgY29tYmluZUxhdGVzdFdpdGgodGhpcy50aW1lem9uZUluc3RhbmNlJC5waXBlKG1hcCgodGltZXpvbmVJbnN0YW5jZSkgPT4gZGJ4Rml4ZWREYXRlUmFuZ2VPdXRwdXRWYWx1ZUZhY3RvcnkodGhpcy52YWx1ZU1vZGUsIHRpbWV6b25lSW5zdGFuY2UpKSkpLFxuICAgICAgICB0aHJvdHRsZVRpbWUoVElNRV9PVVRQVVRfVEhST1RUTEVfVElNRSwgdW5kZWZpbmVkLCB7IGxlYWRpbmc6IGZhbHNlLCB0cmFpbGluZzogdHJ1ZSB9KSxcbiAgICAgICAgc3dpdGNoTWFwKChbY3VycmVudFZhbHVlLCB2YWx1ZUZhY3RvcnldKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGRhdGVSYW5nZVNlbGVjdGlvbi5waXBlKFxuICAgICAgICAgICAgc2tpcEZpcnN0TWF5YmUoKSxcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkPE1heWJlPERhdGVSYW5nZT4+KGlzU2FtZURhdGVEYXlSYW5nZSksXG4gICAgICAgICAgICBtYXAoKHgpID0+IFt4LCBjdXJyZW50VmFsdWUsIHZhbHVlRmFjdG9yeV0gYXMgW3R5cGVvZiB4LCB0eXBlb2YgY3VycmVudFZhbHVlLCB0eXBlb2YgdmFsdWVGYWN0b3J5XSlcbiAgICAgICAgICApO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoW3Jhd1ZhbHVlLCBjdXJyZW50VmFsdWUsIHZhbHVlRmFjdG9yeV0pID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSByYXdWYWx1ZSA/IHZhbHVlRmFjdG9yeShyYXdWYWx1ZSkgOiBudWxsO1xuICAgICAgICBjb25zdCBpc1NhbWVSYW5nZSA9IGRieERhdGVSYW5nZUlzU2FtZURhdGVSYW5nZUZpZWxkVmFsdWUodmFsdWUsIGN1cnJlbnRWYWx1ZSk7XG5cbiAgICAgICAgaWYgKCFpc1NhbWVSYW5nZSkge1xuICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzRGlydHkoKTtcbiAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgICAgfSBlbHNlIGlmIChyYXdWYWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgLy8gdXBkYXRlIHRoZSBpbnB1dCB0ZXh0IGFnYWluXG4gICAgICAgICAgc2V0SW5wdXRGb3JtVmFsdWUocmF3VmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUpIHtcbiAgICAgIHRoaXMuX3NlbGVjdGlvbk1vZGUubmV4dChhc09ic2VydmFibGVGcm9tR2V0dGVyKHRoaXMuc2VsZWN0aW9uTW9kZSkpO1xuICAgIH1cblxuICAgIHRoaXMuX2N1cnJlbnRTZWxlY3Rpb25Nb2RlU3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMuc2VsZWN0aW9uTW9kZSQuc3Vic2NyaWJlKCh4KSA9PiAodGhpcy5fY3VycmVudFNlbGVjdGlvbk1vZGUgPSB4KSk7XG4gICAgdGhpcy5fZGF0ZVJhbmdlSW5wdXRTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy5kYXRlUmFuZ2VJbnB1dCQuc3Vic2NyaWJlKCh4KSA9PiAodGhpcy5fY3VycmVudERhdGVSYW5nZUlucHV0ID0geCkpO1xuXG4gICAgdGhpcy5faW5wdXRSYW5nZUZvcm1TdWIuc3Vic2NyaXB0aW9uID0gdGhpcy52YWx1ZUluU3lzdGVtVGltZXpvbmUkLnN1YnNjcmliZSgoeDogTWF5YmU8RGF0ZVJhbmdlPikgPT4ge1xuICAgICAgc2V0SW5wdXRGb3JtVmFsdWUoeCk7XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5zaG93UmFuZ2VJbnB1dCkge1xuICAgICAgdGhpcy5faW5wdXRSYW5nZUZvcm1WYWx1ZVN1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLnZhbHVlSW5TeXN0ZW1UaW1lem9uZSRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGhyb3R0bGVUaW1lKDEwMCksIC8vIHRocm90dGxlIHRvIHByZXZlbnQgdGhlIHZhbHVlIGZyb20gY2hhbmdpbmcgdG9vIGZhc3RcbiAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXRSYW5nZUZvcm0udmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICAgIGRlYm91bmNlVGltZSg1MDApLFxuICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0U3RyaW5nID0gdGhpcy5zdGFydERhdGVJbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudD8udmFsdWU7XG4gICAgICAgICAgICAgICAgbGV0IHZhbGlkID0gaXNNb250aERheVNsYXNoRGF0ZShzdGFydFN0cmluZyk7XG5cbiAgICAgICAgICAgICAgICBpZiAodmFsaWQgJiYgdGhpcy5fY3VycmVudFNlbGVjdGlvbk1vZGUgIT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBlbmRTdHJpbmcgPSB0aGlzLmVuZERhdGVJbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudD8udmFsdWU7XG4gICAgICAgICAgICAgICAgICB2YWxpZCA9IGlzTW9udGhEYXlTbGFzaERhdGUoZW5kU3RyaW5nKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsaWQ7IC8vIG11c3QgYmUgYSB2YWxpZCB0ZXh0IGlucHV0XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBtYXAoKHgpID0+IHggYXMgTWF5YmU8UGFydGlhbDxEYXRlUmFuZ2U+PilcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoaXNTYW1lRGF0ZVJhbmdlKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKHg6IE1heWJlPFBhcnRpYWw8RGF0ZVJhbmdlPj4pID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5fY3VycmVudFNlbGVjdGlvbk1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgICB0aGlzLnNldERhdGVSYW5nZSh4Py5zdGFydCA/IHsgc3RhcnQ6IHguc3RhcnQgfSA6IG51bGwsICdpbnB1dCcpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgcmFuZ2VUb1NldDogTWF5YmU8UGFydGlhbDxEYXRlUmFuZ2U+PiA9IHg7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLl9jdXJyZW50U2VsZWN0aW9uTW9kZSA9PT0gJ2FyYml0cmFyeV9xdWljaycgJiYgdGhpcy5fbGF0ZXN0Qm91bmRhcnkgJiYgeD8uc3RhcnQgJiYgeD8uZW5kKSB7XG4gICAgICAgICAgICAgIGlmICghaXNEYXRlSW5EYXRlUmFuZ2UoeC5zdGFydCwgdGhpcy5fbGF0ZXN0Qm91bmRhcnkpKSB7XG4gICAgICAgICAgICAgICAgLy8gaWYgdGhlIGVuZCBkYXRlIGl0IG91dHNpZGUgb2YgdGhlIGN1cnJlbnQgcmFuZ2UgKGkuZS4gYSByYW5nZSB3YXMgdHlwZWQgaW4gb25seSB0byB0aGUgc3RhcnQgZGF0ZSkgdGhlbiBzZXQgdGhlIGVuZCB0byB0aGUgYm91bmRhcnkgZW5kXG4gICAgICAgICAgICAgICAgY29uc3QgYm91bmRhcnkgPSBkYXRlUmFuZ2UoeyAuLi50aGlzLl9jdXJyZW50RGF0ZVJhbmdlSW5wdXQsIGRhdGU6IHguc3RhcnQgfSBhcyBEYXRlUmFuZ2VJbnB1dCk7XG4gICAgICAgICAgICAgICAgcmFuZ2VUb1NldCA9IHsgc3RhcnQ6IHguc3RhcnQsIGVuZDogYm91bmRhcnkuZW5kIH07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5zZXREYXRlUmFuZ2UocmFuZ2VUb1NldCwgJ2lucHV0Jyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLl9sYXRlc3RCb3VuZGFyeVN1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLmxhdGVzdEJvdW5kYXJ5JC5zdWJzY3JpYmUoKHgpID0+ICh0aGlzLl9sYXRlc3RCb3VuZGFyeSA9IHgpKTtcbiAgICB0aGlzLl9kYXRlUmFuZ2VJbnB1dC5uZXh0KGFzT2JzZXJ2YWJsZUZyb21HZXR0ZXIodGhpcy5maXhlZERhdGVSYW5nZUZpZWxkLmRhdGVSYW5nZUlucHV0KSk7XG5cbiAgICB0aGlzLl9kaXNhYmxlRW5kU3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMuZW5kRGlzYWJsZWQkLnN1YnNjcmliZSgoZGlzYWJsZWQpID0+IHtcbiAgICAgIGNvbnN0IGVuZCA9IHRoaXMuaW5wdXRSYW5nZUZvcm0uZ2V0KCdlbmQnKTtcblxuICAgICAgaWYgKGVuZCkge1xuICAgICAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgICAgICBlbmQuZGlzYWJsZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVuZC5lbmFibGUoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgaW5wdXRQaWNrZXJDb25maWcgPSB0aGlzLmZpeGVkRGF0ZVJhbmdlRmllbGQucGlja2VyQ29uZmlnO1xuICAgIHRoaXMuX2NvbmZpZy5uZXh0KGlucHV0UGlja2VyQ29uZmlnID8gYXNPYnNlcnZhYmxlRnJvbUdldHRlcihpbnB1dFBpY2tlckNvbmZpZykgOiB1bmRlZmluZWQpO1xuXG4gICAgLy8gU2V0IGRlZmF1bHQgdGltZXpvbmUgaWYgcHJvdmlkZWQuXG4gICAgaWYgKHRoaXMudGltZXpvbmUgJiYgIXRoaXMuZml4ZWREYXRlUmFuZ2VGaWVsZC5mdWxsRGF5SW5VVEMpIHtcbiAgICAgIHRoaXMuX3RpbWV6b25lLm5leHQoYXNPYnNlcnZhYmxlRnJvbUdldHRlcih0aGlzLnRpbWV6b25lKSk7XG4gICAgfVxuXG4gICAgLy8gV2F0Y2ggZm9yIGRpc2FibGVkIGNoYW5nZXMgc28gd2UgY2FuIHByb3BvZ2F0ZSB0aGVtIHByb3Blcmx5LlxuICAgIHRoaXMuZm9ybUNvbnRyb2wucmVnaXN0ZXJPbkRpc2FibGVkQ2hhbmdlKChkaXNhYmxlZCkgPT4ge1xuICAgICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICAgIHRoaXMuaW5wdXRSYW5nZUZvcm0uZGlzYWJsZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pbnB1dFJhbmdlRm9ybS5lbmFibGUoKTtcblxuICAgICAgICB0aGlzLmVuZERpc2FibGVkJC5waXBlKGZpcnN0KCkpLnN1YnNjcmliZSgoZGlzYWJsZWQpID0+IHtcbiAgICAgICAgICBjb25zdCBlbmQgPSB0aGlzLmlucHV0UmFuZ2VGb3JtLmdldCgnZW5kJyk7XG5cbiAgICAgICAgICBpZiAoZW5kKSB7XG4gICAgICAgICAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgZW5kLmRpc2FibGUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGVuZC5lbmFibGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMucHJlc2V0cyAhPSBudWxsKSB7XG4gICAgICB0aGlzLl9wcmVzZXRzLm5leHQoYXNPYnNlcnZhYmxlRnJvbUdldHRlcih0aGlzLnByZXNldHMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fcHJlc2V0cy5uZXh0KHRoaXMuZGJ4RGF0ZVRpbWVGaWVsZENvbmZpZ1NlcnZpY2UuY29uZmlndXJhdGlvbnMkKTtcbiAgICB9XG5cbiAgICB0aGlzLl9hY3RpdmVEYXRlU3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMuY2FsZW5kYXJGb2N1c0RhdGUkLnN1YnNjcmliZSgoeCkgPT4ge1xuICAgICAgdGhpcy5jYWxlbmRhci5hY3RpdmVEYXRlID0geDtcbiAgICB9KTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgdGhpcy5fc3ViLmRlc3Ryb3koKTtcbiAgICB0aGlzLl9pbnB1dFJhbmdlRm9ybVN1Yi5kZXN0cm95KCk7XG4gICAgdGhpcy5faW5wdXRSYW5nZUZvcm1WYWx1ZVN1Yi5kZXN0cm95KCk7XG4gICAgdGhpcy5fZGF0ZVJhbmdlSW5wdXRTdWIuZGVzdHJveSgpO1xuICAgIHRoaXMuX2N1cnJlbnRTZWxlY3Rpb25Nb2RlU3ViLmRlc3Ryb3koKTtcbiAgICB0aGlzLl9sYXRlc3RCb3VuZGFyeVN1Yi5kZXN0cm95KCk7XG4gICAgdGhpcy5fZGlzYWJsZUVuZFN1Yi5kZXN0cm95KCk7XG4gICAgdGhpcy5fYWN0aXZlRGF0ZVN1Yi5kZXN0cm95KCk7XG4gICAgdGhpcy5fY29uZmlnLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fc2VsZWN0aW9uTW9kZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX2RhdGVSYW5nZUlucHV0LmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fdGltZXpvbmUuY29tcGxldGUoKTtcbiAgICB0aGlzLl9wcmVzZXRzLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fc2VsZWN0aW9uRXZlbnQuY29tcGxldGUoKTtcbiAgICB0aGlzLl9mb3JtQ29udHJvbE9icy5jb21wbGV0ZSgpO1xuICB9XG5cbiAgc2VsZWN0ZWRDaGFuZ2UoZGF0ZTogTWF5YmU8RGF0ZT4pOiB2b2lkIHtcbiAgICB0aGlzLnNldERhdGVSYW5nZShkYXRlID8geyBzdGFydDogZGF0ZSB9IDogbnVsbCwgJ2NhbGVuZGFyJyk7XG4gIH1cblxuICBzZXREYXRlUmFuZ2UocmFuZ2U6IE1heWJlPFBhcnRpYWw8RGF0ZVJhbmdlPj4sIHR5cGU6IFNlbGVjdGVkRGF0ZUV2ZW50VHlwZSkge1xuICAgIHRoaXMuX3NlbGVjdGlvbkV2ZW50Lm5leHQoeyB0eXBlLCByYW5nZSB9KTtcbiAgfVxuXG4gIF9jcmVhdGVEYXRlUmFuZ2UoZGF0ZTogTWF5YmU8RGF0ZT4pOiBNYXliZTxEYXRlUmFuZ2U+IHtcbiAgICByZXR1cm4gZGF0ZSA/IGRhdGVSYW5nZSh7IC4uLnRoaXMuX2N1cnJlbnREYXRlUmFuZ2VJbnB1dCwgZGF0ZSB9IGFzIERhdGVSYW5nZUlucHV0KSA6IHVuZGVmaW5lZDtcbiAgfVxufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGJ4Rml4ZWREYXRlUmFuZ2VGaWVsZFNlbGVjdGlvblN0cmF0ZWd5PEQ+IGltcGxlbWVudHMgTWF0RGF0ZVJhbmdlU2VsZWN0aW9uU3RyYXRlZ3k8RD4ge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9kYXRlQWRhcHRlcjogRGF0ZUFkYXB0ZXI8RD4sIHJlYWRvbmx5IGRieEZpeGVkRGF0ZVJhbmdlRmllbGRDb21wb25lbnQ6IERieEZpeGVkRGF0ZVJhbmdlRmllbGRDb21wb25lbnQpIHt9XG5cbiAgc2VsZWN0aW9uRmluaXNoZWQoZGF0ZTogRCB8IG51bGwsIGN1cnJlbnRSYW5nZTogRGF0ZVBpY2tlckRhdGVSYW5nZTxEPiwgZXZlbnQ6IEV2ZW50KTogRGF0ZVBpY2tlckRhdGVSYW5nZTxEPiB7XG4gICAgLy8gdW51c2VkXG4gICAgcmV0dXJuIGN1cnJlbnRSYW5nZTtcbiAgfVxuXG4gIGNyZWF0ZVByZXZpZXcoYWN0aXZlRGF0ZTogRCB8IG51bGwsIGN1cnJlbnRSYW5nZTogRGF0ZVBpY2tlckRhdGVSYW5nZTxEPiwgZXZlbnQ6IEV2ZW50KTogRGF0ZVBpY2tlckRhdGVSYW5nZTxEPiB7XG4gICAgY29uc3QgeyBjdXJyZW50U2VsZWN0aW9uTW9kZSB9ID0gdGhpcy5kYnhGaXhlZERhdGVSYW5nZUZpZWxkQ29tcG9uZW50O1xuICAgIGlmIChhY3RpdmVEYXRlICE9IG51bGwgJiYgY3VycmVudFNlbGVjdGlvbk1vZGUgIT09ICdzaW5nbGUnKSB7XG4gICAgICBjb25zdCBsYXRlc3RCb3VuZGFyeSA9IHRoaXMuZGJ4Rml4ZWREYXRlUmFuZ2VGaWVsZENvbXBvbmVudC5sYXRlc3RCb3VuZGFyeTtcbiAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLmRhdGVGcm9tQWRhcHRlckRhdGUoYWN0aXZlRGF0ZSk7XG5cbiAgICAgIGlmIChsYXRlc3RCb3VuZGFyeSAmJiAoY3VycmVudFNlbGVjdGlvbk1vZGUgPT09ICdub3JtYWwnIHx8IGlzRGF0ZUluRGF0ZVJhbmdlKGRhdGUsIGxhdGVzdEJvdW5kYXJ5KSkpIHtcbiAgICAgICAgY29uc3QgZXhhbXBsZURhdGVSYW5nZSA9IHRoaXMuX2NyZWF0ZURhdGVSYW5nZShsYXRlc3RCb3VuZGFyeSk7XG4gICAgICAgIHJldHVybiBleGFtcGxlRGF0ZVJhbmdlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9jcmVhdGVEYXRlUmFuZ2VXaXRoRGF0ZShhY3RpdmVEYXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZURhdGVSYW5nZVdpdGhEYXRlKGlucHV0OiBEIHwgbnVsbCk6IERhdGVQaWNrZXJEYXRlUmFuZ2U8RD4ge1xuICAgIGxldCBkYXRlUmFuZ2U6IE1heWJlPERhdGVSYW5nZT47XG5cbiAgICBpZiAoaW5wdXQpIHtcbiAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLmRhdGVGcm9tQWRhcHRlckRhdGUoaW5wdXQpO1xuICAgICAgZGF0ZVJhbmdlID0gdGhpcy5kYnhGaXhlZERhdGVSYW5nZUZpZWxkQ29tcG9uZW50Ll9jcmVhdGVEYXRlUmFuZ2UoZGF0ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2NyZWF0ZURhdGVSYW5nZShkYXRlUmFuZ2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY3JlYXRlRGF0ZVJhbmdlKGlucHV0OiBNYXliZTxEYXRlUmFuZ2U+KTogRGF0ZVBpY2tlckRhdGVSYW5nZTxEPiB7XG4gICAgaWYgKGlucHV0KSB7XG4gICAgICByZXR1cm4gbmV3IERhdGVQaWNrZXJEYXRlUmFuZ2U8RD4odGhpcy5hZGFwdGVyRGF0ZUZyb21EYXRlKGlucHV0LnN0YXJ0KSwgdGhpcy5hZGFwdGVyRGF0ZUZyb21EYXRlKGlucHV0LmVuZCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3IERhdGVQaWNrZXJEYXRlUmFuZ2U8RD4obnVsbCwgbnVsbCk7XG4gICAgfVxuICB9XG5cbiAgZGF0ZUZyb21BZGFwdGVyRGF0ZShpbnB1dDogRCkge1xuICAgIGNvbnN0IGRheTogRGF5T2ZNb250aCA9IHRoaXMuX2RhdGVBZGFwdGVyLmdldERhdGUoaW5wdXQpO1xuICAgIGNvbnN0IG1vbnRoSW5kZXg6IERhdGVNb250aCA9IHRoaXMuX2RhdGVBZGFwdGVyLmdldE1vbnRoKGlucHV0KTtcbiAgICBjb25zdCB5ZWFyOiBZZWFyTnVtYmVyID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZ2V0WWVhcihpbnB1dCk7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHllYXIsIG1vbnRoSW5kZXgsIGRheSk7XG4gIH1cblxuICBhZGFwdGVyRGF0ZUZyb21EYXRlKGRhdGU6IERhdGUpOiBEIHtcbiAgICBjb25zdCBkYXk6IERheU9mTW9udGggPSBkYXRlLmdldERhdGUoKTtcbiAgICBjb25zdCBtb250aEluZGV4OiBEYXRlTW9udGggPSBkYXRlLmdldE1vbnRoKCk7XG4gICAgY29uc3QgeWVhcjogWWVhck51bWJlciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcblxuICAgIHJldHVybiB0aGlzLl9kYXRlQWRhcHRlci5jcmVhdGVEYXRlKHllYXIsIG1vbnRoSW5kZXgsIGRheSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkYngtZml4ZWRkYXRlcmFuZ2UtZmllbGRcIj5cbiAgPG1hdC1jYWxlbmRhciAjY2FsZW5kYXJWaWV3IFtzZWxlY3RlZF09XCJjYWxlbmRhclNlbGVjdGlvbiQgfCBhc3luY1wiIFtkYXRlRmlsdGVyXT1cIihwaWNrZXJGaWx0ZXIkIHwgYXN5bmMpIHx8IGRlZmF1bHRQaWNrZXJGaWx0ZXJcIiBbbWluRGF0ZV09XCJtaW4kIHwgYXN5bmNcIiBbbWF4RGF0ZV09XCJtYXgkIHwgYXN5bmNcIiAoc2VsZWN0ZWRDaGFuZ2UpPVwic2VsZWN0ZWRDaGFuZ2UoJGV2ZW50KVwiPjwvbWF0LWNhbGVuZGFyPlxuICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJkYngtZml4ZWRkYXRlcmFuZ2UtZmllbGQtaW5wdXRcIiBhcHBlYXJhbmNlPVwiZmlsbFwiPlxuICAgIDxtYXQtZGF0ZS1yYW5nZS1pbnB1dCAqbmdJZj1cInNob3dSYW5nZUlucHV0XCIgW2Zvcm1Hcm91cF09XCJpbnB1dFJhbmdlRm9ybVwiPlxuICAgICAgPGlucHV0ICNzdGFydERhdGVJbnB1dCBtYXRTdGFydERhdGUgZm9ybUNvbnRyb2xOYW1lPVwic3RhcnRcIiBwbGFjZWhvbGRlcj1cIlN0YXJ0IGRhdGVcIiAvPlxuICAgICAgPGlucHV0ICNlbmREYXRlSW5wdXQgW25nQ2xhc3NdPVwiKGVuZERpc2FibGVkJCB8IGFzeW5jKSA/ICdkYngtZml4ZWRkYXRlcmFuZ2UtZmllbGQtaW5wdXQtZW5kJyA6ICcnXCIgW2F0dHIudGFiaW5kZXhdPVwiKGVuZERpc2FibGVkJCB8IGFzeW5jKSA/IC0xIDogMFwiIG1hdEVuZERhdGUgZm9ybUNvbnRyb2xOYW1lPVwiZW5kXCIgcGxhY2Vob2xkZXI9XCJFbmQgZGF0ZVwiIC8+XG4gICAgPC9tYXQtZGF0ZS1yYW5nZS1pbnB1dD5cbiAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm1Db250cm9sLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+RGF0ZSByYW5nZSBpcyByZXF1aXJlZDwvbWF0LWVycm9yPlxuPC9kaXY+XG4iXX0=
|
|
506
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4ZWRkYXRlcmFuZ2UuZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vc3JjL2xpYi9mb3JtbHkvZmllbGQvdmFsdWUvZGF0ZS9maXhlZGRhdGVyYW5nZS5maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC92YWx1ZS9kYXRlL2ZpeGVkZGF0ZXJhbmdlLmZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBK0gsbUJBQW1CLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9MLE9BQU8sRUFBRSxvQkFBb0IsRUFBaUMscUJBQXFCLEVBQTZCLGtCQUFrQixFQUF3RCxTQUFTLEVBQUUsaUJBQWlCLEVBQUUseUJBQXlCLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxzQ0FBc0MsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4VyxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLG9CQUFvQixFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFjLE9BQU8sRUFBRSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4TixPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQXFCLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUFtQixXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNC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VTtRQUM1QixNQUFNLEdBQUcsR0FBZSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDdkMsTUFBTSxVQUFVLEdBQWMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzlDLE1BQU0sSUFBSSxHQUFlLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUU1QyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDN0QsQ0FBQzsrR0F2RFUsdUNBQXVDO21IQUF2Qyx1Q0FBdUM7OzRGQUF2Qyx1Q0FBdUM7a0JBRG5ELFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIE1heWJlLCB0eXBlIERlY2lzaW9uRnVuY3Rpb24sIHR5cGUgTWlsbGlzZWNvbmRzLCB0eXBlIFRpbWV6b25lU3RyaW5nLCB0eXBlIERhdGVNb250aCwgdHlwZSBEYXlPZk1vbnRoLCB0eXBlIFllYXJOdW1iZXIsIGlzTW9udGhEYXlTbGFzaERhdGUsIE1TX0lOX01JTlVURSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgZ3Vlc3NDdXJyZW50VGltZXpvbmUsIERhdGVUaW1lem9uZVV0Y05vcm1hbEluc3RhbmNlLCBkYXRlVGltZXpvbmVVdGNOb3JtYWwsIERhdGVSYW5nZUlucHV0LCBEYXRlUmFuZ2UsIGlzU2FtZURhdGVEYXlSYW5nZSwgRGF0ZVJhbmdlV2l0aERhdGVPclN0cmluZ1ZhbHVlLCBEYXRlVGltZU1pbnV0ZUNvbmZpZywgZGF0ZVJhbmdlLCBpc0RhdGVJbkRhdGVSYW5nZSwgY2xhbXBEYXRlUmFuZ2VUb0RhdGVSYW5nZSwgaXNTYW1lRGF0ZVJhbmdlLCBpc1NhbWVEYXRlRGF5LCBsaW1pdERhdGVUaW1lSW5zdGFuY2UsIGRhdGVUaW1lTWludXRlV2hvbGVEYXlEZWNpc2lvbkZ1bmN0aW9uIH0gZnJvbSAnQGRlcmVla2IvZGF0ZSc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAsIHNoYXJlUmVwbGF5LCBtYXAsIHN0YXJ0V2l0aCwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGRlYm91bmNlVGltZSwgdGhyb3R0bGVUaW1lLCBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QsIG9mLCBjb21iaW5lTGF0ZXN0V2l0aCwgZmlsdGVyLCBjb21iaW5lTGF0ZXN0LCBzY2FuLCBmaXJzdCwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5qZWN0YWJsZSwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCwgZm9yd2FyZFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRmllbGRUeXBlIH0gZnJvbSAnQG5neC1mb3JtbHkvbWF0ZXJpYWwnO1xuaW1wb3J0IHsgRmllbGRUeXBlQ29uZmlnLCBGb3JtbHlGaWVsZFByb3BzIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBNYXREYXRlUmFuZ2VTZWxlY3Rpb25TdHJhdGVneSwgTUFUX0RBVEVfUkFOR0VfU0VMRUNUSU9OX1NUUkFURUdZLCBEYXRlUmFuZ2UgYXMgRGF0ZVBpY2tlckRhdGVSYW5nZSwgTWF0Q2FsZW5kYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcbmltcG9ydCB7IGFzT2JzZXJ2YWJsZUZyb21HZXR0ZXIsIGZpbHRlck1heWJlLCBPYnNlcnZhYmxlT3JWYWx1ZUdldHRlciwgc2tpcEZpcnN0TWF5YmUsIFN1YnNjcmlwdGlvbk9iamVjdCwgc3dpdGNoTWFwTWF5YmVEZWZhdWx0IH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5pbXBvcnQgeyBEYnhEYXRlVGltZVZhbHVlTW9kZSwgZGJ4RGF0ZVJhbmdlSXNTYW1lRGF0ZVJhbmdlRmllbGRWYWx1ZSwgZGJ4RGF0ZVRpbWVJbnB1dFZhbHVlUGFyc2VGYWN0b3J5LCBkYnhEYXRlVGltZU91dHB1dFZhbHVlRmFjdG9yeSB9IGZyb20gJy4vZGF0ZS52YWx1ZSc7XG5pbXBvcnQgeyBEYXRlVGltZVByZXNldENvbmZpZ3VyYXRpb24gfSBmcm9tICcuL2RhdGV0aW1lJztcbmltcG9ydCB7IERieERhdGVUaW1lRmllbGRNZW51UHJlc2V0c1NlcnZpY2UgfSBmcm9tICcuL2RhdGV0aW1lLmZpZWxkLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IGlzQWZ0ZXIgfSBmcm9tICdkYXRlLWZucyc7XG5cbmV4cG9ydCB0eXBlIERieEZpeGVkRGF0ZVJhbmdlRGF0ZVJhbmdlSW5wdXQgPSBPbWl0PERhdGVSYW5nZUlucHV0LCAnZGF0ZSc+O1xuXG5leHBvcnQgdHlwZSBEYnhGaXhlZERhdGVSYW5nZVBpY2tlckNvbmZpZ3VyYXRpb24gPSBPbWl0PERhdGVUaW1lTWludXRlQ29uZmlnLCAnZGF0ZSc+O1xuXG5leHBvcnQgdHlwZSBEYnhGaXhlZERhdGVSYW5nZVNlbGVjdGlvbk1vZGUgPSAnc2luZ2xlJyB8ICdub3JtYWwnIHwgJ2FyYml0cmFyeScgfCAnYXJiaXRyYXJ5X3F1aWNrJztcbmV4cG9ydCB0eXBlIERieEZpeGVkRGF0ZVJhbmdlUGlja2luZyA9ICdzdGFydCcgfCAnZW5kJztcblxuZXhwb3J0IGludGVyZmFjZSBEYnhGaXhlZERhdGVSYW5nZUZpZWxkUHJvcHMgZXh0ZW5kcyBGb3JtbHlGaWVsZFByb3BzIHtcbiAgLyoqXG4gICAqIERhdGUgcmFuZ2UgaW5wdXQgdG8gYnVpbGQgdGhlIGRhdGUgcmFuZ2UuXG4gICAqL1xuICBkYXRlUmFuZ2VJbnB1dDogT2JzZXJ2YWJsZU9yVmFsdWVHZXR0ZXI8RGJ4Rml4ZWREYXRlUmFuZ2VEYXRlUmFuZ2VJbnB1dD47XG5cbiAgLyoqXG4gICAqIFNlbGVjdGlvbiBtb2RlIHRvIHVzZSB3aGVuIHBpY2tpbmcgZGF0ZXMgb24gdGhlIGNhbGVuZGFyLlxuICAgKi9cbiAgc2VsZWN0aW9uTW9kZT86IE1heWJlPE9ic2VydmFibGVPclZhbHVlR2V0dGVyPERieEZpeGVkRGF0ZVJhbmdlU2VsZWN0aW9uTW9kZT4+O1xuXG4gIC8qKlxuICAgKiBWYWx1ZSBtb2RlIGZvciB0aGUgZGF0ZXMgaW4gdGhlIG91dHB1dCBEYXRlUmFuZ2UuXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIERBVEVcbiAgICovXG4gIHZhbHVlTW9kZT86IERieERhdGVUaW1lVmFsdWVNb2RlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBwYXNzIHRoZSBkYXRlIHZhbHVlIGFzIGEgVVRDIGRhdGUsIG9yIGEgZGF0ZSBpbiB0aGUgY3VycmVudCB0aW1lem9uZS5cbiAgICovXG4gIGZ1bGxEYXlJblVUQz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBwaWNrZXIgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcGlja2VyQ29uZmlnPzogT2JzZXJ2YWJsZU9yVmFsdWVHZXR0ZXI8RGJ4Rml4ZWREYXRlUmFuZ2VQaWNrZXJDb25maWd1cmF0aW9uPjtcblxuICAvKipcbiAgICogKE9wdGlvbmFsKSBUaGUgaW5wdXQgdGltZXpvbmUgdG8gZGVmYXVsdCB0by5cbiAgICpcbiAgICogSWdub3JlZCBpZiBmdWxsRGF5SW5VVEMgaXMgdHJ1ZS5cbiAgICovXG4gIHRpbWV6b25lPzogTWF5YmU8T2JzZXJ2YWJsZU9yVmFsdWVHZXR0ZXI8TWF5YmU8VGltZXpvbmVTdHJpbmc+Pj47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIGRpc3BsYXkgdGhlIHRpbWV6b25lLiBUcnVlIGJ5IGRlZmF1bHQuXG4gICAqL1xuICBzaG93VGltZXpvbmU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gcHJlc2V0cyB0byBzaG93IGluIHRoZSBkcm9wZG93bi5cbiAgICovXG4gIHByZXNldHM/OiBPYnNlcnZhYmxlT3JWYWx1ZUdldHRlcjxEYXRlVGltZVByZXNldENvbmZpZ3VyYXRpb25bXT47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIHNob3cgdGhlIHJhbmdlIGlucHV0LiBEZWZhdWx0cyB0byB0cnVlLlxuICAgKi9cbiAgc2hvd1JhbmdlSW5wdXQ/OiBib29sZWFuO1xufVxuXG5mdW5jdGlvbiBkYnhGaXhlZERhdGVSYW5nZUlucHV0VmFsdWVGYWN0b3J5KG1vZGU6IERieERhdGVUaW1lVmFsdWVNb2RlLCB0aW1lem9uZUluc3RhbmNlOiBNYXliZTxEYXRlVGltZXpvbmVVdGNOb3JtYWxJbnN0YW5jZT4pOiAoaW5wdXQ6IE1heWJlPERhdGVSYW5nZVdpdGhEYXRlT3JTdHJpbmdWYWx1ZT4pID0+IE1heWJlPERhdGVSYW5nZT4ge1xuICBjb25zdCBkYXRlSW5wdXRUcmFuc2Zvcm1lciA9IGRieERhdGVUaW1lSW5wdXRWYWx1ZVBhcnNlRmFjdG9yeShtb2RlLCB0aW1lem9uZUluc3RhbmNlKTtcblxuICByZXR1cm4gKHkpID0+IHtcbiAgICBsZXQgcmVzdWx0OiBNYXliZTxEYXRlUmFuZ2U+O1xuXG4gICAgaWYgKHkpIHtcbiAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgc3RhcnQ6IGRhdGVJbnB1dFRyYW5zZm9ybWVyKHkuc3RhcnQpIGFzIERhdGUsXG4gICAgICAgIGVuZDogZGF0ZUlucHV0VHJhbnNmb3JtZXIoeS5lbmQpIGFzIERhdGVcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn1cblxuZnVuY3Rpb24gZGJ4Rml4ZWREYXRlUmFuZ2VPdXRwdXRWYWx1ZUZhY3RvcnkobW9kZTogRGJ4RGF0ZVRpbWVWYWx1ZU1vZGUsIHRpbWV6b25lSW5zdGFuY2U6IE1heWJlPERhdGVUaW1lem9uZVV0Y05vcm1hbEluc3RhbmNlPik6IChkYXRlOiBNYXliZTxEYXRlUmFuZ2U+KSA9PiBNYXliZTxEYXRlUmFuZ2VXaXRoRGF0ZU9yU3RyaW5nVmFsdWU+IHtcbiAgY29uc3QgZGF0ZU91dHB1dFRyYW5zZm9ybWVyID0gZGJ4RGF0ZVRpbWVPdXRwdXRWYWx1ZUZhY3RvcnkobW9kZSwgdGltZXpvbmVJbnN0YW5jZSk7XG5cbiAgcmV0dXJuICh5KSA9PiB7XG4gICAgbGV0IHJlc3VsdDogTWF5YmU8RGF0ZVJhbmdlPjtcblxuICAgIGlmICh5KSB7XG4gICAgICByZXN1bHQgPSB7XG4gICAgICAgIHN0YXJ0OiBkYXRlT3V0cHV0VHJhbnNmb3JtZXIoeS5zdGFydCkgYXMgRGF0ZSxcbiAgICAgICAgZW5kOiBkYXRlT3V0cHV0VHJhbnNmb3JtZXIoeS5lbmQpIGFzIERhdGVcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn1cblxuY29uc3QgVElNRV9PVVRQVVRfVEhST1RUTEVfVElNRTogTWlsbGlzZWNvbmRzID0gMTA7XG5cbmV4cG9ydCB0eXBlIEZpeGVkRGF0ZVJhbmdlU2NhblR5cGUgPSAnc3RhcnQnIHwgJ2VuZCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRml4ZWREYXRlUmFuZ2VTY2FuIHtcbiAgLyoqXG4gICAqIFBpY2tlZCB0aGUgc3RhcnQgb3IgZW5kIG9mIHRoZSByYW5nZSBvbiB0aGUgbGFzdCBwaWNrLlxuICAgKi9cbiAgbGFzdFBpY2tUeXBlPzogTWF5YmU8Rml4ZWREYXRlUmFuZ2VTY2FuVHlwZT47XG4gIC8qKlxuICAgKiBUaGUgbGF0ZXN0IGRhdGUgcGFzc2VkLCBpZiBhcHBsaWNhYmxlLlxuICAgKi9cbiAgbGFzdERhdGVSYW5nZT86IE1heWJlPFBhcnRpYWw8RGF0ZVJhbmdlPj47XG4gIC8qKlxuICAgKiBUaGUgZ2VuZXJhdGVkIGJvdW5kYXJ5IHJhbmdlLlxuICAgKi9cbiAgYm91bmRhcnk/OiBEYXRlUmFuZ2U7XG4gIC8qKlxuICAgKiBOZXcgRGF0ZSBSYW5nZVxuICAgKi9cbiAgcmFuZ2U/OiBEYXRlUmFuZ2U7XG59XG5cbnR5cGUgU2VsZWN0ZWREYXRlRXZlbnRUeXBlID0gJ2NhbGVuZGFyJyB8ICdpbnB1dCc7XG5cbmludGVyZmFjZSBTZWxlY3RlZERhdGVFdmVudCB7XG4gIHR5cGU6IFNlbGVjdGVkRGF0ZUV2ZW50VHlwZTtcbiAgcmFuZ2U/OiBNYXliZTxQYXJ0aWFsPERhdGVSYW5nZT4+O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICdmaXhlZGRhdGVyYW5nZS5maWVsZC5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE1BVF9EQVRFX1JBTkdFX1NFTEVDVElPTl9TVFJBVEVHWSxcbiAgICAgIHVzZUNsYXNzOiBmb3J3YXJkUmVmKCgpID0+IERieEZpeGVkRGF0ZVJhbmdlRmllbGRTZWxlY3Rpb25TdHJhdGVneSlcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRGJ4Rml4ZWREYXRlUmFuZ2VGaWVsZENvbXBvbmVudCBleHRlbmRzIEZpZWxkVHlwZTxGaWVsZFR5cGVDb25maWc8RGJ4Rml4ZWREYXRlUmFuZ2VGaWVsZFByb3BzPj4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX3N1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcblxuICBwcml2YXRlIF9pbnB1dFJhbmdlRm9ybVN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcbiAgcHJpdmF0ZSBfaW5wdXRSYW5nZUZvcm1WYWx1ZVN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcblxuICBwcml2YXRlIF9kYXRlUmFuZ2VJbnB1dFN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcbiAgcHJpdmF0ZSBfY3VycmVudFNlbGVjdGlvbk1vZGVTdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG4gIHByaXZhdGUgX2xhdGVzdEJvdW5kYXJ5U3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuICBwcml2YXRlIF9kaXNhYmxlRW5kU3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuICBwcml2YXRlIF9hY3RpdmVEYXRlU3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuXG4gIHByaXZhdGUgX2N1cnJlbnREYXRlUmFuZ2VJbnB1dDogTWF5YmU8RGJ4Rml4ZWREYXRlUmFuZ2VEYXRlUmFuZ2VJbnB1dD4gPSB7fTtcbiAgcHJpdmF0ZSBfY3VycmVudFNlbGVjdGlvbk1vZGU6IERieEZpeGVkRGF0ZVJhbmdlU2VsZWN0aW9uTW9kZSA9ICdzaW5nbGUnO1xuICBwcml2YXRlIF9sYXRlc3RCb3VuZGFyeTogTWF5YmU8RGF0ZVJhbmdlPiA9IG51bGw7XG5cbiAgcHJpdmF0ZSBfY29uZmlnID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxPYnNlcnZhYmxlPERieEZpeGVkRGF0ZVJhbmdlUGlja2VyQ29uZmlndXJhdGlvbj4+Pih1bmRlZmluZWQpO1xuICBwcml2YXRlIF9zZWxlY3Rpb25Nb2RlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxPYnNlcnZhYmxlPERieEZpeGVkRGF0ZVJhbmdlU2VsZWN0aW9uTW9kZT4+Pih1bmRlZmluZWQpO1xuICBwcml2YXRlIF9kYXRlUmFuZ2VJbnB1dCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF5YmU8T2JzZXJ2YWJsZTxEYnhGaXhlZERhdGVSYW5nZURhdGVSYW5nZUlucHV0Pj4+KHVuZGVmaW5lZCk7XG5cbiAgcHJpdmF0ZSBfdGltZXpvbmUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPE9ic2VydmFibGU8TWF5YmU8VGltZXpvbmVTdHJpbmc+Pj4+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgX3ByZXNldHMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE9ic2VydmFibGU8RGF0ZVRpbWVQcmVzZXRDb25maWd1cmF0aW9uW10+PihvZihbXSkpO1xuXG4gIHByaXZhdGUgX3NlbGVjdGlvbkV2ZW50ID0gbmV3IFN1YmplY3Q8U2VsZWN0ZWREYXRlRXZlbnQ+KCk7XG4gIHJlYWRvbmx5IHNlbGVjdGVkRGF0ZVJhbmdlJDogT2JzZXJ2YWJsZTxNYXliZTxQYXJ0aWFsPERhdGVSYW5nZT4+PiA9IHRoaXMuX3NlbGVjdGlvbkV2ZW50LnBpcGUobWFwKCh4KSA9PiB4LnJhbmdlKSk7XG5cbiAgcHJpdmF0ZSBfZm9ybUNvbnRyb2xPYnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPEFic3RyYWN0Q29udHJvbDxNYXliZTxEYXRlUmFuZ2U+Pj4+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGZvcm1Db250cm9sJCA9IHRoaXMuX2Zvcm1Db250cm9sT2JzLnBpcGUoZmlsdGVyTWF5YmUoKSk7XG5cbiAgQFZpZXdDaGlsZChNYXRDYWxlbmRhcilcbiAgY2FsZW5kYXIhOiBNYXRDYWxlbmRhcjxEYXRlPjtcblxuICBAVmlld0NoaWxkKCdzdGFydERhdGVJbnB1dCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBzdGFydERhdGVJbnB1dEVsZW1lbnQhOiBFbGVtZW50UmVmO1xuXG4gIEBWaWV3Q2hpbGQoJ2VuZERhdGVJbnB1dCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBlbmREYXRlSW5wdXRFbGVtZW50ITogRWxlbWVudFJlZjtcblxuICBnZXQgY3VycmVudERhdGVSYW5nZUlucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50RGF0ZVJhbmdlSW5wdXQ7XG4gIH1cblxuICBnZXQgY3VycmVudFNlbGVjdGlvbk1vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRTZWxlY3Rpb25Nb2RlO1xuICB9XG5cbiAgZ2V0IGxhdGVzdEJvdW5kYXJ5KCkge1xuICAgIHJldHVybiB0aGlzLl9sYXRlc3RCb3VuZGFyeTtcbiAgfVxuXG4gIHJlYWRvbmx5IGNvbmZpZyQ6IE9ic2VydmFibGU8RGJ4Rml4ZWREYXRlUmFuZ2VQaWNrZXJDb25maWd1cmF0aW9uPiA9IHRoaXMuX2NvbmZpZy5waXBlKFxuICAgIGZpbHRlck1heWJlKCksXG4gICAgc3dpdGNoTWFwKCh4KSA9PiB4KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgbGltaXREYXRlVGltZUluc3RhbmNlJCA9IHRoaXMuY29uZmlnJC5waXBlKG1hcChsaW1pdERhdGVUaW1lSW5zdGFuY2UpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgcmVhZG9ubHkgc2VsZWN0aW9uTW9kZSQ6IE9ic2VydmFibGU8RGJ4Rml4ZWREYXRlUmFuZ2VTZWxlY3Rpb25Nb2RlPiA9IHRoaXMuX3NlbGVjdGlvbk1vZGUucGlwZShcbiAgICBzd2l0Y2hNYXBNYXliZURlZmF1bHQ8RGJ4Rml4ZWREYXRlUmFuZ2VTZWxlY3Rpb25Nb2RlPignc2luZ2xlJyksXG4gICAgbWFwKCh4KSA9PiB4ID8/ICdzaW5nbGUnKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgZGF0ZVJhbmdlSW5wdXQkID0gdGhpcy5fZGF0ZVJhbmdlSW5wdXQucGlwZShzd2l0Y2hNYXBNYXliZURlZmF1bHQoKSwgc2hhcmVSZXBsYXkoMSkpO1xuXG4gIHJlYWRvbmx5IHRpbWV6b25lJDogT2JzZXJ2YWJsZTxNYXliZTxUaW1lem9uZVN0cmluZz4+ID0gdGhpcy5fdGltZXpvbmUucGlwZShzd2l0Y2hNYXBNYXliZURlZmF1bHQoKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSkucGlwZShcbiAgICBtYXAoKGRlZmF1bHRUaW1lem9uZSkgPT4ge1xuICAgICAgcmV0dXJuIGRlZmF1bHRUaW1lem9uZSA/PyBndWVzc0N1cnJlbnRUaW1lem9uZSgpO1xuICAgIH0pLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSB0aW1lem9uZUluc3RhbmNlJDogT2JzZXJ2YWJsZTxNYXliZTxEYXRlVGltZXpvbmVVdGNOb3JtYWxJbnN0YW5jZT4+ID0gdGhpcy50aW1lem9uZSQucGlwZShcbiAgICBtYXAoKHRpbWV6b25lKSA9PiAodGltZXpvbmUgPyBkYXRlVGltZXpvbmVVdGNOb3JtYWwoeyB0aW1lem9uZSB9KSA6IHVuZGVmaW5lZCkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgdmFsdWVJblN5c3RlbVRpbWV6b25lJDogT2JzZXJ2YWJsZTxNYXliZTxEYXRlUmFuZ2U+PiA9IHRoaXMuZm9ybUNvbnRyb2wkLnBpcGUoXG4gICAgbWFwKChjb250cm9sKSA9PiBjb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aDxNYXliZTxEYXRlUmFuZ2VXaXRoRGF0ZU9yU3RyaW5nVmFsdWU+Pihjb250cm9sLnZhbHVlKSwgc2hhcmVSZXBsYXkoMSkpKSxcbiAgICBjb21iaW5lTGF0ZXN0V2l0aCh0aGlzLnRpbWV6b25lSW5zdGFuY2UkKSxcbiAgICBzd2l0Y2hNYXAoKFt4LCB0aW1lem9uZUluc3RhbmNlXSkgPT4ge1xuICAgICAgcmV0dXJuIHgucGlwZShtYXAoZGJ4Rml4ZWREYXRlUmFuZ2VJbnB1dFZhbHVlRmFjdG9yeSh0aGlzLnZhbHVlTW9kZSwgdGltZXpvbmVJbnN0YW5jZSkpKTtcbiAgICB9KSxcbiAgICB0aHJvdHRsZVRpbWUoMjAsIHVuZGVmaW5lZCwgeyBsZWFkaW5nOiBmYWxzZSwgdHJhaWxpbmc6IHRydWUgfSksIC8vIHRocm90dGxlIGluY29taW5nIHZhbHVlcyBhbmQgdGltZXpvbmUgY2hhbmdlc1xuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkPE1heWJlPERhdGVSYW5nZT4+KGlzU2FtZURhdGVEYXlSYW5nZSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICBkYXRlUmFuZ2VTZWxlY3Rpb25Gb3JNb2RlKG1vZGU6IERieEZpeGVkRGF0ZVJhbmdlU2VsZWN0aW9uTW9kZSkge1xuICAgIGNvbnN0IHJlc3VsdDogT2JzZXJ2YWJsZTxNYXliZTxEYXRlUmFuZ2U+PiA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuZGF0ZVJhbmdlSW5wdXQkLCB0aGlzLmxpbWl0RGF0ZVRpbWVJbnN0YW5jZSRdKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChbZGF0ZVJhbmdlSW5wdXQsIGxpbWl0SW5zdGFuY2VdKSA9PiB7XG4gICAgICAgIGNvbnN0IGhhc0RhdGVSYW5nZUNvbmZpZ3VyYXRpb24gPSBCb29sZWFuKGRhdGVSYW5nZUlucHV0KTtcbiAgICAgICAgY29uc3QgbWluTWF4Q2xhbXAgPSAoZGF0ZVJhbmdlOiBEYXRlUmFuZ2UpID0+IGxpbWl0SW5zdGFuY2UuY2xhbXBEYXRlUmFuZ2UoZGF0ZVJhbmdlKTtcblxuICAgICAgICBpZiAobW9kZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgICAgICAvLyBvbmx5IHVzZSB0aGUgc3RhcnQgZGF0ZS5cbiAgICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZERhdGVSYW5nZSQucGlwZShcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKGlzU2FtZURhdGVEYXlSYW5nZSksXG4gICAgICAgICAgICBtYXAoKGlucHV0RGF0ZVJhbmdlKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBpbnB1dERhdGVSYW5nZT8uc3RhcnQ7XG4gICAgICAgICAgICAgIHJldHVybiBkYXRlID8gKG1pbk1heENsYW1wKGRhdGVSYW5nZSh7IC4uLmRhdGVSYW5nZUlucHV0LCBkYXRlIH0gYXMgRGF0ZVJhbmdlSW5wdXQpKSBhcyBEYXRlUmFuZ2UpIDogbnVsbDtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyB0YWtlIHRoZSBmaXJzdCBkYXRlLCB0aGVuIHdhaXQgdW5sZXNzIHRoZSBkYXRlIGlzIG91dHNpZGUgb2YgdGhlIHJhbmdlLlxuICAgICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlJC5waXBlKFxuICAgICAgICAgICAgc2NhbigoYWNjOiBGaXhlZERhdGVSYW5nZVNjYW4sIG5leHREYXRlUmFuZ2U6IE1heWJlPFBhcnRpYWw8RGF0ZVJhbmdlPj4pID0+IHtcbiAgICAgICAgICAgICAgbGV0IHJlc3VsdDogRml4ZWREYXRlUmFuZ2VTY2FuO1xuICAgICAgICAgICAgICBsZXQgcGlja1R5cGU6IE1heWJlPEZpeGVkRGF0ZVJhbmdlU2NhblR5cGU+ID0gJ3N0YXJ0JztcblxuICAgICAgICAgICAgICBpZiAobmV4dERhdGVSYW5nZSAmJiBuZXh0RGF0ZVJhbmdlLnN0YXJ0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHN0YXJ0OiBzdGFydE9yTmV4dERhdGUsIGVuZCB9ID0gbmV4dERhdGVSYW5nZTtcbiAgICAgICAgICAgICAgICBjb25zdCBwb3RlbnRpYWxCb3VuZGFyeSA9IGRhdGVSYW5nZSh7IC4uLmRhdGVSYW5nZUlucHV0LCBkYXRlOiBzdGFydE9yTmV4dERhdGUgfSBhcyBEYXRlUmFuZ2VJbnB1dCk7XG5cbiAgICAgICAgICAgICAgICAvLyBvbmx5IGNvbWVzIHRocm91Z2ggd2hlbiBwYXNzZWQgYnkgdGhlIHRleHQgaW5wdXRzXG4gICAgICAgICAgICAgICAgaWYgKHN0YXJ0T3JOZXh0RGF0ZSAmJiBlbmQpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHJhbmdlID0gY2xhbXBEYXRlUmFuZ2VUb0RhdGVSYW5nZShuZXh0RGF0ZVJhbmdlLCBwb3RlbnRpYWxCb3VuZGFyeSkgYXMgRGF0ZVJhbmdlO1xuICAgICAgICAgICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgICAgICAgICBsYXN0RGF0ZVJhbmdlOiBuZXh0RGF0ZVJhbmdlLFxuICAgICAgICAgICAgICAgICAgICBib3VuZGFyeTogcmFuZ2UsXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlXG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBsZXQgcmFuZ2U6IE1heWJlPERhdGVSYW5nZT4gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICBsZXQgYm91bmRhcnk6IE1heWJlPERhdGVSYW5nZT4gPSBwb3RlbnRpYWxCb3VuZGFyeTtcblxuICAgICAgICAgICAgICAgICAgaWYgKG1vZGUgPT09ICdub3JtYWwnKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaGFzRGF0ZVJhbmdlQ29uZmlndXJhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZXJlIGlzIG5vIGNvbmZpZ3VyZWQgcmFuZ2UvYm91bmRhcnksIHRoZW4ganVzdCBzZXQgdGhlIHBpY2sgdHlwZSBiYXNlZCBvbiB0aGUgbGFzdCB0eXBlXG4gICAgICAgICAgICAgICAgICAgICAgYm91bmRhcnkgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgcGlja1R5cGUgPSBhY2MubGFzdFBpY2tUeXBlID09PSAnc3RhcnQnID8gJ2VuZCcgOiAnc3RhcnQnO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBwaWNrIGlzIG91dHNpZGUgdGhlIGJvdW5kYXJ5LCB0aGVuIGNvbnNpZGVyIGl0IGEgc3RhcnQgcGljayB0eXBlLlxuICAgICAgICAgICAgICAgICAgICAgIHBpY2tUeXBlID0gYWNjLmxhc3RQaWNrVHlwZSA9PT0gJ3N0YXJ0JyAmJiBhY2MuYm91bmRhcnkgJiYgaXNEYXRlSW5EYXRlUmFuZ2Uoc3RhcnRPck5leHREYXRlLCBhY2MuYm91bmRhcnkpID8gJ2VuZCcgOiAnc3RhcnQnO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gYXNzZXJ0IHRoZSBzdGFydCBleGlzdHMgZnJvbSB0aGUgcHJldmlvdXMgY2xpY2ssIG90aGVyd2lzZSBjbGVhciBpdC5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHBpY2tUeXBlID09PSAnZW5kJykge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RTdGFydCA9IGFjYy5sYXN0RGF0ZVJhbmdlPy5zdGFydDtcblxuICAgICAgICAgICAgICAgICAgICAgIGlmICghbGFzdFN0YXJ0IHx8ICFpc0FmdGVyKHN0YXJ0T3JOZXh0RGF0ZSwgbGFzdFN0YXJ0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGlja1R5cGUgPSAnc3RhcnQnO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIHJlYWN0IGJhc2VkIG9uIGhvdyB0aGlzXG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAocGlja1R5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICBjYXNlICdlbmQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgd2UncmUgcGlja2luZyB0aGUgZW5kIHRoZW4gc2V0IHRoZSByYW5nZS5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydDogYWNjLmxhc3REYXRlUmFuZ2U/LnN0YXJ0IGFzIERhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogc3RhcnRPck5leHREYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRhcnkgPSByYW5nZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3N0YXJ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJldGFpbiB0aGUgYm91bmRhcnkgYXMgcG90ZW50aWFsIGJvdW5kYXJ5LCBhbmQgc2V0IG91ciBuZXcgcmFuZ2UgZnJvbSB0aGUgc2luZ2xlIGRhdGUuXG4gICAgICAgICAgICAgICAgICAgICAgICByYW5nZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IHN0YXJ0T3JOZXh0RGF0ZSBhcyBEYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IHN0YXJ0T3JOZXh0RGF0ZSBhcyBEYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYWNjLmJvdW5kYXJ5ICYmIGlzRGF0ZUluRGF0ZVJhbmdlKHN0YXJ0T3JOZXh0RGF0ZSwgYWNjLmJvdW5kYXJ5KSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBpZiBpbiB0aGUgZGF0ZSByYW5nZSwgdXNlcyB0aGUgcGljayBhcyB0aGUgbGFzdCBkYXRlLlxuICAgICAgICAgICAgICAgICAgICByYW5nZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydDogYWNjLmJvdW5kYXJ5LnN0YXJ0LFxuICAgICAgICAgICAgICAgICAgICAgIGVuZDogc3RhcnRPck5leHREYXRlXG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKG1vZGUgPT09ICdhcmJpdHJhcnlfcXVpY2snKSB7XG4gICAgICAgICAgICAgICAgICAgICAgLy8gbW9kaWZ5IGJvdW5kYXJ5IHRvIG1hdGNoIHJhbmdlXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGlzU2FtZURhdGVSYW5nZShhY2MucmFuZ2UsIHJhbmdlKSAmJiBpc1NhbWVEYXRlRGF5KHJhbmdlLmVuZCwgc3RhcnRPck5leHREYXRlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgd2UgY2xpY2tlZCBvbiB0aGUgZW5kIHJhbmdlLCB0aGVuIGV4cGFuZCB0aGUgYm91bmRhcnkgYWdhaW4gdG8gdGhlIGZ1bGwgcmFuZ2UuXG4gICAgICAgICAgICAgICAgICAgICAgICByYW5nZSA9IGRhdGVSYW5nZSh7IC4uLmRhdGVSYW5nZUlucHV0LCBkYXRlOiByYW5nZS5zdGFydCB9IGFzIERhdGVSYW5nZUlucHV0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kYXJ5ID0gcmFuZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kYXJ5ID0gcmFuZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIC8vIHJldGFpbiBzYW1lIGJvdW5kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgYm91bmRhcnkgPSBhY2MuYm91bmRhcnk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobW9kZSA9PT0gJ2FyYml0cmFyeV9xdWljaycpIHtcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UgPSBwb3RlbnRpYWxCb3VuZGFyeTtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgICAgICAgICBsYXN0RGF0ZVJhbmdlOiBuZXh0RGF0ZVJhbmdlLFxuICAgICAgICAgICAgICAgICAgICBib3VuZGFyeSxcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2VcbiAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgICAgICAgIGxhc3REYXRlUmFuZ2U6IG5leHREYXRlUmFuZ2VcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgICAgICAgIGxhc3RQaWNrVHlwZTogcGlja1R5cGUsXG4gICAgICAgICAgICAgICAgICBsYXN0RGF0ZVJhbmdlOiByZXN1bHQubGFzdERhdGVSYW5nZSxcbiAgICAgICAgICAgICAgICAgIGJvdW5kYXJ5OiByZXN1bHQuYm91bmRhcnkgPyAobWluTWF4Q2xhbXAocmVzdWx0LmJvdW5kYXJ5KSBhcyBEYXRlUmFuZ2UpIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgcmFuZ2U6IHJlc3VsdC5yYW5nZSA/IChtaW5NYXhDbGFtcChyZXN1bHQucmFuZ2UpIGFzIERhdGVSYW5nZSkgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH0sIHt9KSxcbiAgICAgICAgICAgIGZpbHRlcigoeCkgPT4gIXgubGFzdERhdGVSYW5nZSB8fCB4LnJhbmdlICE9IG51bGwpLCAvLyBwYXNzIHRocm91Z2ggbnVsbC9kYXRlIGNsZWFyaW5ncyBvciByYW5nZXNcbiAgICAgICAgICAgIG1hcCgoeCkgPT4geC5yYW5nZSA/PyBudWxsKSAvLyByZXR1cm4gdGhlIHJhbmdlXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHJlYWRvbmx5IGZ1bGxCb3VuZGFyeSQ6IE9ic2VydmFibGU8TWF5YmU8RGF0ZVJhbmdlPj4gPSB0aGlzLmRhdGVSYW5nZVNlbGVjdGlvbkZvck1vZGUoJ3NpbmdsZScpLnBpcGUoc2hhcmVSZXBsYXkoMSkpO1xuICByZWFkb25seSBsYXRlc3RCb3VuZGFyeSQ6IE9ic2VydmFibGU8TWF5YmU8RGF0ZVJhbmdlPj4gPSB0aGlzLnNlbGVjdGlvbk1vZGUkLnBpcGUoXG4gICAgc3dpdGNoTWFwKChtb2RlKSA9PiB7XG4gICAgICBpZiAobW9kZSA9PT0gJ2FyYml0cmFyeV9xdWljaycpIHtcbiAgICAgICAgLy8gaW4gYXJiaXRyYXJ5X3F1aWNrIG1vZGUsIHRoZSBsYXRlc3QgdmFsdWUgaXMgdGhlIGJvdW5kYXJ5LCBzaW5jZSB3ZSBhbHdheXMgc2V0IHRoZSB2YWx1ZSBpbW1lZGlhdGVseS5cbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVJblN5c3RlbVRpbWV6b25lJDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZ1bGxCb3VuZGFyeSQ7XG4gICAgICB9XG4gICAgfSlcbiAgKTtcblxuICAvKipcbiAgICogRm9jdXNlcyBvbiB0aGUgZGF0ZSBhbnkgdGltZSB0aGUgc2VsZWN0aW9uIGV2ZW50IGZyb20gdGhlIHBpY2tlciBvY2N1cmVkLCBvdGhlcndpc2UgdXNlIHRoZSBzeXN0ZW0gdmFsdWVcbiAgICovXG4gIHJlYWRvbmx5IGNhbGVuZGFyRm9jdXNEYXRlJDogT2JzZXJ2YWJsZTxEYXRlPiA9IHRoaXMuX3NlbGVjdGlvbkV2ZW50LnBpcGUoc3RhcnRXaXRoKG51bGwpKS5waXBlKFxuICAgIHN3aXRjaE1hcCgoc2VsZWN0aW9uRXZlbnQpID0+IHtcbiAgICAgIGlmIChzZWxlY3Rpb25FdmVudCAmJiBzZWxlY3Rpb25FdmVudC50eXBlID09PSAnY2FsZW5kYXInICYmIHNlbGVjdGlvbkV2ZW50LnJhbmdlPy5zdGFydCkge1xuICAgICAgICByZXR1cm4gb2Yoc2VsZWN0aW9uRXZlbnQucmFuZ2Uuc3RhcnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZnVsbEJvdW5kYXJ5JC5waXBlKFxuICAgICAgICAgIGZpcnN0KCksXG4gICAgICAgICAgbWFwKChmdWxsQm91bmRhcnkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBmdWxsQm91bmRhcnk/LnN0YXJ0ID8/IHNlbGVjdGlvbkV2ZW50Py5yYW5nZT8uc3RhcnQ7XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KSxcbiAgICBmaWx0ZXJNYXliZSgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgZGF0ZVJhbmdlU2VsZWN0aW9uJDogT2JzZXJ2YWJsZTxNYXliZTxEYXRlUmFuZ2U+PiA9IHRoaXMuc2VsZWN0aW9uTW9kZSQucGlwZShzd2l0Y2hNYXAoKG1vZGUpID0+IHRoaXMuZGF0ZVJhbmdlU2VsZWN0aW9uRm9yTW9kZShtb2RlKSkpO1xuXG4gIHJlYWRvbmx5IGNhbGVuZGFyU2VsZWN0aW9uJDogT2JzZXJ2YWJsZTxEYXRlUGlja2VyRGF0ZVJhbmdlPERhdGU+IHwgbnVsbD4gPSB0aGlzLnZhbHVlSW5TeXN0ZW1UaW1lem9uZSQucGlwZShcbiAgICBtYXAoKHgpID0+ICh4ID8gbmV3IERhdGVQaWNrZXJEYXRlUmFuZ2U8RGF0ZT4oeC5zdGFydCwgeC5lbmQpIDogbnVsbCkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgZW5kRGlzYWJsZWQkID0gdGhpcy5zZWxlY3Rpb25Nb2RlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geCA9PT0gJ3NpbmdsZScpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBpbnB1dFJhbmdlRm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xuICAgIHN0YXJ0OiBuZXcgRm9ybUNvbnRyb2w8TWF5YmU8RGF0ZT4+KG51bGwpLFxuICAgIGVuZDogbmV3IEZvcm1Db250cm9sPE1heWJlPERhdGU+PihudWxsKVxuICB9KTtcblxuICBnZXQgZml4ZWREYXRlUmFuZ2VGaWVsZCgpOiBEYnhGaXhlZERhdGVSYW5nZUZpZWxkUHJvcHMge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnByb3BzO1xuICB9XG5cbiAgZ2V0IHNlbGVjdGlvbk1vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQucHJvcHMuc2VsZWN0aW9uTW9kZTtcbiAgfVxuXG4gIGdldCB2YWx1ZU1vZGUoKTogRGJ4RGF0ZVRpbWVWYWx1ZU1vZGUge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnByb3BzLnZhbHVlTW9kZSA/PyBEYnhEYXRlVGltZVZhbHVlTW9kZS5EQVRFO1xuICB9XG5cbiAgZ2V0IGRlc2NyaXB0aW9uKCk6IE1heWJlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnByb3BzLmRlc2NyaXB0aW9uO1xuICB9XG5cbiAgZ2V0IHRpbWV6b25lKCkge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnByb3BzLnRpbWV6b25lO1xuICB9XG5cbiAgZ2V0IHNob3dUaW1lem9uZSgpIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5wcm9wcy5zaG93VGltZXpvbmUgPz8gdHJ1ZTtcbiAgfVxuXG4gIGdldCBwcmVzZXRzKCkge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnByb3BzLnByZXNldHM7XG4gIH1cblxuICBnZXQgc2hvd1JhbmdlSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQucHJvcHMuc2hvd1JhbmdlSW5wdXQgPz8gdHJ1ZTtcbiAgfVxuXG4gIHJlYWRvbmx5IG1pbk1heFJhbmdlJCA9IHRoaXMubGltaXREYXRlVGltZUluc3RhbmNlJC5waXBlKFxuICAgIGNvbWJpbmVMYXRlc3RXaXRoKHRpbWVyKE1TX0lOX01JTlVURSkpLCAvLyByZWZyZXNoIGV2ZXJ5IG1pbnV0ZVxuICAgIG1hcCgoW3hdKSA9PiB4LmRhdGVSYW5nZSgpKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChpc1NhbWVEYXRlRGF5UmFuZ2UpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgbWluJCA9IHRoaXMubWluTWF4UmFuZ2UkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4Py5zdGFydCA/PyBudWxsKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgbWF4JCA9IHRoaXMubWluTWF4UmFuZ2UkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4Py5lbmQgPz8gbnVsbCksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHBpY2tlckZpbHRlciQ6IE9ic2VydmFibGU8RGVjaXNpb25GdW5jdGlvbjxEYXRlIHwgbnVsbD4+ID0gdGhpcy5jb25maWckLnBpcGUoXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBtYXAoKHgpID0+IHtcbiAgICAgIGlmICh4KSB7XG4gICAgICAgIGNvbnN0IGZpbHRlciA9IGRhdGVUaW1lTWludXRlV2hvbGVEYXlEZWNpc2lvbkZ1bmN0aW9uKHgsIGZhbHNlKTtcbiAgICAgICAgcmV0dXJuICh4OiBEYXRlIHwgbnVsbCkgPT4gKHggIT0gbnVsbCA/IGZpbHRlcih4KSA6IHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuICgpID0+IHRydWU7XG4gICAgICB9XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBkZWZhdWx0UGlja2VyRmlsdGVyOiBEZWNpc2lvbkZ1bmN0aW9uPERhdGUgfCBudWxsPiA9ICgpID0+IHRydWU7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBkYnhEYXRlVGltZUZpZWxkQ29uZmlnU2VydmljZTogRGJ4RGF0ZVRpbWVGaWVsZE1lbnVQcmVzZXRzU2VydmljZSkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9mb3JtQ29udHJvbE9icy5uZXh0KHRoaXMuZm9ybUNvbnRyb2wpO1xuXG4gICAgY29uc3QgZGF0ZVJhbmdlU2VsZWN0aW9uID0gdGhpcy5kYXRlUmFuZ2VTZWxlY3Rpb24kLnBpcGUoc2hhcmVSZXBsYXkoMSkpO1xuXG4gICAgY29uc3Qgc2V0SW5wdXRGb3JtVmFsdWUgPSAodmFsdWU6IE1heWJlPERhdGVSYW5nZT4pID0+IHtcbiAgICAgIGlmICghaXNTYW1lRGF0ZURheVJhbmdlKHZhbHVlLCB0aGlzLmlucHV0UmFuZ2VGb3JtLnZhbHVlIGFzIFBhcnRpYWw8RGF0ZVJhbmdlPikpIHtcbiAgICAgICAgdGhpcy5pbnB1dFJhbmdlRm9ybS5zZXRWYWx1ZSh7XG4gICAgICAgICAgc3RhcnQ6IHZhbHVlPy5zdGFydCA/PyBudWxsLFxuICAgICAgICAgIGVuZDogdmFsdWU/LmVuZCA/PyBudWxsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB0aGlzLl9zdWIuc3Vic2NyaXB0aW9uID0gdGhpcy52YWx1ZUluU3lzdGVtVGltZXpvbmUkXG4gICAgICAucGlwZShcbiAgICAgICAgY29tYmluZUxhdGVzdFdpdGgodGhpcy50aW1lem9uZUluc3RhbmNlJC5waXBlKG1hcCgodGltZXpvbmVJbnN0YW5jZSkgPT4gZGJ4Rml4ZWREYXRlUmFuZ2VPdXRwdXRWYWx1ZUZhY3RvcnkodGhpcy52YWx1ZU1vZGUsIHRpbWV6b25lSW5zdGFuY2UpKSkpLFxuICAgICAgICB0aHJvdHRsZVRpbWUoVElNRV9PVVRQVVRfVEhST1RUTEVfVElNRSwgdW5kZWZpbmVkLCB7IGxlYWRpbmc6IGZhbHNlLCB0cmFpbGluZzogdHJ1ZSB9KSxcbiAgICAgICAgc3dpdGNoTWFwKChbY3VycmVudFZhbHVlLCB2YWx1ZUZhY3RvcnldKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGRhdGVSYW5nZVNlbGVjdGlvbi5waXBlKFxuICAgICAgICAgICAgc2tpcEZpcnN0TWF5YmUoKSxcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkPE1heWJlPERhdGVSYW5nZT4+KGlzU2FtZURhdGVEYXlSYW5nZSksXG4gICAgICAgICAgICBtYXAoKHgpID0+IFt4LCBjdXJyZW50VmFsdWUsIHZhbHVlRmFjdG9yeV0gYXMgW3R5cGVvZiB4LCB0eXBlb2YgY3VycmVudFZhbHVlLCB0eXBlb2YgdmFsdWVGYWN0b3J5XSlcbiAgICAgICAgICApO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoW3Jhd1ZhbHVlLCBjdXJyZW50VmFsdWUsIHZhbHVlRmFjdG9yeV0pID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSByYXdWYWx1ZSA/IHZhbHVlRmFjdG9yeShyYXdWYWx1ZSkgOiBudWxsO1xuICAgICAgICBjb25zdCBpc1NhbWVSYW5nZSA9IGRieERhdGVSYW5nZUlzU2FtZURhdGVSYW5nZUZpZWxkVmFsdWUodmFsdWUsIGN1cnJlbnRWYWx1ZSk7XG5cbiAgICAgICAgaWYgKCFpc1NhbWVSYW5nZSkge1xuICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzRGlydHkoKTtcbiAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgICAgfSBlbHNlIGlmIChyYXdWYWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgLy8gdXBkYXRlIHRoZSBpbnB1dCB0ZXh0IGFnYWluXG4gICAgICAgICAgc2V0SW5wdXRGb3JtVmFsdWUocmF3VmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUpIHtcbiAgICAgIHRoaXMuX3NlbGVjdGlvbk1vZGUubmV4dChhc09ic2VydmFibGVGcm9tR2V0dGVyKHRoaXMuc2VsZWN0aW9uTW9kZSkpO1xuICAgIH1cblxuICAgIHRoaXMuX2N1cnJlbnRTZWxlY3Rpb25Nb2RlU3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMuc2VsZWN0aW9uTW9kZSQuc3Vic2NyaWJlKCh4KSA9PiAodGhpcy5fY3VycmVudFNlbGVjdGlvbk1vZGUgPSB4KSk7XG4gICAgdGhpcy5fZGF0ZVJhbmdlSW5wdXRTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy5kYXRlUmFuZ2VJbnB1dCQuc3Vic2NyaWJlKCh4KSA9PiAodGhpcy5fY3VycmVudERhdGVSYW5nZUlucHV0ID0geCkpO1xuXG4gICAgdGhpcy5faW5wdXRSYW5nZUZvcm1TdWIuc3Vic2NyaXB0aW9uID0gdGhpcy52YWx1ZUluU3lzdGVtVGltZXpvbmUkLnN1YnNjcmliZSgoeDogTWF5YmU8RGF0ZVJhbmdlPikgPT4ge1xuICAgICAgc2V0SW5wdXRGb3JtVmFsdWUoeCk7XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5zaG93UmFuZ2VJbnB1dCkge1xuICAgICAgdGhpcy5faW5wdXRSYW5nZUZvcm1WYWx1ZVN1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLnZhbHVlSW5TeXN0ZW1UaW1lem9uZSRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGhyb3R0bGVUaW1lKDEwMCksIC8vIHRocm90dGxlIHRvIHByZXZlbnQgdGhlIHZhbHVlIGZyb20gY2hhbmdpbmcgdG9vIGZhc3RcbiAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXRSYW5nZUZvcm0udmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICAgIGRlYm91bmNlVGltZSg1MDApLFxuICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0U3RyaW5nID0gdGhpcy5zdGFydERhdGVJbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudD8udmFsdWU7XG4gICAgICAgICAgICAgICAgbGV0IHZhbGlkID0gaXNNb250aERheVNsYXNoRGF0ZShzdGFydFN0cmluZyk7XG5cbiAgICAgICAgICAgICAgICBpZiAodmFsaWQgJiYgdGhpcy5fY3VycmVudFNlbGVjdGlvbk1vZGUgIT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBlbmRTdHJpbmcgPSB0aGlzLmVuZERhdGVJbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudD8udmFsdWU7XG4gICAgICAgICAgICAgICAgICB2YWxpZCA9IGlzTW9udGhEYXlTbGFzaERhdGUoZW5kU3RyaW5nKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsaWQ7IC8vIG11c3QgYmUgYSB2YWxpZCB0ZXh0IGlucHV0XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBtYXAoKHgpID0+IHggYXMgTWF5YmU8UGFydGlhbDxEYXRlUmFuZ2U+PilcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoaXNTYW1lRGF0ZVJhbmdlKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKHg6IE1heWJlPFBhcnRpYWw8RGF0ZVJhbmdlPj4pID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5fY3VycmVudFNlbGVjdGlvbk1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgICB0aGlzLnNldERhdGVSYW5nZSh4Py5zdGFydCA/IHsgc3RhcnQ6IHguc3RhcnQgfSA6IG51bGwsICdpbnB1dCcpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgcmFuZ2VUb1NldDogTWF5YmU8UGFydGlhbDxEYXRlUmFuZ2U+PiA9IHg7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLl9jdXJyZW50U2VsZWN0aW9uTW9kZSA9PT0gJ2FyYml0cmFyeV9xdWljaycgJiYgdGhpcy5fbGF0ZXN0Qm91bmRhcnkgJiYgeD8uc3RhcnQgJiYgeD8uZW5kKSB7XG4gICAgICAgICAgICAgIGlmICghaXNEYXRlSW5EYXRlUmFuZ2UoeC5zdGFydCwgdGhpcy5fbGF0ZXN0Qm91bmRhcnkpKSB7XG4gICAgICAgICAgICAgICAgLy8gaWYgdGhlIGVuZCBkYXRlIGl0IG91dHNpZGUgb2YgdGhlIGN1cnJlbnQgcmFuZ2UgKGkuZS4gYSByYW5nZSB3YXMgdHlwZWQgaW4gb25seSB0byB0aGUgc3RhcnQgZGF0ZSkgdGhlbiBzZXQgdGhlIGVuZCB0byB0aGUgYm91bmRhcnkgZW5kXG4gICAgICAgICAgICAgICAgY29uc3QgYm91bmRhcnkgPSBkYXRlUmFuZ2UoeyAuLi50aGlzLl9jdXJyZW50RGF0ZVJhbmdlSW5wdXQsIGRhdGU6IHguc3RhcnQgfSBhcyBEYXRlUmFuZ2VJbnB1dCk7XG4gICAgICAgICAgICAgICAgcmFuZ2VUb1NldCA9IHsgc3RhcnQ6IHguc3RhcnQsIGVuZDogYm91bmRhcnkuZW5kIH07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5zZXREYXRlUmFuZ2UocmFuZ2VUb1NldCwgJ2lucHV0Jyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLl9sYXRlc3RCb3VuZGFyeVN1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLmxhdGVzdEJvdW5kYXJ5JC5zdWJzY3JpYmUoKHgpID0+ICh0aGlzLl9sYXRlc3RCb3VuZGFyeSA9IHgpKTtcbiAgICB0aGlzLl9kYXRlUmFuZ2VJbnB1dC5uZXh0KGFzT2JzZXJ2YWJsZUZyb21HZXR0ZXIodGhpcy5maXhlZERhdGVSYW5nZUZpZWxkLmRhdGVSYW5nZUlucHV0KSk7XG5cbiAgICB0aGlzLl9kaXNhYmxlRW5kU3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMuZW5kRGlzYWJsZWQkLnN1YnNjcmliZSgoZGlzYWJsZWQpID0+IHtcbiAgICAgIGNvbnN0IGVuZCA9IHRoaXMuaW5wdXRSYW5nZUZvcm0uZ2V0KCdlbmQnKTtcblxuICAgICAgaWYgKGVuZCkge1xuICAgICAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgICAgICBlbmQuZGlzYWJsZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVuZC5lbmFibGUoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgaW5wdXRQaWNrZXJDb25maWcgPSB0aGlzLmZpeGVkRGF0ZVJhbmdlRmllbGQucGlja2VyQ29uZmlnO1xuICAgIHRoaXMuX2NvbmZpZy5uZXh0KGlucHV0UGlja2VyQ29uZmlnID8gYXNPYnNlcnZhYmxlRnJvbUdldHRlcihpbnB1dFBpY2tlckNvbmZpZykgOiB1bmRlZmluZWQpO1xuXG4gICAgLy8gU2V0IGRlZmF1bHQgdGltZXpvbmUgaWYgcHJvdmlkZWQuXG4gICAgaWYgKHRoaXMudGltZXpvbmUgJiYgIXRoaXMuZml4ZWREYXRlUmFuZ2VGaWVsZC5mdWxsRGF5SW5VVEMpIHtcbiAgICAgIHRoaXMuX3RpbWV6b25lLm5leHQoYXNPYnNlcnZhYmxlRnJvbUdldHRlcih0aGlzLnRpbWV6b25lKSk7XG4gICAgfVxuXG4gICAgLy8gV2F0Y2ggZm9yIGRpc2FibGVkIGNoYW5nZXMgc28gd2UgY2FuIHByb3BvZ2F0ZSB0aGVtIHByb3Blcmx5LlxuICAgIHRoaXMuZm9ybUNvbnRyb2wucmVnaXN0ZXJPbkRpc2FibGVkQ2hhbmdlKChkaXNhYmxlZCkgPT4ge1xuICAgICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICAgIHRoaXMuaW5wdXRSYW5nZUZvcm0uZGlzYWJsZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pbnB1dFJhbmdlRm9ybS5lbmFibGUoKTtcblxuICAgICAgICB0aGlzLmVuZERpc2FibGVkJC5waXBlKGZpcnN0KCkpLnN1YnNjcmliZSgoZGlzYWJsZWQpID0+IHtcbiAgICAgICAgICBjb25zdCBlbmQgPSB0aGlzLmlucHV0UmFuZ2VGb3JtLmdldCgnZW5kJyk7XG5cbiAgICAgICAgICBpZiAoZW5kKSB7XG4gICAgICAgICAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgZW5kLmRpc2FibGUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGVuZC5lbmFibGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMucHJlc2V0cyAhPSBudWxsKSB7XG4gICAgICB0aGlzLl9wcmVzZXRzLm5leHQoYXNPYnNlcnZhYmxlRnJvbUdldHRlcih0aGlzLnByZXNldHMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fcHJlc2V0cy5uZXh0KHRoaXMuZGJ4RGF0ZVRpbWVGaWVsZENvbmZpZ1NlcnZpY2UuY29uZmlndXJhdGlvbnMkKTtcbiAgICB9XG5cbiAgICB0aGlzLl9hY3RpdmVEYXRlU3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMuY2FsZW5kYXJGb2N1c0RhdGUkLnN1YnNjcmliZSgoeCkgPT4ge1xuICAgICAgdGhpcy5jYWxlbmRhci5hY3RpdmVEYXRlID0geDtcbiAgICB9KTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgdGhpcy5fc3ViLmRlc3Ryb3koKTtcbiAgICB0aGlzLl9pbnB1dFJhbmdlRm9ybVN1Yi5kZXN0cm95KCk7XG4gICAgdGhpcy5faW5wdXRSYW5nZUZvcm1WYWx1ZVN1Yi5kZXN0cm95KCk7XG4gICAgdGhpcy5fZGF0ZVJhbmdlSW5wdXRTdWIuZGVzdHJveSgpO1xuICAgIHRoaXMuX2N1cnJlbnRTZWxlY3Rpb25Nb2RlU3ViLmRlc3Ryb3koKTtcbiAgICB0aGlzLl9sYXRlc3RCb3VuZGFyeVN1Yi5kZXN0cm95KCk7XG4gICAgdGhpcy5fZGlzYWJsZUVuZFN1Yi5kZXN0cm95KCk7XG4gICAgdGhpcy5fYWN0aXZlRGF0ZVN1Yi5kZXN0cm95KCk7XG4gICAgdGhpcy5fY29uZmlnLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fc2VsZWN0aW9uTW9kZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX2RhdGVSYW5nZUlucHV0LmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fdGltZXpvbmUuY29tcGxldGUoKTtcbiAgICB0aGlzLl9wcmVzZXRzLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fc2VsZWN0aW9uRXZlbnQuY29tcGxldGUoKTtcbiAgICB0aGlzLl9mb3JtQ29udHJvbE9icy5jb21wbGV0ZSgpO1xuICB9XG5cbiAgc2VsZWN0ZWRDaGFuZ2UoZGF0ZTogTWF5YmU8RGF0ZT4pOiB2b2lkIHtcbiAgICB0aGlzLnNldERhdGVSYW5nZShkYXRlID8geyBzdGFydDogZGF0ZSB9IDogbnVsbCwgJ2NhbGVuZGFyJyk7XG4gIH1cblxuICBzZXREYXRlUmFuZ2UocmFuZ2U6IE1heWJlPFBhcnRpYWw8RGF0ZVJhbmdlPj4sIHR5cGU6IFNlbGVjdGVkRGF0ZUV2ZW50VHlwZSkge1xuICAgIHRoaXMuX3NlbGVjdGlvbkV2ZW50Lm5leHQoeyB0eXBlLCByYW5nZSB9KTtcbiAgfVxuXG4gIF9jcmVhdGVEYXRlUmFuZ2UoZGF0ZTogTWF5YmU8RGF0ZT4pOiBNYXliZTxEYXRlUmFuZ2U+IHtcbiAgICByZXR1cm4gZGF0ZSA/IGRhdGVSYW5nZSh7IC4uLnRoaXMuX2N1cnJlbnREYXRlUmFuZ2VJbnB1dCwgZGF0ZSB9IGFzIERhdGVSYW5nZUlucHV0KSA6IHVuZGVmaW5lZDtcbiAgfVxufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGJ4Rml4ZWREYXRlUmFuZ2VGaWVsZFNlbGVjdGlvblN0cmF0ZWd5PEQ+IGltcGxlbWVudHMgTWF0RGF0ZVJhbmdlU2VsZWN0aW9uU3RyYXRlZ3k8RD4ge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9kYXRlQWRhcHRlcjogRGF0ZUFkYXB0ZXI8RD4sIHJlYWRvbmx5IGRieEZpeGVkRGF0ZVJhbmdlRmllbGRDb21wb25lbnQ6IERieEZpeGVkRGF0ZVJhbmdlRmllbGRDb21wb25lbnQpIHt9XG5cbiAgc2VsZWN0aW9uRmluaXNoZWQoZGF0ZTogRCB8IG51bGwsIGN1cnJlbnRSYW5nZTogRGF0ZVBpY2tlckRhdGVSYW5nZTxEPiwgZXZlbnQ6IEV2ZW50KTogRGF0ZVBpY2tlckRhdGVSYW5nZTxEPiB7XG4gICAgLy8gdW51c2VkXG4gICAgcmV0dXJuIGN1cnJlbnRSYW5nZTtcbiAgfVxuXG4gIGNyZWF0ZVByZXZpZXcoYWN0aXZlRGF0ZTogRCB8IG51bGwsIGN1cnJlbnRSYW5nZTogRGF0ZVBpY2tlckRhdGVSYW5nZTxEPiwgZXZlbnQ6IEV2ZW50KTogRGF0ZVBpY2tlckRhdGVSYW5nZTxEPiB7XG4gICAgY29uc3QgeyBjdXJyZW50U2VsZWN0aW9uTW9kZSB9ID0gdGhpcy5kYnhGaXhlZERhdGVSYW5nZUZpZWxkQ29tcG9uZW50O1xuICAgIGlmIChhY3RpdmVEYXRlICE9IG51bGwgJiYgY3VycmVudFNlbGVjdGlvbk1vZGUgIT09ICdzaW5nbGUnKSB7XG4gICAgICBjb25zdCBsYXRlc3RCb3VuZGFyeSA9IHRoaXMuZGJ4Rml4ZWREYXRlUmFuZ2VGaWVsZENvbXBvbmVudC5sYXRlc3RCb3VuZGFyeTtcbiAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLmRhdGVGcm9tQWRhcHRlckRhdGUoYWN0aXZlRGF0ZSk7XG5cbiAgICAgIGlmIChsYXRlc3RCb3VuZGFyeSAmJiAoY3VycmVudFNlbGVjdGlvbk1vZGUgPT09ICdub3JtYWwnIHx8IGlzRGF0ZUluRGF0ZVJhbmdlKGRhdGUsIGxhdGVzdEJvdW5kYXJ5KSkpIHtcbiAgICAgICAgY29uc3QgZXhhbXBsZURhdGVSYW5nZSA9IHRoaXMuX2NyZWF0ZURhdGVSYW5nZShsYXRlc3RCb3VuZGFyeSk7XG4gICAgICAgIHJldHVybiBleGFtcGxlRGF0ZVJhbmdlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9jcmVhdGVEYXRlUmFuZ2VXaXRoRGF0ZShhY3RpdmVEYXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZURhdGVSYW5nZVdpdGhEYXRlKGlucHV0OiBEIHwgbnVsbCk6IERhdGVQaWNrZXJEYXRlUmFuZ2U8RD4ge1xuICAgIGxldCBkYXRlUmFuZ2U6IE1heWJlPERhdGVSYW5nZT47XG5cbiAgICBpZiAoaW5wdXQpIHtcbiAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLmRhdGVGcm9tQWRhcHRlckRhdGUoaW5wdXQpO1xuICAgICAgZGF0ZVJhbmdlID0gdGhpcy5kYnhGaXhlZERhdGVSYW5nZUZpZWxkQ29tcG9uZW50Ll9jcmVhdGVEYXRlUmFuZ2UoZGF0ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2NyZWF0ZURhdGVSYW5nZShkYXRlUmFuZ2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY3JlYXRlRGF0ZVJhbmdlKGlucHV0OiBNYXliZTxEYXRlUmFuZ2U+KTogRGF0ZVBpY2tlckRhdGVSYW5nZTxEPiB7XG4gICAgaWYgKGlucHV0KSB7XG4gICAgICByZXR1cm4gbmV3IERhdGVQaWNrZXJEYXRlUmFuZ2U8RD4odGhpcy5hZGFwdGVyRGF0ZUZyb21EYXRlKGlucHV0LnN0YXJ0KSwgdGhpcy5hZGFwdGVyRGF0ZUZyb21EYXRlKGlucHV0LmVuZCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3IERhdGVQaWNrZXJEYXRlUmFuZ2U8RD4obnVsbCwgbnVsbCk7XG4gICAgfVxuICB9XG5cbiAgZGF0ZUZyb21BZGFwdGVyRGF0ZShpbnB1dDogRCkge1xuICAgIGNvbnN0IGRheTogRGF5T2ZNb250aCA9IHRoaXMuX2RhdGVBZGFwdGVyLmdldERhdGUoaW5wdXQpO1xuICAgIGNvbnN0IG1vbnRoSW5kZXg6IERhdGVNb250aCA9IHRoaXMuX2RhdGVBZGFwdGVyLmdldE1vbnRoKGlucHV0KTtcbiAgICBjb25zdCB5ZWFyOiBZZWFyTnVtYmVyID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZ2V0WWVhcihpbnB1dCk7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHllYXIsIG1vbnRoSW5kZXgsIGRheSk7XG4gIH1cblxuICBhZGFwdGVyRGF0ZUZyb21EYXRlKGRhdGU6IERhdGUpOiBEIHtcbiAgICBjb25zdCBkYXk6IERheU9mTW9udGggPSBkYXRlLmdldERhdGUoKTtcbiAgICBjb25zdCBtb250aEluZGV4OiBEYXRlTW9udGggPSBkYXRlLmdldE1vbnRoKCk7XG4gICAgY29uc3QgeWVhcjogWWVhck51bWJlciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcblxuICAgIHJldHVybiB0aGlzLl9kYXRlQWRhcHRlci5jcmVhdGVEYXRlKHllYXIsIG1vbnRoSW5kZXgsIGRheSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkYngtZml4ZWRkYXRlcmFuZ2UtZmllbGRcIj5cbiAgPG1hdC1jYWxlbmRhciAjY2FsZW5kYXJWaWV3IFtzZWxlY3RlZF09XCJjYWxlbmRhclNlbGVjdGlvbiQgfCBhc3luY1wiIFtkYXRlRmlsdGVyXT1cIihwaWNrZXJGaWx0ZXIkIHwgYXN5bmMpIHx8IGRlZmF1bHRQaWNrZXJGaWx0ZXJcIiBbbWluRGF0ZV09XCJtaW4kIHwgYXN5bmNcIiBbbWF4RGF0ZV09XCJtYXgkIHwgYXN5bmNcIiAoc2VsZWN0ZWRDaGFuZ2UpPVwic2VsZWN0ZWRDaGFuZ2UoJGV2ZW50KVwiPjwvbWF0LWNhbGVuZGFyPlxuICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJkYngtZml4ZWRkYXRlcmFuZ2UtZmllbGQtaW5wdXRcIiBhcHBlYXJhbmNlPVwiZmlsbFwiPlxuICAgIDxtYXQtZGF0ZS1yYW5nZS1pbnB1dCAqbmdJZj1cInNob3dSYW5nZUlucHV0XCIgW2Zvcm1Hcm91cF09XCJpbnB1dFJhbmdlRm9ybVwiPlxuICAgICAgPGlucHV0ICNzdGFydERhdGVJbnB1dCBtYXRTdGFydERhdGUgZm9ybUNvbnRyb2xOYW1lPVwic3RhcnRcIiBwbGFjZWhvbGRlcj1cIlN0YXJ0IGRhdGVcIiAvPlxuICAgICAgPGlucHV0ICNlbmREYXRlSW5wdXQgW25nQ2xhc3NdPVwiKGVuZERpc2FibGVkJCB8IGFzeW5jKSA/ICdkYngtZml4ZWRkYXRlcmFuZ2UtZmllbGQtaW5wdXQtZW5kJyA6ICcnXCIgW2F0dHIudGFiaW5kZXhdPVwiKGVuZERpc2FibGVkJCB8IGFzeW5jKSA/IC0xIDogMFwiIG1hdEVuZERhdGUgZm9ybUNvbnRyb2xOYW1lPVwiZW5kXCIgcGxhY2Vob2xkZXI9XCJFbmQgZGF0ZVwiIC8+XG4gICAgPC9tYXQtZGF0ZS1yYW5nZS1pbnB1dD5cbiAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm1Db250cm9sLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+RGF0ZSByYW5nZSBpcyByZXF1aXJlZDwvbWF0LWVycm9yPlxuPC9kaXY+XG4iXX0=
|
|
@@ -7,7 +7,7 @@ import { Injectable, SkipSelf, Directive, Injector, Optional, Component, Inject,
|
|
|
7
7
|
import { FieldType } from '@ngx-formly/material';
|
|
8
8
|
import { switchMap, first, tap, map, distinctUntilChanged, shareReplay, of, combineLatestWith, BehaviorSubject, filter, combineLatest, EMPTY, startWith, throttleTime } from 'rxjs';
|
|
9
9
|
import { filterMaybe, distinctUntilHasDifferentValues, SubscriptionObject, asObservableFromGetter, asObservable } from '@dereekb/rxjs';
|
|
10
|
-
import { DateCellScheduleDayCode, expandDateCellScheduleDayCodesToDayOfWeekSet, dateCellTimingStartsAtForStartOfDay, dateCellTimingRelativeIndexFactory, dateCellDayOfWeekFactory, dateTimezoneUtcNormal, findMaxDate, findMinDate, isSameDateRange, isSameDateDay, isSameDate, dateCellTimingDateFactory, expandDateCellScheduleRange,
|
|
10
|
+
import { DateCellScheduleDayCode, expandDateCellScheduleDayCodesToDayOfWeekSet, dateCellTimingStartsAtForStartOfDay, dateCellTimingRelativeIndexFactory, dateCellDayOfWeekFactory, dateTimezoneUtcNormal, findMaxDate, findMinDate, isSameDateRange, isSameDateDay, isSameDate, dateCellTimingDateFactory, expandDateCellScheduleRange, formatToISO8601DayStringForSystem, changeDateCellScheduleDateRangeToTimezone, isSameDateCellScheduleDateRange, dateCellTimingRelativeIndexArrayFactory, isInfiniteDateRange, copyDateCellScheduleDateFilterConfig, SYSTEM_DATE_TIMEZONE_UTC_NORMAL_INSTANCE, dateCellScheduleDateFilter, fullDateCellScheduleRange, dateCellTimingTimezoneNormalInstance, expandDateCellScheduleDayCodes, fullWeekDateCellScheduleDayCodes, dateCellScheduleDayCodesAreSetsEquivalent, simplifyDateCellScheduleDayCodes, dateCellTimingStartDateFactory, isDateInDateRangeFunction, isDateWithinDateCellRangeFunction, dateCellScheduleEncodedWeek, enabledDaysFromDateCellScheduleDayCodes, dateCellScheduleDayCodesFromEnabledDays, formatToMonthDayString, dateRange, DateRangeType } from '@dereekb/date';
|
|
11
11
|
import { isInAllowedDaysOfWeekSet, mapValuesToSet, unique, mergeArrays, iterableToArray, isIterable, firstValueFromIterable, minAndMaxNumber, range, toggleInSet, removeFromSet, addToSet, isIndexNumberInIndexRangeFunction, getDaysOfWeekNames, reduceBooleansWithAnd, mergeObjects, KeyValueTypleValueFilter } from '@dereekb/util';
|
|
12
12
|
import { ComponentStore } from '@ngrx/component-store';
|
|
13
13
|
import { startOfDay, endOfDay, isBefore, endOfWeek } from 'date-fns';
|
|
@@ -211,7 +211,7 @@ class DbxCalendarScheduleSelectionStore extends ComponentStore {
|
|
|
211
211
|
this.currentSelectionValueDateCellDurationSpanExpansion$ = this.currentSelectionValue$.pipe(map((x) => (x ? expandDateCellScheduleRange({ dateCellScheduleRange: x.dateScheduleRange }) : [])), shareReplay(1));
|
|
212
212
|
this.selectionValueSelectedIndexes$ = this.currentSelectionValueDateCellDurationSpanExpansion$.pipe(map((x) => new Set(x.map((y) => y.i))), distinctUntilHasDifferentValues(), shareReplay(1));
|
|
213
213
|
this.selectionValueSelectedDates$ = this.currentSelectionValueDateCellTimingDateFactory$.pipe(switchMap((dateFactory) => {
|
|
214
|
-
return dateFactory ? this.selectionValueSelectedIndexes$.pipe(map((x) => mapValuesToSet(x, (y) =>
|
|
214
|
+
return dateFactory ? this.selectionValueSelectedIndexes$.pipe(map((x) => mapValuesToSet(x, (y) => formatToISO8601DayStringForSystem(dateFactory(y))))) : of(new Set());
|
|
215
215
|
}), shareReplay(1));
|
|
216
216
|
this.selectionValue$ = this.currentSelectionValue$.pipe(filterMaybe(), shareReplay(1));
|
|
217
217
|
this.currentSelectionValueWithTimezone$ = this.currentSelectionValue$.pipe(combineLatestWith(this.effectiveOutputTimezoneNormal$), map(([x, timezoneNormal]) => {
|