@wemake4u/form-player-se 1.0.41 → 1.0.43

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.
Files changed (90) hide show
  1. package/esm2022/lib/builtIn/builtIn.mjs +4 -2
  2. package/esm2022/lib/builtIn/dialog.json +7 -0
  3. package/esm2022/lib/builtIn/form.json +12 -0
  4. package/esm2022/lib/builtIn/function.json +22 -0
  5. package/esm2022/lib/builtIn/json.json +30 -0
  6. package/esm2022/lib/controls/button.mjs +4 -1
  7. package/esm2022/lib/controls/checkbox.mjs +4 -1
  8. package/esm2022/lib/controls/checklist.mjs +6 -3
  9. package/esm2022/lib/controls/chipchecklist.mjs +6 -3
  10. package/esm2022/lib/controls/chipradio.mjs +6 -3
  11. package/esm2022/lib/controls/date.mjs +4 -1
  12. package/esm2022/lib/controls/datetime.mjs +4 -0
  13. package/esm2022/lib/controls/factory.mjs +4 -1
  14. package/esm2022/lib/controls/filepicker.mjs +4 -1
  15. package/esm2022/lib/controls/number.mjs +4 -1
  16. package/esm2022/lib/controls/radio.mjs +6 -3
  17. package/esm2022/lib/controls/select.mjs +6 -3
  18. package/esm2022/lib/controls/taglist.mjs +6 -3
  19. package/esm2022/lib/controls/textarea.mjs +4 -1
  20. package/esm2022/lib/controls/textfield.mjs +4 -1
  21. package/esm2022/lib/controls/time.mjs +4 -1
  22. package/esm2022/lib/dialog/dialog.component.mjs +3 -3
  23. package/esm2022/lib/directives/dialog.directive.mjs +7 -2
  24. package/esm2022/lib/directives/repeat.directive.mjs +6 -3
  25. package/esm2022/lib/dynamic-fields/dynamic-fields.component.mjs +122 -27
  26. package/esm2022/lib/dynamic-form/dynamic-form.component.mjs +33 -312
  27. package/esm2022/lib/locale/locale-de.mjs +6 -2
  28. package/esm2022/lib/locale/locale-en.mjs +5 -1
  29. package/esm2022/lib/locale/locale-es.mjs +6 -2
  30. package/esm2022/lib/locale/locale-fr.mjs +6 -2
  31. package/esm2022/lib/locale/locale-it.mjs +6 -2
  32. package/esm2022/lib/locale/locale-pt.mjs +6 -2
  33. package/esm2022/lib/services/builder.service.mjs +347 -0
  34. package/esm2022/lib/services/dialog.service.mjs +13 -1
  35. package/esm2022/lib/services/form.service.mjs +45 -13
  36. package/esm2022/lib/services/function.service.mjs +6 -1
  37. package/esm2022/lib/services/json.service.mjs +47 -0
  38. package/esm2022/lib/services/programmability.service.mjs +21 -45
  39. package/esm2022/lib/services/scope.service.mjs +4 -7
  40. package/esm2022/lib/services/status.service.mjs +35 -18
  41. package/esm2022/lib/utils/FormGroupEx.mjs +52 -0
  42. package/esm2022/lib/utils/groupByRow.mjs +2 -2
  43. package/esm2022/lib/utils/patch.mjs +2 -2
  44. package/esm2022/lib/utils/window.mjs +40 -0
  45. package/esm2022/public-api.mjs +1 -2
  46. package/fesm2022/wemake4u-form-player-se.mjs +1824 -1390
  47. package/fesm2022/wemake4u-form-player-se.mjs.map +1 -1
  48. package/lib/components/deleteRowRenderer/deleteRowRenderer.component.d.ts +4 -0
  49. package/lib/components/objectURLRenderer/objectURLRenderer.component.d.ts +4 -0
  50. package/lib/components/setFilter/setFilter.component.d.ts +4 -0
  51. package/lib/controls/button.d.ts +1 -0
  52. package/lib/controls/checkbox.d.ts +1 -0
  53. package/lib/controls/checklist.d.ts +2 -1
  54. package/lib/controls/chipchecklist.d.ts +2 -1
  55. package/lib/controls/chipradio.d.ts +2 -1
  56. package/lib/controls/date.d.ts +1 -0
  57. package/lib/controls/datetime.d.ts +3 -0
  58. package/lib/controls/filepicker.d.ts +1 -0
  59. package/lib/controls/number.d.ts +1 -0
  60. package/lib/controls/radio.d.ts +2 -1
  61. package/lib/controls/select.d.ts +2 -1
  62. package/lib/controls/taglist.d.ts +2 -1
  63. package/lib/controls/textarea.d.ts +1 -0
  64. package/lib/controls/textfield.d.ts +1 -0
  65. package/lib/controls/time.d.ts +1 -0
  66. package/lib/dialog/dialog.component.d.ts +28 -0
  67. package/lib/dynamic-fields/dynamic-fields.component.d.ts +51 -10
  68. package/lib/dynamic-form/dynamic-form.component.d.ts +36 -23
  69. package/lib/locale/locale-de.d.ts +4 -0
  70. package/lib/locale/locale-en.d.ts +4 -0
  71. package/lib/locale/locale-es.d.ts +4 -0
  72. package/lib/locale/locale-fr.d.ts +4 -0
  73. package/lib/locale/locale-it.d.ts +4 -0
  74. package/lib/locale/locale-pt.d.ts +4 -0
  75. package/lib/locale/locale.d.ts +28 -0
  76. package/lib/services/builder.service.d.ts +43 -0
  77. package/lib/services/dialog.service.d.ts +2 -0
  78. package/lib/services/form.service.d.ts +2 -1
  79. package/lib/services/function.service.d.ts +2 -0
  80. package/lib/services/json.service.d.ts +10 -0
  81. package/lib/services/programmability.service.d.ts +6 -2
  82. package/lib/services/status.service.d.ts +3 -4
  83. package/lib/utils/FormGroupEx.d.ts +18 -0
  84. package/lib/utils/window.d.ts +18 -0
  85. package/package.json +1 -1
  86. package/public-api.d.ts +0 -1
  87. package/esm2022/lib/utils/extractFiles.mjs +0 -30
  88. package/esm2022/lib/utils/toFormData.mjs +0 -11
  89. package/lib/utils/extractFiles.d.ts +0 -4
  90. package/lib/utils/toFormData.d.ts +0 -1
@@ -40,6 +40,10 @@ export const Texts = {
40
40
  MoveUp: "Nach oben verschieben",
41
41
  MoveDown: "Nach unten verschieben",
42
42
  NoData: "Keine Daten zum Anzeigen",
43
- RequiredField: "Pflichtfeld"
43
+ RequiredField: "Pflichtfeld",
44
+ PreviousElement: "Vorheriges Element",
45
+ NextElement: "Nächstes Element",
46
+ Elements: "Elemente",
47
+ Of: "von"
44
48
  };
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLWRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvbG9jYWxlL2xvY2FsZS1kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUc7SUFDbkIsWUFBWSxFQUFFLHNCQUFzQjtJQUNwQyxNQUFNLEVBQUUsV0FBVztJQUNuQixVQUFVLEVBQUUscUJBQXFCO0lBQ2pDLFdBQVcsRUFBRSxzQkFBc0I7SUFDbkMsT0FBTyxFQUFFLFlBQVk7SUFDckIsVUFBVSxFQUFFLFdBQVc7SUFDdkIsZUFBZSxFQUFFLHNCQUFzQjtJQUN2QyxXQUFXLEVBQUUsb0JBQW9CO0lBQ2pDLElBQUksRUFBRSxVQUFVO0lBQ2hCLE1BQU0sRUFBRSxXQUFXO0lBQ25CLEtBQUssRUFBRSxXQUFXO0lBQ2xCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLEVBQUUsRUFBRSxJQUFJO0lBQ1IsTUFBTSxFQUFFLFdBQVc7SUFDbkIsS0FBSyxFQUFFLFdBQVc7SUFDbEIsS0FBSyxFQUFFLGFBQWE7SUFDcEIsTUFBTSxFQUFFLFlBQVk7SUFDcEIsR0FBRyxFQUFFLElBQUk7SUFDVCxFQUFFLEVBQUUsTUFBTTtJQUNWLEdBQUcsRUFBRSxXQUFXO0lBQ2hCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLElBQUksRUFBRSxNQUFNO0lBQ1osSUFBSSxFQUFFLE9BQU87SUFDYixJQUFJLEVBQUUsS0FBSztJQUNYLE9BQU8sRUFBRSxVQUFVO0lBQ25CLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLFFBQVEsRUFBRSxlQUFlO0lBQ3pCLFNBQVMsRUFBRSxpQkFBaUI7SUFDNUIsU0FBUyxFQUFFLG1CQUFtQjtJQUM5QixJQUFJLEVBQUUsTUFBTTtJQUNaLEtBQUssRUFBRSxRQUFRO0lBQ2YsS0FBSyxFQUFFLE1BQU07SUFDYixRQUFRLEVBQUUsWUFBWTtJQUN0QixXQUFXLEVBQUUsZUFBZTtJQUM1QixRQUFRLEVBQUUsYUFBYTtJQUN2QixTQUFTLEVBQUUsZ0JBQWdCO0lBQzNCLGFBQWEsRUFBRSxpREFBaUQ7SUFDaEUsYUFBYSxFQUFFLDRGQUE0RjtJQUMzRyxNQUFNLEVBQUUsdUJBQXVCO0lBQy9CLFFBQVEsRUFBRSx3QkFBd0I7SUFDbEMsTUFBTSxFQUFFLDBCQUEwQjtJQUNsQyxhQUFhLEVBQUUsYUFBYTtDQUM3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFRleHRzID0ge1xyXG4gIFR5cGVUb1NlYXJjaDogXCJadW0gU3VjaGVuIHRpcHBlbi4uLlwiLFxyXG4gIFVwbG9hZDogXCJIb2NobGFkZW5cIixcclxuICBTY3JvbGxMZWZ0OiBcIk5hY2ggbGlua3Mgc2Nyb2xsZW5cIixcclxuICBTY3JvbGxSaWdodDogXCJOYWNoIHJlY2h0cyBzY3JvbGxlblwiLFxyXG4gIEFkZEl0ZW06IFwiSGluenVmw7xnZW5cIixcclxuICBSZW1vdmVJdGVtOiBcIkVudGZlcm5lblwiLFxyXG4gIFByZXZpb3VzU2VjdGlvbjogXCJWb3JoZXJpZ2VyIEFic2Nobml0dFwiLFxyXG4gIE5leHRTZWN0aW9uOiBcIk7DpGNoc3RlciBBYnNjaG5pdHRcIixcclxuICBTaG93OiBcIkFuemVpZ2VuXCIsXHJcbiAgUmVtb3ZlOiBcIkVudGZlcm5lblwiLFxyXG4gIENsb3NlOiBcIlNjaGxpZcOfZW5cIixcclxuICBDb25maXJtOiBcIkJlc3TDpHRpZ2VuXCIsXHJcbiAgT0s6IFwiT0tcIixcclxuICBDYW5jZWw6IFwiQWJicmVjaGVuXCIsXHJcbiAgQWJvcnQ6IFwiQWJicmVjaGVuXCIsXHJcbiAgUmV0cnk6IFwiV2llZGVyaG9sZW5cIixcclxuICBJZ25vcmU6IFwiSWdub3JpZXJlblwiLFxyXG4gIFllczogXCJKYVwiLFxyXG4gIE5vOiBcIk5laW5cIixcclxuICBUcnk6IFwiVmVyc3VjaGVuXCIsXHJcbiAgQ29udGludWU6IFwiRm9ydHNldHplblwiLFxyXG4gIE5hbWU6IFwiTmFtZVwiLFxyXG4gIFNpemU6IFwiR3LDtsOfZVwiLFxyXG4gIFR5cGU6IFwiVHlwXCIsXHJcbiAgQWN0aW9uczogXCJBa3Rpb25lblwiLFxyXG4gIFJlYWRNb3JlOiBcIk1laHIgbGVzZW5cIixcclxuICBSZWFkTGVzczogXCJXZW5pZ2VyIGxlc2VuXCIsXHJcbiAgU2VsZWN0QWxsOiBcIkFsbGVzIGF1c3fDpGhsZW5cIixcclxuICBDaG9vc2VPbmU6IFwiV8OkaGxlIGVpbmUgT3B0aW9uXCIsXHJcbiAgVHJ1ZTogXCJXYWhyXCIsXHJcbiAgRmFsc2U6IFwiRmFsc2NoXCIsXHJcbiAgQmxhbms6IFwiTGVlclwiLFxyXG4gIE5vdEJsYW5rOiBcIk5pY2h0IGxlZXJcIixcclxuICBJbmZvcm1hdGlvbjogXCJJbmZvcm1hdGlvbmVuXCIsXHJcbiAgT3Blbk1lbnU6IFwiTWVuw7wgw7ZmZm5lblwiLFxyXG4gIENsb3NlTWVudTogXCJNZW7DvCBzY2hsaWXDn2VuXCIsXHJcbiAgTG9hZGluZ0ZhaWxlZDogXCJCZWltIExhZGVuIGRlciBEYXRlbiBpc3QgZWluIEZlaGxlciBhdWZnZXRyZXRlblwiLFxyXG4gIENvbmZpcm1EZWxldGU6IFwiTcO2Y2h0ZW4gU2llIGRhcyBMw7ZzY2hlbiBiZXN0w6R0aWdlbj9cXHJcXG5EaWVzZXIgVm9yZ2FuZyBrYW5uIG5pY2h0IHLDvGNrZ8OkbmdpZyBnZW1hY2h0IHdlcmRlblwiLFxyXG4gIE1vdmVVcDogXCJOYWNoIG9iZW4gdmVyc2NoaWViZW5cIixcclxuICBNb3ZlRG93bjogXCJOYWNoIHVudGVuIHZlcnNjaGllYmVuXCIsXHJcbiAgTm9EYXRhOiBcIktlaW5lIERhdGVuIHp1bSBBbnplaWdlblwiLFxyXG4gIFJlcXVpcmVkRmllbGQ6IFwiUGZsaWNodGZlbGRcIlxyXG59O1xyXG4iXX0=
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLWRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvbG9jYWxlL2xvY2FsZS1kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUc7SUFDbkIsWUFBWSxFQUFFLHNCQUFzQjtJQUNwQyxNQUFNLEVBQUUsV0FBVztJQUNuQixVQUFVLEVBQUUscUJBQXFCO0lBQ2pDLFdBQVcsRUFBRSxzQkFBc0I7SUFDbkMsT0FBTyxFQUFFLFlBQVk7SUFDckIsVUFBVSxFQUFFLFdBQVc7SUFDdkIsZUFBZSxFQUFFLHNCQUFzQjtJQUN2QyxXQUFXLEVBQUUsb0JBQW9CO0lBQ2pDLElBQUksRUFBRSxVQUFVO0lBQ2hCLE1BQU0sRUFBRSxXQUFXO0lBQ25CLEtBQUssRUFBRSxXQUFXO0lBQ2xCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLEVBQUUsRUFBRSxJQUFJO0lBQ1IsTUFBTSxFQUFFLFdBQVc7SUFDbkIsS0FBSyxFQUFFLFdBQVc7SUFDbEIsS0FBSyxFQUFFLGFBQWE7SUFDcEIsTUFBTSxFQUFFLFlBQVk7SUFDcEIsR0FBRyxFQUFFLElBQUk7SUFDVCxFQUFFLEVBQUUsTUFBTTtJQUNWLEdBQUcsRUFBRSxXQUFXO0lBQ2hCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLElBQUksRUFBRSxNQUFNO0lBQ1osSUFBSSxFQUFFLE9BQU87SUFDYixJQUFJLEVBQUUsS0FBSztJQUNYLE9BQU8sRUFBRSxVQUFVO0lBQ25CLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLFFBQVEsRUFBRSxlQUFlO0lBQ3pCLFNBQVMsRUFBRSxpQkFBaUI7SUFDNUIsU0FBUyxFQUFFLG1CQUFtQjtJQUM5QixJQUFJLEVBQUUsTUFBTTtJQUNaLEtBQUssRUFBRSxRQUFRO0lBQ2YsS0FBSyxFQUFFLE1BQU07SUFDYixRQUFRLEVBQUUsWUFBWTtJQUN0QixXQUFXLEVBQUUsZUFBZTtJQUM1QixRQUFRLEVBQUUsYUFBYTtJQUN2QixTQUFTLEVBQUUsZ0JBQWdCO0lBQzNCLGFBQWEsRUFBRSxpREFBaUQ7SUFDaEUsYUFBYSxFQUFFLDRGQUE0RjtJQUMzRyxNQUFNLEVBQUUsdUJBQXVCO0lBQy9CLFFBQVEsRUFBRSx3QkFBd0I7SUFDbEMsTUFBTSxFQUFFLDBCQUEwQjtJQUNsQyxhQUFhLEVBQUUsYUFBYTtJQUM1QixlQUFlLEVBQUUsb0JBQW9CO0lBQ3JDLFdBQVcsRUFBRSxrQkFBa0I7SUFDL0IsUUFBUSxFQUFFLFVBQVU7SUFDcEIsRUFBRSxFQUFFLEtBQUs7Q0FDVixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFRleHRzID0ge1xyXG4gIFR5cGVUb1NlYXJjaDogXCJadW0gU3VjaGVuIHRpcHBlbi4uLlwiLFxyXG4gIFVwbG9hZDogXCJIb2NobGFkZW5cIixcclxuICBTY3JvbGxMZWZ0OiBcIk5hY2ggbGlua3Mgc2Nyb2xsZW5cIixcclxuICBTY3JvbGxSaWdodDogXCJOYWNoIHJlY2h0cyBzY3JvbGxlblwiLFxyXG4gIEFkZEl0ZW06IFwiSGluenVmw7xnZW5cIixcclxuICBSZW1vdmVJdGVtOiBcIkVudGZlcm5lblwiLFxyXG4gIFByZXZpb3VzU2VjdGlvbjogXCJWb3JoZXJpZ2VyIEFic2Nobml0dFwiLFxyXG4gIE5leHRTZWN0aW9uOiBcIk7DpGNoc3RlciBBYnNjaG5pdHRcIixcclxuICBTaG93OiBcIkFuemVpZ2VuXCIsXHJcbiAgUmVtb3ZlOiBcIkVudGZlcm5lblwiLFxyXG4gIENsb3NlOiBcIlNjaGxpZcOfZW5cIixcclxuICBDb25maXJtOiBcIkJlc3TDpHRpZ2VuXCIsXHJcbiAgT0s6IFwiT0tcIixcclxuICBDYW5jZWw6IFwiQWJicmVjaGVuXCIsXHJcbiAgQWJvcnQ6IFwiQWJicmVjaGVuXCIsXHJcbiAgUmV0cnk6IFwiV2llZGVyaG9sZW5cIixcclxuICBJZ25vcmU6IFwiSWdub3JpZXJlblwiLFxyXG4gIFllczogXCJKYVwiLFxyXG4gIE5vOiBcIk5laW5cIixcclxuICBUcnk6IFwiVmVyc3VjaGVuXCIsXHJcbiAgQ29udGludWU6IFwiRm9ydHNldHplblwiLFxyXG4gIE5hbWU6IFwiTmFtZVwiLFxyXG4gIFNpemU6IFwiR3LDtsOfZVwiLFxyXG4gIFR5cGU6IFwiVHlwXCIsXHJcbiAgQWN0aW9uczogXCJBa3Rpb25lblwiLFxyXG4gIFJlYWRNb3JlOiBcIk1laHIgbGVzZW5cIixcclxuICBSZWFkTGVzczogXCJXZW5pZ2VyIGxlc2VuXCIsXHJcbiAgU2VsZWN0QWxsOiBcIkFsbGVzIGF1c3fDpGhsZW5cIixcclxuICBDaG9vc2VPbmU6IFwiV8OkaGxlIGVpbmUgT3B0aW9uXCIsXHJcbiAgVHJ1ZTogXCJXYWhyXCIsXHJcbiAgRmFsc2U6IFwiRmFsc2NoXCIsXHJcbiAgQmxhbms6IFwiTGVlclwiLFxyXG4gIE5vdEJsYW5rOiBcIk5pY2h0IGxlZXJcIixcclxuICBJbmZvcm1hdGlvbjogXCJJbmZvcm1hdGlvbmVuXCIsXHJcbiAgT3Blbk1lbnU6IFwiTWVuw7wgw7ZmZm5lblwiLFxyXG4gIENsb3NlTWVudTogXCJNZW7DvCBzY2hsaWXDn2VuXCIsXHJcbiAgTG9hZGluZ0ZhaWxlZDogXCJCZWltIExhZGVuIGRlciBEYXRlbiBpc3QgZWluIEZlaGxlciBhdWZnZXRyZXRlblwiLFxyXG4gIENvbmZpcm1EZWxldGU6IFwiTcO2Y2h0ZW4gU2llIGRhcyBMw7ZzY2hlbiBiZXN0w6R0aWdlbj9cXHJcXG5EaWVzZXIgVm9yZ2FuZyBrYW5uIG5pY2h0IHLDvGNrZ8OkbmdpZyBnZW1hY2h0IHdlcmRlblwiLFxyXG4gIE1vdmVVcDogXCJOYWNoIG9iZW4gdmVyc2NoaWViZW5cIixcclxuICBNb3ZlRG93bjogXCJOYWNoIHVudGVuIHZlcnNjaGllYmVuXCIsXHJcbiAgTm9EYXRhOiBcIktlaW5lIERhdGVuIHp1bSBBbnplaWdlblwiLFxyXG4gIFJlcXVpcmVkRmllbGQ6IFwiUGZsaWNodGZlbGRcIixcclxuICBQcmV2aW91c0VsZW1lbnQ6IFwiVm9yaGVyaWdlcyBFbGVtZW50XCIsXHJcbiAgTmV4dEVsZW1lbnQ6IFwiTsOkY2hzdGVzIEVsZW1lbnRcIixcclxuICBFbGVtZW50czogXCJFbGVtZW50ZVwiLFxyXG4gIE9mOiBcInZvblwiXHJcbn07XHJcbiJdfQ==
@@ -41,5 +41,9 @@ export const Texts = {
41
41
  MoveDown: "Move Down",
42
42
  NoData: "No data to display",
43
43
  RequiredField: "Required field",
44
+ PreviousElement: "Previous element",
45
+ NextElement: "Next element",
46
+ Elements: "Elements",
47
+ Of: "of"
44
48
  };
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLWVuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvbG9jYWxlL2xvY2FsZS1lbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUc7SUFDbkIsWUFBWSxFQUFFLG1CQUFtQjtJQUNqQyxNQUFNLEVBQUUsUUFBUTtJQUNoQixVQUFVLEVBQUUsYUFBYTtJQUN6QixXQUFXLEVBQUUsY0FBYztJQUMzQixPQUFPLEVBQUUsS0FBSztJQUNkLFVBQVUsRUFBRSxRQUFRO0lBQ3BCLGVBQWUsRUFBRSxrQkFBa0I7SUFDbkMsV0FBVyxFQUFFLGNBQWM7SUFDM0IsSUFBSSxFQUFFLE1BQU07SUFDWixNQUFNLEVBQUUsUUFBUTtJQUNoQixLQUFLLEVBQUUsT0FBTztJQUNkLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLEVBQUUsRUFBRSxJQUFJO0lBQ1IsTUFBTSxFQUFFLFFBQVE7SUFDaEIsS0FBSyxFQUFFLE9BQU87SUFDZCxLQUFLLEVBQUUsT0FBTztJQUNkLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLEdBQUcsRUFBRSxLQUFLO0lBQ1YsRUFBRSxFQUFFLElBQUk7SUFDUixHQUFHLEVBQUUsS0FBSztJQUNWLFFBQVEsRUFBRSxVQUFVO0lBQ3BCLElBQUksRUFBRSxNQUFNO0lBQ1osSUFBSSxFQUFFLE1BQU07SUFDWixJQUFJLEVBQUUsTUFBTTtJQUNaLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLFFBQVEsRUFBRSxXQUFXO0lBQ3JCLFFBQVEsRUFBRSxXQUFXO0lBQ3JCLFNBQVMsRUFBRSxZQUFZO0lBQ3ZCLFNBQVMsRUFBRSxZQUFZO0lBQ3ZCLElBQUksRUFBRSxNQUFNO0lBQ1osS0FBSyxFQUFFLE9BQU87SUFDZCxLQUFLLEVBQUUsT0FBTztJQUNkLFFBQVEsRUFBRSxXQUFXO0lBQ3JCLFdBQVcsRUFBRSxhQUFhO0lBQzFCLFFBQVEsRUFBRSxXQUFXO0lBQ3JCLFNBQVMsRUFBRSxZQUFZO0lBQ3ZCLGFBQWEsRUFBRSxzQ0FBc0M7SUFDckQsYUFBYSxFQUFFLDhEQUE4RDtJQUM3RSxNQUFNLEVBQUUsU0FBUztJQUNqQixRQUFRLEVBQUUsV0FBVztJQUNyQixNQUFNLEVBQUUsb0JBQW9CO0lBQzVCLGFBQWEsRUFBRSxnQkFBZ0I7Q0FDaEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBUZXh0cyA9IHtcclxuICBUeXBlVG9TZWFyY2g6IFwiVHlwZSB0byBzZWFyY2guLi5cIixcclxuICBVcGxvYWQ6IFwiVXBsb2FkXCIsXHJcbiAgU2Nyb2xsTGVmdDogXCJTY3JvbGwgbGVmdFwiLFxyXG4gIFNjcm9sbFJpZ2h0OiBcIlNjcm9sbCByaWdodFwiLFxyXG4gIEFkZEl0ZW06IFwiQWRkXCIsXHJcbiAgUmVtb3ZlSXRlbTogXCJSZW1vdmVcIixcclxuICBQcmV2aW91c1NlY3Rpb246IFwiUHJldmlvdXMgc2VjdGlvblwiLFxyXG4gIE5leHRTZWN0aW9uOiBcIk5leHQgc2VjdGlvblwiLFxyXG4gIFNob3c6IFwiU2hvd1wiLFxyXG4gIFJlbW92ZTogXCJSZW1vdmVcIixcclxuICBDbG9zZTogXCJDbG9zZVwiLFxyXG4gIENvbmZpcm06IFwiQ29uZmlybVwiLFxyXG4gIE9LOiBcIk9LXCIsXHJcbiAgQ2FuY2VsOiBcIkNhbmNlbFwiLFxyXG4gIEFib3J0OiBcIkFib3J0XCIsXHJcbiAgUmV0cnk6IFwiUmV0cnlcIixcclxuICBJZ25vcmU6IFwiSWdub3JlXCIsXHJcbiAgWWVzOiBcIlllc1wiLFxyXG4gIE5vOiBcIk5vXCIsXHJcbiAgVHJ5OiBcIlRyeVwiLFxyXG4gIENvbnRpbnVlOiBcIkNvbnRpbnVlXCIsXHJcbiAgTmFtZTogXCJOYW1lXCIsXHJcbiAgU2l6ZTogXCJTaXplXCIsXHJcbiAgVHlwZTogXCJUeXBlXCIsXHJcbiAgQWN0aW9uczogXCJBY3Rpb25zXCIsXHJcbiAgUmVhZE1vcmU6IFwiUmVhZCBtb3JlXCIsXHJcbiAgUmVhZExlc3M6IFwiUmVhZCBsZXNzXCIsXHJcbiAgU2VsZWN0QWxsOiBcIlNlbGVjdCBhbGxcIixcclxuICBDaG9vc2VPbmU6IFwiQ2hvb3NlIG9uZVwiLFxyXG4gIFRydWU6IFwiVHJ1ZVwiLFxyXG4gIEZhbHNlOiBcIkZhbHNlXCIsXHJcbiAgQmxhbms6IFwiQmxhbmtcIixcclxuICBOb3RCbGFuazogXCJOb3QgYmxhbmtcIixcclxuICBJbmZvcm1hdGlvbjogXCJJbmZvcm1hdGlvblwiLFxyXG4gIE9wZW5NZW51OiBcIk9wZW4gbWVudVwiLFxyXG4gIENsb3NlTWVudTogXCJDbG9zZSBtZW51XCIsXHJcbiAgTG9hZGluZ0ZhaWxlZDogXCJBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBsb2FkaW5nIGRhdGFcIixcclxuICBDb25maXJtRGVsZXRlOiBcIkRvIHlvdSBjb25maXJtIHRoZSBkZWxldGlvbj9cXHJcXG5UaGlzIGFjdGlvbiBjYW5ub3QgYmUgdW5kb25lXCIsXHJcbiAgTW92ZVVwOiBcIk1vdmUgVXBcIixcclxuICBNb3ZlRG93bjogXCJNb3ZlIERvd25cIixcclxuICBOb0RhdGE6IFwiTm8gZGF0YSB0byBkaXNwbGF5XCIsXHJcbiAgUmVxdWlyZWRGaWVsZDogXCJSZXF1aXJlZCBmaWVsZFwiLFxyXG59O1xyXG4iXX0=
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLWVuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvbG9jYWxlL2xvY2FsZS1lbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUc7SUFDbkIsWUFBWSxFQUFFLG1CQUFtQjtJQUNqQyxNQUFNLEVBQUUsUUFBUTtJQUNoQixVQUFVLEVBQUUsYUFBYTtJQUN6QixXQUFXLEVBQUUsY0FBYztJQUMzQixPQUFPLEVBQUUsS0FBSztJQUNkLFVBQVUsRUFBRSxRQUFRO0lBQ3BCLGVBQWUsRUFBRSxrQkFBa0I7SUFDbkMsV0FBVyxFQUFFLGNBQWM7SUFDM0IsSUFBSSxFQUFFLE1BQU07SUFDWixNQUFNLEVBQUUsUUFBUTtJQUNoQixLQUFLLEVBQUUsT0FBTztJQUNkLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLEVBQUUsRUFBRSxJQUFJO0lBQ1IsTUFBTSxFQUFFLFFBQVE7SUFDaEIsS0FBSyxFQUFFLE9BQU87SUFDZCxLQUFLLEVBQUUsT0FBTztJQUNkLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLEdBQUcsRUFBRSxLQUFLO0lBQ1YsRUFBRSxFQUFFLElBQUk7SUFDUixHQUFHLEVBQUUsS0FBSztJQUNWLFFBQVEsRUFBRSxVQUFVO0lBQ3BCLElBQUksRUFBRSxNQUFNO0lBQ1osSUFBSSxFQUFFLE1BQU07SUFDWixJQUFJLEVBQUUsTUFBTTtJQUNaLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLFFBQVEsRUFBRSxXQUFXO0lBQ3JCLFFBQVEsRUFBRSxXQUFXO0lBQ3JCLFNBQVMsRUFBRSxZQUFZO0lBQ3ZCLFNBQVMsRUFBRSxZQUFZO0lBQ3ZCLElBQUksRUFBRSxNQUFNO0lBQ1osS0FBSyxFQUFFLE9BQU87SUFDZCxLQUFLLEVBQUUsT0FBTztJQUNkLFFBQVEsRUFBRSxXQUFXO0lBQ3JCLFdBQVcsRUFBRSxhQUFhO0lBQzFCLFFBQVEsRUFBRSxXQUFXO0lBQ3JCLFNBQVMsRUFBRSxZQUFZO0lBQ3ZCLGFBQWEsRUFBRSxzQ0FBc0M7SUFDckQsYUFBYSxFQUFFLDhEQUE4RDtJQUM3RSxNQUFNLEVBQUUsU0FBUztJQUNqQixRQUFRLEVBQUUsV0FBVztJQUNyQixNQUFNLEVBQUUsb0JBQW9CO0lBQzVCLGFBQWEsRUFBRSxnQkFBZ0I7SUFDL0IsZUFBZSxFQUFFLGtCQUFrQjtJQUNuQyxXQUFXLEVBQUUsY0FBYztJQUMzQixRQUFRLEVBQUUsVUFBVTtJQUNwQixFQUFFLEVBQUUsSUFBSTtDQUNULENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgVGV4dHMgPSB7XHJcbiAgVHlwZVRvU2VhcmNoOiBcIlR5cGUgdG8gc2VhcmNoLi4uXCIsXHJcbiAgVXBsb2FkOiBcIlVwbG9hZFwiLFxyXG4gIFNjcm9sbExlZnQ6IFwiU2Nyb2xsIGxlZnRcIixcclxuICBTY3JvbGxSaWdodDogXCJTY3JvbGwgcmlnaHRcIixcclxuICBBZGRJdGVtOiBcIkFkZFwiLFxyXG4gIFJlbW92ZUl0ZW06IFwiUmVtb3ZlXCIsXHJcbiAgUHJldmlvdXNTZWN0aW9uOiBcIlByZXZpb3VzIHNlY3Rpb25cIixcclxuICBOZXh0U2VjdGlvbjogXCJOZXh0IHNlY3Rpb25cIixcclxuICBTaG93OiBcIlNob3dcIixcclxuICBSZW1vdmU6IFwiUmVtb3ZlXCIsXHJcbiAgQ2xvc2U6IFwiQ2xvc2VcIixcclxuICBDb25maXJtOiBcIkNvbmZpcm1cIixcclxuICBPSzogXCJPS1wiLFxyXG4gIENhbmNlbDogXCJDYW5jZWxcIixcclxuICBBYm9ydDogXCJBYm9ydFwiLFxyXG4gIFJldHJ5OiBcIlJldHJ5XCIsXHJcbiAgSWdub3JlOiBcIklnbm9yZVwiLFxyXG4gIFllczogXCJZZXNcIixcclxuICBObzogXCJOb1wiLFxyXG4gIFRyeTogXCJUcnlcIixcclxuICBDb250aW51ZTogXCJDb250aW51ZVwiLFxyXG4gIE5hbWU6IFwiTmFtZVwiLFxyXG4gIFNpemU6IFwiU2l6ZVwiLFxyXG4gIFR5cGU6IFwiVHlwZVwiLFxyXG4gIEFjdGlvbnM6IFwiQWN0aW9uc1wiLFxyXG4gIFJlYWRNb3JlOiBcIlJlYWQgbW9yZVwiLFxyXG4gIFJlYWRMZXNzOiBcIlJlYWQgbGVzc1wiLFxyXG4gIFNlbGVjdEFsbDogXCJTZWxlY3QgYWxsXCIsXHJcbiAgQ2hvb3NlT25lOiBcIkNob29zZSBvbmVcIixcclxuICBUcnVlOiBcIlRydWVcIixcclxuICBGYWxzZTogXCJGYWxzZVwiLFxyXG4gIEJsYW5rOiBcIkJsYW5rXCIsXHJcbiAgTm90Qmxhbms6IFwiTm90IGJsYW5rXCIsXHJcbiAgSW5mb3JtYXRpb246IFwiSW5mb3JtYXRpb25cIixcclxuICBPcGVuTWVudTogXCJPcGVuIG1lbnVcIixcclxuICBDbG9zZU1lbnU6IFwiQ2xvc2UgbWVudVwiLFxyXG4gIExvYWRpbmdGYWlsZWQ6IFwiQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgbG9hZGluZyBkYXRhXCIsXHJcbiAgQ29uZmlybURlbGV0ZTogXCJEbyB5b3UgY29uZmlybSB0aGUgZGVsZXRpb24/XFxyXFxuVGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZVwiLFxyXG4gIE1vdmVVcDogXCJNb3ZlIFVwXCIsXHJcbiAgTW92ZURvd246IFwiTW92ZSBEb3duXCIsXHJcbiAgTm9EYXRhOiBcIk5vIGRhdGEgdG8gZGlzcGxheVwiLFxyXG4gIFJlcXVpcmVkRmllbGQ6IFwiUmVxdWlyZWQgZmllbGRcIixcclxuICBQcmV2aW91c0VsZW1lbnQ6IFwiUHJldmlvdXMgZWxlbWVudFwiLFxyXG4gIE5leHRFbGVtZW50OiBcIk5leHQgZWxlbWVudFwiLFxyXG4gIEVsZW1lbnRzOiBcIkVsZW1lbnRzXCIsXHJcbiAgT2Y6IFwib2ZcIlxyXG59O1xyXG4iXX0=
@@ -40,6 +40,10 @@ export const Texts = {
40
40
  MoveUp: "Mover arriba",
41
41
  MoveDown: "Mover abajo",
42
42
  NoData: "No hay datos para mostrar",
43
- RequiredField: "Campo obligatorio"
43
+ RequiredField: "Campo obligatorio",
44
+ PreviousElement: "Elemento anterior",
45
+ NextElement: "Elemento siguiente",
46
+ Elements: "Elementos",
47
+ Of: "de"
44
48
  };
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvbG9jYWxlL2xvY2FsZS1lcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUc7SUFDbkIsWUFBWSxFQUFFLHdCQUF3QjtJQUN0QyxNQUFNLEVBQUUsT0FBTztJQUNmLFVBQVUsRUFBRSwwQkFBMEI7SUFDdEMsV0FBVyxFQUFFLHdCQUF3QjtJQUNyQyxPQUFPLEVBQUUsU0FBUztJQUNsQixVQUFVLEVBQUUsVUFBVTtJQUN0QixlQUFlLEVBQUUsa0JBQWtCO0lBQ25DLFdBQVcsRUFBRSxtQkFBbUI7SUFDaEMsSUFBSSxFQUFFLFNBQVM7SUFDZixNQUFNLEVBQUUsVUFBVTtJQUNsQixLQUFLLEVBQUUsUUFBUTtJQUNmLE9BQU8sRUFBRSxXQUFXO0lBQ3BCLEVBQUUsRUFBRSxJQUFJO0lBQ1IsTUFBTSxFQUFFLFVBQVU7SUFDbEIsS0FBSyxFQUFFLFNBQVM7SUFDaEIsS0FBSyxFQUFFLFlBQVk7SUFDbkIsTUFBTSxFQUFFLFNBQVM7SUFDakIsR0FBRyxFQUFFLElBQUk7SUFDVCxFQUFFLEVBQUUsSUFBSTtJQUNSLEdBQUcsRUFBRSxVQUFVO0lBQ2YsUUFBUSxFQUFFLFdBQVc7SUFDckIsSUFBSSxFQUFFLFFBQVE7SUFDZCxJQUFJLEVBQUUsUUFBUTtJQUNkLElBQUksRUFBRSxNQUFNO0lBQ1osT0FBTyxFQUFFLFVBQVU7SUFDbkIsUUFBUSxFQUFFLFVBQVU7SUFDcEIsUUFBUSxFQUFFLFlBQVk7SUFDdEIsU0FBUyxFQUFFLGtCQUFrQjtJQUM3QixTQUFTLEVBQUUsV0FBVztJQUN0QixJQUFJLEVBQUUsV0FBVztJQUNqQixLQUFLLEVBQUUsT0FBTztJQUNkLEtBQUssRUFBRSxPQUFPO0lBQ2QsUUFBUSxFQUFFLFVBQVU7SUFDcEIsV0FBVyxFQUFFLGFBQWE7SUFDMUIsUUFBUSxFQUFFLFlBQVk7SUFDdEIsU0FBUyxFQUFFLGFBQWE7SUFDeEIsYUFBYSxFQUFFLDJCQUEyQjtJQUMxQyxhQUFhLEVBQUUsK0RBQStEO0lBQzlFLE1BQU0sRUFBRSxjQUFjO0lBQ3RCLFFBQVEsRUFBRSxhQUFhO0lBQ3ZCLE1BQU0sRUFBRSwyQkFBMkI7SUFDbkMsYUFBYSxFQUFFLG1CQUFtQjtDQUNuQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFRleHRzID0ge1xyXG4gIFR5cGVUb1NlYXJjaDogXCJFc2NyaWJlIHBhcmEgYnVzY2FyLi4uXCIsXHJcbiAgVXBsb2FkOiBcIlN1YmlyXCIsXHJcbiAgU2Nyb2xsTGVmdDogXCJEZXNwbGF6YXIgYSBsYSBpenF1aWVyZGFcIixcclxuICBTY3JvbGxSaWdodDogXCJEZXNwbGF6YXIgYSBsYSBkZXJlY2hhXCIsXHJcbiAgQWRkSXRlbTogXCJBZ3JlZ2FyXCIsXHJcbiAgUmVtb3ZlSXRlbTogXCJFbGltaW5hclwiLFxyXG4gIFByZXZpb3VzU2VjdGlvbjogXCJTZWNjacOzbiBhbnRlcmlvclwiLFxyXG4gIE5leHRTZWN0aW9uOiBcIlNlY2Npw7NuIHNpZ3VpZW50ZVwiLFxyXG4gIFNob3c6IFwiTW9zdHJhclwiLFxyXG4gIFJlbW92ZTogXCJFbGltaW5hclwiLFxyXG4gIENsb3NlOiBcIkNlcnJhclwiLFxyXG4gIENvbmZpcm06IFwiQ29uZmlybWFyXCIsXHJcbiAgT0s6IFwiT0tcIixcclxuICBDYW5jZWw6IFwiQ2FuY2VsYXJcIixcclxuICBBYm9ydDogXCJBYm9ydGFyXCIsXHJcbiAgUmV0cnk6IFwiUmVpbnRlbnRhclwiLFxyXG4gIElnbm9yZTogXCJJZ25vcmFyXCIsXHJcbiAgWWVzOiBcIlPDrVwiLFxyXG4gIE5vOiBcIk5vXCIsXHJcbiAgVHJ5OiBcIkludGVudGFyXCIsXHJcbiAgQ29udGludWU6IFwiQ29udGludWFyXCIsXHJcbiAgTmFtZTogXCJOb21icmVcIixcclxuICBTaXplOiBcIlRhbWHDsW9cIixcclxuICBUeXBlOiBcIlRpcG9cIixcclxuICBBY3Rpb25zOiBcIkFjY2lvbmVzXCIsXHJcbiAgUmVhZE1vcmU6IFwiTGVlciBtw6FzXCIsXHJcbiAgUmVhZExlc3M6IFwiTGVlciBtZW5vc1wiLFxyXG4gIFNlbGVjdEFsbDogXCJTZWxlY2Npb25hciB0b2RvXCIsXHJcbiAgQ2hvb3NlT25lOiBcIkVsaWdlIHVub1wiLFxyXG4gIFRydWU6IFwiVmVyZGFkZXJvXCIsXHJcbiAgRmFsc2U6IFwiRmFsc29cIixcclxuICBCbGFuazogXCJWYWPDrW9cIixcclxuICBOb3RCbGFuazogXCJObyB2YWPDrW9cIixcclxuICBJbmZvcm1hdGlvbjogXCJJbmZvcm1hY2nDs25cIixcclxuICBPcGVuTWVudTogXCJBYnJpciBtZW7DulwiLFxyXG4gIENsb3NlTWVudTogXCJDZXJyYXIgbWVuw7pcIixcclxuICBMb2FkaW5nRmFpbGVkOiBcIkVycm9yIGFsIGNhcmdhciBsb3MgZGF0b3NcIixcclxuICBDb25maXJtRGVsZXRlOiBcIsK/Q29uZmlybWEgbGEgZWxpbWluYWNpw7NuP1xcclxcbkVzdGEgYWNjacOzbiBubyBzZSBwdWVkZSBkZXNoYWNlclwiLFxyXG4gIE1vdmVVcDogXCJNb3ZlciBhcnJpYmFcIixcclxuICBNb3ZlRG93bjogXCJNb3ZlciBhYmFqb1wiLFxyXG4gIE5vRGF0YTogXCJObyBoYXkgZGF0b3MgcGFyYSBtb3N0cmFyXCIsXHJcbiAgUmVxdWlyZWRGaWVsZDogXCJDYW1wbyBvYmxpZ2F0b3Jpb1wiXHJcbn07XHJcbiJdfQ==
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvbG9jYWxlL2xvY2FsZS1lcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUc7SUFDbkIsWUFBWSxFQUFFLHdCQUF3QjtJQUN0QyxNQUFNLEVBQUUsT0FBTztJQUNmLFVBQVUsRUFBRSwwQkFBMEI7SUFDdEMsV0FBVyxFQUFFLHdCQUF3QjtJQUNyQyxPQUFPLEVBQUUsU0FBUztJQUNsQixVQUFVLEVBQUUsVUFBVTtJQUN0QixlQUFlLEVBQUUsa0JBQWtCO0lBQ25DLFdBQVcsRUFBRSxtQkFBbUI7SUFDaEMsSUFBSSxFQUFFLFNBQVM7SUFDZixNQUFNLEVBQUUsVUFBVTtJQUNsQixLQUFLLEVBQUUsUUFBUTtJQUNmLE9BQU8sRUFBRSxXQUFXO0lBQ3BCLEVBQUUsRUFBRSxJQUFJO0lBQ1IsTUFBTSxFQUFFLFVBQVU7SUFDbEIsS0FBSyxFQUFFLFNBQVM7SUFDaEIsS0FBSyxFQUFFLFlBQVk7SUFDbkIsTUFBTSxFQUFFLFNBQVM7SUFDakIsR0FBRyxFQUFFLElBQUk7SUFDVCxFQUFFLEVBQUUsSUFBSTtJQUNSLEdBQUcsRUFBRSxVQUFVO0lBQ2YsUUFBUSxFQUFFLFdBQVc7SUFDckIsSUFBSSxFQUFFLFFBQVE7SUFDZCxJQUFJLEVBQUUsUUFBUTtJQUNkLElBQUksRUFBRSxNQUFNO0lBQ1osT0FBTyxFQUFFLFVBQVU7SUFDbkIsUUFBUSxFQUFFLFVBQVU7SUFDcEIsUUFBUSxFQUFFLFlBQVk7SUFDdEIsU0FBUyxFQUFFLGtCQUFrQjtJQUM3QixTQUFTLEVBQUUsV0FBVztJQUN0QixJQUFJLEVBQUUsV0FBVztJQUNqQixLQUFLLEVBQUUsT0FBTztJQUNkLEtBQUssRUFBRSxPQUFPO0lBQ2QsUUFBUSxFQUFFLFVBQVU7SUFDcEIsV0FBVyxFQUFFLGFBQWE7SUFDMUIsUUFBUSxFQUFFLFlBQVk7SUFDdEIsU0FBUyxFQUFFLGFBQWE7SUFDeEIsYUFBYSxFQUFFLDJCQUEyQjtJQUMxQyxhQUFhLEVBQUUsK0RBQStEO0lBQzlFLE1BQU0sRUFBRSxjQUFjO0lBQ3RCLFFBQVEsRUFBRSxhQUFhO0lBQ3ZCLE1BQU0sRUFBRSwyQkFBMkI7SUFDbkMsYUFBYSxFQUFFLG1CQUFtQjtJQUNsQyxlQUFlLEVBQUUsbUJBQW1CO0lBQ3BDLFdBQVcsRUFBRSxvQkFBb0I7SUFDakMsUUFBUSxFQUFFLFdBQVc7SUFDckIsRUFBRSxFQUFFLElBQUk7Q0FDVCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFRleHRzID0ge1xyXG4gIFR5cGVUb1NlYXJjaDogXCJFc2NyaWJlIHBhcmEgYnVzY2FyLi4uXCIsXHJcbiAgVXBsb2FkOiBcIlN1YmlyXCIsXHJcbiAgU2Nyb2xsTGVmdDogXCJEZXNwbGF6YXIgYSBsYSBpenF1aWVyZGFcIixcclxuICBTY3JvbGxSaWdodDogXCJEZXNwbGF6YXIgYSBsYSBkZXJlY2hhXCIsXHJcbiAgQWRkSXRlbTogXCJBZ3JlZ2FyXCIsXHJcbiAgUmVtb3ZlSXRlbTogXCJFbGltaW5hclwiLFxyXG4gIFByZXZpb3VzU2VjdGlvbjogXCJTZWNjacOzbiBhbnRlcmlvclwiLFxyXG4gIE5leHRTZWN0aW9uOiBcIlNlY2Npw7NuIHNpZ3VpZW50ZVwiLFxyXG4gIFNob3c6IFwiTW9zdHJhclwiLFxyXG4gIFJlbW92ZTogXCJFbGltaW5hclwiLFxyXG4gIENsb3NlOiBcIkNlcnJhclwiLFxyXG4gIENvbmZpcm06IFwiQ29uZmlybWFyXCIsXHJcbiAgT0s6IFwiT0tcIixcclxuICBDYW5jZWw6IFwiQ2FuY2VsYXJcIixcclxuICBBYm9ydDogXCJBYm9ydGFyXCIsXHJcbiAgUmV0cnk6IFwiUmVpbnRlbnRhclwiLFxyXG4gIElnbm9yZTogXCJJZ25vcmFyXCIsXHJcbiAgWWVzOiBcIlPDrVwiLFxyXG4gIE5vOiBcIk5vXCIsXHJcbiAgVHJ5OiBcIkludGVudGFyXCIsXHJcbiAgQ29udGludWU6IFwiQ29udGludWFyXCIsXHJcbiAgTmFtZTogXCJOb21icmVcIixcclxuICBTaXplOiBcIlRhbWHDsW9cIixcclxuICBUeXBlOiBcIlRpcG9cIixcclxuICBBY3Rpb25zOiBcIkFjY2lvbmVzXCIsXHJcbiAgUmVhZE1vcmU6IFwiTGVlciBtw6FzXCIsXHJcbiAgUmVhZExlc3M6IFwiTGVlciBtZW5vc1wiLFxyXG4gIFNlbGVjdEFsbDogXCJTZWxlY2Npb25hciB0b2RvXCIsXHJcbiAgQ2hvb3NlT25lOiBcIkVsaWdlIHVub1wiLFxyXG4gIFRydWU6IFwiVmVyZGFkZXJvXCIsXHJcbiAgRmFsc2U6IFwiRmFsc29cIixcclxuICBCbGFuazogXCJWYWPDrW9cIixcclxuICBOb3RCbGFuazogXCJObyB2YWPDrW9cIixcclxuICBJbmZvcm1hdGlvbjogXCJJbmZvcm1hY2nDs25cIixcclxuICBPcGVuTWVudTogXCJBYnJpciBtZW7DulwiLFxyXG4gIENsb3NlTWVudTogXCJDZXJyYXIgbWVuw7pcIixcclxuICBMb2FkaW5nRmFpbGVkOiBcIkVycm9yIGFsIGNhcmdhciBsb3MgZGF0b3NcIixcclxuICBDb25maXJtRGVsZXRlOiBcIsK/Q29uZmlybWEgbGEgZWxpbWluYWNpw7NuP1xcclxcbkVzdGEgYWNjacOzbiBubyBzZSBwdWVkZSBkZXNoYWNlclwiLFxyXG4gIE1vdmVVcDogXCJNb3ZlciBhcnJpYmFcIixcclxuICBNb3ZlRG93bjogXCJNb3ZlciBhYmFqb1wiLFxyXG4gIE5vRGF0YTogXCJObyBoYXkgZGF0b3MgcGFyYSBtb3N0cmFyXCIsXHJcbiAgUmVxdWlyZWRGaWVsZDogXCJDYW1wbyBvYmxpZ2F0b3Jpb1wiLFxyXG4gIFByZXZpb3VzRWxlbWVudDogXCJFbGVtZW50byBhbnRlcmlvclwiLFxyXG4gIE5leHRFbGVtZW50OiBcIkVsZW1lbnRvIHNpZ3VpZW50ZVwiLFxyXG4gIEVsZW1lbnRzOiBcIkVsZW1lbnRvc1wiLFxyXG4gIE9mOiBcImRlXCJcclxufTtcclxuIl19
@@ -40,6 +40,10 @@ export const Texts = {
40
40
  MoveUp: "Déplacer vers le haut",
41
41
  MoveDown: "Déplacer vers le bas",
42
42
  NoData: "Aucune donnée à afficher",
43
- RequiredField: "Champ obligatoire"
43
+ RequiredField: "Champ obligatoire",
44
+ PreviousElement: "Élément précédent",
45
+ NextElement: "Élément suivant",
46
+ Elements: "Éléments",
47
+ Of: "de"
44
48
  };
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLWZyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvbG9jYWxlL2xvY2FsZS1mci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUc7SUFDbkIsWUFBWSxFQUFFLDBCQUEwQjtJQUN4QyxNQUFNLEVBQUUsWUFBWTtJQUNwQixVQUFVLEVBQUUsOEJBQThCO0lBQzFDLFdBQVcsRUFBRSw4QkFBOEI7SUFDM0MsT0FBTyxFQUFFLFNBQVM7SUFDbEIsVUFBVSxFQUFFLFdBQVc7SUFDdkIsZUFBZSxFQUFFLG9CQUFvQjtJQUNyQyxXQUFXLEVBQUUsa0JBQWtCO0lBQy9CLElBQUksRUFBRSxVQUFVO0lBQ2hCLE1BQU0sRUFBRSxXQUFXO0lBQ25CLEtBQUssRUFBRSxRQUFRO0lBQ2YsT0FBTyxFQUFFLFdBQVc7SUFDcEIsRUFBRSxFQUFFLElBQUk7SUFDUixNQUFNLEVBQUUsU0FBUztJQUNqQixLQUFLLEVBQUUsWUFBWTtJQUNuQixLQUFLLEVBQUUsV0FBVztJQUNsQixNQUFNLEVBQUUsU0FBUztJQUNqQixHQUFHLEVBQUUsS0FBSztJQUNWLEVBQUUsRUFBRSxLQUFLO0lBQ1QsR0FBRyxFQUFFLFNBQVM7SUFDZCxRQUFRLEVBQUUsV0FBVztJQUNyQixJQUFJLEVBQUUsS0FBSztJQUNYLElBQUksRUFBRSxRQUFRO0lBQ2QsSUFBSSxFQUFFLE1BQU07SUFDWixPQUFPLEVBQUUsU0FBUztJQUNsQixRQUFRLEVBQUUsZUFBZTtJQUN6QixRQUFRLEVBQUUsWUFBWTtJQUN0QixTQUFTLEVBQUUsbUJBQW1CO0lBQzlCLFNBQVMsRUFBRSxZQUFZO0lBQ3ZCLElBQUksRUFBRSxNQUFNO0lBQ1osS0FBSyxFQUFFLE1BQU07SUFDYixLQUFLLEVBQUUsTUFBTTtJQUNiLFFBQVEsRUFBRSxVQUFVO0lBQ3BCLFdBQVcsRUFBRSxjQUFjO0lBQzNCLFFBQVEsRUFBRSxnQkFBZ0I7SUFDMUIsU0FBUyxFQUFFLGdCQUFnQjtJQUMzQixhQUFhLEVBQUUsdUNBQXVDO0lBQ3RELGFBQWEsRUFBRSwwRUFBMEU7SUFDekYsTUFBTSxFQUFFLHVCQUF1QjtJQUMvQixRQUFRLEVBQUUsc0JBQXNCO0lBQ2hDLE1BQU0sRUFBRSwwQkFBMEI7SUFDbEMsYUFBYSxFQUFFLG1CQUFtQjtDQUNuQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFRleHRzID0ge1xyXG4gIFR5cGVUb1NlYXJjaDogXCJUYXBleiBwb3VyIHJlY2hlcmNoZXIuLi5cIixcclxuICBVcGxvYWQ6IFwiVMOpbMOpdmVyc2VyXCIsXHJcbiAgU2Nyb2xsTGVmdDogXCJGYWlyZSBkw6lmaWxlciB2ZXJzIGxhIGdhdWNoZVwiLFxyXG4gIFNjcm9sbFJpZ2h0OiBcIkZhaXJlIGTDqWZpbGVyIHZlcnMgbGEgZHJvaXRlXCIsXHJcbiAgQWRkSXRlbTogXCJBam91dGVyXCIsXHJcbiAgUmVtb3ZlSXRlbTogXCJTdXBwcmltZXJcIixcclxuICBQcmV2aW91c1NlY3Rpb246IFwiU2VjdGlvbiBwcsOpY8OpZGVudGVcIixcclxuICBOZXh0U2VjdGlvbjogXCJTZWN0aW9uIHN1aXZhbnRlXCIsXHJcbiAgU2hvdzogXCJBZmZpY2hlclwiLFxyXG4gIFJlbW92ZTogXCJTdXBwcmltZXJcIixcclxuICBDbG9zZTogXCJGZXJtZXJcIixcclxuICBDb25maXJtOiBcIkNvbmZpcm1lclwiLFxyXG4gIE9LOiBcIk9LXCIsXHJcbiAgQ2FuY2VsOiBcIkFubnVsZXJcIixcclxuICBBYm9ydDogXCJBYmFuZG9ubmVyXCIsXHJcbiAgUmV0cnk6IFwiUsOpZXNzYXllclwiLFxyXG4gIElnbm9yZTogXCJJZ25vcmVyXCIsXHJcbiAgWWVzOiBcIk91aVwiLFxyXG4gIE5vOiBcIk5vblwiLFxyXG4gIFRyeTogXCJFc3NheWVyXCIsXHJcbiAgQ29udGludWU6IFwiQ29udGludWVyXCIsXHJcbiAgTmFtZTogXCJOb21cIixcclxuICBTaXplOiBcIlRhaWxsZVwiLFxyXG4gIFR5cGU6IFwiVHlwZVwiLFxyXG4gIEFjdGlvbnM6IFwiQWN0aW9uc1wiLFxyXG4gIFJlYWRNb3JlOiBcIkxpcmUgbGEgc3VpdGVcIixcclxuICBSZWFkTGVzczogXCJMaXJlIG1vaW5zXCIsXHJcbiAgU2VsZWN0QWxsOiBcIlRvdXQgc8OpbGVjdGlvbm5lclwiLFxyXG4gIENob29zZU9uZTogXCJDaG9pc2lyIHVuXCIsXHJcbiAgVHJ1ZTogXCJWcmFpXCIsXHJcbiAgRmFsc2U6IFwiRmF1eFwiLFxyXG4gIEJsYW5rOiBcIlZpZGVcIixcclxuICBOb3RCbGFuazogXCJOb24gdmlkZVwiLFxyXG4gIEluZm9ybWF0aW9uOiBcIkluZm9ybWF0aW9uc1wiLFxyXG4gIE9wZW5NZW51OiBcIk91dnJpciBsZSBtZW51XCIsXHJcbiAgQ2xvc2VNZW51OiBcIkZlcm1lciBsZSBtZW51XCIsXHJcbiAgTG9hZGluZ0ZhaWxlZDogXCJFcnJldXIgbG9ycyBkdSBjaGFyZ2VtZW50IGRlcyBkb25uw6llc1wiLFxyXG4gIENvbmZpcm1EZWxldGU6IFwiQ29uZmlybWV6LXZvdXMgbGEgc3VwcHJlc3Npb24gP1xcclxcbkNldHRlIGFjdGlvbiBuZSBwZXV0IHBhcyDDqnRyZSBhbm51bMOpZVwiLFxyXG4gIE1vdmVVcDogXCJEw6lwbGFjZXIgdmVycyBsZSBoYXV0XCIsXHJcbiAgTW92ZURvd246IFwiRMOpcGxhY2VyIHZlcnMgbGUgYmFzXCIsXHJcbiAgTm9EYXRhOiBcIkF1Y3VuZSBkb25uw6llIMOgIGFmZmljaGVyXCIsXHJcbiAgUmVxdWlyZWRGaWVsZDogXCJDaGFtcCBvYmxpZ2F0b2lyZVwiXHJcbn07XHJcbiJdfQ==
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLWZyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvbG9jYWxlL2xvY2FsZS1mci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUc7SUFDbkIsWUFBWSxFQUFFLDBCQUEwQjtJQUN4QyxNQUFNLEVBQUUsWUFBWTtJQUNwQixVQUFVLEVBQUUsOEJBQThCO0lBQzFDLFdBQVcsRUFBRSw4QkFBOEI7SUFDM0MsT0FBTyxFQUFFLFNBQVM7SUFDbEIsVUFBVSxFQUFFLFdBQVc7SUFDdkIsZUFBZSxFQUFFLG9CQUFvQjtJQUNyQyxXQUFXLEVBQUUsa0JBQWtCO0lBQy9CLElBQUksRUFBRSxVQUFVO0lBQ2hCLE1BQU0sRUFBRSxXQUFXO0lBQ25CLEtBQUssRUFBRSxRQUFRO0lBQ2YsT0FBTyxFQUFFLFdBQVc7SUFDcEIsRUFBRSxFQUFFLElBQUk7SUFDUixNQUFNLEVBQUUsU0FBUztJQUNqQixLQUFLLEVBQUUsWUFBWTtJQUNuQixLQUFLLEVBQUUsV0FBVztJQUNsQixNQUFNLEVBQUUsU0FBUztJQUNqQixHQUFHLEVBQUUsS0FBSztJQUNWLEVBQUUsRUFBRSxLQUFLO0lBQ1QsR0FBRyxFQUFFLFNBQVM7SUFDZCxRQUFRLEVBQUUsV0FBVztJQUNyQixJQUFJLEVBQUUsS0FBSztJQUNYLElBQUksRUFBRSxRQUFRO0lBQ2QsSUFBSSxFQUFFLE1BQU07SUFDWixPQUFPLEVBQUUsU0FBUztJQUNsQixRQUFRLEVBQUUsZUFBZTtJQUN6QixRQUFRLEVBQUUsWUFBWTtJQUN0QixTQUFTLEVBQUUsbUJBQW1CO0lBQzlCLFNBQVMsRUFBRSxZQUFZO0lBQ3ZCLElBQUksRUFBRSxNQUFNO0lBQ1osS0FBSyxFQUFFLE1BQU07SUFDYixLQUFLLEVBQUUsTUFBTTtJQUNiLFFBQVEsRUFBRSxVQUFVO0lBQ3BCLFdBQVcsRUFBRSxjQUFjO0lBQzNCLFFBQVEsRUFBRSxnQkFBZ0I7SUFDMUIsU0FBUyxFQUFFLGdCQUFnQjtJQUMzQixhQUFhLEVBQUUsdUNBQXVDO0lBQ3RELGFBQWEsRUFBRSwwRUFBMEU7SUFDekYsTUFBTSxFQUFFLHVCQUF1QjtJQUMvQixRQUFRLEVBQUUsc0JBQXNCO0lBQ2hDLE1BQU0sRUFBRSwwQkFBMEI7SUFDbEMsYUFBYSxFQUFFLG1CQUFtQjtJQUNsQyxlQUFlLEVBQUUsbUJBQW1CO0lBQ3BDLFdBQVcsRUFBRSxpQkFBaUI7SUFDOUIsUUFBUSxFQUFFLFVBQVU7SUFDcEIsRUFBRSxFQUFFLElBQUk7Q0FDVCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFRleHRzID0ge1xyXG4gIFR5cGVUb1NlYXJjaDogXCJUYXBleiBwb3VyIHJlY2hlcmNoZXIuLi5cIixcclxuICBVcGxvYWQ6IFwiVMOpbMOpdmVyc2VyXCIsXHJcbiAgU2Nyb2xsTGVmdDogXCJGYWlyZSBkw6lmaWxlciB2ZXJzIGxhIGdhdWNoZVwiLFxyXG4gIFNjcm9sbFJpZ2h0OiBcIkZhaXJlIGTDqWZpbGVyIHZlcnMgbGEgZHJvaXRlXCIsXHJcbiAgQWRkSXRlbTogXCJBam91dGVyXCIsXHJcbiAgUmVtb3ZlSXRlbTogXCJTdXBwcmltZXJcIixcclxuICBQcmV2aW91c1NlY3Rpb246IFwiU2VjdGlvbiBwcsOpY8OpZGVudGVcIixcclxuICBOZXh0U2VjdGlvbjogXCJTZWN0aW9uIHN1aXZhbnRlXCIsXHJcbiAgU2hvdzogXCJBZmZpY2hlclwiLFxyXG4gIFJlbW92ZTogXCJTdXBwcmltZXJcIixcclxuICBDbG9zZTogXCJGZXJtZXJcIixcclxuICBDb25maXJtOiBcIkNvbmZpcm1lclwiLFxyXG4gIE9LOiBcIk9LXCIsXHJcbiAgQ2FuY2VsOiBcIkFubnVsZXJcIixcclxuICBBYm9ydDogXCJBYmFuZG9ubmVyXCIsXHJcbiAgUmV0cnk6IFwiUsOpZXNzYXllclwiLFxyXG4gIElnbm9yZTogXCJJZ25vcmVyXCIsXHJcbiAgWWVzOiBcIk91aVwiLFxyXG4gIE5vOiBcIk5vblwiLFxyXG4gIFRyeTogXCJFc3NheWVyXCIsXHJcbiAgQ29udGludWU6IFwiQ29udGludWVyXCIsXHJcbiAgTmFtZTogXCJOb21cIixcclxuICBTaXplOiBcIlRhaWxsZVwiLFxyXG4gIFR5cGU6IFwiVHlwZVwiLFxyXG4gIEFjdGlvbnM6IFwiQWN0aW9uc1wiLFxyXG4gIFJlYWRNb3JlOiBcIkxpcmUgbGEgc3VpdGVcIixcclxuICBSZWFkTGVzczogXCJMaXJlIG1vaW5zXCIsXHJcbiAgU2VsZWN0QWxsOiBcIlRvdXQgc8OpbGVjdGlvbm5lclwiLFxyXG4gIENob29zZU9uZTogXCJDaG9pc2lyIHVuXCIsXHJcbiAgVHJ1ZTogXCJWcmFpXCIsXHJcbiAgRmFsc2U6IFwiRmF1eFwiLFxyXG4gIEJsYW5rOiBcIlZpZGVcIixcclxuICBOb3RCbGFuazogXCJOb24gdmlkZVwiLFxyXG4gIEluZm9ybWF0aW9uOiBcIkluZm9ybWF0aW9uc1wiLFxyXG4gIE9wZW5NZW51OiBcIk91dnJpciBsZSBtZW51XCIsXHJcbiAgQ2xvc2VNZW51OiBcIkZlcm1lciBsZSBtZW51XCIsXHJcbiAgTG9hZGluZ0ZhaWxlZDogXCJFcnJldXIgbG9ycyBkdSBjaGFyZ2VtZW50IGRlcyBkb25uw6llc1wiLFxyXG4gIENvbmZpcm1EZWxldGU6IFwiQ29uZmlybWV6LXZvdXMgbGEgc3VwcHJlc3Npb24gP1xcclxcbkNldHRlIGFjdGlvbiBuZSBwZXV0IHBhcyDDqnRyZSBhbm51bMOpZVwiLFxyXG4gIE1vdmVVcDogXCJEw6lwbGFjZXIgdmVycyBsZSBoYXV0XCIsXHJcbiAgTW92ZURvd246IFwiRMOpcGxhY2VyIHZlcnMgbGUgYmFzXCIsXHJcbiAgTm9EYXRhOiBcIkF1Y3VuZSBkb25uw6llIMOgIGFmZmljaGVyXCIsXHJcbiAgUmVxdWlyZWRGaWVsZDogXCJDaGFtcCBvYmxpZ2F0b2lyZVwiLFxyXG4gIFByZXZpb3VzRWxlbWVudDogXCLDiWzDqW1lbnQgcHLDqWPDqWRlbnRcIixcclxuICBOZXh0RWxlbWVudDogXCLDiWzDqW1lbnQgc3VpdmFudFwiLFxyXG4gIEVsZW1lbnRzOiBcIsOJbMOpbWVudHNcIixcclxuICBPZjogXCJkZVwiXHJcbn07XHJcbiJdfQ==
@@ -40,6 +40,10 @@ export const Texts = {
40
40
  MoveUp: "Sposta Sù",
41
41
  MoveDown: "Sposta Giù",
42
42
  NoData: "Nessun dato da mostrare",
43
- RequiredField: "Campo obbligatorio"
43
+ RequiredField: "Campo obbligatorio",
44
+ PreviousElement: "Elemento precedente",
45
+ NextElement: "Elemento successivo",
46
+ Elements: "Elementi",
47
+ Of: "di"
44
48
  };
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLWl0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvbG9jYWxlL2xvY2FsZS1pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUc7SUFDbkIsWUFBWSxFQUFFLHVCQUF1QjtJQUNyQyxNQUFNLEVBQUUsUUFBUTtJQUNoQixVQUFVLEVBQUUsbUJBQW1CO0lBQy9CLFdBQVcsRUFBRSxpQkFBaUI7SUFDOUIsT0FBTyxFQUFFLFVBQVU7SUFDbkIsVUFBVSxFQUFFLFNBQVM7SUFDckIsZUFBZSxFQUFFLG9CQUFvQjtJQUNyQyxXQUFXLEVBQUUsb0JBQW9CO0lBQ2pDLElBQUksRUFBRSxZQUFZO0lBQ2xCLE1BQU0sRUFBRSxTQUFTO0lBQ2pCLEtBQUssRUFBRSxRQUFRO0lBQ2YsT0FBTyxFQUFFLFVBQVU7SUFDbkIsRUFBRSxFQUFFLElBQUk7SUFDUixNQUFNLEVBQUUsU0FBUztJQUNqQixLQUFLLEVBQUUsWUFBWTtJQUNuQixLQUFLLEVBQUUsU0FBUztJQUNoQixNQUFNLEVBQUUsUUFBUTtJQUNoQixHQUFHLEVBQUUsSUFBSTtJQUNULEVBQUUsRUFBRSxJQUFJO0lBQ1IsR0FBRyxFQUFFLE9BQU87SUFDWixRQUFRLEVBQUUsVUFBVTtJQUNwQixJQUFJLEVBQUUsTUFBTTtJQUNaLElBQUksRUFBRSxZQUFZO0lBQ2xCLElBQUksRUFBRSxNQUFNO0lBQ1osT0FBTyxFQUFFLFFBQVE7SUFDakIsUUFBUSxFQUFFLGNBQWM7SUFDeEIsUUFBUSxFQUFFLGVBQWU7SUFDekIsU0FBUyxFQUFFLGlCQUFpQjtJQUM1QixTQUFTLEVBQUUsWUFBWTtJQUN2QixJQUFJLEVBQUUsTUFBTTtJQUNaLEtBQUssRUFBRSxPQUFPO0lBQ2QsS0FBSyxFQUFFLE9BQU87SUFDZCxRQUFRLEVBQUUsV0FBVztJQUNyQixXQUFXLEVBQUUsY0FBYztJQUMzQixRQUFRLEVBQUUsV0FBVztJQUNyQixTQUFTLEVBQUUsYUFBYTtJQUN4QixhQUFhLEVBQUUsMkRBQTJEO0lBQzFFLGFBQWEsRUFBRSxvRUFBb0U7SUFDbkYsTUFBTSxFQUFFLFdBQVc7SUFDbkIsUUFBUSxFQUFFLFlBQVk7SUFDdEIsTUFBTSxFQUFFLHlCQUF5QjtJQUNqQyxhQUFhLEVBQUUsb0JBQW9CO0NBQ3BDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgVGV4dHMgPSB7XHJcbiAgVHlwZVRvU2VhcmNoOiBcIkRpZ2l0YSBwZXIgY2VyY2FyZS4uLlwiLFxyXG4gIFVwbG9hZDogXCJVcGxvYWRcIixcclxuICBTY3JvbGxMZWZ0OiBcIlNjb3JyaSBhIHNpbmlzdHJhXCIsXHJcbiAgU2Nyb2xsUmlnaHQ6IFwiU2NvcnJpIGEgZGVzdHJhXCIsXHJcbiAgQWRkSXRlbTogXCJBZ2dpdW5naVwiLFxyXG4gIFJlbW92ZUl0ZW06IFwiUmltdW92aVwiLFxyXG4gIFByZXZpb3VzU2VjdGlvbjogXCJTZXppb25lIHByZWNlZGVudGVcIixcclxuICBOZXh0U2VjdGlvbjogXCJTZXppb25lIHN1Y2Nlc3NpdmFcIixcclxuICBTaG93OiBcIlZpc3VhbGl6emFcIixcclxuICBSZW1vdmU6IFwiUmltdW92aVwiLFxyXG4gIENsb3NlOiBcIkNoaXVkaVwiLFxyXG4gIENvbmZpcm06IFwiQ29uZmVybWFcIixcclxuICBPSzogXCJPS1wiLFxyXG4gIENhbmNlbDogXCJBbm51bGxhXCIsXHJcbiAgQWJvcnQ6IFwiSW50ZXJyb21waVwiLFxyXG4gIFJldHJ5OiBcIlJpcHJvdmFcIixcclxuICBJZ25vcmU6IFwiSWdub3JhXCIsXHJcbiAgWWVzOiBcIlPDrFwiLFxyXG4gIE5vOiBcIk5vXCIsXHJcbiAgVHJ5OiBcIlByb3ZhXCIsXHJcbiAgQ29udGludWU6IFwiQ29udGludWFcIixcclxuICBOYW1lOiBcIk5vbWVcIixcclxuICBTaXplOiBcIkRpbWVuc2lvbmVcIixcclxuICBUeXBlOiBcIlRpcG9cIixcclxuICBBY3Rpb25zOiBcIkF6aW9uaVwiLFxyXG4gIFJlYWRNb3JlOiBcIkxlZ2dpIGRpIHBpw7lcIixcclxuICBSZWFkTGVzczogXCJMZWdnaSBkaSBtZW5vXCIsXHJcbiAgU2VsZWN0QWxsOiBcIlNlbGV6aW9uYSB0dXR0b1wiLFxyXG4gIENob29zZU9uZTogXCJTY2VnbGkgdW5vXCIsXHJcbiAgVHJ1ZTogXCJWZXJvXCIsXHJcbiAgRmFsc2U6IFwiRmFsc29cIixcclxuICBCbGFuazogXCJWdW90b1wiLFxyXG4gIE5vdEJsYW5rOiBcIk5vbiB2dW90b1wiLFxyXG4gIEluZm9ybWF0aW9uOiBcIkluZm9ybWF6aW9uaVwiLFxyXG4gIE9wZW5NZW51OiBcIkFwcmkgTWVudVwiLFxyXG4gIENsb3NlTWVudTogXCJDaGl1ZGkgTWVudVwiLFxyXG4gIExvYWRpbmdGYWlsZWQ6IFwiU2kgw6ggdmVyaWZpY2F0byB1biBlcnJvcmUgZHVyYW50ZSBpbCBjYXJpY2FtZW50byBkZWkgZGF0aVwiLFxyXG4gIENvbmZpcm1EZWxldGU6IFwiQ29uZmVybWkgbOKAmWVsaW1pbmF6aW9uZSA/XFxyXFxuTOKAmW9wZXJhemlvbmUgbm9uIHB1w7IgZXNzZXJlIGFubnVsbGF0YVwiLFxyXG4gIE1vdmVVcDogXCJTcG9zdGEgU8O5XCIsXHJcbiAgTW92ZURvd246IFwiU3Bvc3RhIEdpw7lcIixcclxuICBOb0RhdGE6IFwiTmVzc3VuIGRhdG8gZGEgbW9zdHJhcmVcIixcclxuICBSZXF1aXJlZEZpZWxkOiBcIkNhbXBvIG9iYmxpZ2F0b3Jpb1wiXHJcbn07XHJcbiJdfQ==
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLWl0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvbG9jYWxlL2xvY2FsZS1pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUc7SUFDbkIsWUFBWSxFQUFFLHVCQUF1QjtJQUNyQyxNQUFNLEVBQUUsUUFBUTtJQUNoQixVQUFVLEVBQUUsbUJBQW1CO0lBQy9CLFdBQVcsRUFBRSxpQkFBaUI7SUFDOUIsT0FBTyxFQUFFLFVBQVU7SUFDbkIsVUFBVSxFQUFFLFNBQVM7SUFDckIsZUFBZSxFQUFFLG9CQUFvQjtJQUNyQyxXQUFXLEVBQUUsb0JBQW9CO0lBQ2pDLElBQUksRUFBRSxZQUFZO0lBQ2xCLE1BQU0sRUFBRSxTQUFTO0lBQ2pCLEtBQUssRUFBRSxRQUFRO0lBQ2YsT0FBTyxFQUFFLFVBQVU7SUFDbkIsRUFBRSxFQUFFLElBQUk7SUFDUixNQUFNLEVBQUUsU0FBUztJQUNqQixLQUFLLEVBQUUsWUFBWTtJQUNuQixLQUFLLEVBQUUsU0FBUztJQUNoQixNQUFNLEVBQUUsUUFBUTtJQUNoQixHQUFHLEVBQUUsSUFBSTtJQUNULEVBQUUsRUFBRSxJQUFJO0lBQ1IsR0FBRyxFQUFFLE9BQU87SUFDWixRQUFRLEVBQUUsVUFBVTtJQUNwQixJQUFJLEVBQUUsTUFBTTtJQUNaLElBQUksRUFBRSxZQUFZO0lBQ2xCLElBQUksRUFBRSxNQUFNO0lBQ1osT0FBTyxFQUFFLFFBQVE7SUFDakIsUUFBUSxFQUFFLGNBQWM7SUFDeEIsUUFBUSxFQUFFLGVBQWU7SUFDekIsU0FBUyxFQUFFLGlCQUFpQjtJQUM1QixTQUFTLEVBQUUsWUFBWTtJQUN2QixJQUFJLEVBQUUsTUFBTTtJQUNaLEtBQUssRUFBRSxPQUFPO0lBQ2QsS0FBSyxFQUFFLE9BQU87SUFDZCxRQUFRLEVBQUUsV0FBVztJQUNyQixXQUFXLEVBQUUsY0FBYztJQUMzQixRQUFRLEVBQUUsV0FBVztJQUNyQixTQUFTLEVBQUUsYUFBYTtJQUN4QixhQUFhLEVBQUUsMkRBQTJEO0lBQzFFLGFBQWEsRUFBRSxvRUFBb0U7SUFDbkYsTUFBTSxFQUFFLFdBQVc7SUFDbkIsUUFBUSxFQUFFLFlBQVk7SUFDdEIsTUFBTSxFQUFFLHlCQUF5QjtJQUNqQyxhQUFhLEVBQUUsb0JBQW9CO0lBQ25DLGVBQWUsRUFBRSxxQkFBcUI7SUFDdEMsV0FBVyxFQUFFLHFCQUFxQjtJQUNsQyxRQUFRLEVBQUUsVUFBVTtJQUNwQixFQUFFLEVBQUUsSUFBSTtDQUNULENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgVGV4dHMgPSB7XHJcbiAgVHlwZVRvU2VhcmNoOiBcIkRpZ2l0YSBwZXIgY2VyY2FyZS4uLlwiLFxyXG4gIFVwbG9hZDogXCJVcGxvYWRcIixcclxuICBTY3JvbGxMZWZ0OiBcIlNjb3JyaSBhIHNpbmlzdHJhXCIsXHJcbiAgU2Nyb2xsUmlnaHQ6IFwiU2NvcnJpIGEgZGVzdHJhXCIsXHJcbiAgQWRkSXRlbTogXCJBZ2dpdW5naVwiLFxyXG4gIFJlbW92ZUl0ZW06IFwiUmltdW92aVwiLFxyXG4gIFByZXZpb3VzU2VjdGlvbjogXCJTZXppb25lIHByZWNlZGVudGVcIixcclxuICBOZXh0U2VjdGlvbjogXCJTZXppb25lIHN1Y2Nlc3NpdmFcIixcclxuICBTaG93OiBcIlZpc3VhbGl6emFcIixcclxuICBSZW1vdmU6IFwiUmltdW92aVwiLFxyXG4gIENsb3NlOiBcIkNoaXVkaVwiLFxyXG4gIENvbmZpcm06IFwiQ29uZmVybWFcIixcclxuICBPSzogXCJPS1wiLFxyXG4gIENhbmNlbDogXCJBbm51bGxhXCIsXHJcbiAgQWJvcnQ6IFwiSW50ZXJyb21waVwiLFxyXG4gIFJldHJ5OiBcIlJpcHJvdmFcIixcclxuICBJZ25vcmU6IFwiSWdub3JhXCIsXHJcbiAgWWVzOiBcIlPDrFwiLFxyXG4gIE5vOiBcIk5vXCIsXHJcbiAgVHJ5OiBcIlByb3ZhXCIsXHJcbiAgQ29udGludWU6IFwiQ29udGludWFcIixcclxuICBOYW1lOiBcIk5vbWVcIixcclxuICBTaXplOiBcIkRpbWVuc2lvbmVcIixcclxuICBUeXBlOiBcIlRpcG9cIixcclxuICBBY3Rpb25zOiBcIkF6aW9uaVwiLFxyXG4gIFJlYWRNb3JlOiBcIkxlZ2dpIGRpIHBpw7lcIixcclxuICBSZWFkTGVzczogXCJMZWdnaSBkaSBtZW5vXCIsXHJcbiAgU2VsZWN0QWxsOiBcIlNlbGV6aW9uYSB0dXR0b1wiLFxyXG4gIENob29zZU9uZTogXCJTY2VnbGkgdW5vXCIsXHJcbiAgVHJ1ZTogXCJWZXJvXCIsXHJcbiAgRmFsc2U6IFwiRmFsc29cIixcclxuICBCbGFuazogXCJWdW90b1wiLFxyXG4gIE5vdEJsYW5rOiBcIk5vbiB2dW90b1wiLFxyXG4gIEluZm9ybWF0aW9uOiBcIkluZm9ybWF6aW9uaVwiLFxyXG4gIE9wZW5NZW51OiBcIkFwcmkgTWVudVwiLFxyXG4gIENsb3NlTWVudTogXCJDaGl1ZGkgTWVudVwiLFxyXG4gIExvYWRpbmdGYWlsZWQ6IFwiU2kgw6ggdmVyaWZpY2F0byB1biBlcnJvcmUgZHVyYW50ZSBpbCBjYXJpY2FtZW50byBkZWkgZGF0aVwiLFxyXG4gIENvbmZpcm1EZWxldGU6IFwiQ29uZmVybWkgbOKAmWVsaW1pbmF6aW9uZSA/XFxyXFxuTOKAmW9wZXJhemlvbmUgbm9uIHB1w7IgZXNzZXJlIGFubnVsbGF0YVwiLFxyXG4gIE1vdmVVcDogXCJTcG9zdGEgU8O5XCIsXHJcbiAgTW92ZURvd246IFwiU3Bvc3RhIEdpw7lcIixcclxuICBOb0RhdGE6IFwiTmVzc3VuIGRhdG8gZGEgbW9zdHJhcmVcIixcclxuICBSZXF1aXJlZEZpZWxkOiBcIkNhbXBvIG9iYmxpZ2F0b3Jpb1wiLFxyXG4gIFByZXZpb3VzRWxlbWVudDogXCJFbGVtZW50byBwcmVjZWRlbnRlXCIsXHJcbiAgTmV4dEVsZW1lbnQ6IFwiRWxlbWVudG8gc3VjY2Vzc2l2b1wiLFxyXG4gIEVsZW1lbnRzOiBcIkVsZW1lbnRpXCIsXHJcbiAgT2Y6IFwiZGlcIlxyXG59O1xyXG4iXX0=
@@ -40,6 +40,10 @@ export const Texts = {
40
40
  MoveUp: "Mover para cima",
41
41
  MoveDown: "Mover para baixo",
42
42
  NoData: "Nenhum dado para exibir",
43
- RequiredField: "Campo obrigatório"
43
+ RequiredField: "Campo obrigatório",
44
+ PreviousElement: "Elemento anterior",
45
+ NextElement: "Próximo elemento",
46
+ Elements: "Elementos",
47
+ Of: "de"
44
48
  };
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLXB0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvbG9jYWxlL2xvY2FsZS1wdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUc7SUFDbkIsWUFBWSxFQUFFLDBCQUEwQjtJQUN4QyxNQUFNLEVBQUUsUUFBUTtJQUNoQixVQUFVLEVBQUUsdUJBQXVCO0lBQ25DLFdBQVcsRUFBRSxzQkFBc0I7SUFDbkMsT0FBTyxFQUFFLFdBQVc7SUFDcEIsVUFBVSxFQUFFLFNBQVM7SUFDckIsZUFBZSxFQUFFLGdCQUFnQjtJQUNqQyxXQUFXLEVBQUUsZUFBZTtJQUM1QixJQUFJLEVBQUUsU0FBUztJQUNmLE1BQU0sRUFBRSxTQUFTO0lBQ2pCLEtBQUssRUFBRSxRQUFRO0lBQ2YsT0FBTyxFQUFFLFdBQVc7SUFDcEIsRUFBRSxFQUFFLElBQUk7SUFDUixNQUFNLEVBQUUsVUFBVTtJQUNsQixLQUFLLEVBQUUsU0FBUztJQUNoQixLQUFLLEVBQUUsa0JBQWtCO0lBQ3pCLE1BQU0sRUFBRSxTQUFTO0lBQ2pCLEdBQUcsRUFBRSxLQUFLO0lBQ1YsRUFBRSxFQUFFLEtBQUs7SUFDVCxHQUFHLEVBQUUsUUFBUTtJQUNiLFFBQVEsRUFBRSxXQUFXO0lBQ3JCLElBQUksRUFBRSxNQUFNO0lBQ1osSUFBSSxFQUFFLFNBQVM7SUFDZixJQUFJLEVBQUUsTUFBTTtJQUNaLE9BQU8sRUFBRSxPQUFPO0lBQ2hCLFFBQVEsRUFBRSxXQUFXO0lBQ3JCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLFNBQVMsRUFBRSxpQkFBaUI7SUFDNUIsU0FBUyxFQUFFLFlBQVk7SUFDdkIsSUFBSSxFQUFFLFlBQVk7SUFDbEIsS0FBSyxFQUFFLE9BQU87SUFDZCxLQUFLLEVBQUUsT0FBTztJQUNkLFFBQVEsRUFBRSxXQUFXO0lBQ3JCLFdBQVcsRUFBRSxhQUFhO0lBQzFCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLFNBQVMsRUFBRSxhQUFhO0lBQ3hCLGFBQWEsRUFBRSwyQkFBMkI7SUFDMUMsYUFBYSxFQUFFLDJEQUEyRDtJQUMxRSxNQUFNLEVBQUUsaUJBQWlCO0lBQ3pCLFFBQVEsRUFBRSxrQkFBa0I7SUFDNUIsTUFBTSxFQUFFLHlCQUF5QjtJQUNqQyxhQUFhLEVBQUUsbUJBQW1CO0NBQ25DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgVGV4dHMgPSB7XHJcbiAgVHlwZVRvU2VhcmNoOiBcIkRpZ2l0ZSBwYXJhIHBlc3F1aXNhci4uLlwiLFxyXG4gIFVwbG9hZDogXCJFbnZpYXJcIixcclxuICBTY3JvbGxMZWZ0OiBcIlJvbGFyIHBhcmEgYSBlc3F1ZXJkYVwiLFxyXG4gIFNjcm9sbFJpZ2h0OiBcIlJvbGFyIHBhcmEgYSBkaXJlaXRhXCIsXHJcbiAgQWRkSXRlbTogXCJBZGljaW9uYXJcIixcclxuICBSZW1vdmVJdGVtOiBcIlJlbW92ZXJcIixcclxuICBQcmV2aW91c1NlY3Rpb246IFwiU2XDp8OjbyBhbnRlcmlvclwiLFxyXG4gIE5leHRTZWN0aW9uOiBcIlByw7N4aW1hIHNlw6fDo29cIixcclxuICBTaG93OiBcIk1vc3RyYXJcIixcclxuICBSZW1vdmU6IFwiUmVtb3ZlclwiLFxyXG4gIENsb3NlOiBcIkZlY2hhclwiLFxyXG4gIENvbmZpcm06IFwiQ29uZmlybWFyXCIsXHJcbiAgT0s6IFwiT0tcIixcclxuICBDYW5jZWw6IFwiQ2FuY2VsYXJcIixcclxuICBBYm9ydDogXCJBYm9ydGFyXCIsXHJcbiAgUmV0cnk6IFwiVGVudGFyIG5vdmFtZW50ZVwiLFxyXG4gIElnbm9yZTogXCJJZ25vcmFyXCIsXHJcbiAgWWVzOiBcIlNpbVwiLFxyXG4gIE5vOiBcIk7Do29cIixcclxuICBUcnk6IFwiVGVudGFyXCIsXHJcbiAgQ29udGludWU6IFwiQ29udGludWFyXCIsXHJcbiAgTmFtZTogXCJOb21lXCIsXHJcbiAgU2l6ZTogXCJUYW1hbmhvXCIsXHJcbiAgVHlwZTogXCJUaXBvXCIsXHJcbiAgQWN0aW9uczogXCJBw6fDtWVzXCIsXHJcbiAgUmVhZE1vcmU6IFwiTGVpYSBtYWlzXCIsXHJcbiAgUmVhZExlc3M6IFwiTGVpYSBtZW5vc1wiLFxyXG4gIFNlbGVjdEFsbDogXCJTZWxlY2lvbmFyIHR1ZG9cIixcclxuICBDaG9vc2VPbmU6IFwiRXNjb2xoYSB1bVwiLFxyXG4gIFRydWU6IFwiVmVyZGFkZWlyb1wiLFxyXG4gIEZhbHNlOiBcIkZhbHNvXCIsXHJcbiAgQmxhbms6IFwiVmF6aW9cIixcclxuICBOb3RCbGFuazogXCJOw6NvIHZhemlvXCIsXHJcbiAgSW5mb3JtYXRpb246IFwiSW5mb3JtYcOnw7Vlc1wiLFxyXG4gIE9wZW5NZW51OiBcIkFicmlyIG1lbnVcIixcclxuICBDbG9zZU1lbnU6IFwiRmVjaGFyIG1lbnVcIixcclxuICBMb2FkaW5nRmFpbGVkOiBcIkVycm8gYW8gY2FycmVnYXIgb3MgZGFkb3NcIixcclxuICBDb25maXJtRGVsZXRlOiBcIkNvbmZpcm1hIGEgZWxpbWluYcOnw6NvP1xcclxcbkVzdGEgYcOnw6NvIG7Do28gcG9kZSBzZXIgZGVzZmVpdGFcIixcclxuICBNb3ZlVXA6IFwiTW92ZXIgcGFyYSBjaW1hXCIsXHJcbiAgTW92ZURvd246IFwiTW92ZXIgcGFyYSBiYWl4b1wiLFxyXG4gIE5vRGF0YTogXCJOZW5odW0gZGFkbyBwYXJhIGV4aWJpclwiLFxyXG4gIFJlcXVpcmVkRmllbGQ6IFwiQ2FtcG8gb2JyaWdhdMOzcmlvXCJcclxufTtcclxuIl19
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLXB0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvbG9jYWxlL2xvY2FsZS1wdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUc7SUFDbkIsWUFBWSxFQUFFLDBCQUEwQjtJQUN4QyxNQUFNLEVBQUUsUUFBUTtJQUNoQixVQUFVLEVBQUUsdUJBQXVCO0lBQ25DLFdBQVcsRUFBRSxzQkFBc0I7SUFDbkMsT0FBTyxFQUFFLFdBQVc7SUFDcEIsVUFBVSxFQUFFLFNBQVM7SUFDckIsZUFBZSxFQUFFLGdCQUFnQjtJQUNqQyxXQUFXLEVBQUUsZUFBZTtJQUM1QixJQUFJLEVBQUUsU0FBUztJQUNmLE1BQU0sRUFBRSxTQUFTO0lBQ2pCLEtBQUssRUFBRSxRQUFRO0lBQ2YsT0FBTyxFQUFFLFdBQVc7SUFDcEIsRUFBRSxFQUFFLElBQUk7SUFDUixNQUFNLEVBQUUsVUFBVTtJQUNsQixLQUFLLEVBQUUsU0FBUztJQUNoQixLQUFLLEVBQUUsa0JBQWtCO0lBQ3pCLE1BQU0sRUFBRSxTQUFTO0lBQ2pCLEdBQUcsRUFBRSxLQUFLO0lBQ1YsRUFBRSxFQUFFLEtBQUs7SUFDVCxHQUFHLEVBQUUsUUFBUTtJQUNiLFFBQVEsRUFBRSxXQUFXO0lBQ3JCLElBQUksRUFBRSxNQUFNO0lBQ1osSUFBSSxFQUFFLFNBQVM7SUFDZixJQUFJLEVBQUUsTUFBTTtJQUNaLE9BQU8sRUFBRSxPQUFPO0lBQ2hCLFFBQVEsRUFBRSxXQUFXO0lBQ3JCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLFNBQVMsRUFBRSxpQkFBaUI7SUFDNUIsU0FBUyxFQUFFLFlBQVk7SUFDdkIsSUFBSSxFQUFFLFlBQVk7SUFDbEIsS0FBSyxFQUFFLE9BQU87SUFDZCxLQUFLLEVBQUUsT0FBTztJQUNkLFFBQVEsRUFBRSxXQUFXO0lBQ3JCLFdBQVcsRUFBRSxhQUFhO0lBQzFCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLFNBQVMsRUFBRSxhQUFhO0lBQ3hCLGFBQWEsRUFBRSwyQkFBMkI7SUFDMUMsYUFBYSxFQUFFLDJEQUEyRDtJQUMxRSxNQUFNLEVBQUUsaUJBQWlCO0lBQ3pCLFFBQVEsRUFBRSxrQkFBa0I7SUFDNUIsTUFBTSxFQUFFLHlCQUF5QjtJQUNqQyxhQUFhLEVBQUUsbUJBQW1CO0lBQ2xDLGVBQWUsRUFBRSxtQkFBbUI7SUFDcEMsV0FBVyxFQUFFLGtCQUFrQjtJQUMvQixRQUFRLEVBQUUsV0FBVztJQUNyQixFQUFFLEVBQUUsSUFBSTtDQUNULENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgVGV4dHMgPSB7XHJcbiAgVHlwZVRvU2VhcmNoOiBcIkRpZ2l0ZSBwYXJhIHBlc3F1aXNhci4uLlwiLFxyXG4gIFVwbG9hZDogXCJFbnZpYXJcIixcclxuICBTY3JvbGxMZWZ0OiBcIlJvbGFyIHBhcmEgYSBlc3F1ZXJkYVwiLFxyXG4gIFNjcm9sbFJpZ2h0OiBcIlJvbGFyIHBhcmEgYSBkaXJlaXRhXCIsXHJcbiAgQWRkSXRlbTogXCJBZGljaW9uYXJcIixcclxuICBSZW1vdmVJdGVtOiBcIlJlbW92ZXJcIixcclxuICBQcmV2aW91c1NlY3Rpb246IFwiU2XDp8OjbyBhbnRlcmlvclwiLFxyXG4gIE5leHRTZWN0aW9uOiBcIlByw7N4aW1hIHNlw6fDo29cIixcclxuICBTaG93OiBcIk1vc3RyYXJcIixcclxuICBSZW1vdmU6IFwiUmVtb3ZlclwiLFxyXG4gIENsb3NlOiBcIkZlY2hhclwiLFxyXG4gIENvbmZpcm06IFwiQ29uZmlybWFyXCIsXHJcbiAgT0s6IFwiT0tcIixcclxuICBDYW5jZWw6IFwiQ2FuY2VsYXJcIixcclxuICBBYm9ydDogXCJBYm9ydGFyXCIsXHJcbiAgUmV0cnk6IFwiVGVudGFyIG5vdmFtZW50ZVwiLFxyXG4gIElnbm9yZTogXCJJZ25vcmFyXCIsXHJcbiAgWWVzOiBcIlNpbVwiLFxyXG4gIE5vOiBcIk7Do29cIixcclxuICBUcnk6IFwiVGVudGFyXCIsXHJcbiAgQ29udGludWU6IFwiQ29udGludWFyXCIsXHJcbiAgTmFtZTogXCJOb21lXCIsXHJcbiAgU2l6ZTogXCJUYW1hbmhvXCIsXHJcbiAgVHlwZTogXCJUaXBvXCIsXHJcbiAgQWN0aW9uczogXCJBw6fDtWVzXCIsXHJcbiAgUmVhZE1vcmU6IFwiTGVpYSBtYWlzXCIsXHJcbiAgUmVhZExlc3M6IFwiTGVpYSBtZW5vc1wiLFxyXG4gIFNlbGVjdEFsbDogXCJTZWxlY2lvbmFyIHR1ZG9cIixcclxuICBDaG9vc2VPbmU6IFwiRXNjb2xoYSB1bVwiLFxyXG4gIFRydWU6IFwiVmVyZGFkZWlyb1wiLFxyXG4gIEZhbHNlOiBcIkZhbHNvXCIsXHJcbiAgQmxhbms6IFwiVmF6aW9cIixcclxuICBOb3RCbGFuazogXCJOw6NvIHZhemlvXCIsXHJcbiAgSW5mb3JtYXRpb246IFwiSW5mb3JtYcOnw7Vlc1wiLFxyXG4gIE9wZW5NZW51OiBcIkFicmlyIG1lbnVcIixcclxuICBDbG9zZU1lbnU6IFwiRmVjaGFyIG1lbnVcIixcclxuICBMb2FkaW5nRmFpbGVkOiBcIkVycm8gYW8gY2FycmVnYXIgb3MgZGFkb3NcIixcclxuICBDb25maXJtRGVsZXRlOiBcIkNvbmZpcm1hIGEgZWxpbWluYcOnw6NvP1xcclxcbkVzdGEgYcOnw6NvIG7Do28gcG9kZSBzZXIgZGVzZmVpdGFcIixcclxuICBNb3ZlVXA6IFwiTW92ZXIgcGFyYSBjaW1hXCIsXHJcbiAgTW92ZURvd246IFwiTW92ZXIgcGFyYSBiYWl4b1wiLFxyXG4gIE5vRGF0YTogXCJOZW5odW0gZGFkbyBwYXJhIGV4aWJpclwiLFxyXG4gIFJlcXVpcmVkRmllbGQ6IFwiQ2FtcG8gb2JyaWdhdMOzcmlvXCIsXHJcbiAgUHJldmlvdXNFbGVtZW50OiBcIkVsZW1lbnRvIGFudGVyaW9yXCIsXHJcbiAgTmV4dEVsZW1lbnQ6IFwiUHLDs3hpbW8gZWxlbWVudG9cIixcclxuICBFbGVtZW50czogXCJFbGVtZW50b3NcIixcclxuICBPZjogXCJkZVwiXHJcbn07XHJcbiJdfQ==
@@ -0,0 +1,347 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { FormArray, FormControl, FormGroup } from '@angular/forms';
3
+ import { FormGroupEx } from '../utils/FormGroupEx';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "./validation.service";
6
+ import * as i2 from "./disable.service";
7
+ import * as i3 from "./compute.service";
8
+ import * as i4 from "./status.service";
9
+ import * as i5 from "./event.service";
10
+ import * as i6 from "./metadata.service";
11
+ export class FormBuilderService {
12
+ validationService;
13
+ disableService;
14
+ computeService;
15
+ statusService;
16
+ eventService;
17
+ metadata;
18
+ constructor(validationService, disableService, computeService, statusService, eventService, metadata) {
19
+ this.validationService = validationService;
20
+ this.disableService = disableService;
21
+ this.computeService = computeService;
22
+ this.statusService = statusService;
23
+ this.eventService = eventService;
24
+ this.metadata = metadata;
25
+ }
26
+ buildForm(formGroup, forms, groupMode = "default") {
27
+ const validationCollection = this.validationService.createCollection();
28
+ const disableCollection = this.disableService.createCollection();
29
+ const eventCollection = this.eventService.createCollection();
30
+ const computeCollection = this.computeService.createCollection();
31
+ forms.forEach((form) => {
32
+ const statusCollection = this.statusService.createCollection();
33
+ const currentGroup = this.applyPath(formGroup, form.path, groupMode);
34
+ if (this.hasPath(form.path)) {
35
+ this.disableService.addToCollection(disableCollection, currentGroup, formGroup, form);
36
+ }
37
+ form.rows?.forEach((row) => {
38
+ this.addControls(currentGroup, row.components, groupMode, disableCollection, computeCollection, validationCollection, statusCollection, eventCollection);
39
+ });
40
+ this.statusService.setupCollection(form, statusCollection);
41
+ });
42
+ this.disableService.setupCollection(disableCollection);
43
+ this.computeService.setupCollection(computeCollection);
44
+ this.validationService.setupCollection(validationCollection);
45
+ this.eventService.setupCollection(eventCollection);
46
+ }
47
+ hasPath(value) {
48
+ return value != null && value.trim().length > 0;
49
+ }
50
+ applyPath(formGroup, path, groupMode) {
51
+ if (!this.hasPath(path)) {
52
+ return formGroup;
53
+ }
54
+ let currentGroup = formGroup;
55
+ this.splitPath(path).forEach((segment) => {
56
+ const existGroup = currentGroup.get(segment);
57
+ if (existGroup instanceof FormGroup) {
58
+ currentGroup = existGroup;
59
+ return;
60
+ }
61
+ else if (existGroup) {
62
+ throw new Error(`Cannot create form group because an element with path ${segment} already exists`);
63
+ }
64
+ else {
65
+ const segmentGroup = this.createFormGroup(groupMode);
66
+ currentGroup.addControl(segment, segmentGroup);
67
+ currentGroup = segmentGroup;
68
+ }
69
+ });
70
+ return currentGroup;
71
+ }
72
+ splitPath(path) {
73
+ if (!path) {
74
+ return [];
75
+ }
76
+ return path
77
+ .split('.')
78
+ .map(segment => segment.trim())
79
+ .filter(segment => segment.length > 0);
80
+ }
81
+ createFormGroup(groupMode) {
82
+ return (groupMode === "default")
83
+ ? new FormGroup({})
84
+ : new FormGroupEx({}, groupMode);
85
+ }
86
+ addControls(formGroup, components, groupMode, disableCollection, computeCollection, validationCollection, statusCollection, eventCollection) {
87
+ let formComponent = this;
88
+ components?.forEach((component) => {
89
+ if (this.isFormComponent(component)) {
90
+ const currentGroup = this.applyPath(formGroup, component.path, groupMode);
91
+ if (currentGroup.contains(component.key)) {
92
+ this.statusService.addToCollection(statusCollection, currentGroup.get(component.key), component);
93
+ return;
94
+ }
95
+ else {
96
+ let defaultValue = this.getDefaultValue(component);
97
+ const options = {
98
+ updateOn: this.getUpdateOn(component) || "change",
99
+ nonNullable: (defaultValue !== null && defaultValue !== undefined)
100
+ };
101
+ const control = new FormControl(defaultValue, options);
102
+ currentGroup.addControl(component.key, control);
103
+ this.validationService.addToCollection(validationCollection, control, currentGroup, component);
104
+ this.statusService.addToCollection(statusCollection, control, component);
105
+ this.disableService.addToCollection(disableCollection, control, formGroup, component);
106
+ this.computeService.addToCollection(computeCollection, control, formGroup, component);
107
+ this.eventService.addToCollection(eventCollection, control, currentGroup, component);
108
+ }
109
+ }
110
+ else if (this.isContainerComponent(component)) {
111
+ const containers = this.getContainers(component);
112
+ containers?.forEach((container) => {
113
+ const currentGroup = this.applyPath(formGroup, container.path, groupMode);
114
+ if (this.hasPath(container.path)) {
115
+ this.disableService.addToCollection(disableCollection, currentGroup, formGroup, container);
116
+ }
117
+ container.rows?.forEach((row) => {
118
+ formComponent.addControls(currentGroup, row.components, groupMode, disableCollection, computeCollection, validationCollection, statusCollection, eventCollection);
119
+ });
120
+ });
121
+ }
122
+ else if (this.isArrayComponent(component)) {
123
+ const itemComponent = this.getArrayItem(component);
124
+ if (itemComponent.key) {
125
+ const currentGroup = this.applyPath(formGroup, itemComponent.path, groupMode);
126
+ const formArray = this.createFormArray(currentGroup, itemComponent, groupMode);
127
+ this.validationService.addToCollection(validationCollection, formArray, currentGroup, component);
128
+ this.statusService.addToCollection(statusCollection, formArray, component);
129
+ this.eventService.addToCollection(eventCollection, formArray, currentGroup, component);
130
+ }
131
+ }
132
+ else if (this.isComponentWithInput(component)) {
133
+ const currentGroup = this.applyPath(formGroup, component.path, groupMode);
134
+ if (currentGroup.contains(component.key)) {
135
+ const control = currentGroup.get(component.key);
136
+ this.validationService.addToCollection(validationCollection, control, currentGroup, component);
137
+ this.statusService.addToCollection(statusCollection, control, component);
138
+ this.disableService.addToCollection(disableCollection, control, currentGroup, component);
139
+ return;
140
+ }
141
+ else {
142
+ const control = new FormControl(null);
143
+ currentGroup.addControl(component.key, control);
144
+ this.validationService.addToCollection(validationCollection, control, currentGroup, component);
145
+ this.statusService.addToCollection(statusCollection, control, component);
146
+ this.disableService.addToCollection(disableCollection, control, currentGroup, component);
147
+ }
148
+ }
149
+ });
150
+ }
151
+ isFormComponent(component) {
152
+ switch (component.type) {
153
+ case "checkbox":
154
+ case "checklist":
155
+ case "datetime":
156
+ case "filepicker":
157
+ case "number":
158
+ case "radio":
159
+ case "select":
160
+ case "taglist":
161
+ case "textarea":
162
+ case "textfield":
163
+ case "range":
164
+ case "expression":
165
+ return true;
166
+ default:
167
+ return false;
168
+ }
169
+ }
170
+ isContainerComponent(component) {
171
+ switch (component.type) {
172
+ case "group":
173
+ case "tab":
174
+ case "accordion":
175
+ return true;
176
+ default:
177
+ return false;
178
+ }
179
+ }
180
+ isComponentWithInput(component) {
181
+ return component.type === "component"
182
+ && component.isInput === true
183
+ && component.key;
184
+ }
185
+ isArrayComponent(component) {
186
+ switch (component.type) {
187
+ case "dynamiclist":
188
+ return true;
189
+ default:
190
+ return false;
191
+ }
192
+ }
193
+ getArrayItem(component) {
194
+ if (component.type === 'dynamiclist') {
195
+ return { key: component.key, path: component.path, rows: component.rows };
196
+ }
197
+ else {
198
+ return { key: null, path: null, rows: [] };
199
+ }
200
+ }
201
+ createFormArray(formGroup, itemComponent, groupMode) {
202
+ const formComponent = this;
203
+ const prepareItem = function (formGroup) {
204
+ const statusCollection = formComponent.statusService.createCollection();
205
+ const validationCollection = formComponent.validationService.createCollection();
206
+ const eventCollection = formComponent.eventService.createCollection();
207
+ const disableCollection = formComponent.disableService.createCollection();
208
+ const computeCollection = formComponent.computeService.createCollection();
209
+ itemComponent.rows?.forEach((row) => {
210
+ formComponent.addControls(formGroup, row.components, groupMode, disableCollection, computeCollection, validationCollection, statusCollection, eventCollection);
211
+ });
212
+ // ignore statusCollection
213
+ formComponent.disableService.setupCollection(disableCollection);
214
+ formComponent.computeService.setupCollection(computeCollection);
215
+ formComponent.validationService.setupCollection(validationCollection);
216
+ formComponent.eventService.setupCollection(eventCollection);
217
+ };
218
+ const createItem = function (addToArray = false) {
219
+ const newGroup = new FormGroup({});
220
+ if (addToArray)
221
+ this.push(newGroup);
222
+ prepareItem(newGroup);
223
+ return newGroup;
224
+ };
225
+ const addItem = function () {
226
+ if (hasFactory(this)) {
227
+ const newGroup = this.createItem(true);
228
+ return newGroup;
229
+ }
230
+ else {
231
+ throw new Error('Cannot add item: the FormArray does not implement FormArrayWithFactory.');
232
+ }
233
+ };
234
+ const overrideArray = (array) => {
235
+ const createItem = array.createItem.bind(array);
236
+ array.createItem = function (addToArray) {
237
+ const formGroup = createItem(addToArray);
238
+ prepareItem(formGroup);
239
+ return formGroup;
240
+ };
241
+ };
242
+ const existing = formGroup.get(itemComponent.key);
243
+ if (existing instanceof FormArray && hasFactory(existing)) {
244
+ overrideArray(existing);
245
+ return existing;
246
+ }
247
+ const formArray = new FormArray([]);
248
+ formGroup.addControl(itemComponent.key, formArray);
249
+ const resizeFormArray = this.resizeFormArray;
250
+ const createNewArray = function () {
251
+ const newArray = new FormArray([]);
252
+ return prepareArray(newArray);
253
+ };
254
+ const prepareArray = (array) => {
255
+ const dynamicArray = array;
256
+ dynamicArray.addItem = addItem;
257
+ dynamicArray.createItem = createItem;
258
+ dynamicArray.resize = resize;
259
+ dynamicArray.createNewArray = createNewArray;
260
+ return dynamicArray;
261
+ };
262
+ const resize = function (size) {
263
+ if (hasFactory(this)) {
264
+ const newArray = resizeFormArray(this, size);
265
+ prepareArray(newArray);
266
+ formGroup.setControl(itemComponent.key, newArray);
267
+ }
268
+ };
269
+ // used externally: addItem, resize
270
+ return prepareArray(formArray);
271
+ }
272
+ resizeFormArray(formArray, size) {
273
+ if (formArray.length < size) {
274
+ const newArray = new FormArray(formArray.controls);
275
+ while (formArray.length < size) {
276
+ formArray.addItem();
277
+ }
278
+ return newArray;
279
+ }
280
+ else if (formArray.length > size) {
281
+ return new FormArray(formArray.controls.slice(0, size));
282
+ }
283
+ else {
284
+ return formArray;
285
+ }
286
+ }
287
+ getContainers(component) {
288
+ if (component.type === 'group') {
289
+ return [{
290
+ path: component.path,
291
+ rows: component.rows,
292
+ disabled: component.disabled
293
+ }];
294
+ }
295
+ else if ((component.type === 'tab' || component.type === 'accordion')
296
+ && Array.isArray(component.panels)) {
297
+ return component.panels.map((panel) => ({
298
+ path: panel.path,
299
+ rows: this.metadata.getFormByName(panel.template)?.rows ?? [],
300
+ disabled: panel.disabled
301
+ }));
302
+ }
303
+ else {
304
+ return [];
305
+ }
306
+ }
307
+ getDefaultValue(component) {
308
+ switch (component.type) {
309
+ case "textarea":
310
+ case "textfield":
311
+ case "radio":
312
+ case "select":
313
+ return component.defaultValue;
314
+ case "number":
315
+ return component.defaultValue;
316
+ case "checkbox":
317
+ return (component.defaultValue ?? false);
318
+ default:
319
+ return null;
320
+ }
321
+ }
322
+ getUpdateOn(component) {
323
+ switch (component.type) {
324
+ case "number":
325
+ case "textarea":
326
+ case "textfield":
327
+ return "blur";
328
+ default:
329
+ return null;
330
+ }
331
+ }
332
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormBuilderService, deps: [{ token: i1.ValidationService }, { token: i2.DisableService }, { token: i3.ComputeService }, { token: i4.StatusService }, { token: i5.EventService }, { token: i6.MetadataService }], target: i0.ɵɵFactoryTarget.Injectable });
333
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormBuilderService });
334
+ }
335
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormBuilderService, decorators: [{
336
+ type: Injectable
337
+ }], ctorParameters: () => [{ type: i1.ValidationService }, { type: i2.DisableService }, { type: i3.ComputeService }, { type: i4.StatusService }, { type: i5.EventService }, { type: i6.MetadataService }] });
338
+ export function hasFactory(array) {
339
+ if (!array)
340
+ return false;
341
+ const current = array;
342
+ return typeof current.createItem === 'function'
343
+ && typeof current.addItem === 'function'
344
+ && typeof current.resize === 'function'
345
+ && typeof current.createNewArray === 'function';
346
+ }
347
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvc2VydmljZXMvYnVpbGRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFtQixTQUFTLEVBQUUsV0FBVyxFQUFzQixTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQU94RyxPQUFPLEVBQUUsV0FBVyxFQUFpQixNQUFNLHNCQUFzQixDQUFDOzs7Ozs7OztBQUdsRSxNQUFNLE9BQU8sa0JBQWtCO0lBR25CO0lBQ0U7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQU5aLFlBQ1UsaUJBQW9DLEVBQ2xDLGNBQThCLEVBQzlCLGNBQThCLEVBQzlCLGFBQTRCLEVBQzVCLFlBQTBCLEVBQzFCLFFBQXlCO1FBTDNCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDbEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixhQUFRLEdBQVIsUUFBUSxDQUFpQjtJQUNyQyxDQUFDO0lBRUQsU0FBUyxDQUFDLFNBQW9CLEVBQUUsS0FBaUIsRUFBRSxZQUEyQixTQUFTO1FBQ3JGLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDdkUsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDakUsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzdELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FB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QUFDO1lBQ2hCLEtBQUssV0FBVztnQkFDZCxPQUFPLE1BQU0sQ0FBQztZQUNoQjtnQkFDRSxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO0lBQ0gsQ0FBQzt3R0FuWFUsa0JBQWtCOzRHQUFsQixrQkFBa0I7OzRGQUFsQixrQkFBa0I7a0JBRDlCLFVBQVU7O0FBdVhYLE1BQU0sVUFBVSxVQUFVLENBQUMsS0FBZ0I7SUFDekMsSUFBSSxDQUFDLEtBQUs7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUN6QixNQUFNLE9BQU8sR0FBRyxLQUFZLENBQUM7SUFDN0IsT0FBTyxPQUFPLE9BQU8sQ0FBQyxVQUFVLEtBQUssVUFBVTtXQUMxQyxPQUFPLE9BQU8sQ0FBQyxPQUFPLEtBQUssVUFBVTtXQUNyQyxPQUFPLE9BQU8sQ0FBQyxNQUFNLEtBQUssVUFBVTtXQUNwQyxPQUFPLE9BQU8sQ0FBQyxjQUFjLEtBQUssVUFBVSxDQUFBO0FBQ25ELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUNvbnRyb2xPcHRpb25zLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFZhbGlkYXRpb25Db2xsZWN0aW9uLCBWYWxpZGF0aW9uU2VydmljZSB9IGZyb20gJy4vdmFsaWRhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGlzYWJsZUNvbGxlY3Rpb24sIERpc2FibGVTZXJ2aWNlIH0gZnJvbSAnLi9kaXNhYmxlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21wdXRlQ29sbGVjdGlvbiwgQ29tcHV0ZVNlcnZpY2UgfSBmcm9tICcuL2NvbXB1dGUuc2VydmljZSc7XHJcbmltcG9ydCB7IFN0YXR1c0NvbGxlY3Rpb24sIFN0YXR1c1NlcnZpY2UgfSBmcm9tICcuL3N0YXR1cy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRXZlbnRDb2xsZWN0aW9uLCBFdmVudFNlcnZpY2UgfSBmcm9tICcuL2V2ZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNZXRhZGF0YVNlcnZpY2UgfSBmcm9tICcuL21ldGFkYXRhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXBFeCwgRm9ybUdyb3VwTW9kZSB9IGZyb20gJy4uL3V0aWxzL0Zvcm1Hcm91cEV4JztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEZvcm1CdWlsZGVyU2VydmljZSAge1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgdmFsaWRhdGlvblNlcnZpY2U6IFZhbGlkYXRpb25TZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgZGlzYWJsZVNlcnZpY2U6IERpc2FibGVTZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgY29tcHV0ZVNlcnZpY2U6IENvbXB1dGVTZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgc3RhdHVzU2VydmljZTogU3RhdHVzU2VydmljZVxyXG4gICAgLCBwcml2YXRlIGV2ZW50U2VydmljZTogRXZlbnRTZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgbWV0YWRhdGE6IE1ldGFkYXRhU2VydmljZSkge1xyXG4gIH1cclxuXHJcbiAgYnVpbGRGb3JtKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBmb3JtczogQXJyYXk8YW55PiwgZ3JvdXBNb2RlOiBGb3JtR3JvdXBNb2RlID0gXCJkZWZhdWx0XCIpIHtcclxuICAgIGNvbnN0IHZhbGlkYXRpb25Db2xsZWN0aW9uID0gdGhpcy52YWxpZGF0aW9uU2VydmljZS5jcmVhdGVDb2xsZWN0aW9uKCk7XHJcbiAgICBjb25zdCBkaXNhYmxlQ29sbGVjdGlvbiA9IHRoaXMuZGlzYWJsZVNlcnZpY2UuY3JlYXRlQ29sbGVjdGlvbigpO1xyXG4gICAgY29uc3QgZXZlbnRDb2xsZWN0aW9uID0gdGhpcy5ldmVudFNlcnZpY2UuY3JlYXRlQ29sbGVjdGlvbigpO1xyXG4gICAgY29uc3QgY29tcHV0ZUNvbGxlY3Rpb24gPSB0aGlzLmNvbXB1dGVTZXJ2aWNlLmNyZWF0ZUNvbGxlY3Rpb24oKTtcclxuICAgIGZvcm1zLmZvckVhY2goKGZvcm06IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBzdGF0dXNDb2xsZWN0aW9uID0gdGhpcy5zdGF0dXNTZXJ2aWNlLmNyZWF0ZUNvbGxlY3Rpb24oKTtcclxuICAgICAgY29uc3QgY3VycmVudEdyb3VwID0gdGhpcy5hcHBseVBhdGgoZm9ybUdyb3VwLCBmb3JtLnBhdGgsIGdyb3VwTW9kZSk7XHJcbiAgICAgIGlmICh0aGlzLmhhc1BhdGgoZm9ybS5wYXRoKSkge1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZVNlcnZpY2UuYWRkVG9Db2xsZWN0aW9uKGRpc2FibGVDb2xsZWN0aW9uLCBjdXJyZW50R3JvdXAsIGZvcm1Hcm91cCwgZm9ybSk7XHJcbiAgICAgIH1cclxuICAgICAgZm9ybS5yb3dzPy5mb3JFYWNoKChyb3c6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuYWRkQ29udHJvbHMoY3VycmVudEdyb3VwLCByb3cuY29tcG9uZW50cywgZ3JvdXBNb2RlXHJcbiAgICAgICAgICAsIGRpc2FibGVDb2xsZWN0aW9uXHJcbiAgICAgICAgICAsIGNvbXB1dGVDb2xsZWN0aW9uXHJcbiAgICAgICAgICAsIHZhbGlkYXRpb25Db2xsZWN0aW9uXHJcbiAgICAgICAgICAsIHN0YXR1c0NvbGxlY3Rpb25cclxuICAgICAgICAgICwgZXZlbnRDb2xsZWN0aW9uKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuc3RhdHVzU2VydmljZS5zZXR1cENvbGxlY3Rpb24oZm9ybSwgc3RhdHVzQ29sbGVjdGlvbik7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGlzYWJsZVNlcnZpY2Uuc2V0dXBDb2xsZWN0aW9uKGRpc2FibGVDb2xsZWN0aW9uKTtcclxuICAgIHRoaXMuY29tcHV0ZVNlcnZpY2Uuc2V0dXBDb2xsZWN0aW9uKGNvbXB1dGVDb2xsZWN0aW9uKTtcclxuICAgIHRoaXMudmFsaWRhdGlvblNlcnZpY2Uuc2V0dXBDb2xsZWN0aW9uKHZhbGlkYXRpb25Db2xsZWN0aW9uKTtcclxuICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnNldHVwQ29sbGVjdGlvbihldmVudENvbGxlY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYXNQYXRoKHZhbHVlOiBzdHJpbmcgfCBudWxsKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiB2YWx1ZS50cmltKCkubGVuZ3RoID4gMDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwbHlQYXRoKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBwYXRoOiBzdHJpbmcsIGdyb3VwTW9kZTogRm9ybUdyb3VwTW9kZSkge1xyXG4gICAgaWYgKCF0aGlzLmhhc1BhdGgocGF0aCkpIHtcclxuICAgICAgcmV0dXJuIGZvcm1Hcm91cDtcclxuICAgIH1cclxuICAgIGxldCBjdXJyZW50R3JvdXA6IEZvcm1Hcm91cCA9IGZvcm1Hcm91cDtcclxuICAgIHRoaXMuc3BsaXRQYXRoKHBhdGgpLmZvckVhY2goKHNlZ21lbnQpID0+IHtcclxuICAgICAgY29uc3QgZXhpc3RHcm91cCA9IGN1cnJlbnRHcm91cC5nZXQoc2VnbWVudCk7XHJcbiAgICAgIGlmIChleGlzdEdyb3VwIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XHJcbiAgICAgICAgY3VycmVudEdyb3VwID0gZXhpc3RHcm91cDtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoZXhpc3RHcm91cCkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGNyZWF0ZSBmb3JtIGdyb3VwIGJlY2F1c2UgYW4gZWxlbWVudCB3aXRoIHBhdGggJHtzZWdtZW50fSBhbHJlYWR5IGV4aXN0c2ApO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IHNlZ21lbnRHcm91cCA9IHRoaXMuY3JlYXRlRm9ybUdyb3VwKGdyb3VwTW9kZSk7XHJcbiAgICAgICAgY3VycmVudEdyb3VwLmFkZENvbnRyb2woc2VnbWVudCwgc2VnbWVudEdyb3VwKTtcclxuICAgICAgICBjdXJyZW50R3JvdXAgPSBzZWdtZW50R3JvdXA7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGN1cnJlbnRHcm91cDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3BsaXRQYXRoKHBhdGg6IHN0cmluZyk6IHN0cmluZ1tdIHtcclxuICAgIGlmICghcGF0aCkge1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGF0aFxyXG4gICAgICAuc3BsaXQoJy4nKVxyXG4gICAgICAubWFwKHNlZ21lbnQgPT4gc2VnbWVudC50cmltKCkpXHJcbiAgICAgIC5maWx0ZXIoc2VnbWVudCA9PiBzZWdtZW50Lmxlbmd0aCA+IDApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVGb3JtR3JvdXAoZ3JvdXBNb2RlOiBGb3JtR3JvdXBNb2RlKTogRm9ybUdyb3VwIHtcclxuICAgIHJldHVybiAoZ3JvdXBNb2RlID09PSBcImRlZmF1bHRcIilcclxuICAgICAgPyBuZXcgRm9ybUdyb3VwKHt9KVxyXG4gICAgICA6IG5ldyBGb3JtR3JvdXBFeCh7fSwgZ3JvdXBNb2RlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkQ29udHJvbHMoZm9ybUdyb3VwOiBGb3JtR3JvdXBcclxuICAgICwgY29tcG9uZW50czogQXJyYXk8YW55PlxyXG4gICAgLCBncm91cE1vZGU6IEZvcm1Hcm91cE1vZGVcclxuICAgICwgZGlzYWJsZUNvbGxlY3Rpb246IERpc2FibGVDb2xsZWN0aW9uXHJcbiAgICAsIGNvbXB1dGVDb2xsZWN0aW9uOiBDb21wdXRlQ29sbGVjdGlvblxyXG4gICAgLCB2YWxpZGF0aW9uQ29sbGVjdGlvbjogVmFsaWRhdGlvbkNvbGxlY3Rpb25cclxuICAgICwgc3RhdHVzQ29sbGVjdGlvbjogU3RhdHVzQ29sbGVjdGlvblxyXG4gICAgLCBldmVudENvbGxlY3Rpb246IEV2ZW50Q29sbGVjdGlvbikge1xyXG4gICAgbGV0IGZvcm1Db21wb25lbnQgPSB0aGlzO1xyXG5cclxuICAgIGNvbXBvbmVudHM/LmZvckVhY2goKGNvbXBvbmVudDogYW55KSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmlzRm9ybUNvbXBvbmVudChjb21wb25lbnQpKSB7XHJcbiAgICAgICAgY29uc3QgY3VycmVudEdyb3VwID0gdGhpcy5hcHBseVBhdGgoZm9ybUdyb3VwLCBjb21wb25lbnQucGF0aCwgZ3JvdXBNb2RlKTtcclxuICAgICAgICBpZiAoY3VycmVudEdyb3VwLmNvbnRhaW5zKGNvbXBvbmVudC5rZXkpKSB7XHJcbiAgICAgICAgICB0aGlzLnN0YXR1c1NlcnZpY2UuYWRkVG9Db2xsZWN0aW9uKHN0YXR1c0NvbGxlY3Rpb24sIGN1cnJlbnRHcm91cC5nZXQoY29tcG9uZW50LmtleSkgYXMgQWJzdHJhY3RDb250cm9sLCBjb21wb25lbnQpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGxldCBkZWZhdWx0VmFsdWUgPSB0aGlzLmdldERlZmF1bHRWYWx1ZShjb21wb25lbnQpO1xyXG4gICAgICAgICAgY29uc3Qgb3B0aW9uczogRm9ybUNvbnRyb2xPcHRpb25zID0ge1xyXG4gICAgICAgICAgICB1cGRhdGVPbjogdGhpcy5nZXRVcGRhdGVPbihjb21wb25lbnQpIHx8IFwiY2hhbmdlXCIsXHJcbiAgICAgICAgICAgIG5vbk51bGxhYmxlOiAoZGVmYXVsdFZhbHVlICE9PSBudWxsICYmIGRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woZGVmYXVsdFZhbHVlLCBvcHRpb25zKTtcclxuICAgICAgICAgIGN1cnJlbnRHcm91cC5hZGRDb250cm9sKGNvbXBvbmVudC5rZXksIGNvbnRyb2wpO1xyXG4gICAgICAgICAgdGhpcy52YWxpZGF0aW9uU2VydmljZS5hZGRUb0NvbGxlY3Rpb24odmFsaWRhdGlvbkNvbGxlY3Rpb24sIGNvbnRyb2wsIGN1cnJlbnRHcm91cCwgY29tcG9uZW50KTtcclxuICAgICAgICAgIHRoaXMuc3RhdHVzU2VydmljZS5hZGRUb0NvbGxlY3Rpb24oc3RhdHVzQ29sbGVjdGlvbiwgY29udHJvbCwgY29tcG9uZW50KTtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZVNlcnZpY2UuYWRkVG9Db2xsZWN0aW9uKGRpc2FibGVDb2xsZWN0aW9uLCBjb250cm9sLCBmb3JtR3JvdXAsIGNvbXBvbmVudCk7XHJcbiAgICAgICAgICB0aGlzLmNvbXB1dGVTZXJ2aWNlLmFkZFRvQ29sbGVjdGlvbihjb21wdXRlQ29sbGVjdGlvbiwgY29udHJvbCwgZm9ybUdyb3VwLCBjb21wb25lbnQpO1xyXG4gICAgICAgICAgdGhpcy5ldmVudFNlcnZpY2UuYWRkVG9Db2xsZWN0aW9uKGV2ZW50Q29sbGVjdGlvbiwgY29udHJvbCwgY3VycmVudEdyb3VwLCBjb21wb25lbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLmlzQ29udGFpbmVyQ29tcG9uZW50KGNvbXBvbmVudCkpIHtcclxuICAgICAgICBjb25zdCBjb250YWluZXJzID0gdGhpcy5nZXRDb250YWluZXJzKGNvbXBvbmVudCk7XHJcbiAgICAgICAgY29udGFpbmVycz8uZm9yRWFjaCgoY29udGFpbmVyKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBjdXJyZW50R3JvdXAgPSB0aGlzLmFwcGx5UGF0aChmb3JtR3JvdXAsIGNvbnRhaW5lci5wYXRoLCBncm91cE1vZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuaGFzUGF0aChjb250YWluZXIucGF0aCkpIHtcclxuICAgICAgICAgICAgdGhpcy5kaXNhYmxlU2VydmljZS5hZGRUb0NvbGxlY3Rpb24oZGlzYWJsZUNvbGxlY3Rpb24sIGN1cnJlbnRHcm91cCwgZm9ybUdyb3VwLCBjb250YWluZXIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29udGFpbmVyLnJvd3M/LmZvckVhY2goKHJvdzogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGZvcm1Db21wb25lbnQuYWRkQ29udHJvbHMoY3VycmVudEdyb3VwLCByb3cuY29tcG9uZW50cywgZ3JvdXBNb2RlXHJcbiAgICAgICAgICAgICAgLCBkaXNhYmxlQ29sbGVjdGlvblxyXG4gICAgICAgICAgICAgICwgY29tcHV0ZUNvbGxlY3Rpb25cclxuICAgICAgICAgICAgICAsIHZhbGlkYXRpb25Db2xsZWN0aW9uXHJcbiAgICAgICAgICAgICAgLCBzdGF0dXNDb2xsZWN0aW9uXHJcbiAgICAgICAgICAgICAgLCBldmVudENvbGxlY3Rpb24pO1xyXG4gICAgICAgICAgfSk7ICAgICAgICAgIFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMuaXNBcnJheUNvbXBvbmVudChjb21wb25lbnQpKSB7XHJcbiAgICAgICAgY29uc3QgaXRlbUNvbXBvbmVudCA9IHRoaXMuZ2V0QXJyYXlJdGVtKGNvbXBvbmVudCk7XHJcbiAgICAgICAgaWYgKGl0ZW1Db21wb25lbnQua2V5KSB7XHJcbiAgICAgICAgICBjb25zdCBjdXJyZW50R3JvdXAgPSB0aGlzLmFwcGx5UGF0aChmb3JtR3JvdXAsIGl0ZW1Db21wb25lbnQucGF0aCwgZ3JvdXBNb2RlKTtcclxuICAgICAgICAgIGNvbnN0IGZvcm1BcnJheSA9IHRoaXMuY3JlYXRlRm9ybUFycmF5KGN1cnJlbnRHcm91cCwgaXRlbUNvbXBvbmVudCwgZ3JvdXBNb2RlKTtcclxuICAgICAgICAgIHRoaXMudmFsaWRhdGlvblNlcnZpY2UuYWRkVG9Db2xsZWN0aW9uKHZhbGlkYXRpb25Db2xsZWN0aW9uLCBmb3JtQXJyYXksIGN1cnJlbnRHcm91cCwgY29tcG9uZW50KTtcclxuICAgICAgICAgIHRoaXMuc3RhdHVzU2VydmljZS5hZGRUb0NvbGxlY3Rpb24oc3RhdHVzQ29sbGVjdGlvbiwgZm9ybUFycmF5LCBjb21wb25lbnQpO1xyXG4gICAgICAgICAgdGhpcy5ldmVudFNlcnZpY2UuYWRkVG9Db2xsZWN0aW9uKGV2ZW50Q29sbGVjdGlvbiwgZm9ybUFycmF5LCBjdXJyZW50R3JvdXAsIGNvbXBvbmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMuaXNDb21wb25lbnRXaXRoSW5wdXQoY29tcG9uZW50KSkge1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRHcm91cCA9IHRoaXMuYXBwbHlQYXRoKGZvcm1Hcm91cCwgY29tcG9uZW50LnBhdGgsIGdyb3VwTW9kZSk7XHJcbiAgICAgICAgaWYgKGN1cnJlbnRHcm91cC5jb250YWlucyhjb21wb25lbnQua2V5KSkge1xyXG4gICAgICAgICAgY29uc3QgY29udHJvbCA9IGN1cnJlbnRHcm91cC5nZXQoY29tcG9uZW50LmtleSkgYXMgQWJzdHJhY3RDb250cm9sO1xyXG4gICAgICAgICAgdGhpcy52YWxpZGF0aW9uU2VydmljZS5hZGRUb0NvbGxlY3Rpb24odmFsaWRhdGlvbkNvbGxlY3Rpb24sIGNvbnRyb2wsIGN1cnJlbnRHcm91cCwgY29tcG9uZW50KTtcclxuICAgICAgICAgIHRoaXMuc3RhdHVzU2VydmljZS5hZGRUb0NvbGxlY3Rpb24oc3RhdHVzQ29sbGVjdGlvbiwgY29udHJvbCwgY29tcG9uZW50KTtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZVNlcnZpY2UuYWRkVG9Db2xsZWN0aW9uKGRpc2FibGVDb2xsZWN0aW9uLCBjb250cm9sLCBjdXJyZW50R3JvdXAsIGNvbXBvbmVudCk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgY29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChudWxsKTtcclxuICAgICAgICAgIGN1cnJlbnRHcm91cC5hZGRDb250cm9sKGNvbXBvbmVudC5rZXksIGNvbnRyb2wpO1xyXG4gICAgICAgICAgdGhpcy52YWxpZGF0aW9uU2VydmljZS5hZGRUb0NvbGxlY3Rpb24odmFsaWRhdGlvbkNvbGxlY3Rpb24sIGNvbnRyb2wsIGN1cnJlbnRHcm91cCwgY29tcG9uZW50KTtcclxuICAgICAgICAgIHRoaXMuc3RhdHVzU2VydmljZS5hZGRUb0NvbGxlY3Rpb24oc3RhdHVzQ29sbGVjdGlvbiwgY29udHJvbCwgY29tcG9uZW50KTtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZVNlcnZpY2UuYWRkVG9Db2xsZWN0aW9uKGRpc2FibGVDb2xsZWN0aW9uLCBjb250cm9sLCBjdXJyZW50R3JvdXAsIGNvbXBvbmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNGb3JtQ29tcG9uZW50KGNvbXBvbmVudDogYW55KTogYm9vbGVhbiB7XHJcbiAgICBzd2l0Y2ggKGNvbXBvbmVudC50eXBlKSB7XHJcbiAgICAgIGNhc2UgXCJjaGVja2JveFwiOlxyXG4gICAgICBjYXNlIFwiY2hlY2tsaXN0XCI6XHJcbiAgICAgIGNhc2UgXCJkYXRldGltZVwiOlxyXG4gICAgICBjYXNlIFwiZmlsZXBpY2tlclwiOlxyXG4gICAgICBjYXNlIFwibnVtYmVyXCI6XHJcbiAgICAgIGNhc2UgXCJyYWRpb1wiOlxyXG4gICAgICBjYXNlIFwic2VsZWN0XCI6XHJcbiAgICAgIGNhc2UgXCJ0YWdsaXN0XCI6XHJcbiAgICAgIGNhc2UgXCJ0ZXh0YXJlYVwiOlxyXG4gICAgICBjYXNlIFwidGV4dGZpZWxkXCI6XHJcbiAgICAgIGNhc2UgXCJyYW5nZVwiOlxyXG4gICAgICBjYXNlIFwiZXhwcmVzc2lvblwiOlxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNDb250YWluZXJDb21wb25lbnQoY29tcG9uZW50OiBhbnkpOiBib29sZWFuIHtcclxuICAgIHN3aXRjaCAoY29tcG9uZW50LnR5cGUpIHtcclxuICAgICAgY2FzZSBcImdyb3VwXCI6XHJcbiAgICAgIGNhc2UgXCJ0YWJcIjpcclxuICAgICAgY2FzZSBcImFjY29yZGlvblwiOlxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNDb21wb25lbnRXaXRoSW5wdXQoY29tcG9uZW50OiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBjb21wb25lbnQudHlwZSA9PT0gXCJjb21wb25lbnRcIlxyXG4gICAgICAmJiBjb21wb25lbnQuaXNJbnB1dCA9PT0gdHJ1ZVxyXG4gICAgICAmJiBjb21wb25lbnQua2V5O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0FycmF5Q29tcG9uZW50KGNvbXBvbmVudDogYW55KTogYm9vbGVhbiB7XHJcbiAgICBzd2l0Y2ggKGNvbXBvbmVudC50eXBlKSB7XHJcbiAgICAgIGNhc2UgXCJkeW5hbWljbGlzdFwiOlxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0QXJyYXlJdGVtKGNvbXBvbmVudDogYW55KTogeyBrZXk6IGFueTsgcGF0aDogYW55OyByb3dzOiBhbnkgfSB7XHJcbiAgICBpZiAoY29tcG9uZW50LnR5cGUgPT09ICdkeW5hbWljbGlzdCcpIHtcclxuICAgICAgcmV0dXJuIHsga2V5OiBjb21wb25lbnQua2V5LCBwYXRoOiBjb21wb25lbnQucGF0aCwgcm93czogY29tcG9uZW50LnJvd3MgfTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4geyBrZXk6IG51bGwsIHBhdGg6IG51bGwsIHJvd3M6IFtdIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZUZvcm1BcnJheShmb3JtR3JvdXA6IEZvcm1Hcm91cFxyXG4gICAgLCBpdGVtQ29tcG9uZW50OiBhbnlcclxuICAgICwgZ3JvdXBNb2RlOiBGb3JtR3JvdXBNb2RlKTogRm9ybUFycmF5V2l0aEZhY3Rvcnkge1xyXG4gICAgY29uc3QgZm9ybUNvbXBvbmVudCA9IHRoaXM7XHJcblxyXG4gICAgY29uc3QgcHJlcGFyZUl0ZW0gPSBmdW5jdGlvbiAoZm9ybUdyb3VwOiBGb3JtR3JvdXApOiB2b2lkIHtcclxuICAgICAgY29uc3Qgc3RhdHVzQ29sbGVjdGlvbiA9IGZvcm1Db21wb25lbnQuc3RhdHVzU2VydmljZS5jcmVhdGVDb2xsZWN0aW9uKCk7XHJcbiAgICAgIGNvbnN0IHZhbGlkYXRpb25Db2xsZWN0aW9uID0gZm9ybUNvbXBvbmVudC52YWxpZGF0aW9uU2VydmljZS5jcmVhdGVDb2xsZWN0aW9uKCk7XHJcbiAgICAgIGNvbnN0IGV2ZW50Q29sbGVjdGlvbiA9IGZvcm1Db21wb25lbnQuZXZlbnRTZXJ2aWNlLmNyZWF0ZUNvbGxlY3Rpb24oKTtcclxuICAgICAgY29uc3QgZGlzYWJsZUNvbGxlY3Rpb24gPSBmb3JtQ29tcG9uZW50LmRpc2FibGVTZXJ2aWNlLmNyZWF0ZUNvbGxlY3Rpb24oKTtcclxuICAgICAgY29uc3QgY29tcHV0ZUNvbGxlY3Rpb24gPSBmb3JtQ29tcG9uZW50LmNvbXB1dGVTZXJ2aWNlLmNyZWF0ZUNvbGxlY3Rpb24oKTtcclxuICAgICAgaXRlbUNvbXBvbmVudC5yb3dzPy5mb3JFYWNoKChyb3c6IGFueSkgPT4ge1xyXG4gICAgICAgIGZvcm1Db21wb25lbnQuYWRkQ29udHJvbHMoZm9ybUdyb3VwLCByb3cuY29tcG9uZW50cywgZ3JvdXBNb2RlXHJcbiAgICAgICAgICAsIGRpc2FibGVDb2xsZWN0aW9uXHJcbiAgICAgICAgICAsIGNvbXB1dGVDb2xsZWN0aW9uXHJcbiAgICAgICAgICAsIHZhbGlkYXRpb25Db2xsZWN0aW9uXHJcbiAgICAgICAgICAsIHN0YXR1c0NvbGxlY3Rpb25cclxuICAgICAgICAgICwgZXZlbnRDb2xsZWN0aW9uKTtcclxuICAgICAgfSk7XHJcbiAgICAgIC8vIGlnbm9yZSBzdGF0dXNDb2xsZWN0aW9uXHJcbiAgICAgIGZvcm1Db21wb25lbnQuZGlzYWJsZVNlcnZpY2Uuc2V0dXBDb2xsZWN0aW9uKGRpc2FibGVDb2xsZWN0aW9uKTtcclxuICAgICAgZm9ybUNvbXBvbmVudC5jb21wdXRlU2VydmljZS5zZXR1cENvbGxlY3Rpb24oY29tcHV0ZUNvbGxlY3Rpb24pO1xyXG4gICAgICBmb3JtQ29tcG9uZW50LnZhbGlkYXRpb25TZXJ2aWNlLnNldHVwQ29sbGVjdGlvbih2YWxpZGF0aW9uQ29sbGVjdGlvbik7XHJcbiAgICAgIGZvcm1Db21wb25lbnQuZXZlbnRTZXJ2aWNlLnNldHVwQ29sbGVjdGlvbihldmVudENvbGxlY3Rpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNyZWF0ZUl0ZW0gPSBmdW5jdGlvbiAodGhpczogRm9ybUFycmF5LCBhZGRUb0FycmF5OiBib29sZWFuID0gZmFsc2UpOiBGb3JtR3JvdXAge1xyXG4gICAgICBjb25zdCBuZXdHcm91cCA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gICAgICBpZiAoYWRkVG9BcnJheSkgdGhpcy5wdXNoKG5ld0dyb3VwKTtcclxuICAgICAgcHJlcGFyZUl0ZW0obmV3R3JvdXApO1xyXG4gICAgICByZXR1cm4gbmV3R3JvdXA7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGFkZEl0ZW0gPSBmdW5jdGlvbiAodGhpczogRm9ybUFycmF5KTogRm9ybUdyb3VwIHtcclxuICAgICAgaWYgKGhhc0ZhY3RvcnkodGhpcykpIHtcclxuICAgICAgICBjb25zdCBuZXdHcm91cCA9IHRoaXMuY3JlYXRlSXRlbSh0cnVlKTtcclxuICAgICAgICByZXR1cm4gbmV3R3JvdXA7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgICAgJ0Nhbm5vdCBhZGQgaXRlbTogdGhlIEZvcm1BcnJheSBkb2VzIG5vdCBpbXBsZW1lbnQgRm9ybUFycmF5V2l0aEZhY3RvcnkuJ1xyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgY29uc3Qgb3ZlcnJpZGVBcnJheSA9IChhcnJheTogRm9ybUFycmF5V2l0aEZhY3RvcnkpID0+IHtcclxuICAgICAgY29uc3QgY3JlYXRlSXRlbSA9IGFycmF5LmNyZWF0ZUl0ZW0uYmluZChhcnJheSk7XHJcbiAgICAgIGFycmF5LmNyZWF0ZUl0ZW0gPSBmdW5jdGlvbiAodGhpczogRm9ybUFycmF5LCBhZGRUb0FycmF5OiBib29sZWFuKTogRm9ybUdyb3VwIHtcclxuICAgICAgICBjb25zdCBmb3JtR3JvdXAgPSBjcmVhdGVJdGVtKGFkZFRvQXJyYXkpO1xyXG4gICAgICAgIHByZXBhcmVJdGVtKGZvcm1Hcm91cCk7XHJcbiAgICAgICAgcmV0dXJuIGZvcm1Hcm91cDtcclxuICAgICAgfTsgICAgICAgIFxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGV4aXN0aW5nID0gZm9ybUdyb3VwLmdldChpdGVtQ29tcG9uZW50LmtleSk7XHJcblxyXG4gICAgaWYgKGV4aXN0aW5nIGluc3RhbmNlb2YgRm9ybUFycmF5ICYmIGhhc0ZhY3RvcnkoZXhpc3RpbmcpKSB7XHJcbiAgICAgIG92ZXJyaWRlQXJyYXkoZXhpc3RpbmcpO1xyXG4gICAgICByZXR1cm4gZXhpc3Rpbmc7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZm9ybUFycmF5ID0gbmV3IEZvcm1BcnJheTxGb3JtR3JvdXA+KFtdKTtcclxuXHJcbiAgICBmb3JtR3JvdXAuYWRkQ29udHJvbChpdGVtQ29tcG9uZW50LmtleSwgZm9ybUFycmF5KTtcclxuXHJcbiAgICBjb25zdCByZXNpemVGb3JtQXJyYXkgPSB0aGlzLnJlc2l6ZUZvcm1BcnJheTtcclxuXHJcbiAgICBjb25zdCBjcmVhdGVOZXdBcnJheSA9IGZ1bmN0aW9uICgpIDogRm9ybUFycmF5V2l0aEZhY3Rvcnkge1xyXG4gICAgICBjb25zdCBuZXdBcnJheSA9IG5ldyBGb3JtQXJyYXk8Rm9ybUdyb3VwPihbXSk7XHJcbiAgICAgIHJldHVybiBwcmVwYXJlQXJyYXkobmV3QXJyYXkpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHByZXBhcmVBcnJheSA9IChhcnJheTogRm9ybUFycmF5KTogRm9ybUFycmF5V2l0aEZhY3RvcnkgPT4ge1xyXG4gICAgICBjb25zdCBkeW5hbWljQXJyYXkgPSBhcnJheSBhcyBGb3JtQXJyYXlXaXRoRmFjdG9yeTtcclxuICAgICAgZHluYW1pY0FycmF5LmFkZEl0ZW0gPSBhZGRJdGVtO1xyXG4gICAgICBkeW5hbWljQXJyYXkuY3JlYXRlSXRlbSA9IGNyZWF0ZUl0ZW07XHJcbiAgICAgIGR5bmFtaWNBcnJheS5yZXNpemUgPSByZXNpemU7XHJcbiAgICAgIGR5bmFtaWNBcnJheS5jcmVhdGVOZXdBcnJheSA9IGNyZWF0ZU5ld0FycmF5O1xyXG4gICAgICByZXR1cm4gZHluYW1pY0FycmF5O1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHJlc2l6ZSA9IGZ1bmN0aW9uICh0aGlzOiBGb3JtQXJyYXksIHNpemU6IG51bWJlcikge1xyXG4gICAgICBpZiAoaGFzRmFjdG9yeSh0aGlzKSkge1xyXG4gICAgICAgIGNvbnN0IG5ld0FycmF5ID0gcmVzaXplRm9ybUFycmF5KHRoaXMsIHNpemUpO1xyXG4gICAgICAgIHByZXBhcmVBcnJheShuZXdBcnJheSk7XHJcbiAgICAgICAgZm9ybUdyb3VwLnNldENvbnRyb2woaXRlbUNvbXBvbmVudC5rZXksIG5ld0FycmF5KTtcclxuICAgICAgfSAgICAgIFxyXG4gICAgfTtcclxuXHJcbiAgICAvLyB1c2VkIGV4dGVybmFsbHk6IGFkZEl0ZW0sIHJlc2l6ZVxyXG5cclxuICAgIHJldHVybiBwcmVwYXJlQXJyYXkoZm9ybUFycmF5KTsgICAgXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc2l6ZUZvcm1BcnJheShmb3JtQXJyYXk6IEZvcm1BcnJheVdpdGhGYWN0b3J5LCBzaXplOiBudW1iZXIpOiBGb3JtQXJyYXkge1xyXG4gICAgaWYgKGZvcm1BcnJheS5sZW5ndGggPCBzaXplKSB7XHJcbiAgICAgIGNvbnN0IG5ld0FycmF5ID0gbmV3IEZvcm1BcnJheShmb3JtQXJyYXkuY29udHJvbHMpO1xyXG4gICAgICB3aGlsZSAoZm9ybUFycmF5Lmxlbmd0aCA8IHNpemUpIHtcclxuICAgICAgICBmb3JtQXJyYXkuYWRkSXRlbSgpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBuZXdBcnJheTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGZvcm1BcnJheS5sZW5ndGggPiBzaXplKSB7XHJcbiAgICAgIHJldHVybiBuZXcgRm9ybUFycmF5KGZvcm1BcnJheS5jb250cm9scy5zbGljZSgwLCBzaXplKSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIGZvcm1BcnJheTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Q29udGFpbmVycyhjb21wb25lbnQ6IGFueSk6IHsgcGF0aDogYW55OyByb3dzOiBhbnksIGRpc2FibGVkOiBhbnkgfVtdIHtcclxuICAgIGlmIChjb21wb25lbnQudHlwZSA9PT0gJ2dyb3VwJykge1xyXG4gICAgICByZXR1cm4gW3tcclxuICAgICAgICBwYXRoOiBjb21wb25lbnQucGF0aCxcclxuICAgICAgICByb3dzOiBjb21wb25lbnQucm93cyxcclxuICAgICAgICBkaXNhYmxlZDogY29tcG9uZW50LmRpc2FibGVkXHJcbiAgICAgIH1dO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoKGNvbXBvbmVudC50eXBlID09PSAndGFiJyB8fCBjb21wb25lbnQudHlwZSA9PT0gJ2FjY29yZGlvbicpXHJcbiAgICAgICYmIEFycmF5LmlzQXJyYXkoY29tcG9uZW50LnBhbmVscykpIHtcclxuICAgICAgcmV0dXJuIGNvbXBvbmVudC5wYW5lbHMubWFwKChwYW5lbDogYW55KSA9PiAoe1xyXG4gICAgICAgIHBhdGg6IHBhbmVsLnBhdGgsXHJcbiAgICAgICAgcm93czogdGhpcy5tZXRhZGF0YS5nZXRGb3JtQnlOYW1lKHBhbmVsLnRlbXBsYXRlKT8ucm93cyA/PyBbXSxcclxuICAgICAgICBkaXNhYmxlZDogcGFuZWwuZGlzYWJsZWRcclxuICAgICAgfSkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RGVmYXVsdFZhbHVlKGNvbXBvbmVudDogYW55KTogYW55IHtcclxuICAgIHN3aXRjaCAoY29tcG9uZW50LnR5cGUpIHtcclxuICAgICAgY2FzZSBcInRleHRhcmVhXCI6XHJcbiAgICAgIGNhc2UgXCJ0ZXh0ZmllbGRcIjpcclxuICAgICAgY2FzZSBcInJhZGlvXCI6XHJcbiAgICAgIGNhc2UgXCJzZWxlY3RcIjpcclxuICAgICAgICByZXR1cm4gY29tcG9uZW50LmRlZmF1bHRWYWx1ZSBhcyBzdHJpbmc7XHJcbiAgICAgIGNhc2UgXCJudW1iZXJcIjpcclxuICAgICAgICByZXR1cm4gY29tcG9uZW50LmRlZmF1bHRWYWx1ZSBhcyBudW1iZXI7XHJcbiAgICAgIGNhc2UgXCJjaGVja2JveFwiOlxyXG4gICAgICAgIHJldHVybiAoY29tcG9uZW50LmRlZmF1bHRWYWx1ZSA/PyBmYWxzZSkgYXMgYm9vbGVhbjtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0VXBkYXRlT24oY29tcG9uZW50OiBhbnkpOiBhbnkge1xyXG4gICAgc3dpdGNoIChjb21wb25lbnQudHlwZSkge1xyXG4gICAgICBjYXNlIFwibnVtYmVyXCI6XHJcbiAgICAgIGNhc2UgXCJ0ZXh0YXJlYVwiOlxyXG4gICAgICBjYXNlIFwidGV4dGZpZWxkXCI6XHJcbiAgICAgICAgcmV0dXJuIFwiYmx1clwiO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGhhc0ZhY3RvcnkoYXJyYXk6IEZvcm1BcnJheSk6IGFycmF5IGlzIEZvcm1BcnJheVdpdGhGYWN0b3J5IHtcclxuICBpZiAoIWFycmF5KSByZXR1cm4gZmFsc2U7XHJcbiAgY29uc3QgY3VycmVudCA9IGFycmF5IGFzIGFueTtcclxuICByZXR1cm4gdHlwZW9mIGN1cnJlbnQuY3JlYXRlSXRlbSA9PT0gJ2Z1bmN0aW9uJ1xyXG4gICAgJiYgdHlwZW9mIGN1cnJlbnQuYWRkSXRlbSA9PT0gJ2Z1bmN0aW9uJ1xyXG4gICAgJiYgdHlwZW9mIGN1cnJlbnQucmVzaXplID09PSAnZnVuY3Rpb24nXHJcbiAgICAmJiB0eXBlb2YgY3VycmVudC5jcmVhdGVOZXdBcnJheSA9PT0gJ2Z1bmN0aW9uJ1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1BcnJheVdpdGhGYWN0b3J5IGV4dGVuZHMgRm9ybUFycmF5IHtcclxuICBjcmVhdGVJdGVtKGFkZFRvQXJyYXk6IGJvb2xlYW4pOiBGb3JtR3JvdXA7XHJcbiAgYWRkSXRlbSgpOiBGb3JtR3JvdXA7XHJcbiAgcmVzaXplKHNpemU6IG51bWJlcik6IHZvaWQ7XHJcbiAgY3JlYXRlTmV3QXJyYXkoKTogRm9ybUFycmF5V2l0aEZhY3RvcnlcclxufVxyXG4iXX0=