Explorar el Código

RIFFMASTER: FRONTEND: add redirectioin to login after registration

Kuba hace 2 años
padre
commit
7a125eb052
Se han modificado 100 ficheros con 2552 adiciones y 9 borrados
  1. 20 6
      Backend/Spring/.idea/workspace.xml
  2. 26 2
      Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/controller/AppUserRESTController.java
  3. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/0.pack
  4. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/10.pack
  5. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/11.pack
  6. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/12.pack
  7. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/13.pack
  8. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/14.pack
  9. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/15.pack
  10. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/16.pack
  11. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/17.pack
  12. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/2.pack
  13. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/4.pack
  14. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/5.pack
  15. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/7.pack
  16. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/8.pack
  17. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/9.pack
  18. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/index.pack
  19. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/index.pack.old
  20. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/024169221b67ada903f0d62b0611435ba7773f663085baa3825f1f58c006723f.json
  21. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/05792c0d5aaaad71ccd3bf42a2bd92817beb3239466b1c52b9a4df1c3e8696f0.json
  22. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/15bd2803406466d22223423883af2a47683cde48fd455352bfb1d939a1221869.json
  23. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/18346935b87033fa27dfcda967865c388a5f7e2de172fe5df8e3cafd84820859.json
  24. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/1bb2e6b158eb0b54c3de2b74969440255908c2b23f25f497f267c5a53c2a9b86.json
  25. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/1fdfb5cd1755879abf7ac7d2614bc09b4c2e4ea4576e6cd2b93ef0cdbe8aa989.json
  26. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/296005356857b9720fe2085429884e8f936212488601030d32a38c40051903b2.json
  27. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/2c8d2e2b42e2f376cbc5ceae97e174b9ad65e7917d66856784e41a5f8b2859a7.json
  28. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/3315e2743156485c7c292a88622429f403aa39d77be5d10440ddba1f8ec26624.json
  29. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/3ff055608411da9f9a1764c8cbeb7e882fdf7bbbee0f6f278d1e48b56e238967.json
  30. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/4b28c38f3d02d31e6c8437c9566433df9595029a80434ca2d8ab7c29b5cecc73.json
  31. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/5008c18292721fa38b38317763e0b5e15f18c75a039c89cf0231a72b62bff085.json
  32. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/51c65652c8e1852dfc07ea93a64da54a9e48501fdaab853243ce5b7bce46ea51.json
  33. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/56fcd69908e67f7b2e865b93359926931e322ab931bb10c840152d6d61bb1cc2.json
  34. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/583bd3eaf5cf54e6d61ee791d5a4a3f1d7aa3263960b7419be152aaabe5b9551.json
  35. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/5e26d605d85d129451cb2d335291f770e73f21c68fd1f85ed4776cc5969224dc.json
  36. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/61621f5da6a0e15cea16762914de9e44a77de8a46a4da657e5f8f73f5dbf6df2.json
  37. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/63388d1c408740cb22f0f82fdb17fd5d6465df9eac21d7bf94abc5ed198c3aa5.json
  38. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/66ff540f9da5b38858680ff0407aa9ab42d126053909a2807e6f47696d144edc.json
  39. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/6d2c149764d2b07a69f5442fe929b2522171128154e18b3700098139edebe43e.json
  40. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/7a0cb7e579d65cb8218f9043aa1ef575824c298fc2ae7e831a0978393f3925f9.json
  41. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/8085f24cb2e61028bd3e89c6aae16988e3ddbf7e24b565f66cd0d60a644ad11c.json
  42. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/86e04dbb56a32927fe66384ed63310b03b9499a7c9467e615f0d6a1f4bf4b642.json
  43. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/8d088ecf65e484f798a0133e23d32ad1a217f4521fe0c8efc930e91c2c1a59e7.json
  44. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/8eaf0ea7de98cb86a0cbf2ae8f906f83ffe6eac420ac2dfff1a7a415fe95933a.json
  45. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/9e3a367fe8b17ddb547f66ed383ecbd77afc5479d315d470427cff2dd2cdbd53.json
  46. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/adf86a09836d1f4885ce7f63f3fc2f9874acd382cc3fb3762e1e9b05ec3f451e.json
  47. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/b72e225205f9774777a4f272120df4e996ff304f48c9ef9667d36aa0e5d25ee0.json
  48. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/b80154cd1018440ea4b29b143850005dcebf74d14a5e8898c63dd4060a3400df.json
  49. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/ba70f25442c7df171b85ac70691c81417582ba580dd25e3f6c909724a884973d.json
  50. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/c41ba3d15bcdab22bce1f803439ff7e1f74474fd538aa71feb7b3867348d165a.json
  51. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/c9be11564887744432c42cc571b63aefb1f120ebef602d4ca7d481fe734923ff.json
  52. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/d39cb8b1a1a00459cdeea3cac24b068a8a3b3277d3277ef49902f8e33b741030.json
  53. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/d5d8c2ee92235e0ece2b93db7815748eca1ff571421481a8c5c140c1c6e8cd97.json
  54. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/d6725763ade2a8d1cd62928d385d9b5d357d38176808d2b144e18a09da8a8bb9.json
  55. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/d690e6470d157a2c76235228dfe91bd1f3e4c2d4473c742eacf8612945c3c49e.json
  56. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/d694fc6c918e040e3e583cff680f9417fd8674be0941d256ae686343f88e9ccf.json
  57. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/d7a7e2d8be836e8ccf1997f40c84d73c7f41d41d9e925ad2122ed258231c1102.json
  58. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/e2280ef76860de8b185343a8e7dafc9b29e068e8fecd3b804794595b842afe86.json
  59. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/e47ed7f848aa0021ec50e128e405ae7eb62df3adc7410a7956b88321304553a4.json
  60. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/e6265a03907d12f5c6a00330ca324105f0e0feb78fc68ca745b94dab8f4aad7b.json
  61. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/ecfed2cce7fa541baa29cd9102066ea13a8077730a4b351847b10415f5ba75e9.json
  62. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/f3f31d5211f68eeb685c9b930f0e87d40cf2b5bb26e372b66d108021a514fc24.json
  63. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/f4cce2a57910c50b38b95fffce4aca2c407cdfc1dbd36a83bfabcea2fc0d187c.json
  64. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/f58a8931cb3541b54b2a69c92123e09970ce840a03972336c56611b899b9f018.json
  65. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/fa2b972b1bc0c93b1fdf16b60776947866003c50629780c943f2ab5e9f3d753a.json
  66. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/fbdc41fba839847d4865ce84f289b4531bc87ed7ee0d0a8f00d6799dce001084.json
  67. 2 1
      Frontend/RiffMasterFront/.idea/workspace.xml
  68. 17 0
      Frontend/RiffMasterFront/node_modules/.package-lock.json
  69. 21 0
      Frontend/RiffMasterFront/node_modules/@types/grecaptcha/LICENSE
  70. 16 0
      Frontend/RiffMasterFront/node_modules/@types/grecaptcha/README.md
  71. 129 0
      Frontend/RiffMasterFront/node_modules/@types/grecaptcha/index.d.ts
  72. 48 0
      Frontend/RiffMasterFront/node_modules/@types/grecaptcha/package.json
  73. 392 0
      Frontend/RiffMasterFront/node_modules/ng-recaptcha/CHANGELOG.md
  74. 21 0
      Frontend/RiffMasterFront/node_modules/ng-recaptcha/LICENSE
  75. 561 0
      Frontend/RiffMasterFront/node_modules/ng-recaptcha/README.md
  76. 9 0
      Frontend/RiffMasterFront/node_modules/ng-recaptcha/esm2022/index.mjs
  77. 16 0
      Frontend/RiffMasterFront/node_modules/ng-recaptcha/esm2022/lib/load-script.mjs
  78. 16 0
      Frontend/RiffMasterFront/node_modules/ng-recaptcha/esm2022/lib/recaptcha-common.module.mjs
  79. 19 0
      Frontend/RiffMasterFront/node_modules/ng-recaptcha/esm2022/lib/recaptcha-forms.module.mjs
  80. 65 0
      Frontend/RiffMasterFront/node_modules/ng-recaptcha/esm2022/lib/recaptcha-loader.service.mjs
  81. 2 0
      Frontend/RiffMasterFront/node_modules/ng-recaptcha/esm2022/lib/recaptcha-settings.mjs
  82. 15 0
      Frontend/RiffMasterFront/node_modules/ng-recaptcha/esm2022/lib/recaptcha-v3.module.mjs
  83. 141 0
      Frontend/RiffMasterFront/node_modules/ng-recaptcha/esm2022/lib/recaptcha-v3.service.mjs
  84. 67 0
      Frontend/RiffMasterFront/node_modules/ng-recaptcha/esm2022/lib/recaptcha-value-accessor.directive.mjs
  85. 169 0
      Frontend/RiffMasterFront/node_modules/ng-recaptcha/esm2022/lib/recaptcha.component.mjs
  86. 19 0
      Frontend/RiffMasterFront/node_modules/ng-recaptcha/esm2022/lib/recaptcha.module.mjs
  87. 7 0
      Frontend/RiffMasterFront/node_modules/ng-recaptcha/esm2022/lib/tokens.mjs
  88. 5 0
      Frontend/RiffMasterFront/node_modules/ng-recaptcha/esm2022/ng-recaptcha.mjs
  89. 514 0
      Frontend/RiffMasterFront/node_modules/ng-recaptcha/fesm2022/ng-recaptcha.mjs
  90. 0 0
      Frontend/RiffMasterFront/node_modules/ng-recaptcha/fesm2022/ng-recaptcha.mjs.map
  91. 9 0
      Frontend/RiffMasterFront/node_modules/ng-recaptcha/index.d.ts
  92. 11 0
      Frontend/RiffMasterFront/node_modules/ng-recaptcha/lib/load-script.d.ts
  93. 7 0
      Frontend/RiffMasterFront/node_modules/ng-recaptcha/lib/recaptcha-common.module.d.ts
  94. 9 0
      Frontend/RiffMasterFront/node_modules/ng-recaptcha/lib/recaptcha-forms.module.d.ts
  95. 25 0
      Frontend/RiffMasterFront/node_modules/ng-recaptcha/lib/recaptcha-loader.service.d.ts
  96. 8 0
      Frontend/RiffMasterFront/node_modules/ng-recaptcha/lib/recaptcha-settings.d.ts
  97. 6 0
      Frontend/RiffMasterFront/node_modules/ng-recaptcha/lib/recaptcha-v3.module.d.ts
  98. 78 0
      Frontend/RiffMasterFront/node_modules/ng-recaptcha/lib/recaptcha-v3.service.d.ts
  99. 18 0
      Frontend/RiffMasterFront/node_modules/ng-recaptcha/lib/recaptcha-value-accessor.directive.d.ts
  100. 64 0
      Frontend/RiffMasterFront/node_modules/ng-recaptcha/lib/recaptcha.component.d.ts

+ 20 - 6
Backend/Spring/.idea/workspace.xml

@@ -10,8 +10,27 @@
   </component>
   <component name="ChangeListManager">
     <list default="true" id="8315de53-8c15-472c-a710-45938463dc02" name="Changes" comment="RIFFMASTER: add frontend files">
+      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/0.pack" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/0.pack" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/10.pack" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/10.pack" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/13.pack" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/13.pack" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/15.pack" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/15.pack" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/16.pack" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/16.pack" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/17.pack" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/17.pack" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/5.pack" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/5.pack" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/7.pack" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/7.pack" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/8.pack" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/8.pack" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/9.pack" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/9.pack" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/index.pack" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/index.pack" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/index.pack.old" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/index.pack.old" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.idea/workspace.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/node_modules/.package-lock.json" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/node_modules/.package-lock.json" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/package-lock.json" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/package-lock.json" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/package.json" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/package.json" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/src/app/Services/auth.service.ts" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/src/app/Services/auth.service.ts" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/src/app/app.component.html" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/src/app/app.component.html" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/src/app/app.component.ts" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/src/app/app.component.ts" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/src/app/register-page/register-page.component.html" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/src/app/register-page/register-page.component.html" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/src/app/register-page/register-page.component.ts" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/src/app/register-page/register-page.component.ts" afterDir="false" />
     </list>
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -223,7 +242,7 @@
       <workItem from="1687039482556" duration="614000" />
       <workItem from="1687040353033" duration="220000" />
       <workItem from="1687069497459" duration="19142000" />
-      <workItem from="1687166331886" duration="3144000" />
+      <workItem from="1687166331886" duration="5683000" />
     </task>
     <task id="LOCAL-00001" summary="add basic hello world and transfering data to server">
       <created>1679575346987</created>
@@ -461,11 +480,6 @@
   <component name="XDebuggerManager">
     <breakpoint-manager>
       <breakpoints>
-        <line-breakpoint enabled="true" type="java-line">
-          <url>file://$PROJECT_DIR$/src/main/java/pl/dmcs/jwoszczyk/controller/AppUserController.java</url>
-          <line>88</line>
-          <option name="timeStamp" value="1" />
-        </line-breakpoint>
         <line-breakpoint enabled="true" type="java-line">
           <url>file://$PROJECT_DIR$/src/main/java/pl/dmcs/jwoszczyk/configuration/SecurityConfiguration.java</url>
           <line>38</line>

+ 26 - 2
Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/controller/AppUserRESTController.java

@@ -5,7 +5,10 @@ import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 import pl.dmcs.jwoszczyk.domain.AppUser;
+import pl.dmcs.jwoszczyk.domain.Riff;
+import pl.dmcs.jwoszczyk.domain.Song;
 import pl.dmcs.jwoszczyk.repository.IAppUserRepository;
+import pl.dmcs.jwoszczyk.service.IAppUserService;
 
 import java.util.List;
 
@@ -15,11 +18,32 @@ public class AppUserRESTController {
     //################################################################_Dependency Injection
 
     private IAppUserRepository appUserRepository;
-
+    private IAppUserService userService;
     @Autowired
-    public AppUserRESTController(IAppUserRepository appUserRepository) {
+    public AppUserRESTController(IAppUserRepository appUserRepository, IAppUserService userService) {
         this.appUserRepository = appUserRepository;
+        this.userService = userService;
     }
+
+
+    //#################################################################################_GET ALL USERS
+
+    @RequestMapping(value = "/user", method = RequestMethod.GET)
+    public ResponseEntity<List<AppUser>> getAllUsers() {
+        List<AppUser> users = userService.getAllAppUsers();
+
+        //add loading roles
+//        // Load riffs for each song
+//        for (AppUser user : users) {
+//            List<Riff> riffs = song.getRiffs();
+//            riffs.size(); // Trigger lazy loading of riffs
+//            song.setRiffs(riffs);
+//        }
+
+        return ResponseEntity.ok(users);
+    }
+
+
     //################################################################_REST methods
 
     @RequestMapping(value = "/{login}", method = RequestMethod.GET, produces = "application/json")

BIN
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/0.pack


BIN
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/10.pack


BIN
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/11.pack


BIN
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/12.pack


BIN
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/13.pack


BIN
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/14.pack


BIN
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/15.pack


BIN
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/16.pack


BIN
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/17.pack


BIN
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/2.pack


BIN
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/4.pack


BIN
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/5.pack


BIN
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/7.pack


BIN
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/8.pack


BIN
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/9.pack


BIN
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/index.pack


BIN
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/index.pack.old


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/024169221b67ada903f0d62b0611435ba7773f663085baa3825f1f58c006723f.json


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/05792c0d5aaaad71ccd3bf42a2bd92817beb3239466b1c52b9a4df1c3e8696f0.json


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/15bd2803406466d22223423883af2a47683cde48fd455352bfb1d939a1221869.json


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/18346935b87033fa27dfcda967865c388a5f7e2de172fe5df8e3cafd84820859.json


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/1bb2e6b158eb0b54c3de2b74969440255908c2b23f25f497f267c5a53c2a9b86.json


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/1fdfb5cd1755879abf7ac7d2614bc09b4c2e4ea4576e6cd2b93ef0cdbe8aa989.json


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/296005356857b9720fe2085429884e8f936212488601030d32a38c40051903b2.json


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/2c8d2e2b42e2f376cbc5ceae97e174b9ad65e7917d66856784e41a5f8b2859a7.json


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/3315e2743156485c7c292a88622429f403aa39d77be5d10440ddba1f8ec26624.json


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/3ff055608411da9f9a1764c8cbeb7e882fdf7bbbee0f6f278d1e48b56e238967.json


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/4b28c38f3d02d31e6c8437c9566433df9595029a80434ca2d8ab7c29b5cecc73.json


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/5008c18292721fa38b38317763e0b5e15f18c75a039c89cf0231a72b62bff085.json


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/51c65652c8e1852dfc07ea93a64da54a9e48501fdaab853243ce5b7bce46ea51.json


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/56fcd69908e67f7b2e865b93359926931e322ab931bb10c840152d6d61bb1cc2.json


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/583bd3eaf5cf54e6d61ee791d5a4a3f1d7aa3263960b7419be152aaabe5b9551.json


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/5e26d605d85d129451cb2d335291f770e73f21c68fd1f85ed4776cc5969224dc.json


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/61621f5da6a0e15cea16762914de9e44a77de8a46a4da657e5f8f73f5dbf6df2.json


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/63388d1c408740cb22f0f82fdb17fd5d6465df9eac21d7bf94abc5ed198c3aa5.json


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/66ff540f9da5b38858680ff0407aa9ab42d126053909a2807e6f47696d144edc.json


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/6d2c149764d2b07a69f5442fe929b2522171128154e18b3700098139edebe43e.json


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/7a0cb7e579d65cb8218f9043aa1ef575824c298fc2ae7e831a0978393f3925f9.json


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/8085f24cb2e61028bd3e89c6aae16988e3ddbf7e24b565f66cd0d60a644ad11c.json


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/86e04dbb56a32927fe66384ed63310b03b9499a7c9467e615f0d6a1f4bf4b642.json


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/8d088ecf65e484f798a0133e23d32ad1a217f4521fe0c8efc930e91c2c1a59e7.json


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/8eaf0ea7de98cb86a0cbf2ae8f906f83ffe6eac420ac2dfff1a7a415fe95933a.json


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/9e3a367fe8b17ddb547f66ed383ecbd77afc5479d315d470427cff2dd2cdbd53.json


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/adf86a09836d1f4885ce7f63f3fc2f9874acd382cc3fb3762e1e9b05ec3f451e.json


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/b72e225205f9774777a4f272120df4e996ff304f48c9ef9667d36aa0e5d25ee0.json


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/b80154cd1018440ea4b29b143850005dcebf74d14a5e8898c63dd4060a3400df.json


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/ba70f25442c7df171b85ac70691c81417582ba580dd25e3f6c909724a884973d.json


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/c41ba3d15bcdab22bce1f803439ff7e1f74474fd538aa71feb7b3867348d165a.json


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/c9be11564887744432c42cc571b63aefb1f120ebef602d4ca7d481fe734923ff.json


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/d39cb8b1a1a00459cdeea3cac24b068a8a3b3277d3277ef49902f8e33b741030.json


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/d5d8c2ee92235e0ece2b93db7815748eca1ff571421481a8c5c140c1c6e8cd97.json


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/d6725763ade2a8d1cd62928d385d9b5d357d38176808d2b144e18a09da8a8bb9.json


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/d690e6470d157a2c76235228dfe91bd1f3e4c2d4473c742eacf8612945c3c49e.json


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/d694fc6c918e040e3e583cff680f9417fd8674be0941d256ae686343f88e9ccf.json


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/d7a7e2d8be836e8ccf1997f40c84d73c7f41d41d9e925ad2122ed258231c1102.json


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/e2280ef76860de8b185343a8e7dafc9b29e068e8fecd3b804794595b842afe86.json


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/e47ed7f848aa0021ec50e128e405ae7eb62df3adc7410a7956b88321304553a4.json


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/e6265a03907d12f5c6a00330ca324105f0e0feb78fc68ca745b94dab8f4aad7b.json


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/ecfed2cce7fa541baa29cd9102066ea13a8077730a4b351847b10415f5ba75e9.json


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/f3f31d5211f68eeb685c9b930f0e87d40cf2b5bb26e372b66d108021a514fc24.json


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/f4cce2a57910c50b38b95fffce4aca2c407cdfc1dbd36a83bfabcea2fc0d187c.json


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/f58a8931cb3541b54b2a69c92123e09970ce840a03972336c56611b899b9f018.json


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/fa2b972b1bc0c93b1fdf16b60776947866003c50629780c943f2ab5e9f3d753a.json


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/fbdc41fba839847d4865ce84f289b4531bc87ed7ee0d0a8f00d6799dce001084.json


+ 2 - 1
Frontend/RiffMasterFront/.idea/workspace.xml

@@ -6,6 +6,7 @@
   <component name="ChangeListManager">
     <list default="true" id="d91bc08d-d968-4797-8fb3-ef602a37db2a" name="Changes" comment="RIFFMASTER: add frontend business logic (riff, song)">
       <change beforePath="$PROJECT_DIR$/../../Backend/Spring/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../../Backend/Spring/.idea/workspace.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/controller/AppUserRESTController.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/controller/AppUserRESTController.java" afterDir="false" />
     </list>
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -113,7 +114,7 @@
       <workItem from="1687039479377" duration="859000" />
       <workItem from="1687040351475" duration="221000" />
       <workItem from="1687069506147" duration="12962000" />
-      <workItem from="1687166414054" duration="1896000" />
+      <workItem from="1687166414054" duration="5416000" />
     </task>
     <task id="LOCAL-00001" summary="RIFFMASTER: add frontend project">
       <created>1685976235580</created>

+ 17 - 0
Frontend/RiffMasterFront/node_modules/.package-lock.json

@@ -3750,6 +3750,11 @@
         "@types/send": "*"
       }
     },
+    "node_modules/@types/grecaptcha": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/@types/grecaptcha/-/grecaptcha-3.0.4.tgz",
+      "integrity": "sha512-7l1Y8DTGXkx/r4pwU1nMVAR+yD/QC+MCHKXAyEX/7JZhwcN1IED09aZ9vCjjkcGdhSQiu/eJqcXInpl6eEEEwg=="
+    },
     "node_modules/@types/http-proxy": {
       "version": "1.17.11",
       "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.11.tgz",
@@ -8799,6 +8804,18 @@
       "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
       "dev": true
     },
+    "node_modules/ng-recaptcha": {
+      "version": "12.0.1",
+      "resolved": "https://registry.npmjs.org/ng-recaptcha/-/ng-recaptcha-12.0.1.tgz",
+      "integrity": "sha512-EX7IKqEn2SF8a2Enw3ggZVEjBIW2LQ52YiT2cb0/z4InikjlFoXGyM7PVb+jVvZfr5sfrxfRd/OOX29sjtWexA==",
+      "dependencies": {
+        "@types/grecaptcha": "^3.0.3",
+        "tslib": "^2.2.0"
+      },
+      "peerDependencies": {
+        "@angular/core": "^16.0.0"
+      }
+    },
     "node_modules/node-forge": {
       "version": "1.3.1",
       "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz",

+ 21 - 0
Frontend/RiffMasterFront/node_modules/@types/grecaptcha/LICENSE

@@ -0,0 +1,21 @@
+    MIT License
+
+    Copyright (c) Microsoft Corporation.
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE

+ 16 - 0
Frontend/RiffMasterFront/node_modules/@types/grecaptcha/README.md

@@ -0,0 +1,16 @@
+# Installation
+> `npm install --save @types/grecaptcha`
+
+# Summary
+This package contains type definitions for Google Recaptcha (https://www.google.com/recaptcha).
+
+# Details
+Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/grecaptcha.
+
+### Additional Details
+ * Last updated: Wed, 16 Mar 2022 20:31:48 GMT
+ * Dependencies: none
+ * Global values: `grecaptcha`
+
+# Credits
+These definitions were written by [Kristof Mattei](http://kristofmattei.be), [Martin Costello](https://martincostello.com/), [Ruslan Arkhipau](https://github.com/DethAriel), [Rafael Tavares](https://github.com/rafaeltavares), [Florian Rohrer](https://github.com/RohrerF), and [Veniamin Krol](https://github.com/vkrol).

+ 129 - 0
Frontend/RiffMasterFront/node_modules/@types/grecaptcha/index.d.ts

@@ -0,0 +1,129 @@
+// Type definitions for Google Recaptcha 3.0
+// Project: https://www.google.com/recaptcha
+// Definitions by: Kristof Mattei <http://kristofmattei.be>
+//                 Martin Costello <https://martincostello.com/>
+//                 Ruslan Arkhipau <https://github.com/DethAriel>
+//                 Rafael Tavares <https://github.com/rafaeltavares>
+//                 Florian Rohrer <https://github.com/RohrerF>
+//                 Veniamin Krol <https://github.com/vkrol>
+// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
+
+declare var grecaptcha: ReCaptchaV2.ReCaptcha & {
+  enterprise: ReCaptchaV2.ReCaptcha;
+};
+
+declare namespace ReCaptchaV2 {
+  interface ReCaptcha {
+    /**
+     * Renders the container as a reCAPTCHA widget and returns the ID of the newly created widget.
+     * @param container The HTML element to render the reCAPTCHA widget. Specify either the ID of the container (string) or the DOM element itself.
+     * @param parameters An object containing parameters as key=value pairs, for example, {"sitekey": "your_site_key", "theme": "light"}. See @see render parameters.
+     * @param inherit Invisible reCAPTCHA only. Use existing data-* attributes on the element if the corresponding parameter is not specified.
+     * The values in parameters will take precedence over the attributes.
+     * @return the ID of the newly created widget.
+     */
+    render(container: (string | HTMLElement), parameters?: Parameters, inherit?: boolean): number;
+    /**
+     * Resets the reCAPTCHA widget.
+     * @param opt_widget_id Optional widget ID, defaults to the first widget created if unspecified.
+     */
+    reset(opt_widget_id?: number): void;
+    /**
+     * Gets the response for the reCAPTCHA widget.
+     * @param opt_widget_id Optional widget ID, defaults to the first widget created if unspecified.
+     * @return the response of the reCAPTCHA widget.
+     */
+    getResponse(opt_widget_id?: number): string;
+    /**
+     * Programatically invoke the reCAPTCHA check. Used if the invisible reCAPTCHA is on a div instead of a button.
+     * @param opt_widget_id Optional widget ID, defaults to the first widget created if unspecified.
+     */
+    execute(opt_widget_id?: number): PromiseLike<void>;
+    /**
+     * Programatically invoke the reCAPTCHA check. Used if the invisible reCAPTCHA is on a div instead of a button.
+     * @param siteKey the key of your site
+     * @param action the action
+     *
+     * @return a promise-like object containing the token
+     */
+    execute(siteKey: string, action: Action): PromiseLike<string>;
+    /**
+     * will run the given function as soon as the reCAPTCHA library has loaded
+     * @param callback the function to coll
+     */
+    ready(callback: () => void): void;
+  }
+
+  type Theme = "light" | "dark";
+  type Type = "image" | "audio";
+  type Size = "normal" | "compact" | "invisible";
+  type Badge = "bottomright" | "bottomleft" | "inline";
+
+  interface Action {
+    /**
+     * the name of the action. Actions may only contain alphanumeric characters and slashes, and must not be user-specific.
+     */
+    action: string;
+  }
+
+  interface Parameters {
+    /**
+     * Your sitekey.
+     */
+    sitekey?: string | undefined;
+    /**
+     * Optional. The color theme of the widget.
+     * Accepted values: "light", "dark"
+     * @default "light"
+     */
+    theme?: Theme | undefined;
+    /**
+     * Optional. The type of CAPTCHA to serve.
+     * Accepted values: "audio", "image"
+     * @default "image"
+     */
+    type?: Type | undefined;
+    /**
+     * Optional. The size of the widget.
+     * Accepted values: "compact", "normal", "invisible".
+     * @default "compact"
+     */
+    size?: Size | undefined;
+    /**
+     * Optional. The tabindex of the widget and challenge.
+     * If other elements in your page use tabindex, it should be set to make user navigation easier.
+     */
+    tabindex?: number | undefined;
+    /**
+     * Optional. The badge location for g-recaptcha with size of "invisible".
+     *
+     * @default "bottomright"
+     */
+    badge?: Badge | undefined;
+    /**
+     * Optional. Invisible reCAPTCHA only. For plugin owners to not interfere with existing reCAPTCHA installations on a page.
+     * If true, this reCAPTCHA instance will be part of a separate ID space.
+     *
+     * @default false
+     */
+    isolated?: boolean | undefined;
+    /**
+     * Optional. Your callback function that's executed when the user submits a successful CAPTCHA response.
+     * The user's response, g-recaptcha-response, will be the input for your callback function.
+     */
+    callback?(response: string): void;
+    /**
+     * Optional. Your callback function that's executed when the reCAPTCHA response expires and the user needs to solve a new CAPTCHA.
+     */
+    // Notice to the reader
+    // I need to surround this object with quotes, this will however break intellisense in VS 2013.
+    "expired-callback"?(): void;
+    /**
+     * Optional. Your callback function that's executed when reCAPTCHA encounters an error (usually network connectivity) and cannot continue until connectivity is restored.
+     * If you specify this function, you are responsible for informing the user that they should retry.
+     */
+    // Notice to the reader
+    // I need to surround this object with quotes, this will however break intellisense in VS 2013.
+    "error-callback"?(): void;
+  }
+}

+ 48 - 0
Frontend/RiffMasterFront/node_modules/@types/grecaptcha/package.json

@@ -0,0 +1,48 @@
+{
+    "name": "@types/grecaptcha",
+    "version": "3.0.4",
+    "description": "TypeScript definitions for Google Recaptcha",
+    "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/grecaptcha",
+    "license": "MIT",
+    "contributors": [
+        {
+            "name": "Kristof Mattei",
+            "url": "http://kristofmattei.be"
+        },
+        {
+            "name": "Martin Costello",
+            "url": "https://martincostello.com/"
+        },
+        {
+            "name": "Ruslan Arkhipau",
+            "url": "https://github.com/DethAriel",
+            "githubUsername": "DethAriel"
+        },
+        {
+            "name": "Rafael Tavares",
+            "url": "https://github.com/rafaeltavares",
+            "githubUsername": "rafaeltavares"
+        },
+        {
+            "name": "Florian Rohrer",
+            "url": "https://github.com/RohrerF",
+            "githubUsername": "RohrerF"
+        },
+        {
+            "name": "Veniamin Krol",
+            "url": "https://github.com/vkrol",
+            "githubUsername": "vkrol"
+        }
+    ],
+    "main": "",
+    "types": "index.d.ts",
+    "repository": {
+        "type": "git",
+        "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git",
+        "directory": "types/grecaptcha"
+    },
+    "scripts": {},
+    "dependencies": {},
+    "typesPublisherContentHash": "269d37038865d25e368315d60330b7132f93650cb2363da46ecee1943480f6ec",
+    "typeScriptVersion": "3.9"
+}

+ 392 - 0
Frontend/RiffMasterFront/node_modules/ng-recaptcha/CHANGELOG.md

@@ -0,0 +1,392 @@
+<a name="12.0.0"></a>
+
+# [12.0.0](https://github.com/DethAriel/ng-recaptcha/compare/v11.0.0...v12.0.0) (2023-05-24)
+
+### Features
+
+- **package:** add Angular 16 support ([77a7d1f](https://github.com/DethAriel/ng-recaptcha/commit/77a7d1f)), closes [#288](https://github.com/DethAriel/ng-recaptcha/issues/288)
+
+### BREAKING CHANGES
+
+- **package:** - Angular v15 is no longer supported with this version. Pin `ng-recaptcha` to `v11.x.x` to retain support for a previous Angular version
+
+<a name="11.0.0"></a>
+
+# [11.0.0](https://github.com/DethAriel/ng-recaptcha/compare/v10.0.0...v11.0.0) (2022-11-30)
+
+### Features
+
+- **component:** _deprecate_ `error` output in favor of `errored` ([6b002bb](https://github.com/DethAriel/ng-recaptcha/commit/6b002bb))
+- **package:** add Angular 15 support ([6c62634](https://github.com/DethAriel/ng-recaptcha/commit/6c62634)), closes [#275](https://github.com/DethAriel/ng-recaptcha/issues/275)
+
+<a name="10.0.0"></a>
+
+# [10.0.0](https://github.com/DethAriel/ng-recaptcha/compare/v9.0.0...v10.0.0) (2022-06-25)
+
+### Features
+
+- **package:** add Angular 14 support ([eac6858](https://github.com/DethAriel/ng-recaptcha/commit/eac6858))
+
+<a name="9.0.0"></a>
+
+# [9.0.0](https://github.com/DethAriel/ng-recaptcha/compare/v7.0.2...v9.0.0) (2021-11-16)
+
+### Features
+
+- **package:** upgrade to Angular 13 ([af08641](https://github.com/DethAriel/ng-recaptcha/commit/af08641)), closes [#245](https://github.com/DethAriel/ng-recaptcha/issues/245)
+
+<a name="8.0.1"></a>
+
+## [8.0.1](https://github.com/DethAriel/ng-recaptcha/compare/v8.0.0...v8.0.1) (2021-07-22)
+
+### Bug Fixes
+
+- **component:** reset form-bound captcha value after component destruction ([0e550c4](https://github.com/DethAriel/ng-recaptcha/commit/0e550c4)), closes [#201](https://github.com/DethAriel/ng-recaptcha/issues/201)
+
+<a name="8.0.0"></a>
+
+# [8.0.0](https://github.com/DethAriel/ng-recaptcha/compare/v7.0.1...v8.0.0) (2021-05-14)
+
+### Features
+
+- **package:** add Angular 12 support ([a212a21](https://github.com/DethAriel/ng-recaptcha/commit/a212a21))
+
+<a name="7.0.2"></a>
+
+## [7.0.2](https://github.com/DethAriel/ng-recaptcha/compare/v7.0.1...v7.0.2) (2021-07-22)
+
+### Bug Fixes
+
+- **component:** reset form-bound captcha value after component destruction ([9e5c5e7](https://github.com/DethAriel/ng-recaptcha/commit/9e5c5e7)), closes [#201](https://github.com/DethAriel/ng-recaptcha/issues/201)
+
+<a name="7.0.1"></a>
+
+## [7.0.1](https://github.com/DethAriel/ng-recaptcha/compare/v7.0.0...v7.0.1) (2021-01-07)
+
+### Bug Fixes
+
+- **component:** fix component usages for Typescript strict mode ([a687d13](https://github.com/DethAriel/ng-recaptcha/commit/a687d13)), closes [#211](https://github.com/DethAriel/ng-recaptcha/issues/211)
+
+<a name="7.0.0"></a>
+
+# [7.0.0](https://github.com/DethAriel/ng-recaptcha/compare/v6.1.0...v7.0.0) (2020-12-22)
+
+### Bug Fixes
+
+- **package:** make `@types/grecaptcha` a non-optional dependency ([bc5ad51](https://github.com/DethAriel/ng-recaptcha/commit/bc5ad51)), closes [#205](https://github.com/DethAriel/ng-recaptcha/issues/205)
+
+### Features
+
+- **component:** Add Angular 11 support ([918fe90](https://github.com/DethAriel/ng-recaptcha/commit/918fe90))
+- **component:** remove deprecated `forRoot` method ([514beaf](https://github.com/DethAriel/ng-recaptcha/commit/514beaf))
+- **package:** update `"@types/grecaptcha"` optional dependency version to ^3 ([e1ee7b9](https://github.com/DethAriel/ng-recaptcha/commit/e1ee7b9))
+
+### BREAKING CHANGES
+
+- **component:** Support for previous versions of Angular has been dropped. Starting from v7 only one version of Angular will be supported.
+- **component:** The `RecaptchaModule.forRoot()` method has been obsolete since v4.1.0 (since it has no longer been required). It is now removed. To migrate your code, simply use `RecaptchaModule` where you previously used `RecaptchaModule.forRoot()`
+
+<a name="6.1.0"></a>
+
+# [6.1.0](https://github.com/DethAriel/ng-recaptcha/compare/v6.0.2...v6.1.0) (2020-12-01)
+
+### Bug Fixes
+
+- **component:** handle top-level `execute` errors for reCAPTCHA v3 ([c7d02ce](https://github.com/DethAriel/ng-recaptcha/commit/c7d02ce)), closes [#194](https://github.com/DethAriel/ng-recaptcha/issues/194)
+- **component:** mark `forRoot()` method as deprecated ([dea31e5](https://github.com/DethAriel/ng-recaptcha/commit/dea31e5))
+
+### Features
+
+- **component:** add the ability to handle reCAPTCHA errors ([80c9e6e](https://github.com/DethAriel/ng-recaptcha/commit/80c9e6e)), closes [#199](https://github.com/DethAriel/ng-recaptcha/issues/199)
+
+<a name="6.0.2"></a>
+
+## [6.0.2](https://github.com/DethAriel/ng-recaptcha/compare/v6.0.1...v6.0.2) (2020-09-14)
+
+### Bug Fixes
+
+- **component:** fix custom languages for reCAPTCHA v3 ([a2b145d](https://github.com/DethAriel/ng-recaptcha/commit/a2b145d)), closes [#174](https://github.com/DethAriel/ng-recaptcha/issues/174)
+- **component:** improve reCAPTCHA v2 and v3 interoperability ([79fc85b](https://github.com/DethAriel/ng-recaptcha/commit/79fc85b)), closes [#152](https://github.com/DethAriel/ng-recaptcha/issues/152)
+
+<a name="6.0.1"></a>
+
+## [6.0.1](https://github.com/DethAriel/ng-recaptcha/compare/v6.0.0...v6.0.1) (2020-09-12)
+
+### Bug Fixes
+
+- **component:** catch and propagate grecaptcha errors, closes [#175](https://github.com/DethAriel/ng-recaptcha/issues/175) ([075edd0](https://github.com/DethAriel/ng-recaptcha/commit/075edd0))
+
+<a name="6.0.0"></a>
+
+# [6.0.0](https://github.com/DethAriel/ng-recaptcha/compare/v5.0.0...v6.0.0) (2020-09-10)
+
+### Features
+
+- **component:** make Angular 10.0.0 a supported peer dependency ([3d7756b](https://github.com/DethAriel/ng-recaptcha/commit/3d7756b)), closes [#177](https://github.com/DethAriel/ng-recaptcha/issues/177)
+- **component:** make Angular 9.0.0 a supported peer dependency ([98edce6](https://github.com/DethAriel/ng-recaptcha/commit/98edce6)), closes [#168](https://github.com/DethAriel/ng-recaptcha/issues/168)
+
+<a name="5.0.0"></a>
+
+# [5.0.0](https://github.com/DethAriel/ng-recaptcha/compare/v4.3.0...v5.0.0) (2019-08-09)
+
+### Features
+
+- **component:** make Angular 8.0.0 a supported peer dependency ([f003ff2](https://github.com/DethAriel/ng-recaptcha/commit/f003ff2))
+- **package:** implement Angular Package format ([71340c4](https://github.com/DethAriel/ng-recaptcha/commit/71340c4))
+
+### BREAKING CHANGES
+
+- **package:** \* `ng-recaptcha/forms` entry point has been removed. `RecaptchaFormsModule` and `RecaptchaValueAccessorDirective` should now be imported directly from `ng-recaptcha`
+- `tslib` is now a package dependency to ensure minimum possible bundle size. If your project doesn't yet have a dependency on `tslib`, run `npm install -D tslib@^1.9.0` (or `yarn add -D tslib@^1.9.0` if you use yarn)
+
+<a name="4.3.0"></a>
+
+# [4.3.0](https://github.com/DethAriel/ng-recaptcha/compare/v4.3.0-beta.1...v4.3.0) (2019-06-04)
+
+### Bug Fixes
+
+- **component-v3:** fix a potential metadata error in v3 service ([ed885b5](https://github.com/DethAriel/ng-recaptcha/commit/ed885b5))
+
+<a name="4.3.0-beta.1"></a>
+
+# [4.3.0-beta.1](https://github.com/DethAriel/ng-recaptcha/compare/v4.2.1...v4.3.0-beta.1) (2019-02-08)
+
+### Features
+
+- **component:** add support for reCAPTCHA v3 ([4a083c6](https://github.com/DethAriel/ng-recaptcha/commit/4a083c6)), closes [#129](https://github.com/DethAriel/ng-recaptcha/issues/129)
+
+<a name="4.2.1"></a>
+
+## [4.2.1](https://github.com/DethAriel/ng-recaptcha/compare/v4.2.0...v4.2.1) (2018-10-24)
+
+### Bug Fixes
+
+- **package:** fix publishing empty package ([e4685fe](https://github.com/DethAriel/ng-recaptcha/commit/e4685fe))
+
+<a name="4.2.0"></a>
+
+# [4.2.0](https://github.com/DethAriel/ng-recaptcha/compare/v4.1.1...v4.2.0) (2018-10-24)
+
+### Features
+
+- **component:** add the ability to provide `nonce` to the script tag ([8f55b19](https://github.com/DethAriel/ng-recaptcha/commit/8f55b19)), closes [#100](https://github.com/DethAriel/ng-recaptcha/issues/100)
+- **component:** allow to specify a base url for loading recaptcha ([df505fd](https://github.com/DethAriel/ng-recaptcha/commit/df505fd)), closes [#101](https://github.com/DethAriel/ng-recaptcha/issues/101)
+
+<a name="4.1.1"></a>
+
+## [4.1.1](https://github.com/DethAriel/ng-recaptcha/compare/v4.1.0...v4.1.1) (2018-10-24)
+
+### Bug Fixes
+
+- **component:** delay invisible recaptcha execution until it's rendered ([99292b7](https://github.com/DethAriel/ng-recaptcha/commit/99292b7)), closes [#127](https://github.com/DethAriel/ng-recaptcha/issues/127)
+
+<a name="4.1.0"></a>
+
+# [4.1.0](https://github.com/DethAriel/ng-recaptcha/compare/v4.0.0...v4.1.0) (2018-10-24)
+
+### Bug Fixes
+
+- **component:** fix a potential error during recaptcha rendering ([1c395b5](https://github.com/DethAriel/ng-recaptcha/commit/1c395b5))
+
+### Features
+
+- **module:** skip `forRoot()` when importing `RecaptchaModule` ([7fb97fb](https://github.com/DethAriel/ng-recaptcha/commit/7fb97fb)), closes [#113](https://github.com/DethAriel/ng-recaptcha/issues/113) [#116](https://github.com/DethAriel/ng-recaptcha/issues/116)
+- **package:** update peer dependencies to include Angular 7 ([929ef7a](https://github.com/DethAriel/ng-recaptcha/commit/929ef7a))
+
+<a name="4.0.0"></a>
+
+# [4.0.0](https://github.com/DethAriel/ng-recaptcha/compare/v4.0.0-beta.1...v4.0.0) (2018-09-29)
+
+<a name="4.0.0-beta.1"></a>
+
+# [4.0.0-beta.1](https://github.com/DethAriel/ng-recaptcha/compare/v3.0.5...v4.0.0-beta.1) (2018-05-17)
+
+### Features
+
+- **component:** adjust dependencies for Angular 6 support ([736c7ae](https://github.com/DethAriel/ng-recaptcha/commit/736c7ae))
+
+### BREAKING CHANGES
+
+- **component:** The peer dependency for `@angular/core` has been bumped to `^6.0.0`
+
+<a name="3.0.5"></a>
+
+## [3.0.5](https://github.com/DethAriel/ng-recaptcha/compare/v3.0.3...v3.0.5) (2018-04-27)
+
+### Bug Fixes
+
+- **rxjs:** change import of `of` operator ([3e0bda6](https://github.com/DethAriel/ng-recaptcha/commit/3e0bda6)), closes [#95](https://github.com/DethAriel/ng-recaptcha/issues/95)
+
+<a name="3.0.3"></a>
+
+## [3.0.3](https://github.com/DethAriel/ng-recaptcha/compare/v3.0.2...v3.0.3) (2017-12-26)
+
+### Bug Fixes
+
+- **component:** use ElementRef to access component's native element ([d3a8409](https://github.com/DethAriel/ng-recaptcha/commit/d3a8409)), closes [#48](https://github.com/DethAriel/ng-recaptcha/issues/48) [#68](https://github.com/DethAriel/ng-recaptcha/issues/68)
+
+<a name="3.0.2"></a>
+
+## [3.0.2](https://github.com/DethAriel/ng-recaptcha/compare/v3.0.1...v3.0.2) (2017-10-18)
+
+### Bug Fixes
+
+- **build:** fix AoT builds ([921be50](https://github.com/DethAriel/ng-recaptcha/commit/921be50)), closes [#57](https://github.com/DethAriel/ng-recaptcha/issues/57) [#65](https://github.com/DethAriel/ng-recaptcha/issues/65)
+
+<a name="3.0.1"></a>
+
+## [3.0.1](https://github.com/DethAriel/ng-recaptcha/compare/v3.0.0...v3.0.1) (2017-09-29)
+
+### Bug Fixes
+
+- **component:** Replace `OpaqueToken` with `InjectionToken` ([2b7db9b](https://github.com/DethAriel/ng-recaptcha/commit/2b7db9b))
+
+<a name="3.0.0"></a>
+
+# [3.0.0](https://github.com/DethAriel/ng-recaptcha/compare/v2.2.0...v3.0.0) (2017-08-30)
+
+### Bug Fixes
+
+- **component:** fix server-side rendering ([7a5bc6c](https://github.com/DethAriel/ng-recaptcha/commit/7a5bc6c)), closes [#34](https://github.com/DethAriel/ng-recaptcha/issues/34)
+
+### BREAKING CHANGES
+
+- **component:** Angular v2.x.x is no longer supported due to dependency on Platform capabilities that were added in [v4.0.0-rc.1](https://github.com/angular/angular/blob/master/CHANGELOG.md#features-20)
+
+<a name="2.2.0"></a>
+
+# [2.2.0](https://github.com/DethAriel/ng-recaptcha/compare/v2.1.1...v2.2.0) (2017-08-18)
+
+### Bug Fixes
+
+- **component:** ensure that component is destroyed safely ([1e51d56](https://github.com/DethAriel/ng-recaptcha/commit/1e51d56)), closes [#46](https://github.com/DethAriel/ng-recaptcha/issues/46)
+
+### Features
+
+- **component:** add the ability to specify component props globally ([8a7b22d](https://github.com/DethAriel/ng-recaptcha/commit/8a7b22d)), closes [#45](https://github.com/DethAriel/ng-recaptcha/issues/45)
+
+<a name="2.1.1"></a>
+
+## [2.1.1](https://github.com/DethAriel/ng-recaptcha/compare/v2.1.0...v2.1.1) (2017-05-02)
+
+### Bug Fixes
+
+- **component:** unblock protractor tests after `<re-captcha>` destruction ([a5f2fe9](https://github.com/DethAriel/ng-recaptcha/commit/a5f2fe9))
+
+<a name="2.1.0"></a>
+
+# [2.1.0](https://github.com/DethAriel/ng-recaptcha/compare/v2.0.2...v2.1.0) (2017-05-01)
+
+### Features
+
+- **component:** add support for `badge` property ([5a16430](https://github.com/DethAriel/ng-recaptcha/commit/5a16430)), closes [#30](https://github.com/DethAriel/ng-recaptcha/issues/30)
+
+### Bug Fixes
+
+- **demo:** re-add a missing systemjs config file ([b51694a](https://github.com/DethAriel/ng-recaptcha/commit/b51694a))
+
+<a name="2.0.2"></a>
+
+## [2.0.2](https://github.com/DethAriel/ng-recaptcha/compare/v2.0.1...v2.0.2) (2017-03-26)
+
+### Features
+
+- **package:** update peer dependencies to include Angular v4 ([b2f04e8](https://github.com/DethAriel/ng-recaptcha/commit/b2f04e8))
+
+<a name="2.0.1"></a>
+
+## [2.0.1](https://github.com/DethAriel/ng-recaptcha/compare/v2.0.0...v2.0.1) (2017-03-17)
+
+### Bug Fixes
+
+- **module:** Adding the value accessor directive to the forms barrel, which was missing. ([ad73e2e](https://github.com/DethAriel/ng-recaptcha/commit/ad73e2e))
+
+### Features
+
+- **misc:** Annotating a static field with `@nocollapse` to avoid issues with closure compiler in advanced mode. ([55e5932](https://github.com/DethAriel/ng-recaptcha/commit/55e5932))
+
+<a name="2.0.0"></a>
+
+# [2.0.0](https://github.com/DethAriel/ng-recaptcha/compare/v1.7.0...v2.0.0) (2017-03-14)
+
+### Features
+
+- **component:** change component and directive selectors ([58a01b4](https://github.com/DethAriel/ng-recaptcha/commit/58a01b4))
+- **module:** change the way recaptcha modules work ([6e13389](https://github.com/DethAriel/ng-recaptcha/commit/6e13389))
+
+### BREAKING CHANGES
+
+- component: component selector changed from `recaptcha` to `re-captcha`
+- module: module handling has changed.
+  Users of `RecaptchaNoFormsModule` should instead use `import { RecaptchaModule } from 'ng-recaptcha'`. Users of v1 `RecaptchaModule` should also `import { RecaptchaFormsModule } from 'ng-recaptcha/forms'`. SystemJS users must also re-setup module "main" file to `index.js`
+
+<a name="1.7.0"></a>
+
+# [1.7.0](https://github.com/DethAriel/ng2-recaptcha/compare/v1.6.1...v1.7.0) (2017-03-13)
+
+### Bug Fixes
+
+- **component:** handle id input parameter correctly ([b578fe5](https://github.com/DethAriel/ng2-recaptcha/commit/b578fe5))
+
+### Features
+
+- **component:** add `exportAs` annotation ([3e2e217](https://github.com/DethAriel/ng2-recaptcha/commit/3e2e217))
+- **component:** add support for invisible reCAPTCHA ([c19489d](https://github.com/DethAriel/ng2-recaptcha/commit/c19489d)), closes [#18](https://github.com/DethAriel/ng2-recaptcha/issues/18)
+
+<a name="1.6.1"></a>
+
+## [1.6.1](https://github.com/DethAriel/ng2-recaptcha/compare/v1.6.0...v1.6.1) (2017-03-10)
+
+### Enhancements
+
+- **package:** expand wildcard exports to better support Google Closure Compiler ([8dd1a59](https://github.com/DethAriel/ng2-recaptcha/commit/8dd1a59))
+
+<a name="1.6.0"></a>
+
+# [1.6.0](https://github.com/DethAriel/ng2-recaptcha/compare/v1.5.4...v1.6.0) (2017-02-17)
+
+### Features
+
+- **package management:** add `[@types](https://github.com/types)/grecaptcha` as optional dependency ([85fbfba](https://github.com/DethAriel/ng2-recaptcha/commit/85fbfba))
+
+<a name="1.5.4"></a>
+
+## [1.5.4](https://github.com/DethAriel/ng2-recaptcha/compare/v1.5.3...v1.5.4) (2017-02-02)
+
+### Bug Fixes
+
+- **component:** correctly reset captcha during `ngOnDestroy` ([b31d57f](https://github.com/DethAriel/ng2-recaptcha/commit/b31d57f)), closes [#12](https://github.com/DethAriel/ng2-recaptcha/issues/12)
+
+<a name="1.5.3"></a>
+
+## [1.5.3](https://github.com/DethAriel/ng2-recaptcha/compare/v1.5.2...v1.5.3) (2017-02-01)
+
+### Bug Fixes
+
+- **component:** emit `resolved(null)` event when recaptcha expires ([491d99a](https://github.com/DethAriel/ng2-recaptcha/commit/491d99a)), closes [#11](https://github.com/DethAriel/ng2-recaptcha/issues/11)
+
+<a name="1.5.2"></a>
+
+## [1.5.2](https://github.com/DethAriel/ng2-recaptcha/compare/v1.5.1...v1.5.2) (2017-01-31)
+
+### Bug Fixes
+
+- **component:** reset the captcha when the component is destroyed ([e1441c8](https://github.com/DethAriel/ng2-recaptcha/commit/e1441c8)), closes [#10](https://github.com/DethAriel/ng2-recaptcha/issues/10)
+
+<a name="1.5.1"></a>
+
+## [1.5.1](https://github.com/DethAriel/ng2-recaptcha/compare/v1.5.0...v1.5.1) (2017-01-27)
+
+<a name="1.5.0"></a>
+
+# [1.5.0](https://github.com/DethAriel/ng2-recaptcha/compare/v1.4.0...v1.5.0) (2017-01-24)
+
+### Bug Fixes
+
+- **component:** correctly emit `resolved` event ([25d4246](https://github.com/DethAriel/ng2-recaptcha/commit/25d4246))
+
+<a name="1.4.0"></a>
+
+# [1.4.0](https://github.com/DethAriel/ng2-recaptcha/compare/v1.3.2...v1.4.0) (2016-10-28)
+
+Added AoT compilation support

+ 21 - 0
Frontend/RiffMasterFront/node_modules/ng-recaptcha/LICENSE

@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2016 Ruslan Arkhipau
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.

+ 561 - 0
Frontend/RiffMasterFront/node_modules/ng-recaptcha/README.md

@@ -0,0 +1,561 @@
+# Angular component for Google reCAPTCHA
+
+## ng-recaptcha [![npm version](https://badge.fury.io/js/ng-recaptcha.svg)](https://www.npmjs.com/package/ng-recaptcha)
+
+[![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/dethariel/ng-recaptcha/master/LICENSE)
+[![Build Status](https://app.travis-ci.com/DethAriel/ng-recaptcha.svg?branch=master)](https://app.travis-ci.com/DethAriel/ng-recaptcha)
+[![Coverage Status](https://coveralls.io/repos/github/DethAriel/ng-recaptcha/badge.svg?branch=master)](https://coveralls.io/github/DethAriel/ng-recaptcha?branch=master)
+[![NPM downloads](https://img.shields.io/npm/dm/ng-recaptcha)](https://www.npmjs.com/package/ng-recaptcha)
+
+A simple, configurable, easy-to-start component for handling reCAPTCHA v2 and v3.
+
+## Table of contents
+
+1. [Installation](#installation)
+1. [Basic Usage](#example-basic)
+   - [reCAPTCHA v3 Usage](#example-basic-v3)
+   - [Playground](#playground)
+1. [Working with `@angular/forms`](#forms-ready)
+1. [API](#api)
+   - [Input Options](#api-options)
+   - [Events](#api-events)
+   - [Methods](#api-methods)
+1. [Angular version compatibility](#angular-versions)
+1. [Examples](#examples)
+   - [Configuring the component globally](#example-global-config)
+   - [Specifying a different language](#example-language)
+   - [Handling errors](#example-error-handling)
+   - [Loading the reCAPTCHA API by yourself](#example-preload-api)
+   - [Usage with `required` in forms](#example-forms)
+   - [Working with invisible reCAPTCHA](#example-invisible)
+   - [Resizing](#example-resizing)
+   - [SystemJS configuration](#example-systemjs)
+   - [Loading from a different location](#example-different-url)
+   - [Specifying nonce for Content-Security-Policy](#example-csp-nonce)
+   - [Listening for all actions with reCAPTCHA v3](#example-v3-all-actions)
+   - [Hiding reCAPTCHA badge](#hide-recaptcha-badge)
+
+## <a name="installation"></a>Installation
+
+The easiest way is to install through [yarn](https://yarnpkg.com/package/ng-recaptcha) or [npm](https://www.npmjs.com/package/ng-recaptcha):
+
+```sh
+yarn add ng-recaptcha
+npm i ng-recaptcha --save
+```
+
+## <a name="example-basic"></a>Basic Usage [(see in action)](https://dethariel.github.io/ng-recaptcha/)
+
+The below applies to reCAPTCHA v2, for basic usage with reCAPTCHA v3 scroll down to [here](#example-basic-v3).
+
+To start with, you need to import the `RecaptchaModule` (more on that [later](#modules)):
+
+```typescript
+// app.module.ts
+import { RecaptchaModule } from "ng-recaptcha";
+// if you need forms support:
+// import { RecaptchaModule, RecaptchaFormsModule } from 'ng-recaptcha';
+import { BrowserModule } from "@angular/platform-browser";
+import { MyApp } from "./app.component.ts";
+
+@NgModule({
+  bootstrap: [MyApp],
+  declarations: [MyApp],
+  imports: [
+    BrowserModule,
+    RecaptchaModule,
+    // RecaptchaFormsModule, // if you need forms support
+  ],
+})
+export class MyAppModule {}
+```
+
+Once you have done that, the rest is simple:
+
+```typescript
+// app.component.ts
+import { Component } from "@angular/core";
+
+@Component({
+  selector: "my-app",
+  template: `<re-captcha (resolved)="resolved($event)" siteKey="YOUR_SITE_KEY"></re-captcha>`,
+})
+export class MyApp {
+  resolved(captchaResponse: string) {
+    console.log(`Resolved captcha with response: ${captchaResponse}`);
+  }
+}
+```
+
+```typescript
+// main.ts
+import { platformBrowserDynamic } from "@angular/platform-browser-dynamic";
+import { MyAppModule } from "./app.module.ts";
+
+platformBrowserDynamic().bootstrapModule(MyAppModule);
+```
+
+### <a name="example-basic-v3"></a>reCAPTCHA v3 Usage [(see in action)](https://dethariel.github.io/ng-recaptcha/v3)
+
+[reCAPTCHA v3](https://developers.google.com/recaptcha/docs/v3) introduces a different way of bot protection. To work with v3 APIs, `ng-recaptcha` provides a service (as opposed to a component). To start with, you need to import the `RecaptchaV3Module` and provide your reCAPTCHA v3 site key using `RECAPTCHA_V3_SITE_KEY` injection token:
+
+```ts
+import { BrowserModule } from "@angular/platform-browser";
+import { RECAPTCHA_V3_SITE_KEY, RecaptchaV3Module } from "ng-recaptcha";
+
+import { MyApp } from "./app.component.ts";
+
+@NgModule({
+  bootstrap: [MyApp],
+  declarations: [MyApp],
+  imports: [BrowserModule, RecaptchaV3Module],
+  providers: [{ provide: RECAPTCHA_V3_SITE_KEY, useValue: "<YOUR_SITE_KEY>" }],
+})
+export class MyAppModule {}
+```
+
+In order to execute a reCAPTCHA v3 action, import the `ReCaptchaV3Service` into your desired component:
+
+```ts
+import { ReCaptchaV3Service } from 'ng-recaptcha';
+
+@Component({
+  selector: 'recaptcha-demo',
+  template: `
+    <button (click)="executeImportantAction()">Important action</button>
+  `,
+})
+export class RecaptchaV3DemoComponent {
+  constructor(
+    private recaptchaV3Service: ReCaptchaV3Service,
+  ) {
+  }
+
+  public executeImportantAction(): void {
+    this.recaptchaV3Service.execute('importantAction')
+      .subscribe((token) => this.handleToken(token));
+  }
+```
+
+As always with subscriptions, please don't forget to **unsubscribe**.
+
+❗️ **Important note**: If your site uses both v2 and v3, then you should _always_ provide `RECAPTCHA_V3_SITE_KEY` (even in modules that only rely on v2 functionality). This will prevent bugs in your code by allowing `ng-recaptcha` to follow reCAPTCHA development guidelines properly ([this one](https://developers.google.com/recaptcha/docs/faq#can-i-run-recaptcha-v2-and-v3-on-the-same-page) in particular).
+
+A more advanced v3 usage scenario includes listening to all actions and their respectively emitted tokens. This is covered [later on this page](#example-v3-all-actions).
+
+### <a name="playground"></a>Playground
+
+You can also play with [this Stackblitz demo](https://stackblitz.com/edit/ng-recaptcha-example) to get a feel of how this component can be used.
+
+## <a name="forms-ready"></a>Working with `@angular/forms`
+
+There are two modules available for you:
+
+```typescript
+import { RecaptchaModule, RecaptchaFormsModule } from "ng-recaptcha";
+```
+
+If you want your `<re-captcha>` element to work correctly with `[(ngModel)]` directive,
+you need to import the `RecaptchaFormsModule` into your application module (pretty much
+like with Angular own `'@angular/forms'` module).
+
+## <a name="api"></a>API
+
+### <a name="api-options"></a>Input Options
+
+The component supports this options:
+
+- `siteKey`
+- `theme`
+- `type`
+- `size`
+- `tabIndex`
+- `badge`
+
+They are all pretty well described either in the [reCAPTCHA docs](https://developers.google.com/recaptcha/docs/display), or in the [invisible reCAPTCHA docs](https://developers.google.com/recaptcha/docs/invisible),
+so I won't duplicate it here.
+
+One additional option that component accepts is `errorMode`. You can learn more about it in the [Handling errors](#example-error-handling) section below.
+
+Besides specifying these options on the component itself, you can provide a global `<re-captcha>` configuration - see [Configuring the component globally](#example-global-config) section below.
+
+### <a name="api-events"></a>Events
+
+- `resolved(response: string)`. Occurs when the captcha resolution value changed.
+  When user resolves captcha, use `response` parameter to send to the server for verification.
+  This parameter is equivalent to calling [`grecaptcha.getResponse`](https://developers.google.com/recaptcha/docs/display#js_api).
+
+  If the captcha has expired prior to submitting its value to the server, the component
+  will reset the captcha, and trigger the `resolved` event with `response === null`.
+
+- `errored(errorDetails: RecaptchaErrorParameters)`. Occurs when reCAPTCHA encounters an error (usually a connectivity problem) **if and only if** `errorMode` input has been set to `"handled"`.
+  `errorDetails` is a simple propagation of any arguments that the original `error-callback` has provided, and is documented here for the purposes of completeness and future-proofing. This array will most often (if not always) be empty. A good strategy would be to rely on just the fact that this event got triggered, and show a message to your app's user telling them to retry.
+
+### <a name="api-methods"></a>Methods
+
+- `reset()`. Performs a manual captcha reset. This method might be useful if your form
+  validation failed, and you need the user to re-enter the captcha.
+- `execute()`. Executes the invisible recaptcha. Does nothing if component's size is not set to "invisible". See [Invisible reCAPTCHA developers guide](https://developers.google.com/recaptcha/docs/invisible#js_api) for more information.
+
+## <a name="angular-versions"></a>Angular version compatibility
+
+| `ng-recaptcha` version                                                           | Supported Angular versions                           |
+| -------------------------------------------------------------------------------- | ---------------------------------------------------- |
+| `12.x.x`                                                                         | `16.x.x`                                             |
+| `11.x.x`                                                                         | `15.x.x`                                             |
+| `10.x.x`                                                                         | `14.x.x`                                             |
+| `9.x.x`                                                                          | `13.x.x`                                             |
+| `8.x.x`                                                                          | `12.x.x`                                             |
+| `7.x.x`                                                                          | `11.x.x`                                             |
+| ⬆️ Starting with `ng-recaptcha@7`, only one version of Angular will be supported |
+| `6.x.x`                                                                          | `6.x.x \|\| 7.x.x \|\| 8.x.x \|\| 9.x.x \|\| 10.x.x` |
+| `5.x.x`                                                                          | `6.x.x \|\| 7.x.x \|\| 8.x.x`                        |
+| `4.x.x`                                                                          | `6.x.x \|\| 7.x.x`                                   |
+| `3.x.x`                                                                          | `4.x.x \|\| 5.x.x`                                   |
+| `2.x.x`                                                                          | `2.x.x \|\| 4.x.x`                                   |
+| `1.x.x`                                                                          | `2.x.x`                                              |
+
+## <a name="examples"></a>Examples
+
+### <a name="example-global-config"></a>Configuring the component globally [(see in action)](https://dethariel.github.io/ng-recaptcha/global-config)
+
+Some properties are global - including `siteKey`, `size`, and others. You can provide them at the module-level using the `RECAPTCHA_SETTINGS` provider:
+
+```typescript
+import { RECAPTCHA_SETTINGS, RecaptchaSettings } from "ng-recaptcha";
+
+@NgModule({
+  providers: [
+    {
+      provide: RECAPTCHA_SETTINGS,
+      useValue: { siteKey: "<YOUR_KEY>" } as RecaptchaSettings,
+    },
+  ],
+})
+export class MyModule {}
+```
+
+Global properties can be overridden on a case-by-case basis - the values on the `<re-captcha>` component itself take precedence over global settings.
+
+### <a name="example-language"></a>Specifying a different language [(see in action)](https://dethariel.github.io/ng-recaptcha/basic?lang-fr)
+
+`<re-captcha>` supports various languages. By default recaptcha will guess the user's language itself
+(which is beyond the scope of this lib).
+But you can override this behavior and provide a specific language to use.
+Note, that the language setting is **global**, and cannot be set on a per-captcha basis.
+
+A good way to synchronize reCAPTCHA language with the rest of your application is relying on `LOCALE_ID` value like so:
+
+```typescript
+import { LOCALE_ID } from "@angular/core";
+import { RECAPTCHA_LANGUAGE } from "ng-recaptcha";
+
+@NgModule({
+  providers: [
+    {
+      provide: RECAPTCHA_LANGUAGE,
+      useFactory: (locale: string) => locale,
+      deps: [LOCALE_ID],
+    },
+  ],
+})
+export class MyModule {}
+```
+
+Alternatively, a specific language can be provided like so:
+
+```typescript
+import { RECAPTCHA_LANGUAGE } from "ng-recaptcha";
+
+@NgModule({
+  providers: [
+    {
+      provide: RECAPTCHA_LANGUAGE,
+      useValue: "fr", // use French language
+    },
+  ],
+})
+export class MyModule {}
+```
+
+You can find the list of supported languages in [reCAPTCHA docs](https://developers.google.com/recaptcha/docs/language).
+
+### <a name="example-error-handling"></a>Handling errors
+
+Sometimes reCAPTCHA encounters an error, which is usually a network connectivity problem. It cannot continue until connectivity is restored. By default, reCAPTCHA lets the user know that an error has happened (it's a built-in functionality of reCAPTCHA itself, and this lib is not in control of it). The downside of such behavior is that you, as a developer, don't get notified about this in any way. Opting into such notifications is easy, but comes at a cost of assuming responsibility for informing the user that they should retry. Here's how you would do this:
+
+```typescript
+import { Component } from "@angular/core";
+
+@Component({
+  selector: "my-app",
+  template: `<re-captcha (resolved)="resolved($event)" (errored)="errored($event)" errorMode="handled"></re-captcha>`,
+})
+export class MyApp {
+  resolved(captchaResponse: string) {
+    console.log(`Resolved captcha with response: ${captchaResponse}`);
+  }
+
+  errored() {
+    console.warn(`reCAPTCHA error encountered`);
+  }
+}
+```
+
+You can see this in action by navigating to either [basic example demo](https://dethariel.github.io/ng-recaptcha/basic) or [invisible demo](https://dethariel.github.io/ng-recaptcha/invisible) and trying to interact with reCAPTCHA after setting the network to "Offline".
+
+The `errorMode` input has two possible values -- `"handled"` and `"default"`, with latter being the default as the name suggests. Not specifying `errorMode`, or setting it to anything other than `"handled"` will not invoke your `(errored)` callback, and will instead result in default reCAPTCHA functionality.
+
+The `(errored)` callback will propagate all of the parameters that it receives from `grecaptcha['error-callback']` (which might be none) as an array.
+
+### <a name="example-preload-api"></a>Loading the reCAPTCHA API by yourself [(see in action)](https://dethariel.github.io/ng-recaptcha/v8/preload-api)
+
+By default, the component assumes that the reCAPTCHA API loading will be handled
+by the `RecaptchaLoaderService`. However, you can override that by providing your
+instance of this service to the Angular DI.
+
+The below code snippet is an example of how such a provider can be implemented.
+
+**TL;DR**: there should be an `Observable` that eventually resolves to a
+`grecaptcha`-compatible object (e.g. `grecaptcha` itself).
+
+```html
+<script src="https://www.google.com/recaptcha/api.js?render=explicit&amp;onload=onloadCallback"></script>
+
+<script>
+  // bootstrap the application once the reCAPTCHA api has loaded
+  function onloadCallback() {
+    System.import("app").catch(function (err) {
+      console.error(err);
+    });
+  }
+</script>
+```
+
+```typescript
+import { RecaptchaLoaderService } from "ng-recaptcha";
+
+@Injectable()
+export class PreloadedRecaptchaAPIService {
+  public ready: Observable<ReCaptchaV2.ReCaptcha>;
+
+  constructor() {
+    let readySubject = new BehaviorSubject<ReCaptchaV2.ReCaptcha>(grecaptcha);
+    this.ready = readySubject.asObservable();
+  }
+}
+
+@NgModule({
+  providers: [
+    {
+      provide: RecaptchaLoaderService,
+      useValue: new PreloadedRecaptchaAPIService(),
+    },
+  ],
+})
+export class MyModule {}
+```
+
+### <a name="example-forms"></a>Usage with `required` in forms [(see in action)](https://dethariel.github.io/ng-recaptcha/forms)
+
+It's very easy to put `<re-captcha>` in an Angular form and have it `require`d - just
+add the `required` attribute to the `<re-captcha>` element. Do not forget to import `RecaptchaFormsModule` from `'ng-recaptcha'`!
+
+```typescript
+@Component({
+  selector: "my-form",
+  template: ` <form>
+    <re-captcha [(ngModel)]="formModel.captcha" name="captcha" required siteKey="YOUR_SITE_KEY"></re-captcha>
+  </form>`,
+})
+export class MyForm {
+  formModel = new MyFormModel();
+}
+```
+
+A similar approach can be taken for reactive forms:
+
+```typescript
+@Component({
+  selector: "my-reactive-form",
+  template: `
+    <form [formGroup]="reactiveForm">
+      <re-captcha formControlName="recaptchaReactive"></re-captcha>
+      <button [disabled]="reactiveForm.invalid">Submit</button>
+    </form>
+  `,
+})
+export class MyReactiveForm {
+  reactiveForm: FormGroup;
+
+  ngOnInit() {
+    this.reactiveForm = new FormGroup({
+      recaptchaReactive: new FormControl(null, Validators.required),
+    });
+  }
+}
+```
+
+### <a name="example-invisible"></a>Working with invisible reCAPTCHA [(see in action)](https://dethariel.github.io/ng-recaptcha/invisible)
+
+Working with [invisible reCAPTCHA](https://developers.google.com/recaptcha/docs/invisible) is almost the same as with regular one.
+First, you need to provide the right size:
+
+```html
+<re-captcha size="invisible" ...></re-captcha>
+```
+
+You will also need to invoke the [`"execute()"`](https://developers.google.com/recaptcha/docs/invisible#programmatic_execute) method manually. This can be done by either obtaining a reference to `RecaptchaComponent` via `@ViewChild()`, or by using inline template reference:
+
+```html
+<re-captcha #captchaRef="reCaptcha" ...></re-captcha>
+...
+<button (click)="captchaRef.execute()">Submit</button>
+```
+
+Normally you would only submit a form when recaptcha response has been received. This can be achieved by reacting to `(resolved)` event and invoking submit logic when the captcha response is truthy (this will not try to submit the form when recaptcha response has expired). A sample implementation would look like this:
+
+```typescript
+@Component({
+  selector: "my-form",
+  template: ` <form>
+    <re-captcha
+      #captchaRef="reCaptcha"
+      siteKey="YOUR_SITE_KEY"
+      size="invisible"
+      (resolved)="$event && submit($event)"
+    ></re-captcha>
+    <button (click)="captchaRef.execute()">Submit</button>
+  </form>`,
+})
+export class MyForm {
+  public submit(captchaResponse: string): void {
+    this.http.post({
+      captcha: captchaResponse,
+      /* ... */
+    });
+  }
+}
+```
+
+### <a name="example-resizing"></a>Resizing
+
+Making reCAPTCHA responsive is sometimes necessary, especially when working with mobile devices. You can use css-transforms to achieve that as in [this StackOverflow answer](https://stackoverflow.com/a/29521983/2645305), which is also ell-described in [this blog post](https://geekgoddess.com/how-to-resize-the-google-nocaptcha-recaptcha/). You can also take a look at a [live example](https://stackblitz.com/edit/ng-recaptcha-example-uncvxq?file=src/app/app.component.html) of how this might be implemented. This boils down to
+
+```html
+<div style="transform:scale(0.7);transform-origin:0;">
+  <re-captcha></re-captcha>
+</div>
+```
+
+### <a name="example-systemjs"></a>SystemJS configuration
+
+To configure the package to work with SystemJS, you would configure it approximately like that (assuming you've installed `ng-recaptcha` using `npm`):
+
+```javascript
+// SystemJS config file
+(function () {
+  System.config({
+    paths: {
+      "npm:": "/node_modules/",
+    },
+    map: {
+      "ng-recaptcha": "npm:ng-recaptcha",
+    },
+    packages: {
+      "ng-recaptcha": { main: "./index.js" },
+    },
+  });
+})();
+```
+
+### <a name="example-different-url"></a>Loading from a different location
+
+Since `"google.com"` domain might be unavailable in some countries, reCAPTCHA core team has a solution for that - using `"recaptcha.net"` domain. You can configure the component to use that by providing the `RECAPTCHA_BASE_URL` token, for example:
+
+```javascript
+import { RECAPTCHA_BASE_URL } from "ng-recaptcha";
+
+@NgModule({
+  providers: [
+    {
+      provide: RECAPTCHA_BASE_URL,
+      useValue: "https://recaptcha.net/recaptcha/api.js", // use recaptcha.net script source for some of our users
+    },
+  ],
+})
+export class MyModule {}
+```
+
+### <a name="example-csp-nonce"></a>Specifying nonce for Content-Security-Policy
+
+Per [reCAPTCHA FAQ on CSP](https://developers.google.com/recaptcha/docs/faq#im-using-content-security-policy-csp-on-my-website-how-can-i-configure-it-to-work-with-recaptcha), the recommended approach for that is to supply nonce to the script tag. This is possible by providing the `RECAPTCHA_NONCE` token, for example:
+
+```javascript
+import { RECAPTCHA_NONCE } from "ng-recaptcha";
+
+@NgModule({
+  providers: [
+    {
+      provide: RECAPTCHA_NONCE,
+      useValue: "<YOUR_NONCE_VALUE>",
+    },
+  ],
+})
+export class MyModule {}
+```
+
+### <a name="example-v3-all-actions"></a>Listening for all actions with reCAPTCHA v3
+
+More often than not you will need to only get a reCAPTCHA token with the action the user is currently taking, and submit it to the backend at that time. However, having a single listener for all events will be desirable.
+
+There is an `Observable` exactly for that purpose: `ReCaptchaV3Service.onExecute`. It emits a value every time a token is received from reCAPTCHA. The shape of payload it operates on is defined via `OnExecuteData` interface:
+
+```ts
+interface OnExecuteData {
+  action: string;
+  token: string;
+}
+```
+
+where `action` is the name of the action that has been executed, and `token` is what reCAPTCHA v3 provided when executing that action.
+
+Here's how you would potentially set this up:
+
+```ts
+import { OnExecuteData, ReCaptchaV3Service } from "ng-recaptcha";
+
+@Component({
+  selector: "my-component",
+  templateUrl: "./v3-demo.component.html",
+})
+export class MyComponent implements OnInit, OnDestroy {
+  private subscription: Subscription;
+
+  constructor(private recaptchaV3Service: ReCaptchaV3Service) {}
+
+  public ngOnInit() {
+    this.subscription = this.recaptchaV3Service.onExecute.subscribe((data: OnExecuteData) => {
+      this.handleRecaptchaExecute(data.action, data.token);
+    });
+  }
+
+  public ngOnDestroy() {
+    if (this.subscription) {
+      this.subscription.unsubscribe();
+    }
+  }
+}
+```
+
+There are a couple things to keep in mind:
+
+- `onExecute` will trigger for **all** actions. If you only need to bulk-process some actions, and not others - you will have to apply filtering yourself.
+- `onExecute` observable will provide you with all the events emitted **after** you have subscribed to it - it doesn't keep references to the previously emitted actions. So make sure you add such a subscription as early in your code as you feel is necessary.
+- `onExecute` does not emit anything for when a `grecaptcha` error occurs. Use `onExecuteError` Observable for that.
+
+### <a name="hide-recaptcha-badge"></a>Hiding reCAPTCHA badge
+
+To start with, this is not strictly under `ng-recaptcha` library control.
+However, there is a way of doing so (albeit subject to certain conditions).
+Please refer to the [FAQ section of reCAPTCHA documentation](https://developers.google.com/recaptcha/docs/faq#id-like-to-hide-the-recaptcha-badge.-what-is-allowed) to get an idea of what you're required to do.

+ 9 - 0
Frontend/RiffMasterFront/node_modules/ng-recaptcha/esm2022/index.mjs

@@ -0,0 +1,9 @@
+export { RecaptchaComponent } from "./lib/recaptcha.component";
+export { RecaptchaLoaderService } from "./lib/recaptcha-loader.service";
+export { RecaptchaModule } from "./lib/recaptcha.module";
+export { RecaptchaV3Module } from "./lib/recaptcha-v3.module";
+export { ReCaptchaV3Service } from "./lib/recaptcha-v3.service";
+export { RecaptchaFormsModule } from "./lib/recaptcha-forms.module";
+export { RecaptchaValueAccessorDirective } from "./lib/recaptcha-value-accessor.directive";
+export { RECAPTCHA_LANGUAGE, RECAPTCHA_BASE_URL, RECAPTCHA_NONCE, RECAPTCHA_SETTINGS, RECAPTCHA_V3_SITE_KEY, } from "./lib/tokens";
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9uZy1yZWNhcHRjaGEvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBNEIsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFxQyxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRW5HLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRTNGLE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIscUJBQXFCLEdBQ3RCLE1BQU0sY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgUmVjYXB0Y2hhQ29tcG9uZW50LCBSZWNhcHRjaGFFcnJvclBhcmFtZXRlcnMgfSBmcm9tIFwiLi9saWIvcmVjYXB0Y2hhLmNvbXBvbmVudFwiO1xuZXhwb3J0IHsgUmVjYXB0Y2hhTG9hZGVyU2VydmljZSB9IGZyb20gXCIuL2xpYi9yZWNhcHRjaGEtbG9hZGVyLnNlcnZpY2VcIjtcbmV4cG9ydCB7IFJlY2FwdGNoYU1vZHVsZSB9IGZyb20gXCIuL2xpYi9yZWNhcHRjaGEubW9kdWxlXCI7XG5leHBvcnQgeyBSZWNhcHRjaGFTZXR0aW5ncyB9IGZyb20gXCIuL2xpYi9yZWNhcHRjaGEtc2V0dGluZ3NcIjtcblxuZXhwb3J0IHsgUmVjYXB0Y2hhVjNNb2R1bGUgfSBmcm9tIFwiLi9saWIvcmVjYXB0Y2hhLXYzLm1vZHVsZVwiO1xuZXhwb3J0IHsgT25FeGVjdXRlRGF0YSwgT25FeGVjdXRlRXJyb3JEYXRhLCBSZUNhcHRjaGFWM1NlcnZpY2UgfSBmcm9tIFwiLi9saWIvcmVjYXB0Y2hhLXYzLnNlcnZpY2VcIjtcblxuZXhwb3J0IHsgUmVjYXB0Y2hhRm9ybXNNb2R1bGUgfSBmcm9tIFwiLi9saWIvcmVjYXB0Y2hhLWZvcm1zLm1vZHVsZVwiO1xuZXhwb3J0IHsgUmVjYXB0Y2hhVmFsdWVBY2Nlc3NvckRpcmVjdGl2ZSB9IGZyb20gXCIuL2xpYi9yZWNhcHRjaGEtdmFsdWUtYWNjZXNzb3IuZGlyZWN0aXZlXCI7XG5cbmV4cG9ydCB7XG4gIFJFQ0FQVENIQV9MQU5HVUFHRSxcbiAgUkVDQVBUQ0hBX0JBU0VfVVJMLFxuICBSRUNBUFRDSEFfTk9OQ0UsXG4gIFJFQ0FQVENIQV9TRVRUSU5HUyxcbiAgUkVDQVBUQ0hBX1YzX1NJVEVfS0VZLFxufSBmcm9tIFwiLi9saWIvdG9rZW5zXCI7XG4iXX0=

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 16 - 0
Frontend/RiffMasterFront/node_modules/ng-recaptcha/esm2022/lib/load-script.mjs


+ 16 - 0
Frontend/RiffMasterFront/node_modules/ng-recaptcha/esm2022/lib/recaptcha-common.module.mjs

@@ -0,0 +1,16 @@
+import { NgModule } from "@angular/core";
+import { RecaptchaComponent } from "./recaptcha.component";
+import * as i0 from "@angular/core";
+export class RecaptchaCommonModule {
+    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RecaptchaCommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
+    static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.1", ngImport: i0, type: RecaptchaCommonModule, declarations: [RecaptchaComponent], exports: [RecaptchaComponent] }); }
+    static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RecaptchaCommonModule }); }
+}
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RecaptchaCommonModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    declarations: [RecaptchaComponent],
+                    exports: [RecaptchaComponent],
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjYXB0Y2hhLWNvbW1vbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1yZWNhcHRjaGEvc3JjL2xpYi9yZWNhcHRjaGEtY29tbW9uLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQU0zRCxNQUFNLE9BQU8scUJBQXFCOzhHQUFyQixxQkFBcUI7K0dBQXJCLHFCQUFxQixpQkFIakIsa0JBQWtCLGFBQ3ZCLGtCQUFrQjsrR0FFakIscUJBQXFCOzsyRkFBckIscUJBQXFCO2tCQUpqQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLGtCQUFrQixDQUFDO29CQUNsQyxPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztpQkFDOUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbmltcG9ydCB7IFJlY2FwdGNoYUNvbXBvbmVudCB9IGZyb20gXCIuL3JlY2FwdGNoYS5jb21wb25lbnRcIjtcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbUmVjYXB0Y2hhQ29tcG9uZW50XSxcbiAgZXhwb3J0czogW1JlY2FwdGNoYUNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIFJlY2FwdGNoYUNvbW1vbk1vZHVsZSB7fVxuIl19

+ 19 - 0
Frontend/RiffMasterFront/node_modules/ng-recaptcha/esm2022/lib/recaptcha-forms.module.mjs

@@ -0,0 +1,19 @@
+import { NgModule } from "@angular/core";
+import { FormsModule } from "@angular/forms";
+import { RecaptchaCommonModule } from "./recaptcha-common.module";
+import { RecaptchaValueAccessorDirective } from "./recaptcha-value-accessor.directive";
+import * as i0 from "@angular/core";
+export class RecaptchaFormsModule {
+    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RecaptchaFormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
+    static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.1", ngImport: i0, type: RecaptchaFormsModule, declarations: [RecaptchaValueAccessorDirective], imports: [FormsModule, RecaptchaCommonModule], exports: [RecaptchaValueAccessorDirective] }); }
+    static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RecaptchaFormsModule, imports: [FormsModule, RecaptchaCommonModule] }); }
+}
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RecaptchaFormsModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    declarations: [RecaptchaValueAccessorDirective],
+                    exports: [RecaptchaValueAccessorDirective],
+                    imports: [FormsModule, RecaptchaCommonModule],
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjYXB0Y2hhLWZvcm1zLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXJlY2FwdGNoYS9zcmMvbGliL3JlY2FwdGNoYS1mb3Jtcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7O0FBT3ZGLE1BQU0sT0FBTyxvQkFBb0I7OEdBQXBCLG9CQUFvQjsrR0FBcEIsb0JBQW9CLGlCQUpoQiwrQkFBK0IsYUFFcEMsV0FBVyxFQUFFLHFCQUFxQixhQURsQywrQkFBK0I7K0dBRzlCLG9CQUFvQixZQUZyQixXQUFXLEVBQUUscUJBQXFCOzsyRkFFakMsb0JBQW9CO2tCQUxoQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLCtCQUErQixDQUFDO29CQUMvQyxPQUFPLEVBQUUsQ0FBQywrQkFBK0IsQ0FBQztvQkFDMUMsT0FBTyxFQUFFLENBQUMsV0FBVyxFQUFFLHFCQUFxQixDQUFDO2lCQUM5QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5cbmltcG9ydCB7IFJlY2FwdGNoYUNvbW1vbk1vZHVsZSB9IGZyb20gXCIuL3JlY2FwdGNoYS1jb21tb24ubW9kdWxlXCI7XG5pbXBvcnQgeyBSZWNhcHRjaGFWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlIH0gZnJvbSBcIi4vcmVjYXB0Y2hhLXZhbHVlLWFjY2Vzc29yLmRpcmVjdGl2ZVwiO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtSZWNhcHRjaGFWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlXSxcbiAgZXhwb3J0czogW1JlY2FwdGNoYVZhbHVlQWNjZXNzb3JEaXJlY3RpdmVdLFxuICBpbXBvcnRzOiBbRm9ybXNNb2R1bGUsIFJlY2FwdGNoYUNvbW1vbk1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIFJlY2FwdGNoYUZvcm1zTW9kdWxlIHt9XG4iXX0=

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 65 - 0
Frontend/RiffMasterFront/node_modules/ng-recaptcha/esm2022/lib/recaptcha-loader.service.mjs


+ 2 - 0
Frontend/RiffMasterFront/node_modules/ng-recaptcha/esm2022/lib/recaptcha-settings.mjs

@@ -0,0 +1,2 @@
+export {};
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjYXB0Y2hhLXNldHRpbmdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctcmVjYXB0Y2hhL3NyYy9saWIvcmVjYXB0Y2hhLXNldHRpbmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFJlY2FwdGNoYVNldHRpbmdzIHtcbiAgc2l0ZUtleT86IHN0cmluZztcbiAgdGhlbWU/OiBSZUNhcHRjaGFWMi5UaGVtZTtcbiAgdHlwZT86IFJlQ2FwdGNoYVYyLlR5cGU7XG4gIHNpemU/OiBSZUNhcHRjaGFWMi5TaXplO1xuICBiYWRnZT86IFJlQ2FwdGNoYVYyLkJhZGdlO1xufVxuIl19

+ 15 - 0
Frontend/RiffMasterFront/node_modules/ng-recaptcha/esm2022/lib/recaptcha-v3.module.mjs

@@ -0,0 +1,15 @@
+import { NgModule } from "@angular/core";
+import { ReCaptchaV3Service } from "./recaptcha-v3.service";
+import * as i0 from "@angular/core";
+export class RecaptchaV3Module {
+    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RecaptchaV3Module, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
+    static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.1", ngImport: i0, type: RecaptchaV3Module }); }
+    static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RecaptchaV3Module, providers: [ReCaptchaV3Service] }); }
+}
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RecaptchaV3Module, decorators: [{
+            type: NgModule,
+            args: [{
+                    providers: [ReCaptchaV3Service],
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjYXB0Y2hhLXYzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXJlY2FwdGNoYS9zcmMvbGliL3JlY2FwdGNoYS12My5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFLNUQsTUFBTSxPQUFPLGlCQUFpQjs4R0FBakIsaUJBQWlCOytHQUFqQixpQkFBaUI7K0dBQWpCLGlCQUFpQixhQUZqQixDQUFDLGtCQUFrQixDQUFDOzsyRkFFcEIsaUJBQWlCO2tCQUg3QixRQUFRO21CQUFDO29CQUNSLFNBQVMsRUFBRSxDQUFDLGtCQUFrQixDQUFDO2lCQUNoQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuaW1wb3J0IHsgUmVDYXB0Y2hhVjNTZXJ2aWNlIH0gZnJvbSBcIi4vcmVjYXB0Y2hhLXYzLnNlcnZpY2VcIjtcblxuQE5nTW9kdWxlKHtcbiAgcHJvdmlkZXJzOiBbUmVDYXB0Y2hhVjNTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgUmVjYXB0Y2hhVjNNb2R1bGUge31cbiJdfQ==

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 141 - 0
Frontend/RiffMasterFront/node_modules/ng-recaptcha/esm2022/lib/recaptcha-v3.service.mjs


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 67 - 0
Frontend/RiffMasterFront/node_modules/ng-recaptcha/esm2022/lib/recaptcha-value-accessor.directive.mjs


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 169 - 0
Frontend/RiffMasterFront/node_modules/ng-recaptcha/esm2022/lib/recaptcha.component.mjs


+ 19 - 0
Frontend/RiffMasterFront/node_modules/ng-recaptcha/esm2022/lib/recaptcha.module.mjs

@@ -0,0 +1,19 @@
+import { NgModule } from "@angular/core";
+import { RecaptchaCommonModule } from "./recaptcha-common.module";
+import { RecaptchaLoaderService } from "./recaptcha-loader.service";
+import { RecaptchaComponent } from "./recaptcha.component";
+import * as i0 from "@angular/core";
+export class RecaptchaModule {
+    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RecaptchaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
+    static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.1", ngImport: i0, type: RecaptchaModule, imports: [RecaptchaCommonModule], exports: [RecaptchaComponent] }); }
+    static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RecaptchaModule, providers: [RecaptchaLoaderService], imports: [RecaptchaCommonModule] }); }
+}
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RecaptchaModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    exports: [RecaptchaComponent],
+                    imports: [RecaptchaCommonModule],
+                    providers: [RecaptchaLoaderService],
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjYXB0Y2hhLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXJlY2FwdGNoYS9zcmMvbGliL3JlY2FwdGNoYS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFPM0QsTUFBTSxPQUFPLGVBQWU7OEdBQWYsZUFBZTsrR0FBZixlQUFlLFlBSGhCLHFCQUFxQixhQURyQixrQkFBa0I7K0dBSWpCLGVBQWUsYUFGZixDQUFDLHNCQUFzQixDQUFDLFlBRHpCLHFCQUFxQjs7MkZBR3BCLGVBQWU7a0JBTDNCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsa0JBQWtCLENBQUM7b0JBQzdCLE9BQU8sRUFBRSxDQUFDLHFCQUFxQixDQUFDO29CQUNoQyxTQUFTLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDcEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbmltcG9ydCB7IFJlY2FwdGNoYUNvbW1vbk1vZHVsZSB9IGZyb20gXCIuL3JlY2FwdGNoYS1jb21tb24ubW9kdWxlXCI7XG5pbXBvcnQgeyBSZWNhcHRjaGFMb2FkZXJTZXJ2aWNlIH0gZnJvbSBcIi4vcmVjYXB0Y2hhLWxvYWRlci5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBSZWNhcHRjaGFDb21wb25lbnQgfSBmcm9tIFwiLi9yZWNhcHRjaGEuY29tcG9uZW50XCI7XG5cbkBOZ01vZHVsZSh7XG4gIGV4cG9ydHM6IFtSZWNhcHRjaGFDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbUmVjYXB0Y2hhQ29tbW9uTW9kdWxlXSxcbiAgcHJvdmlkZXJzOiBbUmVjYXB0Y2hhTG9hZGVyU2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIFJlY2FwdGNoYU1vZHVsZSB7fVxuIl19

+ 7 - 0
Frontend/RiffMasterFront/node_modules/ng-recaptcha/esm2022/lib/tokens.mjs

@@ -0,0 +1,7 @@
+import { InjectionToken } from "@angular/core";
+export const RECAPTCHA_LANGUAGE = new InjectionToken("recaptcha-language");
+export const RECAPTCHA_BASE_URL = new InjectionToken("recaptcha-base-url");
+export const RECAPTCHA_NONCE = new InjectionToken("recaptcha-nonce-tag");
+export const RECAPTCHA_SETTINGS = new InjectionToken("recaptcha-settings");
+export const RECAPTCHA_V3_SITE_KEY = new InjectionToken("recaptcha-v3-site-key");
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctcmVjYXB0Y2hhL3NyYy9saWIvdG9rZW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJL0MsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxjQUFjLENBQVMsb0JBQW9CLENBQUMsQ0FBQztBQUNuRixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLGNBQWMsQ0FBUyxvQkFBb0IsQ0FBQyxDQUFDO0FBQ25GLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxJQUFJLGNBQWMsQ0FBUyxxQkFBcUIsQ0FBQyxDQUFDO0FBQ2pGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLElBQUksY0FBYyxDQUFvQixvQkFBb0IsQ0FBQyxDQUFDO0FBQzlGLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLElBQUksY0FBYyxDQUFTLHVCQUF1QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbmltcG9ydCB7IFJlY2FwdGNoYVNldHRpbmdzIH0gZnJvbSBcIi4vcmVjYXB0Y2hhLXNldHRpbmdzXCI7XG5cbmV4cG9ydCBjb25zdCBSRUNBUFRDSEFfTEFOR1VBR0UgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPihcInJlY2FwdGNoYS1sYW5ndWFnZVwiKTtcbmV4cG9ydCBjb25zdCBSRUNBUFRDSEFfQkFTRV9VUkwgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPihcInJlY2FwdGNoYS1iYXNlLXVybFwiKTtcbmV4cG9ydCBjb25zdCBSRUNBUFRDSEFfTk9OQ0UgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPihcInJlY2FwdGNoYS1ub25jZS10YWdcIik7XG5leHBvcnQgY29uc3QgUkVDQVBUQ0hBX1NFVFRJTkdTID0gbmV3IEluamVjdGlvblRva2VuPFJlY2FwdGNoYVNldHRpbmdzPihcInJlY2FwdGNoYS1zZXR0aW5nc1wiKTtcbmV4cG9ydCBjb25zdCBSRUNBUFRDSEFfVjNfU0lURV9LRVkgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPihcInJlY2FwdGNoYS12My1zaXRlLWtleVwiKTtcbiJdfQ==

+ 5 - 0
Frontend/RiffMasterFront/node_modules/ng-recaptcha/esm2022/ng-recaptcha.mjs

@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './index';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctcmVjYXB0Y2hhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvbmctcmVjYXB0Y2hhL3NyYy9uZy1yZWNhcHRjaGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=

+ 514 - 0
Frontend/RiffMasterFront/node_modules/ng-recaptcha/fesm2022/ng-recaptcha.mjs

@@ -0,0 +1,514 @@
+import * as i0 from '@angular/core';
+import { InjectionToken, PLATFORM_ID, Injectable, Inject, Optional, EventEmitter, Component, Input, HostBinding, Output, NgModule, forwardRef, Directive, HostListener } from '@angular/core';
+import { isPlatformBrowser } from '@angular/common';
+import { of, BehaviorSubject, Subject } from 'rxjs';
+import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
+
+const RECAPTCHA_LANGUAGE = new InjectionToken("recaptcha-language");
+const RECAPTCHA_BASE_URL = new InjectionToken("recaptcha-base-url");
+const RECAPTCHA_NONCE = new InjectionToken("recaptcha-nonce-tag");
+const RECAPTCHA_SETTINGS = new InjectionToken("recaptcha-settings");
+const RECAPTCHA_V3_SITE_KEY = new InjectionToken("recaptcha-v3-site-key");
+
+function loadScript(renderMode, onLoaded, urlParams, url, nonce) {
+    window.ng2recaptchaloaded = () => {
+        onLoaded(grecaptcha);
+    };
+    const script = document.createElement("script");
+    script.innerHTML = "";
+    const baseUrl = url || "https://www.google.com/recaptcha/api.js";
+    script.src = `${baseUrl}?render=${renderMode}&onload=ng2recaptchaloaded${urlParams}`;
+    if (nonce) {
+        script.nonce = nonce;
+    }
+    script.async = true;
+    script.defer = true;
+    document.head.appendChild(script);
+}
+const loader = { loadScript };
+
+class RecaptchaLoaderService {
+    /**
+     * @internal
+     * @nocollapse
+     */
+    static { this.ready = null; }
+    constructor(
+    // eslint-disable-next-line @typescript-eslint/ban-types
+    platformId, language, baseUrl, nonce, v3SiteKey) {
+        this.platformId = platformId;
+        this.language = language;
+        this.baseUrl = baseUrl;
+        this.nonce = nonce;
+        this.v3SiteKey = v3SiteKey;
+        this.init();
+        this.ready = isPlatformBrowser(this.platformId) ? RecaptchaLoaderService.ready.asObservable() : of();
+    }
+    /** @internal */
+    init() {
+        if (RecaptchaLoaderService.ready) {
+            return;
+        }
+        if (isPlatformBrowser(this.platformId)) {
+            const subject = new BehaviorSubject(null);
+            RecaptchaLoaderService.ready = subject;
+            const langParam = this.language ? "&hl=" + this.language : "";
+            const renderMode = this.v3SiteKey || "explicit";
+            loader.loadScript(renderMode, (grecaptcha) => subject.next(grecaptcha), langParam, this.baseUrl, this.nonce);
+        }
+    }
+    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RecaptchaLoaderService, deps: [{ token: PLATFORM_ID }, { token: RECAPTCHA_LANGUAGE, optional: true }, { token: RECAPTCHA_BASE_URL, optional: true }, { token: RECAPTCHA_NONCE, optional: true }, { token: RECAPTCHA_V3_SITE_KEY, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
+    static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RecaptchaLoaderService }); }
+}
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RecaptchaLoaderService, decorators: [{
+            type: Injectable
+        }], ctorParameters: function () { return [{ type: Object, decorators: [{
+                    type: Inject,
+                    args: [PLATFORM_ID]
+                }] }, { type: undefined, decorators: [{
+                    type: Optional
+                }, {
+                    type: Inject,
+                    args: [RECAPTCHA_LANGUAGE]
+                }] }, { type: undefined, decorators: [{
+                    type: Optional
+                }, {
+                    type: Inject,
+                    args: [RECAPTCHA_BASE_URL]
+                }] }, { type: undefined, decorators: [{
+                    type: Optional
+                }, {
+                    type: Inject,
+                    args: [RECAPTCHA_NONCE]
+                }] }, { type: undefined, decorators: [{
+                    type: Optional
+                }, {
+                    type: Inject,
+                    args: [RECAPTCHA_V3_SITE_KEY]
+                }] }]; } });
+
+let nextId = 0;
+class RecaptchaComponent {
+    constructor(elementRef, loader, zone, settings) {
+        this.elementRef = elementRef;
+        this.loader = loader;
+        this.zone = zone;
+        this.id = `ngrecaptcha-${nextId++}`;
+        this.errorMode = "default";
+        this.resolved = new EventEmitter();
+        /**
+         * @deprecated `(error) output will be removed in the next major version. Use (errored) instead
+         */
+        // eslint-disable-next-line @angular-eslint/no-output-native
+        this.error = new EventEmitter();
+        this.errored = new EventEmitter();
+        if (settings) {
+            this.siteKey = settings.siteKey;
+            this.theme = settings.theme;
+            this.type = settings.type;
+            this.size = settings.size;
+            this.badge = settings.badge;
+        }
+    }
+    ngAfterViewInit() {
+        this.subscription = this.loader.ready.subscribe((grecaptcha) => {
+            if (grecaptcha != null && grecaptcha.render instanceof Function) {
+                this.grecaptcha = grecaptcha;
+                this.renderRecaptcha();
+            }
+        });
+    }
+    ngOnDestroy() {
+        // reset the captcha to ensure it does not leave anything behind
+        // after the component is no longer needed
+        this.grecaptchaReset();
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+    /**
+     * Executes the invisible recaptcha.
+     * Does nothing if component's size is not set to "invisible".
+     */
+    execute() {
+        if (this.size !== "invisible") {
+            return;
+        }
+        if (this.widget != null) {
+            void this.grecaptcha.execute(this.widget);
+        }
+        else {
+            // delay execution of recaptcha until it actually renders
+            this.executeRequested = true;
+        }
+    }
+    reset() {
+        if (this.widget != null) {
+            if (this.grecaptcha.getResponse(this.widget)) {
+                // Only emit an event in case if something would actually change.
+                // That way we do not trigger "touching" of the control if someone does a "reset"
+                // on a non-resolved captcha.
+                this.resolved.emit(null);
+            }
+            this.grecaptchaReset();
+        }
+    }
+    /**
+     * ⚠️ Warning! Use this property at your own risk!
+     *
+     * While this member is `public`, it is not a part of the component's public API.
+     * The semantic versioning guarantees _will not be honored_! Thus, you might find that this property behavior changes in incompatible ways in minor or even patch releases.
+     * You are **strongly advised** against using this property.
+     * Instead, use more idiomatic ways to get reCAPTCHA value, such as `resolved` EventEmitter, or form-bound methods (ngModel, formControl, and the likes).å
+     */
+    get __unsafe_widgetValue() {
+        return this.widget != null ? this.grecaptcha.getResponse(this.widget) : null;
+    }
+    /** @internal */
+    expired() {
+        this.resolved.emit(null);
+    }
+    /** @internal */
+    onError(args) {
+        this.error.emit(args);
+        this.errored.emit(args);
+    }
+    /** @internal */
+    captchaResponseCallback(response) {
+        this.resolved.emit(response);
+    }
+    /** @internal */
+    grecaptchaReset() {
+        if (this.widget != null) {
+            this.zone.runOutsideAngular(() => this.grecaptcha.reset(this.widget));
+        }
+    }
+    /** @internal */
+    renderRecaptcha() {
+        // This `any` can be removed after @types/grecaptcha get updated
+        const renderOptions = {
+            badge: this.badge,
+            callback: (response) => {
+                this.zone.run(() => this.captchaResponseCallback(response));
+            },
+            "expired-callback": () => {
+                this.zone.run(() => this.expired());
+            },
+            sitekey: this.siteKey,
+            size: this.size,
+            tabindex: this.tabIndex,
+            theme: this.theme,
+            type: this.type,
+        };
+        if (this.errorMode === "handled") {
+            renderOptions["error-callback"] = (...args) => {
+                this.zone.run(() => this.onError(args));
+            };
+        }
+        this.widget = this.grecaptcha.render(this.elementRef.nativeElement, renderOptions);
+        if (this.executeRequested === true) {
+            this.executeRequested = false;
+            this.execute();
+        }
+    }
+    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RecaptchaComponent, deps: [{ token: i0.ElementRef }, { token: RecaptchaLoaderService }, { token: i0.NgZone }, { token: RECAPTCHA_SETTINGS, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
+    static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: RecaptchaComponent, selector: "re-captcha", inputs: { id: "id", siteKey: "siteKey", theme: "theme", type: "type", size: "size", tabIndex: "tabIndex", badge: "badge", errorMode: "errorMode" }, outputs: { resolved: "resolved", error: "error", errored: "errored" }, host: { properties: { "attr.id": "this.id" } }, exportAs: ["reCaptcha"], ngImport: i0, template: ``, isInline: true }); }
+}
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RecaptchaComponent, decorators: [{
+            type: Component,
+            args: [{
+                    exportAs: "reCaptcha",
+                    selector: "re-captcha",
+                    template: ``,
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: RecaptchaLoaderService }, { type: i0.NgZone }, { type: undefined, decorators: [{
+                    type: Optional
+                }, {
+                    type: Inject,
+                    args: [RECAPTCHA_SETTINGS]
+                }] }]; }, propDecorators: { id: [{
+                type: Input
+            }, {
+                type: HostBinding,
+                args: ["attr.id"]
+            }], siteKey: [{
+                type: Input
+            }], theme: [{
+                type: Input
+            }], type: [{
+                type: Input
+            }], size: [{
+                type: Input
+            }], tabIndex: [{
+                type: Input
+            }], badge: [{
+                type: Input
+            }], errorMode: [{
+                type: Input
+            }], resolved: [{
+                type: Output
+            }], error: [{
+                type: Output
+            }], errored: [{
+                type: Output
+            }] } });
+
+class RecaptchaCommonModule {
+    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RecaptchaCommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
+    static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.1", ngImport: i0, type: RecaptchaCommonModule, declarations: [RecaptchaComponent], exports: [RecaptchaComponent] }); }
+    static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RecaptchaCommonModule }); }
+}
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RecaptchaCommonModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    declarations: [RecaptchaComponent],
+                    exports: [RecaptchaComponent],
+                }]
+        }] });
+
+class RecaptchaModule {
+    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RecaptchaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
+    static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.1", ngImport: i0, type: RecaptchaModule, imports: [RecaptchaCommonModule], exports: [RecaptchaComponent] }); }
+    static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RecaptchaModule, providers: [RecaptchaLoaderService], imports: [RecaptchaCommonModule] }); }
+}
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RecaptchaModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    exports: [RecaptchaComponent],
+                    imports: [RecaptchaCommonModule],
+                    providers: [RecaptchaLoaderService],
+                }]
+        }] });
+
+/**
+ * The main service for working with reCAPTCHA v3 APIs.
+ *
+ * Use the `execute` method for executing a single action, and
+ * `onExecute` observable for listening to all actions at once.
+ */
+class ReCaptchaV3Service {
+    constructor(zone, siteKey, 
+    // eslint-disable-next-line @typescript-eslint/ban-types
+    platformId, baseUrl, nonce, language) {
+        /** @internal */
+        this.onLoadComplete = (grecaptcha) => {
+            this.grecaptcha = grecaptcha;
+            if (this.actionBacklog && this.actionBacklog.length > 0) {
+                this.actionBacklog.forEach(([action, subject]) => this.executeActionWithSubject(action, subject));
+                this.actionBacklog = undefined;
+            }
+        };
+        this.zone = zone;
+        this.isBrowser = isPlatformBrowser(platformId);
+        this.siteKey = siteKey;
+        this.nonce = nonce;
+        this.language = language;
+        this.baseUrl = baseUrl;
+        this.init();
+    }
+    get onExecute() {
+        if (!this.onExecuteSubject) {
+            this.onExecuteSubject = new Subject();
+            this.onExecuteObservable = this.onExecuteSubject.asObservable();
+        }
+        return this.onExecuteObservable;
+    }
+    get onExecuteError() {
+        if (!this.onExecuteErrorSubject) {
+            this.onExecuteErrorSubject = new Subject();
+            this.onExecuteErrorObservable = this.onExecuteErrorSubject.asObservable();
+        }
+        return this.onExecuteErrorObservable;
+    }
+    /**
+     * Executes the provided `action` with reCAPTCHA v3 API.
+     * Use the emitted token value for verification purposes on the backend.
+     *
+     * For more information about reCAPTCHA v3 actions and tokens refer to the official documentation at
+     * https://developers.google.com/recaptcha/docs/v3.
+     *
+     * @param {string} action the action to execute
+     * @returns {Observable<string>} an `Observable` that will emit the reCAPTCHA v3 string `token` value whenever ready.
+     * The returned `Observable` completes immediately after emitting a value.
+     */
+    execute(action) {
+        const subject = new Subject();
+        if (this.isBrowser) {
+            if (!this.grecaptcha) {
+                if (!this.actionBacklog) {
+                    this.actionBacklog = [];
+                }
+                this.actionBacklog.push([action, subject]);
+            }
+            else {
+                this.executeActionWithSubject(action, subject);
+            }
+        }
+        return subject.asObservable();
+    }
+    /** @internal */
+    executeActionWithSubject(action, subject) {
+        // eslint-disable-next-line @typescript-eslint/no-explicit-any
+        const onError = (error) => {
+            this.zone.run(() => {
+                subject.error(error);
+                if (this.onExecuteErrorSubject) {
+                    // We don't know any better at this point, unfortunately, so have to resort to `any`
+                    // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
+                    this.onExecuteErrorSubject.next({ action, error });
+                }
+            });
+        };
+        this.zone.runOutsideAngular(() => {
+            try {
+                this.grecaptcha.execute(this.siteKey, { action }).then((token) => {
+                    this.zone.run(() => {
+                        subject.next(token);
+                        subject.complete();
+                        if (this.onExecuteSubject) {
+                            this.onExecuteSubject.next({ action, token });
+                        }
+                    });
+                }, onError);
+            }
+            catch (e) {
+                onError(e);
+            }
+        });
+    }
+    /** @internal */
+    init() {
+        if (this.isBrowser) {
+            if ("grecaptcha" in window) {
+                this.grecaptcha = grecaptcha;
+            }
+            else {
+                const langParam = this.language ? "&hl=" + this.language : "";
+                loader.loadScript(this.siteKey, this.onLoadComplete, langParam, this.baseUrl, this.nonce);
+            }
+        }
+    }
+    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ReCaptchaV3Service, deps: [{ token: i0.NgZone }, { token: RECAPTCHA_V3_SITE_KEY }, { token: PLATFORM_ID }, { token: RECAPTCHA_BASE_URL, optional: true }, { token: RECAPTCHA_NONCE, optional: true }, { token: RECAPTCHA_LANGUAGE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
+    static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ReCaptchaV3Service }); }
+}
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ReCaptchaV3Service, decorators: [{
+            type: Injectable
+        }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: undefined, decorators: [{
+                    type: Inject,
+                    args: [RECAPTCHA_V3_SITE_KEY]
+                }] }, { type: Object, decorators: [{
+                    type: Inject,
+                    args: [PLATFORM_ID]
+                }] }, { type: undefined, decorators: [{
+                    type: Optional
+                }, {
+                    type: Inject,
+                    args: [RECAPTCHA_BASE_URL]
+                }] }, { type: undefined, decorators: [{
+                    type: Optional
+                }, {
+                    type: Inject,
+                    args: [RECAPTCHA_NONCE]
+                }] }, { type: undefined, decorators: [{
+                    type: Optional
+                }, {
+                    type: Inject,
+                    args: [RECAPTCHA_LANGUAGE]
+                }] }]; } });
+
+class RecaptchaV3Module {
+    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RecaptchaV3Module, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
+    static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.1", ngImport: i0, type: RecaptchaV3Module }); }
+    static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RecaptchaV3Module, providers: [ReCaptchaV3Service] }); }
+}
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RecaptchaV3Module, decorators: [{
+            type: NgModule,
+            args: [{
+                    providers: [ReCaptchaV3Service],
+                }]
+        }] });
+
+class RecaptchaValueAccessorDirective {
+    constructor(host) {
+        this.host = host;
+        this.requiresControllerReset = false;
+    }
+    writeValue(value) {
+        if (!value) {
+            this.host.reset();
+        }
+        else {
+            // In this case, it is most likely that a form controller has requested to write a specific value into the component.
+            // This isn't really a supported case - reCAPTCHA values are single-use, and, in a sense, readonly.
+            // What this means is that the form controller has recaptcha control state of X, while reCAPTCHA itself can't "restore"
+            // to that state. In order to make form controller aware of this discrepancy, and to fix the said misalignment,
+            // we'll be telling the controller to "reset" the value back to null.
+            if (this.host.__unsafe_widgetValue !== value && Boolean(this.host.__unsafe_widgetValue) === false) {
+                this.requiresControllerReset = true;
+            }
+        }
+    }
+    registerOnChange(fn) {
+        this.onChange = fn;
+        if (this.requiresControllerReset) {
+            this.requiresControllerReset = false;
+            this.onChange(null);
+        }
+    }
+    registerOnTouched(fn) {
+        this.onTouched = fn;
+    }
+    onResolve($event) {
+        if (this.onChange) {
+            this.onChange($event);
+        }
+        if (this.onTouched) {
+            this.onTouched();
+        }
+    }
+    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RecaptchaValueAccessorDirective, deps: [{ token: RecaptchaComponent }], target: i0.ɵɵFactoryTarget.Directive }); }
+    static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.1", type: RecaptchaValueAccessorDirective, selector: "re-captcha[formControlName],re-captcha[formControl],re-captcha[ngModel]", host: { listeners: { "resolved": "onResolve($event)" } }, providers: [
+            {
+                multi: true,
+                provide: NG_VALUE_ACCESSOR,
+                useExisting: forwardRef(() => RecaptchaValueAccessorDirective),
+            },
+        ], ngImport: i0 }); }
+}
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RecaptchaValueAccessorDirective, decorators: [{
+            type: Directive,
+            args: [{
+                    providers: [
+                        {
+                            multi: true,
+                            provide: NG_VALUE_ACCESSOR,
+                            useExisting: forwardRef(() => RecaptchaValueAccessorDirective),
+                        },
+                    ],
+                    selector: "re-captcha[formControlName],re-captcha[formControl],re-captcha[ngModel]",
+                }]
+        }], ctorParameters: function () { return [{ type: RecaptchaComponent }]; }, propDecorators: { onResolve: [{
+                type: HostListener,
+                args: ["resolved", ["$event"]]
+            }] } });
+
+class RecaptchaFormsModule {
+    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RecaptchaFormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
+    static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.1", ngImport: i0, type: RecaptchaFormsModule, declarations: [RecaptchaValueAccessorDirective], imports: [FormsModule, RecaptchaCommonModule], exports: [RecaptchaValueAccessorDirective] }); }
+    static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RecaptchaFormsModule, imports: [FormsModule, RecaptchaCommonModule] }); }
+}
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RecaptchaFormsModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    declarations: [RecaptchaValueAccessorDirective],
+                    exports: [RecaptchaValueAccessorDirective],
+                    imports: [FormsModule, RecaptchaCommonModule],
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { RECAPTCHA_BASE_URL, RECAPTCHA_LANGUAGE, RECAPTCHA_NONCE, RECAPTCHA_SETTINGS, RECAPTCHA_V3_SITE_KEY, ReCaptchaV3Service, RecaptchaComponent, RecaptchaFormsModule, RecaptchaLoaderService, RecaptchaModule, RecaptchaV3Module, RecaptchaValueAccessorDirective };
+//# sourceMappingURL=ng-recaptcha.mjs.map

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
Frontend/RiffMasterFront/node_modules/ng-recaptcha/fesm2022/ng-recaptcha.mjs.map


+ 9 - 0
Frontend/RiffMasterFront/node_modules/ng-recaptcha/index.d.ts

@@ -0,0 +1,9 @@
+export { RecaptchaComponent, RecaptchaErrorParameters } from "./lib/recaptcha.component";
+export { RecaptchaLoaderService } from "./lib/recaptcha-loader.service";
+export { RecaptchaModule } from "./lib/recaptcha.module";
+export { RecaptchaSettings } from "./lib/recaptcha-settings";
+export { RecaptchaV3Module } from "./lib/recaptcha-v3.module";
+export { OnExecuteData, OnExecuteErrorData, ReCaptchaV3Service } from "./lib/recaptcha-v3.service";
+export { RecaptchaFormsModule } from "./lib/recaptcha-forms.module";
+export { RecaptchaValueAccessorDirective } from "./lib/recaptcha-value-accessor.directive";
+export { RECAPTCHA_LANGUAGE, RECAPTCHA_BASE_URL, RECAPTCHA_NONCE, RECAPTCHA_SETTINGS, RECAPTCHA_V3_SITE_KEY, } from "./lib/tokens";

+ 11 - 0
Frontend/RiffMasterFront/node_modules/ng-recaptcha/lib/load-script.d.ts

@@ -0,0 +1,11 @@
+/// <reference types="grecaptcha" />
+declare global {
+    interface Window {
+        ng2recaptchaloaded: () => void;
+    }
+}
+declare function loadScript(renderMode: "explicit" | string, onLoaded: (grecaptcha: ReCaptchaV2.ReCaptcha) => void, urlParams: string, url?: string, nonce?: string): void;
+export declare const loader: {
+    loadScript: typeof loadScript;
+};
+export {};

+ 7 - 0
Frontend/RiffMasterFront/node_modules/ng-recaptcha/lib/recaptcha-common.module.d.ts

@@ -0,0 +1,7 @@
+import * as i0 from "@angular/core";
+import * as i1 from "./recaptcha.component";
+export declare class RecaptchaCommonModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<RecaptchaCommonModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<RecaptchaCommonModule, [typeof i1.RecaptchaComponent], never, [typeof i1.RecaptchaComponent]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<RecaptchaCommonModule>;
+}

+ 9 - 0
Frontend/RiffMasterFront/node_modules/ng-recaptcha/lib/recaptcha-forms.module.d.ts

@@ -0,0 +1,9 @@
+import * as i0 from "@angular/core";
+import * as i1 from "./recaptcha-value-accessor.directive";
+import * as i2 from "@angular/forms";
+import * as i3 from "./recaptcha-common.module";
+export declare class RecaptchaFormsModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<RecaptchaFormsModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<RecaptchaFormsModule, [typeof i1.RecaptchaValueAccessorDirective], [typeof i2.FormsModule, typeof i3.RecaptchaCommonModule], [typeof i1.RecaptchaValueAccessorDirective]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<RecaptchaFormsModule>;
+}

+ 25 - 0
Frontend/RiffMasterFront/node_modules/ng-recaptcha/lib/recaptcha-loader.service.d.ts

@@ -0,0 +1,25 @@
+/// <reference types="grecaptcha" />
+import { Observable } from "rxjs";
+import * as i0 from "@angular/core";
+export declare class RecaptchaLoaderService {
+    private readonly platformId;
+    /**
+     * @internal
+     * @nocollapse
+     */
+    private static ready;
+    ready: Observable<ReCaptchaV2.ReCaptcha>;
+    /** @internal */
+    private language;
+    /** @internal */
+    private baseUrl;
+    /** @internal */
+    private nonce;
+    /** @internal */
+    private v3SiteKey;
+    constructor(platformId: Object, language?: string, baseUrl?: string, nonce?: string, v3SiteKey?: string);
+    /** @internal */
+    private init;
+    static ɵfac: i0.ɵɵFactoryDeclaration<RecaptchaLoaderService, [null, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; }]>;
+    static ɵprov: i0.ɵɵInjectableDeclaration<RecaptchaLoaderService>;
+}

+ 8 - 0
Frontend/RiffMasterFront/node_modules/ng-recaptcha/lib/recaptcha-settings.d.ts

@@ -0,0 +1,8 @@
+/// <reference types="grecaptcha" />
+export interface RecaptchaSettings {
+    siteKey?: string;
+    theme?: ReCaptchaV2.Theme;
+    type?: ReCaptchaV2.Type;
+    size?: ReCaptchaV2.Size;
+    badge?: ReCaptchaV2.Badge;
+}

+ 6 - 0
Frontend/RiffMasterFront/node_modules/ng-recaptcha/lib/recaptcha-v3.module.d.ts

@@ -0,0 +1,6 @@
+import * as i0 from "@angular/core";
+export declare class RecaptchaV3Module {
+    static ɵfac: i0.ɵɵFactoryDeclaration<RecaptchaV3Module, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<RecaptchaV3Module, never, never, never>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<RecaptchaV3Module>;
+}

+ 78 - 0
Frontend/RiffMasterFront/node_modules/ng-recaptcha/lib/recaptcha-v3.service.d.ts

@@ -0,0 +1,78 @@
+import { NgZone } from "@angular/core";
+import { Observable } from "rxjs";
+import * as i0 from "@angular/core";
+export interface OnExecuteData {
+    /**
+     * The name of the action that has been executed.
+     */
+    action: string;
+    /**
+     * The token that reCAPTCHA v3 provided when executing the action.
+     */
+    token: string;
+}
+export interface OnExecuteErrorData {
+    /**
+     * The name of the action that has been executed.
+     */
+    action: string;
+    /**
+     * The error which was encountered
+     */
+    error: any;
+}
+/**
+ * The main service for working with reCAPTCHA v3 APIs.
+ *
+ * Use the `execute` method for executing a single action, and
+ * `onExecute` observable for listening to all actions at once.
+ */
+export declare class ReCaptchaV3Service {
+    /** @internal */
+    private readonly isBrowser;
+    /** @internal */
+    private readonly siteKey;
+    /** @internal */
+    private readonly zone;
+    /** @internal */
+    private actionBacklog;
+    /** @internal */
+    private nonce;
+    /** @internal */
+    private language?;
+    /** @internal */
+    private baseUrl;
+    /** @internal */
+    private grecaptcha;
+    /** @internal */
+    private onExecuteSubject;
+    /** @internal */
+    private onExecuteErrorSubject;
+    /** @internal */
+    private onExecuteObservable;
+    /** @internal */
+    private onExecuteErrorObservable;
+    constructor(zone: NgZone, siteKey: string, platformId: Object, baseUrl?: string, nonce?: string, language?: string);
+    get onExecute(): Observable<OnExecuteData>;
+    get onExecuteError(): Observable<OnExecuteErrorData>;
+    /**
+     * Executes the provided `action` with reCAPTCHA v3 API.
+     * Use the emitted token value for verification purposes on the backend.
+     *
+     * For more information about reCAPTCHA v3 actions and tokens refer to the official documentation at
+     * https://developers.google.com/recaptcha/docs/v3.
+     *
+     * @param {string} action the action to execute
+     * @returns {Observable<string>} an `Observable` that will emit the reCAPTCHA v3 string `token` value whenever ready.
+     * The returned `Observable` completes immediately after emitting a value.
+     */
+    execute(action: string): Observable<string>;
+    /** @internal */
+    private executeActionWithSubject;
+    /** @internal */
+    private init;
+    /** @internal */
+    private onLoadComplete;
+    static ɵfac: i0.ɵɵFactoryDeclaration<ReCaptchaV3Service, [null, null, null, { optional: true; }, { optional: true; }, { optional: true; }]>;
+    static ɵprov: i0.ɵɵInjectableDeclaration<ReCaptchaV3Service>;
+}

+ 18 - 0
Frontend/RiffMasterFront/node_modules/ng-recaptcha/lib/recaptcha-value-accessor.directive.d.ts

@@ -0,0 +1,18 @@
+import { ControlValueAccessor } from "@angular/forms";
+import { RecaptchaComponent } from "./recaptcha.component";
+import * as i0 from "@angular/core";
+export declare class RecaptchaValueAccessorDirective implements ControlValueAccessor {
+    private host;
+    /** @internal */
+    private onChange;
+    /** @internal */
+    private onTouched;
+    private requiresControllerReset;
+    constructor(host: RecaptchaComponent);
+    writeValue(value: string): void;
+    registerOnChange(fn: (value: string) => void): void;
+    registerOnTouched(fn: () => void): void;
+    onResolve($event: string): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<RecaptchaValueAccessorDirective, never>;
+    static ɵdir: i0.ɵɵDirectiveDeclaration<RecaptchaValueAccessorDirective, "re-captcha[formControlName],re-captcha[formControl],re-captcha[ngModel]", never, {}, {}, never, never, false, never>;
+}

+ 64 - 0
Frontend/RiffMasterFront/node_modules/ng-recaptcha/lib/recaptcha.component.d.ts

@@ -0,0 +1,64 @@
+/// <reference types="grecaptcha" />
+import { AfterViewInit, ElementRef, EventEmitter, NgZone, OnDestroy } from "@angular/core";
+import { RecaptchaLoaderService } from "./recaptcha-loader.service";
+import { RecaptchaSettings } from "./recaptcha-settings";
+import * as i0 from "@angular/core";
+export type NeverUndefined<T> = T extends undefined ? never : T;
+export type RecaptchaErrorParameters = Parameters<NeverUndefined<ReCaptchaV2.Parameters["error-callback"]>>;
+export declare class RecaptchaComponent implements AfterViewInit, OnDestroy {
+    private elementRef;
+    private loader;
+    private zone;
+    id: string;
+    siteKey: string;
+    theme: ReCaptchaV2.Theme;
+    type: ReCaptchaV2.Type;
+    size: ReCaptchaV2.Size;
+    tabIndex: number;
+    badge: ReCaptchaV2.Badge;
+    errorMode: "handled" | "default";
+    resolved: EventEmitter<string>;
+    /**
+     * @deprecated `(error) output will be removed in the next major version. Use (errored) instead
+     */
+    error: EventEmitter<[]>;
+    errored: EventEmitter<[]>;
+    /** @internal */
+    private subscription;
+    /** @internal */
+    private widget;
+    /** @internal */
+    private grecaptcha;
+    /** @internal */
+    private executeRequested;
+    constructor(elementRef: ElementRef<HTMLElement>, loader: RecaptchaLoaderService, zone: NgZone, settings?: RecaptchaSettings);
+    ngAfterViewInit(): void;
+    ngOnDestroy(): void;
+    /**
+     * Executes the invisible recaptcha.
+     * Does nothing if component's size is not set to "invisible".
+     */
+    execute(): void;
+    reset(): void;
+    /**
+     * ⚠️ Warning! Use this property at your own risk!
+     *
+     * While this member is `public`, it is not a part of the component's public API.
+     * The semantic versioning guarantees _will not be honored_! Thus, you might find that this property behavior changes in incompatible ways in minor or even patch releases.
+     * You are **strongly advised** against using this property.
+     * Instead, use more idiomatic ways to get reCAPTCHA value, such as `resolved` EventEmitter, or form-bound methods (ngModel, formControl, and the likes).å
+     */
+    get __unsafe_widgetValue(): string | null;
+    /** @internal */
+    private expired;
+    /** @internal */
+    private onError;
+    /** @internal */
+    private captchaResponseCallback;
+    /** @internal */
+    private grecaptchaReset;
+    /** @internal */
+    private renderRecaptcha;
+    static ɵfac: i0.ɵɵFactoryDeclaration<RecaptchaComponent, [null, null, null, { optional: true; }]>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<RecaptchaComponent, "re-captcha", ["reCaptcha"], { "id": { "alias": "id"; "required": false; }; "siteKey": { "alias": "siteKey"; "required": false; }; "theme": { "alias": "theme"; "required": false; }; "type": { "alias": "type"; "required": false; }; "size": { "alias": "size"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "badge": { "alias": "badge"; "required": false; }; "errorMode": { "alias": "errorMode"; "required": false; }; }, { "resolved": "resolved"; "error": "error"; "errored": "errored"; }, never, never, false, never>;
+}

Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio