pagy 43.4.0 → 43.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2a2007ee3269a26740ee31b344cd498c73b6182df917f50da15c274f5be7db60
4
- data.tar.gz: 68320cda9d3f3cf89f1cb0a908b18086cdf7a06f61ac7003603d8f10b3491ee2
3
+ metadata.gz: ad13cda2182708281a4dcae453aa53bcab323b5bd0b3d1d253e7be45c8fbe6f2
4
+ data.tar.gz: 5e0fdb3b7fbbd70730f3b7147dbaa07a7d8c1f4b7e355425acdcb5e2fd194507
5
5
  SHA512:
6
- metadata.gz: 114b25042f1010d67c926bb7c0d30220e4dcb4f45997a8b1107533933ac65d6490c5f8af4731937737059514a735cc29d8c0c19c8c2b5c5ceacaa119e0eba317
7
- data.tar.gz: 18988be581802dcafd424566190ec98c1ae4d2f839df5186229b4185b5fda578e1dfff65fed66d706df11c0655a3b16f6b3323b8b275bf9c1626778792c70315
6
+ metadata.gz: ce5b5505e6b0571df46e144bb92eaec75c8e54987564436287896ac8c9e5327bec493ff76dfb24483b55b3034ddd0c6650d698588575954b87c0cb4b27a2138b
7
+ data.tar.gz: 002ff62f348fae9078c5810790a7aaae1adcd5a90fbcdce9ea4beac6b6d5525a1997151d5f2970d229d3816f22b7a6340f65495f9559b7ddf9a6c79a55e96eef
data/apps/calendar.ru CHANGED
@@ -16,7 +16,7 @@
16
16
  # URL
17
17
  # http://127.0.0.1:8000
18
18
 
19
- VERSION = '43.4.0'
19
+ VERSION = '43.4.1'
20
20
 
21
21
  if VERSION != Pagy::VERSION
22
22
  Warning.warn("\n>>> WARNING! '#{File.basename(__FILE__)}-#{VERSION}' running with 'pagy-#{Pagy::VERSION}'! <<< \n\n")
data/apps/demo.ru CHANGED
@@ -19,7 +19,7 @@
19
19
  # URL
20
20
  # http://127.0.0.1:8000
21
21
 
22
- VERSION = '43.4.0'
22
+ VERSION = '43.4.1'
23
23
 
24
24
  if VERSION != Pagy::VERSION
25
25
  Warning.warn("\n>>> WARNING! '#{File.basename(__FILE__)}-#{VERSION}' running with 'pagy-#{Pagy::VERSION}'! <<< \n\n")
@@ -16,7 +16,7 @@
16
16
  # URL
17
17
  # http://127.0.0.1:8000
18
18
 
19
- VERSION = '43.4.0'
19
+ VERSION = '43.4.1'
20
20
 
21
21
  if VERSION != Pagy::VERSION
22
22
  Warning.warn("\n>>> WARNING! '#{File.basename(__FILE__)}-#{VERSION}' running with 'pagy-#{Pagy::VERSION}'! <<< \n\n")
data/apps/keynav.ru CHANGED
@@ -16,7 +16,7 @@
16
16
  # URL
17
17
  # http://127.0.0.1:8000
18
18
 
19
- VERSION = '43.4.0'
19
+ VERSION = '43.4.1'
20
20
 
21
21
  if VERSION != Pagy::VERSION
22
22
  Warning.warn("\n>>> WARNING! '#{File.basename(__FILE__)}-#{VERSION}' running with 'pagy-#{Pagy::VERSION}'! <<< \n\n")
data/apps/keyset.ru CHANGED
@@ -16,7 +16,7 @@
16
16
  # URL
17
17
  # http://127.0.0.1:8000
18
18
 
19
- VERSION = '43.4.0'
19
+ VERSION = '43.4.1'
20
20
 
21
21
  if VERSION != Pagy::VERSION
22
22
  Warning.warn("\n>>> WARNING! '#{File.basename(__FILE__)}-#{VERSION}' running with 'pagy-#{Pagy::VERSION}'! <<< \n\n")
@@ -16,7 +16,7 @@
16
16
  # URL
17
17
  # http://127.0.0.1:8000
18
18
 
19
- VERSION = '43.4.0'
19
+ VERSION = '43.4.1'
20
20
 
21
21
  if VERSION != Pagy::VERSION
22
22
  Warning.warn("\n>>> WARNING! '#{File.basename(__FILE__)}-#{VERSION}' running with 'pagy-#{Pagy::VERSION}'! <<< \n\n")
data/apps/rails.ru CHANGED
@@ -16,7 +16,7 @@
16
16
  # URL
17
17
  # http://127.0.0.1:8000
18
18
 
19
- VERSION = '43.4.0'
19
+ VERSION = '43.4.1'
20
20
 
21
21
  if VERSION != Pagy::VERSION
22
22
  Warning.warn("\n>>> WARNING! '#{File.basename(__FILE__)}-#{VERSION}' running with 'pagy-#{Pagy::VERSION}'! <<< \n\n")
data/apps/repro.ru CHANGED
@@ -16,7 +16,7 @@
16
16
  # URL
17
17
  # http://127.0.0.1:8000
18
18
 
19
- VERSION = '43.4.0'
19
+ VERSION = '43.4.1'
20
20
 
21
21
  if VERSION != Pagy::VERSION
22
22
  Warning.warn("\n>>> WARNING! '#{File.basename(__FILE__)}-#{VERSION}' running with 'pagy-#{Pagy::VERSION}'! <<< \n\n")
data/config/pagy.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Pagy initializer file (43.4.0)
3
+ # Pagy initializer file (43.4.1)
4
4
  # See https://ddnexus.github.io/pagy/toolbox/configuration/initializer/
5
5
 
6
6
 
@@ -27,13 +27,12 @@ Pagy::OPTIONS.freeze
27
27
  # Pagy.sync(:stylesheet, Rails.root.join('app/stylesheets'), 'pagy.css')
28
28
  # end
29
29
  #
30
- # OR Alternative config ONLY for apps with an asset pipeline
30
+ # As an alternative, use this config ONLY for apps with an asset pipeline
31
31
  #
32
32
  # Rails.application.config.assets.paths << Pagy::ROOT.join(':javascripts')
33
33
  # Rails.application.config.assets.paths << Pagy::ROOT.join(':stylesheets')
34
34
 
35
35
 
36
-
37
36
  ############# Overriding Pagy::I18n Lookup #################################################
38
37
  # Refer to https://ddnexus.github.io/pagy/resources/i18n/ for details.
39
38
  # Override the I18n lookup by dropping your custom dictionary in some pagy dir.
data/javascripts/pagy.js CHANGED
@@ -129,7 +129,7 @@ var pagy_default = (() => {
129
129
  });
130
130
  };
131
131
  return {
132
- version: "43.4.0",
132
+ version: "43.4.1",
133
133
  init(arg) {
134
134
  const target = arg instanceof HTMLElement ? arg : document, elements = target.querySelectorAll("[data-pagy]");
135
135
  for (const element of elements) {
@@ -156,5 +156,5 @@ var pagy_default = (() => {
156
156
  // pagy-shim.ts
157
157
  window.Pagy = pagy_default;
158
158
 
159
- //# debugId=19B6B4D5C24D465D64756E2164756E21
160
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsicGFneS50cyIsICJwYWd5LXNoaW0udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbCiAgICAiaW50ZXJmYWNlIFN5bmNEYXRhIHtcbiAgZnJvbT86IG51bWJlclxuICB0bz86ICAgbnVtYmVyXG4gIGtleTogICBzdHJpbmdcbiAgc3RyPzogIHN0cmluZ1xufVxudHlwZSBJbml0QXJncyA9IFtcImtcIiwgIEtleW5hdkFyZ3NdIHwgICAgICAgICAgLy8gc2VyaWVzX25hdltfanNdIHdpdGgga2V5bmF2IGluc3RhbmNlXG4gICAgICAgICAgICAgICAgW1wic25qXCIsIFNlcmllc05hdkpzQXJnc10gfCAgICAvLyBzZXJpZXNfbmF2X2pzXG4gICAgICAgICAgICAgICAgW1wiaW5qXCIsIElucHV0TmF2SnNBcmdzXSB8ICAgICAvLyBpbnB1dF9uYXZfanNcbiAgICAgICAgICAgICAgICBbXCJsdGpcIiwgTGltaXRUYWdKc0FyZ3NdICAgICAgIC8vIGxpbWl0X3RhZ19qc1xudHlwZSBBdWdtZW50S2V5bmF2ID0gKG5hdjpIVE1MRWxlbWVudCwga2V5bmF2QXJnczpLZXluYXZBcmdzKSA9PiBQcm9taXNlPCgocGFnZTogc3RyaW5nKSA9PiBzdHJpbmcpPlxudHlwZSBLZXluYXZBcmdzID0gcmVhZG9ubHkgW3N0b3JhZ2VLZXk6ICBzdHJpbmcgfCBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvb3RLZXk6ICAgICBzdHJpbmcgfCBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VLZXk6ICAgICBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdDogICAgICAgIG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGxpY2VBcmdzPzogU3BsaWNlQXJnc11cbnR5cGUgU3BsaWNlQXJncyA9IHJlYWRvbmx5IFtzdGFydDogICAgICAgbnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZUNvdW50OiBudW1iZXIsICAgICAvLyBpdCB3b3VsZCBiZSBvcHRpb25hbCwgYnV0IHRzIGNvbXBsYWluc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLml0ZW1zOiAgICBDdXRvZmZbXV1cbnR5cGUgQ3V0b2ZmID0gcmVhZG9ubHkgKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4pW11cbnR5cGUgQXVnbWVudGVkUGFnZSA9IFticm93c2VySWQ6ICAgc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2VLZXk6ICBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgcGFnZU51bWJlcjogIG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICBwYWdlczogICAgICAgbnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICAgIHByaW9yQ3V0b2ZmOiBDdXRvZmYgfCBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgIHBhZ2VDdXRvZmY6ICBDdXRvZmYgfCBudWxsXVxudHlwZSBTZXJpZXNOYXZKc0FyZ3MgPSByZWFkb25seSBbTmF2SnNUb2tlbnMsIHBhZ2VUb2tlbjogc3RyaW5nLCBOYXZKc1NlcmllcywgS2V5bmF2QXJncz9dXG50eXBlIE5hdkpzU2VyaWVzID0gcmVhZG9ubHkgW3dpZHRoczogbnVtYmVyW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmllczogKHN0cmluZyB8IG51bWJlcilbXVtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHM6IHN0cmluZ1tdW10gfCBudWxsXVxudHlwZSBJbnB1dE5hdkpzQXJncyA9IHJlYWRvbmx5IFt1cmxUb2tlbjogIHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZVRva2VuOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtleW5hdkFyZ3M/XVxudHlwZSBMaW1pdFRhZ0pzQXJncyA9IHJlYWRvbmx5IFtmcm9tOiAgICAgICBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybFRva2VuOiAgIHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZVRva2VuOiAgc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdFRva2VuOiBzdHJpbmddXG50eXBlIE5hdkpzVG9rZW5zID0gcmVhZG9ubHkgW2JlZm9yZTogIHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5jaG9yOiAgc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50OiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdhcDogICAgIHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXI6ICAgc3RyaW5nXVxuaW50ZXJmYWNlIE5hdkpzRWxlbWVudCBleHRlbmRzIEhUTUxFbGVtZW50IHtcbiAgcmVuZGVyKCk6IHZvaWRcbn1cblxuLy8gVGhlIHN5bnRheCB1c2VkIGluIHRoaXMgZmlsZSBoYXMgYmVlbiBjYXJlZnVsbHkgY29tcG9zZWQgdG8gbWluaW1pemVcbi8vIHRoZSBwYWd5Lm1pbi5qcyBzaXplIGFuZCBhdm9pZCBwb2xsdXRpb24gaW4gdGhlIHdpbmRvdyBvYmplY3RcbmV4cG9ydCBkZWZhdWx0ICgoKSA9PiB7XG4gIGNvbnN0IHN0b3JhZ2VTdXBwb3J0ID0gJ3Nlc3Npb25TdG9yYWdlJyBpbiB3aW5kb3cgJiYgJ0Jyb2FkY2FzdENoYW5uZWwnIGluIHdpbmRvdztcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICBsZXQgcGFneSA9IFwicGFneVwiLCBzdG9yYWdlOiBTdG9yYWdlLCBzeW5jOiBCcm9hZGNhc3RDaGFubmVsLCB0YWJJZDogbnVtYmVyO1xuICBpZiAoc3RvcmFnZVN1cHBvcnQpIHtcbiAgICBzdG9yYWdlID0gc2Vzc2lvblN0b3JhZ2U7IC8vIHNob3J0ZW4gdGhlIGNvbXBpbGVkIHNpemVcbiAgICBzeW5jICAgID0gbmV3IEJyb2FkY2FzdENoYW5uZWwocGFneSk7XG4gICAgdGFiSWQgICA9IERhdGUubm93KCk7XG4gICAgLy8gU3luYyB0aGUgc2Vzc2lvblN0b3JhZ2Uga2V5cyBmb3IgdGhlIGN1dG9mZnMgb3BlbmVkIGluIGEgbmV3IHRhYi93aW5kb3dcbiAgICBzeW5jLmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIChlOk1lc3NhZ2VFdmVudDxTeW5jRGF0YT4pID0+IHtcbiAgICAgIGlmIChlLmRhdGEuZnJvbSkgeyAvLyByZXF1ZXN0IGN1dG9mZnNcbiAgICAgICAgY29uc3QgY3V0b2ZmcyA9IHN0b3JhZ2UuZ2V0SXRlbShlLmRhdGEua2V5KTtcbiAgICAgICAgaWYgKGN1dG9mZnMpIHtcbiAgICAgICAgICBzeW5jLnBvc3RNZXNzYWdlKDxTeW5jRGF0YT57dG86IGUuZGF0YS5mcm9tLCBrZXk6IGUuZGF0YS5rZXksIHN0cjogY3V0b2Zmc30pO1xuICAgICAgICB9IC8vIHNlbmQgcmVzcG9uc2VcbiAgICAgIH0gZWxzZSBpZiAoZS5kYXRhLnRvKSB7ICAvLyByZWNlaXZlIGN1dG9mZnNcbiAgICAgICAgaWYgKGUuZGF0YS50byA9PSB0YWJJZCkge1xuICAgICAgICAgIHN0b3JhZ2Uuc2V0SXRlbShlLmRhdGEua2V5LCA8c3RyaW5nPmUuZGF0YS5zdHIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgLy8gVGhlIG9ic2VydmVyIGluc3RhbmNlIGZvciByZXNwb25zaXZlIG5hdnNcbiAgY29uc3QgcmpzT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoXG4gICAgICBlbnRyaWVzID0+IGVudHJpZXMuZm9yRWFjaChlID0+IHtcbiAgICAgICAgZS50YXJnZXQucXVlcnlTZWxlY3RvckFsbDxOYXZKc0VsZW1lbnQ+KFwiLnBhZ3ktcmpzXCIpLmZvckVhY2goZWwgPT4gZWwucmVuZGVyKCkpO1xuICAgICAgfSkpO1xuXG4gIC8qIEZ1bGwgc2V0IG9mIEI2NCBmdW5jdGlvbnNcbiAgY29uc3QgQjY0RW5jb2RlICAgICA9ICh1bmljb2RlOnN0cmluZykgPT4gYnRvYShTdHJpbmcuZnJvbUNoYXJDb2RlKC4uLihuZXcgVGV4dEVuY29kZXIpLmVuY29kZSh1bmljb2RlKSkpLFxuICAgICAgICBCNjRTYWZlICAgICAgID0gKHVuc2FmZTpzdHJpbmcpICA9PiB1bnNhZmUucmVwbGFjZSgvWysvPV0vZywgKG0pID0+IG0gPT0gXCIrXCIgPyBcIi1cIiA6IG0gPT0gXCIvXCIgPyBcIl9cIiA6IFwiXCIpLFxuICAgICAgICBCNjRTYWZlRW5jb2RlID0gKHVuaWNvZGU6c3RyaW5nKSA9PiBCNjRTYWZlKEI2NEVuY29kZSh1bmljb2RlKSksXG4gICAgICAgIEI2NERlY29kZSAgICAgPSAoYmFzZTY0OnN0cmluZykgID0+IChuZXcgVGV4dERlY29kZXIoKSkuZGVjb2RlKFVpbnQ4QXJyYXkuZnJvbShhdG9iKGJhc2U2NCksIGMgPT4gYy5jaGFyQ29kZUF0KDApKSksXG4gICAgICAgIEI2NFVuc2FmZSAgICAgPSAoc2FmZTpzdHJpbmcpICAgID0+IHNhZmUucmVwbGFjZSgvWy1fXS9nLCAobWF0Y2gpID0+IG1hdGNoID09IFwiLVwiID8gXCIrXCIgOiBcIi9cIiksXG4gICAgICAgIEI2NFNhZmVEZWNvZGUgPSAoYmFzZTY0OnN0cmluZykgID0+IEI2NERlY29kZShCNjRVbnNhZmUoYmFzZTY0KSlcbiAgKi9cbiAgY29uc3QgQjY0U2FmZUVuY29kZSA9ICh1bmljb2RlOnN0cmluZykgPT4gYnRvYShTdHJpbmcuZnJvbUNoYXJDb2RlKC4uLihuZXcgVGV4dEVuY29kZXIpLmVuY29kZSh1bmljb2RlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bKy89XS9nLCAobSkgPT4gbSA9PSBcIitcIiA/IFwiLVwiIDogbSA9PSBcIi9cIiA/IFwiX1wiIDogXCJcIiksXG4gICAgICAgIEI2NERlY29kZSAgICAgPSAoYmFzZTY0OnN0cmluZykgID0+IChuZXcgVGV4dERlY29kZXIoKSkuZGVjb2RlKFVpbnQ4QXJyYXkuZnJvbShhdG9iKGJhc2U2NCksIGMgPT4gYy5jaGFyQ29kZUF0KDApKSk7XG5cbiAgLy8gUmV0dXJuIGEgcmFuZG9tIGtleTogMyBjaGFycyBtYXgsIGJhc2UtMzYgbnVtYmVyIDwgMzYqKjNcbiAgY29uc3QgcmFuZEtleSA9ICgpID0+IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDM2ICoqIDMpLnRvU3RyaW5nKDM2KTtcblxuICAvLyBNYW5hZ2UgdGhlIHBhZ2UgYXVnbWVudGF0aW9uIGZvciBLZXluYXYsIGNhbGxlZCBvbmx5IGlmIHN0b3JhZ2VTdXBwb3J0XG4gIGNvbnN0IGF1Z21lbnRLZXluYXY6IEF1Z21lbnRLZXluYXYgPSBhc3luYyAobmF2LCBbc3RvcmFnZUtleSwgcm9vdEtleSwgcGFnZUtleSwgbGFzdCwgc3BsaWNlQXJnc10pID0+IHtcbiAgICBsZXQgYXVnbWVudFBhZ2U6KHBhZ2U6IHN0cmluZykgPT4gc3RyaW5nO1xuICAgIGNvbnN0IGJyb3dzZXJLZXkgPSBkb2N1bWVudC5jb29raWUuc3BsaXQoLztcXHMrLykgIC8vIGl0IHdvcmtzIGV2ZW4gaWYgbWFsZm9ybWVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoKHJvdykgPT4gcm93LnN0YXJ0c1dpdGgocGFneSArIFwiPVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LnNwbGl0KFwiPVwiKVsxXSA/PyByYW5kS2V5KCk7XG4gICAgZG9jdW1lbnQuY29va2llID0gcGFneSArIFwiPVwiICsgYnJvd3NlcktleTsgIC8vIFNtYWxsZXIgLm1pbiBzaXplOiBzZXQgdGhlIGNvb2tpZSB3aXRob3V0IGNoZWNraW5nXG4gICAgaWYgKHN0b3JhZ2VLZXkgJiYgIShzdG9yYWdlS2V5IGluIHN0b3JhZ2UpKSB7XG4gICAgICAvLyBTeW5jIHRoZSBzZXNzaW9uZ1N0b3JhZ2UgZnJvbSBvdGhlciB0YWJzL3dpbmRvd3MgKGUuZy4sIG9wZW4gcGFnZSBpbiB0aGUgbmV3IHRhYi93aW5kb3cpXG4gICAgICBzeW5jLnBvc3RNZXNzYWdlKDxTeW5jRGF0YT57IGZyb206IHRhYklkLCBrZXk6IHN0b3JhZ2VLZXkgfSk7XG4gICAgICAvLyBXYWl0IGZvciB0aGUgbGlzdGVuZXIgdG8gY29weSB0aGUgY3V0b2ZmcyBpbiB0aGUgY3VycmVudCBzZXNzaW9uU3RvcmFnZVxuICAgICAgYXdhaXQgbmV3IFByb21pc2U8c3RyaW5nfG51bGw+KChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KCgpID0+IHJlc29sdmUoXCJcIiksIDEwMCkpO1xuICAgICAgaWYgKCEoc3RvcmFnZUtleSBpbiBzdG9yYWdlKSkgeyAvLyB0aGUgc3RvcmFnZUtleSBkaWRuJ3QgZ2V0IGNvcGllZDogZmFsbGJhY2sgdG8gY291bnRsZXNzIHBhZ2luYXRpb25cbiAgICAgICAgYXVnbWVudFBhZ2UgPSAocGFnZTogc3RyaW5nKSA9PiBwYWdlICsgJysnICsgbGFzdDtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBJZiBpdCBpcyBub3QgYXNzaWduZWQgaXQgbWVhbnMgaXQgc3VwcG9ydHMga2V5bmF2XG4gICAgaWYgKCFhdWdtZW50UGFnZSkgeyAvLyByZWd1bGFyIGtleW5hdiBwYWdpbmF0aW9uXG4gICAgICBpZiAoIXN0b3JhZ2VLZXkpIHsgZG8geyBzdG9yYWdlS2V5ID0gcmFuZEtleSgpIH0gd2hpbGUgKHN0b3JhZ2VLZXkgaW4gc3RvcmFnZSkgfSAvLyBubyBkdXAga2V5c1xuICAgICAgY29uc3QgZGF0YSA9IHN0b3JhZ2UuZ2V0SXRlbShzdG9yYWdlS2V5KSxcbiAgICAgICAgICBjdXRvZmZzID0gPEN1dG9mZltdPihkYXRhID8gSlNPTi5wYXJzZShkYXRhKSA6IFt1bmRlZmluZWRdKTtcbiAgICAgIGlmIChzcGxpY2VBcmdzKSB7XG4gICAgICAgIGN1dG9mZnMuc3BsaWNlKC4uLnNwbGljZUFyZ3MpO1xuICAgICAgICBzdG9yYWdlLnNldEl0ZW0oc3RvcmFnZUtleSwgSlNPTi5zdHJpbmdpZnkoY3V0b2ZmcykpO1xuICAgICAgfVxuICAgICAgLy8gQXVnbWVudCBmdW5jdGlvblxuICAgICAgYXVnbWVudFBhZ2UgPSAocGFnZTpzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgcGFnZU51bSA9IHBhcnNlSW50KHBhZ2UpO1xuICAgICAgICByZXR1cm4gQjY0U2FmZUVuY29kZShKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgIDxBdWdtZW50ZWRQYWdlPlticm93c2VyS2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2VLZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZU51bSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXRvZmZzLmxlbmd0aCwgICAgICAgLy8gcGFnZXMvbGFzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1dG9mZnNbcGFnZU51bSAtIDFdLCAvLyBwcmlvckN1dG9mZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1dG9mZnNbcGFnZU51bV1dKSk7ICAvLyBwYWdlQ3V0b2ZmXG4gICAgICB9O1xuICAgIH1cbiAgICBjb25zdCBzZWFyY2ggPSAocm9vdEtleSkgPyBgJHtyb290S2V5fSU1QiR7cGFnZUtleX0lNURgIDogcGFnZUtleTtcbiAgICBjb25zdCByZSAgICAgPSBuZXcgUmVnRXhwKGAoPzw9XFxcXD8uKikoXFxcXGIke3NlYXJjaH09KShcXFxcZCspYCk7XG4gICAgLy8gQXVnbWVudCB0aGUgcGFnZSBwYXJhbSBvZiBlYWNoIGhyZWZcbiAgICBmb3IgKGNvbnN0IGEgb2YgPE5vZGVMaXN0T2Y8SFRNTEFuY2hvckVsZW1lbnQ+Pjx1bmtub3duPm5hdi5xdWVyeVNlbGVjdG9yQWxsKCdhW2hyZWZdJykpIHtcbiAgICAgIGEuaHJlZiA9IGEuaHJlZi5yZXBsYWNlKHJlLCAoX21hdGNoLCBwcmVmaXgsIGRpZ2l0KTogc3RyaW5nID0+IGAke3ByZWZpeH0ke2F1Z21lbnRQYWdlKDxzdHJpbmc+ZGlnaXQpfWApO1xuICAgIH1cbiAgICAvLyBSZXR1cm4gdGhlIGF1Z21lbnQgZnVuY3Rpb24gZm9yIGZ1cnRoZXIgYXVnbWVudGF0aW9uIChpLmUuLCB1cmwgdG9rZW4gaW4gaW5wdXRfbmF2X2pzKVxuICAgIHJldHVybiBhdWdtZW50UGFnZTtcbiAgfTtcblxuICAvLyBCdWlsZCB0aGUgc2VyaWVzX25hdl9qcyBoZWxwZXJcbiAgY29uc3QgYnVpbGROYXZKcyA9IChuYXY6TmF2SnNFbGVtZW50LCBbW2JlZm9yZSwgYW5jaG9yLCBjdXJyZW50LCBnYXAsIGFmdGVyXSwgcGFnZVRva2VuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt3aWR0aHMsIHNlcmllcywgbGFiZWxzXSwga2V5bmF2QXJnc106U2VyaWVzTmF2SnNBcmdzKSA9PiB7XG4gICAgY29uc3QgIHBhcmVudCA9IDxIVE1MRWxlbWVudD5uYXYucGFyZW50RWxlbWVudDtcbiAgICBsZXQgbGFzdFdpZHRoID0gLTE7XG4gICAgKG5hdi5yZW5kZXIgPSAoKSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IHdpZHRocy5maW5kSW5kZXgodyA9PiB3IDwgcGFyZW50LmNsaWVudFdpZHRoKTtcbiAgICAgIGlmICh3aWR0aHNbaW5kZXhdID09PSBsYXN0V2lkdGgpIHsgcmV0dXJuIH0gLy8gbm8gY2hhbmdlOiBhYm9ydFxuXG4gICAgICBsZXQgaHRtbCA9IGJlZm9yZTtcbiAgICAgIHNlcmllc1tpbmRleF0uZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xuICAgICAgICAvLyBBdm9pZCB0aGUgaWYgYmxvY2tzIGFuZCBjaGFpbiB0aGUgcmVzdWx0cyAoc2hvcnRlciBwYWd5Lm1pbi5qcyBhbmQgZWFzaWVyIHJlYWRpbmcpXG4gICAgICAgIGh0bWwgKz0gaXRlbSA9PSBcImdhcFwiID8gZ2FwIDpcbiAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIHRoZSBpdGVtIG1heSBiZSBhIG51bWJlciwgYnV0IHRoZSAncmVwbGFjZScgY29udmVydHMgaXQgdG8gc3RyaW5nIChzaG9ydGVyIHBhZ3kubWluLmpzKVxuICAgICAgICAgICAgICAgICh0eXBlb2YgaXRlbSA9PSBcIm51bWJlclwiID8gYW5jaG9yLnJlcGxhY2UocGFnZVRva2VuLCBpdGVtKSA6IGN1cnJlbnQpXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKFwiTDxcIiwgbGFiZWxzPy5baW5kZXhdW2ldID8/IGl0ZW0gKyBcIjxcIik7XG4gICAgICB9KTtcbiAgICAgIGh0bWwgICAgICAgICArPSBhZnRlcjtcbiAgICAgIG5hdi5pbm5lckhUTUwgPSBcIlwiO1xuICAgICAgbmF2Lmluc2VydEFkamFjZW50SFRNTChcImFmdGVyYmVnaW5cIiwgaHRtbCk7XG4gICAgICBsYXN0V2lkdGggPSB3aWR0aHNbaW5kZXhdO1xuICAgICAgaWYgKGtleW5hdkFyZ3MgJiYgc3RvcmFnZVN1cHBvcnQpIHsgdm9pZCBhdWdtZW50S2V5bmF2KG5hdiwga2V5bmF2QXJncykgfVxuICAgIH0pKCk7XG4gICAgaWYgKG5hdi5jbGFzc0xpc3QuY29udGFpbnMocGFneSArIFwiLXJqc1wiKSkgeyByanNPYnNlcnZlci5vYnNlcnZlKHBhcmVudCkgfVxuICB9O1xuXG4gIC8vIEluaXQgdGhlIGlucHV0X25hdl9qcyBoZWxwZXJzXG4gIGNvbnN0IGluaXRJbnB1dE5hdkpzID0gYXN5bmMgKG5hdjpIVE1MRWxlbWVudCwgW3VybF90b2tlbiwgcGFnZVRva2VuLCBrZXluYXZBcmdzXTpJbnB1dE5hdkpzQXJncykgPT4ge1xuICAgIGNvbnN0IGF1Z21lbnQgPSBrZXluYXZBcmdzICYmIHN0b3JhZ2VTdXBwb3J0XG4gICAgICAgICAgICAgICAgICAgID8gYXdhaXQgYXVnbWVudEtleW5hdihuYXYsIGtleW5hdkFyZ3MpXG4gICAgICAgICAgICAgICAgICAgIDogKHBhZ2U6IHN0cmluZykgPT4gcGFnZTtcbiAgICBpbml0SW5wdXQobmF2LCBpbnB1dFZhbHVlID0+IHVybF90b2tlbi5yZXBsYWNlKHBhZ2VUb2tlbiwgYXVnbWVudChpbnB1dFZhbHVlKSkpO1xuICB9O1xuXG4gIC8vIEluaXQgdGhlIGxpbWl0X3RhZ19qcyBoZWxwZXJcbiAgY29uc3QgaW5pdExpbWl0VGFnSnMgPSAoc3BhbjpIVE1MU3BhbkVsZW1lbnQsIFtmcm9tLCB1cmxfdG9rZW4sIHBhZ2VfdG9rZW4sIGxpbWl0VG9rZW5dOkxpbWl0VGFnSnNBcmdzKSA9PiB7XG4gICAgaW5pdElucHV0KHNwYW4sIGlucHV0VmFsdWUgPT4ge1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciB0aGUgcGFnZSBpcyBhIG51bWJlciwgYnV0IHRoZSAncmVwbGFjZScgY29udmVydHMgaXQgdG8gc3RyaW5nIChzaG9ydGVyIHBhZ3kubWluLmpzKVxuICAgICAgcmV0dXJuIHVybF90b2tlbi5yZXBsYWNlKHBhZ2VfdG9rZW4sIE1hdGgubWF4KE1hdGguY2VpbChmcm9tIC8gcGFyc2VJbnQoaW5wdXRWYWx1ZSkpLCAxKSlcbiAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZShsaW1pdFRva2VuLCBpbnB1dFZhbHVlKTtcbiAgICB9KTtcbiAgfTtcblxuICAvLyBJbml0IHRoZSBpbnB1dCBlbGVtZW50XG4gIGNvbnN0IGluaXRJbnB1dCA9IChlbGVtZW50OkhUTUxFbGVtZW50LCBnZXRVcmw6KHY6c3RyaW5nKSA9PiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBpbnB1dCAgID0gPEhUTUxJbnB1dEVsZW1lbnQ+ZWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiaW5wdXRcIiksXG4gICAgICAgICAgbGluayAgICA9IDxIVE1MQW5jaG9yRWxlbWVudD5lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCJhXCIpO1xuICAgIGxldCAgIGluaXRpYWwgPSBpbnB1dC52YWx1ZTtcbiAgICBjb25zdCBhY3Rpb24gID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC52YWx1ZSA9PT0gaW5pdGlhbCkgeyByZXR1cm4gfSAgLy8gbm90IGNoYW5nZWRcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBbbWluLCB2YWwsIG1heF0gPSBbaW5wdXQubWluLCBpbnB1dC52YWx1ZSwgaW5wdXQubWF4XS5tYXAobiA9PiBwYXJzZUludChuKSB8fCAwKTtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsIDwgbWluIHx8IHZhbCA+IG1heCkgeyAgLy8gcmVzZXQgaW52YWxpZC9vdXQtb2YtcmFuZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LnZhbHVlID0gaW5pdGlhbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LnNlbGVjdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsID0gaW5wdXQudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgbGluay5ocmVmID0gZ2V0VXJsKGlucHV0LnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICBsaW5rLmNsaWNrKCk7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcihcImZvY3VzXCIsICgpID0+IGlucHV0LnNlbGVjdCgpKTtcbiAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKFwiZm9jdXNvdXRcIiwgYWN0aW9uKTtcbiAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKFwia2V5cHJlc3NcIiwgZSA9PiB7IGlmIChlLmtleSA9PSBcIkVudGVyXCIpIHsgYWN0aW9uKCkgfSB9KTtcbiAgfTtcblxuICAvLyBQdWJsaWMgaW50ZXJmYWNlXG4gIHJldHVybiB7XG4gICAgdmVyc2lvbjogXCI0My40LjBcIixcblxuICAgIC8vIFNjYW4gZm9yIGVsZW1lbnRzIHdpdGggYSBcImRhdGEtcGFneVwiIGF0dHJpYnV0ZSBhbmQgY2FsbCB0aGVpciBpbml0IGZ1bmN0aW9ucyB3aXRoIHRoZSBkZWNvZGVkIGFyZ3NcbiAgICBpbml0KGFyZz86SFRNTEVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IHRhcmdldCAgID0gYXJnIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgPyBhcmcgOiBkb2N1bWVudCxcbiAgICAgICAgICAgIGVsZW1lbnRzID0gdGFyZ2V0LnF1ZXJ5U2VsZWN0b3JBbGwoXCJbZGF0YS1wYWd5XVwiKTtcbiAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiA8Tm9kZUxpc3RPZjxIVE1MRWxlbWVudD4+ZWxlbWVudHMpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBbaGVscGVySWQsIC4uLmFyZ3NdID0gPEluaXRBcmdzPkpTT04ucGFyc2UoQjY0RGVjb2RlKDxzdHJpbmc+ZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJkYXRhLXBhZ3lcIikpKTtcbiAgICAgICAgICBpZiAoaGVscGVySWQgPT0gXCJrXCIpIHtcbiAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3Igc3ByZWFkIDIgYXJndW1lbnRzLCBub3QgMyBhcyBpdCBjb21wbGFpbnMgYWJvdXRcbiAgICAgICAgICAgIHZvaWQgYXVnbWVudEtleW5hdihlbGVtZW50LCAuLi48S2V5bmF2QXJncz48dW5rbm93bj5hcmdzKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGhlbHBlcklkID09IFwic25qXCIpIHtcbiAgICAgICAgICAgIGJ1aWxkTmF2SnMoPE5hdkpzRWxlbWVudD5lbGVtZW50LCA8U2VyaWVzTmF2SnNBcmdzPjx1bmtub3duPmFyZ3MpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaGVscGVySWQgPT0gXCJpbmpcIikge1xuICAgICAgICAgICAgdm9pZCBpbml0SW5wdXROYXZKcyhlbGVtZW50LCA8SW5wdXROYXZKc0FyZ3M+PHVua25vd24+YXJncyk7XG4gICAgICAgICAgfSBlbHNlIGlmIChoZWxwZXJJZCA9PSBcImx0alwiKSB7XG4gICAgICAgICAgICBpbml0TGltaXRUYWdKcyhlbGVtZW50LCA8TGltaXRUYWdKc0FyZ3M+PHVua25vd24+YXJncyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIGVsc2UgeyBjb25zb2xlLndhcm4oXCJQYWd5LmluaXQ6ICVvXFxuVW5rbm93biBoZWxwZXJJZCAnJXMnXCIsIGVsZW1lbnQsIGhlbHBlcklkKSB9XG4gICAgICAgIH0gY2F0Y2ggKGVycikgeyBjb25zb2xlLndhcm4oXCJQYWd5LmluaXQ6ICVvXFxuJXNcIiwgZWxlbWVudCwgZXJyKSB9XG4gICAgICB9XG4gICAgfVxuICB9O1xufSkoKTtcbiIsCiAgICAiaW1wb3J0IFBhZ3kgZnJvbSBcIi4vcGFneS50c1wiXG53aW5kb3cuUGFneSA9IFBhZ3lcbiIKICBdLAogICJtYXBwaW5ncyI6ICI7QUFnREEsSUFBZ0Isc0JBQU07QUFBQSxFQUNwQixNQUFNLGlCQUFpQixvQkFBb0IsVUFBVSxzQkFBc0I7QUFBQSxFQUUzRSxJQUFJLE9BQU8sUUFBUSxTQUFrQixNQUF3QjtBQUFBLEVBQzdELElBQUksZ0JBQWdCO0FBQUEsSUFDbEIsVUFBVTtBQUFBLElBQ1YsT0FBVSxJQUFJLGlCQUFpQixJQUFJO0FBQUEsSUFDbkMsUUFBVSxLQUFLLElBQUk7QUFBQSxJQUVuQixLQUFLLGlCQUFpQixXQUFXLENBQUMsTUFBNkI7QUFBQSxNQUM3RCxJQUFJLEVBQUUsS0FBSyxNQUFNO0FBQUEsUUFDZixNQUFNLFVBQVUsUUFBUSxRQUFRLEVBQUUsS0FBSyxHQUFHO0FBQUEsUUFDMUMsSUFBSSxTQUFTO0FBQUEsVUFDWCxLQUFLLFlBQXNCLEVBQUMsSUFBSSxFQUFFLEtBQUssTUFBTSxLQUFLLEVBQUUsS0FBSyxLQUFLLEtBQUssUUFBTyxDQUFDO0FBQUEsUUFDN0U7QUFBQSxNQUNGLEVBQU8sU0FBSSxFQUFFLEtBQUssSUFBSTtBQUFBLFFBQ3BCLElBQUksRUFBRSxLQUFLLE1BQU0sT0FBTztBQUFBLFVBQ3RCLFFB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QUNyQixNQUFNLFNBQVcsZUFBZSxjQUFjLE1BQU0sVUFDOUMsV0FBVyxPQUFPLGlCQUFpQixhQUFhO0FBQUEsTUFDdEQsV0FBVyxXQUFvQyxVQUFVO0FBQUEsUUFDdkQsSUFBSTtBQUFBLFVBQ0YsT0FBTyxhQUFhLFFBQWtCLEtBQUssTUFBTSxVQUFrQixRQUFRLGFBQWEsV0FBVyxDQUFDLENBQUM7QUFBQSxVQUNyRyxJQUFJLFlBQVksS0FBSztBQUFBLFlBRWQsY0FBYyxTQUFTLEdBQXdCLElBQUk7QUFBQSxVQUMxRCxFQUFPLFNBQUksWUFBWSxPQUFPO0FBQUEsWUFDNUIsV0FBeUIsU0FBbUMsSUFBSTtBQUFBLFVBQ2xFLEVBQU8sU0FBSSxZQUFZLE9BQU87QUFBQSxZQUN2QixlQUFlLFNBQWtDLElBQUk7QUFBQSxVQUM1RCxFQUFPLFNBQUksWUFBWSxPQUFPO0FBQUEsWUFDNUIsZUFBZSxTQUFrQyxJQUFJO0FBQUEsVUFDdkQ7QUFBQSxVQUVBLE9BQU8sS0FBSztBQUFBLFVBQUUsUUFBUSxLQUFLO0FBQUEsS0FBcUIsU0FBUyxHQUFHO0FBQUE7QUFBQSxNQUNoRTtBQUFBO0FBQUEsRUFFSjtBQUFBLEdBQ0M7OztBQ3BPSCxPQUFPLE9BQU87IiwKICAiZGVidWdJZCI6ICIxOUI2QjRENUMyNEQ0NjVENjQ3NTZFMjE2NDc1NkUyMSIsCiAgIm5hbWVzIjogW10KfQ==
159
+ //# debugId=7617E58012A7B9E264756E2164756E21
160
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsicGFneS50cyIsICJwYWd5LXNoaW0udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbCiAgICAiaW50ZXJmYWNlIFN5bmNEYXRhIHtcbiAgZnJvbT86IG51bWJlclxuICB0bz86ICAgbnVtYmVyXG4gIGtleTogICBzdHJpbmdcbiAgc3RyPzogIHN0cmluZ1xufVxudHlwZSBJbml0QXJncyA9IFtcImtcIiwgIEtleW5hdkFyZ3NdIHwgICAgICAgICAgLy8gc2VyaWVzX25hdltfanNdIHdpdGgga2V5bmF2IGluc3RhbmNlXG4gICAgICAgICAgICAgICAgW1wic25qXCIsIFNlcmllc05hdkpzQXJnc10gfCAgICAvLyBzZXJpZXNfbmF2X2pzXG4gICAgICAgICAgICAgICAgW1wiaW5qXCIsIElucHV0TmF2SnNBcmdzXSB8ICAgICAvLyBpbnB1dF9uYXZfanNcbiAgICAgICAgICAgICAgICBbXCJsdGpcIiwgTGltaXRUYWdKc0FyZ3NdICAgICAgIC8vIGxpbWl0X3RhZ19qc1xudHlwZSBBdWdtZW50S2V5bmF2ID0gKG5hdjpIVE1MRWxlbWVudCwga2V5bmF2QXJnczpLZXluYXZBcmdzKSA9PiBQcm9taXNlPCgocGFnZTogc3RyaW5nKSA9PiBzdHJpbmcpPlxudHlwZSBLZXluYXZBcmdzID0gcmVhZG9ubHkgW3N0b3JhZ2VLZXk6ICBzdHJpbmcgfCBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvb3RLZXk6ICAgICBzdHJpbmcgfCBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VLZXk6ICAgICBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdDogICAgICAgIG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGxpY2VBcmdzPzogU3BsaWNlQXJnc11cbnR5cGUgU3BsaWNlQXJncyA9IHJlYWRvbmx5IFtzdGFydDogICAgICAgbnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZUNvdW50OiBudW1iZXIsICAgICAvLyBpdCB3b3VsZCBiZSBvcHRpb25hbCwgYnV0IHRzIGNvbXBsYWluc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLml0ZW1zOiAgICBDdXRvZmZbXV1cbnR5cGUgQ3V0b2ZmID0gcmVhZG9ubHkgKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4pW11cbnR5cGUgQXVnbWVudGVkUGFnZSA9IFticm93c2VySWQ6ICAgc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2VLZXk6ICBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgcGFnZU51bWJlcjogIG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICBwYWdlczogICAgICAgbnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICAgIHByaW9yQ3V0b2ZmOiBDdXRvZmYgfCBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgIHBhZ2VDdXRvZmY6ICBDdXRvZmYgfCBudWxsXVxudHlwZSBTZXJpZXNOYXZKc0FyZ3MgPSByZWFkb25seSBbTmF2SnNUb2tlbnMsIHBhZ2VUb2tlbjogc3RyaW5nLCBOYXZKc1NlcmllcywgS2V5bmF2QXJncz9dXG50eXBlIE5hdkpzU2VyaWVzID0gcmVhZG9ubHkgW3dpZHRoczogbnVtYmVyW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmllczogKHN0cmluZyB8IG51bWJlcilbXVtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHM6IHN0cmluZ1tdW10gfCBudWxsXVxudHlwZSBJbnB1dE5hdkpzQXJncyA9IHJlYWRvbmx5IFt1cmxUb2tlbjogIHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZVRva2VuOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtleW5hdkFyZ3M/XVxudHlwZSBMaW1pdFRhZ0pzQXJncyA9IHJlYWRvbmx5IFtmcm9tOiAgICAgICBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybFRva2VuOiAgIHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZVRva2VuOiAgc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdFRva2VuOiBzdHJpbmddXG50eXBlIE5hdkpzVG9rZW5zID0gcmVhZG9ubHkgW2JlZm9yZTogIHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5jaG9yOiAgc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50OiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdhcDogICAgIHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXI6ICAgc3RyaW5nXVxuaW50ZXJmYWNlIE5hdkpzRWxlbWVudCBleHRlbmRzIEhUTUxFbGVtZW50IHtcbiAgcmVuZGVyKCk6IHZvaWRcbn1cblxuLy8gVGhlIHN5bnRheCB1c2VkIGluIHRoaXMgZmlsZSBoYXMgYmVlbiBjYXJlZnVsbHkgY29tcG9zZWQgdG8gbWluaW1pemVcbi8vIHRoZSBwYWd5Lm1pbi5qcyBzaXplIGFuZCBhdm9pZCBwb2xsdXRpb24gaW4gdGhlIHdpbmRvdyBvYmplY3RcbmV4cG9ydCBkZWZhdWx0ICgoKSA9PiB7XG4gIGNvbnN0IHN0b3JhZ2VTdXBwb3J0ID0gJ3Nlc3Npb25TdG9yYWdlJyBpbiB3aW5kb3cgJiYgJ0Jyb2FkY2FzdENoYW5uZWwnIGluIHdpbmRvdztcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICBsZXQgcGFneSA9IFwicGFneVwiLCBzdG9yYWdlOiBTdG9yYWdlLCBzeW5jOiBCcm9hZGNhc3RDaGFubmVsLCB0YWJJZDogbnVtYmVyO1xuICBpZiAoc3RvcmFnZVN1cHBvcnQpIHtcbiAgICBzdG9yYWdlID0gc2Vzc2lvblN0b3JhZ2U7IC8vIHNob3J0ZW4gdGhlIGNvbXBpbGVkIHNpemVcbiAgICBzeW5jICAgID0gbmV3IEJyb2FkY2FzdENoYW5uZWwocGFneSk7XG4gICAgdGFiSWQgICA9IERhdGUubm93KCk7XG4gICAgLy8gU3luYyB0aGUgc2Vzc2lvblN0b3JhZ2Uga2V5cyBmb3IgdGhlIGN1dG9mZnMgb3BlbmVkIGluIGEgbmV3IHRhYi93aW5kb3dcbiAgICBzeW5jLmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIChlOk1lc3NhZ2VFdmVudDxTeW5jRGF0YT4pID0+IHtcbiAgICAgIGlmIChlLmRhdGEuZnJvbSkgeyAvLyByZXF1ZXN0IGN1dG9mZnNcbiAgICAgICAgY29uc3QgY3V0b2ZmcyA9IHN0b3JhZ2UuZ2V0SXRlbShlLmRhdGEua2V5KTtcbiAgICAgICAgaWYgKGN1dG9mZnMpIHtcbiAgICAgICAgICBzeW5jLnBvc3RNZXNzYWdlKDxTeW5jRGF0YT57dG86IGUuZGF0YS5mcm9tLCBrZXk6IGUuZGF0YS5rZXksIHN0cjogY3V0b2Zmc30pO1xuICAgICAgICB9IC8vIHNlbmQgcmVzcG9uc2VcbiAgICAgIH0gZWxzZSBpZiAoZS5kYXRhLnRvKSB7ICAvLyByZWNlaXZlIGN1dG9mZnNcbiAgICAgICAgaWYgKGUuZGF0YS50byA9PSB0YWJJZCkge1xuICAgICAgICAgIHN0b3JhZ2Uuc2V0SXRlbShlLmRhdGEua2V5LCA8c3RyaW5nPmUuZGF0YS5zdHIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgLy8gVGhlIG9ic2VydmVyIGluc3RhbmNlIGZvciByZXNwb25zaXZlIG5hdnNcbiAgY29uc3QgcmpzT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoXG4gICAgICBlbnRyaWVzID0+IGVudHJpZXMuZm9yRWFjaChlID0+IHtcbiAgICAgICAgZS50YXJnZXQucXVlcnlTZWxlY3RvckFsbDxOYXZKc0VsZW1lbnQ+KFwiLnBhZ3ktcmpzXCIpLmZvckVhY2goZWwgPT4gZWwucmVuZGVyKCkpO1xuICAgICAgfSkpO1xuXG4gIC8qIEZ1bGwgc2V0IG9mIEI2NCBmdW5jdGlvbnNcbiAgY29uc3QgQjY0RW5jb2RlICAgICA9ICh1bmljb2RlOnN0cmluZykgPT4gYnRvYShTdHJpbmcuZnJvbUNoYXJDb2RlKC4uLihuZXcgVGV4dEVuY29kZXIpLmVuY29kZSh1bmljb2RlKSkpLFxuICAgICAgICBCNjRTYWZlICAgICAgID0gKHVuc2FmZTpzdHJpbmcpICA9PiB1bnNhZmUucmVwbGFjZSgvWysvPV0vZywgKG0pID0+IG0gPT0gXCIrXCIgPyBcIi1cIiA6IG0gPT0gXCIvXCIgPyBcIl9cIiA6IFwiXCIpLFxuICAgICAgICBCNjRTYWZlRW5jb2RlID0gKHVuaWNvZGU6c3RyaW5nKSA9PiBCNjRTYWZlKEI2NEVuY29kZSh1bmljb2RlKSksXG4gICAgICAgIEI2NERlY29kZSAgICAgPSAoYmFzZTY0OnN0cmluZykgID0+IChuZXcgVGV4dERlY29kZXIoKSkuZGVjb2RlKFVpbnQ4QXJyYXkuZnJvbShhdG9iKGJhc2U2NCksIGMgPT4gYy5jaGFyQ29kZUF0KDApKSksXG4gICAgICAgIEI2NFVuc2FmZSAgICAgPSAoc2FmZTpzdHJpbmcpICAgID0+IHNhZmUucmVwbGFjZSgvWy1fXS9nLCAobWF0Y2gpID0+IG1hdGNoID09IFwiLVwiID8gXCIrXCIgOiBcIi9cIiksXG4gICAgICAgIEI2NFNhZmVEZWNvZGUgPSAoYmFzZTY0OnN0cmluZykgID0+IEI2NERlY29kZShCNjRVbnNhZmUoYmFzZTY0KSlcbiAgKi9cbiAgY29uc3QgQjY0U2FmZUVuY29kZSA9ICh1bmljb2RlOnN0cmluZykgPT4gYnRvYShTdHJpbmcuZnJvbUNoYXJDb2RlKC4uLihuZXcgVGV4dEVuY29kZXIpLmVuY29kZSh1bmljb2RlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bKy89XS9nLCAobSkgPT4gbSA9PSBcIitcIiA/IFwiLVwiIDogbSA9PSBcIi9cIiA/IFwiX1wiIDogXCJcIiksXG4gICAgICAgIEI2NERlY29kZSAgICAgPSAoYmFzZTY0OnN0cmluZykgID0+IChuZXcgVGV4dERlY29kZXIoKSkuZGVjb2RlKFVpbnQ4QXJyYXkuZnJvbShhdG9iKGJhc2U2NCksIGMgPT4gYy5jaGFyQ29kZUF0KDApKSk7XG5cbiAgLy8gUmV0dXJuIGEgcmFuZG9tIGtleTogMyBjaGFycyBtYXgsIGJhc2UtMzYgbnVtYmVyIDwgMzYqKjNcbiAgY29uc3QgcmFuZEtleSA9ICgpID0+IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDM2ICoqIDMpLnRvU3RyaW5nKDM2KTtcblxuICAvLyBNYW5hZ2UgdGhlIHBhZ2UgYXVnbWVudGF0aW9uIGZvciBLZXluYXYsIGNhbGxlZCBvbmx5IGlmIHN0b3JhZ2VTdXBwb3J0XG4gIGNvbnN0IGF1Z21lbnRLZXluYXY6IEF1Z21lbnRLZXluYXYgPSBhc3luYyAobmF2LCBbc3RvcmFnZUtleSwgcm9vdEtleSwgcGFnZUtleSwgbGFzdCwgc3BsaWNlQXJnc10pID0+IHtcbiAgICBsZXQgYXVnbWVudFBhZ2U6KHBhZ2U6IHN0cmluZykgPT4gc3RyaW5nO1xuICAgIGNvbnN0IGJyb3dzZXJLZXkgPSBkb2N1bWVudC5jb29raWUuc3BsaXQoLztcXHMrLykgIC8vIGl0IHdvcmtzIGV2ZW4gaWYgbWFsZm9ybWVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoKHJvdykgPT4gcm93LnN0YXJ0c1dpdGgocGFneSArIFwiPVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LnNwbGl0KFwiPVwiKVsxXSA/PyByYW5kS2V5KCk7XG4gICAgZG9jdW1lbnQuY29va2llID0gcGFneSArIFwiPVwiICsgYnJvd3NlcktleTsgIC8vIFNtYWxsZXIgLm1pbiBzaXplOiBzZXQgdGhlIGNvb2tpZSB3aXRob3V0IGNoZWNraW5nXG4gICAgaWYgKHN0b3JhZ2VLZXkgJiYgIShzdG9yYWdlS2V5IGluIHN0b3JhZ2UpKSB7XG4gICAgICAvLyBTeW5jIHRoZSBzZXNzaW9uZ1N0b3JhZ2UgZnJvbSBvdGhlciB0YWJzL3dpbmRvd3MgKGUuZy4sIG9wZW4gcGFnZSBpbiB0aGUgbmV3IHRhYi93aW5kb3cpXG4gICAgICBzeW5jLnBvc3RNZXNzYWdlKDxTeW5jRGF0YT57IGZyb206IHRhYklkLCBrZXk6IHN0b3JhZ2VLZXkgfSk7XG4gICAgICAvLyBXYWl0IGZvciB0aGUgbGlzdGVuZXIgdG8gY29weSB0aGUgY3V0b2ZmcyBpbiB0aGUgY3VycmVudCBzZXNzaW9uU3RvcmFnZVxuICAgICAgYXdhaXQgbmV3IFByb21pc2U8c3RyaW5nfG51bGw+KChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KCgpID0+IHJlc29sdmUoXCJcIiksIDEwMCkpO1xuICAgICAgaWYgKCEoc3RvcmFnZUtleSBpbiBzdG9yYWdlKSkgeyAvLyB0aGUgc3RvcmFnZUtleSBkaWRuJ3QgZ2V0IGNvcGllZDogZmFsbGJhY2sgdG8gY291bnRsZXNzIHBhZ2luYXRpb25cbiAgICAgICAgYXVnbWVudFBhZ2UgPSAocGFnZTogc3RyaW5nKSA9PiBwYWdlICsgJysnICsgbGFzdDtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBJZiBpdCBpcyBub3QgYXNzaWduZWQgaXQgbWVhbnMgaXQgc3VwcG9ydHMga2V5bmF2XG4gICAgaWYgKCFhdWdtZW50UGFnZSkgeyAvLyByZWd1bGFyIGtleW5hdiBwYWdpbmF0aW9uXG4gICAgICBpZiAoIXN0b3JhZ2VLZXkpIHsgZG8geyBzdG9yYWdlS2V5ID0gcmFuZEtleSgpIH0gd2hpbGUgKHN0b3JhZ2VLZXkgaW4gc3RvcmFnZSkgfSAvLyBubyBkdXAga2V5c1xuICAgICAgY29uc3QgZGF0YSA9IHN0b3JhZ2UuZ2V0SXRlbShzdG9yYWdlS2V5KSxcbiAgICAgICAgICBjdXRvZmZzID0gPEN1dG9mZltdPihkYXRhID8gSlNPTi5wYXJzZShkYXRhKSA6IFt1bmRlZmluZWRdKTtcbiAgICAgIGlmIChzcGxpY2VBcmdzKSB7XG4gICAgICAgIGN1dG9mZnMuc3BsaWNlKC4uLnNwbGljZUFyZ3MpO1xuICAgICAgICBzdG9yYWdlLnNldEl0ZW0oc3RvcmFnZUtleSwgSlNPTi5zdHJpbmdpZnkoY3V0b2ZmcykpO1xuICAgICAgfVxuICAgICAgLy8gQXVnbWVudCBmdW5jdGlvblxuICAgICAgYXVnbWVudFBhZ2UgPSAocGFnZTpzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgcGFnZU51bSA9IHBhcnNlSW50KHBhZ2UpO1xuICAgICAgICByZXR1cm4gQjY0U2FmZUVuY29kZShKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgIDxBdWdtZW50ZWRQYWdlPlticm93c2VyS2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2VLZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZU51bSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXRvZmZzLmxlbmd0aCwgICAgICAgLy8gcGFnZXMvbGFzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1dG9mZnNbcGFnZU51bSAtIDFdLCAvLyBwcmlvckN1dG9mZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1dG9mZnNbcGFnZU51bV1dKSk7ICAvLyBwYWdlQ3V0b2ZmXG4gICAgICB9O1xuICAgIH1cbiAgICBjb25zdCBzZWFyY2ggPSAocm9vdEtleSkgPyBgJHtyb290S2V5fSU1QiR7cGFnZUtleX0lNURgIDogcGFnZUtleTtcbiAgICBjb25zdCByZSAgICAgPSBuZXcgUmVnRXhwKGAoPzw9XFxcXD8uKikoXFxcXGIke3NlYXJjaH09KShcXFxcZCspYCk7XG4gICAgLy8gQXVnbWVudCB0aGUgcGFnZSBwYXJhbSBvZiBlYWNoIGhyZWZcbiAgICBmb3IgKGNvbnN0IGEgb2YgPE5vZGVMaXN0T2Y8SFRNTEFuY2hvckVsZW1lbnQ+Pjx1bmtub3duPm5hdi5xdWVyeVNlbGVjdG9yQWxsKCdhW2hyZWZdJykpIHtcbiAgICAgIGEuaHJlZiA9IGEuaHJlZi5yZXBsYWNlKHJlLCAoX21hdGNoLCBwcmVmaXgsIGRpZ2l0KTogc3RyaW5nID0+IGAke3ByZWZpeH0ke2F1Z21lbnRQYWdlKDxzdHJpbmc+ZGlnaXQpfWApO1xuICAgIH1cbiAgICAvLyBSZXR1cm4gdGhlIGF1Z21lbnQgZnVuY3Rpb24gZm9yIGZ1cnRoZXIgYXVnbWVudGF0aW9uIChpLmUuLCB1cmwgdG9rZW4gaW4gaW5wdXRfbmF2X2pzKVxuICAgIHJldHVybiBhdWdtZW50UGFnZTtcbiAgfTtcblxuICAvLyBCdWlsZCB0aGUgc2VyaWVzX25hdl9qcyBoZWxwZXJcbiAgY29uc3QgYnVpbGROYXZKcyA9IChuYXY6TmF2SnNFbGVtZW50LCBbW2JlZm9yZSwgYW5jaG9yLCBjdXJyZW50LCBnYXAsIGFmdGVyXSwgcGFnZVRva2VuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt3aWR0aHMsIHNlcmllcywgbGFiZWxzXSwga2V5bmF2QXJnc106U2VyaWVzTmF2SnNBcmdzKSA9PiB7XG4gICAgY29uc3QgIHBhcmVudCA9IDxIVE1MRWxlbWVudD5uYXYucGFyZW50RWxlbWVudDtcbiAgICBsZXQgbGFzdFdpZHRoID0gLTE7XG4gICAgKG5hdi5yZW5kZXIgPSAoKSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IHdpZHRocy5maW5kSW5kZXgodyA9PiB3IDwgcGFyZW50LmNsaWVudFdpZHRoKTtcbiAgICAgIGlmICh3aWR0aHNbaW5kZXhdID09PSBsYXN0V2lkdGgpIHsgcmV0dXJuIH0gLy8gbm8gY2hhbmdlOiBhYm9ydFxuXG4gICAgICBsZXQgaHRtbCA9IGJlZm9yZTtcbiAgICAgIHNlcmllc1tpbmRleF0uZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xuICAgICAgICAvLyBBdm9pZCB0aGUgaWYgYmxvY2tzIGFuZCBjaGFpbiB0aGUgcmVzdWx0cyAoc2hvcnRlciBwYWd5Lm1pbi5qcyBhbmQgZWFzaWVyIHJlYWRpbmcpXG4gICAgICAgIGh0bWwgKz0gaXRlbSA9PSBcImdhcFwiID8gZ2FwIDpcbiAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIHRoZSBpdGVtIG1heSBiZSBhIG51bWJlciwgYnV0IHRoZSAncmVwbGFjZScgY29udmVydHMgaXQgdG8gc3RyaW5nIChzaG9ydGVyIHBhZ3kubWluLmpzKVxuICAgICAgICAgICAgICAgICh0eXBlb2YgaXRlbSA9PSBcIm51bWJlclwiID8gYW5jaG9yLnJlcGxhY2UocGFnZVRva2VuLCBpdGVtKSA6IGN1cnJlbnQpXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKFwiTDxcIiwgbGFiZWxzPy5baW5kZXhdW2ldID8/IGl0ZW0gKyBcIjxcIik7XG4gICAgICB9KTtcbiAgICAgIGh0bWwgICAgICAgICArPSBhZnRlcjtcbiAgICAgIG5hdi5pbm5lckhUTUwgPSBcIlwiO1xuICAgICAgbmF2Lmluc2VydEFkamFjZW50SFRNTChcImFmdGVyYmVnaW5cIiwgaHRtbCk7XG4gICAgICBsYXN0V2lkdGggPSB3aWR0aHNbaW5kZXhdO1xuICAgICAgaWYgKGtleW5hdkFyZ3MgJiYgc3RvcmFnZVN1cHBvcnQpIHsgdm9pZCBhdWdtZW50S2V5bmF2KG5hdiwga2V5bmF2QXJncykgfVxuICAgIH0pKCk7XG4gICAgaWYgKG5hdi5jbGFzc0xpc3QuY29udGFpbnMocGFneSArIFwiLXJqc1wiKSkgeyByanNPYnNlcnZlci5vYnNlcnZlKHBhcmVudCkgfVxuICB9O1xuXG4gIC8vIEluaXQgdGhlIGlucHV0X25hdl9qcyBoZWxwZXJzXG4gIGNvbnN0IGluaXRJbnB1dE5hdkpzID0gYXN5bmMgKG5hdjpIVE1MRWxlbWVudCwgW3VybF90b2tlbiwgcGFnZVRva2VuLCBrZXluYXZBcmdzXTpJbnB1dE5hdkpzQXJncykgPT4ge1xuICAgIGNvbnN0IGF1Z21lbnQgPSBrZXluYXZBcmdzICYmIHN0b3JhZ2VTdXBwb3J0XG4gICAgICAgICAgICAgICAgICAgID8gYXdhaXQgYXVnbWVudEtleW5hdihuYXYsIGtleW5hdkFyZ3MpXG4gICAgICAgICAgICAgICAgICAgIDogKHBhZ2U6IHN0cmluZykgPT4gcGFnZTtcbiAgICBpbml0SW5wdXQobmF2LCBpbnB1dFZhbHVlID0+IHVybF90b2tlbi5yZXBsYWNlKHBhZ2VUb2tlbiwgYXVnbWVudChpbnB1dFZhbHVlKSkpO1xuICB9O1xuXG4gIC8vIEluaXQgdGhlIGxpbWl0X3RhZ19qcyBoZWxwZXJcbiAgY29uc3QgaW5pdExpbWl0VGFnSnMgPSAoc3BhbjpIVE1MU3BhbkVsZW1lbnQsIFtmcm9tLCB1cmxfdG9rZW4sIHBhZ2VfdG9rZW4sIGxpbWl0VG9rZW5dOkxpbWl0VGFnSnNBcmdzKSA9PiB7XG4gICAgaW5pdElucHV0KHNwYW4sIGlucHV0VmFsdWUgPT4ge1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciB0aGUgcGFnZSBpcyBhIG51bWJlciwgYnV0IHRoZSAncmVwbGFjZScgY29udmVydHMgaXQgdG8gc3RyaW5nIChzaG9ydGVyIHBhZ3kubWluLmpzKVxuICAgICAgcmV0dXJuIHVybF90b2tlbi5yZXBsYWNlKHBhZ2VfdG9rZW4sIE1hdGgubWF4KE1hdGguY2VpbChmcm9tIC8gcGFyc2VJbnQoaW5wdXRWYWx1ZSkpLCAxKSlcbiAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZShsaW1pdFRva2VuLCBpbnB1dFZhbHVlKTtcbiAgICB9KTtcbiAgfTtcblxuICAvLyBJbml0IHRoZSBpbnB1dCBlbGVtZW50XG4gIGNvbnN0IGluaXRJbnB1dCA9IChlbGVtZW50OkhUTUxFbGVtZW50LCBnZXRVcmw6KHY6c3RyaW5nKSA9PiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBpbnB1dCAgID0gPEhUTUxJbnB1dEVsZW1lbnQ+ZWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiaW5wdXRcIiksXG4gICAgICAgICAgbGluayAgICA9IDxIVE1MQW5jaG9yRWxlbWVudD5lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCJhXCIpO1xuICAgIGxldCAgIGluaXRpYWwgPSBpbnB1dC52YWx1ZTtcbiAgICBjb25zdCBhY3Rpb24gID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC52YWx1ZSA9PT0gaW5pdGlhbCkgeyByZXR1cm4gfSAgLy8gbm90IGNoYW5nZWRcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBbbWluLCB2YWwsIG1heF0gPSBbaW5wdXQubWluLCBpbnB1dC52YWx1ZSwgaW5wdXQubWF4XS5tYXAobiA9PiBwYXJzZUludChuKSB8fCAwKTtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsIDwgbWluIHx8IHZhbCA+IG1heCkgeyAgLy8gcmVzZXQgaW52YWxpZC9vdXQtb2YtcmFuZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LnZhbHVlID0gaW5pdGlhbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LnNlbGVjdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsID0gaW5wdXQudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgbGluay5ocmVmID0gZ2V0VXJsKGlucHV0LnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICBsaW5rLmNsaWNrKCk7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcihcImZvY3VzXCIsICgpID0+IGlucHV0LnNlbGVjdCgpKTtcbiAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKFwiZm9jdXNvdXRcIiwgYWN0aW9uKTtcbiAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKFwia2V5cHJlc3NcIiwgZSA9PiB7IGlmIChlLmtleSA9PSBcIkVudGVyXCIpIHsgYWN0aW9uKCkgfSB9KTtcbiAgfTtcblxuICAvLyBQdWJsaWMgaW50ZXJmYWNlXG4gIHJldHVybiB7XG4gICAgdmVyc2lvbjogXCI0My40LjFcIixcblxuICAgIC8vIFNjYW4gZm9yIGVsZW1lbnRzIHdpdGggYSBcImRhdGEtcGFneVwiIGF0dHJpYnV0ZSBhbmQgY2FsbCB0aGVpciBpbml0IGZ1bmN0aW9ucyB3aXRoIHRoZSBkZWNvZGVkIGFyZ3NcbiAgICBpbml0KGFyZz86SFRNTEVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IHRhcmdldCAgID0gYXJnIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgPyBhcmcgOiBkb2N1bWVudCxcbiAgICAgICAgICAgIGVsZW1lbnRzID0gdGFyZ2V0LnF1ZXJ5U2VsZWN0b3JBbGwoXCJbZGF0YS1wYWd5XVwiKTtcbiAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiA8Tm9kZUxpc3RPZjxIVE1MRWxlbWVudD4+ZWxlbWVudHMpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBbaGVscGVySWQsIC4uLmFyZ3NdID0gPEluaXRBcmdzPkpTT04ucGFyc2UoQjY0RGVjb2RlKDxzdHJpbmc+ZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJkYXRhLXBhZ3lcIikpKTtcbiAgICAgICAgICBpZiAoaGVscGVySWQgPT0gXCJrXCIpIHtcbiAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3Igc3ByZWFkIDIgYXJndW1lbnRzLCBub3QgMyBhcyBpdCBjb21wbGFpbnMgYWJvdXRcbiAgICAgICAgICAgIHZvaWQgYXVnbWVudEtleW5hdihlbGVtZW50LCAuLi48S2V5bmF2QXJncz48dW5rbm93bj5hcmdzKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGhlbHBlcklkID09IFwic25qXCIpIHtcbiAgICAgICAgICAgIGJ1aWxkTmF2SnMoPE5hdkpzRWxlbWVudD5lbGVtZW50LCA8U2VyaWVzTmF2SnNBcmdzPjx1bmtub3duPmFyZ3MpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaGVscGVySWQgPT0gXCJpbmpcIikge1xuICAgICAgICAgICAgdm9pZCBpbml0SW5wdXROYXZKcyhlbGVtZW50LCA8SW5wdXROYXZKc0FyZ3M+PHVua25vd24+YXJncyk7XG4gICAgICAgICAgfSBlbHNlIGlmIChoZWxwZXJJZCA9PSBcImx0alwiKSB7XG4gICAgICAgICAgICBpbml0TGltaXRUYWdKcyhlbGVtZW50LCA8TGltaXRUYWdKc0FyZ3M+PHVua25vd24+YXJncyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIGVsc2UgeyBjb25zb2xlLndhcm4oXCJQYWd5LmluaXQ6ICVvXFxuVW5rbm93biBoZWxwZXJJZCAnJXMnXCIsIGVsZW1lbnQsIGhlbHBlcklkKSB9XG4gICAgICAgIH0gY2F0Y2ggKGVycikgeyBjb25zb2xlLndhcm4oXCJQYWd5LmluaXQ6ICVvXFxuJXNcIiwgZWxlbWVudCwgZXJyKSB9XG4gICAgICB9XG4gICAgfVxuICB9O1xufSkoKTtcbiIsCiAgICAiaW1wb3J0IFBhZ3kgZnJvbSBcIi4vcGFneS50c1wiXG53aW5kb3cuUGFneSA9IFBhZ3lcbiIKICBdLAogICJtYXBwaW5ncyI6ICI7QUFnREEsSUFBZ0Isc0JBQU07QUFBQSxFQUNwQixNQUFNLGlCQUFpQixvQkFBb0IsVUFBVSxzQkFBc0I7QUFBQSxFQUUzRSxJQUFJLE9BQU8sUUFBUSxTQUFrQixNQUF3QjtBQUFBLEVBQzdELElBQUksZ0JBQWdCO0FBQUEsSUFDbEIsVUFBVTtBQUFBLElBQ1YsT0FBVSxJQUFJLGlCQUFpQixJQUFJO0FBQUEsSUFDbkMsUUFBVSxLQUFLLElBQUk7QUFBQSxJQUVuQixLQUFLLGlCQUFpQixXQUFXLENBQUMsTUFBNkI7QUFBQSxNQUM3RCxJQUFJLEVBQUUsS0FBSyxNQUFNO0FBQUEsUUFDZixNQUFNLFVBQVUsUUFBUSxRQUFRLEVBQUUsS0FBSyxHQUFHO0FBQUEsUUFDMUMsSUFBSSxTQUFTO0FBQUEsVUFDWCxLQUFLLFlBQXNCLEVBQUMsSUFBSSxFQUFFLEtBQUssTUFBTSxLQUFLLEVBQUUsS0FBSyxLQUFLLEtBQUssUUFBTyxDQUFDO0FBQUEsUUFDN0U7QUFBQSxNQUNGLEVBQU8sU0FBSSxFQUFFLEtBQUssSUFBSTtBQUFBLFFBQ3BCLElBQUksRUFBRSxLQUFLLE1BQU0sT0FBTztBQUFBLFVBQ3RCLFFB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QUNyQixNQUFNLFNBQVcsZUFBZSxjQUFjLE1BQU0sVUFDOUMsV0FBVyxPQUFPLGlCQUFpQixhQUFhO0FBQUEsTUFDdEQsV0FBVyxXQUFvQyxVQUFVO0FBQUEsUUFDdkQsSUFBSTtBQUFBLFVBQ0YsT0FBTyxhQUFhLFFBQWtCLEtBQUssTUFBTSxVQUFrQixRQUFRLGFBQWEsV0FBVyxDQUFDLENBQUM7QUFBQSxVQUNyRyxJQUFJLFlBQVksS0FBSztBQUFBLFlBRWQsY0FBYyxTQUFTLEdBQXdCLElBQUk7QUFBQSxVQUMxRCxFQUFPLFNBQUksWUFBWSxPQUFPO0FBQUEsWUFDNUIsV0FBeUIsU0FBbUMsSUFBSTtBQUFBLFVBQ2xFLEVBQU8sU0FBSSxZQUFZLE9BQU87QUFBQSxZQUN2QixlQUFlLFNBQWtDLElBQUk7QUFBQSxVQUM1RCxFQUFPLFNBQUksWUFBWSxPQUFPO0FBQUEsWUFDNUIsZUFBZSxTQUFrQyxJQUFJO0FBQUEsVUFDdkQ7QUFBQSxVQUVBLE9BQU8sS0FBSztBQUFBLFVBQUUsUUFBUSxLQUFLO0FBQUEsS0FBcUIsU0FBUyxHQUFHO0FBQUE7QUFBQSxNQUNoRTtBQUFBO0FBQUEsRUFFSjtBQUFBLEdBQ0M7OztBQ3BPSCxPQUFPLE9BQU87IiwKICAiZGVidWdJZCI6ICI3NjE3RTU4MDEyQTdCOUUyNjQ3NTZFMjE2NDc1NkUyMSIsCiAgIm5hbWVzIjogW10KfQ==
@@ -1,2 +1,2 @@
1
- window.Pagy=(()=>{let B="sessionStorage"in window&&"BroadcastChannel"in window,L="pagy",Z,O,W;if(B)Z=sessionStorage,O=new BroadcastChannel(L),W=Date.now(),O.addEventListener("message",(q)=>{if(q.data.from){let z=Z.getItem(q.data.key);if(z)O.postMessage({to:q.data.from,key:q.data.key,str:z})}else if(q.data.to){if(q.data.to==W)Z.setItem(q.data.key,q.data.str)}});let V=new ResizeObserver((q)=>q.forEach((z)=>{z.target.querySelectorAll(".pagy-rjs").forEach((C)=>C.render())})),_=(q)=>btoa(String.fromCharCode(...new TextEncoder().encode(q))).replace(/[+/=]/g,(z)=>z=="+"?"-":z=="/"?"_":""),x=(q)=>new TextDecoder().decode(Uint8Array.from(atob(q),(z)=>z.charCodeAt(0))),P=()=>Math.floor(Math.random()*46656).toString(36),J=async(q,[z,C,F,H,G])=>{let Q,X=document.cookie.split(/;\s+/).find((M)=>M.startsWith(L+"="))?.split("=")[1]??P();if(document.cookie=L+"="+X,z&&!(z in Z)){if(O.postMessage({from:W,key:z}),await new Promise((M)=>setTimeout(()=>M(""),100)),!(z in Z))Q=(M)=>M+"+"+H}if(!Q){if(!z)do z=P();while(z in Z);let M=Z.getItem(z),Y=M?JSON.parse(M):[void 0];if(G)Y.splice(...G),Z.setItem(z,JSON.stringify(Y));Q=($)=>{let R=parseInt($);return _(JSON.stringify([X,z,R,Y.length,Y[R-1],Y[R]]))}}let D=C?`${C}%5B${F}%5D`:F,E=new RegExp(`(?<=\\?.*)(\\b${D}=)(\\d+)`);for(let M of q.querySelectorAll("a[href]"))M.href=M.href.replace(E,(Y,$,R)=>`${$}${Q(R)}`);return Q},T=(q,[[z,C,F,H,G],Q,[X,D,E],M])=>{let Y=q.parentElement,$=-1;if((q.render=()=>{let R=X.findIndex((j)=>j<Y.clientWidth);if(X[R]===$)return;let U=z;if(D[R].forEach((j,I)=>{U+=j=="gap"?H:(typeof j=="number"?C.replace(Q,j):F).replace("L<",E?.[R][I]??j+"<")}),U+=G,q.innerHTML="",q.insertAdjacentHTML("afterbegin",U),$=X[R],M&&B)J(q,M)})(),q.classList.contains(L+"-rjs"))V.observe(Y)},w=async(q,[z,C,F])=>{let H=F&&B?await J(q,F):(G)=>G;S(q,(G)=>z.replace(C,H(G)))},A=(q,[z,C,F,H])=>{S(q,(G)=>{return C.replace(F,Math.max(Math.ceil(z/parseInt(G)),1)).replace(H,G)})},S=(q,z)=>{let C=q.querySelector("input"),F=q.querySelector("a"),H=C.value,G=()=>{if(C.value===H)return;let[Q,X,D]=[C.min,C.value,C.max].map((E)=>parseInt(E)||0);if(X<Q||X>D){C.value=H,C.select();return}H=C.value,F.href=z(C.value),F.click()};C.addEventListener("focus",()=>C.select()),C.addEventListener("focusout",G),C.addEventListener("keypress",(Q)=>{if(Q.key=="Enter")G()})};return{version:"43.4.0",init(q){let z=q instanceof HTMLElement?q:document,C=z.querySelectorAll("[data-pagy]");for(let F of C)try{let[H,...G]=JSON.parse(x(F.getAttribute("data-pagy")));if(H=="k")J(F,...G);else if(H=="snj")T(F,G);else if(H=="inj")w(F,G);else if(H=="ltj")A(F,G)}catch(H){console.warn(`Pagy.init: %o
1
+ window.Pagy=(()=>{let B="sessionStorage"in window&&"BroadcastChannel"in window,L="pagy",Z,O,W;if(B)Z=sessionStorage,O=new BroadcastChannel(L),W=Date.now(),O.addEventListener("message",(q)=>{if(q.data.from){let z=Z.getItem(q.data.key);if(z)O.postMessage({to:q.data.from,key:q.data.key,str:z})}else if(q.data.to){if(q.data.to==W)Z.setItem(q.data.key,q.data.str)}});let V=new ResizeObserver((q)=>q.forEach((z)=>{z.target.querySelectorAll(".pagy-rjs").forEach((C)=>C.render())})),_=(q)=>btoa(String.fromCharCode(...new TextEncoder().encode(q))).replace(/[+/=]/g,(z)=>z=="+"?"-":z=="/"?"_":""),x=(q)=>new TextDecoder().decode(Uint8Array.from(atob(q),(z)=>z.charCodeAt(0))),P=()=>Math.floor(Math.random()*46656).toString(36),J=async(q,[z,C,F,H,G])=>{let Q,X=document.cookie.split(/;\s+/).find((M)=>M.startsWith(L+"="))?.split("=")[1]??P();if(document.cookie=L+"="+X,z&&!(z in Z)){if(O.postMessage({from:W,key:z}),await new Promise((M)=>setTimeout(()=>M(""),100)),!(z in Z))Q=(M)=>M+"+"+H}if(!Q){if(!z)do z=P();while(z in Z);let M=Z.getItem(z),Y=M?JSON.parse(M):[void 0];if(G)Y.splice(...G),Z.setItem(z,JSON.stringify(Y));Q=($)=>{let R=parseInt($);return _(JSON.stringify([X,z,R,Y.length,Y[R-1],Y[R]]))}}let D=C?`${C}%5B${F}%5D`:F,E=new RegExp(`(?<=\\?.*)(\\b${D}=)(\\d+)`);for(let M of q.querySelectorAll("a[href]"))M.href=M.href.replace(E,(Y,$,R)=>`${$}${Q(R)}`);return Q},T=(q,[[z,C,F,H,G],Q,[X,D,E],M])=>{let Y=q.parentElement,$=-1;if((q.render=()=>{let R=X.findIndex((j)=>j<Y.clientWidth);if(X[R]===$)return;let U=z;if(D[R].forEach((j,I)=>{U+=j=="gap"?H:(typeof j=="number"?C.replace(Q,j):F).replace("L<",E?.[R][I]??j+"<")}),U+=G,q.innerHTML="",q.insertAdjacentHTML("afterbegin",U),$=X[R],M&&B)J(q,M)})(),q.classList.contains(L+"-rjs"))V.observe(Y)},w=async(q,[z,C,F])=>{let H=F&&B?await J(q,F):(G)=>G;S(q,(G)=>z.replace(C,H(G)))},A=(q,[z,C,F,H])=>{S(q,(G)=>{return C.replace(F,Math.max(Math.ceil(z/parseInt(G)),1)).replace(H,G)})},S=(q,z)=>{let C=q.querySelector("input"),F=q.querySelector("a"),H=C.value,G=()=>{if(C.value===H)return;let[Q,X,D]=[C.min,C.value,C.max].map((E)=>parseInt(E)||0);if(X<Q||X>D){C.value=H,C.select();return}H=C.value,F.href=z(C.value),F.click()};C.addEventListener("focus",()=>C.select()),C.addEventListener("focusout",G),C.addEventListener("keypress",(Q)=>{if(Q.key=="Enter")G()})};return{version:"43.4.1",init(q){let z=q instanceof HTMLElement?q:document,C=z.querySelectorAll("[data-pagy]");for(let F of C)try{let[H,...G]=JSON.parse(x(F.getAttribute("data-pagy")));if(H=="k")J(F,...G);else if(H=="snj")T(F,G);else if(H=="inj")w(F,G);else if(H=="ltj")A(F,G)}catch(H){console.warn(`Pagy.init: %o
2
2
  %s`,F,H)}}}})();
data/javascripts/pagy.mjs CHANGED
@@ -128,7 +128,7 @@ export default (() => {
128
128
  });
129
129
  };
130
130
  return {
131
- version: "43.4.0",
131
+ version: "43.4.1",
132
132
  init(arg) {
133
133
  const target = arg instanceof HTMLElement ? arg : document, elements = target.querySelectorAll("[data-pagy]");
134
134
  for (const element of elements) {
@@ -5,7 +5,7 @@ class Pagy
5
5
  module Configurable
6
6
  # Deprecated: Sync the pagy javascript targets. Use sync(:javascripts, ...) instead.
7
7
  def sync_javascript(...)
8
- warn "[PAGY] 'Pagy.sync_javascript(...) is deprecated: use Pagy.sync(:javascript, ...) instead.'"
8
+ warn "[PAGY] 'Pagy.sync_javascript(...)' is deprecated: use 'Pagy.sync(:javascript, ...)' instead."
9
9
  sync(:javascript, ...)
10
10
  end
11
11
 
data/lib/pagy.rb CHANGED
@@ -10,7 +10,7 @@ require_relative 'pagy/toolbox/helpers/loaders'
10
10
  # Top superclass: it defines only what's common to all the subclasses
11
11
  # noinspection RubyMismatchedArgumentType
12
12
  class Pagy
13
- VERSION = '43.4.0'
13
+ VERSION = '43.4.1'
14
14
  ROOT = Pathname.new(__dir__).parent.freeze
15
15
  DEFAULT = { limit: 20, limit_key: 'limit', page_key: 'page' }.freeze
16
16
  PAGE_TOKEN = EscapedValue.new('P ')
@@ -33,7 +33,12 @@ class Pagy
33
33
  autoload :SyncTask, path.join('tasks/sync')
34
34
 
35
35
  OPTIONS = {} # rubocop:disable Style/MutableConstant
36
- def self.options = OPTIONS
36
+
37
+ def self.options
38
+ OPTIONS.tap do
39
+ warn "[PAGY] 'Pagy.options' is deprecated: use 'Pagy::OPTIONS directly'"
40
+ end
41
+ end
37
42
 
38
43
  extend Configurable
39
44
  include Linkable
data/sig/pagy.rbs CHANGED
@@ -5,11 +5,10 @@ class Pagy
5
5
  ROOT: Pathname
6
6
  OPTIONS: options
7
7
 
8
+ # @deprecated Use `Pagy::OPTIONS` instead
8
9
  def self.options: () -> options
9
10
 
10
- # Class method
11
-
12
- # @deprecated Use `sync(:javascripts, ...)` instead
11
+ # @deprecated Use `sync(:javascript, ...)` instead
13
12
  def self.sync_javascript: (String destination, *String targets) -> void
14
13
 
15
14
  def self.sync: (Symbol resource, String destination, *String targets) -> void
@@ -1,6 +1,4 @@
1
- @tailwind base;
2
- @tailwind components;
3
- @tailwind utilities;
1
+ @import "tailwindcss";
4
2
 
5
3
  @layer components {
6
4
  .pagy {
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pagy
3
3
  version: !ruby/object:Gem::Version
4
- version: 43.4.0
4
+ version: 43.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Domizio Demichelis