@simpleangularcontrols/sac-common 10.0.0-rc.1
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 +16 -0
- package/bundles/simpleangularcontrols-sac-common.umd.js +12054 -0
- package/bundles/simpleangularcontrols-sac-common.umd.js.map +1 -0
- package/bundles/simpleangularcontrols-sac-common.umd.min.js +2 -0
- package/bundles/simpleangularcontrols-sac-common.umd.min.js.map +1 -0
- package/common/basedatetimecontrol.d.ts +83 -0
- package/common/basedatetimecontrol.ngfactory.d.ts +1 -0
- package/common/baseinputcontrol.d.ts +42 -0
- package/common/baseinputcontrol.ngfactory.d.ts +1 -0
- package/common/baselistcontrol.d.ts +43 -0
- package/common/baselistcontrol.ngfactory.d.ts +1 -0
- package/common/basemodelcontrol.d.ts +252 -0
- package/common/basemodelcontrol.ngfactory.d.ts +1 -0
- package/common/baseselectcontrol.d.ts +14 -0
- package/common/baseselectcontrol.ngfactory.d.ts +1 -0
- package/common/baseuploadcontrol.d.ts +284 -0
- package/common/baseuploadcontrol.ngfactory.d.ts +1 -0
- package/components/browser/browser.d.ts +267 -0
- package/components/browser/browser.ngfactory.d.ts +1 -0
- package/components/browser/models/browserfile.d.ts +17 -0
- package/components/browser/models/browserfile.ngfactory.d.ts +1 -0
- package/components/browser/models/browserfiledeleterequest.d.ts +18 -0
- package/components/browser/models/browserfiledeleterequest.ngfactory.d.ts +1 -0
- package/components/browser/models/browserfilerenamerequest.d.ts +22 -0
- package/components/browser/models/browserfilerenamerequest.ngfactory.d.ts +1 -0
- package/components/browser/models/browserfileresponse.d.ts +10 -0
- package/components/browser/models/browserfileresponse.ngfactory.d.ts +1 -0
- package/components/browser/models/browserfilesaverequest.d.ts +22 -0
- package/components/browser/models/browserfilesaverequest.ngfactory.d.ts +1 -0
- package/components/browser/models/browsernode.d.ts +34 -0
- package/components/browser/models/browsernode.ngfactory.d.ts +1 -0
- package/components/browser/models/browsernodedeleterequest.d.ts +14 -0
- package/components/browser/models/browsernodedeleterequest.ngfactory.d.ts +1 -0
- package/components/browser/models/browsernodenewrequest.d.ts +18 -0
- package/components/browser/models/browsernodenewrequest.ngfactory.d.ts +1 -0
- package/components/browser/models/browsernoderenamerequest.d.ts +18 -0
- package/components/browser/models/browsernoderenamerequest.ngfactory.d.ts +1 -0
- package/components/browser/models/browsernoderequest.d.ts +18 -0
- package/components/browser/models/browsernoderequest.ngfactory.d.ts +1 -0
- package/components/browser/models/browsernoderesponse.d.ts +10 -0
- package/components/browser/models/browsernoderesponse.ngfactory.d.ts +1 -0
- package/controls/buttons/button.d.ts +70 -0
- package/controls/buttons/button.ngfactory.d.ts +1 -0
- package/controls/checkbox/checkbox.d.ts +23 -0
- package/controls/checkbox/checkbox.ngfactory.d.ts +1 -0
- package/controls/checkbox/radiobutton.d.ts +79 -0
- package/controls/checkbox/radiobutton.ngfactory.d.ts +1 -0
- package/controls/checkbox/radiobuttons.d.ts +60 -0
- package/controls/checkbox/radiobuttons.ngfactory.d.ts +1 -0
- package/controls/confirm/confirm.button.d.ts +25 -0
- package/controls/confirm/confirm.button.ngfactory.d.ts +1 -0
- package/controls/confirm/confirm.d.ts +49 -0
- package/controls/confirm/confirm.ngfactory.d.ts +1 -0
- package/controls/confirm/confirm.service.d.ts +63 -0
- package/controls/confirm/confirm.service.ngfactory.d.ts +1 -0
- package/controls/contextmenu/contextmenu.d.ts +113 -0
- package/controls/contextmenu/contextmenu.ngfactory.d.ts +1 -0
- package/controls/contextmenu/contextmenuanchor.d.ts +15 -0
- package/controls/contextmenu/contextmenuanchor.ngfactory.d.ts +1 -0
- package/controls/contextmenu/contextmenucontainer.d.ts +15 -0
- package/controls/contextmenu/contextmenucontainer.ngfactory.d.ts +1 -0
- package/controls/contextmenu/contextmenuitem.d.ts +5 -0
- package/controls/contextmenu/contextmenuitem.ngfactory.d.ts +1 -0
- package/controls/contextmenu/contextmenuitembutton.d.ts +66 -0
- package/controls/contextmenu/contextmenuitembutton.ngfactory.d.ts +1 -0
- package/controls/datetime/date.d.ts +120 -0
- package/controls/datetime/date.ngfactory.d.ts +1 -0
- package/controls/datetime/dateselector.d.ts +161 -0
- package/controls/datetime/dateselector.ngfactory.d.ts +1 -0
- package/controls/datetime/datetime.d.ts +135 -0
- package/controls/datetime/datetime.ngfactory.d.ts +1 -0
- package/controls/datetime/time.d.ts +115 -0
- package/controls/datetime/time.ngfactory.d.ts +1 -0
- package/controls/dialog/dialog.d.ts +105 -0
- package/controls/dialog/dialog.ngfactory.d.ts +1 -0
- package/controls/form/form.d.ts +47 -0
- package/controls/form/form.ngfactory.d.ts +1 -0
- package/controls/grid/grid.d.ts +125 -0
- package/controls/grid/grid.ngfactory.d.ts +1 -0
- package/controls/grid/gridbutton.d.ts +33 -0
- package/controls/grid/gridbutton.ngfactory.d.ts +1 -0
- package/controls/grid/gridcolumn.d.ts +28 -0
- package/controls/grid/gridcolumn.ngfactory.d.ts +1 -0
- package/controls/grid/gridcolumnaction.d.ts +15 -0
- package/controls/grid/gridcolumnaction.ngfactory.d.ts +1 -0
- package/controls/grid/gridcolumnbase.d.ts +86 -0
- package/controls/grid/gridcolumnbase.ngfactory.d.ts +1 -0
- package/controls/grid/gridimage.d.ts +9 -0
- package/controls/grid/gridimage.ngfactory.d.ts +1 -0
- package/controls/grid/model.d.ts +83 -0
- package/controls/grid/model.ngfactory.d.ts +1 -0
- package/controls/grid/paging.d.ts +147 -0
- package/controls/grid/paging.ngfactory.d.ts +1 -0
- package/controls/input/input.d.ts +35 -0
- package/controls/input/input.ngfactory.d.ts +1 -0
- package/controls/input/inputarea.d.ts +26 -0
- package/controls/input/inputarea.ngfactory.d.ts +1 -0
- package/controls/input/inputcurrency.d.ts +11 -0
- package/controls/input/inputcurrency.ngfactory.d.ts +1 -0
- package/controls/input/inputdecimal.d.ts +59 -0
- package/controls/input/inputdecimal.ngfactory.d.ts +1 -0
- package/controls/input/inputemail.d.ts +19 -0
- package/controls/input/inputemail.ngfactory.d.ts +1 -0
- package/controls/input/inputinteger.d.ts +59 -0
- package/controls/input/inputinteger.ngfactory.d.ts +1 -0
- package/controls/input/inputpassword.d.ts +23 -0
- package/controls/input/inputpassword.ngfactory.d.ts +1 -0
- package/controls/input/inputsearch.d.ts +23 -0
- package/controls/input/inputsearch.ngfactory.d.ts +1 -0
- package/controls/layout/formlayout.d.ts +46 -0
- package/controls/layout/formlayout.ngfactory.d.ts +1 -0
- package/controls/list/dropdown.d.ts +138 -0
- package/controls/list/dropdown.ngfactory.d.ts +1 -0
- package/controls/list/list.module.d.ts +2 -0
- package/controls/list/list.module.ngfactory.d.ts +3 -0
- package/controls/list/listbox.d.ts +86 -0
- package/controls/list/listbox.ngfactory.d.ts +1 -0
- package/controls/multilanguage/multilanguageinput.d.ts +102 -0
- package/controls/multilanguage/multilanguageinput.ngfactory.d.ts +1 -0
- package/controls/multilanguage/multilanguageinputarea.d.ts +107 -0
- package/controls/multilanguage/multilanguageinputarea.ngfactory.d.ts +1 -0
- package/controls/static/formcontainer.d.ts +31 -0
- package/controls/static/formcontainer.ngfactory.d.ts +1 -0
- package/controls/static/staticlabel.d.ts +18 -0
- package/controls/static/staticlabel.ngfactory.d.ts +1 -0
- package/controls/tabs/tab.d.ts +45 -0
- package/controls/tabs/tab.ngfactory.d.ts +1 -0
- package/controls/tabs/tabitem.d.ts +30 -0
- package/controls/tabs/tabitem.ngfactory.d.ts +1 -0
- package/controls/tinymce/tinymce.d.ts +149 -0
- package/controls/tinymce/tinymce.ngfactory.d.ts +1 -0
- package/controls/tinymce/tinymcedialogsettings.d.ts +27 -0
- package/controls/tinymce/tinymcedialogsettings.ngfactory.d.ts +1 -0
- package/controls/tinymce/tinymcedialogsettingsmeta.d.ts +9 -0
- package/controls/tinymce/tinymcedialogsettingsmeta.ngfactory.d.ts +1 -0
- package/controls/tinymce/tinymceinstance.d.ts +10 -0
- package/controls/tinymce/tinymceinstance.ngfactory.d.ts +1 -0
- package/controls/tooltip/tooltip.d.ts +138 -0
- package/controls/tooltip/tooltip.ngfactory.d.ts +1 -0
- package/controls/treeview/ngtreeitemaction.d.ts +40 -0
- package/controls/treeview/ngtreeitemaction.ngfactory.d.ts +1 -0
- package/controls/treeview/treeview.d.ts +185 -0
- package/controls/treeview/treeview.ngfactory.d.ts +1 -0
- package/controls/treeview/treeviewchild.d.ts +12 -0
- package/controls/treeview/treeviewchild.ngfactory.d.ts +1 -0
- package/controls/upload/dropzonemultiple.d.ts +70 -0
- package/controls/upload/dropzonemultiple.ngfactory.d.ts +1 -0
- package/controls/upload/dropzonesingle.d.ts +47 -0
- package/controls/upload/dropzonesingle.ngfactory.d.ts +1 -0
- package/controls/upload/uploadmultiple.d.ts +50 -0
- package/controls/upload/uploadmultiple.ngfactory.d.ts +1 -0
- package/controls/upload/uploadsingle.d.ts +27 -0
- package/controls/upload/uploadsingle.ngfactory.d.ts +1 -0
- package/controls/validation/validationsummary.d.ts +60 -0
- package/controls/validation/validationsummary.ngfactory.d.ts +1 -0
- package/controls/wizard/wizard.d.ts +73 -0
- package/controls/wizard/wizard.ngfactory.d.ts +1 -0
- package/controls/wizard/wizarditem.d.ts +25 -0
- package/controls/wizard/wizarditem.ngfactory.d.ts +1 -0
- package/enums/ButtonRoleType.d.ts +1 -0
- package/enums/ButtonRoleType.ngfactory.d.ts +1 -0
- package/enums/ControlHeight.d.ts +17 -0
- package/enums/ControlHeight.ngfactory.d.ts +1 -0
- package/enums/IconType.d.ts +7 -0
- package/enums/IconType.ngfactory.d.ts +1 -0
- package/esm2015/common/basedatetimecontrol.js +164 -0
- package/esm2015/common/basedatetimecontrol.ngfactory.js +7 -0
- package/esm2015/common/baseinputcontrol.js +78 -0
- package/esm2015/common/baseinputcontrol.ngfactory.js +7 -0
- package/esm2015/common/baselistcontrol.js +55 -0
- package/esm2015/common/baselistcontrol.ngfactory.js +7 -0
- package/esm2015/common/basemodelcontrol.js +483 -0
- package/esm2015/common/basemodelcontrol.ngfactory.js +7 -0
- package/esm2015/common/baseselectcontrol.js +26 -0
- package/esm2015/common/baseselectcontrol.ngfactory.js +7 -0
- package/esm2015/common/baseuploadcontrol.js +457 -0
- package/esm2015/common/baseuploadcontrol.ngfactory.js +7 -0
- package/esm2015/components/browser/browser.js +545 -0
- package/esm2015/components/browser/browser.ngfactory.js +7 -0
- package/esm2015/components/browser/models/browserfile.js +1 -0
- package/esm2015/components/browser/models/browserfile.ngfactory.js +7 -0
- package/esm2015/components/browser/models/browserfiledeleterequest.js +13 -0
- package/esm2015/components/browser/models/browserfiledeleterequest.ngfactory.js +7 -0
- package/esm2015/components/browser/models/browserfilerenamerequest.js +13 -0
- package/esm2015/components/browser/models/browserfilerenamerequest.ngfactory.js +7 -0
- package/esm2015/components/browser/models/browserfileresponse.js +1 -0
- package/esm2015/components/browser/models/browserfileresponse.ngfactory.js +7 -0
- package/esm2015/components/browser/models/browserfilesaverequest.js +13 -0
- package/esm2015/components/browser/models/browserfilesaverequest.ngfactory.js +7 -0
- package/esm2015/components/browser/models/browsernode.js +1 -0
- package/esm2015/components/browser/models/browsernode.ngfactory.js +7 -0
- package/esm2015/components/browser/models/browsernodedeleterequest.js +13 -0
- package/esm2015/components/browser/models/browsernodedeleterequest.ngfactory.js +7 -0
- package/esm2015/components/browser/models/browsernodenewrequest.js +13 -0
- package/esm2015/components/browser/models/browsernodenewrequest.ngfactory.js +7 -0
- package/esm2015/components/browser/models/browsernoderenamerequest.js +13 -0
- package/esm2015/components/browser/models/browsernoderenamerequest.ngfactory.js +7 -0
- package/esm2015/components/browser/models/browsernoderequest.js +13 -0
- package/esm2015/components/browser/models/browsernoderequest.ngfactory.js +7 -0
- package/esm2015/components/browser/models/browsernoderesponse.js +1 -0
- package/esm2015/components/browser/models/browsernoderesponse.ngfactory.js +7 -0
- package/esm2015/controls/buttons/button.js +141 -0
- package/esm2015/controls/buttons/button.ngfactory.js +7 -0
- package/esm2015/controls/checkbox/checkbox.js +33 -0
- package/esm2015/controls/checkbox/checkbox.ngfactory.js +7 -0
- package/esm2015/controls/checkbox/radiobutton.js +115 -0
- package/esm2015/controls/checkbox/radiobutton.ngfactory.js +7 -0
- package/esm2015/controls/checkbox/radiobuttons.js +113 -0
- package/esm2015/controls/checkbox/radiobuttons.ngfactory.js +7 -0
- package/esm2015/controls/confirm/confirm.button.js +32 -0
- package/esm2015/controls/confirm/confirm.button.ngfactory.js +7 -0
- package/esm2015/controls/confirm/confirm.js +75 -0
- package/esm2015/controls/confirm/confirm.ngfactory.js +7 -0
- package/esm2015/controls/confirm/confirm.service.js +87 -0
- package/esm2015/controls/confirm/confirm.service.ngfactory.js +7 -0
- package/esm2015/controls/contextmenu/contextmenu.js +194 -0
- package/esm2015/controls/contextmenu/contextmenu.ngfactory.js +7 -0
- package/esm2015/controls/contextmenu/contextmenuanchor.js +22 -0
- package/esm2015/controls/contextmenu/contextmenuanchor.ngfactory.js +7 -0
- package/esm2015/controls/contextmenu/contextmenucontainer.js +22 -0
- package/esm2015/controls/contextmenu/contextmenucontainer.ngfactory.js +7 -0
- package/esm2015/controls/contextmenu/contextmenuitem.js +10 -0
- package/esm2015/controls/contextmenu/contextmenuitem.ngfactory.js +7 -0
- package/esm2015/controls/contextmenu/contextmenuitembutton.js +97 -0
- package/esm2015/controls/contextmenu/contextmenuitembutton.ngfactory.js +7 -0
- package/esm2015/controls/datetime/date.js +212 -0
- package/esm2015/controls/datetime/date.ngfactory.js +7 -0
- package/esm2015/controls/datetime/dateselector.js +458 -0
- package/esm2015/controls/datetime/dateselector.ngfactory.js +7 -0
- package/esm2015/controls/datetime/datetime.js +229 -0
- package/esm2015/controls/datetime/datetime.ngfactory.js +7 -0
- package/esm2015/controls/datetime/time.js +212 -0
- package/esm2015/controls/datetime/time.ngfactory.js +7 -0
- package/esm2015/controls/dialog/dialog.js +207 -0
- package/esm2015/controls/dialog/dialog.ngfactory.js +7 -0
- package/esm2015/controls/form/form.js +110 -0
- package/esm2015/controls/form/form.ngfactory.js +7 -0
- package/esm2015/controls/grid/grid.js +144 -0
- package/esm2015/controls/grid/grid.ngfactory.js +7 -0
- package/esm2015/controls/grid/gridbutton.js +54 -0
- package/esm2015/controls/grid/gridbutton.ngfactory.js +7 -0
- package/esm2015/controls/grid/gridcolumn.js +49 -0
- package/esm2015/controls/grid/gridcolumn.ngfactory.js +7 -0
- package/esm2015/controls/grid/gridcolumnaction.js +26 -0
- package/esm2015/controls/grid/gridcolumnaction.ngfactory.js +7 -0
- package/esm2015/controls/grid/gridcolumnbase.js +126 -0
- package/esm2015/controls/grid/gridcolumnbase.ngfactory.js +7 -0
- package/esm2015/controls/grid/gridimage.js +13 -0
- package/esm2015/controls/grid/gridimage.ngfactory.js +7 -0
- package/esm2015/controls/grid/model.js +79 -0
- package/esm2015/controls/grid/model.ngfactory.js +7 -0
- package/esm2015/controls/grid/paging.js +254 -0
- package/esm2015/controls/grid/paging.ngfactory.js +7 -0
- package/esm2015/controls/input/input.js +66 -0
- package/esm2015/controls/input/input.ngfactory.js +7 -0
- package/esm2015/controls/input/inputarea.js +54 -0
- package/esm2015/controls/input/inputarea.ngfactory.js +7 -0
- package/esm2015/controls/input/inputcurrency.js +31 -0
- package/esm2015/controls/input/inputcurrency.ngfactory.js +7 -0
- package/esm2015/controls/input/inputdecimal.js +146 -0
- package/esm2015/controls/input/inputdecimal.ngfactory.js +7 -0
- package/esm2015/controls/input/inputemail.js +41 -0
- package/esm2015/controls/input/inputemail.ngfactory.js +7 -0
- package/esm2015/controls/input/inputinteger.js +130 -0
- package/esm2015/controls/input/inputinteger.ngfactory.js +7 -0
- package/esm2015/controls/input/inputpassword.js +46 -0
- package/esm2015/controls/input/inputpassword.ngfactory.js +7 -0
- package/esm2015/controls/input/inputsearch.js +37 -0
- package/esm2015/controls/input/inputsearch.ngfactory.js +7 -0
- package/esm2015/controls/layout/formlayout.js +70 -0
- package/esm2015/controls/layout/formlayout.ngfactory.js +7 -0
- package/esm2015/controls/list/dropdown.js +270 -0
- package/esm2015/controls/list/dropdown.ngfactory.js +7 -0
- package/esm2015/controls/list/list.module.js +11 -0
- package/esm2015/controls/list/list.module.ngfactory.js +7 -0
- package/esm2015/controls/list/listbox.js +187 -0
- package/esm2015/controls/list/listbox.ngfactory.js +7 -0
- package/esm2015/controls/multilanguage/multilanguageinput.js +230 -0
- package/esm2015/controls/multilanguage/multilanguageinput.ngfactory.js +7 -0
- package/esm2015/controls/multilanguage/multilanguageinputarea.js +231 -0
- package/esm2015/controls/multilanguage/multilanguageinputarea.ngfactory.js +7 -0
- package/esm2015/controls/static/formcontainer.js +50 -0
- package/esm2015/controls/static/formcontainer.ngfactory.js +7 -0
- package/esm2015/controls/static/staticlabel.js +31 -0
- package/esm2015/controls/static/staticlabel.ngfactory.js +7 -0
- package/esm2015/controls/tabs/tab.js +72 -0
- package/esm2015/controls/tabs/tab.ngfactory.js +7 -0
- package/esm2015/controls/tabs/tabitem.js +32 -0
- package/esm2015/controls/tabs/tabitem.ngfactory.js +7 -0
- package/esm2015/controls/tinymce/tinymce.js +238 -0
- package/esm2015/controls/tinymce/tinymce.ngfactory.js +7 -0
- package/esm2015/controls/tinymce/tinymcedialogsettings.js +13 -0
- package/esm2015/controls/tinymce/tinymcedialogsettings.ngfactory.js +7 -0
- package/esm2015/controls/tinymce/tinymcedialogsettingsmeta.js +4 -0
- package/esm2015/controls/tinymce/tinymcedialogsettingsmeta.ngfactory.js +7 -0
- package/esm2015/controls/tinymce/tinymceinstance.js +1 -0
- package/esm2015/controls/tinymce/tinymceinstance.ngfactory.js +7 -0
- package/esm2015/controls/tooltip/tooltip.js +361 -0
- package/esm2015/controls/tooltip/tooltip.ngfactory.js +7 -0
- package/esm2015/controls/treeview/ngtreeitemaction.js +60 -0
- package/esm2015/controls/treeview/ngtreeitemaction.ngfactory.js +7 -0
- package/esm2015/controls/treeview/treeview.js +322 -0
- package/esm2015/controls/treeview/treeview.ngfactory.js +7 -0
- package/esm2015/controls/treeview/treeviewchild.js +18 -0
- package/esm2015/controls/treeview/treeviewchild.ngfactory.js +7 -0
- package/esm2015/controls/upload/dropzonemultiple.js +163 -0
- package/esm2015/controls/upload/dropzonemultiple.ngfactory.js +7 -0
- package/esm2015/controls/upload/dropzonesingle.js +108 -0
- package/esm2015/controls/upload/dropzonesingle.ngfactory.js +7 -0
- package/esm2015/controls/upload/uploadmultiple.js +121 -0
- package/esm2015/controls/upload/uploadmultiple.ngfactory.js +7 -0
- package/esm2015/controls/upload/uploadsingle.js +55 -0
- package/esm2015/controls/upload/uploadsingle.ngfactory.js +7 -0
- package/esm2015/controls/validation/validationsummary.js +133 -0
- package/esm2015/controls/validation/validationsummary.ngfactory.js +7 -0
- package/esm2015/controls/wizard/wizard.js +139 -0
- package/esm2015/controls/wizard/wizard.ngfactory.js +7 -0
- package/esm2015/controls/wizard/wizarditem.js +27 -0
- package/esm2015/controls/wizard/wizarditem.ngfactory.js +7 -0
- package/esm2015/enums/ButtonRoleType.js +1 -0
- package/esm2015/enums/ButtonRoleType.ngfactory.js +7 -0
- package/esm2015/enums/ControlHeight.js +19 -0
- package/esm2015/enums/ControlHeight.ngfactory.js +7 -0
- package/esm2015/enums/IconType.js +9 -0
- package/esm2015/enums/IconType.ngfactory.js +7 -0
- package/esm2015/interfaces/ISacConfigurationService.js +1 -0
- package/esm2015/interfaces/ISacConfigurationService.ngfactory.js +7 -0
- package/esm2015/interfaces/ISacFileBrowserService.js +1 -0
- package/esm2015/interfaces/ISacFileBrowserService.ngfactory.js +7 -0
- package/esm2015/interfaces/ISacIconService.js +1 -0
- package/esm2015/interfaces/ISacIconService.ngfactory.js +7 -0
- package/esm2015/interfaces/ISacLabelSizes.js +1 -0
- package/esm2015/interfaces/ISacLabelSizes.ngfactory.js +7 -0
- package/esm2015/interfaces/ISacLanguageService.js +1 -0
- package/esm2015/interfaces/ISacLanguageService.ngfactory.js +7 -0
- package/esm2015/interfaces/ISacLocalisationService.js +1 -0
- package/esm2015/interfaces/ISacLocalisationService.ngfactory.js +7 -0
- package/esm2015/interfaces/ISacValidationKeyService.js +1 -0
- package/esm2015/interfaces/ISacValidationKeyService.ngfactory.js +7 -0
- package/esm2015/interfaces/iabstractcontrollabel.js +1 -0
- package/esm2015/interfaces/iabstractcontrollabel.ngfactory.js +7 -0
- package/esm2015/interfaces/iconfirmcomponent.js +1 -0
- package/esm2015/interfaces/iconfirmcomponent.ngfactory.js +7 -0
- package/esm2015/interfaces/idatetimecontrol.js +1 -0
- package/esm2015/interfaces/idatetimecontrol.ngfactory.js +7 -0
- package/esm2015/interfaces/iuploadcontrol.js +1 -0
- package/esm2015/interfaces/iuploadcontrol.ngfactory.js +7 -0
- package/esm2015/models/languagemodel.js +13 -0
- package/esm2015/models/languagemodel.ngfactory.js +7 -0
- package/esm2015/public_api.js +101 -0
- package/esm2015/public_api.ngfactory.js +7 -0
- package/esm2015/services/index.js +7 -0
- package/esm2015/services/index.ngfactory.js +7 -0
- package/esm2015/services/sac-configuration.service.js +77 -0
- package/esm2015/services/sac-configuration.service.ngfactory.js +7 -0
- package/esm2015/services/sac-filebrowser.service.js +203 -0
- package/esm2015/services/sac-filebrowser.service.ngfactory.js +7 -0
- package/esm2015/services/sac-icon.service.js +155 -0
- package/esm2015/services/sac-icon.service.ngfactory.js +7 -0
- package/esm2015/services/sac-language.service.js +43 -0
- package/esm2015/services/sac-language.service.ngfactory.js +7 -0
- package/esm2015/services/sac-localisation.service.js +460 -0
- package/esm2015/services/sac-localisation.service.ngfactory.js +7 -0
- package/esm2015/services/sac-validationkey.service.js +156 -0
- package/esm2015/services/sac-validationkey.service.ngfactory.js +7 -0
- package/esm2015/simpleangularcontrols-sac-common.js +11 -0
- package/esm2015/simpleangularcontrols-sac-common.ngfactory.js +7 -0
- package/esm2015/utilities/convertion.js +32 -0
- package/esm2015/utilities/convertion.ngfactory.js +7 -0
- package/esm2015/utilities/datatypes.js +9 -0
- package/esm2015/utilities/datatypes.ngfactory.js +7 -0
- package/esm2015/utilities/enums.js +16 -0
- package/esm2015/utilities/enums.ngfactory.js +7 -0
- package/esm2015/utilities/guid.js +16 -0
- package/esm2015/utilities/guid.ngfactory.js +7 -0
- package/esm2015/utilities/interpolation.js +50 -0
- package/esm2015/utilities/interpolation.ngfactory.js +7 -0
- package/esm2015/utilities/positioning.js +301 -0
- package/esm2015/utilities/positioning.ngfactory.js +7 -0
- package/esm2015/validation/email.validator.js +13 -0
- package/esm2015/validation/email.validator.ngfactory.js +7 -0
- package/esm2015/validation/index.js +3 -0
- package/esm2015/validation/index.ngfactory.js +7 -0
- package/esm2015/validation/invaliddate.validator.js +14 -0
- package/esm2015/validation/invaliddate.validator.ngfactory.js +7 -0
- package/esm2015/validation/isDateValid.js +15 -0
- package/esm2015/validation/isDateValid.ngfactory.js +7 -0
- package/esm2015/validation/maxdate.validator.js +21 -0
- package/esm2015/validation/maxdate.validator.ngfactory.js +7 -0
- package/esm2015/validation/maxtime.validator.js +21 -0
- package/esm2015/validation/maxtime.validator.ngfactory.js +7 -0
- package/esm2015/validation/maxvalue.validator.js +16 -0
- package/esm2015/validation/maxvalue.validator.ngfactory.js +7 -0
- package/esm2015/validation/mindate.validator.js +21 -0
- package/esm2015/validation/mindate.validator.ngfactory.js +7 -0
- package/esm2015/validation/minfiles.validator.js +19 -0
- package/esm2015/validation/minfiles.validator.ngfactory.js +7 -0
- package/esm2015/validation/minlength.validator.js +21 -0
- package/esm2015/validation/minlength.validator.ngfactory.js +7 -0
- package/esm2015/validation/mintime.validator.js +21 -0
- package/esm2015/validation/mintime.validator.ngfactory.js +7 -0
- package/esm2015/validation/minvalue.validator.js +16 -0
- package/esm2015/validation/minvalue.validator.ngfactory.js +7 -0
- package/esm2015/validation/multilanguagerequired.validator.js +22 -0
- package/esm2015/validation/multilanguagerequired.validator.ngfactory.js +7 -0
- package/esm2015/validation/multilanguagerequiredany.validator.js +22 -0
- package/esm2015/validation/multilanguagerequiredany.validator.ngfactory.js +7 -0
- package/esm2015/validation/pattern.validator.js +16 -0
- package/esm2015/validation/pattern.validator.ngfactory.js +7 -0
- package/esm2015/validation/required.validator.js +13 -0
- package/esm2015/validation/required.validator.ngfactory.js +7 -0
- package/esm2015/validation/validation.class.js +189 -0
- package/esm2015/validation/validation.class.ngfactory.js +7 -0
- package/esm2015/validation/validationerrorcreator.js +11 -0
- package/esm2015/validation/validationerrorcreator.ngfactory.js +7 -0
- package/esm2015/validation/validationerroritem.js +27 -0
- package/esm2015/validation/validationerroritem.ngfactory.js +7 -0
- package/fesm2015/simpleangularcontrols-sac-common.js +10319 -0
- package/fesm2015/simpleangularcontrols-sac-common.js.map +1 -0
- package/interfaces/ISacConfigurationService.d.ts +38 -0
- package/interfaces/ISacConfigurationService.ngfactory.d.ts +1 -0
- package/interfaces/ISacFileBrowserService.d.ts +65 -0
- package/interfaces/ISacFileBrowserService.ngfactory.d.ts +1 -0
- package/interfaces/ISacIconService.d.ts +89 -0
- package/interfaces/ISacIconService.ngfactory.d.ts +1 -0
- package/interfaces/ISacLabelSizes.d.ts +26 -0
- package/interfaces/ISacLabelSizes.ngfactory.d.ts +1 -0
- package/interfaces/ISacLanguageService.d.ts +12 -0
- package/interfaces/ISacLanguageService.ngfactory.d.ts +1 -0
- package/interfaces/ISacLocalisationService.d.ts +10 -0
- package/interfaces/ISacLocalisationService.ngfactory.d.ts +1 -0
- package/interfaces/ISacValidationKeyService.d.ts +52 -0
- package/interfaces/ISacValidationKeyService.ngfactory.d.ts +1 -0
- package/interfaces/iabstractcontrollabel.d.ts +6 -0
- package/interfaces/iabstractcontrollabel.ngfactory.d.ts +1 -0
- package/interfaces/iconfirmcomponent.d.ts +18 -0
- package/interfaces/iconfirmcomponent.ngfactory.d.ts +1 -0
- package/interfaces/idatetimecontrol.d.ts +7 -0
- package/interfaces/idatetimecontrol.ngfactory.d.ts +1 -0
- package/interfaces/iuploadcontrol.d.ts +9 -0
- package/interfaces/iuploadcontrol.ngfactory.d.ts +1 -0
- package/models/languagemodel.d.ts +22 -0
- package/models/languagemodel.ngfactory.d.ts +1 -0
- package/package.json +28 -0
- package/public_api.d.ts +79 -0
- package/public_api.ngfactory.d.ts +1 -0
- package/services/index.d.ts +6 -0
- package/services/index.ngfactory.d.ts +1 -0
- package/services/sac-configuration.service.d.ts +81 -0
- package/services/sac-configuration.service.ngfactory.d.ts +1 -0
- package/services/sac-filebrowser.service.d.ts +140 -0
- package/services/sac-filebrowser.service.ngfactory.d.ts +1 -0
- package/services/sac-icon.service.d.ts +184 -0
- package/services/sac-icon.service.ngfactory.d.ts +1 -0
- package/services/sac-language.service.d.ts +26 -0
- package/services/sac-language.service.ngfactory.d.ts +1 -0
- package/services/sac-localisation.service.d.ts +137 -0
- package/services/sac-localisation.service.ngfactory.d.ts +1 -0
- package/services/sac-validationkey.service.d.ts +55 -0
- package/services/sac-validationkey.service.ngfactory.d.ts +1 -0
- package/simpleangularcontrols-sac-common-10.0.0-rc.1.tgz +0 -0
- package/simpleangularcontrols-sac-common.d.ts +10 -0
- package/simpleangularcontrols-sac-common.metadata.json +1 -0
- package/simpleangularcontrols-sac-common.ngfactory.d.ts +1 -0
- package/utilities/convertion.d.ts +15 -0
- package/utilities/convertion.ngfactory.d.ts +1 -0
- package/utilities/datatypes.d.ts +6 -0
- package/utilities/datatypes.ngfactory.d.ts +1 -0
- package/utilities/enums.d.ts +10 -0
- package/utilities/enums.ngfactory.d.ts +1 -0
- package/utilities/guid.d.ts +4 -0
- package/utilities/guid.ngfactory.d.ts +1 -0
- package/utilities/interpolation.d.ts +21 -0
- package/utilities/interpolation.ngfactory.d.ts +1 -0
- package/utilities/positioning.d.ts +82 -0
- package/utilities/positioning.ngfactory.d.ts +1 -0
- package/validation/email.validator.d.ts +2 -0
- package/validation/email.validator.ngfactory.d.ts +1 -0
- package/validation/index.d.ts +2 -0
- package/validation/index.ngfactory.d.ts +1 -0
- package/validation/invaliddate.validator.d.ts +2 -0
- package/validation/invaliddate.validator.ngfactory.d.ts +1 -0
- package/validation/isDateValid.d.ts +5 -0
- package/validation/isDateValid.ngfactory.d.ts +1 -0
- package/validation/maxdate.validator.d.ts +2 -0
- package/validation/maxdate.validator.ngfactory.d.ts +1 -0
- package/validation/maxtime.validator.d.ts +2 -0
- package/validation/maxtime.validator.ngfactory.d.ts +1 -0
- package/validation/maxvalue.validator.d.ts +2 -0
- package/validation/maxvalue.validator.ngfactory.d.ts +1 -0
- package/validation/mindate.validator.d.ts +2 -0
- package/validation/mindate.validator.ngfactory.d.ts +1 -0
- package/validation/minfiles.validator.d.ts +2 -0
- package/validation/minfiles.validator.ngfactory.d.ts +1 -0
- package/validation/minlength.validator.d.ts +2 -0
- package/validation/minlength.validator.ngfactory.d.ts +1 -0
- package/validation/mintime.validator.d.ts +2 -0
- package/validation/mintime.validator.ngfactory.d.ts +1 -0
- package/validation/minvalue.validator.d.ts +2 -0
- package/validation/minvalue.validator.ngfactory.d.ts +1 -0
- package/validation/multilanguagerequired.validator.d.ts +3 -0
- package/validation/multilanguagerequired.validator.ngfactory.d.ts +1 -0
- package/validation/multilanguagerequiredany.validator.d.ts +3 -0
- package/validation/multilanguagerequiredany.validator.ngfactory.d.ts +1 -0
- package/validation/pattern.validator.d.ts +2 -0
- package/validation/pattern.validator.ngfactory.d.ts +1 -0
- package/validation/required.validator.d.ts +2 -0
- package/validation/required.validator.ngfactory.d.ts +1 -0
- package/validation/validation.class.d.ts +139 -0
- package/validation/validation.class.ngfactory.d.ts +1 -0
- package/validation/validationerrorcreator.d.ts +1 -0
- package/validation/validationerrorcreator.ngfactory.d.ts +1 -0
- package/validation/validationerroritem.d.ts +33 -0
- package/validation/validationerroritem.ngfactory.d.ts +1 -0
|
@@ -0,0 +1,460 @@
|
|
|
1
|
+
import { Inject, Injectable, InjectionToken } from '@angular/core';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { Interpolation } from '../utilities/interpolation';
|
|
4
|
+
import { SACVALIDATIONKEY_SERVICE } from './sac-validationkey.service';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "./sac-validationkey.service";
|
|
7
|
+
// #region Classes
|
|
8
|
+
/**
|
|
9
|
+
* abstract class for localisation in components
|
|
10
|
+
* */
|
|
11
|
+
export class SacAbstractLocalisationService {
|
|
12
|
+
}
|
|
13
|
+
SacAbstractLocalisationService.ɵprov = i0.ɵɵdefineInjectable({ factory: function SacAbstractLocalisationService_Factory() { return new SacAbstractLocalisationService(); }, token: SacAbstractLocalisationService, providedIn: "root" });
|
|
14
|
+
SacAbstractLocalisationService.decorators = [
|
|
15
|
+
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
16
|
+
];
|
|
17
|
+
/**
|
|
18
|
+
* default localisation service
|
|
19
|
+
* */
|
|
20
|
+
export class SacDefaultLocalisationService extends SacAbstractLocalisationService {
|
|
21
|
+
// #endregion Properties
|
|
22
|
+
// #region Constructors
|
|
23
|
+
/**
|
|
24
|
+
* Konstruktor
|
|
25
|
+
* */
|
|
26
|
+
constructor(validationKeyService) {
|
|
27
|
+
super();
|
|
28
|
+
this.validationKeyService = validationKeyService;
|
|
29
|
+
// #region Properties
|
|
30
|
+
/**
|
|
31
|
+
* Language Resources für Controls Library
|
|
32
|
+
*/
|
|
33
|
+
this.data = new Map();
|
|
34
|
+
// Set Languages
|
|
35
|
+
this.data.set('de', new Map());
|
|
36
|
+
// Validation
|
|
37
|
+
this.data
|
|
38
|
+
.get('de')
|
|
39
|
+
.set(validationKeyService.ValidationErrorRequired, this.VALIDATION_ERROR_REQUIRED.get('de'));
|
|
40
|
+
this.data
|
|
41
|
+
.get('de')
|
|
42
|
+
.set(validationKeyService.ValidationErrorSummaryRequired, this.VALIDATION_ERROR_SUMMARY_REQUIRED.get('de'));
|
|
43
|
+
this.data
|
|
44
|
+
.get('de')
|
|
45
|
+
.set(validationKeyService.ValidationErrorMinValue, this.VALIDATION_ERROR_MINVALUE.get('de'));
|
|
46
|
+
this.data
|
|
47
|
+
.get('de')
|
|
48
|
+
.set(validationKeyService.ValidationErrorSummaryMinValue, this.VALIDATION_ERROR_SUMMARY_MINVALUE.get('de'));
|
|
49
|
+
this.data
|
|
50
|
+
.get('de')
|
|
51
|
+
.set(validationKeyService.ValidationErrorPattern, this.VALIDATION_ERROR_PATTERN.get('de'));
|
|
52
|
+
this.data
|
|
53
|
+
.get('de')
|
|
54
|
+
.set(validationKeyService.ValidationErrorSummaryPattern, this.VALIDATION_ERROR_SUMMARY_PATTERN.get('de'));
|
|
55
|
+
this.data
|
|
56
|
+
.get('de')
|
|
57
|
+
.set(validationKeyService.ValidationErrorMaxValue, this.VALIDATION_ERROR_MAXVALUE.get('de'));
|
|
58
|
+
this.data
|
|
59
|
+
.get('de')
|
|
60
|
+
.set(validationKeyService.ValidationErrorSummaryMaxValue, this.VALIDATION_ERROR_SUMMARY_MAXVALUE.get('de'));
|
|
61
|
+
this.data
|
|
62
|
+
.get('de')
|
|
63
|
+
.set(validationKeyService.ValidationErrorEmail, this.VALIDATION_ERROR_EMAIL.get('de'));
|
|
64
|
+
this.data
|
|
65
|
+
.get('de')
|
|
66
|
+
.set(validationKeyService.ValidationErrorSummaryEmail, this.VALIDATION_ERROR_SUMMARY_EMAIL.get('de'));
|
|
67
|
+
this.data
|
|
68
|
+
.get('de')
|
|
69
|
+
.set(validationKeyService.ValidationErrorMinLength, this.VALIDATION_ERROR_MINLENGTH.get('de'));
|
|
70
|
+
this.data
|
|
71
|
+
.get('de')
|
|
72
|
+
.set(validationKeyService.ValidationErrorSummaryMinLength, this.VALIDATION_ERROR_SUMMARY_MINLENGTH.get('de'));
|
|
73
|
+
this.data
|
|
74
|
+
.get('de')
|
|
75
|
+
.set(validationKeyService.ValidationErrorMinDate, this.VALIDATION_ERROR_MINDATE.get('de'));
|
|
76
|
+
this.data
|
|
77
|
+
.get('de')
|
|
78
|
+
.set(validationKeyService.ValidationErrorSummaryMinDate, this.VALIDATION_ERROR_SUMMARY_MINDATE.get('de'));
|
|
79
|
+
this.data
|
|
80
|
+
.get('de')
|
|
81
|
+
.set(validationKeyService.ValidationErrorMaxDate, this.VALIDATION_ERROR_MAXDATE.get('de'));
|
|
82
|
+
this.data
|
|
83
|
+
.get('de')
|
|
84
|
+
.set(validationKeyService.ValidationErrorSummaryMaxDate, this.VALIDATION_ERROR_SUMMARY_MAXDATE.get('de'));
|
|
85
|
+
this.data
|
|
86
|
+
.get('de')
|
|
87
|
+
.set(validationKeyService.ValidationErrorMinTime, this.VALIDATION_ERROR_MINTIME.get('de'));
|
|
88
|
+
this.data
|
|
89
|
+
.get('de')
|
|
90
|
+
.set(validationKeyService.ValidationErrorSummaryMinTime, this.VALIDATION_ERROR_SUMMARY_MINTIME.get('de'));
|
|
91
|
+
this.data
|
|
92
|
+
.get('de')
|
|
93
|
+
.set(validationKeyService.ValidationErrorMaxTime, this.VALIDATION_ERROR_MAXTIME.get('de'));
|
|
94
|
+
this.data
|
|
95
|
+
.get('de')
|
|
96
|
+
.set(validationKeyService.ValidationErrorSummaryMaxTime, this.VALIDATION_ERROR_SUMMARY_MAXTIME.get('de'));
|
|
97
|
+
this.data
|
|
98
|
+
.get('de')
|
|
99
|
+
.set(validationKeyService.ValidationErrorDatetimeFormat, this.VALIDATION_ERROR_DATETIMEFORMAT.get('de'));
|
|
100
|
+
this.data
|
|
101
|
+
.get('de')
|
|
102
|
+
.set(validationKeyService.ValidationErrorSummaryDatetimeFormat, this.VALIDATION_ERROR_SUMMARY_DATETIMEFORMAT.get('de'));
|
|
103
|
+
this.data
|
|
104
|
+
.get('de')
|
|
105
|
+
.set(validationKeyService.ValidationErrorFilesMin, this.VALIDATION_ERROR_FILESMIN.get('de'));
|
|
106
|
+
this.data
|
|
107
|
+
.get('de')
|
|
108
|
+
.set(validationKeyService.ValidationErrorSummaryFilesMin, this.VALIDATION_ERROR_SUMMARY_FILESMIN.get('de'));
|
|
109
|
+
this.data
|
|
110
|
+
.get('de')
|
|
111
|
+
.set(validationKeyService.ValidationErrorMultilanguageRequiredAny, this.VALIDATION_ERROR_MULTILANGUAGEREQUIREDANY.get('de'));
|
|
112
|
+
this.data
|
|
113
|
+
.get('de')
|
|
114
|
+
.set(validationKeyService.ValidationErrorSummaryMultilanguageRequiredAny, this.VALIDATION_ERROR_SUMMARY_MULTILANGUAGEREQUIREDANY.get('de'));
|
|
115
|
+
this.data
|
|
116
|
+
.get('de')
|
|
117
|
+
.set(validationKeyService.ValidationErrorMultilanguageRequired, this.VALIDATION_ERROR_MULTILANGUAGEREQUIRED.get('de'));
|
|
118
|
+
this.data
|
|
119
|
+
.get('de')
|
|
120
|
+
.set(validationKeyService.ValidationErrorSummaryMultilanguageRequired, this.VALIDATION_ERROR_SUMMARY_MULTILANGUAGEREQUIRED.get('de'));
|
|
121
|
+
// Grid Component
|
|
122
|
+
this.data
|
|
123
|
+
.get('de')
|
|
124
|
+
.set(validationKeyService.PagingPageOf, this.PAGING_PAGEOFTEXT.get('de'));
|
|
125
|
+
this.data
|
|
126
|
+
.get('de')
|
|
127
|
+
.set(validationKeyService.PagingEntries, this.PAGING_PAGEENTRIESTEXT.get('de'));
|
|
128
|
+
// Upload Component
|
|
129
|
+
this.data
|
|
130
|
+
.get('de')
|
|
131
|
+
.set(validationKeyService.UploadNoFilesSelected, this.UPLOAD_NO_FILE_SELECTED.get('de'));
|
|
132
|
+
this.data
|
|
133
|
+
.get('de')
|
|
134
|
+
.set(validationKeyService.UploadButtonUpload, this.UPLOAD_BUTTON_UPLOAD.get('de'));
|
|
135
|
+
this.data
|
|
136
|
+
.get('de')
|
|
137
|
+
.set(validationKeyService.UploadButtonBrowse, this.UPLOAD_BUTTON_BROWSE.get('de'));
|
|
138
|
+
// TinyMCE Component
|
|
139
|
+
this.data
|
|
140
|
+
.get('de')
|
|
141
|
+
.set(validationKeyService.TinyMceFileselectOk, this.TINYMCE_FILESELECT_OK.get('de'));
|
|
142
|
+
this.data
|
|
143
|
+
.get('de')
|
|
144
|
+
.set(validationKeyService.TinyMceFileselectCancel, this.TINYMCE_FILESELECT_CANCEL.get('de'));
|
|
145
|
+
this.data
|
|
146
|
+
.get('de')
|
|
147
|
+
.set(validationKeyService.TinyMceFileselectDialogtitle, this.TINYMCE_FILESELECT_DIALOGTITLE.get('de'));
|
|
148
|
+
// Confirm Dialog Component
|
|
149
|
+
this.data
|
|
150
|
+
.get('de')
|
|
151
|
+
.set(validationKeyService.ConfirmDefaultButtonYes, this.CONFIRM_BUTTON_YES.get('de'));
|
|
152
|
+
this.data
|
|
153
|
+
.get('de')
|
|
154
|
+
.set(validationKeyService.ConfirmDefaultButtonNo, this.CONFIRM_BUTTON_NO.get('de'));
|
|
155
|
+
// Browser Component
|
|
156
|
+
this.data
|
|
157
|
+
.get('de')
|
|
158
|
+
.set(validationKeyService.FilebrowserGridNoFiles, this.FILEBROWSER_NO_FILES.get('de'));
|
|
159
|
+
this.data
|
|
160
|
+
.get('de')
|
|
161
|
+
.set(validationKeyService.FilebrowserGridFilename, this.FILEBROWSER_GRID_FILE.get('de'));
|
|
162
|
+
this.data
|
|
163
|
+
.get('de')
|
|
164
|
+
.set(validationKeyService.FilebrowserGridSize, this.FILEBROWSER_GRID_SIZE.get('de'));
|
|
165
|
+
this.data
|
|
166
|
+
.get('de')
|
|
167
|
+
.set(validationKeyService.FilebrowserButtonUpload, this.FILEBROWSER_UPLOAD.get('de'));
|
|
168
|
+
this.data
|
|
169
|
+
.get('de')
|
|
170
|
+
.set(validationKeyService.FilebrowserButtonNewFolder, this.FILEBROWSER_NEWFOLDER.get('de'));
|
|
171
|
+
this.data
|
|
172
|
+
.get('de')
|
|
173
|
+
.set(validationKeyService.FilebrowserButtonRefresh, this.FILEBROWSER_REFRESH.get('de'));
|
|
174
|
+
this.data
|
|
175
|
+
.get('de')
|
|
176
|
+
.set(validationKeyService.FilebrowserButtonDelete, this.FILEBROWSER_DELETE.get('de'));
|
|
177
|
+
this.data
|
|
178
|
+
.get('de')
|
|
179
|
+
.set(this.validationKeyService.FilebrowserConfirmTextDeleteFolder, this.FILEBROWSER_CONFIRM_DELETEFOLDER.get('de'));
|
|
180
|
+
this.data
|
|
181
|
+
.get('de')
|
|
182
|
+
.set(this.validationKeyService.FilebrowserConfirmTextDeleteFile, this.FILEBROWSER_CONFIRM_DELETEFILE.get('de'));
|
|
183
|
+
// EN
|
|
184
|
+
this.data.set('en', new Map());
|
|
185
|
+
}
|
|
186
|
+
// #endregion Constructors
|
|
187
|
+
// #region Protected Getters And Setters
|
|
188
|
+
get CONFIRM_BUTTON_NO() {
|
|
189
|
+
return new Map([['de', 'Nein']]);
|
|
190
|
+
}
|
|
191
|
+
get CONFIRM_BUTTON_YES() {
|
|
192
|
+
return new Map([['de', 'Ja']]);
|
|
193
|
+
}
|
|
194
|
+
get FILEBROWSER_CONFIRM_DELETEFILE() {
|
|
195
|
+
return new Map([['de', 'Soll die Datei gelöscht werden?']]);
|
|
196
|
+
}
|
|
197
|
+
get FILEBROWSER_CONFIRM_DELETEFOLDER() {
|
|
198
|
+
return new Map([
|
|
199
|
+
['de', 'Soll der Ordner gelöscht werden?'],
|
|
200
|
+
]);
|
|
201
|
+
}
|
|
202
|
+
get FILEBROWSER_DELETE() {
|
|
203
|
+
return new Map([['de', 'Löschen']]);
|
|
204
|
+
}
|
|
205
|
+
get FILEBROWSER_GRID_FILE() {
|
|
206
|
+
return new Map([['de', 'Dateiname']]);
|
|
207
|
+
}
|
|
208
|
+
get FILEBROWSER_GRID_SIZE() {
|
|
209
|
+
return new Map([['de', 'Grösse']]);
|
|
210
|
+
}
|
|
211
|
+
get FILEBROWSER_NEWFOLDER() {
|
|
212
|
+
return new Map([['de', 'Neuer Ordner']]);
|
|
213
|
+
}
|
|
214
|
+
get FILEBROWSER_NO_FILES() {
|
|
215
|
+
return new Map([['de', 'Keine Dateien vorhanden']]);
|
|
216
|
+
}
|
|
217
|
+
get FILEBROWSER_REFRESH() {
|
|
218
|
+
return new Map([['de', 'Aktualisieren']]);
|
|
219
|
+
}
|
|
220
|
+
get FILEBROWSER_UPLOAD() {
|
|
221
|
+
return new Map([
|
|
222
|
+
['de', 'Legen Sie Dateien hier ab um Sie hochzuladen'],
|
|
223
|
+
]);
|
|
224
|
+
}
|
|
225
|
+
get PAGING_PAGEENTRIESTEXT() {
|
|
226
|
+
return new Map([['de', 'Einträge pro Seite']]);
|
|
227
|
+
}
|
|
228
|
+
get PAGING_PAGEOFTEXT() {
|
|
229
|
+
return new Map([
|
|
230
|
+
['de', 'Seite {{CURRENTPAGE}} von {{TOTALPAGES}}'],
|
|
231
|
+
]);
|
|
232
|
+
}
|
|
233
|
+
get TINYMCE_FILESELECT_CANCEL() {
|
|
234
|
+
return new Map([['de', 'Abbrechen']]);
|
|
235
|
+
}
|
|
236
|
+
get TINYMCE_FILESELECT_DIALOGTITLE() {
|
|
237
|
+
return new Map([['de', 'Datei auswählen']]);
|
|
238
|
+
}
|
|
239
|
+
get TINYMCE_FILESELECT_OK() {
|
|
240
|
+
return new Map([['de', 'OK']]);
|
|
241
|
+
}
|
|
242
|
+
get UPLOAD_BUTTON_BROWSE() {
|
|
243
|
+
return new Map([['de', 'Browse...']]);
|
|
244
|
+
}
|
|
245
|
+
get UPLOAD_BUTTON_UPLOAD() {
|
|
246
|
+
return new Map([['de', 'Upload']]);
|
|
247
|
+
}
|
|
248
|
+
get UPLOAD_NO_FILE_SELECTED() {
|
|
249
|
+
return new Map([['de', 'Keine Datei ausgewählt']]);
|
|
250
|
+
}
|
|
251
|
+
get VALIDATION_ERROR_DATETIMEFORMAT() {
|
|
252
|
+
return new Map([['de', 'Feld ist kein gültiges Datum.']]);
|
|
253
|
+
}
|
|
254
|
+
get VALIDATION_ERROR_EMAIL() {
|
|
255
|
+
return new Map([['de', 'Feld ist keine E-Mail Adresse']]);
|
|
256
|
+
}
|
|
257
|
+
get VALIDATION_ERROR_FILESMIN() {
|
|
258
|
+
return new Map([
|
|
259
|
+
['de', 'Es müssen min. {{MINFILES}} Dateien hochgeladen sein.'],
|
|
260
|
+
]);
|
|
261
|
+
}
|
|
262
|
+
get VALIDATION_ERROR_MAXDATE() {
|
|
263
|
+
return new Map([
|
|
264
|
+
['de', 'Feld muss älter oder gleich {{MAXDATE}} sein.'],
|
|
265
|
+
]);
|
|
266
|
+
}
|
|
267
|
+
get VALIDATION_ERROR_MAXTIME() {
|
|
268
|
+
return new Map([
|
|
269
|
+
['de', 'Feld muss älter oder gleich {{MAXTIME}} sein.'],
|
|
270
|
+
]);
|
|
271
|
+
}
|
|
272
|
+
get VALIDATION_ERROR_MAXVALUE() {
|
|
273
|
+
return new Map([
|
|
274
|
+
['de', 'Feld "{{FIELD}}" darf nicht grösser als {{MAXVALUE}} sein.'],
|
|
275
|
+
]);
|
|
276
|
+
}
|
|
277
|
+
get VALIDATION_ERROR_MINDATE() {
|
|
278
|
+
return new Map([
|
|
279
|
+
['de', 'Feld muss neuer oder gleich {{MINDATE}} sein.'],
|
|
280
|
+
]);
|
|
281
|
+
}
|
|
282
|
+
get VALIDATION_ERROR_MINLENGTH() {
|
|
283
|
+
return new Map([
|
|
284
|
+
['de', 'Feld erfordert min. {{MINLENGTH}} Zeichen.'],
|
|
285
|
+
]);
|
|
286
|
+
}
|
|
287
|
+
get VALIDATION_ERROR_MINTIME() {
|
|
288
|
+
return new Map([
|
|
289
|
+
['de', 'Feld muss neuer oder gleich {{MINTIME}} sein.'],
|
|
290
|
+
]);
|
|
291
|
+
}
|
|
292
|
+
get VALIDATION_ERROR_MINVALUE() {
|
|
293
|
+
return new Map([
|
|
294
|
+
['de', 'Wert darf nicht kleiner als {{MINVALUE}} sein.'],
|
|
295
|
+
]);
|
|
296
|
+
}
|
|
297
|
+
get VALIDATION_ERROR_MULTILANGUAGEREQUIRED() {
|
|
298
|
+
return new Map([
|
|
299
|
+
['de', 'Es müssen alle Sprachen erfasst sein.'],
|
|
300
|
+
]);
|
|
301
|
+
}
|
|
302
|
+
get VALIDATION_ERROR_MULTILANGUAGEREQUIREDANY() {
|
|
303
|
+
return new Map([
|
|
304
|
+
['de', 'Es muss min. 1 Sprache erfasst sein.'],
|
|
305
|
+
]);
|
|
306
|
+
}
|
|
307
|
+
get VALIDATION_ERROR_PATTERN() {
|
|
308
|
+
return new Map([
|
|
309
|
+
['de', 'Wert entspricht nicht der Format Vorlage.'],
|
|
310
|
+
]);
|
|
311
|
+
}
|
|
312
|
+
get VALIDATION_ERROR_REQUIRED() {
|
|
313
|
+
return new Map([['de', 'Feld ist erforderlich.']]);
|
|
314
|
+
}
|
|
315
|
+
get VALIDATION_ERROR_SUMMARY_DATETIMEFORMAT() {
|
|
316
|
+
return new Map([
|
|
317
|
+
['de', 'Feld "{{FIELD}}" ist kein gültiges Datum.'],
|
|
318
|
+
]);
|
|
319
|
+
}
|
|
320
|
+
get VALIDATION_ERROR_SUMMARY_EMAIL() {
|
|
321
|
+
return new Map([
|
|
322
|
+
['de', 'Feld "{{FIELD}}" ist keine E-Mail Adresse'],
|
|
323
|
+
]);
|
|
324
|
+
}
|
|
325
|
+
get VALIDATION_ERROR_SUMMARY_FILESMIN() {
|
|
326
|
+
return new Map([
|
|
327
|
+
[
|
|
328
|
+
'de',
|
|
329
|
+
'Feld "{{FIELD}}" muss min. {{MINFILES}} Dateien hochgeladen haben.',
|
|
330
|
+
],
|
|
331
|
+
]);
|
|
332
|
+
}
|
|
333
|
+
get VALIDATION_ERROR_SUMMARY_MAXDATE() {
|
|
334
|
+
return new Map([
|
|
335
|
+
['de', 'Feld "{{FIELD}}" muss älter oder gleich {{MAXDATE}} sein.'],
|
|
336
|
+
]);
|
|
337
|
+
}
|
|
338
|
+
get VALIDATION_ERROR_SUMMARY_MAXTIME() {
|
|
339
|
+
return new Map([
|
|
340
|
+
['de', 'Feld "{{FIELD}}" muss älter oder gleich {{MAXTIME}} sein.'],
|
|
341
|
+
]);
|
|
342
|
+
}
|
|
343
|
+
get VALIDATION_ERROR_SUMMARY_MAXVALUE() {
|
|
344
|
+
return new Map([
|
|
345
|
+
['de', 'Wert darf nicht grösser als {{MAXVALUE}} sein.'],
|
|
346
|
+
]);
|
|
347
|
+
}
|
|
348
|
+
get VALIDATION_ERROR_SUMMARY_MINDATE() {
|
|
349
|
+
return new Map([
|
|
350
|
+
['de', 'Feld "{{FIELD}}" muss neuer oder gleich {{MINDATE}} sein.'],
|
|
351
|
+
]);
|
|
352
|
+
}
|
|
353
|
+
get VALIDATION_ERROR_SUMMARY_MINLENGTH() {
|
|
354
|
+
return new Map([
|
|
355
|
+
['de', 'Feld "{{FIELD}}" erfordert min. {{MINLENGTH}} Zeichen.'],
|
|
356
|
+
]);
|
|
357
|
+
}
|
|
358
|
+
get VALIDATION_ERROR_SUMMARY_MINTIME() {
|
|
359
|
+
return new Map([
|
|
360
|
+
['de', 'Feld "{{FIELD}}" muss neuer oder gleich {{MINTIME}} sein.'],
|
|
361
|
+
]);
|
|
362
|
+
}
|
|
363
|
+
get VALIDATION_ERROR_SUMMARY_MINVALUE() {
|
|
364
|
+
return new Map([
|
|
365
|
+
['de', 'Feld "{{FIELD}}" darf nicht kleiner als {{MINVALUE}} sein.'],
|
|
366
|
+
]);
|
|
367
|
+
}
|
|
368
|
+
get VALIDATION_ERROR_SUMMARY_MULTILANGUAGEREQUIRED() {
|
|
369
|
+
return new Map([
|
|
370
|
+
['de', 'Feld "{{FIELD}}" muss alle Sprachen erfasst haben.'],
|
|
371
|
+
]);
|
|
372
|
+
}
|
|
373
|
+
get VALIDATION_ERROR_SUMMARY_MULTILANGUAGEREQUIREDANY() {
|
|
374
|
+
return new Map([
|
|
375
|
+
['de', 'Feld "{{FIELD}}" muss min. 1 Sprache erfasst haben.'],
|
|
376
|
+
]);
|
|
377
|
+
}
|
|
378
|
+
get VALIDATION_ERROR_SUMMARY_PATTERN() {
|
|
379
|
+
return new Map([
|
|
380
|
+
['de', 'Feld "{{FIELD}}" entspricht nicht der Format Vorlage.'],
|
|
381
|
+
]);
|
|
382
|
+
}
|
|
383
|
+
get VALIDATION_ERROR_SUMMARY_REQUIRED() {
|
|
384
|
+
return new Map([
|
|
385
|
+
['de', 'Feld "{{FIELD}}" ist erforderlich.'],
|
|
386
|
+
]);
|
|
387
|
+
}
|
|
388
|
+
// #endregion Protected Getters And Setters
|
|
389
|
+
// #region Public Methods
|
|
390
|
+
/**
|
|
391
|
+
* Die Methode ergibt die selecte Sprache (string) anhand von Key und Params
|
|
392
|
+
*/
|
|
393
|
+
GetString(key, params) {
|
|
394
|
+
return new Observable((observer) => {
|
|
395
|
+
let language = this.GetLanguage();
|
|
396
|
+
if (!this.data.has(language)) {
|
|
397
|
+
language = this.GetFallbackLanguage();
|
|
398
|
+
// Return Key if no Language exists
|
|
399
|
+
if (!this.data.has(language)) {
|
|
400
|
+
observer.next(key);
|
|
401
|
+
observer.complete();
|
|
402
|
+
return;
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
if (this.data.get(language).has(key)) {
|
|
406
|
+
const resource = this.data.get(language).get(key);
|
|
407
|
+
if (params !== undefined && params !== null) {
|
|
408
|
+
const formatter = new Interpolation();
|
|
409
|
+
observer.next(formatter.interpolateString(resource, params));
|
|
410
|
+
observer.complete();
|
|
411
|
+
return;
|
|
412
|
+
}
|
|
413
|
+
else {
|
|
414
|
+
observer.next(resource);
|
|
415
|
+
observer.complete();
|
|
416
|
+
return;
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
else {
|
|
420
|
+
observer.next(key);
|
|
421
|
+
observer.complete();
|
|
422
|
+
return;
|
|
423
|
+
}
|
|
424
|
+
});
|
|
425
|
+
}
|
|
426
|
+
// #endregion Public Methods
|
|
427
|
+
// #region Private Methods
|
|
428
|
+
/**
|
|
429
|
+
* Die Funktion setzt die default Sprache auf DE, falls die Sprach-Setzung nicht möglich ist.
|
|
430
|
+
*/
|
|
431
|
+
GetFallbackLanguage() {
|
|
432
|
+
return 'de';
|
|
433
|
+
}
|
|
434
|
+
/**
|
|
435
|
+
* Die Funktion ergibt die ausgewählte Sprache.
|
|
436
|
+
*/
|
|
437
|
+
GetLanguage() {
|
|
438
|
+
const language = navigator.language;
|
|
439
|
+
if (language.indexOf('-') >= 0) {
|
|
440
|
+
return language.split('-')[0];
|
|
441
|
+
}
|
|
442
|
+
else {
|
|
443
|
+
return language;
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
SacDefaultLocalisationService.ɵprov = i0.ɵɵdefineInjectable({ factory: function SacDefaultLocalisationService_Factory() { return new SacDefaultLocalisationService(i0.ɵɵinject(i1.SACVALIDATIONKEY_SERVICE)); }, token: SacDefaultLocalisationService, providedIn: "root" });
|
|
448
|
+
SacDefaultLocalisationService.decorators = [
|
|
449
|
+
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
450
|
+
];
|
|
451
|
+
SacDefaultLocalisationService.ctorParameters = () => [
|
|
452
|
+
{ type: undefined, decorators: [{ type: Inject, args: [SACVALIDATIONKEY_SERVICE,] }] }
|
|
453
|
+
];
|
|
454
|
+
// #endregion Classes
|
|
455
|
+
// #region Variables
|
|
456
|
+
/**
|
|
457
|
+
* injection token for localisation service
|
|
458
|
+
*/
|
|
459
|
+
export const SACLOCALISATION_SERVICE = new InjectionToken('SacLocalisationService');
|
|
460
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FjLWxvY2FsaXNhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IkM6L1Byb2pla3RlL3NpbXBsZWFuZ3VsYXJjb250cm9scy1uZzEwL2NoLmpuZXR3b3JrLnNhYy1jb250cm9scy9wcm9qZWN0cy9zYWMtY29tbW9uL3NyYy8iLCJzb3VyY2VzIjpbInNlcnZpY2VzL3NhYy1sb2NhbGlzYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUdsQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7OztBQUV2RSxrQkFBa0I7QUFFbEI7O0tBRUs7QUFFTCxNQUFNLE9BQWdCLDhCQUE4Qjs7OztZQURuRCxVQUFVLFNBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOztBQWtIbEM7O0tBRUs7QUFFTCxNQUFNLE9BQU8sNkJBQThCLFNBQVEsOEJBQThCO0lBVy9FLHdCQUF3QjtJQUV4Qix1QkFBdUI7SUFFdkI7O1NBRUs7SUFDTCxZQUVVLG9CQUE4QztRQUV0RCxLQUFLLEVBQUUsQ0FBQztRQUZBLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBMEI7UUFuQnhELHFCQUFxQjtRQUVyQjs7V0FFRztRQUNJLFNBQUksR0FBcUMsSUFBSSxHQUFHLEVBR3BELENBQUM7UUFlRixnQkFBZ0I7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksR0FBRyxFQUFrQixDQUFDLENBQUM7UUFFL0MsYUFBYTtRQUNiLElBQUksQ0FBQyxJQUFJO2FBQ04sR0FBRyxDQUFDLElBQUksQ0FBQzthQUNULEdBQUcsQ0FDRixvQkFBb0IsQ0FBQyx1QkFB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bEQsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FDaEQsQ0FBQztRQUNKLElBQUksQ0FBQyxJQUFJO2FBQ04sR0FBRyxDQUFDLElBQUksQ0FBQzthQUNULEdBQUcsQ0FDRixvQkFBb0IsQ0FBQyxzQkFBc0IsRUFDM0MsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FDeEMsQ0FBQztRQUNKLElBQUksQ0FBQyxJQUFJO2FBQ04sR0FBRyxDQUFDLElBQUksQ0FBQzthQUNULEdBQUcsQ0FDRixvQkFBb0IsQ0FBQyw2QkFBNkIsRUFDbEQsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FDaEQsQ0FBQztRQUNKLElBQUksQ0FBQyxJQUFJO2FBQ04sR0FBRyxDQUFDLElBQUksQ0FBQzthQUNULEdBQUcsQ0FDRixvQkFBb0IsQ0FBQyxzQkFBc0IsRUFDM0MsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FDeEMsQ0FBQztRQUNKLElBQUksQ0FBQyxJQUFJO2FBQ04sR0FBRyxDQUFDLElBQUksQ0FBQzthQUNULEdBQUcsQ0FDRixvQkFBb0IsQ0FBQyw2QkFBNkIsRUFDbEQsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FDaEQsQ0FBQztRQUNKLElBQUksQ0FBQyxJQUFJO2FBQ04sR0FBRyxDQUFDLElBQUksQ0FBQzthQUNULEdBQUcsQ0FDRixvQkFBb0IsQ0FBQyxzQkFBc0IsRUFDM0MsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FDeEMsQ0FBQztRQUNKLElBQUksQ0FBQyxJQUFJO2FBQ04sR0FBRyxDQUFDLElBQUksQ0FBQzthQUNULEdBQUcsQ0FDRixvQkFBb0IsQ0FBQyw2QkFBNkIsRUFDbEQsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FDaEQsQ0FBQztRQUNKLElBQUksQ0FBQyxJ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QUMsUUFBUSxDQUFDO1FBRTVDLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDOUIsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQy9CO2FBQU07WUFDTCxPQUFPLFFBQVEsQ0FBQztTQUNqQjtJQUNILENBQUM7Ozs7WUF2b0JGLFVBQVUsU0FBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7Ozs0Q0FvQjdCLE1BQU0sU0FBQyx3QkFBd0I7O0FBd25CcEMscUJBQXFCO0FBRXJCLG9CQUFvQjtBQUVwQjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUNsQyxJQUFJLGNBQWMsQ0FBaUMsd0JBQXdCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBJU2FjTG9jYWxpc2F0aW9uU2VydmljZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvSVNhY0xvY2FsaXNhdGlvblNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJU2FjVmFsaWRhdGlvbktleVNlcnZpY2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzL0lTYWNWYWxpZGF0aW9uS2V5U2VydmljZSc7XHJcbmltcG9ydCB7IEludGVycG9sYXRpb24gfSBmcm9tICcuLi91dGlsaXRpZXMvaW50ZXJwb2xhdGlvbic7XHJcbmltcG9ydCB7IFNBQ1ZBTElEQVRJT05LRVlfU0VSVklDRSB9IGZyb20gJy4vc2FjLXZhbGlkYXRpb25rZXkuc2VydmljZSc7XHJcblxyXG4vLyAjcmVnaW9uIENsYXNzZXNcclxuXHJcbi8qKlxyXG4gKiBhYnN0cmFjdCBjbGFzcyBmb3IgbG9jYWxpc2F0aW9uIGluIGNvbXBvbmVudHNcclxuICogKi9cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNhY0Fic3RyYWN0TG9jYWxpc2F0aW9uU2VydmljZVxyXG4gIGltcGxlbWVudHMgSVNhY0xvY2FsaXNhdGlvblNlcnZpY2Vcclxue1xyXG4gIC8vICNyZWdpb24gUHJvdGVjdGVkIEFic3RyYWN0IEdldHRlcnMgQW5kIFNldHRlcnNcclxuXHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBDT05GSVJNX0JVVFRPTl9OTygpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgQ09ORklSTV9CVVRUT05fWUVTKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBGSUxFQlJPV1NFUl9DT05GSVJNX0RFTEVURUZJTEUoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IEZJTEVCUk9XU0VSX0NPTkZJUk1fREVMRVRFRk9MREVSKCk6IE1hcDxcclxuICAgIHN0cmluZyxcclxuICAgIHN0cmluZ1xyXG4gID47XHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBGSUxFQlJPV1NFUl9ERUxFVEUoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IEZJTEVCUk9XU0VSX0dSSURfRklMRSgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgRklMRUJST1dTRVJfR1JJRF9TSVpFKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBGSUxFQlJPV1NFUl9ORVdGT0xERVIoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IEZJTEVCUk9XU0VSX05PX0ZJTEVTKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBGSUxFQlJPV1NFUl9SRUZSRVNIKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBGSUxFQlJPV1NFUl9VUExPQUQoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IFBBR0lOR19QQUdFRU5UUklFU1RFWFQoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IFBBR0lOR19QQUdFT0ZURVhUKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBUSU5ZTUNFX0ZJTEVTRUxFQ1RfQ0FOQ0VMKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBUSU5ZTUNFX0ZJTEVTRUxFQ1RfRElBTE9HVElUTEUoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IFRJTllNQ0VfRklMRVNFTEVDVF9PSygpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVVBMT0FEX0JVVFRPTl9CUk9XU0UoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IFVQTE9BRF9CVVRUT05fVVBMT0FEKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBVUExPQURfTk9fRklMRV9TRUxFQ1RFRCgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9EQVRFVElNRUZPUk1BVCgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9FTUFJTCgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9GSUxFU01JTigpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9NQVhEQVRFKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBWQUxJREFUSU9OX0VSUk9SX01BWFRJTUUoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IFZBTElEQVRJT05fRVJST1JfTUFYVkFMVUUoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IFZBTElEQVRJT05fRVJST1JfTUlOREFURSgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9NSU5MRU5HVEgoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IFZBTElEQVRJT05fRVJST1JfTUlOVElNRSgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9NSU5WQUxVRSgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9NVUxUSUxBTkdVQUdFUkVRVUlSRUQoKTogTWFwPFxyXG4gICAgc3RyaW5nLFxyXG4gICAgc3RyaW5nXHJcbiAgPjtcclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IFZBTElEQVRJT05fRVJST1JfTVVMVElMQU5HVUFHRVJFUVVJUkVEQU5ZKCk6IE1hcDxcclxuICAgIHN0cmluZyxcclxuICAgIHN0cmluZ1xyXG4gID47XHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBWQUxJREFUSU9OX0VSUk9SX1BBVFRFUk4oKTogTWFwPHN0cmluZywgc3RyaW5nPjtcclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IFZBTElEQVRJT05fRVJST1JfUkVRVUlSRUQoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IFZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9EQVRFVElNRUZPUk1BVCgpOiBNYXA8XHJcbiAgICBzdHJpbmcsXHJcbiAgICBzdHJpbmdcclxuICA+O1xyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX0VNQUlMKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBWQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfRklMRVNNSU4oKTogTWFwPFxyXG4gICAgc3RyaW5nLFxyXG4gICAgc3RyaW5nXHJcbiAgPjtcclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IFZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9NQVhEQVRFKCk6IE1hcDxcclxuICAgIHN0cmluZyxcclxuICAgIHN0cmluZ1xyXG4gID47XHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBWQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfTUFYVElNRSgpOiBNYXA8XHJcbiAgICBzdHJpbmcsXHJcbiAgICBzdHJpbmdcclxuICA+O1xyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01BWFZBTFVFKCk6IE1hcDxcclxuICAgIHN0cmluZyxcclxuICAgIHN0cmluZ1xyXG4gID47XHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBWQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfTUlOREFURSgpOiBNYXA8XHJcbiAgICBzdHJpbmcsXHJcbiAgICBzdHJpbmdcclxuICA+O1xyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01JTkxFTkdUSCgpOiBNYXA8XHJcbiAgICBzdHJpbmcsXHJcbiAgICBzdHJpbmdcclxuICA+O1xyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01JTlRJTUUoKTogTWFwPFxyXG4gICAgc3RyaW5nLFxyXG4gICAgc3RyaW5nXHJcbiAgPjtcclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IFZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9NSU5WQUxVRSgpOiBNYXA8XHJcbiAgICBzdHJpbmcsXHJcbiAgICBzdHJpbmdcclxuICA+O1xyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01VTFRJTEFOR1VBR0VSRVFVSVJFRCgpOiBNYXA8XHJcbiAgICBzdHJpbmcsXHJcbiAgICBzdHJpbmdcclxuICA+O1xyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01VTFRJTEFOR1VBR0VSRVFVSVJFREFOWSgpOiBNYXA8XHJcbiAgICBzdHJpbmcsXHJcbiAgICBzdHJpbmdcclxuICA+O1xyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX1BBVFRFUk4oKTogTWFwPFxyXG4gICAgc3RyaW5nLFxyXG4gICAgc3RyaW5nXHJcbiAgPjtcclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IFZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9SRVFVSVJFRCgpOiBNYXA8XHJcbiAgICBzdHJpbmcsXHJcbiAgICBzdHJpbmdcclxuICA+O1xyXG5cclxuICAvLyAjZW5kcmVnaW9uIFByb3RlY3RlZCBBYnN0cmFjdCBHZXR0ZXJzIEFuZCBTZXR0ZXJzXHJcblxyXG4gIC8vICNyZWdpb24gUHVibGljIEFic3RyYWN0IE1ldGhvZHNcclxuXHJcbiAgLyoqXHJcbiAgICogRGllIE1ldGhvZGUgw7xiZXJzZXR6dCBkZW4gZWluZ2VnZWJlbmVuIFdvcnQvQmVncmlmZi4gVmVybGFuZ3Qga2V5IHVuZCBvcHRpb25lbGwgcGFyYW1zXHJcbiAgICovXHJcbiAgcHVibGljIGFic3RyYWN0IEdldFN0cmluZyhrZXk6IHN0cmluZywgcGFyYW1zPzogYW55KTogT2JzZXJ2YWJsZTxzdHJpbmc+O1xyXG5cclxuICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBBYnN0cmFjdCBNZXRob2RzXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBkZWZhdWx0IGxvY2FsaXNhdGlvbiBzZXJ2aWNlXHJcbiAqICovXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBTYWNEZWZhdWx0TG9jYWxpc2F0aW9uU2VydmljZSBleHRlbmRzIFNhY0Fic3RyYWN0TG9jYWxpc2F0aW9uU2VydmljZSB7XHJcbiAgLy8gI3JlZ2lvbiBQcm9wZXJ0aWVzXHJcblxyXG4gIC8qKlxyXG4gICAqIExhbmd1YWdlIFJlc291cmNlcyBmw7xyIENvbnRyb2xzIExpYnJhcnlcclxuICAgKi9cclxuICBwdWJsaWMgZGF0YTogTWFwPHN0cmluZywgTWFwPHN0cmluZywgc3RyaW5nPj4gPSBuZXcgTWFwPFxyXG4gICAgc3RyaW5nLFxyXG4gICAgTWFwPHN0cmluZywgc3RyaW5nPlxyXG4gID4oKTtcclxuXHJcbiAgLy8gI2VuZHJlZ2lvbiBQcm9wZXJ0aWVzXHJcblxyXG4gIC8vICNyZWdpb24gQ29uc3RydWN0b3JzXHJcblxyXG4gIC8qKlxyXG4gICAqIEtvbnN0cnVrdG9yXHJcbiAgICogKi9cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoU0FDVkFMSURBVElPTktFWV9TRVJWSUNFKVxyXG4gICAgcHJpdmF0ZSB2YWxpZGF0aW9uS2V5U2VydmljZTogSVNhY1ZhbGlkYXRpb25LZXlTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG5cclxuICAgIC8vIFNldCBMYW5ndWFnZXNcclxuICAgIHRoaXMuZGF0YS5zZXQoJ2RlJywgbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKSk7XHJcblxyXG4gICAgLy8gVmFsaWRhdGlvblxyXG4gICAgdGhpcy5kYXRhXHJcbiAgICAgIC5nZXQoJ2RlJylcclxuICAgICAgLnNldChcclxuICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JSZXF1aXJlZCxcclxuICAgICAgICB0aGlzLlZBTElEQVRJT05fRVJST1JfUkVRVUlSRUQuZ2V0KCdkZScpXHJcbiAgICAgICk7XHJcbiAgICB0aGlzLmRhdGFcclxuICAgICAgLmdldCgnZGUnKVxyXG4gICAgICAuc2V0KFxyXG4gICAgICAgIHZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvclN1bW1hcnlSZXF1aXJlZCxcclxuICAgICAgICB0aGlzLlZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9SRVFVSVJFRC5nZXQoJ2RlJylcclxuICAgICAgKTtcclxuICAgIHRoaXMuZGF0YVxyXG4gICAgICAuZ2V0KCdkZScpXHJcbiAgICAgIC5zZXQoXHJcbiAgICAgICAgdmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yTWluVmFsdWUsXHJcbiAgICAgICAgdGhpcy5WQUxJREFUSU9OX0VSUk9SX01JTlZBTFVFLmdldCgnZGUnKVxyXG4gICAgICApO1xyXG4gICAgdGhpcy5kYXRhXHJcbiAgICAgIC5nZXQoJ2RlJylcclxuICAgICAgLnNldChcclxuICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5TWluVmFsdWUsXHJcbiAgICAgICAgdGhpcy5WQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfTUlOVkFMVUUuZ2V0KCdkZScpXHJcbiAgICAgICk7XHJcbiAgICB0aGlzLmRhdGFcclxuICAgICAgLmdldCgnZGUnKVxyXG4gICAgICAuc2V0KFxyXG4gICAgICAgIHZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvclBhdHRlcm4sXHJcbiAgICAgICAgdGhpcy5WQUxJREFUSU9OX0VSUk9SX1BBVFRFUk4uZ2V0KCdkZScpXHJcbiAgICAgICk7XHJcbiAgICB0aGlzLmRhdGFcclxuICAgICAgLmdldCgnZGUnKVxyXG4gICAgICAuc2V0KFxyXG4gICAgICAgIHZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvclN1bW1hcnlQYXR0ZXJuLFxyXG4gICAgICAgIHRoaXMuVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX1BBVFRFUk4uZ2V0KCdkZScpXHJcbiAgICAgICk7XHJcbiAgICB0aGlzLmRhdGFcclxuICAgICAgLmdldCgnZGUnKVxyXG4gICAgICAuc2V0KFxyXG4gICAgICAgIHZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvck1heFZhbHVlLFxyXG4gICAgICAgIHRoaXMuVkFMSURBVElPTl9FUlJPUl9NQVhWQUxVRS5nZXQoJ2RlJylcclxuICAgICAgKTtcclxuICAgIHRoaXMuZGF0YVxyXG4gICAgICAuZ2V0KCdkZScpXHJcbiAgICAgIC5zZXQoXHJcbiAgICAgICAgdmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yU3VtbWFyeU1heFZhbHVlLFxyXG4gICAgICAgIHRoaXMuVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01BWFZBTFVFLmdldCgnZGUnKVxyXG4gICAgICApO1xyXG4gICAgdGhpcy5kYXRhXHJcbiAgICAgIC5nZXQoJ2RlJylcclxuICAgICAgLnNldChcclxuICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JFbWFpbCxcclxuICAgICAgICB0aGlzLlZBTElEQVRJT05fRVJST1JfRU1BSUwuZ2V0KCdkZScpXHJcbiAgICAgICk7XHJcbiAgICB0aGlzLmRhdGFcclxuICAgICAgLmdldCgnZGUnKVxyXG4gICAgICAuc2V0KFxyXG4gICAgICAgIHZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvclN1bW1hcnlFbWFpbCxcclxuICAgICAgICB0aGlzLlZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9FTUFJTC5nZXQoJ2RlJylcclxuICAgICAgKTtcclxuICAgIHRoaXMuZGF0YVxyXG4gICAgICAuZ2V0KCdkZScpXHJcbiAgICAgIC5zZXQoXHJcbiAgICAgICAgdmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yTWluTGVuZ3RoLFxyXG4gICAgICAgIHRoaXMuVkFMSURBVElPTl9FUlJPUl9NSU5MRU5HVEguZ2V0KCdkZScpXHJcbiAgICAgICk7XHJcbiAgICB0aGlzLmRhdGFcclxuICAgICAgLmdldCgnZGUnKVxyXG4gICAgICAuc2V0KFxyXG4gICAgICAgIHZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvclN1bW1hcnlNaW5MZW5ndGgsXHJcbiAgICAgICAgdGhpcy5WQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfTUlOTEVOR1RILmdldCgnZGUnKVxyXG4gICAgICApO1xyXG4gICAgdGhpcy5kYXRhXHJcbiAgICAgIC5nZXQoJ2RlJylcclxuICAgICAgLnNldChcclxuICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JNaW5EYXRlLFxyXG4gICAgICAgIHRoaXMuVkFMSURBVElPTl9FUlJPUl9NSU5EQVRFLmdldCgnZGUnKVxyXG4gICAgICApO1xyXG4gICAgdGhpcy5kYXRhXHJcbiAgICAgIC5nZXQoJ2RlJylcclxuICAgICAgLnNldChcclxuICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5TWluRGF0ZSxcclxuICAgICAgICB0aGlzLlZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9NSU5EQVRFLmdldCgnZGUnKVxyXG4gICAgICApO1xyXG4gICAgdGhpcy5kYXRhXHJcbiAgICAgIC5nZXQoJ2RlJylcclxuICAgICAgLnNldChcclxuICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JNYXhEYXRlLFxyXG4gICAgICAgIHRoaXMuVkFMSURBVElPTl9FUlJPUl9NQVhEQVRFLmdldCgnZGUnKVxyXG4gICAgICApO1xyXG4gICAgdGhpcy5kYXRhXHJcbiAgICAgIC5nZXQoJ2RlJylcclxuICAgICAgLnNldChcclxuICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5TWF4RGF0ZSxcclxuICAgICAgICB0aGlzLlZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9NQVhEQVRFLmdldCgnZGUnKVxyXG4gICAgICApO1xyXG4gICAgdGhpcy5kYXRhXHJcbiAgICAgIC5nZXQoJ2RlJylcclxuICAgICAgLnNldChcclxuICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JNaW5UaW1lLFxyXG4gICAgICAgIHRoaXMuVkFMSURBVElPTl9FUlJPUl9NSU5USU1FLmdldCgnZGUnKVxyXG4gICAgICApO1xyXG4gICAgdGhpcy5kYXRhXHJcbiAgICAgIC5nZXQoJ2RlJylcclxuICAgICAgLnNldChcclxuICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5TWluVGltZSxcclxuICAgICAgICB0aGlzLlZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9NSU5USU1FLmdldCgnZGUnKVxyXG4gICAgICApO1xyXG4gICAgdGhpcy5kYXRhXHJcbiAgICAgIC5nZXQoJ2RlJylcclxuICAgICAgLnNldChcclxuICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JNYXhUaW1lLFxyXG4gICAgICAgIHRoaXMuVkFMSURBVElPTl9FUlJPUl9NQVhUSU1FLmdldCgnZGUnKVxyXG4gICAgICApO1xyXG4gICAgdGhpcy5kYXRhXHJcbiAgICAgIC5nZXQoJ2RlJylcclxuICAgICAgLnNldChcclxuICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5TWF4VGltZSxcclxuICAgICAgICB0aGlzLlZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9NQVhUSU1FLmdldCgnZGUnKVxyXG4gICAgICApO1xyXG4gICAgdGhpcy5kYXRhXHJcbiAgICAgIC5nZXQoJ2RlJylcclxuICAgICAgLnNldChcclxuICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JEYXRldGltZUZvcm1hdCxcclxuICAgICAgICB0aGlzLlZBTElEQVRJT05fRVJST1JfREFURVRJTUVGT1JNQVQuZ2V0KCdkZScpXHJcbiAgICAgICk7XHJcbiAgICB0aGlzLmRhdGFcclxuICAgICAgLmdldCgnZGUnKVxyXG4gICAgICAuc2V0KFxyXG4gICAgICAgIHZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvclN1bW1hcnlEYXRldGltZUZvcm1hdCxcclxuICAgICAgICB0aGlzLlZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9EQVRFVElNRUZPUk1BVC5nZXQoJ2RlJylcclxuICAgICAgKTtcclxuICAgIHRoaXMuZGF0YVxyXG4gICAgICAuZ2V0KCdkZScpXHJcbiAgICAgIC5zZXQoXHJcbiAgICAgICAgdmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yRmlsZXNNaW4sXHJcbiAgICAgICAgdGhpcy5WQUxJREFUSU9OX0VSUk9SX0ZJTEVTTUlOLmdldCgnZGUnKVxyXG4gICAgICApO1xyXG4gICAgdGhpcy5kYXRhXHJcbiAgICAgIC5nZXQoJ2RlJylcclxuICAgICAgLnNldChcclxuICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5RmlsZXNNaW4sXHJcbiAgICAgICAgdGhpcy5WQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfRklMRVNNSU4uZ2V0KCdkZScpXHJcbiAgICAgICk7XHJcbiAgICB0aGlzLmRhdGFcclxuICAgICAgLmdldCgnZGUnKVxyXG4gICAgICAuc2V0KFxyXG4gICAgICAgIHZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvck11bHRpbGFuZ3VhZ2VSZXF1aXJlZEFueSxcclxuICAgICAgICB0aGlzLlZBTElEQVRJT05fRVJST1JfTVVMVElMQU5HVUFHRVJFUVVJUkVEQU5ZLmdldCgnZGUnKVxyXG4gICAgICApO1xyXG4gICAgdGhpcy5kYXRhXHJcbiAgICAgIC5nZXQoJ2RlJylcclxuICAgICAgLnNldChcclxuICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5TXVsdGlsYW5ndWFnZVJlcXVpcmVkQW55LFxyXG4gICAgICAgIHRoaXMuVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01VTFRJTEFOR1VBR0VSRVFVSVJFREFOWS5nZXQoJ2RlJylcclxuICAgICAgKTtcclxuICAgIHRoaXMuZGF0YVxyXG4gICAgICAuZ2V0KCdkZScpXHJcbiAgICAgIC5zZXQoXHJcbiAgICAgICAgdmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yTXVsdGlsYW5ndWFnZVJlcXVpcmVkLFxyXG4gICAgICAgIHRoaXMuVkFMSURBVElPTl9FUlJPUl9NVUxUSUxBTkdVQUdFUkVRVUlSRUQuZ2V0KCdkZScpXHJcbiAgICAgICk7XHJcbiAgICB0aGlzLmRhdGFcclxuICAgICAgLmdldCgnZGUnKVxyXG4gICAgICAuc2V0KFxyXG4gICAgICAgIHZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvclN1bW1hcnlNdWx0aWxhbmd1YWdlUmVxdWlyZWQsXHJcbiAgICAgICAgdGhpcy5WQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfTVVMVElMQU5HVUFHRVJFUVVJUkVELmdldCgnZGUnKVxyXG4gICAgICApO1xyXG5cclxuICAgIC8vIEdyaWQgQ29tcG9uZW50XHJcbiAgICB0aGlzLmRhdGFcclxuICAgICAgLmdldCgnZGUnKVxyXG4gICAgICAuc2V0KHZhbGlkYXRpb25LZXlTZXJ2aWNlLlBhZ2luZ1BhZ2VPZiwgdGhpcy5QQUdJTkdfUEFHRU9GVEVYVC5nZXQoJ2RlJykpO1xyXG4gICAgdGhpcy5kYXRhXHJcbiAgICAgIC5nZXQoJ2RlJylcclxuICAgICAgLnNldChcclxuICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5QYWdpbmdFbnRyaWVzLFxyXG4gICAgICAgIHRoaXMuUEFHSU5HX1BBR0VFTlRSSUVTVEVYVC5nZXQoJ2RlJylcclxuICAgICAgKTtcclxuXHJcbiAgICAvLyBVcGxvYWQgQ29tcG9uZW50XHJcbiAgICB0aGlzLmRhdGFcclxuICAgICAgLmdldCgnZGUnKVxyXG4gICAgICAuc2V0KFxyXG4gICAgICAgIHZhbGlkYXRpb25LZXlTZXJ2aWNlLlVwbG9hZE5vRmlsZXNTZWxlY3RlZCxcclxuICAgICAgICB0aGlzLlVQTE9BRF9OT19GSUxFX1NFTEVDVEVELmdldCgnZGUnKVxyXG4gICAgICApO1xyXG4gICAgdGhpcy5kYXRhXHJcbiAgICAgIC5nZXQoJ2RlJylcclxuICAgICAgLnNldChcclxuICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5VcGxvYWRCdXR0b25VcGxvYWQsXHJcbiAgICAgICAgdGhpcy5VUExPQURfQlVUVE9OX1VQTE9BRC5nZXQoJ2RlJylcclxuICAgICAgKTtcclxuICAgIHRoaXMuZGF0YVxyXG4gICAgICAuZ2V0KCdkZScpXHJcbiAgICAgIC5zZXQoXHJcbiAgICAgICAgdmFsaWRhdGlvbktleVNlcnZpY2UuVXBsb2FkQnV0dG9uQnJvd3NlLFxyXG4gICAgICAgIHRoaXMuVVBMT0FEX0JVVFRPTl9CUk9XU0UuZ2V0KCdkZScpXHJcbiAgICAgICk7XHJcblxyXG4gICAgLy8gVGlueU1DRSBDb21wb25lbnRcclxuICAgIHRoaXMuZGF0YVxyXG4gICAgICAuZ2V0KCdkZScpXHJcbiAgICAgIC5zZXQoXHJcbiAgICAgICAgdmFsaWRhdGlvbktleVNlcnZpY2UuVGlueU1jZUZpbGVzZWxlY3RPayxcclxuICAgICAgICB0aGlzLlRJTllNQ0VfRklMRVNFTEVDVF9PSy5nZXQoJ2RlJylcclxuICAgICAgKTtcclxuICAgIHRoaXMuZGF0YVxyXG4gICAgICAuZ2V0KCdkZScpXHJcbiAgICAgIC5zZXQoXHJcbiAgICAgICAgdmFsaWRhdGlvbktleVNlcnZpY2UuVGlueU1jZUZpbGVzZWxlY3RDYW5jZWwsXHJcbiAgICAgICAgdGhpcy5USU5ZTUNFX0ZJTEVTRUxFQ1RfQ0FOQ0VMLmdldCgnZGUnKVxyXG4gICAgICApO1xyXG4gICAgdGhpcy5kYXRhXHJcbiAgICAgIC5nZXQoJ2RlJylcclxuICAgICAgLnNldChcclxuICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5UaW55TWNlRmlsZXNlbGVjdERpYWxvZ3RpdGxlLFxyXG4gICAgICAgIHRoaXMuVElOWU1DRV9GSUxFU0VMRUNUX0RJQUxPR1RJVExFLmdldCgnZGUnKVxyXG4gICAgICApO1xyXG5cclxuICAgIC8vIENvbmZpcm0gRGlhbG9nIENvbXBvbmVudFxyXG4gICAgdGhpcy5kYXRhXHJcbiAgICAgIC5nZXQoJ2RlJylcclxuICAgICAgLnNldChcclxuICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5Db25maXJtRGVmYXVsdEJ1dHRvblllcyxcclxuICAgICAgICB0aGlzLkNPTkZJUk1fQlVUVE9OX1lFUy5nZXQoJ2RlJylcclxuICAgICAgKTtcclxuICAgIHRoaXMuZGF0YVxyXG4gICAgICAuZ2V0KCdkZScpXHJcbiAgICAgIC5zZXQoXHJcbiAgICAgICAgdmFsaWRhdGlvbktleVNlcnZpY2UuQ29uZmlybURlZmF1bHRCdXR0b25ObyxcclxuICAgICAgICB0aGlzLkNPTkZJUk1fQlVUVE9OX05PLmdldCgnZGUnKVxyXG4gICAgICApO1xyXG5cclxuICAgIC8vIEJyb3dzZXIgQ29tcG9uZW50XHJcbiAgICB0aGlzLmRhdGFcclxuICAgICAgLmdldCgnZGUnKVxyXG4gICAgICAuc2V0KFxyXG4gICAgICAgIHZhbGlkYXRpb25LZXlTZXJ2aWNlLkZpbGVicm93c2VyR3JpZE5vRmlsZXMsXHJcbiAgICAgICAgdGhpcy5GSUxFQlJPV1NFUl9OT19GSUxFUy5nZXQoJ2RlJylcclxuICAgICAgKTtcclxuICAgIHRoaXMuZGF0YVxyXG4gICAgICAuZ2V0KCdkZScpXHJcbiAgICAgIC5zZXQoXHJcbiAgICAgICAgdmFsaWRhdGlvbktleVNlcnZpY2UuRmlsZWJyb3dzZXJHcmlkRmlsZW5hbWUsXHJcbiAgICAgICAgdGhpcy5GSUxFQlJPV1NFUl9HUklEX0ZJTEUuZ2V0KCdkZScpXHJcbiAgICAgICk7XHJcbiAgICB0aGlzLmRhdGFcclxuICAgICAgLmdldCgnZGUnKVxyXG4gICAgICAuc2V0KFxyXG4gICAgICAgIHZhbGlkYXRpb25LZXlTZXJ2aWNlLkZpbGVicm93c2VyR3JpZFNpemUsXHJcbiAgICAgICAgdGhpcy5GSUxFQlJPV1NFUl9HUklEX1NJWkUuZ2V0KCdkZScpXHJcbiAgICAgICk7XHJcbiAgICB0aGlzLmRhdGFcclxuICAgICAgLmdldCgnZGUnKVxyXG4gICAgICAuc2V0KFxyXG4gICAgICAgIHZhbGlkYXRpb25LZXlTZXJ2aWNlLkZpbGVicm93c2VyQnV0dG9uVXBsb2FkLFxyXG4gICAgICAgIHRoaXMuRklMRUJST1dTRVJfVVBMT0FELmdldCgnZGUnKVxyXG4gICAgICApO1xyXG4gICAgdGhpcy5kYXRhXHJcbiAgICAgIC5nZXQoJ2RlJylcclxuICAgICAgLnNldChcclxuICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5GaWxlYnJvd3NlckJ1dHRvbk5ld0ZvbGRlcixcclxuICAgICAgICB0aGlzLkZJTEVCUk9XU0VSX05FV0ZPTERFUi5nZXQoJ2RlJylcclxuICAgICAgKTtcclxuICAgIHRoaXMuZGF0YVxyXG4gICAgICAuZ2V0KCdkZScpXHJcbiAgICAgIC5zZXQoXHJcbiAgICAgICAgdmFsaWRhdGlvbktleVNlcnZpY2UuRmlsZWJyb3dzZXJCdXR0b25SZWZyZXNoLFxyXG4gICAgICAgIHRoaXMuRklMRUJST1dTRVJfUkVGUkVTSC5nZXQoJ2RlJylcclxuICAgICAgKTtcclxuICAgIHRoaXMuZGF0YVxyXG4gICAgICAuZ2V0KCdkZScpXHJcbiAgICAgIC5zZXQoXHJcbiAgICAgICAgdmFsaWRhdGlvbktleVNlcnZpY2UuRmlsZWJyb3dzZXJCdXR0b25EZWxldGUsXHJcbiAgICAgICAgdGhpcy5GSUxFQlJPV1NFUl9ERUxFVEUuZ2V0KCdkZScpXHJcbiAgICAgICk7XHJcbiAgICB0aGlzLmRhdGFcclxuICAgICAgLmdldCgnZGUnKVxyXG4gICAgICAuc2V0KFxyXG4gICAgICAgIHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuRmlsZWJyb3dzZXJDb25maXJtVGV4dERlbGV0ZUZvbGRlcixcclxuICAgICAgICB0aGlzLkZJTEVCUk9XU0VSX0NPTkZJUk1fREVMRVRFRk9MREVSLmdldCgnZGUnKVxyXG4gICAgICApO1xyXG4gICAgdGhpcy5kYXRhXHJcbiAgICAgIC5nZXQoJ2RlJylcclxuICAgICAgLnNldChcclxuICAgICAgICB0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlLkZpbGVicm93c2VyQ29uZmlybVRleHREZWxldGVGaWxlLFxyXG4gICAgICAgIHRoaXMuRklMRUJST1dTRVJfQ09ORklSTV9ERUxFVEVGSUxFLmdldCgnZGUnKVxyXG4gICAgICApO1xyXG5cclxuICAgIC8vIEVOXHJcbiAgICB0aGlzLmRhdGEuc2V0KCdlbicsIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCkpO1xyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvbiBDb25zdHJ1Y3RvcnNcclxuXHJcbiAgLy8gI3JlZ2lvbiBQcm90ZWN0ZWQgR2V0dGVycyBBbmQgU2V0dGVyc1xyXG5cclxuICBwcm90ZWN0ZWQgZ2V0IENPTkZJUk1fQlVUVE9OX05PKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbJ2RlJywgJ05laW4nXV0pO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldCBDT05GSVJNX0JVVFRPTl9ZRVMoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XHJcbiAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1snZGUnLCAnSmEnXV0pO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldCBGSUxFQlJPV1NFUl9DT05GSVJNX0RFTEVURUZJTEUoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XHJcbiAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1snZGUnLCAnU29sbCBkaWUgRGF0ZWkgZ2Vsw7ZzY2h0IHdlcmRlbj8nXV0pO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldCBGSUxFQlJPV1NFUl9DT05GSVJNX0RFTEVURUZPTERFUigpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcclxuICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbXHJcbiAgICAgIFsnZGUnLCAnU29sbCBkZXIgT3JkbmVyIGdlbMO2c2NodCB3ZXJkZW4/J10sXHJcbiAgICBdKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXQgRklMRUJST1dTRVJfREVMRVRFKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbJ2RlJywgJ0zDtnNjaGVuJ11dKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXQgRklMRUJST1dTRVJfR1JJRF9GSUxFKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbJ2RlJywgJ0RhdGVpbmFtZSddXSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0IEZJTEVCUk9XU0VSX0dSSURfU0laRSgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcclxuICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbWydkZScsICdHcsO2c3NlJ11dKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXQgRklMRUJST1dTRVJfTkVXRk9MREVSKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbJ2RlJywgJ05ldWVyIE9yZG5lciddXSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0IEZJTEVCUk9XU0VSX05PX0ZJTEVTKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbJ2RlJywgJ0tlaW5lIERhdGVpZW4gdm9yaGFuZGVuJ11dKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXQgRklMRUJST1dTRVJfUkVGUkVTSCgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcclxuICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbWydkZScsICdBa3R1YWxpc2llcmVuJ11dKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXQgRklMRUJST1dTRVJfVVBMT0FEKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtcclxuICAgICAgWydkZScsICdMZWdlbiBTaWUgRGF0ZWllbiBoaWVyIGFiIHVtIFNpZSBob2NoenVsYWRlbiddLFxyXG4gICAgXSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0IFBBR0lOR19QQUdFRU5UUklFU1RFWFQoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XHJcbiAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1snZGUnLCAnRWludHLDpGdlIHBybyBTZWl0ZSddXSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0IFBBR0lOR19QQUdFT0ZURVhUKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtcclxuICAgICAgWydkZScsICdTZWl0ZSB7e0NVUlJFTlRQQUdFfX0gdm9uIHt7VE9UQUxQQUdFU319J10sXHJcbiAgICBdKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXQgVElOWU1DRV9GSUxFU0VMRUNUX0NBTkNFTCgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcclxuICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbWydkZScsICdBYmJyZWNoZW4nXV0pO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldCBUSU5ZTUNFX0ZJTEVTRUxFQ1RfRElBTE9HVElUTEUoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XHJcbiAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1snZGUnLCAnRGF0ZWkgYXVzd8OkaGxlbiddXSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0IFRJTllNQ0VfRklMRVNFTEVDVF9PSygpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcclxuICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbWydkZScsICdPSyddXSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0IFVQTE9BRF9CVVRUT05fQlJPV1NFKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbJ2RlJywgJ0Jyb3dzZS4uLiddXSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0IFVQTE9BRF9CVVRUT05fVVBMT0FEKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbJ2RlJywgJ1VwbG9hZCddXSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0IFVQTE9BRF9OT19GSUxFX1NFTEVDVEVEKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbJ2RlJywgJ0tlaW5lIERhdGVpIGF1c2dld8OkaGx0J11dKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9EQVRFVElNRUZPUk1BVCgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcclxuICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbWydkZScsICdGZWxkIGlzdCBrZWluIGfDvGx0aWdlcyBEYXR1bS4nXV0pO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldCBWQUxJREFUSU9OX0VSUk9SX0VNQUlMKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbJ2RlJywgJ0ZlbGQgaXN0IGtlaW5lIEUtTWFpbCBBZHJlc3NlJ11dKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9GSUxFU01JTigpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcclxuICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbXHJcbiAgICAgIFsnZGUnLCAnRXMgbcO8c3NlbiBtaW4uIHt7TUlORklMRVN9fSBEYXRlaWVuIGhvY2hnZWxhZGVuIHNlaW4uJ10sXHJcbiAgICBdKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9NQVhEQVRFKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtcclxuICAgICAgWydkZScsICdGZWxkIG11c3Mgw6RsdGVyIG9kZXIgZ2xlaWNoIHt7TUFYREFURX19IHNlaW4uJ10sXHJcbiAgICBdKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9NQVhUSU1FKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtcclxuICAgICAgWydkZScsICdGZWxkIG11c3Mgw6RsdGVyIG9kZXIgZ2xlaWNoIHt7TUFYVElNRX19IHNlaW4uJ10sXHJcbiAgICBdKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9NQVhWQUxVRSgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcclxuICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbXHJcbiAgICAgIFsnZGUnLCAnRmVsZCBcInt7RklFTER9fVwiIGRhcmYgbmljaHQgZ3LDtnNzZXIgYWxzIHt7TUFYVkFMVUV9fSBzZWluLiddLFxyXG4gICAgXSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0IFZBTElEQVRJT05fRVJST1JfTUlOREFURSgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcclxuICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbXHJcbiAgICAgIFsnZGUnLCAnRmVsZCBtdXNzIG5ldWVyIG9kZXIgZ2xlaWNoIHt7TUlOREFURX19IHNlaW4uJ10sXHJcbiAgICBdKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9NSU5MRU5HVEgoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XHJcbiAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1xyXG4gICAgICBbJ2RlJywgJ0ZlbGQgZXJmb3JkZXJ0IG1pbi4ge3tNSU5MRU5HVEh9fSBaZWljaGVuLiddLFxyXG4gICAgXSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0IFZBTElEQVRJT05fRVJST1JfTUlOVElNRSgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcclxuICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbXHJcbiAgICAgIFsnZGUnLCAnRmVsZCBtdXNzIG5ldWVyIG9kZXIgZ2xlaWNoIHt7TUlOVElNRX19IHNlaW4uJ10sXHJcbiAgICBdKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9NSU5WQUxVRSgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcclxuICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbXHJcbiAgICAgIFsnZGUnLCAnV2VydCBkYXJmIG5pY2h0IGtsZWluZXIgYWxzIHt7TUlOVkFMVUV9fSBzZWluLiddLFxyXG4gICAgXSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0IFZBTElEQVRJT05fRVJST1JfTVVMVElMQU5HVUFHRVJFUVVJUkVEKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtcclxuICAgICAgWydkZScsICdFcyBtw7xzc2VuIGFsbGUgU3ByYWNoZW4gZXJmYXNzdCBzZWluLiddLFxyXG4gICAgXSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0IFZBTElEQVRJT05fRVJST1JfTVVMVElMQU5HVUFHRVJFUVVJUkVEQU5ZKCk6IE1hcDxcclxuICAgIHN0cmluZyxcclxuICAgIHN0cmluZ1xyXG4gID4ge1xyXG4gICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtcclxuICAgICAgWydkZScsICdFcyBtdXNzIG1pbi4gMSBTcHJhY2hlIGVyZmFzc3Qgc2Vpbi4nXSxcclxuICAgIF0pO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldCBWQUxJREFUSU9OX0VSUk9SX1BBVFRFUk4oKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XHJcbiAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1xyXG4gICAgICBbJ2RlJywgJ1dlcnQgZW50c3ByaWNodCBuaWNodCBkZXIgRm9ybWF0IFZvcmxhZ2UuJ10sXHJcbiAgICBdKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9SRVFVSVJFRCgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcclxuICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbWydkZScsICdGZWxkIGlzdCBlcmZvcmRlcmxpY2guJ11dKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX0RBVEVUSU1FRk9STUFUKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtcclxuICAgICAgWydkZScsICdGZWxkIFwie3tGSUVMRH19XCIgaXN0IGtlaW4gZ8O8bHRpZ2VzIERhdHVtLiddLFxyXG4gICAgXSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0IFZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9FTUFJTCgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcclxuICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbXHJcbiAgICAgIFsnZGUnLCAnRmVsZCBcInt7RklFTER9fVwiIGlzdCBrZWluZSBFLU1haWwgQWRyZXNzZSddLFxyXG4gICAgXSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0IFZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9GSUxFU01JTigpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcclxuICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbXHJcbiAgICAgIFtcclxuICAgICAgICAnZGUnLFxyXG4gICAgICAgICdGZWxkIFwie3tGSUVMRH19XCIgbXVzcyBtaW4uIHt7TUlORklMRVN9fSBEYXRlaWVuIGhvY2hnZWxhZGVuIGhhYmVuLicsXHJcbiAgICAgIF0sXHJcbiAgICBdKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01BWERBVEUoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XHJcbiAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1xyXG4gICAgICBbJ2RlJywgJ0ZlbGQgXCJ7e0ZJRUxEfX1cIiBtdXNzIMOkbHRlciBvZGVyIGdsZWljaCB7e01BWERBVEV9fSBzZWluLiddLFxyXG4gICAgXSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0IFZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9NQVhUSU1FKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtcclxuICAgICAgWydkZScsICdGZWxkIFwie3tGSUVMRH19XCIgbXVzcyDDpGx0ZXIgb2RlciBnbGVpY2gge3tNQVhUSU1FfX0gc2Vpbi4nXSxcclxuICAgIF0pO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldCBWQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfTUFYVkFMVUUoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XHJcbiAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1xyXG4gICAgICBbJ2RlJywgJ1dlcnQgZGFyZiBuaWNodCBncsO2c3NlciBhbHMge3tNQVhWQUxVRX19IHNlaW4uJ10sXHJcbiAgICBdKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01JTkRBVEUoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XHJcbiAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1xyXG4gICAgICBbJ2RlJywgJ0ZlbGQgXCJ7e0ZJRUxEfX1cIiBtdXNzIG5ldWVyIG9kZXIgZ2xlaWNoIHt7TUlOREFURX19IHNlaW4uJ10sXHJcbiAgICBdKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01JTkxFTkdUSCgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcclxuICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbXHJcbiAgICAgIFsnZGUnLCAnRmVsZCBcInt7RklFTER9fVwiIGVyZm9yZGVydCBtaW4uIHt7TUlOTEVOR1RIfX0gWmVpY2hlbi4nXSxcclxuICAgIF0pO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldCBWQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfTUlOVElNRSgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcclxuICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbXHJcbiAgICAgIFsnZGUnLCAnRmVsZCBcInt7RklFTER9fVwiIG11c3MgbmV1ZXIgb2RlciBnbGVpY2gge3tNSU5USU1FfX0gc2Vpbi4nXSxcclxuICAgIF0pO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldCBWQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfTUlOVkFMVUUoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XHJcbiAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1xyXG4gICAgICBbJ2RlJywgJ0ZlbGQgXCJ7e0ZJRUxEfX1cIiBkYXJmIG5pY2h0IGtsZWluZXIgYWxzIHt7TUlOVkFMVUV9fSBzZWluLiddLFxyXG4gICAgXSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0IFZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9NVUxUSUxBTkdVQUdFUkVRVUlSRUQoKTogTWFwPFxyXG4gICAgc3RyaW5nLFxyXG4gICAgc3RyaW5nXHJcbiAgPiB7XHJcbiAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1xyXG4gICAgICBbJ2RlJywgJ0ZlbGQgXCJ7e0ZJRUxEfX1cIiBtdXNzIGFsbGUgU3ByYWNoZW4gZXJmYXNzdCBoYWJlbi4nXSxcclxuICAgIF0pO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldCBWQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfTVVMVElMQU5HVUFHRVJFUVVJUkVEQU5ZKCk6IE1hcDxcclxuICAgIHN0cmluZyxcclxuICAgIHN0cmluZ1xyXG4gID4ge1xyXG4gICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtcclxuICAgICAgWydkZScsICdGZWxkIFwie3tGSUVMRH19XCIgbXVzcyBtaW4uIDEgU3ByYWNoZSBlcmZhc3N0IGhhYmVuLiddLFxyXG4gICAgXSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0IFZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9QQVRURVJOKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtcclxuICAgICAgWydkZScsICdGZWxkIFwie3tGSUVMRH19XCIgZW50c3ByaWNodCBuaWNodCBkZXIgRm9ybWF0IFZvcmxhZ2UuJ10sXHJcbiAgICBdKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX1JFUVVJUkVEKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtcclxuICAgICAgWydkZScsICdGZWxkIFwie3tGSUVMRH19XCIgaXN0IGVyZm9yZGVybGljaC4nXSxcclxuICAgIF0pO1xyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvbiBQcm90ZWN0ZWQgR2V0dGVycyBBbmQgU2V0dGVyc1xyXG5cclxuICAvLyAjcmVnaW9uIFB1YmxpYyBNZXRob2RzXHJcblxyXG4gIC8qKlxyXG4gICAqIERpZSBNZXRob2RlIGVyZ2lidCBkaWUgc2VsZWN0ZSBTcHJhY2hlIChzdHJpbmcpICBhbmhhbmQgdm9uIEtleSB1bmQgUGFyYW1zXHJcbiAgICovXHJcbiAgcHVibGljIEdldFN0cmluZyhrZXk6IHN0cmluZywgcGFyYW1zPzogYW55KTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcclxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxzdHJpbmc+KChvYnNlcnZlcikgPT4ge1xyXG4gICAgICBsZXQgbGFuZ3VhZ2U6IHN0cmluZyA9IHRoaXMuR2V0TGFuZ3VhZ2UoKTtcclxuXHJcbiAgICAgIGlmICghdGhpcy5kYXRhLmhhcyhsYW5ndWFnZSkpIHtcclxuICAgICAgICBsYW5ndWFnZSA9IHRoaXMuR2V0RmFsbGJhY2tMYW5ndWFnZSgpO1xyXG5cclxuICAgICAgICAvLyBSZXR1cm4gS2V5IGlmIG5vIExhbmd1YWdlIGV4aXN0c1xyXG4gICAgICAgIGlmICghdGhpcy5kYXRhLmhhcyhsYW5ndWFnZSkpIHtcclxuICAgICAgICAgIG9ic2VydmVyLm5leHQoa2V5KTtcclxuICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5kYXRhLmdldChsYW5ndWFnZSkuaGFzKGtleSkpIHtcclxuICAgICAgICBjb25zdCByZXNvdXJjZSA9IHRoaXMuZGF0YS5nZXQobGFuZ3VhZ2UpLmdldChrZXkpO1xyXG4gICAgICAgIGlmIChwYXJhbXMgIT09IHVuZGVmaW5lZCAmJiBwYXJhbXMgIT09IG51bGwpIHtcclxuICAgICAgICAgIGNvbnN0IGZvcm1hdHRlcjogSW50ZXJwb2xhdGlvbiA9IG5ldyBJbnRlcnBvbGF0aW9uKCk7XHJcbiAgICAgICAgICBvYnNlcnZlci5uZXh0KGZvcm1hdHRlci5pbnRlcnBvbGF0ZVN0cmluZyhyZXNvdXJjZSwgcGFyYW1zKSk7XHJcbiAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBvYnNlcnZlci5uZXh0KHJlc291cmNlKTtcclxuICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG9ic2VydmVyLm5leHQoa2V5KTtcclxuICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBNZXRob2RzXHJcblxyXG4gIC8vICNyZWdpb24gUHJpdmF0ZSBNZXRob2RzXHJcblxyXG4gIC8qKlxyXG4gICAqIERpZSBGdW5rdGlvbiBzZXR6dCBkaWUgZGVmYXVsdCBTcHJhY2hlIGF1ZiBERSwgZmFsbHMgZGllIFNwcmFjaC1TZXR6dW5nIG5pY2h0IG3DtmdsaWNoIGlzdC5cclxuICAgKi9cclxuICBwcml2YXRlIEdldEZhbGxiYWNrTGFuZ3VhZ2UoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiAnZGUnO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGllIEZ1bmt0aW9uIGVyZ2lidCBkaWUgYXVzZ2V3w6RobHRlIFNwcmFjaGUuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBHZXRMYW5ndWFnZSgpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgbGFuZ3VhZ2U6IHN0cmluZyA9IG5hdmlnYXRvci5sYW5ndWFnZTtcclxuXHJcbiAgICBpZiAobGFuZ3VhZ2UuaW5kZXhPZignLScpID49IDApIHtcclxuICAgICAgcmV0dXJuIGxhbmd1YWdlLnNwbGl0KCctJylbMF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gbGFuZ3VhZ2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyAjZW5kcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xyXG59XHJcblxyXG4vLyAjZW5kcmVnaW9uIENsYXNzZXNcclxuXHJcbi8vICNyZWdpb24gVmFyaWFibGVzXHJcblxyXG4vKipcclxuICogaW5qZWN0aW9uIHRva2VuIGZvciBsb2NhbGlzYXRpb24gc2VydmljZVxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IFNBQ0xPQ0FMSVNBVElPTl9TRVJWSUNFID1cclxuICBuZXcgSW5qZWN0aW9uVG9rZW48U2FjQWJzdHJhY3RMb2NhbGlzYXRpb25TZXJ2aWNlPignU2FjTG9jYWxpc2F0aW9uU2VydmljZScpO1xyXG5cclxuLy8gI2VuZHJlZ2lvbiBWYXJpYWJsZXNcclxuIl19
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview This file was generated by the Angular template compiler. Do not edit.
|
|
3
|
+
*
|
|
4
|
+
* @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes,extraRequire}
|
|
5
|
+
* tslint:disable
|
|
6
|
+
*/
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FjLWxvY2FsaXNhdGlvbi5zZXJ2aWNlLm5nZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiJDOi9Qcm9qZWt0ZS9zaW1wbGVhbmd1bGFyY29udHJvbHMtbmcxMC9jaC5qbmV0d29yay5zYWMtY29udHJvbHMvcHJvamVjdHMvc2FjLWNvbW1vbi9zcmMvIiwic291cmNlcyI6WyJzZXJ2aWNlcy9zYWMtbG9jYWxpc2F0aW9uLnNlcnZpY2UubmdmYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBpMCBmcm9tICdAYW5ndWxhci9jb3JlJztcbmkwLkNvbXBvbmVudEZhY3Rvcnk7XG4iXX0=
|