@sumaris-net/ngx-components 2.7.0-rc4 → 2.7.0-rc5
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/src/app/admin/services/filter/person.filter.mjs +1 -1
- package/esm2022/src/app/admin/services/person.service.mjs +2 -2
- package/esm2022/src/app/admin/services/validator/person.validator.mjs +1 -1
- package/esm2022/src/app/admin/users/users.mjs +3 -3
- package/esm2022/src/app/core/about/about.modal.mjs +1 -1
- package/esm2022/src/app/core/account/account.page.mjs +1 -1
- package/esm2022/src/app/core/account/new-token.modal.mjs +1 -1
- package/esm2022/src/app/core/account/token.table.mjs +1 -1
- package/esm2022/src/app/core/auth/auth.form.mjs +1 -1
- package/esm2022/src/app/core/auth/auth.modal.mjs +1 -1
- package/esm2022/src/app/core/form/entity/editor.class.mjs +1 -1
- package/esm2022/src/app/core/form/entity/entity-editor-modal.class.mjs +1 -1
- package/esm2022/src/app/core/form/entity/entity-editor.class.mjs +3 -3
- package/esm2022/src/app/core/form/form.class.mjs +1 -1
- package/esm2022/src/app/core/form/form.utils.mjs +1 -1
- package/esm2022/src/app/core/form/list/list.form.mjs +1 -1
- package/esm2022/src/app/core/form/properties/properties.form.mjs +1 -1
- package/esm2022/src/app/core/form/properties/properties.table.mjs +1 -1
- package/esm2022/src/app/core/form/properties/testing/properties-form.test.mjs +1 -1
- package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.mjs +1 -1
- package/esm2022/src/app/core/form/text-popover/text-popover.component.mjs +1 -1
- package/esm2022/src/app/core/graphql/graphql.service.mjs +1 -1
- package/esm2022/src/app/core/graphql/graphql.utils.mjs +1 -1
- package/esm2022/src/app/core/home/home.mjs +3 -3
- package/esm2022/src/app/core/install/install-upgrade-card.component.mjs +1 -1
- package/esm2022/src/app/core/menu/menu.component.mjs +3 -3
- package/esm2022/src/app/core/menu/menu.model.mjs +1 -1
- package/esm2022/src/app/core/menu/menu.service.mjs +1 -1
- package/esm2022/src/app/core/menu/sub-menu-tab.directive.mjs +1 -1
- package/esm2022/src/app/core/peer/select-peer.modal.mjs +1 -1
- package/esm2022/src/app/core/register/register-confirm.page.mjs +3 -3
- package/esm2022/src/app/core/register/register.form.mjs +1 -1
- package/esm2022/src/app/core/register/register.modal.mjs +1 -1
- package/esm2022/src/app/core/services/account.service.mjs +1 -1
- package/esm2022/src/app/core/services/auth-guard.service.mjs +1 -1
- package/esm2022/src/app/core/services/base-entity-service.class.mjs +1 -1
- package/esm2022/src/app/core/services/base-graphql-service.class.mjs +1 -1
- package/esm2022/src/app/core/services/base58.mjs +1 -1
- package/esm2022/src/app/core/services/config.service.mjs +1 -1
- package/esm2022/src/app/core/services/errors.mjs +3 -3
- package/esm2022/src/app/core/services/local-settings.service.mjs +1 -1
- package/esm2022/src/app/core/services/model/account.model.mjs +1 -1
- package/esm2022/src/app/core/services/model/config.model.mjs +1 -1
- package/esm2022/src/app/core/services/model/entity.decorators.mjs +1 -1
- package/esm2022/src/app/core/services/model/entity.model.mjs +1 -1
- package/esm2022/src/app/core/services/model/filter.model.mjs +1 -1
- package/esm2022/src/app/core/services/model/person.model.mjs +1 -1
- package/esm2022/src/app/core/services/model/referential.model.mjs +3 -3
- package/esm2022/src/app/core/services/model/token.model.mjs +1 -1
- package/esm2022/src/app/core/services/model/tree-item-entity.model.mjs +1 -1
- package/esm2022/src/app/core/services/network.service.mjs +1 -1
- package/esm2022/src/app/core/services/network.types.mjs +1 -1
- package/esm2022/src/app/core/services/network.utils.mjs +1 -1
- package/esm2022/src/app/core/services/platform.service.mjs +2 -2
- package/esm2022/src/app/core/services/storage/entities-storage.service.mjs +1 -1
- package/esm2022/src/app/core/services/storage/entity-store.class.mjs +1 -1
- package/esm2022/src/app/core/services/testing/referential.validator.mjs +1 -1
- package/esm2022/src/app/core/services/validator/account.validator.mjs +1 -1
- package/esm2022/src/app/core/services/validator/local-settings.validator.mjs +1 -1
- package/esm2022/src/app/core/services/validator/user-token.validator.mjs +1 -1
- package/esm2022/src/app/core/settings/settings.page.mjs +2 -2
- package/esm2022/src/app/core/table/actions-column.component.mjs +1 -1
- package/esm2022/src/app/core/table/async-table.class.mjs +1 -1
- package/esm2022/src/app/core/table/entities-async-table-datasource.class.mjs +1 -1
- package/esm2022/src/app/core/table/entities-table-datasource.class.mjs +2 -2
- package/esm2022/src/app/core/table/memory-table.class.mjs +1 -1
- package/esm2022/src/app/core/table/table.class.mjs +1 -1
- package/esm2022/src/app/core/table/table.utils.mjs +1 -1
- package/esm2022/src/app/core/table/testing/table.testing.mjs +1 -1
- package/esm2022/src/app/core/table/testing/table2.testing.mjs +1 -1
- package/esm2022/src/app/shared/alerts.mjs +1 -1
- package/esm2022/src/app/shared/audio/audio.mjs +1 -1
- package/esm2022/src/app/shared/capacitor/keyboard.mjs +1 -1
- package/esm2022/src/app/shared/dates.mjs +1 -1
- package/esm2022/src/app/shared/directives/autofocus.directive.mjs +1 -1
- package/esm2022/src/app/shared/directives/autotitle.directive.mjs +1 -1
- package/esm2022/src/app/shared/directives/drag-and-drop.directive.mjs +1 -1
- package/esm2022/src/app/shared/directives/ng-var.directive.mjs +1 -1
- package/esm2022/src/app/shared/directives/resizable/resizable.component.mjs +1 -1
- package/esm2022/src/app/shared/events.mjs +1 -1
- package/esm2022/src/app/shared/file/csv.utils.mjs +1 -1
- package/esm2022/src/app/shared/file/file.service.mjs +1 -1
- package/esm2022/src/app/shared/file/file.utils.mjs +1 -1
- package/esm2022/src/app/shared/file/images.utils.mjs +1 -1
- package/esm2022/src/app/shared/file/json.utils.mjs +1 -1
- package/esm2022/src/app/shared/file/uri.utils.mjs +1 -1
- package/esm2022/src/app/shared/form/field.component.mjs +1 -1
- package/esm2022/src/app/shared/forms.mjs +1 -1
- package/esm2022/src/app/shared/functions.mjs +1 -1
- package/esm2022/src/app/shared/geolocation/geolocation.utils.mjs +1 -1
- package/esm2022/src/app/shared/gesture/gesture-config.mjs +2 -2
- package/esm2022/src/app/shared/graph/colors.utils.mjs +1 -1
- package/esm2022/src/app/shared/graph/graph-colors.mjs +8 -8
- package/esm2022/src/app/shared/guard/component-dirty.guard.mjs +1 -1
- package/esm2022/src/app/shared/hotkeys/hotkeys.service.mjs +1 -1
- package/esm2022/src/app/shared/http/http.utils.mjs +1 -1
- package/esm2022/src/app/shared/image/gallery/image-gallery.component.mjs +1 -1
- package/esm2022/src/app/shared/image/image.service.mjs +1 -1
- package/esm2022/src/app/shared/inputs.mjs +1 -1
- package/esm2022/src/app/shared/interceptors/progess.interceptor.mjs +1 -1
- package/esm2022/src/app/shared/logging/logger.model.mjs +1 -1
- package/esm2022/src/app/shared/logging/logging-service.class.mjs +1 -1
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.config.mjs +1 -1
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.mjs +1 -1
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.utils.mjs +1 -1
- package/esm2022/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +2 -2
- package/esm2022/src/app/shared/material/badge/badge.directive.mjs +1 -1
- package/esm2022/src/app/shared/material/boolean/material-boolean.mjs +1 -1
- package/esm2022/src/app/shared/material/boolean/testing/boolean.test.page.mjs +1 -1
- package/esm2022/src/app/shared/material/chips/material.chips.mjs +1 -1
- package/esm2022/src/app/shared/material/chips/testing/chips.test.mjs +2 -2
- package/esm2022/src/app/shared/material/datetime/material.date.mjs +1 -1
- package/esm2022/src/app/shared/material/datetime/material.dateshort.mjs +1 -1
- package/esm2022/src/app/shared/material/datetime/material.datetime.mjs +1 -1
- package/esm2022/src/app/shared/material/datetime/testing/mat-date-time.test.mjs +2 -2
- package/esm2022/src/app/shared/material/datetime/testing/mat-date.test.mjs +2 -2
- package/esm2022/src/app/shared/material/datetime/testing/mat-dateshort.test.mjs +2 -2
- package/esm2022/src/app/shared/material/duration/duration.utils.mjs +1 -1
- package/esm2022/src/app/shared/material/duration/material.duration.mjs +1 -1
- package/esm2022/src/app/shared/material/duration/testing/mat-duration.test.mjs +2 -2
- package/esm2022/src/app/shared/material/latlong/latlong.utils.mjs +1 -1
- package/esm2022/src/app/shared/material/latlong/material.latlong.mjs +1 -1
- package/esm2022/src/app/shared/material/latlong/testing/latlong.test.mjs +1 -1
- package/esm2022/src/app/shared/material/material.module.mjs +5 -5
- package/esm2022/src/app/shared/material/numpad/numpad.append-to-input.directive.mjs +1 -1
- package/esm2022/src/app/shared/material/numpad/numpad.component.mjs +1 -1
- package/esm2022/src/app/shared/material/numpad/numpad.container.mjs +1 -1
- package/esm2022/src/app/shared/material/numpad/numpad.directive.mjs +1 -1
- package/esm2022/src/app/shared/material/paginator/material.paginator-i18n.mjs +1 -1
- package/esm2022/src/app/shared/material/swipe/material.swipe.mjs +1 -1
- package/esm2022/src/app/shared/material/swipe/testing/swipe.test.mjs +1 -1
- package/esm2022/src/app/shared/material/testing/common.test.mjs +2 -2
- package/esm2022/src/app/shared/named-filter/named-filter-selector.component.mjs +1 -1
- package/esm2022/src/app/shared/named-filter/named-filter.model.mjs +1 -1
- package/esm2022/src/app/shared/named-filter/named-filter.service.mjs +1 -1
- package/esm2022/src/app/shared/observables.mjs +1 -1
- package/esm2022/src/app/shared/pipes/arrays.pipe.mjs +1 -1
- package/esm2022/src/app/shared/pipes/colors.pipe.mjs +1 -1
- package/esm2022/src/app/shared/pipes/date-diff-duration.pipe.mjs +1 -1
- package/esm2022/src/app/shared/pipes/file-size.pipe.mjs +1 -1
- package/esm2022/src/app/shared/pipes/form.pipes.mjs +1 -1
- package/esm2022/src/app/shared/pipes/highlight.pipe.mjs +1 -1
- package/esm2022/src/app/shared/pipes/maskito.pipe.mjs +1 -1
- package/esm2022/src/app/shared/pipes/math.pipes.mjs +1 -1
- package/esm2022/src/app/shared/pipes/number-format.pipe.mjs +1 -1
- package/esm2022/src/app/shared/pipes/property.pipes.mjs +1 -1
- package/esm2022/src/app/shared/platforms.mjs +1 -1
- package/esm2022/src/app/shared/services/job.utils.mjs +1 -1
- package/esm2022/src/app/shared/services/memory-entity-service.class.mjs +3 -3
- package/esm2022/src/app/shared/services/progress-bar.service.mjs +1 -1
- package/esm2022/src/app/shared/services/startable-observable-service.class.mjs +1 -1
- package/esm2022/src/app/shared/services/startable-service.class.mjs +1 -1
- package/esm2022/src/app/shared/services/translate-context.service.mjs +1 -1
- package/esm2022/src/app/shared/services.mjs +2 -2
- package/esm2022/src/app/shared/shared-routing.module.mjs +1 -1
- package/esm2022/src/app/shared/storage/storage-explorer.component.mjs +1 -1
- package/esm2022/src/app/shared/storage/storage.service.mjs +1 -1
- package/esm2022/src/app/shared/testing/observable.test.mjs +1 -1
- package/esm2022/src/app/shared/toast/toast.testing.mjs +2 -2
- package/esm2022/src/app/shared/toast/toasts.mjs +1 -1
- package/esm2022/src/app/shared/toolbar/toolbar.mjs +1 -1
- package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.mjs +1 -1
- package/esm2022/src/app/shared/upload-file/upload-file-popover.component.mjs +1 -1
- package/esm2022/src/app/shared/upload-file/upload-file.component.mjs +1 -1
- package/esm2022/src/app/shared/validator/form-error-adapter.class.mjs +1 -1
- package/esm2022/src/app/shared/validator/validators.mjs +3 -3
- package/esm2022/src/app/shared/version/versions.mjs +1 -1
- package/esm2022/src/app/social/job/progression/job-progression.icon.mjs +1 -1
- package/esm2022/src/app/social/job/progression/job-progression.list.mjs +1 -1
- package/esm2022/src/app/social/job/testing/job-progression.testing.service.mjs +1 -1
- package/esm2022/src/app/social/message/message.form.mjs +1 -1
- package/esm2022/src/app/social/message/message.modal.mjs +1 -1
- package/esm2022/src/app/social/message/message.service.mjs +1 -1
- package/esm2022/src/app/social/user-event/notification/user-event-notification.icon.mjs +1 -1
- package/esm2022/src/app/social/user-event/notification/user-event-notification.list.mjs +1 -1
- package/esm2022/src/app/social/user-event/testing/user-event.testing.mjs +1 -1
- package/esm2022/src/app/social/user-event/testing/user-event.testing.model.mjs +1 -1
- package/esm2022/src/app/social/user-event/testing/user-event.testing.service.mjs +1 -1
- package/esm2022/src/app/social/user-event/user-event.service.mjs +1 -1
- package/esm2022/src/environments/environment.loader.mjs +1 -1
- package/esm2022/src/environments/environment.mjs +3 -3
- package/fesm2022/sumaris-net.ngx-components.mjs +45 -45
- package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
- package/package.json +6 -6
|
@@ -158,4 +158,4 @@ export class ImagesUtils {
|
|
|
158
158
|
};
|
|
159
159
|
}
|
|
160
160
|
}
|
|
161
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2VzLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvZmlsZS9pbWFnZXMudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUMxQyxPQUFPLEVBQWEsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3pDLE9BQU8sRUFBWSxZQUFZLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUN6RSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXhDLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRztJQUM1QixVQUFVLEVBQUUsR0FBRztJQUNmLFNBQVMsRUFBRSxHQUFHO0lBQ2QsZ0JBQWdCLEVBQUUsR0FBRztJQUNyQixlQUFlLEVBQUUsR0FBRztDQUNyQixDQUFDO0FBUUYsV0FBVztBQUNYLE1BQU0sT0FBTyxXQUFXO0lBRXRCLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBVSxFQUFFLElBQXlCO1FBRXhELE1BQU0sU0FBUyxHQUFHLElBQUksT0FBTyxFQUFxQixDQUFDO1FBQ25ELE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFFaEMsa0JBQWtCO1FBQ2xCLE1BQU0sQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFnQixFQUFFLEVBQUU7WUFDdkMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7WUFDM0IsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7WUFDNUIsSUFBSSxNQUFNLEdBQUcsS0FBSztnQkFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxjQUFjLEVBQUUsTUFBTSxFQUFFLEtBQUss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WTtvQkFDWixJQUFJLEtBQUssR0FBRyxNQUFNLEVBQUU7d0JBQ2xCLElBQUksS0FBSyxHQUFHLFFBQVEsRUFBRTs0QkFDcEIsTUFBTSxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7NEJBQzNCLEtBQUssR0FBRyxRQUFRLENBQUM7eUJBQ2xCO3FCQUNGO29CQUVELFdBQVc7eUJBQ047d0JBQ0gsSUFBSSxNQUFNLEdBQUcsU0FBUyxFQUFFOzRCQUN0QixLQUFLLElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQzs0QkFDNUIsTUFBTSxHQUFHLFNBQVMsQ0FBQzt5QkFDcEI7cUJBQ0Y7b0JBRUQsTUFBTSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7b0JBQ3JCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO29CQUN2QixHQUFHLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFFOUIseUJBQXlCO29CQUN6QixHQUFHLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztpQkFDaEU7Z0JBRUQsZ0NBQWdDO2dCQUNoQyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2xDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUNqQjtZQUNELE9BQU8sR0FBRyxFQUFFO2dCQUNWLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNiO29CQUNPO2dCQUNOLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQzthQUNqQjtRQUVILENBQUMsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aXNOaWxPckJsYW5rfSBmcm9tICcuLi9mdW5jdGlvbnMnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7RmlsZUV2ZW50LCBGaWxlUmVzcG9uc2V9IGZyb20gJy4uL3VwbG9hZC1maWxlL3VwbG9hZC1maWxlLm1vZGVsJztcbmltcG9ydCB7SHR0cEV2ZW50VHlwZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHttZXJnZU1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5leHBvcnQgY29uc3QgSU1BR0VfREVGQVVMVFMgPSB7XG4gIE1BWF9IRUlHSFQ6IDQ4MCxcbiAgTUFYX1dJRFRIOiA2NDAsXG4gIFRIVU1CX01BWF9IRUlHSFQ6IDIwMCxcbiAgVEhVTUJfTUFYX1dJRFRIOiAyMDBcbn07XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBJbWFnZVJlc2l6ZU9wdGlvbnMge1xuICBtYXhXaWR0aD86IG51bWJlcjtcbiAgbWF4SGVpZ2h0PzogbnVtYmVyO1xuICB0aHVtYm5haWw/OiBib29sZWFuO1xufVxuXG4vLyBAZHluYW1pY1xuZXhwb3J0IGNsYXNzIEltYWdlc1V0aWxzIHtcblxuICBzdGF0aWMgcmVhZEFzRGF0YVVSTChmaWxlOiBGaWxlLCBvcHRzPzogSW1hZ2VSZXNpemVPcHRpb25zKTogT2JzZXJ2YWJsZTxGaWxlRXZlbnQ8c3RyaW5nPj4ge1xuXG4gICAgY29uc3QgJHByb2dyZXNzID0gbmV3IFN1YmplY3Q8RmlsZUV2ZW50PHN0cmluZz4+KCk7XG4gICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcblxuICAgIC8vIExpc3RlbiBwcm9ncmVzc1xuICAgIHJlYWRlci5vbnByb2dyZXNzID0gKGU6IFByb2dyZXNzRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHRvdGFsID0gZS50b3RhbCB8fCAxO1xuICAgICAgY29uc3QgbG9hZGVkID0gZS50b3RhbCB8fCAwO1xuICAgICAgaWYgKGxvYWRlZCA8IHRvdGFsKSAkcHJvZ3Jlc3MubmV4dCh7dHlwZTogSHR0cEV2ZW50VHlwZS5VcGxvYWRQcm9ncmVzcywgbG9hZGVkLCB0b3RhbH0pO1xuICAgIH07XG5cbiAgICAvLyBMaXN0ZW4gZW5kXG4gICAgcmVhZGVyLm9ubG9hZGVuZCA9IChfOiBQcm9ncmVzc0V2ZW50KSA9PiB7XG4gICAgICBjb25zdCBib2R5ID0gcmVhZGVyLnJlc3VsdDtcbiAgICAgIGlmICh0eXBlb2YgYm9keSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgJHByb2dyZXNzLm5leHQobmV3IEZpbGVSZXNwb25zZSh7Ym9keX0pKTtcbiAgICAgICAgJHByb2dyZXNzLmNvbXBsZXRlKCk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgW2ltYWdlLXV0aWxzXSBDYW5ub3QgcmVhZCBmaWxlICcke2ZpbGUubmFtZX0nIGFzIHRleHRgKTtcbiAgICAgICAgJHByb2dyZXNzLmVycm9yKGBDYW5ub3QgcmVhZCBmaWxlIGFzIHRleHRgKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgLy8gTGlzdGVuIGVycm9yXG4gICAgcmVhZGVyLm9uZXJyb3IgPSAoZXZlbnQ6IFByb2dyZXNzRXZlbnQpID0+IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tpbWFnZS11dGlsc10gRXJyb3Igd2hpbGUgcmVhZGluZyBmaWxlOicsIGV2ZW50KTtcbiAgICAgICRwcm9ncmVzcy5lcnJvcihldmVudCk7XG4gICAgfTtcblxuICAgIC8vIFN0YXJ0IHJlYWRpbmcgdGhlIGZpbGVcbiAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcblxuICAgIC8vIFJlc2l6ZSBpbWFnZSwgaWYgbmVlZFxuICAgIGlmIChvcHRzKSB7XG4gICAgICByZXR1cm4gJHByb2dyZXNzLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKGFzeW5jIChldmVudCkgPT4ge1xuICAgICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIEZpbGVSZXNwb25zZSkge1xuICAgICAgICAgICAgY29uc3QgYm9keSA9IGF3YWl0IEltYWdlc1V0aWxzLnJlc2l6ZUJhc2U2NChldmVudC5ib2R5LCBvcHRzKTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRmlsZVJlc3BvbnNlKHtib2R5fSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBldmVudDtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuICRwcm9ncmVzcy5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyByZWFkQW5kUmVzaXplRnJvbVVybChmaWxlVXJsOiBzdHJpbmcsIG9wdHM/OiBJbWFnZVJlc2l6ZU9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGlmIChpc05pbE9yQmxhbmsoZmlsZVVybCkpIHRocm93IG5ldyBFcnJvcignSWxsZWdhbCBhcmd1bWVudDogbWlzc2luZyBmaWxlVXJsJyk7XG5cbiAgICAvLyBDcmVhdGUgdGhlIHRlbXBvcmFyeSBpbWFnZSBlbGVtZW50XG4gICAgY29uc3QgaW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW1nJyk7XG5cbiAgICAvLyBOZWVkIHRvIGF2b2lkIENPUlMgZXJyb3JcbiAgICAvLyAoc2VlIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzIyNzEwNjI3L3RhaW50ZWQtY2FudmFzZXMtbWF5LW5vdC1iZS1leHBvcnRlZClcbiAgICBpbWcuY3Jvc3NPcmlnaW4gPSAnYW5vbnltb3VzJztcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2U8c3RyaW5nPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGltZy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgSW1hZ2VzVXRpbHMuY3JlYXRlSW1hZ2VPbkxvYWRSZXNpemVGbihyZXNvbHZlLCByZWplY3QsIG9wdHMpLCBmYWxzZSk7XG4gICAgICAgIGltZy5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIHJlamVjdCk7XG4gICAgICAgIGltZy5zcmMgPSBmaWxlVXJsO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGNhdGNoIChlcnIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGxvYWQgYW5kIHJlc2l6ZSBpbWFnZSB7JHtmaWxlVXJsfX1gKTtcbiAgICB9XG4gICAgZmluYWxseSB7XG4gICAgICBpbWcucmVtb3ZlKCk7XG4gICAgfVxuICB9XG5cblxuICBzdGF0aWMgYXN5bmMgcmVzaXplQmFzZTY0KGRhdGFVcmw6IHN0cmluZywgb3B0cz86IEltYWdlUmVzaXplT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgLy8gQ3JlYXRlIHRoZSB0ZW1wb3JhcnkgaW1hZ2UgZWxlbWVudFxuICAgIGNvbnN0IGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpO1xuXG4gICAgLy8gTmVlZCB0byBhdm9pZCBDT1JTIGVycm9yXG4gICAgLy8gKHNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yMjcxMDYyNy90YWludGVkLWNhbnZhc2VzLW1heS1ub3QtYmUtZXhwb3J0ZWQpXG4gICAgaW1nLmNyb3NzT3JpZ2luID0gJ2Fub255bW91cyc7XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlPHN0cmluZz4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBpbWcuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIEltYWdlc1V0aWxzLmNyZWF0ZUltYWdlT25Mb2FkUmVzaXplRm4ocmVzb2x2ZSwgcmVqZWN0LCBvcHRzKSwgZmFsc2UpO1xuICAgICAgICBpbWcuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCByZWplY3QpO1xuICAgICAgICBpbWcuc3JjID0gZGF0YVVybDtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBmaW5hbGx5IHtcbiAgICAgIGltZy5yZW1vdmUoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgc3RhdGljIGNyZWF0ZUltYWdlT25Mb2FkUmVzaXplRm4ocmVzb2x2ZSwgcmVqZWN0LCBvcHRzPzogSW1hZ2VSZXNpemVPcHRpb25zKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgICBjb25zdFxuICAgICAgICBtYXhXaWR0aCA9IChvcHRzICYmIG9wdHMudGh1bWJuYWlsID8gSU1BR0VfREVGQVVMVFMuVEhVTUJfTUFYX1dJRFRIIDogKG9wdHMgJiYgb3B0cy5tYXhXaWR0aCB8fCBJTUFHRV9ERUZBVUxUUy5NQVhfV0lEVEgpKTtcbiAgICAgICAgY29uc3QgbWF4SGVpZ2h0ID0gKG9wdHMgJiYgb3B0cy50aHVtYm5haWwgPyBJTUFHRV9ERUZBVUxUUy5USFVNQl9NQVhfSEVJR0hUIDogKG9wdHMgJiYgb3B0cy5tYXhIZWlnaHQgfHwgSU1BR0VfREVGQVVMVFMuTUFYX0hFSUdIVCkpO1xuICAgICAgbGV0IHdpZHRoID0gZXZlbnQudGFyZ2V0LndpZHRoO1xuICAgICAgICBsZXQgaGVpZ2h0ID0gZXZlbnQudGFyZ2V0LmhlaWdodDtcblxuICAgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgICBsZXQgY3R4O1xuXG4gICAgICB0cnkge1xuICAgICAgICAvLyBUaHVtYm5haWw6IHJlc2l6ZSBhbmQgY3JvcCAodG8gdGhlIGV4cGVjdGVkIHNpemUpXG4gICAgICAgIGlmIChvcHRzICYmIG9wdHMudGh1bWJuYWlsKSB7XG5cbiAgICAgICAgICAvLyBsYW5kc2NhcGVcbiAgICAgICAgICBpZiAod2lkdGggPiBoZWlnaHQpIHtcbiAgICAgICAgICAgIHdpZHRoICo9IG1heEhlaWdodCAvIGhlaWdodDtcbiAgICAgICAgICAgIGhlaWdodCA9IG1heEhlaWdodDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBwb3J0cmFpdFxuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaGVpZ2h0ICo9IG1heFdpZHRoIC8gd2lkdGg7XG4gICAgICAgICAgICB3aWR0aCA9IG1heFdpZHRoO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYW52YXMud2lkdGggPSBtYXhXaWR0aDtcbiAgICAgICAgICBjYW52YXMuaGVpZ2h0ID0gbWF4SGVpZ2h0O1xuICAgICAgICAgIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgICAgICAgIGNvbnN0IHhvZmZzZXQgPSBNYXRoLnRydW5jKChtYXhXaWR0aCAtIHdpZHRoKSAvIDIgKyAwLjUpO1xuICAgICAgICAgIGNvbnN0IHlvZmZzZXQgPSBNYXRoLnRydW5jKChtYXhIZWlnaHQgLSBoZWlnaHQpIC8gMiArIDAuNSk7XG4gICAgICAgICAgY3R4LmRyYXdJbWFnZShldmVudC50YXJnZXQsXG4gICAgICAgICAgICB4b2Zmc2V0LCAvLyB4MVxuICAgICAgICAgICAgeW9mZnNldCwgLy8geTFcbiAgICAgICAgICAgIG1heFdpZHRoICsgLTIgKiB4b2Zmc2V0LCAvLyB4MlxuICAgICAgICAgICAgbWF4SGVpZ2h0ICsgLTIgKiB5b2Zmc2V0IC8vIHkyXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJlc2l6ZSwgYnV0IGtlZXAgdGhlIGZ1bGwgaW1hZ2VcbiAgICAgICAgZWxzZSB7XG5cbiAgICAgICAgICAvLyBsYW5kc2NhcGVcbiAgICAgICAgICBpZiAod2lkdGggPiBoZWlnaHQpIHtcbiAgICAgICAgICAgIGlmICh3aWR0aCA+IG1heFdpZHRoKSB7XG4gICAgICAgICAgICAgIGhlaWdodCAqPSBtYXhXaWR0aCAvIHdpZHRoO1xuICAgICAgICAgICAgICB3aWR0aCA9IG1heFdpZHRoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIHBvcnRyYWl0XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAoaGVpZ2h0ID4gbWF4SGVpZ2h0KSB7XG4gICAgICAgICAgICAgIHdpZHRoICo9IG1heEhlaWdodCAvIGhlaWdodDtcbiAgICAgICAgICAgICAgaGVpZ2h0ID0gbWF4SGVpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNhbnZhcy53aWR0aCA9IHdpZHRoO1xuICAgICAgICAgIGNhbnZhcy5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgICAgICAgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG5cbiAgICAgICAgICAvLyBSZXNpemUgdGhlIHdob2xlIGltYWdlXG4gICAgICAgICAgY3R4LmRyYXdJbWFnZShldmVudC50YXJnZXQsIDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBHZXQgaW1hZ2UgY29udGVudCBhcyBkYXRhIFVSTFxuICAgICAgICBjb25zdCBiYXNlNjQgPSBjYW52YXMudG9EYXRhVVJMKCk7XG4gICAgICAgIHJlc29sdmUoYmFzZTY0KTtcbiAgICAgIH1cbiAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICB9XG4gICAgICBmaW5hbGx5IHtcbiAgICAgICAgY2FudmFzLnJlbW92ZSgpO1xuICAgICAgfVxuXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
161
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2VzLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvZmlsZS9pbWFnZXMudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUMxQyxPQUFPLEVBQWEsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3pDLE9BQU8sRUFBWSxZQUFZLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUN6RSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXhDLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRztJQUM1QixVQUFVLEVBQUUsR0FBRztJQUNmLFNBQVMsRUFBRSxHQUFHO0lBQ2QsZ0JBQWdCLEVBQUUsR0FBRztJQUNyQixlQUFlLEVBQUUsR0FBRztDQUNyQixDQUFDO0FBUUYsV0FBVztBQUNYLE1BQU0sT0FBTyxXQUFXO0lBRXRCLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBVSxFQUFFLElBQXlCO1FBRXhELE1BQU0sU0FBUyxHQUFHLElBQUksT0FBTyxFQUFxQixDQUFDO1FBQ25ELE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFFaEMsa0JBQWtCO1FBQ2xCLE1BQU0sQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFnQixFQUFFLEVBQUU7WUFDdkMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7WUFDM0IsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7WUFDNUIsSUFBSSxNQUFNLEdBQUcsS0FBSztnQkFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxjQUFjLEVBQUUsTUFBTSxFQUFFLEtBQUss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LEVBQUUsQ0FBQztZQUNsQixDQUFDO1FBRUgsQ0FBQyxDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpc05pbE9yQmxhbmt9IGZyb20gJy4uL2Z1bmN0aW9ucyc7XG5pbXBvcnQge09ic2VydmFibGUsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtGaWxlRXZlbnQsIEZpbGVSZXNwb25zZX0gZnJvbSAnLi4vdXBsb2FkLWZpbGUvdXBsb2FkLWZpbGUubW9kZWwnO1xuaW1wb3J0IHtIdHRwRXZlbnRUeXBlfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge21lcmdlTWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmV4cG9ydCBjb25zdCBJTUFHRV9ERUZBVUxUUyA9IHtcbiAgTUFYX0hFSUdIVDogNDgwLFxuICBNQVhfV0lEVEg6IDY0MCxcbiAgVEhVTUJfTUFYX0hFSUdIVDogMjAwLFxuICBUSFVNQl9NQVhfV0lEVEg6IDIwMFxufTtcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEltYWdlUmVzaXplT3B0aW9ucyB7XG4gIG1heFdpZHRoPzogbnVtYmVyO1xuICBtYXhIZWlnaHQ/OiBudW1iZXI7XG4gIHRodW1ibmFpbD86IGJvb2xlYW47XG59XG5cbi8vIEBkeW5hbWljXG5leHBvcnQgY2xhc3MgSW1hZ2VzVXRpbHMge1xuXG4gIHN0YXRpYyByZWFkQXNEYXRhVVJMKGZpbGU6IEZpbGUsIG9wdHM/OiBJbWFnZVJlc2l6ZU9wdGlvbnMpOiBPYnNlcnZhYmxlPEZpbGVFdmVudDxzdHJpbmc+PiB7XG5cbiAgICBjb25zdCAkcHJvZ3Jlc3MgPSBuZXcgU3ViamVjdDxGaWxlRXZlbnQ8c3RyaW5nPj4oKTtcbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuXG4gICAgLy8gTGlzdGVuIHByb2dyZXNzXG4gICAgcmVhZGVyLm9ucHJvZ3Jlc3MgPSAoZTogUHJvZ3Jlc3NFdmVudCkgPT4ge1xuICAgICAgY29uc3QgdG90YWwgPSBlLnRvdGFsIHx8IDE7XG4gICAgICBjb25zdCBsb2FkZWQgPSBlLnRvdGFsIHx8IDA7XG4gICAgICBpZiAobG9hZGVkIDwgdG90YWwpICRwcm9ncmVzcy5uZXh0KHt0eXBlOiBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzLCBsb2FkZWQsIHRvdGFsfSk7XG4gICAgfTtcblxuICAgIC8vIExpc3RlbiBlbmRcbiAgICByZWFkZXIub25sb2FkZW5kID0gKF86IFByb2dyZXNzRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IGJvZHkgPSByZWFkZXIucmVzdWx0O1xuICAgICAgaWYgKHR5cGVvZiBib2R5ID09PSAnc3RyaW5nJykge1xuICAgICAgICAkcHJvZ3Jlc3MubmV4dChuZXcgRmlsZVJlc3BvbnNlKHtib2R5fSkpO1xuICAgICAgICAkcHJvZ3Jlc3MuY29tcGxldGUoKTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBbaW1hZ2UtdXRpbHNdIENhbm5vdCByZWFkIGZpbGUgJyR7ZmlsZS5uYW1lfScgYXMgdGV4dGApO1xuICAgICAgICAkcHJvZ3Jlc3MuZXJyb3IoYENhbm5vdCByZWFkIGZpbGUgYXMgdGV4dGApO1xuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBMaXN0ZW4gZXJyb3JcbiAgICByZWFkZXIub25lcnJvciA9IChldmVudDogUHJvZ3Jlc3NFdmVudCkgPT4ge1xuICAgICAgY29uc29sZS5lcnJvcignW2ltYWdlLXV0aWxzXSBFcnJvciB3aGlsZSByZWFkaW5nIGZpbGU6JywgZXZlbnQpO1xuICAgICAgJHByb2dyZXNzLmVycm9yKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgLy8gU3RhcnQgcmVhZGluZyB0aGUgZmlsZVxuICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuXG4gICAgLy8gUmVzaXplIGltYWdlLCBpZiBuZWVkXG4gICAgaWYgKG9wdHMpIHtcbiAgICAgIHJldHVybiAkcHJvZ3Jlc3MucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoYXN5bmMgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgRmlsZVJlc3BvbnNlKSB7XG4gICAgICAgICAgICBjb25zdCBib2R5ID0gYXdhaXQgSW1hZ2VzVXRpbHMucmVzaXplQmFzZTY0KGV2ZW50LmJvZHksIG9wdHMpO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWxlUmVzcG9uc2Uoe2JvZHl9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGV2ZW50O1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gJHByb2dyZXNzLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIHJlYWRBbmRSZXNpemVGcm9tVXJsKGZpbGVVcmw6IHN0cmluZywgb3B0cz86IEltYWdlUmVzaXplT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgaWYgKGlzTmlsT3JCbGFuayhmaWxlVXJsKSkgdGhyb3cgbmV3IEVycm9yKCdJbGxlZ2FsIGFyZ3VtZW50OiBtaXNzaW5nIGZpbGVVcmwnKTtcblxuICAgIC8vIENyZWF0ZSB0aGUgdGVtcG9yYXJ5IGltYWdlIGVsZW1lbnRcbiAgICBjb25zdCBpbWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbWcnKTtcblxuICAgIC8vIE5lZWQgdG8gYXZvaWQgQ09SUyBlcnJvclxuICAgIC8vIChzZWUgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjI3MTA2MjcvdGFpbnRlZC1jYW52YXNlcy1tYXktbm90LWJlLWV4cG9ydGVkKVxuICAgIGltZy5jcm9zc09yaWdpbiA9ICdhbm9ueW1vdXMnO1xuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZTxzdHJpbmc+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgaW1nLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBJbWFnZXNVdGlscy5jcmVhdGVJbWFnZU9uTG9hZFJlc2l6ZUZuKHJlc29sdmUsIHJlamVjdCwgb3B0cyksIGZhbHNlKTtcbiAgICAgICAgaW1nLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgcmVqZWN0KTtcbiAgICAgICAgaW1nLnNyYyA9IGZpbGVVcmw7XG4gICAgICB9KTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gbG9hZCBhbmQgcmVzaXplIGltYWdlIHske2ZpbGVVcmx9fWApO1xuICAgIH1cbiAgICBmaW5hbGx5IHtcbiAgICAgIGltZy5yZW1vdmUoKTtcbiAgICB9XG4gIH1cblxuXG4gIHN0YXRpYyBhc3luYyByZXNpemVCYXNlNjQoZGF0YVVybDogc3RyaW5nLCBvcHRzPzogSW1hZ2VSZXNpemVPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAvLyBDcmVhdGUgdGhlIHRlbXBvcmFyeSBpbWFnZSBlbGVtZW50XG4gICAgY29uc3QgaW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW1nJyk7XG5cbiAgICAvLyBOZWVkIHRvIGF2b2lkIENPUlMgZXJyb3JcbiAgICAvLyAoc2VlIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzIyNzEwNjI3L3RhaW50ZWQtY2FudmFzZXMtbWF5LW5vdC1iZS1leHBvcnRlZClcbiAgICBpbWcuY3Jvc3NPcmlnaW4gPSAnYW5vbnltb3VzJztcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2U8c3RyaW5nPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGltZy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgSW1hZ2VzVXRpbHMuY3JlYXRlSW1hZ2VPbkxvYWRSZXNpemVGbihyZXNvbHZlLCByZWplY3QsIG9wdHMpLCBmYWxzZSk7XG4gICAgICAgIGltZy5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIHJlamVjdCk7XG4gICAgICAgIGltZy5zcmMgPSBkYXRhVXJsO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGZpbmFsbHkge1xuICAgICAgaW1nLnJlbW92ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBzdGF0aWMgY3JlYXRlSW1hZ2VPbkxvYWRSZXNpemVGbihyZXNvbHZlLCByZWplY3QsIG9wdHM/OiBJbWFnZVJlc2l6ZU9wdGlvbnMpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oZXZlbnQpIHtcbiAgICAgIGNvbnN0XG4gICAgICAgIG1heFdpZHRoID0gKG9wdHMgJiYgb3B0cy50aHVtYm5haWwgPyBJTUFHRV9ERUZBVUxUUy5USFVNQl9NQVhfV0lEVEggOiAob3B0cyAmJiBvcHRzLm1heFdpZHRoIHx8IElNQUdFX0RFRkFVTFRTLk1BWF9XSURUSCkpO1xuICAgICAgICBjb25zdCBtYXhIZWlnaHQgPSAob3B0cyAmJiBvcHRzLnRodW1ibmFpbCA/IElNQUdFX0RFRkFVTFRTLlRIVU1CX01BWF9IRUlHSFQgOiAob3B0cyAmJiBvcHRzLm1heEhlaWdodCB8fCBJTUFHRV9ERUZBVUxUUy5NQVhfSEVJR0hUKSk7XG4gICAgICBsZXQgd2lkdGggPSBldmVudC50YXJnZXQud2lkdGg7XG4gICAgICAgIGxldCBoZWlnaHQgPSBldmVudC50YXJnZXQuaGVpZ2h0O1xuXG4gICAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICAgIGxldCBjdHg7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIFRodW1ibmFpbDogcmVzaXplIGFuZCBjcm9wICh0byB0aGUgZXhwZWN0ZWQgc2l6ZSlcbiAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy50aHVtYm5haWwpIHtcblxuICAgICAgICAgIC8vIGxhbmRzY2FwZVxuICAgICAgICAgIGlmICh3aWR0aCA+IGhlaWdodCkge1xuICAgICAgICAgICAgd2lkdGggKj0gbWF4SGVpZ2h0IC8gaGVpZ2h0O1xuICAgICAgICAgICAgaGVpZ2h0ID0gbWF4SGVpZ2h0O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIHBvcnRyYWl0XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBoZWlnaHQgKj0gbWF4V2lkdGggLyB3aWR0aDtcbiAgICAgICAgICAgIHdpZHRoID0gbWF4V2lkdGg7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhbnZhcy53aWR0aCA9IG1heFdpZHRoO1xuICAgICAgICAgIGNhbnZhcy5oZWlnaHQgPSBtYXhIZWlnaHQ7XG4gICAgICAgICAgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgICAgICAgY29uc3QgeG9mZnNldCA9IE1hdGgudHJ1bmMoKG1heFdpZHRoIC0gd2lkdGgpIC8gMiArIDAuNSk7XG4gICAgICAgICAgY29uc3QgeW9mZnNldCA9IE1hdGgudHJ1bmMoKG1heEhlaWdodCAtIGhlaWdodCkgLyAyICsgMC41KTtcbiAgICAgICAgICBjdHguZHJhd0ltYWdlKGV2ZW50LnRhcmdldCxcbiAgICAgICAgICAgIHhvZmZzZXQsIC8vIHgxXG4gICAgICAgICAgICB5b2Zmc2V0LCAvLyB5MVxuICAgICAgICAgICAgbWF4V2lkdGggKyAtMiAqIHhvZmZzZXQsIC8vIHgyXG4gICAgICAgICAgICBtYXhIZWlnaHQgKyAtMiAqIHlvZmZzZXQgLy8geTJcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUmVzaXplLCBidXQga2VlcCB0aGUgZnVsbCBpbWFnZVxuICAgICAgICBlbHNlIHtcblxuICAgICAgICAgIC8vIGxhbmRzY2FwZVxuICAgICAgICAgIGlmICh3aWR0aCA+IGhlaWdodCkge1xuICAgICAgICAgICAgaWYgKHdpZHRoID4gbWF4V2lkdGgpIHtcbiAgICAgICAgICAgICAgaGVpZ2h0ICo9IG1heFdpZHRoIC8gd2lkdGg7XG4gICAgICAgICAgICAgIHdpZHRoID0gbWF4V2lkdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gcG9ydHJhaXRcbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChoZWlnaHQgPiBtYXhIZWlnaHQpIHtcbiAgICAgICAgICAgICAgd2lkdGggKj0gbWF4SGVpZ2h0IC8gaGVpZ2h0O1xuICAgICAgICAgICAgICBoZWlnaHQgPSBtYXhIZWlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FudmFzLndpZHRoID0gd2lkdGg7XG4gICAgICAgICAgY2FudmFzLmhlaWdodCA9IGhlaWdodDtcbiAgICAgICAgICBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcblxuICAgICAgICAgIC8vIFJlc2l6ZSB0aGUgd2hvbGUgaW1hZ2VcbiAgICAgICAgICBjdHguZHJhd0ltYWdlKGV2ZW50LnRhcmdldCwgMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEdldCBpbWFnZSBjb250ZW50IGFzIGRhdGEgVVJMXG4gICAgICAgIGNvbnN0IGJhc2U2NCA9IGNhbnZhcy50b0RhdGFVUkwoKTtcbiAgICAgICAgcmVzb2x2ZShiYXNlNjQpO1xuICAgICAgfVxuICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgIH1cbiAgICAgIGZpbmFsbHkge1xuICAgICAgICBjYW52YXMucmVtb3ZlKCk7XG4gICAgICB9XG5cbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
@@ -48,4 +48,4 @@ export class JsonUtils {
|
|
|
48
48
|
}), filter(isNotNil));
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL2ZpbGUvanNvbi51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBRXhDLE9BQU8sRUFBWSxZQUFZLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUN6RSxPQUFPLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsS0FBSyxFQUFFLFFBQVEsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUM3QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsVUFBVTtBQUNWLE1BQU0sT0FBTyxTQUFTO0lBRXBCLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBWSxFQUNaLElBSUM7UUFDbkIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDO1lBQUUsT0FBTyxDQUFDLGdCQUFnQjtRQUU1QyxzQkFBc0I7UUFDdEIsTUFBTSxXQUFXLEdBQUcsT0FBTyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTdFLGdCQUFnQjtRQUNoQixVQUFVLENBQUMsZUFBZSxDQUN4QixXQUFXLEVBQUU7WUFDWCxJQUFJLEVBQUUsa0JBQWtCO1lBQ3hCLFFBQVEsRUFBRSxhQUFhO1lBQ3ZCLEdBQUcsSUFBSTtTQUNSLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQVksRUFDWixJQUdDO1FBQ2xCLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUTtZQUFFLE9BQU8sQ0FBQyxnQkFBZ0I7UUFFckUsSUFBSSxHQUFHO1lBQ0wsSUFBSSxFQUFFLGtCQUFrQjtZQUN4QixRQUFRLEVBQUUsYUFBYTtZQUN2QixHQUFHLElBQUk7U0FDUixDQUFDO1FBRUYsc0JBQXNCO1FBQ3RCLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFFdEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN0RCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUU3QixPQUFhLElBQUksQ0FBQztJQUNwQixDQUFDO0lBRUQsTUFBTSxDQUFDLFNBQVMsQ0FBVSxJQUFVLEVBQUUsSUFBMEI7UUFDOUQsT0FBTyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDO2FBQy9DLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDTixJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUM1QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUM7Z0JBQzFDLE9BQU8sRUFBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUMsQ0FBQztZQUN4QixDQUFDO2lCQUNJLElBQUksQ0FBQyxZQUFZLFlBQVksRUFBQyxDQUFDO2dCQUNsQyxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUNwQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBTSxDQUFDO2dCQUNuQyxPQUFPLElBQUksWUFBWSxDQUFJLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7WUFDM0MsQ0FBQztRQUNILENBQUMsQ0FBQyxFQUNGLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FDakIsQ0FBQztJQUNOLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RmlsZXNVdGlsc30gZnJvbSAnLi9maWxlLnV0aWxzJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0ZpbGVFdmVudCwgRmlsZVJlc3BvbnNlfSBmcm9tICcuLi91cGxvYWQtZmlsZS91cGxvYWQtZmlsZS5tb2RlbCc7XG5pbXBvcnQge2ZpbHRlciwgbWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0h0dHBFdmVudFR5cGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7aXNOaWwsIGlzTm90TmlsfSBmcm9tICcuLi9mdW5jdGlvbnMnO1xuaW1wb3J0IHtzdHJpbmdUb1U4YX0gZnJvbSAnQHBvbGthZG90L3V0aWwnO1xuXG4vL0BkeW5hbWljXG5leHBvcnQgY2xhc3MgSnNvblV0aWxzIHtcblxuICBzdGF0aWMgZXhwb3J0VG9GaWxlKGNvbnRlbnQ6IGFueSxcbiAgICAgICAgICAgICAgICAgICAgICBvcHRzPzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWU/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZz86IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgfSkge1xuICAgIGlmIChpc05pbChjb250ZW50KSkgcmV0dXJuOyAvLyBTa2lwIGlmIGVtcHR5XG5cbiAgICAvLyBDcmVhdGUgdGV4dCBjb250ZW50XG4gICAgY29uc3QgdGV4dENvbnRlbnQgPSBjb250ZW50ID09PSAnc3RyaW5nJyA/IGNvbnRlbnQgOiBKU09OLnN0cmluZ2lmeShjb250ZW50KTtcblxuICAgIC8vIFdyaXRlIHRvIGZpbGVcbiAgICBGaWxlc1V0aWxzLndyaXRlVGV4dFRvRmlsZShcbiAgICAgIHRleHRDb250ZW50LCB7XG4gICAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgZmlsZW5hbWU6ICdleHBvcnQuanNvbicsXG4gICAgICAgIC4uLm9wdHMsXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHN0YXRpYyB3cml0ZVRvRmlsZShjb250ZW50OiBhbnksXG4gICAgICAgICAgICAgICAgICAgICBvcHRzPzoge1xuICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZT86IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgdHlwZT86IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgIH0pIHtcbiAgICBpZiAoIWNvbnRlbnQgfHwgdHlwZW9mIGNvbnRlbnQgIT09ICdvYmplY3QnKSByZXR1cm47IC8vIFNraXAgaWYgZW1wdHlcblxuICAgIG9wdHMgPSB7XG4gICAgICB0eXBlOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICBmaWxlbmFtZTogJ2V4cG9ydC5qc29uJyxcbiAgICAgIC4uLm9wdHMsXG4gICAgfTtcblxuICAgIC8vIENyZWF0ZSB0ZXh0IGNvbnRlbnRcbiAgICBjb25zdCBhcnJheVV0OCA9IHN0cmluZ1RvVThhKEpTT04uc3RyaW5naWZ5KGNvbnRlbnQpKTtcblxuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbYXJyYXlVdDhdLCB7dHlwZTogb3B0cy50eXBlfSk7XG4gICAgYmxvYlsnbGFzdE1vZGlmaWVkRGF0ZSddID0gKG5ldyBEYXRlKCkpLnRvSVNPU3RyaW5nKCk7XG4gICAgYmxvYlsnbmFtZSddID0gb3B0cy5maWxlbmFtZTtcblxuICAgIHJldHVybiA8RmlsZT5ibG9iO1xuICB9XG5cbiAgc3RhdGljIHBhcnNlRmlsZTxUID0gYW55PihmaWxlOiBGaWxlLCBvcHRzPzoge2VuY29kaW5nPzogc3RyaW5nfSk6IE9ic2VydmFibGU8RmlsZUV2ZW50PFQ+PiB7XG4gICAgcmV0dXJuIEZpbGVzVXRpbHMucmVhZEFzVGV4dChmaWxlLCBvcHRzPy5lbmNvZGluZylcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoZSA9PiB7XG4gICAgICAgICAgaWYgKGUudHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5VcGxvYWRQcm9ncmVzcykge1xuICAgICAgICAgICAgY29uc3QgbG9hZGVkID0gTWF0aC5yb3VuZChlLmxvYWRlZCAqIDAuOCk7XG4gICAgICAgICAgICByZXR1cm4gey4uLmUsIGxvYWRlZH07XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgaWYgKGUgaW5zdGFuY2VvZiBGaWxlUmVzcG9uc2Upe1xuICAgICAgICAgICAgY29uc3QgYm9keSA9IGUuYm9keTtcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGJvZHkpIGFzIFQ7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEZpbGVSZXNwb25zZTxUPih7Ym9keTogZGF0YX0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIGZpbHRlcihpc05vdE5pbClcbiAgICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -21,4 +21,4 @@ export class UriUtils {
|
|
|
21
21
|
return filename;
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJpLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvZmlsZS91cmkudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLFFBQVE7SUFFbkI7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBVztRQUM1QixJQUFJLENBQUMsR0FBRztZQUFFLE9BQU8sR0FBRyxDQUFDO1FBQ3JCLElBQUksUUFBUSxHQUFHLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUUxQiwyQ0FBMkM7UUFDM0MsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqRCxJQUFJLGNBQWMsS0FBSyxDQUFDLENBQUMsSUFBSSxjQUFjLEtBQUssR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMvRCxRQUFRLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUVELHNCQUFzQjtRQUN0QixNQUFNLGVBQWUsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlDLElBQUksZUFBZSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDM0IsUUFBUSxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQ3BELENBQUM7UUFFRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgVXJpVXRpbHMge1xuXG4gIC8qKlxuICAgKiBFeHRyYWN0IHRoZSBmaWxlbmFtZSwgZnJvbSBhbiB1cmkgKHVzaW5nIHRoZSBsYXN0IHNsYXNoKVxuICAgKlxuICAgKiBAcGFyYW0gdXJpXG4gICAqL1xuICBzdGF0aWMgZ2V0RmlsZW5hbWUodXJpOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghdXJpKSByZXR1cm4gdXJpO1xuICAgIGxldCBmaWxlbmFtZSA9IHVyaS50cmltKCk7XG5cbiAgICAvLyBHZXQgbGFzdCBwYXJ0IChvciBhbGwgc3RyaW5nLCBpZiBubyAnLycpXG4gICAgY29uc3QgbGFzdFNsYXNoSW5kZXggPSBmaWxlbmFtZS5sYXN0SW5kZXhPZignLycpO1xuICAgIGlmIChsYXN0U2xhc2hJbmRleCAhPT0gLTEgJiYgbGFzdFNsYXNoSW5kZXggIT09IHVyaS5sZW5ndGggLSAxKSB7XG4gICAgICBmaWxlbmFtZSA9IGZpbGVuYW1lLnN1YnN0cmluZyhsYXN0U2xhc2hJbmRleCArIDEpO1xuICAgIH1cblxuICAgIC8vIFJlbW92ZSBxdWVyeSBwYXJhbXNcbiAgICBjb25zdCBxdWVyeVBhcmFtSW5kZXggPSBmaWxlbmFtZS5pbmRleE9mKCc/Jyk7XG4gICAgaWYgKHF1ZXJ5UGFyYW1JbmRleCAhPT0gLTEpIHtcbiAgICAgIGZpbGVuYW1lID0gZmlsZW5hbWUuc3Vic3RyaW5nKDAsIHF1ZXJ5UGFyYW1JbmRleCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbGVuYW1lO1xuICB9XG59XG4iXX0=
|
|
@@ -350,4 +350,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImpor
|
|
|
350
350
|
type: ViewChild,
|
|
351
351
|
args: ['autocompleteField']
|
|
352
352
|
}] } });
|
|
353
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvZm9ybS9maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9mb3JtL2ZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBcUIsU0FBUyxFQUFjLFlBQVksRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFZLEtBQUssRUFBVSxRQUFRLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNoTSxPQUFPLEVBQTJDLGlCQUFpQixFQUFzQixVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzSCxPQUFPLEVBQUMsYUFBYSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFHcEksT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUNoRixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sVUFBVSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU16QyxNQUFNLElBQUksR0FBRyxHQUFHLEVBQUU7QUFDbEIsQ0FBQyxDQUFDO0FBZUYsTUFBTSxPQUFPLFlBQVk7SUFrRFg7SUFDQTtJQUNBO0lBQ1U7SUFuRGQsaUJBQWlCLEdBQXFCLElBQUksQ0FBQztJQUMzQyxrQkFBa0IsR0FBZSxJQUFJLENBQUM7SUFDdEMsV0FBVyxDQUFzQjtJQUUvQixPQUFPLENBQWE7SUFFcEIsSUFBSSxDQUFnQjtJQUNwQixlQUFlLENBQVM7SUFFbEMsSUFDSSxVQUFVLENBQUMsS0FBMEI7UUFDdkMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLEtBQUs7WUFBRSxPQUFPLENBQUMsc0JBQXNCO1FBQ3hFLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFUSxRQUFRLENBQVU7SUFDbEIsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixRQUFRLENBQVU7SUFDbEIsV0FBVyxDQUFxQjtJQUNoQyxlQUFlLENBQVM7SUFDeEIsV0FBVyxDQUFTO0lBQ3BCLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDaEIsVUFBVSxHQUFzQixNQUFNLENBQUM7SUFDdkMsUUFBUSxDQUFTO0lBQ2pCLFNBQVMsQ0FBVTtJQUVuQixTQUFTLENBQVU7SUFDbkIsU0FBUyxHQUFvQyxJQUFJLENBQUM7SUFDbEQsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUVQLFNBQVMsQ0FBUztJQUdsQyxZQUFZLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUV2QyxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO0lBQ2hDLENBQUM7SUFFc0IsUUFBUSxDQUFhO0lBQ1osaUJBQWlCLENBQXVCO0lBRXhFLFlBQ1ksU0FBMkIsRUFDM0IsRUFBcUIsRUFDckIsUUFBa0IsRUFDUixZQUFnQztRQUgxQyxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNyQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ1IsaUJBQVksR0FBWixZQUFZLENBQW9CO0lBR3RELENBQUM7SUFFRCxRQUFRO1FBRU4sSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFFbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxpRUFBaUUsQ0FBQyxDQUFDO1FBQzFHLElBQUksT0FBTyxJQUFJLENBQUMsV0FBVyxLQUFLLFFBQVE7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDRFQUE0RSxDQUFDLENBQUM7UUFDeEksSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQztJQUVsRSxDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQVE7UUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUM1RSxRQUFRO1lBQ1Isd0dBQXdHO1lBRXhHLEdBQUcsR0FBRyxJQUFJLENBQUM7U0FDWjthQUNJLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFO1lBQzNELEdBQUcsR0FBRyxDQUFDLEdBQUcsS0FBSyxPQUFPLENBQUMsQ0FBQztTQUN6QjthQUNJLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUU7WUFDN0IsR0FBRyxHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUM1QjthQUNJLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQy9DLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNwQixJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRTtnQkFDM0IsR0FBRyxHQUFHLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ2hDLE9BQU8sR0FBRyxJQUFJLENBQUM7YUFDaEI7WUFDRCxNQUFNLFlBQVksR0FBRyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQzFDLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFO29CQUM1QixPQUFPLEdBQUcsSUFBSSxDQUFDO29CQUNmLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2lCQUN0RDtnQkFDRCxPQUFPLElBQUksQ0FBQztZQUNkLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNwQixJQUFJLE9BQU8sRUFBRTtnQkFDWCxHQUFHLEdBQUcsWUFBWSxDQUFDO2FBQ3BCO1NBQ0Y7YUFDSSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNwRCxHQUFHLEdBQUcsSUFBSSxDQUFDO1NBQ1o7YUFDSSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssVUFBVSxJQUFJLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNsRCxJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDcEIsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUU7Z0JBQzNCLEdBQUcsR0FBRyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2pCLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUM1QyxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDdkI7cUJBQ0k7b0JBQ0gsR0FBRyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7aUJBQzFCO2dCQUNELE9BQU8sR0FBRyxJQUFJLENBQUM7YUFDaEI7WUFDRCxNQUFNLFlBQVksR0FBRyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQzFDLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDMUUsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3hCLE9BQU8sR0FBRyxJQUFJLENBQUM7b0JBQ2YsT0FBTyxJQUFJLENBQUM7aUJBQ2I7Z0JBQ0QsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDM0IsSUFBSSxPQUFPLEVBQUU7Z0JBQ1gsR0FBRyxHQUFHLFlBQVksQ0FBQzthQUNwQjtTQUNGO1FBQ0QsSUFBSSxHQUFHLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUU7WUFDbEMsUUFBUTtZQUNSLHFFQUFxRTtZQUVyRSxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQztZQUNyRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDN0I7UUFFRCxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3RCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQU87UUFDdkIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsVUFBbUI7UUFDbEMsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLFVBQVU7WUFBRSxPQUFPO1FBQ3pDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO1FBQzNCLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFO1lBQzVCLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBRUQseUJBQXlCLENBQUMsS0FBb0I7UUFDNUMsSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUM3RSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM5QixPQUFPO1NBQ1I7UUFDRCw4Q0FBOEM7SUFDaEQsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLElBQUksQ0FBQyxRQUFRO1lBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDbEQsSUFBSSxJQUFJLENBQUMsaUJBQWlCO1lBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2xFLENBQUM7SUFFRCxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztJQUN0QyxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztJQUV4QyxpQkFBaUIsQ0FBQyxVQUErQjtRQUMvQyxJQUFJLFVBQVUsQ0FBQyxZQUFZLElBQUksVUFBVSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUU7WUFDbEUsT0FBTyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDL0Q7UUFDRCxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsWUFBWSxJQUFJLFVBQVUsQ0FBQyxZQUFZLENBQUMsVUFBVSxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3RHLE9BQU8sQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQWE7UUFDNUIsT0FBTyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQzVFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsV0FBVyxDQUFDLEtBQVc7UUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXO1lBQUUsT0FBTztRQUU5QixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTVDLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQzFCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDOUQ7SUFDSCxDQUFDO0lBRUQsNEJBQTRCO0lBRWxCLHNCQUFzQixDQUFDLFVBQStCO1FBRTlELElBQUksVUFBVSxDQUFDLHFCQUFxQixHQUFHLENBQUMsRUFBRTtZQUN4QyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7WUFDaEIsSUFBSSxVQUFVLENBQUMscUJBQXFCLEdBQUcsQ0FBQyxFQUFFO2dCQUN4QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLHFCQUFxQixHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtvQkFDN0QsSUFBSSxJQUFJLEdBQUcsQ0FBQztpQkFDYjthQUNGO1lBQ0QsSUFBSSxJQUFJLEdBQUcsQ0FBQztZQUNaLE9BQU8sSUFBSSxDQUFDO1NBQ2I7YUFBTTtZQUNMLE9BQU8sR0FBRyxDQUFDO1NBQ1o7SUFDSCxDQUFDO0lBRVMsc0JBQXNCLENBQUMsS0FBMEM7UUFDekUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEMsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDakUsQ0FBQztJQUVTLGFBQWEsQ0FBQyxNQUEyQjtRQUNqRCxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ3ZCLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssUUFBUSxDQUFDO1lBQzdDLENBQUMsQ0FBVyxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBQztZQUM5QixDQUFDLENBQVcsRUFBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFDLENBQ2pFLENBQUM7SUFDSixDQUFDO0lBRVMsMEJBQTBCO1FBQ2xDLElBQUksSUFBSSxDQUFDLFdBQVc7WUFBRSxPQUFPLENBQUMseUJBQXlCO1FBRXZELElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNyQix1REFBdUQ7WUFDdkQsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2pELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUM7YUFDN0M7WUFDRCxNQUFNLGVBQWUsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDaEksSUFBSSxDQUFDLFdBQVcsR0FBRyxlQUFlLElBQUksZUFBZSxDQUFDLE9BQU8sQ0FBQztZQUM5RCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBdUIsQ0FBQzthQUMzRjtTQUNGO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDckIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5RkFBeUYsQ0FBQyxDQUFDO1NBQzVHO0lBQ0gsQ0FBQztJQUVTLG9CQUFvQixDQUFDLFVBQStCLEVBQUUsSUFBNEI7UUFFMUYsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDO1FBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsc0VBQXNFLENBQUMsQ0FBQztRQUV4RyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDbEgsSUFBSSxDQUFDLFFBQVEsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsU0FBUyxLQUFLLFVBQVUsQ0FBQyxRQUFRLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ3BMLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFFdEYsU0FBUztRQUNULElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7WUFDMUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDaEU7UUFFRCxrQkFBa0I7YUFDYixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFO1lBQ3RELHNCQUFzQjtZQUN0QixJQUFJLFVBQVUsQ0FBQyxNQUFNLFlBQVksY0FBYyxFQUFFO2dCQUMvQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDL0Q7aUJBQ0k7Z0JBQ0gsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxNQUErQixDQUFDLENBQUM7YUFDL0U7U0FDRjtRQUVELFVBQVU7UUFDVixJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssS0FBSyxFQUFFO1lBQ3JDLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDeEI7UUFFRCwrRUFBK0U7UUFDL0UsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRVMsY0FBYyxDQUFDLE9BQWdCO1FBQ3ZDLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ3pDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsTUFBTSxPQUFPLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDOUMsSUFBSSxPQUFPLEVBQUU7b0JBQ1gsT0FBTyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO29CQUNqQyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO2lCQUN4QjtxQkFDSSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtvQkFDL0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO2lCQUNqRDtZQUNILENBQUMsRUFBRSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDbEI7SUFDSCxDQUFDO3VHQTFTVSxZQUFZOzJGQUFaLFlBQVksc2RBVFo7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQztnQkFDM0MsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLHlPQzFCSCw2cFhBeVFBOzsyRkQ1T2EsWUFBWTtrQkFieEIsU0FBUzsrQkFDRSxnQkFBZ0IsYUFHZjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUM7NEJBQzNDLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNOzswQkF1RDVDLFFBQVE7eUNBekNQLFVBQVU7c0JBRGIsS0FBSztnQkFXRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFFVSxTQUFTO3NCQUF4QixLQUFLO3VCQUFDLE9BQU87Z0JBR2QsWUFBWTtzQkFEWCxNQUFNO3VCQUFDLGFBQWE7Z0JBT0UsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVO2dCQUNXLGlCQUFpQjtzQkFBaEQsU0FBUzt1QkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIEluamVjdGlvblRva2VuLCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCwgT3B0aW9uYWwsIE91dHB1dCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Hcm91cERpcmVjdGl2ZSwgTkdfVkFMVUVfQUNDRVNTT1IsIFVudHlwZWRGb3JtQ29udHJvbCwgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtpc0JsYW5rU3RyaW5nLCBpc05pbE9yQmxhbmssIGlzTm90TmlsLCBpc05vdE5pbEJvb2xlYW4sIGlzTm90TmlsT3JCbGFuaywgam9pblByb3BlcnRpZXNQYXRoLCB0b0Jvb2xlYW59IGZyb20gJy4uL2Z1bmN0aW9ucyc7XG5pbXBvcnQge0Rpc3BsYXlGbiwgRm9ybUZpZWxkRGVmaW5pdGlvbiwgRm9ybUZpZWxkVHlwZSwgQXBwRmxvYXRMYWJlbFR5cGV9IGZyb20gJy4vZmllbGQubW9kZWwnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7Z2V0Q29sb3JDb250cmFzdH0gZnJvbSAnLi4vZ3JhcGgvY29sb3JzLnV0aWxzJztcbmltcG9ydCB7YXNJbnB1dEVsZW1lbnQsIGZpbHRlck51bWJlcklucHV0LCBzZWxlY3RJbnB1dENvbnRlbnR9IGZyb20gJy4uL2lucHV0cyc7XG5pbXBvcnQge3RvRGF0ZUlTT1N0cmluZ30gZnJvbSAnLi4vZGF0ZXMnO1xuaW1wb3J0IHtQcm9wZXJ0eX0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtUaGVtZVBhbGV0dGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHtQcmVkZWZpbmVkQ29sb3JzfSBmcm9tICdAaW9uaWMvY29yZSc7XG5pbXBvcnQge01hdEF1dG9jb21wbGV0ZUZpZWxkfSBmcm9tICcuLi9tYXRlcmlhbC9hdXRvY29tcGxldGUvbWF0ZXJpYWwuYXV0b2NvbXBsZXRlJztcblxuY29uc3Qgbm9vcCA9ICgpID0+IHtcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1mb3JtLWZpZWxkJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmllbGQuY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpZWxkLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBcHBGb3JtRmllbGQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEFwcEZvcm1GaWVsZCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuXG4gIHByaXZhdGUgX29uQ2hhbmdlQ2FsbGJhY2s6IChfOiBhbnkpID0+IHZvaWQgPSBub29wO1xuICBwcml2YXRlIF9vblRvdWNoZWRDYWxsYmFjazogKCkgPT4gdm9pZCA9IG5vb3A7XG4gIHByaXZhdGUgX2RlZmluaXRpb246IEZvcm1GaWVsZERlZmluaXRpb247XG5cbiAgcHJvdGVjdGVkIF92YWx1ZXM6IFByb3BlcnR5W107XG5cbiAgcHJvdGVjdGVkIHR5cGU6IEZvcm1GaWVsZFR5cGU7XG4gIHByb3RlY3RlZCBudW1iZXJJbnB1dFN0ZXA6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBzZXQgZGVmaW5pdGlvbih2YWx1ZTogRm9ybUZpZWxkRGVmaW5pdGlvbikge1xuICAgIGlmICghdmFsdWUgfHwgdGhpcy5fZGVmaW5pdGlvbiA9PT0gdmFsdWUpIHJldHVybjsgLy8gU2tpcCBpcyBzYW1lIG9yIG5pbFxuICAgIHRoaXMuX2RlZmluaXRpb24gPSB2YWx1ZTtcbiAgICB0aGlzLl9vbkRlZmluaXRpb25DaGFuZ2VkKHZhbHVlKTtcbiAgfVxuXG4gIGdldCBkZWZpbml0aW9uKCk6IEZvcm1GaWVsZERlZmluaXRpb24ge1xuICAgIHJldHVybiB0aGlzLl9kZWZpbml0aW9uO1xuICB9XG5cbiAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHJlYWRvbmx5ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuO1xuICBASW5wdXQoKSBmb3JtQ29udHJvbDogVW50eXBlZEZvcm1Db250cm9sO1xuICBASW5wdXQoKSBmb3JtQ29udHJvbE5hbWU6IHN0cmluZztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcbiAgQElucHV0KCkgY29tcGFjdCA9IGZhbHNlO1xuICBASW5wdXQoKSBmbG9hdExhYmVsOiBBcHBGbG9hdExhYmVsVHlwZSA9ICdhdXRvJztcbiAgQElucHV0KCkgdGFiaW5kZXg6IG51bWJlcjtcbiAgQElucHV0KCkgYXV0b2ZvY3VzOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIGNsZWFyYWJsZTogYm9vbGVhbjtcbiAgQElucHV0KCkgY2hpcENvbG9yOiBUaGVtZVBhbGV0dGUgfCBQcmVkZWZpbmVkQ29sb3JzID0gbnVsbDtcbiAgQElucHV0KCkgZGVidWcgPSBmYWxzZTtcblxuICBASW5wdXQoJ2NsYXNzJykgY2xhc3NMaXN0OiBzdHJpbmc7XG5cbiAgQE91dHB1dCgna2V5dXAuZW50ZXInKVxuICBvbktleXVwRW50ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBnZXQgdmFsdWUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5mb3JtQ29udHJvbC52YWx1ZTtcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoJ21hdElucHV0JykgbWF0SW5wdXQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2F1dG9jb21wbGV0ZUZpZWxkJykgYXV0b2NvbXBsZXRlRmllbGQ6IE1hdEF1dG9jb21wbGV0ZUZpZWxkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgZm9ybUdyb3VwRGlyOiBGb3JtR3JvdXBEaXJlY3RpdmVcbiAgKSB7XG5cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuXG4gICAgdGhpcy5jaGVja0FuZFJlc29sdmVGb3JtQ29udHJvbCgpO1xuXG4gICAgaWYgKCF0aGlzLl9kZWZpbml0aW9uKSB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgbWFuZGF0b3J5IGF0dHJpYnV0ZSBcXCdkZWZpbml0aW9uXFwnIGluIDxhcHAtZm9ybS1maWVsZD4uJyk7XG4gICAgaWYgKHR5cGVvZiB0aGlzLl9kZWZpbml0aW9uICE9PSAnb2JqZWN0JykgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGF0dHJpYnV0ZSBcXCdkZWZpbml0aW9uXFwnIGluIDxhcHAtZm9ybS1maWVsZD4uIFNob3VsZCBiZSBhbiBvYmplY3QuJyk7XG4gICAgdGhpcy5fb25EZWZpbml0aW9uQ2hhbmdlZCh0aGlzLl9kZWZpbml0aW9uLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuXG4gIH1cblxuICB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7XG4gICAgaWYgKCh0aGlzLnR5cGUgPT09ICdpbnRlZ2VyJyB8fCB0aGlzLnR5cGUgPT09ICdkb3VibGUnKSAmJiBOdW1iZXIuaXNOYU4ob2JqKSkge1xuICAgICAgLy8gREVCVUdcbiAgICAgIC8vaWYgKHRoaXMuZGVidWcpIGNvbnNvbGUuZGVidWcoXCJXQVJOOiB0cnlpbmcgdG8gc2V0IE5hTiB2YWx1ZSwgaW4gYW4gPGFwcC1mb3JtLWZpZWxkPiEgUmVzZXQgdG8gbnVsbFwiKTtcblxuICAgICAgb2JqID0gbnVsbDtcbiAgICB9XG4gICAgZWxzZSBpZiAodGhpcy50eXBlID09PSAnYm9vbGVhbicgJiYgdHlwZW9mIG9iaiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIG9iaiA9IChvYmogIT09ICdmYWxzZScpO1xuICAgIH1cbiAgICBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdkYXRlJykge1xuICAgICAgb2JqID0gdG9EYXRlSVNPU3RyaW5nKG9iaik7XG4gICAgfVxuICAgIGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ2VudW1zJyAmJiBpc05vdE5pbChvYmopKSB7XG4gICAgICBsZXQgY2hhbmdlcyA9IGZhbHNlO1xuICAgICAgaWYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIG9iaiA9IG9iai50cmltKCkuc3BsaXQoL1t8LF0rLyk7XG4gICAgICAgIGNoYW5nZXMgPSB0cnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgdXBkYXRlZEFycmF5ID0gKG9iaiB8fCBbXSkubWFwKGl0ZW0gPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgY2hhbmdlcyA9IHRydWU7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlcy5maW5kKHYgPT4gdi5rZXkgPT09IGl0ZW0udHJpbSgpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgIH0pLmZpbHRlcihpc05vdE5pbCk7XG4gICAgICBpZiAoY2hhbmdlcykge1xuICAgICAgICBvYmogPSB1cGRhdGVkQXJyYXk7XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ2VudGl0eScgJiYgaXNOaWxPckJsYW5rKG9iaikpIHtcbiAgICAgIG9iaiA9IG51bGw7XG4gICAgfVxuICAgIGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ2VudGl0aWVzJyAmJiBpc05vdE5pbChvYmopKSB7XG4gICAgICBsZXQgY2hhbmdlcyA9IGZhbHNlO1xuICAgICAgaWYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIG9iaiA9IG9iai50cmltKCk7XG4gICAgICAgIGlmIChvYmouc3RhcnRzV2l0aCgnWycpICYmIG9iai5lbmRzV2l0aCgnXScpKSB7XG4gICAgICAgICAgb2JqID0gSlNPTi5wYXJzZShvYmopO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIG9iaiA9IG9iai5zcGxpdCgvW3wsXSsvKTtcbiAgICAgICAgfVxuICAgICAgICBjaGFuZ2VzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHVwZGF0ZWRBcnJheSA9IChvYmogfHwgW10pLm1hcChpdGVtID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJyAmJiBpdGVtLnN0YXJ0c1dpdGgoJ3snKSAmJiBpdGVtLmVuZHNXaXRoKCd9JykpIHtcbiAgICAgICAgICBpdGVtID0gSlNPTi5wYXJzZShpdGVtKTtcbiAgICAgICAgICBjaGFuZ2VzID0gdHJ1ZTtcbiAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgIH0pLmZpbHRlcihpc05vdE5pbE9yQmxhbmspO1xuICAgICAgaWYgKGNoYW5nZXMpIHtcbiAgICAgICAgb2JqID0gdXBkYXRlZEFycmF5O1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAob2JqICE9PSB0aGlzLmZvcm1Db250cm9sLnZhbHVlKSB7XG4gICAgICAvLyBERUJVR1xuICAgICAgLy9pZiAodGhpcy5kZWJ1ZykgY29uc29sZS5kZWJ1ZyhcIlNldCA8YXBwLWZvcm0tZmllbGQ+IHZhbHVlOiBcIiwgb2JqKTtcblxuICAgICAgdGhpcy5mb3JtQ29udHJvbC5wYXRjaFZhbHVlKG9iaiwge2VtaXRFdmVudDogZmFsc2V9KTtcbiAgICAgIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2sob2JqKTtcbiAgICB9XG5cbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fb25DaGFuZ2VDYWxsYmFjayA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX29uVG91Y2hlZENhbGxiYWNrID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCA9PT0gaXNEaXNhYmxlZCkgcmV0dXJuO1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBtYXJrQXNUb3VjaGVkKCkge1xuICAgIGlmICh0aGlzLmZvcm1Db250cm9sLnRvdWNoZWQpIHtcbiAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICB0aGlzLl9vblRvdWNoZWRDYWxsYmFjaygpO1xuICAgIH1cbiAgfVxuXG4gIGZpbHRlckFscGhhbnVtZXJpY2FsSW5wdXQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gMTMgLyo9RW50ZXIqLyAmJiB0aGlzLm9uS2V5dXBFbnRlci5vYnNlcnZlcnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5vbktleXVwRW50ZXIuZW1pdChldmVudCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIEFkZCBmZWF0dXJlcyAoZS5nLiBjaGVjayBhZ2FpbnN0IGEgcGF0dGVybilcbiAgfVxuXG4gIGZvY3VzKCkge1xuICAgIGlmICh0aGlzLm1hdElucHV0KSB0aGlzLm1hdElucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICBlbHNlIGlmICh0aGlzLmF1dG9jb21wbGV0ZUZpZWxkKSB0aGlzLmF1dG9jb21wbGV0ZUZpZWxkLmZvY3VzKCk7XG4gIH1cblxuICBmaWx0ZXJOdW1iZXJJbnB1dCA9IGZpbHRlck51bWJlcklucHV0O1xuICBzZWxlY3RJbnB1dENvbnRlbnQgPSBzZWxlY3RJbnB1dENvbnRlbnQ7XG5cbiAgZ2V0RGlzcGxheVZhbHVlRm4oZGVmaW5pdGlvbjogRm9ybUZpZWxkRGVmaW5pdGlvbik6IERpc3BsYXlGbiB7XG4gICAgaWYgKGRlZmluaXRpb24uYXV0b2NvbXBsZXRlICYmIGRlZmluaXRpb24uYXV0b2NvbXBsZXRlLmRpc3BsYXlXaXRoKSB7XG4gICAgICByZXR1cm4gKG9iajogYW55KSA9PiBkZWZpbml0aW9uLmF1dG9jb21wbGV0ZS5kaXNwbGF5V2l0aChvYmopO1xuICAgIH1cbiAgICBjb25zdCBhdHRyaWJ1dGVzID0gZGVmaW5pdGlvbi5hdXRvY29tcGxldGUgJiYgZGVmaW5pdGlvbi5hdXRvY29tcGxldGUuYXR0cmlidXRlcyB8fCBbJ2xhYmVsJywgJ25hbWUnXTtcbiAgICByZXR1cm4gKG9iajogYW55KSA9PiBvYmogJiYgam9pblByb3BlcnRpZXNQYXRoKG9iaiwgYXR0cmlidXRlcyk7XG4gIH1cblxuICBnZXRDb2xvckNvbnRyYXN0KGNvbG9yOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBpc05vdE5pbE9yQmxhbmsoY29sb3IpID8gZ2V0Q29sb3JDb250cmFzdChjb2xvciwgdHJ1ZSkgOiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogQWxsb3cgdG8gcmVsb2FkIHZhbHVlcywgaWYgbm90IGRldGVjdGVkXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZVxuICAgKi9cbiAgcmVsb2FkSXRlbXModmFsdWU/OiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuX2RlZmluaXRpb24pIHJldHVybjtcblxuICAgIHRoaXMuX29uRGVmaW5pdGlvbkNoYW5nZWQodGhpcy5fZGVmaW5pdGlvbik7XG5cbiAgICBpZiAodGhpcy5hdXRvY29tcGxldGVGaWVsZCkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmF1dG9jb21wbGV0ZUZpZWxkPy5yZWxvYWRJdGVtcyh2YWx1ZSkpO1xuICAgIH1cbiAgfVxuXG4gIC8qIC0tIHByb3RlY3RlZCBtZXRob2QgLS0gKi9cblxuICBwcm90ZWN0ZWQgY29tcHV0ZU51bWJlcklucHV0U3RlcChkZWZpbml0aW9uOiBGb3JtRmllbGREZWZpbml0aW9uKTogc3RyaW5nIHtcblxuICAgIGlmIChkZWZpbml0aW9uLm1heGltdW1OdW1iZXJEZWNpbWFscyA+IDApIHtcbiAgICAgIGxldCBzdGVwID0gJzAuJztcbiAgICAgIGlmIChkZWZpbml0aW9uLm1heGltdW1OdW1iZXJEZWNpbWFscyA+IDEpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkZWZpbml0aW9uLm1heGltdW1OdW1iZXJEZWNpbWFscyAtIDE7IGkrKykge1xuICAgICAgICAgIHN0ZXAgKz0gJzAnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBzdGVwICs9ICcxJztcbiAgICAgIHJldHVybiBzdGVwO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJzEnO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBjb21wdXRlVmFsdWVzRnJvbVRva2VuKHRva2VuOiBJbmplY3Rpb25Ub2tlbjwoc3RyaW5nfFByb3BlcnR5KVtdPik6IGFueVtdIHtcbiAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLmluamVjdG9yLmdldCh0b2tlbik7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWVzKSA/IHRoaXMuY29tcHV0ZVZhbHVlcyh2YWx1ZXMpIDogW107XG4gIH1cblxuICBwcm90ZWN0ZWQgY29tcHV0ZVZhbHVlcyh2YWx1ZXM6IChzdHJpbmd8UHJvcGVydHkpW10pOiBQcm9wZXJ0eVtdIHtcbiAgICBpZiAoIXZhbHVlcykgcmV0dXJuIFtdO1xuICAgIHJldHVybiB2YWx1ZXMubWFwKHYgPT4gICh0eXBlb2YgdiA9PT0gJ3N0cmluZycpXG4gICAgICA/IDxQcm9wZXJ0eT57a2V5OiB2LCB2YWx1ZTogdn1cbiAgICAgIDogPFByb3BlcnR5PntrZXk6IHYua2V5LCB2YWx1ZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCh2LnZhbHVlKX1cbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNoZWNrQW5kUmVzb2x2ZUZvcm1Db250cm9sKCkge1xuICAgIGlmICh0aGlzLmZvcm1Db250cm9sKSByZXR1cm47IC8vIE9LLCB0aGVyZSBpcyBhIGNvbnRyb2xcblxuICAgIGlmICh0aGlzLmZvcm1Hcm91cERpcikge1xuICAgICAgLy8gVHJ5IHRvIGZpbmQgdXNpbmcgZGVmaW5pdGlvbi5rZXksIGFzIGZvcm1Db250cm9sTmFtZVxuICAgICAgaWYgKCF0aGlzLmZvcm1Db250cm9sTmFtZSAmJiB0aGlzLl9kZWZpbml0aW9uLmtleSkge1xuICAgICAgICB0aGlzLmZvcm1Db250cm9sTmFtZSA9IHRoaXMuX2RlZmluaXRpb24ua2V5O1xuICAgICAgfVxuICAgICAgY29uc3QgZm9ybUNvbnRyb2xOYW1lID0gKHRoaXMuZm9ybUdyb3VwRGlyLmRpcmVjdGl2ZXMgfHwgW10pLmZpbmQoZCA9PiB0aGlzLmZvcm1Db250cm9sTmFtZSAmJiBkLm5hbWUgPT09IHRoaXMuZm9ybUNvbnRyb2xOYW1lKTtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wgPSBmb3JtQ29udHJvbE5hbWUgJiYgZm9ybUNvbnRyb2xOYW1lLmNvbnRyb2w7XG4gICAgICBpZiAoIXRoaXMuZm9ybUNvbnRyb2wpIHtcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbCA9IHRoaXMuZm9ybUdyb3VwRGlyLmZvcm0uZ2V0KHRoaXMuZm9ybUNvbnRyb2xOYW1lKSBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmZvcm1Db250cm9sKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgYXR0cmlidXRlIFxcJ2Zvcm1Db250cm9sXFwnIG9yIFxcJ2Zvcm1Db250cm9sTmFtZVxcJyBpbiA8YXBwLWZvcm0tZmllbGQ+IGNvbXBvbmVudC4nKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgX29uRGVmaW5pdGlvbkNoYW5nZWQoZGVmaW5pdGlvbjogRm9ybUZpZWxkRGVmaW5pdGlvbiwgb3B0cz86IHtlbWl0RXZlbnQ/OiBib29sZWFufSkge1xuXG4gICAgdGhpcy50eXBlID0gZGVmaW5pdGlvbi50eXBlO1xuICAgIGlmICghdGhpcy50eXBlKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYXR0cmlidXRlIFxcJ2RlZmluaXRpb25cXCcgaW4gPGFwcC1mb3JtLWZpZWxkPi4gTWlzc2luZyB0eXBlICEnKTtcblxuICAgIHRoaXMucGxhY2Vob2xkZXIgPSB0aGlzLnBsYWNlaG9sZGVyIHx8ICh0aGlzLl9kZWZpbml0aW9uLmxhYmVsICYmIHRoaXMudHJhbnNsYXRlLmluc3RhbnQodGhpcy5fZGVmaW5pdGlvbi5sYWJlbCkpO1xuICAgIHRoaXMucmVxdWlyZWQgPSBpc05vdE5pbEJvb2xlYW4odGhpcy5yZXF1aXJlZCkgPyB0aGlzLnJlcXVpcmVkIDogKHRoaXMuX2RlZmluaXRpb24ucmVxdWlyZWQgfHwgdGhpcy5mb3JtQ29udHJvbD8udmFsaWRhdG9yID09PSBWYWxpZGF0b3JzLnJlcXVpcmVkIHx8IGlzQmxhbmtTdHJpbmcodGhpcy5yZXF1aXJlZCkpO1xuICAgIHRoaXMuZGlzYWJsZWQgPSB0b0Jvb2xlYW4odGhpcy5kaXNhYmxlZCwgdG9Cb29sZWFuKHRoaXMuX2RlZmluaXRpb24uZGlzYWJsZWQsIGZhbHNlKSk7XG5cbiAgICAvLyBkb3VibGVcbiAgICBpZiAodGhpcy50eXBlID09PSAnZG91YmxlJykge1xuICAgICAgdGhpcy5udW1iZXJJbnB1dFN0ZXAgPSB0aGlzLmNvbXB1dGVOdW1iZXJJbnB1dFN0ZXAoZGVmaW5pdGlvbik7XG4gICAgfVxuXG4gICAgLy8gZW51bSAob3IgZW51bXMpXG4gICAgZWxzZSBpZiAodGhpcy50eXBlID09PSAnZW51bScgfHwgdGhpcy50eXBlID09PSAnZW51bXMnKSB7XG4gICAgICAvLyBSZXNvbHZlIGVudW0gdmFsdWVzXG4gICAgICBpZiAoZGVmaW5pdGlvbi52YWx1ZXMgaW5zdGFuY2VvZiBJbmplY3Rpb25Ub2tlbikge1xuICAgICAgICB0aGlzLl92YWx1ZXMgPSB0aGlzLmNvbXB1dGVWYWx1ZXNGcm9tVG9rZW4oZGVmaW5pdGlvbi52YWx1ZXMpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlcyA9IHRoaXMuY29tcHV0ZVZhbHVlcyhkZWZpbml0aW9uLnZhbHVlcyBhcyAoc3RyaW5nW118UHJvcGVydHlbXSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlcGFpbnRcbiAgICBpZiAoIW9wdHMgfHwgb3B0cy5lbWl0RXZlbnQgIT09IGZhbHNlKSB7XG4gICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8vIFJlY29tcHV0ZSB0YWIgaW5kZXgsIGJlY2F1c2UgaWYgdHlwZSBjaGFuZ2VkLCB0aGVuIG1hdElucHV0IGNhbiBoYXZlIGNoYW5nZWRcbiAgICB0aGlzLnVwZGF0ZVRhYkluZGV4KDEwMCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlVGFiSW5kZXgodGltZW91dD86IG51bWJlcikge1xuICAgIGlmICh0aGlzLnRhYmluZGV4ICYmIHRoaXMudGFiaW5kZXggIT09IC0xKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGFzSW5wdXRFbGVtZW50KHRoaXMubWF0SW5wdXQpO1xuICAgICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICAgIGVsZW1lbnQudGFiSW5kZXggPSB0aGlzLnRhYmluZGV4O1xuICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy5hdXRvY29tcGxldGVGaWVsZCkge1xuICAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlRmllbGQudGFiaW5kZXggPSB0aGlzLnRhYmluZGV4O1xuICAgICAgICB9XG4gICAgICB9LCB0aW1lb3V0IHx8IDApO1xuICAgIH1cbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwidHlwZVwiPlxuXG4gIDwhLS0gaW50ZWdlciAtLT5cbiAgPG1hdC1mb3JtLWZpZWxkICpuZ1N3aXRjaENhc2U9XCInaW50ZWdlcidcIiBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsIHwgYXNGbG9hdExhYmVsVHlwZVwiIFtjbGFzc109XCJjbGFzc0xpc3RcIj5cbiAgICA8bWF0LWxhYmVsICpuZ0lmPVwiZmxvYXRMYWJlbCAhPT0gJ25ldmVyJyAmJiAhIXBsYWNlaG9sZGVyXCI+e3twbGFjZWhvbGRlcn19PC9tYXQtbGFiZWw+XG4gICAgPGlucHV0IG1hdElucHV0ICNtYXRJbnB1dFxuICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgICAgW21pbl09XCJkZWZpbml0aW9uLm1pblZhbHVlXCJcbiAgICAgICAgICAgW21heF09XCJkZWZpbml0aW9uLm1heFZhbHVlXCJcbiAgICAgICAgICAgcGF0dGVybj1cIi0/WzAtOV0qXCJcbiAgICAgICAgICAgc3RlcD1cIjFcIlxuICAgICAgICAgICBbYXBwQXV0b2ZvY3VzXT1cImF1dG9mb2N1c1wiXG4gICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmbG9hdExhYmVsID09PSAnbmV2ZXInID8gcGxhY2Vob2xkZXIgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwib25LZXl1cEVudGVyLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgIChrZXlwcmVzcyk9XCJmaWx0ZXJOdW1iZXJJbnB1dCgkZXZlbnQsIGZhbHNlKVwiXG4gICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgICAgIFt0YWJJbmRleF09XCJ0YWJpbmRleFwiXG4gICAgICAgICAgIChjbGljayk9XCJzZWxlY3RJbnB1dENvbnRlbnQoJGV2ZW50KVwiPlxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtQ29udHJvbC5oYXNFcnJvcigncmVxdWlyZWQnKVwiIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9SRVFVSVJFRDwvbWF0LWVycm9yPlxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtQ29udHJvbC5oYXNFcnJvcignbWluJylcIj5cbiAgICAgIHt7KGNvbXBhY3QgPyAnRVJST1IuRklFTERfTUlOX0NPTVBBQ1QnIDogJ0VSUk9SLkZJRUxEX01JTicpIHwgdHJhbnNsYXRlOmZvcm1Db250cm9sLmVycm9yc1snbWluJ10gfX08L21hdC1lcnJvcj5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybUNvbnRyb2wuaGFzRXJyb3IoJ21heCcpXCI+XG4gICAgICB7eyhjb21wYWN0ID8gJ0VSUk9SLkZJRUxEX01BWF9DT01QQUNUJyA6ICdFUlJPUi5GSUVMRF9NQVgnKSB8IHRyYW5zbGF0ZTpmb3JtQ29udHJvbC5lcnJvcnNbJ21heCddIH19PC9tYXQtZXJyb3I+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm1Db250cm9sLmhhc0Vycm9yKCdwYXR0ZXJuJylcIj5cbiAgICAgIHt7J0VSUk9SLkZJRUxEX05PVF9WQUxJRF9JTlRFR0VSJ3wgdHJhbnNsYXRlIH19PC9tYXQtZXJyb3I+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm1Db250cm9sLmhhc0Vycm9yKCdpbnRlZ2VyJylcIj5cbiAgICAgIHt7J0VSUk9SLkZJRUxEX05PVF9WQUxJRF9JTlRFR0VSJ3wgdHJhbnNsYXRlIH19PC9tYXQtZXJyb3I+XG5cbiAgICA8YnV0dG9uIG1hdFN1ZmZpeCAqbmdJZj1cImNsZWFyYWJsZVwiXG4gICAgICAgICAgICBtYXQtaWNvbi1idXR0b24gdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJmb3JtQ29udHJvbC5yZXNldCgpXCJcbiAgICAgICAgICAgIFtoaWRkZW5dPVwiZm9ybUNvbnRyb2wuZGlzYWJsZWQgfHwgKGZvcm1Db250cm9sfGZvcm1HZXRWYWx1ZXxpc05pbE9yQmxhbmspXCI+XG4gICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGRpdiBtYXRTdWZmaXg+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbWF0U3VmZml4XVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9tYXQtZm9ybS1maWVsZD5cblxuICA8IS0tIGRvdWJsZSAtLT5cbiAgPG1hdC1mb3JtLWZpZWxkICpuZ1N3aXRjaENhc2U9XCInZG91YmxlJ1wiIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWwgfCBhc0Zsb2F0TGFiZWxUeXBlXCIgW2NsYXNzXT1cImNsYXNzTGlzdFwiPlxuICAgIDxtYXQtbGFiZWwgKm5nSWY9XCJmbG9hdExhYmVsICE9PSAnbmV2ZXInICYmICEhcGxhY2Vob2xkZXJcIj57e3BsYWNlaG9sZGVyfX08L21hdC1sYWJlbD5cblxuICAgIDxpbnB1dCBtYXRJbnB1dCAjbWF0SW5wdXRcbiAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgIGRlY2ltYWw9XCJ0cnVlXCJcbiAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgW21pbl09XCJkZWZpbml0aW9uLm1pblZhbHVlXCJcbiAgICAgICAgICAgW21heF09XCJkZWZpbml0aW9uLm1heFZhbHVlXCJcbiAgICAgICAgICAgW2FwcEF1dG9mb2N1c109XCJhdXRvZm9jdXNcIlxuICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmxvYXRMYWJlbCA9PT0gJ25ldmVyJyA/IHBsYWNlaG9sZGVyIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgW3N0ZXBdPVwibnVtYmVySW5wdXRTdGVwXCJcbiAgICAgICAgICAgKGtleXByZXNzKT1cImZpbHRlck51bWJlcklucHV0KCRldmVudCwgdHJ1ZSlcIlxuICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIlxuICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICAgICBbdGFiSW5kZXhdPVwidGFiaW5kZXhcIlxuICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0SW5wdXRDb250ZW50KCRldmVudClcIj5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybUNvbnRyb2wuaGFzRXJyb3IoJ3JlcXVpcmVkJylcIiB0cmFuc2xhdGU+RVJST1IuRklFTERfUkVRVUlSRUQ8L21hdC1lcnJvcj5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybUNvbnRyb2wuaGFzRXJyb3IoJ2RlY2ltYWwnKVwiIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9OT1RfVkFMSURfREVDSU1BTDwvbWF0LWVycm9yPlxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtQ29udHJvbC5oYXNFcnJvcignbWluJylcIj5cbiAgICAgIHt7IChjb21wYWN0ID8gJ0VSUk9SLkZJRUxEX01JTl9DT01QQUNUJyA6ICdFUlJPUi5GSUVMRF9NSU4nKXwgdHJhbnNsYXRlOmZvcm1Db250cm9sLmVycm9yc1snbWluJ10gfX08L21hdC1lcnJvcj5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybUNvbnRyb2wuaGFzRXJyb3IoJ21heCcpXCI+XG4gICAgICB7eyhjb21wYWN0ID8gJ0VSUk9SLkZJRUxEX01BWF9DT01QQUNUJyA6ICdFUlJPUi5GSUVMRF9NQVgnKSB8IHRyYW5zbGF0ZTpmb3JtQ29udHJvbC5lcnJvcnNbJ21heCddIH19PC9tYXQtZXJyb3I+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm1Db250cm9sLmhhc0Vycm9yKCdtYXhEZWNpbWFscycpXCI+XG4gICAgICB7eyAoY29tcGFjdCA/ICdFUlJPUi5GSUVMRF9NQVhJTVVNX0RFQ0lNQUxTX0NPTVBBQ1QnIDogJ0VSUk9SLkZJRUxEX01BWElNVU1fREVDSU1BTFMnKXwgdHJhbnNsYXRlOnttYXhEZWNpbWFsczpcbiAgICAgIGRlZmluaXRpb24ubWF4aW11bU51bWJlckRlY2ltYWxzfSB9fTwvbWF0LWVycm9yPlxuXG4gICAgPGJ1dHRvbiBtYXRTdWZmaXggKm5nSWY9XCJjbGVhcmFibGVcIlxuICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZm9ybUNvbnRyb2wucmVzZXQoKVwiXG4gICAgICAgICAgICBbaGlkZGVuXT1cImZvcm1Db250cm9sLmRpc2FibGVkIHx8IChmb3JtQ29udHJvbHxmb3JtR2V0VmFsdWV8aXNOaWxPckJsYW5rKVwiPlxuICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8ZGl2IG1hdFN1ZmZpeD5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlttYXRTdWZmaXhdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gIDwhLS0gYm9vbGVhbiAtLT5cbiAgPG1hdC1ib29sZWFuLWZpZWxkICpuZ1N3aXRjaENhc2U9XCInYm9vbGVhbidcIiAjbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJjbGFzc0xpc3RcIlxuICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgICBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgICAgICBbY29tcGFjdF09XCJjb21wYWN0XCJcbiAgICAgICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCJ0YWJpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIj5cbiAgICA8ZGl2IG1hdFN1ZmZpeD5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlttYXRTdWZmaXhdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L21hdC1ib29sZWFuLWZpZWxkPlxuXG4gIDwhLS0gZGF0ZSAtLT5cbiAgPG1hdC1kYXRlLWZpZWxkICpuZ1N3aXRjaENhc2U9XCInZGF0ZSdcIiAjbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJjbGFzc0xpc3RcIlxuICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb21wYWN0ID8gKCdDT01NT04uREFURV9QTEFDRUhPTERFUid8dHJhbnNsYXRlKTogcGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgW2Zsb2F0TGFiZWxdPVwiZmxvYXRMYWJlbFwiXG4gICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgICAgW2NsZWFyYWJsZV09XCJjbGVhcmFibGVcIlxuICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgICAgICAgICAgIFtjb21wYWN0XT1cImNvbXBhY3RcIlxuICAgICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cInRhYmluZGV4XCJcbiAgICAgICAgICAgICAgICAgIFthdXRvZm9jdXNdPVwiYXV0b2ZvY3VzXCI+XG4gICAgPGRpdiBtYXRTdWZmaXg+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbWF0U3VmZml4XVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9tYXQtZGF0ZS1maWVsZD5cblxuICA8IS0tIGRhdGUgdGltZSAtLT5cbiAgPG1hdC1kYXRlLXRpbWUtZmllbGQgKm5nU3dpdGNoQ2FzZT1cIidkYXRlVGltZSdcIiAjbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNsYXNzTGlzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb21wYWN0ID8gKCdDT01NT04uREFURV9USU1FX1BMQUNFSE9MREVSJ3x0cmFuc2xhdGUpOiBwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICBbY2xlYXJhYmxlXT1cImNsZWFyYWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtjb21wYWN0XT1cImNvbXBhY3RcIlxuICAgICAgICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwidGFiaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICBbYXV0b2ZvY3VzXT1cImF1dG9mb2N1c1wiPlxuICAgIDxkaXYgbWF0U3VmZml4PlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdFN1ZmZpeF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvbWF0LWRhdGUtdGltZS1maWVsZD5cblxuICA8IS0tIGVudW0gLS0+XG4gIDxtYXQtZm9ybS1maWVsZCAqbmdTd2l0Y2hDYXNlPVwiJ2VudW0nXCIgW2Zsb2F0TGFiZWxdPVwiZmxvYXRMYWJlbCB8IGFzRmxvYXRMYWJlbFR5cGVcIiBbY2xhc3NdPVwiY2xhc3NMaXN0XCI+XG4gICAgPG1hdC1sYWJlbCAqbmdJZj1cImZsb2F0TGFiZWwgIT09ICduZXZlcicgJiYgISFwbGFjZWhvbGRlclwiPnt7cGxhY2Vob2xkZXJ9fTwvbWF0LWxhYmVsPlxuICAgIDxtYXQtc2VsZWN0IFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImZsb2F0TGFiZWwgPT09ICduZXZlcicgPyBwbGFjZWhvbGRlciA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwidGFiaW5kZXhcIlxuICAgICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJvbktleXVwRW50ZXIuZW1pdCgkZXZlbnQpXCI+XG4gICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBfdmFsdWVzXCIgW3ZhbHVlXT1cIml0ZW0ua2V5XCI+e3sgaXRlbS52YWx1ZSB8IHRyYW5zbGF0ZSB9fTwvbWF0LW9wdGlvbj5cbiAgICA8L21hdC1zZWxlY3Q+XG5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybUNvbnRyb2wuaGFzRXJyb3IoJ3JlcXVpcmVkJylcIiB0cmFuc2xhdGU+RVJST1IuRklFTERfUkVRVUlSRUQ8L21hdC1lcnJvcj5cblxuICAgIDxkaXYgbWF0U3VmZml4PlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdFN1ZmZpeF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgPCEtLSBtdWx0aSBlbnVtIC0tPlxuICA8bWF0LWNoaXBzLWZpZWxkICpuZ1N3aXRjaENhc2U9XCInZW51bXMnXCJcbiAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY2xhc3NMaXN0XCJcbiAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWxcIlxuICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgW2NsZWFyYWJsZV09XCJjbGVhcmFibGVcIlxuICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJfdmFsdWVzXCJcbiAgICAgICAgICAgICAgICAgICBbZGlzcGxheUF0dHJpYnV0ZXNdPVwiZGVmaW5pdGlvbi5hdXRvY29tcGxldGU/LmF0dHJpYnV0ZXMgfHwgWydrZXknLCAndmFsdWUnXVwiXG4gICAgICAgICAgICAgICAgICAgW2NvbmZpZ109XCJkZWZpbml0aW9uLmF1dG9jb21wbGV0ZVwiXG4gICAgICAgICAgICAgICAgICAgW3Nob3dBbGxPbkZvY3VzXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgICAgW2NoaXBDb2xvcl09XCJjaGlwQ29sb3IgfCBtYXRDb2xvclwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlttYXRQcmVmaXhdXCI+PC9uZy1jb250ZW50PlxuICAgIDxkaXYgbWF0U3VmZml4PlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdFN1ZmZpeF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvbWF0LWNoaXBzLWZpZWxkPlxuXG4gIDwhLS0gY29sb3IgLS0+XG4gIDxtYXQtZm9ybS1maWVsZCAqbmdTd2l0Y2hDYXNlPVwiJ2NvbG9yJ1wiIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWwgfCBhc0Zsb2F0TGFiZWxUeXBlXCIgW2NsYXNzXT1cImNsYXNzTGlzdFwiPlxuXG4gICAgPGlvbi1pY29uIG1hcmdpbi1yaWdodCBuYW1lPVwiY29sb3ItZmlsbFwiIG1hdFByZWZpeD48L2lvbi1pY29uPlxuXG4gICAgPGlucHV0IG1hdElucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgIFthcHBBdXRvZm9jdXNdPVwiYXV0b2ZvY3VzXCJcbiAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImdldENvbG9yQ29udHJhc3QoZm9ybUNvbnRyb2wudmFsdWUpXCJcbiAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwiZm9ybUNvbnRyb2wudmFsdWVcIlxuICAgICAgICAgICBbY29sb3JQaWNrZXJdPVwiZm9ybUNvbnRyb2wudmFsdWVcIlxuICAgICAgICAgICAoY29sb3JQaWNrZXJDaGFuZ2UpPVwid3JpdGVWYWx1ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgW2NwU2F2ZUNsaWNrT3V0c2lkZV09XCJ0cnVlXCJcbiAgICAgICAgICAgY3BQb3NpdGlvbj1cInRvcFwiXG4gICAgICAgICAgIGNwT3V0cHV0Rm9ybWF0PVwiaGV4XCJcbiAgICAgICAgICAgW2NwT0tCdXR0b25dPVwiZmFsc2VcIlxuICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIi8+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm1Db250cm9sLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCIgdHJhbnNsYXRlPkVSUk9SLkZJRUxEX1JFUVVJUkVEPC9tYXQtZXJyb3I+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgPCEtLSBzdHJpbmcgLS0+XG4gIDxtYXQtZm9ybS1maWVsZCAqbmdTd2l0Y2hDYXNlPVwiJ3N0cmluZydcIiBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsIHwgYXNGbG9hdExhYmVsVHlwZVwiIFtjbGFzc109XCJjbGFzc0xpc3RcIj5cbiAgICA8bWF0LWxhYmVsICpuZ0lmPVwiZmxvYXRMYWJlbCAhPT0gJ25ldmVyJyAmJiAhIXBsYWNlaG9sZGVyXCI+e3twbGFjZWhvbGRlcn19PC9tYXQtbGFiZWw+XG4gICAgPGlucHV0IG1hdElucHV0ICNtYXRJbnB1dFxuICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICBbYXBwQXV0b2ZvY3VzXT1cImF1dG9mb2N1c1wiXG4gICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmbG9hdExhYmVsID09PSAnbmV2ZXInID8gcGxhY2Vob2xkZXIgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICAgICBbdGFiSW5kZXhdPVwidGFiaW5kZXhcIlxuICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0SW5wdXRDb250ZW50KCRldmVudClcIlxuICAgICAgICAgICAoa2V5cHJlc3MpPVwiZmlsdGVyQWxwaGFudW1lcmljYWxJbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgICAgKGtleXVwLmVudGVyKT1cIm9uS2V5dXBFbnRlci5lbWl0KCRldmVudClcIj5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybUNvbnRyb2wuaGFzRXJyb3IoJ3JlcXVpcmVkJylcIiB0cmFuc2xhdGU+RVJST1IuRklFTERfUkVRVUlSRUQ8L21hdC1lcnJvcj5cblxuICAgIDxidXR0b24gbWF0U3VmZml4ICpuZ0lmPVwiY2xlYXJhYmxlXCJcbiAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvbiB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cImZvcm1Db250cm9sLnJlc2V0KClcIlxuICAgICAgICAgICAgW2hpZGRlbl09XCJmb3JtQ29udHJvbC5kaXNhYmxlZCB8fCAoZm9ybUNvbnRyb2x8Zm9ybUdldFZhbHVlfGlzTmlsT3JCbGFuaylcIj5cbiAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG5cbiAgICA8ZGl2IG1hdFN1ZmZpeD5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlttYXRTdWZmaXhdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gIDwhLS0gYXV0by1jb21wbGV0ZSAtLT5cbiAgPG1hdC1hdXRvY29tcGxldGUtZmllbGQgKm5nU3dpdGNoQ2FzZT1cIidlbnRpdHknXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgI2F1dG9jb21wbGV0ZUZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJjbGFzc0xpc3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b2ZvY3VzXT1cImF1dG9mb2N1c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY29uZmlnXT1cImRlZmluaXRpb24uYXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cInRhYmluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsZWFyYWJsZV09XCJjbGVhcmFibGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwib25LZXl1cEVudGVyLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNwbGF5V2l0aF09XCJnZXREaXNwbGF5VmFsdWVGbihkZWZpbml0aW9uKVwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlttYXRQcmVmaXhdXCI+PC9uZy1jb250ZW50PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlttYXRTdWZmaXhdXCI+PC9uZy1jb250ZW50PlxuICA8L21hdC1hdXRvY29tcGxldGUtZmllbGQ+XG5cbiAgPCEtLSBtdWx0aSBhdXRvLWNvbXBsZXRlIC0tPlxuICA8bWF0LWNoaXBzLWZpZWxkICpuZ1N3aXRjaENhc2U9XCInZW50aXRpZXMnXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNsYXNzTGlzdFwiXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICBbY29uZmlnXT1cImRlZmluaXRpb24uYXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICAgICAgW2NoaXBDb2xvcl09XCJjaGlwQ29sb3IgfCBtYXRDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGVhcmFibGVdPVwiY2xlYXJhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc3BsYXlXaXRoXT1cImdldERpc3BsYXlWYWx1ZUZuKGRlZmluaXRpb24pXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdFByZWZpeF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPGRpdiBtYXRTdWZmaXg+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbWF0U3VmZml4XVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9tYXQtY2hpcHMtZmllbGQ+XG5cbiAgPCEtLSBvdGhlciAtLT5cbiAgPGRpdiAqbmdTd2l0Y2hEZWZhdWx0PlxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJ0eXBlXCI+VW5rbm93biB0eXBlIHt7dHlwZX19IGZvciBvcHRpb24ge3tkZWZpbml0aW9uLmtleX19LiBQbGVhc2UgcmVwb3J0IHRoaXMgZXJyb3IuPC9tYXQtZXJyb3I+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cIiF0eXBlXCI+RXJyb3Igb24gb3B0aW9uIGZpZWxkLiBQbGVhc2UgY2hlY2sgY29uc29sZSBsb2cgZm9yIGRldGFpbHMuPC9tYXQtZXJyb3I+XG4gICAgPGRpdiBtYXRTdWZmaXg+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbWF0U3VmZml4XVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbjwvbmctY29udGFpbmVyPlxuIl19
|
|
353
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvZm9ybS9maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9mb3JtL2ZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBcUIsU0FBUyxFQUFjLFlBQVksRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFZLEtBQUssRUFBVSxRQUFRLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNoTSxPQUFPLEVBQTJDLGlCQUFpQixFQUFzQixVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzSCxPQUFPLEVBQUMsYUFBYSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFHcEksT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUNoRixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sVUFBVSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU16QyxNQUFNLElBQUksR0FBRyxHQUFHLEVBQUU7QUFDbEIsQ0FBQyxDQUFDO0FBZUYsTUFBTSxPQUFPLFlBQVk7SUFrRFg7SUFDQTtJQUNBO0lBQ1U7SUFuRGQsaUJBQWlCLEdBQXFCLElBQUksQ0FBQztJQUMzQyxrQkFBa0IsR0FBZSxJQUFJLENBQUM7SUFDdEMsV0FBVyxDQUFzQjtJQUUvQixPQUFPLENBQWE7SUFFcEIsSUFBSSxDQUFnQjtJQUNwQixlQUFlLENBQVM7SUFFbEMsSUFDSSxVQUFVLENBQUMs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QUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUVVLFNBQVM7c0JBQXhCLEtBQUs7dUJBQUMsT0FBTztnQkFHZCxZQUFZO3NCQURYLE1BQU07dUJBQUMsYUFBYTtnQkFPRSxRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVU7Z0JBQ1csaUJBQWlCO3NCQUFoRCxTQUFTO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgSW5qZWN0aW9uVG9rZW4sIEluamVjdG9yLCBJbnB1dCwgT25Jbml0LCBPcHRpb25hbCwgT3V0cHV0LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUdyb3VwRGlyZWN0aXZlLCBOR19WQUxVRV9BQ0NFU1NPUiwgVW50eXBlZEZvcm1Db250cm9sLCBWYWxpZGF0b3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge2lzQmxhbmtTdHJpbmcsIGlzTmlsT3JCbGFuaywgaXNOb3ROaWwsIGlzTm90TmlsQm9vbGVhbiwgaXNOb3ROaWxPckJsYW5rLCBqb2luUHJvcGVydGllc1BhdGgsIHRvQm9vbGVhbn0gZnJvbSAnLi4vZnVuY3Rpb25zJztcbmltcG9ydCB7RGlzcGxheUZuLCBGb3JtRmllbGREZWZpbml0aW9uLCBGb3JtRmllbGRUeXBlLCBBcHBGbG9hdExhYmVsVHlwZX0gZnJvbSAnLi9maWVsZC5tb2RlbCc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtnZXRDb2xvckNvbnRyYXN0fSBmcm9tICcuLi9ncmFwaC9jb2xvcnMudXRpbHMnO1xuaW1wb3J0IHthc0lucHV0RWxlbWVudCwgZmlsdGVyTnVtYmVySW5wdXQsIHNlbGVjdElucHV0Q29udGVudH0gZnJvbSAnLi4vaW5wdXRzJztcbmltcG9ydCB7dG9EYXRlSVNPU3RyaW5nfSBmcm9tICcuLi9kYXRlcyc7XG5pbXBvcnQge1Byb3BlcnR5fSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge1RoZW1lUGFsZXR0ZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQge1ByZWRlZmluZWRDb2xvcnN9IGZyb20gJ0Bpb25pYy9jb3JlJztcbmltcG9ydCB7TWF0QXV0b2NvbXBsZXRlRmllbGR9IGZyb20gJy4uL21hdGVyaWFsL2F1dG9jb21wbGV0ZS9tYXRlcmlhbC5hdXRvY29tcGxldGUnO1xuXG5jb25zdCBub29wID0gKCkgPT4ge1xufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWZvcm0tZmllbGQnLFxuICBzdHlsZVVybHM6IFsnLi9maWVsZC5jb21wb25lbnQuc2NzcyddLFxuICB0ZW1wbGF0ZVVybDogJy4vZmllbGQuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEFwcEZvcm1GaWVsZCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQXBwRm9ybUZpZWxkIGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG5cbiAgcHJpdmF0ZSBfb25DaGFuZ2VDYWxsYmFjazogKF86IGFueSkgPT4gdm9pZCA9IG5vb3A7XG4gIHByaXZhdGUgX29uVG91Y2hlZENhbGxiYWNrOiAoKSA9PiB2b2lkID0gbm9vcDtcbiAgcHJpdmF0ZSBfZGVmaW5pdGlvbjogRm9ybUZpZWxkRGVmaW5pdGlvbjtcblxuICBwcm90ZWN0ZWQgX3ZhbHVlczogUHJvcGVydHlbXTtcblxuICBwcm90ZWN0ZWQgdHlwZTogRm9ybUZpZWxkVHlwZTtcbiAgcHJvdGVjdGVkIG51bWJlcklucHV0U3RlcDogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBkZWZpbml0aW9uKHZhbHVlOiBGb3JtRmllbGREZWZpbml0aW9uKSB7XG4gICAgaWYgKCF2YWx1ZSB8fCB0aGlzLl9kZWZpbml0aW9uID09PSB2YWx1ZSkgcmV0dXJuOyAvLyBTa2lwIGlzIHNhbWUgb3IgbmlsXG4gICAgdGhpcy5fZGVmaW5pdGlvbiA9IHZhbHVlO1xuICAgIHRoaXMuX29uRGVmaW5pdGlvbkNoYW5nZWQodmFsdWUpO1xuICB9XG5cbiAgZ2V0IGRlZmluaXRpb24oKTogRm9ybUZpZWxkRGVmaW5pdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX2RlZmluaXRpb247XG4gIH1cblxuICBASW5wdXQoKSByZXF1aXJlZDogYm9vbGVhbjtcbiAgQElucHV0KCkgcmVhZG9ubHkgPSBmYWxzZTtcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGZvcm1Db250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gIEBJbnB1dCgpIGZvcm1Db250cm9sTmFtZTogc3RyaW5nO1xuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xuICBASW5wdXQoKSBjb21wYWN0ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGZsb2F0TGFiZWw6IEFwcEZsb2F0TGFiZWxUeXBlID0gJ2F1dG8nO1xuICBASW5wdXQoKSB0YWJpbmRleDogbnVtYmVyO1xuICBASW5wdXQoKSBhdXRvZm9jdXM6IGJvb2xlYW47XG5cbiAgQElucHV0KCkgY2xlYXJhYmxlOiBib29sZWFuO1xuICBASW5wdXQoKSBjaGlwQ29sb3I6IFRoZW1lUGFsZXR0ZSB8IFByZWRlZmluZWRDb2xvcnMgPSBudWxsO1xuICBASW5wdXQoKSBkZWJ1ZyA9IGZhbHNlO1xuXG4gIEBJbnB1dCgnY2xhc3MnKSBjbGFzc0xpc3Q6IHN0cmluZztcblxuICBAT3V0cHV0KCdrZXl1cC5lbnRlcicpXG4gIG9uS2V5dXBFbnRlciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmZvcm1Db250cm9sLnZhbHVlO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgnbWF0SW5wdXQnKSBtYXRJbnB1dDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnYXV0b2NvbXBsZXRlRmllbGQnKSBhdXRvY29tcGxldGVGaWVsZDogTWF0QXV0b2NvbXBsZXRlRmllbGQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBmb3JtR3JvdXBEaXI6IEZvcm1Hcm91cERpcmVjdGl2ZVxuICApIHtcblxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG5cbiAgICB0aGlzLmNoZWNrQW5kUmVzb2x2ZUZvcm1Db250cm9sKCk7XG5cbiAgICBpZiAoIXRoaXMuX2RlZmluaXRpb24pIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBtYW5kYXRvcnkgYXR0cmlidXRlIFxcJ2RlZmluaXRpb25cXCcgaW4gPGFwcC1mb3JtLWZpZWxkPi4nKTtcbiAgICBpZiAodHlwZW9mIHRoaXMuX2RlZmluaXRpb24gIT09ICdvYmplY3QnKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYXR0cmlidXRlIFxcJ2RlZmluaXRpb25cXCcgaW4gPGFwcC1mb3JtLWZpZWxkPi4gU2hvdWxkIGJlIGFuIG9iamVjdC4nKTtcbiAgICB0aGlzLl9vbkRlZmluaXRpb25DaGFuZ2VkKHRoaXMuX2RlZmluaXRpb24sIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG5cbiAgfVxuXG4gIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoKHRoaXMudHlwZSA9PT0gJ2ludGVnZXInIHx8IHRoaXMudHlwZSA9PT0gJ2RvdWJsZScpICYmIE51bWJlci5pc05hTihvYmopKSB7XG4gICAgICAvLyBERUJVR1xuICAgICAgLy9pZiAodGhpcy5kZWJ1ZykgY29uc29sZS5kZWJ1ZyhcIldBUk46IHRyeWluZyB0byBzZXQgTmFOIHZhbHVlLCBpbiBhbiA8YXBwLWZvcm0tZmllbGQ+ISBSZXNldCB0byBudWxsXCIpO1xuXG4gICAgICBvYmogPSBudWxsO1xuICAgIH1cbiAgICBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdib29sZWFuJyAmJiB0eXBlb2Ygb2JqID09PSAnc3RyaW5nJykge1xuICAgICAgb2JqID0gKG9iaiAhPT0gJ2ZhbHNlJyk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ2RhdGUnKSB7XG4gICAgICBvYmogPSB0b0RhdGVJU09TdHJpbmcob2JqKTtcbiAgICB9XG4gICAgZWxzZSBpZiAodGhpcy50eXBlID09PSAnZW51bXMnICYmIGlzTm90TmlsKG9iaikpIHtcbiAgICAgIGxldCBjaGFuZ2VzID0gZmFsc2U7XG4gICAgICBpZiAodHlwZW9mIG9iaiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgb2JqID0gb2JqLnRyaW0oKS5zcGxpdCgvW3wsXSsvKTtcbiAgICAgICAgY2hhbmdlcyA9IHRydWU7XG4gICAgICB9XG4gICAgICBjb25zdCB1cGRhdGVkQXJyYXkgPSAob2JqIHx8IFtdKS5tYXAoaXRlbSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBjaGFuZ2VzID0gdHJ1ZTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWVzLmZpbmQodiA9PiB2LmtleSA9PT0gaXRlbS50cmltKCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgfSkuZmlsdGVyKGlzTm90TmlsKTtcbiAgICAgIGlmIChjaGFuZ2VzKSB7XG4gICAgICAgIG9iaiA9IHVwZGF0ZWRBcnJheTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAodGhpcy50eXBlID09PSAnZW50aXR5JyAmJiBpc05pbE9yQmxhbmsob2JqKSkge1xuICAgICAgb2JqID0gbnVsbDtcbiAgICB9XG4gICAgZWxzZSBpZiAodGhpcy50eXBlID09PSAnZW50aXRpZXMnICYmIGlzTm90TmlsKG9iaikpIHtcbiAgICAgIGxldCBjaGFuZ2VzID0gZmFsc2U7XG4gICAgICBpZiAodHlwZW9mIG9iaiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgb2JqID0gb2JqLnRyaW0oKTtcbiAgICAgICAgaWYgKG9iai5zdGFydHNXaXRoKCdbJykgJiYgb2JqLmVuZHNXaXRoKCddJykpIHtcbiAgICAgICAgICBvYmogPSBKU09OLnBhcnNlKG9iaik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgb2JqID0gb2JqLnNwbGl0KC9bfCxdKy8pO1xuICAgICAgICB9XG4gICAgICAgIGNoYW5nZXMgPSB0cnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgdXBkYXRlZEFycmF5ID0gKG9iaiB8fCBbXSkubWFwKGl0ZW0gPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnICYmIGl0ZW0uc3RhcnRzV2l0aCgneycpICYmIGl0ZW0uZW5kc1dpdGgoJ30nKSkge1xuICAgICAgICAgIGl0ZW0gPSBKU09OLnBhcnNlKGl0ZW0pO1xuICAgICAgICAgIGNoYW5nZXMgPSB0cnVlO1xuICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgfSkuZmlsdGVyKGlzTm90TmlsT3JCbGFuayk7XG4gICAgICBpZiAoY2hhbmdlcykge1xuICAgICAgICBvYmogPSB1cGRhdGVkQXJyYXk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChvYmogIT09IHRoaXMuZm9ybUNvbnRyb2wudmFsdWUpIHtcbiAgICAgIC8vIERFQlVHXG4gICAgICAvL2lmICh0aGlzLmRlYnVnKSBjb25zb2xlLmRlYnVnKFwiU2V0IDxhcHAtZm9ybS1maWVsZD4gdmFsdWU6IFwiLCBvYmopO1xuXG4gICAgICB0aGlzLmZvcm1Db250cm9sLnBhdGNoVmFsdWUob2JqLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgICAgdGhpcy5fb25DaGFuZ2VDYWxsYmFjayhvYmopO1xuICAgIH1cblxuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vbkNoYW5nZUNhbGxiYWNrID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fb25Ub3VjaGVkQ2FsbGJhY2sgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkID09PSBpc0Rpc2FibGVkKSByZXR1cm47XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG1hcmtBc1RvdWNoZWQoKSB7XG4gICAgaWYgKHRoaXMuZm9ybUNvbnRyb2wudG91Y2hlZCkge1xuICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIHRoaXMuX29uVG91Y2hlZENhbGxiYWNrKCk7XG4gICAgfVxuICB9XG5cbiAgZmlsdGVyQWxwaGFudW1lcmljYWxJbnB1dChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmIChldmVudC5rZXlDb2RlID09PSAxMyAvKj1FbnRlciovICYmIHRoaXMub25LZXl1cEVudGVyLm9ic2VydmVycy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLm9uS2V5dXBFbnRlci5lbWl0KGV2ZW50KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gQWRkIGZlYXR1cmVzIChlLmcuIGNoZWNrIGFnYWluc3QgYSBwYXR0ZXJuKVxuICB9XG5cbiAgZm9jdXMoKSB7XG4gICAgaWYgKHRoaXMubWF0SW5wdXQpIHRoaXMubWF0SW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIGVsc2UgaWYgKHRoaXMuYXV0b2NvbXBsZXRlRmllbGQpIHRoaXMuYXV0b2NvbXBsZXRlRmllbGQuZm9jdXMoKTtcbiAgfVxuXG4gIGZpbHRlck51bWJlcklucHV0ID0gZmlsdGVyTnVtYmVySW5wdXQ7XG4gIHNlbGVjdElucHV0Q29udGVudCA9IHNlbGVjdElucHV0Q29udGVudDtcblxuICBnZXREaXNwbGF5VmFsdWVGbihkZWZpbml0aW9uOiBGb3JtRmllbGREZWZpbml0aW9uKTogRGlzcGxheUZuIHtcbiAgICBpZiAoZGVmaW5pdGlvbi5hdXRvY29tcGxldGUgJiYgZGVmaW5pdGlvbi5hdXRvY29tcGxldGUuZGlzcGxheVdpdGgpIHtcbiAgICAgIHJldHVybiAob2JqOiBhbnkpID0+IGRlZmluaXRpb24uYXV0b2NvbXBsZXRlLmRpc3BsYXlXaXRoKG9iaik7XG4gICAgfVxuICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBkZWZpbml0aW9uLmF1dG9jb21wbGV0ZSAmJiBkZWZpbml0aW9uLmF1dG9jb21wbGV0ZS5hdHRyaWJ1dGVzIHx8IFsnbGFiZWwnLCAnbmFtZSddO1xuICAgIHJldHVybiAob2JqOiBhbnkpID0+IG9iaiAmJiBqb2luUHJvcGVydGllc1BhdGgob2JqLCBhdHRyaWJ1dGVzKTtcbiAgfVxuXG4gIGdldENvbG9yQ29udHJhc3QoY29sb3I6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGlzTm90TmlsT3JCbGFuayhjb2xvcikgPyBnZXRDb2xvckNvbnRyYXN0KGNvbG9yLCB0cnVlKSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGxvdyB0byByZWxvYWQgdmFsdWVzLCBpZiBub3QgZGV0ZWN0ZWRcbiAgICpcbiAgICogQHBhcmFtIHZhbHVlXG4gICAqL1xuICByZWxvYWRJdGVtcyh2YWx1ZT86IGFueSkge1xuICAgIGlmICghdGhpcy5fZGVmaW5pdGlvbikgcmV0dXJuO1xuXG4gICAgdGhpcy5fb25EZWZpbml0aW9uQ2hhbmdlZCh0aGlzLl9kZWZpbml0aW9uKTtcblxuICAgIGlmICh0aGlzLmF1dG9jb21wbGV0ZUZpZWxkKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuYXV0b2NvbXBsZXRlRmllbGQ/LnJlbG9hZEl0ZW1zKHZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgLyogLS0gcHJvdGVjdGVkIG1ldGhvZCAtLSAqL1xuXG4gIHByb3RlY3RlZCBjb21wdXRlTnVtYmVySW5wdXRTdGVwKGRlZmluaXRpb246IEZvcm1GaWVsZERlZmluaXRpb24pOiBzdHJpbmcge1xuXG4gICAgaWYgKGRlZmluaXRpb24ubWF4aW11bU51bWJlckRlY2ltYWxzID4gMCkge1xuICAgICAgbGV0IHN0ZXAgPSAnMC4nO1xuICAgICAgaWYgKGRlZmluaXRpb24ubWF4aW11bU51bWJlckRlY2ltYWxzID4gMSkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRlZmluaXRpb24ubWF4aW11bU51bWJlckRlY2ltYWxzIC0gMTsgaSsrKSB7XG4gICAgICAgICAgc3RlcCArPSAnMCc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHN0ZXAgKz0gJzEnO1xuICAgICAgcmV0dXJuIHN0ZXA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnMSc7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGNvbXB1dGVWYWx1ZXNGcm9tVG9rZW4odG9rZW46IEluamVjdGlvblRva2VuPChzdHJpbmd8UHJvcGVydHkpW10+KTogYW55W10ge1xuICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuaW5qZWN0b3IuZ2V0KHRva2VuKTtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZXMpID8gdGhpcy5jb21wdXRlVmFsdWVzKHZhbHVlcykgOiBbXTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjb21wdXRlVmFsdWVzKHZhbHVlczogKHN0cmluZ3xQcm9wZXJ0eSlbXSk6IFByb3BlcnR5W10ge1xuICAgIGlmICghdmFsdWVzKSByZXR1cm4gW107XG4gICAgcmV0dXJuIHZhbHVlcy5tYXAodiA9PiAgKHR5cGVvZiB2ID09PSAnc3RyaW5nJylcbiAgICAgID8gPFByb3BlcnR5PntrZXk6IHYsIHZhbHVlOiB2fVxuICAgICAgOiA8UHJvcGVydHk+e2tleTogdi5rZXksIHZhbHVlOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KHYudmFsdWUpfVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY2hlY2tBbmRSZXNvbHZlRm9ybUNvbnRyb2woKSB7XG4gICAgaWYgKHRoaXMuZm9ybUNvbnRyb2wpIHJldHVybjsgLy8gT0ssIHRoZXJlIGlzIGEgY29udHJvbFxuXG4gICAgaWYgKHRoaXMuZm9ybUdyb3VwRGlyKSB7XG4gICAgICAvLyBUcnkgdG8gZmluZCB1c2luZyBkZWZpbml0aW9uLmtleSwgYXMgZm9ybUNvbnRyb2xOYW1lXG4gICAgICBpZiAoIXRoaXMuZm9ybUNvbnRyb2xOYW1lICYmIHRoaXMuX2RlZmluaXRpb24ua2V5KSB7XG4gICAgICAgIHRoaXMuZm9ybUNvbnRyb2xOYW1lID0gdGhpcy5fZGVmaW5pdGlvbi5rZXk7XG4gICAgICB9XG4gICAgICBjb25zdCBmb3JtQ29udHJvbE5hbWUgPSAodGhpcy5mb3JtR3JvdXBEaXIuZGlyZWN0aXZlcyB8fCBbXSkuZmluZChkID0+IHRoaXMuZm9ybUNvbnRyb2xOYW1lICYmIGQubmFtZSA9PT0gdGhpcy5mb3JtQ29udHJvbE5hbWUpO1xuICAgICAgdGhpcy5mb3JtQ29udHJvbCA9IGZvcm1Db250cm9sTmFtZSAmJiBmb3JtQ29udHJvbE5hbWUuY29udHJvbDtcbiAgICAgIGlmICghdGhpcy5mb3JtQ29udHJvbCkge1xuICAgICAgICB0aGlzLmZvcm1Db250cm9sID0gdGhpcy5mb3JtR3JvdXBEaXIuZm9ybS5nZXQodGhpcy5mb3JtQ29udHJvbE5hbWUpIGFzIFVudHlwZWRGb3JtQ29udHJvbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZm9ybUNvbnRyb2wpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBhdHRyaWJ1dGUgXFwnZm9ybUNvbnRyb2xcXCcgb3IgXFwnZm9ybUNvbnRyb2xOYW1lXFwnIGluIDxhcHAtZm9ybS1maWVsZD4gY29tcG9uZW50LicpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBfb25EZWZpbml0aW9uQ2hhbmdlZChkZWZpbml0aW9uOiBGb3JtRmllbGREZWZpbml0aW9uLCBvcHRzPzoge2VtaXRFdmVudD86IGJvb2xlYW59KSB7XG5cbiAgICB0aGlzLnR5cGUgPSBkZWZpbml0aW9uLnR5cGU7XG4gICAgaWYgKCF0aGlzLnR5cGUpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBhdHRyaWJ1dGUgXFwnZGVmaW5pdGlvblxcJyBpbiA8YXBwLWZvcm0tZmllbGQ+LiBNaXNzaW5nIHR5cGUgIScpO1xuXG4gICAgdGhpcy5wbGFjZWhvbGRlciA9IHRoaXMucGxhY2Vob2xkZXIgfHwgKHRoaXMuX2RlZmluaXRpb24ubGFiZWwgJiYgdGhpcy50cmFuc2xhdGUuaW5zdGFudCh0aGlzLl9kZWZpbml0aW9uLmxhYmVsKSk7XG4gICAgdGhpcy5yZXF1aXJlZCA9IGlzTm90TmlsQm9vbGVhbih0aGlzLnJlcXVpcmVkKSA/IHRoaXMucmVxdWlyZWQgOiAodGhpcy5fZGVmaW5pdGlvbi5yZXF1aXJlZCB8fCB0aGlzLmZvcm1Db250cm9sPy52YWxpZGF0b3IgPT09IFZhbGlkYXRvcnMucmVxdWlyZWQgfHwgaXNCbGFua1N0cmluZyh0aGlzLnJlcXVpcmVkKSk7XG4gICAgdGhpcy5kaXNhYmxlZCA9IHRvQm9vbGVhbih0aGlzLmRpc2FibGVkLCB0b0Jvb2xlYW4odGhpcy5fZGVmaW5pdGlvbi5kaXNhYmxlZCwgZmFsc2UpKTtcblxuICAgIC8vIGRvdWJsZVxuICAgIGlmICh0aGlzLnR5cGUgPT09ICdkb3VibGUnKSB7XG4gICAgICB0aGlzLm51bWJlcklucHV0U3RlcCA9IHRoaXMuY29tcHV0ZU51bWJlcklucHV0U3RlcChkZWZpbml0aW9uKTtcbiAgICB9XG5cbiAgICAvLyBlbnVtIChvciBlbnVtcylcbiAgICBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdlbnVtJyB8fCB0aGlzLnR5cGUgPT09ICdlbnVtcycpIHtcbiAgICAgIC8vIFJlc29sdmUgZW51bSB2YWx1ZXNcbiAgICAgIGlmIChkZWZpbml0aW9uLnZhbHVlcyBpbnN0YW5jZW9mIEluamVjdGlvblRva2VuKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlcyA9IHRoaXMuY29tcHV0ZVZhbHVlc0Zyb21Ub2tlbihkZWZpbml0aW9uLnZhbHVlcyk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgdGhpcy5fdmFsdWVzID0gdGhpcy5jb21wdXRlVmFsdWVzKGRlZmluaXRpb24udmFsdWVzIGFzIChzdHJpbmdbXXxQcm9wZXJ0eVtdKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmVwYWludFxuICAgIGlmICghb3B0cyB8fCBvcHRzLmVtaXRFdmVudCAhPT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLy8gUmVjb21wdXRlIHRhYiBpbmRleCwgYmVjYXVzZSBpZiB0eXBlIGNoYW5nZWQsIHRoZW4gbWF0SW5wdXQgY2FuIGhhdmUgY2hhbmdlZFxuICAgIHRoaXMudXBkYXRlVGFiSW5kZXgoMTAwKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVUYWJJbmRleCh0aW1lb3V0PzogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMudGFiaW5kZXggJiYgdGhpcy50YWJpbmRleCAhPT0gLTEpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gYXNJbnB1dEVsZW1lbnQodGhpcy5tYXRJbnB1dCk7XG4gICAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgICAgZWxlbWVudC50YWJJbmRleCA9IHRoaXMudGFiaW5kZXg7XG4gICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLmF1dG9jb21wbGV0ZUZpZWxkKSB7XG4gICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVGaWVsZC50YWJpbmRleCA9IHRoaXMudGFiaW5kZXg7XG4gICAgICAgIH1cbiAgICAgIH0sIHRpbWVvdXQgfHwgMCk7XG4gICAgfVxuICB9XG59XG4iLCI8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJ0eXBlXCI+XG5cbiAgPCEtLSBpbnRlZ2VyIC0tPlxuICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIidpbnRlZ2VyJ1wiIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWwgfCBhc0Zsb2F0TGFiZWxUeXBlXCIgW2NsYXNzXT1cImNsYXNzTGlzdFwiPlxuICAgIDxtYXQtbGFiZWwgKm5nSWY9XCJmbG9hdExhYmVsICE9PSAnbmV2ZXInICYmICEhcGxhY2Vob2xkZXJcIj57e3BsYWNlaG9sZGVyfX08L21hdC1sYWJlbD5cbiAgICA8aW5wdXQgbWF0SW5wdXQgI21hdElucHV0XG4gICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICAgICBbbWluXT1cImRlZmluaXRpb24ubWluVmFsdWVcIlxuICAgICAgICAgICBbbWF4XT1cImRlZmluaXRpb24ubWF4VmFsdWVcIlxuICAgICAgICAgICBwYXR0ZXJuPVwiLT9bMC05XSpcIlxuICAgICAgICAgICBzdGVwPVwiMVwiXG4gICAgICAgICAgIFthcHBBdXRvZm9jdXNdPVwiYXV0b2ZvY3VzXCJcbiAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImZsb2F0TGFiZWwgPT09ICduZXZlcicgPyBwbGFjZWhvbGRlciA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJvbktleXVwRW50ZXIuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgKGtleXByZXNzKT1cImZpbHRlck51bWJlcklucHV0KCRldmVudCwgZmFsc2UpXCJcbiAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgW3RhYkluZGV4XT1cInRhYmluZGV4XCJcbiAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdElucHV0Q29udGVudCgkZXZlbnQpXCI+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm1Db250cm9sLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCIgdHJhbnNsYXRlPkVSUk9SLkZJRUxEX1JFUVVJUkVEPC9tYXQtZXJyb3I+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm1Db250cm9sLmhhc0Vycm9yKCdtaW4nKVwiPlxuICAgICAge3soY29tcGFjdCA/ICdFUlJPUi5GSUVMRF9NSU5fQ09NUEFDVCcgOiAnRVJST1IuRklFTERfTUlOJykgfCB0cmFuc2xhdGU6Zm9ybUNvbnRyb2wuZXJyb3JzWydtaW4nXSB9fTwvbWF0LWVycm9yPlxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtQ29udHJvbC5oYXNFcnJvcignbWF4JylcIj5cbiAgICAgIHt7KGNvbXBhY3QgPyAnRVJST1IuRklFTERfTUFYX0NPTVBBQ1QnIDogJ0VSUk9SLkZJRUxEX01BWCcpIHwgdHJhbnNsYXRlOmZvcm1Db250cm9sLmVycm9yc1snbWF4J10gfX08L21hdC1lcnJvcj5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybUNvbnRyb2wuaGFzRXJyb3IoJ3BhdHRlcm4nKVwiPlxuICAgICAge3snRVJST1IuRklFTERfTk9UX1ZBTElEX0lOVEVHRVInfCB0cmFuc2xhdGUgfX08L21hdC1lcnJvcj5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybUNvbnRyb2wuaGFzRXJyb3IoJ2ludGVnZXInKVwiPlxuICAgICAge3snRVJST1IuRklFTERfTk9UX1ZBTElEX0lOVEVHRVInfCB0cmFuc2xhdGUgfX08L21hdC1lcnJvcj5cblxuICAgIDxidXR0b24gbWF0U3VmZml4ICpuZ0lmPVwiY2xlYXJhYmxlXCJcbiAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvbiB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cImZvcm1Db250cm9sLnJlc2V0KClcIlxuICAgICAgICAgICAgW2hpZGRlbl09XCJmb3JtQ29udHJvbC5kaXNhYmxlZCB8fCAoZm9ybUNvbnRyb2x8Zm9ybUdldFZhbHVlfGlzTmlsT3JCbGFuaylcIj5cbiAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG5cbiAgICA8ZGl2IG1hdFN1ZmZpeD5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlttYXRTdWZmaXhdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gIDwhLS0gZG91YmxlIC0tPlxuICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIidkb3VibGUnXCIgW2Zsb2F0TGFiZWxdPVwiZmxvYXRMYWJlbCB8IGFzRmxvYXRMYWJlbFR5cGVcIiBbY2xhc3NdPVwiY2xhc3NMaXN0XCI+XG4gICAgPG1hdC1sYWJlbCAqbmdJZj1cImZsb2F0TGFiZWwgIT09ICduZXZlcicgJiYgISFwbGFjZWhvbGRlclwiPnt7cGxhY2Vob2xkZXJ9fTwvbWF0LWxhYmVsPlxuXG4gICAgPGlucHV0IG1hdElucHV0ICNtYXRJbnB1dFxuICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgZGVjaW1hbD1cInRydWVcIlxuICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICBbbWluXT1cImRlZmluaXRpb24ubWluVmFsdWVcIlxuICAgICAgICAgICBbbWF4XT1cImRlZmluaXRpb24ubWF4VmFsdWVcIlxuICAgICAgICAgICBbYXBwQXV0b2ZvY3VzXT1cImF1dG9mb2N1c1wiXG4gICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmbG9hdExhYmVsID09PSAnbmV2ZXInID8gcGxhY2Vob2xkZXIgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICBbc3RlcF09XCJudW1iZXJJbnB1dFN0ZXBcIlxuICAgICAgICAgICAoa2V5cHJlc3MpPVwiZmlsdGVyTnVtYmVySW5wdXQoJGV2ZW50LCB0cnVlKVwiXG4gICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgICAgIFt0YWJJbmRleF09XCJ0YWJpbmRleFwiXG4gICAgICAgICAgIChjbGljayk9XCJzZWxlY3RJbnB1dENvbnRlbnQoJGV2ZW50KVwiPlxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtQ29udHJvbC5oYXNFcnJvcigncmVxdWlyZWQnKVwiIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9SRVFVSVJFRDwvbWF0LWVycm9yPlxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtQ29udHJvbC5oYXNFcnJvcignZGVjaW1hbCcpXCIgdHJhbnNsYXRlPkVSUk9SLkZJRUxEX05PVF9WQUxJRF9ERUNJTUFMPC9tYXQtZXJyb3I+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm1Db250cm9sLmhhc0Vycm9yKCdtaW4nKVwiPlxuICAgICAge3sgKGNvbXBhY3QgPyAnRVJST1IuRklFTERfTUlOX0NPTVBBQ1QnIDogJ0VSUk9SLkZJRUxEX01JTicpfCB0cmFuc2xhdGU6Zm9ybUNvbnRyb2wuZXJyb3JzWydtaW4nXSB9fTwvbWF0LWVycm9yPlxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtQ29udHJvbC5oYXNFcnJvcignbWF4JylcIj5cbiAgICAgIHt7KGNvbXBhY3QgPyAnRVJST1IuRklFTERfTUFYX0NPTVBBQ1QnIDogJ0VSUk9SLkZJRUxEX01BWCcpIHwgdHJhbnNsYXRlOmZvcm1Db250cm9sLmVycm9yc1snbWF4J10gfX08L21hdC1lcnJvcj5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybUNvbnRyb2wuaGFzRXJyb3IoJ21heERlY2ltYWxzJylcIj5cbiAgICAgIHt7IChjb21wYWN0ID8gJ0VSUk9SLkZJRUxEX01BWElNVU1fREVDSU1BTFNfQ09NUEFDVCcgOiAnRVJST1IuRklFTERfTUFYSU1VTV9ERUNJTUFMUycpfCB0cmFuc2xhdGU6e21heERlY2ltYWxzOlxuICAgICAgZGVmaW5pdGlvbi5tYXhpbXVtTnVtYmVyRGVjaW1hbHN9IH19PC9tYXQtZXJyb3I+XG5cbiAgICA8YnV0dG9uIG1hdFN1ZmZpeCAqbmdJZj1cImNsZWFyYWJsZVwiXG4gICAgICAgICAgICBtYXQtaWNvbi1idXR0b24gdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJmb3JtQ29udHJvbC5yZXNldCgpXCJcbiAgICAgICAgICAgIFtoaWRkZW5dPVwiZm9ybUNvbnRyb2wuZGlzYWJsZWQgfHwgKGZvcm1Db250cm9sfGZvcm1HZXRWYWx1ZXxpc05pbE9yQmxhbmspXCI+XG4gICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICAgIDxkaXYgbWF0U3VmZml4PlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdFN1ZmZpeF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgPCEtLSBib29sZWFuIC0tPlxuICA8bWF0LWJvb2xlYW4tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIidib29sZWFuJ1wiICNtYXRJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNsYXNzTGlzdFwiXG4gICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICAgICAgIFtjb21wYWN0XT1cImNvbXBhY3RcIlxuICAgICAgICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cInRhYmluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiPlxuICAgIDxkaXYgbWF0U3VmZml4PlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdFN1ZmZpeF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvbWF0LWJvb2xlYW4tZmllbGQ+XG5cbiAgPCEtLSBkYXRlIC0tPlxuICA8bWF0LWRhdGUtZmllbGQgKm5nU3dpdGNoQ2FzZT1cIidkYXRlJ1wiICNtYXRJbnB1dFxuICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNsYXNzTGlzdFwiXG4gICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbXBhY3QgPyAoJ0NPTU1PTi5EQVRFX1BMQUNFSE9MREVSJ3x0cmFuc2xhdGUpOiBwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsXCJcbiAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgICBbY2xlYXJhYmxlXT1cImNsZWFyYWJsZVwiXG4gICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgICAgW2NvbXBhY3RdPVwiY29tcGFjdFwiXG4gICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwidGFiaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgW2F1dG9mb2N1c109XCJhdXRvZm9jdXNcIj5cbiAgICA8ZGl2IG1hdFN1ZmZpeD5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlttYXRTdWZmaXhdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L21hdC1kYXRlLWZpZWxkPlxuXG4gIDwhLS0gZGF0ZSB0aW1lIC0tPlxuICA8bWF0LWRhdGUtdGltZS1maWVsZCAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGVUaW1lJ1wiICNtYXRJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY2xhc3NMaXN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbXBhY3QgPyAoJ0NPTU1PTi5EQVRFX1RJTUVfUExBQ0VIT0xERVInfHRyYW5zbGF0ZSk6IHBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2Zsb2F0TGFiZWxdPVwiZmxvYXRMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtjbGVhcmFibGVdPVwiY2xlYXJhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2NvbXBhY3RdPVwiY29tcGFjdFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCJ0YWJpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFthdXRvZm9jdXNdPVwiYXV0b2ZvY3VzXCI+XG4gICAgPGRpdiBtYXRTdWZmaXg+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbWF0U3VmZml4XVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9tYXQtZGF0ZS10aW1lLWZpZWxkPlxuXG4gIDwhLS0gZW51bSAtLT5cbiAgPG1hdC1mb3JtLWZpZWxkICpuZ1N3aXRjaENhc2U9XCInZW51bSdcIiBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsIHwgYXNGbG9hdExhYmVsVHlwZVwiIFtjbGFzc109XCJjbGFzc0xpc3RcIj5cbiAgICA8bWF0LWxhYmVsICpuZ0lmPVwiZmxvYXRMYWJlbCAhPT0gJ25ldmVyJyAmJiAhIXBsYWNlaG9sZGVyXCI+e3twbGFjZWhvbGRlcn19PC9tYXQtbGFiZWw+XG4gICAgPG1hdC1zZWxlY3QgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmxvYXRMYWJlbCA9PT0gJ25ldmVyJyA/IHBsYWNlaG9sZGVyIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCJ0YWJpbmRleFwiXG4gICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cIm9uS2V5dXBFbnRlci5lbWl0KCRldmVudClcIj5cbiAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIF92YWx1ZXNcIiBbdmFsdWVdPVwiaXRlbS5rZXlcIj57eyBpdGVtLnZhbHVlIHwgdHJhbnNsYXRlIH19PC9tYXQtb3B0aW9uPlxuICAgIDwvbWF0LXNlbGVjdD5cblxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtQ29udHJvbC5oYXNFcnJvcigncmVxdWlyZWQnKVwiIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9SRVFVSVJFRDwvbWF0LWVycm9yPlxuXG4gICAgPGRpdiBtYXRTdWZmaXg+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbWF0U3VmZml4XVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9tYXQtZm9ybS1maWVsZD5cblxuICA8IS0tIG11bHRpIGVudW0gLS0+XG4gIDxtYXQtY2hpcHMtZmllbGQgKm5nU3dpdGNoQ2FzZT1cIidlbnVtcydcIlxuICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJjbGFzc0xpc3RcIlxuICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgW2Zsb2F0TGFiZWxdPVwiZmxvYXRMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICAgICAgICAgICAgICAgICBbY2xlYXJhYmxlXT1cImNsZWFyYWJsZVwiXG4gICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cIl92YWx1ZXNcIlxuICAgICAgICAgICAgICAgICAgIFtkaXNwbGF5QXR0cmlidXRlc109XCJkZWZpbml0aW9uLmF1dG9jb21wbGV0ZT8uYXR0cmlidXRlcyB8fCBbJ2tleScsICd2YWx1ZSddXCJcbiAgICAgICAgICAgICAgICAgICBbY29uZmlnXT1cImRlZmluaXRpb24uYXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICAgICAgICAgICBbc2hvd0FsbE9uRm9jdXNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICAgICBbY2hpcENvbG9yXT1cImNoaXBDb2xvciB8IG1hdENvbG9yXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdFByZWZpeF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPGRpdiBtYXRTdWZmaXg+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbWF0U3VmZml4XVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9tYXQtY2hpcHMtZmllbGQ+XG5cbiAgPCEtLSBjb2xvciAtLT5cbiAgPG1hdC1mb3JtLWZpZWxkICpuZ1N3aXRjaENhc2U9XCInY29sb3InXCIgW2Zsb2F0TGFiZWxdPVwiZmxvYXRMYWJlbCB8IGFzRmxvYXRMYWJlbFR5cGVcIiBbY2xhc3NdPVwiY2xhc3NMaXN0XCI+XG5cbiAgICA8aW9uLWljb24gbWFyZ2luLXJpZ2h0IG5hbWU9XCJjb2xvci1maWxsXCIgbWF0UHJlZml4PjwvaW9uLWljb24+XG5cbiAgICA8aW5wdXQgbWF0SW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgW2FwcEF1dG9mb2N1c109XCJhdXRvZm9jdXNcIlxuICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIlxuICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiZ2V0Q29sb3JDb250cmFzdChmb3JtQ29udHJvbC52YWx1ZSlcIlxuICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJmb3JtQ29udHJvbC52YWx1ZVwiXG4gICAgICAgICAgIFtjb2xvclBpY2tlcl09XCJmb3JtQ29udHJvbC52YWx1ZVwiXG4gICAgICAgICAgIChjb2xvclBpY2tlckNoYW5nZSk9XCJ3cml0ZVZhbHVlKCRldmVudClcIlxuICAgICAgICAgICBbY3BTYXZlQ2xpY2tPdXRzaWRlXT1cInRydWVcIlxuICAgICAgICAgICBjcFBvc2l0aW9uPVwidG9wXCJcbiAgICAgICAgICAgY3BPdXRwdXRGb3JtYXQ9XCJoZXhcIlxuICAgICAgICAgICBbY3BPS0J1dHRvbl09XCJmYWxzZVwiXG4gICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiLz5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybUNvbnRyb2wuaGFzRXJyb3IoJ3JlcXVpcmVkJylcIiB0cmFuc2xhdGU+RVJST1IuRklFTERfUkVRVUlSRUQ8L21hdC1lcnJvcj5cbiAgPC9tYXQtZm9ybS1maWVsZD5cblxuICA8IS0tIHN0cmluZyAtLT5cbiAgPG1hdC1mb3JtLWZpZWxkICpuZ1N3aXRjaENhc2U9XCInc3RyaW5nJ1wiIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWwgfCBhc0Zsb2F0TGFiZWxUeXBlXCIgW2NsYXNzXT1cImNsYXNzTGlzdFwiPlxuICAgIDxtYXQtbGFiZWwgKm5nSWY9XCJmbG9hdExhYmVsICE9PSAnbmV2ZXInICYmICEhcGxhY2Vob2xkZXJcIj57e3BsYWNlaG9sZGVyfX08L21hdC1sYWJlbD5cbiAgICA8aW5wdXQgbWF0SW5wdXQgI21hdElucHV0XG4gICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgIFthcHBBdXRvZm9jdXNdPVwiYXV0b2ZvY3VzXCJcbiAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImZsb2F0TGFiZWwgPT09ICduZXZlcicgPyBwbGFjZWhvbGRlciA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgICAgIFt0YWJJbmRleF09XCJ0YWJpbmRleFwiXG4gICAgICAgICAgIChjbGljayk9XCJzZWxlY3RJbnB1dENvbnRlbnQoJGV2ZW50KVwiXG4gICAgICAgICAgIChrZXlwcmVzcyk9XCJmaWx0ZXJBbHBoYW51bWVyaWNhbElucHV0KCRldmVudClcIlxuICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwib25LZXl1cEVudGVyLmVtaXQoJGV2ZW50KVwiPlxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtQ29udHJvbC5oYXNFcnJvcigncmVxdWlyZWQnKVwiIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9SRVFVSVJFRDwvbWF0LWVycm9yPlxuXG4gICAgPGJ1dHRvbiBtYXRTdWZmaXggKm5nSWY9XCJjbGVhcmFibGVcIlxuICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZm9ybUNvbnRyb2wucmVzZXQoKVwiXG4gICAgICAgICAgICBbaGlkZGVuXT1cImZvcm1Db250cm9sLmRpc2FibGVkIHx8IChmb3JtQ29udHJvbHxmb3JtR2V0VmFsdWV8aXNOaWxPckJsYW5rKVwiPlxuICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxkaXYgbWF0U3VmZml4PlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdFN1ZmZpeF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgPCEtLSBhdXRvLWNvbXBsZXRlIC0tPlxuICA8bWF0LWF1dG9jb21wbGV0ZS1maWVsZCAqbmdTd2l0Y2hDYXNlPVwiJ2VudGl0eSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAjYXV0b2NvbXBsZXRlRmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNsYXNzTGlzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvZm9jdXNdPVwiYXV0b2ZvY3VzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zsb2F0TGFiZWxdPVwiZmxvYXRMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjb25maWddPVwiZGVmaW5pdGlvbi5hdXRvY29tcGxldGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwidGFiaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xlYXJhYmxlXT1cImNsZWFyYWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJvbktleXVwRW50ZXIuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc3BsYXlXaXRoXT1cImdldERpc3BsYXlWYWx1ZUZuKGRlZmluaXRpb24pXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdFByZWZpeF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdFN1ZmZpeF1cIj48L25nLWNvbnRlbnQ+XG4gIDwvbWF0LWF1dG9jb21wbGV0ZS1maWVsZD5cblxuICA8IS0tIG11bHRpIGF1dG8tY29tcGxldGUgLS0+XG4gIDxtYXQtY2hpcHMtZmllbGQgKm5nU3dpdGNoQ2FzZT1cIidlbnRpdGllcydcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY2xhc3NMaXN0XCJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgW2Zsb2F0TGFiZWxdPVwiZmxvYXRMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgIFtjb25maWddPVwiZGVmaW5pdGlvbi5hdXRvY29tcGxldGVcIlxuICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgICAgICBbY2hpcENvbG9yXT1cImNoaXBDb2xvciB8IG1hdENvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsZWFyYWJsZV09XCJjbGVhcmFibGVcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzcGxheVdpdGhdPVwiZ2V0RGlzcGxheVZhbHVlRm4oZGVmaW5pdGlvbilcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbWF0UHJlZml4XVwiPjwvbmctY29udGVudD5cbiAgICA8ZGl2IG1hdFN1ZmZpeD5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlttYXRTdWZmaXhdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L21hdC1jaGlwcy1maWVsZD5cblxuICA8IS0tIG90aGVyIC0tPlxuICA8ZGl2ICpuZ1N3aXRjaERlZmF1bHQ+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cInR5cGVcIj5Vbmtub3duIHR5cGUge3t0eXBlfX0gZm9yIG9wdGlvbiB7e2RlZmluaXRpb24ua2V5fX0uIFBsZWFzZSByZXBvcnQgdGhpcyBlcnJvci48L21hdC1lcnJvcj5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiIXR5cGVcIj5FcnJvciBvbiBvcHRpb24gZmllbGQuIFBsZWFzZSBjaGVjayBjb25zb2xlIGxvZyBmb3IgZGV0YWlscy48L21hdC1lcnJvcj5cbiAgICA8ZGl2IG1hdFN1ZmZpeD5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlttYXRTdWZmaXhdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuPC9uZy1jb250YWluZXI+XG4iXX0=
|
|
@@ -411,4 +411,4 @@ export function waitIdle(form, opts) {
|
|
|
411
411
|
const predicate = () => form.loading !== true;
|
|
412
412
|
return waitFor(predicate, opts);
|
|
413
413
|
}
|
|
414
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9mb3Jtcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWtCLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFtQixNQUFNLGdCQUFnQixDQUFDO0FBQ3pILE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFDaEMsT0FBTyxFQUFDLGVBQWUsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQzVFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxTQUFTLENBQUM7QUFDeEMsT0FBTyxFQUFDLE9BQU8sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFFdEQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBTXJEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQUMsTUFBVyxFQUFFLE1BQXdCLEVBQUUsSUFBa0Q7SUFDdkgsTUFBTSxJQUFJLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3BELE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2hDLENBQUM7QUFFRCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsTUFBcUIsRUFBRSxJQUFzQjtJQUNsRixPQUFPLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQTJCLENBQUM7QUFDckUsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxNQUFxQixFQUFFLE9BQXdCLEVBQUUsSUFBYTtJQUNoRyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUUxQyxhQUFhO0lBQ2IsSUFBSSxPQUFPLFlBQVksZ0JBQWdC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YWN0Q29udHJvbCwgVW50eXBlZEZvcm1BcnJheSwgVW50eXBlZEZvcm1Db250cm9sLCBVbnR5cGVkRm9ybUdyb3VwLCBWYWxpZGF0aW9uRXJyb3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge2lzTW9tZW50fSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHtpc05vdEVtcHR5QXJyYXksIGlzTm90TmlsT3JOYU4sIG51bGxJZlVuZGVmaW5lZH0gZnJvbSAnLi9mdW5jdGlvbnMnO1xuaW1wb3J0IHt0b0RhdGVJU09TdHJpbmd9IGZyb20gJy4vZGF0ZXMnO1xuaW1wb3J0IHt3YWl0Rm9yLCBXYWl0Rm9yT3B0aW9uc30gZnJvbSAnLi9vYnNlcnZhYmxlcyc7XG5pbXBvcnQge1ByZWRpY2F0ZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FwcEZvcm1BcnJheX0gZnJvbSAnLi4vY29yZS9mb3JtL2Zvcm0udXRpbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1FcnJvcnMge1xuICBba2V5OiBzdHJpbmddOiBWYWxpZGF0aW9uRXJyb3JzO1xufVxuXG4vKipcbiAqIEZpbGwgYSBmb3JtIHVzaW5nIGEgc291cmNlIGVudGl0eVxuICpcbiAqIEBwYXJhbSB0YXJnZXRcbiAqIEBwYXJhbSBlbnRpdHlcbiAqIEBwYXJhbSBvcHRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb3B5RW50aXR5MkZvcm0oZW50aXR5OiBhbnksIHRhcmdldDogVW50eXBlZEZvcm1Hcm91cCwgb3B0cz86IHsgZW1pdEV2ZW50PzogYm9vbGVhbjsgb25seVNlbGY/OiBib29sZWFuIH0pIHtcbiAgY29uc3QganNvbiA9IGdldEZvcm1WYWx1ZUZyb21FbnRpdHkoZW50aXR5LCB0YXJnZXQpO1xuICB0YXJnZXQucGF0Y2hWYWx1ZShqc29uLCBvcHRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZvcm1WYWx1ZUZyb21FbnRpdHkoZW50aXR5OiBhbnl8dW5kZWZpbmVkLCBmb3JtOiBVbnR5cGVkRm9ybUdyb3VwKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gIHJldHVybiBhZGFwdFZhbHVlVG9Db250cm9sKGVudGl0eSwgZm9ybSkgYXMgeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcbn1cblxuLyoqXG4gKiBUcmFuc2Zvcm0gYW4gZW50aXR5IGludG8gYSBzaW1wbGUgb2JqZWN0LCBjb21wYXRpYmxlIHdpdGggdGhlIGdpdmVuIGZvcm1cbiAqXG4gKiBAcGFyYW0gc291cmNlIGFuIGVudGl0eSAob3Igc3ViZW50aXR5KVxuICogQHBhcmFtIGNvbnRyb2xcbiAqIEBwYXJhbSBwYXRoXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGFwdFZhbHVlVG9Db250cm9sKHNvdXJjZTogYW55fHVuZGVmaW5lZCwgY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBwYXRoPzogc3RyaW5nKTogYW55IHtcbiAgY29uc3QgcGF0aFByZWZpeCA9IHBhdGggPyBwYXRoICsgJy4nIDogJyc7XG5cbiAgLy8gRm9ybSBncm91cFxuICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIFVudHlwZWRGb3JtR3JvdXApIHtcbiAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZ3VhcmQtZm9yLWluXG4gICAgZm9yIChjb25zdCBrZXkgaW4gY29udHJvbC5jb250cm9scykge1xuICAgICAgcmVzdWx0W2tleV0gPSBhZGFwdFZhbHVlVG9Db250cm9sKHNvdXJjZSAmJiBzb3VyY2Vba2V5XSwgY29udHJvbC5jb250cm9sc1trZXldLCBwYXRoUHJlZml4ICsga2V5KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8vIEFycmF5XG4gIGlmIChjb250cm9sIGluc3RhbmNlb2YgVW50eXBlZEZvcm1BcnJheSkge1xuXG4gICAgLy8gU3BsaXQsIGlmIG1hbnkgdmFsdWVzIGluIGEgc3RyaW5nXG4gICAgaWYgKHR5cGVvZiBzb3VyY2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICBzb3VyY2UgPSBzb3VyY2Uuc3BsaXQoJ3wnKTtcbiAgICB9XG4gICAgLy8gU2tpcCBpZiB2YWx1ZSBpcyBub3QgYW4gYXJyYXlcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoc291cmNlKSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIC8vIFJlc2l6YWJsZSBhcnJheVxuICAgIGlmIChjb250cm9sIGluc3RhbmNlb2YgQXBwRm9ybUFycmF5KSB7XG4gICAgICBjb25zdCBleGFtcGxlQ29udHJvbCA9IGNvbnRyb2wuY3JlYXRlQ29udHJvbCgpO1xuICAgICAgcmV0dXJuIHNvdXJjZS5tYXAoKGl0ZW0sIGluZGV4KSA9PiBhZGFwdFZhbHVlVG9Db250cm9sKGl0ZW0sIGV4YW1wbGVDb250cm9sLCBwYXRoUHJlZml4ICsgJyMnICsgaW5kZXgpKSBhcyBhbnlbXTtcbiAgICB9XG5cbiAgICAvLyBMZWdhY3kgYXJyYXlcbiAgICBlbHNlIGlmIChjb250cm9sLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpcnN0Q29udHJvbCA9IGNvbnRyb2wuYXQoMCk7XG4gICAgICAvLyBVc2UgdGhlIGZpcnN0IGZvcm0gZ3JvdXAsIGFzIG1vZGVsXG4gICAgICBsZXQgcmVzdWx0ID0gc291cmNlLm1hcCgoaXRlbSwgaW5kZXgpID0+IGFkYXB0VmFsdWVUb0NvbnRyb2woaXRlbSwgZmlyc3RDb250cm9sLCBwYXRoUHJlZml4ICsgJyMnICsgaW5kZXgpKSBhcyBhbnlbXTtcblxuICAgICAgLy8gVHJ1bmNhdGUgaWYgdG9vIG1hbnkgdmFsdWVzXG4gICAgICBpZiAocmVzdWx0Lmxlbmd0aCA+IGNvbnRyb2wubGVuZ3RoKSB7XG4gICAgICAgIGlmIChmaXJzdENvbnRyb2wgaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUNvbnRyb2wpIHtcbiAgICAgICAgICBmb3IgKGxldCBpID0gY29udHJvbC5sZW5ndGg7IGkgPCByZXN1bHQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnRyb2wucHVzaChuZXcgVW50eXBlZEZvcm1Db250cm9sKG51bGwsIGZpcnN0Q29udHJvbC52YWxpZGF0b3IpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKGBXQVJOOiBwbGVhc2UgcmVzaXplIHRoZSBGb3JtQXJyYXkgJyR7cGF0aHx8Jyd9JyB0byB0aGUgc2FtZSBsZW5ndGggb2YgdGhlIGlucHV0IGFycmF5YCk7XG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnNsaWNlKDAsIGNvbnRyb2wubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBBZGQgdmFsdWVzIGlmIG5vdCBlbm91Z2h0XG4gICAgICBlbHNlIGlmIChyZXN1bHQubGVuZ3RoIDwgY29udHJvbC5sZW5ndGgpIHtcbiAgICAgICAgLy9jb25zb2xlLndhcm4oYFdBUk46IEFkZGluZyBudWxsIHZhbHVlIHRvIGFycmF5IHZhbHVlc2ApO1xuICAgICAgICBmb3IgKGxldCBpID0gcmVzdWx0Lmxlbmd0aDsgaSA8IGNvbnRyb2wubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICByZXN1bHQucHVzaChudWxsKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgLy8gU2tpcCBpZiB1bmFibGUgdG8gZmluZCBhIGNvbnRyb2wgaW4gdGhlIGFycmF5XG4gICAgZWxzZSB7XG4gICAgICBpZiAoaXNOb3RFbXB0eUFycmF5KHNvdXJjZSkpIGNvbnNvbGUud2FybihgV0FSTjogcGxlYXNlIHJlc2l6ZSB0aGUgRm9ybUFycmF5ICcke3BhdGh9JyB0byB0aGUgc2FtZSBsZW5ndGggb2YgdGhlIGlucHV0IGFycmF5YCk7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG5cbiAgLy8gRm9ybSBjb250cm9sXG4gIGlmIChjb250cm9sIGluc3RhbmNlb2YgVW50eXBlZEZvcm1Db250cm9sKSB7XG4gICAgLy8gRGF0ZVxuICAgIGlmIChpc01vbWVudChzb3VyY2UpKSB7XG4gICAgICByZXR1cm4gdG9EYXRlSVNPU3RyaW5nKHNvdXJjZSk7XG4gICAgfVxuICAgIC8vIEFueSBvdGhlciBjb250cm9sOiByZXBsYWNlIHVuZGVmaW5lZCBieSBudWxsIHZhbHVlXG4gICAgLy8gYmVjYXVzZSBVbmRlZmluZWQgaXMgbm90IGF1dGhvcml6ZWQgYXMgY29udHJvbCB2YWx1ZVxuICAgIGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGxJZlVuZGVmaW5lZChzb3VyY2UpO1xuICAgIH1cbiAgfVxuXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2dGb3JtRXJyb3JzKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgbG9nUHJlZml4Pzogc3RyaW5nLCBwYXRoPzogc3RyaW5nKSB7XG4gIGlmICghY29udHJvbCB8fCBjb250cm9sLnZhbGlkKSByZXR1cm47XG4gIGxvZ1ByZWZpeCA9IGxvZ1ByZWZpeCB8fCAnJztcbiAgLy8gRm9ybSBncm91cFxuICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIFVudHlwZWRGb3JtR3JvdXApIHtcbiAgICBpZiAoIXBhdGgpIGNvbnNvbGUud2FybihgJHtsb2dQcmVmaXh9IEZvcm0gZXJyb3JzOmApO1xuICAgIGlmIChjb250cm9sLmVycm9ycykge1xuICAgICAgT2JqZWN0LmtleXMoY29udHJvbC5lcnJvcnMpLmZvckVhY2goZXJyb3IgPT5cbiAgICAgICAgY29uc29sZS53YXJuKGAke2xvZ1ByZWZpeH0gLT4gJHtwYXRoIHx8ICcnfSAoJHtlcnJvcn0pYClcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChjb250cm9sLmNvbnRyb2xzKSB7XG4gICAgICBPYmplY3Qua2V5cyhjb250cm9sLmNvbnRyb2xzKS5mb3JFYWNoKGNoaWxkID0+XG4gICAgICAgIGxvZ0Zvcm1FcnJvcnMoY29udHJvbC5jb250cm9sc1tjaGlsZF0sIGxvZ1ByZWZpeCwgKHBhdGggPyBgJHtwYXRofS4ke2NoaWxkfWAgOiBjaGlsZCkpIC8vIFJlY3Vyc2l2ZSBjYWxsXG4gICAgICApO1xuICAgIH1cbiAgfVxuICAvLyBGb3JtIGFycmF5XG4gIGVsc2UgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUFycmF5KSB7XG4gICAgaWYgKGNvbnRyb2wuZXJyb3JzKSB7XG4gICAgICBPYmplY3Qua2V5cyhjb250cm9sLmVycm9ycykuZm9yRWFjaChlcnJvciA9PlxuICAgICAgICBjb25zb2xlLndhcm4oYCR7bG9nUHJlZml4fSAtPiAke3BhdGggfHwgJyd9ICgke2Vycm9yfSlgKVxuICAgICAgKTtcbiAgICB9XG4gICAgY29udHJvbC5jb250cm9scy5mb3JFYWNoKChjaGlsZCwgaW5kZXgpID0+IHtcbiAgICAgIGxvZ0Zvcm1FcnJvcnMoY2hpbGQsIGxvZ1ByZWZpeCwgKHBhdGggPyBgJHtwYXRofS4ke2luZGV4fWAgOiBgJHtpbmRleH1gKSk7IC8vIFJlY3Vyc2l2ZSBjYWxsXG4gICAgfSk7XG4gIH1cbiAgLy8gT3RoZXIgY29udHJvbCdzIGVycm9yc1xuICBlbHNlIGlmIChjb250cm9sLmVycm9ycykge1xuICAgIE9iamVjdC5rZXlzKGNvbnRyb2wuZXJyb3JzKS5mb3JFYWNoKGVycm9yID0+XG4gICAgICBjb25zb2xlLndhcm4oYCR7bG9nUHJlZml4fSAtPiAke3BhdGggfHwgJyd9ICgke2Vycm9yfSlgKVxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZvcm1FcnJvcnMoY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBvcHRzPzoge1xuICBjb250cm9sTmFtZT86IHN0cmluZztcbiAgcmVzdWx0PzogRm9ybUVycm9ycztcbiAgcmVjdXJzaXZlPzogYm9vbGVhbjtcbn0pOiBGb3JtRXJyb3JzIHtcbiAgaWYgKCFjb250cm9sIHx8IGNvbnRyb2wudmFsaWQpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgb3B0cyA9IG9wdHMgfHzCoHt9O1xuICBvcHRzLnJlc3VsdCA9IG9wdHMucmVzdWx0IHx8IHt9O1xuXG4gIC8vIEZvcm0gZ3JvdXBcbiAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUdyb3VwKSB7XG4gICAgLy8gQ29weSBlcnJvcnNcbiAgICBpZiAoY29udHJvbC5lcnJvcnMpIHtcbiAgICAgIGlmIChvcHRzLmNvbnRyb2xOYW1lKSB7XG4gICAgICAgIG9wdHMucmVzdWx0W29wdHMuY29udHJvbE5hbWVdID0ge1xuICAgICAgICAgIC4uLmNvbnRyb2wuZXJyb3JzXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgb3B0cy5yZXN1bHQgPSB7XG4gICAgICAgICAgLi4ub3B0cy5yZXN1bHQsXG4gICAgICAgICAgLi4uY29udHJvbC5lcnJvcnNcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIW9wdHMgfHwgb3B0cy5yZWN1cnNpdmUgIT09IGZhbHNlKSB7XG4gICAgICAvLyBMb29wIG9uIGNoaWxkcmVuIGNvbnRyb2xzXG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBjb250cm9sLmNvbnRyb2xzKSB7XG4gICAgICAgIGlmIChjb250cm9sLmNvbnRyb2xzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICBjb25zdCBjaGlsZCA9IGNvbnRyb2wuY29udHJvbHNba2V5XTtcbiAgICAgICAgICBpZiAoY2hpbGQuZW5hYmxlZCkge1xuICAgICAgICAgICAgZ2V0Rm9ybUVycm9ycyhjaGlsZCwge1xuICAgICAgICAgICAgICAuLi5vcHRzLFxuICAgICAgICAgICAgICBjb250cm9sTmFtZTogb3B0cy5jb250cm9sTmFtZSA/IFtvcHRzLmNvbnRyb2xOYW1lLCBrZXldLmpvaW4oJy4nKSA6IGtleSxcbiAgICAgICAgICAgICAgcmVzdWx0OiBvcHRzLnJlc3VsdCAvLyBNYWtlIHN1cmUgdG8ga2VlcCB0aGUgc2FtZSByZXN1bHQgb2JqZWN0XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBGb3JtIGFycmF5XG4gIGVsc2UgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUFycmF5KSB7XG4gICAgY29udHJvbC5jb250cm9scy5mb3JFYWNoKChjaGlsZCwgaW5kZXgpID0+IHtcbiAgICAgIGdldEZvcm1FcnJvcnMoY2hpbGQsIHtcbiAgICAgICAgLi4ub3B0cyxcbiAgICAgICAgY29udHJvbE5hbWU6IChvcHRzLmNvbnRyb2xOYW1lIHx8ICcnKSArICcuJyArIGluZGV4LFxuICAgICAgICByZXN1bHQ6IG9wdHMucmVzdWx0IC8vIE1ha2Ugc3VyZSB0byBrZWVwIHRoZSBzYW1lIHJlc3VsdCBvYmplY3RcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gT3RoZXIgdHlwZSBvZiBjb250cm9sIChlLmcgc2ltcGxlIGNvbnRyb2wpXG4gIGVsc2UgaWYgKGNvbnRyb2wuZXJyb3JzKSB7XG4gICAgaWYgKG9wdHMuY29udHJvbE5hbWUpIHtcbiAgICAgIG9wdHMucmVzdWx0W29wdHMuY29udHJvbE5hbWVdID0ge1xuICAgICAgICAuLi5jb250cm9sLmVycm9yc1xuICAgICAgfTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBvcHRzLnJlc3VsdCA9IHtcbiAgICAgICAgLi4ub3B0cy5yZXN1bHQsXG4gICAgICAgIC4uLmNvbnRyb2wuZXJyb3JzXG4gICAgICB9O1xuICAgIH1cbiAgfVxuICByZXR1cm4gb3B0cy5yZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb250cm9sRnJvbVBhdGgoZm9ybTogVW50eXBlZEZvcm1Hcm91cCwgcGF0aDogc3RyaW5nKTogQWJzdHJhY3RDb250cm9sIHtcbiAgY29uc3QgaSA9IHBhdGguaW5kZXhPZignLicpO1xuICBpZiAoaSA9PT0gLTEpIHtcbiAgICByZXR1cm4gZm9ybS5jb250cm9sc1twYXRoXTtcbiAgfVxuICBjb25zdCBrZXkgPSBwYXRoLnN1YnN0cmluZygwLCBpKTtcbiAgaWYgKGZvcm0uY29udHJvbHNba2V5XSBpbnN0YW5jZW9mIFVudHlwZWRGb3JtR3JvdXApIHtcbiAgICByZXR1cm4gZ2V0Q29udHJvbEZyb21QYXRoKChmb3JtLmNvbnRyb2xzW2tleV0gYXMgVW50eXBlZEZvcm1Hcm91cCksIHBhdGguc3Vic3RyaW5nKGkgKyAxKSk7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGZvcm0gcGF0aDogJyR7a2V5fScgc2hvdWxkIGJlIGEgZm9ybSBncm91cC5gKTtcbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gZGlzYWJsZUNvbnRyb2xzKGZvcm06IFVudHlwZWRGb3JtR3JvdXAsIHBhdGhzOiBzdHJpbmdbXSwgb3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSkge1xuICAocGF0aHMgfHwgW10pLmZvckVhY2gocGF0aCA9PiB7XG4gICAgY29uc3QgY29udHJvbCA9IGdldENvbnRyb2xGcm9tUGF0aChmb3JtLCBwYXRoKTtcbiAgICBpZiAoY29udHJvbCkgY29udHJvbC5kaXNhYmxlKG9wdHMpO1xuICB9KTtcbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gYWRkVmFsdWVJbkFycmF5KGFycmF5Q29udHJvbDogVW50eXBlZEZvcm1BcnJheSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlQ29udHJvbDogKHZhbHVlPzogYW55KSA9PiBBYnN0cmFjdENvbnRyb2wsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVxdWFsczogKHYxOiBhbnksIHYyOiBhbnkpID0+IGJvb2xlYW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRW1wdHk6ICh2YWx1ZTogYW55KSA9PiBib29sZWFuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYW55LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPzogeyBlbWl0RXZlbnQ6IGJvb2xlYW47IGluc2VydEF0PzogbnVtYmVyIH0pOiBib29sZWFuIHtcbiAgY29uc3QgZGlzYWJsZWQgPSBhcnJheUNvbnRyb2wuZGlzYWJsZWQ7XG5cbiAgbGV0IGhhc0NoYW5nZWQgPSBmYWxzZTtcbiAgbGV0IGluZGV4ID0gLTE7XG5cbiAgLy8gU2VhcmNoIGlmIHZhbHVlIGFscmVhZHkgZXhpc3RzXG4gIGlmICghaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICBpbmRleCA9IChhcnJheUNvbnRyb2wudmFsdWUgfHwgW10pLmZpbmRJbmRleCh2ID0+IGVxdWFscyh2YWx1ZSwgdikpO1xuICB9XG5cbiAgLy8gSWYgdmFsdWUgbm90IGV4aXN0cywgYnV0IGxhc3QgdmFsdWUgaXMgZW1wdHk6IHVzZSBpdFxuICBpZiAoaW5kZXggPT09IC0xICYmIGFycmF5Q29udHJvbC5sZW5ndGggJiYgaXNFbXB0eShhcnJheUNvbnRyb2wuYXQoYXJyYXlDb250cm9sLmxlbmd0aCAtIDEpLnZhbHVlKSkge1xuICAgIGluZGV4ID0gYXJyYXlDb250cm9sLmxlbmd0aCAtIDE7XG4gIH1cblxuICAvLyBSZXBsYWNlIHRoZSBleGlzdGluZyB2YWx1ZVxuICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgaWYgKCFpc0VtcHR5KHZhbHVlKSkge1xuICAgICAgYXJyYXlDb250cm9sLmF0KGluZGV4KS5wYXRjaFZhbHVlKHZhbHVlLCBvcHRpb25zKTtcbiAgICAgIGhhc0NoYW5nZWQgPSB0cnVlO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjb25zdCBjb250cm9sID0gY3JlYXRlQ29udHJvbCh2YWx1ZSk7XG5cbiAgICAvLyBBcHBseSBwYXJlbnQgZGlzYWJsZWQgc3RhdGUsIGJlZm9yZSB0byBwdXNoIGl0IGludG8gdGhlIGFycmF5XG4gICAgLy8gVGhpcyBpcyBuZWVkIHRvIGF2b2lkIHBhcmVudCBmb3JtIHRvIGJlIGVuYWJsZWRcbiAgICBpZiAoZGlzYWJsZWQgJiYgY29udHJvbC5lbmFibGVkKSBjb250cm9sLmRpc2FibGUoe2VtaXRFdmVudDogZmFsc2V9KTtcbiAgICBlbHNlIGlmICghZGlzYWJsZWQgJiYgY29udHJvbC5kaXNhYmxlZCkgY29udHJvbC5lbmFibGUoe2VtaXRFdmVudDogZmFsc2V9KTtcblxuICAgIGlmIChpc05vdE5pbE9yTmFOKG9wdGlvbnM/Lmluc2VydEF0KSkge1xuICAgICAgYXJyYXlDb250cm9sLmluc2VydChvcHRpb25zLmluc2VydEF0LCBjb250cm9sLCBvcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXJyYXlDb250cm9sLnB1c2goY29udHJvbCwgb3B0aW9ucyk7XG4gICAgfVxuICAgIGhhc0NoYW5nZWQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKGhhc0NoYW5nZWQpIHtcbiAgICBpZiAoIW9wdGlvbnMgfHwgb3B0aW9ucy5lbWl0RXZlbnQgIT09IGZhbHNlKSB7XG4gICAgICAvLyBNYXJrIGFycmF5IGNvbnRyb2wgZGlydHlcbiAgICAgIGlmICghaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICAgICAgYXJyYXlDb250cm9sLm1hcmtBc0RpcnR5KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGhhc0NoYW5nZWQ7XG59XG5cbi8qKlxuICogU2V0IGFuIGFycmF5IHVzaW5nIGdpdmVuIGRlZmF1bHQgdmFsdWVzLiBFYWNoIGRlZmF1bHQgdmFsdWUgd2lsbCBiZSBwYXNzIHRvIHRoZSAnY3JlYXRlQ29udHJvbCgpJyBmdW5jdGlvblxuICpcbiAqIEBwYXJhbSBhcnJheUNvbnRyb2xcbiAqIEBwYXJhbSBjcmVhdGVDb250cm9sXG4gKiBAcGFyYW0gZGVmYXVsdFZhbHVlc1xuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluaXRBcnJheUNvbnRyb2xzRnJvbVZhbHVlcyhhcnJheUNvbnRyb2w6IFVudHlwZWRGb3JtQXJyYXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZUNvbnRyb2w6ICh2YWx1ZT86IGFueSkgPT4gQWJzdHJhY3RDb250cm9sLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWVzOiBhbnlbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucz86IHtlbWl0RXZlbnQ/OiBib29sZWFufSk6IGJvb2xlYW4ge1xuICBpZiAoYXJyYXlDb250cm9sLmxlbmd0aCA9PT0gMCAmJiAoIWRlZmF1bHRWYWx1ZXMgfHwgZGVmYXVsdFZhbHVlcy5sZW5ndGggPT09IDApKSByZXR1cm4gZmFsc2U7IC8vIE5vIGNoYW5nZXMgbmVlZFxuXG4gIGNvbnN0IGRpc2FibGVkID0gYXJyYXlDb250cm9sLmRpc2FibGVkO1xuXG4gIHdoaWxlIChhcnJheUNvbnRyb2wubGVuZ3RoID4gMCkge1xuICAgIGFycmF5Q29udHJvbC5yZW1vdmVBdChhcnJheUNvbnRyb2wubGVuZ3RoIC0gMSwgb3B0aW9ucyk7XG4gIH1cblxuICAoZGVmYXVsdFZhbHVlcyB8fCBbXSkuZm9yRWFjaCh2YWx1ZSA9PiB7XG4gICAgY29uc3QgY29udHJvbCA9IGNyZWF0ZUNvbnRyb2wodmFsdWUpO1xuXG4gICAgLy8gQXBwbHkgcGFyZW50IGRpc2FibGVkIHN0YXRlLCBiZWZvcmUgdG8gcHVzaCBpdCBpbnRvIHRoZSBhcnJheVxuICAgIC8vIFRoaXMgaXMgbmVlZCB0byBhdm9pZCBwYXJlbnQgZm9ybSB0byBiZSBlbmFibGVkXG4gICAgaWYgKGRpc2FibGVkICYmIGNvbnRyb2wuZW5hYmxlZCkgY29udHJvbC5kaXNhYmxlKHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgZWxzZSBpZiAoIWRpc2FibGVkICYmIGNvbnRyb2wuZGlzYWJsZWQpIGNvbnRyb2wuZW5hYmxlKHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG5cbiAgICBhcnJheUNvbnRyb2wucHVzaChjb250cm9sLCBvcHRpb25zKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHRydWU7IC8vIEhhcyBzb21lIGNoYW5nZXNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc2l6ZUFycmF5KGFycmF5Q29udHJvbDogVW50eXBlZEZvcm1BcnJheSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVDb250cm9sOiAoKSA9PiBBYnN0cmFjdENvbnRyb2wsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoOiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucz86IHtlbWl0RXZlbnQ/OiBib29sZWFufSk6IGJvb2xlYW4ge1xuICBpZiAoYXJyYXlDb250cm9sLmxlbmd0aCA9PT0gbGVuZ3RoKSByZXR1cm4gZmFsc2U7IC8vIE5vIGNoYW5nZXMgbmVlZFxuXG4gIGNvbnN0IGRpc2FibGVkID0gYXJyYXlDb250cm9sLmRpc2FibGVkO1xuXG4gIC8vIFJlZHVjZSBzaXplXG4gIHdoaWxlIChhcnJheUNvbnRyb2wubGVuZ3RoID4gbGVuZ3RoKSB7XG4gICAgYXJyYXlDb250cm9sLnJlbW92ZUF0KGFycmF5Q29udHJvbC5sZW5ndGggLSAxLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8vIEluY3JlYXNlIHNpemVcbiAgd2hpbGUgKGFycmF5Q29udHJvbC5sZW5ndGggPCBsZW5ndGgpIHtcbiAgICBjb25zdCBjb250cm9sID0gY3JlYXRlQ29udHJvbCgpO1xuXG4gICAgLy8gQXBwbHkgcGFyZW50IGRpc2FibGVkIHN0YXRlLCBiZWZvcmUgdG8gcHVzaCBpdCBpbnRvIHRoZSBhcnJheVxuICAgIC8vIFRoaXMgaXMgbmVlZCB0byBhdm9pZCBwYXJlbnQgZm9ybSB0byBiZSBlbmFibGVkLCBhZnRlciBjYWxsaW5nIHJlc2l6ZUFycmF5KClcbiAgICBpZiAoZGlzYWJsZWQgJiYgY29udHJvbC5lbmFibGVkKSBjb250cm9sLmRpc2FibGUoe2VtaXRFdmVudDogZmFsc2V9KTtcbiAgICBlbHNlIGlmICghZGlzYWJsZWQgJiYgY29udHJvbC5kaXNhYmxlZCkgY29udHJvbC5lbmFibGUoe2VtaXRFdmVudDogZmFsc2V9KTtcblxuICAgIGFycmF5Q29udHJvbC5wdXNoKGNvbnRyb2wsIG9wdGlvbnMpO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7IC8vIEhhcyBzb21lIGNoYW5nZXNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVZhbHVlSW5BcnJheShhcnJheUNvbnRyb2w6IFVudHlwZWRGb3JtQXJyYXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRW1wdHk6ICh2YWx1ZTogYW55KSA9PiBib29sZWFuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gIGFycmF5Q29udHJvbC5yZW1vdmVBdChpbmRleCk7XG4gIGFycmF5Q29udHJvbC5tYXJrQXNEaXJ0eSgpO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyVmFsdWVJbkFycmF5KGFycmF5Q29udHJvbDogVW50eXBlZEZvcm1BcnJheSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0VtcHR5OiAodmFsdWU6IGFueSkgPT4gYm9vbGVhbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG5cbiAgY29uc3QgY29udHJvbCA9IGFycmF5Q29udHJvbC5hdChpbmRleCk7XG4gIGlmIChpc0VtcHR5KGNvbnRyb2wudmFsdWUpKSByZXR1cm4gZmFsc2U7IC8vIHNraXAgKG5vdCBuZWVkIHRvIGNsZWFyKVxuXG4gIGlmIChjb250cm9sIGluc3RhbmNlb2YgVW50eXBlZEZvcm1Hcm91cCkge1xuICAgIGNvcHlFbnRpdHkyRm9ybSh7fSwgY29udHJvbCk7XG4gIH1cbiAgZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIFVudHlwZWRGb3JtQXJyYXkpIHtcbiAgICBjb250cm9sLnNldFZhbHVlKFtdKTtcbiAgfVxuICBlbHNlIHtcbiAgICBjb250cm9sLnNldFZhbHVlKG51bGwpO1xuICB9XG4gIGFycmF5Q29udHJvbC5tYXJrQXNEaXJ0eSgpO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hcmtBbGxBc1RvdWNoZWQoY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gIGlmICghY29udHJvbCkgcmV0dXJuO1xuICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIFVudHlwZWRGb3JtR3JvdXApIHtcbiAgICBtYXJrRm9ybUdyb3VwQXNUb3VjaGVkKGNvbnRyb2wsIHsuLi5vcHRzLCBvbmx5U2VsZjogdHJ1ZX0pOyAvLyByZWN1cnNpdmUgY2FsbFxuICB9XG4gIGVsc2UgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUFycmF5KSB7XG4gICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKHtvbmx5U2VsZjogdHJ1ZX0pO1xuICAgIChjb250cm9sLmNvbnRyb2xzIHx8IFtdKS5mb3JFYWNoKGMgPT4gbWFya0NvbnRyb2xBc1RvdWNoZWQoYywgey4uLm9wdHMsIG9ubHlTZWxmOiB0cnVlfSkpOyAvLyByZWN1cnNpdmUgY2FsbFxuICB9XG4gIGVsc2Uge1xuICAgIGNvbnRyb2wubWFya0FzVG91Y2hlZCh7b25seVNlbGY6IHRydWV9KTtcbiAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoey4uLm9wdHMsIG9ubHlTZWxmOiB0cnVlfSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hcmtGb3JtR3JvdXBBc1RvdWNoZWQoZm9ybTogVW50eXBlZEZvcm1Hcm91cCwgb3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSkge1xuICBpZiAoIWZvcm0pIHJldHVybjtcbiAgZm9ybS5tYXJrQXNUb3VjaGVkKG9wdHMpO1xuICBPYmplY3Qua2V5cyhmb3JtLmNvbnRyb2xzKVxuICAgIC5tYXAoa2V5ID0+IGZvcm0uY29udHJvbHNba2V5XSlcbiAgICAuZmlsdGVyKGNvbnRyb2wgPT4gY29udHJvbC5lbmFibGVkKVxuICAgIC5mb3JFYWNoKGNvbnRyb2wgPT4gbWFya0NvbnRyb2xBc1RvdWNoZWQoY29udHJvbCwgb3B0cykpO1xuICBmb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoey4uLm9wdHMsIG9ubHlTZWxmOiB0cnVlfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXJrQ29udHJvbEFzVG91Y2hlZChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgaWYgKCFjb250cm9sKSByZXR1cm47XG4gIGlmIChjb250cm9sIGluc3RhbmNlb2YgVW50eXBlZEZvcm1Hcm91cCkge1xuICAgIG1hcmtBbGxBc1RvdWNoZWQoY29udHJvbCwgeyAuLi5vcHRzLCBvbmx5U2VsZjogdHJ1ZX0pOyAvLyByZWN1cnNpdmUgY2FsbFxuICB9XG4gIGVsc2UgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUFycmF5KSB7XG4gICAgKGNvbnRyb2wuY29udHJvbHMgfHwgW10pLmZvckVhY2goYyA9PiBtYXJrQ29udHJvbEFzVG91Y2hlZChjLCB7IC4uLm9wdHMsIG9ubHlTZWxmOiB0cnVlfSkpOyAvLyByZWN1cnNpdmUgY2FsbFxuICB9XG4gIGVsc2Uge1xuICAgIGNvbnRyb2wubWFya0FzVG91Y2hlZCh7b25seVNlbGY6IHRydWV9KTtcbiAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoey4uLm9wdHMsIG9ubHlTZWxmOiB0cnVlfSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoZm9ybTogVW50eXBlZEZvcm1Hcm91cCwgb3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSkge1xuICBpZiAoIWZvcm0pIHJldHVybjtcbiAgZm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KG9wdHMpO1xuICBPYmplY3Qua2V5cyhmb3JtLmNvbnRyb2xzKVxuICAgIC5tYXAoa2V5ID0+IGZvcm0uY29udHJvbHNba2V5XSlcbiAgICAuZmlsdGVyKGNvbnRyb2wgPT4gY29udHJvbC5lbmFibGVkKVxuICAgIC5mb3JFYWNoKGNvbnRyb2wgPT4ge1xuICAgICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUdyb3VwKSB7XG4gICAgICAgIHVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoY29udHJvbCwgey4uLm9wdHMsIG9ubHlTZWxmOiB0cnVlfSk7IC8vIHJlY3Vyc2l2ZSBjYWxsXG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsuLi5vcHRzLCBvbmx5U2VsZjogdHJ1ZX0pO1xuICAgICAgfVxuICAgIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFya0FzVW50b3VjaGVkKGZvcm06IFVudHlwZWRGb3JtR3JvdXAsIG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuIH0pIHtcbiAgaWYgKCFmb3JtKSByZXR1cm47XG4gIGZvcm0ubWFya0FzVW50b3VjaGVkKG9wdHMpO1xuICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhmb3JtLmNvbnRyb2xzKVxuICAgIC5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBjb25zdCBjb250cm9sID0gZm9ybS5nZXQoa2V5KTtcbiAgICAgIGlmIChjb250cm9sIGluc3RhbmNlb2YgVW50eXBlZEZvcm1Hcm91cCkge1xuICAgICAgICBtYXJrQXNVbnRvdWNoZWQoY29udHJvbCwge29ubHlTZWxmOiB0cnVlfSk7IC8vIHJlY3Vyc2l2ZSBjYWxsXG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgY29udHJvbC5tYXJrQXNVbnRvdWNoZWQoe29ubHlTZWxmOiB0cnVlfSk7XG4gICAgICAgIGNvbnRyb2wuc2V0RXJyb3JzKG51bGwpO1xuICAgICAgfVxuICAgIH0pO1xufVxuXG4vKipcbiAqIFdhaXQgZW5kIG9mIGFzeW5jIHZhbGlkYXRpb24gKG5vdCBwZW5kaW5nKS4gVGhpcyBuZWVkIHRvIGltcGxlbWVudCB7cGVuZGluZzogYm9vbGVhbn1cbiAqIHJldHVybiBmYWxzZVxuICovXG5leHBvcnQgZnVuY3Rpb24gd2FpdFdoaWxlUGVuZGluZzxUIGV4dGVuZHMgeyBwZW5kaW5nOiBib29sZWFuIH0+KGZvcm06IFQsIG9wdHM/OiBXYWl0Rm9yT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBwcmVkaWNhdGU6IFByZWRpY2F0ZTx2b2lkPiA9ICgpID0+IGZvcm0ucGVuZGluZyAhPT0gdHJ1ZTtcbiAgcmV0dXJuIHdhaXRGb3IocHJlZGljYXRlLCBvcHRzKTtcbn1cblxuLyoqXG4gKiBXYWl0IGZvcm0gaXMgaWRsZSAobm90IGxvYWRpbmcpLiBUaGlzIG5lZWQgdG8gaW1wbGVtZW50IHtsb2FkaW5nOiBib29sZWFufVxuICpcbiAqIEBwYXJhbSBmb3JtXG4gKiBAcGFyYW0gb3B0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gd2FpdElkbGU8VCBleHRlbmRzIHsgbG9hZGluZzogYm9vbGVhbiB9Pihmb3JtOiBULCBvcHRzPzogV2FpdEZvck9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgcHJlZGljYXRlOiBQcmVkaWNhdGU8dm9pZD4gPSAoKSA9PiBmb3JtLmxvYWRpbmcgIT09IHRydWU7XG4gIHJldHVybiB3YWl0Rm9yKHByZWRpY2F0ZSwgb3B0cyk7XG59XG4iXX0=
|
|
414
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9mb3Jtcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWtCLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFtQixNQUFNLGdCQUFnQixDQUFDO0FBQ3pILE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFDaEMsT0FBTyxFQUFDLGVBQWUsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQzVFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxTQUFTLENBQUM7QUFDeEMsT0FBTyxFQUFDLE9BQU8sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFFdEQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBTXJEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQUMsTUFBVyxFQUFFLE1BQXdCLEVBQUUsSUFBa0Q7SUFDdkgsTUFBTSxJQUFJLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3BELE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2hDLENBQUM7QUFFRCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsTUFBcUIsRUFBRSxJQUFzQjtJQUNsRixPQUFPLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQTJCLENBQUM7QUFDckUsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxNQUFxQixFQUFFLE9BQXdCLEVBQUUsSUFBYTtJQUNoRyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUUxQyxhQUFhO0lBQ2IsSUFBSSxPQUFPLFlBQVksZ0JBQWdC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QUM7WUFDeEMsZUFBZSxDQUFDLE9BQU8sRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCO1FBQy9ELENBQUM7YUFDSSxDQUFDO1lBQ0osT0FBTyxDQUFDLGVBQWUsQ0FBQyxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1lBQzFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBaUMsSUFBTyxFQUFFLElBQXFCO0lBQzdGLE1BQU0sU0FBUyxHQUFvQixHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQztJQUMvRCxPQUFPLE9BQU8sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbEMsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FBaUMsSUFBTyxFQUFFLElBQXFCO0lBQ3JGLE1BQU0sU0FBUyxHQUFvQixHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQztJQUMvRCxPQUFPLE9BQU8sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWJzdHJhY3RDb250cm9sLCBVbnR5cGVkRm9ybUFycmF5LCBVbnR5cGVkRm9ybUNvbnRyb2wsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRpb25FcnJvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7aXNNb21lbnR9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQge2lzTm90RW1wdHlBcnJheSwgaXNOb3ROaWxPck5hTiwgbnVsbElmVW5kZWZpbmVkfSBmcm9tICcuL2Z1bmN0aW9ucyc7XG5pbXBvcnQge3RvRGF0ZUlTT1N0cmluZ30gZnJvbSAnLi9kYXRlcyc7XG5pbXBvcnQge3dhaXRGb3IsIFdhaXRGb3JPcHRpb25zfSBmcm9tICcuL29ic2VydmFibGVzJztcbmltcG9ydCB7UHJlZGljYXRlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QXBwRm9ybUFycmF5fSBmcm9tICcuLi9jb3JlL2Zvcm0vZm9ybS51dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybUVycm9ycyB7XG4gIFtrZXk6IHN0cmluZ106IFZhbGlkYXRpb25FcnJvcnM7XG59XG5cbi8qKlxuICogRmlsbCBhIGZvcm0gdXNpbmcgYSBzb3VyY2UgZW50aXR5XG4gKlxuICogQHBhcmFtIHRhcmdldFxuICogQHBhcmFtIGVudGl0eVxuICogQHBhcmFtIG9wdHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvcHlFbnRpdHkyRm9ybShlbnRpdHk6IGFueSwgdGFyZ2V0OiBVbnR5cGVkRm9ybUdyb3VwLCBvcHRzPzogeyBlbWl0RXZlbnQ/OiBib29sZWFuOyBvbmx5U2VsZj86IGJvb2xlYW4gfSkge1xuICBjb25zdCBqc29uID0gZ2V0Rm9ybVZhbHVlRnJvbUVudGl0eShlbnRpdHksIHRhcmdldCk7XG4gIHRhcmdldC5wYXRjaFZhbHVlKGpzb24sIG9wdHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybVZhbHVlRnJvbUVudGl0eShlbnRpdHk6IGFueXx1bmRlZmluZWQsIGZvcm06IFVudHlwZWRGb3JtR3JvdXApOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcbiAgcmV0dXJuIGFkYXB0VmFsdWVUb0NvbnRyb2woZW50aXR5LCBmb3JtKSBhcyB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xufVxuXG4vKipcbiAqIFRyYW5zZm9ybSBhbiBlbnRpdHkgaW50byBhIHNpbXBsZSBvYmplY3QsIGNvbXBhdGlibGUgd2l0aCB0aGUgZ2l2ZW4gZm9ybVxuICpcbiAqIEBwYXJhbSBzb3VyY2UgYW4gZW50aXR5IChvciBzdWJlbnRpdHkpXG4gKiBAcGFyYW0gY29udHJvbFxuICogQHBhcmFtIHBhdGhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkYXB0VmFsdWVUb0NvbnRyb2woc291cmNlOiBhbnl8dW5kZWZpbmVkLCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIHBhdGg/OiBzdHJpbmcpOiBhbnkge1xuICBjb25zdCBwYXRoUHJlZml4ID0gcGF0aCA/IHBhdGggKyAnLicgOiAnJztcblxuICAvLyBGb3JtIGdyb3VwXG4gIGlmIChjb250cm9sIGluc3RhbmNlb2YgVW50eXBlZEZvcm1Hcm91cCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBndWFyZC1mb3ItaW5cbiAgICBmb3IgKGNvbnN0IGtleSBpbiBjb250cm9sLmNvbnRyb2xzKSB7XG4gICAgICByZXN1bHRba2V5XSA9IGFkYXB0VmFsdWVUb0NvbnRyb2woc291cmNlICYmIHNvdXJjZVtrZXldLCBjb250cm9sLmNvbnRyb2xzW2tleV0sIHBhdGhQcmVmaXggKyBrZXkpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLy8gQXJyYXlcbiAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUFycmF5KSB7XG5cbiAgICAvLyBTcGxpdCwgaWYgbWFueSB2YWx1ZXMgaW4gYSBzdHJpbmdcbiAgICBpZiAodHlwZW9mIHNvdXJjZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHNvdXJjZSA9IHNvdXJjZS5zcGxpdCgnfCcpO1xuICAgIH1cbiAgICAvLyBTa2lwIGlmIHZhbHVlIGlzIG5vdCBhbiBhcnJheVxuICAgIGlmICghQXJyYXkuaXNBcnJheShzb3VyY2UpKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgLy8gUmVzaXphYmxlIGFycmF5XG4gICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBBcHBGb3JtQXJyYXkpIHtcbiAgICAgIGNvbnN0IGV4YW1wbGVDb250cm9sID0gY29udHJvbC5jcmVhdGVDb250cm9sKCk7XG4gICAgICByZXR1cm4gc291cmNlLm1hcCgoaXRlbSwgaW5kZXgpID0+IGFkYXB0VmFsdWVUb0NvbnRyb2woaXRlbSwgZXhhbXBsZUNvbnRyb2wsIHBhdGhQcmVmaXggKyAnIycgKyBpbmRleCkpIGFzIGFueVtdO1xuICAgIH1cblxuICAgIC8vIExlZ2FjeSBhcnJheVxuICAgIGVsc2UgaWYgKGNvbnRyb2wubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmlyc3RDb250cm9sID0gY29udHJvbC5hdCgwKTtcbiAgICAgIC8vIFVzZSB0aGUgZmlyc3QgZm9ybSBncm91cCwgYXMgbW9kZWxcbiAgICAgIGxldCByZXN1bHQgPSBzb3VyY2UubWFwKChpdGVtLCBpbmRleCkgPT4gYWRhcHRWYWx1ZVRvQ29udHJvbChpdGVtLCBmaXJzdENvbnRyb2wsIHBhdGhQcmVmaXggKyAnIycgKyBpbmRleCkpIGFzIGFueVtdO1xuXG4gICAgICAvLyBUcnVuY2F0ZSBpZiB0b28gbWFueSB2YWx1ZXNcbiAgICAgIGlmIChyZXN1bHQubGVuZ3RoID4gY29udHJvbC5sZW5ndGgpIHtcbiAgICAgICAgaWYgKGZpcnN0Q29udHJvbCBpbnN0YW5jZW9mIFVudHlwZWRGb3JtQ29udHJvbCkge1xuICAgICAgICAgIGZvciAobGV0IGkgPSBjb250cm9sLmxlbmd0aDsgaSA8IHJlc3VsdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29udHJvbC5wdXNoKG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wobnVsbCwgZmlyc3RDb250cm9sLnZhbGlkYXRvcikpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oYFdBUk46IHBsZWFzZSByZXNpemUgdGhlIEZvcm1BcnJheSAnJHtwYXRofHwnJ30nIHRvIHRoZSBzYW1lIGxlbmd0aCBvZiB0aGUgaW5wdXQgYXJyYXlgKTtcbiAgICAgICAgICByZXN1bHQgPSByZXN1bHQuc2xpY2UoMCwgY29udHJvbC5sZW5ndGgpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIEFkZCB2YWx1ZXMgaWYgbm90IGVub3VnaHRcbiAgICAgIGVsc2UgaWYgKHJlc3VsdC5sZW5ndGggPCBjb250cm9sLmxlbmd0aCkge1xuICAgICAgICAvL2NvbnNvbGUud2FybihgV0FSTjogQWRkaW5nIG51bGwgdmFsdWUgdG8gYXJyYXkgdmFsdWVzYCk7XG4gICAgICAgIGZvciAobGV0IGkgPSByZXN1bHQubGVuZ3RoOyBpIDwgY29udHJvbC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKG51bGwpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICAvLyBTa2lwIGlmIHVuYWJsZSB0byBmaW5kIGEgY29udHJvbCBpbiB0aGUgYXJyYXlcbiAgICBlbHNlIHtcbiAgICAgIGlmIChpc05vdEVtcHR5QXJyYXkoc291cmNlKSkgY29uc29sZS53YXJuKGBXQVJOOiBwbGVhc2UgcmVzaXplIHRoZSBGb3JtQXJyYXkgJyR7cGF0aH0nIHRvIHRoZSBzYW1lIGxlbmd0aCBvZiB0aGUgaW5wdXQgYXJyYXlgKTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cblxuICAvLyBGb3JtIGNvbnRyb2xcbiAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUNvbnRyb2wpIHtcbiAgICAvLyBEYXRlXG4gICAgaWYgKGlzTW9tZW50KHNvdXJjZSkpIHtcbiAgICAgIHJldHVybiB0b0RhdGVJU09TdHJpbmcoc291cmNlKTtcbiAgICB9XG4gICAgLy8gQW55IG90aGVyIGNvbnRyb2w6IHJlcGxhY2UgdW5kZWZpbmVkIGJ5IG51bGwgdmFsdWVcbiAgICAvLyBiZWNhdXNlIFVuZGVmaW5lZCBpcyBub3QgYXV0aG9yaXplZCBhcyBjb250cm9sIHZhbHVlXG4gICAgZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbElmVW5kZWZpbmVkKHNvdXJjZSk7XG4gICAgfVxuICB9XG5cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvZ0Zvcm1FcnJvcnMoY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBsb2dQcmVmaXg/OiBzdHJpbmcsIHBhdGg/OiBzdHJpbmcpIHtcbiAgaWYgKCFjb250cm9sIHx8IGNvbnRyb2wudmFsaWQpIHJldHVybjtcbiAgbG9nUHJlZml4ID0gbG9nUHJlZml4IHx8ICcnO1xuICAvLyBGb3JtIGdyb3VwXG4gIGlmIChjb250cm9sIGluc3RhbmNlb2YgVW50eXBlZEZvcm1Hcm91cCkge1xuICAgIGlmICghcGF0aCkgY29uc29sZS53YXJuKGAke2xvZ1ByZWZpeH0gRm9ybSBlcnJvcnM6YCk7XG4gICAgaWYgKGNvbnRyb2wuZXJyb3JzKSB7XG4gICAgICBPYmplY3Qua2V5cyhjb250cm9sLmVycm9ycykuZm9yRWFjaChlcnJvciA9PlxuICAgICAgICBjb25zb2xlLndhcm4oYCR7bG9nUHJlZml4fSAtPiAke3BhdGggfHwgJyd9ICgke2Vycm9yfSlgKVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKGNvbnRyb2wuY29udHJvbHMpIHtcbiAgICAgIE9iamVjdC5rZXlzKGNvbnRyb2wuY29udHJvbHMpLmZvckVhY2goY2hpbGQgPT5cbiAgICAgICAgbG9nRm9ybUVycm9ycyhjb250cm9sLmNvbnRyb2xzW2NoaWxkXSwgbG9nUHJlZml4LCAocGF0aCA/IGAke3BhdGh9LiR7Y2hpbGR9YCA6IGNoaWxkKSkgLy8gUmVjdXJzaXZlIGNhbGxcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIC8vIEZvcm0gYXJyYXlcbiAgZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIFVudHlwZWRGb3JtQXJyYXkpIHtcbiAgICBpZiAoY29udHJvbC5lcnJvcnMpIHtcbiAgICAgIE9iamVjdC5rZXlzKGNvbnRyb2wuZXJyb3JzKS5mb3JFYWNoKGVycm9yID0+XG4gICAgICAgIGNvbnNvbGUud2FybihgJHtsb2dQcmVmaXh9IC0+ICR7cGF0aCB8fCAnJ30gKCR7ZXJyb3J9KWApXG4gICAgICApO1xuICAgIH1cbiAgICBjb250cm9sLmNvbnRyb2xzLmZvckVhY2goKGNoaWxkLCBpbmRleCkgPT4ge1xuICAgICAgbG9nRm9ybUVycm9ycyhjaGlsZCwgbG9nUHJlZml4LCAocGF0aCA/IGAke3BhdGh9LiR7aW5kZXh9YCA6IGAke2luZGV4fWApKTsgLy8gUmVjdXJzaXZlIGNhbGxcbiAgICB9KTtcbiAgfVxuICAvLyBPdGhlciBjb250cm9sJ3MgZXJyb3JzXG4gIGVsc2UgaWYgKGNvbnRyb2wuZXJyb3JzKSB7XG4gICAgT2JqZWN0LmtleXMoY29udHJvbC5lcnJvcnMpLmZvckVhY2goZXJyb3IgPT5cbiAgICAgIGNvbnNvbGUud2FybihgJHtsb2dQcmVmaXh9IC0+ICR7cGF0aCB8fCAnJ30gKCR7ZXJyb3J9KWApXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybUVycm9ycyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIG9wdHM/OiB7XG4gIGNvbnRyb2xOYW1lPzogc3RyaW5nO1xuICByZXN1bHQ/OiBGb3JtRXJyb3JzO1xuICByZWN1cnNpdmU/OiBib29sZWFuO1xufSk6IEZvcm1FcnJvcnMge1xuICBpZiAoIWNvbnRyb2wgfHwgY29udHJvbC52YWxpZCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICBvcHRzID0gb3B0cyB8fMKge307XG4gIG9wdHMucmVzdWx0ID0gb3B0cy5yZXN1bHQgfHwge307XG5cbiAgLy8gRm9ybSBncm91cFxuICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIFVudHlwZWRGb3JtR3JvdXApIHtcbiAgICAvLyBDb3B5IGVycm9yc1xuICAgIGlmIChjb250cm9sLmVycm9ycykge1xuICAgICAgaWYgKG9wdHMuY29udHJvbE5hbWUpIHtcbiAgICAgICAgb3B0cy5yZXN1bHRbb3B0cy5jb250cm9sTmFtZV0gPSB7XG4gICAgICAgICAgLi4uY29udHJvbC5lcnJvcnNcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBvcHRzLnJlc3VsdCA9IHtcbiAgICAgICAgICAuLi5vcHRzLnJlc3VsdCxcbiAgICAgICAgICAuLi5jb250cm9sLmVycm9yc1xuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghb3B0cyB8fCBvcHRzLnJlY3Vyc2l2ZSAhPT0gZmFsc2UpIHtcbiAgICAgIC8vIExvb3Agb24gY2hpbGRyZW4gY29udHJvbHNcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIGNvbnRyb2wuY29udHJvbHMpIHtcbiAgICAgICAgaWYgKGNvbnRyb2wuY29udHJvbHMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgIGNvbnN0IGNoaWxkID0gY29udHJvbC5jb250cm9sc1trZXldO1xuICAgICAgICAgIGlmIChjaGlsZC5lbmFibGVkKSB7XG4gICAgICAgICAgICBnZXRGb3JtRXJyb3JzKGNoaWxkLCB7XG4gICAgICAgICAgICAgIC4uLm9wdHMsXG4gICAgICAgICAgICAgIGNvbnRyb2xOYW1lOiBvcHRzLmNvbnRyb2xOYW1lID8gW29wdHMuY29udHJvbE5hbWUsIGtleV0uam9pbignLicpIDoga2V5LFxuICAgICAgICAgICAgICByZXN1bHQ6IG9wdHMucmVzdWx0IC8vIE1ha2Ugc3VyZSB0byBrZWVwIHRoZSBzYW1lIHJlc3VsdCBvYmplY3RcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEZvcm0gYXJyYXlcbiAgZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIFVudHlwZWRGb3JtQXJyYXkpIHtcbiAgICBjb250cm9sLmNvbnRyb2xzLmZvckVhY2goKGNoaWxkLCBpbmRleCkgPT4ge1xuICAgICAgZ2V0Rm9ybUVycm9ycyhjaGlsZCwge1xuICAgICAgICAuLi5vcHRzLFxuICAgICAgICBjb250cm9sTmFtZTogKG9wdHMuY29udHJvbE5hbWUgfHwgJycpICsgJy4nICsgaW5kZXgsXG4gICAgICAgIHJlc3VsdDogb3B0cy5yZXN1bHQgLy8gTWFrZSBzdXJlIHRvIGtlZXAgdGhlIHNhbWUgcmVzdWx0IG9iamVjdFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBPdGhlciB0eXBlIG9mIGNvbnRyb2wgKGUuZyBzaW1wbGUgY29udHJvbClcbiAgZWxzZSBpZiAoY29udHJvbC5lcnJvcnMpIHtcbiAgICBpZiAob3B0cy5jb250cm9sTmFtZSkge1xuICAgICAgb3B0cy5yZXN1bHRbb3B0cy5jb250cm9sTmFtZV0gPSB7XG4gICAgICAgIC4uLmNvbnRyb2wuZXJyb3JzXG4gICAgICB9O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIG9wdHMucmVzdWx0ID0ge1xuICAgICAgICAuLi5vcHRzLnJlc3VsdCxcbiAgICAgICAgLi4uY29udHJvbC5lcnJvcnNcbiAgICAgIH07XG4gICAgfVxuICB9XG4gIHJldHVybiBvcHRzLnJlc3VsdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbnRyb2xGcm9tUGF0aChmb3JtOiBVbnR5cGVkRm9ybUdyb3VwLCBwYXRoOiBzdHJpbmcpOiBBYnN0cmFjdENvbnRyb2wge1xuICBjb25zdCBpID0gcGF0aC5pbmRleE9mKCcuJyk7XG4gIGlmIChpID09PSAtMSkge1xuICAgIHJldHVybiBmb3JtLmNvbnRyb2xzW3BhdGhdO1xuICB9XG4gIGNvbnN0IGtleSA9IHBhdGguc3Vic3RyaW5nKDAsIGkpO1xuICBpZiAoZm9ybS5jb250cm9sc1trZXldIGluc3RhbmNlb2YgVW50eXBlZEZvcm1Hcm91cCkge1xuICAgIHJldHVybiBnZXRDb250cm9sRnJvbVBhdGgoKGZvcm0uY29udHJvbHNba2V5XSBhcyBVbnR5cGVkRm9ybUdyb3VwKSwgcGF0aC5zdWJzdHJpbmcoaSArIDEpKTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZm9ybSBwYXRoOiAnJHtrZXl9JyBzaG91bGQgYmUgYSBmb3JtIGdyb3VwLmApO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBkaXNhYmxlQ29udHJvbHMoZm9ybTogVW50eXBlZEZvcm1Hcm91cCwgcGF0aHM6IHN0cmluZ1tdLCBvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gIChwYXRocyB8fCBbXSkuZm9yRWFjaChwYXRoID0+IHtcbiAgICBjb25zdCBjb250cm9sID0gZ2V0Q29udHJvbEZyb21QYXRoKGZvcm0sIHBhdGgpO1xuICAgIGlmIChjb250cm9sKSBjb250cm9sLmRpc2FibGUob3B0cyk7XG4gIH0pO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRWYWx1ZUluQXJyYXkoYXJyYXlDb250cm9sOiBVbnR5cGVkRm9ybUFycmF5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVDb250cm9sOiAodmFsdWU/OiBhbnkpID0+IEFic3RyYWN0Q29udHJvbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXF1YWxzOiAodjE6IGFueSwgdjI6IGFueSkgPT4gYm9vbGVhbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNFbXB0eTogKHZhbHVlOiBhbnkpID0+IGJvb2xlYW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBhbnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM/OiB7IGVtaXRFdmVudDogYm9vbGVhbjsgaW5zZXJ0QXQ/OiBudW1iZXIgfSk6IGJvb2xlYW4ge1xuICBjb25zdCBkaXNhYmxlZCA9IGFycmF5Q29udHJvbC5kaXNhYmxlZDtcblxuICBsZXQgaGFzQ2hhbmdlZCA9IGZhbHNlO1xuICBsZXQgaW5kZXggPSAtMTtcblxuICAvLyBTZWFyY2ggaWYgdmFsdWUgYWxyZWFkeSBleGlzdHNcbiAgaWYgKCFpc0VtcHR5KHZhbHVlKSkge1xuICAgIGluZGV4ID0gKGFycmF5Q29udHJvbC52YWx1ZSB8fCBbXSkuZmluZEluZGV4KHYgPT4gZXF1YWxzKHZhbHVlLCB2KSk7XG4gIH1cblxuICAvLyBJZiB2YWx1ZSBub3QgZXhpc3RzLCBidXQgbGFzdCB2YWx1ZSBpcyBlbXB0eTogdXNlIGl0XG4gIGlmIChpbmRleCA9PT0gLTEgJiYgYXJyYXlDb250cm9sLmxlbmd0aCAmJiBpc0VtcHR5KGFycmF5Q29udHJvbC5hdChhcnJheUNvbnRyb2wubGVuZ3RoIC0gMSkudmFsdWUpKSB7XG4gICAgaW5kZXggPSBhcnJheUNvbnRyb2wubGVuZ3RoIC0gMTtcbiAgfVxuXG4gIC8vIFJlcGxhY2UgdGhlIGV4aXN0aW5nIHZhbHVlXG4gIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICBpZiAoIWlzRW1wdHkodmFsdWUpKSB7XG4gICAgICBhcnJheUNvbnRyb2wuYXQoaW5kZXgpLnBhdGNoVmFsdWUodmFsdWUsIG9wdGlvbnMpO1xuICAgICAgaGFzQ2hhbmdlZCA9IHRydWU7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGNvbnN0IGNvbnRyb2wgPSBjcmVhdGVDb250cm9sKHZhbHVlKTtcblxuICAgIC8vIEFwcGx5IHBhcmVudCBkaXNhYmxlZCBzdGF0ZSwgYmVmb3JlIHRvIHB1c2ggaXQgaW50byB0aGUgYXJyYXlcbiAgICAvLyBUaGlzIGlzIG5lZWQgdG8gYXZvaWQgcGFyZW50IGZvcm0gdG8gYmUgZW5hYmxlZFxuICAgIGlmIChkaXNhYmxlZCAmJiBjb250cm9sLmVuYWJsZWQpIGNvbnRyb2wuZGlzYWJsZSh7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgIGVsc2UgaWYgKCFkaXNhYmxlZCAmJiBjb250cm9sLmRpc2FibGVkKSBjb250cm9sLmVuYWJsZSh7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuXG4gICAgaWYgKGlzTm90TmlsT3JOYU4ob3B0aW9ucz8uaW5zZXJ0QXQpKSB7XG4gICAgICBhcnJheUNvbnRyb2wuaW5zZXJ0KG9wdGlvbnMuaW5zZXJ0QXQsIGNvbnRyb2wsIG9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhcnJheUNvbnRyb2wucHVzaChjb250cm9sLCBvcHRpb25zKTtcbiAgICB9XG4gICAgaGFzQ2hhbmdlZCA9IHRydWU7XG4gIH1cblxuICBpZiAoaGFzQ2hhbmdlZCkge1xuICAgIGlmICghb3B0aW9ucyB8fCBvcHRpb25zLmVtaXRFdmVudCAhPT0gZmFsc2UpIHtcbiAgICAgIC8vIE1hcmsgYXJyYXkgY29udHJvbCBkaXJ0eVxuICAgICAgaWYgKCFpc0VtcHR5KHZhbHVlKSkge1xuICAgICAgICBhcnJheUNvbnRyb2wubWFya0FzRGlydHkoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gaGFzQ2hhbmdlZDtcbn1cblxuLyoqXG4gKiBTZXQgYW4gYXJyYXkgdXNpbmcgZ2l2ZW4gZGVmYXVsdCB2YWx1ZXMuIEVhY2ggZGVmYXVsdCB2YWx1ZSB3aWxsIGJlIHBhc3MgdG8gdGhlICdjcmVhdGVDb250cm9sKCknIGZ1bmN0aW9uXG4gKlxuICogQHBhcmFtIGFycmF5Q29udHJvbFxuICogQHBhcmFtIGNyZWF0ZUNvbnRyb2xcbiAqIEBwYXJhbSBkZWZhdWx0VmFsdWVzXG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gaW5pdEFycmF5Q29udHJvbHNGcm9tVmFsdWVzKGFycmF5Q29udHJvbDogVW50eXBlZEZvcm1BcnJheSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlQ29udHJvbDogKHZhbHVlPzogYW55KSA9PiBBYnN0cmFjdENvbnRyb2wsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZXM6IGFueVtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPzoge2VtaXRFdmVudD86IGJvb2xlYW59KTogYm9vbGVhbiB7XG4gIGlmIChhcnJheUNvbnRyb2wubGVuZ3RoID09PSAwICYmICghZGVmYXVsdFZhbHVlcyB8fCBkZWZhdWx0VmFsdWVzLmxlbmd0aCA9PT0gMCkpIHJldHVybiBmYWxzZTsgLy8gTm8gY2hhbmdlcyBuZWVkXG5cbiAgY29uc3QgZGlzYWJsZWQgPSBhcnJheUNvbnRyb2wuZGlzYWJsZWQ7XG5cbiAgd2hpbGUgKGFycmF5Q29udHJvbC5sZW5ndGggPiAwKSB7XG4gICAgYXJyYXlDb250cm9sLnJlbW92ZUF0KGFycmF5Q29udHJvbC5sZW5ndGggLSAxLCBvcHRpb25zKTtcbiAgfVxuXG4gIChkZWZhdWx0VmFsdWVzIHx8IFtdKS5mb3JFYWNoKHZhbHVlID0+IHtcbiAgICBjb25zdCBjb250cm9sID0gY3JlYXRlQ29udHJvbCh2YWx1ZSk7XG5cbiAgICAvLyBBcHBseSBwYXJlbnQgZGlzYWJsZWQgc3RhdGUsIGJlZm9yZSB0byBwdXNoIGl0IGludG8gdGhlIGFycmF5XG4gICAgLy8gVGhpcyBpcyBuZWVkIHRvIGF2b2lkIHBhcmVudCBmb3JtIHRvIGJlIGVuYWJsZWRcbiAgICBpZiAoZGlzYWJsZWQgJiYgY29udHJvbC5lbmFibGVkKSBjb250cm9sLmRpc2FibGUoe2VtaXRFdmVudDogZmFsc2V9KTtcbiAgICBlbHNlIGlmICghZGlzYWJsZWQgJiYgY29udHJvbC5kaXNhYmxlZCkgY29udHJvbC5lbmFibGUoe2VtaXRFdmVudDogZmFsc2V9KTtcblxuICAgIGFycmF5Q29udHJvbC5wdXNoKGNvbnRyb2wsIG9wdGlvbnMpO1xuICB9KTtcblxuICByZXR1cm4gdHJ1ZTsgLy8gSGFzIHNvbWUgY2hhbmdlc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzaXplQXJyYXkoYXJyYXlDb250cm9sOiBVbnR5cGVkRm9ybUFycmF5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZUNvbnRyb2w6ICgpID0+IEFic3RyYWN0Q29udHJvbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGg6IG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPzoge2VtaXRFdmVudD86IGJvb2xlYW59KTogYm9vbGVhbiB7XG4gIGlmIChhcnJheUNvbnRyb2wubGVuZ3RoID09PSBsZW5ndGgpIHJldHVybiBmYWxzZTsgLy8gTm8gY2hhbmdlcyBuZWVkXG5cbiAgY29uc3QgZGlzYWJsZWQgPSBhcnJheUNvbnRyb2wuZGlzYWJsZWQ7XG5cbiAgLy8gUmVkdWNlIHNpemVcbiAgd2hpbGUgKGFycmF5Q29udHJvbC5sZW5ndGggPiBsZW5ndGgpIHtcbiAgICBhcnJheUNvbnRyb2wucmVtb3ZlQXQoYXJyYXlDb250cm9sLmxlbmd0aCAtIDEsIG9wdGlvbnMpO1xuICB9XG5cbiAgLy8gSW5jcmVhc2Ugc2l6ZVxuICB3aGlsZSAoYXJyYXlDb250cm9sLmxlbmd0aCA8IGxlbmd0aCkge1xuICAgIGNvbnN0IGNvbnRyb2wgPSBjcmVhdGVDb250cm9sKCk7XG5cbiAgICAvLyBBcHBseSBwYXJlbnQgZGlzYWJsZWQgc3RhdGUsIGJlZm9yZSB0byBwdXNoIGl0IGludG8gdGhlIGFycmF5XG4gICAgLy8gVGhpcyBpcyBuZWVkIHRvIGF2b2lkIHBhcmVudCBmb3JtIHRvIGJlIGVuYWJsZWQsIGFmdGVyIGNhbGxpbmcgcmVzaXplQXJyYXkoKVxuICAgIGlmIChkaXNhYmxlZCAmJiBjb250cm9sLmVuYWJsZWQpIGNvbnRyb2wuZGlzYWJsZSh7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgIGVsc2UgaWYgKCFkaXNhYmxlZCAmJiBjb250cm9sLmRpc2FibGVkKSBjb250cm9sLmVuYWJsZSh7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuXG4gICAgYXJyYXlDb250cm9sLnB1c2goY29udHJvbCwgb3B0aW9ucyk7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTsgLy8gSGFzIHNvbWUgY2hhbmdlc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlVmFsdWVJbkFycmF5KGFycmF5Q29udHJvbDogVW50eXBlZEZvcm1BcnJheSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNFbXB0eTogKHZhbHVlOiBhbnkpID0+IGJvb2xlYW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgYXJyYXlDb250cm9sLnJlbW92ZUF0KGluZGV4KTtcbiAgYXJyYXlDb250cm9sLm1hcmtBc0RpcnR5KCk7XG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYXJWYWx1ZUluQXJyYXkoYXJyYXlDb250cm9sOiBVbnR5cGVkRm9ybUFycmF5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRW1wdHk6ICh2YWx1ZTogYW55KSA9PiBib29sZWFuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcblxuICBjb25zdCBjb250cm9sID0gYXJyYXlDb250cm9sLmF0KGluZGV4KTtcbiAgaWYgKGlzRW1wdHkoY29udHJvbC52YWx1ZSkpIHJldHVybiBmYWxzZTsgLy8gc2tpcCAobm90IG5lZWQgdG8gY2xlYXIpXG5cbiAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUdyb3VwKSB7XG4gICAgY29weUVudGl0eTJGb3JtKHt9LCBjb250cm9sKTtcbiAgfVxuICBlbHNlIGlmIChjb250cm9sIGluc3RhbmNlb2YgVW50eXBlZEZvcm1BcnJheSkge1xuICAgIGNvbnRyb2wuc2V0VmFsdWUoW10pO1xuICB9XG4gIGVsc2Uge1xuICAgIGNvbnRyb2wuc2V0VmFsdWUobnVsbCk7XG4gIH1cbiAgYXJyYXlDb250cm9sLm1hcmtBc0RpcnR5KCk7XG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFya0FsbEFzVG91Y2hlZChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgaWYgKCFjb250cm9sKSByZXR1cm47XG4gIGlmIChjb250cm9sIGluc3RhbmNlb2YgVW50eXBlZEZvcm1Hcm91cCkge1xuICAgIG1hcmtGb3JtR3JvdXBBc1RvdWNoZWQoY29udHJvbCwgey4uLm9wdHMsIG9ubHlTZWxmOiB0cnVlfSk7IC8vIHJlY3Vyc2l2ZSBjYWxsXG4gIH1cbiAgZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIFVudHlwZWRGb3JtQXJyYXkpIHtcbiAgICBjb250cm9sLm1hcmtBc1RvdWNoZWQoe29ubHlTZWxmOiB0cnVlfSk7XG4gICAgKGNvbnRyb2wuY29udHJvbHMgfHwgW10pLmZvckVhY2goYyA9PiBtYXJrQ29udHJvbEFzVG91Y2hlZChjLCB7Li4ub3B0cywgb25seVNlbGY6IHRydWV9KSk7IC8vIHJlY3Vyc2l2ZSBjYWxsXG4gIH1cbiAgZWxzZSB7XG4gICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKHtvbmx5U2VsZjogdHJ1ZX0pO1xuICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7Li4ub3B0cywgb25seVNlbGY6IHRydWV9KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFya0Zvcm1Hcm91cEFzVG91Y2hlZChmb3JtOiBVbnR5cGVkRm9ybUdyb3VwLCBvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gIGlmICghZm9ybSkgcmV0dXJuO1xuICBmb3JtLm1hcmtBc1RvdWNoZWQob3B0cyk7XG4gIE9iamVjdC5rZXlzKGZvcm0uY29udHJvbHMpXG4gICAgLm1hcChrZXkgPT4gZm9ybS5jb250cm9sc1trZXldKVxuICAgIC5maWx0ZXIoY29udHJvbCA9PiBjb250cm9sLmVuYWJsZWQpXG4gICAgLmZvckVhY2goY29udHJvbCA9PiBtYXJrQ29udHJvbEFzVG91Y2hlZChjb250cm9sLCBvcHRzKSk7XG4gIGZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7Li4ub3B0cywgb25seVNlbGY6IHRydWV9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hcmtDb250cm9sQXNUb3VjaGVkKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgb3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSkge1xuICBpZiAoIWNvbnRyb2wpIHJldHVybjtcbiAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUdyb3VwKSB7XG4gICAgbWFya0FsbEFzVG91Y2hlZChjb250cm9sLCB7IC4uLm9wdHMsIG9ubHlTZWxmOiB0cnVlfSk7IC8vIHJlY3Vyc2l2ZSBjYWxsXG4gIH1cbiAgZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIFVudHlwZWRGb3JtQXJyYXkpIHtcbiAgICAoY29udHJvbC5jb250cm9scyB8fCBbXSkuZm9yRWFjaChjID0+IG1hcmtDb250cm9sQXNUb3VjaGVkKGMsIHsgLi4ub3B0cywgb25seVNlbGY6IHRydWV9KSk7IC8vIHJlY3Vyc2l2ZSBjYWxsXG4gIH1cbiAgZWxzZSB7XG4gICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKHtvbmx5U2VsZjogdHJ1ZX0pO1xuICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7Li4ub3B0cywgb25seVNlbGY6IHRydWV9KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlVmFsdWVBbmRWYWxpZGl0eShmb3JtOiBVbnR5cGVkRm9ybUdyb3VwLCBvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gIGlmICghZm9ybSkgcmV0dXJuO1xuICBmb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkob3B0cyk7XG4gIE9iamVjdC5rZXlzKGZvcm0uY29udHJvbHMpXG4gICAgLm1hcChrZXkgPT4gZm9ybS5jb250cm9sc1trZXldKVxuICAgIC5maWx0ZXIoY29udHJvbCA9PiBjb250cm9sLmVuYWJsZWQpXG4gICAgLmZvckVhY2goY29udHJvbCA9PiB7XG4gICAgICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIFVudHlwZWRGb3JtR3JvdXApIHtcbiAgICAgICAgdXBkYXRlVmFsdWVBbmRWYWxpZGl0eShjb250cm9sLCB7Li4ub3B0cywgb25seVNlbGY6IHRydWV9KTsgLy8gcmVjdXJzaXZlIGNhbGxcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoey4uLm9wdHMsIG9ubHlTZWxmOiB0cnVlfSk7XG4gICAgICB9XG4gICAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXJrQXNVbnRvdWNoZWQoZm9ybTogVW50eXBlZEZvcm1Hcm91cCwgb3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW4gfSkge1xuICBpZiAoIWZvcm0pIHJldHVybjtcbiAgZm9ybS5tYXJrQXNVbnRvdWNoZWQob3B0cyk7XG4gIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGZvcm0uY29udHJvbHMpXG4gICAgLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtLmdldChrZXkpO1xuICAgICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUdyb3VwKSB7XG4gICAgICAgIG1hcmtBc1VudG91Y2hlZChjb250cm9sLCB7b25seVNlbGY6IHRydWV9KTsgLy8gcmVjdXJzaXZlIGNhbGxcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBjb250cm9sLm1hcmtBc1VudG91Y2hlZCh7b25seVNlbGY6IHRydWV9KTtcbiAgICAgICAgY29udHJvbC5zZXRFcnJvcnMobnVsbCk7XG4gICAgICB9XG4gICAgfSk7XG59XG5cbi8qKlxuICogV2FpdCBlbmQgb2YgYXN5bmMgdmFsaWRhdGlvbiAobm90IHBlbmRpbmcpLiBUaGlzIG5lZWQgdG8gaW1wbGVtZW50IHtwZW5kaW5nOiBib29sZWFufVxuICogcmV0dXJuIGZhbHNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3YWl0V2hpbGVQZW5kaW5nPFQgZXh0ZW5kcyB7IHBlbmRpbmc6IGJvb2xlYW4gfT4oZm9ybTogVCwgb3B0cz86IFdhaXRGb3JPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHByZWRpY2F0ZTogUHJlZGljYXRlPHZvaWQ+ID0gKCkgPT4gZm9ybS5wZW5kaW5nICE9PSB0cnVlO1xuICByZXR1cm4gd2FpdEZvcihwcmVkaWNhdGUsIG9wdHMpO1xufVxuXG4vKipcbiAqIFdhaXQgZm9ybSBpcyBpZGxlIChub3QgbG9hZGluZykuIFRoaXMgbmVlZCB0byBpbXBsZW1lbnQge2xvYWRpbmc6IGJvb2xlYW59XG4gKlxuICogQHBhcmFtIGZvcm1cbiAqIEBwYXJhbSBvcHRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3YWl0SWRsZTxUIGV4dGVuZHMgeyBsb2FkaW5nOiBib29sZWFuIH0+KGZvcm06IFQsIG9wdHM/OiBXYWl0Rm9yT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBwcmVkaWNhdGU6IFByZWRpY2F0ZTx2b2lkPiA9ICgpID0+IGZvcm0ubG9hZGluZyAhPT0gdHJ1ZTtcbiAgcmV0dXJuIHdhaXRGb3IocHJlZGljYXRlLCBvcHRzKTtcbn1cbiJdfQ==
|