ca-components 0.0.1 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/assets/json/ca-table.json +59 -0
- package/esm2022/assets/json/ta-detail-dropdown.json +80 -0
- package/esm2022/lib/animation/in-out.animation.mjs +73 -0
- package/esm2022/lib/animations/accordion-animation.mjs +25 -0
- package/esm2022/lib/animations/animation.mjs +30 -0
- package/esm2022/lib/animations/close-form.animation.mjs +18 -0
- package/esm2022/lib/animations/expand-search-button.animation.mjs +17 -0
- package/esm2022/lib/animations/show.animation.mjs +20 -0
- package/esm2022/lib/animations/tabs-modal.animation.mjs +78 -0
- package/esm2022/lib/ca-components.module.mjs +127 -0
- package/esm2022/lib/components/ca-app-tooltip-v2/ca-app-tooltip-v2.component.mjs +53 -0
- package/esm2022/lib/components/ca-details-dropdown/ca-details-dropdown.component.mjs +116 -0
- package/esm2022/lib/components/ca-details-dropdown/models/detail-dropdown.model.mjs +2 -0
- package/esm2022/lib/components/ca-details-dropdown/utils/svg-routes/detail-dropdown-svg-routes.mjs +4 -0
- package/esm2022/lib/components/ca-dropdown/ca-dropdown.component.mjs +37 -0
- package/esm2022/lib/components/ca-filters/ca-filter.component.mjs +165 -0
- package/esm2022/lib/components/ca-filters/components/ca-money-filter/ca-money-filter.component.mjs +541 -0
- package/esm2022/lib/components/ca-filters/components/ca-money-filter/config/ca-money-filter.config.mjs +75 -0
- package/esm2022/lib/components/ca-filters/components/ca-status-filter/ca-status-filter.component.mjs +191 -0
- package/esm2022/lib/components/ca-filters/components/ca-time-filter/ca-time-filter.component.mjs +131 -0
- package/esm2022/lib/components/ca-filters/utils/constants/status-filter.constants.mjs +19 -0
- package/esm2022/lib/components/ca-filters/utils/constants/time-filter.constants.mjs +45 -0
- package/esm2022/lib/components/ca-filters/utils/svg-routes/ca-filters-svg-routes.mjs +7 -0
- package/esm2022/lib/components/ca-filters/utils/svg-routes/ca-money-filter-svg-routes.mjs +4 -0
- package/esm2022/lib/components/ca-input/ca-input.component.mjs +179 -0
- package/esm2022/lib/components/ca-input/components/ca-input-clear/ca-input-clear.component.mjs +55 -0
- package/esm2022/lib/components/ca-input/components/ca-input-password/ca-input-password.component.mjs +63 -0
- package/esm2022/lib/components/ca-input/components/ca-input-placeholder-icon/ca-input-placeholder-icon.component.mjs +52 -0
- package/esm2022/lib/components/ca-input/config/ca-input.config.mjs +2 -0
- package/esm2022/lib/components/ca-input/models/label-color.model.mjs +2 -0
- package/esm2022/lib/components/ca-input/pipes/input-class.pipe.mjs +89 -0
- package/esm2022/lib/components/ca-input/pipes/input-clear-class.pipe.mjs +76 -0
- package/esm2022/lib/components/ca-input/pipes/input-container-class.pipe.mjs +57 -0
- package/esm2022/lib/components/ca-input/pipes/input-error.pipe.mjs +85 -0
- package/esm2022/lib/components/ca-input/pipes/input-password-eye-class.pipe.mjs +37 -0
- package/esm2022/lib/components/ca-input/pipes/input-placeholder-icon.class.pipe.mjs +57 -0
- package/esm2022/lib/components/ca-input/pipes/input-type.pipe.mjs +25 -0
- package/esm2022/lib/components/ca-input/pipes/label-class.pipe.mjs +32 -0
- package/esm2022/lib/components/ca-input/pipes/show-clear.pipe.mjs +22 -0
- package/esm2022/lib/components/ca-input/pipes/show-invalid-danger-mark.pipe.mjs +27 -0
- package/esm2022/lib/components/ca-input/pipes/show-valid-check.pipe.mjs +27 -0
- package/esm2022/lib/components/ca-input/services/ca-input-state.service.mjs +92 -0
- package/esm2022/lib/components/ca-input/utils/input-svg-routes.mjs +9 -0
- package/esm2022/lib/components/ca-input-radiobuttons/ca-input-radiobuttons.component.mjs +43 -0
- package/esm2022/lib/components/ca-map/ca-map.component.mjs +329 -0
- package/esm2022/lib/components/ca-map/enums/google-map.enum.mjs +6 -0
- package/esm2022/lib/components/ca-map/enums/toolbar-filter-string.enum.mjs +40 -0
- package/esm2022/lib/components/ca-map/models/map.model.mjs +2 -0
- package/esm2022/lib/components/ca-map/utils/helpers/map.helper.mjs +87 -0
- package/esm2022/lib/components/ca-map/utils/map-svg-routes/map-svg-routes.mjs +5 -0
- package/esm2022/lib/components/ca-map-dropdown/ca-map-dropdown.component.mjs +57 -0
- package/esm2022/lib/components/ca-map-dropdown/utils/svg-routes/map-dropdown-svg-routes.mjs +19 -0
- package/esm2022/lib/components/ca-note/ca-note.component.mjs +238 -0
- package/esm2022/lib/components/ca-note/utils/helper/copy-paste.helper.mjs +8 -0
- package/esm2022/lib/components/ca-note/utils/svg-routes/note-svg-routes.mjs +6 -0
- package/esm2022/lib/components/ca-note-container/ca-note-container.component.mjs +153 -0
- package/esm2022/lib/components/ca-note-container/enums/note-default-string.enum.mjs +11 -0
- package/esm2022/lib/components/ca-note-container/enums/note-selected-color.enum.mjs +6 -0
- package/esm2022/lib/components/ca-note-container/models/note-colors.model.mjs +2 -0
- package/esm2022/lib/components/ca-note-container/utils/constants/note-config.constant.mjs +61 -0
- package/esm2022/lib/components/ca-note-container/utils/svg-routes/note-container-svg-routes.mjs +9 -0
- package/esm2022/lib/components/ca-payroll-list-summary-overview/ca-payroll-list-summary-overview.component.mjs +53 -0
- package/esm2022/lib/components/ca-payroll-list-summary-overview/utils/svg-routes/payroll-list-summary-svg-routes.mjs +5 -0
- package/esm2022/lib/components/ca-payroll-list-summary-overview-table/ca-payroll-list-summary-overview-table.component.mjs +26 -0
- package/esm2022/lib/components/ca-pickup-delivery-block/ca-pickup-delivery-block.component.mjs +44 -0
- package/esm2022/lib/components/ca-pickup-delivery-block/components/ca-load/ca-load.component.mjs +93 -0
- package/esm2022/lib/components/ca-pickup-delivery-block/components/ca-load/components/ca-load-list/ca-load-list.component.mjs +103 -0
- package/esm2022/lib/components/ca-pickup-delivery-block/components/ca-load/components/ca-load-single/ca-load-single.component.mjs +81 -0
- package/esm2022/lib/components/ca-pickup-delivery-block/models/adress-model.mjs +2 -0
- package/esm2022/lib/components/ca-pickup-delivery-block/models/animation-model.mjs +2 -0
- package/esm2022/lib/components/ca-pickup-delivery-block/models/broker-short-response.mjs +2 -0
- package/esm2022/lib/components/ca-pickup-delivery-block/models/dispatch-assigned-load-list-response.mjs +2 -0
- package/esm2022/lib/components/ca-pickup-delivery-block/models/enum-value.mjs +2 -0
- package/esm2022/lib/components/ca-pickup-delivery-block/models/load-short-response.mjs +2 -0
- package/esm2022/lib/components/ca-pickup-delivery-block/models/load-stop-short-response.mjs +2 -0
- package/esm2022/lib/components/ca-pickup-delivery-block/models/shipper-short-response.mjs +2 -0
- package/esm2022/lib/components/ca-pickup-delivery-block/models/status-types.enum.mjs +7 -0
- package/esm2022/lib/components/ca-pickup-delivery-block/utils/constants/animation-object-default.constants.mjs +8 -0
- package/esm2022/lib/components/ca-pickup-delivery-block/utils/constants/pickup-delivery-block.constants.mjs +25 -0
- package/esm2022/lib/components/ca-pickup-delivery-block/utils/helpers/pickup-delivery.helper.mjs +21 -0
- package/esm2022/lib/components/ca-pickup-delivery-block/utils/svg-routes/options-icon.routes.mjs +5 -0
- package/esm2022/lib/components/ca-pickup-delivery-block/utils/svg-routes/pickup-delivery-svg.routes.mjs +16 -0
- package/esm2022/lib/components/ca-pickup-delivery-block/utils/svg-routes/return-arrow.routes.mjs +5 -0
- package/esm2022/lib/components/ca-profile-image/ca-profile-image.component.mjs +5 -5
- package/esm2022/lib/components/ca-progress-bar/ca-progress-bar.component.mjs +209 -0
- package/esm2022/lib/components/ca-progress-bar/models/gps-progress.model.mjs +2 -0
- package/esm2022/lib/components/ca-progress-bar/utils/constants/progress-bar.constants.mjs +8 -0
- package/esm2022/lib/components/ca-progress-bar/utils/svg-routes/progress-bar-svg-routes.mjs +4 -0
- package/esm2022/lib/components/ca-search-multiple-states/ca-search-multiple-states.component.mjs +91 -0
- package/esm2022/lib/components/ca-search-multiple-states/utils/config/input-config.mjs +9 -0
- package/esm2022/lib/components/ca-search-multiple-states/utils/svg-routes/search-multiple-states.routes.mjs +7 -0
- package/esm2022/lib/components/ca-spinner/ca-spinner.component.mjs +40 -0
- package/esm2022/lib/components/ca-truck-trailer-progress-bar/ca-truck-trailer-progress-bar.component.mjs +97 -0
- package/esm2022/lib/components/ca-truck-trailer-progress-bar/models/progress-dropdown-data.model.mjs +2 -0
- package/esm2022/lib/constants/map.constant.mjs +436 -0
- package/esm2022/lib/directives/placeholder-directive.mjs +59 -0
- package/esm2022/lib/enums/load-filter-string.enum.mjs +23 -0
- package/esm2022/lib/enums/load-status.enum.mjs +58 -0
- package/esm2022/lib/models/array-status.model.mjs +2 -0
- package/esm2022/lib/models/card-models/card-table-data.model.mjs +2 -0
- package/esm2022/lib/models/color-response.mjs +2 -0
- package/esm2022/lib/models/dropdown.model.mjs +2 -0
- package/esm2022/lib/models/filter-output-params.model.mjs +2 -0
- package/esm2022/lib/models/filter-output.model.mjs +2 -0
- package/esm2022/lib/models/note-active-options.model.mjs +2 -0
- package/esm2022/lib/models/payroll-list-summary.model.mjs +2 -0
- package/esm2022/lib/models/table-models/table-body-color-label.model.mjs +2 -0
- package/esm2022/lib/models/time-filter.model.mjs +2 -0
- package/esm2022/lib/models/trailer-minimal-response.mjs +2 -0
- package/esm2022/lib/models/trailer-type-response.mjs +2 -0
- package/esm2022/lib/models/truck-minimal-response.mjs +2 -0
- package/esm2022/lib/models/truck-type-response.mjs +2 -0
- package/esm2022/lib/pipes/dropdown-load-status-color.pipe.mjs +164 -0
- package/esm2022/lib/pipes/format-currency.pipe.mjs +22 -0
- package/esm2022/lib/pipes/safe-html.pipe.mjs +18 -0
- package/esm2022/lib/pipes/ta-svg.pipe.mjs +30 -0
- package/esm2022/lib/pipes/thousand-separator.pipe.mjs +19 -0
- package/esm2022/lib/pipes/thousand-to-short-format-pipe.mjs +19 -0
- package/esm2022/lib/services/truckassist-table.service.mjs +20 -0
- package/esm2022/lib/utils/helpers/methods-calculations.helper.mjs +153 -0
- package/esm2022/public-api.mjs +21 -4
- package/fesm2022/ca-components.mjs +1876 -7
- package/fesm2022/ca-components.mjs.map +1 -1
- package/lib/animation/in-out.animation.d.ts +1 -0
- package/lib/animations/accordion-animation.d.ts +1 -0
- package/lib/animations/animation.d.ts +4 -0
- package/lib/animations/close-form.animation.d.ts +1 -0
- package/lib/animations/expand-search-button.animation.d.ts +1 -0
- package/lib/animations/show.animation.d.ts +1 -0
- package/lib/animations/tabs-modal.animation.d.ts +1 -0
- package/lib/ca-components.module.d.ts +25 -0
- package/lib/components/ca-app-tooltip-v2/ca-app-tooltip-v2.component.d.ts +19 -0
- package/lib/components/ca-details-dropdown/ca-details-dropdown.component.d.ts +35 -0
- package/lib/components/ca-details-dropdown/models/detail-dropdown.model.d.ts +19 -0
- package/lib/components/ca-details-dropdown/utils/svg-routes/detail-dropdown-svg-routes.d.ts +3 -0
- package/lib/components/ca-dropdown/ca-dropdown.component.d.ts +14 -0
- package/lib/components/ca-filters/ca-filter.component.d.ts +46 -0
- package/lib/components/ca-filters/components/ca-money-filter/ca-money-filter.component.d.ts +78 -0
- package/lib/components/ca-filters/components/ca-money-filter/config/ca-money-filter.config.d.ts +11 -0
- package/lib/components/ca-filters/components/ca-status-filter/ca-status-filter.component.d.ts +62 -0
- package/lib/components/ca-filters/components/ca-time-filter/ca-time-filter.component.d.ts +33 -0
- package/lib/components/ca-filters/utils/constants/status-filter.constants.d.ts +9 -0
- package/lib/components/ca-filters/utils/constants/time-filter.constants.d.ts +8 -0
- package/lib/components/ca-filters/utils/svg-routes/ca-filters-svg-routes.d.ts +6 -0
- package/lib/components/ca-filters/utils/svg-routes/ca-money-filter-svg-routes.d.ts +3 -0
- package/lib/components/ca-input/ca-input.component.d.ts +46 -0
- package/lib/components/ca-input/components/ca-input-clear/ca-input-clear.component.d.ts +19 -0
- package/lib/components/ca-input/components/ca-input-password/ca-input-password.component.d.ts +20 -0
- package/lib/components/ca-input/components/ca-input-placeholder-icon/ca-input-placeholder-icon.component.d.ts +16 -0
- package/lib/components/ca-input/config/ca-input.config.d.ts +136 -0
- package/lib/components/ca-input/models/label-color.model.d.ts +11 -0
- package/lib/components/ca-input/pipes/input-class.pipe.d.ts +13 -0
- package/lib/components/ca-input/pipes/input-clear-class.pipe.d.ts +11 -0
- package/lib/components/ca-input/pipes/input-container-class.pipe.d.ts +11 -0
- package/lib/components/ca-input/pipes/input-error.pipe.d.ts +7 -0
- package/lib/components/ca-input/pipes/input-password-eye-class.pipe.d.ts +11 -0
- package/lib/components/ca-input/pipes/input-placeholder-icon.class.pipe.d.ts +12 -0
- package/lib/components/ca-input/pipes/input-type.pipe.d.ts +7 -0
- package/lib/components/ca-input/pipes/label-class.pipe.d.ts +10 -0
- package/lib/components/ca-input/pipes/show-clear.pipe.d.ts +8 -0
- package/lib/components/ca-input/pipes/show-invalid-danger-mark.pipe.d.ts +9 -0
- package/lib/components/ca-input/pipes/show-valid-check.pipe.d.ts +9 -0
- package/lib/components/ca-input/services/ca-input-state.service.d.ts +24 -0
- package/lib/components/ca-input/utils/input-svg-routes.d.ts +8 -0
- package/lib/components/ca-input-radiobuttons/ca-input-radiobuttons.component.d.ts +21 -0
- package/lib/components/ca-map/ca-map.component.d.ts +56 -0
- package/lib/components/ca-map/enums/google-map.enum.d.ts +4 -0
- package/lib/components/ca-map/enums/toolbar-filter-string.enum.d.ts +33 -0
- package/lib/components/ca-map/models/map.model.d.ts +74 -0
- package/lib/components/ca-map/utils/helpers/map.helper.d.ts +9 -0
- package/lib/components/ca-map/utils/map-svg-routes/map-svg-routes.d.ts +4 -0
- package/lib/components/ca-map-dropdown/ca-map-dropdown.component.d.ts +43 -0
- package/lib/components/ca-map-dropdown/utils/svg-routes/map-dropdown-svg-routes.d.ts +18 -0
- package/lib/components/ca-note/ca-note.component.d.ts +56 -0
- package/lib/components/ca-note/utils/helper/copy-paste.helper.d.ts +3 -0
- package/lib/components/ca-note/utils/svg-routes/note-svg-routes.d.ts +5 -0
- package/lib/components/ca-note-container/ca-note-container.component.d.ts +38 -0
- package/lib/components/ca-note-container/enums/note-default-string.enum.d.ts +9 -0
- package/lib/components/ca-note-container/enums/note-selected-color.enum.d.ts +4 -0
- package/lib/components/ca-note-container/models/note-colors.model.d.ts +4 -0
- package/lib/components/ca-note-container/utils/constants/note-config.constant.d.ts +7 -0
- package/lib/components/ca-note-container/utils/svg-routes/note-container-svg-routes.d.ts +8 -0
- package/lib/components/ca-payroll-list-summary-overview/ca-payroll-list-summary-overview.component.d.ts +20 -0
- package/lib/components/ca-payroll-list-summary-overview/utils/svg-routes/payroll-list-summary-svg-routes.d.ts +4 -0
- package/lib/components/ca-payroll-list-summary-overview-table/ca-payroll-list-summary-overview-table.component.d.ts +20 -0
- package/lib/components/ca-pickup-delivery-block/ca-pickup-delivery-block.component.d.ts +19 -0
- package/lib/components/ca-pickup-delivery-block/components/ca-load/ca-load.component.d.ts +30 -0
- package/lib/components/ca-pickup-delivery-block/components/ca-load/components/ca-load-list/ca-load-list.component.d.ts +30 -0
- package/lib/components/ca-pickup-delivery-block/components/ca-load/components/ca-load-single/ca-load-single.component.d.ts +23 -0
- package/lib/components/ca-pickup-delivery-block/models/adress-model.d.ts +12 -0
- package/lib/components/ca-pickup-delivery-block/models/animation-model.d.ts +7 -0
- package/lib/components/ca-pickup-delivery-block/models/broker-short-response.d.ts +13 -0
- package/lib/components/ca-pickup-delivery-block/models/dispatch-assigned-load-list-response.d.ts +6 -0
- package/lib/components/ca-pickup-delivery-block/models/enum-value.d.ts +4 -0
- package/lib/components/ca-pickup-delivery-block/models/load-short-response.d.ts +18 -0
- package/lib/components/ca-pickup-delivery-block/models/load-stop-short-response.d.ts +9 -0
- package/lib/components/ca-pickup-delivery-block/models/shipper-short-response.d.ts +8 -0
- package/lib/components/ca-pickup-delivery-block/models/status-types.enum.d.ts +5 -0
- package/lib/components/ca-pickup-delivery-block/utils/constants/animation-object-default.constants.d.ts +4 -0
- package/lib/components/ca-pickup-delivery-block/utils/constants/pickup-delivery-block.constants.d.ts +14 -0
- package/lib/components/ca-pickup-delivery-block/utils/helpers/pickup-delivery.helper.d.ts +9 -0
- package/lib/components/ca-pickup-delivery-block/utils/svg-routes/options-icon.routes.d.ts +4 -0
- package/lib/components/ca-pickup-delivery-block/utils/svg-routes/pickup-delivery-svg.routes.d.ts +15 -0
- package/lib/components/ca-pickup-delivery-block/utils/svg-routes/return-arrow.routes.d.ts +4 -0
- package/lib/components/ca-profile-image/ca-profile-image.component.d.ts +1 -1
- package/lib/components/ca-progress-bar/ca-progress-bar.component.d.ts +115 -0
- package/lib/components/ca-progress-bar/models/gps-progress.model.d.ts +8 -0
- package/lib/components/ca-progress-bar/utils/constants/progress-bar.constants.d.ts +7 -0
- package/lib/components/ca-progress-bar/utils/svg-routes/progress-bar-svg-routes.d.ts +3 -0
- package/lib/components/ca-search-multiple-states/ca-search-multiple-states.component.d.ts +24 -0
- package/lib/components/ca-search-multiple-states/utils/config/input-config.d.ts +2 -0
- package/lib/components/ca-search-multiple-states/utils/svg-routes/search-multiple-states.routes.d.ts +6 -0
- package/lib/components/ca-spinner/ca-spinner.component.d.ts +15 -0
- package/lib/components/ca-truck-trailer-progress-bar/ca-truck-trailer-progress-bar.component.d.ts +23 -0
- package/lib/components/ca-truck-trailer-progress-bar/models/progress-dropdown-data.model.d.ts +5 -0
- package/lib/constants/map.constant.d.ts +39 -0
- package/lib/directives/placeholder-directive.d.ts +15 -0
- package/lib/enums/load-filter-string.enum.d.ts +16 -0
- package/lib/enums/load-status.enum.d.ts +56 -0
- package/lib/models/array-status.model.d.ts +24 -0
- package/lib/models/card-models/card-table-data.model.d.ts +837 -0
- package/lib/models/color-response.d.ts +6 -0
- package/lib/models/dropdown.model.d.ts +4 -0
- package/lib/models/filter-output-params.model.d.ts +5 -0
- package/lib/models/filter-output.model.d.ts +6 -0
- package/lib/models/note-active-options.model.d.ts +6 -0
- package/lib/models/payroll-list-summary.model.d.ts +12 -0
- package/lib/models/table-models/table-body-color-label.model.d.ts +11 -0
- package/lib/models/time-filter.model.d.ts +7 -0
- package/lib/models/trailer-minimal-response.d.ts +11 -0
- package/lib/models/trailer-type-response.d.ts +7 -0
- package/lib/models/truck-minimal-response.d.ts +13 -0
- package/lib/models/truck-type-response.d.ts +6 -0
- package/lib/pipes/dropdown-load-status-color.pipe.d.ts +10 -0
- package/lib/pipes/format-currency.pipe.d.ts +7 -0
- package/lib/pipes/safe-html.pipe.d.ts +10 -0
- package/lib/pipes/ta-svg.pipe.d.ts +7 -0
- package/lib/pipes/thousand-separator.pipe.d.ts +7 -0
- package/lib/pipes/thousand-to-short-format-pipe.d.ts +7 -0
- package/lib/services/truckassist-table.service.d.ts +7 -0
- package/lib/utils/helpers/methods-calculations.helper.d.ts +15 -0
- package/package.json +1 -1
- package/public-api.d.ts +20 -1
- package/src/assets/global_style/styles.scss +45 -0
- package/src/assets/json/ca-dropdown.json +12 -0
- package/src/assets/json/ca-payroll-list-summary.json +71 -0
- package/src/assets/json/ca-table.json +59 -0
- package/src/assets/json/ta-detail-dropdown.json +80 -0
- package/src/assets/json/truck-trailer-progress-bar.json +1453 -0
- package/src/assets/json/usa-states.json +54 -0
- package/src/assets/kml/timezones.kml +1608 -0
- package/src/assets/kml/toll-roads/California.kml +55 -0
- package/src/assets/kml/toll-roads/Texas.kml +5079 -0
- package/src/assets/kml/toll-roads/florida.kml +2092 -0
- package/src/assets/lottie/ta-lottie-spinner/18px/black.json +1 -0
- package/src/assets/lottie/ta-lottie-spinner/18px/blueDark.json +1 -0
- package/src/assets/lottie/ta-lottie-spinner/18px/blueLight.json +1 -0
- package/src/assets/lottie/ta-lottie-spinner/18px/gray.json +1 -0
- package/src/assets/lottie/ta-lottie-spinner/18px/white.json +1 -0
- package/src/assets/lottie/ta-lottie-spinner/32px/black.json +1 -0
- package/src/assets/lottie/ta-lottie-spinner/32px/blueLight.json +1 -0
- package/src/assets/lottie/ta-lottie-spinner/32px/dark.json +1 -0
- package/src/assets/lottie/ta-lottie-spinner/32px/gray.json +1 -0
- package/src/assets/lottie/ta-lottie-spinner/32px/white.json +1 -0
- package/src/assets/scss/font-family.scss +2 -0
- package/src/assets/scss/font-weight.scss +36 -0
- package/src/assets/scss/popover.scss +112 -0
- package/src/assets/svg/common/calendar/arrow-left.svg +3 -0
- package/src/assets/svg/common/ic_confirm.svg +3 -0
- package/src/assets/svg/common/ic_search.svg +3 -0
- package/src/assets/svg/common/payroll-down-arrow.svg +3 -0
- package/src/assets/svg/common/payroll-up-arrow.svg +3 -0
- package/src/assets/svg/common/sortArrow_filter.svg +3 -0
- package/src/assets/svg/input/ic_confirm.svg +3 -0
- package/src/assets/svg/input/ic_danger.svg +3 -0
- package/src/assets/svg/input/ic_eye-hidden.svg +6 -0
- package/src/assets/svg/input/ic_eye-visible.svg +6 -0
- package/src/assets/svg/input/ic_password.svg +6 -0
- package/src/assets/svg/input/ic_remove_input.svg +7 -0
- package/src/assets/svg/input/ic_x.svg +4 -0
- package/src/assets/svg/map/18px_tooltip.svg +3 -0
- package/src/assets/svg/map/accident_calender.svg +3 -0
- package/src/assets/svg/map/accident_hazmat.svg +3 -0
- package/src/assets/svg/map/accident_injury.svg +3 -0
- package/src/assets/svg/map/accident_towing.svg +3 -0
- package/src/assets/svg/map/accident_vechile.svg +3 -0
- package/src/assets/svg/map/address.svg +3 -0
- package/src/assets/svg/map/arrow_corner_top.svg +3 -0
- package/src/assets/svg/map/calender_last_used.svg +3 -0
- package/src/assets/svg/map/check.svg +3 -0
- package/src/assets/svg/map/cluster_marker_4.svg +32 -0
- package/src/assets/svg/map/cluster_marker_6.svg +32 -0
- package/src/assets/svg/map/details_options.svg +10 -0
- package/src/assets/svg/map/details_options_2.svg +3 -0
- package/src/assets/svg/map/dislike.svg +3 -0
- package/src/assets/svg/map/email.svg +3 -0
- package/src/assets/svg/map/extended_stop_ignition.svg +11 -0
- package/src/assets/svg/map/gps-location.svg +4 -0
- package/src/assets/svg/map/gps_extended_status.svg +4 -0
- package/src/assets/svg/map/gps_full.svg +7 -0
- package/src/assets/svg/map/gps_parking_status.svg +4 -0
- package/src/assets/svg/map/gps_short_status.svg +4 -0
- package/src/assets/svg/map/gps_trailer_extended.svg +11 -0
- package/src/assets/svg/map/gps_trailer_moving.svg +16 -0
- package/src/assets/svg/map/gps_trailer_parking.svg +11 -0
- package/src/assets/svg/map/gps_trailer_short_stop.svg +11 -0
- package/src/assets/svg/map/ic_marker_office.svg +18 -0
- package/src/assets/svg/map/ic_pulse_circle.svg +1 -0
- package/src/assets/svg/map/like.svg +3 -0
- package/src/assets/svg/map/marker.svg +27 -0
- package/src/assets/svg/map/marker_2.svg +27 -0
- package/src/assets/svg/map/marker_3.svg +27 -0
- package/src/assets/svg/map/marker_4.svg +27 -0
- package/src/assets/svg/map/marker_5.svg +27 -0
- package/src/assets/svg/map/marker_cluster.svg +32 -0
- package/src/assets/svg/map/marker_cluster_2.svg +32 -0
- package/src/assets/svg/map/marker_dot.svg +18 -0
- package/src/assets/svg/map/marker_dot_2.svg +18 -0
- package/src/assets/svg/map/mask_group.svg +546 -0
- package/src/assets/svg/map/no_gps_status.svg +8 -0
- package/src/assets/svg/map/oss.svg +3 -0
- package/src/assets/svg/map/parking_ignition.svg +11 -0
- package/src/assets/svg/map/parking_trailer_ignition.svg +11 -0
- package/src/assets/svg/map/phone.svg +3 -0
- package/src/assets/svg/map/progress-marker-checked.svg +20 -0
- package/src/assets/svg/map/progress-marker-pickup-checked.svg +20 -0
- package/src/assets/svg/map/progress-marker-pickup.svg +20 -0
- package/src/assets/svg/map/progress_marker-pin-dark.svg +20 -0
- package/src/assets/svg/map/progress_marker.svg +20 -0
- package/src/assets/svg/map/progress_marker_reached.svg +20 -0
- package/src/assets/svg/map/review.svg +3 -0
- package/src/assets/svg/map/routing_marker.svg +19 -0
- package/src/assets/svg/map/short_stop_ignition.svg +11 -0
- package/src/assets/svg/map/short_stop_trailer_ignition.svg +16 -0
- package/src/assets/svg/map/telematic_marker.svg +19 -0
- package/src/assets/svg/map/telematic_marker_1.svg +19 -0
- package/src/assets/svg/map/telematic_marker_2.svg +18 -0
- package/src/assets/svg/map/unitView_marker.svg +20 -0
- package/src/assets/svg/note/Itallic.svg +3 -0
- package/src/assets/svg/note/Note.svg +3 -0
- package/src/assets/svg/note/Underline.svg +3 -0
- package/src/assets/svg/note/arrow.svg +3 -0
- package/src/assets/svg/note/bold.svg +3 -0
- package/src/assets/svg/note/color-picker-inverse.svg +10 -0
- package/src/assets/svg/note/note-empty-dark.svg +3 -0
- package/src/assets/svg/note/note-empty.svg +3 -0
- package/src/assets/svg/note/note-filled.svg +3 -0
- package/src/assets/svg/note/tick.svg +3 -0
- package/src/assets/svg/pickup-delivery/Miles.svg +3 -0
- package/src/assets/svg/pickup-delivery/Options.svg +3 -0
- package/src/assets/svg/pickup-delivery/arrowLeft.svg +10 -0
- package/src/assets/svg/pickup-delivery/arrowLeftHover.svg +10 -0
- package/src/assets/svg/pickup-delivery/arrowRight.svg +3 -0
- package/src/assets/svg/pickup-delivery/detailsOptions.svg +3 -0
- package/src/assets/svg/pickup-delivery/leftArrow.svg +3 -0
- package/src/assets/svg/pickup-delivery/mailIcon.svg +3 -0
- package/src/assets/svg/pickup-delivery/mapOptionsDark.svg +11 -0
- package/src/assets/svg/pickup-delivery/optionsVertical.svg +10 -0
- package/src/assets/svg/pickup-delivery/phoneIcon.svg +3 -0
- package/src/assets/svg/pickup-delivery/userIcon.svg +3 -0
- package/src/assets/svg/pickup-delivery/vector.svg +3 -0
- package/src/assets/svg/popup/Delete.svg +4 -0
- package/src/assets/svg/popup/Information.svg +3 -0
- package/src/assets/svg/popup/Minus.svg +3 -0
- package/src/assets/svg/popup/Print.svg +3 -0
- package/src/assets/svg/popup/Share.svg +3 -0
- package/src/assets/svg/popup/close-business-icon.svg +6 -0
- package/src/assets/svg/popup/delete-hover-new.svg +9 -0
- package/src/assets/svg/popup/edit-hover.svg +10 -0
- package/src/assets/svg/popup/ic_broker-user.svg +1 -0
- package/src/assets/svg/popup/ic_info.svg +6 -0
- package/src/assets/svg/popup/ic_print.svg +1 -0
- package/src/assets/svg/popup/resize-arrow.svg +1 -0
- package/src/assets/svg/popup/review-pen.svg +6 -0
- package/src/assets/svg/popup/share-icon.svg +6 -0
- package/src/assets/svg/popup/trash.svg +4 -0
- package/src/assets/svg/search-multiple-states/add.svg +4 -0
- package/src/assets/svg/search-multiple-states/clear-search.svg +4 -0
- package/src/assets/svg/search-multiple-states/focused-search-button.svg +3 -0
- package/src/assets/svg/search-multiple-states/search-button.svg +3 -0
- package/src/assets/svg/truckassist-table/x.svg +1 -0
- package/src/assets/theme/main.scss +193 -0
- package/src/assets/theme/variables.scss +361 -0
package/esm2022/lib/components/ca-filters/components/ca-money-filter/ca-money-filter.component.mjs
ADDED
|
@@ -0,0 +1,541 @@
|
|
|
1
|
+
import { Subject, takeUntil } from "rxjs";
|
|
2
|
+
import { Component, Input, ViewEncapsulation, } from "@angular/core";
|
|
3
|
+
import { FormsModule, ReactiveFormsModule, } from "@angular/forms";
|
|
4
|
+
import { CommonModule } from "@angular/common";
|
|
5
|
+
import { HttpClientModule } from "@angular/common/http";
|
|
6
|
+
// modules
|
|
7
|
+
import { AngularSvgIconModule as SvgIconModule } from "angular-svg-icon";
|
|
8
|
+
import { NgbDropdownConfig, NgbModule } from "@ng-bootstrap/ng-bootstrap";
|
|
9
|
+
// pipes
|
|
10
|
+
import { ThousandSeparatorPipe as ThousandSeparator } from "@shared/pipes/thousand-separator.pipe";
|
|
11
|
+
import { TaSvgPipe as TaSvg } from "@shared/pipes/ta-svg.pipe";
|
|
12
|
+
// animations
|
|
13
|
+
import { showAnimation } from "@shared/animations/show.animation";
|
|
14
|
+
import { closeForm } from "@shared/animations/close-form.animation";
|
|
15
|
+
import { CaMoneyFilterSvgRoutes } from "@shared/components/ca-filters/utils/svg-routes/ca-money-filter-svg-routes";
|
|
16
|
+
// enums
|
|
17
|
+
import { ToolbarFilterStringEnum as ToolbarFilterString } from "@shared/components/ca-map/enums/toolbar-filter-string.enum";
|
|
18
|
+
// configs
|
|
19
|
+
import { CaMoneyFilterConfig } from "@shared/components/ca-filters/components/ca-money-filter/config/ca-money-filter.config";
|
|
20
|
+
// components
|
|
21
|
+
import { CaInputComponent } from "@shared/components/ca-input/ca-input.component";
|
|
22
|
+
import * as i0 from "@angular/core";
|
|
23
|
+
import * as i1 from "@angular/forms";
|
|
24
|
+
import * as i2 from "@shared/pipes/thousand-separator.pipe";
|
|
25
|
+
import * as i3 from "@angular/common";
|
|
26
|
+
import * as i4 from "angular-svg-icon";
|
|
27
|
+
export class CaMoneyFilterComponent {
|
|
28
|
+
constructor(formBuilder,
|
|
29
|
+
// pipes
|
|
30
|
+
thousandSeparator) {
|
|
31
|
+
this.formBuilder = formBuilder;
|
|
32
|
+
this.thousandSeparator = thousandSeparator;
|
|
33
|
+
this.type = ToolbarFilterString.MONEY_FILTER;
|
|
34
|
+
this.subType = ToolbarFilterString.PENDING_STATUS;
|
|
35
|
+
this.moneyFilter = true;
|
|
36
|
+
this.fuelType = false;
|
|
37
|
+
this.loadType = true;
|
|
38
|
+
this.isRepairFilter = false;
|
|
39
|
+
this.isFilterActive = false;
|
|
40
|
+
this.destroy$ = new Subject();
|
|
41
|
+
this.showPart1 = true;
|
|
42
|
+
this.showPart2 = true;
|
|
43
|
+
this.showPart3 = true;
|
|
44
|
+
this.singleFormError = ToolbarFilterString.EMPTY_STRING_PLACEHOLDER;
|
|
45
|
+
this.multiFormFirstError = ToolbarFilterString.EMPTY_STRING_PLACEHOLDER;
|
|
46
|
+
this.multiFormSecondError = ToolbarFilterString.EMPTY_STRING_PLACEHOLDER;
|
|
47
|
+
this.multiFormThirdError = ToolbarFilterString.EMPTY_STRING_PLACEHOLDER;
|
|
48
|
+
this.moneyFilterStatus = false;
|
|
49
|
+
this.isButtonAvailable = false;
|
|
50
|
+
this.singleFromActive = 0;
|
|
51
|
+
this.singleToActive = 0;
|
|
52
|
+
this.multiFromFirstFromActive = 0;
|
|
53
|
+
this.multiFromFirstToActive = 0;
|
|
54
|
+
this.multiFormSecondFromActive = 0;
|
|
55
|
+
this.multiFormSecondToActive = 0;
|
|
56
|
+
this.multiFormThirdFromActive = 0;
|
|
57
|
+
this.multiFormThirdToActive = 0;
|
|
58
|
+
this.minValueRange = ToolbarFilterString.MIN_VALUE;
|
|
59
|
+
this.maxValueRange = ToolbarFilterString.MAX_VALUE;
|
|
60
|
+
this.activeFormNum = 0;
|
|
61
|
+
this.minValueSet = ToolbarFilterString.MIN_VALUE;
|
|
62
|
+
this.maxValueSet = ToolbarFilterString.MAX_VALUE;
|
|
63
|
+
this.filterActiveArray = [];
|
|
64
|
+
this.swipeActiveRange = 0;
|
|
65
|
+
this.totalFiltersNum = 0;
|
|
66
|
+
this.singleFormActive = false;
|
|
67
|
+
}
|
|
68
|
+
ngOnInit() {
|
|
69
|
+
this.createForm();
|
|
70
|
+
this.watchMoneyFormValueChanges();
|
|
71
|
+
}
|
|
72
|
+
ngOnDestroy() {
|
|
73
|
+
this.destroy$.next();
|
|
74
|
+
this.destroy$.complete();
|
|
75
|
+
}
|
|
76
|
+
get singleFormFrom() {
|
|
77
|
+
return CaMoneyFilterConfig.getSingleFormFrom();
|
|
78
|
+
}
|
|
79
|
+
get singleFormTo() {
|
|
80
|
+
return CaMoneyFilterConfig.getSingleFormTo();
|
|
81
|
+
}
|
|
82
|
+
get multiFormFirstFrom() {
|
|
83
|
+
return CaMoneyFilterConfig.getMultiFormFirstFrom();
|
|
84
|
+
}
|
|
85
|
+
get multiFormFirstTo() {
|
|
86
|
+
return CaMoneyFilterConfig.getMultiFormFirstTo();
|
|
87
|
+
}
|
|
88
|
+
get multiFormSecondFrom() {
|
|
89
|
+
return CaMoneyFilterConfig.getMultiFormSecondFrom();
|
|
90
|
+
}
|
|
91
|
+
get multiFormSecondTo() {
|
|
92
|
+
return CaMoneyFilterConfig.getMultiFormSecondTo();
|
|
93
|
+
}
|
|
94
|
+
get multiFormThirdFrom() {
|
|
95
|
+
return CaMoneyFilterConfig.getMultiFormThirdFrom();
|
|
96
|
+
}
|
|
97
|
+
get multiFormThirdTo() {
|
|
98
|
+
return CaMoneyFilterConfig.getMultiFormThirdTo();
|
|
99
|
+
}
|
|
100
|
+
createForm() {
|
|
101
|
+
this.moneyForm = this.formBuilder.group({
|
|
102
|
+
singleFrom: null,
|
|
103
|
+
singleTo: null,
|
|
104
|
+
multiFromFirstFrom: null,
|
|
105
|
+
multiFromFirstTo: null,
|
|
106
|
+
multiFormSecondFrom: null,
|
|
107
|
+
multiFormSecondTo: null,
|
|
108
|
+
multiFormThirdFrom: null,
|
|
109
|
+
multiFormThirdTo: null,
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
watchMoneyFormValueChanges() {
|
|
113
|
+
this.moneyForm.valueChanges
|
|
114
|
+
.pipe(takeUntil(this.destroy$))
|
|
115
|
+
.subscribe((changes) => {
|
|
116
|
+
if (changes.singleFrom || changes.singleTo) {
|
|
117
|
+
if (changes.singleTo) {
|
|
118
|
+
const to = parseInt(changes.singleTo);
|
|
119
|
+
const from = parseInt(changes.singleFrom);
|
|
120
|
+
if (from > to || from === to) {
|
|
121
|
+
this.singleFormError = true;
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
this.singleFormError = false;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
this.singleFormError = false;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
this.singleFormError = false;
|
|
133
|
+
}
|
|
134
|
+
if (changes.multiFromFirstFrom || changes.multiFromFirstTo) {
|
|
135
|
+
if (changes.multiFromFirstTo) {
|
|
136
|
+
const to = parseInt(changes.multiFromFirstTo);
|
|
137
|
+
const from = parseInt(changes.multiFromFirstFrom);
|
|
138
|
+
if (from > to || from === to) {
|
|
139
|
+
this.multiFormFirstError = true;
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
this.multiFormFirstError = false;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
this.multiFormFirstError = false;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
this.multiFormFirstError = false;
|
|
151
|
+
}
|
|
152
|
+
if (changes.multiFormSecondFrom || changes.multiFormSecondTo) {
|
|
153
|
+
if (changes.multiFormSecondTo) {
|
|
154
|
+
const to = parseInt(changes.multiFormSecondTo);
|
|
155
|
+
const from = parseInt(changes.multiFormSecondFrom);
|
|
156
|
+
if (from > to || from === to) {
|
|
157
|
+
this.multiFormSecondError = true;
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
this.multiFormSecondError = false;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
this.multiFormSecondError = false;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
if (changes.multiFormThirdFrom || changes.multiFormThirdTo) {
|
|
168
|
+
if (changes.multiFormThirdTo) {
|
|
169
|
+
const to = parseInt(changes.multiFormThirdTo);
|
|
170
|
+
const from = parseInt(changes.multiFormThirdFrom);
|
|
171
|
+
if (from > to || from === to) {
|
|
172
|
+
this.multiFormThirdError = true;
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
this.multiFormThirdError = false;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
this.multiFormThirdError = false;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
if (this.subType !== ToolbarFilterString.ALL) {
|
|
183
|
+
let toValueChanged = true;
|
|
184
|
+
let fromValueChanged = true;
|
|
185
|
+
const fromActive = this.singleFromActive && this.singleFromActive != "null"
|
|
186
|
+
? this.singleFromActive
|
|
187
|
+
: 0;
|
|
188
|
+
const toActive = this.singleToActive && this.singleToActive != "null"
|
|
189
|
+
? this.singleToActive
|
|
190
|
+
: 0;
|
|
191
|
+
let to = 0;
|
|
192
|
+
if (changes.singleTo) {
|
|
193
|
+
to = parseInt(changes.singleTo);
|
|
194
|
+
}
|
|
195
|
+
let from = 0;
|
|
196
|
+
if (changes.singleFrom) {
|
|
197
|
+
from = parseInt(changes.singleFrom);
|
|
198
|
+
}
|
|
199
|
+
if (toActive === to) {
|
|
200
|
+
toValueChanged = false;
|
|
201
|
+
}
|
|
202
|
+
if (fromActive === from) {
|
|
203
|
+
fromValueChanged = false;
|
|
204
|
+
}
|
|
205
|
+
if (toValueChanged || fromValueChanged) {
|
|
206
|
+
this.isButtonAvailable = true;
|
|
207
|
+
this.moneyFilterStatus = true;
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
this.isButtonAvailable = false;
|
|
211
|
+
if (!to && !from) {
|
|
212
|
+
this.moneyFilterStatus = false;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
if (!this.multiFormFirstError &&
|
|
218
|
+
!this.multiFormSecondError &&
|
|
219
|
+
!this.multiFormThirdError) {
|
|
220
|
+
this.moneyFilterStatus = true;
|
|
221
|
+
this.checkMoneyMultiForm(changes);
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
this.isButtonAvailable = false;
|
|
225
|
+
}
|
|
226
|
+
if (this.multiFormFirstError ||
|
|
227
|
+
this.multiFormSecondError ||
|
|
228
|
+
this.multiFormThirdError) {
|
|
229
|
+
this.isButtonAvailable = false;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
if (this.singleFormError) {
|
|
233
|
+
this.moneyForm.get("singleTo")?.setErrors({ invalid: true });
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
this.moneyForm.get("singleTo")?.setErrors(null);
|
|
237
|
+
}
|
|
238
|
+
if (this.multiFormFirstError) {
|
|
239
|
+
this.moneyForm.get("multiFromFirstTo")?.setErrors({ invalid: true });
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
this.moneyForm.get("multiFromFirstTo")?.setErrors(null);
|
|
243
|
+
}
|
|
244
|
+
if (this.multiFormSecondError) {
|
|
245
|
+
this.moneyForm.get("multiFormSecondTo")?.setErrors({ invalid: true });
|
|
246
|
+
}
|
|
247
|
+
else {
|
|
248
|
+
this.moneyForm.get("multiFormSecondTo")?.setErrors(null);
|
|
249
|
+
}
|
|
250
|
+
if (this.multiFormThirdError) {
|
|
251
|
+
this.moneyForm.get("multiFormThirdTo")?.setErrors({ invalid: true });
|
|
252
|
+
}
|
|
253
|
+
else {
|
|
254
|
+
this.moneyForm.get("multiFormThirdTo")?.setErrors(null);
|
|
255
|
+
}
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
clearAll(event) {
|
|
259
|
+
if (event)
|
|
260
|
+
event.stopPropagation();
|
|
261
|
+
switch (this.type) {
|
|
262
|
+
case ToolbarFilterString.MONEY_FILTER:
|
|
263
|
+
if (!this.isRepairFilter) {
|
|
264
|
+
if (this.subType !== ToolbarFilterString.ALL) {
|
|
265
|
+
this.clearForm("singleForm");
|
|
266
|
+
}
|
|
267
|
+
else {
|
|
268
|
+
this.clearForm("clearAll");
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
else {
|
|
272
|
+
const maxNum = this.thousandSeparator.transform(this.maxValueRange);
|
|
273
|
+
this.maxValueSet = maxNum;
|
|
274
|
+
this.minValueSet = this.minValueRange;
|
|
275
|
+
}
|
|
276
|
+
this.activeFormNum = 0;
|
|
277
|
+
break;
|
|
278
|
+
case ToolbarFilterString.MILES_FILTER:
|
|
279
|
+
case ToolbarFilterString.PAY_FILTER:
|
|
280
|
+
case ToolbarFilterString.MONEY_FILTER:
|
|
281
|
+
if (this.type === ToolbarFilterString.MONEY_FILTER &&
|
|
282
|
+
!this.isRepairFilter) {
|
|
283
|
+
break;
|
|
284
|
+
}
|
|
285
|
+
const maxNum = this.thousandSeparator.transform(this.maxValueRange);
|
|
286
|
+
this.maxValueSet = maxNum;
|
|
287
|
+
this.minValueSet = this.minValueRange;
|
|
288
|
+
break;
|
|
289
|
+
default:
|
|
290
|
+
break;
|
|
291
|
+
}
|
|
292
|
+
this.isButtonAvailable = true;
|
|
293
|
+
this.moneyFilterStatus = false;
|
|
294
|
+
this.filterActiveArray = [];
|
|
295
|
+
this.swipeActiveRange = 0;
|
|
296
|
+
this.totalFiltersNum = 0;
|
|
297
|
+
this.singleFormActive = false;
|
|
298
|
+
const data = {
|
|
299
|
+
action: "Clear",
|
|
300
|
+
type: this.type,
|
|
301
|
+
filterType: this.type,
|
|
302
|
+
};
|
|
303
|
+
return data;
|
|
304
|
+
}
|
|
305
|
+
hideFormPart(mod) {
|
|
306
|
+
if (mod === "part1") {
|
|
307
|
+
this.showPart1 = !this.showPart1;
|
|
308
|
+
}
|
|
309
|
+
else if (mod === "part2") {
|
|
310
|
+
this.showPart2 = !this.showPart2;
|
|
311
|
+
}
|
|
312
|
+
else {
|
|
313
|
+
this.showPart3 = !this.showPart3;
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
clearForm(mod, event) {
|
|
317
|
+
event?.stopPropagation();
|
|
318
|
+
switch (mod) {
|
|
319
|
+
case "singleForm":
|
|
320
|
+
this.moneyForm
|
|
321
|
+
.get("singleFrom")
|
|
322
|
+
?.setValue(ToolbarFilterString.EMPTY_STRING_PLACEHOLDER);
|
|
323
|
+
this.moneyForm
|
|
324
|
+
.get("singleTo")
|
|
325
|
+
?.setValue(ToolbarFilterString.EMPTY_STRING_PLACEHOLDER);
|
|
326
|
+
this.singleFormError = false;
|
|
327
|
+
this.moneyFilterStatus = false;
|
|
328
|
+
this.singleToActive = 0;
|
|
329
|
+
this.singleFromActive = 0;
|
|
330
|
+
this.isButtonAvailable = false;
|
|
331
|
+
break;
|
|
332
|
+
case "multiFromFirst":
|
|
333
|
+
this.moneyForm
|
|
334
|
+
.get("multiFromFirstFrom")
|
|
335
|
+
?.setValue(ToolbarFilterString.EMPTY_STRING_PLACEHOLDER);
|
|
336
|
+
this.moneyForm
|
|
337
|
+
.get("multiFromFirstTo")
|
|
338
|
+
?.setValue(ToolbarFilterString.EMPTY_STRING_PLACEHOLDER);
|
|
339
|
+
this.multiFormFirstError = false;
|
|
340
|
+
break;
|
|
341
|
+
case "multiFormSecond":
|
|
342
|
+
this.moneyForm
|
|
343
|
+
.get("multiFormSecondFrom")
|
|
344
|
+
?.setValue(ToolbarFilterString.EMPTY_STRING_PLACEHOLDER);
|
|
345
|
+
this.moneyForm
|
|
346
|
+
.get("multiFormSecondTo")
|
|
347
|
+
?.setValue(ToolbarFilterString.EMPTY_STRING_PLACEHOLDER);
|
|
348
|
+
this.multiFormSecondError = false;
|
|
349
|
+
break;
|
|
350
|
+
case "multiFormThird":
|
|
351
|
+
this.moneyForm
|
|
352
|
+
.get("multiFormThirdFrom")
|
|
353
|
+
?.setValue(ToolbarFilterString.EMPTY_STRING_PLACEHOLDER);
|
|
354
|
+
this.moneyForm
|
|
355
|
+
.get("multiFormThirdTo")
|
|
356
|
+
?.setValue(ToolbarFilterString.EMPTY_STRING_PLACEHOLDER);
|
|
357
|
+
this.multiFormThirdError = false;
|
|
358
|
+
break;
|
|
359
|
+
case "clearAll":
|
|
360
|
+
this.multiFromFirstFromActive = 0;
|
|
361
|
+
this.multiFromFirstToActive = 0;
|
|
362
|
+
this.multiFormSecondFromActive = 0;
|
|
363
|
+
this.multiFormSecondToActive = 0;
|
|
364
|
+
this.multiFormThirdFromActive = 0;
|
|
365
|
+
this.multiFormThirdToActive = 0;
|
|
366
|
+
this.moneyForm.reset();
|
|
367
|
+
this.multiFormFirstError = false;
|
|
368
|
+
this.multiFormSecondError = false;
|
|
369
|
+
this.multiFormThirdError = false;
|
|
370
|
+
break;
|
|
371
|
+
default:
|
|
372
|
+
break;
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
setFilterValue(event) {
|
|
376
|
+
let queryParams = {};
|
|
377
|
+
let subType = ToolbarFilterString.EMPTY_STRING_PLACEHOLDER.toString();
|
|
378
|
+
this.isButtonAvailable = false;
|
|
379
|
+
if (this.type === ToolbarFilterString.TIME_FILTER) {
|
|
380
|
+
}
|
|
381
|
+
else if (this.type === ToolbarFilterString.MONEY_FILTER &&
|
|
382
|
+
!this.isRepairFilter) {
|
|
383
|
+
if (this.subType === ToolbarFilterString.ALL) {
|
|
384
|
+
this.multiFromFirstFromActive = (" " + this.moneyForm.get("multiFromFirstFrom")?.value).slice(1);
|
|
385
|
+
this.multiFromFirstToActive = (" " + this.moneyForm.get("multiFromFirstTo")?.value).slice(1);
|
|
386
|
+
this.multiFormSecondFromActive = (" " + this.moneyForm.get("multiFormSecondFrom")?.value).slice(1);
|
|
387
|
+
this.multiFormSecondToActive = (" " + this.moneyForm.get("multiFormSecondTo")?.value).slice(1);
|
|
388
|
+
this.multiFormThirdFromActive = (" " + this.moneyForm.get("multiFormThirdFrom")?.value).slice(1);
|
|
389
|
+
this.multiFormThirdToActive = (" " + this.moneyForm.get("multiFormThirdTo")?.value).slice(1);
|
|
390
|
+
queryParams = {
|
|
391
|
+
firstFormFrom: this.moneyForm.get("multiFromFirstFrom")?.value,
|
|
392
|
+
firstFormTo: this.moneyForm.get("multiFromFirstTo")?.value,
|
|
393
|
+
secondFormFrom: this.moneyForm.get("multiFormSecondFrom")?.value,
|
|
394
|
+
secondFormTo: this.moneyForm.get("multiFormSecondTo")?.value,
|
|
395
|
+
thirdFormFrom: this.moneyForm.get("multiFormThirdFrom")?.value,
|
|
396
|
+
thirdFormTo: this.moneyForm.get("multiFormThirdTo")?.value,
|
|
397
|
+
};
|
|
398
|
+
let formsActive = 0;
|
|
399
|
+
if (this.moneyForm.get("multiFromFirstFrom")?.value ||
|
|
400
|
+
this.moneyForm.get("multiFromFirstTo")?.value) {
|
|
401
|
+
formsActive = formsActive + 1;
|
|
402
|
+
}
|
|
403
|
+
if (this.moneyForm.get("multiFormSecondFrom")?.value ||
|
|
404
|
+
this.moneyForm.get("multiFormSecondTo")?.value) {
|
|
405
|
+
formsActive = formsActive + 1;
|
|
406
|
+
}
|
|
407
|
+
if (this.moneyForm.get("multiFormThirdFrom")?.value ||
|
|
408
|
+
this.moneyForm.get("multiFormThirdTo")?.value) {
|
|
409
|
+
formsActive = formsActive + 1;
|
|
410
|
+
}
|
|
411
|
+
this.activeFormNum = formsActive;
|
|
412
|
+
this.totalFiltersNum = formsActive;
|
|
413
|
+
}
|
|
414
|
+
else {
|
|
415
|
+
this.singleFromActive = (" " + this.moneyForm.get("singleFrom")?.value).slice(1);
|
|
416
|
+
this.singleToActive = (" " + this.moneyForm.get("singleTo")?.value).slice(1);
|
|
417
|
+
if (!this.moneyForm.get("singleFrom")?.value &&
|
|
418
|
+
!this.moneyForm.get("singleTo")?.value) {
|
|
419
|
+
this.clearAll(event);
|
|
420
|
+
return;
|
|
421
|
+
}
|
|
422
|
+
this.singleFormActive = true;
|
|
423
|
+
queryParams = {
|
|
424
|
+
singleFrom: this.moneyForm.get("singleFrom")?.value
|
|
425
|
+
? parseInt(this.moneyForm.get("singleFrom")?.value)
|
|
426
|
+
: ToolbarFilterString.EMPTY_STRING_PLACEHOLDER,
|
|
427
|
+
singleTo: this.moneyForm.get("singleTo")?.value
|
|
428
|
+
? parseInt(this.moneyForm.get("singleTo")?.value)
|
|
429
|
+
: ToolbarFilterString.EMPTY_STRING_PLACEHOLDER,
|
|
430
|
+
};
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
const data = {
|
|
434
|
+
filterType: this.type,
|
|
435
|
+
action: "Set",
|
|
436
|
+
queryParams: queryParams,
|
|
437
|
+
subType: subType,
|
|
438
|
+
};
|
|
439
|
+
return data;
|
|
440
|
+
}
|
|
441
|
+
checkMoneyMultiForm(data) {
|
|
442
|
+
let firstFormChanged = "none";
|
|
443
|
+
let secondFormChanged = "none";
|
|
444
|
+
let thirdFormChanged = "none";
|
|
445
|
+
const firstFromActive = this.multiFromFirstFromActive && this.multiFromFirstFromActive !== "null"
|
|
446
|
+
? this.multiFromFirstFromActive
|
|
447
|
+
: 0;
|
|
448
|
+
const firstToActive = this.multiFromFirstToActive && this.multiFromFirstToActive != "null"
|
|
449
|
+
? this.multiFromFirstToActive
|
|
450
|
+
: 0;
|
|
451
|
+
const secFromActive = this.multiFormSecondFromActive &&
|
|
452
|
+
this.multiFormSecondFromActive !== "null"
|
|
453
|
+
? this.multiFormSecondFromActive
|
|
454
|
+
: 0;
|
|
455
|
+
const secToActive = this.multiFormSecondToActive && this.multiFormSecondToActive !== "null"
|
|
456
|
+
? this.multiFormSecondToActive
|
|
457
|
+
: 0;
|
|
458
|
+
const thirdFromActive = this.multiFormThirdFromActive && this.multiFormThirdFromActive !== "null"
|
|
459
|
+
? this.multiFormThirdFromActive
|
|
460
|
+
: 0;
|
|
461
|
+
const thirdToActive = this.multiFormThirdToActive && this.multiFormThirdToActive !== "null"
|
|
462
|
+
? this.multiFormThirdToActive
|
|
463
|
+
: 0;
|
|
464
|
+
const firstFrom = data.multiFromFirstFrom && data.multiFromFirstFrom !== "null"
|
|
465
|
+
? parseInt(data.multiFromFirstFrom)
|
|
466
|
+
: 0;
|
|
467
|
+
const firstTo = data.multiFromFirstTo && data.multiFromFirstTo !== "null"
|
|
468
|
+
? parseInt(data.multiFromFirstTo)
|
|
469
|
+
: 0;
|
|
470
|
+
const secFrom = data.multiFormSecondFrom && data.multiFormSecondFrom !== "null"
|
|
471
|
+
? parseInt(data.multiFormSecondFrom)
|
|
472
|
+
: 0;
|
|
473
|
+
const secTo = data.multiFormSecondTo && data.multiFormSecondTo !== "null"
|
|
474
|
+
? parseInt(data.multiFormSecondTo)
|
|
475
|
+
: 0;
|
|
476
|
+
const thirdFrom = data.multiFormThirdFrom && data.multiFormThirdFrom !== "null"
|
|
477
|
+
? parseInt(data.multiFormThirdFrom)
|
|
478
|
+
: 0;
|
|
479
|
+
const thirdTo = data.multiFormThirdTo && data.multiFormThirdTo !== "null"
|
|
480
|
+
? parseInt(data.multiFormThirdTo)
|
|
481
|
+
: 0;
|
|
482
|
+
if (firstFrom !== firstFromActive || firstTo !== firstToActive) {
|
|
483
|
+
firstFormChanged = "changed";
|
|
484
|
+
}
|
|
485
|
+
if (secFrom !== secFromActive || secTo !== secToActive) {
|
|
486
|
+
secondFormChanged = "changed";
|
|
487
|
+
}
|
|
488
|
+
if (thirdFrom !== thirdFromActive || thirdTo !== thirdToActive) {
|
|
489
|
+
thirdFormChanged = "changed";
|
|
490
|
+
}
|
|
491
|
+
if (firstFormChanged === "changed" ||
|
|
492
|
+
secondFormChanged === "changed" ||
|
|
493
|
+
thirdFormChanged === "changed") {
|
|
494
|
+
this.isButtonAvailable = true;
|
|
495
|
+
}
|
|
496
|
+
else {
|
|
497
|
+
this.isButtonAvailable = false;
|
|
498
|
+
if (firstFrom || firstTo || secFrom || secTo || thirdFrom || thirdTo) {
|
|
499
|
+
this.moneyFilterStatus = true;
|
|
500
|
+
}
|
|
501
|
+
else {
|
|
502
|
+
this.moneyFilterStatus = false;
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
getSvgPath(propertyName) {
|
|
507
|
+
return CaMoneyFilterSvgRoutes[propertyName];
|
|
508
|
+
}
|
|
509
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CaMoneyFilterComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i2.ThousandSeparatorPipe }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
510
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CaMoneyFilterComponent, isStandalone: true, selector: "app-ca-money-filter", inputs: { type: "type", subType: "subType", moneyFilter: "moneyFilter", fuelType: "fuelType", loadType: "loadType", isRepairFilter: "isRepairFilter", isFilterActive: "isFilterActive" }, providers: [NgbDropdownConfig, ThousandSeparator, TaSvg], ngImport: i0, template: "<ng-container *ngIf=\"moneyFilter && !isRepairFilter\">\n <div [class.multiMoneyForm]=\"subType === 'all'\" [formGroup]=\"moneyForm\">\n <div class=\"border-filter money-top-border-magin\"></div>\n <ng-container *ngIf=\"subType !== 'all'; else showAll\">\n <div class=\"single-form-holder\">\n <div\n class=\"money-main-holder d-flex justify-content-between align-items-center single-money-main\"\n [@showAnimation]=\"!!isFilterActive\"\n >\n <div\n class=\"money-value-holder d-flex justify-content-center align-items-center\"\n [class.errorForm]=\"singleFormError\"\n >\n <app-ca-input\n formControlName=\"singleFrom\"\n [inputConfig]=\"singleFormFrom\"\n ></app-ca-input>\n </div>\n <div\n class=\"money-value-holder d-flex justify-content-center align-items-center\"\n [class.errorForm]=\"singleFormError\"\n >\n <app-ca-input\n formControlName=\"singleTo\"\n [inputConfig]=\"singleFormTo\"\n ></app-ca-input>\n </div>\n </div>\n </div>\n </ng-container>\n <ng-template #showAll>\n <div class=\"multi-form-holder\">\n <div\n class=\"form-header\"\n [class.hiddenFormTitle]=\"!showPart1\"\n (click)=\"hideFormPart('part1')\"\n >\n <ng-container *ngIf=\"!fuelType && !loadType\">\n <div class=\"form-name fw-bold\" [@showAnimation]=\"!!isFilterActive\">\n Invoice Ageing\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"fuelType\">\n <div class=\"form-name fw-bold\" [@showAnimation]=\"!!isFilterActive\">\n Last Price\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"loadType\">\n <div\n class=\"form-name-gray text-uppercase fw-bold\"\n [@showAnimation]=\"!!isFilterActive\"\n >\n Rate\n </div>\n </ng-container>\n\n <ng-container\n *ngIf=\"\n moneyForm.value.multiFromFirstFrom &&\n moneyForm.value.multiFromFirstTo\n \"\n >\n <div\n class=\"clear-money-form d-flex justify-content-center align-items-center fw-bold\"\n (click)=\"clearForm('multiFromFirst', $event)\"\n >\n CLEAR\n </div>\n </ng-container>\n\n <div\n class=\"hide-money-form\"\n [ngClass]=\"{\n svg_rotate: !showPart1,\n rotate_back: showPart1,\n }\"\n >\n <svg-icon [src]=\"getSvgPath('arrowLeftSvgRoute')\"></svg-icon>\n </div>\n </div>\n <div\n class=\"money-main-holder d-flex justify-content-between align-items-center single-money-main\"\n [@closeForm]=\"showPart1\"\n >\n <div\n class=\"money-value-holder d-flex justify-content-center align-items-center\"\n >\n <app-ca-input\n [@showAnimation]=\"!!isFilterActive\"\n formControlName=\"multiFromFirstFrom\"\n [inputConfig]=\"multiFormFirstFrom\"\n ></app-ca-input>\n </div>\n <div\n class=\"money-value-holder d-flex justify-content-center align-items-center\"\n [class.errorForm]=\"multiFormFirstError\"\n >\n <app-ca-input\n [@showAnimation]=\"!!isFilterActive\"\n formControlName=\"multiFromFirstTo\"\n [inputConfig]=\"multiFormFirstTo\"\n ></app-ca-input>\n </div>\n </div>\n <div\n class=\"border-filter money-bottom-border-magin form-border\"\n [class.hiddenFormBorder]=\"!showPart1\"\n ></div>\n <div\n class=\"form-header\"\n [class.hiddenFormTitle]=\"!showPart2\"\n (click)=\"hideFormPart('part2')\"\n >\n <ng-container *ngIf=\"!fuelType && !loadType\">\n <div class=\"form-name fw-bold\" [@showAnimation]=\"!!isFilterActive\">\n Available Credit\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"fuelType\">\n <div class=\"form-name fw-bold\" [@showAnimation]=\"!!isFilterActive\">\n Price Per Gallon\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"loadType\">\n <div\n class=\"form-name-gray text-uppercase fw-bold\"\n [@showAnimation]=\"!!isFilterActive\"\n >\n Paid\n </div>\n </ng-container>\n\n <ng-container\n *ngIf=\"\n moneyForm.value.multiFormSecondFrom &&\n moneyForm.value.multiFormSecondTo\n \"\n >\n <div\n class=\"clear-money-form d-flex justify-content-center align-items-center fw-bold\"\n (click)=\"clearForm('multiFormSecond', $event)\"\n >\n CLEAR\n </div>\n </ng-container>\n\n <div\n class=\"hide-money-form\"\n [ngClass]=\"{\n svg_rotate: !showPart2,\n rotate_back: showPart2,\n }\"\n >\n <svg-icon [src]=\"getSvgPath('arrowLeftSvgRoute')\"></svg-icon>\n </div>\n </div>\n <div\n class=\"money-main-holder d-flex justify-content-between align-items-center single-money-main\"\n [@closeForm]=\"showPart2\"\n >\n <div\n class=\"money-value-holder d-flex justify-content-center align-items-center\"\n >\n <app-ca-input\n [@showAnimation]=\"!!isFilterActive\"\n formControlName=\"multiFormSecondFrom\"\n [inputConfig]=\"multiFormSecondFrom\"\n ></app-ca-input>\n </div>\n <div\n class=\"money-value-holder d-flex justify-content-center align-items-center\"\n [class.errorForm]=\"multiFormSecondError\"\n >\n <app-ca-input\n [@showAnimation]=\"!!isFilterActive\"\n formControlName=\"multiFormSecondTo\"\n [inputConfig]=\"multiFormSecondTo\"\n ></app-ca-input>\n </div>\n </div>\n <div\n class=\"border-filter money-bottom-border-magin form-border\"\n [class.hiddenFormBorder]=\"!showPart2\"\n ></div>\n <div\n class=\"form-header\"\n [class.hiddenFormTitle]=\"!showPart3\"\n (click)=\"hideFormPart('part3')\"\n >\n <ng-container *ngIf=\"!fuelType && !loadType\">\n <div class=\"form-name fw-bold\" [@showAnimation]=\"!!isFilterActive\">\n Revenue\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"fuelType\">\n <div class=\"form-name fw-bold\" [@showAnimation]=\"!!isFilterActive\">\n Total Cost\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"loadType\">\n <div\n class=\"form-name-gray text-uppercase fw-bold\"\n [@showAnimation]=\"!!isFilterActive\"\n >\n Due\n </div>\n </ng-container>\n\n <ng-container\n *ngIf=\"\n moneyForm.value.multiFormThirdFrom &&\n moneyForm.value.multiFormThirdTo\n \"\n >\n <div\n class=\"clear-money-form d-flex justify-content-center align-items-center fw-bold\"\n (click)=\"clearForm('multiFormThird', $event)\"\n >\n CLEAR\n </div>\n </ng-container>\n\n <div\n class=\"hide-money-form\"\n [ngClass]=\"{\n svg_rotate: !showPart3,\n rotate_back: showPart3,\n }\"\n >\n <svg-icon [src]=\"getSvgPath('arrowLeftSvgRoute')\"></svg-icon>\n </div>\n </div>\n <div\n class=\"money-main-holder d-flex justify-content-between align-items-center single-money-main\"\n [@closeForm]=\"showPart3\"\n >\n <div\n class=\"money-value-holder d-flex justify-content-center align-items-center\"\n >\n <app-ca-input\n [@showAnimation]=\"!!isFilterActive\"\n formControlName=\"multiFormThirdFrom\"\n [inputConfig]=\"multiFormThirdFrom\"\n ></app-ca-input>\n </div>\n <div\n class=\"money-value-holder d-flex justify-content-center align-items-center\"\n [class.errorForm]=\"multiFormThirdError\"\n >\n <app-ca-input\n [@showAnimation]=\"!!isFilterActive\"\n formControlName=\"multiFormThirdTo\"\n [inputConfig]=\"multiFormThirdTo\"\n ></app-ca-input>\n </div>\n </div>\n </div>\n </ng-template>\n\n <div\n class=\"border-filter money-bottom-border-magin form-border\"\n [class.hiddenFormBorder]=\"!showPart3\"\n ></div>\n </div>\n</ng-container>\n", styles: ["@keyframes dropdown{0%{margin-top:20px;visibility:hidden;opacity:0}to{opacity:1;margin-top:10px;visibility:visible!important}}@keyframes dropup{0%{margin-top:-19px;visibility:hidden;opacity:0}to{margin-top:inherit;visibility:visible!important}}.border-filter{width:100%;height:1px;border-radius:1px;margin:4px 0;background-color:#424242}.money-filter{padding:10px 6px 6px;width:300px}.money-filter .filter-header{padding-left:3px}.money-filter .filter-header .user-title-text{padding-left:0}.money-filter .money-main-holder{position:relative;width:100%;overflow:hidden}.money-filter .money-main-holder.single-money-main{margin-top:0}.money-filter .money-main-holder .money-value-holder{position:relative;width:141px;border-radius:2px;font-size:14px;color:#aaa;transition:transform .59s ease-in-out;padding-top:20px}.money-filter .money-main-holder .errorForm .input-custom-group .input-icon svg path{fill:#ef5350!important}.money-filter .buttons-holder{padding:0}.money-filter .buttons-holder .button-clear,.money-filter .buttons-holder .button-set{width:140px}.money-filter .single-form-holder{position:relative;padding:0 0 13px;width:100%}.money-filter .single-form-holder .clear-money-form{top:-4px;right:0}.money-filter .form-header{position:relative;width:100%;padding-left:4px;margin-bottom:4px;transition:all .52s ease-in;cursor:pointer}.money-filter .form-header .form-name{padding-left:2px;line-height:18px;font-size:14px;color:#dadada;-webkit-user-select:none;user-select:none}.money-filter .form-header .form-name-gray{font-size:11px;line-height:18px;color:#aaa;-webkit-user-select:none;user-select:none}.money-filter .form-header .hide-money-form{position:absolute;right:4px;top:0;height:13px;width:13px}.money-filter .form-header .hide-money-form svg-icon{height:8px;width:13px}.money-filter .form-header .hide-money-form svg-icon svg{height:8px;width:13px}.money-filter .form-header .hide-money-form svg-icon svg path{fill:#b7b7b7}.money-filter .form-header .svg_rotate svg{transform:rotate(180deg);transition:transform .2s ease-in-out}.money-filter .form-header .rotate_back svg{transform:rotate(0);transition:transform .2s ease-in-out}.money-filter .clear-money-form{position:absolute;right:28px;top:0;height:20px;width:54px;color:#dadada;font-size:11px;background-color:#fff3;border-radius:2px;cursor:pointer}.money-filter .clear-money-form:hover{background-color:#fff6;color:#dadada}.multiMoneyForm .money-top-border-magin{margin:8px 0 6px}.multiMoneyForm .money-bottom-border-magin{margin:18px 0 12px}.multiMoneyForm .form-border{margin:18px 0 6px}.multiMoneyForm .multi-form-holder{width:100%}.multiMoneyForm .hiddenFormTitle{margin-bottom:4px}.multiMoneyForm .hiddenFormBorder{margin:0 0 8px}\n"], dependencies: [{ kind: "ngmodule", type:
|
|
511
|
+
// modules
|
|
512
|
+
CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: NgbModule }, { kind: "ngmodule", type: HttpClientModule }, { kind: "ngmodule", type: SvgIconModule }, { kind: "component", type: i4.SvgIconComponent, selector: "svg-icon", inputs: ["src", "name", "stretch", "applyClass", "applyCss", "svgClass", "class", "viewBox", "svgAriaLabel", "svgStyle"] }, { kind: "component", type: CaInputComponent, selector: "app-ca-input", inputs: ["inputConfig", "incorrectValue", "selectedDropdownLabelColor"], outputs: ["blurInput", "isFocusInput", "change"] }], animations: [showAnimation("showAnimation"), closeForm("closeForm")], encapsulation: i0.ViewEncapsulation.None }); }
|
|
513
|
+
}
|
|
514
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CaMoneyFilterComponent, decorators: [{
|
|
515
|
+
type: Component,
|
|
516
|
+
args: [{ selector: "app-ca-money-filter", standalone: true, imports: [
|
|
517
|
+
// modules
|
|
518
|
+
CommonModule,
|
|
519
|
+
FormsModule,
|
|
520
|
+
ReactiveFormsModule,
|
|
521
|
+
NgbModule,
|
|
522
|
+
HttpClientModule,
|
|
523
|
+
SvgIconModule,
|
|
524
|
+
CaInputComponent,
|
|
525
|
+
], providers: [NgbDropdownConfig, ThousandSeparator, TaSvg], encapsulation: ViewEncapsulation.None, animations: [showAnimation("showAnimation"), closeForm("closeForm")], template: "<ng-container *ngIf=\"moneyFilter && !isRepairFilter\">\n <div [class.multiMoneyForm]=\"subType === 'all'\" [formGroup]=\"moneyForm\">\n <div class=\"border-filter money-top-border-magin\"></div>\n <ng-container *ngIf=\"subType !== 'all'; else showAll\">\n <div class=\"single-form-holder\">\n <div\n class=\"money-main-holder d-flex justify-content-between align-items-center single-money-main\"\n [@showAnimation]=\"!!isFilterActive\"\n >\n <div\n class=\"money-value-holder d-flex justify-content-center align-items-center\"\n [class.errorForm]=\"singleFormError\"\n >\n <app-ca-input\n formControlName=\"singleFrom\"\n [inputConfig]=\"singleFormFrom\"\n ></app-ca-input>\n </div>\n <div\n class=\"money-value-holder d-flex justify-content-center align-items-center\"\n [class.errorForm]=\"singleFormError\"\n >\n <app-ca-input\n formControlName=\"singleTo\"\n [inputConfig]=\"singleFormTo\"\n ></app-ca-input>\n </div>\n </div>\n </div>\n </ng-container>\n <ng-template #showAll>\n <div class=\"multi-form-holder\">\n <div\n class=\"form-header\"\n [class.hiddenFormTitle]=\"!showPart1\"\n (click)=\"hideFormPart('part1')\"\n >\n <ng-container *ngIf=\"!fuelType && !loadType\">\n <div class=\"form-name fw-bold\" [@showAnimation]=\"!!isFilterActive\">\n Invoice Ageing\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"fuelType\">\n <div class=\"form-name fw-bold\" [@showAnimation]=\"!!isFilterActive\">\n Last Price\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"loadType\">\n <div\n class=\"form-name-gray text-uppercase fw-bold\"\n [@showAnimation]=\"!!isFilterActive\"\n >\n Rate\n </div>\n </ng-container>\n\n <ng-container\n *ngIf=\"\n moneyForm.value.multiFromFirstFrom &&\n moneyForm.value.multiFromFirstTo\n \"\n >\n <div\n class=\"clear-money-form d-flex justify-content-center align-items-center fw-bold\"\n (click)=\"clearForm('multiFromFirst', $event)\"\n >\n CLEAR\n </div>\n </ng-container>\n\n <div\n class=\"hide-money-form\"\n [ngClass]=\"{\n svg_rotate: !showPart1,\n rotate_back: showPart1,\n }\"\n >\n <svg-icon [src]=\"getSvgPath('arrowLeftSvgRoute')\"></svg-icon>\n </div>\n </div>\n <div\n class=\"money-main-holder d-flex justify-content-between align-items-center single-money-main\"\n [@closeForm]=\"showPart1\"\n >\n <div\n class=\"money-value-holder d-flex justify-content-center align-items-center\"\n >\n <app-ca-input\n [@showAnimation]=\"!!isFilterActive\"\n formControlName=\"multiFromFirstFrom\"\n [inputConfig]=\"multiFormFirstFrom\"\n ></app-ca-input>\n </div>\n <div\n class=\"money-value-holder d-flex justify-content-center align-items-center\"\n [class.errorForm]=\"multiFormFirstError\"\n >\n <app-ca-input\n [@showAnimation]=\"!!isFilterActive\"\n formControlName=\"multiFromFirstTo\"\n [inputConfig]=\"multiFormFirstTo\"\n ></app-ca-input>\n </div>\n </div>\n <div\n class=\"border-filter money-bottom-border-magin form-border\"\n [class.hiddenFormBorder]=\"!showPart1\"\n ></div>\n <div\n class=\"form-header\"\n [class.hiddenFormTitle]=\"!showPart2\"\n (click)=\"hideFormPart('part2')\"\n >\n <ng-container *ngIf=\"!fuelType && !loadType\">\n <div class=\"form-name fw-bold\" [@showAnimation]=\"!!isFilterActive\">\n Available Credit\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"fuelType\">\n <div class=\"form-name fw-bold\" [@showAnimation]=\"!!isFilterActive\">\n Price Per Gallon\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"loadType\">\n <div\n class=\"form-name-gray text-uppercase fw-bold\"\n [@showAnimation]=\"!!isFilterActive\"\n >\n Paid\n </div>\n </ng-container>\n\n <ng-container\n *ngIf=\"\n moneyForm.value.multiFormSecondFrom &&\n moneyForm.value.multiFormSecondTo\n \"\n >\n <div\n class=\"clear-money-form d-flex justify-content-center align-items-center fw-bold\"\n (click)=\"clearForm('multiFormSecond', $event)\"\n >\n CLEAR\n </div>\n </ng-container>\n\n <div\n class=\"hide-money-form\"\n [ngClass]=\"{\n svg_rotate: !showPart2,\n rotate_back: showPart2,\n }\"\n >\n <svg-icon [src]=\"getSvgPath('arrowLeftSvgRoute')\"></svg-icon>\n </div>\n </div>\n <div\n class=\"money-main-holder d-flex justify-content-between align-items-center single-money-main\"\n [@closeForm]=\"showPart2\"\n >\n <div\n class=\"money-value-holder d-flex justify-content-center align-items-center\"\n >\n <app-ca-input\n [@showAnimation]=\"!!isFilterActive\"\n formControlName=\"multiFormSecondFrom\"\n [inputConfig]=\"multiFormSecondFrom\"\n ></app-ca-input>\n </div>\n <div\n class=\"money-value-holder d-flex justify-content-center align-items-center\"\n [class.errorForm]=\"multiFormSecondError\"\n >\n <app-ca-input\n [@showAnimation]=\"!!isFilterActive\"\n formControlName=\"multiFormSecondTo\"\n [inputConfig]=\"multiFormSecondTo\"\n ></app-ca-input>\n </div>\n </div>\n <div\n class=\"border-filter money-bottom-border-magin form-border\"\n [class.hiddenFormBorder]=\"!showPart2\"\n ></div>\n <div\n class=\"form-header\"\n [class.hiddenFormTitle]=\"!showPart3\"\n (click)=\"hideFormPart('part3')\"\n >\n <ng-container *ngIf=\"!fuelType && !loadType\">\n <div class=\"form-name fw-bold\" [@showAnimation]=\"!!isFilterActive\">\n Revenue\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"fuelType\">\n <div class=\"form-name fw-bold\" [@showAnimation]=\"!!isFilterActive\">\n Total Cost\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"loadType\">\n <div\n class=\"form-name-gray text-uppercase fw-bold\"\n [@showAnimation]=\"!!isFilterActive\"\n >\n Due\n </div>\n </ng-container>\n\n <ng-container\n *ngIf=\"\n moneyForm.value.multiFormThirdFrom &&\n moneyForm.value.multiFormThirdTo\n \"\n >\n <div\n class=\"clear-money-form d-flex justify-content-center align-items-center fw-bold\"\n (click)=\"clearForm('multiFormThird', $event)\"\n >\n CLEAR\n </div>\n </ng-container>\n\n <div\n class=\"hide-money-form\"\n [ngClass]=\"{\n svg_rotate: !showPart3,\n rotate_back: showPart3,\n }\"\n >\n <svg-icon [src]=\"getSvgPath('arrowLeftSvgRoute')\"></svg-icon>\n </div>\n </div>\n <div\n class=\"money-main-holder d-flex justify-content-between align-items-center single-money-main\"\n [@closeForm]=\"showPart3\"\n >\n <div\n class=\"money-value-holder d-flex justify-content-center align-items-center\"\n >\n <app-ca-input\n [@showAnimation]=\"!!isFilterActive\"\n formControlName=\"multiFormThirdFrom\"\n [inputConfig]=\"multiFormThirdFrom\"\n ></app-ca-input>\n </div>\n <div\n class=\"money-value-holder d-flex justify-content-center align-items-center\"\n [class.errorForm]=\"multiFormThirdError\"\n >\n <app-ca-input\n [@showAnimation]=\"!!isFilterActive\"\n formControlName=\"multiFormThirdTo\"\n [inputConfig]=\"multiFormThirdTo\"\n ></app-ca-input>\n </div>\n </div>\n </div>\n </ng-template>\n\n <div\n class=\"border-filter money-bottom-border-magin form-border\"\n [class.hiddenFormBorder]=\"!showPart3\"\n ></div>\n </div>\n</ng-container>\n", styles: ["@keyframes dropdown{0%{margin-top:20px;visibility:hidden;opacity:0}to{opacity:1;margin-top:10px;visibility:visible!important}}@keyframes dropup{0%{margin-top:-19px;visibility:hidden;opacity:0}to{margin-top:inherit;visibility:visible!important}}.border-filter{width:100%;height:1px;border-radius:1px;margin:4px 0;background-color:#424242}.money-filter{padding:10px 6px 6px;width:300px}.money-filter .filter-header{padding-left:3px}.money-filter .filter-header .user-title-text{padding-left:0}.money-filter .money-main-holder{position:relative;width:100%;overflow:hidden}.money-filter .money-main-holder.single-money-main{margin-top:0}.money-filter .money-main-holder .money-value-holder{position:relative;width:141px;border-radius:2px;font-size:14px;color:#aaa;transition:transform .59s ease-in-out;padding-top:20px}.money-filter .money-main-holder .errorForm .input-custom-group .input-icon svg path{fill:#ef5350!important}.money-filter .buttons-holder{padding:0}.money-filter .buttons-holder .button-clear,.money-filter .buttons-holder .button-set{width:140px}.money-filter .single-form-holder{position:relative;padding:0 0 13px;width:100%}.money-filter .single-form-holder .clear-money-form{top:-4px;right:0}.money-filter .form-header{position:relative;width:100%;padding-left:4px;margin-bottom:4px;transition:all .52s ease-in;cursor:pointer}.money-filter .form-header .form-name{padding-left:2px;line-height:18px;font-size:14px;color:#dadada;-webkit-user-select:none;user-select:none}.money-filter .form-header .form-name-gray{font-size:11px;line-height:18px;color:#aaa;-webkit-user-select:none;user-select:none}.money-filter .form-header .hide-money-form{position:absolute;right:4px;top:0;height:13px;width:13px}.money-filter .form-header .hide-money-form svg-icon{height:8px;width:13px}.money-filter .form-header .hide-money-form svg-icon svg{height:8px;width:13px}.money-filter .form-header .hide-money-form svg-icon svg path{fill:#b7b7b7}.money-filter .form-header .svg_rotate svg{transform:rotate(180deg);transition:transform .2s ease-in-out}.money-filter .form-header .rotate_back svg{transform:rotate(0);transition:transform .2s ease-in-out}.money-filter .clear-money-form{position:absolute;right:28px;top:0;height:20px;width:54px;color:#dadada;font-size:11px;background-color:#fff3;border-radius:2px;cursor:pointer}.money-filter .clear-money-form:hover{background-color:#fff6;color:#dadada}.multiMoneyForm .money-top-border-magin{margin:8px 0 6px}.multiMoneyForm .money-bottom-border-magin{margin:18px 0 12px}.multiMoneyForm .form-border{margin:18px 0 6px}.multiMoneyForm .multi-form-holder{width:100%}.multiMoneyForm .hiddenFormTitle{margin-bottom:4px}.multiMoneyForm .hiddenFormBorder{margin:0 0 8px}\n"] }]
|
|
526
|
+
}], ctorParameters: function () { return [{ type: i1.UntypedFormBuilder }, { type: i2.ThousandSeparatorPipe }]; }, propDecorators: { type: [{
|
|
527
|
+
type: Input
|
|
528
|
+
}], subType: [{
|
|
529
|
+
type: Input
|
|
530
|
+
}], moneyFilter: [{
|
|
531
|
+
type: Input
|
|
532
|
+
}], fuelType: [{
|
|
533
|
+
type: Input
|
|
534
|
+
}], loadType: [{
|
|
535
|
+
type: Input
|
|
536
|
+
}], isRepairFilter: [{
|
|
537
|
+
type: Input
|
|
538
|
+
}], isFilterActive: [{
|
|
539
|
+
type: Input
|
|
540
|
+
}] } });
|
|
541
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtbW9uZXktZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLWZpbHRlcnMvY29tcG9uZW50cy9jYS1tb25leS1maWx0ZXIvY2EtbW9uZXktZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLWZpbHRlcnMvY29tcG9uZW50cy9jYS1tb25leS1maWx0ZXIvY2EtbW9uZXktZmlsdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUVMLGlCQUFpQixHQUVsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsV0FBVyxFQUdYLG1CQUFtQixHQUNwQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV4RCxVQUFVO0FBQ1YsT0FBTyxFQUFFLG9CQUFvQixJQUFJLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUUxRSxRQUFRO0FBQ1IsT0FBTyxFQUFFLHFCQUFxQixJQUFJLGlCQUFpQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDbkcsT0FBTyxFQUFFLFNBQVMsSUFBSSxLQUFLLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUUvRCxhQUFhO0FBQ2IsT0FBTyxFQUFFLGFB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QyxlQUFlLENBQUMsRUFBRSxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7NklBRzNELElBQUk7c0JBQVosS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIE9uRGVzdHJveSxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7XG4gIEZvcm1zTW9kdWxlLFxuICBVbnR5cGVkRm9ybUJ1aWxkZXIsXG4gIFVudHlwZWRGb3JtR3JvdXAsXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG59IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgSHR0cENsaWVudE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xuXG4vLyBtb2R1bGVzXG5pbXBvcnQgeyBBbmd1bGFyU3ZnSWNvbk1vZHVsZSBhcyBTdmdJY29uTW9kdWxlIH0gZnJvbSBcImFuZ3VsYXItc3ZnLWljb25cIjtcbmltcG9ydCB7IE5nYkRyb3Bkb3duQ29uZmlnLCBOZ2JNb2R1bGUgfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcblxuLy8gcGlwZXNcbmltcG9ydCB7IFRob3VzYW5kU2VwYXJhdG9yUGlwZSBhcyBUaG91c2FuZFNlcGFyYXRvciB9IGZyb20gXCJAc2hhcmVkL3BpcGVzL3Rob3VzYW5kLXNlcGFyYXRvci5waXBlXCI7XG5pbXBvcnQgeyBUYVN2Z1BpcGUgYXMgVGFTdmcgfSBmcm9tIFwiQHNoYXJlZC9waXBlcy90YS1zdmcucGlwZVwiO1xuXG4vLyBhbmltYXRpb25zXG5pbXBvcnQgeyBzaG93QW5pbWF0aW9uIH0gZnJvbSBcIkBzaGFyZWQvYW5pbWF0aW9ucy9zaG93LmFuaW1hdGlvblwiO1xuaW1wb3J0IHsgY2xvc2VGb3JtIH0gZnJvbSBcIkBzaGFyZWQvYW5pbWF0aW9ucy9jbG9zZS1mb3JtLmFuaW1hdGlvblwiO1xuaW1wb3J0IHsgQ2FNb25leUZpbHRlclN2Z1JvdXRlcyB9IGZyb20gXCJAc2hhcmVkL2NvbXBvbmVudHMvY2EtZmlsdGVycy91dGlscy9zdmctcm91dGVzL2NhLW1vbmV5LWZpbHRlci1zdmctcm91dGVzXCI7XG5cbi8vIGVudW1zXG5pbXBvcnQgeyBUb29sYmFyRmlsdGVyU3RyaW5nRW51bSBhcyBUb29sYmFyRmlsdGVyU3RyaW5nIH0gZnJvbSBcIkBzaGFyZWQvY29tcG9uZW50cy9jYS1tYXAvZW51bXMvdG9vbGJhci1maWx0ZXItc3RyaW5nLmVudW1cIjtcblxuLy8gbW9kZWxzXG5pbXBvcnQgeyBBcnJheVN0YXR1cyB9IGZyb20gXCJAc2hhcmVkL21vZGVscy9hcnJheS1zdGF0dXMubW9kZWxcIjtcbmltcG9ydCB7IGZpbHRlck91dHB1dCB9IGZyb20gXCJAc2hhcmVkL21vZGVscy9maWx0ZXItb3V0cHV0Lm1vZGVsXCI7XG5pbXBvcnQgeyBmaWx0ZXJPdXRwdXRXaXRoUGFyYW1zIH0gZnJvbSBcIkBzaGFyZWQvbW9kZWxzL2ZpbHRlci1vdXRwdXQtcGFyYW1zLm1vZGVsXCI7XG5cbi8vIGNvbmZpZ3NcbmltcG9ydCB7IENhTW9uZXlGaWx0ZXJDb25maWcgfSBmcm9tIFwiQHNoYXJlZC9jb21wb25lbnRzL2NhLWZpbHRlcnMvY29tcG9uZW50cy9jYS1tb25leS1maWx0ZXIvY29uZmlnL2NhLW1vbmV5LWZpbHRlci5jb25maWdcIjtcbmltcG9ydCB7IElDYUlucHV0IH0gZnJvbSBcIkBzaGFyZWQvY29tcG9uZW50cy9jYS1pbnB1dC9jb25maWcvY2EtaW5wdXQuY29uZmlnXCI7XG5cbi8vIGNvbXBvbmVudHNcbmltcG9ydCB7IENhSW5wdXRDb21wb25lbnQgfSBmcm9tIFwiQHNoYXJlZC9jb21wb25lbnRzL2NhLWlucHV0L2NhLWlucHV0LmNvbXBvbmVudFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiYXBwLWNhLW1vbmV5LWZpbHRlclwiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgLy8gbW9kdWxlc1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE5nYk1vZHVsZSxcbiAgICBIdHRwQ2xpZW50TW9kdWxlLFxuICAgIFN2Z0ljb25Nb2R1bGUsXG4gICAgQ2FJbnB1dENvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6IFwiLi9jYS1tb25leS1maWx0ZXIuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL2NhLW1vbmV5LWZpbHRlci5jb21wb25lbnQuc2Nzc1wiXSxcbiAgcHJvdmlkZXJzOiBbTmdiRHJvcGRvd25Db25maWcsIFRob3VzYW5kU2VwYXJhdG9yLCBUYVN2Z10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGFuaW1hdGlvbnM6IFtzaG93QW5pbWF0aW9uKFwic2hvd0FuaW1hdGlvblwiKSwgY2xvc2VGb3JtKFwiY2xvc2VGb3JtXCIpXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2FNb25leUZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgdHlwZTogc3RyaW5nID0gVG9vbGJhckZpbHRlclN0cmluZy5NT05FWV9GSUxURVI7XG4gIEBJbnB1dCgpIHN1YlR5cGU6IHN0cmluZyA9IFRvb2xiYXJGaWx0ZXJTdHJpbmcuUEVORElOR19TVEFUVVM7XG4gIEBJbnB1dCgpIG1vbmV5RmlsdGVyOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgZnVlbFR5cGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgbG9hZFR5cGU6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBpc1JlcGFpckZpbHRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBpc0ZpbHRlckFjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHB1YmxpYyBzaG93UGFydDE6IGJvb2xlYW4gPSB0cnVlO1xuICBwdWJsaWMgc2hvd1BhcnQyOiBib29sZWFuID0gdHJ1ZTtcbiAgcHVibGljIHNob3dQYXJ0MzogYm9vbGVhbiA9IHRydWU7XG4gIHB1YmxpYyBtb25leUZvcm0hOiBVbnR5cGVkRm9ybUdyb3VwO1xuXG4gIHB1YmxpYyBzaW5nbGVGb3JtRXJyb3I6IHN0cmluZyB8IGJvb2xlYW4gPVxuICAgIFRvb2xiYXJGaWx0ZXJTdHJpbmcuRU1QVFlfU1RSSU5HX1BMQUNFSE9MREVSO1xuICBwdWJsaWMgbXVsdGlGb3JtRmlyc3RFcnJvcjogc3RyaW5nIHwgYm9vbGVhbiA9XG4gICAgVG9vbGJhckZpbHRlclN0cmluZy5FTVBUWV9TVFJJTkdfUExBQ0VIT0xERVI7XG4gIHB1YmxpYyBtdWx0aUZvcm1TZWNvbmRFcnJvcjogc3RyaW5nIHwgYm9vbGVhbiA9XG4gICAgVG9vbGJhckZpbHRlclN0cmluZy5FTVBUWV9TVFJJTkdfUExBQ0VIT0xERVI7XG4gIHB1YmxpYyBtdWx0aUZvcm1UaGlyZEVycm9yOiBzdHJpbmcgfCBib29sZWFuID1cbiAgICBUb29sYmFyRmlsdGVyU3RyaW5nLkVNUFRZX1NUUklOR19QTEFDRUhPTERFUjtcbiAgcHVibGljIG1vbmV5RmlsdGVyU3RhdHVzOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBpc0J1dHRvbkF2YWlsYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBzaW5nbGVGcm9tQWN0aXZlOiBudW1iZXIgfCBzdHJpbmcgPSAwO1xuICBwdWJsaWMgc2luZ2xlVG9BY3RpdmU6IG51bWJlciB8IHN0cmluZyA9IDA7XG4gIHB1YmxpYyBtdWx0aUZyb21GaXJzdEZyb21BY3RpdmU6IG51bWJlciB8IHN0cmluZyA9IDA7XG4gIHB1YmxpYyBtdWx0aUZyb21GaXJzdFRvQWN0aXZlOiBudW1iZXIgfCBzdHJpbmcgPSAwO1xuICBwdWJsaWMgbXVsdGlGb3JtU2Vjb25kRnJvbUFjdGl2ZTogbnVtYmVyIHwgc3RyaW5nID0gMDtcbiAgcHVibGljIG11bHRpRm9ybVNlY29uZFRvQWN0aXZlOiBudW1iZXIgfCBzdHJpbmcgPSAwO1xuICBwdWJsaWMgbXVsdGlGb3JtVGhpcmRGcm9tQWN0aXZlOiBudW1iZXIgfCBzdHJpbmcgPSAwO1xuICBwdWJsaWMgbXVsdGlGb3JtVGhpcmRUb0FjdGl2ZTogbnVtYmVyIHwgc3RyaW5nID0gMDtcblxuICBwdWJsaWMgbWluVmFsdWVSYW5nZTogc3RyaW5nID0gVG9vbGJhckZpbHRlclN0cmluZy5NSU5fVkFMVUU7XG4gIHB1YmxpYyBtYXhWYWx1ZVJhbmdlOiBzdHJpbmcgPSBUb29sYmFyRmlsdGVyU3RyaW5nLk1BWF9WQUxVRTtcblxuICBwdWJsaWMgYWN0aXZlRm9ybU51bTogbnVtYmVyID0gMDtcbiAgcHVibGljIG1pblZhbHVlU2V0OiBzdHJpbmcgPSBUb29sYmFyRmlsdGVyU3RyaW5nLk1JTl9WQUxVRTtcbiAgcHVibGljIG1heFZhbHVlU2V0OiBzdHJpbmcgPSBUb29sYmFyRmlsdGVyU3RyaW5nLk1BWF9WQUxVRTtcblxuICBwdWJsaWMgZmlsdGVyQWN0aXZlQXJyYXk6IEFycmF5U3RhdHVzW10gPSBbXTtcbiAgcHVibGljIHN3aXBlQWN0aXZlUmFuZ2U6IG51bWJlciA9IDA7XG4gIHB1YmxpYyB0b3RhbEZpbHRlcnNOdW06IG51bWJlciA9IDA7XG4gIHB1YmxpYyBzaW5nbGVGb3JtQWN0aXZlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyLFxuXG4gICAgLy8gcGlwZXNcbiAgICBwcml2YXRlIHRob3VzYW5kU2VwYXJhdG9yOiBUaG91c2FuZFNlcGFyYXRvclxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jcmVhdGVGb3JtKCk7XG4gICAgdGhpcy53YXRjaE1vbmV5Rm9ybVZhbHVlQ2hhbmdlcygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgZ2V0IHNpbmdsZUZvcm1Gcm9tKCk6IElDYUlucHV0IHtcbiAgICByZXR1cm4gQ2FNb25leUZpbHRlckNvbmZpZy5nZXRTaW5nbGVGb3JtRnJvbSgpO1xuICB9XG5cbiAgZ2V0IHNpbmdsZUZvcm1UbygpOiBJQ2FJbnB1dCB7XG4gICAgcmV0dXJuIENhTW9uZXlGaWx0ZXJDb25maWcuZ2V0U2luZ2xlRm9ybVRvKCk7XG4gIH1cblxuICBnZXQgbXVsdGlGb3JtRmlyc3RGcm9tKCk6IElDYUlucHV0IHtcbiAgICByZXR1cm4gQ2FNb25leUZpbHRlckNvbmZpZy5nZXRNdWx0aUZvcm1GaXJzdEZyb20oKTtcbiAgfVxuXG4gIGdldCBtdWx0aUZvcm1GaXJzdFRvKCk6IElDYUlucHV0IHtcbiAgICByZXR1cm4gQ2FNb25leUZpbHRlckNvbmZpZy5nZXRNdWx0aUZvcm1GaXJzdFRvKCk7XG4gIH1cblxuICBnZXQgbXVsdGlGb3JtU2Vjb25kRnJvbSgpOiBJQ2FJbnB1dCB7XG4gICAgcmV0dXJuIENhTW9uZXlGaWx0ZXJDb25maWcuZ2V0TXVsdGlGb3JtU2Vjb25kRnJvbSgpO1xuICB9XG5cbiAgZ2V0IG11bHRpRm9ybVNlY29uZFRvKCk6IElDYUlucHV0IHtcbiAgICByZXR1cm4gQ2FNb25leUZpbHRlckNvbmZpZy5nZXRNdWx0aUZvcm1TZWNvbmRUbygpO1xuICB9XG5cbiAgZ2V0IG11bHRpRm9ybVRoaXJkRnJvbSgpOiBJQ2FJbnB1dCB7XG4gICAgcmV0dXJuIENhTW9uZXlGaWx0ZXJDb25maWcuZ2V0TXVsdGlGb3JtVGhpcmRGcm9tKCk7XG4gIH1cblxuICBnZXQgbXVsdGlGb3JtVGhpcmRUbygpOiBJQ2FJbnB1dCB7XG4gICAgcmV0dXJuIENhTW9uZXlGaWx0ZXJDb25maWcuZ2V0TXVsdGlGb3JtVGhpcmRUbygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVGb3JtKCk6IHZvaWQge1xuICAgIHRoaXMubW9uZXlGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBzaW5nbGVGcm9tOiBudWxsLFxuICAgICAgc2luZ2xlVG86IG51bGwsXG4gICAgICBtdWx0aUZyb21GaXJzdEZyb206IG51bGwsXG4gICAgICBtdWx0aUZyb21GaXJzdFRvOiBudWxsLFxuICAgICAgbXVsdGlGb3JtU2Vjb25kRnJvbTogbnVsbCxcbiAgICAgIG11bHRpRm9ybVNlY29uZFRvOiBudWxsLFxuICAgICAgbXVsdGlGb3JtVGhpcmRGcm9tOiBudWxsLFxuICAgICAgbXVsdGlGb3JtVGhpcmRUbzogbnVsbCxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgd2F0Y2hNb25leUZvcm1WYWx1ZUNoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5tb25leUZvcm0udmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKChjaGFuZ2VzKSA9PiB7XG4gICAgICAgIGlmIChjaGFuZ2VzLnNpbmdsZUZyb20gfHwgY2hhbmdlcy5zaW5nbGVUbykge1xuICAgICAgICAgIGlmIChjaGFuZ2VzLnNpbmdsZVRvKSB7XG4gICAgICAgICAgICBjb25zdCB0byA9IHBhcnNlSW50KGNoYW5nZXMuc2luZ2xlVG8pO1xuICAgICAgICAgICAgY29uc3QgZnJvbSA9IHBhcnNlSW50KGNoYW5nZXMuc2luZ2xlRnJvbSk7XG4gICAgICAgICAgICBpZiAoZnJvbSA+IHRvIHx8IGZyb20gPT09IHRvKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2luZ2xlRm9ybUVycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuc2luZ2xlRm9ybUVycm9yID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2luZ2xlRm9ybUVycm9yID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2luZ2xlRm9ybUVycm9yID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hhbmdlcy5tdWx0aUZyb21GaXJzdEZyb20gfHwgY2hhbmdlcy5tdWx0aUZyb21GaXJzdFRvKSB7XG4gICAgICAgICAgaWYgKGNoYW5nZXMubXVsdGlGcm9tRmlyc3RUbykge1xuICAgICAgICAgICAgY29uc3QgdG8gPSBwYXJzZUludChjaGFuZ2VzLm11bHRpRnJvbUZpcnN0VG8pO1xuICAgICAgICAgICAgY29uc3QgZnJvbSA9IHBhcnNlSW50KGNoYW5nZXMubXVsdGlGcm9tRmlyc3RGcm9tKTtcblxuICAgICAgICAgICAgaWYgKGZyb20gPiB0byB8fCBmcm9tID09PSB0bykge1xuICAgICAgICAgICAgICB0aGlzLm11bHRpRm9ybUZpcnN0RXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5tdWx0aUZvcm1GaXJzdEVycm9yID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubXVsdGlGb3JtRmlyc3RFcnJvciA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm11bHRpRm9ybUZpcnN0RXJyb3IgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFuZ2VzLm11bHRpRm9ybVNlY29uZEZyb20gfHwgY2hhbmdlcy5tdWx0aUZvcm1TZWNvbmRUbykge1xuICAgICAgICAgIGlmIChjaGFuZ2VzLm11bHRpRm9ybVNlY29uZFRvKSB7XG4gICAgICAgICAgICBjb25zdCB0byA9IHBhcnNlSW50KGNoYW5nZXMubXVsdGlGb3JtU2Vjb25kVG8pO1xuICAgICAgICAgICAgY29uc3QgZnJvbSA9IHBhcnNlSW50KGNoYW5nZXMubXVsdGlGb3JtU2Vjb25kRnJvbSk7XG5cbiAgICAgICAgICAgIGlmIChmcm9tID4gdG8gfHwgZnJvbSA9PT0gdG8pIHtcbiAgICAgICAgICAgICAgdGhpcy5tdWx0aUZvcm1TZWNvbmRFcnJvciA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLm11bHRpRm9ybVNlY29uZEVycm9yID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubXVsdGlGb3JtU2Vjb25kRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hhbmdlcy5tdWx0aUZvcm1UaGlyZEZyb20gfHwgY2hhbmdlcy5tdWx0aUZvcm1UaGlyZFRvKSB7XG4gICAgICAgICAgaWYgKGNoYW5nZXMubXVsdGlGb3JtVGhpcmRUbykge1xuICAgICAgICAgICAgY29uc3QgdG8gPSBwYXJzZUludChjaGFuZ2VzLm11bHRpRm9ybVRoaXJkVG8pO1xuICAgICAgICAgICAgY29uc3QgZnJvbSA9IHBhcnNlSW50KGNoYW5nZXMubXVsdGlGb3JtVGhpcmRGcm9tKTtcbiAgICAgICAgICAgIGlmIChmcm9tID4gdG8gfHwgZnJvbSA9PT0gdG8pIHtcbiAgICAgICAgICAgICAgdGhpcy5tdWx0aUZvcm1UaGlyZEVycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMubXVsdGlGb3JtVGhpcmRFcnJvciA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm11bHRpRm9ybVRoaXJkRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5zdWJUeXBlICE9PSBUb29sYmFyRmlsdGVyU3RyaW5nLkFMTCkge1xuICAgICAgICAgIGxldCB0b1ZhbHVlQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgbGV0IGZyb21WYWx1ZUNoYW5nZWQgPSB0cnVlO1xuXG4gICAgICAgICAgY29uc3QgZnJvbUFjdGl2ZSA9XG4gICAgICAgICAgICB0aGlzLnNpbmdsZUZyb21BY3RpdmUgJiYgdGhpcy5zaW5nbGVGcm9tQWN0aXZlICE9IFwibnVsbFwiXG4gICAgICAgICAgICAgID8gdGhpcy5zaW5nbGVGcm9tQWN0aXZlXG4gICAgICAgICAgICAgIDogMDtcbiAgICAgICAgICBjb25zdCB0b0FjdGl2ZSA9XG4gICAgICAgICAgICB0aGlzLnNpbmdsZVRvQWN0aXZlICYmIHRoaXMuc2luZ2xlVG9BY3RpdmUgIT0gXCJudWxsXCJcbiAgICAgICAgICAgICAgPyB0aGlzLnNpbmdsZVRvQWN0aXZlXG4gICAgICAgICAgICAgIDogMDtcblxuICAgICAgICAgIGxldCB0byA9IDA7XG4gICAgICAgICAgaWYgKGNoYW5nZXMuc2luZ2xlVG8pIHtcbiAgICAgICAgICAgIHRvID0gcGFyc2VJbnQoY2hhbmdlcy5zaW5nbGVUbyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGV0IGZyb20gPSAwO1xuICAgICAgICAgIGlmIChjaGFuZ2VzLnNpbmdsZUZyb20pIHtcbiAgICAgICAgICAgIGZyb20gPSBwYXJzZUludChjaGFuZ2VzLnNpbmdsZUZyb20pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0b0FjdGl2ZSA9PT0gdG8pIHtcbiAgICAgICAgICAgIHRvVmFsdWVDaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGZyb21BY3RpdmUgPT09IGZyb20pIHtcbiAgICAgICAgICAgIGZyb21WYWx1ZUNoYW5nZWQgPSBmYWxzZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodG9WYWx1ZUNoYW5nZWQgfHwgZnJvbVZhbHVlQ2hhbmdlZCkge1xuICAgICAgICAgICAgdGhpcy5pc0J1dHRvbkF2YWlsYWJsZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLm1vbmV5RmlsdGVyU3RhdHVzID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pc0J1dHRvbkF2YWlsYWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKCF0byAmJiAhZnJvbSkge1xuICAgICAgICAgICAgICB0aGlzLm1vbmV5RmlsdGVyU3RhdHVzID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICF0aGlzLm11bHRpRm9ybUZpcnN0RXJyb3IgJiZcbiAgICAgICAgICAgICF0aGlzLm11bHRpRm9ybVNlY29uZEVycm9yICYmXG4gICAgICAgICAgICAhdGhpcy5tdWx0aUZvcm1UaGlyZEVycm9yXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLm1vbmV5RmlsdGVyU3RhdHVzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tNb25leU11bHRpRm9ybShjaGFuZ2VzKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pc0J1dHRvbkF2YWlsYWJsZSA9IGZhbHNlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMubXVsdGlGb3JtRmlyc3RFcnJvciB8fFxuICAgICAgICAgICAgdGhpcy5tdWx0aUZvcm1TZWNvbmRFcnJvciB8fFxuICAgICAgICAgICAgdGhpcy5tdWx0aUZvcm1UaGlyZEVycm9yXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmlzQnV0dG9uQXZhaWxhYmxlID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc2luZ2xlRm9ybUVycm9yKSB7XG4gICAgICAgICAgdGhpcy5tb25leUZvcm0uZ2V0KFwic2luZ2xlVG9cIik/LnNldEVycm9ycyh7IGludmFsaWQ6IHRydWUgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5tb25leUZvcm0uZ2V0KFwic2luZ2xlVG9cIik/LnNldEVycm9ycyhudWxsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm11bHRpRm9ybUZpcnN0RXJyb3IpIHtcbiAgICAgICAgICB0aGlzLm1vbmV5Rm9ybS5nZXQoXCJtdWx0aUZyb21GaXJzdFRvXCIpPy5zZXRFcnJvcnMoeyBpbnZhbGlkOiB0cnVlIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubW9uZXlGb3JtLmdldChcIm11bHRpRnJvbUZpcnN0VG9cIik/LnNldEVycm9ycyhudWxsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm11bHRpRm9ybVNlY29uZEVycm9yKSB7XG4gICAgICAgICAgdGhpcy5tb25leUZvcm0uZ2V0KFwibXVsdGlGb3JtU2Vjb25kVG9cIik/LnNldEVycm9ycyh7IGludmFsaWQ6IHRydWUgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5tb25leUZvcm0uZ2V0KFwibXVsdGlGb3JtU2Vjb25kVG9cIik/LnNldEVycm9ycyhudWxsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm11bHRpRm9ybVRoaXJkRXJyb3IpIHtcbiAgICAgICAgICB0aGlzLm1vbmV5Rm9ybS5nZXQoXCJtdWx0aUZvcm1UaGlyZFRvXCIpPy5zZXRFcnJvcnMoeyBpbnZhbGlkOiB0cnVlIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubW9uZXlGb3JtLmdldChcIm11bHRpRm9ybVRoaXJkVG9cIik/LnNldEVycm9ycyhudWxsKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXJBbGwoZXZlbnQ/OiBFdmVudCk6IGZpbHRlck91dHB1dCB8IGZpbHRlck91dHB1dFdpdGhQYXJhbXMge1xuICAgIGlmIChldmVudCkgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgY2FzZSBUb29sYmFyRmlsdGVyU3RyaW5nLk1PTkVZX0ZJTFRFUjpcbiAgICAgICAgaWYgKCF0aGlzLmlzUmVwYWlyRmlsdGVyKSB7XG4gICAgICAgICAgaWYgKHRoaXMuc3ViVHlwZSAhPT0gVG9vbGJhckZpbHRlclN0cmluZy5BTEwpIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJGb3JtKFwic2luZ2xlRm9ybVwiKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jbGVhckZvcm0oXCJjbGVhckFsbFwiKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgbWF4TnVtID0gdGhpcy50aG91c2FuZFNlcGFyYXRvci50cmFuc2Zvcm0odGhpcy5tYXhWYWx1ZVJhbmdlKTtcblxuICAgICAgICAgIHRoaXMubWF4VmFsdWVTZXQgPSBtYXhOdW07XG4gICAgICAgICAgdGhpcy5taW5WYWx1ZVNldCA9IHRoaXMubWluVmFsdWVSYW5nZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFjdGl2ZUZvcm1OdW0gPSAwO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVG9vbGJhckZpbHRlclN0cmluZy5NSUxFU19GSUxURVI6XG4gICAgICBjYXNlIFRvb2xiYXJGaWx0ZXJTdHJpbmcuUEFZX0ZJTFRFUjpcbiAgICAgIGNhc2UgVG9vbGJhckZpbHRlclN0cmluZy5NT05FWV9GSUxURVI6XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLnR5cGUgPT09IFRvb2xiYXJGaWx0ZXJTdHJpbmcuTU9ORVlfRklMVEVSICYmXG4gICAgICAgICAgIXRoaXMuaXNSZXBhaXJGaWx0ZXJcbiAgICAgICAgKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbWF4TnVtID0gdGhpcy50aG91c2FuZFNlcGFyYXRvci50cmFuc2Zvcm0odGhpcy5tYXhWYWx1ZVJhbmdlKTtcblxuICAgICAgICB0aGlzLm1heFZhbHVlU2V0ID0gbWF4TnVtO1xuICAgICAgICB0aGlzLm1pblZhbHVlU2V0ID0gdGhpcy5taW5WYWx1ZVJhbmdlO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHRoaXMuaXNCdXR0b25BdmFpbGFibGUgPSB0cnVlO1xuICAgIHRoaXMubW9uZXlGaWx0ZXJTdGF0dXMgPSBmYWxzZTtcbiAgICB0aGlzLmZpbHRlckFjdGl2ZUFycmF5ID0gW107XG4gICAgdGhpcy5zd2lwZUFjdGl2ZVJhbmdlID0gMDtcbiAgICB0aGlzLnRvdGFsRmlsdGVyc051bSA9IDA7XG4gICAgdGhpcy5zaW5nbGVGb3JtQWN0aXZlID0gZmFsc2U7XG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIGFjdGlvbjogXCJDbGVhclwiLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgZmlsdGVyVHlwZTogdGhpcy50eXBlLFxuICAgIH07XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBwdWJsaWMgaGlkZUZvcm1QYXJ0KG1vZDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKG1vZCA9PT0gXCJwYXJ0MVwiKSB7XG4gICAgICB0aGlzLnNob3dQYXJ0MSA9ICF0aGlzLnNob3dQYXJ0MTtcbiAgICB9IGVsc2UgaWYgKG1vZCA9PT0gXCJwYXJ0MlwiKSB7XG4gICAgICB0aGlzLnNob3dQYXJ0MiA9ICF0aGlzLnNob3dQYXJ0MjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaG93UGFydDMgPSAhdGhpcy5zaG93UGFydDM7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNsZWFyRm9ybShtb2Q6IHN0cmluZywgZXZlbnQ/OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHN3aXRjaCAobW9kKSB7XG4gICAgICBjYXNlIFwic2luZ2xlRm9ybVwiOlxuICAgICAgICB0aGlzLm1vbmV5Rm9ybVxuICAgICAgICAgIC5nZXQoXCJzaW5nbGVGcm9tXCIpXG4gICAgICAgICAgPy5zZXRWYWx1ZShUb29sYmFyRmlsdGVyU3RyaW5nLkVNUFRZX1NUUklOR19QTEFDRUhPTERFUik7XG4gICAgICAgIHRoaXMubW9uZXlGb3JtXG4gICAgICAgICAgLmdldChcInNpbmdsZVRvXCIpXG4gICAgICAgICAgPy5zZXRWYWx1ZShUb29sYmFyRmlsdGVyU3RyaW5nLkVNUFRZX1NUUklOR19QTEFDRUhPTERFUik7XG4gICAgICAgIHRoaXMuc2luZ2xlRm9ybUVycm9yID0gZmFsc2U7XG4gICAgICAgIHRoaXMubW9uZXlGaWx0ZXJTdGF0dXMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zaW5nbGVUb0FjdGl2ZSA9IDA7XG4gICAgICAgIHRoaXMuc2luZ2xlRnJvbUFjdGl2ZSA9IDA7XG4gICAgICAgIHRoaXMuaXNCdXR0b25BdmFpbGFibGUgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwibXVsdGlGcm9tRmlyc3RcIjpcbiAgICAgICAgdGhpcy5tb25leUZvcm1cbiAgICAgICAgICAuZ2V0KFwibXVsdGlGcm9tRmlyc3RGcm9tXCIpXG4gICAgICAgICAgPy5zZXRWYWx1ZShUb29sYmFyRmlsdGVyU3RyaW5nLkVNUFRZX1NUUklOR19QTEFDRUhPTERFUik7XG4gICAgICAgIHRoaXMubW9uZXlGb3JtXG4gICAgICAgICAgLmdldChcIm11bHRpRnJvbUZpcnN0VG9cIilcbiAgICAgICAgICA/LnNldFZhbHVlKFRvb2xiYXJGaWx0ZXJTdHJpbmcuRU1QVFlfU1RSSU5HX1BMQUNFSE9MREVSKTtcbiAgICAgICAgdGhpcy5tdWx0aUZvcm1GaXJzdEVycm9yID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIm11bHRpRm9ybVNlY29uZFwiOlxuICAgICAgICB0aGlzLm1vbmV5Rm9ybVxuICAgICAgICAgIC5nZXQoXCJtdWx0aUZvcm1TZWNvbmRGcm9tXCIpXG4gICAgICAgICAgPy5zZXRWYWx1ZShUb29sYmFyRmlsdGVyU3RyaW5nLkVNUFRZX1NUUklOR19QTEFDRUhPTERFUik7XG4gICAgICAgIHRoaXMubW9uZXlGb3JtXG4gICAgICAgICAgLmdldChcIm11bHRpRm9ybVNlY29uZFRvXCIpXG4gICAgICAgICAgPy5zZXRWYWx1ZShUb29sYmFyRmlsdGVyU3RyaW5nLkVNUFRZX1NUUklOR19QTEFDRUhPTERFUik7XG4gICAgICAgIHRoaXMubXVsdGlGb3JtU2Vjb25kRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwibXVsdGlGb3JtVGhpcmRcIjpcbiAgICAgICAgdGhpcy5tb25leUZvcm1cbiAgICAgICAgICAuZ2V0KFwibXVsdGlGb3JtVGhpcmRGcm9tXCIpXG4gICAgICAgICAgPy5zZXRWYWx1ZShUb29sYmFyRmlsdGVyU3RyaW5nLkVNUFRZX1NUUklOR19QTEFDRUhPTERFUik7XG4gICAgICAgIHRoaXMubW9uZXlGb3JtXG4gICAgICAgICAgLmdldChcIm11bHRpRm9ybVRoaXJkVG9cIilcbiAgICAgICAgICA/LnNldFZhbHVlKFRvb2xiYXJGaWx0ZXJTdHJpbmcuRU1QVFlfU1RSSU5HX1BMQUNFSE9MREVSKTtcbiAgICAgICAgdGhpcy5tdWx0aUZvcm1UaGlyZEVycm9yID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImNsZWFyQWxsXCI6XG4gICAgICAgIHRoaXMubXVsdGlGcm9tRmlyc3RGcm9tQWN0aXZlID0gMDtcbiAgICAgICAgdGhpcy5tdWx0aUZyb21GaXJzdFRvQWN0aXZlID0gMDtcbiAgICAgICAgdGhpcy5tdWx0aUZvcm1TZWNvbmRGcm9tQWN0aXZlID0gMDtcbiAgICAgICAgdGhpcy5tdWx0aUZvcm1TZWNvbmRUb0FjdGl2ZSA9IDA7XG4gICAgICAgIHRoaXMubXVsdGlGb3JtVGhpcmRGcm9tQWN0aXZlID0gMDtcbiAgICAgICAgdGhpcy5tdWx0aUZvcm1UaGlyZFRvQWN0aXZlID0gMDtcbiAgICAgICAgdGhpcy5tb25leUZvcm0ucmVzZXQoKTtcbiAgICAgICAgdGhpcy5tdWx0aUZvcm1GaXJzdEVycm9yID0gZmFsc2U7XG4gICAgICAgIHRoaXMubXVsdGlGb3JtU2Vjb25kRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5tdWx0aUZvcm1UaGlyZEVycm9yID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldEZpbHRlclZhbHVlKFxuICAgIGV2ZW50OiBFdmVudCB8IHVuZGVmaW5lZFxuICApOiBmaWx0ZXJPdXRwdXQgfCBmaWx0ZXJPdXRwdXRXaXRoUGFyYW1zIHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgcXVlcnlQYXJhbXMgPSB7fTtcbiAgICBsZXQgc3ViVHlwZSA9IFRvb2xiYXJGaWx0ZXJTdHJpbmcuRU1QVFlfU1RSSU5HX1BMQUNFSE9MREVSLnRvU3RyaW5nKCk7XG5cbiAgICB0aGlzLmlzQnV0dG9uQXZhaWxhYmxlID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy50eXBlID09PSBUb29sYmFyRmlsdGVyU3RyaW5nLlRJTUVfRklMVEVSKSB7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHRoaXMudHlwZSA9PT0gVG9vbGJhckZpbHRlclN0cmluZy5NT05FWV9GSUxURVIgJiZcbiAgICAgICF0aGlzLmlzUmVwYWlyRmlsdGVyXG4gICAgKSB7XG4gICAgICBpZiAodGhpcy5zdWJUeXBlID09PSBUb29sYmFyRmlsdGVyU3RyaW5nLkFMTCkge1xuICAgICAgICB0aGlzLm11bHRpRnJvbUZpcnN0RnJvbUFjdGl2ZSA9IChcbiAgICAgICAgICBcIiBcIiArIHRoaXMubW9uZXlGb3JtLmdldChcIm11bHRpRnJvbUZpcnN0RnJvbVwiKT8udmFsdWVcbiAgICAgICAgKS5zbGljZSgxKTtcbiAgICAgICAgdGhpcy5tdWx0aUZyb21GaXJzdFRvQWN0aXZlID0gKFxuICAgICAgICAgIFwiIFwiICsgdGhpcy5tb25leUZvcm0uZ2V0KFwibXVsdGlGcm9tRmlyc3RUb1wiKT8udmFsdWVcbiAgICAgICAgKS5zbGljZSgxKTtcbiAgICAgICAgdGhpcy5tdWx0aUZvcm1TZWNvbmRGcm9tQWN0aXZlID0gKFxuICAgICAgICAgIFwiIFwiICsgdGhpcy5tb25leUZvcm0uZ2V0KFwibXVsdGlGb3JtU2Vjb25kRnJvbVwiKT8udmFsdWVcbiAgICAgICAgKS5zbGljZSgxKTtcbiAgICAgICAgdGhpcy5tdWx0aUZvcm1TZWNvbmRUb0FjdGl2ZSA9IChcbiAgICAgICAgICBcIiBcIiArIHRoaXMubW9uZXlGb3JtLmdldChcIm11bHRpRm9ybVNlY29uZFRvXCIpPy52YWx1ZVxuICAgICAgICApLnNsaWNlKDEpO1xuICAgICAgICB0aGlzLm11bHRpRm9ybVRoaXJkRnJvbUFjdGl2ZSA9IChcbiAgICAgICAgICBcIiBcIiArIHRoaXMubW9uZXlGb3JtLmdldChcIm11bHRpRm9ybVRoaXJkRnJvbVwiKT8udmFsdWVcbiAgICAgICAgKS5zbGljZSgxKTtcbiAgICAgICAgdGhpcy5tdWx0aUZvcm1UaGlyZFRvQWN0aXZlID0gKFxuICAgICAgICAgIFwiIFwiICsgdGhpcy5tb25leUZvcm0uZ2V0KFwibXVsdGlGb3JtVGhpcmRUb1wiKT8udmFsdWVcbiAgICAgICAgKS5zbGljZSgxKTtcblxuICAgICAgICBxdWVyeVBhcmFtcyA9IHtcbiAgICAgICAgICBmaXJzdEZvcm1Gcm9tOiB0aGlzLm1vbmV5Rm9ybS5nZXQoXCJtdWx0aUZyb21GaXJzdEZyb21cIik/LnZhbHVlLFxuICAgICAgICAgIGZpcnN0Rm9ybVRvOiB0aGlzLm1vbmV5Rm9ybS5nZXQoXCJtdWx0aUZyb21GaXJzdFRvXCIpPy52YWx1ZSxcbiAgICAgICAgICBzZWNvbmRGb3JtRnJvbTogdGhpcy5tb25leUZvcm0uZ2V0KFwibXVsdGlGb3JtU2Vjb25kRnJvbVwiKT8udmFsdWUsXG4gICAgICAgICAgc2Vjb25kRm9ybVRvOiB0aGlzLm1vbmV5Rm9ybS5nZXQoXCJtdWx0aUZvcm1TZWNvbmRUb1wiKT8udmFsdWUsXG4gICAgICAgICAgdGhpcmRGb3JtRnJvbTogdGhpcy5tb25leUZvcm0uZ2V0KFwibXVsdGlGb3JtVGhpcmRGcm9tXCIpPy52YWx1ZSxcbiAgICAgICAgICB0aGlyZEZvcm1UbzogdGhpcy5tb25leUZvcm0uZ2V0KFwibXVsdGlGb3JtVGhpcmRUb1wiKT8udmFsdWUsXG4gICAgICAgIH07XG5cbiAgICAgICAgbGV0IGZvcm1zQWN0aXZlID0gMDtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5tb25leUZvcm0uZ2V0KFwibXVsdGlGcm9tRmlyc3RGcm9tXCIpPy52YWx1ZSB8fFxuICAgICAgICAgIHRoaXMubW9uZXlGb3JtLmdldChcIm11bHRpRnJvbUZpcnN0VG9cIik/LnZhbHVlXG4gICAgICAgICkge1xuICAgICAgICAgIGZvcm1zQWN0aXZlID0gZm9ybXNBY3RpdmUgKyAxO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMubW9uZXlGb3JtLmdldChcIm11bHRpRm9ybVNlY29uZEZyb21cIik/LnZhbHVlIHx8XG4gICAgICAgICAgdGhpcy5tb25leUZvcm0uZ2V0KFwibXVsdGlGb3JtU2Vjb25kVG9cIik/LnZhbHVlXG4gICAgICAgICkge1xuICAgICAgICAgIGZvcm1zQWN0aXZlID0gZm9ybXNBY3RpdmUgKyAxO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMubW9uZXlGb3JtLmdldChcIm11bHRpRm9ybVRoaXJkRnJvbVwiKT8udmFsdWUgfHxcbiAgICAgICAgICB0aGlzLm1vbmV5Rm9ybS5nZXQoXCJtdWx0aUZvcm1UaGlyZFRvXCIpPy52YWx1ZVxuICAgICAgICApIHtcbiAgICAgICAgICBmb3Jtc0FjdGl2ZSA9IGZvcm1zQWN0aXZlICsgMTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYWN0aXZlRm9ybU51bSA9IGZvcm1zQWN0aXZlO1xuICAgICAgICB0aGlzLnRvdGFsRmlsdGVyc051bSA9IGZvcm1zQWN0aXZlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zaW5nbGVGcm9tQWN0aXZlID0gKFxuICAgICAgICAgIFwiIFwiICsgdGhpcy5tb25leUZvcm0uZ2V0KFwic2luZ2xlRnJvbVwiKT8udmFsdWVcbiAgICAgICAgKS5zbGljZSgxKTtcbiAgICAgICAgdGhpcy5zaW5nbGVUb0FjdGl2ZSA9IChcbiAgICAgICAgICBcIiBcIiArIHRoaXMubW9uZXlGb3JtLmdldChcInNpbmdsZVRvXCIpPy52YWx1ZVxuICAgICAgICApLnNsaWNlKDEpO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAhdGhpcy5tb25leUZvcm0uZ2V0KFwic2luZ2xlRnJvbVwiKT8udmFsdWUgJiZcbiAgICAgICAgICAhdGhpcy5tb25leUZvcm0uZ2V0KFwic2luZ2xlVG9cIik/LnZhbHVlXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuY2xlYXJBbGwoZXZlbnQpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2luZ2xlRm9ybUFjdGl2ZSA9IHRydWU7XG4gICAgICAgIHF1ZXJ5UGFyYW1zID0ge1xuICAgICAgICAgIHNpbmdsZUZyb206IHRoaXMubW9uZXlGb3JtLmdldChcInNpbmdsZUZyb21cIik/LnZhbHVlXG4gICAgICAgICAgICA/IHBhcnNlSW50KHRoaXMubW9uZXlGb3JtLmdldChcInNpbmdsZUZyb21cIik/LnZhbHVlKVxuICAgICAgICAgICAgOiBUb29sYmFyRmlsdGVyU3RyaW5nLkVNUFRZX1NUUklOR19QTEFDRUhPTERFUixcbiAgICAgICAgICBzaW5nbGVUbzogdGhpcy5tb25leUZvcm0uZ2V0KFwic2luZ2xlVG9cIik/LnZhbHVlXG4gICAgICAgICAgICA/IHBhcnNlSW50KHRoaXMubW9uZXlGb3JtLmdldChcInNpbmdsZVRvXCIpPy52YWx1ZSlcbiAgICAgICAgICAgIDogVG9vbGJhckZpbHRlclN0cmluZy5FTVBUWV9TVFJJTkdfUExBQ0VIT0xERVIsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZGF0YTogZmlsdGVyT3V0cHV0IHwgZmlsdGVyT3V0cHV0V2l0aFBhcmFtcyA9IHtcbiAgICAgIGZpbHRlclR5cGU6IHRoaXMudHlwZSxcbiAgICAgIGFjdGlvbjogXCJTZXRcIixcbiAgICAgIHF1ZXJ5UGFyYW1zOiBxdWVyeVBhcmFtcyxcbiAgICAgIHN1YlR5cGU6IHN1YlR5cGUsXG4gICAgfTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIHB1YmxpYyBjaGVja01vbmV5TXVsdGlGb3JtKGRhdGE6IHtcbiAgICBzaW5nbGVGb3JtOiBzdHJpbmc7XG4gICAgc2luZ2xlVG86IHN0cmluZztcbiAgICBtdWx0aUZyb21GaXJzdEZyb206IHN0cmluZztcbiAgICBtdWx0aUZyb21GaXJzdFRvOiBzdHJpbmc7XG4gICAgbXVsdGlGb3JtU2Vjb25kRnJvbTogc3RyaW5nO1xuICAgIG11bHRpRm9ybVNlY29uZFRvOiBzdHJpbmc7XG4gICAgbXVsdGlGb3JtVGhpcmRGcm9tOiBzdHJpbmc7XG4gICAgbXVsdGlGb3JtVGhpcmRUbzogc3RyaW5nO1xuICB9KTogdm9pZCB7XG4gICAgbGV0IGZpcnN0Rm9ybUNoYW5nZWQgPSBcIm5vbmVcIjtcbiAgICBsZXQgc2Vjb25kRm9ybUNoYW5nZWQgPSBcIm5vbmVcIjtcbiAgICBsZXQgdGhpcmRGb3JtQ2hhbmdlZCA9IFwibm9uZVwiO1xuXG4gICAgY29uc3QgZmlyc3RGcm9tQWN0aXZlID1cbiAgICAgIHRoaXMubXVsdGlGcm9tRmlyc3RGcm9tQWN0aXZlICYmIHRoaXMubXVsdGlGcm9tRmlyc3RGcm9tQWN0aXZlICE9PSBcIm51bGxcIlxuICAgICAgICA/IHRoaXMubXVsdGlGcm9tRmlyc3RGcm9tQWN0aXZlXG4gICAgICAgIDogMDtcbiAgICBjb25zdCBmaXJzdFRvQWN0aXZlID1cbiAgICAgIHRoaXMubXVsdGlGcm9tRmlyc3RUb0FjdGl2ZSAmJiB0aGlzLm11bHRpRnJvbUZpcnN0VG9BY3RpdmUgIT0gXCJudWxsXCJcbiAgICAgICAgPyB0aGlzLm11bHRpRnJvbUZpcnN0VG9BY3RpdmVcbiAgICAgICAgOiAwO1xuXG4gICAgY29uc3Qgc2VjRnJvbUFjdGl2ZSA9XG4gICAgICB0aGlzLm11bHRpRm9ybVNlY29uZEZyb21BY3RpdmUgJiZcbiAgICAgIHRoaXMubXVsdGlGb3JtU2Vjb25kRnJvbUFjdGl2ZSAhPT0gXCJudWxsXCJcbiAgICAgICAgPyB0aGlzLm11bHRpRm9ybVNlY29uZEZyb21BY3RpdmVcbiAgICAgICAgOiAwO1xuICAgIGNvbnN0IHNlY1RvQWN0aXZlID1cbiAgICAgIHRoaXMubXVsdGlGb3JtU2Vjb25kVG9BY3RpdmUgJiYgdGhpcy5tdWx0aUZvcm1TZWNvbmRUb0FjdGl2ZSAhPT0gXCJudWxsXCJcbiAgICAgICAgPyB0aGlzLm11bHRpRm9ybVNlY29uZFRvQWN0aXZlXG4gICAgICAgIDogMDtcblxuICAgIGNvbnN0IHRoaXJkRnJvbUFjdGl2ZSA9XG4gICAgICB0aGlzLm11bHRpRm9ybVRoaXJkRnJvbUFjdGl2ZSAmJiB0aGlzLm11bHRpRm9ybVRoaXJkRnJvbUFjdGl2ZSAhPT0gXCJudWxsXCJcbiAgICAgICAgPyB0aGlzLm11bHRpRm9ybVRoaXJkRnJvbUFjdGl2ZVxuICAgICAgICA6IDA7XG4gICAgY29uc3QgdGhpcmRUb0FjdGl2ZSA9XG4gICAgICB0aGlzLm11bHRpRm9ybVRoaXJkVG9BY3RpdmUgJiYgdGhpcy5tdWx0aUZvcm1UaGlyZFRvQWN0aXZlICE9PSBcIm51bGxcIlxuICAgICAgICA/IHRoaXMubXVsdGlGb3JtVGhpcmRUb0FjdGl2ZVxuICAgICAgICA6IDA7XG5cbiAgICBjb25zdCBmaXJzdEZyb20gPVxuICAgICAgZGF0YS5tdWx0aUZyb21GaXJzdEZyb20gJiYgZGF0YS5tdWx0aUZyb21GaXJzdEZyb20gIT09IFwibnVsbFwiXG4gICAgICAgID8gcGFyc2VJbnQoZGF0YS5tdWx0aUZyb21GaXJzdEZyb20pXG4gICAgICAgIDogMDtcbiAgICBjb25zdCBmaXJzdFRvID1cbiAgICAgIGRhdGEubXVsdGlGcm9tRmlyc3RUbyAmJiBkYXRhLm11bHRpRnJvbUZpcnN0VG8gIT09IFwibnVsbFwiXG4gICAgICAgID8gcGFyc2VJbnQoZGF0YS5tdWx0aUZyb21GaXJzdFRvKVxuICAgICAgICA6IDA7XG5cbiAgICBjb25zdCBzZWNGcm9tID1cbiAgICAgIGRhdGEubXVsdGlGb3JtU2Vjb25kRnJvbSAmJiBkYXRhLm11bHRpRm9ybVNlY29uZEZyb20gIT09IFwibnVsbFwiXG4gICAgICAgID8gcGFyc2VJbnQoZGF0YS5tdWx0aUZvcm1TZWNvbmRGcm9tKVxuICAgICAgICA6IDA7XG4gICAgY29uc3Qgc2VjVG8gPVxuICAgICAgZGF0YS5tdWx0aUZvcm1TZWNvbmRUbyAmJiBkYXRhLm11bHRpRm9ybVNlY29uZFRvICE9PSBcIm51bGxcIlxuICAgICAgICA/IHBhcnNlSW50KGRhdGEubXVsdGlGb3JtU2Vjb25kVG8pXG4gICAgICAgIDogMDtcblxuICAgIGNvbnN0IHRoaXJkRnJvbSA9XG4gICAgICBkYXRhLm11bHRpRm9ybVRoaXJkRnJvbSAmJiBkYXRhLm11bHRpRm9ybVRoaXJkRnJvbSAhPT0gXCJudWxsXCJcbiAgICAgICAgPyBwYXJzZUludChkYXRhLm11bHRpRm9ybVRoaXJkRnJvbSlcbiAgICAgICAgOiAwO1xuICAgIGNvbnN0IHRoaXJkVG8gPVxuICAgICAgZGF0YS5tdWx0aUZvcm1UaGlyZFRvICYmIGRhdGEubXVsdGlGb3JtVGhpcmRUbyAhPT0gXCJudWxsXCJcbiAgICAgICAgPyBwYXJzZUludChkYXRhLm11bHRpRm9ybVRoaXJkVG8pXG4gICAgICAgIDogMDtcblxuICAgIGlmIChmaXJzdEZyb20gIT09IGZpcnN0RnJvbUFjdGl2ZSB8fCBmaXJzdFRvICE9PSBmaXJzdFRvQWN0aXZlKSB7XG4gICAgICBmaXJzdEZvcm1DaGFuZ2VkID0gXCJjaGFuZ2VkXCI7XG4gICAgfVxuXG4gICAgaWYgKHNlY0Zyb20gIT09IHNlY0Zyb21BY3RpdmUgfHwgc2VjVG8gIT09IHNlY1RvQWN0aXZlKSB7XG4gICAgICBzZWNvbmRGb3JtQ2hhbmdlZCA9IFwiY2hhbmdlZFwiO1xuICAgIH1cblxuICAgIGlmICh0aGlyZEZyb20gIT09IHRoaXJkRnJvbUFjdGl2ZSB8fCB0aGlyZFRvICE9PSB0aGlyZFRvQWN0aXZlKSB7XG4gICAgICB0aGlyZEZvcm1DaGFuZ2VkID0gXCJjaGFuZ2VkXCI7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgZmlyc3RGb3JtQ2hhbmdlZCA9PT0gXCJjaGFuZ2VkXCIgfHxcbiAgICAgIHNlY29uZEZvcm1DaGFuZ2VkID09PSBcImNoYW5nZWRcIiB8fFxuICAgICAgdGhpcmRGb3JtQ2hhbmdlZCA9PT0gXCJjaGFuZ2VkXCJcbiAgICApIHtcbiAgICAgIHRoaXMuaXNCdXR0b25BdmFpbGFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzQnV0dG9uQXZhaWxhYmxlID0gZmFsc2U7XG4gICAgICBpZiAoZmlyc3RGcm9tIHx8IGZpcnN0VG8gfHwgc2VjRnJvbSB8fCBzZWNUbyB8fCB0aGlyZEZyb20gfHwgdGhpcmRUbykge1xuICAgICAgICB0aGlzLm1vbmV5RmlsdGVyU3RhdHVzID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubW9uZXlGaWx0ZXJTdGF0dXMgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0U3ZnUGF0aChwcm9wZXJ0eU5hbWU6IGtleW9mIHR5cGVvZiBDYU1vbmV5RmlsdGVyU3ZnUm91dGVzKTogc3RyaW5nIHtcbiAgICByZXR1cm4gQ2FNb25leUZpbHRlclN2Z1JvdXRlc1twcm9wZXJ0eU5hbWVdIGFzIHN0cmluZztcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vbmV5RmlsdGVyICYmICFpc1JlcGFpckZpbHRlclwiPlxuICA8ZGl2IFtjbGFzcy5tdWx0aU1vbmV5Rm9ybV09XCJzdWJUeXBlID09PSAnYWxsJ1wiIFtmb3JtR3JvdXBdPVwibW9uZXlGb3JtXCI+XG4gICAgPGRpdiBjbGFzcz1cImJvcmRlci1maWx0ZXIgbW9uZXktdG9wLWJvcmRlci1tYWdpblwiPjwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdWJUeXBlICE9PSAnYWxsJzsgZWxzZSBzaG93QWxsXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic2luZ2xlLWZvcm0taG9sZGVyXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cIm1vbmV5LW1haW4taG9sZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgc2luZ2xlLW1vbmV5LW1haW5cIlxuICAgICAgICAgIFtAc2hvd0FuaW1hdGlvbl09XCIhIWlzRmlsdGVyQWN0aXZlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwibW9uZXktdmFsdWUtaG9sZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICBbY2xhc3MuZXJyb3JGb3JtXT1cInNpbmdsZUZvcm1FcnJvclwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGFwcC1jYS1pbnB1dFxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzaW5nbGVGcm9tXCJcbiAgICAgICAgICAgICAgW2lucHV0Q29uZmlnXT1cInNpbmdsZUZvcm1Gcm9tXCJcbiAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cIm1vbmV5LXZhbHVlLWhvbGRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgW2NsYXNzLmVycm9yRm9ybV09XCJzaW5nbGVGb3JtRXJyb3JcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxhcHAtY2EtaW5wdXRcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic2luZ2xlVG9cIlxuICAgICAgICAgICAgICBbaW5wdXRDb25maWddPVwic2luZ2xlRm9ybVRvXCJcbiAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI3Nob3dBbGw+XG4gICAgICA8ZGl2IGNsYXNzPVwibXVsdGktZm9ybS1ob2xkZXJcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1oZWFkZXJcIlxuICAgICAgICAgIFtjbGFzcy5oaWRkZW5Gb3JtVGl0bGVdPVwiIXNob3dQYXJ0MVwiXG4gICAgICAgICAgKGNsaWNrKT1cImhpZGVGb3JtUGFydCgncGFydDEnKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZ1ZWxUeXBlICYmICFsb2FkVHlwZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tbmFtZSBmdy1ib2xkXCIgW0BzaG93QW5pbWF0aW9uXT1cIiEhaXNGaWx0ZXJBY3RpdmVcIj5cbiAgICAgICAgICAgICAgSW52b2ljZSBBZ2VpbmdcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZ1ZWxUeXBlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1uYW1lIGZ3LWJvbGRcIiBbQHNob3dBbmltYXRpb25dPVwiISFpc0ZpbHRlckFjdGl2ZVwiPlxuICAgICAgICAgICAgICBMYXN0IFByaWNlXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsb2FkVHlwZVwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tbmFtZS1ncmF5IHRleHQtdXBwZXJjYXNlIGZ3LWJvbGRcIlxuICAgICAgICAgICAgICBbQHNob3dBbmltYXRpb25dPVwiISFpc0ZpbHRlckFjdGl2ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIFJhdGVcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgbW9uZXlGb3JtLnZhbHVlLm11bHRpRnJvbUZpcnN0RnJvbSAmJlxuICAgICAgICAgICAgICBtb25leUZvcm0udmFsdWUubXVsdGlGcm9tRmlyc3RUb1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2xlYXItbW9uZXktZm9ybSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZnctYm9sZFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjbGVhckZvcm0oJ211bHRpRnJvbUZpcnN0JywgJGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIENMRUFSXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiaGlkZS1tb25leS1mb3JtXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgc3ZnX3JvdGF0ZTogIXNob3dQYXJ0MSxcbiAgICAgICAgICAgICAgcm90YXRlX2JhY2s6IHNob3dQYXJ0MSxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzdmctaWNvbiBbc3JjXT1cImdldFN2Z1BhdGgoJ2Fycm93TGVmdFN2Z1JvdXRlJylcIj48L3N2Zy1pY29uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwibW9uZXktbWFpbi1ob2xkZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBzaW5nbGUtbW9uZXktbWFpblwiXG4gICAgICAgICAgW0BjbG9zZUZvcm1dPVwic2hvd1BhcnQxXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwibW9uZXktdmFsdWUtaG9sZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGFwcC1jYS1pbnB1dFxuICAgICAgICAgICAgICBbQHNob3dBbmltYXRpb25dPVwiISFpc0ZpbHRlckFjdGl2ZVwiXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm11bHRpRnJvbUZpcnN0RnJvbVwiXG4gICAgICAgICAgICAgIFtpbnB1dENvbmZpZ109XCJtdWx0aUZvcm1GaXJzdEZyb21cIlxuICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwibW9uZXktdmFsdWUtaG9sZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICBbY2xhc3MuZXJyb3JGb3JtXT1cIm11bHRpRm9ybUZpcnN0RXJyb3JcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxhcHAtY2EtaW5wdXRcbiAgICAgICAgICAgICAgW0BzaG93QW5pbWF0aW9uXT1cIiEhaXNGaWx0ZXJBY3RpdmVcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtdWx0aUZyb21GaXJzdFRvXCJcbiAgICAgICAgICAgICAgW2lucHV0Q29uZmlnXT1cIm11bHRpRm9ybUZpcnN0VG9cIlxuICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiYm9yZGVyLWZpbHRlciBtb25leS1ib3R0b20tYm9yZGVyLW1hZ2luIGZvcm0tYm9yZGVyXCJcbiAgICAgICAgICBbY2xhc3MuaGlkZGVuRm9ybUJvcmRlcl09XCIhc2hvd1BhcnQxXCJcbiAgICAgICAgPjwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWhlYWRlclwiXG4gICAgICAgICAgW2NsYXNzLmhpZGRlbkZvcm1UaXRsZV09XCIhc2hvd1BhcnQyXCJcbiAgICAgICAgICAoY2xpY2spPVwiaGlkZUZvcm1QYXJ0KCdwYXJ0MicpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZnVlbFR5cGUgJiYgIWxvYWRUeXBlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1uYW1lIGZ3LWJvbGRcIiBbQHNob3dBbmltYXRpb25dPVwiISFpc0ZpbHRlckFjdGl2ZVwiPlxuICAgICAgICAgICAgICBBdmFpbGFibGUgQ3JlZGl0XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmdWVsVHlwZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tbmFtZSBmdy1ib2xkXCIgW0BzaG93QW5pbWF0aW9uXT1cIiEhaXNGaWx0ZXJBY3RpdmVcIj5cbiAgICAgICAgICAgICAgUHJpY2UgUGVyIEdhbGxvblxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9hZFR5cGVcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLW5hbWUtZ3JheSB0ZXh0LXVwcGVyY2FzZSBmdy1ib2xkXCJcbiAgICAgICAgICAgICAgW0BzaG93QW5pbWF0aW9uXT1cIiEhaXNGaWx0ZXJBY3RpdmVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBQYWlkXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIG1vbmV5Rm9ybS52YWx1ZS5tdWx0aUZvcm1TZWNvbmRGcm9tICYmXG4gICAgICAgICAgICAgIG1vbmV5Rm9ybS52YWx1ZS5tdWx0aUZvcm1TZWNvbmRUb1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2xlYXItbW9uZXktZm9ybSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZnctYm9sZFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjbGVhckZvcm0oJ211bHRpRm9ybVNlY29uZCcsICRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBDTEVBUlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImhpZGUtbW9uZXktZm9ybVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgIHN2Z19yb3RhdGU6ICFzaG93UGFydDIsXG4gICAgICAgICAgICAgIHJvdGF0ZV9iYWNrOiBzaG93UGFydDIsXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3ZnLWljb24gW3NyY109XCJnZXRTdmdQYXRoKCdhcnJvd0xlZnRTdmdSb3V0ZScpXCI+PC9zdmctaWNvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cIm1vbmV5LW1haW4taG9sZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgc2luZ2xlLW1vbmV5LW1haW5cIlxuICAgICAgICAgIFtAY2xvc2VGb3JtXT1cInNob3dQYXJ0MlwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cIm1vbmV5LXZhbHVlLWhvbGRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxhcHAtY2EtaW5wdXRcbiAgICAgICAgICAgICAgW0BzaG93QW5pbWF0aW9uXT1cIiEhaXNGaWx0ZXJBY3RpdmVcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtdWx0aUZvcm1TZWNvbmRGcm9tXCJcbiAgICAgICAgICAgICAgW2lucHV0Q29uZmlnXT1cIm11bHRpRm9ybVNlY29uZEZyb21cIlxuICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwibW9uZXktdmFsdWUtaG9sZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICBbY2xhc3MuZXJyb3JGb3JtXT1cIm11bHRpRm9ybVNlY29uZEVycm9yXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YXBwLWNhLWlucHV0XG4gICAgICAgICAgICAgIFtAc2hvd0FuaW1hdGlvbl09XCIhIWlzRmlsdGVyQWN0aXZlXCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibXVsdGlGb3JtU2Vjb25kVG9cIlxuICAgICAgICAgICAgICBbaW5wdXRDb25maWddPVwibXVsdGlGb3JtU2Vjb25kVG9cIlxuICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiYm9yZGVyLWZpbHRlciBtb25leS1ib3R0b20tYm9yZGVyLW1hZ2luIGZvcm0tYm9yZGVyXCJcbiAgICAgICAgICBbY2xhc3MuaGlkZGVuRm9ybUJvcmRlcl09XCIhc2hvd1BhcnQyXCJcbiAgICAgICAgPjwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWhlYWRlclwiXG4gICAgICAgICAgW2NsYXNzLmhpZGRlbkZvcm1UaXRsZV09XCIhc2hvd1BhcnQzXCJcbiAgICAgICAgICAoY2xpY2spPVwiaGlkZUZvcm1QYXJ0KCdwYXJ0MycpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZnVlbFR5cGUgJiYgIWxvYWRUeXBlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1uYW1lIGZ3LWJvbGRcIiBbQHNob3dBbmltYXRpb25dPVwiISFpc0ZpbHRlckFjdGl2ZVwiPlxuICAgICAgICAgICAgICBSZXZlbnVlXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmdWVsVHlwZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tbmFtZSBmdy1ib2xkXCIgW0BzaG93QW5pbWF0aW9uXT1cIiEhaXNGaWx0ZXJBY3RpdmVcIj5cbiAgICAgICAgICAgICAgVG90YWwgQ29zdFxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9hZFR5cGVcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLW5hbWUtZ3JheSB0ZXh0LXVwcGVyY2FzZSBmdy1ib2xkXCJcbiAgICAgICAgICAgICAgW0BzaG93QW5pbWF0aW9uXT1cIiEhaXNGaWx0ZXJBY3RpdmVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBEdWVcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgbW9uZXlGb3JtLnZhbHVlLm11bHRpRm9ybVRoaXJkRnJvbSAmJlxuICAgICAgICAgICAgICBtb25leUZvcm0udmFsdWUubXVsdGlGb3JtVGhpcmRUb1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2xlYXItbW9uZXktZm9ybSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZnctYm9sZFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjbGVhckZvcm0oJ211bHRpRm9ybVRoaXJkJywgJGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIENMRUFSXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiaGlkZS1tb25leS1mb3JtXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgc3ZnX3JvdGF0ZTogIXNob3dQYXJ0MyxcbiAgICAgICAgICAgICAgcm90YXRlX2JhY2s6IHNob3dQYXJ0MyxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzdmctaWNvbiBbc3JjXT1cImdldFN2Z1BhdGgoJ2Fycm93TGVmdFN2Z1JvdXRlJylcIj48L3N2Zy1pY29uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwibW9uZXktbWFpbi1ob2xkZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBzaW5nbGUtbW9uZXktbWFpblwiXG4gICAgICAgICAgW0BjbG9zZUZvcm1dPVwic2hvd1BhcnQzXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwibW9uZXktdmFsdWUtaG9sZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGFwcC1jYS1pbnB1dFxuICAgICAgICAgICAgICBbQHNob3dBbmltYXRpb25dPVwiISFpc0ZpbHRlckFjdGl2ZVwiXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm11bHRpRm9ybVRoaXJkRnJvbVwiXG4gICAgICAgICAgICAgIFtpbnB1dENvbmZpZ109XCJtdWx0aUZvcm1UaGlyZEZyb21cIlxuICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwibW9uZXktdmFsdWUtaG9sZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICBbY2xhc3MuZXJyb3JGb3JtXT1cIm11bHRpRm9ybVRoaXJkRXJyb3JcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxhcHAtY2EtaW5wdXRcbiAgICAgICAgICAgICAgW0BzaG93QW5pbWF0aW9uXT1cIiEhaXNGaWx0ZXJBY3RpdmVcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtdWx0aUZvcm1UaGlyZFRvXCJcbiAgICAgICAgICAgICAgW2lucHV0Q29uZmlnXT1cIm11bHRpRm9ybVRoaXJkVG9cIlxuICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImJvcmRlci1maWx0ZXIgbW9uZXktYm90dG9tLWJvcmRlci1tYWdpbiBmb3JtLWJvcmRlclwiXG4gICAgICBbY2xhc3MuaGlkZGVuRm9ybUJvcmRlcl09XCIhc2hvd1BhcnQzXCJcbiAgICA+PC9kaXY+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|