@colijnit/transaction 12.1.8 → 12.1.11
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/bundles/colijnit-transaction.umd.js +6370 -3457
- package/bundles/colijnit-transaction.umd.js.map +1 -1
- package/colijnit-transaction.d.ts +84 -23
- package/colijnit-transaction.metadata.json +1 -1
- package/esm2015/colijnit-transaction.js +85 -24
- package/esm2015/lib/assets/dictionary/text.properties.js +118 -8
- package/esm2015/lib/component/checkout/checkout-overview-delivery-address/checkout-overview-delivery-address.component.js +1 -1
- package/esm2015/lib/component/checkout/checkout-overview-delivery-edit/checkout-overview-delivery-edit.component.js +120 -288
- package/esm2015/lib/component/checkout/checkout-overview-relation-edit/checkout-overview-relation-edit.component.js +279 -112
- package/esm2015/lib/component/checkout/checkout-relation-suggestions-list/checkout-relation-suggestions-list.component.js +2 -2
- package/esm2015/lib/component/checkout/checkout.component.js +64 -34
- package/esm2015/lib/component/checkout/checkout.module.js +11 -2
- package/esm2015/lib/component/confirmation-dialog/confirmation-dialog.component.js +17 -3
- package/esm2015/lib/component/core/base/default-ok-cancel-buttons.component.js +41 -0
- package/esm2015/lib/component/core/base/transaction-base.component.js +7 -9
- package/esm2015/lib/component/core/core.module.js +6 -3
- package/esm2015/lib/component/core/enum/app-popup-type.enum.js +8 -0
- package/esm2015/lib/component/core/relation/customer-groups.component.js +4 -3
- package/esm2015/lib/component/core/stock-status-indicator/stock-status-indicator.component.js +1 -1
- package/esm2015/lib/component/delivery-type-tile/delivery-type-tile.component.js +40 -0
- package/esm2015/lib/component/delivery-type-tile/delivery-type-tile.module.js +26 -0
- package/esm2015/lib/component/order-confirmation-grid.component/order-confirmation-grid.component.js +70 -0
- package/esm2015/lib/component/order-confirmation-grid.component/order-confirmation-grid.module.js +29 -0
- package/esm2015/lib/component/order-grid/order-grid.component.js +99 -0
- package/esm2015/lib/component/order-grid/order-grid.module.js +28 -0
- package/esm2015/lib/component/payment/payment.component.js +73 -0
- package/esm2015/lib/component/payment/payment.module.js +27 -0
- package/esm2015/lib/component/payment-tile/payment-tile.component.js +32 -0
- package/esm2015/lib/component/payment-tile/payment-tile.module.js +25 -0
- package/esm2015/lib/component/relation-address-select/relation-address-select.component.js +1 -1
- package/esm2015/lib/component/relation-address-tile/relation-address-tile.component.js +12 -24
- package/esm2015/lib/component/relation-address-tile/relation-address-tile.module.js +4 -2
- package/esm2015/lib/component/seller-information/seller-information.component.js +61 -0
- package/esm2015/lib/component/seller-information/seller-information.module.js +21 -0
- package/esm2015/lib/component/shared/transaction-article-text/transaction-article-text.module.js +1 -1
- package/esm2015/lib/component/shopping-cart-preview/shopping-cart-preview.component.js +7 -3
- package/esm2015/lib/component/stepper/component/stepper-step.component.js +3 -3
- package/esm2015/lib/component/stepper/stepper.component.js +39 -41
- package/esm2015/lib/component/stepper/stepper.module.js +6 -3
- package/esm2015/lib/component/tile/tile.component.js +32 -0
- package/esm2015/lib/component/tile/tile.module.js +19 -0
- package/esm2015/lib/component/transaction/transaction.component.js +72 -14
- package/esm2015/lib/component/transaction/transaction.module.js +10 -2
- package/esm2015/lib/component/transaction-commit-bar/transaction-commit-bar.component.js +46 -0
- package/esm2015/lib/component/transaction-commit-bar/transaction-commit-bar.module.js +27 -0
- package/esm2015/lib/component/transaction-confirmation-history/transaction-confirmation-history.component.js +28 -0
- package/esm2015/lib/component/transaction-confirmation-history/transaction-confirmation-history.module.js +27 -0
- package/esm2015/lib/component/transaction-header/transaction-header.component.js +14 -4
- package/esm2015/lib/component/transaction-header-delivery/transaction-header-delivery.component.js +5 -2
- package/esm2015/lib/component/transaction-history-grid/transaction-history-grid.component.js +47 -0
- package/esm2015/lib/component/transaction-history-grid/transaction-history-grid.module.js +27 -0
- package/esm2015/lib/component/transaction-history-grid-status/transaction-history-grid-status.component.js +36 -0
- package/esm2015/lib/component/transaction-history-grid-status/transaction-history-grid-status.module.js +23 -0
- package/esm2015/lib/component/transaction-line/transaction-line.component.js +36 -4
- package/esm2015/lib/component/transaction-line-fields/transaction-line-commission-code.component.js +49 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-commission-code.module.js +23 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-delivery-date.component.js +40 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-delivery-date.module.js +23 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-delivery-method.component.js +48 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-delivery-method.module.js +23 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-discount-amount.component.js +50 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-discount-amount.module.js +23 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-fields-base.component.js +22 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-line-discount.component.js +50 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-line-discount.module.js +23 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-price-list.component.js +49 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-price-list.module.js +23 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-price.component.js +49 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-price.module.js +23 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-quantity.component.js +36 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-quantity.module.js +23 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-quantum-discount.component.js +50 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-quantum-discount.module.js +23 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-reference.component.js +48 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-reference.module.js +23 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-special-discount.component.js +50 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-special-discount.module.js +23 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-vat.component.js +49 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-vat.module.js +23 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-warehouse.component.js +49 -0
- package/esm2015/lib/component/transaction-line-fields/transaction-line-warehouse.module.js +24 -0
- package/esm2015/lib/component/transaction-line-side-panel/transaction-line-side-panel.component.js +91 -0
- package/esm2015/lib/component/transaction-line-side-panel/transaction-line-side-panel.module.js +36 -0
- package/esm2015/lib/component/transaction-line-side-panel-default/transaction-line-side-panel-default.component.js +134 -0
- package/esm2015/lib/component/transaction-line-side-panel-default/transaction-line-side-panel-default.module.js +56 -0
- package/esm2015/lib/component/transaction-lines/transaction-lines.component.js +14 -3
- package/esm2015/lib/component/transaction-lines-grid/transaction-lines-grid.component.js +16 -11
- package/esm2015/lib/component/transaction-lines-grid/transaction-lines-grid.module.js +4 -3
- package/esm2015/lib/component/transaction-nav-bar/transaction-nav-bar-button/transaction-nav-bar-button.component.js +29 -0
- package/esm2015/lib/component/transaction-nav-bar/transaction-nav-bar.component.js +65 -0
- package/esm2015/lib/component/transaction-nav-bar/transaction-nav-bar.module.js +26 -0
- package/esm2015/lib/component/transaction-receiving-goods-details/transaction-receiving-goods-details.component.js +39 -0
- package/esm2015/lib/component/transaction-receiving-goods-details/transaction-receiving-goods-details.module.js +25 -0
- package/esm2015/lib/component/transaction-receiving-goods-history/transaction-receiving-goods-history.component.js +28 -0
- package/esm2015/lib/component/transaction-receiving-goods-history/transaction-receiving-goods-history.module.js +27 -0
- package/esm2015/lib/enum/icon.enum.js +12 -1
- package/esm2015/lib/enum/status-type.enum.js +5 -0
- package/esm2015/lib/enum/tab-category.enum.js +10 -0
- package/esm2015/lib/model/delivery-type.js +3 -0
- package/esm2015/lib/model/icon-svg.js +13 -2
- package/esm2015/lib/pipe/date-duration.pipe.js +1 -1
- package/esm2015/lib/pipe/delivery-time.pipe.js +4 -1
- package/esm2015/lib/pipe/localize.pipe.js +1 -1
- package/esm2015/lib/pipe/safe-html.pipe.js +1 -1
- package/esm2015/lib/pipe/safe-style.pipe.js +1 -1
- package/esm2015/lib/service/dialog.service.js +14 -3
- package/esm2015/lib/service/dictionary.service.js +1 -1
- package/esm2015/lib/service/ione-connector-adapter.service.js +273 -15
- package/esm2015/lib/service/pending-reason.service.js +21 -9
- package/esm2015/lib/service/transaction.service.js +195 -29
- package/fesm2015/colijnit-transaction.js +4156 -1296
- package/fesm2015/colijnit-transaction.js.map +1 -1
- package/lib/component/checkout/checkout-overview-delivery-edit/checkout-overview-delivery-edit.component.d.ts +8 -45
- package/lib/component/checkout/checkout-overview-delivery-edit/style/_layout.scss +13 -6
- package/lib/component/checkout/checkout-overview-delivery-edit/style/material.scss +1 -2
- package/lib/component/checkout/checkout-overview-relation-edit/checkout-overview-relation-edit.component.d.ts +31 -3
- package/lib/component/checkout/checkout-overview-relation-edit/style/_layout.scss +28 -0
- package/lib/component/checkout/checkout-overview-relation-edit/style/_material-definition.scss +1 -0
- package/lib/component/checkout/checkout-overview-relation-edit/style/material.scss +4 -0
- package/lib/component/checkout/checkout-relation-suggestions-list/style/_layout.scss +1 -0
- package/lib/component/checkout/checkout.component.d.ts +10 -1
- package/lib/component/checkout/style/_layout.scss +25 -0
- package/lib/component/checkout/style/_material-definition.scss +5 -0
- package/lib/component/checkout/style/material.scss +2 -0
- package/lib/component/confirmation-dialog/confirmation-dialog.component.d.ts +4 -0
- package/lib/component/confirmation-dialog/style/material.scss +1 -0
- package/lib/component/core/base/default-ok-cancel-buttons.component.d.ts +13 -0
- package/lib/component/core/enum/app-popup-type.enum.d.ts +6 -0
- package/lib/component/core/image-display/style/_layout.scss +2 -4
- package/lib/component/core/relation/relation-customer-groups.component.scss +6 -0
- package/lib/component/delivery-type-tile/delivery-type-tile.component.d.ts +10 -0
- package/lib/component/delivery-type-tile/delivery-type-tile.module.d.ts +2 -0
- package/lib/component/delivery-type-tile/style/_layout.scss +35 -0
- package/lib/component/delivery-type-tile/style/_material-definition.scss +16 -0
- package/lib/component/delivery-type-tile/style/_theme.scss +6 -0
- package/lib/component/delivery-type-tile/style/material.scss +5 -0
- package/lib/component/order-confirmation-create/style/_layout.scss +5 -0
- package/lib/component/order-confirmation-create/style/_material-definition.scss +1 -0
- package/lib/component/order-confirmation-create/style/_theme.scss +5 -0
- package/lib/component/order-confirmation-create/style/material.scss +4 -0
- package/lib/component/order-confirmation-grid.component/order-confirmation-grid.component.d.ts +15 -0
- package/lib/component/order-confirmation-grid.component/order-confirmation-grid.module.d.ts +2 -0
- package/lib/component/order-confirmation-grid.component/style/_layout.scss +5 -0
- package/lib/component/order-confirmation-grid.component/style/_material-definition.scss +1 -0
- package/lib/component/order-confirmation-grid.component/style/_theme.scss +5 -0
- package/lib/component/order-confirmation-grid.component/style/material.scss +4 -0
- package/lib/component/order-grid/order-grid.component.d.ts +23 -0
- package/lib/component/order-grid/order-grid.module.d.ts +2 -0
- package/lib/component/order-grid/style/_layout.scss +21 -0
- package/lib/component/order-grid/style/_material-definition.scss +2 -0
- package/lib/component/order-grid/style/_theme.scss +6 -0
- package/lib/component/order-grid/style/material.scss +4 -0
- package/lib/component/payment/payment.component.d.ts +18 -0
- package/lib/component/payment/payment.module.d.ts +2 -0
- package/lib/component/payment/style/_layout.scss +54 -0
- package/lib/component/payment/style/_material-definition.scss +17 -0
- package/lib/component/payment/style/_theme.scss +16 -0
- package/lib/component/payment/style/material.scss +5 -0
- package/lib/component/payment-tile/payment-tile.component.d.ts +9 -0
- package/lib/component/payment-tile/payment-tile.module.d.ts +2 -0
- package/lib/component/payment-tile/style/_layout.scss +22 -0
- package/lib/component/{service-order/transaction-edit-article-text/transaction-edit-article-text.component.scss → payment-tile/style/_material-definition.scss} +0 -0
- package/lib/component/payment-tile/style/_theme.scss +6 -0
- package/lib/component/payment-tile/style/material.scss +5 -0
- package/lib/component/relation-address/style/_layout.scss +5 -0
- package/lib/component/relation-address-tile/relation-address-tile.component.d.ts +1 -0
- package/lib/component/relation-address-tile/style/_layout.scss +0 -21
- package/lib/component/relation-address-tile/style/_material-definition.scss +2 -1
- package/lib/component/relation-address-tile/style/_theme.scss +0 -30
- package/lib/component/relation-address-tile/style/material.scss +1 -0
- package/lib/component/seller-information/seller-information.component.d.ts +13 -0
- package/lib/component/seller-information/seller-information.module.d.ts +2 -0
- package/lib/component/seller-information/style/_layout.scss +21 -0
- package/lib/component/seller-information/style/_material-definition.scss +2 -0
- package/lib/component/seller-information/style/_theme.scss +7 -0
- package/lib/component/seller-information/style/material.scss +4 -0
- package/lib/component/shopping-cart-preview/shopping-cart-preview.component.d.ts +2 -0
- package/lib/component/shopping-cart-preview/style/_layout.scss +6 -2
- package/lib/component/shopping-cart-preview/style/_material-definition.scss +1 -1
- package/lib/component/stepper/component/stepper-step.component.d.ts +1 -1
- package/lib/component/stepper/stepper.component.d.ts +10 -5
- package/lib/component/stepper/style/_layout.scss +52 -20
- package/lib/component/stepper/style/_material-definition.scss +9 -2
- package/lib/component/stepper/style/_theme.scss +36 -0
- package/lib/component/tile/style/_layout.scss +36 -0
- package/lib/component/tile/style/_material-definition.scss +16 -0
- package/lib/component/tile/style/_theme.scss +36 -0
- package/lib/component/tile/style/material.scss +4 -0
- package/lib/component/tile/tile.component.d.ts +6 -0
- package/lib/component/tile/tile.module.d.ts +2 -0
- package/lib/component/transaction/style/_layout.scss +6 -0
- package/lib/component/transaction/style/material.scss +3 -0
- package/lib/component/transaction/transaction.component.d.ts +16 -1
- package/lib/component/transaction-commit-bar/style/_layout.scss +16 -0
- package/lib/component/transaction-commit-bar/style/_material-definition.scss +1 -0
- package/lib/component/transaction-commit-bar/style/_theme.scss +7 -0
- package/lib/component/transaction-commit-bar/style/material.scss +4 -0
- package/lib/component/transaction-commit-bar/transaction-commit-bar.component.d.ts +11 -0
- package/lib/component/transaction-commit-bar/transaction-commit-bar.module.d.ts +2 -0
- package/lib/component/transaction-confirmation-history/style/_layout.scss +7 -0
- package/lib/component/transaction-confirmation-history/style/_material-definition.scss +1 -0
- package/lib/component/transaction-confirmation-history/style/_theme.scss +7 -0
- package/lib/component/transaction-confirmation-history/style/material.scss +4 -0
- package/lib/component/transaction-confirmation-history/transaction-confirmation-history.component.d.ts +5 -0
- package/lib/component/transaction-confirmation-history/transaction-confirmation-history.module.d.ts +2 -0
- package/lib/component/transaction-header/transaction-header.component.d.ts +4 -1
- package/lib/component/transaction-history-grid/style/_layout.scss +7 -0
- package/lib/component/transaction-history-grid/style/_material-definition.scss +0 -0
- package/lib/component/transaction-history-grid/style/_theme.scss +7 -0
- package/lib/component/transaction-history-grid/style/material.scss +4 -0
- package/lib/component/transaction-history-grid/transaction-history-grid.component.d.ts +14 -0
- package/lib/component/transaction-history-grid/transaction-history-grid.module.d.ts +2 -0
- package/lib/component/transaction-history-grid-status/style/_layout.scss +28 -0
- package/lib/component/{service-order/transaction-sidebar/transaction-line-accordion.component.scss → transaction-history-grid-status/style/_material-definition.scss} +0 -0
- package/lib/component/transaction-history-grid-status/style/_theme.scss +7 -0
- package/lib/component/transaction-history-grid-status/style/material.scss +4 -0
- package/lib/component/transaction-history-grid-status/transaction-history-grid-status.component.d.ts +9 -0
- package/lib/component/transaction-history-grid-status/transaction-history-grid-status.module.d.ts +2 -0
- package/lib/component/transaction-line/style/_theme.scss +5 -0
- package/lib/component/transaction-line/style/material.scss +1 -0
- package/lib/component/transaction-line/transaction-line.component.d.ts +8 -2
- package/lib/component/transaction-line-fields/transaction-line-commission-code.component.d.ts +12 -0
- package/lib/component/transaction-line-fields/transaction-line-commission-code.module.d.ts +2 -0
- package/lib/component/transaction-line-fields/transaction-line-delivery-date.component.d.ts +7 -0
- package/lib/component/transaction-line-fields/transaction-line-delivery-date.module.d.ts +2 -0
- package/lib/component/transaction-line-fields/transaction-line-delivery-method.component.d.ts +12 -0
- package/lib/component/transaction-line-fields/transaction-line-delivery-method.module.d.ts +2 -0
- package/lib/component/transaction-line-fields/transaction-line-discount-amount.component.d.ts +10 -0
- package/lib/component/transaction-line-fields/transaction-line-discount-amount.module.d.ts +2 -0
- package/lib/component/transaction-line-fields/transaction-line-fields-base.component.d.ts +6 -0
- package/lib/component/transaction-line-fields/transaction-line-line-discount.component.d.ts +10 -0
- package/lib/component/transaction-line-fields/transaction-line-line-discount.module.d.ts +2 -0
- package/lib/component/transaction-line-fields/transaction-line-price-list.component.d.ts +12 -0
- package/lib/component/transaction-line-fields/transaction-line-price-list.module.d.ts +2 -0
- package/lib/component/transaction-line-fields/transaction-line-price.component.d.ts +10 -0
- package/lib/component/transaction-line-fields/transaction-line-price.module.d.ts +2 -0
- package/lib/component/transaction-line-fields/transaction-line-quantity.component.d.ts +7 -0
- package/lib/component/transaction-line-fields/transaction-line-quantity.module.d.ts +2 -0
- package/lib/component/transaction-line-fields/transaction-line-quantum-discount.component.d.ts +10 -0
- package/lib/component/transaction-line-fields/transaction-line-quantum-discount.module.d.ts +2 -0
- package/lib/component/transaction-line-fields/transaction-line-reference.component.d.ts +10 -0
- package/lib/component/transaction-line-fields/transaction-line-reference.module.d.ts +2 -0
- package/lib/component/transaction-line-fields/transaction-line-special-discount.component.d.ts +10 -0
- package/lib/component/transaction-line-fields/transaction-line-special-discount.module.d.ts +2 -0
- package/lib/component/transaction-line-fields/transaction-line-vat.component.d.ts +12 -0
- package/lib/component/transaction-line-fields/transaction-line-vat.module.d.ts +2 -0
- package/lib/component/transaction-line-fields/transaction-line-warehouse.component.d.ts +12 -0
- package/lib/component/transaction-line-fields/transaction-line-warehouse.module.d.ts +2 -0
- package/lib/component/transaction-line-side-panel/style/_layout.scss +64 -0
- package/lib/component/transaction-line-side-panel/style/_material-definition.scss +8 -0
- package/lib/component/transaction-line-side-panel/style/_theme.scss +9 -0
- package/lib/component/transaction-line-side-panel/style/material.scss +9 -0
- package/lib/component/transaction-line-side-panel/transaction-line-side-panel.component.d.ts +18 -0
- package/lib/component/transaction-line-side-panel/transaction-line-side-panel.module.d.ts +2 -0
- package/lib/component/transaction-line-side-panel-default/style/_layout.scss +29 -0
- package/lib/component/transaction-line-side-panel-default/style/_material-definition.scss +10 -0
- package/lib/component/transaction-line-side-panel-default/style/_theme.scss +7 -0
- package/lib/component/transaction-line-side-panel-default/style/material.scss +4 -0
- package/lib/component/transaction-line-side-panel-default/transaction-line-side-panel-default.component.d.ts +16 -0
- package/lib/component/transaction-line-side-panel-default/transaction-line-side-panel-default.module.d.ts +2 -0
- package/lib/component/transaction-lines/transaction-lines.component.d.ts +6 -0
- package/lib/component/transaction-lines-grid/transaction-lines-grid.component.d.ts +4 -1
- package/lib/component/transaction-nav-bar/style/_layout.scss +13 -0
- package/lib/component/transaction-nav-bar/style/_material-definition.scss +1 -0
- package/lib/component/transaction-nav-bar/style/_theme.scss +7 -0
- package/lib/component/transaction-nav-bar/style/material.scss +4 -0
- package/lib/component/transaction-nav-bar/transaction-nav-bar-button/transaction-nav-bar-button.component.d.ts +14 -0
- package/lib/component/transaction-nav-bar/transaction-nav-bar-button/transaction-nav-bar-button.component.scss +23 -0
- package/lib/component/transaction-nav-bar/transaction-nav-bar.component.d.ts +18 -0
- package/lib/component/transaction-nav-bar/transaction-nav-bar.module.d.ts +2 -0
- package/lib/component/transaction-receiving-goods-details/style/_layout.scss +38 -0
- package/lib/component/transaction-receiving-goods-details/style/_material-definition.scss +1 -0
- package/lib/component/transaction-receiving-goods-details/style/_theme.scss +7 -0
- package/lib/component/transaction-receiving-goods-details/style/material.scss +4 -0
- package/lib/component/transaction-receiving-goods-details/transaction-receiving-goods-details.component.d.ts +6 -0
- package/lib/component/transaction-receiving-goods-details/transaction-receiving-goods-details.module.d.ts +2 -0
- package/lib/component/transaction-receiving-goods-history/style/_layout.scss +7 -0
- package/lib/component/transaction-receiving-goods-history/style/_material-definition.scss +1 -0
- package/lib/component/transaction-receiving-goods-history/style/_theme.scss +7 -0
- package/lib/component/transaction-receiving-goods-history/style/material.scss +4 -0
- package/lib/component/transaction-receiving-goods-history/transaction-receiving-goods-history.component.d.ts +5 -0
- package/lib/component/transaction-receiving-goods-history/transaction-receiving-goods-history.module.d.ts +2 -0
- package/lib/enum/icon.enum.d.ts +12 -1
- package/lib/enum/status-type.enum.d.ts +3 -0
- package/lib/enum/tab-category.enum.d.ts +8 -0
- package/lib/model/delivery-type.d.ts +7 -0
- package/lib/service/dialog.service.d.ts +1 -0
- package/lib/service/ione-connector-adapter.service.d.ts +27 -8
- package/lib/service/pending-reason.service.d.ts +3 -2
- package/lib/service/transaction.service.d.ts +25 -9
- package/lib/style/_variables.scss +10 -2
- package/package.json +2 -2
- package/lib/component/service-order/service-order.component.scss +0 -154
- package/lib/component/service-order/summary/transaction-delivery-summary.component.scss +0 -22
- package/lib/component/service-order/summary/transaction-summary-block.component.scss +0 -109
- package/lib/component/service-order/transaction-manager/transaction-manager.component.scss +0 -54
- package/lib/component/service-order/transaction-order-line-view/transaction-order-line-view.component.scss +0 -90
- package/lib/component/service-order/transaction-order-lines/transaction-order-lines.component.scss +0 -85
- package/lib/component/service-order/transaction-order-totals/transaction-order-totals.component.scss +0 -26
- package/lib/component/service-order/transaction-relation/transaction-relation-edit.component.scss +0 -24
- package/lib/component/service-order/transaction-sidebar/transaction-sidebar-right.component.scss +0 -17
- package/lib/component/service-order/warehouse/warehouse.component.scss +0 -54
|
@@ -9,16 +9,19 @@ import { AddressType } from "@colijnit/transactionapi/build/enum/address-type.en
|
|
|
9
9
|
import { GenderType } from "@colijnit/transactionapi/build/enum/gender-type.enum";
|
|
10
10
|
import { TransactionService } from "../../../service/transaction.service";
|
|
11
11
|
import { BusinessObjectUtils } from "@colijnit/transactionapi/build/utils/business-object-utils";
|
|
12
|
-
import { FormComponent } from "@colijnit/corecomponents_v12";
|
|
12
|
+
import { FormComponent, FormMasterService } from "@colijnit/corecomponents_v12";
|
|
13
13
|
import { FunctionUtils } from "@colijnit/transactionapi/build/utils/function-utils";
|
|
14
14
|
import { ObjectUtils } from "@colijnit/transactionapi/build/utils/object-utils";
|
|
15
15
|
import { Address } from "@colijnit/transactionapi/build/model/address.bo";
|
|
16
16
|
import { animate, state, style, transition, trigger } from "@angular/animations";
|
|
17
|
-
import {
|
|
17
|
+
import { BusinessObjectFactory } from "../../../factory/business-object-factory";
|
|
18
|
+
import { Icon } from "../../../enum/icon.enum";
|
|
18
19
|
export class CheckoutOverviewRelationEditComponent {
|
|
19
|
-
constructor(_service, _formMaster) {
|
|
20
|
+
constructor(_service, _formMaster, _boFactory) {
|
|
20
21
|
this._service = _service;
|
|
21
22
|
this._formMaster = _formMaster;
|
|
23
|
+
this._boFactory = _boFactory;
|
|
24
|
+
this.icons = Icon;
|
|
22
25
|
this.validSubmit = new EventEmitter();
|
|
23
26
|
this.invalidSubmit = new EventEmitter();
|
|
24
27
|
this.relationChange = new EventEmitter();
|
|
@@ -30,6 +33,13 @@ export class CheckoutOverviewRelationEditComponent {
|
|
|
30
33
|
this.relationSuggestions = [];
|
|
31
34
|
this.showRelationSidebar = false;
|
|
32
35
|
this.inviteToAccount = false;
|
|
36
|
+
this.addresses = [];
|
|
37
|
+
this.deliveryAddressIdx = 0;
|
|
38
|
+
this.invoiceAddressIdx = 0;
|
|
39
|
+
this.invoiceAddressSameAsDeliveryAddress = true;
|
|
40
|
+
this.editAddressType = AddressType.DeliveryAddress;
|
|
41
|
+
this.showSelectAddressDialog = false;
|
|
42
|
+
this.showCreateAddressDialog = false;
|
|
33
43
|
this.relType = RelationNameKind;
|
|
34
44
|
this.genderType = GenderType;
|
|
35
45
|
this._relation = NULL_RELATION_OBJECT;
|
|
@@ -82,6 +92,70 @@ export class CheckoutOverviewRelationEditComponent {
|
|
|
82
92
|
// return this.relationForm.submit();
|
|
83
93
|
return this._formMaster.submitSlaves();
|
|
84
94
|
}
|
|
95
|
+
showNewAddressDialog(deliveryAddress = true) {
|
|
96
|
+
this.editAddressType = deliveryAddress ? AddressType.DeliveryAddress : AddressType.BillingAddress;
|
|
97
|
+
this.showCreateAddressDialog = true;
|
|
98
|
+
}
|
|
99
|
+
showEditAddressDialog(deliveryAddress = true) {
|
|
100
|
+
this.editAddressType = deliveryAddress ? AddressType.DeliveryAddress : AddressType.BillingAddress;
|
|
101
|
+
this.showSelectAddressDialog = true;
|
|
102
|
+
}
|
|
103
|
+
setIndexDeliveryAddress(idx) {
|
|
104
|
+
this.deliveryAddressIdx = idx;
|
|
105
|
+
this.editAddressType = AddressType.DeliveryAddress;
|
|
106
|
+
this.selectAddress(this.relation.addresses[idx]);
|
|
107
|
+
}
|
|
108
|
+
setIndexInvoiceAddress(idx) {
|
|
109
|
+
this.invoiceAddressIdx = idx;
|
|
110
|
+
this.editAddressType = AddressType.BillingAddress;
|
|
111
|
+
this.selectAddress(this.relation.addresses[idx]);
|
|
112
|
+
}
|
|
113
|
+
editAddress(addr) {
|
|
114
|
+
this.addressToEdit = this._boFactory.makeWithRawBackendData(Address, addr);
|
|
115
|
+
this.showEditAddressDialog();
|
|
116
|
+
}
|
|
117
|
+
checkSameAddress(checked) {
|
|
118
|
+
if (checked) {
|
|
119
|
+
this.editAddressType = AddressType.DeliveryAddress;
|
|
120
|
+
this.selectAddress(this.deliveryAddress);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
saveNewAddress(address) {
|
|
124
|
+
address.addressType = this.editAddressType;
|
|
125
|
+
this.relation.addresses.push(address);
|
|
126
|
+
this.selectAddress(address);
|
|
127
|
+
this.showCreateAddressDialog = false;
|
|
128
|
+
}
|
|
129
|
+
saveAddress(address) {
|
|
130
|
+
const idx = this.relation.addresses.findIndex(a => a.nawNr === address.nawNr);
|
|
131
|
+
if (idx > -1) {
|
|
132
|
+
this.relation.addresses[idx] = this._boFactory.makeWithRawBackendData(Address, address);
|
|
133
|
+
}
|
|
134
|
+
this.showSelectAddressDialog = false;
|
|
135
|
+
}
|
|
136
|
+
selectAddress(address) {
|
|
137
|
+
if (!this.deliveryOptionsRequest) {
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
if (!address) {
|
|
141
|
+
address = this._service.getFirstAddress(this.relation);
|
|
142
|
+
}
|
|
143
|
+
if (!address) {
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
this._setCountryNameToAddress(address);
|
|
147
|
+
if (this.editAddressType === AddressType.DeliveryAddress) {
|
|
148
|
+
this.deliveryOptionsRequest.transactionAddress = address.nawNr;
|
|
149
|
+
this.deliveryAddress = address;
|
|
150
|
+
this.deliveryAddressIdx = this.relation.addresses.findIndex(a => a.nawNr === this.deliveryAddress.nawNr);
|
|
151
|
+
}
|
|
152
|
+
if (this.invoiceAddressSameAsDeliveryAddress || this.editAddressType !== AddressType.DeliveryAddress) {
|
|
153
|
+
this.deliveryOptionsRequest.invoiceAddress = address.nawNr;
|
|
154
|
+
this.invoiceAddress = address;
|
|
155
|
+
this.invoiceAddressIdx = this.relation.addresses.findIndex(a => a.nawNr === this.invoiceAddress.nawNr);
|
|
156
|
+
}
|
|
157
|
+
this.showSelectAddressDialog = false;
|
|
158
|
+
}
|
|
85
159
|
preparePrimaryEmail() {
|
|
86
160
|
if (this._relation) {
|
|
87
161
|
this.emailAddress = this._relation.getLowestSequenceOfContactOptionsWithType(CommunicationType.Email);
|
|
@@ -142,6 +216,11 @@ export class CheckoutOverviewRelationEditComponent {
|
|
|
142
216
|
}
|
|
143
217
|
this._relationNameChangeHandler.call(this);
|
|
144
218
|
}
|
|
219
|
+
checkVisibilitySuggestions() {
|
|
220
|
+
if (this._relation.firstName && this._relation.familyName) {
|
|
221
|
+
this.hideSidebar();
|
|
222
|
+
}
|
|
223
|
+
}
|
|
145
224
|
onRelationSuggestionClick(relationSuggested) {
|
|
146
225
|
return __awaiter(this, void 0, void 0, function* () {
|
|
147
226
|
if (relationSuggested) {
|
|
@@ -164,8 +243,11 @@ export class CheckoutOverviewRelationEditComponent {
|
|
|
164
243
|
showSidebar() {
|
|
165
244
|
this.showRelationSidebar = true;
|
|
166
245
|
}
|
|
246
|
+
// Hide sidebar with a little timeout to prevent missing the click
|
|
167
247
|
hideSidebar() {
|
|
168
|
-
|
|
248
|
+
setTimeout(() => {
|
|
249
|
+
this.showRelationSidebar = false;
|
|
250
|
+
}, 200);
|
|
169
251
|
}
|
|
170
252
|
_initForm() {
|
|
171
253
|
if (this.relationForm) {
|
|
@@ -194,133 +276,197 @@ export class CheckoutOverviewRelationEditComponent {
|
|
|
194
276
|
this.relationSuggestions = yield this._service.getRelationListObjects(relationRequest);
|
|
195
277
|
});
|
|
196
278
|
}
|
|
279
|
+
_setCountryNameToAddress(address) {
|
|
280
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
281
|
+
if (address.countryId && !address.countryName) {
|
|
282
|
+
const country = yield this._service.getCountry(address.countryId);
|
|
283
|
+
address.countryName = country.description;
|
|
284
|
+
}
|
|
285
|
+
});
|
|
286
|
+
}
|
|
197
287
|
}
|
|
198
288
|
CheckoutOverviewRelationEditComponent.decorators = [
|
|
199
289
|
{ type: Component, args: [{
|
|
200
290
|
selector: "co-checkout-overview-relation-edit",
|
|
201
291
|
template: `
|
|
202
|
-
<
|
|
203
|
-
<
|
|
204
|
-
<div class="checkout-
|
|
205
|
-
<
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
<div class="checkout-data-column">
|
|
209
|
-
<div class="checkout-data-row">
|
|
210
|
-
<co-input-radio-button class="default-width"
|
|
211
|
-
[name]="'type'"
|
|
212
|
-
[label]="'PRIVATE_PERSON' | localize"
|
|
213
|
-
[value]="relType.Private"
|
|
214
|
-
[checked]="relation.type === relType.Private"
|
|
215
|
-
(modelChange)="changeRelationType(relType.Private)"
|
|
216
|
-
></co-input-radio-button>
|
|
217
|
-
<co-input-radio-button class="default-width"
|
|
218
|
-
[name]="'type'"
|
|
219
|
-
[label]="'COMPANY' | localize"
|
|
220
|
-
[value]="relType.Company"
|
|
221
|
-
[(model)]="relation.type"
|
|
222
|
-
[checked]="relation.type === relType.Company"
|
|
223
|
-
(modelChange)="changeRelationType(relType.Company)"
|
|
224
|
-
></co-input-radio-button>
|
|
292
|
+
<div class="relation-edit-content">
|
|
293
|
+
<co-form>
|
|
294
|
+
<div class="checkout-form-wrapper">
|
|
295
|
+
<div class="checkout-label-column">
|
|
296
|
+
<span>01</span>
|
|
297
|
+
<span class="label" [textContent]="'PERSONAL_DATA' | localize"></span>
|
|
225
298
|
</div>
|
|
226
|
-
<div class="checkout-data-
|
|
227
|
-
<relation-customer-groups [(model)]="relation.customerGroup" required></relation-customer-groups>
|
|
228
|
-
</div>
|
|
229
|
-
<div *ngIf="relation.type === relType.Private" class="collapseable" @showHidePrivateRelationFields>
|
|
230
|
-
<div class="checkout-data-row">
|
|
231
|
-
<co-input-text
|
|
232
|
-
class="checkout-first-name"
|
|
233
|
-
[(model)]="relation.firstName"
|
|
234
|
-
[placeholder]="'FIRST_NAME' | localize"
|
|
235
|
-
(modelChange)="firstNameChange($event)"
|
|
236
|
-
[required]="true"
|
|
237
|
-
></co-input-text>
|
|
238
|
-
<co-input-text
|
|
239
|
-
class="checkout-prefix-name default-width"
|
|
240
|
-
[(model)]="relation.prefix"
|
|
241
|
-
[placeholder]="'PREFIX' | localize"
|
|
242
|
-
></co-input-text>
|
|
243
|
-
<co-input-text
|
|
244
|
-
class="checkout-last-name"
|
|
245
|
-
[(model)]="relation.familyName"
|
|
246
|
-
[placeholder]="'LAST_NAME' | localize"
|
|
247
|
-
(modelChange)="familyNameChange($event)"
|
|
248
|
-
[required]="true"></co-input-text>
|
|
249
|
-
</div>
|
|
299
|
+
<div class="checkout-data-column">
|
|
250
300
|
<div class="checkout-data-row">
|
|
251
301
|
<co-input-radio-button class="default-width"
|
|
252
|
-
[name]="'
|
|
253
|
-
[label]="'
|
|
254
|
-
[value]="
|
|
255
|
-
[checked]="relation.
|
|
256
|
-
(modelChange)="
|
|
257
|
-
></co-input-radio-button>
|
|
258
|
-
<co-input-radio-button class="default-width"
|
|
259
|
-
[name]="'gender'"
|
|
260
|
-
[label]="'FEMALE' | localize "
|
|
261
|
-
[value]="genderType.Female"
|
|
262
|
-
[checked]="relation.gender === genderType.Female"
|
|
263
|
-
(modelChange)="changeGenderType(genderType.Female)"
|
|
302
|
+
[name]="'type'"
|
|
303
|
+
[label]="'PRIVATE_PERSON' | localize"
|
|
304
|
+
[value]="relType.Private"
|
|
305
|
+
[checked]="relation.type === relType.Private"
|
|
306
|
+
(modelChange)="changeRelationType(relType.Private)"
|
|
264
307
|
></co-input-radio-button>
|
|
265
308
|
<co-input-radio-button class="default-width"
|
|
266
|
-
[name]="'
|
|
267
|
-
[label]="'
|
|
268
|
-
[value]="
|
|
269
|
-
[
|
|
270
|
-
|
|
309
|
+
[name]="'type'"
|
|
310
|
+
[label]="'COMPANY' | localize"
|
|
311
|
+
[value]="relType.Company"
|
|
312
|
+
[(model)]="relation.type"
|
|
313
|
+
[checked]="relation.type === relType.Company"
|
|
314
|
+
(modelChange)="changeRelationType(relType.Company)"
|
|
271
315
|
></co-input-radio-button>
|
|
272
316
|
</div>
|
|
273
317
|
<div class="checkout-data-row">
|
|
274
|
-
<
|
|
275
|
-
|
|
318
|
+
<relation-customer-groups [(model)]="relation.customerGroup" required></relation-customer-groups>
|
|
319
|
+
</div>
|
|
320
|
+
<div *ngIf="relation.type === relType.Private" class="collapseable" @showHidePrivateRelationFields>
|
|
321
|
+
<div class="checkout-data-row">
|
|
322
|
+
<co-input-text
|
|
323
|
+
class="checkout-first-name"
|
|
324
|
+
[(model)]="relation.firstName"
|
|
325
|
+
[placeholder]="'FIRST_NAME' | localize"
|
|
326
|
+
(modelChange)="firstNameChange($event)"
|
|
327
|
+
(blur)="checkVisibilitySuggestions()"
|
|
328
|
+
[required]="true"
|
|
329
|
+
></co-input-text>
|
|
330
|
+
<co-input-text
|
|
331
|
+
class="checkout-prefix-name default-width"
|
|
332
|
+
[(model)]="relation.prefix"
|
|
333
|
+
[placeholder]="'PREFIX' | localize"
|
|
334
|
+
></co-input-text>
|
|
335
|
+
<co-input-text
|
|
336
|
+
class="checkout-last-name"
|
|
337
|
+
[(model)]="relation.familyName"
|
|
338
|
+
[placeholder]="'LAST_NAME' | localize"
|
|
339
|
+
(modelChange)="familyNameChange($event)"
|
|
340
|
+
(blur)="checkVisibilitySuggestions()"
|
|
341
|
+
[required]="true"></co-input-text>
|
|
342
|
+
</div>
|
|
343
|
+
<div class="checkout-data-row">
|
|
344
|
+
<co-input-radio-button class="default-width"
|
|
345
|
+
[name]="'gender'"
|
|
346
|
+
[label]="'MALE' | localize"
|
|
347
|
+
[value]="genderType.Male"
|
|
348
|
+
[checked]="relation.gender === genderType.Male"
|
|
349
|
+
(modelChange)="changeGenderType(genderType.Male)"
|
|
350
|
+
></co-input-radio-button>
|
|
351
|
+
<co-input-radio-button class="default-width"
|
|
352
|
+
[name]="'gender'"
|
|
353
|
+
[label]="'FEMALE' | localize "
|
|
354
|
+
[value]="genderType.Female"
|
|
355
|
+
[checked]="relation.gender === genderType.Female"
|
|
356
|
+
(modelChange)="changeGenderType(genderType.Female)"
|
|
357
|
+
></co-input-radio-button>
|
|
358
|
+
<co-input-radio-button class="default-width"
|
|
359
|
+
[name]="'gender'"
|
|
360
|
+
[label]="'UNKNOWN' | localize"
|
|
361
|
+
[value]="genderType.Unspecified"
|
|
362
|
+
[checked]="relation.gender === genderType.Unspecified"
|
|
363
|
+
(modelChange)="changeGenderType(genderType.Unspecified)"
|
|
364
|
+
></co-input-radio-button>
|
|
365
|
+
</div>
|
|
366
|
+
<div class="checkout-data-row">
|
|
367
|
+
<co-input-date [placeholder]="'DATE_OF_BIRTH' | localize " [(model)]="dateOfBirth" [required]="true"></co-input-date>
|
|
368
|
+
</div>
|
|
369
|
+
</div>
|
|
370
|
+
<div *ngIf="relation?.type === relType.Company" class="checkout-data-row collapseable" @showHideCompanyRelationFields>
|
|
371
|
+
<co-input-text [(model)]="relation.familyName" [placeholder]="'COMPANY_NAME' | localize" [required]="true"></co-input-text>
|
|
276
372
|
</div>
|
|
373
|
+
<co-relation-address [address]="editFirstAddress" [showButtons]="false"></co-relation-address>
|
|
277
374
|
</div>
|
|
278
|
-
<div
|
|
279
|
-
<
|
|
375
|
+
<div class="checkout-data-column">
|
|
376
|
+
<div class="checkout-data-row">
|
|
377
|
+
<co-carousel-3d *ngIf="relation.addresses && relation.addresses.length > 1"
|
|
378
|
+
[tileWidth]="200"
|
|
379
|
+
[tileHeight]="100"
|
|
380
|
+
[selectedIndex]="deliveryAddressIdx"
|
|
381
|
+
(indexSelected)="setIndexDeliveryAddress($event)">
|
|
382
|
+
<co-relation-address-tile #carouselItem *ngFor="let address of relation.addresses; let index = index"
|
|
383
|
+
[address]="address"
|
|
384
|
+
[selected]="deliveryAddressIdx === index"
|
|
385
|
+
(editAddressClicked)="editAddress($event)"
|
|
386
|
+
></co-relation-address-tile>
|
|
387
|
+
</co-carousel-3d>
|
|
388
|
+
</div>
|
|
389
|
+
<div class="checkout-data-row">
|
|
390
|
+
<div class="relation-address-new">
|
|
391
|
+
<icon class="relation-address-icon" [icon]="icons.ArrowPointRight"></icon>
|
|
392
|
+
<div [textContent]="'ADDRESS_ADD' | localize" (click)="showNewAddressDialog()"></div>
|
|
393
|
+
</div>
|
|
394
|
+
</div>
|
|
280
395
|
</div>
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
</div>
|
|
286
|
-
<div class="checkout-data-column">
|
|
287
|
-
<co-relation-address [address]="editFirstAddress" [showButtons]="false"></co-relation-address>
|
|
288
|
-
</div>
|
|
289
|
-
<div class="checkout-label-column">
|
|
290
|
-
<span>03</span>
|
|
291
|
-
<span class="label" [textContent]="'LOGIN_DETAILS' | localize"></span>
|
|
292
|
-
<span class="label-description" [textContent]="'ACCOUNT_EXPLANATION' | localize"></span>
|
|
293
|
-
</div>
|
|
294
|
-
<div class="checkout-data-column">
|
|
295
|
-
<div class="checkout-data-row">
|
|
296
|
-
<co-input-text [(model)]="emailAddress.value" [placeholder]="'EMAIL_ADDRESS' | localize " [type]="'email'" [required]="true"></co-input-text>
|
|
396
|
+
|
|
397
|
+
<div class="checkout-label-column">
|
|
398
|
+
<span>02</span>
|
|
399
|
+
<span class="label" [textContent]="'INVOICE_ADDRESS' | localize"></span>
|
|
297
400
|
</div>
|
|
298
|
-
<div
|
|
299
|
-
<
|
|
401
|
+
<div class="checkout-data-column">
|
|
402
|
+
<div class="checkout-data-row">
|
|
403
|
+
<co-input-checkbox [(model)]="invoiceAddressSameAsDeliveryAddress" (modelChange)="checkSameAddress($event)" [label]="'SAME_AS_DELIVERY' | localize"></co-input-checkbox>
|
|
404
|
+
</div>
|
|
405
|
+
<div class="overview-delivery-invoice-address" *ngIf="!invoiceAddressSameAsDeliveryAddress" @showHideInvoiceAddress>
|
|
406
|
+
<div class="checkout-data-row">
|
|
407
|
+
<co-carousel-3d *ngIf="relation.addresses && relation.addresses.length > 1"
|
|
408
|
+
[tileWidth]="200"
|
|
409
|
+
[tileHeight]="100"
|
|
410
|
+
[selectedIndex]="invoiceAddressIdx"
|
|
411
|
+
(indexSelected)="setIndexInvoiceAddress($event)">
|
|
412
|
+
<co-relation-address-tile #carouselItem *ngFor="let address of relation.addresses; let index = index"
|
|
413
|
+
[address]="address"
|
|
414
|
+
[selected]="invoiceAddressIdx === index"
|
|
415
|
+
(editAddressClicked)="editAddress($event)"
|
|
416
|
+
></co-relation-address-tile>
|
|
417
|
+
</co-carousel-3d>
|
|
418
|
+
</div>
|
|
419
|
+
<div class="checkout-data-row">
|
|
420
|
+
<div class="relation-address-new">
|
|
421
|
+
<icon class="relation-address-icon" [icon]="icons.ArrowPointRight"></icon>
|
|
422
|
+
<div [textContent]="'ADDRESS_ADD' | localize" (click)="showNewAddressDialog()"></div>
|
|
423
|
+
</div>
|
|
424
|
+
</div>
|
|
425
|
+
</div>
|
|
300
426
|
</div>
|
|
301
|
-
<div
|
|
302
|
-
<
|
|
427
|
+
<div class="checkout-label-column">
|
|
428
|
+
<span>03</span>
|
|
429
|
+
<span class="label" [textContent]="'CONTACT_DETAILS' | localize"></span>
|
|
303
430
|
</div>
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
431
|
+
<div class="checkout-data-column">
|
|
432
|
+
<div class="checkout-data-row">
|
|
433
|
+
<co-input-text [(model)]="phoneNumber.value" [placeholder]="'PHONE_NO' | localize " [required]="true"></co-input-text>
|
|
434
|
+
</div>
|
|
435
|
+
<div class="checkout-data-row">
|
|
436
|
+
<co-input-text [(model)]="emailAddress.value" [placeholder]="'EMAIL_ADDRESS' | localize " [type]="'email'" [required]="true"></co-input-text>
|
|
437
|
+
</div>
|
|
438
|
+
<!--
|
|
439
|
+
</div>
|
|
440
|
+
<div class="checkout-label-column">
|
|
441
|
+
<span>04</span>
|
|
442
|
+
<span class="label" [textContent]="'PASSWORD' | localize"></span>
|
|
443
|
+
<span class="label-description" [textContent]="'ACCOUNT_EXPLANATION' | localize"></span>
|
|
444
|
+
</div>
|
|
445
|
+
<div class="checkout-data-column">
|
|
446
|
+
-->
|
|
447
|
+
<div class="checkout-data-row">
|
|
448
|
+
<co-input-checkbox [label]="'INVITE_TO_ACCOUNT' | localize" [(model)]="inviteToAccount"></co-input-checkbox>
|
|
449
|
+
</div>
|
|
450
|
+
</div>
|
|
451
|
+
<div class="checkout-label-column">
|
|
452
|
+
<span>04</span>
|
|
453
|
+
<span class="label" [textContent]="'PRIVACY_PREFERENCES' | localize"></span>
|
|
454
|
+
</div>
|
|
455
|
+
<div class="checkout-data-column">
|
|
456
|
+
<div class="two-column-grid">
|
|
457
|
+
<ng-container *ngFor="let privacySetting of privacySettings">
|
|
458
|
+
<co-input-checkbox class="first-column"
|
|
459
|
+
[label]="privacySetting.description"
|
|
460
|
+
[model]="isShared(privacySetting)"
|
|
461
|
+
(modelChange)="changePrivacySetting(privacySetting, $event)"
|
|
462
|
+
></co-input-checkbox>
|
|
463
|
+
<span class="second-column" [textContent]="privacySetting.explanation"></span>
|
|
464
|
+
</ng-container>
|
|
465
|
+
</div>
|
|
319
466
|
</div>
|
|
320
467
|
</div>
|
|
321
|
-
</
|
|
322
|
-
</
|
|
323
|
-
|
|
468
|
+
</co-form>
|
|
469
|
+
</div>
|
|
324
470
|
<div class="suggestions-sidebar" *ngIf="showRelationSidebar" @showHideSidebar>
|
|
325
471
|
<div class="relation-sidebar-header">
|
|
326
472
|
<label class="checkout-label-h3" [textContent]="'SUGGESTIONS' | localize"></label>
|
|
@@ -330,6 +476,19 @@ CheckoutOverviewRelationEditComponent.decorators = [
|
|
|
330
476
|
(suggestionSelected)="onRelationSuggestionClick($event)"
|
|
331
477
|
></co-checkout-relation-suggestions-list>
|
|
332
478
|
</div>
|
|
479
|
+
<co-dialog *ngIf="showCreateAddressDialog">
|
|
480
|
+
<co-relation-address
|
|
481
|
+
(saveClick)="saveNewAddress($event)"
|
|
482
|
+
(cancelClick)="showCreateAddressDialog = false"
|
|
483
|
+
></co-relation-address>
|
|
484
|
+
</co-dialog>
|
|
485
|
+
<co-dialog *ngIf="showSelectAddressDialog && addressToEdit">
|
|
486
|
+
<co-relation-address
|
|
487
|
+
[address]="addressToEdit"
|
|
488
|
+
(saveClick)="saveAddress($event)"
|
|
489
|
+
(cancelClick)="showSelectAddressDialog = false"
|
|
490
|
+
></co-relation-address>
|
|
491
|
+
</co-dialog>
|
|
333
492
|
`,
|
|
334
493
|
providers: [
|
|
335
494
|
FormMasterService
|
|
@@ -351,6 +510,12 @@ CheckoutOverviewRelationEditComponent.decorators = [
|
|
|
351
510
|
state("void", style({ transform: "translateX(100%)" })),
|
|
352
511
|
state("*", style({ transform: "translateX(0)" })),
|
|
353
512
|
transition("void <=> *", animate("200ms ease-in-out"))
|
|
513
|
+
]),
|
|
514
|
+
trigger("showHideInvoiceAddress", [
|
|
515
|
+
state("void", style({ height: 0, opacity: 0 })),
|
|
516
|
+
state("*", style({ height: "*", opacity: 1 })),
|
|
517
|
+
transition("void => *", animate("200ms ease-in-out")),
|
|
518
|
+
transition("* => void", animate("200ms ease-out"))
|
|
354
519
|
])
|
|
355
520
|
],
|
|
356
521
|
encapsulation: ViewEncapsulation.None
|
|
@@ -358,14 +523,16 @@ CheckoutOverviewRelationEditComponent.decorators = [
|
|
|
358
523
|
];
|
|
359
524
|
CheckoutOverviewRelationEditComponent.ctorParameters = () => [
|
|
360
525
|
{ type: TransactionService },
|
|
361
|
-
{ type: FormMasterService }
|
|
526
|
+
{ type: FormMasterService },
|
|
527
|
+
{ type: BusinessObjectFactory }
|
|
362
528
|
];
|
|
363
529
|
CheckoutOverviewRelationEditComponent.propDecorators = {
|
|
364
530
|
relationForm: [{ type: ViewChild, args: [FormComponent, { static: true },] }],
|
|
365
531
|
relation: [{ type: Input }],
|
|
532
|
+
deliveryOptionsRequest: [{ type: Input }],
|
|
366
533
|
validSubmit: [{ type: Output }],
|
|
367
534
|
invalidSubmit: [{ type: Output }],
|
|
368
535
|
relationChange: [{ type: Output }],
|
|
369
536
|
showClass: [{ type: HostBinding, args: ["class.co-checkout-overview-relation-edit",] }]
|
|
370
537
|
};
|
|
371
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQtb3ZlcnZpZXctcmVsYXRpb24tZWRpdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL2NvbXBvbmVudC9jaGVja291dC9jaGVja291dC1vdmVydmlldy1yZWxhdGlvbi1lZGl0L2NoZWNrb3V0LW92ZXJ2aWV3LXJlbGF0aW9uLWVkaXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFeEgsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sMERBQTBELENBQUM7QUFFOUYsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sNkRBQTZELENBQUM7QUFDOUYsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdEQUF3RCxDQUFDO0FBQ3JGLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxnRUFBZ0UsQ0FBQztBQUN0RixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSw2REFBNkQsQ0FBQztBQUM3RixPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sdURBQXVELENBQUM7QUFFbEYsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHNEQUFzRCxDQUFDO0FBQ2hGLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLDREQUE0RCxDQUFDO0FBQy9GLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0scURBQXFELENBQUM7QUFDbEYsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLG1EQUFtRCxDQUFDO0FBRzlF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RSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7WUExS08sa0JBQWtCO1lBVWxCLGlCQUFpQjs7OzJCQWtLdEIsU0FBUyxTQUFDLGFBQWEsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUM7dUJBR3ZDLEtBQUs7MEJBUUwsTUFBTTs0QkFHTixNQUFNOzZCQUdOLE1BQU07d0JBR04sV0FBVyxTQUFDLDBDQUEwQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1JlbGF0aW9uQW55VHlwZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZWxhdGlvbi1hbnktdHlwZVwiO1xuaW1wb3J0IHtOVUxMX1JFTEFUSU9OX09CSkVDVH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9udWwtcmVsYXRpb24tb2JqZWN0XCI7XG5pbXBvcnQge0N1c3RvbWVyRnVsbE9iamVjdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jdXN0b21lci1mdWxsLW9iamVjdC5ib1wiO1xuaW1wb3J0IHtDb21tdW5pY2F0aW9uVHlwZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL2NvbW11bmljYXRpb24tdHlwZS5lbnVtXCI7XG5pbXBvcnQge0NvbnRhY3RPcHRpb259IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY29udGFjdC1vcHRpb24uYm9cIjtcbmltcG9ydCB7aXNOaWxsfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL3V0aWxzL2Z1bmN0aW9uL2lzLW5pbGwuZnVuY3Rpb25cIjtcbmltcG9ydCB7UmVsYXRpb25OYW1lS2luZH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3JlbGF0aW9uLW5hbWUta2luZC5lbnVtXCI7XG5pbXBvcnQge0FkZHJlc3NUeXBlfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vYWRkcmVzcy10eXBlLmVudW1cIjtcbmltcG9ydCB7UmVsYXRpb25Qcml2YWN5U2V0dGluZ30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZWxhdGlvbi1wcml2YWN5LXNldHRpbmcuYm9cIjtcbmltcG9ydCB7R2VuZGVyVHlwZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL2dlbmRlci10eXBlLmVudW1cIjtcbmltcG9ydCB7VHJhbnNhY3Rpb25TZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZS90cmFuc2FjdGlvbi5zZXJ2aWNlXCI7XG5pbXBvcnQge0J1c2luZXNzT2JqZWN0VXRpbHN9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvdXRpbHMvYnVzaW5lc3Mtb2JqZWN0LXV0aWxzXCI7XG5pbXBvcnQge0Zvcm1Db21wb25lbnR9IGZyb20gXCJAY29saWpuaXQvY29yZWNvbXBvbmVudHNfdjEyXCI7XG5pbXBvcnQge0Z1bmN0aW9uVXRpbHN9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvdXRpbHMvZnVuY3Rpb24tdXRpbHNcIjtcbmltcG9ydCB7T2JqZWN0VXRpbHN9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvdXRpbHMvb2JqZWN0LXV0aWxzXCI7XG5pbXBvcnQge1JlbGF0aW9uTGlzdE9iamVjdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZWxhdGlvbi1saXN0LW9iamVjdC5ib1wiO1xuaW1wb3J0IHtSZWxhdGlvblJlcXVlc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcmVsYXRpb24tcmVxdWVzdFwiO1xuaW1wb3J0IHtBZGRyZXNzfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2FkZHJlc3MuYm9cIjtcbmltcG9ydCB7YW5pbWF0ZSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyfSBmcm9tIFwiQGFuZ3VsYXIvYW5pbWF0aW9uc1wiO1xuaW1wb3J0IHtGb3JtR3JvdXB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHtGb3JtTWFzdGVyU2VydmljZX0gZnJvbSBcIkBjb2xpam5pdC9jb3JlY29tcG9uZW50c192MTJcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImNvLWNoZWNrb3V0LW92ZXJ2aWV3LXJlbGF0aW9uLWVkaXRcIixcbiAgdGVtcGxhdGU6IGBcbiAgICA8Y28tZm9ybT5cbiAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1mb3JtLXdyYXBwZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWxhYmVsLWNvbHVtblwiPlxuICAgICAgICAgIDxzcGFuPjAxPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBbdGV4dENvbnRlbnRdPVwiJ1BFUlNPTkFMX0RBVEEnIHwgbG9jYWxpemVcIj48L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1jb2x1bW5cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3dcIj5cbiAgICAgICAgICAgIDxjby1pbnB1dC1yYWRpby1idXR0b24gY2xhc3M9XCJkZWZhdWx0LXdpZHRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiJ3R5cGUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidQUklWQVRFX1BFUlNPTicgfCBsb2NhbGl6ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJyZWxUeXBlLlByaXZhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJyZWxhdGlvbi50eXBlID09PSByZWxUeXBlLlByaXZhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiY2hhbmdlUmVsYXRpb25UeXBlKHJlbFR5cGUuUHJpdmF0ZSlcIlxuICAgICAgICAgICAgPjwvY28taW5wdXQtcmFkaW8tYnV0dG9uPlxuICAgICAgICAgICAgPGNvLWlucHV0LXJhZGlvLWJ1dHRvbiBjbGFzcz1cImRlZmF1bHQtd2lkdGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCIndHlwZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ0NPTVBBTlknIHwgbG9jYWxpemVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwicmVsVHlwZS5Db21wYW55XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwicmVsYXRpb24udHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInJlbGF0aW9uLnR5cGUgPT09IHJlbFR5cGUuQ29tcGFueVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJjaGFuZ2VSZWxhdGlvblR5cGUocmVsVHlwZS5Db21wYW55KVwiXG4gICAgICAgICAgICA+PC9jby1pbnB1dC1yYWRpby1idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICA8cmVsYXRpb24tY3VzdG9tZXItZ3JvdXBzIFsobW9kZWwpXT1cInJlbGF0aW9uLmN1c3RvbWVyR3JvdXBcIiByZXF1aXJlZD48L3JlbGF0aW9uLWN1c3RvbWVyLWdyb3Vwcz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwicmVsYXRpb24udHlwZSA9PT0gcmVsVHlwZS5Qcml2YXRlXCIgY2xhc3M9XCJjb2xsYXBzZWFibGVcIiBAc2hvd0hpZGVQcml2YXRlUmVsYXRpb25GaWVsZHM+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3dcIj5cbiAgICAgICAgICAgICAgPGNvLWlucHV0LXRleHRcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrb3V0LWZpcnN0LW5hbWVcIlxuICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cInJlbGF0aW9uLmZpcnN0TmFtZVwiXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidGSVJTVF9OQU1FJyB8IGxvY2FsaXplXCJcbiAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiZmlyc3ROYW1lQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgPjwvY28taW5wdXQtdGV4dD5cbiAgICAgICAgICAgICAgPGNvLWlucHV0LXRleHRcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrb3V0LXByZWZpeC1uYW1lIGRlZmF1bHQtd2lkdGhcIlxuICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cInJlbGF0aW9uLnByZWZpeFwiXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidQUkVGSVgnIHwgbG9jYWxpemVcIlxuICAgICAgICAgICAgICA+PC9jby1pbnB1dC10ZXh0PlxuICAgICAgICAgICAgICA8Y28taW5wdXQtdGV4dFxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tvdXQtbGFzdC1uYW1lXCJcbiAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJyZWxhdGlvbi5mYW1pbHlOYW1lXCJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0xBU1RfTkFNRScgfCBsb2NhbGl6ZVwiXG4gICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImZhbWlseU5hbWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIj48L2NvLWlucHV0LXRleHQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICA8Y28taW5wdXQtcmFkaW8tYnV0dG9uIGNsYXNzPVwiZGVmYXVsdC13aWR0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiJ2dlbmRlcidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInTUFMRScgfCBsb2NhbGl6ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImdlbmRlclR5cGUuTWFsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwicmVsYXRpb24uZ2VuZGVyID09PSBnZW5kZXJUeXBlLk1hbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJjaGFuZ2VHZW5kZXJUeXBlKGdlbmRlclR5cGUuTWFsZSlcIlxuICAgICAgICAgICAgICA+PC9jby1pbnB1dC1yYWRpby1idXR0b24+XG4gICAgICAgICAgICAgIDxjby1pbnB1dC1yYWRpby1idXR0b24gY2xhc3M9XCJkZWZhdWx0LXdpZHRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCInZ2VuZGVyJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidGRU1BTEUnIHwgbG9jYWxpemUgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZ2VuZGVyVHlwZS5GZW1hbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInJlbGF0aW9uLmdlbmRlciA9PT0gZ2VuZGVyVHlwZS5GZW1hbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJjaGFuZ2VHZW5kZXJUeXBlKGdlbmRlclR5cGUuRmVtYWxlKVwiXG4gICAgICAgICAgICAgID48L2NvLWlucHV0LXJhZGlvLWJ1dHRvbj5cbiAgICAgICAgICAgICAgPGNvLWlucHV0LXJhZGlvLWJ1dHRvbiBjbGFzcz1cImRlZmF1bHQtd2lkdGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cIidnZW5kZXInXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ1VOS05PV04nIHwgbG9jYWxpemVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJnZW5kZXJUeXBlLlVuc3BlY2lmaWVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJyZWxhdGlvbi5nZW5kZXIgPT09IGdlbmRlclR5cGUuVW5zcGVjaWZpZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJjaGFuZ2VHZW5kZXJUeXBlKGdlbmRlclR5cGUuVW5zcGVjaWZpZWQpXCJcbiAgICAgICAgICAgICAgPjwvY28taW5wdXQtcmFkaW8tYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3dcIj5cbiAgICAgICAgICAgICAgPGNvLWlucHV0LWRhdGUgW3BsYWNlaG9sZGVyXT1cIidEQVRFX09GX0JJUlRIJyB8IGxvY2FsaXplIFwiIFsobW9kZWwpXT1cImRhdGVPZkJpcnRoXCIgW3JlcXVpcmVkXT1cInRydWVcIj48L2NvLWlucHV0LWRhdGU+XG4gICAgICAgICAgICAgIDxjby1pbnB1dC10ZXh0IFsobW9kZWwpXT1cInBob25lTnVtYmVyLnZhbHVlXCIgW3BsYWNlaG9sZGVyXT1cIidQSE9ORV9OTycgfCBsb2NhbGl6ZSBcIiBbcmVxdWlyZWRdPVwidHJ1ZVwiPjwvY28taW5wdXQtdGV4dD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJyZWxhdGlvbj8udHlwZSA9PT0gcmVsVHlwZS5Db21wYW55XCIgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvdyBjb2xsYXBzZWFibGVcIiBAc2hvd0hpZGVDb21wYW55UmVsYXRpb25GaWVsZHM+XG4gICAgICAgICAgICA8Y28taW5wdXQtdGV4dCBbKG1vZGVsKV09XCJyZWxhdGlvbi5mYW1pbHlOYW1lXCIgW3BsYWNlaG9sZGVyXT1cIidDT01QQU5ZX05BTUUnIHwgbG9jYWxpemVcIiBbcmVxdWlyZWRdPVwidHJ1ZVwiPjwvY28taW5wdXQtdGV4dD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1sYWJlbC1jb2x1bW5cIj5cbiAgICAgICAgICA8c3Bhbj4wMjwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgW3RleHRDb250ZW50XT1cIidERUxJVkVSWV9BRERSRVNTJyB8IGxvY2FsaXplXCI+PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtY29sdW1uXCI+XG4gICAgICAgICAgPGNvLXJlbGF0aW9uLWFkZHJlc3MgW2FkZHJlc3NdPVwiZWRpdEZpcnN0QWRkcmVzc1wiIFtzaG93QnV0dG9uc109XCJmYWxzZVwiPjwvY28tcmVsYXRpb24tYWRkcmVzcz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1sYWJlbC1jb2x1bW5cIj5cbiAgICAgICAgICA8c3Bhbj4wMzwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgW3RleHRDb250ZW50XT1cIidMT0dJTl9ERVRBSUxTJyB8IGxvY2FsaXplXCI+PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWwtZGVzY3JpcHRpb25cIiBbdGV4dENvbnRlbnRdPVwiJ0FDQ09VTlRfRVhQTEFOQVRJT04nIHwgbG9jYWxpemVcIj48L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1jb2x1bW5cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3dcIj5cbiAgICAgICAgICAgIDxjby1pbnB1dC10ZXh0IFsobW9kZWwpXT1cImVtYWlsQWRkcmVzcy52YWx1ZVwiIFtwbGFjZWhvbGRlcl09XCInRU1BSUxfQUREUkVTUycgfCBsb2NhbGl6ZSBcIiBbdHlwZV09XCInZW1haWwnXCIgW3JlcXVpcmVkXT1cInRydWVcIj48L2NvLWlucHV0LXRleHQ+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIiFhcHBsaWNhdGlvblVzZXJcIiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICA8Y28taW5wdXQtdGV4dCBbKG1vZGVsKV09XCJhY2NvdW50UGFzc3dvcmRcIiBbcGxhY2Vob2xkZXJdPVwiJ1BBU1NXT1JEJyB8IGxvY2FsaXplIFwiIFt0eXBlXT1cIidwYXNzd29yZCdcIiBbcmVxdWlyZWRdPVwidHJ1ZVwiPjwvY28taW5wdXQtdGV4dD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYXBwbGljYXRpb25Vc2VyXCIgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgPGNvLWlucHV0LWNoZWNrYm94IFtsYWJlbF09XCInSU5WSVRFX1RPX0FDQ09VTlQnIHwgbG9jYWxpemVcIiBbKG1vZGVsKV09XCJpbnZpdGVUb0FjY291bnRcIj48L2NvLWlucHV0LWNoZWNrYm94PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWxhYmVsLWNvbHVtblwiPlxuICAgICAgICAgIDxzcGFuPjA0PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBbdGV4dENvbnRlbnRdPVwiJ1BSSVZBQ1lfUFJFRkVSRU5DRVMnIHwgbG9jYWxpemVcIj48L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1jb2x1bW5cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidHdvLWNvbHVtbi1ncmlkXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwcml2YWN5U2V0dGluZyBvZiBwcml2YWN5U2V0dGluZ3NcIj5cbiAgICAgICAgICAgICAgPGNvLWlucHV0LWNoZWNrYm94IGNsYXNzPVwiZmlyc3QtY29sdW1uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJwcml2YWN5U2V0dGluZy5kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbW9kZWxdPVwiaXNTaGFyZWQocHJpdmFjeVNldHRpbmcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJjaGFuZ2VQcml2YWN5U2V0dGluZyhwcml2YWN5U2V0dGluZywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgID48L2NvLWlucHV0LWNoZWNrYm94PlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlY29uZC1jb2x1bW5cIiBbdGV4dENvbnRlbnRdPVwicHJpdmFjeVNldHRpbmcuZXhwbGFuYXRpb25cIj48L3NwYW4+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2NvLWZvcm0+XG5cbiAgICA8ZGl2IGNsYXNzPVwic3VnZ2VzdGlvbnMtc2lkZWJhclwiICpuZ0lmPVwic2hvd1JlbGF0aW9uU2lkZWJhclwiIEBzaG93SGlkZVNpZGViYXI+XG4gICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpb24tc2lkZWJhci1oZWFkZXJcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiY2hlY2tvdXQtbGFiZWwtaDNcIiBbdGV4dENvbnRlbnRdPVwiJ1NVR0dFU1RJT05TJyB8IGxvY2FsaXplXCI+PC9sYWJlbD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGNvLWNoZWNrb3V0LXJlbGF0aW9uLXN1Z2dlc3Rpb25zLWxpc3RcbiAgICAgICAgW3N1Z2dlc3Rpb25zXT1cInJlbGF0aW9uU3VnZ2VzdGlvbnNcIlxuICAgICAgICAoc3VnZ2VzdGlvblNlbGVjdGVkKT1cIm9uUmVsYXRpb25TdWdnZXN0aW9uQ2xpY2soJGV2ZW50KVwiXG4gICAgICA+PC9jby1jaGVja291dC1yZWxhdGlvbi1zdWdnZXN0aW9ucy1saXN0PlxuICAgIDwvZGl2PlxuICBgLFxuICBwcm92aWRlcnM6IFtcbiAgICBGb3JtTWFzdGVyU2VydmljZVxuICBdLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcihcInNob3dIaWRlUHJpdmF0ZVJlbGF0aW9uRmllbGRzXCIsIFtcbiAgICAgIHN0YXRlKFwidm9pZFwiLCBzdHlsZSh7aGVpZ2h0OiAwfSkpLFxuICAgICAgc3RhdGUoXCIqXCIsIHN0eWxlKHtoZWlnaHQ6IFwiKlwifSkpLFxuICAgICAgdHJhbnNpdGlvbihcInZvaWQgPT4gKlwiLCBhbmltYXRlKFwiMjAwbXMgZWFzZS1pbi1vdXRcIikpLFxuICAgICAgdHJhbnNpdGlvbihcIiogPT4gdm9pZFwiLCBhbmltYXRlKFwiMjAwbXMgZWFzZS1vdXRcIikpXG4gICAgXSksXG4gICAgdHJpZ2dlcihcInNob3dIaWRlQ29tcGFueVJlbGF0aW9uRmllbGRzXCIsIFtcbiAgICAgIHN0YXRlKFwidm9pZFwiLCBzdHlsZSh7aGVpZ2h0OiAwfSkpLFxuICAgICAgc3RhdGUoXCIqXCIsIHN0eWxlKHtoZWlnaHQ6IFwiKlwifSkpLFxuICAgICAgdHJhbnNpdGlvbihcInZvaWQgPT4gKlwiLCBhbmltYXRlKFwiMjAwbXMgZWFzZS1pbi1vdXRcIikpLFxuICAgICAgdHJhbnNpdGlvbihcIiogPT4gdm9pZFwiLCBhbmltYXRlKFwiMjAwbXMgZWFzZS1vdXRcIikpXG4gICAgXSksXG4gICAgdHJpZ2dlcihcInNob3dIaWRlU2lkZWJhclwiLCBbXG4gICAgICBzdGF0ZShcInZvaWRcIiwgc3R5bGUoe3RyYW5zZm9ybTogXCJ0cmFuc2xhdGVYKDEwMCUpXCJ9KSksXG4gICAgICBzdGF0ZShcIipcIiwgc3R5bGUoe3RyYW5zZm9ybTogXCJ0cmFuc2xhdGVYKDApXCJ9KSksXG4gICAgICB0cmFuc2l0aW9uKFwidm9pZCA8PT4gKlwiLCBhbmltYXRlKFwiMjAwbXMgZWFzZS1pbi1vdXRcIikpXG4gICAgXSlcbiAgXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBDaGVja291dE92ZXJ2aWV3UmVsYXRpb25FZGl0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQFZpZXdDaGlsZChGb3JtQ29tcG9uZW50LCB7c3RhdGljOiB0cnVlfSlcbiAgcHVibGljIHJlbGF0aW9uRm9ybTogRm9ybUNvbXBvbmVudDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHJlbGF0aW9uKHZhbHVlOiBSZWxhdGlvbkFueVR5cGUpIHtcbiAgICB0aGlzLl9yZWxhdGlvbiA9IHZhbHVlO1xuXG4gICAgdGhpcy5wcmVwYXJlUHJpbWFyeUVtYWlsKCk7XG4gICAgdGhpcy5wcmVwYXJlUHJpbWFyeVBob25lKCk7XG4gIH1cblxuICBAT3V0cHV0KClcbiAgcHVibGljIHZhbGlkU3VibWl0OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBpbnZhbGlkU3VibWl0OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyByZWxhdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPFJlbGF0aW9uQW55VHlwZT4gPSBuZXcgRXZlbnRFbWl0dGVyPFJlbGF0aW9uQW55VHlwZT4oKTtcblxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5jby1jaGVja291dC1vdmVydmlldy1yZWxhdGlvbi1lZGl0XCIpXG4gIHB1YmxpYyBzaG93Q2xhc3MoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwdWJsaWMgZm9ybVJlbGF0aW9uOiBGb3JtR3JvdXA7XG5cbiAgcHVibGljIGRhdGVPZkJpcnRoOiBEYXRlO1xuICBwdWJsaWMgYWNjb3VudFBhc3N3b3JkOiBzdHJpbmcgPSBcIlwiO1xuICBwdWJsaWMgaGlkZTogYm9vbGVhbiA9IHRydWU7XG4gIHB1YmxpYyBnZW5kZXI6IEdlbmRlclR5cGUgPSBHZW5kZXJUeXBlLlVuc3BlY2lmaWVkO1xuICBwdWJsaWMgZW1haWxBZGRyZXNzOiBDb250YWN0T3B0aW9uID0gbmV3IENvbnRhY3RPcHRpb24oKTtcbiAgcHVibGljIHBob25lTnVtYmVyOiBDb250YWN0T3B0aW9uID0gbmV3IENvbnRhY3RPcHRpb24oKTtcbiAgcHVibGljIHByaXZhY3lTZXR0aW5nczogUmVsYXRpb25Qcml2YWN5U2V0dGluZ1tdO1xuICBwdWJsaWMgcmVsYXRpb25TdWdnZXN0aW9uczogUmVsYXRpb25MaXN0T2JqZWN0W10gPSBbXTtcbiAgcHVibGljIHNob3dSZWxhdGlvblNpZGViYXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGludml0ZVRvQWNjb3VudDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyByZWFkb25seSByZWxUeXBlOiB0eXBlb2YgUmVsYXRpb25OYW1lS2luZCA9IFJlbGF0aW9uTmFtZUtpbmQ7XG4gIHB1YmxpYyByZWFkb25seSBnZW5kZXJUeXBlOiB0eXBlb2YgR2VuZGVyVHlwZSA9IEdlbmRlclR5cGU7XG5cbiAgcHVibGljIGdldCByZWxhdGlvbigpOiBSZWxhdGlvbkFueVR5cGUge1xuICAgIHJldHVybiB0aGlzLl9yZWxhdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVsYXRpb25Bc0N1c3RvbWVyKCk6IEN1c3RvbWVyRnVsbE9iamVjdCB7XG4gICAgcmV0dXJuIHRoaXMuX3JlbGF0aW9uICYmIHRoaXMuX3JlbGF0aW9uIGFzIEN1c3RvbWVyRnVsbE9iamVjdDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZWRpdEZpcnN0QWRkcmVzcygpOiBBZGRyZXNzIHtcbiAgICBjb25zdCBmaXJzdEFkZHJlc3M6IEFkZHJlc3MgPSB0aGlzLl9zZXJ2aWNlLmdldEZpcnN0QWRkcmVzcyh0aGlzLnJlbGF0aW9uKTtcbiAgICBpZiAoZmlyc3RBZGRyZXNzKSB7XG4gICAgICByZXR1cm4gZmlyc3RBZGRyZXNzO1xuICAgIH0gZWxzZSBpZiAodGhpcy5fcmVsYXRpb24pIHtcbiAgICAgIGNvbnN0IGFkZHJlc3M6IEFkZHJlc3MgPSBuZXcgQWRkcmVzcygpO1xuICAgICAgYWRkcmVzcy5hZGRyZXNzVHlwZSA9IEFkZHJlc3NUeXBlLkRlbGl2ZXJ5QWRkcmVzcztcbiAgICAgIGFkZHJlc3Muc3RhcnREYXRlID0gbmV3IERhdGUoKTtcbiAgICAgIGFkZHJlc3Muc2VxdWVuY2UgPSB0aGlzLl9yZWxhdGlvbi5nZXROZXh0QWRkcmVzc1NlcXVlbmNlKCk7XG4gICAgICB0aGlzLl9yZWxhdGlvbi5hZGRyZXNzZXMucHVzaChhZGRyZXNzKTtcbiAgICAgIHJldHVybiBhZGRyZXNzO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXBwbGljYXRpb25Vc2VyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zZXJ2aWNlLmFwcGxpY2F0aW9uVXNlcjtcbiAgfVxuXG4gIHByaXZhdGUgX3JlbGF0aW9uOiBSZWxhdGlvbkFueVR5cGUgPSBOVUxMX1JFTEFUSU9OX09CSkVDVDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9zZXJ2aWNlOiBUcmFuc2FjdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfZm9ybU1hc3RlcjogRm9ybU1hc3RlclNlcnZpY2VcbiAgKSB7XG4gIH1cblxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLl9pbml0Rm9ybSgpO1xuICAgIHRoaXMuX3JlbGF0aW9uLnR5cGUgPSB0aGlzLnJlbFR5cGUuUHJpdmF0ZTtcbiAgICB0aGlzLl9yZWxhdGlvbi5nZW5kZXIgPSB0aGlzLmdlbmRlcjtcbiAgICBhd2FpdCB0aGlzLmxvYWRQcml2YWN5U2V0dGluZ3MoKTtcbiAgfVxuXG4gIHB1YmxpYyBzdWJtaXQoKTogYm9vbGVhbiB7XG4gICAgLy8gcmV0dXJuIHRoaXMucmVsYXRpb25Gb3JtLnN1Ym1pdCgpO1xuICAgIHJldHVybiB0aGlzLl9mb3JtTWFzdGVyLnN1Ym1pdFNsYXZlcygpO1xuICB9XG5cbiAgcHVibGljIHByZXBhcmVQcmltYXJ5RW1haWwoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3JlbGF0aW9uKSB7XG4gICAgICB0aGlzLmVtYWlsQWRkcmVzcyA9IHRoaXMuX3JlbGF0aW9uLmdldExvd2VzdFNlcXVlbmNlT2ZDb250YWN0T3B0aW9uc1dpdGhUeXBlKENvbW11bmljYXRpb25UeXBlLkVtYWlsKTtcbiAgICAgIGlmIChpc05pbGwodGhpcy5lbWFpbEFkZHJlc3MpKSB7XG4gICAgICAgIHRoaXMuZW1haWxBZGRyZXNzID0gbmV3IENvbnRhY3RPcHRpb24oKTtcbiAgICAgICAgdGhpcy5lbWFpbEFkZHJlc3MudHlwZSA9IENvbW11bmljYXRpb25UeXBlLkVtYWlsO1xuICAgICAgICB0aGlzLmVtYWlsQWRkcmVzcy5zZXF1ZW5jZSA9IDA7XG4gICAgICAgIHRoaXMuX3JlbGF0aW9uLmFkZENvbnRhY3RPcHRpb24odGhpcy5lbWFpbEFkZHJlc3MpO1xuICAgICAgfVxuICAgICAgLy8gaWYgKHRoaXMuX3RyYW5zYWN0aW9uU2VydmljZS5lbWFpbEFkZHJlc3MpIHtcbiAgICAgIC8vICAgdGhpcy5lbWFpbEFkZHJlc3MudmFsdWUgPSB0aGlzLl90cmFuc2FjdGlvblNlcnZpY2UuZW1haWxBZGRyZXNzO1xuICAgICAgLy8gfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBwcmVwYXJlUHJpbWFyeVBob25lKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9yZWxhdGlvbikge1xuICAgICAgdGhpcy5waG9uZU51bWJlciA9IHRoaXMuX3JlbGF0aW9uLmdldExvd2VzdFNlcXVlbmNlT2ZDb250YWN0T3B0aW9uc1dpdGhUeXBlKENvbW11bmljYXRpb25UeXBlLlRlbGVwaG9uZSk7XG4gICAgICBpZiAoaXNOaWxsKHRoaXMucGhvbmVOdW1iZXIpKSB7XG4gICAgICAgIHRoaXMucGhvbmVOdW1iZXIgPSBuZXcgQ29udGFjdE9wdGlvbigpO1xuICAgICAgICB0aGlzLnBob25lTnVtYmVyLnR5cGUgPSBDb21tdW5pY2F0aW9uVHlwZS5UZWxlcGhvbmU7XG4gICAgICAgIHRoaXMucGhvbmVOdW1iZXIuc2VxdWVuY2UgPSAwO1xuICAgICAgICB0aGlzLl9yZWxhdGlvbi5hZGRDb250YWN0T3B0aW9uKHRoaXMucGhvbmVOdW1iZXIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBsb2FkUHJpdmFjeVNldHRpbmdzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMucHJpdmFjeVNldHRpbmdzID0gYXdhaXQgdGhpcy5fc2VydmljZS5nZXRSZWxhdGlvblByaXZhY3lTZXR0aW5ncygpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGxvYWRNYXJrZXRpbmcoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5fc2VydmljZS5nZXRNYXJrZXRpbmdDb2RlcygpO1xuICB9XG5cbiAgcHVibGljIGlzU2hhcmVkKHJlbGF0aW9uUHJpdmFjeVNldHRpbmc6IFJlbGF0aW9uUHJpdmFjeVNldHRpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBvd25TZXR0aW5nOiBSZWxhdGlvblByaXZhY3lTZXR0aW5nID0gQnVzaW5lc3NPYmplY3RVdGlscy5GaW5kSXRlbUJ5SWQodGhpcy5yZWxhdGlvbkFzQ3VzdG9tZXIucmVsYXRpb25Qcml2YWN5U2V0dGluZ3MsIHJlbGF0aW9uUHJpdmFjeVNldHRpbmcuZ2V0SWQoKSk7XG4gICAgaWYgKG93blNldHRpbmcpIHtcbiAgICAgIHJldHVybiBvd25TZXR0aW5nLmFsbG93VG9TaGFyZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGNoYW5nZVJlbGF0aW9uVHlwZSh2YWx1ZTogUmVsYXRpb25OYW1lS2luZCk6IHZvaWQge1xuICAgIHRoaXMucmVsYXRpb24udHlwZSA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGNoYW5nZUdlbmRlclR5cGUodmFsdWU6IEdlbmRlclR5cGUpOiB2b2lkIHtcbiAgICB0aGlzLnJlbGF0aW9uLmdlbmRlciA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGZpcnN0TmFtZUNoYW5nZShmaXJzdE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9yZWxhdGlvbikge1xuICAgICAgdGhpcy5fcmVsYXRpb24uZmlyc3ROYW1lID0gZmlyc3ROYW1lO1xuICAgIH1cbiAgICB0aGlzLl9yZWxhdGlvbk5hbWVDaGFuZ2VIYW5kbGVyLmNhbGwodGhpcyk7XG4gIH1cblxuICBwdWJsaWMgZmFtaWx5TmFtZUNoYW5nZShmYW1pbHlOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fcmVsYXRpb24pIHtcbiAgICAgIHRoaXMuX3JlbGF0aW9uLmZhbWlseU5hbWUgPSBmYW1pbHlOYW1lO1xuICAgIH1cbiAgICB0aGlzLl9yZWxhdGlvbk5hbWVDaGFuZ2VIYW5kbGVyLmNhbGwodGhpcyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgb25SZWxhdGlvblN1Z2dlc3Rpb25DbGljayhyZWxhdGlvblN1Z2dlc3RlZDogUmVsYXRpb25MaXN0T2JqZWN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHJlbGF0aW9uU3VnZ2VzdGVkKSB7XG4gICAgICB0aGlzLmhpZGVTaWRlYmFyKCk7XG4gICAgICAvLyBhd2FpdCB0aGlzLl9zZXJ2aWNlLmFkZFJlbGF0aW9uVG9UcmFuc2FjdGlvbihyZWxhdGlvblN1Z2dlc3RlZC5yZWxhdGlvbklkKTtcbiAgICAgIHRoaXMucmVsYXRpb24gPSBhd2FpdCB0aGlzLl9zZXJ2aWNlLmdldEN1c3RvbWVyRnVsbE9iamVjdEJ5UmVsYXRpb25JZChyZWxhdGlvblN1Z2dlc3RlZC5yZWxhdGlvbklkKTtcbiAgICAgIHRoaXMucmVsYXRpb25DaGFuZ2UubmV4dCh0aGlzLnJlbGF0aW9uKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2hhbmdlUHJpdmFjeVNldHRpbmcocmVsYXRpb25Qcml2YWN5U2V0dGluZzogUmVsYXRpb25Qcml2YWN5U2V0dGluZywgdmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBvd25TZXR0aW5nOiBSZWxhdGlvblByaXZhY3lTZXR0aW5nID0gQnVzaW5lc3NPYmplY3RVdGlscy5GaW5kSXRlbUJ5SWQodGhpcy5yZWxhdGlvbkFzQ3VzdG9tZXIucmVsYXRpb25Qcml2YWN5U2V0dGluZ3MsIHJlbGF0aW9uUHJpdmFjeVNldHRpbmcuZ2V0SWQoKSk7XG4gICAgaWYgKG93blNldHRpbmcpIHtcbiAgICAgIG93blNldHRpbmcuYWxsb3dUb1NoYXJlID0gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVsYXRpb25Bc0N1c3RvbWVyLnJlbGF0aW9uUHJpdmFjeVNldHRpbmdzLnB1c2gocmVsYXRpb25Qcml2YWN5U2V0dGluZyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNob3dTaWRlYmFyKCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd1JlbGF0aW9uU2lkZWJhciA9IHRydWU7XG4gIH1cblxuICBwdWJsaWMgaGlkZVNpZGViYXIoKTogdm9pZCB7XG4gICAgdGhpcy5zaG93UmVsYXRpb25TaWRlYmFyID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIF9pbml0Rm9ybSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWxhdGlvbkZvcm0pIHtcbiAgICAgIHRoaXMuZm9ybVJlbGF0aW9uID0gdGhpcy5yZWxhdGlvbkZvcm0uZm9ybUdyb3VwO1xuICAgIH1cbiAgfVxuXG4gIC8vIGZldGNoZXMgcmVsYXRpb24gc3VnZ2VzdGlvbnNcbiAgcHJpdmF0ZSBfcmVsYXRpb25OYW1lQ2hhbmdlSGFuZGxlcjogRnVuY3Rpb24gPSBGdW5jdGlvblV0aWxzLlRocm90dGxlKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVsYXRpb25OYW1lQ2hhbmdlZEhhbmRsZXJGbigpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gIH0sIDYwMCk7XG5cbiAgLy8gbG9hZCBzdWdnZXN0aW9uc1xuICBwcml2YXRlIGFzeW5jIF9yZWxhdGlvbk5hbWVDaGFuZ2VkSGFuZGxlckZuKCk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgZmlyc3ROYW1lOiBzdHJpbmcgPSBPYmplY3RVdGlscy5WYWx1ZU9yRGVmYXVsdCh0aGlzLl9yZWxhdGlvbi5maXJzdE5hbWUpO1xuICAgIGNvbnN0IHNlY29uZE5hbWU6IHN0cmluZyA9IE9iamVjdFV0aWxzLlZhbHVlT3JEZWZhdWx0KHRoaXMuX3JlbGF0aW9uLmZhbWlseU5hbWUpO1xuXG4gICAgaWYgKCFmaXJzdE5hbWUgJiYgIXNlY29uZE5hbWUpIHtcbiAgICAgIHRoaXMucmVsYXRpb25TdWdnZXN0aW9ucyA9IFtdO1xuICAgICAgdGhpcy5oaWRlU2lkZWJhcigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJlbGF0aW9uUmVxdWVzdDogUmVsYXRpb25SZXF1ZXN0ID0ge307XG4gICAgcmVsYXRpb25SZXF1ZXN0LnJlbGF0aW9uVHlwZSA9IHRoaXMuX3JlbGF0aW9uLnJlbGF0aW9uVHlwZTtcbiAgICBpZiAoZmlyc3ROYW1lKSB7XG4gICAgICByZWxhdGlvblJlcXVlc3QuZmlyc3ROYW1lID0gZmlyc3ROYW1lO1xuICAgIH1cblxuICAgIGlmIChzZWNvbmROYW1lKSB7XG4gICAgICByZWxhdGlvblJlcXVlc3QuZmFtaWx5TmFtZSA9IHNlY29uZE5hbWU7XG4gICAgfVxuXG4gICAgdGhpcy5zaG93U2lkZWJhcigpO1xuICAgIHRoaXMucmVsYXRpb25TdWdnZXN0aW9ucyA9IGF3YWl0IHRoaXMuX3NlcnZpY2UuZ2V0UmVsYXRpb25MaXN0T2JqZWN0cyhyZWxhdGlvblJlcXVlc3QpO1xuICB9XG59XG4iXX0=
|
|
538
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQtb3ZlcnZpZXctcmVsYXRpb24tZWRpdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL2NvbXBvbmVudC9jaGVja291dC9jaGVja291dC1vdmVydmlldy1yZWxhdGlvbi1lZGl0L2NoZWNrb3V0LW92ZXJ2aWV3LXJlbGF0aW9uLWVkaXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFeEgsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sMERBQTBELENBQUM7QUFFOUYsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sNkRBQTZELENBQUM7QUFDOUYsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdEQUF3RCxDQUFDO0FBQ3JGLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxnRUFBZ0UsQ0FBQztBQUN0RixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSw2REFBNkQsQ0FBQztBQUM3RixPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sdURBQXVELENBQUM7QUFFbEYsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHNEQUFzRCxDQUFDO0FBQ2hGLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLDREQUE0RCxDQUFDO0FBQy9GLE9BQU8sRUFBQyxhQUFhLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUM5RSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0scURBQXFELENBQUM7QUFDbEYsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLG1EQUFt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Q0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7cUJBQ25ELENBQUM7aUJBQ0g7Z0JBQ0QsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7YUFDdEM7OztZQXhQTyxrQkFBa0I7WUFFSCxpQkFBaUI7WUFRaEMscUJBQXFCOzs7MkJBa1AxQixTQUFTLFNBQUMsYUFBYSxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQzt1QkFHdkMsS0FBSztxQ0FRTCxLQUFLOzBCQUdMLE1BQU07NEJBR04sTUFBTTs2QkFHTixNQUFNO3dCQUdOLFdBQVcsU0FBQywwQ0FBMEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtSZWxhdGlvbkFueVR5cGV9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcmVsYXRpb24tYW55LXR5cGVcIjtcbmltcG9ydCB7TlVMTF9SRUxBVElPTl9PQkpFQ1R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvbnVsLXJlbGF0aW9uLW9iamVjdFwiO1xuaW1wb3J0IHtDdXN0b21lckZ1bGxPYmplY3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY3VzdG9tZXItZnVsbC1vYmplY3QuYm9cIjtcbmltcG9ydCB7Q29tbXVuaWNhdGlvblR5cGV9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS9jb21tdW5pY2F0aW9uLXR5cGUuZW51bVwiO1xuaW1wb3J0IHtDb250YWN0T3B0aW9ufSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NvbnRhY3Qtb3B0aW9uLmJvXCI7XG5pbXBvcnQge2lzTmlsbH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC91dGlscy9mdW5jdGlvbi9pcy1uaWxsLmZ1bmN0aW9uXCI7XG5pbXBvcnQge1JlbGF0aW9uTmFtZUtpbmR9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS9yZWxhdGlvbi1uYW1lLWtpbmQuZW51bVwiO1xuaW1wb3J0IHtBZGRyZXNzVHlwZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL2FkZHJlc3MtdHlwZS5lbnVtXCI7XG5pbXBvcnQge1JlbGF0aW9uUHJpdmFjeVNldHRpbmd9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcmVsYXRpb24tcHJpdmFjeS1zZXR0aW5nLmJvXCI7XG5pbXBvcnQge0dlbmRlclR5cGV9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS9nZW5kZXItdHlwZS5lbnVtXCI7XG5pbXBvcnQge1RyYW5zYWN0aW9uU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24uc2VydmljZVwiO1xuaW1wb3J0IHtCdXNpbmVzc09iamVjdFV0aWxzfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL3V0aWxzL2J1c2luZXNzLW9iamVjdC11dGlsc1wiO1xuaW1wb3J0IHtGb3JtQ29tcG9uZW50LCBGb3JtTWFzdGVyU2VydmljZX0gZnJvbSBcIkBjb2xpam5pdC9jb3JlY29tcG9uZW50c192MTJcIjtcbmltcG9ydCB7RnVuY3Rpb25VdGlsc30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC91dGlscy9mdW5jdGlvbi11dGlsc1wiO1xuaW1wb3J0IHtPYmplY3RVdGlsc30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC91dGlscy9vYmplY3QtdXRpbHNcIjtcbmltcG9ydCB7UmVsYXRpb25MaXN0T2JqZWN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3JlbGF0aW9uLWxpc3Qtb2JqZWN0LmJvXCI7XG5pbXBvcnQge1JlbGF0aW9uUmVxdWVzdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZWxhdGlvbi1yZXF1ZXN0XCI7XG5pbXBvcnQge0FkZHJlc3N9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvYWRkcmVzcy5ib1wiO1xuaW1wb3J0IHthbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXJ9IGZyb20gXCJAYW5ndWxhci9hbmltYXRpb25zXCI7XG5pbXBvcnQge0Zvcm1Hcm91cH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQge0J1c2luZXNzT2JqZWN0RmFjdG9yeX0gZnJvbSBcIi4uLy4uLy4uL2ZhY3RvcnkvYnVzaW5lc3Mtb2JqZWN0LWZhY3RvcnlcIjtcbmltcG9ydCB7Q291bnRyeX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jb3VudHJ5LmJvXCI7XG5pbXBvcnQge1NldFRyYW5zYWN0aW9uRGVsaXZlcnlPcHRpb25zUmVxdWVzdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9zZXQtdHJhbnNhY3Rpb24tZGVsaXZlcnktb3B0aW9ucy1yZXF1ZXN0LmJvXCI7XG5pbXBvcnQge0ljb259IGZyb20gXCIuLi8uLi8uLi9lbnVtL2ljb24uZW51bVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiY28tY2hlY2tvdXQtb3ZlcnZpZXctcmVsYXRpb24tZWRpdFwiLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJyZWxhdGlvbi1lZGl0LWNvbnRlbnRcIj5cbiAgICAgIDxjby1mb3JtPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZm9ybS13cmFwcGVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWxhYmVsLWNvbHVtblwiPlxuICAgICAgICAgICAgPHNwYW4+MDE8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgW3RleHRDb250ZW50XT1cIidQRVJTT05BTF9EQVRBJyB8IGxvY2FsaXplXCI+PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLWNvbHVtblwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgIDxjby1pbnB1dC1yYWRpby1idXR0b24gY2xhc3M9XCJkZWZhdWx0LXdpZHRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCIndHlwZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInUFJJVkFURV9QRVJTT04nIHwgbG9jYWxpemVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJyZWxUeXBlLlByaXZhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInJlbGF0aW9uLnR5cGUgPT09IHJlbFR5cGUuUHJpdmF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImNoYW5nZVJlbGF0aW9uVHlwZShyZWxUeXBlLlByaXZhdGUpXCJcbiAgICAgICAgICAgICAgPjwvY28taW5wdXQtcmFkaW8tYnV0dG9uPlxuICAgICAgICAgICAgICA8Y28taW5wdXQtcmFkaW8tYnV0dG9uIGNsYXNzPVwiZGVmYXVsdC13aWR0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiJ3R5cGUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ0NPTVBBTlknIHwgbG9jYWxpemVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJyZWxUeXBlLkNvbXBhbnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cInJlbGF0aW9uLnR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInJlbGF0aW9uLnR5cGUgPT09IHJlbFR5cGUuQ29tcGFueVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImNoYW5nZVJlbGF0aW9uVHlwZShyZWxUeXBlLkNvbXBhbnkpXCJcbiAgICAgICAgICAgICAgPjwvY28taW5wdXQtcmFkaW8tYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3dcIj5cbiAgICAgICAgICAgICAgPHJlbGF0aW9uLWN1c3RvbWVyLWdyb3VwcyBbKG1vZGVsKV09XCJyZWxhdGlvbi5jdXN0b21lckdyb3VwXCIgcmVxdWlyZWQ+PC9yZWxhdGlvbi1jdXN0b21lci1ncm91cHM+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJyZWxhdGlvbi50eXBlID09PSByZWxUeXBlLlByaXZhdGVcIiBjbGFzcz1cImNvbGxhcHNlYWJsZVwiIEBzaG93SGlkZVByaXZhdGVSZWxhdGlvbkZpZWxkcz5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgICAgPGNvLWlucHV0LXRleHRcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tvdXQtZmlyc3QtbmFtZVwiXG4gICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJyZWxhdGlvbi5maXJzdE5hbWVcIlxuICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidGSVJTVF9OQU1FJyB8IGxvY2FsaXplXCJcbiAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJmaXJzdE5hbWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAoYmx1cik9XCJjaGVja1Zpc2liaWxpdHlTdWdnZXN0aW9ucygpXCJcbiAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICA+PC9jby1pbnB1dC10ZXh0PlxuICAgICAgICAgICAgICAgIDxjby1pbnB1dC10ZXh0XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrb3V0LXByZWZpeC1uYW1lIGRlZmF1bHQtd2lkdGhcIlxuICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwicmVsYXRpb24ucHJlZml4XCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInUFJFRklYJyB8IGxvY2FsaXplXCJcbiAgICAgICAgICAgICAgICA+PC9jby1pbnB1dC10ZXh0PlxuICAgICAgICAgICAgICAgIDxjby1pbnB1dC10ZXh0XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrb3V0LWxhc3QtbmFtZVwiXG4gICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJyZWxhdGlvbi5mYW1pbHlOYW1lXCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInTEFTVF9OQU1FJyB8IGxvY2FsaXplXCJcbiAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJmYW1pbHlOYW1lQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgKGJsdXIpPVwiY2hlY2tWaXNpYmlsaXR5U3VnZ2VzdGlvbnMoKVwiXG4gICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiPjwvY28taW5wdXQtdGV4dD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICAgIDxjby1pbnB1dC1yYWRpby1idXR0b24gY2xhc3M9XCJkZWZhdWx0LXdpZHRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cIidnZW5kZXInXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInTUFMRScgfCBsb2NhbGl6ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZ2VuZGVyVHlwZS5NYWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInJlbGF0aW9uLmdlbmRlciA9PT0gZ2VuZGVyVHlwZS5NYWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJjaGFuZ2VHZW5kZXJUeXBlKGdlbmRlclR5cGUuTWFsZSlcIlxuICAgICAgICAgICAgICAgID48L2NvLWlucHV0LXJhZGlvLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8Y28taW5wdXQtcmFkaW8tYnV0dG9uIGNsYXNzPVwiZGVmYXVsdC13aWR0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCInZ2VuZGVyJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ0ZFTUFMRScgfCBsb2NhbGl6ZSBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImdlbmRlclR5cGUuRmVtYWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInJlbGF0aW9uLmdlbmRlciA9PT0gZ2VuZGVyVHlwZS5GZW1hbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImNoYW5nZUdlbmRlclR5cGUoZ2VuZGVyVHlwZS5GZW1hbGUpXCJcbiAgICAgICAgICAgICAgICA+PC9jby1pbnB1dC1yYWRpby1idXR0b24+XG4gICAgICAgICAgICAgICAgPGNvLWlucHV0LXJhZGlvLWJ1dHRvbiBjbGFzcz1cImRlZmF1bHQtd2lkdGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiJ2dlbmRlcidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidVTktOT1dOJyB8IGxvY2FsaXplXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJnZW5kZXJUeXBlLlVuc3BlY2lmaWVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInJlbGF0aW9uLmdlbmRlciA9PT0gZ2VuZGVyVHlwZS5VbnNwZWNpZmllZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiY2hhbmdlR2VuZGVyVHlwZShnZW5kZXJUeXBlLlVuc3BlY2lmaWVkKVwiXG4gICAgICAgICAgICAgICAgPjwvY28taW5wdXQtcmFkaW8tYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgICAgPGNvLWlucHV0LWRhdGUgW3BsYWNlaG9sZGVyXT1cIidEQVRFX09GX0JJUlRIJyB8IGxvY2FsaXplIFwiIFsobW9kZWwpXT1cImRhdGVPZkJpcnRoXCIgW3JlcXVpcmVkXT1cInRydWVcIj48L2NvLWlucHV0LWRhdGU+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicmVsYXRpb24/LnR5cGUgPT09IHJlbFR5cGUuQ29tcGFueVwiIGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3cgY29sbGFwc2VhYmxlXCIgQHNob3dIaWRlQ29tcGFueVJlbGF0aW9uRmllbGRzPlxuICAgICAgICAgICAgICA8Y28taW5wdXQtdGV4dCBbKG1vZGVsKV09XCJyZWxhdGlvbi5mYW1pbHlOYW1lXCIgW3BsYWNlaG9sZGVyXT1cIidDT01QQU5ZX05BTUUnIHwgbG9jYWxpemVcIiBbcmVxdWlyZWRdPVwidHJ1ZVwiPjwvY28taW5wdXQtdGV4dD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGNvLXJlbGF0aW9uLWFkZHJlc3MgW2FkZHJlc3NdPVwiZWRpdEZpcnN0QWRkcmVzc1wiIFtzaG93QnV0dG9uc109XCJmYWxzZVwiPjwvY28tcmVsYXRpb24tYWRkcmVzcz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1jb2x1bW5cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICA8Y28tY2Fyb3VzZWwtM2QgKm5nSWY9XCJyZWxhdGlvbi5hZGRyZXNzZXMgJiYgcmVsYXRpb24uYWRkcmVzc2VzLmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpbGVXaWR0aF09XCIyMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpbGVIZWlnaHRdPVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZEluZGV4XT1cImRlbGl2ZXJ5QWRkcmVzc0lkeFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5kZXhTZWxlY3RlZCk9XCJzZXRJbmRleERlbGl2ZXJ5QWRkcmVzcygkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgPGNvLXJlbGF0aW9uLWFkZHJlc3MtdGlsZSAjY2Fyb3VzZWxJdGVtICpuZ0Zvcj1cImxldCBhZGRyZXNzIG9mIHJlbGF0aW9uLmFkZHJlc3NlczsgbGV0IGluZGV4ID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FkZHJlc3NdPVwiYWRkcmVzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRdPVwiZGVsaXZlcnlBZGRyZXNzSWR4ID09PSBpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZWRpdEFkZHJlc3NDbGlja2VkKT1cImVkaXRBZGRyZXNzKCRldmVudClcIlxuICAgICAgICAgICAgICAgID48L2NvLXJlbGF0aW9uLWFkZHJlc3MtdGlsZT5cbiAgICAgICAgICAgICAgPC9jby1jYXJvdXNlbC0zZD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGlvbi1hZGRyZXNzLW5ld1wiPlxuICAgICAgICAgICAgICAgIDxpY29uIGNsYXNzPVwicmVsYXRpb24tYWRkcmVzcy1pY29uXCIgW2ljb25dPVwiaWNvbnMuQXJyb3dQb2ludFJpZ2h0XCI+PC9pY29uPlxuICAgICAgICAgICAgICAgIDxkaXYgW3RleHRDb250ZW50XT1cIidBRERSRVNTX0FERCcgfCBsb2NhbGl6ZVwiIChjbGljayk9XCJzaG93TmV3QWRkcmVzc0RpYWxvZygpXCI+PC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtbGFiZWwtY29sdW1uXCI+XG4gICAgICAgICAgICA8c3Bhbj4wMjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBbdGV4dENvbnRlbnRdPVwiJ0lOVk9JQ0VfQUREUkVTUycgfCBsb2NhbGl6ZVwiPjwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1jb2x1bW5cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICA8Y28taW5wdXQtY2hlY2tib3ggWyhtb2RlbCldPVwiaW52b2ljZUFkZHJlc3NTYW1lQXNEZWxpdmVyeUFkZHJlc3NcIiAobW9kZWxDaGFuZ2UpPVwiY2hlY2tTYW1lQWRkcmVzcygkZXZlbnQpXCIgW2xhYmVsXT1cIidTQU1FX0FTX0RFTElWRVJZJyB8IGxvY2FsaXplXCI+PC9jby1pbnB1dC1jaGVja2JveD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJ2aWV3LWRlbGl2ZXJ5LWludm9pY2UtYWRkcmVzc1wiICpuZ0lmPVwiIWludm9pY2VBZGRyZXNzU2FtZUFzRGVsaXZlcnlBZGRyZXNzXCIgQHNob3dIaWRlSW52b2ljZUFkZHJlc3M+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICAgIDxjby1jYXJvdXNlbC0zZCAqbmdJZj1cInJlbGF0aW9uLmFkZHJlc3NlcyAmJiByZWxhdGlvbi5hZGRyZXNzZXMubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aWxlV2lkdGhdPVwiMjAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpbGVIZWlnaHRdPVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkSW5kZXhdPVwiaW52b2ljZUFkZHJlc3NJZHhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5kZXhTZWxlY3RlZCk9XCJzZXRJbmRleEludm9pY2VBZGRyZXNzKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgIDxjby1yZWxhdGlvbi1hZGRyZXNzLXRpbGUgI2Nhcm91c2VsSXRlbSAqbmdGb3I9XCJsZXQgYWRkcmVzcyBvZiByZWxhdGlvbi5hZGRyZXNzZXM7IGxldCBpbmRleCA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FkZHJlc3NdPVwiYWRkcmVzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJpbnZvaWNlQWRkcmVzc0lkeCA9PT0gaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZWRpdEFkZHJlc3NDbGlja2VkKT1cImVkaXRBZGRyZXNzKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgPjwvY28tcmVsYXRpb24tYWRkcmVzcy10aWxlPlxuICAgICAgICAgICAgICAgIDwvY28tY2Fyb3VzZWwtM2Q+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3dcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpb24tYWRkcmVzcy1uZXdcIj5cbiAgICAgICAgICAgICAgICAgIDxpY29uIGNsYXNzPVwicmVsYXRpb24tYWRkcmVzcy1pY29uXCIgW2ljb25dPVwiaWNvbnMuQXJyb3dQb2ludFJpZ2h0XCI+PC9pY29uPlxuICAgICAgICAgICAgICAgICAgPGRpdiBbdGV4dENvbnRlbnRdPVwiJ0FERFJFU1NfQUREJyB8IGxvY2FsaXplXCIgKGNsaWNrKT1cInNob3dOZXdBZGRyZXNzRGlhbG9nKClcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtbGFiZWwtY29sdW1uXCI+XG4gICAgICAgICAgICA8c3Bhbj4wMzwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBbdGV4dENvbnRlbnRdPVwiJ0NPTlRBQ1RfREVUQUlMUycgfCBsb2NhbGl6ZVwiPjwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1jb2x1bW5cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICA8Y28taW5wdXQtdGV4dCBbKG1vZGVsKV09XCJwaG9uZU51bWJlci52YWx1ZVwiIFtwbGFjZWhvbGRlcl09XCInUEhPTkVfTk8nIHwgbG9jYWxpemUgXCIgW3JlcXVpcmVkXT1cInRydWVcIj48L2NvLWlucHV0LXRleHQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICA8Y28taW5wdXQtdGV4dCBbKG1vZGVsKV09XCJlbWFpbEFkZHJlc3MudmFsdWVcIiBbcGxhY2Vob2xkZXJdPVwiJ0VNQUlMX0FERFJFU1MnIHwgbG9jYWxpemUgXCIgW3R5cGVdPVwiJ2VtYWlsJ1wiIFtyZXF1aXJlZF09XCJ0cnVlXCI+PC9jby1pbnB1dC10ZXh0PlxuICAgICAgICAgICAgPC9kaXY+XG48IS0tXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWxhYmVsLWNvbHVtblwiPlxuICAgICAgICAgICAgPHNwYW4+MDQ8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgW3RleHRDb250ZW50XT1cIidQQVNTV09SRCcgfCBsb2NhbGl6ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWwtZGVzY3JpcHRpb25cIiBbdGV4dENvbnRlbnRdPVwiJ0FDQ09VTlRfRVhQTEFOQVRJT04nIHwgbG9jYWxpemVcIj48L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtY29sdW1uXCI+XG4tLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICA8Y28taW5wdXQtY2hlY2tib3ggW2xhYmVsXT1cIidJTlZJVEVfVE9fQUNDT1VOVCcgfCBsb2NhbGl6ZVwiIFsobW9kZWwpXT1cImludml0ZVRvQWNjb3VudFwiPjwvY28taW5wdXQtY2hlY2tib3g+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtbGFiZWwtY29sdW1uXCI+XG4gICAgICAgICAgICA8c3Bhbj4wNDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBbdGV4dENvbnRlbnRdPVwiJ1BSSVZBQ1lfUFJFRkVSRU5DRVMnIHwgbG9jYWxpemVcIj48L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtY29sdW1uXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHdvLWNvbHVtbi1ncmlkXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHByaXZhY3lTZXR0aW5nIG9mIHByaXZhY3lTZXR0aW5nc1wiPlxuICAgICAgICAgICAgICAgIDxjby1pbnB1dC1jaGVja2JveCBjbGFzcz1cImZpcnN0LWNvbHVtblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJwcml2YWN5U2V0dGluZy5kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttb2RlbF09XCJpc1NoYXJlZChwcml2YWN5U2V0dGluZylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiY2hhbmdlUHJpdmFjeVNldHRpbmcocHJpdmFjeVNldHRpbmcsICRldmVudClcIlxuICAgICAgICAgICAgICAgID48L2NvLWlucHV0LWNoZWNrYm94PlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2Vjb25kLWNvbHVtblwiIFt0ZXh0Q29udGVudF09XCJwcml2YWN5U2V0dGluZy5leHBsYW5hdGlvblwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2NvLWZvcm0+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInN1Z2dlc3Rpb25zLXNpZGViYXJcIiAqbmdJZj1cInNob3dSZWxhdGlvblNpZGViYXJcIiBAc2hvd0hpZGVTaWRlYmFyPlxuICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aW9uLXNpZGViYXItaGVhZGVyXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImNoZWNrb3V0LWxhYmVsLWgzXCIgW3RleHRDb250ZW50XT1cIidTVUdHRVNUSU9OUycgfCBsb2NhbGl6ZVwiPjwvbGFiZWw+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxjby1jaGVja291dC1yZWxhdGlvbi1zdWdnZXN0aW9ucy1saXN0XG4gICAgICAgIFtzdWdnZXN0aW9uc109XCJyZWxhdGlvblN1Z2dlc3Rpb25zXCJcbiAgICAgICAgKHN1Z2dlc3Rpb25TZWxlY3RlZCk9XCJvblJlbGF0aW9uU3VnZ2VzdGlvbkNsaWNrKCRldmVudClcIlxuICAgICAgPjwvY28tY2hlY2tvdXQtcmVsYXRpb24tc3VnZ2VzdGlvbnMtbGlzdD5cbiAgICA8L2Rpdj5cbiAgICA8Y28tZGlhbG9nICpuZ0lmPVwic2hvd0NyZWF0ZUFkZHJlc3NEaWFsb2dcIj5cbiAgICAgIDxjby1yZWxhdGlvbi1hZGRyZXNzXG4gICAgICAgIChzYXZlQ2xpY2spPVwic2F2ZU5ld0FkZHJlc3MoJGV2ZW50KVwiXG4gICAgICAgIChjYW5jZWxDbGljayk9XCJzaG93Q3JlYXRlQWRkcmVzc0RpYWxvZyA9IGZhbHNlXCJcbiAgICAgID48L2NvLXJlbGF0aW9uLWFkZHJlc3M+XG4gICAgPC9jby1kaWFsb2c+XG4gICAgPGNvLWRpYWxvZyAqbmdJZj1cInNob3dTZWxlY3RBZGRyZXNzRGlhbG9nICYmIGFkZHJlc3NUb0VkaXRcIj5cbiAgICAgIDxjby1yZWxhdGlvbi1hZGRyZXNzXG4gICAgICAgIFthZGRyZXNzXT1cImFkZHJlc3NUb0VkaXRcIlxuICAgICAgICAoc2F2ZUNsaWNrKT1cInNhdmVBZGRyZXNzKCRldmVudClcIlxuICAgICAgICAoY2FuY2VsQ2xpY2spPVwic2hvd1NlbGVjdEFkZHJlc3NEaWFsb2cgPSBmYWxzZVwiXG4gICAgICA+PC9jby1yZWxhdGlvbi1hZGRyZXNzPlxuICAgIDwvY28tZGlhbG9nPlxuICBgLFxuICBwcm92aWRlcnM6IFtcbiAgICBGb3JtTWFzdGVyU2VydmljZVxuICBdLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcihcInNob3dIaWRlUHJpdmF0ZVJlbGF0aW9uRmllbGRzXCIsIFtcbiAgICAgIHN0YXRlKFwidm9pZFwiLCBzdHlsZSh7aGVpZ2h0OiAwfSkpLFxuICAgICAgc3RhdGUoXCIqXCIsIHN0eWxlKHtoZWlnaHQ6IFwiKlwifSkpLFxuICAgICAgdHJhbnNpdGlvbihcInZvaWQgPT4gKlwiLCBhbmltYXRlKFwiMjAwbXMgZWFzZS1pbi1vdXRcIikpLFxuICAgICAgdHJhbnNpdGlvbihcIiogPT4gdm9pZFwiLCBhbmltYXRlKFwiMjAwbXMgZWFzZS1vdXRcIikpXG4gICAgXSksXG4gICAgdHJpZ2dlcihcInNob3dIaWRlQ29tcGFueVJlbGF0aW9uRmllbGRzXCIsIFtcbiAgICAgIHN0YXRlKFwidm9pZFwiLCBzdHlsZSh7aGVpZ2h0OiAwfSkpLFxuICAgICAgc3RhdGUoXCIqXCIsIHN0eWxlKHtoZWlnaHQ6IFwiKlwifSkpLFxuICAgICAgdHJhbnNpdGlvbihcInZvaWQgPT4gKlwiLCBhbmltYXRlKFwiMjAwbXMgZWFzZS1pbi1vdXRcIikpLFxuICAgICAgdHJhbnNpdGlvbihcIiogPT4gdm9pZFwiLCBhbmltYXRlKFwiMjAwbXMgZWFzZS1vdXRcIikpXG4gICAgXSksXG4gICAgdHJpZ2dlcihcInNob3dIaWRlU2lkZWJhclwiLCBbXG4gICAgICBzdGF0ZShcInZvaWRcIiwgc3R5bGUoe3RyYW5zZm9ybTogXCJ0cmFuc2xhdGVYKDEwMCUpXCJ9KSksXG4gICAgICBzdGF0ZShcIipcIiwgc3R5bGUoe3RyYW5zZm9ybTogXCJ0cmFuc2xhdGVYKDApXCJ9KSksXG4gICAgICB0cmFuc2l0aW9uKFwidm9pZCA8PT4gKlwiLCBhbmltYXRlKFwiMjAwbXMgZWFzZS1pbi1vdXRcIikpXG4gICAgXSksXG4gICAgdHJpZ2dlcihcInNob3dIaWRlSW52b2ljZUFkZHJlc3NcIiwgW1xuICAgICAgc3RhdGUoXCJ2b2lkXCIsIHN0eWxlKHtoZWlnaHQ6IDAsIG9wYWNpdHk6IDB9KSksXG4gICAgICBzdGF0ZShcIipcIiwgc3R5bGUoe2hlaWdodDogXCIqXCIsIG9wYWNpdHk6IDF9KSksXG4gICAgICB0cmFuc2l0aW9uKFwidm9pZCA9PiAqXCIsIGFuaW1hdGUoXCIyMDBtcyBlYXNlLWluLW91dFwiKSksXG4gICAgICB0cmFuc2l0aW9uKFwiKiA9PiB2b2lkXCIsIGFuaW1hdGUoXCIyMDBtcyBlYXNlLW91dFwiKSlcbiAgICBdKVxuICBdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIENoZWNrb3V0T3ZlcnZpZXdSZWxhdGlvbkVkaXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwdWJsaWMgcmVhZG9ubHkgaWNvbnM6IHR5cGVvZiBJY29uID0gSWNvbjtcblxuICBAVmlld0NoaWxkKEZvcm1Db21wb25lbnQsIHtzdGF0aWM6IHRydWV9KVxuICBwdWJsaWMgcmVsYXRpb25Gb3JtOiBGb3JtQ29tcG9uZW50O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgcmVsYXRpb24odmFsdWU6IFJlbGF0aW9uQW55VHlwZSkge1xuICAgIHRoaXMuX3JlbGF0aW9uID0gdmFsdWU7XG5cbiAgICB0aGlzLnByZXBhcmVQcmltYXJ5RW1haWwoKTtcbiAgICB0aGlzLnByZXBhcmVQcmltYXJ5UGhvbmUoKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkZWxpdmVyeU9wdGlvbnNSZXF1ZXN0OiBTZXRUcmFuc2FjdGlvbkRlbGl2ZXJ5T3B0aW9uc1JlcXVlc3Q7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyB2YWxpZFN1Ym1pdDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgaW52YWxpZFN1Ym1pdDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcmVsYXRpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxSZWxhdGlvbkFueVR5cGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxSZWxhdGlvbkFueVR5cGU+KCk7XG5cbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuY28tY2hlY2tvdXQtb3ZlcnZpZXctcmVsYXRpb24tZWRpdFwiKVxuICBwdWJsaWMgc2hvd0NsYXNzKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHVibGljIGZvcm1SZWxhdGlvbjogRm9ybUdyb3VwO1xuXG4gIHB1YmxpYyBkYXRlT2ZCaXJ0aDogRGF0ZTtcbiAgcHVibGljIGFjY291bnRQYXNzd29yZDogc3RyaW5nID0gXCJcIjtcbiAgcHVibGljIGhpZGU6IGJvb2xlYW4gPSB0cnVlO1xuICBwdWJsaWMgZ2VuZGVyOiBHZW5kZXJUeXBlID0gR2VuZGVyVHlwZS5VbnNwZWNpZmllZDtcbiAgcHVibGljIGVtYWlsQWRkcmVzczogQ29udGFjdE9wdGlvbiA9IG5ldyBDb250YWN0T3B0aW9uKCk7XG4gIHB1YmxpYyBwaG9uZU51bWJlcjogQ29udGFjdE9wdGlvbiA9IG5ldyBDb250YWN0T3B0aW9uKCk7XG4gIHB1YmxpYyBwcml2YWN5U2V0dGluZ3M6IFJlbGF0aW9uUHJpdmFjeVNldHRpbmdbXTtcbiAgcHVibGljIHJlbGF0aW9uU3VnZ2VzdGlvbnM6IFJlbGF0aW9uTGlzdE9iamVjdFtdID0gW107XG4gIHB1YmxpYyBzaG93UmVsYXRpb25TaWRlYmFyOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBpbnZpdGVUb0FjY291bnQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgYWRkcmVzc2VzOiBBZGRyZXNzW10gPSBbXTtcbiAgcHVibGljIHNlbGVjdGVkQWRkcmVzczogQWRkcmVzcztcbiAgcHVibGljIGRlbGl2ZXJ5QWRkcmVzczogQWRkcmVzcztcbiAgcHVibGljIGludm9pY2VBZGRyZXNzOiBBZGRyZXNzO1xuICBwdWJsaWMgZGVsaXZlcnlBZGRyZXNzSWR4OiBudW1iZXIgPSAwO1xuICBwdWJsaWMgaW52b2ljZUFkZHJlc3NJZHg6IG51bWJlciA9IDA7XG4gIHB1YmxpYyBpbnZvaWNlQWRkcmVzc1NhbWVBc0RlbGl2ZXJ5QWRkcmVzczogYm9vbGVhbiA9IHRydWU7XG4gIHB1YmxpYyBlZGl0QWRkcmVzc1R5cGU6IEFkZHJlc3NUeXBlID0gQWRkcmVzc1R5cGUuRGVsaXZlcnlBZGRyZXNzO1xuICBwdWJsaWMgYWRkcmVzc1RvRWRpdDogQWRkcmVzcztcbiAgcHVibGljIHNob3dTZWxlY3RBZGRyZXNzRGlhbG9nOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBzaG93Q3JlYXRlQWRkcmVzc0RpYWxvZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyByZWFkb25seSByZWxUeXBlOiB0eXBlb2YgUmVsYXRpb25OYW1lS2luZCA9IFJlbGF0aW9uTmFtZUtpbmQ7XG4gIHB1YmxpYyByZWFkb25seSBnZW5kZXJUeXBlOiB0eXBlb2YgR2VuZGVyVHlwZSA9IEdlbmRlclR5cGU7XG5cbiAgcHVibGljIGdldCByZWxhdGlvbigpOiBSZWxhdGlvbkFueVR5cGUge1xuICAgIHJldHVybiB0aGlzLl9yZWxhdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVsYXRpb25Bc0N1c3RvbWVyKCk6IEN1c3RvbWVyRnVsbE9iamVjdCB7XG4gICAgcmV0dXJuIHRoaXMuX3JlbGF0aW9uICYmIHRoaXMuX3JlbGF0aW9uIGFzIEN1c3RvbWVyRnVsbE9iamVjdDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZWRpdEZpcnN0QWRkcmVzcygpOiBBZGRyZXNzIHtcbiAgICBjb25zdCBmaXJzdEFkZHJlc3M6IEFkZHJlc3MgPSB0aGlzLl9zZXJ2aWNlLmdldEZpcnN0QWRkcmVzcyh0aGlzLnJlbGF0aW9uKTtcbiAgICBpZiAoZmlyc3RBZGRyZXNzKSB7XG4gICAgICByZXR1cm4gZmlyc3RBZGRyZXNzO1xuICAgIH0gZWxzZSBpZiAodGhpcy5fcmVsYXRpb24pIHtcbiAgICAgIGNvbnN0IGFkZHJlc3M6IEFkZHJlc3MgPSBuZXcgQWRkcmVzcygpO1xuICAgICAgYWRkcmVzcy5hZGRyZXNzVHlwZSA9IEFkZHJlc3NUeXBlLkRlbGl2ZXJ5QWRkcmVzcztcbiAgICAgIGFkZHJlc3Muc3RhcnREYXRlID0gbmV3IERhdGUoKTtcbiAgICAgIGFkZHJlc3Muc2VxdWVuY2UgPSB0aGlzLl9yZWxhdGlvbi5nZXROZXh0QWRkcmVzc1NlcXVlbmNlKCk7XG4gICAgICB0aGlzLl9yZWxhdGlvbi5hZGRyZXNzZXMucHVzaChhZGRyZXNzKTtcbiAgICAgIHJldHVybiBhZGRyZXNzO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXBwbGljYXRpb25Vc2VyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zZXJ2aWNlLmFwcGxpY2F0aW9uVXNlcjtcbiAgfVxuXG4gIHByaXZhdGUgX3JlbGF0aW9uOiBSZWxhdGlvbkFueVR5cGUgPSBOVUxMX1JFTEFUSU9OX09CSkVDVDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9zZXJ2aWNlOiBUcmFuc2FjdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfZm9ybU1hc3RlcjogRm9ybU1hc3RlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfYm9GYWN0b3J5OiBCdXNpbmVzc09iamVjdEZhY3RvcnlcbiAgKSB7XG4gIH1cblxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLl9pbml0Rm9ybSgpO1xuICAgIHRoaXMuX3JlbGF0aW9uLnR5cGUgPSB0aGlzLnJlbFR5cGUuUHJpdmF0ZTtcbiAgICB0aGlzLl9yZWxhdGlvbi5nZW5kZXIgPSB0aGlzLmdlbmRlcjtcbiAgICBhd2FpdCB0aGlzLmxvYWRQcml2YWN5U2V0dGluZ3MoKTtcbiAgfVxuXG4gIHB1YmxpYyBzdWJtaXQoKTogYm9vbGVhbiB7XG4gICAgLy8gcmV0dXJuIHRoaXMucmVsYXRpb25Gb3JtLnN1Ym1pdCgpO1xuICAgIHJldHVybiB0aGlzLl9mb3JtTWFzdGVyLnN1Ym1pdFNsYXZlcygpO1xuICB9XG5cbiAgcHVibGljIHNob3dOZXdBZGRyZXNzRGlhbG9nKGRlbGl2ZXJ5QWRkcmVzczogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcbiAgICB0aGlzLmVkaXRBZGRyZXNzVHlwZSA9IGRlbGl2ZXJ5QWRkcmVzcyA/IEFkZHJlc3NUeXBlLkRlbGl2ZXJ5QWRkcmVzcyA6IEFkZHJlc3NUeXBlLkJpbGxpbmdBZGRyZXNzO1xuICAgIHRoaXMuc2hvd0NyZWF0ZUFkZHJlc3NEaWFsb2cgPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIHNob3dFZGl0QWRkcmVzc0RpYWxvZyhkZWxpdmVyeUFkZHJlc3M6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XG4gICAgdGhpcy5lZGl0QWRkcmVzc1R5cGUgPSBkZWxpdmVyeUFkZHJlc3MgPyBBZGRyZXNzVHlwZS5EZWxpdmVyeUFkZHJlc3MgOiBBZGRyZXNzVHlwZS5CaWxsaW5nQWRkcmVzcztcbiAgICB0aGlzLnNob3dTZWxlY3RBZGRyZXNzRGlhbG9nID0gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRJbmRleERlbGl2ZXJ5QWRkcmVzcyhpZHg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuZGVsaXZlcnlBZGRyZXNzSWR4ID0gaWR4O1xuICAgIHRoaXMuZWRpdEFkZHJlc3NUeXBlID0gQWRkcmVzc1R5cGUuRGVsaXZlcnlBZGRyZXNzO1xuICAgIHRoaXMuc2VsZWN0QWRkcmVzcyh0aGlzLnJlbGF0aW9uLmFkZHJlc3Nlc1tpZHhdKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRJbmRleEludm9pY2VBZGRyZXNzKGlkeDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5pbnZvaWNlQWRkcmVzc0lkeCA9IGlkeDtcbiAgICB0aGlzLmVkaXRBZGRyZXNzVHlwZSA9IEFkZHJlc3NUeXBlLkJpbGxpbmdBZGRyZXNzO1xuICAgIHRoaXMuc2VsZWN0QWRkcmVzcyh0aGlzLnJlbGF0aW9uLmFkZHJlc3Nlc1tpZHhdKTtcbiAgfVxuXG4gIHB1YmxpYyBlZGl0QWRkcmVzcyhhZGRyOiBBZGRyZXNzKTogdm9pZCB7XG4gICAgdGhpcy5hZGRyZXNzVG9FZGl0ID0gPEFkZHJlc3M+PHVua25vd24+dGhpcy5fYm9GYWN0b3J5Lm1ha2VXaXRoUmF3QmFja2VuZERhdGEoQWRkcmVzcywgYWRkcik7XG4gICAgdGhpcy5zaG93RWRpdEFkZHJlc3NEaWFsb2coKVxuICB9XG5cbiAgcHVibGljIGNoZWNrU2FtZUFkZHJlc3MoY2hlY2tlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICB0aGlzLmVkaXRBZGRyZXNzVHlwZSA9IEFkZHJlc3NUeXBlLkRlbGl2ZXJ5QWRkcmVzcztcbiAgICAgIHRoaXMuc2VsZWN0QWRkcmVzcyh0aGlzLmRlbGl2ZXJ5QWRkcmVzcyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNhdmVOZXdBZGRyZXNzKGFkZHJlc3M6IEFkZHJlc3MpOiB2b2lkIHtcbiAgICBhZGRyZXNzLmFkZHJlc3NUeXBlID0gdGhpcy5lZGl0QWRkcmVzc1R5cGU7XG4gICAgdGhpcy5yZWxhdGlvbi5hZGRyZXNzZXMucHVzaChhZGRyZXNzKTtcbiAgICB0aGlzLnNlbGVjdEFkZHJlc3MoYWRkcmVzcyk7XG4gICAgdGhpcy5zaG93Q3JlYXRlQWRkcmVzc0RpYWxvZyA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIHNhdmVBZGRyZXNzKGFkZHJlc3M6IEFkZHJlc3MpOiB2b2lkIHtcbiAgICBjb25zdCBpZHg6IG51bWJlciA9IHRoaXMucmVsYXRpb24uYWRkcmVzc2VzLmZpbmRJbmRleChhID0+IGEubmF3TnIgPT09IGFkZHJlc3MubmF3TnIpO1xuICAgIGlmIChpZHggPiAtMSkge1xuICAgICAgdGhpcy5yZWxhdGlvbi5hZGRyZXNzZXNbaWR4XSA9IDxBZGRyZXNzPjx1bmtub3duPnRoaXMuX2JvRmFjdG9yeS5tYWtlV2l0aFJhd0JhY2tlbmREYXRhKEFkZHJlc3MsIGFkZHJlc3MpO1xuICAgIH1cbiAgICB0aGlzLnNob3dTZWxlY3RBZGRyZXNzRGlhbG9nID0gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0QWRkcmVzcyhhZGRyZXNzPzogQWRkcmVzcyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kZWxpdmVyeU9wdGlvbnNSZXF1ZXN0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghYWRkcmVzcykge1xuICAgICAgYWRkcmVzcyA9IHRoaXMuX3NlcnZpY2UuZ2V0Rmlyc3RBZGRyZXNzKHRoaXMucmVsYXRpb24pO1xuICAgIH1cbiAgICBpZiAoIWFkZHJlc3MpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fc2V0Q291bnRyeU5hbWVUb0FkZHJlc3MoYWRkcmVzcyk7XG4gICAgaWYgKHRoaXMuZWRpdEFkZHJlc3NUeXBlID09PSBBZGRyZXNzVHlwZS5EZWxpdmVyeUFkZHJlc3MpIHtcbiAgICAgIHRoaXMuZGVsaXZlcnlPcHRpb25zUmVxdWVzdC50cmFuc2FjdGlvbkFkZHJlc3MgPSBhZGRyZXNzLm5hd05yO1xuICAgICAgdGhpcy5kZWxpdmVyeUFkZHJlc3MgPSBhZGRyZXNzO1xuICAgICAgdGhpcy5kZWxpdmVyeUFkZHJlc3NJZHggPSB0aGlzLnJlbGF0aW9uLmFkZHJlc3Nlcy5maW5kSW5kZXgoYSA9PiBhLm5hd05yID09PSB0aGlzLmRlbGl2ZXJ5QWRkcmVzcy5uYXdOcik7XG4gICAgfVxuICAgIGlmICh0aGlzLmludm9pY2VBZGRyZXNzU2FtZUFzRGVsaXZlcnlBZGRyZXNzIHx8IHRoaXMuZWRpdEFkZHJlc3NUeXBlICE9PSBBZGRyZXNzVHlwZS5EZWxpdmVyeUFkZHJlc3MpIHtcbiAgICAgIHRoaXMuZGVsaXZlcnlPcHRpb25zUmVxdWVzdC5pbnZvaWNlQWRkcmVzcyA9IGFkZHJlc3MubmF3TnI7XG4gICAgICB0aGlzLmludm9pY2VBZGRyZXNzID0gYWRkcmVzcztcbiAgICAgIHRoaXMuaW52b2ljZUFkZHJlc3NJZHggPSB0aGlzLnJlbGF0aW9uLmFkZHJlc3Nlcy5maW5kSW5kZXgoYSA9PiBhLm5hd05yID09PSB0aGlzLmludm9pY2VBZGRyZXNzLm5hd05yKTtcbiAgICB9XG4gICAgdGhpcy5zaG93U2VsZWN0QWRkcmVzc0RpYWxvZyA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIHByZXBhcmVQcmltYXJ5RW1haWwoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3JlbGF0aW9uKSB7XG4gICAgICB0aGlzLmVtYWlsQWRkcmVzcyA9IHRoaXMuX3JlbGF0aW9uLmdldExvd2VzdFNlcXVlbmNlT2ZDb250YWN0T3B0aW9uc1dpdGhUeXBlKENvbW11bmljYXRpb25UeXBlLkVtYWlsKTtcbiAgICAgIGlmIChpc05pbGwodGhpcy5lbWFpbEFkZHJlc3MpKSB7XG4gICAgICAgIHRoaXMuZW1haWxBZGRyZXNzID0gbmV3IENvbnRhY3RPcHRpb24oKTtcbiAgICAgICAgdGhpcy5lbWFpbEFkZHJlc3MudHlwZSA9IENvbW11bmljYXRpb25UeXBlLkVtYWlsO1xuICAgICAgICB0aGlzLmVtYWlsQWRkcmVzcy5zZXF1ZW5jZSA9IDA7XG4gICAgICAgIHRoaXMuX3JlbGF0aW9uLmFkZENvbnRhY3RPcHRpb24odGhpcy5lbWFpbEFkZHJlc3MpO1xuICAgICAgfVxuICAgICAgLy8gaWYgKHRoaXMuX3RyYW5zYWN0aW9uU2VydmljZS5lbWFpbEFkZHJlc3MpIHtcbiAgICAgIC8vICAgdGhpcy5lbWFpbEFkZHJlc3MudmFsdWUgPSB0aGlzLl90cmFuc2FjdGlvblNlcnZpY2UuZW1haWxBZGRyZXNzO1xuICAgICAgLy8gfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBwcmVwYXJlUHJpbWFyeVBob25lKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9yZWxhdGlvbikge1xuICAgICAgdGhpcy5waG9uZU51bWJlciA9IHRoaXMuX3JlbGF0aW9uLmdldExvd2VzdFNlcXVlbmNlT2ZDb250YWN0T3B0aW9uc1dpdGhUeXBlKENvbW11bmljYXRpb25UeXBlLlRlbGVwaG9uZSk7XG4gICAgICBpZiAoaXNOaWxsKHRoaXMucGhvbmVOdW1iZXIpKSB7XG4gICAgICAgIHRoaXMucGhvbmVOdW1iZXIgPSBuZXcgQ29udGFjdE9wdGlvbigpO1xuICAgICAgICB0aGlzLnBob25lTnVtYmVyLnR5cGUgPSBDb21tdW5pY2F0aW9uVHlwZS5UZWxlcGhvbmU7XG4gICAgICAgIHRoaXMucGhvbmVOdW1iZXIuc2VxdWVuY2UgPSAwO1xuICAgICAgICB0aGlzLl9yZWxhdGlvbi5hZGRDb250YWN0T3B0aW9uKHRoaXMucGhvbmVOdW1iZXIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBsb2FkUHJpdmFjeVNldHRpbmdzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMucHJpdmFjeVNldHRpbmdzID0gYXdhaXQgdGhpcy5fc2VydmljZS5nZXRSZWxhdGlvblByaXZhY3lTZXR0aW5ncygpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGxvYWRNYXJrZXRpbmcoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5fc2VydmljZS5nZXRNYXJrZXRpbmdDb2RlcygpO1xuICB9XG5cbiAgcHVibGljIGlzU2hhcmVkKHJlbGF0aW9uUHJpdmFjeVNldHRpbmc6IFJlbGF0aW9uUHJpdmFjeVNldHRpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBvd25TZXR0aW5nOiBSZWxhdGlvblByaXZhY3lTZXR0aW5nID0gQnVzaW5lc3NPYmplY3RVdGlscy5GaW5kSXRlbUJ5SWQodGhpcy5yZWxhdGlvbkFzQ3VzdG9tZXIucmVsYXRpb25Qcml2YWN5U2V0dGluZ3MsIHJlbGF0aW9uUHJpdmFjeVNldHRpbmcuZ2V0SWQoKSk7XG4gICAgaWYgKG93blNldHRpbmcpIHtcbiAgICAgIHJldHVybiBvd25TZXR0aW5nLmFsbG93VG9TaGFyZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGNoYW5nZVJlbGF0aW9uVHlwZSh2YWx1ZTogUmVsYXRpb25OYW1lS2luZCk6IHZvaWQge1xuICAgIHRoaXMucmVsYXRpb24udHlwZSA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGNoYW5nZUdlbmRlclR5cGUodmFsdWU6IEdlbmRlclR5cGUpOiB2b2lkIHtcbiAgICB0aGlzLnJlbGF0aW9uLmdlbmRlciA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGZpcnN0TmFtZUNoYW5nZShmaXJzdE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9yZWxhdGlvbikge1xuICAgICAgdGhpcy5fcmVsYXRpb24uZmlyc3ROYW1lID0gZmlyc3ROYW1lO1xuICAgIH1cbiAgICB0aGlzLl9yZWxhdGlvbk5hbWVDaGFuZ2VIYW5kbGVyLmNhbGwodGhpcyk7XG4gIH1cblxuICBwdWJsaWMgZmFtaWx5TmFtZUNoYW5nZShmYW1pbHlOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fcmVsYXRpb24pIHtcbiAgICAgIHRoaXMuX3JlbGF0aW9uLmZhbWlseU5hbWUgPSBmYW1pbHlOYW1lO1xuICAgIH1cbiAgICB0aGlzLl9yZWxhdGlvbk5hbWVDaGFuZ2VIYW5kbGVyLmNhbGwodGhpcyk7XG4gIH1cblxuICBwdWJsaWMgY2hlY2tWaXNpYmlsaXR5U3VnZ2VzdGlvbnMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3JlbGF0aW9uLmZpcnN0TmFtZSAmJiB0aGlzLl9yZWxhdGlvbi5mYW1pbHlOYW1lKSB7XG4gICAgICB0aGlzLmhpZGVTaWRlYmFyKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIG9uUmVsYXRpb25TdWdnZXN0aW9uQ2xpY2socmVsYXRpb25TdWdnZXN0ZWQ6IFJlbGF0aW9uTGlzdE9iamVjdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChyZWxhdGlvblN1Z2dlc3RlZCkge1xuICAgICAgdGhpcy5oaWRlU2lkZWJhcigpO1xuICAgICAgLy8gYXdhaXQgdGhpcy5fc2VydmljZS5hZGRSZWxhdGlvblRvVHJhbnNhY3Rpb24ocmVsYXRpb25TdWdnZXN0ZWQucmVsYXRpb25JZCk7XG4gICAgICB0aGlzLnJlbGF0aW9uID0gYXdhaXQgdGhpcy5fc2VydmljZS5nZXRDdXN0b21lckZ1bGxPYmplY3RCeVJlbGF0aW9uSWQocmVsYXRpb25TdWdnZXN0ZWQucmVsYXRpb25JZCk7XG4gICAgICB0aGlzLnJlbGF0aW9uQ2hhbmdlLm5leHQodGhpcy5yZWxhdGlvbik7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNoYW5nZVByaXZhY3lTZXR0aW5nKHJlbGF0aW9uUHJpdmFjeVNldHRpbmc6IFJlbGF0aW9uUHJpdmFjeVNldHRpbmcsIHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3Qgb3duU2V0dGluZzogUmVsYXRpb25Qcml2YWN5U2V0dGluZyA9IEJ1c2luZXNzT2JqZWN0VXRpbHMuRmluZEl0ZW1CeUlkKHRoaXMucmVsYXRpb25Bc0N1c3RvbWVyLnJlbGF0aW9uUHJpdmFjeVNldHRpbmdzLCByZWxhdGlvblByaXZhY3lTZXR0aW5nLmdldElkKCkpO1xuICAgIGlmIChvd25TZXR0aW5nKSB7XG4gICAgICBvd25TZXR0aW5nLmFsbG93VG9TaGFyZSA9IHZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlbGF0aW9uQXNDdXN0b21lci5yZWxhdGlvblByaXZhY3lTZXR0aW5ncy5wdXNoKHJlbGF0aW9uUHJpdmFjeVNldHRpbmcpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzaG93U2lkZWJhcigpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dSZWxhdGlvblNpZGViYXIgPSB0cnVlO1xuICB9XG5cbiAgLy8gSGlkZSBzaWRlYmFyIHdpdGggYSBsaXR0bGUgdGltZW91dCB0byBwcmV2ZW50IG1pc3NpbmcgdGhlIGNsaWNrXG4gIHB1YmxpYyBoaWRlU2lkZWJhcigpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2hvd1JlbGF0aW9uU2lkZWJhciA9IGZhbHNlO1xuICAgIH0sIDIwMCk7XG4gIH1cblxuICBwcml2YXRlIF9pbml0Rm9ybSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWxhdGlvbkZvcm0pIHtcbiAgICAgIHRoaXMuZm9ybVJlbGF0aW9uID0gdGhpcy5yZWxhdGlvbkZvcm0uZm9ybUdyb3VwO1xuICAgIH1cbiAgfVxuXG4gIC8vIGZldGNoZXMgcmVsYXRpb24gc3VnZ2VzdGlvbnNcbiAgcHJpdmF0ZSBfcmVsYXRpb25OYW1lQ2hhbmdlSGFuZGxlcjogRnVuY3Rpb24gPSBGdW5jdGlvblV0aWxzLlRocm90dGxlKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVsYXRpb25OYW1lQ2hhbmdlZEhhbmRsZXJGbigpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gIH0sIDYwMCk7XG5cbiAgLy8gbG9hZCBzdWdnZXN0aW9uc1xuICBwcml2YXRlIGFzeW5jIF9yZWxhdGlvbk5hbWVDaGFuZ2VkSGFuZGxlckZuKCk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgZmlyc3ROYW1lOiBzdHJpbmcgPSBPYmplY3RVdGlscy5WYWx1ZU9yRGVmYXVsdCh0aGlzLl9yZWxhdGlvbi5maXJzdE5hbWUpO1xuICAgIGNvbnN0IHNlY29uZE5hbWU6IHN0cmluZyA9IE9iamVjdFV0aWxzLlZhbHVlT3JEZWZhdWx0KHRoaXMuX3JlbGF0aW9uLmZhbWlseU5hbWUpO1xuXG4gICAgaWYgKCFmaXJzdE5hbWUgJiYgIXNlY29uZE5hbWUpIHtcbiAgICAgIHRoaXMucmVsYXRpb25TdWdnZXN0aW9ucyA9IFtdO1xuICAgICAgdGhpcy5oaWRlU2lkZWJhcigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJlbGF0aW9uUmVxdWVzdDogUmVsYXRpb25SZXF1ZXN0ID0ge307XG4gICAgcmVsYXRpb25SZXF1ZXN0LnJlbGF0aW9uVHlwZSA9IHRoaXMuX3JlbGF0aW9uLnJlbGF0aW9uVHlwZTtcbiAgICBpZiAoZmlyc3ROYW1lKSB7XG4gICAgICByZWxhdGlvblJlcXVlc3QuZmlyc3ROYW1lID0gZmlyc3ROYW1lO1xuICAgIH1cblxuICAgIGlmIChzZWNvbmROYW1lKSB7XG4gICAgICByZWxhdGlvblJlcXVlc3QuZmFtaWx5TmFtZSA9IHNlY29uZE5hbWU7XG4gICAgfVxuXG4gICAgdGhpcy5zaG93U2lkZWJhcigpO1xuICAgIHRoaXMucmVsYXRpb25TdWdnZXN0aW9ucyA9IGF3YWl0IHRoaXMuX3NlcnZpY2UuZ2V0UmVsYXRpb25MaXN0T2JqZWN0cyhyZWxhdGlvblJlcXVlc3QpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfc2V0Q291bnRyeU5hbWVUb0FkZHJlc3MoYWRkcmVzczogQWRkcmVzcyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChhZGRyZXNzLmNvdW50cnlJZCAmJiAhYWRkcmVzcy5jb3VudHJ5TmFtZSkge1xuICAgICAgY29uc3QgY291bnRyeTogQ291bnRyeSA9IGF3YWl0IHRoaXMuX3NlcnZpY2UuZ2V0Q291bnRyeShhZGRyZXNzLmNvdW50cnlJZCk7XG4gICAgICBhZGRyZXNzLmNvdW50cnlOYW1lID0gY291bnRyeS5kZXNjcmlwdGlvbjtcbiAgICB9XG4gIH1cblxufVxuIl19
|