@cloudbase/oauth 0.1.1-alpha.5 → 0.1.1-alpha.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (380) hide show
  1. package/dist/app/index.d.ts +4 -4
  2. package/dist/app/openuri.d.ts +1 -1
  3. package/dist/app/openuri.js +3 -0
  4. package/dist/app/openuri.js.map +1 -1
  5. package/dist/app/request.d.ts +1 -1
  6. package/dist/auth/consts.d.ts +2 -1
  7. package/dist/auth/consts.js +1 -0
  8. package/dist/auth/consts.js.map +1 -1
  9. package/dist/auth/index.d.ts +7 -2
  10. package/dist/auth/index.js +12 -0
  11. package/dist/auth/index.js.map +1 -1
  12. package/dist/auth/models.d.ts +9 -3
  13. package/dist/auth/models.js +0 -1
  14. package/dist/auth/models.js.map +1 -1
  15. package/dist/oauthclient/index.d.ts +4 -4
  16. package/dist/oauthclient/interface.d.ts +1 -1
  17. package/dist/oauthclient/oauthclient.js +1 -1
  18. package/dist/oauthclient/oauthclient.js.map +1 -1
  19. package/dist/package.json +1 -1
  20. package/package.json +1 -1
  21. package/packages/analytics/dist/cjs/index.d.ts +2 -0
  22. package/packages/analytics/dist/cjs/index.js +144 -0
  23. package/packages/analytics/dist/esm/index.d.ts +2 -0
  24. package/packages/analytics/dist/esm/index.js +140 -0
  25. package/packages/app/dist/cjs/constants/common.d.ts +24 -0
  26. package/packages/app/dist/cjs/constants/common.js +68 -0
  27. package/packages/app/dist/cjs/index.d.ts +4 -0
  28. package/packages/app/dist/cjs/index.js +248 -0
  29. package/packages/app/dist/cjs/libs/adapter.d.ts +2 -0
  30. package/packages/app/dist/cjs/libs/adapter.js +5 -0
  31. package/packages/app/dist/cjs/libs/cache.d.ts +6 -0
  32. package/packages/app/dist/cjs/libs/cache.js +38 -0
  33. package/packages/app/dist/cjs/libs/component.d.ts +3 -0
  34. package/packages/app/dist/cjs/libs/component.js +126 -0
  35. package/packages/app/dist/cjs/libs/request.d.ts +28 -0
  36. package/packages/app/dist/cjs/libs/request.js +297 -0
  37. package/packages/app/dist/esm/constants/common.d.ts +24 -0
  38. package/packages/app/dist/esm/constants/common.js +57 -0
  39. package/packages/app/dist/esm/index.d.ts +4 -0
  40. package/packages/app/dist/esm/index.js +241 -0
  41. package/packages/app/dist/esm/libs/adapter.d.ts +2 -0
  42. package/packages/app/dist/esm/libs/adapter.js +2 -0
  43. package/packages/app/dist/esm/libs/cache.d.ts +6 -0
  44. package/packages/app/dist/esm/libs/cache.js +32 -0
  45. package/packages/app/dist/esm/libs/component.d.ts +3 -0
  46. package/packages/app/dist/esm/libs/component.js +121 -0
  47. package/packages/app/dist/esm/libs/request.d.ts +28 -0
  48. package/packages/app/dist/esm/libs/request.js +292 -0
  49. package/packages/auth/dist/cjs/index.d.ts +100 -0
  50. package/packages/auth/dist/cjs/index.js +1011 -0
  51. package/packages/auth/dist/esm/index.d.ts +100 -0
  52. package/packages/auth/dist/esm/index.js +1007 -0
  53. package/packages/cloudbase/analytics/dist/index.d.ts +2 -0
  54. package/packages/cloudbase/analytics/dist/index.esm.js +4 -0
  55. package/packages/cloudbase/analytics/dist/index.js +9 -0
  56. package/packages/cloudbase/app/dist/index.d.ts +9 -0
  57. package/packages/cloudbase/app/dist/index.esm.js +10 -0
  58. package/packages/cloudbase/app/dist/index.js +17 -0
  59. package/packages/cloudbase/auth/dist/index.d.ts +2 -0
  60. package/packages/cloudbase/auth/dist/index.esm.js +4 -0
  61. package/packages/cloudbase/auth/dist/index.js +9 -0
  62. package/packages/cloudbase/container/dist/index.d.ts +2 -0
  63. package/packages/cloudbase/container/dist/index.esm.js +4 -0
  64. package/packages/cloudbase/container/dist/index.js +9 -0
  65. package/packages/cloudbase/dist/index.cjs.js +31 -0
  66. package/packages/cloudbase/dist/index.esm.js +26 -0
  67. package/packages/cloudbase/functions/dist/index.d.ts +2 -0
  68. package/packages/cloudbase/functions/dist/index.esm.js +4 -0
  69. package/packages/cloudbase/functions/dist/index.js +9 -0
  70. package/packages/cloudbase/oauth/dist/index.d.ts +1 -0
  71. package/packages/cloudbase/oauth/dist/index.esm.js +3 -0
  72. package/packages/cloudbase/oauth/dist/index.js +21 -0
  73. package/packages/cloudbase/realtime/dist/index.d.ts +2 -0
  74. package/packages/cloudbase/realtime/dist/index.esm.js +4 -0
  75. package/packages/cloudbase/realtime/dist/index.js +9 -0
  76. package/packages/cloudbase/src/dist/oauth/src/index.d.ts +1 -0
  77. package/packages/cloudbase/src/dist/src/index.d.ts +9 -0
  78. package/packages/cloudbase/storage/dist/index.d.ts +2 -0
  79. package/packages/cloudbase/storage/dist/index.esm.js +4 -0
  80. package/packages/cloudbase/storage/dist/index.js +9 -0
  81. package/packages/container/dist/cjs/constants/index.d.ts +1 -0
  82. package/packages/container/dist/cjs/constants/index.js +5 -0
  83. package/packages/container/dist/cjs/go_wams_exec.d.ts +2 -0
  84. package/packages/container/dist/cjs/go_wams_exec.js +538 -0
  85. package/packages/container/dist/cjs/index.d.ts +2 -0
  86. package/packages/container/dist/cjs/index.js +418 -0
  87. package/packages/container/dist/cjs/utils/index.d.ts +3 -0
  88. package/packages/container/dist/cjs/utils/index.js +65 -0
  89. package/packages/container/dist/cjs/utils/request.d.ts +12 -0
  90. package/packages/container/dist/cjs/utils/request.js +105 -0
  91. package/packages/container/dist/esm/constants/index.d.ts +1 -0
  92. package/packages/container/dist/esm/constants/index.js +2 -0
  93. package/packages/container/dist/esm/go_wams_exec.d.ts +2 -0
  94. package/packages/container/dist/esm/go_wams_exec.js +536 -0
  95. package/packages/container/dist/esm/index.d.ts +2 -0
  96. package/packages/container/dist/esm/index.js +411 -0
  97. package/packages/container/dist/esm/utils/index.d.ts +3 -0
  98. package/packages/container/dist/esm/utils/index.js +59 -0
  99. package/packages/container/dist/esm/utils/request.d.ts +12 -0
  100. package/packages/container/dist/esm/utils/request.js +101 -0
  101. package/packages/container/node_modules/@cloudbase/types/LICENSE +202 -0
  102. package/packages/container/node_modules/@cloudbase/types/auth.d.ts +78 -0
  103. package/packages/container/node_modules/@cloudbase/types/cache.d.ts +26 -0
  104. package/packages/container/node_modules/@cloudbase/types/component.d.ts +17 -0
  105. package/packages/container/node_modules/@cloudbase/types/database.d.ts +31 -0
  106. package/packages/container/node_modules/@cloudbase/types/events.d.ts +13 -0
  107. package/packages/container/node_modules/@cloudbase/types/functions.d.ts +16 -0
  108. package/packages/container/node_modules/@cloudbase/types/index.d.ts +66 -0
  109. package/packages/container/node_modules/@cloudbase/types/index.js +1 -0
  110. package/packages/container/node_modules/@cloudbase/types/package.json +46 -0
  111. package/packages/container/node_modules/@cloudbase/types/realtime.d.ts +350 -0
  112. package/packages/container/node_modules/@cloudbase/types/request.d.ts +28 -0
  113. package/packages/container/node_modules/@cloudbase/types/storage.d.ts +97 -0
  114. package/packages/container/node_modules/@cloudbase/utilities/.eslintignore +2 -0
  115. package/packages/container/node_modules/@cloudbase/utilities/.eslintrc.js +15 -0
  116. package/packages/container/node_modules/@cloudbase/utilities/LICENSE +202 -0
  117. package/packages/container/node_modules/@cloudbase/utilities/dist/cjs/adapters/index.d.ts +13 -0
  118. package/packages/container/node_modules/@cloudbase/utilities/dist/cjs/adapters/index.js +55 -0
  119. package/packages/container/node_modules/@cloudbase/utilities/dist/cjs/adapters/platforms/web.d.ts +15 -0
  120. package/packages/container/node_modules/@cloudbase/utilities/dist/cjs/adapters/platforms/web.js +215 -0
  121. package/packages/container/node_modules/@cloudbase/utilities/dist/cjs/constants/common.d.ts +6 -0
  122. package/packages/container/node_modules/@cloudbase/utilities/dist/cjs/constants/common.js +24 -0
  123. package/packages/container/node_modules/@cloudbase/utilities/dist/cjs/constants/errors.d.ts +8 -0
  124. package/packages/container/node_modules/@cloudbase/utilities/dist/cjs/constants/errors.js +12 -0
  125. package/packages/container/node_modules/@cloudbase/utilities/dist/cjs/constants/index.d.ts +3 -0
  126. package/packages/container/node_modules/@cloudbase/utilities/dist/cjs/constants/index.js +21 -0
  127. package/packages/container/node_modules/@cloudbase/utilities/dist/cjs/helpers/decorators.d.ts +11 -0
  128. package/packages/container/node_modules/@cloudbase/utilities/dist/cjs/helpers/decorators.js +238 -0
  129. package/packages/container/node_modules/@cloudbase/utilities/dist/cjs/helpers/index.d.ts +1 -0
  130. package/packages/container/node_modules/@cloudbase/utilities/dist/cjs/helpers/index.js +18 -0
  131. package/packages/container/node_modules/@cloudbase/utilities/dist/cjs/index.d.ts +11 -0
  132. package/packages/container/node_modules/@cloudbase/utilities/dist/cjs/index.js +47 -0
  133. package/packages/container/node_modules/@cloudbase/utilities/dist/cjs/libs/cache.d.ts +17 -0
  134. package/packages/container/node_modules/@cloudbase/utilities/dist/cjs/libs/cache.js +261 -0
  135. package/packages/container/node_modules/@cloudbase/utilities/dist/cjs/libs/events.d.ts +27 -0
  136. package/packages/container/node_modules/@cloudbase/utilities/dist/cjs/libs/events.js +108 -0
  137. package/packages/container/node_modules/@cloudbase/utilities/dist/cjs/libs/util.d.ts +35 -0
  138. package/packages/container/node_modules/@cloudbase/utilities/dist/cjs/libs/util.js +223 -0
  139. package/packages/container/node_modules/@cloudbase/utilities/dist/esm/adapters/index.d.ts +13 -0
  140. package/packages/container/node_modules/@cloudbase/utilities/dist/esm/adapters/index.js +27 -0
  141. package/packages/container/node_modules/@cloudbase/utilities/dist/esm/adapters/platforms/web.d.ts +15 -0
  142. package/packages/container/node_modules/@cloudbase/utilities/dist/esm/adapters/platforms/web.js +211 -0
  143. package/packages/container/node_modules/@cloudbase/utilities/dist/esm/constants/common.d.ts +6 -0
  144. package/packages/container/node_modules/@cloudbase/utilities/dist/esm/constants/common.js +17 -0
  145. package/packages/container/node_modules/@cloudbase/utilities/dist/esm/constants/errors.d.ts +8 -0
  146. package/packages/container/node_modules/@cloudbase/utilities/dist/esm/constants/errors.js +9 -0
  147. package/packages/container/node_modules/@cloudbase/utilities/dist/esm/constants/index.d.ts +3 -0
  148. package/packages/container/node_modules/@cloudbase/utilities/dist/esm/constants/index.js +4 -0
  149. package/packages/container/node_modules/@cloudbase/utilities/dist/esm/helpers/decorators.d.ts +11 -0
  150. package/packages/container/node_modules/@cloudbase/utilities/dist/esm/helpers/decorators.js +234 -0
  151. package/packages/container/node_modules/@cloudbase/utilities/dist/esm/helpers/index.d.ts +1 -0
  152. package/packages/container/node_modules/@cloudbase/utilities/dist/esm/helpers/index.js +2 -0
  153. package/packages/container/node_modules/@cloudbase/utilities/dist/esm/index.d.ts +11 -0
  154. package/packages/container/node_modules/@cloudbase/utilities/dist/esm/index.js +12 -0
  155. package/packages/container/node_modules/@cloudbase/utilities/dist/esm/libs/cache.d.ts +17 -0
  156. package/packages/container/node_modules/@cloudbase/utilities/dist/esm/libs/cache.js +258 -0
  157. package/packages/container/node_modules/@cloudbase/utilities/dist/esm/libs/events.d.ts +27 -0
  158. package/packages/container/node_modules/@cloudbase/utilities/dist/esm/libs/events.js +102 -0
  159. package/packages/container/node_modules/@cloudbase/utilities/dist/esm/libs/util.d.ts +35 -0
  160. package/packages/container/node_modules/@cloudbase/utilities/dist/esm/libs/util.js +194 -0
  161. package/packages/container/node_modules/@cloudbase/utilities/package.json +32 -0
  162. package/packages/container/node_modules/@cloudbase/utilities/src/adapters/index.ts +28 -0
  163. package/packages/container/node_modules/@cloudbase/utilities/src/adapters/platforms/web.ts +182 -0
  164. package/packages/container/node_modules/@cloudbase/utilities/src/constants/common.ts +21 -0
  165. package/packages/container/node_modules/@cloudbase/utilities/src/constants/errors.ts +8 -0
  166. package/packages/container/node_modules/@cloudbase/utilities/src/constants/index.ts +4 -0
  167. package/packages/container/node_modules/@cloudbase/utilities/src/global.d.ts +3 -0
  168. package/packages/container/node_modules/@cloudbase/utilities/src/helpers/decorators.ts +228 -0
  169. package/packages/container/node_modules/@cloudbase/utilities/src/helpers/index.ts +1 -0
  170. package/packages/container/node_modules/@cloudbase/utilities/src/index.ts +22 -0
  171. package/packages/container/node_modules/@cloudbase/utilities/src/libs/cache.ts +192 -0
  172. package/packages/container/node_modules/@cloudbase/utilities/src/libs/events.ts +154 -0
  173. package/packages/container/node_modules/@cloudbase/utilities/src/libs/util.ts +216 -0
  174. package/packages/container/node_modules/@cloudbase/utilities/tsconfig.esm.json +16 -0
  175. package/packages/container/node_modules/@cloudbase/utilities/tsconfig.json +21 -0
  176. package/packages/container/node_modules/crypto-js/CONTRIBUTING.md +28 -0
  177. package/packages/container/node_modules/crypto-js/LICENSE +24 -0
  178. package/packages/container/node_modules/crypto-js/README.md +261 -0
  179. package/packages/container/node_modules/crypto-js/aes.js +234 -0
  180. package/packages/container/node_modules/crypto-js/bower.json +39 -0
  181. package/packages/container/node_modules/crypto-js/cipher-core.js +890 -0
  182. package/packages/container/node_modules/crypto-js/core.js +807 -0
  183. package/packages/container/node_modules/crypto-js/crypto-js.js +6191 -0
  184. package/packages/container/node_modules/crypto-js/docs/QuickStartGuide.wiki +470 -0
  185. package/packages/container/node_modules/crypto-js/enc-base64.js +136 -0
  186. package/packages/container/node_modules/crypto-js/enc-base64url.js +140 -0
  187. package/packages/container/node_modules/crypto-js/enc-hex.js +18 -0
  188. package/packages/container/node_modules/crypto-js/enc-latin1.js +18 -0
  189. package/packages/container/node_modules/crypto-js/enc-utf16.js +149 -0
  190. package/packages/container/node_modules/crypto-js/enc-utf8.js +18 -0
  191. package/packages/container/node_modules/crypto-js/evpkdf.js +134 -0
  192. package/packages/container/node_modules/crypto-js/format-hex.js +66 -0
  193. package/packages/container/node_modules/crypto-js/format-openssl.js +18 -0
  194. package/packages/container/node_modules/crypto-js/hmac-md5.js +18 -0
  195. package/packages/container/node_modules/crypto-js/hmac-ripemd160.js +18 -0
  196. package/packages/container/node_modules/crypto-js/hmac-sha1.js +18 -0
  197. package/packages/container/node_modules/crypto-js/hmac-sha224.js +18 -0
  198. package/packages/container/node_modules/crypto-js/hmac-sha256.js +18 -0
  199. package/packages/container/node_modules/crypto-js/hmac-sha3.js +18 -0
  200. package/packages/container/node_modules/crypto-js/hmac-sha384.js +18 -0
  201. package/packages/container/node_modules/crypto-js/hmac-sha512.js +18 -0
  202. package/packages/container/node_modules/crypto-js/hmac.js +143 -0
  203. package/packages/container/node_modules/crypto-js/index.js +18 -0
  204. package/packages/container/node_modules/crypto-js/lib-typedarrays.js +76 -0
  205. package/packages/container/node_modules/crypto-js/md5.js +268 -0
  206. package/packages/container/node_modules/crypto-js/mode-cfb.js +80 -0
  207. package/packages/container/node_modules/crypto-js/mode-ctr-gladman.js +116 -0
  208. package/packages/container/node_modules/crypto-js/mode-ctr.js +58 -0
  209. package/packages/container/node_modules/crypto-js/mode-ecb.js +40 -0
  210. package/packages/container/node_modules/crypto-js/mode-ofb.js +54 -0
  211. package/packages/container/node_modules/crypto-js/package.json +42 -0
  212. package/packages/container/node_modules/crypto-js/pad-ansix923.js +49 -0
  213. package/packages/container/node_modules/crypto-js/pad-iso10126.js +44 -0
  214. package/packages/container/node_modules/crypto-js/pad-iso97971.js +40 -0
  215. package/packages/container/node_modules/crypto-js/pad-nopadding.js +30 -0
  216. package/packages/container/node_modules/crypto-js/pad-pkcs7.js +18 -0
  217. package/packages/container/node_modules/crypto-js/pad-zeropadding.js +47 -0
  218. package/packages/container/node_modules/crypto-js/pbkdf2.js +145 -0
  219. package/packages/container/node_modules/crypto-js/rabbit-legacy.js +190 -0
  220. package/packages/container/node_modules/crypto-js/rabbit.js +192 -0
  221. package/packages/container/node_modules/crypto-js/rc4.js +139 -0
  222. package/packages/container/node_modules/crypto-js/ripemd160.js +267 -0
  223. package/packages/container/node_modules/crypto-js/sha1.js +150 -0
  224. package/packages/container/node_modules/crypto-js/sha224.js +80 -0
  225. package/packages/container/node_modules/crypto-js/sha256.js +199 -0
  226. package/packages/container/node_modules/crypto-js/sha3.js +326 -0
  227. package/packages/container/node_modules/crypto-js/sha384.js +83 -0
  228. package/packages/container/node_modules/crypto-js/sha512.js +326 -0
  229. package/packages/container/node_modules/crypto-js/tripledes.js +779 -0
  230. package/packages/container/node_modules/crypto-js/x64-core.js +304 -0
  231. package/packages/functions/dist/cjs/index.d.ts +2 -0
  232. package/packages/functions/dist/cjs/index.js +165 -0
  233. package/packages/functions/dist/esm/index.d.ts +2 -0
  234. package/packages/functions/dist/esm/index.js +161 -0
  235. package/packages/oauth/dist/cjs/auth/apis.d.ts +78 -0
  236. package/packages/oauth/dist/cjs/auth/apis.js +726 -0
  237. package/packages/oauth/dist/cjs/auth/consts.d.ts +64 -0
  238. package/packages/oauth/dist/cjs/auth/consts.js +72 -0
  239. package/packages/oauth/dist/cjs/auth/models.d.ts +378 -0
  240. package/packages/oauth/dist/cjs/auth/models.js +3 -0
  241. package/packages/oauth/dist/cjs/captcha/captcha.d.ts +35 -0
  242. package/packages/oauth/dist/cjs/captcha/captcha.js +264 -0
  243. package/packages/oauth/dist/cjs/index.d.ts +14 -0
  244. package/packages/oauth/dist/cjs/index.js +70 -0
  245. package/packages/oauth/dist/cjs/oauth2client/consts.d.ts +67 -0
  246. package/packages/oauth/dist/cjs/oauth2client/consts.js +73 -0
  247. package/packages/oauth/dist/cjs/oauth2client/interface.d.ts +15 -0
  248. package/packages/oauth/dist/cjs/oauth2client/interface.js +10 -0
  249. package/packages/oauth/dist/cjs/oauth2client/models.d.ts +50 -0
  250. package/packages/oauth/dist/cjs/oauth2client/models.js +3 -0
  251. package/packages/oauth/dist/cjs/oauth2client/oauth2client.d.ts +58 -0
  252. package/packages/oauth/dist/cjs/oauth2client/oauth2client.js +687 -0
  253. package/packages/oauth/dist/cjs/utils/encrypt.d.ts +4 -0
  254. package/packages/oauth/dist/cjs/utils/encrypt.js +25 -0
  255. package/packages/oauth/dist/cjs/utils/encryptlong/index.d.ts +154 -0
  256. package/packages/oauth/dist/cjs/utils/encryptlong/index.js +4029 -0
  257. package/packages/oauth/dist/cjs/utils/function/single-promise.d.ts +5 -0
  258. package/packages/oauth/dist/cjs/utils/function/single-promise.js +96 -0
  259. package/packages/oauth/dist/cjs/utils/index.d.ts +1 -0
  260. package/packages/oauth/dist/cjs/utils/index.js +49 -0
  261. package/packages/oauth/dist/cjs/utils/uuid.d.ts +1 -0
  262. package/packages/oauth/dist/cjs/utils/uuid.js +12 -0
  263. package/packages/oauth/dist/esm/auth/apis.d.ts +78 -0
  264. package/packages/oauth/dist/esm/auth/apis.js +724 -0
  265. package/packages/oauth/dist/esm/auth/consts.d.ts +64 -0
  266. package/packages/oauth/dist/esm/auth/consts.js +69 -0
  267. package/packages/oauth/dist/esm/auth/models.d.ts +378 -0
  268. package/packages/oauth/dist/esm/auth/models.js +2 -0
  269. package/packages/oauth/dist/esm/captcha/captcha.d.ts +35 -0
  270. package/packages/oauth/dist/esm/captcha/captcha.js +261 -0
  271. package/packages/oauth/dist/esm/index.d.ts +14 -0
  272. package/packages/oauth/dist/esm/index.js +35 -0
  273. package/packages/oauth/dist/esm/oauth2client/consts.d.ts +67 -0
  274. package/packages/oauth/dist/esm/oauth2client/consts.js +70 -0
  275. package/packages/oauth/dist/esm/oauth2client/interface.d.ts +15 -0
  276. package/packages/oauth/dist/esm/oauth2client/interface.js +7 -0
  277. package/packages/oauth/dist/esm/oauth2client/models.d.ts +50 -0
  278. package/packages/oauth/dist/esm/oauth2client/models.js +2 -0
  279. package/packages/oauth/dist/esm/oauth2client/oauth2client.d.ts +58 -0
  280. package/packages/oauth/dist/esm/oauth2client/oauth2client.js +681 -0
  281. package/packages/oauth/dist/esm/utils/encrypt.d.ts +4 -0
  282. package/packages/oauth/dist/esm/utils/encrypt.js +18 -0
  283. package/packages/oauth/dist/esm/utils/encryptlong/index.d.ts +154 -0
  284. package/packages/oauth/dist/esm/utils/encryptlong/index.js +4027 -0
  285. package/packages/oauth/dist/esm/utils/function/single-promise.d.ts +5 -0
  286. package/packages/oauth/dist/esm/utils/function/single-promise.js +93 -0
  287. package/packages/oauth/dist/esm/utils/index.d.ts +1 -0
  288. package/packages/oauth/dist/esm/utils/index.js +45 -0
  289. package/packages/oauth/dist/esm/utils/uuid.d.ts +1 -0
  290. package/packages/oauth/dist/esm/utils/uuid.js +8 -0
  291. package/packages/packages/cloudbase/src/dist/oauth/src/index.d.ts +1 -0
  292. package/packages/packages/cloudbase/src/dist/src/index.d.ts +9 -0
  293. package/packages/realtime/dist/cjs/common.d.ts +4 -0
  294. package/packages/realtime/dist/cjs/common.js +22 -0
  295. package/packages/realtime/dist/cjs/error.d.ts +36 -0
  296. package/packages/realtime/dist/cjs/error.js +106 -0
  297. package/packages/realtime/dist/cjs/index.d.ts +2 -0
  298. package/packages/realtime/dist/cjs/index.js +36 -0
  299. package/packages/realtime/dist/cjs/listener.d.ts +14 -0
  300. package/packages/realtime/dist/cjs/listener.js +18 -0
  301. package/packages/realtime/dist/cjs/message.d.ts +3 -0
  302. package/packages/realtime/dist/cjs/message.js +13 -0
  303. package/packages/realtime/dist/cjs/snapshot.d.ts +17 -0
  304. package/packages/realtime/dist/cjs/snapshot.js +45 -0
  305. package/packages/realtime/dist/cjs/utils.d.ts +1 -0
  306. package/packages/realtime/dist/cjs/utils.js +9 -0
  307. package/packages/realtime/dist/cjs/virtual-websocket-client.d.ts +62 -0
  308. package/packages/realtime/dist/cjs/websocket-client.d.ts +78 -0
  309. package/packages/realtime/dist/cjs/ws-event.d.ts +126 -0
  310. package/packages/realtime/dist/cjs/ws-event.js +141 -0
  311. package/packages/realtime/dist/esm/common.d.ts +4 -0
  312. package/packages/realtime/dist/esm/common.js +15 -0
  313. package/packages/realtime/dist/esm/error.d.ts +36 -0
  314. package/packages/realtime/dist/esm/error.js +100 -0
  315. package/packages/realtime/dist/esm/index.d.ts +2 -0
  316. package/packages/realtime/dist/esm/index.js +32 -0
  317. package/packages/realtime/dist/esm/listener.d.ts +14 -0
  318. package/packages/realtime/dist/esm/listener.js +15 -0
  319. package/packages/realtime/dist/esm/message.d.ts +3 -0
  320. package/packages/realtime/dist/esm/message.js +8 -0
  321. package/packages/realtime/dist/esm/snapshot.d.ts +17 -0
  322. package/packages/realtime/dist/esm/snapshot.js +42 -0
  323. package/packages/realtime/dist/esm/utils.d.ts +1 -0
  324. package/packages/realtime/dist/esm/utils.js +5 -0
  325. package/packages/realtime/dist/esm/virtual-websocket-client.d.ts +62 -0
  326. package/packages/realtime/dist/esm/websocket-client.d.ts +78 -0
  327. package/packages/realtime/dist/esm/ws-event.d.ts +126 -0
  328. package/packages/realtime/dist/esm/ws-event.js +137 -0
  329. package/packages/storage/dist/cjs/index.d.ts +2 -0
  330. package/packages/storage/dist/cjs/index.js +426 -0
  331. package/packages/storage/dist/esm/index.d.ts +2 -0
  332. package/packages/storage/dist/esm/index.js +422 -0
  333. package/packages/utilities/dist/cjs/adapters/index.d.ts +13 -0
  334. package/packages/utilities/dist/cjs/adapters/index.js +55 -0
  335. package/packages/utilities/dist/cjs/adapters/platforms/web.d.ts +15 -0
  336. package/packages/utilities/dist/cjs/adapters/platforms/web.js +215 -0
  337. package/packages/utilities/dist/cjs/constants/common.d.ts +6 -0
  338. package/packages/utilities/dist/cjs/constants/common.js +24 -0
  339. package/packages/utilities/dist/cjs/constants/errors.d.ts +8 -0
  340. package/packages/utilities/dist/cjs/constants/errors.js +12 -0
  341. package/packages/utilities/dist/cjs/constants/index.d.ts +3 -0
  342. package/packages/utilities/dist/cjs/constants/index.js +21 -0
  343. package/packages/utilities/dist/cjs/helpers/decorators.d.ts +11 -0
  344. package/packages/utilities/dist/cjs/helpers/decorators.js +238 -0
  345. package/packages/utilities/dist/cjs/helpers/index.d.ts +1 -0
  346. package/packages/utilities/dist/cjs/helpers/index.js +18 -0
  347. package/packages/utilities/dist/cjs/index.d.ts +11 -0
  348. package/packages/utilities/dist/cjs/index.js +47 -0
  349. package/packages/utilities/dist/cjs/libs/cache.d.ts +17 -0
  350. package/packages/utilities/dist/cjs/libs/cache.js +261 -0
  351. package/packages/utilities/dist/cjs/libs/events.d.ts +27 -0
  352. package/packages/utilities/dist/cjs/libs/events.js +108 -0
  353. package/packages/utilities/dist/cjs/libs/util.d.ts +34 -0
  354. package/packages/utilities/dist/cjs/libs/util.js +198 -0
  355. package/packages/utilities/dist/esm/adapters/index.d.ts +13 -0
  356. package/packages/utilities/dist/esm/adapters/index.js +27 -0
  357. package/packages/utilities/dist/esm/adapters/platforms/web.d.ts +15 -0
  358. package/packages/utilities/dist/esm/adapters/platforms/web.js +211 -0
  359. package/packages/utilities/dist/esm/constants/common.d.ts +6 -0
  360. package/packages/utilities/dist/esm/constants/common.js +17 -0
  361. package/packages/utilities/dist/esm/constants/errors.d.ts +8 -0
  362. package/packages/utilities/dist/esm/constants/errors.js +9 -0
  363. package/packages/utilities/dist/esm/constants/index.d.ts +3 -0
  364. package/packages/utilities/dist/esm/constants/index.js +4 -0
  365. package/packages/utilities/dist/esm/helpers/decorators.d.ts +11 -0
  366. package/packages/utilities/dist/esm/helpers/decorators.js +234 -0
  367. package/packages/utilities/dist/esm/helpers/index.d.ts +1 -0
  368. package/packages/utilities/dist/esm/helpers/index.js +2 -0
  369. package/packages/utilities/dist/esm/index.d.ts +11 -0
  370. package/packages/utilities/dist/esm/index.js +12 -0
  371. package/packages/utilities/dist/esm/libs/cache.d.ts +17 -0
  372. package/packages/utilities/dist/esm/libs/cache.js +258 -0
  373. package/packages/utilities/dist/esm/libs/events.d.ts +27 -0
  374. package/packages/utilities/dist/esm/libs/events.js +102 -0
  375. package/packages/utilities/dist/esm/libs/util.d.ts +34 -0
  376. package/packages/utilities/dist/esm/libs/util.js +173 -0
  377. package/src/app/openuri.ts +3 -0
  378. package/src/auth/consts.ts +1 -0
  379. package/src/auth/index.ts +14 -0
  380. package/src/auth/models.ts +9 -5
@@ -0,0 +1,726 @@
1
+ 'use strict';
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
+ return new (P || (P = Promise))(function (resolve, reject) {
16
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
20
+ });
21
+ };
22
+ var __generator = (this && this.__generator) || function (thisArg, body) {
23
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
+ function verb(n) { return function (v) { return step([n, v]); }; }
26
+ function step(op) {
27
+ if (f) throw new TypeError("Generator is already executing.");
28
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
29
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
+ if (y = 0, t) op = [op[0] & 2, t.value];
31
+ switch (op[0]) {
32
+ case 0: case 1: t = op; break;
33
+ case 4: _.label++; return { value: op[1], done: false };
34
+ case 5: _.label++; y = op[1]; op = [0]; continue;
35
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
+ default:
37
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
+ if (t[2]) _.ops.pop();
42
+ _.trys.pop(); continue;
43
+ }
44
+ op = body.call(thisArg, _);
45
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
+ }
48
+ };
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ exports.Auth = void 0;
51
+ var consts_1 = require("./consts");
52
+ var oauth2client_1 = require("../oauth2client/oauth2client");
53
+ var captcha_1 = require("../captcha/captcha");
54
+ var utils_1 = require("../utils");
55
+ var encrypt_1 = require("../utils/encrypt");
56
+ var Auth = (function () {
57
+ function Auth(opts) {
58
+ var request = opts.request;
59
+ var oAuth2Client = opts.credentialsClient;
60
+ if (!oAuth2Client) {
61
+ var initOptions = {
62
+ apiOrigin: opts.apiOrigin,
63
+ clientId: opts.clientId,
64
+ storage: opts.storage,
65
+ };
66
+ oAuth2Client = new oauth2client_1.OAuth2Client(initOptions);
67
+ }
68
+ if (!request) {
69
+ var baseRequest = oAuth2Client.request.bind(oAuth2Client);
70
+ var captcha = new captcha_1.Captcha({
71
+ clientId: opts.clientId,
72
+ request: baseRequest,
73
+ storage: opts.storage,
74
+ });
75
+ request = captcha.request.bind(captcha);
76
+ }
77
+ this.config = {
78
+ apiOrigin: opts.apiOrigin,
79
+ clientId: opts.clientId,
80
+ request: request,
81
+ credentialsClient: oAuth2Client,
82
+ storage: opts.storage || oauth2client_1.defaultStorage,
83
+ };
84
+ }
85
+ Auth.parseParamsToSearch = function (params) {
86
+ Object.keys(params).forEach(function (key) {
87
+ if (!params[key]) {
88
+ delete params[key];
89
+ }
90
+ });
91
+ var searchParams = new URLSearchParams(params);
92
+ return searchParams.toString();
93
+ };
94
+ Auth.prototype.getParamsByVersion = function (params, key) {
95
+ var _a;
96
+ var paramsTemp = (0, utils_1.deepClone)(params);
97
+ var url = ((_a = { v2: consts_1.ApiUrlsV2 }[paramsTemp === null || paramsTemp === void 0 ? void 0 : paramsTemp.version]) === null || _a === void 0 ? void 0 : _a[key]) || consts_1.ApiUrls[key];
98
+ if (paramsTemp) {
99
+ delete paramsTemp.version;
100
+ }
101
+ return { params: paramsTemp, url: url };
102
+ };
103
+ Auth.prototype.signIn = function (params) {
104
+ return __awaiter(this, void 0, void 0, function () {
105
+ var version, res, body, credentials;
106
+ return __generator(this, function (_a) {
107
+ switch (_a.label) {
108
+ case 0:
109
+ version = params.version || 'v1';
110
+ res = this.getParamsByVersion(params, 'AUTH_SIGN_IN_URL');
111
+ if (res.params.query) {
112
+ delete res.params.query;
113
+ }
114
+ return [4, this.getEncryptParams(res.params)];
115
+ case 1:
116
+ body = _a.sent();
117
+ return [4, this.config.request(res.url, {
118
+ method: 'POST',
119
+ body: body,
120
+ })];
121
+ case 2:
122
+ credentials = _a.sent();
123
+ return [4, this.config.credentialsClient.setCredentials(__assign(__assign({}, credentials), { version: version }))];
124
+ case 3:
125
+ _a.sent();
126
+ return [2, Promise.resolve(credentials)];
127
+ }
128
+ });
129
+ });
130
+ };
131
+ Auth.prototype.signInAnonymously = function (data) {
132
+ if (data === void 0) { data = {}; }
133
+ return __awaiter(this, void 0, void 0, function () {
134
+ var credentials;
135
+ return __generator(this, function (_a) {
136
+ switch (_a.label) {
137
+ case 0: return [4, this.config.request(consts_1.ApiUrls.AUTH_SIGN_IN_ANONYMOUSLY_URL, {
138
+ method: 'POST',
139
+ body: data,
140
+ })];
141
+ case 1:
142
+ credentials = _a.sent();
143
+ return [4, this.config.credentialsClient.setCredentials(credentials)];
144
+ case 2:
145
+ _a.sent();
146
+ return [2, Promise.resolve(credentials)];
147
+ }
148
+ });
149
+ });
150
+ };
151
+ Auth.prototype.signUp = function (params) {
152
+ return __awaiter(this, void 0, void 0, function () {
153
+ var data;
154
+ return __generator(this, function (_a) {
155
+ switch (_a.label) {
156
+ case 0: return [4, this.config.request(consts_1.ApiUrls.AUTH_SIGN_UP_URL, {
157
+ method: 'POST',
158
+ body: params,
159
+ })];
160
+ case 1:
161
+ data = _a.sent();
162
+ return [4, this.config.credentialsClient.setCredentials(data)];
163
+ case 2:
164
+ _a.sent();
165
+ return [2, Promise.resolve(data)];
166
+ }
167
+ });
168
+ });
169
+ };
170
+ Auth.prototype.signOut = function () {
171
+ return __awaiter(this, void 0, void 0, function () {
172
+ var accessToken, data;
173
+ return __generator(this, function (_a) {
174
+ switch (_a.label) {
175
+ case 0: return [4, this.config.credentialsClient.getAccessToken()];
176
+ case 1:
177
+ accessToken = _a.sent();
178
+ return [4, this.config.request(consts_1.ApiUrls.AUTH_REVOKE_URL, {
179
+ method: 'POST',
180
+ body: {
181
+ token: accessToken,
182
+ },
183
+ })];
184
+ case 2:
185
+ data = _a.sent();
186
+ return [4, this.config.credentialsClient.setCredentials()];
187
+ case 3:
188
+ _a.sent();
189
+ return [2, Promise.resolve(data)];
190
+ }
191
+ });
192
+ });
193
+ };
194
+ Auth.prototype.getVerification = function (params) {
195
+ return __awaiter(this, void 0, void 0, function () {
196
+ var withCredentials, hasLogin;
197
+ return __generator(this, function (_a) {
198
+ switch (_a.label) {
199
+ case 0:
200
+ withCredentials = false;
201
+ if (!(params.target === 'CUR_USER')) return [3, 1];
202
+ withCredentials = true;
203
+ return [3, 3];
204
+ case 1: return [4, this.hasLoginState()];
205
+ case 2:
206
+ hasLogin = _a.sent();
207
+ if (hasLogin) {
208
+ withCredentials = true;
209
+ }
210
+ _a.label = 3;
211
+ case 3: return [2, this.config.request(consts_1.ApiUrls.VERIFICATION_URL, {
212
+ method: 'POST',
213
+ body: params,
214
+ withCaptcha: true,
215
+ withCredentials: withCredentials,
216
+ })];
217
+ }
218
+ });
219
+ });
220
+ };
221
+ Auth.prototype.verify = function (params) {
222
+ return __awaiter(this, void 0, void 0, function () {
223
+ var res, data;
224
+ return __generator(this, function (_a) {
225
+ switch (_a.label) {
226
+ case 0:
227
+ res = this.getParamsByVersion(params, 'VERIFY_URL');
228
+ return [4, this.config.request(res.url, {
229
+ method: 'POST',
230
+ body: res.params,
231
+ })];
232
+ case 1:
233
+ data = _a.sent();
234
+ if (!((params === null || params === void 0 ? void 0 : params.version) === 'v2')) return [3, 3];
235
+ return [4, this.config.credentialsClient.setCredentials(__assign(__assign({}, data), { version: 'v2' }))];
236
+ case 2:
237
+ _a.sent();
238
+ _a.label = 3;
239
+ case 3: return [2, data];
240
+ }
241
+ });
242
+ });
243
+ };
244
+ Auth.prototype.genProviderRedirectUri = function (params) {
245
+ return __awaiter(this, void 0, void 0, function () {
246
+ var url, otherParams;
247
+ return __generator(this, function (_a) {
248
+ url = "".concat(consts_1.ApiUrls.PROVIDER_URI_URL, "?client_id=").concat(this.config.clientId, "&provider_id=").concat(params.provider_id, "&redirect_uri=").concat(encodeURIComponent(params.provider_redirect_uri), "&state=").concat(params.state);
249
+ otherParams = params.other_params;
250
+ if (otherParams) {
251
+ if (typeof otherParams.sign_out_uri === 'string'
252
+ && otherParams.sign_out_uri.length > 0) {
253
+ url += "&other_params[sign_out_uri]=".concat(otherParams.sign_out_uri);
254
+ }
255
+ }
256
+ return [2, this.config.request(url, {
257
+ method: 'GET',
258
+ })];
259
+ });
260
+ });
261
+ };
262
+ Auth.prototype.grantProviderToken = function (params) {
263
+ return __awaiter(this, void 0, void 0, function () {
264
+ return __generator(this, function (_a) {
265
+ return [2, this.config.request(consts_1.ApiUrls.PROVIDER_TOKEN_URL, {
266
+ method: 'POST',
267
+ body: params,
268
+ })];
269
+ });
270
+ });
271
+ };
272
+ Auth.prototype.patchProviderToken = function (params) {
273
+ return __awaiter(this, void 0, void 0, function () {
274
+ return __generator(this, function (_a) {
275
+ return [2, this.config.request(consts_1.ApiUrls.PROVIDER_TOKEN_URL, {
276
+ method: 'PATCH',
277
+ body: params,
278
+ })];
279
+ });
280
+ });
281
+ };
282
+ Auth.prototype.signInWithProvider = function (params) {
283
+ return __awaiter(this, void 0, void 0, function () {
284
+ var res, credentials;
285
+ return __generator(this, function (_a) {
286
+ switch (_a.label) {
287
+ case 0:
288
+ res = this.getParamsByVersion(params, 'AUTH_SIGN_IN_WITH_PROVIDER_URL');
289
+ return [4, this.config.request(res.url, {
290
+ method: 'POST',
291
+ body: res.params,
292
+ })];
293
+ case 1:
294
+ credentials = _a.sent();
295
+ return [4, this.config.credentialsClient.setCredentials(__assign(__assign({}, credentials), { version: (params === null || params === void 0 ? void 0 : params.version) || 'v1' }))];
296
+ case 2:
297
+ _a.sent();
298
+ return [2, Promise.resolve(credentials)];
299
+ }
300
+ });
301
+ });
302
+ };
303
+ Auth.prototype.bindWithProvider = function (params) {
304
+ return __awaiter(this, void 0, void 0, function () {
305
+ return __generator(this, function (_a) {
306
+ return [2, this.config.request(consts_1.ApiUrls.PROVIDER_BIND_URL, {
307
+ method: 'POST',
308
+ body: params,
309
+ withCredentials: true,
310
+ })];
311
+ });
312
+ });
313
+ };
314
+ Auth.prototype.getUserProfile = function (params) {
315
+ return __awaiter(this, void 0, void 0, function () {
316
+ return __generator(this, function (_a) {
317
+ return [2, this.getUserInfo(params)];
318
+ });
319
+ });
320
+ };
321
+ Auth.prototype.getUserInfo = function (params) {
322
+ var _a;
323
+ if (params === void 0) { params = {}; }
324
+ return __awaiter(this, void 0, void 0, function () {
325
+ var res, searchParams, userInfo;
326
+ return __generator(this, function (_b) {
327
+ switch (_b.label) {
328
+ case 0:
329
+ res = this.getParamsByVersion(params, 'USER_ME_URL');
330
+ if ((_a = res.params) === null || _a === void 0 ? void 0 : _a.query) {
331
+ searchParams = new URLSearchParams(res.params.query);
332
+ res.url += "?".concat(searchParams.toString());
333
+ }
334
+ return [4, this.config.request(res.url, {
335
+ method: 'GET',
336
+ withCredentials: true,
337
+ })];
338
+ case 1:
339
+ userInfo = _b.sent();
340
+ if (userInfo.sub) {
341
+ userInfo.uid = userInfo.sub;
342
+ }
343
+ return [2, userInfo];
344
+ }
345
+ });
346
+ });
347
+ };
348
+ Auth.prototype.getWedaUserInfo = function () {
349
+ return __awaiter(this, void 0, void 0, function () {
350
+ var userInfo;
351
+ return __generator(this, function (_a) {
352
+ switch (_a.label) {
353
+ case 0: return [4, this.config.request(consts_1.ApiUrls.WEDA_USER_URL, {
354
+ method: 'GET',
355
+ withCredentials: true,
356
+ })];
357
+ case 1:
358
+ userInfo = _a.sent();
359
+ return [2, userInfo];
360
+ }
361
+ });
362
+ });
363
+ };
364
+ Auth.prototype.deleteMe = function (params) {
365
+ return __awaiter(this, void 0, void 0, function () {
366
+ var res, url;
367
+ return __generator(this, function (_a) {
368
+ res = this.getParamsByVersion(params, 'USER_ME_URL');
369
+ url = "".concat(res.url, "?").concat(Auth.parseParamsToSearch(res.params));
370
+ return [2, this.config.request(url, {
371
+ method: 'DELETE',
372
+ withCredentials: true,
373
+ })];
374
+ });
375
+ });
376
+ };
377
+ Auth.prototype.hasLoginState = function () {
378
+ return __awaiter(this, void 0, void 0, function () {
379
+ var error_1;
380
+ return __generator(this, function (_a) {
381
+ switch (_a.label) {
382
+ case 0:
383
+ _a.trys.push([0, 2, , 3]);
384
+ return [4, this.config.credentialsClient.getAccessToken()];
385
+ case 1:
386
+ _a.sent();
387
+ return [2, true];
388
+ case 2:
389
+ error_1 = _a.sent();
390
+ return [2, false];
391
+ case 3: return [2];
392
+ }
393
+ });
394
+ });
395
+ };
396
+ Auth.prototype.hasLoginStateSync = function () {
397
+ var credentials = this.config.credentialsClient.getCredentialsSync();
398
+ return credentials;
399
+ };
400
+ Auth.prototype.getLoginState = function () {
401
+ return __awaiter(this, void 0, void 0, function () {
402
+ return __generator(this, function (_a) {
403
+ return [2, this.config.credentialsClient.getCredentialsAsync()];
404
+ });
405
+ });
406
+ };
407
+ Auth.prototype.transByProvider = function (params) {
408
+ return __awaiter(this, void 0, void 0, function () {
409
+ return __generator(this, function (_a) {
410
+ return [2, this.config.request(consts_1.ApiUrls.USER_TRANS_BY_PROVIDER_URL, {
411
+ method: 'PATCH',
412
+ body: params,
413
+ withCredentials: true,
414
+ })];
415
+ });
416
+ });
417
+ };
418
+ Auth.prototype.grantToken = function (params) {
419
+ return __awaiter(this, void 0, void 0, function () {
420
+ var res;
421
+ return __generator(this, function (_a) {
422
+ res = this.getParamsByVersion(params, 'AUTH_TOKEN_URL');
423
+ return [2, this.config.request(res.url, {
424
+ method: 'POST',
425
+ body: res.params,
426
+ })];
427
+ });
428
+ });
429
+ };
430
+ Auth.prototype.getProviders = function () {
431
+ return __awaiter(this, void 0, void 0, function () {
432
+ return __generator(this, function (_a) {
433
+ return [2, this.config.request(consts_1.ApiUrls.PROVIDER_LIST, {
434
+ method: 'GET',
435
+ withCredentials: true,
436
+ })];
437
+ });
438
+ });
439
+ };
440
+ Auth.prototype.unbindProvider = function (params) {
441
+ return __awaiter(this, void 0, void 0, function () {
442
+ return __generator(this, function (_a) {
443
+ return [2, this.config.request("".concat(consts_1.ApiUrls.PROVIDER_UNBIND_URL, "/").concat(params.provider_id), {
444
+ method: 'DELETE',
445
+ withCredentials: true,
446
+ })];
447
+ });
448
+ });
449
+ };
450
+ Auth.prototype.checkPassword = function (params) {
451
+ return __awaiter(this, void 0, void 0, function () {
452
+ return __generator(this, function (_a) {
453
+ return [2, this.config.request("".concat(consts_1.ApiUrls.CHECK_PWD_URL), {
454
+ method: 'POST',
455
+ withCredentials: true,
456
+ body: params,
457
+ })];
458
+ });
459
+ });
460
+ };
461
+ Auth.prototype.bindPhone = function (params) {
462
+ return __awaiter(this, void 0, void 0, function () {
463
+ return __generator(this, function (_a) {
464
+ return [2, this.config.request("".concat(consts_1.ApiUrls.BIND_CONTACT_URL), {
465
+ method: 'PATCH',
466
+ withCredentials: true,
467
+ body: params,
468
+ })];
469
+ });
470
+ });
471
+ };
472
+ Auth.prototype.bindEmail = function (params) {
473
+ return __awaiter(this, void 0, void 0, function () {
474
+ return __generator(this, function (_a) {
475
+ return [2, this.config.request("".concat(consts_1.ApiUrls.BIND_CONTACT_URL), {
476
+ method: 'PATCH',
477
+ withCredentials: true,
478
+ body: params,
479
+ })];
480
+ });
481
+ });
482
+ };
483
+ Auth.prototype.setPassword = function (params) {
484
+ return __awaiter(this, void 0, void 0, function () {
485
+ return __generator(this, function (_a) {
486
+ return [2, this.config.request("".concat(consts_1.ApiUrls.AUTH_SET_PASSWORD), {
487
+ method: 'PATCH',
488
+ withCredentials: true,
489
+ body: params,
490
+ })];
491
+ });
492
+ });
493
+ };
494
+ Auth.prototype.updatePasswordByOld = function (params) {
495
+ return __awaiter(this, void 0, void 0, function () {
496
+ var sudoToken;
497
+ return __generator(this, function (_a) {
498
+ switch (_a.label) {
499
+ case 0: return [4, this.sudo({ password: params.old_password })];
500
+ case 1:
501
+ sudoToken = _a.sent();
502
+ return [2, this.setPassword({
503
+ sudo_token: sudoToken.sudo_token,
504
+ new_password: params.new_password,
505
+ })];
506
+ }
507
+ });
508
+ });
509
+ };
510
+ Auth.prototype.sudo = function (params) {
511
+ return __awaiter(this, void 0, void 0, function () {
512
+ return __generator(this, function (_a) {
513
+ return [2, this.config.request("".concat(consts_1.ApiUrls.SUDO_URL), {
514
+ method: 'POST',
515
+ withCredentials: true,
516
+ body: params,
517
+ })];
518
+ });
519
+ });
520
+ };
521
+ Auth.prototype.getCurUserVerification = function (params) {
522
+ return __awaiter(this, void 0, void 0, function () {
523
+ return __generator(this, function (_a) {
524
+ params.target = 'CUR_USER';
525
+ return [2, this.config.request(consts_1.ApiUrls.VERIFICATION_URL, {
526
+ method: 'POST',
527
+ body: params,
528
+ withCredentials: true,
529
+ withCaptcha: true,
530
+ })];
531
+ });
532
+ });
533
+ };
534
+ Auth.prototype.changeBindedProvider = function (params) {
535
+ return __awaiter(this, void 0, void 0, function () {
536
+ return __generator(this, function (_a) {
537
+ return [2, this.config.request("".concat(consts_1.ApiUrls.PROVIDER_LIST, "/").concat(params.provider_id, "/trans"), {
538
+ method: 'POST',
539
+ body: {
540
+ provider_trans_token: params.trans_token,
541
+ },
542
+ withCredentials: true,
543
+ })];
544
+ });
545
+ });
546
+ };
547
+ Auth.prototype.setUserProfile = function (params) {
548
+ return __awaiter(this, void 0, void 0, function () {
549
+ return __generator(this, function (_a) {
550
+ return [2, this.config.request(consts_1.ApiUrls.USER_PRIFILE_URL, {
551
+ method: 'PATCH',
552
+ body: params,
553
+ withCredentials: true,
554
+ })];
555
+ });
556
+ });
557
+ };
558
+ Auth.prototype.queryUserProfile = function (params) {
559
+ return __awaiter(this, void 0, void 0, function () {
560
+ var searchParams;
561
+ return __generator(this, function (_a) {
562
+ searchParams = new URLSearchParams(params);
563
+ return [2, this.config.request("".concat(consts_1.ApiUrls.USER_QUERY_URL, "?").concat(searchParams.toString()), {
564
+ method: 'GET',
565
+ withCredentials: true,
566
+ })];
567
+ });
568
+ });
569
+ };
570
+ Auth.prototype.setCustomSignFunc = function (getTickFn) {
571
+ this.getCustomSignTicketFn = getTickFn;
572
+ };
573
+ Auth.prototype.signInWithCustomTicket = function (params) {
574
+ return __awaiter(this, void 0, void 0, function () {
575
+ var customTicket;
576
+ return __generator(this, function (_a) {
577
+ switch (_a.label) {
578
+ case 0: return [4, this.getCustomSignTicketFn()];
579
+ case 1:
580
+ customTicket = _a.sent();
581
+ return [2, this.signInWithProvider(__assign(__assign({}, params), { provider_id: 'custom', provider_token: customTicket }))];
582
+ }
583
+ });
584
+ });
585
+ };
586
+ Auth.prototype.resetPassword = function (params) {
587
+ return __awaiter(this, void 0, void 0, function () {
588
+ return __generator(this, function (_a) {
589
+ return [2, this.config.request(consts_1.ApiUrls.AUTH_RESET_PASSWORD, {
590
+ method: 'POST',
591
+ body: params,
592
+ })];
593
+ });
594
+ });
595
+ };
596
+ Auth.prototype.deviceAuthorize = function (params) {
597
+ return __awaiter(this, void 0, void 0, function () {
598
+ return __generator(this, function (_a) {
599
+ return [2, this.config.request(consts_1.ApiUrls.AUTH_GET_DEVICE_CODE, {
600
+ method: 'POST',
601
+ body: params,
602
+ withCredentials: true,
603
+ })];
604
+ });
605
+ });
606
+ };
607
+ Auth.prototype.checkUsername = function (params) {
608
+ return __awaiter(this, void 0, void 0, function () {
609
+ return __generator(this, function (_a) {
610
+ return [2, this.config.request(consts_1.ApiUrls.CHECK_USERNAME, {
611
+ method: 'GET',
612
+ body: params,
613
+ withCredentials: true,
614
+ })];
615
+ });
616
+ });
617
+ };
618
+ Auth.prototype.checkIfUserExist = function (params) {
619
+ return __awaiter(this, void 0, void 0, function () {
620
+ var searchParams;
621
+ return __generator(this, function (_a) {
622
+ searchParams = new URLSearchParams(params);
623
+ return [2, this.config.request("".concat(consts_1.ApiUrls.CHECK_IF_USER_EXIST, "?").concat(searchParams.toString()), {
624
+ method: 'GET',
625
+ })];
626
+ });
627
+ });
628
+ };
629
+ Auth.prototype.loginScope = function () {
630
+ return __awaiter(this, void 0, void 0, function () {
631
+ return __generator(this, function (_a) {
632
+ return [2, this.config.credentialsClient.getScope()];
633
+ });
634
+ });
635
+ };
636
+ Auth.prototype.loginGroups = function () {
637
+ return __awaiter(this, void 0, void 0, function () {
638
+ return __generator(this, function (_a) {
639
+ return [2, this.config.credentialsClient.getGroups()];
640
+ });
641
+ });
642
+ };
643
+ Auth.prototype.refreshTokenForce = function (params) {
644
+ return __awaiter(this, void 0, void 0, function () {
645
+ var credentials;
646
+ return __generator(this, function (_a) {
647
+ switch (_a.label) {
648
+ case 0: return [4, this.config.credentialsClient.getCredentials()];
649
+ case 1:
650
+ credentials = _a.sent();
651
+ return [4, this.config.credentialsClient.refreshToken(__assign(__assign({}, credentials), { version: (params === null || params === void 0 ? void 0 : params.version) || 'v1' }))];
652
+ case 2: return [2, _a.sent()];
653
+ }
654
+ });
655
+ });
656
+ };
657
+ Auth.prototype.getCredentials = function () {
658
+ return __awaiter(this, void 0, void 0, function () {
659
+ return __generator(this, function (_a) {
660
+ return [2, this.config.credentialsClient.getCredentials()];
661
+ });
662
+ });
663
+ };
664
+ Auth.prototype.getPublicKey = function () {
665
+ return __awaiter(this, void 0, void 0, function () {
666
+ return __generator(this, function (_a) {
667
+ return [2, this.config.request(consts_1.ApiUrlsV2.AUTH_PUBLIC_KEY, {
668
+ method: 'POST',
669
+ body: {},
670
+ })];
671
+ });
672
+ });
673
+ };
674
+ Auth.prototype.getEncryptParams = function (params) {
675
+ return __awaiter(this, void 0, void 0, function () {
676
+ var payload, publicKey, public_key_thumbprint, res, error_2;
677
+ return __generator(this, function (_a) {
678
+ switch (_a.label) {
679
+ case 0:
680
+ payload = (0, utils_1.deepClone)(params);
681
+ if (!payload.isEncrypt) {
682
+ return [2, params];
683
+ }
684
+ publicKey = '';
685
+ public_key_thumbprint = '';
686
+ _a.label = 1;
687
+ case 1:
688
+ _a.trys.push([1, 3, , 4]);
689
+ return [4, this.getPublicKey()];
690
+ case 2:
691
+ res = _a.sent();
692
+ publicKey = res.public_key;
693
+ public_key_thumbprint = res.public_key_thumbprint;
694
+ return [3, 4];
695
+ case 3:
696
+ error_2 = _a.sent();
697
+ return [3, 4];
698
+ case 4:
699
+ if (!publicKey || !public_key_thumbprint) {
700
+ throw new Error('public_key or public_key_thumbprint is empty');
701
+ }
702
+ delete payload.isEncrypt;
703
+ return [2, {
704
+ params: (0, encrypt_1.getEncryptInfo)({ publicKey: publicKey, payload: payload }),
705
+ public_key_thumbprint: public_key_thumbprint,
706
+ }];
707
+ }
708
+ });
709
+ });
710
+ };
711
+ Auth.prototype.getProviderSubType = function () {
712
+ return __awaiter(this, void 0, void 0, function () {
713
+ return __generator(this, function (_a) {
714
+ return [2, this.config.request(consts_1.ApiUrls.GET_PROVIDER_TYPE, {
715
+ method: 'POST',
716
+ body: {
717
+ provider_id: 'weda',
718
+ },
719
+ })];
720
+ });
721
+ });
722
+ };
723
+ return Auth;
724
+ }());
725
+ exports.Auth = Auth;
726
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdXRoL2FwaXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVaLG1DQUE2QztBQThDN0MsNkRBQTJFO0FBRTNFLDhDQUE0QztBQUM1QyxrQ0FBb0M7QUFDcEMsNENBQWlEO0FBY2pEO0lBa0JFLGNBQVksSUFBaUI7UUFDckIsSUFBQSxPQUFPLEdBQUssSUFBSSxRQUFULENBQVM7UUFDdEIsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFBO1FBQ3pDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDakIsSUFBTSxXQUFXLEdBQUc7Z0JBQ2xCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztnQkFDekIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2dCQUN2QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87YUFDdEIsQ0FBQTtZQUNELFlBQVksR0FBRyxJQUFJLDJCQUFZLENBQUMsV0FBVyxDQUFDLENBQUE7U0FDN0M7UUFDRCxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1osSUFBTSxXQUFXLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUE7WUFDM0QsSUFBTSxPQUFPLEdBQUcsSUFBSSxpQkFBTyxDQUFDO2dCQUMxQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7Z0JBQ3ZCLE9BQU8sRUFBRSxXQUFXO2dCQUNwQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87YUFDdEIsQ0FBQyxDQUFBO1lBQ0YsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1NBQ3hDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sR0FBRztZQUNaLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6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QU0sRUFBRSxNQUFNO3dCQUNkLElBQUksRUFBRTs0QkFDSixXQUFXLEVBQUUsTUFBTTt5QkFDcEI7cUJBQ0YsQ0FBQyxFQUFBOzs7S0FDSDtJQUNILFdBQUM7QUFBRCxDQUFDLEFBcHNCRCxJQW9zQkM7QUFwc0JZLG9CQUFJIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnXG5cbmltcG9ydCB7IEFwaVVybHMsIEFwaVVybHNWMiB9IGZyb20gJy4vY29uc3RzJ1xuaW1wb3J0IHtcbiAgR2V0VmVyaWZpY2F0aW9uUmVxdWVzdCxcbiAgR2V0VmVyaWZpY2F0aW9uUmVzcG9uc2UsXG4gIFVzZXJQcm9maWxlLFxuICBVc2VySW5mbyxcbiAgU2lnbkluUmVxdWVzdCxcbiAgU2lnblVwUmVxdWVzdCxcbiAgVmVyaWZ5UmVxdWVzdCxcbiAgVmVyaWZ5UmVzcG9uc2UsXG4gIEdlblByb3ZpZGVyUmVkaXJlY3RVcmlSZXF1ZXN0LFxuICBHZW5Qcm92aWRlclJlZGlyZWN0VXJpUmVzcG9uc2UsXG4gIEdyYW50UHJvdmlkZXJUb2tlblJlcXVlc3QsXG4gIEdyYW50UHJvdmlkZXJUb2tlblJlc3BvbnNlLFxuICBQYXRjaFByb3ZpZGVyVG9rZW5SZXF1ZXN0LFxuICBQYXRjaFByb3ZpZGVyVG9rZW5SZXNwb25zZSxcbiAgU2lnbkluV2l0aFByb3ZpZGVyUmVxdWVzdCxcbiAgQmluZFdpdGhQcm92aWRlclJlcXVlc3QsXG4gIFRyYW5zQnlQcm92aWRlclJlcXVlc3QsXG4gIEdyYW50VG9rZW5SZXF1ZXN0LFxuICBVc2VyUHJvZmlsZVByb3ZpZGVyLFxuICBVbmJpbmRQcm92aWRlclJlcXVlc3QsXG4gIENoZWNrUGFzc3dvcmRyUmVxdWVzdCxcbiAgQmluZFBob25lUmVxdWVzdCxcbiAgQmluZEVtYWlsUmVxdWVzdCxcbiAgU2V0UGFzc3dvcmRSZXF1ZXN0LFxuICBDaGFuZ2VCaW5kZWRQcm92aWRlclJlcXVlc3QsXG4gIENoYW5nZUJpbmRlZFByb3ZpZGVyUmVzcG9uc2UsXG4gIFVwZGF0ZVBhc3N3b3JkUmVxdWVzdCxcbiAgU3Vkb1Jlc3BvbnNlLFxuICBTdWRvUmVxdWVzdCxcbiAgR2V0Q3VzdG9tU2lnblRpY2tldEZuLFxuICBRdWVyeVVzZXJQcm9maWxlUmVxdWVzdCxcbiAgUXVlcnlVc2VyUHJvZmlsZVJlc3BvbnNlLFxuICBSZXNldFBhc3N3b3JkUmVxdWVzdCxcbiAgRGV2aWNlQXV0aG9yaXplUmVxdWVzdCxcbiAgRGV2aWNlQXV0aG9yaXplUmVzcG9uc2UsXG4gIENoZWNrVXNlcm5hbWVSZXF1ZXN0LFxuICBDaGVja0lmVXNlckV4aXN0UmVxdWVzdCxcbiAgQ2hlY2tJZlVzZXJFeGlzdFJlc3BvbnNlLFxuICBXaXRoU3Vkb1JlcXVlc3QsXG4gIFB1YmxpY0tleSxcbiAgRW5jcnlwdFBhcmFtcyxcbiAgUHJvdmlkZXJTdWJUeXBlLFxufSBmcm9tICcuL21vZGVscydcbmltcG9ydCB7IFNpbXBsZVN0b3JhZ2UsIFJlcXVlc3RGdW5jdGlvbiB9IGZyb20gJy4uL29hdXRoMmNsaWVudC9pbnRlcmZhY2UnXG5pbXBvcnQgeyBPQXV0aDJDbGllbnQsIGRlZmF1bHRTdG9yYWdlIH0gZnJvbSAnLi4vb2F1dGgyY2xpZW50L29hdXRoMmNsaWVudCdcbmltcG9ydCB7IENyZWRlbnRpYWxzIH0gZnJvbSAnLi4vb2F1dGgyY2xpZW50L21vZGVscydcbmltcG9ydCB7IENhcHRjaGEgfSBmcm9tICcuLi9jYXB0Y2hhL2NhcHRjaGEnXG5pbXBvcnQgeyBkZWVwQ2xvbmUgfSBmcm9tICcuLi91dGlscydcbmltcG9ydCB7IGdldEVuY3J5cHRJbmZvIH0gZnJvbSAnLi4vdXRpbHMvZW5jcnlwdCdcblxuZXhwb3J0IGludGVyZmFjZSBBdXRoT3B0aW9ucyB7XG4gIGFwaU9yaWdpbjogc3RyaW5nO1xuICBjbGllbnRJZDogc3RyaW5nO1xuICBjcmVkZW50aWFsc0NsaWVudD86IE9BdXRoMkNsaWVudDtcbiAgcmVxdWVzdD86IFJlcXVlc3RGdW5jdGlvbjtcbiAgc3RvcmFnZT86IFNpbXBsZVN0b3JhZ2U7XG4gIGFub255bW91c1NpZ25JbkZ1bmM/OiAoQ3JlZGVudGlhbHMpID0+IFByb21pc2U8Q3JlZGVudGlhbHMgfCB2b2lkPjtcbn1cblxuLyoqXG4gKiBBdXRoXG4gKi9cbmV4cG9ydCBjbGFzcyBBdXRoIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcGFyc2VQYXJhbXNUb1NlYXJjaChwYXJhbXM6IGFueSk6IHN0cmluZyB7XG4gICAgT2JqZWN0LmtleXMocGFyYW1zKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIGlmICghcGFyYW1zW2tleV0pIHtcbiAgICAgICAgZGVsZXRlIHBhcmFtc1trZXldXG4gICAgICB9XG4gICAgfSlcbiAgICBjb25zdCBzZWFyY2hQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHBhcmFtcyBhcyBhbnkpXG4gICAgcmV0dXJuIHNlYXJjaFBhcmFtcy50b1N0cmluZygpXG4gIH1cblxuICBwcml2YXRlIGNvbmZpZzogQXV0aE9wdGlvbnNcbiAgcHJpdmF0ZSBnZXRDdXN0b21TaWduVGlja2V0Rm4/OiBHZXRDdXN0b21TaWduVGlja2V0Rm5cblxuICAvKipcbiAgICogY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtBdXRoT3B0aW9uc30gb3B0c1xuICAgKi9cbiAgY29uc3RydWN0b3Iob3B0czogQXV0aE9wdGlvbnMpIHtcbiAgICBsZXQgeyByZXF1ZXN0IH0gPSBvcHRzXG4gICAgbGV0IG9BdXRoMkNsaWVudCA9IG9wdHMuY3JlZGVudGlhbHNDbGllbnRcbiAgICBpZiAoIW9BdXRoMkNsaWVudCkge1xuICAgICAgY29uc3QgaW5pdE9wdGlvbnMgPSB7XG4gICAgICAgIGFwaU9yaWdpbjogb3B0cy5hcGlPcmlnaW4sXG4gICAgICAgIGNsaWVudElkOiBvcHRzLmNsaWVudElkLFxuICAgICAgICBzdG9yYWdlOiBvcHRzLnN0b3JhZ2UsXG4gICAgICB9XG4gICAgICBvQXV0aDJDbGllbnQgPSBuZXcgT0F1dGgyQ2xpZW50KGluaXRPcHRpb25zKVxuICAgIH1cbiAgICBpZiAoIXJlcXVlc3QpIHtcbiAgICAgIGNvbnN0IGJhc2VSZXF1ZXN0ID0gb0F1dGgyQ2xpZW50LnJlcXVlc3QuYmluZChvQXV0aDJDbGllbnQpXG4gICAgICBjb25zdCBjYXB0Y2hhID0gbmV3IENhcHRjaGEoe1xuICAgICAgICBjbGllbnRJZDogb3B0cy5jbGllbnRJZCxcbiAgICAgICAgcmVxdWVzdDogYmFzZVJlcXVlc3QsXG4gICAgICAgIHN0b3JhZ2U6IG9wdHMuc3RvcmFnZSxcbiAgICAgIH0pXG4gICAgICByZXF1ZXN0ID0gY2FwdGNoYS5yZXF1ZXN0LmJpbmQoY2FwdGNoYSlcbiAgICB9XG4gICAgdGhpcy5jb25maWcgPSB7XG4gICAgICBhcGlPcmlnaW46IG9wdHMuYXBpT3JpZ2luLFxuICAgICAgY2xpZW50SWQ6IG9wdHMuY2xpZW50SWQsXG4gICAgICByZXF1ZXN0LFxuICAgICAgY3JlZGVudGlhbHNDbGllbnQ6IG9BdXRoMkNsaWVudCxcbiAgICAgIHN0b3JhZ2U6IG9wdHMuc3RvcmFnZSB8fCBkZWZhdWx0U3RvcmFnZSxcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICog5qC55o2u54mI5pys5qCH6K+G77yM5aSE55CG5b6F6K+35rGC55qEdXJs5ZKMcGFyYW1zXG4gICAqIEBwYXJhbSBwYXJhbXNcbiAgICogQHBhcmFtIGtleVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgcHVibGljIGdldFBhcmFtc0J5VmVyc2lvbihwYXJhbXM6IGFueSwga2V5OiBzdHJpbmcpIHtcbiAgICBjb25zdCBwYXJhbXNUZW1wID0gZGVlcENsb25lKHBhcmFtcylcbiAgICBjb25zdCB1cmwgPSB7IHYyOiBBcGlVcmxzVjIgfVtwYXJhbXNUZW1wPy52ZXJzaW9uXT8uW2tleV0gfHwgQXBpVXJsc1trZXldXG5cbiAgICBpZiAocGFyYW1zVGVtcCkge1xuICAgICAgZGVsZXRlIHBhcmFtc1RlbXAudmVyc2lvblxuICAgIH1cblxuICAgIHJldHVybiB7IHBhcmFtczogcGFyYW1zVGVtcCwgdXJsIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTaWduIGluLlxuICAgKiBAcGFyYW0ge1NpZ25JblJlcXVlc3R9IHBhcmFtcyBBIFNpZ25JblJlcXVlc3QgT2JqZWN0LlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPENyZWRlbnRpYWxzPn0gQSBQcm9taXNlPENyZWRlbnRpYWxzPiBvYmplY3QuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc2lnbkluKHBhcmFtczogU2lnbkluUmVxdWVzdCk6IFByb21pc2U8Q3JlZGVudGlhbHM+IHtcbiAgICBjb25zdCB2ZXJzaW9uID0gcGFyYW1zLnZlcnNpb24gfHwgJ3YxJ1xuICAgIGNvbnN0IHJlcyA9IHRoaXMuZ2V0UGFyYW1zQnlWZXJzaW9uKHBhcmFtcywgJ0FVVEhfU0lHTl9JTl9VUkwnKVxuICAgIGlmIChyZXMucGFyYW1zLnF1ZXJ5KSB7XG4gICAgICBkZWxldGUgcmVzLnBhcmFtcy5xdWVyeVxuICAgIH1cblxuICAgIGNvbnN0IGJvZHkgPSBhd2FpdCB0aGlzLmdldEVuY3J5cHRQYXJhbXMocmVzLnBhcmFtcylcbiAgICBjb25zdCBjcmVkZW50aWFsczogQ3JlZGVudGlhbHMgPSBhd2FpdCB0aGlzLmNvbmZpZy5yZXF1ZXN0PENyZWRlbnRpYWxzPihcbiAgICAgIHJlcy51cmwsXG4gICAgICB7XG4gICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICBib2R5LFxuICAgICAgfVxuICAgIClcbiAgICBhd2FpdCB0aGlzLmNvbmZpZy5jcmVkZW50aWFsc0NsaWVudC5zZXRDcmVkZW50aWFscyh7XG4gICAgICAuLi5jcmVkZW50aWFscyxcbiAgICAgIHZlcnNpb24sXG4gICAgfSlcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGNyZWRlbnRpYWxzKVxuICB9XG5cbiAgLyoqXG4gICAqIFNpZ24gaW4gQW5vbnltb3VzbHlcbiAgICogQHJldHVybiB7UHJvbWlzZTxDcmVkZW50aWFscz59IEEgUHJvbWlzZTxDcmVkZW50aWFscz4gb2JqZWN0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHNpZ25JbkFub255bW91c2x5KGRhdGE6IHtcbiAgICBwcm92aWRlcl90b2tlbj86IHN0cmluZztcbiAgfSA9IHt9KTogUHJvbWlzZTxDcmVkZW50aWFscz4ge1xuICAgIGNvbnN0IGNyZWRlbnRpYWxzOiBDcmVkZW50aWFscyA9IGF3YWl0IHRoaXMuY29uZmlnLnJlcXVlc3Q8Q3JlZGVudGlhbHM+KFxuICAgICAgQXBpVXJscy5BVVRIX1NJR05fSU5fQU5PTllNT1VTTFlfVVJMLFxuICAgICAge1xuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgYm9keTogZGF0YSxcbiAgICAgIH1cbiAgICApXG4gICAgYXdhaXQgdGhpcy5jb25maWcuY3JlZGVudGlhbHNDbGllbnQuc2V0Q3JlZGVudGlhbHMoY3JlZGVudGlhbHMpXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShjcmVkZW50aWFscylcbiAgfVxuXG4gIC8qKlxuICAgKiBTaWduIHVwLlxuICAgKiBAcGFyYW0ge1NpZ25VcFJlcXVlc3R9IHBhcmFtcyBBIFNpZ25VcFJlcXVlc3QgT2JqZWN0LlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPENyZWRlbnRpYWxzPn0gQSBQcm9taXNlPENyZWRlbnRpYWxzPiBvYmplY3QuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc2lnblVwKHBhcmFtczogU2lnblVwUmVxdWVzdCk6IFByb21pc2U8Q3JlZGVudGlhbHM+IHtcbiAgICBjb25zdCBkYXRhOiBDcmVkZW50aWFscyA9IGF3YWl0IHRoaXMuY29uZmlnLnJlcXVlc3Q8Q3JlZGVudGlhbHM+KFxuICAgICAgQXBpVXJscy5BVVRIX1NJR05fVVBfVVJMLFxuICAgICAge1xuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgYm9keTogcGFyYW1zLFxuICAgICAgfVxuICAgIClcbiAgICBhd2FpdCB0aGlzLmNvbmZpZy5jcmVkZW50aWFsc0NsaWVudC5zZXRDcmVkZW50aWFscyhkYXRhKVxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZGF0YSlcbiAgfVxuXG4gIC8qKlxuICAgKiBTaWduIG91dC5cbiAgICogQHJldHVybiB7T2JqZWN0fSBBIFByb21pc2U8dm9pZD4gb2JqZWN0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHNpZ25PdXQoKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbjogc3RyaW5nID0gICAgICBhd2FpdCB0aGlzLmNvbmZpZy5jcmVkZW50aWFsc0NsaWVudC5nZXRBY2Nlc3NUb2tlbigpXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuY29uZmlnLnJlcXVlc3QoQXBpVXJscy5BVVRIX1JFVk9LRV9VUkwsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keToge1xuICAgICAgICB0b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICB9LFxuICAgIH0pXG4gICAgYXdhaXQgdGhpcy5jb25maWcuY3JlZGVudGlhbHNDbGllbnQuc2V0Q3JlZGVudGlhbHMoKVxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZGF0YSlcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHZlcmlmaWNhdGlvbi5cbiAgICogQHBhcmFtIHtHZXRWZXJpZmljYXRpb25SZXF1ZXN0fSBwYXJhbXMgQSBHZXRWZXJpZmljYXRpb25SZXF1ZXN0IE9iamVjdC5cbiAgICogQHJldHVybiB7UHJvbWlzZTxHZXRWZXJpZmljYXRpb25SZXNwb25zZT59IEEgUHJvbWlzZTxHZXRWZXJpZmljYXRpb25SZXNwb25zZT4gb2JqZWN0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldFZlcmlmaWNhdGlvbihwYXJhbXM6IEdldFZlcmlmaWNhdGlvblJlcXVlc3QpOiBQcm9taXNlPEdldFZlcmlmaWNhdGlvblJlc3BvbnNlPiB7XG4gICAgbGV0IHdpdGhDcmVkZW50aWFscyA9IGZhbHNlXG4gICAgLy8g5Y+R6YCB55+t5L+h5pe277yM5aaC5p6c5pe257uZ5b2T5YmN55So5oi35Y+R77yM5YiZ6ZyA6KaB5bim5LiK6Ym05p2D5L+h5oGvXG4gICAgaWYgKHBhcmFtcy50YXJnZXQgPT09ICdDVVJfVVNFUicpIHtcbiAgICAgIHdpdGhDcmVkZW50aWFscyA9IHRydWVcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaGFzTG9naW4gPSBhd2FpdCB0aGlzLmhhc0xvZ2luU3RhdGUoKVxuICAgICAgaWYgKGhhc0xvZ2luKSB7XG4gICAgICAgIHdpdGhDcmVkZW50aWFscyA9IHRydWVcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnJlcXVlc3Q8R2V0VmVyaWZpY2F0aW9uUmVzcG9uc2U+KFxuICAgICAgQXBpVXJscy5WRVJJRklDQVRJT05fVVJMLFxuICAgICAge1xuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgYm9keTogcGFyYW1zLFxuICAgICAgICB3aXRoQ2FwdGNoYTogdHJ1ZSxcbiAgICAgICAgd2l0aENyZWRlbnRpYWxzLFxuICAgICAgfVxuICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiAgVmVyaWZ5IHRoZSBjb2RlXG4gICAqIEBwYXJhbSB7VmVyaWZ5UmVxdWVzdH0gcGFyYW1zIEEgVmVyaWZ5UmVxdWVzdCBPYmplY3QuXG4gICAqIEByZXR1cm4ge1Byb21pc2U8VmVyaWZ5UmVzcG9uc2U+fSBBIFByb21pc2U8VmVyaWZ5UmVzcG9uc2U+IG9iamVjdC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyB2ZXJpZnkocGFyYW1zOiBWZXJpZnlSZXF1ZXN0KTogUHJvbWlzZTxWZXJpZnlSZXNwb25zZT4ge1xuICAgIGNvbnN0IHJlcyA9IHRoaXMuZ2V0UGFyYW1zQnlWZXJzaW9uKHBhcmFtcywgJ1ZFUklGWV9VUkwnKVxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmNvbmZpZy5yZXF1ZXN0PFZlcmlmeVJlc3BvbnNlPihyZXMudXJsLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IHJlcy5wYXJhbXMsXG4gICAgfSlcblxuICAgIGlmIChwYXJhbXM/LnZlcnNpb24gPT09ICd2MicpIHtcbiAgICAgIGF3YWl0IHRoaXMuY29uZmlnLmNyZWRlbnRpYWxzQ2xpZW50LnNldENyZWRlbnRpYWxzKHtcbiAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgdmVyc2lvbjogJ3YyJyxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGFcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW4gcHJvdmlkZXIgcmVkaXJlY3QgdXJpLlxuICAgKiBAcGFyYW0ge0dlblByb3ZpZGVyUmVkaXJlY3RVcmlSZXF1ZXN0fSBwYXJhbXMgQSBHZW5Qcm92aWRlclJlZGlyZWN0VXJpUmVxdWVzdCBvYmplY3QuXG4gICAqIEByZXR1cm4ge1Byb21pc2U8R2VuUHJvdmlkZXJSZWRpcmVjdFVyaVJlc3BvbnNlPn0gQSBQcm9taXNlPEdlblByb3ZpZGVyUmVkaXJlY3RVcmlSZXNwb25zZT4gb2JqZWN0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdlblByb3ZpZGVyUmVkaXJlY3RVcmkocGFyYW1zOiBHZW5Qcm92aWRlclJlZGlyZWN0VXJpUmVxdWVzdCk6IFByb21pc2U8R2VuUHJvdmlkZXJSZWRpcmVjdFVyaVJlc3BvbnNlPiB7XG4gICAgbGV0IHVybCA9IGAke0FwaVVybHMuUFJPVklERVJfVVJJX1VSTH0/Y2xpZW50X2lkPSR7XG4gICAgICB0aGlzLmNvbmZpZy5jbGllbnRJZFxuICAgIH0mcHJvdmlkZXJfaWQ9JHtwYXJhbXMucHJvdmlkZXJfaWR9JnJlZGlyZWN0X3VyaT0ke2VuY29kZVVSSUNvbXBvbmVudChwYXJhbXMucHJvdmlkZXJfcmVkaXJlY3RfdXJpKX0mc3RhdGU9JHtwYXJhbXMuc3RhdGV9YFxuICAgIGNvbnN0IHsgb3RoZXJfcGFyYW1zOiBvdGhlclBhcmFtcyB9ID0gcGFyYW1zXG4gICAgaWYgKG90aGVyUGFyYW1zKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHR5cGVvZiBvdGhlclBhcmFtcy5zaWduX291dF91cmkgPT09ICdzdHJpbmcnXG4gICAgICAgICYmIG90aGVyUGFyYW1zLnNpZ25fb3V0X3VyaS5sZW5ndGggPiAwXG4gICAgICApIHtcbiAgICAgICAgdXJsICs9IGAmb3RoZXJfcGFyYW1zW3NpZ25fb3V0X3VyaV09JHtvdGhlclBhcmFtcy5zaWduX291dF91cml9YFxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jb25maWcucmVxdWVzdDxHZW5Qcm92aWRlclJlZGlyZWN0VXJpUmVzcG9uc2U+KHVybCwge1xuICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHByb3ZpZGVyIHRva2VuLlxuICAgKiBAcGFyYW0ge0dyYW50UHJvdmlkZXJUb2tlblJlcXVlc3R9IHBhcmFtcyBBIEdyYW50UHJvdmlkZXJUb2tlblJlcXVlc3Qgb2JqZWN0LlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPEdyYW50UHJvdmlkZXJUb2tlblJlc3BvbnNlPn0gQSBQcm9taXNlPEdyYW50UHJvdmlkZXJUb2tlblJlc3BvbnNlPiBvYmplY3QuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ3JhbnRQcm92aWRlclRva2VuKHBhcmFtczogR3JhbnRQcm92aWRlclRva2VuUmVxdWVzdCk6IFByb21pc2U8R3JhbnRQcm92aWRlclRva2VuUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcucmVxdWVzdDxHcmFudFByb3ZpZGVyVG9rZW5SZXNwb25zZT4oXG4gICAgICBBcGlVcmxzLlBST1ZJREVSX1RPS0VOX1VSTCxcbiAgICAgIHtcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIGJvZHk6IHBhcmFtcyxcbiAgICAgIH1cbiAgICApXG4gIH1cblxuICAvKipcbiAgICogR3JhbnQgcHJvdmlkZXIgdG9rZW4uXG4gICAqIEBwYXJhbSB7UGF0Y2hQcm92aWRlclRva2VuUmVxdWVzdH0gcGFyYW1zIEEgUGF0Y2hQcm92aWRlclRva2VuUmVxdWVzdCBvYmplY3QuXG4gICAqIEByZXR1cm4ge1Byb21pc2U8UGF0Y2hQcm92aWRlclRva2VuUmVzcG9uc2U+fSBBIFByb21pc2U8UGF0Y2hQcm92aWRlclRva2VuUmVzcG9uc2U+IG9iamVjdC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBwYXRjaFByb3ZpZGVyVG9rZW4ocGFyYW1zOiBQYXRjaFByb3ZpZGVyVG9rZW5SZXF1ZXN0KTogUHJvbWlzZTxQYXRjaFByb3ZpZGVyVG9rZW5SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5yZXF1ZXN0PFBhdGNoUHJvdmlkZXJUb2tlblJlc3BvbnNlPihcbiAgICAgIEFwaVVybHMuUFJPVklERVJfVE9LRU5fVVJMLFxuICAgICAge1xuICAgICAgICBtZXRob2Q6ICdQQVRDSCcsXG4gICAgICAgIGJvZHk6IHBhcmFtcyxcbiAgICAgIH1cbiAgICApXG4gIH1cblxuICAvKipcbiAgICogU2lnbmluIHdpdGggcHJvdmlkZXIgcmVxdWVzdC5cbiAgICogQHBhcmFtIHtTaWduSW5XaXRoUHJvdmlkZXJSZXF1ZXN0fSBwYXJhbXMgQSBTaWduSW5XaXRoUHJvdmlkZXJSZXF1ZXN0IG9iamVjdC5cbiAgICogQHJldHVybiB7UHJvbWlzZTxDcmVkZW50aWFscz59IEEgUHJvbWlzZTxDcmVkZW50aWFscz4gb2JqZWN0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHNpZ25JbldpdGhQcm92aWRlcihwYXJhbXM6IFNpZ25JbldpdGhQcm92aWRlclJlcXVlc3QpOiBQcm9taXNlPENyZWRlbnRpYWxzPiB7XG4gICAgY29uc3QgcmVzID0gdGhpcy5nZXRQYXJhbXNCeVZlcnNpb24oXG4gICAgICBwYXJhbXMsXG4gICAgICAnQVVUSF9TSUdOX0lOX1dJVEhfUFJPVklERVJfVVJMJ1xuICAgIClcbiAgICBjb25zdCBjcmVkZW50aWFsczogQ3JlZGVudGlhbHMgPSBhd2FpdCB0aGlzLmNvbmZpZy5yZXF1ZXN0PENyZWRlbnRpYWxzPihcbiAgICAgIHJlcy51cmwsXG4gICAgICB7XG4gICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICBib2R5OiByZXMucGFyYW1zLFxuICAgICAgfVxuICAgIClcbiAgICBhd2FpdCB0aGlzLmNvbmZpZy5jcmVkZW50aWFsc0NsaWVudC5zZXRDcmVkZW50aWFscyh7XG4gICAgICAuLi5jcmVkZW50aWFscyxcbiAgICAgIHZlcnNpb246IHBhcmFtcz8udmVyc2lvbiB8fCAndjEnLFxuICAgIH0pXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShjcmVkZW50aWFscylcbiAgfVxuXG4gIC8qKlxuICAgKiBCaW5kIHdpdGggcHJvdmlkZXJcbiAgICogQHBhcmFtIHtCaW5kV2l0aFByb3ZpZGVyUmVxdWVzdH0gcGFyYW1zIEEgQmluZFdpdGhQcm92aWRlclJlcXVlc3Qgb2JqZWN0LlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fSBBIFByb21pc2U8YW55PiBvYmplY3QuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgYmluZFdpdGhQcm92aWRlcihwYXJhbXM6IEJpbmRXaXRoUHJvdmlkZXJSZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnJlcXVlc3Q8YW55PihBcGlVcmxzLlBST1ZJREVSX0JJTkRfVVJMLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IHBhcmFtcyxcbiAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgdXNlciBwcm9maWxlLlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPFVzZXJQcm9maWxlPn0gQSBQcm9taXNlPFVzZXJQcm9maWxlPiBvYmplY3QuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0VXNlclByb2ZpbGUocGFyYW1zOiB7XG4gICAgdmVyc2lvbj86IHN0cmluZztcbiAgfSk6IFByb21pc2U8VXNlclByb2ZpbGU+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRVc2VySW5mbyhwYXJhbXMpXG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB1c2VyIGluZm8uXG4gICAqIEByZXR1cm4ge1Byb21pc2U8VXNlckluZm8+fSBBIFByb21pc2U8VXNlclByb2ZpbGU+IG9iamVjdC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRVc2VySW5mbyhwYXJhbXM6IHsgdmVyc2lvbj86IHN0cmluZzsgcXVlcnk/OiBzdHJpbmcgfSA9IHt9KTogUHJvbWlzZTxVc2VySW5mbz4ge1xuICAgIGNvbnN0IHJlcyA9IHRoaXMuZ2V0UGFyYW1zQnlWZXJzaW9uKHBhcmFtcywgJ1VTRVJfTUVfVVJMJylcblxuICAgIGlmIChyZXMucGFyYW1zPy5xdWVyeSkge1xuICAgICAgY29uc3Qgc2VhcmNoUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhyZXMucGFyYW1zLnF1ZXJ5IGFzIGFueSlcbiAgICAgIHJlcy51cmwgKz0gYD8ke3NlYXJjaFBhcmFtcy50b1N0cmluZygpfWBcbiAgICB9XG5cbiAgICBjb25zdCB1c2VySW5mbyA9IGF3YWl0IHRoaXMuY29uZmlnLnJlcXVlc3Q8VXNlckluZm8+KHJlcy51cmwsIHtcbiAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXG4gICAgfSlcblxuICAgIGlmICh1c2VySW5mby5zdWIpIHtcbiAgICAgIHVzZXJJbmZvLnVpZCA9IHVzZXJJbmZvLnN1YlxuICAgIH1cblxuICAgIHJldHVybiB1c2VySW5mb1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgdXNlciBpbmZvIGJ5IHdlZGEgcGx1Z2luLlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPGFueT59IEEgUHJvbWlzZTxhbnk+IG9iamVjdC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRXZWRhVXNlckluZm8oKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCB1c2VySW5mbyA9IGF3YWl0IHRoaXMuY29uZmlnLnJlcXVlc3Q8YW55PihBcGlVcmxzLldFREFfVVNFUl9VUkwsIHtcbiAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXG4gICAgfSlcbiAgICByZXR1cm4gdXNlckluZm9cbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgbWVcbiAgICogQHBhcmFtIHBhcmFtc1xuICAgKi9cbiAgcHVibGljIGFzeW5jIGRlbGV0ZU1lKHBhcmFtczogV2l0aFN1ZG9SZXF1ZXN0KTogUHJvbWlzZTxVc2VyUHJvZmlsZT4ge1xuICAgIGNvbnN0IHJlcyA9IHRoaXMuZ2V0UGFyYW1zQnlWZXJzaW9uKHBhcmFtcywgJ1VTRVJfTUVfVVJMJylcbiAgICBjb25zdCB1cmwgPSBgJHtyZXMudXJsfT8ke0F1dGgucGFyc2VQYXJhbXNUb1NlYXJjaChyZXMucGFyYW1zKX1gXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnJlcXVlc3Q8VXNlclByb2ZpbGU+KHVybCwge1xuICAgICAgbWV0aG9kOiAnREVMRVRFJyxcbiAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIGhhc0xvZ2luU3RhdGUgY2hlY2sgaWYgaGFzIGxvZ2luIHN0YXRlXG4gICAqIEByZXR1cm4ge1Byb21pc2U8Ym9vbGVhbj59IEEgUHJvbWlzZTxib29sZWFuPiBvYmplY3QuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaGFzTG9naW5TdGF0ZSgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5jb25maWcuY3JlZGVudGlhbHNDbGllbnQuZ2V0QWNjZXNzVG9rZW4oKVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhhc0xvZ2luU3RhdGVTeW5jKCk6IENyZWRlbnRpYWxzIHwgbnVsbCB7XG4gICAgY29uc3QgY3JlZGVudGlhbHMgPSB0aGlzLmNvbmZpZy5jcmVkZW50aWFsc0NsaWVudC5nZXRDcmVkZW50aWFsc1N5bmMoKVxuICAgIHJldHVybiBjcmVkZW50aWFsc1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldExvZ2luU3RhdGUoKTogUHJvbWlzZTxDcmVkZW50aWFscyB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuY3JlZGVudGlhbHNDbGllbnQuZ2V0Q3JlZGVudGlhbHNBc3luYygpXG4gIH1cblxuICAvKipcbiAgICogVHJhbnMgYnkgcHJvdmlkZXIuXG4gICAqIEBwYXJhbSB7VHJhbnNCeVByb3ZpZGVyUmVxdWVzdH0gcGFyYW1zIEEgVHJhbnNCeVByb3ZpZGVyUmVxdWVzdCBvYmplY3QuXG4gICAqIEByZXR1cm4ge1Byb21pc2U8Q3JlZGVudGlhbHM+fSBBIFByb21pc2U8Q3JlZGVudGlhbHM+IG9iamVjdC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyB0cmFuc0J5UHJvdmlkZXIocGFyYW1zOiBUcmFuc0J5UHJvdmlkZXJSZXF1ZXN0KTogUHJvbWlzZTxDcmVkZW50aWFscz4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5yZXF1ZXN0PENyZWRlbnRpYWxzPihcbiAgICAgIEFwaVVybHMuVVNFUl9UUkFOU19CWV9QUk9WSURFUl9VUkwsXG4gICAgICB7XG4gICAgICAgIG1ldGhvZDogJ1BBVENIJyxcbiAgICAgICAgYm9keTogcGFyYW1zLFxuICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXG4gICAgICB9XG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHRva2VuLlxuICAgKiBAcGFyYW0ge0dyYW50VG9rZW5SZXF1ZXN0fSBwYXJhbXMgQSBHcmFudFRva2VuUmVxdWVzdCBvYmplY3QuXG4gICAqIEByZXR1cm4ge1Byb21pc2U8Q3JlZGVudGlhbHM+fSBBIFByb21pc2U8Q3JlZGVudGlhbHM+IG9iamVjdC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBncmFudFRva2VuKHBhcmFtczogR3JhbnRUb2tlblJlcXVlc3QpOiBQcm9taXNlPENyZWRlbnRpYWxzPiB7XG4gICAgY29uc3QgcmVzID0gdGhpcy5nZXRQYXJhbXNCeVZlcnNpb24ocGFyYW1zLCAnQVVUSF9UT0tFTl9VUkwnKVxuICAgIHJldHVybiB0aGlzLmNvbmZpZy5yZXF1ZXN0PENyZWRlbnRpYWxzPihyZXMudXJsLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IHJlcy5wYXJhbXMsXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHByb3ZpZGUgbGlzdC5cbiAgICogQHJldHVybiB7UHJvbWlzZTxVc2VyUHJvZmlsZVByb3ZpZGVyPn0gQSBQcm9taXNlPFVzZXJQcm9maWxlUHJvdmlkZXI+IG9iamVjdC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRQcm92aWRlcnMoKTogUHJvbWlzZTxVc2VyUHJvZmlsZVByb3ZpZGVyPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnJlcXVlc3Q8VXNlclByb2ZpbGVQcm92aWRlcj4oQXBpVXJscy5QUk9WSURFUl9MSVNULCB7XG4gICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogdW5iaW5kIHByb3ZpZGVyLlxuICAgKiBAcGFyYW0ge1VuYmluZFByb3ZpZGVyUmVxdWVzdH0gcGFyYW1zXG4gICAqIEByZXR1cm4ge1Byb21pc2U8YW55Pn1cbiAgICovXG4gIHB1YmxpYyBhc3luYyB1bmJpbmRQcm92aWRlcihwYXJhbXM6IFVuYmluZFByb3ZpZGVyUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5yZXF1ZXN0PGFueT4oXG4gICAgICBgJHtBcGlVcmxzLlBST1ZJREVSX1VOQklORF9VUkx9LyR7cGFyYW1zLnByb3ZpZGVyX2lkfWAsXG4gICAgICB7XG4gICAgICAgIG1ldGhvZDogJ0RFTEVURScsXG4gICAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICAgIH1cbiAgICApXG4gIH1cblxuICAvKipcbiAgICogY2hlY2sgUGFzc3dvcmQuXG4gICAqIEBwYXJhbSB7Q2hlY2tQYXNzd29yZHJSZXF1ZXN0fSBwYXJhbXNcbiAgICogQHJldHVybiB7UHJvbWlzZTxhbnk+fVxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNoZWNrUGFzc3dvcmQocGFyYW1zOiBDaGVja1Bhc3N3b3JkclJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcucmVxdWVzdDxhbnk+KGAke0FwaVVybHMuQ0hFQ0tfUFdEX1VSTH1gLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICAgIGJvZHk6IHBhcmFtcyxcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIGNoZWNrIFBhc3N3b3JkLlxuICAgKiBAcGFyYW0ge0NoZWNrUGFzc3dvcmRyUmVxdWVzdH0gcGFyYW1zXG4gICAqIEByZXR1cm4ge1Byb21pc2U8YW55Pn1cbiAgICovXG4gIHB1YmxpYyBhc3luYyBiaW5kUGhvbmUocGFyYW1zOiBCaW5kUGhvbmVSZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnJlcXVlc3Q8YW55PihgJHtBcGlVcmxzLkJJTkRfQ09OVEFDVF9VUkx9YCwge1xuICAgICAgbWV0aG9kOiAnUEFUQ0gnLFxuICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxuICAgICAgYm9keTogcGFyYW1zLFxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogY2hlY2sgUGFzc3dvcmQuXG4gICAqIEBwYXJhbSB7Q2hlY2tQYXNzd29yZHJSZXF1ZXN0fSBwYXJhbXNcbiAgICogQHJldHVybiB7UHJvbWlzZTxhbnk+fVxuICAgKi9cbiAgcHVibGljIGFzeW5jIGJpbmRFbWFpbChwYXJhbXM6IEJpbmRFbWFpbFJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcucmVxdWVzdDxhbnk+KGAke0FwaVVybHMuQklORF9DT05UQUNUX1VSTH1gLCB7XG4gICAgICBtZXRob2Q6ICdQQVRDSCcsXG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXG4gICAgICBib2R5OiBwYXJhbXMsXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgUGFzc3dvcmQuXG4gICAqIEBwYXJhbSB7U2V0UGFzc3dvcmRyUmVxdWVzdH0gcGFyYW1zXG4gICAqIEByZXR1cm4ge1Byb21pc2U8YW55Pn1cbiAgICovXG4gIHB1YmxpYyBhc3luYyBzZXRQYXNzd29yZChwYXJhbXM6IFNldFBhc3N3b3JkUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5yZXF1ZXN0PGFueT4oYCR7QXBpVXJscy5BVVRIX1NFVF9QQVNTV09SRH1gLCB7XG4gICAgICBtZXRob2Q6ICdQQVRDSCcsXG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXG4gICAgICBib2R5OiBwYXJhbXMsXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiB1cGRhdGVQYXNzd29yZEJ5T2xkIOS9v+eUqOaXp+WvhueggeS/ruaUueWvhuegge+8jOWmguaenOW3sue7j+e7keWumuaJi+acuuWPt++8jOivt+WFiO+8mnN1ZG/vvIzlho3kv67mlLnlr4bnoIFcbiAgICogQHBhcmFtIHtTZXRQYXNzd29yZHJSZXF1ZXN0fSBwYXJhbXNcbiAgICogQHJldHVybiB7UHJvbWlzZTxhbnk+fVxuICAgKi9cbiAgcHVibGljIGFzeW5jIHVwZGF0ZVBhc3N3b3JkQnlPbGQocGFyYW1zOiBVcGRhdGVQYXNzd29yZFJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBzdWRvVG9rZW4gPSBhd2FpdCB0aGlzLnN1ZG8oeyBwYXNzd29yZDogcGFyYW1zLm9sZF9wYXNzd29yZCB9KVxuICAgIHJldHVybiB0aGlzLnNldFBhc3N3b3JkKHtcbiAgICAgIHN1ZG9fdG9rZW46IHN1ZG9Ub2tlbi5zdWRvX3Rva2VuLFxuICAgICAgbmV3X3Bhc3N3b3JkOiBwYXJhbXMubmV3X3Bhc3N3b3JkLFxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogc3Vkb1xuICAgKiBAcGFyYW0ge3N1ZG99IHBhcmFtc1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPGFueT59XG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc3VkbyhwYXJhbXM6IFN1ZG9SZXF1ZXN0KTogUHJvbWlzZTxTdWRvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcucmVxdWVzdDxTdWRvUmVzcG9uc2U+KGAke0FwaVVybHMuU1VET19VUkx9YCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXG4gICAgICBib2R5OiBwYXJhbXMsXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGN1cnJlbnQgdXNlciB2ZXJpZmljYXRpb24uXG4gICAqIEBwYXJhbSB7R2V0VmVyaWZpY2F0aW9uUmVxdWVzdH0gcGFyYW1zIEEgR2V0VmVyaWZpY2F0aW9uUmVxdWVzdCBPYmplY3QuXG4gICAqIEByZXR1cm4ge1Byb21pc2U8R2V0VmVyaWZpY2F0aW9uUmVzcG9uc2U+fSBBIFByb21pc2U8R2V0VmVyaWZpY2F0aW9uUmVzcG9uc2U+IG9iamVjdC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRDdXJVc2VyVmVyaWZpY2F0aW9uKHBhcmFtczogR2V0VmVyaWZpY2F0aW9uUmVxdWVzdCk6IFByb21pc2U8R2V0VmVyaWZpY2F0aW9uUmVzcG9uc2U+IHtcbiAgICBwYXJhbXMudGFyZ2V0ID0gJ0NVUl9VU0VSJ1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5yZXF1ZXN0PEdldFZlcmlmaWNhdGlvblJlc3BvbnNlPihcbiAgICAgIEFwaVVybHMuVkVSSUZJQ0FUSU9OX1VSTCxcbiAgICAgIHtcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIGJvZHk6IHBhcmFtcyxcbiAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxuICAgICAgICB3aXRoQ2FwdGNoYTogdHJ1ZSxcbiAgICAgIH1cbiAgICApXG4gIH1cblxuICAvKipcbiAgICogY2hhbmdlIGJpbmRlZCBwcm92aWRlci5cbiAgICogQHBhcmFtIHtHZXRWZXJpZmljYXRpb25SZXF1ZXN0fSBwYXJhbXMgQSBHZXRWZXJpZmljYXRpb25SZXF1ZXN0IE9iamVjdC5cbiAgICogQHJldHVybiB7UHJvbWlzZTxHZXRWZXJpZmljYXRpb25SZXNwb25zZT59IEEgUHJvbWlzZTxHZXRWZXJpZmljYXRpb25SZXNwb25zZT4gb2JqZWN0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNoYW5nZUJpbmRlZFByb3ZpZGVyKHBhcmFtczogQ2hhbmdlQmluZGVkUHJvdmlkZXJSZXF1ZXN0KTogUHJvbWlzZTxDaGFuZ2VCaW5kZWRQcm92aWRlclJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnJlcXVlc3Q8Q2hhbmdlQmluZGVkUHJvdmlkZXJSZXNwb25zZT4oXG4gICAgICBgJHtBcGlVcmxzLlBST1ZJREVSX0xJU1R9LyR7cGFyYW1zLnByb3ZpZGVyX2lkfS90cmFuc2AsXG4gICAgICB7XG4gICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICBib2R5OiB7XG4gICAgICAgICAgcHJvdmlkZXJfdHJhbnNfdG9rZW46IHBhcmFtcy50cmFuc190b2tlbixcbiAgICAgICAgfSxcbiAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxuICAgICAgfVxuICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXRjaCB0aGUgdXNlciBwcm9maWxlLlxuICAgKiBAcGFyYW0ge1VzZXJQcm9maWxlfSBwYXJhbXMgQSBVc2VyUHJvZmlsZSBPYmplY3QuXG4gICAqIEByZXR1cm4ge1Byb21pc2U8VXNlclByb2ZpbGU+fSBBIFByb21pc2U8VXNlclByb2ZpbGU+IG9iamVjdC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBzZXRVc2VyUHJvZmlsZShwYXJhbXM6IFVzZXJQcm9maWxlKTogUHJvbWlzZTxVc2VyUHJvZmlsZT4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5yZXF1ZXN0PFVzZXJQcm9maWxlPihBcGlVcmxzLlVTRVJfUFJJRklMRV9VUkwsIHtcbiAgICAgIG1ldGhvZDogJ1BBVENIJyxcbiAgICAgIGJvZHk6IHBhcmFtcyxcbiAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFBhdGNoIHRoZSB1c2VyIHByb2ZpbGUuXG4gICAqIEBwYXJhbSB7UXVlcnlVc2VyUHJvZmlsZVJlcX0gYXBwZW5kZWRfcGFyYW1zIEEgUXVlcnlVc2VyUHJvZmlsZVJlcSBPYmplY3QuXG4gICAqIEByZXR1cm4ge1Byb21pc2U8VXNlclByb2ZpbGU+fSBBIFByb21pc2U8VXNlclByb2ZpbGU+IG9iamVjdC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBxdWVyeVVzZXJQcm9maWxlKHBhcmFtczogUXVlcnlVc2VyUHJvZmlsZVJlcXVlc3QpOiBQcm9taXNlPFF1ZXJ5VXNlclByb2ZpbGVSZXNwb25zZT4ge1xuICAgIC8vIGxldCB1cmwgPSBuZXcgVVJMKEFwaVVybHMuVVNFUl9RVUVSWV9VUkwpO1xuICAgIGNvbnN0IHNlYXJjaFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMocGFyYW1zIGFzIGFueSlcbiAgICAvLyB1cmwuc2VhcmNoID0gc2VhcmNoUGFyYW1zLnRvU3RyaW5nKCk7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnJlcXVlc3Q8UXVlcnlVc2VyUHJvZmlsZVJlc3BvbnNlPihcbiAgICAgIGAke0FwaVVybHMuVVNFUl9RVUVSWV9VUkx9PyR7c2VhcmNoUGFyYW1zLnRvU3RyaW5nKCl9YCxcbiAgICAgIHtcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxuICAgICAgfVxuICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiBzZXRDdXN0b21TaWduRnVuYyBzZXQgdGhlIGdldCB0aWNrZXQgZnVuY3Rpb25cbiAgICogQHBhcmFtIGdldFRpY2tGblxuICAgKi9cbiAgcHVibGljIHNldEN1c3RvbVNpZ25GdW5jKGdldFRpY2tGbjogR2V0Q3VzdG9tU2lnblRpY2tldEZuKSB7XG4gICAgdGhpcy5nZXRDdXN0b21TaWduVGlja2V0Rm4gPSBnZXRUaWNrRm5cbiAgfVxuXG4gIC8qKlxuICAgKiBTaWduSW5XaXRoQ3VzdG9tVGlja2V0IGN1c3RvbSBzaWduSW5cbiAgICogQGNvbnN0cnVjdG9yXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc2lnbkluV2l0aEN1c3RvbVRpY2tldChwYXJhbXM/OiB7XG4gICAgdmVyc2lvbj86IHN0cmluZztcbiAgfSk6IFByb21pc2U8Q3JlZGVudGlhbHM+IHtcbiAgICBjb25zdCBjdXN0b21UaWNrZXQgPSBhd2FpdCB0aGlzLmdldEN1c3RvbVNpZ25UaWNrZXRGbigpXG4gICAgcmV0dXJuIHRoaXMuc2lnbkluV2l0aFByb3ZpZGVyKHtcbiAgICAgIC4uLnBhcmFtcyxcbiAgICAgIHByb3ZpZGVyX2lkOiAnY3VzdG9tJyxcbiAgICAgIHByb3ZpZGVyX3Rva2VuOiBjdXN0b21UaWNrZXQsXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCBwYXNzd29yZFxuICAgKiBAcGFyYW0ge1Jlc2V0UGFzc3dvcmRSZXF1ZXN0fSBwYXJhbXNcbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAqIEBtZW1iZXJvZiBBdXRoXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgcmVzZXRQYXNzd29yZChwYXJhbXM6IFJlc2V0UGFzc3dvcmRSZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnJlcXVlc3QoQXBpVXJscy5BVVRIX1JFU0VUX1BBU1NXT1JELCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IHBhcmFtcyxcbiAgICAgIC8vIHdpdGhDcmVkZW50aWFsczogdHJ1ZVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogZGV2aWNlIGF1dGhvcml6YXRpb25cbiAgICogQHBhcmFtIHtEZXZpY2VBdXRob3JpemVSZXF1ZXN0fSBwYXJhbXNcbiAgICogQHJldHVybnMge1Byb21pc2U8RGV2aWNlQXV0aG9yaXplUmVzcG9uc2U+fVxuICAgKiBAbWVtYmVyb2YgQXV0aFxuICAgKi9cbiAgcHVibGljIGFzeW5jIGRldmljZUF1dGhvcml6ZShwYXJhbXM6IERldmljZUF1dGhvcml6ZVJlcXVlc3QpOiBQcm9taXNlPERldmljZUF1dGhvcml6ZVJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnJlcXVlc3QoQXBpVXJscy5BVVRIX0dFVF9ERVZJQ0VfQ09ERSwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBwYXJhbXMsXG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXG4gICAgfSlcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGVja1VzZXJuYW1lKHBhcmFtczogQ2hlY2tVc2VybmFtZVJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcucmVxdWVzdChBcGlVcmxzLkNIRUNLX1VTRVJOQU1FLCB7XG4gICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgYm9keTogcGFyYW1zLFxuICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxuICAgIH0pXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hlY2tJZlVzZXJFeGlzdChwYXJhbXM6IENoZWNrSWZVc2VyRXhpc3RSZXF1ZXN0KTogUHJvbWlzZTxDaGVja0lmVXNlckV4aXN0UmVzcG9uc2U+IHtcbiAgICBjb25zdCBzZWFyY2hQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHBhcmFtcyBhcyBhbnkpXG5cbiAgICByZXR1cm4gdGhpcy5jb25maWcucmVxdWVzdDxDaGVja0lmVXNlckV4aXN0UmVzcG9uc2U+KFxuICAgICAgYCR7QXBpVXJscy5DSEVDS19JRl9VU0VSX0VYSVNUfT8ke3NlYXJjaFBhcmFtcy50b1N0cmluZygpfWAsXG4gICAgICB7XG4gICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICB9XG4gICAgKVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGxvZ2luU2NvcGUoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuY3JlZGVudGlhbHNDbGllbnQuZ2V0U2NvcGUoKVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGxvZ2luR3JvdXBzKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuY3JlZGVudGlhbHNDbGllbnQuZ2V0R3JvdXBzKClcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZWZyZXNoVG9rZW5Gb3JjZShwYXJhbXM6IHsgdmVyc2lvbj86IHN0cmluZyB9KSB7XG4gICAgY29uc3QgY3JlZGVudGlhbHM6IENyZWRlbnRpYWxzID0gICAgICBhd2FpdCB0aGlzLmNvbmZpZy5jcmVkZW50aWFsc0NsaWVudC5nZXRDcmVkZW50aWFscygpXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuY29uZmlnLmNyZWRlbnRpYWxzQ2xpZW50LnJlZnJlc2hUb2tlbih7XG4gICAgICAuLi5jcmVkZW50aWFscyxcbiAgICAgIHZlcnNpb246IHBhcmFtcz8udmVyc2lvbiB8fCAndjEnLFxuICAgIH0pXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0Q3JlZGVudGlhbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmNyZWRlbnRpYWxzQ2xpZW50LmdldENyZWRlbnRpYWxzKClcbiAgfVxuXG4gIC8qKlxuICAgKiBnZXQgcHVibGljIGtleSBmb3IgcmVxdWVzdCBwYXJhbXMgZW5jcnlwdGlvblxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldFB1YmxpY0tleSgpOiBQcm9taXNlPFB1YmxpY0tleT4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5yZXF1ZXN0PFB1YmxpY0tleT4oQXBpVXJsc1YyLkFVVEhfUFVCTElDX0tFWSwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiB7fSxcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIGVuY3J5cHQgcmVxdWVzdCBwYXJhbXNcbiAgICogQHBhcmFtIHBhcmFtc1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEVuY3J5cHRQYXJhbXMocGFyYW1zOiBSZWNvcmQ8YW55LCBhbnk+KTogUHJvbWlzZTxFbmNyeXB0UGFyYW1zPiB7XG4gICAgY29uc3QgcGF5bG9hZCA9IGRlZXBDbG9uZShwYXJhbXMpXG5cbiAgICBpZiAoIXBheWxvYWQuaXNFbmNyeXB0KSB7XG4gICAgICByZXR1cm4gcGFyYW1zXG4gICAgfVxuXG4gICAgbGV0IHB1YmxpY0tleSA9ICcnXG4gICAgbGV0IHB1YmxpY19rZXlfdGh1bWJwcmludCA9ICcnXG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5nZXRQdWJsaWNLZXkoKVxuICAgICAgcHVibGljS2V5ID0gcmVzLnB1YmxpY19rZXlcbiAgICAgIHB1YmxpY19rZXlfdGh1bWJwcmludCA9IHJlcy5wdWJsaWNfa2V5X3RodW1icHJpbnRcbiAgICB9IGNhdGNoIChlcnJvcikge31cblxuICAgIGlmICghcHVibGljS2V5IHx8ICFwdWJsaWNfa2V5X3RodW1icHJpbnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigncHVibGljX2tleSBvciBwdWJsaWNfa2V5X3RodW1icHJpbnQgaXMgZW1wdHknKVxuICAgIH1cblxuICAgIGRlbGV0ZSBwYXlsb2FkLmlzRW5jcnlwdFxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHBhcmFtczogZ2V0RW5jcnlwdEluZm8oeyBwdWJsaWNLZXksIHBheWxvYWQgfSksXG4gICAgICBwdWJsaWNfa2V5X3RodW1icHJpbnQsXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIGdldCBwcm92aWRlciBzdWIgdHlwZVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldFByb3ZpZGVyU3ViVHlwZSgpOiBQcm9taXNlPFByb3ZpZGVyU3ViVHlwZT4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5yZXF1ZXN0PFByb3ZpZGVyU3ViVHlwZT4oQXBpVXJscy5HRVRfUFJPVklERVJfVFlQRSwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiB7XG4gICAgICAgIHByb3ZpZGVyX2lkOiAnd2VkYScsXG4gICAgICB9LFxuICAgIH0pXG4gIH1cbn1cbiJdfQ==