@simpleangularcontrols/sac-bootstrap4 13.0.0-rc.13 → 13.0.0-rc.14
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/README.md +17 -17
- package/components/browser/browser.d.ts +48 -48
- package/components/browser/browser.module.d.ts +14 -14
- package/components/browser/browser.module.ngfactory.d.ts +3 -3
- package/components/browser/browser.module.ngsummary.d.ts +1 -1
- package/components/browser/browser.ngfactory.d.ts +3 -3
- package/components/browser/browser.ngsummary.d.ts +1 -1
- package/controls/buttons/button.d.ts +11 -11
- package/controls/buttons/button.module.d.ts +8 -8
- package/controls/buttons/button.module.ngfactory.d.ts +3 -3
- package/controls/buttons/button.module.ngsummary.d.ts +1 -1
- package/controls/buttons/button.ngfactory.d.ts +3 -3
- package/controls/buttons/button.ngsummary.d.ts +1 -1
- package/controls/checkbox/checkbox.d.ts +17 -17
- package/controls/checkbox/checkbox.module.d.ts +12 -12
- package/controls/checkbox/checkbox.module.ngfactory.d.ts +3 -3
- package/controls/checkbox/checkbox.module.ngsummary.d.ts +1 -1
- package/controls/checkbox/checkbox.ngfactory.d.ts +3 -3
- package/controls/checkbox/checkbox.ngsummary.d.ts +1 -1
- package/controls/checkbox/radiobutton.d.ts +19 -19
- package/controls/checkbox/radiobutton.ngfactory.d.ts +3 -3
- package/controls/checkbox/radiobutton.ngsummary.d.ts +1 -1
- package/controls/checkbox/radiobuttons.d.ts +17 -17
- package/controls/checkbox/radiobuttons.ngfactory.d.ts +3 -3
- package/controls/checkbox/radiobuttons.ngsummary.d.ts +1 -1
- package/controls/confirm/confirm.d.ts +9 -9
- package/controls/confirm/confirm.module.d.ts +19 -19
- package/controls/confirm/confirm.module.ngfactory.d.ts +3 -3
- package/controls/confirm/confirm.module.ngsummary.d.ts +1 -1
- package/controls/confirm/confirm.ngfactory.d.ts +3 -3
- package/controls/confirm/confirm.ngsummary.d.ts +1 -1
- package/controls/confirm/confirm.service.d.ts +57 -57
- package/controls/confirm/confirm.service.ngfactory.d.ts +3 -3
- package/controls/confirm/confirm.service.ngsummary.d.ts +1 -1
- package/controls/contextmenu/contextmenu.d.ts +19 -19
- package/controls/contextmenu/contextmenu.module.d.ts +12 -12
- package/controls/contextmenu/contextmenu.module.ngfactory.d.ts +3 -3
- package/controls/contextmenu/contextmenu.module.ngsummary.d.ts +1 -1
- package/controls/contextmenu/contextmenu.ngfactory.d.ts +3 -3
- package/controls/contextmenu/contextmenu.ngsummary.d.ts +1 -1
- package/controls/contextmenu/contextmenuanchor.d.ts +15 -15
- package/controls/contextmenu/contextmenuanchor.ngfactory.d.ts +3 -3
- package/controls/contextmenu/contextmenuanchor.ngsummary.d.ts +1 -1
- package/controls/contextmenu/contextmenucontainer.d.ts +15 -15
- package/controls/contextmenu/contextmenucontainer.ngfactory.d.ts +3 -3
- package/controls/contextmenu/contextmenucontainer.ngsummary.d.ts +1 -1
- package/controls/contextmenu/contextmenuitembutton.d.ts +13 -13
- package/controls/contextmenu/contextmenuitembutton.ngfactory.d.ts +3 -3
- package/controls/contextmenu/contextmenuitembutton.ngsummary.d.ts +1 -1
- package/controls/contextmenu/contextmenuitemsplitter.d.ts +9 -9
- package/controls/contextmenu/contextmenuitemsplitter.ngfactory.d.ts +3 -3
- package/controls/contextmenu/contextmenuitemsplitter.ngsummary.d.ts +1 -1
- package/controls/datetime/date.d.ts +19 -19
- package/controls/datetime/date.ngfactory.d.ts +3 -3
- package/controls/datetime/date.ngsummary.d.ts +1 -1
- package/controls/datetime/dateselector.d.ts +9 -9
- package/controls/datetime/dateselector.ngfactory.d.ts +3 -3
- package/controls/datetime/dateselector.ngsummary.d.ts +1 -1
- package/controls/datetime/datetime.d.ts +19 -19
- package/controls/datetime/datetime.module.d.ts +14 -14
- package/controls/datetime/datetime.module.ngfactory.d.ts +3 -3
- package/controls/datetime/datetime.module.ngsummary.d.ts +1 -1
- package/controls/datetime/datetime.ngfactory.d.ts +3 -3
- package/controls/datetime/datetime.ngsummary.d.ts +1 -1
- package/controls/datetime/time.d.ts +19 -19
- package/controls/datetime/time.ngfactory.d.ts +3 -3
- package/controls/datetime/time.ngsummary.d.ts +1 -1
- package/controls/dialog/dialog.d.ts +28 -28
- package/controls/dialog/dialog.module.d.ts +8 -8
- package/controls/dialog/dialog.module.ngfactory.d.ts +3 -3
- package/controls/dialog/dialog.module.ngsummary.d.ts +1 -1
- package/controls/dialog/dialog.ngfactory.d.ts +3 -3
- package/controls/dialog/dialog.ngsummary.d.ts +1 -1
- package/controls/form/form.d.ts +28 -28
- package/controls/form/form.module.d.ts +10 -10
- package/controls/form/form.module.ngfactory.d.ts +3 -3
- package/controls/form/form.module.ngsummary.d.ts +1 -1
- package/controls/form/form.ngfactory.d.ts +3 -3
- package/controls/form/form.ngsummary.d.ts +1 -1
- package/controls/form/inheritform.directive.d.ts +27 -27
- package/controls/form/inheritform.directive.ngfactory.d.ts +3 -3
- package/controls/form/inheritform.directive.ngsummary.d.ts +1 -1
- package/controls/grid/grid.d.ts +23 -23
- package/controls/grid/grid.module.d.ts +14 -14
- package/controls/grid/grid.module.ngfactory.d.ts +3 -3
- package/controls/grid/grid.module.ngsummary.d.ts +1 -1
- package/controls/grid/grid.ngfactory.d.ts +3 -3
- package/controls/grid/grid.ngsummary.d.ts +1 -1
- package/controls/grid/gridbutton.d.ts +13 -13
- package/controls/grid/gridbutton.ngfactory.d.ts +3 -3
- package/controls/grid/gridbutton.ngsummary.d.ts +1 -1
- package/controls/grid/gridcolumn.d.ts +17 -17
- package/controls/grid/gridcolumn.ngfactory.d.ts +3 -3
- package/controls/grid/gridcolumn.ngsummary.d.ts +1 -1
- package/controls/grid/gridcolumnaction.d.ts +17 -17
- package/controls/grid/gridcolumnaction.ngfactory.d.ts +3 -3
- package/controls/grid/gridcolumnaction.ngsummary.d.ts +1 -1
- package/controls/grid/gridimage.d.ts +14 -14
- package/controls/grid/gridimage.ngfactory.d.ts +3 -3
- package/controls/grid/gridimage.ngsummary.d.ts +1 -1
- package/controls/grid/paging.d.ts +15 -15
- package/controls/grid/paging.ngfactory.d.ts +3 -3
- package/controls/grid/paging.ngsummary.d.ts +1 -1
- package/controls/input/input.d.ts +17 -17
- package/controls/input/input.module.d.ts +17 -17
- package/controls/input/input.module.ngfactory.d.ts +3 -3
- package/controls/input/input.module.ngsummary.d.ts +1 -1
- package/controls/input/input.ngfactory.d.ts +3 -3
- package/controls/input/input.ngsummary.d.ts +1 -1
- package/controls/input/inputarea.d.ts +17 -17
- package/controls/input/inputarea.ngfactory.d.ts +3 -3
- package/controls/input/inputarea.ngsummary.d.ts +1 -1
- package/controls/input/inputcurrency.d.ts +17 -17
- package/controls/input/inputcurrency.ngfactory.d.ts +3 -3
- package/controls/input/inputcurrency.ngsummary.d.ts +1 -1
- package/controls/input/inputdecimal.d.ts +17 -17
- package/controls/input/inputdecimal.ngfactory.d.ts +3 -3
- package/controls/input/inputdecimal.ngsummary.d.ts +1 -1
- package/controls/input/inputemail.d.ts +17 -17
- package/controls/input/inputemail.ngfactory.d.ts +3 -3
- package/controls/input/inputemail.ngsummary.d.ts +1 -1
- package/controls/input/inputinteger.d.ts +17 -17
- package/controls/input/inputinteger.ngfactory.d.ts +3 -3
- package/controls/input/inputinteger.ngsummary.d.ts +1 -1
- package/controls/input/inputpassword.d.ts +17 -17
- package/controls/input/inputpassword.ngfactory.d.ts +3 -3
- package/controls/input/inputpassword.ngsummary.d.ts +1 -1
- package/controls/input/inputsearch.d.ts +17 -17
- package/controls/input/inputsearch.ngfactory.d.ts +3 -3
- package/controls/input/inputsearch.ngsummary.d.ts +1 -1
- package/controls/layout/formlayout.directive.d.ts +6 -6
- package/controls/layout/formlayout.directive.ngfactory.d.ts +3 -3
- package/controls/layout/formlayout.directive.ngsummary.d.ts +1 -1
- package/controls/layout/layout.module.d.ts +12 -12
- package/controls/layout/layout.module.ngfactory.d.ts +3 -3
- package/controls/layout/layout.module.ngsummary.d.ts +1 -1
- package/controls/layout/tocontrolheight.pipe.d.ts +12 -12
- package/controls/layout/tocontrolheight.pipe.ngfactory.d.ts +3 -3
- package/controls/layout/tocontrolheight.pipe.ngsummary.d.ts +1 -1
- package/controls/layout/tocontrolwidthcss.pipe.d.ts +19 -19
- package/controls/layout/tocontrolwidthcss.pipe.ngfactory.d.ts +3 -3
- package/controls/layout/tocontrolwidthcss.pipe.ngsummary.d.ts +1 -1
- package/controls/layout/tolabelheight.pipe.d.ts +12 -12
- package/controls/layout/tolabelheight.pipe.ngfactory.d.ts +3 -3
- package/controls/layout/tolabelheight.pipe.ngsummary.d.ts +1 -1
- package/controls/layout/tolabelwidthcss.pipe.d.ts +13 -13
- package/controls/layout/tolabelwidthcss.pipe.ngfactory.d.ts +3 -3
- package/controls/layout/tolabelwidthcss.pipe.ngsummary.d.ts +1 -1
- package/controls/list/dropdown.d.ts +33 -33
- package/controls/list/dropdown.module.d.ts +10 -10
- package/controls/list/dropdown.module.ngfactory.d.ts +3 -3
- package/controls/list/dropdown.module.ngsummary.d.ts +1 -1
- package/controls/list/dropdown.ngfactory.d.ts +4 -4
- package/controls/list/dropdown.ngsummary.d.ts +2 -2
- package/controls/list/list.module.d.ts +10 -10
- package/controls/list/list.module.ngfactory.d.ts +3 -3
- package/controls/list/list.module.ngsummary.d.ts +1 -1
- package/controls/list/listbox.d.ts +31 -31
- package/controls/list/listbox.ngfactory.d.ts +4 -4
- package/controls/list/listbox.ngsummary.d.ts +2 -2
- package/controls/multilanguage/multilanguage.module.d.ts +15 -15
- package/controls/multilanguage/multilanguage.module.ngfactory.d.ts +3 -3
- package/controls/multilanguage/multilanguage.module.ngsummary.d.ts +1 -1
- package/controls/multilanguage/multilanguageinput.d.ts +21 -21
- package/controls/multilanguage/multilanguageinput.ngfactory.d.ts +3 -3
- package/controls/multilanguage/multilanguageinput.ngsummary.d.ts +1 -1
- package/controls/multilanguage/multilanguageinputarea.d.ts +21 -21
- package/controls/multilanguage/multilanguageinputarea.ngfactory.d.ts +3 -3
- package/controls/multilanguage/multilanguageinputarea.ngsummary.d.ts +1 -1
- package/controls/multilanguage/multilanguagemenu.d.ts +19 -19
- package/controls/multilanguage/multilanguagemenu.ngfactory.d.ts +3 -3
- package/controls/multilanguage/multilanguagemenu.ngsummary.d.ts +1 -1
- package/controls/multilanguage/multilanguagemenuanchor.d.ts +15 -15
- package/controls/multilanguage/multilanguagemenuanchor.ngfactory.d.ts +3 -3
- package/controls/multilanguage/multilanguagemenuanchor.ngsummary.d.ts +1 -1
- package/controls/multilanguage/multilanguagemenucontainer.d.ts +15 -15
- package/controls/multilanguage/multilanguagemenucontainer.ngfactory.d.ts +3 -3
- package/controls/multilanguage/multilanguagemenucontainer.ngsummary.d.ts +1 -1
- package/controls/multilanguage/multilanguagemenuitembutton.d.ts +14 -14
- package/controls/multilanguage/multilanguagemenuitembutton.ngfactory.d.ts +3 -3
- package/controls/multilanguage/multilanguagemenuitembutton.ngsummary.d.ts +1 -1
- package/controls/static/formcontainer.d.ts +28 -28
- package/controls/static/formcontainer.ngfactory.d.ts +3 -3
- package/controls/static/formcontainer.ngsummary.d.ts +1 -1
- package/controls/static/staticlabel.d.ts +17 -17
- package/controls/static/staticlabel.module.d.ts +11 -11
- package/controls/static/staticlabel.module.ngfactory.d.ts +3 -3
- package/controls/static/staticlabel.module.ngsummary.d.ts +1 -1
- package/controls/static/staticlabel.ngfactory.d.ts +3 -3
- package/controls/static/staticlabel.ngsummary.d.ts +1 -1
- package/controls/tabs/tab.d.ts +20 -20
- package/controls/tabs/tab.ngfactory.d.ts +3 -3
- package/controls/tabs/tab.ngsummary.d.ts +1 -1
- package/controls/tabs/tabitem.d.ts +9 -9
- package/controls/tabs/tabitem.ngfactory.d.ts +3 -3
- package/controls/tabs/tabitem.ngsummary.d.ts +1 -1
- package/controls/tabs/tabs.module.d.ts +9 -9
- package/controls/tabs/tabs.module.ngfactory.d.ts +3 -3
- package/controls/tabs/tabs.module.ngsummary.d.ts +1 -1
- package/controls/tinymce/tinymce.d.ts +23 -23
- package/controls/tinymce/tinymce.module.d.ts +15 -15
- package/controls/tinymce/tinymce.module.ngfactory.d.ts +3 -3
- package/controls/tinymce/tinymce.module.ngsummary.d.ts +1 -1
- package/controls/tinymce/tinymce.ngfactory.d.ts +3 -3
- package/controls/tinymce/tinymce.ngsummary.d.ts +1 -1
- package/controls/tooltip/tooltip.d.ts +37 -37
- package/controls/tooltip/tooltip.module.d.ts +8 -8
- package/controls/tooltip/tooltip.module.ngfactory.d.ts +3 -3
- package/controls/tooltip/tooltip.module.ngsummary.d.ts +1 -1
- package/controls/tooltip/tooltip.ngfactory.d.ts +3 -3
- package/controls/tooltip/tooltip.ngsummary.d.ts +1 -1
- package/controls/treeview/treeview.d.ts +17 -17
- package/controls/treeview/treeview.module.d.ts +11 -11
- package/controls/treeview/treeview.module.ngfactory.d.ts +3 -3
- package/controls/treeview/treeview.module.ngsummary.d.ts +1 -1
- package/controls/treeview/treeview.ngfactory.d.ts +3 -3
- package/controls/treeview/treeview.ngsummary.d.ts +1 -1
- package/controls/upload/dropzonemultiple.d.ts +24 -24
- package/controls/upload/dropzonemultiple.ngfactory.d.ts +3 -3
- package/controls/upload/dropzonemultiple.ngsummary.d.ts +1 -1
- package/controls/upload/dropzonesingle.d.ts +24 -24
- package/controls/upload/dropzonesingle.ngfactory.d.ts +3 -3
- package/controls/upload/dropzonesingle.ngsummary.d.ts +1 -1
- package/controls/upload/upload.d.ts +20 -20
- package/controls/upload/upload.module.d.ts +14 -14
- package/controls/upload/upload.module.ngfactory.d.ts +3 -3
- package/controls/upload/upload.module.ngsummary.d.ts +1 -1
- package/controls/upload/upload.ngfactory.d.ts +3 -3
- package/controls/upload/upload.ngsummary.d.ts +1 -1
- package/controls/upload/uploadmultiple.d.ts +20 -20
- package/controls/upload/uploadmultiple.ngfactory.d.ts +3 -3
- package/controls/upload/uploadmultiple.ngsummary.d.ts +1 -1
- package/controls/validation/validationsummary.d.ts +17 -17
- package/controls/validation/validationsummary.module.d.ts +8 -8
- package/controls/validation/validationsummary.module.ngfactory.d.ts +3 -3
- package/controls/validation/validationsummary.module.ngsummary.d.ts +1 -1
- package/controls/validation/validationsummary.ngfactory.d.ts +3 -3
- package/controls/validation/validationsummary.ngsummary.d.ts +1 -1
- package/controls/wizard/wizard.d.ts +20 -20
- package/controls/wizard/wizard.module.d.ts +9 -9
- package/controls/wizard/wizard.module.ngfactory.d.ts +3 -3
- package/controls/wizard/wizard.module.ngsummary.d.ts +1 -1
- package/controls/wizard/wizard.ngfactory.d.ts +3 -3
- package/controls/wizard/wizard.ngsummary.d.ts +1 -1
- package/controls/wizard/wizarditem.d.ts +9 -9
- package/controls/wizard/wizarditem.ngfactory.d.ts +3 -3
- package/controls/wizard/wizarditem.ngsummary.d.ts +1 -1
- package/esm2020/components/browser/browser.mjs +112 -112
- package/esm2020/components/browser/browser.module.mjs +47 -47
- package/esm2020/components/browser/browser.module.ngfactory.mjs +3 -3
- package/esm2020/components/browser/browser.module.ngsummary.mjs +1 -1
- package/esm2020/components/browser/browser.ngfactory.mjs +3 -3
- package/esm2020/components/browser/browser.ngsummary.mjs +1 -1
- package/esm2020/controls/buttons/button.mjs +18 -18
- package/esm2020/controls/buttons/button.module.mjs +22 -22
- package/esm2020/controls/buttons/button.module.ngfactory.mjs +3 -3
- package/esm2020/controls/buttons/button.module.ngsummary.mjs +1 -1
- package/esm2020/controls/buttons/button.ngfactory.mjs +3 -3
- package/esm2020/controls/buttons/button.ngsummary.mjs +1 -1
- package/esm2020/controls/checkbox/checkbox.mjs +57 -57
- package/esm2020/controls/checkbox/checkbox.module.mjs +44 -44
- package/esm2020/controls/checkbox/checkbox.module.ngfactory.mjs +3 -3
- package/esm2020/controls/checkbox/checkbox.module.ngsummary.mjs +1 -1
- package/esm2020/controls/checkbox/checkbox.ngfactory.mjs +3 -3
- package/esm2020/controls/checkbox/checkbox.ngsummary.mjs +1 -1
- package/esm2020/controls/checkbox/radiobutton.mjs +35 -35
- package/esm2020/controls/checkbox/radiobutton.ngfactory.mjs +3 -3
- package/esm2020/controls/checkbox/radiobutton.ngsummary.mjs +1 -1
- package/esm2020/controls/checkbox/radiobuttons.mjs +57 -57
- package/esm2020/controls/checkbox/radiobuttons.ngfactory.mjs +3 -3
- package/esm2020/controls/checkbox/radiobuttons.ngsummary.mjs +1 -1
- package/esm2020/controls/confirm/confirm.mjs +18 -18
- package/esm2020/controls/confirm/confirm.module.mjs +34 -34
- package/esm2020/controls/confirm/confirm.module.ngfactory.mjs +3 -3
- package/esm2020/controls/confirm/confirm.module.ngsummary.mjs +1 -1
- package/esm2020/controls/confirm/confirm.ngfactory.mjs +3 -3
- package/esm2020/controls/confirm/confirm.ngsummary.mjs +1 -1
- package/esm2020/controls/confirm/confirm.service.mjs +103 -103
- package/esm2020/controls/confirm/confirm.service.ngfactory.mjs +3 -3
- package/esm2020/controls/confirm/confirm.service.ngsummary.mjs +1 -1
- package/esm2020/controls/contextmenu/contextmenu.mjs +34 -34
- package/esm2020/controls/contextmenu/contextmenu.module.mjs +40 -40
- package/esm2020/controls/contextmenu/contextmenu.module.ngfactory.mjs +3 -3
- package/esm2020/controls/contextmenu/contextmenu.module.ngsummary.mjs +1 -1
- package/esm2020/controls/contextmenu/contextmenu.ngfactory.mjs +3 -3
- package/esm2020/controls/contextmenu/contextmenu.ngsummary.mjs +1 -1
- package/esm2020/controls/contextmenu/contextmenuanchor.mjs +36 -36
- package/esm2020/controls/contextmenu/contextmenuanchor.ngfactory.mjs +3 -3
- package/esm2020/controls/contextmenu/contextmenuanchor.ngsummary.mjs +1 -1
- package/esm2020/controls/contextmenu/contextmenucontainer.mjs +36 -36
- package/esm2020/controls/contextmenu/contextmenucontainer.ngfactory.mjs +3 -3
- package/esm2020/controls/contextmenu/contextmenucontainer.ngsummary.mjs +1 -1
- package/esm2020/controls/contextmenu/contextmenuitembutton.mjs +33 -33
- package/esm2020/controls/contextmenu/contextmenuitembutton.ngfactory.mjs +3 -3
- package/esm2020/controls/contextmenu/contextmenuitembutton.ngsummary.mjs +1 -1
- package/esm2020/controls/contextmenu/contextmenuitemsplitter.mjs +25 -25
- package/esm2020/controls/contextmenu/contextmenuitemsplitter.ngfactory.mjs +3 -3
- package/esm2020/controls/contextmenu/contextmenuitemsplitter.ngsummary.mjs +1 -1
- package/esm2020/controls/datetime/date.mjs +70 -70
- package/esm2020/controls/datetime/date.ngfactory.mjs +3 -3
- package/esm2020/controls/datetime/date.ngsummary.mjs +1 -1
- package/esm2020/controls/datetime/dateselector.mjs +16 -16
- package/esm2020/controls/datetime/dateselector.ngfactory.mjs +3 -3
- package/esm2020/controls/datetime/dateselector.ngsummary.mjs +1 -1
- package/esm2020/controls/datetime/datetime.mjs +62 -62
- package/esm2020/controls/datetime/datetime.module.mjs +53 -53
- package/esm2020/controls/datetime/datetime.module.ngfactory.mjs +3 -3
- package/esm2020/controls/datetime/datetime.module.ngsummary.mjs +1 -1
- package/esm2020/controls/datetime/datetime.ngfactory.mjs +3 -3
- package/esm2020/controls/datetime/datetime.ngsummary.mjs +1 -1
- package/esm2020/controls/datetime/time.mjs +62 -62
- package/esm2020/controls/datetime/time.ngfactory.mjs +3 -3
- package/esm2020/controls/datetime/time.ngsummary.mjs +1 -1
- package/esm2020/controls/dialog/dialog.mjs +42 -42
- package/esm2020/controls/dialog/dialog.module.mjs +22 -22
- package/esm2020/controls/dialog/dialog.module.ngfactory.mjs +3 -3
- package/esm2020/controls/dialog/dialog.module.ngsummary.mjs +1 -1
- package/esm2020/controls/dialog/dialog.ngfactory.mjs +3 -3
- package/esm2020/controls/dialog/dialog.ngsummary.mjs +1 -1
- package/esm2020/controls/form/form.mjs +42 -42
- package/esm2020/controls/form/form.module.mjs +20 -20
- package/esm2020/controls/form/form.module.ngfactory.mjs +3 -3
- package/esm2020/controls/form/form.module.ngsummary.mjs +1 -1
- package/esm2020/controls/form/form.ngfactory.mjs +3 -3
- package/esm2020/controls/form/form.ngsummary.mjs +1 -1
- package/esm2020/controls/form/inheritform.directive.mjs +68 -68
- package/esm2020/controls/form/inheritform.directive.ngfactory.mjs +3 -3
- package/esm2020/controls/form/inheritform.directive.ngsummary.mjs +1 -1
- package/esm2020/controls/grid/grid.mjs +48 -48
- package/esm2020/controls/grid/grid.module.mjs +48 -48
- package/esm2020/controls/grid/grid.module.ngfactory.mjs +3 -3
- package/esm2020/controls/grid/grid.module.ngsummary.mjs +1 -1
- package/esm2020/controls/grid/grid.ngfactory.mjs +3 -3
- package/esm2020/controls/grid/grid.ngsummary.mjs +1 -1
- package/esm2020/controls/grid/gridbutton.mjs +40 -40
- package/esm2020/controls/grid/gridbutton.ngfactory.mjs +3 -3
- package/esm2020/controls/grid/gridbutton.ngsummary.mjs +1 -1
- package/esm2020/controls/grid/gridcolumn.mjs +35 -35
- package/esm2020/controls/grid/gridcolumn.ngfactory.mjs +3 -3
- package/esm2020/controls/grid/gridcolumn.ngsummary.mjs +1 -1
- package/esm2020/controls/grid/gridcolumnaction.mjs +36 -36
- package/esm2020/controls/grid/gridcolumnaction.ngfactory.mjs +3 -3
- package/esm2020/controls/grid/gridcolumnaction.ngsummary.mjs +1 -1
- package/esm2020/controls/grid/gridimage.mjs +29 -29
- package/esm2020/controls/grid/gridimage.ngfactory.mjs +3 -3
- package/esm2020/controls/grid/gridimage.ngsummary.mjs +1 -1
- package/esm2020/controls/grid/paging.mjs +39 -39
- package/esm2020/controls/grid/paging.ngfactory.mjs +3 -3
- package/esm2020/controls/grid/paging.ngsummary.mjs +1 -1
- package/esm2020/controls/input/input.mjs +50 -50
- package/esm2020/controls/input/input.module.mjs +69 -69
- package/esm2020/controls/input/input.module.ngfactory.mjs +3 -3
- package/esm2020/controls/input/input.module.ngsummary.mjs +1 -1
- package/esm2020/controls/input/input.ngfactory.mjs +3 -3
- package/esm2020/controls/input/input.ngsummary.mjs +1 -1
- package/esm2020/controls/input/inputarea.mjs +58 -58
- package/esm2020/controls/input/inputarea.ngfactory.mjs +3 -3
- package/esm2020/controls/input/inputarea.ngsummary.mjs +1 -1
- package/esm2020/controls/input/inputcurrency.mjs +58 -58
- package/esm2020/controls/input/inputcurrency.ngfactory.mjs +3 -3
- package/esm2020/controls/input/inputcurrency.ngsummary.mjs +1 -1
- package/esm2020/controls/input/inputdecimal.mjs +58 -58
- package/esm2020/controls/input/inputdecimal.ngfactory.mjs +3 -3
- package/esm2020/controls/input/inputdecimal.ngsummary.mjs +1 -1
- package/esm2020/controls/input/inputemail.mjs +58 -58
- package/esm2020/controls/input/inputemail.ngfactory.mjs +3 -3
- package/esm2020/controls/input/inputemail.ngsummary.mjs +1 -1
- package/esm2020/controls/input/inputinteger.mjs +58 -58
- package/esm2020/controls/input/inputinteger.ngfactory.mjs +3 -3
- package/esm2020/controls/input/inputinteger.ngsummary.mjs +1 -1
- package/esm2020/controls/input/inputpassword.mjs +58 -58
- package/esm2020/controls/input/inputpassword.ngfactory.mjs +3 -3
- package/esm2020/controls/input/inputpassword.ngsummary.mjs +1 -1
- package/esm2020/controls/input/inputsearch.mjs +58 -58
- package/esm2020/controls/input/inputsearch.ngfactory.mjs +3 -3
- package/esm2020/controls/input/inputsearch.ngsummary.mjs +1 -1
- package/esm2020/controls/layout/formlayout.directive.mjs +14 -14
- package/esm2020/controls/layout/formlayout.directive.ngfactory.mjs +3 -3
- package/esm2020/controls/layout/formlayout.directive.ngsummary.mjs +1 -1
- package/esm2020/controls/layout/layout.module.mjs +42 -42
- package/esm2020/controls/layout/layout.module.ngfactory.mjs +3 -3
- package/esm2020/controls/layout/layout.module.ngsummary.mjs +1 -1
- package/esm2020/controls/layout/tocontrolheight.pipe.mjs +33 -33
- package/esm2020/controls/layout/tocontrolheight.pipe.ngfactory.mjs +3 -3
- package/esm2020/controls/layout/tocontrolheight.pipe.ngsummary.mjs +1 -1
- package/esm2020/controls/layout/tocontrolwidthcss.pipe.mjs +54 -54
- package/esm2020/controls/layout/tocontrolwidthcss.pipe.ngfactory.mjs +3 -3
- package/esm2020/controls/layout/tocontrolwidthcss.pipe.ngsummary.mjs +1 -1
- package/esm2020/controls/layout/tolabelheight.pipe.mjs +33 -33
- package/esm2020/controls/layout/tolabelheight.pipe.ngfactory.mjs +3 -3
- package/esm2020/controls/layout/tolabelheight.pipe.ngsummary.mjs +1 -1
- package/esm2020/controls/layout/tolabelwidthcss.pipe.mjs +38 -38
- package/esm2020/controls/layout/tolabelwidthcss.pipe.ngfactory.mjs +3 -3
- package/esm2020/controls/layout/tolabelwidthcss.pipe.ngsummary.mjs +1 -1
- package/esm2020/controls/list/dropdown.mjs +86 -86
- package/esm2020/controls/list/dropdown.module.mjs +30 -30
- package/esm2020/controls/list/dropdown.module.ngfactory.mjs +3 -3
- package/esm2020/controls/list/dropdown.module.ngsummary.mjs +1 -1
- package/esm2020/controls/list/dropdown.ngfactory.mjs +3 -3
- package/esm2020/controls/list/dropdown.ngsummary.mjs +2 -2
- package/esm2020/controls/list/list.module.mjs +30 -30
- package/esm2020/controls/list/list.module.ngfactory.mjs +3 -3
- package/esm2020/controls/list/list.module.ngsummary.mjs +1 -1
- package/esm2020/controls/list/listbox.mjs +84 -84
- package/esm2020/controls/list/listbox.ngfactory.mjs +3 -3
- package/esm2020/controls/list/listbox.ngsummary.mjs +2 -2
- package/esm2020/controls/multilanguage/multilanguage.module.mjs +47 -47
- package/esm2020/controls/multilanguage/multilanguage.module.ngfactory.mjs +3 -3
- package/esm2020/controls/multilanguage/multilanguage.module.ngsummary.mjs +1 -1
- package/esm2020/controls/multilanguage/multilanguageinput.mjs +67 -67
- package/esm2020/controls/multilanguage/multilanguageinput.ngfactory.mjs +3 -3
- package/esm2020/controls/multilanguage/multilanguageinput.ngsummary.mjs +1 -1
- package/esm2020/controls/multilanguage/multilanguageinputarea.mjs +67 -67
- package/esm2020/controls/multilanguage/multilanguageinputarea.ngfactory.mjs +3 -3
- package/esm2020/controls/multilanguage/multilanguageinputarea.ngsummary.mjs +1 -1
- package/esm2020/controls/multilanguage/multilanguagemenu.mjs +44 -44
- package/esm2020/controls/multilanguage/multilanguagemenu.ngfactory.mjs +3 -3
- package/esm2020/controls/multilanguage/multilanguagemenu.ngsummary.mjs +1 -1
- package/esm2020/controls/multilanguage/multilanguagemenuanchor.mjs +36 -36
- package/esm2020/controls/multilanguage/multilanguagemenuanchor.ngfactory.mjs +3 -3
- package/esm2020/controls/multilanguage/multilanguagemenuanchor.ngsummary.mjs +1 -1
- package/esm2020/controls/multilanguage/multilanguagemenucontainer.mjs +36 -36
- package/esm2020/controls/multilanguage/multilanguagemenucontainer.ngfactory.mjs +3 -3
- package/esm2020/controls/multilanguage/multilanguagemenucontainer.ngsummary.mjs +1 -1
- package/esm2020/controls/multilanguage/multilanguagemenuitembutton.mjs +34 -34
- package/esm2020/controls/multilanguage/multilanguagemenuitembutton.ngfactory.mjs +3 -3
- package/esm2020/controls/multilanguage/multilanguagemenuitembutton.ngsummary.mjs +1 -1
- package/esm2020/controls/static/formcontainer.mjs +69 -69
- package/esm2020/controls/static/formcontainer.ngfactory.mjs +3 -3
- package/esm2020/controls/static/formcontainer.ngsummary.mjs +1 -1
- package/esm2020/controls/static/staticlabel.mjs +58 -58
- package/esm2020/controls/static/staticlabel.module.mjs +31 -31
- package/esm2020/controls/static/staticlabel.module.ngfactory.mjs +3 -3
- package/esm2020/controls/static/staticlabel.module.ngsummary.mjs +1 -1
- package/esm2020/controls/static/staticlabel.ngfactory.mjs +3 -3
- package/esm2020/controls/static/staticlabel.ngsummary.mjs +1 -1
- package/esm2020/controls/tabs/tab.mjs +27 -27
- package/esm2020/controls/tabs/tab.ngfactory.mjs +3 -3
- package/esm2020/controls/tabs/tab.ngsummary.mjs +1 -1
- package/esm2020/controls/tabs/tabitem.mjs +16 -16
- package/esm2020/controls/tabs/tabitem.ngfactory.mjs +3 -3
- package/esm2020/controls/tabs/tabitem.ngsummary.mjs +1 -1
- package/esm2020/controls/tabs/tabs.module.mjs +23 -23
- package/esm2020/controls/tabs/tabs.module.ngfactory.mjs +3 -3
- package/esm2020/controls/tabs/tabs.module.ngsummary.mjs +1 -1
- package/esm2020/controls/tinymce/tinymce.mjs +73 -73
- package/esm2020/controls/tinymce/tinymce.module.mjs +50 -50
- package/esm2020/controls/tinymce/tinymce.module.ngfactory.mjs +3 -3
- package/esm2020/controls/tinymce/tinymce.module.ngsummary.mjs +1 -1
- package/esm2020/controls/tinymce/tinymce.ngfactory.mjs +3 -3
- package/esm2020/controls/tinymce/tinymce.ngsummary.mjs +1 -1
- package/esm2020/controls/tooltip/tooltip.mjs +50 -50
- package/esm2020/controls/tooltip/tooltip.module.mjs +18 -18
- package/esm2020/controls/tooltip/tooltip.module.ngfactory.mjs +3 -3
- package/esm2020/controls/tooltip/tooltip.module.ngsummary.mjs +1 -1
- package/esm2020/controls/tooltip/tooltip.ngfactory.mjs +3 -3
- package/esm2020/controls/tooltip/tooltip.ngsummary.mjs +1 -1
- package/esm2020/controls/treeview/treeview.mjs +58 -58
- package/esm2020/controls/treeview/treeview.module.mjs +21 -21
- package/esm2020/controls/treeview/treeview.module.ngfactory.mjs +3 -3
- package/esm2020/controls/treeview/treeview.module.ngsummary.mjs +1 -1
- package/esm2020/controls/treeview/treeview.ngfactory.mjs +3 -3
- package/esm2020/controls/treeview/treeview.ngsummary.mjs +1 -1
- package/esm2020/controls/upload/dropzonemultiple.mjs +69 -69
- package/esm2020/controls/upload/dropzonemultiple.ngfactory.mjs +3 -3
- package/esm2020/controls/upload/dropzonemultiple.ngsummary.mjs +1 -1
- package/esm2020/controls/upload/dropzonesingle.mjs +69 -69
- package/esm2020/controls/upload/dropzonesingle.ngfactory.mjs +3 -3
- package/esm2020/controls/upload/dropzonesingle.ngsummary.mjs +1 -1
- package/esm2020/controls/upload/upload.mjs +61 -61
- package/esm2020/controls/upload/upload.module.mjs +53 -53
- package/esm2020/controls/upload/upload.module.ngfactory.mjs +3 -3
- package/esm2020/controls/upload/upload.module.ngsummary.mjs +1 -1
- package/esm2020/controls/upload/upload.ngfactory.mjs +3 -3
- package/esm2020/controls/upload/upload.ngsummary.mjs +1 -1
- package/esm2020/controls/upload/uploadmultiple.mjs +61 -61
- package/esm2020/controls/upload/uploadmultiple.ngfactory.mjs +3 -3
- package/esm2020/controls/upload/uploadmultiple.ngsummary.mjs +1 -1
- package/esm2020/controls/validation/validationsummary.mjs +43 -43
- package/esm2020/controls/validation/validationsummary.module.mjs +22 -22
- package/esm2020/controls/validation/validationsummary.module.ngfactory.mjs +3 -3
- package/esm2020/controls/validation/validationsummary.module.ngsummary.mjs +1 -1
- package/esm2020/controls/validation/validationsummary.ngfactory.mjs +3 -3
- package/esm2020/controls/validation/validationsummary.ngsummary.mjs +1 -1
- package/esm2020/controls/wizard/wizard.mjs +32 -32
- package/esm2020/controls/wizard/wizard.module.mjs +23 -23
- package/esm2020/controls/wizard/wizard.module.ngfactory.mjs +3 -3
- package/esm2020/controls/wizard/wizard.module.ngsummary.mjs +1 -1
- package/esm2020/controls/wizard/wizard.ngfactory.mjs +3 -3
- package/esm2020/controls/wizard/wizard.ngsummary.mjs +1 -1
- package/esm2020/controls/wizard/wizarditem.mjs +15 -15
- package/esm2020/controls/wizard/wizarditem.ngfactory.mjs +3 -3
- package/esm2020/controls/wizard/wizarditem.ngsummary.mjs +1 -1
- package/esm2020/public_api.mjs +82 -82
- package/esm2020/public_api.ngfactory.mjs +1 -1
- package/esm2020/public_api.ngsummary.mjs +1 -1
- package/esm2020/simpleangularcontrols-sac-bootstrap4.mjs +4 -4
- package/fesm2015/simpleangularcontrols-sac-bootstrap4.mjs +3014 -3014
- package/fesm2015/simpleangularcontrols-sac-bootstrap4.mjs.map +1 -1
- package/fesm2020/simpleangularcontrols-sac-bootstrap4.mjs +2950 -2950
- package/fesm2020/simpleangularcontrols-sac-bootstrap4.mjs.map +1 -1
- package/package.json +43 -43
- package/public_api.d.ts +76 -76
- package/public_api.ngfactory.d.ts +1 -1
- package/public_api.ngsummary.d.ts +1 -1
- package/simpleangularcontrols-sac-bootstrap4-13.0.0-rc.14.tgz +0 -0
- package/simpleangularcontrols-sac-bootstrap4.d.ts +5 -5
- package/simpleangularcontrols-sac-bootstrap4-13.0.0-rc.13.tgz +0 -0
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import { QueryList } from '@angular/core';
|
|
2
|
-
import { SacWizardCommon, SacWizardItemCommon } from '@simpleangularcontrols/sac-common';
|
|
3
|
-
import { SacWizardItemComponent } from './wizarditem';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
/**
|
|
6
|
-
* Wizard Komponente
|
|
7
|
-
*/
|
|
8
|
-
export declare class SacWizardComponent extends SacWizardCommon {
|
|
9
|
-
/**
|
|
10
|
-
* Wizard Items
|
|
11
|
-
*/
|
|
12
|
-
_wizardItems: QueryList<SacWizardItemComponent>;
|
|
13
|
-
/**
|
|
14
|
-
* Gibt die Wizard Items zurück
|
|
15
|
-
* @returns Collection von WizardItems
|
|
16
|
-
*/
|
|
17
|
-
wizardItems(): QueryList<SacWizardItemCommon>;
|
|
18
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<SacWizardComponent, never>;
|
|
19
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SacWizardComponent, "sac-wizard", never, {}, {}, ["_wizardItems"], never>;
|
|
20
|
-
}
|
|
1
|
+
import { QueryList } from '@angular/core';
|
|
2
|
+
import { SacWizardCommon, SacWizardItemCommon } from '@simpleangularcontrols/sac-common';
|
|
3
|
+
import { SacWizardItemComponent } from './wizarditem';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
/**
|
|
6
|
+
* Wizard Komponente
|
|
7
|
+
*/
|
|
8
|
+
export declare class SacWizardComponent extends SacWizardCommon {
|
|
9
|
+
/**
|
|
10
|
+
* Wizard Items
|
|
11
|
+
*/
|
|
12
|
+
_wizardItems: QueryList<SacWizardItemComponent>;
|
|
13
|
+
/**
|
|
14
|
+
* Gibt die Wizard Items zurück
|
|
15
|
+
* @returns Collection von WizardItems
|
|
16
|
+
*/
|
|
17
|
+
wizardItems(): QueryList<SacWizardItemCommon>;
|
|
18
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SacWizardComponent, never>;
|
|
19
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SacWizardComponent, "sac-wizard", never, {}, {}, ["_wizardItems"], never>;
|
|
20
|
+
}
|
|
21
21
|
//# sourceMappingURL=wizard.d.ts.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import * as i0 from "@angular/core";
|
|
2
|
-
import * as i1 from "./wizard";
|
|
3
|
-
import * as i2 from "./wizarditem";
|
|
4
|
-
import * as i3 from "@angular/common";
|
|
5
|
-
export declare class SACBootstrap4WizardModule {
|
|
6
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<SACBootstrap4WizardModule, never>;
|
|
7
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<SACBootstrap4WizardModule, [typeof i1.SacWizardComponent, typeof i2.SacWizardItemComponent], [typeof i3.CommonModule], [typeof i1.SacWizardComponent, typeof i2.SacWizardItemComponent]>;
|
|
8
|
-
static ɵinj: i0.ɵɵInjectorDeclaration<SACBootstrap4WizardModule>;
|
|
9
|
-
}
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import * as i1 from "./wizard";
|
|
3
|
+
import * as i2 from "./wizarditem";
|
|
4
|
+
import * as i3 from "@angular/common";
|
|
5
|
+
export declare class SACBootstrap4WizardModule {
|
|
6
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SACBootstrap4WizardModule, never>;
|
|
7
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<SACBootstrap4WizardModule, [typeof i1.SacWizardComponent, typeof i2.SacWizardItemComponent], [typeof i3.CommonModule], [typeof i1.SacWizardComponent, typeof i2.SacWizardItemComponent]>;
|
|
8
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<SACBootstrap4WizardModule>;
|
|
9
|
+
}
|
|
10
10
|
//# sourceMappingURL=wizard.module.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as i0 from '@angular/core';
|
|
2
|
-
export declare const SACBootstrap4WizardModuleNgFactory: i0.ɵNgModuleFactory<any>;
|
|
3
|
-
export declare const ɵNonEmptyModule = true;
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
export declare const SACBootstrap4WizardModuleNgFactory: i0.ɵNgModuleFactory<any>;
|
|
3
|
+
export declare const ɵNonEmptyModule = true;
|
|
4
4
|
//# sourceMappingURL=wizard.module.ngfactory.d.ts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const SACBootstrap4WizardModuleNgSummary: any;
|
|
1
|
+
export declare const SACBootstrap4WizardModuleNgSummary: any;
|
|
2
2
|
//# sourceMappingURL=wizard.module.ngsummary.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as i0 from '@angular/core';
|
|
2
|
-
export declare const SacWizardComponentNgFactory: i0.ɵNgModuleFactory<any>;
|
|
3
|
-
export declare const ɵNonEmptyModule = true;
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
export declare const SacWizardComponentNgFactory: i0.ɵNgModuleFactory<any>;
|
|
3
|
+
export declare const ɵNonEmptyModule = true;
|
|
4
4
|
//# sourceMappingURL=wizard.ngfactory.d.ts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const SacWizardComponentNgSummary: any;
|
|
1
|
+
export declare const SacWizardComponentNgSummary: any;
|
|
2
2
|
//# sourceMappingURL=wizard.ngsummary.d.ts.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { SacWizardItemCommon } from '@simpleangularcontrols/sac-common';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
/**
|
|
4
|
-
* Wizard Komponente Item
|
|
5
|
-
*/
|
|
6
|
-
export declare class SacWizardItemComponent extends SacWizardItemCommon {
|
|
7
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<SacWizardItemComponent, never>;
|
|
8
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SacWizardItemComponent, "sac-wizarditem", never, {}, {}, never, never>;
|
|
9
|
-
}
|
|
1
|
+
import { SacWizardItemCommon } from '@simpleangularcontrols/sac-common';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* Wizard Komponente Item
|
|
5
|
+
*/
|
|
6
|
+
export declare class SacWizardItemComponent extends SacWizardItemCommon {
|
|
7
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SacWizardItemComponent, never>;
|
|
8
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SacWizardItemComponent, "sac-wizarditem", never, {}, {}, never, never>;
|
|
9
|
+
}
|
|
10
10
|
//# sourceMappingURL=wizarditem.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as i0 from '@angular/core';
|
|
2
|
-
export declare const SacWizardItemComponentNgFactory: i0.ɵNgModuleFactory<any>;
|
|
3
|
-
export declare const ɵNonEmptyModule = true;
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
export declare const SacWizardItemComponentNgFactory: i0.ɵNgModuleFactory<any>;
|
|
3
|
+
export declare const ɵNonEmptyModule = true;
|
|
4
4
|
//# sourceMappingURL=wizarditem.ngfactory.d.ts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const SacWizardItemComponentNgSummary: any;
|
|
1
|
+
export declare const SacWizardItemComponentNgSummary: any;
|
|
2
2
|
//# sourceMappingURL=wizarditem.ngsummary.d.ts.map
|
|
@@ -1,112 +1,112 @@
|
|
|
1
|
-
import { Component, ViewChild } from '@angular/core';
|
|
2
|
-
import { SacFileBrowserCommon, } from '@simpleangularcontrols/sac-common';
|
|
3
|
-
import { Observable, forkJoin } from 'rxjs';
|
|
4
|
-
import { ServiceConfirm } from '../../controls/confirm/confirm.service';
|
|
5
|
-
import { SacDropzoneMultipleComponent } from '../../controls/upload/dropzonemultiple';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "@angular/common/http";
|
|
8
|
-
import * as i2 from "../../controls/confirm/confirm.service";
|
|
9
|
-
import * as i3 from "../../controls/contextmenu/contextmenu";
|
|
10
|
-
import * as i4 from "../../controls/contextmenu/contextmenuitembutton";
|
|
11
|
-
import * as i5 from "../../controls/contextmenu/contextmenuitemsplitter";
|
|
12
|
-
import * as i6 from "../../controls/upload/dropzonemultiple";
|
|
13
|
-
import * as i7 from "@angular/common";
|
|
14
|
-
import * as i8 from "../../controls/form/form";
|
|
15
|
-
import * as i9 from "@angular/forms";
|
|
16
|
-
/**
|
|
17
|
-
* Server File Browser Komponente
|
|
18
|
-
*/
|
|
19
|
-
export class SacBrowserComponent extends SacFileBrowserCommon {
|
|
20
|
-
// #endregion Properties
|
|
21
|
-
// #region Constructors
|
|
22
|
-
/**
|
|
23
|
-
* Konstruktor
|
|
24
|
-
* @param httpClient HTTP Client
|
|
25
|
-
* @param injector Angular Dependency Injection Service
|
|
26
|
-
* @param confirmService Confirm Service
|
|
27
|
-
*/
|
|
28
|
-
constructor(httpClient, injector, confirmService) {
|
|
29
|
-
super(httpClient, injector);
|
|
30
|
-
this.confirmService = confirmService;
|
|
31
|
-
}
|
|
32
|
-
// #endregion Constructors
|
|
33
|
-
// #region Public Methods
|
|
34
|
-
/**
|
|
35
|
-
* Confirm Action wenn ein File gelöscht werden soll
|
|
36
|
-
* @param file File das gelöscht werden soll.
|
|
37
|
-
* @returns Observable ob File gelöscht werden kann.
|
|
38
|
-
*/
|
|
39
|
-
confirmDeleteFile(file) {
|
|
40
|
-
return new Observable((observer) => {
|
|
41
|
-
forkJoin({
|
|
42
|
-
title: this.lngResourceService.GetString(this.validationKeyService.FilebrowserButtonDelete),
|
|
43
|
-
message: this.lngResourceService.GetString(this.validationKeyService.FilebrowserConfirmTextDeleteFile),
|
|
44
|
-
}).subscribe((text) => {
|
|
45
|
-
this.confirmService
|
|
46
|
-
.ConfirmMessage(text.title, text.message)
|
|
47
|
-
.subscribe((result) => {
|
|
48
|
-
if (result === 'yes') {
|
|
49
|
-
observer.next(true);
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
observer.next(false);
|
|
53
|
-
}
|
|
54
|
-
observer.complete();
|
|
55
|
-
});
|
|
56
|
-
});
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Confirm Action wenn ein Ordner gelöscht werden soll
|
|
61
|
-
* @param node Ordner der gelöscht werden soll
|
|
62
|
-
* @returns Observable ob Ordner gelöscht kann.
|
|
63
|
-
*/
|
|
64
|
-
confirmDeleteNode(node) {
|
|
65
|
-
return new Observable((observer) => {
|
|
66
|
-
forkJoin({
|
|
67
|
-
title: this.lngResourceService.GetString(this.validationKeyService.FilebrowserButtonDelete),
|
|
68
|
-
message: this.lngResourceService.GetString(this.validationKeyService.FilebrowserConfirmTextDeleteFolder),
|
|
69
|
-
}).subscribe((text) => {
|
|
70
|
-
this.confirmService
|
|
71
|
-
.ConfirmMessage(text.title, text.message)
|
|
72
|
-
.subscribe((result) => {
|
|
73
|
-
if (result === 'yes') {
|
|
74
|
-
observer.next(true);
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
observer.next(false);
|
|
78
|
-
}
|
|
79
|
-
observer.complete();
|
|
80
|
-
});
|
|
81
|
-
});
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Erzeugt ein Array von einer bestimmten grösse
|
|
86
|
-
* @param anzahl Grösse des Array
|
|
87
|
-
* @returns Array
|
|
88
|
-
*/
|
|
89
|
-
count(anzahl) {
|
|
90
|
-
return new Array(anzahl);
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Methode wird aufgerufen, wenn eine Datei verschoben wird
|
|
94
|
-
* @param uploadid Upload ID
|
|
95
|
-
*/
|
|
96
|
-
uploadedFileMoved(uploadid) {
|
|
97
|
-
const item = this.uploadComponent.uploads.find((itm) => itm.documentid === uploadid);
|
|
98
|
-
if (item) {
|
|
99
|
-
this.uploadComponent.cancel(item.uploadId);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
SacBrowserComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacBrowserComponent, deps: [{ token: i1.HttpClient }, { token: i0.Injector }, { token: i2.ServiceConfirm }], target: i0.ɵɵFactoryTarget.Component });
|
|
104
|
-
SacBrowserComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: SacBrowserComponent, selector: "sac-filebrowser", providers: [ServiceConfirm], viewQueries: [{ propertyName: "uploadComponent", first: true, predicate: SacDropzoneMultipleComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"row\">\
|
|
105
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacBrowserComponent, decorators: [{
|
|
106
|
-
type: Component,
|
|
107
|
-
args: [{ selector: 'sac-filebrowser', providers: [ServiceConfirm], template: "<div class=\"row\">\
|
|
108
|
-
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i0.Injector }, { type: i2.ServiceConfirm }]; }, propDecorators: { uploadComponent: [{
|
|
109
|
-
type: ViewChild,
|
|
110
|
-
args: [SacDropzoneMultipleComponent, { static: false }]
|
|
111
|
-
}] } });
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NhYy1ib290c3RyYXA0L3NyYy9jb21wb25lbnRzL2Jyb3dzZXIvYnJvd3Nlci50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NhYy1ib290c3RyYXA0L3NyYy9jb21wb25lbnRzL2Jyb3dzZXIvYnJvd3Nlci5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQVksU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9ELE9BQU8sRUFHTCxvQkFBb0IsR0FDckIsTUFBTSxtQ0FBbUMsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDeEUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7Ozs7Ozs7Ozs7O0FBRXRGOztHQUVHO0FBTUgsTUFBTSxPQUFPLG1CQUFvQixTQUFRLG9CQUFvQjtJQVMzRCx3QkFBd0I7SUFFeEIsdUJBQXVCO0lBRXZCOzs7OztPQUtHO0lBQ0gsWUFDRSxVQUFzQixFQUN0QixRQUFrQixFQUNWLGNBQThCO1FBRXRDLEtBQUssQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFGcEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO0lBR3hDLENBQUM7SUFFRCwwQkFBMEI7SUFFMUIseUJBQXlCO0lBRXpCOzs7O09BSUc7SUFDSSxpQkFBaUIsQ0FBQyxJQUFrQjtRQUN6QyxPQUFPLElBQUksVUFBVSxDQUFVLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDMUMsUUFBUSxDQUFDO2dCQUNQLEtBQUssRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUN0QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsdUJBQXVCLENBQ2xEO2dCQUNELE9BQU8sRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUN4QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsZ0NBQWdDLENBQzNEO2FBQ0YsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUNwQixJQUFJLENBQUMsY0FBYztxQkFDaEIsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQztxQkFDeEMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7b0JBQ3BCLElBQUksTUFBTSxLQUFLLEtBQUssRUFBRTt3QkFDcEIsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztxQkFDckI7eUJBQU07d0JBQ0wsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztxQkFDdEI7b0JBQ0QsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN0QixDQUFDLENBQUMsQ0FBQztZQUNQLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGlCQUFpQixDQUFDLElBQWtCO1FBQ3pDLE9BQU8sSUFBSSxVQUFVLENBQVUsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUMxQyxRQUFRLENBQUM7Z0JBQ1AsS0FBSyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQ3RDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyx1QkFBdUIsQ0FDbEQ7Z0JBQ0QsT0FBTyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQ3hDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxrQ0FBa0MsQ0FDN0Q7YUFDRixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxjQUFjO3FCQUNoQixjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDO3FCQUN4QyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtvQkFDcEIsSUFBSSxNQUFNLEtBQUssS0FBSyxFQUFFO3dCQUNwQixRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO3FCQUNyQjt5QkFBTTt3QkFDTCxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO3FCQUN0QjtvQkFDRCxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3RCLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksS0FBSyxDQUFDLE1BQWM7UUFDekIsT0FBTyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksaUJBQWlCLENBQUMsUUFBZ0I7UUFDdkMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUM1QyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsS0FBSyxRQUFRLENBQ3JDLENBQUM7UUFFRixJQUFJLElBQUksRUFBRTtZQUNSLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUM1QztJQUNILENBQUM7O2dIQTlHVSxtQkFBbUI7b0dBQW5CLG1CQUFtQiwwQ0FGbkIsQ0FBQyxjQUFjLENBQUMsMkVBUWhCLDRCQUE0Qix1RUN6QnpDLG1sUEFnTEE7MkZEN0phLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxpQkFBaUIsYUFFaEIsQ0FBQyxjQUFjLENBQUM7cUpBU25CLGVBQWU7c0JBRHRCLFNBQVM7dUJBQUMsNEJBQTRCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3RvciwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgSUJyb3dzZXJGaWxlLFxyXG4gIElCcm93c2VyTm9kZSxcclxuICBTYWNGaWxlQnJvd3NlckNvbW1vbixcclxufSBmcm9tICdAc2ltcGxlYW5ndWxhcmNvbnRyb2xzL3NhYy1jb21tb24nO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmb3JrSm9pbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTZXJ2aWNlQ29uZmlybSB9IGZyb20gJy4uLy4uL2NvbnRyb2xzL2NvbmZpcm0vY29uZmlybS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2FjRHJvcHpvbmVNdWx0aXBsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbnRyb2xzL3VwbG9hZC9kcm9wem9uZW11bHRpcGxlJztcclxuXHJcbi8qKlxyXG4gKiBTZXJ2ZXIgRmlsZSBCcm93c2VyIEtvbXBvbmVudGVcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2FjLWZpbGVicm93c2VyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYnJvd3Nlci5odG1sJyxcclxuICBwcm92aWRlcnM6IFtTZXJ2aWNlQ29uZmlybV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTYWNCcm93c2VyQ29tcG9uZW50IGV4dGVuZHMgU2FjRmlsZUJyb3dzZXJDb21tb24ge1xyXG4gIC8vICNyZWdpb24gUHJvcGVydGllc1xyXG5cclxuICAvKipcclxuICAgKiBSZWZlcmVueiBhdWYgVXBsb2FkIENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBWaWV3Q2hpbGQoU2FjRHJvcHpvbmVNdWx0aXBsZUNvbXBvbmVudCwgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgcHJpdmF0ZSB1cGxvYWRDb21wb25lbnQ6IFNhY0Ryb3B6b25lTXVsdGlwbGVDb21wb25lbnQ7XHJcblxyXG4gIC8vICNlbmRyZWdpb24gUHJvcGVydGllc1xyXG5cclxuICAvLyAjcmVnaW9uIENvbnN0cnVjdG9yc1xyXG5cclxuICAvKipcclxuICAgKiBLb25zdHJ1a3RvclxyXG4gICAqIEBwYXJhbSBodHRwQ2xpZW50IEhUVFAgQ2xpZW50XHJcbiAgICogQHBhcmFtIGluamVjdG9yIEFuZ3VsYXIgRGVwZW5kZW5jeSBJbmplY3Rpb24gU2VydmljZVxyXG4gICAqIEBwYXJhbSBjb25maXJtU2VydmljZSBDb25maXJtIFNlcnZpY2VcclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXHJcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBwcml2YXRlIGNvbmZpcm1TZXJ2aWNlOiBTZXJ2aWNlQ29uZmlybVxyXG4gICkge1xyXG4gICAgc3VwZXIoaHR0cENsaWVudCwgaW5qZWN0b3IpO1xyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvbiBDb25zdHJ1Y3RvcnNcclxuXHJcbiAgLy8gI3JlZ2lvbiBQdWJsaWMgTWV0aG9kc1xyXG5cclxuICAvKipcclxuICAgKiBDb25maXJtIEFjdGlvbiB3ZW5uIGVpbiBGaWxlIGdlbMO2c2NodCB3ZXJkZW4gc29sbFxyXG4gICAqIEBwYXJhbSBmaWxlIEZpbGUgZGFzIGdlbMO2c2NodCB3ZXJkZW4gc29sbC5cclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIG9iIEZpbGUgZ2Vsw7ZzY2h0IHdlcmRlbiBrYW5uLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBjb25maXJtRGVsZXRlRmlsZShmaWxlOiBJQnJvd3NlckZpbGUpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxib29sZWFuPigob2JzZXJ2ZXIpID0+IHtcclxuICAgICAgZm9ya0pvaW4oe1xyXG4gICAgICAgIHRpdGxlOiB0aGlzLmxuZ1Jlc291cmNlU2VydmljZS5HZXRTdHJpbmcoXHJcbiAgICAgICAgICB0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlLkZpbGVicm93c2VyQnV0dG9uRGVsZXRlXHJcbiAgICAgICAgKSxcclxuICAgICAgICBtZXNzYWdlOiB0aGlzLmxuZ1Jlc291cmNlU2VydmljZS5HZXRTdHJpbmcoXHJcbiAgICAgICAgICB0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlLkZpbGVicm93c2VyQ29uZmlybVRleHREZWxldGVGaWxlXHJcbiAgICAgICAgKSxcclxuICAgICAgfSkuc3Vic2NyaWJlKCh0ZXh0KSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb25maXJtU2VydmljZVxyXG4gICAgICAgICAgLkNvbmZpcm1NZXNzYWdlKHRleHQudGl0bGUsIHRleHQubWVzc2FnZSlcclxuICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzdWx0ID09PSAneWVzJykge1xyXG4gICAgICAgICAgICAgIG9ic2VydmVyLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29uZmlybSBBY3Rpb24gd2VubiBlaW4gT3JkbmVyIGdlbMO2c2NodCB3ZXJkZW4gc29sbFxyXG4gICAqIEBwYXJhbSBub2RlIE9yZG5lciBkZXIgZ2Vsw7ZzY2h0IHdlcmRlbiBzb2xsXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZSBvYiBPcmRuZXIgZ2Vsw7ZzY2h0IGthbm4uXHJcbiAgICovXHJcbiAgcHVibGljIGNvbmZpcm1EZWxldGVOb2RlKG5vZGU6IElCcm93c2VyTm9kZSk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPGJvb2xlYW4+KChvYnNlcnZlcikgPT4ge1xyXG4gICAgICBmb3JrSm9pbih7XHJcbiAgICAgICAgdGl0bGU6IHRoaXMubG5nUmVzb3VyY2VTZXJ2aWNlLkdldFN0cmluZyhcclxuICAgICAgICAgIHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuRmlsZWJyb3dzZXJCdXR0b25EZWxldGVcclxuICAgICAgICApLFxyXG4gICAgICAgIG1lc3NhZ2U6IHRoaXMubG5nUmVzb3VyY2VTZXJ2aWNlLkdldFN0cmluZyhcclxuICAgICAgICAgIHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuRmlsZWJyb3dzZXJDb25maXJtVGV4dERlbGV0ZUZvbGRlclxyXG4gICAgICAgICksXHJcbiAgICAgIH0pLnN1YnNjcmliZSgodGV4dCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY29uZmlybVNlcnZpY2VcclxuICAgICAgICAgIC5Db25maXJtTWVzc2FnZSh0ZXh0LnRpdGxlLCB0ZXh0Lm1lc3NhZ2UpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgaWYgKHJlc3VsdCA9PT0gJ3llcycpIHtcclxuICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KHRydWUpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIG9ic2VydmVyLm5leHQoZmFsc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVyemV1Z3QgZWluIEFycmF5IHZvbiBlaW5lciBiZXN0aW1tdGVuIGdyw7Zzc2VcclxuICAgKiBAcGFyYW0gYW56YWhsIEdyw7Zzc2UgZGVzIEFycmF5XHJcbiAgICogQHJldHVybnMgQXJyYXlcclxuICAgKi9cclxuICBwdWJsaWMgY291bnQoYW56YWhsOiBudW1iZXIpOiBBcnJheTx2b2lkPiB7XHJcbiAgICByZXR1cm4gbmV3IEFycmF5KGFuemFobCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRob2RlIHdpcmQgYXVmZ2VydWZlbiwgd2VubiBlaW5lIERhdGVpIHZlcnNjaG9iZW4gd2lyZFxyXG4gICAqIEBwYXJhbSB1cGxvYWRpZCBVcGxvYWQgSURcclxuICAgKi9cclxuICBwdWJsaWMgdXBsb2FkZWRGaWxlTW92ZWQodXBsb2FkaWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgaXRlbSA9IHRoaXMudXBsb2FkQ29tcG9uZW50LnVwbG9hZHMuZmluZChcclxuICAgICAgKGl0bSkgPT4gaXRtLmRvY3VtZW50aWQgPT09IHVwbG9hZGlkXHJcbiAgICApO1xyXG5cclxuICAgIGlmIChpdGVtKSB7XHJcbiAgICAgIHRoaXMudXBsb2FkQ29tcG9uZW50LmNhbmNlbChpdGVtLnVwbG9hZElkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vICNlbmRyZWdpb24gUHVibGljIE1ldGhvZHNcclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtbWQtNSBjb2wtbGctNFwiPlxyXG4gICAgPHVsIGNsYXNzPVwibGlzdC1ncm91cCBsaXN0LWdyb3VwLWZsdXNoXCI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZVxyXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRyZWVJdGVtXCJcclxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie25vZGU6IHJvb3ROb2RlLCBkZWVwOiAwfVwiXHJcbiAgICAgID48L25nLXRlbXBsYXRlPlxyXG4gICAgPC91bD5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgI3RyZWVJdGVtIGxldC1ub2RlPVwibm9kZVwiIGxldC1kZWVwPVwiZGVlcFwiPlxyXG4gICAgICA8bGlcclxuICAgICAgICBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBweS0xIHB4LTIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgW2NsYXNzLmxpc3QtZ3JvdXAtaXRlbS1zZWNvbmRhcnldPVwibm9kZSA9PT0gc2VsZWN0ZWROb2RlXCJcclxuICAgICAgICAoY2xpY2spPVwic2VsZWN0Tm9kZShub2RlKVwiXHJcbiAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm14LTNcIiAqbmdGb3I9XCJsZXQgaSBvZiBjb3VudChkZWVwKVwiPjwvZGl2PlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIChjbGljayk9XCJzd2l0Y2hFeHBhbmROb2RlKG5vZGUpOyRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIlxyXG4gICAgICAgICAgY2xhc3M9XCJtci0yXCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cIm5vZGUuQ2hpbGROb2Rlcy5sZW5ndGggPT09IDAgPyBpY29uRm9sZGVyRW1wdHk6ICghbm9kZS5Jc0V4cGFuZGVkICYmIG5vZGUuQ2hpbGROb2Rlcy5sZW5ndGggPiAwID8gaWNvbkZvbGRlckNvbGxhYnNlZCA6IChub2RlLklzRXhwYW5kZWQgJiYgbm9kZS5DaGlsZE5vZGVzLmxlbmd0aCA+IDAgPyBpY29uRm9sZGVyT3BlbiA6ICcnKSlcIlxyXG4gICAgICAgID48L2Rpdj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW5vZGUuSXNFZGl0TW9kZVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xXCI+e3sgbm9kZS5OYW1lIH19PC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5vZGUuSXNFZGl0TW9kZVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xXCIgbmdGb3JtPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBuYW1lPVwiZWRpdEZvbGRlclwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcclxuICAgICAgICAgICAgICBbbmdNb2RlbF09XCJub2RlLk5hbWVcIlxyXG4gICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7dXBkYXRlT246ICdibHVyJ31cIlxyXG4gICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInJlbmFtZU5vZGUobm9kZSwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiJGV2ZW50LnRhcmdldC5ibHVyKCk7ZmFsc2U7XCJcclxuICAgICAgICAgICAgICAoYmx1cik9XCJyZW5hbWVOb2RlKG5vZGUsIG51bGwpXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LXNocmluay0wXCI+XHJcbiAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAqbmdJZj1cIm5vZGUuUGF0aCAhPT0gJy8nICYmIGFsbG93Zm9sZGVycmVuYW1lXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saW5rIHRleHQtc2Vjb25kYXJ5XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImVkaXROb2RlKG5vZGUpOyRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aSBbY2xhc3NdPVwiaWNvbkVkaXRcIj48L2k+XHJcbiAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICA8c2FjLWNvbnRleHRtZW51IGNzc2NsYXNzPVwiZC1pbmxpbmUtYmxvY2tcIj5cclxuICAgICAgICAgICAgPHNhYy1jb250ZXh0bWVudWJ1dHRvblxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiYWxsb3dmb2xkZXJjcmVhdGVcIlxyXG4gICAgICAgICAgICAgIHRleHQ9XCJ7eyBsbmdSZXNvdXJjZVNlcnZpY2UuR2V0U3RyaW5nKHZhbGlkYXRpb25LZXlTZXJ2aWNlLkZpbGVicm93c2VyQnV0dG9uTmV3Rm9sZGVyKSB8IGFzeW5jIH19XCJcclxuICAgICAgICAgICAgICBbaWNvbl09XCJpY29uRm9sZGVyTmV3XCJcclxuICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJuZXdOb2RlKG5vZGUpXCJcclxuICAgICAgICAgICAgPjwvc2FjLWNvbnRleHRtZW51YnV0dG9uPlxyXG4gICAgICAgICAgICA8c2FjLWNvbnRleHRtZW51YnV0dG9uXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJub2RlLlBhdGggIT09ICcvJyAmJiBhbGxvd2ZvbGRlcmRlbGV0ZVwiXHJcbiAgICAgICAgICAgICAgdGV4dD1cInt7IGxuZ1Jlc291cmNlU2VydmljZS5HZXRTdHJpbmcodmFsaWRhdGlvbktleVNlcnZpY2UuRmlsZWJyb3dzZXJCdXR0b25EZWxldGUpIHwgYXN5bmMgfX1cIlxyXG4gICAgICAgICAgICAgIFtpY29uXT1cImljb25EZWxldGVcIlxyXG4gICAgICAgICAgICAgIChjbGlja2VkKT1cImRlbGV0ZU5vZGUobm9kZSlcIlxyXG4gICAgICAgICAgICA+PC9zYWMtY29udGV4dG1lbnVidXR0b24+XHJcbiAgICAgICAgICAgIDxzYWMtY29udGV4dG1lbnVzcGxpdHRlclxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiYWxsb3dmb2xkZXJjcmVhdGUgfHwgKG5vZGUuUGF0aCAhPT0gJy8nICYmIGFsbG93Zm9sZGVyZGVsZXRlKVwiXHJcbiAgICAgICAgICAgID48L3NhYy1jb250ZXh0bWVudXNwbGl0dGVyPlxyXG4gICAgICAgICAgICA8c2FjLWNvbnRleHRtZW51YnV0dG9uXHJcbiAgICAgICAgICAgICAgdGV4dD1cInt7IGxuZ1Jlc291cmNlU2VydmljZS5HZXRTdHJpbmcodmFsaWRhdGlvbktleVNlcnZpY2UuRmlsZWJyb3dzZXJCdXR0b25SZWZyZXNoKSB8IGFzeW5jIH19XCJcclxuICAgICAgICAgICAgICBbaWNvbl09XCJpY29uUmVmcmVzaFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrZWQpPVwicmVmcmVzaE5vZGUobm9kZSlcIlxyXG4gICAgICAgICAgICA+PC9zYWMtY29udGV4dG1lbnVidXR0b24+XHJcbiAgICAgICAgICA8L3NhYy1jb250ZXh0bWVudT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9saT5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJub2RlLklzRXhwYW5kZWRcIj5cclxuICAgICAgICA8bmctdGVtcGxhdGVcclxuICAgICAgICAgICpuZ0Zvcj1cImxldCBjaGlsZCBvZiBub2RlLkNoaWxkTm9kZXNcIlxyXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidHJlZUl0ZW1cIlxyXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntub2RlOiBjaGlsZCwgZGVlcDogZGVlcCArIDF9XCJcclxuICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLW1kLTcgY29sLWxnLThcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZE5vZGUgJiYgc2VsZWN0ZWROb2RlLkZpbGVzXCI+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJhbGxvd2ZpbGV1cGxvYWRcIiBuZ0Zvcm0+XHJcbiAgICAgICAgPHNhYy1kcm9wem9uZW11bHRpcGxlXHJcbiAgICAgICAgICBbZGlzYWJsZWxhYmVsXT1cInRydWVcIlxyXG4gICAgICAgICAgW2VuZHBvaW50XT1cImFwaXVybCArICcvdXBsb2FkcmVnaXN0ZXInXCJcclxuICAgICAgICAgIG5hbWU9XCJ1cGxvYWRcIlxyXG4gICAgICAgICAgdXBsb2FkaGVpZ2h0PVwiNXJlbVwiXHJcbiAgICAgICAgICBbbmdNb2RlbF09XCJ1cGxvYWRzXCJcclxuICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwbG9hZENvbXBsZXRlKHNlbGVjdGVkTm9kZSwkZXZlbnQpXCJcclxuICAgICAgICAgIFthbGxvd2VkdHlwZXNdPVwiYWxsb3dlZHR5cGVzXCJcclxuICAgICAgICAgID57e1xyXG4gICAgICAgICAgbG5nUmVzb3VyY2VTZXJ2aWNlLkdldFN0cmluZyh2YWxpZGF0aW9uS2V5U2VydmljZS5GaWxlYnJvd3NlckJ1dHRvblVwbG9hZClcclxuICAgICAgICAgIHwgYXN5bmMgfX08L3NhYy1kcm9wem9uZW11bHRpcGxlXHJcbiAgICAgICAgPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1zdHJpcGVkIHRhYmxlLWhvdmVyIGFsaWduLW1pZGRsZVwiPlxyXG4gICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICA8dGg+XHJcbiAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICBsbmdSZXNvdXJjZVNlcnZpY2UuR2V0U3RyaW5nKHZhbGlkYXRpb25LZXlTZXJ2aWNlLkZpbGVicm93c2VyR3JpZEZpbGVuYW1lKVxyXG4gICAgICAgICAgICAgIHwgYXN5bmMgfX1cclxuICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgPHRoPlxyXG4gICAgICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgICAgbG5nUmVzb3VyY2VTZXJ2aWNlLkdldFN0cmluZyh2YWxpZGF0aW9uS2V5U2VydmljZS5GaWxlYnJvd3NlckdyaWRTaXplKVxyXG4gICAgICAgICAgICAgIHwgYXN5bmMgfX1cclxuICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgPHRoIHN0eWxlPVwid2lkdGg6IDgwcHhcIj48L3RoPlxyXG4gICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkTm9kZS5GaWxlcy5sZW5ndGggPT09IDBcIj5cclxuICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjNcIj5cclxuICAgICAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICAgICAgbG5nUmVzb3VyY2VTZXJ2aWNlLkdldFN0cmluZyh2YWxpZGF0aW9uS2V5U2VydmljZS5GaWxlYnJvd3NlckdyaWROb0ZpbGVzKVxyXG4gICAgICAgICAgICAgICAgICB8IGFzeW5jIH19XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWROb2RlLkZpbGVzLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgICAgICA8dHJcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlbGVjdGVkTm9kZS5GaWxlc1wiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0RmlsZShpdGVtKVwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MudGFibGUtcHJpbWFyeV09XCJzZWxlY3RlZEZpbGVJdGVtID09PSBpdGVtXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8dGQgW2NsYXNzLnAtMl09XCJpdGVtLklzRWRpdE1vZGVcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpdGVtLklzRWRpdE1vZGVcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLkZpbGVuYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5Jc0VkaXRNb2RlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZWRpdEZvbGRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cIml0ZW0uRmlsZW5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3VwZGF0ZU9uOiAnYmx1cid9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwicmVuYW1lRmlsZShpdGVtLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiJGV2ZW50LnRhcmdldC5ibHVyKCk7ZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJyZW5hbWVGaWxlKGl0ZW0sIG51bGwpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkPnt7IGl0ZW0uU2l6ZX19PC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLXRvb2xiYXJcIiByb2xlPVwidG9vbGJhclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXAgbWwtYXV0b1wiIHJvbGU9XCJncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhbGxvd2ZpbGVyZW5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpbmsgdGV4dC1zZWNvbmRhcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZWRpdEZpbGUoaXRlbSk7JGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID48aSBbY2xhc3NdPVwiaWNvbkVkaXRcIj48L2lcclxuICAgICAgICAgICAgICAgICAgICAgID48L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cFwiIHJvbGU9XCJncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhbGxvd2ZpbGVkZWxldGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpbmsgdGV4dC1zZWNvbmRhcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlRmlsZShpdGVtKTskZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPjxpIFtjbGFzc109XCJpY29uRGVsZXRlXCI+PC9pXHJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgIDwvdGFibGU+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
1
|
+
import { Component, ViewChild } from '@angular/core';
|
|
2
|
+
import { SacFileBrowserCommon, } from '@simpleangularcontrols/sac-common';
|
|
3
|
+
import { Observable, forkJoin } from 'rxjs';
|
|
4
|
+
import { ServiceConfirm } from '../../controls/confirm/confirm.service';
|
|
5
|
+
import { SacDropzoneMultipleComponent } from '../../controls/upload/dropzonemultiple';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/common/http";
|
|
8
|
+
import * as i2 from "../../controls/confirm/confirm.service";
|
|
9
|
+
import * as i3 from "../../controls/contextmenu/contextmenu";
|
|
10
|
+
import * as i4 from "../../controls/contextmenu/contextmenuitembutton";
|
|
11
|
+
import * as i5 from "../../controls/contextmenu/contextmenuitemsplitter";
|
|
12
|
+
import * as i6 from "../../controls/upload/dropzonemultiple";
|
|
13
|
+
import * as i7 from "@angular/common";
|
|
14
|
+
import * as i8 from "../../controls/form/form";
|
|
15
|
+
import * as i9 from "@angular/forms";
|
|
16
|
+
/**
|
|
17
|
+
* Server File Browser Komponente
|
|
18
|
+
*/
|
|
19
|
+
export class SacBrowserComponent extends SacFileBrowserCommon {
|
|
20
|
+
// #endregion Properties
|
|
21
|
+
// #region Constructors
|
|
22
|
+
/**
|
|
23
|
+
* Konstruktor
|
|
24
|
+
* @param httpClient HTTP Client
|
|
25
|
+
* @param injector Angular Dependency Injection Service
|
|
26
|
+
* @param confirmService Confirm Service
|
|
27
|
+
*/
|
|
28
|
+
constructor(httpClient, injector, confirmService) {
|
|
29
|
+
super(httpClient, injector);
|
|
30
|
+
this.confirmService = confirmService;
|
|
31
|
+
}
|
|
32
|
+
// #endregion Constructors
|
|
33
|
+
// #region Public Methods
|
|
34
|
+
/**
|
|
35
|
+
* Confirm Action wenn ein File gelöscht werden soll
|
|
36
|
+
* @param file File das gelöscht werden soll.
|
|
37
|
+
* @returns Observable ob File gelöscht werden kann.
|
|
38
|
+
*/
|
|
39
|
+
confirmDeleteFile(file) {
|
|
40
|
+
return new Observable((observer) => {
|
|
41
|
+
forkJoin({
|
|
42
|
+
title: this.lngResourceService.GetString(this.validationKeyService.FilebrowserButtonDelete),
|
|
43
|
+
message: this.lngResourceService.GetString(this.validationKeyService.FilebrowserConfirmTextDeleteFile),
|
|
44
|
+
}).subscribe((text) => {
|
|
45
|
+
this.confirmService
|
|
46
|
+
.ConfirmMessage(text.title, text.message)
|
|
47
|
+
.subscribe((result) => {
|
|
48
|
+
if (result === 'yes') {
|
|
49
|
+
observer.next(true);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
observer.next(false);
|
|
53
|
+
}
|
|
54
|
+
observer.complete();
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Confirm Action wenn ein Ordner gelöscht werden soll
|
|
61
|
+
* @param node Ordner der gelöscht werden soll
|
|
62
|
+
* @returns Observable ob Ordner gelöscht kann.
|
|
63
|
+
*/
|
|
64
|
+
confirmDeleteNode(node) {
|
|
65
|
+
return new Observable((observer) => {
|
|
66
|
+
forkJoin({
|
|
67
|
+
title: this.lngResourceService.GetString(this.validationKeyService.FilebrowserButtonDelete),
|
|
68
|
+
message: this.lngResourceService.GetString(this.validationKeyService.FilebrowserConfirmTextDeleteFolder),
|
|
69
|
+
}).subscribe((text) => {
|
|
70
|
+
this.confirmService
|
|
71
|
+
.ConfirmMessage(text.title, text.message)
|
|
72
|
+
.subscribe((result) => {
|
|
73
|
+
if (result === 'yes') {
|
|
74
|
+
observer.next(true);
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
observer.next(false);
|
|
78
|
+
}
|
|
79
|
+
observer.complete();
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Erzeugt ein Array von einer bestimmten grösse
|
|
86
|
+
* @param anzahl Grösse des Array
|
|
87
|
+
* @returns Array
|
|
88
|
+
*/
|
|
89
|
+
count(anzahl) {
|
|
90
|
+
return new Array(anzahl);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Methode wird aufgerufen, wenn eine Datei verschoben wird
|
|
94
|
+
* @param uploadid Upload ID
|
|
95
|
+
*/
|
|
96
|
+
uploadedFileMoved(uploadid) {
|
|
97
|
+
const item = this.uploadComponent.uploads.find((itm) => itm.documentid === uploadid);
|
|
98
|
+
if (item) {
|
|
99
|
+
this.uploadComponent.cancel(item.uploadId);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
SacBrowserComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacBrowserComponent, deps: [{ token: i1.HttpClient }, { token: i0.Injector }, { token: i2.ServiceConfirm }], target: i0.ɵɵFactoryTarget.Component });
|
|
104
|
+
SacBrowserComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: SacBrowserComponent, selector: "sac-filebrowser", providers: [ServiceConfirm], viewQueries: [{ propertyName: "uploadComponent", first: true, predicate: SacDropzoneMultipleComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-12 col-md-5 col-lg-4\">\n <ul class=\"list-group list-group-flush\">\n <ng-template\n [ngTemplateOutlet]=\"treeItem\"\n [ngTemplateOutletContext]=\"{node: rootNode, deep: 0}\"\n ></ng-template>\n </ul>\n\n <ng-template #treeItem let-node=\"node\" let-deep=\"deep\">\n <li\n class=\"list-group-item py-1 px-2 d-flex align-items-center\"\n [class.list-group-item-secondary]=\"node === selectedNode\"\n (click)=\"selectNode(node)\"\n style=\"cursor: pointer\"\n >\n <div class=\"mx-3\" *ngFor=\"let i of count(deep)\"></div>\n <div\n (click)=\"switchExpandNode(node);$event.stopPropagation();\"\n class=\"mr-2\"\n [ngClass]=\"node.ChildNodes.length === 0 ? iconFolderEmpty: (!node.IsExpanded && node.ChildNodes.length > 0 ? iconFolderCollabsed : (node.IsExpanded && node.ChildNodes.length > 0 ? iconFolderOpen : ''))\"\n ></div>\n <ng-container *ngIf=\"!node.IsEditMode\">\n <div class=\"flex-grow-1\">{{ node.Name }}</div>\n </ng-container>\n <ng-container *ngIf=\"node.IsEditMode\">\n <div class=\"flex-grow-1\" ngForm>\n <input\n name=\"editFolder\"\n class=\"form-control form-control-sm\"\n [ngModel]=\"node.Name\"\n [ngModelOptions]=\"{updateOn: 'blur'}\"\n (ngModelChange)=\"renameNode(node, $event)\"\n (keydown.enter)=\"$event.target.blur();false;\"\n (blur)=\"renameNode(node, null)\"\n (click)=\"$event.stopPropagation()\"\n />\n </div>\n </ng-container>\n <div class=\"flex-shrink-0\">\n <a\n *ngIf=\"node.Path !== '/' && allowfolderrename\"\n class=\"btn btn-sm btn-link text-secondary\"\n (click)=\"editNode(node);$event.stopPropagation();\"\n >\n <i [class]=\"iconEdit\"></i>\n </a>\n <sac-contextmenu cssclass=\"d-inline-block\">\n <sac-contextmenubutton\n *ngIf=\"allowfoldercreate\"\n text=\"{{ lngResourceService.GetString(validationKeyService.FilebrowserButtonNewFolder) | async }}\"\n [icon]=\"iconFolderNew\"\n (clicked)=\"newNode(node)\"\n ></sac-contextmenubutton>\n <sac-contextmenubutton\n *ngIf=\"node.Path !== '/' && allowfolderdelete\"\n text=\"{{ lngResourceService.GetString(validationKeyService.FilebrowserButtonDelete) | async }}\"\n [icon]=\"iconDelete\"\n (clicked)=\"deleteNode(node)\"\n ></sac-contextmenubutton>\n <sac-contextmenusplitter\n *ngIf=\"allowfoldercreate || (node.Path !== '/' && allowfolderdelete)\"\n ></sac-contextmenusplitter>\n <sac-contextmenubutton\n text=\"{{ lngResourceService.GetString(validationKeyService.FilebrowserButtonRefresh) | async }}\"\n [icon]=\"iconRefresh\"\n (clicked)=\"refreshNode(node)\"\n ></sac-contextmenubutton>\n </sac-contextmenu>\n </div>\n </li>\n\n <ng-container *ngIf=\"node.IsExpanded\">\n <ng-template\n *ngFor=\"let child of node.ChildNodes\"\n [ngTemplateOutlet]=\"treeItem\"\n [ngTemplateOutletContext]=\"{node: child, deep: deep + 1}\"\n ></ng-template>\n </ng-container>\n </ng-template>\n </div>\n <div class=\"col-12 col-md-7 col-lg-8\">\n <ng-container *ngIf=\"selectedNode && selectedNode.Files\">\n <div *ngIf=\"allowfileupload\" ngForm>\n <sac-dropzonemultiple\n [disablelabel]=\"true\"\n [endpoint]=\"apiurl + '/uploadregister'\"\n name=\"upload\"\n uploadheight=\"5rem\"\n [ngModel]=\"uploads\"\n (ngModelChange)=\"uploadComplete(selectedNode,$event)\"\n [allowedtypes]=\"allowedtypes\"\n >{{\n lngResourceService.GetString(validationKeyService.FilebrowserButtonUpload)\n | async }}</sac-dropzonemultiple\n >\n </div>\n <div class=\"table-responsive\">\n <table class=\"table table-striped table-hover align-middle\">\n <thead>\n <th>\n {{\n lngResourceService.GetString(validationKeyService.FilebrowserGridFilename)\n | async }}\n </th>\n <th>\n {{\n lngResourceService.GetString(validationKeyService.FilebrowserGridSize)\n | async }}\n </th>\n <th style=\"width: 80px\"></th>\n </thead>\n <tbody>\n <ng-container *ngIf=\"selectedNode.Files.length === 0\">\n <tr>\n <td colspan=\"3\">\n {{\n lngResourceService.GetString(validationKeyService.FilebrowserGridNoFiles)\n | async }}\n </td>\n </tr>\n </ng-container>\n <ng-container *ngIf=\"selectedNode.Files.length > 0\">\n <tr\n *ngFor=\"let item of selectedNode.Files\"\n (click)=\"selectFile(item)\"\n [class.table-primary]=\"selectedFileItem === item\"\n >\n <td [class.p-2]=\"item.IsEditMode\">\n <ng-container *ngIf=\"!item.IsEditMode\">\n {{ item.Filename }}\n </ng-container>\n <ng-container *ngIf=\"item.IsEditMode\">\n <div>\n <input\n name=\"editFolder\"\n class=\"form-control form-control-sm\"\n [ngModel]=\"item.Filename\"\n [ngModelOptions]=\"{updateOn: 'blur'}\"\n (ngModelChange)=\"renameFile(item, $event)\"\n (keydown.enter)=\"$event.target.blur();false\"\n (blur)=\"renameFile(item, null)\"\n (click)=\"$event.stopPropagation();\"\n />\n </div>\n </ng-container>\n </td>\n <td>{{ item.Size}}</td>\n <td class=\"p-2\">\n <div class=\"btn-toolbar\" role=\"toolbar\">\n <div class=\"btn-group ml-auto\" role=\"group\">\n <a\n *ngIf=\"allowfilerename\"\n class=\"btn btn-sm btn-link text-secondary\"\n (click)=\"editFile(item);$event.stopPropagation();\"\n ><i [class]=\"iconEdit\"></i\n ></a>\n </div>\n <div class=\"btn-group\" role=\"group\">\n <a\n *ngIf=\"allowfiledelete\"\n class=\"btn btn-sm btn-link text-secondary\"\n (click)=\"deleteFile(item);$event.stopPropagation();\"\n ><i [class]=\"iconDelete\"></i\n ></a>\n </div>\n </div>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </div>\n </ng-container>\n </div>\n</div>\n", components: [{ type: i3.SacContextmenuComponent, selector: "sac-contextmenu" }, { type: i4.SacContextmenuItemButtonComponent, selector: "sac-contextmenubutton" }, { type: i5.SacContextmenuItemSplitterComponent, selector: "sac-contextmenusplitter" }, { type: i6.SacDropzoneMultipleComponent, selector: "sac-dropzonemultiple" }], directives: [{ type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.SacFormDirective, selector: "form:not([ngNoForm]):not([formGroup]),[ngForm]", exportAs: ["sacform"] }, { type: i9.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i9.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "async": i7.AsyncPipe } });
|
|
105
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacBrowserComponent, decorators: [{
|
|
106
|
+
type: Component,
|
|
107
|
+
args: [{ selector: 'sac-filebrowser', providers: [ServiceConfirm], template: "<div class=\"row\">\n <div class=\"col-12 col-md-5 col-lg-4\">\n <ul class=\"list-group list-group-flush\">\n <ng-template\n [ngTemplateOutlet]=\"treeItem\"\n [ngTemplateOutletContext]=\"{node: rootNode, deep: 0}\"\n ></ng-template>\n </ul>\n\n <ng-template #treeItem let-node=\"node\" let-deep=\"deep\">\n <li\n class=\"list-group-item py-1 px-2 d-flex align-items-center\"\n [class.list-group-item-secondary]=\"node === selectedNode\"\n (click)=\"selectNode(node)\"\n style=\"cursor: pointer\"\n >\n <div class=\"mx-3\" *ngFor=\"let i of count(deep)\"></div>\n <div\n (click)=\"switchExpandNode(node);$event.stopPropagation();\"\n class=\"mr-2\"\n [ngClass]=\"node.ChildNodes.length === 0 ? iconFolderEmpty: (!node.IsExpanded && node.ChildNodes.length > 0 ? iconFolderCollabsed : (node.IsExpanded && node.ChildNodes.length > 0 ? iconFolderOpen : ''))\"\n ></div>\n <ng-container *ngIf=\"!node.IsEditMode\">\n <div class=\"flex-grow-1\">{{ node.Name }}</div>\n </ng-container>\n <ng-container *ngIf=\"node.IsEditMode\">\n <div class=\"flex-grow-1\" ngForm>\n <input\n name=\"editFolder\"\n class=\"form-control form-control-sm\"\n [ngModel]=\"node.Name\"\n [ngModelOptions]=\"{updateOn: 'blur'}\"\n (ngModelChange)=\"renameNode(node, $event)\"\n (keydown.enter)=\"$event.target.blur();false;\"\n (blur)=\"renameNode(node, null)\"\n (click)=\"$event.stopPropagation()\"\n />\n </div>\n </ng-container>\n <div class=\"flex-shrink-0\">\n <a\n *ngIf=\"node.Path !== '/' && allowfolderrename\"\n class=\"btn btn-sm btn-link text-secondary\"\n (click)=\"editNode(node);$event.stopPropagation();\"\n >\n <i [class]=\"iconEdit\"></i>\n </a>\n <sac-contextmenu cssclass=\"d-inline-block\">\n <sac-contextmenubutton\n *ngIf=\"allowfoldercreate\"\n text=\"{{ lngResourceService.GetString(validationKeyService.FilebrowserButtonNewFolder) | async }}\"\n [icon]=\"iconFolderNew\"\n (clicked)=\"newNode(node)\"\n ></sac-contextmenubutton>\n <sac-contextmenubutton\n *ngIf=\"node.Path !== '/' && allowfolderdelete\"\n text=\"{{ lngResourceService.GetString(validationKeyService.FilebrowserButtonDelete) | async }}\"\n [icon]=\"iconDelete\"\n (clicked)=\"deleteNode(node)\"\n ></sac-contextmenubutton>\n <sac-contextmenusplitter\n *ngIf=\"allowfoldercreate || (node.Path !== '/' && allowfolderdelete)\"\n ></sac-contextmenusplitter>\n <sac-contextmenubutton\n text=\"{{ lngResourceService.GetString(validationKeyService.FilebrowserButtonRefresh) | async }}\"\n [icon]=\"iconRefresh\"\n (clicked)=\"refreshNode(node)\"\n ></sac-contextmenubutton>\n </sac-contextmenu>\n </div>\n </li>\n\n <ng-container *ngIf=\"node.IsExpanded\">\n <ng-template\n *ngFor=\"let child of node.ChildNodes\"\n [ngTemplateOutlet]=\"treeItem\"\n [ngTemplateOutletContext]=\"{node: child, deep: deep + 1}\"\n ></ng-template>\n </ng-container>\n </ng-template>\n </div>\n <div class=\"col-12 col-md-7 col-lg-8\">\n <ng-container *ngIf=\"selectedNode && selectedNode.Files\">\n <div *ngIf=\"allowfileupload\" ngForm>\n <sac-dropzonemultiple\n [disablelabel]=\"true\"\n [endpoint]=\"apiurl + '/uploadregister'\"\n name=\"upload\"\n uploadheight=\"5rem\"\n [ngModel]=\"uploads\"\n (ngModelChange)=\"uploadComplete(selectedNode,$event)\"\n [allowedtypes]=\"allowedtypes\"\n >{{\n lngResourceService.GetString(validationKeyService.FilebrowserButtonUpload)\n | async }}</sac-dropzonemultiple\n >\n </div>\n <div class=\"table-responsive\">\n <table class=\"table table-striped table-hover align-middle\">\n <thead>\n <th>\n {{\n lngResourceService.GetString(validationKeyService.FilebrowserGridFilename)\n | async }}\n </th>\n <th>\n {{\n lngResourceService.GetString(validationKeyService.FilebrowserGridSize)\n | async }}\n </th>\n <th style=\"width: 80px\"></th>\n </thead>\n <tbody>\n <ng-container *ngIf=\"selectedNode.Files.length === 0\">\n <tr>\n <td colspan=\"3\">\n {{\n lngResourceService.GetString(validationKeyService.FilebrowserGridNoFiles)\n | async }}\n </td>\n </tr>\n </ng-container>\n <ng-container *ngIf=\"selectedNode.Files.length > 0\">\n <tr\n *ngFor=\"let item of selectedNode.Files\"\n (click)=\"selectFile(item)\"\n [class.table-primary]=\"selectedFileItem === item\"\n >\n <td [class.p-2]=\"item.IsEditMode\">\n <ng-container *ngIf=\"!item.IsEditMode\">\n {{ item.Filename }}\n </ng-container>\n <ng-container *ngIf=\"item.IsEditMode\">\n <div>\n <input\n name=\"editFolder\"\n class=\"form-control form-control-sm\"\n [ngModel]=\"item.Filename\"\n [ngModelOptions]=\"{updateOn: 'blur'}\"\n (ngModelChange)=\"renameFile(item, $event)\"\n (keydown.enter)=\"$event.target.blur();false\"\n (blur)=\"renameFile(item, null)\"\n (click)=\"$event.stopPropagation();\"\n />\n </div>\n </ng-container>\n </td>\n <td>{{ item.Size}}</td>\n <td class=\"p-2\">\n <div class=\"btn-toolbar\" role=\"toolbar\">\n <div class=\"btn-group ml-auto\" role=\"group\">\n <a\n *ngIf=\"allowfilerename\"\n class=\"btn btn-sm btn-link text-secondary\"\n (click)=\"editFile(item);$event.stopPropagation();\"\n ><i [class]=\"iconEdit\"></i\n ></a>\n </div>\n <div class=\"btn-group\" role=\"group\">\n <a\n *ngIf=\"allowfiledelete\"\n class=\"btn btn-sm btn-link text-secondary\"\n (click)=\"deleteFile(item);$event.stopPropagation();\"\n ><i [class]=\"iconDelete\"></i\n ></a>\n </div>\n </div>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </div>\n </ng-container>\n </div>\n</div>\n" }]
|
|
108
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i0.Injector }, { type: i2.ServiceConfirm }]; }, propDecorators: { uploadComponent: [{
|
|
109
|
+
type: ViewChild,
|
|
110
|
+
args: [SacDropzoneMultipleComponent, { static: false }]
|
|
111
|
+
}] } });
|
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NhYy1ib290c3RyYXA0L3NyYy9jb21wb25lbnRzL2Jyb3dzZXIvYnJvd3Nlci50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NhYy1ib290c3RyYXA0L3NyYy9jb21wb25lbnRzL2Jyb3dzZXIvYnJvd3Nlci5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQVksU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9ELE9BQU8sRUFHTCxvQkFBb0IsR0FDckIsTUFBTSxtQ0FBbUMsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDeEUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7Ozs7Ozs7Ozs7O0FBRXRGOztHQUVHO0FBTUgsTUFBTSxPQUFPLG1CQUFvQixTQUFRLG9CQUFvQjtJQVMzRCx3QkFBd0I7SUFFeEIsdUJBQXVCO0lBRXZCOzs7OztPQUtHO0lBQ0gsWUFDRSxVQUFzQixFQUN0QixRQUFrQixFQUNWLGNBQThCO1FBRXRDLEtBQUssQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFGcEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO0lBR3hDLENBQUM7SUFFRCwwQkFBMEI7SUFFMUIseUJBQXlCO0lBRXpCOzs7O09BSUc7SUFDSSxpQkFBaUIsQ0FBQyxJQUFrQjtRQUN6QyxPQUFPLElBQUksVUFBVSxDQUFVLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDMUMsUUFBUSxDQUFDO2dCQUNQLEtBQUssRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUN0QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsdUJBQXVCLENBQ2xEO2dCQUNELE9BQU8sRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUN4QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsZ0NBQWdDLENBQzNEO2FBQ0YsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUNwQixJQUFJLENBQUMsY0FBYztxQkFDaEIsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQztxQkFDeEMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7b0JBQ3BCLElBQUksTUFBTSxLQUFLLEtBQUssRUFBRTt3QkFDcEIsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztxQkFDckI7eUJBQU07d0JBQ0wsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztxQkFDdEI7b0JBQ0QsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN0QixDQUFDLENBQUMsQ0FBQztZQUNQLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGlCQUFpQixDQUFDLElBQWtCO1FBQ3pDLE9BQU8sSUFBSSxVQUFVLENBQVUsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUMxQyxRQUFRLENBQUM7Z0JBQ1AsS0FBSyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQ3RDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyx1QkFBdUIsQ0FDbEQ7Z0JBQ0QsT0FBTyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQ3hDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxrQ0FBa0MsQ0FDN0Q7YUFDRixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxjQUFjO3FCQUNoQixjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDO3FCQUN4QyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtvQkFDcEIsSUFBSSxNQUFNLEtBQUssS0FBSyxFQUFFO3dCQUNwQixRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO3FCQUNyQjt5QkFBTTt3QkFDTCxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO3FCQUN0QjtvQkFDRCxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3RCLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksS0FBSyxDQUFDLE1BQWM7UUFDekIsT0FBTyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksaUJBQWlCLENBQUMsUUFBZ0I7UUFDdkMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUM1QyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsS0FBSyxRQUFRLENBQ3JDLENBQUM7UUFFRixJQUFJLElBQUksRUFBRTtZQUNSLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUM1QztJQUNILENBQUM7O2dIQTlHVSxtQkFBbUI7b0dBQW5CLG1CQUFtQiwwQ0FGbkIsQ0FBQyxjQUFjLENBQUMsMkVBUWhCLDRCQUE0Qix1RUN6QnpDLG12T0FnTEE7MkZEN0phLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxpQkFBaUIsYUFFaEIsQ0FBQyxjQUFjLENBQUM7cUpBU25CLGVBQWU7c0JBRHRCLFNBQVM7dUJBQUMsNEJBQTRCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0b3IsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgSUJyb3dzZXJGaWxlLFxuICBJQnJvd3Nlck5vZGUsXG4gIFNhY0ZpbGVCcm93c2VyQ29tbW9uLFxufSBmcm9tICdAc2ltcGxlYW5ndWxhcmNvbnRyb2xzL3NhYy1jb21tb24nO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZm9ya0pvaW4gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNlcnZpY2VDb25maXJtIH0gZnJvbSAnLi4vLi4vY29udHJvbHMvY29uZmlybS9jb25maXJtLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2FjRHJvcHpvbmVNdWx0aXBsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbnRyb2xzL3VwbG9hZC9kcm9wem9uZW11bHRpcGxlJztcblxuLyoqXG4gKiBTZXJ2ZXIgRmlsZSBCcm93c2VyIEtvbXBvbmVudGVcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2FjLWZpbGVicm93c2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Jyb3dzZXIuaHRtbCcsXG4gIHByb3ZpZGVyczogW1NlcnZpY2VDb25maXJtXSxcbn0pXG5leHBvcnQgY2xhc3MgU2FjQnJvd3NlckNvbXBvbmVudCBleHRlbmRzIFNhY0ZpbGVCcm93c2VyQ29tbW9uIHtcbiAgLy8gI3JlZ2lvbiBQcm9wZXJ0aWVzXG5cbiAgLyoqXG4gICAqIFJlZmVyZW56IGF1ZiBVcGxvYWQgQ29tcG9uZW50XG4gICAqL1xuICBAVmlld0NoaWxkKFNhY0Ryb3B6b25lTXVsdGlwbGVDb21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBwcml2YXRlIHVwbG9hZENvbXBvbmVudDogU2FjRHJvcHpvbmVNdWx0aXBsZUNvbXBvbmVudDtcblxuICAvLyAjZW5kcmVnaW9uIFByb3BlcnRpZXNcblxuICAvLyAjcmVnaW9uIENvbnN0cnVjdG9yc1xuXG4gIC8qKlxuICAgKiBLb25zdHJ1a3RvclxuICAgKiBAcGFyYW0gaHR0cENsaWVudCBIVFRQIENsaWVudFxuICAgKiBAcGFyYW0gaW5qZWN0b3IgQW5ndWxhciBEZXBlbmRlbmN5IEluamVjdGlvbiBTZXJ2aWNlXG4gICAqIEBwYXJhbSBjb25maXJtU2VydmljZSBDb25maXJtIFNlcnZpY2VcbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgY29uZmlybVNlcnZpY2U6IFNlcnZpY2VDb25maXJtXG4gICkge1xuICAgIHN1cGVyKGh0dHBDbGllbnQsIGluamVjdG9yKTtcbiAgfVxuXG4gIC8vICNlbmRyZWdpb24gQ29uc3RydWN0b3JzXG5cbiAgLy8gI3JlZ2lvbiBQdWJsaWMgTWV0aG9kc1xuXG4gIC8qKlxuICAgKiBDb25maXJtIEFjdGlvbiB3ZW5uIGVpbiBGaWxlIGdlbMO2c2NodCB3ZXJkZW4gc29sbFxuICAgKiBAcGFyYW0gZmlsZSBGaWxlIGRhcyBnZWzDtnNjaHQgd2VyZGVuIHNvbGwuXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGUgb2IgRmlsZSBnZWzDtnNjaHQgd2VyZGVuIGthbm4uXG4gICAqL1xuICBwdWJsaWMgY29uZmlybURlbGV0ZUZpbGUoZmlsZTogSUJyb3dzZXJGaWxlKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPGJvb2xlYW4+KChvYnNlcnZlcikgPT4ge1xuICAgICAgZm9ya0pvaW4oe1xuICAgICAgICB0aXRsZTogdGhpcy5sbmdSZXNvdXJjZVNlcnZpY2UuR2V0U3RyaW5nKFxuICAgICAgICAgIHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuRmlsZWJyb3dzZXJCdXR0b25EZWxldGVcbiAgICAgICAgKSxcbiAgICAgICAgbWVzc2FnZTogdGhpcy5sbmdSZXNvdXJjZVNlcnZpY2UuR2V0U3RyaW5nKFxuICAgICAgICAgIHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuRmlsZWJyb3dzZXJDb25maXJtVGV4dERlbGV0ZUZpbGVcbiAgICAgICAgKSxcbiAgICAgIH0pLnN1YnNjcmliZSgodGV4dCkgPT4ge1xuICAgICAgICB0aGlzLmNvbmZpcm1TZXJ2aWNlXG4gICAgICAgICAgLkNvbmZpcm1NZXNzYWdlKHRleHQudGl0bGUsIHRleHQubWVzc2FnZSlcbiAgICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09ICd5ZXMnKSB7XG4gICAgICAgICAgICAgIG9ic2VydmVyLm5leHQodHJ1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25maXJtIEFjdGlvbiB3ZW5uIGVpbiBPcmRuZXIgZ2Vsw7ZzY2h0IHdlcmRlbiBzb2xsXG4gICAqIEBwYXJhbSBub2RlIE9yZG5lciBkZXIgZ2Vsw7ZzY2h0IHdlcmRlbiBzb2xsXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGUgb2IgT3JkbmVyIGdlbMO2c2NodCBrYW5uLlxuICAgKi9cbiAgcHVibGljIGNvbmZpcm1EZWxldGVOb2RlKG5vZGU6IElCcm93c2VyTm9kZSk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxib29sZWFuPigob2JzZXJ2ZXIpID0+IHtcbiAgICAgIGZvcmtKb2luKHtcbiAgICAgICAgdGl0bGU6IHRoaXMubG5nUmVzb3VyY2VTZXJ2aWNlLkdldFN0cmluZyhcbiAgICAgICAgICB0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlLkZpbGVicm93c2VyQnV0dG9uRGVsZXRlXG4gICAgICAgICksXG4gICAgICAgIG1lc3NhZ2U6IHRoaXMubG5nUmVzb3VyY2VTZXJ2aWNlLkdldFN0cmluZyhcbiAgICAgICAgICB0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlLkZpbGVicm93c2VyQ29uZmlybVRleHREZWxldGVGb2xkZXJcbiAgICAgICAgKSxcbiAgICAgIH0pLnN1YnNjcmliZSgodGV4dCkgPT4ge1xuICAgICAgICB0aGlzLmNvbmZpcm1TZXJ2aWNlXG4gICAgICAgICAgLkNvbmZpcm1NZXNzYWdlKHRleHQudGl0bGUsIHRleHQubWVzc2FnZSlcbiAgICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09ICd5ZXMnKSB7XG4gICAgICAgICAgICAgIG9ic2VydmVyLm5leHQodHJ1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFcnpldWd0IGVpbiBBcnJheSB2b24gZWluZXIgYmVzdGltbXRlbiBncsO2c3NlXG4gICAqIEBwYXJhbSBhbnphaGwgR3LDtnNzZSBkZXMgQXJyYXlcbiAgICogQHJldHVybnMgQXJyYXlcbiAgICovXG4gIHB1YmxpYyBjb3VudChhbnphaGw6IG51bWJlcik6IEFycmF5PHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IEFycmF5KGFuemFobCk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kZSB3aXJkIGF1ZmdlcnVmZW4sIHdlbm4gZWluZSBEYXRlaSB2ZXJzY2hvYmVuIHdpcmRcbiAgICogQHBhcmFtIHVwbG9hZGlkIFVwbG9hZCBJRFxuICAgKi9cbiAgcHVibGljIHVwbG9hZGVkRmlsZU1vdmVkKHVwbG9hZGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBpdGVtID0gdGhpcy51cGxvYWRDb21wb25lbnQudXBsb2Fkcy5maW5kKFxuICAgICAgKGl0bSkgPT4gaXRtLmRvY3VtZW50aWQgPT09IHVwbG9hZGlkXG4gICAgKTtcblxuICAgIGlmIChpdGVtKSB7XG4gICAgICB0aGlzLnVwbG9hZENvbXBvbmVudC5jYW5jZWwoaXRlbS51cGxvYWRJZCk7XG4gICAgfVxuICB9XG5cbiAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgTWV0aG9kc1xufVxuIiwiPGRpdiBjbGFzcz1cInJvd1wiPlxuICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC01IGNvbC1sZy00XCI+XG4gICAgPHVsIGNsYXNzPVwibGlzdC1ncm91cCBsaXN0LWdyb3VwLWZsdXNoXCI+XG4gICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidHJlZUl0ZW1cIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie25vZGU6IHJvb3ROb2RlLCBkZWVwOiAwfVwiXG4gICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L3VsPlxuXG4gICAgPG5nLXRlbXBsYXRlICN0cmVlSXRlbSBsZXQtbm9kZT1cIm5vZGVcIiBsZXQtZGVlcD1cImRlZXBcIj5cbiAgICAgIDxsaVxuICAgICAgICBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBweS0xIHB4LTIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgIFtjbGFzcy5saXN0LWdyb3VwLWl0ZW0tc2Vjb25kYXJ5XT1cIm5vZGUgPT09IHNlbGVjdGVkTm9kZVwiXG4gICAgICAgIChjbGljayk9XCJzZWxlY3ROb2RlKG5vZGUpXCJcbiAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibXgtM1wiICpuZ0Zvcj1cImxldCBpIG9mIGNvdW50KGRlZXApXCI+PC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAoY2xpY2spPVwic3dpdGNoRXhwYW5kTm9kZShub2RlKTskZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCJcbiAgICAgICAgICBjbGFzcz1cIm1yLTJcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIm5vZGUuQ2hpbGROb2Rlcy5sZW5ndGggPT09IDAgPyBpY29uRm9sZGVyRW1wdHk6ICghbm9kZS5Jc0V4cGFuZGVkICYmIG5vZGUuQ2hpbGROb2Rlcy5sZW5ndGggPiAwID8gaWNvbkZvbGRlckNvbGxhYnNlZCA6IChub2RlLklzRXhwYW5kZWQgJiYgbm9kZS5DaGlsZE5vZGVzLmxlbmd0aCA+IDAgPyBpY29uRm9sZGVyT3BlbiA6ICcnKSlcIlxuICAgICAgICA+PC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbm9kZS5Jc0VkaXRNb2RlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xXCI+e3sgbm9kZS5OYW1lIH19PC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibm9kZS5Jc0VkaXRNb2RlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xXCIgbmdGb3JtPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIG5hbWU9XCJlZGl0Rm9sZGVyXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcbiAgICAgICAgICAgICAgW25nTW9kZWxdPVwibm9kZS5OYW1lXCJcbiAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cInt1cGRhdGVPbjogJ2JsdXInfVwiXG4gICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInJlbmFtZU5vZGUobm9kZSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIiRldmVudC50YXJnZXQuYmx1cigpO2ZhbHNlO1wiXG4gICAgICAgICAgICAgIChibHVyKT1cInJlbmFtZU5vZGUobm9kZSwgbnVsbClcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1zaHJpbmstMFwiPlxuICAgICAgICAgIDxhXG4gICAgICAgICAgICAqbmdJZj1cIm5vZGUuUGF0aCAhPT0gJy8nICYmIGFsbG93Zm9sZGVycmVuYW1lXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGluayB0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZWRpdE5vZGUobm9kZSk7JGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgW2NsYXNzXT1cImljb25FZGl0XCI+PC9pPlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8c2FjLWNvbnRleHRtZW51IGNzc2NsYXNzPVwiZC1pbmxpbmUtYmxvY2tcIj5cbiAgICAgICAgICAgIDxzYWMtY29udGV4dG1lbnVidXR0b25cbiAgICAgICAgICAgICAgKm5nSWY9XCJhbGxvd2ZvbGRlcmNyZWF0ZVwiXG4gICAgICAgICAgICAgIHRleHQ9XCJ7eyBsbmdSZXNvdXJjZVNlcnZpY2UuR2V0U3RyaW5nKHZhbGlkYXRpb25LZXlTZXJ2aWNlLkZpbGVicm93c2VyQnV0dG9uTmV3Rm9sZGVyKSB8IGFzeW5jIH19XCJcbiAgICAgICAgICAgICAgW2ljb25dPVwiaWNvbkZvbGRlck5ld1wiXG4gICAgICAgICAgICAgIChjbGlja2VkKT1cIm5ld05vZGUobm9kZSlcIlxuICAgICAgICAgICAgPjwvc2FjLWNvbnRleHRtZW51YnV0dG9uPlxuICAgICAgICAgICAgPHNhYy1jb250ZXh0bWVudWJ1dHRvblxuICAgICAgICAgICAgICAqbmdJZj1cIm5vZGUuUGF0aCAhPT0gJy8nICYmIGFsbG93Zm9sZGVyZGVsZXRlXCJcbiAgICAgICAgICAgICAgdGV4dD1cInt7IGxuZ1Jlc291cmNlU2VydmljZS5HZXRTdHJpbmcodmFsaWRhdGlvbktleVNlcnZpY2UuRmlsZWJyb3dzZXJCdXR0b25EZWxldGUpIHwgYXN5bmMgfX1cIlxuICAgICAgICAgICAgICBbaWNvbl09XCJpY29uRGVsZXRlXCJcbiAgICAgICAgICAgICAgKGNsaWNrZWQpPVwiZGVsZXRlTm9kZShub2RlKVwiXG4gICAgICAgICAgICA+PC9zYWMtY29udGV4dG1lbnVidXR0b24+XG4gICAgICAgICAgICA8c2FjLWNvbnRleHRtZW51c3BsaXR0ZXJcbiAgICAgICAgICAgICAgKm5nSWY9XCJhbGxvd2ZvbGRlcmNyZWF0ZSB8fCAobm9kZS5QYXRoICE9PSAnLycgJiYgYWxsb3dmb2xkZXJkZWxldGUpXCJcbiAgICAgICAgICAgID48L3NhYy1jb250ZXh0bWVudXNwbGl0dGVyPlxuICAgICAgICAgICAgPHNhYy1jb250ZXh0bWVudWJ1dHRvblxuICAgICAgICAgICAgICB0ZXh0PVwie3sgbG5nUmVzb3VyY2VTZXJ2aWNlLkdldFN0cmluZyh2YWxpZGF0aW9uS2V5U2VydmljZS5GaWxlYnJvd3NlckJ1dHRvblJlZnJlc2gpIHwgYXN5bmMgfX1cIlxuICAgICAgICAgICAgICBbaWNvbl09XCJpY29uUmVmcmVzaFwiXG4gICAgICAgICAgICAgIChjbGlja2VkKT1cInJlZnJlc2hOb2RlKG5vZGUpXCJcbiAgICAgICAgICAgID48L3NhYy1jb250ZXh0bWVudWJ1dHRvbj5cbiAgICAgICAgICA8L3NhYy1jb250ZXh0bWVudT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2xpPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibm9kZS5Jc0V4cGFuZGVkXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICpuZ0Zvcj1cImxldCBjaGlsZCBvZiBub2RlLkNoaWxkTm9kZXNcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRyZWVJdGVtXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie25vZGU6IGNoaWxkLCBkZWVwOiBkZWVwICsgMX1cIlxuICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC03IGNvbC1sZy04XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkTm9kZSAmJiBzZWxlY3RlZE5vZGUuRmlsZXNcIj5cbiAgICAgIDxkaXYgKm5nSWY9XCJhbGxvd2ZpbGV1cGxvYWRcIiBuZ0Zvcm0+XG4gICAgICAgIDxzYWMtZHJvcHpvbmVtdWx0aXBsZVxuICAgICAgICAgIFtkaXNhYmxlbGFiZWxdPVwidHJ1ZVwiXG4gICAgICAgICAgW2VuZHBvaW50XT1cImFwaXVybCArICcvdXBsb2FkcmVnaXN0ZXInXCJcbiAgICAgICAgICBuYW1lPVwidXBsb2FkXCJcbiAgICAgICAgICB1cGxvYWRoZWlnaHQ9XCI1cmVtXCJcbiAgICAgICAgICBbbmdNb2RlbF09XCJ1cGxvYWRzXCJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ1cGxvYWRDb21wbGV0ZShzZWxlY3RlZE5vZGUsJGV2ZW50KVwiXG4gICAgICAgICAgW2FsbG93ZWR0eXBlc109XCJhbGxvd2VkdHlwZXNcIlxuICAgICAgICAgID57e1xuICAgICAgICAgIGxuZ1Jlc291cmNlU2VydmljZS5HZXRTdHJpbmcodmFsaWRhdGlvbktleVNlcnZpY2UuRmlsZWJyb3dzZXJCdXR0b25VcGxvYWQpXG4gICAgICAgICAgfCBhc3luYyB9fTwvc2FjLWRyb3B6b25lbXVsdGlwbGVcbiAgICAgICAgPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxuICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1zdHJpcGVkIHRhYmxlLWhvdmVyIGFsaWduLW1pZGRsZVwiPlxuICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgIDx0aD5cbiAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgbG5nUmVzb3VyY2VTZXJ2aWNlLkdldFN0cmluZyh2YWxpZGF0aW9uS2V5U2VydmljZS5GaWxlYnJvd3NlckdyaWRGaWxlbmFtZSlcbiAgICAgICAgICAgICAgfCBhc3luYyB9fVxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIDx0aD5cbiAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgbG5nUmVzb3VyY2VTZXJ2aWNlLkdldFN0cmluZyh2YWxpZGF0aW9uS2V5U2VydmljZS5GaWxlYnJvd3NlckdyaWRTaXplKVxuICAgICAgICAgICAgICB8IGFzeW5jIH19XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgPHRoIHN0eWxlPVwid2lkdGg6IDgwcHhcIj48L3RoPlxuICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkTm9kZS5GaWxlcy5sZW5ndGggPT09IDBcIj5cbiAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiM1wiPlxuICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgIGxuZ1Jlc291cmNlU2VydmljZS5HZXRTdHJpbmcodmFsaWRhdGlvbktleVNlcnZpY2UuRmlsZWJyb3dzZXJHcmlkTm9GaWxlcylcbiAgICAgICAgICAgICAgICAgIHwgYXN5bmMgfX1cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWROb2RlLkZpbGVzLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgPHRyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2VsZWN0ZWROb2RlLkZpbGVzXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0RmlsZShpdGVtKVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLnRhYmxlLXByaW1hcnldPVwic2VsZWN0ZWRGaWxlSXRlbSA9PT0gaXRlbVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8dGQgW2NsYXNzLnAtMl09XCJpdGVtLklzRWRpdE1vZGVcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXRlbS5Jc0VkaXRNb2RlXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0uRmlsZW5hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0uSXNFZGl0TW9kZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImVkaXRGb2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cIml0ZW0uRmlsZW5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cInt1cGRhdGVPbjogJ2JsdXInfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJyZW5hbWVGaWxlKGl0ZW0sICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiJGV2ZW50LnRhcmdldC5ibHVyKCk7ZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwicmVuYW1lRmlsZShpdGVtLCBudWxsKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiXG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDx0ZD57eyBpdGVtLlNpemV9fTwvdGQ+XG4gICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwicC0yXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLXRvb2xiYXJcIiByb2xlPVwidG9vbGJhclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwIG1sLWF1dG9cIiByb2xlPVwiZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhbGxvd2ZpbGVyZW5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saW5rIHRleHQtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJlZGl0RmlsZShpdGVtKTskZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48aSBbY2xhc3NdPVwiaWNvbkVkaXRcIj48L2lcbiAgICAgICAgICAgICAgICAgICAgICA+PC9hPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cFwiIHJvbGU9XCJncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImFsbG93ZmlsZWRlbGV0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpbmsgdGV4dC1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZUZpbGUoaXRlbSk7JGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PGkgW2NsYXNzXT1cImljb25EZWxldGVcIj48L2lcbiAgICAgICAgICAgICAgICAgICAgICA+PC9hPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICA8L3RhYmxlPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|