pagy 43.5.2 → 43.5.3
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 +4 -4
- data/apps/calendar.ru +1 -1
- data/apps/demo.ru +1 -1
- data/apps/enable_rails_page_segment.rb +7 -5
- data/apps/keynav+root_key.ru +1 -1
- data/apps/keynav.ru +1 -1
- data/apps/keyset.ru +1 -1
- data/apps/keyset_sequel.ru +1 -1
- data/apps/rails.ru +1 -1
- data/apps/repro.ru +1 -1
- data/config/pagy.rb +1 -1
- data/javascripts/pagy.js +3 -3
- data/javascripts/pagy.min.js +1 -1
- data/javascripts/pagy.mjs +1 -1
- data/lib/pagy/toolbox/helpers/anchor_tags.rb +0 -2
- data/lib/pagy/toolbox/helpers/data_hash.rb +1 -1
- data/lib/pagy/toolbox/helpers/loaders.rb +8 -5
- data/lib/pagy/toolbox/helpers/support/wrap_input_nav_js.rb +0 -1
- data/lib/pagy/toolbox/helpers/support/wrap_series_nav.rb +0 -2
- data/lib/pagy/toolbox/helpers/support/wrap_series_nav_js.rb +0 -2
- data/lib/pagy.rb +1 -1
- data/locales/hu.yml +24 -0
- metadata +2 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1c35aeaffd607e32783708abcf17acfb4f445c3f3bb1299659de9c88282a3820
|
|
4
|
+
data.tar.gz: 670bb45f33ee616706aef872399848484fd989a0eac6b00de3d9af81e5ee9229
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 12c184d91b6a3c17b946de268496920dc807523bde1ee2b945609782b8225638df072f15f08a3bd0f0524b077bfebd629eab53defd5ac4039d978df90000d94b
|
|
7
|
+
data.tar.gz: 8335bdb94801319e03c8d83729b3a240df64942b28d2968dbbb71dfe1a2ea48fe733aab47acf7b1a0897f8e8d0614386c3a562bcd70e5ca558a6333de5d910d6
|
data/apps/calendar.ru
CHANGED
data/apps/demo.ru
CHANGED
|
@@ -16,16 +16,18 @@
|
|
|
16
16
|
# config/routes.rb (example)
|
|
17
17
|
# get '/comments(/:page)', to: 'comments#index'
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
# Use plain Strings tokens instead of Pagy::EscapedValue strings
|
|
21
|
-
Pagy.send(:remove_const, :PAGE_TOKEN) ; Pagy::PAGE_TOKEN = '___PAGY_PAGE___'
|
|
22
|
-
Pagy.send(:remove_const, :LIMIT_TOKEN) ; Pagy::LIMIT_TOKEN = '___PAGY_LIMIT___'
|
|
23
|
-
|
|
24
19
|
# Require the pagy sources to override
|
|
25
20
|
require_relative '../lib/pagy/toolbox/paginators/method'
|
|
26
21
|
require_relative '../lib/pagy/modules/abilities/linkable'
|
|
27
22
|
|
|
28
23
|
class Pagy
|
|
24
|
+
# Use plain Strings tokens instead of Pagy::EscapedValue strings
|
|
25
|
+
remove_const(:PAGE_TOKEN)
|
|
26
|
+
PAGE_TOKEN = '___PAGY_PAGE___'
|
|
27
|
+
|
|
28
|
+
remove_const(:LIMIT_TOKEN)
|
|
29
|
+
LIMIT_TOKEN = '___PAGY_LIMIT___'
|
|
30
|
+
|
|
29
31
|
# Switch to the `request.params` to get access to rails-added path parameters
|
|
30
32
|
module RequestOverride
|
|
31
33
|
def get_params(request)
|
data/apps/keynav+root_key.ru
CHANGED
data/apps/keynav.ru
CHANGED
data/apps/keyset.ru
CHANGED
data/apps/keyset_sequel.ru
CHANGED
data/apps/rails.ru
CHANGED
data/apps/repro.ru
CHANGED
data/config/pagy.rb
CHANGED
data/javascripts/pagy.js
CHANGED
|
@@ -135,7 +135,7 @@ var pagy_default = (() => {
|
|
|
135
135
|
});
|
|
136
136
|
};
|
|
137
137
|
return {
|
|
138
|
-
version: "43.5.
|
|
138
|
+
version: "43.5.3",
|
|
139
139
|
init(arg) {
|
|
140
140
|
const target = arg instanceof HTMLElement ? arg : document, elements = target.querySelectorAll("[data-pagy]");
|
|
141
141
|
for (const element of elements) {
|
|
@@ -162,5 +162,5 @@ var pagy_default = (() => {
|
|
|
162
162
|
// pagy-shim.ts
|
|
163
163
|
window.Pagy = pagy_default;
|
|
164
164
|
|
|
165
|
-
//# debugId=
|
|
166
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsicGFneS50cyIsICJwYWd5LXNoaW0udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbCiAgICAiaW50ZXJmYWNlIFN5bmNEYXRhIHtcbiAgZnJvbT86IG51bWJlclxuICB0bz8gIDogbnVtYmVyXG4gIGtleSAgOiBzdHJpbmdcbiAgc3RyPyA6IHN0cmluZ1xufVxudHlwZSBJbml0QXJncyA9IFtcImtcIiwgIEtleW5hdkFyZ3NdIHwgICAgICAgICAgLy8gc2VyaWVzX25hdltfanNdIHdpdGgga2V5bmF2IGluc3RhbmNlXG4gICAgICAgICAgICAgICAgW1wic25qXCIsIFNlcmllc05hdkpzQXJnc10gfCAgICAvLyBzZXJpZXNfbmF2X2pzXG4gICAgICAgICAgICAgICAgW1wiaW5qXCIsIElucHV0TmF2SnNBcmdzXSB8ICAgICAvLyBpbnB1dF9uYXZfanNcbiAgICAgICAgICAgICAgICBbXCJsdGpcIiwgTGltaXRUYWdKc0FyZ3NdOyAgICAgIC8vIGxpbWl0X3RhZ19qc1xudHlwZSBBdWdtZW50S2V5bmF2ID0gKG5hdjpIVE1MRWxlbWVudCwga2V5bmF2QXJnczpLZXluYXZBcmdzKSA9PiBQcm9taXNlPCgocGFnZTogc3RyaW5nKSA9PiBzdHJpbmcpPjtcbnR5cGUgS2V5bmF2QXJncyA9IHJlYWRvbmx5IFtzdG9yYWdlS2V5IDogc3RyaW5nIHwgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb290S2V5ICAgIDogc3RyaW5nIHwgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlS2V5ICAgIDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgICAgICAgOiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BsaWNlQXJncz86IFNwbGljZUFyZ3NdO1xudHlwZSBTcGxpY2VBcmdzID0gcmVhZG9ubHkgW3N0YXJ0ICAgICAgOiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlQ291bnQ6IG51bWJlciwgICAgIC8vIGl0IHdvdWxkIGJlIG9wdGlvbmFsLCBidXQgdHMgY29tcGxhaW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uaXRlbXM6ICAgIEN1dG9mZltdXTtcbnR5cGUgQ3V0b2ZmID0gcmVhZG9ubHkgKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4pW107XG50eXBlIEF1Z21lbnRlZFBhZ2UgPSBbYnJvd3NlcklkICA6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlS2V5IDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgIHBhZ2VOdW1iZXIgOiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgcGFnZXMgICAgICA6IG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICBwcmlvckN1dG9mZjogQ3V0b2ZmIHwgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICBwYWdlQ3V0b2ZmIDogQ3V0b2ZmIHwgbnVsbF07XG50eXBlIFNlcmllc05hdkpzQXJncyA9IHJlYWRvbmx5IFtOYXZKc1Rva2VucywgcGFnZVRva2VuOiBzdHJpbmcsIE5hdkpzU2VyaWVzLCBLZXluYXZBcmdzP107XG50eXBlIE5hdkpzU2VyaWVzID0gcmVhZG9ubHkgW3dpZHRoczogbnVtYmVyW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmllczogKHN0cmluZyB8IG51bWJlcilbXVtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHM6IHN0cmluZ1tdW10gfCBudWxsXTtcbnR5cGUgSW5wdXROYXZKc0FyZ3MgPSByZWFkb25seSBbdXJsVG9rZW46ICBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VUb2tlbjogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLZXluYXZBcmdzP107XG50eXBlIExpbWl0VGFnSnNBcmdzID0gcmVhZG9ubHkgW2Zyb20gICAgICA6IG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsVG9rZW4gIDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlVG9rZW4gOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0VG9rZW46IHN0cmluZ107XG50eXBlIE5hdkpzVG9rZW5zID0gcmVhZG9ubHkgW2JlZm9yZSA6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5jaG9yIDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50OiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdhcCAgICA6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXIgIDogc3RyaW5nXTtcbmludGVyZmFjZSBOYXZKc0VsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7XG4gIHJlbmRlcigpOiB2b2lkXG59XG5cbi8vIFRoZSBzeW50YXggdXNlZCBpbiB0aGlzIGZpbGUgaGFzIGJlZW4gY2FyZWZ1bGx5IGNvbXBvc2VkIHRvIG1pbmltaXplXG4vLyB0aGUgcGFneS5taW4uanMgc2l6ZSBhbmQgYXZvaWQgcG9sbHV0aW9uIGluIHRoZSB3aW5kb3cgb2JqZWN0LlxuZXhwb3J0IGRlZmF1bHQgKCgpID0+IHtcbiAgY29uc3Qgc3RvcmFnZVN1cHBvcnQgPSAnc2Vzc2lvblN0b3JhZ2UnIGluIHdpbmRvdyAmJiAnQnJvYWRjYXN0Q2hhbm5lbCcgaW4gd2luZG93O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWNvbnN0XG4gIGxldCBwYWd5ID0gXCJwYWd5XCIsIHN0b3JhZ2U6IFN0b3JhZ2UsIHN5bmM6IEJyb2FkY2FzdENoYW5uZWwsIHRhYklkOiBudW1iZXI7XG4gIGlmIChzdG9yYWdlU3VwcG9ydCkge1xuICAgIHN0b3JhZ2UgPSBzZXNzaW9uU3RvcmFnZTsgLy8gc2hvcnRlbiB0aGUgY29tcGlsZWQgc2l6ZVxuICAgIHN5bmMgICAgPSBuZXcgQnJvYWRjYXN0Q2hhbm5lbChwYWd5KTtcbiAgICB0YWJJZCAgID0gRGF0ZS5ub3coKTtcblxuICAgIC8vIFN5bmMgdGhlIHNlc3Npb25TdG9yYWdlIGtleXMgZm9yIHRoZSBjdXRvZmZzIG9wZW5lZCBpbiBhIG5ldyB0YWIvd2luZG93XG4gICAgc3luYy5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCAoZTpNZXNzYWdlRXZlbnQ8U3luY0RhdGE+KSA9PiB7XG4gICAgICBpZiAoZS5kYXRhLmZyb20pIHsgLy8gcmVxdWVzdCBjdXRvZmZzXG4gICAgICAgIGNvbnN0IGN1dG9mZnMgPSBzdG9yYWdlLmdldEl0ZW0oZS5kYXRhLmtleSk7XG4gICAgICAgIGlmIChjdXRvZmZzKSB7XG4gICAgICAgICAgc3luYy5wb3N0TWVzc2FnZSg8U3luY0RhdGE+e3RvOiBlLmRhdGEuZnJvbSwga2V5OiBlLmRhdGEua2V5LCBzdHI6IGN1dG9mZnN9KTtcbiAgICAgICAgfSAvLyBzZW5kIHJlc3BvbnNlXG4gICAgICB9IGVsc2UgaWYgKGUuZGF0YS50bykgeyAgLy8gcmVjZWl2ZSBjdXRvZmZzXG4gICAgICAgIGlmIChlLmRhdGEudG8gPT0gdGFiSWQpIHtcbiAgICAgICAgICBzdG9yYWdlLnNldEl0ZW0oZS5kYXRhLmtleSwgPHN0cmluZz5lLmRhdGEuc3RyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIC8vIFRoZSBvYnNlcnZlciBpbnN0YW5jZSBmb3IgcmVzcG9uc2l2ZSBuYXZzXG4gIGNvbnN0IHJqc09ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKGVudHJpZXMgPT4ge1xuICAgIGVudHJpZXMuZm9yRWFjaChlID0+IHtcbiAgICAgIGUudGFyZ2V0LnF1ZXJ5U2VsZWN0b3JBbGw8TmF2SnNFbGVtZW50PihcIi5zZXJpZXMtbmF2LWpzXCIpLmZvckVhY2goZWwgPT4ge1xuICAgICAgICBlbC5yZW5kZXIoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICAvKiBGdWxsIHNldCBvZiBCNjQgZnVuY3Rpb25zXG4gIGNvbnN0IEI2NEVuY29kZSAgICAgPSAodW5pY29kZTpzdHJpbmcpID0+IGJ0b2EoU3RyaW5nLmZyb21DaGFyQ29kZSguLi4obmV3IFRleHRFbmNvZGVyKS5lbmNvZGUodW5pY29kZSkpKSxcbiAgICAgICAgQjY0U2FmZSAgICAgICA9ICh1bnNhZmU6c3RyaW5nKSAgPT4gdW5zYWZlLnJlcGxhY2UoL1srLz1dL2csIChtKSA9PiBtID09IFwiK1wiID8gXCItXCIgOiBtID09IFwiL1wiID8gXCJfXCIgOiBcIlwiKSxcbiAgICAgICAgQjY0U2FmZUVuY29kZSA9ICh1bmljb2RlOnN0cmluZykgPT4gQjY0U2FmZShCNjRFbmNvZGUodW5pY29kZSkpLFxuICAgICAgICBCNjREZWNvZGUgICAgID0gKGJhc2U2NDpzdHJpbmcpICA9PiAobmV3IFRleHREZWNvZGVyKCkpLmRlY29kZShVaW50OEFycmF5LmZyb20oYXRvYihiYXNlNjQpLCBjID0+IGMuY2hhckNvZGVBdCgwKSkpLFxuICAgICAgICBCNjRVbnNhZmUgICAgID0gKHNhZmU6c3RyaW5nKSAgICA9PiBzYWZlLnJlcGxhY2UoL1stX10vZywgKG1hdGNoKSA9PiBtYXRjaCA9PSBcIi1cIiA/IFwiK1wiIDogXCIvXCIpLFxuICAgICAgICBCNjRTYWZlRGVjb2RlID0gKGJhc2U2NDpzdHJpbmcpICA9PiBCNjREZWNvZGUoQjY0VW5zYWZlKGJhc2U2NCkpXG4gICovXG4gIGNvbnN0IEI2NFNhZmVFbmNvZGUgPSAodW5pY29kZTpzdHJpbmcpID0+IGJ0b2EoU3RyaW5nLmZyb21DaGFyQ29kZSguLi4obmV3IFRleHRFbmNvZGVyKS5lbmNvZGUodW5pY29kZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1srLz1dL2csIChtKSA9PiBtID09IFwiK1wiID8gXCItXCIgOiBtID09IFwiL1wiID8gXCJfXCIgOiBcIlwiKSxcbiAgICAgICAgQjY0RGVjb2RlICAgICA9IChiYXNlNjQ6c3RyaW5nKSAgPT4gKG5ldyBUZXh0RGVjb2RlcigpKS5kZWNvZGUoVWludDhBcnJheS5mcm9tKGF0b2IoYmFzZTY0KSwgYyA9PiBjLmNoYXJDb2RlQXQoMCkpKTtcblxuICAvLyBSZXR1cm4gYSByYW5kb20ga2V5OiAzIGNoYXJzIG1heCwgYmFzZS0zNiBudW1iZXIgPCAzNioqM1xuICBjb25zdCByYW5kS2V5ID0gKCkgPT4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMzYgKiogMykudG9TdHJpbmcoMzYpO1xuXG4gIC8vIE1hbmFnZSB0aGUgcGFnZSBhdWdtZW50YXRpb24gZm9yIEtleW5hdiwgY2FsbGVkIG9ubHkgaWYgc3RvcmFnZVN1cHBvcnRcbiAgY29uc3QgYXVnbWVudEtleW5hdjogQXVnbWVudEtleW5hdiA9IGFzeW5jIChuYXYsIFtzdG9yYWdlS2V5LCByb290S2V5LCBwYWdlS2V5LCBsYXN0LCBzcGxpY2VBcmdzXSkgPT4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBhbGlnbi1hc3NpZ25tZW50cy9hbGlnbi1hc3NpZ25tZW50c1xuICAgIGxldCBhdWdtZW50UGFnZTogKHBhZ2U6IHN0cmluZykgPT4gc3RyaW5nO1xuICAgIGNvbnN0IGJyb3dzZXJLZXkgPSBkb2N1bWVudC5jb29raWUuc3BsaXQoLztcXHMrLykgIC8vIGl0IHdvcmtzIGV2ZW4gaWYgbWFsZm9ybWVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoKHJvdykgPT4gcm93LnN0YXJ0c1dpdGgocGFneSArIFwiPVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LnNwbGl0KFwiPVwiKVsxXSA/PyByYW5kS2V5KCk7XG4gICAgZG9jdW1lbnQuY29va2llICA9IGAke3BhZ3l9PSR7YnJvd3NlcktleX1gOyAgLy8gU21hbGxlciAubWluIHNpemU6IHNldCB0aGUgY29va2llIHdpdGhvdXQgY2hlY2tpbmdcbiAgICBpZiAoc3RvcmFnZUtleSAmJiAhKHN0b3JhZ2VLZXkgaW4gc3RvcmFnZSkpIHtcbiAgICAgIC8vIFN5bmMgdGhlIHNlc3Npb25nU3RvcmFnZSBmcm9tIG90aGVyIHRhYnMvd2luZG93cyAoZS5nLiwgb3BlbiBwYWdlIGluIHRoZSBuZXcgdGFiL3dpbmRvdylcbiAgICAgIHN5bmMucG9zdE1lc3NhZ2UoPFN5bmNEYXRhPnsgZnJvbTogdGFiSWQsIGtleTogc3RvcmFnZUtleSB9KTtcbiAgICAgIC8vIFdhaXQgZm9yIHRoZSBsaXN0ZW5lciB0byBjb3B5IHRoZSBjdXRvZmZzIGluIHRoZSBjdXJyZW50IHNlc3Npb25TdG9yYWdlXG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZTxzdHJpbmd8bnVsbD4oKHJlc29sdmUpID0+IHNldFRpbWVvdXQoKCkgPT4geyByZXNvbHZlKFwiXCIpIH0sIDEwMCkpO1xuICAgICAgaWYgKCEoc3RvcmFnZUtleSBpbiBzdG9yYWdlKSkgeyAvLyB0aGUgc3RvcmFnZUtleSBkaWRuJ3QgZ2V0IGNvcGllZDogZmFsbGJhY2sgdG8gY291bnRsZXNzIHBhZ2luYXRpb25cbiAgICAgICAgYXVnbWVudFBhZ2UgPSAocGFnZTogc3RyaW5nKSA9PiBgJHtwYWdlfSske1N0cmluZyhsYXN0KX1gOyAgICAgIH1cbiAgICB9XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBJZiBpdCBpcyBub3QgYXNzaWduZWQgaXQgbWVhbnMgaXQgc3VwcG9ydHMga2V5bmF2XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS1jb25kaXRpb25cbiAgICBpZiAoIWF1Z21lbnRQYWdlKSB7IC8vIHJlZ3VsYXIga2V5bmF2IHBhZ2luYXRpb25cbiAgICAgIGlmICghc3RvcmFnZUtleSkgeyBkbyB7IHN0b3JhZ2VLZXkgPSByYW5kS2V5KCkgfSB3aGlsZSAoc3RvcmFnZUtleSBpbiBzdG9yYWdlKSB9IC8vIG5vIGR1cCBrZXlzXG4gICAgICBjb25zdCBkYXRhID0gc3RvcmFnZS5nZXRJdGVtKHN0b3JhZ2VLZXkpLFxuICAgICAgICAgIGN1dG9mZnMgPSA8Q3V0b2ZmW10+KGRhdGEgPyBKU09OLnBhcnNlKGRhdGEpIDogW3VuZGVmaW5lZF0pO1xuICAgICAgaWYgKHNwbGljZUFyZ3MpIHtcbiAgICAgICAgY3V0b2Zmcy5zcGxpY2UoLi4uc3BsaWNlQXJncyk7XG4gICAgICAgIHN0b3JhZ2Uuc2V0SXRlbShzdG9yYWdlS2V5LCBKU09OLnN0cmluZ2lmeShjdXRvZmZzKSk7XG4gICAgICB9XG4gICAgICAvLyBBdWdtZW50IGZ1bmN0aW9uXG4gICAgICBhdWdtZW50UGFnZSA9IChwYWdlOnN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBwYWdlTnVtID0gcGFyc2VJbnQocGFnZSk7XG4gICAgICAgIHJldHVybiBCNjRTYWZlRW5jb2RlKEpTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgPEF1Z21lbnRlZFBhZ2U+W2Jyb3dzZXJLZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZUtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlTnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1dG9mZnMubGVuZ3RoLCAgICAgICAvLyBwYWdlcy9sYXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3V0b2Zmc1twYWdlTnVtIC0gMV0sIC8vIHByaW9yQ3V0b2ZmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3V0b2Zmc1twYWdlTnVtXV0pKTsgIC8vIHBhZ2VDdXRvZmZcbiAgICAgIH07XG4gICAgfVxuICAgIGNvbnN0IHNlYXJjaCA9IChyb290S2V5KSA/IGAke3Jvb3RLZXl9JTVCJHtwYWdlS2V5fSU1RGAgOiBwYWdlS2V5O1xuICAgIGNvbnN0IHJlICAgICA9IG5ldyBSZWdFeHAoYCg/PD1cXFxcPy4qKShcXFxcYiR7c2VhcmNofT0pKFxcXFxkKylgKTtcbiAgICAvLyBBdWdtZW50IHRoZSBwYWdlIHBhcmFtIG9mIGVhY2ggaHJlZlxuICAgIGZvciAoY29uc3QgYSBvZiA8Tm9kZUxpc3RPZjxIVE1MQW5jaG9yRWxlbWVudD4+PHVua25vd24+bmF2LnF1ZXJ5U2VsZWN0b3JBbGwoJ2FbaHJlZl0nKSkge1xuICAgICAgYS5ocmVmID0gYS5ocmVmLnJlcGxhY2UocmUsIChfbWF0Y2gsIHByZWZpeCwgZGlnaXQpOiBzdHJpbmcgPT4gYCR7U3RyaW5nKHByZWZpeCl9JHthdWdtZW50UGFnZSg8c3RyaW5nPmRpZ2l0KX1gKTtcbiAgICB9XG4gICAgLy8gUmV0dXJuIHRoZSBhdWdtZW50IGZ1bmN0aW9uIGZvciBmdXJ0aGVyIGF1Z21lbnRhdGlvbiAoaS5lLiwgdXJsIHRva2VuIGluIGlucHV0X25hdl9qcylcbiAgICByZXR1cm4gYXVnbWVudFBhZ2U7XG4gIH07XG5cbiAgLy8gQnVpbGQgdGhlIHNlcmllc19uYXZfanMgaGVscGVyXG4gIGNvbnN0IGJ1aWxkTmF2SnMgPSAobmF2Ok5hdkpzRWxlbWVudCwgW1tiZWZvcmUsIGFuY2hvciwgY3VycmVudCwgZ2FwLCBhZnRlcl0sIHBhZ2VUb2tlbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbd2lkdGhzLCBzZXJpZXMsIGxhYmVsc10sIGtleW5hdkFyZ3NdOlNlcmllc05hdkpzQXJncykgPT4ge1xuICAgIGxldCBsYXN0V2lkdGggPSAtMTtcbiAgICBjb25zdCBwYXJlbnQgID0gPEhUTUxFbGVtZW50Pm5hdi5wYXJlbnRFbGVtZW50O1xuXG4gICAgbmF2LnJlbmRlciA9ICgpID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ID0gd2lkdGhzLmZpbmRJbmRleCh3ID0+IHcgPCBwYXJlbnQuY2xpZW50V2lkdGgpO1xuICAgICAgaWYgKGluZGV4ID09PSAtMSB8fCB3aWR0aHNbaW5kZXhdID09PSBsYXN0V2lkdGgpIHsgcmV0dXJuIH1cblxuICAgICAgbGV0IGh0bWwgPSBiZWZvcmU7XG4gICAgICBzZXJpZXNbaW5kZXhdLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcbiAgICAgICAgLy8gQXZvaWQgdGhlIGlmIGJsb2NrcyBhbmQgY2hhaW4gdGhlIHJlc3VsdHMgKHNob3J0ZXIgcGFneS5taW4uanMgYW5kIGVhc2llciByZWFkaW5nKVxuICAgICAgICBodG1sICs9IGl0ZW0gPT0gXCJnYXBcIiA/IGdhcCA6XG4gICAgICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciB0aGUgaXRlbSBtYXkgYmUgYSBudW1iZXIsIGJ1dCB0aGUgJ3JlcGxhY2UnIGNvbnZlcnRzIGl0IHRvIHN0cmluZyAoc2hvcnRlciBwYWd5Lm1pbi5qcylcbiAgICAgICAgICAgICAgICAodHlwZW9mIGl0ZW0gPT0gXCJudW1iZXJcIiA/IGFuY2hvci5yZXBsYWNlKHBhZ2VUb2tlbiwgaXRlbSkgOiBjdXJyZW50KVxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZShcIkw8XCIsIGxhYmVscz8uW2luZGV4XVtpXSA/PyBgJHtTdHJpbmcoaXRlbSl9PGApO1xuICAgICAgfSk7XG4gICAgICBodG1sICAgICAgICAgKz0gYWZ0ZXI7XG4gICAgICBuYXYuaW5uZXJIVE1MID0gXCJcIjtcbiAgICAgIG5hdi5pbnNlcnRBZGphY2VudEhUTUwoXCJhZnRlcmJlZ2luXCIsIGh0bWwpO1xuICAgICAgbGFzdFdpZHRoID0gd2lkdGhzW2luZGV4XTtcbiAgICAgIGlmIChrZXluYXZBcmdzICYmIHN0b3JhZ2VTdXBwb3J0KSB7IHZvaWQgYXVnbWVudEtleW5hdihuYXYsIGtleW5hdkFyZ3MpIH1cbiAgICB9O1xuXG4gICAgcmpzT2JzZXJ2ZXIub2JzZXJ2ZShwYXJlbnQpO1xuICB9O1xuXG4gIC8vIEluaXQgdGhlIGlucHV0X25hdl9qcyBoZWxwZXJzXG4gIGNvbnN0IGluaXRJbnB1dE5hdkpzID0gYXN5bmMgKG5hdjpIVE1MRWxlbWVudCwgW3VybF90b2tlbiwgcGFnZVRva2VuLCBrZXluYXZBcmdzXTpJbnB1dE5hdkpzQXJncykgPT4ge1xuICAgIGNvbnN0IGF1Z21lbnQgPSBrZXluYXZBcmdzICYmIHN0b3JhZ2VTdXBwb3J0XG4gICAgICAgICAgICAgICAgICAgID8gYXdhaXQgYXVnbWVudEtleW5hdihuYXYsIGtleW5hdkFyZ3MpXG4gICAgICAgICAgICAgICAgICAgIDogKHBhZ2U6IHN0cmluZykgPT4gcGFnZTtcbiAgICBpbml0SW5wdXQobmF2LCBpbnB1dFZhbHVlID0+IHVybF90b2tlbi5yZXBsYWNlKHBhZ2VUb2tlbiwgYXVnbWVudChpbnB1dFZhbHVlKSkpO1xuICB9O1xuXG4gIC8vIEluaXQgdGhlIGxpbWl0X3RhZ19qcyBoZWxwZXJcbiAgY29uc3QgaW5pdExpbWl0VGFnSnMgPSAoc3BhbjpIVE1MU3BhbkVsZW1lbnQsIFtmcm9tLCB1cmxfdG9rZW4sIHBhZ2VfdG9rZW4sIGxpbWl0VG9rZW5dOkxpbWl0VGFnSnNBcmdzKSA9PiB7XG4gICAgaW5pdElucHV0KHNwYW4sIGlucHV0VmFsdWUgPT4ge1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciB0aGUgcGFnZSBpcyBhIG51bWJlciwgYnV0IHRoZSAncmVwbGFjZScgY29udmVydHMgaXQgdG8gc3RyaW5nIChzaG9ydGVyIHBhZ3kubWluLmpzKVxuICAgICAgcmV0dXJuIHVybF90b2tlbi5yZXBsYWNlKHBhZ2VfdG9rZW4sIE1hdGgubWF4KE1hdGguY2VpbChmcm9tIC8gcGFyc2VJbnQoaW5wdXRWYWx1ZSkpLCAxKSlcbiAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZShsaW1pdFRva2VuLCBpbnB1dFZhbHVlKTtcbiAgICB9KTtcbiAgfTtcblxuICAvLyBJbml0IHRoZSBpbnB1dCBlbGVtZW50XG4gIGNvbnN0IGluaXRJbnB1dCA9IChlbGVtZW50OkhUTUxFbGVtZW50LCBnZXRVcmw6KHY6c3RyaW5nKSA9PiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBpbnB1dCAgID0gPEhUTUxJbnB1dEVsZW1lbnQ+ZWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiaW5wdXRcIiksXG4gICAgICAgICAgbGluayAgICA9IDxIVE1MQW5jaG9yRWxlbWVudD5lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCJhXCIpO1xuICAgIGxldCAgIGluaXRpYWwgPSBpbnB1dC52YWx1ZTtcbiAgICBjb25zdCBhY3Rpb24gID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC52YWx1ZSA9PT0gaW5pdGlhbCkgeyByZXR1cm4gfSAgLy8gbm90IGNoYW5nZWRcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBbbWluLCB2YWwsIG1heF0gPSBbaW5wdXQubWluLCBpbnB1dC52YWx1ZSwgaW5wdXQubWF4XS5tYXAobiA9PiBwYXJzZUludChuKSB8fCAwKTtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsIDwgbWluIHx8IHZhbCA+IG1heCkgeyAgLy8gcmVzZXQgaW52YWxpZC9vdXQtb2YtcmFuZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LnZhbHVlID0gaW5pdGlhbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LnNlbGVjdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsICAgPSBpbnB1dC52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICBsaW5rLmhyZWYgPSBnZXRVcmwoaW5wdXQudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgIGxpbmsuY2xpY2soKTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKFwiZm9jdXNcIiwgKCkgPT4geyBpbnB1dC5zZWxlY3QoKSB9KTtcbiAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKFwiZm9jdXNvdXRcIiwgYWN0aW9uKTtcbiAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKFwia2V5cHJlc3NcIiwgZSA9PiB7IGlmIChlLmtleSA9PSBcIkVudGVyXCIpIHsgYWN0aW9uKCkgfSB9KTtcbiAgfTtcblxuICAvLyBQdWJsaWMgaW50ZXJmYWNlXG4gIHJldHVybiB7XG4gICAgdmVyc2lvbjogXCI0My41LjJcIixcblxuICAgIC8vIFNjYW4gZm9yIGVsZW1lbnRzIHdpdGggYSBcImRhdGEtcGFneVwiIGF0dHJpYnV0ZSBhbmQgY2FsbCB0aGVpciBpbml0IGZ1bmN0aW9ucyB3aXRoIHRoZSBkZWNvZGVkIGFyZ3NcbiAgICBpbml0KGFyZz86SFRNTEVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGFyZyBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ID8gYXJnIDogZG9jdW1lbnQsXG4gICAgICAgICAgICBlbGVtZW50cyA9IHRhcmdldC5xdWVyeVNlbGVjdG9yQWxsKFwiW2RhdGEtcGFneV1cIik7XG4gICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgPE5vZGVMaXN0T2Y8SFRNTEVsZW1lbnQ+PmVsZW1lbnRzKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgW2hlbHBlcklkLCAuLi5hcmdzXSA9IDxJbml0QXJncz5KU09OLnBhcnNlKEI2NERlY29kZSg8c3RyaW5nPmVsZW1lbnQuZ2V0QXR0cmlidXRlKFwiZGF0YS1wYWd5XCIpKSk7XG4gICAgICAgICAgaWYgKGhlbHBlcklkID09IFwia1wiKSB7XG4gICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIHNwcmVhZCAyIGFyZ3VtZW50cywgbm90IDMgYXMgaXQgY29tcGxhaW5zIGFib3V0XG4gICAgICAgICAgICB2b2lkIGF1Z21lbnRLZXluYXYoZWxlbWVudCwgLi4uPEtleW5hdkFyZ3M+PHVua25vd24+YXJncyk7XG4gICAgICAgICAgfSBlbHNlIGlmIChoZWxwZXJJZCA9PSBcInNualwiKSB7XG4gICAgICAgICAgICBidWlsZE5hdkpzKDxOYXZKc0VsZW1lbnQ+ZWxlbWVudCwgPFNlcmllc05hdkpzQXJncz48dW5rbm93bj5hcmdzKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGhlbHBlcklkID09IFwiaW5qXCIpIHtcbiAgICAgICAgICAgIHZvaWQgaW5pdElucHV0TmF2SnMoZWxlbWVudCwgPElucHV0TmF2SnNBcmdzPjx1bmtub3duPmFyZ3MpO1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS1jb25kaXRpb25cbiAgICAgICAgICB9IGVsc2UgaWYgKGhlbHBlcklkID09IFwibHRqXCIpIHtcbiAgICAgICAgICAgIGluaXRMaW1pdFRhZ0pzKGVsZW1lbnQsIDxMaW1pdFRhZ0pzQXJncz48dW5rbm93bj5hcmdzKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gZWxzZSB7IGNvbnNvbGUud2FybihcIlBhZ3kuaW5pdDogJW9cXG5Vbmtub3duIGhlbHBlcklkICclcydcIiwgZWxlbWVudCwgaGVscGVySWQpIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7IGNvbnNvbGUud2FybihcIlBhZ3kuaW5pdDogJW9cXG4lc1wiLCBlbGVtZW50LCBlcnIpIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG59KSgpO1xuIiwKICAgICJpbXBvcnQgUGFneSBmcm9tIFwiLi9wYWd5LnRzXCJcbndpbmRvdy5QYWd5ID0gUGFneVxuIgogIF0sCiAgIm1hcHBpbmdzIjogIjtBQWdEQSxJQUFnQixzQkFBTTtBQUFBLEVBQ3BCLE1BQU0saUJBQWlCLG9CQUFvQixVQUFVLHNCQUFzQjtBQUFBLEVBRTNFLElBQUksT0FBTyxRQUFRLFNBQWtCLE1BQXdCO0FBQUEsRUFDN0QsSUFBSSxnQkFBZ0I7QUFBQSxJQUNsQixVQUFVO0FBQUEsSUFDVixPQUFVLElBQUksaUJBQWlCLElBQUk7QUFBQSxJQUNuQyxRQUFVLEtBQUssSUFBSTtBQUFBLElBR25CLEtBQUssaUJBQWlCLFdBQVcsQ0FBQyxNQUE2QjtBQUFBLE1BQzdELElBQUksRUFBRSxL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
|
|
165
|
+
//# debugId=C51CA3C3B35EC31364756E2164756E21
|
|
166
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsicGFneS50cyIsICJwYWd5LXNoaW0udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbCiAgICAiaW50ZXJmYWNlIFN5bmNEYXRhIHtcbiAgZnJvbT86IG51bWJlclxuICB0bz8gIDogbnVtYmVyXG4gIGtleSAgOiBzdHJpbmdcbiAgc3RyPyA6IHN0cmluZ1xufVxudHlwZSBJbml0QXJncyA9IFtcImtcIiwgIEtleW5hdkFyZ3NdIHwgICAgICAgICAgLy8gc2VyaWVzX25hdltfanNdIHdpdGgga2V5bmF2IGluc3RhbmNlXG4gICAgICAgICAgICAgICAgW1wic25qXCIsIFNlcmllc05hdkpzQXJnc10gfCAgICAvLyBzZXJpZXNfbmF2X2pzXG4gICAgICAgICAgICAgICAgW1wiaW5qXCIsIElucHV0TmF2SnNBcmdzXSB8ICAgICAvLyBpbnB1dF9uYXZfanNcbiAgICAgICAgICAgICAgICBbXCJsdGpcIiwgTGltaXRUYWdKc0FyZ3NdOyAgICAgIC8vIGxpbWl0X3RhZ19qc1xudHlwZSBBdWdtZW50S2V5bmF2ID0gKG5hdjpIVE1MRWxlbWVudCwga2V5bmF2QXJnczpLZXluYXZBcmdzKSA9PiBQcm9taXNlPCgocGFnZTogc3RyaW5nKSA9PiBzdHJpbmcpPjtcbnR5cGUgS2V5bmF2QXJncyA9IHJlYWRvbmx5IFtzdG9yYWdlS2V5IDogc3RyaW5nIHwgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb290S2V5ICAgIDogc3RyaW5nIHwgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlS2V5ICAgIDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgICAgICAgOiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BsaWNlQXJncz86IFNwbGljZUFyZ3NdO1xudHlwZSBTcGxpY2VBcmdzID0gcmVhZG9ubHkgW3N0YXJ0ICAgICAgOiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlQ291bnQ6IG51bWJlciwgICAgIC8vIGl0IHdvdWxkIGJlIG9wdGlvbmFsLCBidXQgdHMgY29tcGxhaW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uaXRlbXM6ICAgIEN1dG9mZltdXTtcbnR5cGUgQ3V0b2ZmID0gcmVhZG9ubHkgKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4pW107XG50eXBlIEF1Z21lbnRlZFBhZ2UgPSBbYnJvd3NlcklkICA6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlS2V5IDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgIHBhZ2VOdW1iZXIgOiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgcGFnZXMgICAgICA6IG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICBwcmlvckN1dG9mZjogQ3V0b2ZmIHwgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICBwYWdlQ3V0b2ZmIDogQ3V0b2ZmIHwgbnVsbF07XG50eXBlIFNlcmllc05hdkpzQXJncyA9IHJlYWRvbmx5IFtOYXZKc1Rva2VucywgcGFnZVRva2VuOiBzdHJpbmcsIE5hdkpzU2VyaWVzLCBLZXluYXZBcmdzP107XG50eXBlIE5hdkpzU2VyaWVzID0gcmVhZG9ubHkgW3dpZHRoczogbnVtYmVyW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmllczogKHN0cmluZyB8IG51bWJlcilbXVtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHM6IHN0cmluZ1tdW10gfCBudWxsXTtcbnR5cGUgSW5wdXROYXZKc0FyZ3MgPSByZWFkb25seSBbdXJsVG9rZW46ICBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VUb2tlbjogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLZXluYXZBcmdzP107XG50eXBlIExpbWl0VGFnSnNBcmdzID0gcmVhZG9ubHkgW2Zyb20gICAgICA6IG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsVG9rZW4gIDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlVG9rZW4gOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0VG9rZW46IHN0cmluZ107XG50eXBlIE5hdkpzVG9rZW5zID0gcmVhZG9ubHkgW2JlZm9yZSA6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5jaG9yIDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50OiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdhcCAgICA6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXIgIDogc3RyaW5nXTtcbmludGVyZmFjZSBOYXZKc0VsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7XG4gIHJlbmRlcigpOiB2b2lkXG59XG5cbi8vIFRoZSBzeW50YXggdXNlZCBpbiB0aGlzIGZpbGUgaGFzIGJlZW4gY2FyZWZ1bGx5IGNvbXBvc2VkIHRvIG1pbmltaXplXG4vLyB0aGUgcGFneS5taW4uanMgc2l6ZSBhbmQgYXZvaWQgcG9sbHV0aW9uIGluIHRoZSB3aW5kb3cgb2JqZWN0LlxuZXhwb3J0IGRlZmF1bHQgKCgpID0+IHtcbiAgY29uc3Qgc3RvcmFnZVN1cHBvcnQgPSAnc2Vzc2lvblN0b3JhZ2UnIGluIHdpbmRvdyAmJiAnQnJvYWRjYXN0Q2hhbm5lbCcgaW4gd2luZG93O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWNvbnN0XG4gIGxldCBwYWd5ID0gXCJwYWd5XCIsIHN0b3JhZ2U6IFN0b3JhZ2UsIHN5bmM6IEJyb2FkY2FzdENoYW5uZWwsIHRhYklkOiBudW1iZXI7XG4gIGlmIChzdG9yYWdlU3VwcG9ydCkge1xuICAgIHN0b3JhZ2UgPSBzZXNzaW9uU3RvcmFnZTsgLy8gc2hvcnRlbiB0aGUgY29tcGlsZWQgc2l6ZVxuICAgIHN5bmMgICAgPSBuZXcgQnJvYWRjYXN0Q2hhbm5lbChwYWd5KTtcbiAgICB0YWJJZCAgID0gRGF0ZS5ub3coKTtcblxuICAgIC8vIFN5bmMgdGhlIHNlc3Npb25TdG9yYWdlIGtleXMgZm9yIHRoZSBjdXRvZmZzIG9wZW5lZCBpbiBhIG5ldyB0YWIvd2luZG93XG4gICAgc3luYy5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCAoZTpNZXNzYWdlRXZlbnQ8U3luY0RhdGE+KSA9PiB7XG4gICAgICBpZiAoZS5kYXRhLmZyb20pIHsgLy8gcmVxdWVzdCBjdXRvZmZzXG4gICAgICAgIGNvbnN0IGN1dG9mZnMgPSBzdG9yYWdlLmdldEl0ZW0oZS5kYXRhLmtleSk7XG4gICAgICAgIGlmIChjdXRvZmZzKSB7XG4gICAgICAgICAgc3luYy5wb3N0TWVzc2FnZSg8U3luY0RhdGE+e3RvOiBlLmRhdGEuZnJvbSwga2V5OiBlLmRhdGEua2V5LCBzdHI6IGN1dG9mZnN9KTtcbiAgICAgICAgfSAvLyBzZW5kIHJlc3BvbnNlXG4gICAgICB9IGVsc2UgaWYgKGUuZGF0YS50bykgeyAgLy8gcmVjZWl2ZSBjdXRvZmZzXG4gICAgICAgIGlmIChlLmRhdGEudG8gPT0gdGFiSWQpIHtcbiAgICAgICAgICBzdG9yYWdlLnNldEl0ZW0oZS5kYXRhLmtleSwgPHN0cmluZz5lLmRhdGEuc3RyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIC8vIFRoZSBvYnNlcnZlciBpbnN0YW5jZSBmb3IgcmVzcG9uc2l2ZSBuYXZzXG4gIGNvbnN0IHJqc09ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKGVudHJpZXMgPT4ge1xuICAgIGVudHJpZXMuZm9yRWFjaChlID0+IHtcbiAgICAgIGUudGFyZ2V0LnF1ZXJ5U2VsZWN0b3JBbGw8TmF2SnNFbGVtZW50PihcIi5zZXJpZXMtbmF2LWpzXCIpLmZvckVhY2goZWwgPT4ge1xuICAgICAgICBlbC5yZW5kZXIoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICAvKiBGdWxsIHNldCBvZiBCNjQgZnVuY3Rpb25zXG4gIGNvbnN0IEI2NEVuY29kZSAgICAgPSAodW5pY29kZTpzdHJpbmcpID0+IGJ0b2EoU3RyaW5nLmZyb21DaGFyQ29kZSguLi4obmV3IFRleHRFbmNvZGVyKS5lbmNvZGUodW5pY29kZSkpKSxcbiAgICAgICAgQjY0U2FmZSAgICAgICA9ICh1bnNhZmU6c3RyaW5nKSAgPT4gdW5zYWZlLnJlcGxhY2UoL1srLz1dL2csIChtKSA9PiBtID09IFwiK1wiID8gXCItXCIgOiBtID09IFwiL1wiID8gXCJfXCIgOiBcIlwiKSxcbiAgICAgICAgQjY0U2FmZUVuY29kZSA9ICh1bmljb2RlOnN0cmluZykgPT4gQjY0U2FmZShCNjRFbmNvZGUodW5pY29kZSkpLFxuICAgICAgICBCNjREZWNvZGUgICAgID0gKGJhc2U2NDpzdHJpbmcpICA9PiAobmV3IFRleHREZWNvZGVyKCkpLmRlY29kZShVaW50OEFycmF5LmZyb20oYXRvYihiYXNlNjQpLCBjID0+IGMuY2hhckNvZGVBdCgwKSkpLFxuICAgICAgICBCNjRVbnNhZmUgICAgID0gKHNhZmU6c3RyaW5nKSAgICA9PiBzYWZlLnJlcGxhY2UoL1stX10vZywgKG1hdGNoKSA9PiBtYXRjaCA9PSBcIi1cIiA/IFwiK1wiIDogXCIvXCIpLFxuICAgICAgICBCNjRTYWZlRGVjb2RlID0gKGJhc2U2NDpzdHJpbmcpICA9PiBCNjREZWNvZGUoQjY0VW5zYWZlKGJhc2U2NCkpXG4gICovXG4gIGNvbnN0IEI2NFNhZmVFbmNvZGUgPSAodW5pY29kZTpzdHJpbmcpID0+IGJ0b2EoU3RyaW5nLmZyb21DaGFyQ29kZSguLi4obmV3IFRleHRFbmNvZGVyKS5lbmNvZGUodW5pY29kZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1srLz1dL2csIChtKSA9PiBtID09IFwiK1wiID8gXCItXCIgOiBtID09IFwiL1wiID8gXCJfXCIgOiBcIlwiKSxcbiAgICAgICAgQjY0RGVjb2RlICAgICA9IChiYXNlNjQ6c3RyaW5nKSAgPT4gKG5ldyBUZXh0RGVjb2RlcigpKS5kZWNvZGUoVWludDhBcnJheS5mcm9tKGF0b2IoYmFzZTY0KSwgYyA9PiBjLmNoYXJDb2RlQXQoMCkpKTtcblxuICAvLyBSZXR1cm4gYSByYW5kb20ga2V5OiAzIGNoYXJzIG1heCwgYmFzZS0zNiBudW1iZXIgPCAzNioqM1xuICBjb25zdCByYW5kS2V5ID0gKCkgPT4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMzYgKiogMykudG9TdHJpbmcoMzYpO1xuXG4gIC8vIE1hbmFnZSB0aGUgcGFnZSBhdWdtZW50YXRpb24gZm9yIEtleW5hdiwgY2FsbGVkIG9ubHkgaWYgc3RvcmFnZVN1cHBvcnRcbiAgY29uc3QgYXVnbWVudEtleW5hdjogQXVnbWVudEtleW5hdiA9IGFzeW5jIChuYXYsIFtzdG9yYWdlS2V5LCByb290S2V5LCBwYWdlS2V5LCBsYXN0LCBzcGxpY2VBcmdzXSkgPT4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBhbGlnbi1hc3NpZ25tZW50cy9hbGlnbi1hc3NpZ25tZW50c1xuICAgIGxldCBhdWdtZW50UGFnZTogKHBhZ2U6IHN0cmluZykgPT4gc3RyaW5nO1xuICAgIGNvbnN0IGJyb3dzZXJLZXkgPSBkb2N1bWVudC5jb29raWUuc3BsaXQoLztcXHMrLykgIC8vIGl0IHdvcmtzIGV2ZW4gaWYgbWFsZm9ybWVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoKHJvdykgPT4gcm93LnN0YXJ0c1dpdGgocGFneSArIFwiPVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LnNwbGl0KFwiPVwiKVsxXSA/PyByYW5kS2V5KCk7XG4gICAgZG9jdW1lbnQuY29va2llICA9IGAke3BhZ3l9PSR7YnJvd3NlcktleX1gOyAgLy8gU21hbGxlciAubWluIHNpemU6IHNldCB0aGUgY29va2llIHdpdGhvdXQgY2hlY2tpbmdcbiAgICBpZiAoc3RvcmFnZUtleSAmJiAhKHN0b3JhZ2VLZXkgaW4gc3RvcmFnZSkpIHtcbiAgICAgIC8vIFN5bmMgdGhlIHNlc3Npb25nU3RvcmFnZSBmcm9tIG90aGVyIHRhYnMvd2luZG93cyAoZS5nLiwgb3BlbiBwYWdlIGluIHRoZSBuZXcgdGFiL3dpbmRvdylcbiAgICAgIHN5bmMucG9zdE1lc3NhZ2UoPFN5bmNEYXRhPnsgZnJvbTogdGFiSWQsIGtleTogc3RvcmFnZUtleSB9KTtcbiAgICAgIC8vIFdhaXQgZm9yIHRoZSBsaXN0ZW5lciB0byBjb3B5IHRoZSBjdXRvZmZzIGluIHRoZSBjdXJyZW50IHNlc3Npb25TdG9yYWdlXG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZTxzdHJpbmd8bnVsbD4oKHJlc29sdmUpID0+IHNldFRpbWVvdXQoKCkgPT4geyByZXNvbHZlKFwiXCIpIH0sIDEwMCkpO1xuICAgICAgaWYgKCEoc3RvcmFnZUtleSBpbiBzdG9yYWdlKSkgeyAvLyB0aGUgc3RvcmFnZUtleSBkaWRuJ3QgZ2V0IGNvcGllZDogZmFsbGJhY2sgdG8gY291bnRsZXNzIHBhZ2luYXRpb25cbiAgICAgICAgYXVnbWVudFBhZ2UgPSAocGFnZTogc3RyaW5nKSA9PiBgJHtwYWdlfSske1N0cmluZyhsYXN0KX1gOyAgICAgIH1cbiAgICB9XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBJZiBpdCBpcyBub3QgYXNzaWduZWQgaXQgbWVhbnMgaXQgc3VwcG9ydHMga2V5bmF2XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS1jb25kaXRpb25cbiAgICBpZiAoIWF1Z21lbnRQYWdlKSB7IC8vIHJlZ3VsYXIga2V5bmF2IHBhZ2luYXRpb25cbiAgICAgIGlmICghc3RvcmFnZUtleSkgeyBkbyB7IHN0b3JhZ2VLZXkgPSByYW5kS2V5KCkgfSB3aGlsZSAoc3RvcmFnZUtleSBpbiBzdG9yYWdlKSB9IC8vIG5vIGR1cCBrZXlzXG4gICAgICBjb25zdCBkYXRhID0gc3RvcmFnZS5nZXRJdGVtKHN0b3JhZ2VLZXkpLFxuICAgICAgICAgIGN1dG9mZnMgPSA8Q3V0b2ZmW10+KGRhdGEgPyBKU09OLnBhcnNlKGRhdGEpIDogW3VuZGVmaW5lZF0pO1xuICAgICAgaWYgKHNwbGljZUFyZ3MpIHtcbiAgICAgICAgY3V0b2Zmcy5zcGxpY2UoLi4uc3BsaWNlQXJncyk7XG4gICAgICAgIHN0b3JhZ2Uuc2V0SXRlbShzdG9yYWdlS2V5LCBKU09OLnN0cmluZ2lmeShjdXRvZmZzKSk7XG4gICAgICB9XG4gICAgICAvLyBBdWdtZW50IGZ1bmN0aW9uXG4gICAgICBhdWdtZW50UGFnZSA9IChwYWdlOnN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBwYWdlTnVtID0gcGFyc2VJbnQocGFnZSk7XG4gICAgICAgIHJldHVybiBCNjRTYWZlRW5jb2RlKEpTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgPEF1Z21lbnRlZFBhZ2U+W2Jyb3dzZXJLZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZUtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlTnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1dG9mZnMubGVuZ3RoLCAgICAgICAvLyBwYWdlcy9sYXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3V0b2Zmc1twYWdlTnVtIC0gMV0sIC8vIHByaW9yQ3V0b2ZmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3V0b2Zmc1twYWdlTnVtXV0pKTsgIC8vIHBhZ2VDdXRvZmZcbiAgICAgIH07XG4gICAgfVxuICAgIGNvbnN0IHNlYXJjaCA9IChyb290S2V5KSA/IGAke3Jvb3RLZXl9JTVCJHtwYWdlS2V5fSU1RGAgOiBwYWdlS2V5O1xuICAgIGNvbnN0IHJlICAgICA9IG5ldyBSZWdFeHAoYCg/PD1cXFxcPy4qKShcXFxcYiR7c2VhcmNofT0pKFxcXFxkKylgKTtcbiAgICAvLyBBdWdtZW50IHRoZSBwYWdlIHBhcmFtIG9mIGVhY2ggaHJlZlxuICAgIGZvciAoY29uc3QgYSBvZiA8Tm9kZUxpc3RPZjxIVE1MQW5jaG9yRWxlbWVudD4+PHVua25vd24+bmF2LnF1ZXJ5U2VsZWN0b3JBbGwoJ2FbaHJlZl0nKSkge1xuICAgICAgYS5ocmVmID0gYS5ocmVmLnJlcGxhY2UocmUsIChfbWF0Y2gsIHByZWZpeCwgZGlnaXQpOiBzdHJpbmcgPT4gYCR7U3RyaW5nKHByZWZpeCl9JHthdWdtZW50UGFnZSg8c3RyaW5nPmRpZ2l0KX1gKTtcbiAgICB9XG4gICAgLy8gUmV0dXJuIHRoZSBhdWdtZW50IGZ1bmN0aW9uIGZvciBmdXJ0aGVyIGF1Z21lbnRhdGlvbiAoaS5lLiwgdXJsIHRva2VuIGluIGlucHV0X25hdl9qcylcbiAgICByZXR1cm4gYXVnbWVudFBhZ2U7XG4gIH07XG5cbiAgLy8gQnVpbGQgdGhlIHNlcmllc19uYXZfanMgaGVscGVyXG4gIGNvbnN0IGJ1aWxkTmF2SnMgPSAobmF2Ok5hdkpzRWxlbWVudCwgW1tiZWZvcmUsIGFuY2hvciwgY3VycmVudCwgZ2FwLCBhZnRlcl0sIHBhZ2VUb2tlbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbd2lkdGhzLCBzZXJpZXMsIGxhYmVsc10sIGtleW5hdkFyZ3NdOlNlcmllc05hdkpzQXJncykgPT4ge1xuICAgIGxldCBsYXN0V2lkdGggPSAtMTtcbiAgICBjb25zdCBwYXJlbnQgID0gPEhUTUxFbGVtZW50Pm5hdi5wYXJlbnRFbGVtZW50O1xuXG4gICAgbmF2LnJlbmRlciA9ICgpID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ID0gd2lkdGhzLmZpbmRJbmRleCh3ID0+IHcgPCBwYXJlbnQuY2xpZW50V2lkdGgpO1xuICAgICAgaWYgKGluZGV4ID09PSAtMSB8fCB3aWR0aHNbaW5kZXhdID09PSBsYXN0V2lkdGgpIHsgcmV0dXJuIH1cblxuICAgICAgbGV0IGh0bWwgPSBiZWZvcmU7XG4gICAgICBzZXJpZXNbaW5kZXhdLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcbiAgICAgICAgLy8gQXZvaWQgdGhlIGlmIGJsb2NrcyBhbmQgY2hhaW4gdGhlIHJlc3VsdHMgKHNob3J0ZXIgcGFneS5taW4uanMgYW5kIGVhc2llciByZWFkaW5nKVxuICAgICAgICBodG1sICs9IGl0ZW0gPT0gXCJnYXBcIiA/IGdhcCA6XG4gICAgICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciB0aGUgaXRlbSBtYXkgYmUgYSBudW1iZXIsIGJ1dCB0aGUgJ3JlcGxhY2UnIGNvbnZlcnRzIGl0IHRvIHN0cmluZyAoc2hvcnRlciBwYWd5Lm1pbi5qcylcbiAgICAgICAgICAgICAgICAodHlwZW9mIGl0ZW0gPT0gXCJudW1iZXJcIiA/IGFuY2hvci5yZXBsYWNlKHBhZ2VUb2tlbiwgaXRlbSkgOiBjdXJyZW50KVxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZShcIkw8XCIsIGxhYmVscz8uW2luZGV4XVtpXSA/PyBgJHtTdHJpbmcoaXRlbSl9PGApO1xuICAgICAgfSk7XG4gICAgICBodG1sICAgICAgICAgKz0gYWZ0ZXI7XG4gICAgICBuYXYuaW5uZXJIVE1MID0gXCJcIjtcbiAgICAgIG5hdi5pbnNlcnRBZGphY2VudEhUTUwoXCJhZnRlcmJlZ2luXCIsIGh0bWwpO1xuICAgICAgbGFzdFdpZHRoID0gd2lkdGhzW2luZGV4XTtcbiAgICAgIGlmIChrZXluYXZBcmdzICYmIHN0b3JhZ2VTdXBwb3J0KSB7IHZvaWQgYXVnbWVudEtleW5hdihuYXYsIGtleW5hdkFyZ3MpIH1cbiAgICB9O1xuXG4gICAgcmpzT2JzZXJ2ZXIub2JzZXJ2ZShwYXJlbnQpO1xuICB9O1xuXG4gIC8vIEluaXQgdGhlIGlucHV0X25hdl9qcyBoZWxwZXJzXG4gIGNvbnN0IGluaXRJbnB1dE5hdkpzID0gYXN5bmMgKG5hdjpIVE1MRWxlbWVudCwgW3VybF90b2tlbiwgcGFnZVRva2VuLCBrZXluYXZBcmdzXTpJbnB1dE5hdkpzQXJncykgPT4ge1xuICAgIGNvbnN0IGF1Z21lbnQgPSBrZXluYXZBcmdzICYmIHN0b3JhZ2VTdXBwb3J0XG4gICAgICAgICAgICAgICAgICAgID8gYXdhaXQgYXVnbWVudEtleW5hdihuYXYsIGtleW5hdkFyZ3MpXG4gICAgICAgICAgICAgICAgICAgIDogKHBhZ2U6IHN0cmluZykgPT4gcGFnZTtcbiAgICBpbml0SW5wdXQobmF2LCBpbnB1dFZhbHVlID0+IHVybF90b2tlbi5yZXBsYWNlKHBhZ2VUb2tlbiwgYXVnbWVudChpbnB1dFZhbHVlKSkpO1xuICB9O1xuXG4gIC8vIEluaXQgdGhlIGxpbWl0X3RhZ19qcyBoZWxwZXJcbiAgY29uc3QgaW5pdExpbWl0VGFnSnMgPSAoc3BhbjpIVE1MU3BhbkVsZW1lbnQsIFtmcm9tLCB1cmxfdG9rZW4sIHBhZ2VfdG9rZW4sIGxpbWl0VG9rZW5dOkxpbWl0VGFnSnNBcmdzKSA9PiB7XG4gICAgaW5pdElucHV0KHNwYW4sIGlucHV0VmFsdWUgPT4ge1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciB0aGUgcGFnZSBpcyBhIG51bWJlciwgYnV0IHRoZSAncmVwbGFjZScgY29udmVydHMgaXQgdG8gc3RyaW5nIChzaG9ydGVyIHBhZ3kubWluLmpzKVxuICAgICAgcmV0dXJuIHVybF90b2tlbi5yZXBsYWNlKHBhZ2VfdG9rZW4sIE1hdGgubWF4KE1hdGguY2VpbChmcm9tIC8gcGFyc2VJbnQoaW5wdXRWYWx1ZSkpLCAxKSlcbiAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZShsaW1pdFRva2VuLCBpbnB1dFZhbHVlKTtcbiAgICB9KTtcbiAgfTtcblxuICAvLyBJbml0IHRoZSBpbnB1dCBlbGVtZW50XG4gIGNvbnN0IGluaXRJbnB1dCA9IChlbGVtZW50OkhUTUxFbGVtZW50LCBnZXRVcmw6KHY6c3RyaW5nKSA9PiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBpbnB1dCAgID0gPEhUTUxJbnB1dEVsZW1lbnQ+ZWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiaW5wdXRcIiksXG4gICAgICAgICAgbGluayAgICA9IDxIVE1MQW5jaG9yRWxlbWVudD5lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCJhXCIpO1xuICAgIGxldCAgIGluaXRpYWwgPSBpbnB1dC52YWx1ZTtcbiAgICBjb25zdCBhY3Rpb24gID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC52YWx1ZSA9PT0gaW5pdGlhbCkgeyByZXR1cm4gfSAgLy8gbm90IGNoYW5nZWRcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBbbWluLCB2YWwsIG1heF0gPSBbaW5wdXQubWluLCBpbnB1dC52YWx1ZSwgaW5wdXQubWF4XS5tYXAobiA9PiBwYXJzZUludChuKSB8fCAwKTtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsIDwgbWluIHx8IHZhbCA+IG1heCkgeyAgLy8gcmVzZXQgaW52YWxpZC9vdXQtb2YtcmFuZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LnZhbHVlID0gaW5pdGlhbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LnNlbGVjdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsICAgPSBpbnB1dC52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICBsaW5rLmhyZWYgPSBnZXRVcmwoaW5wdXQudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgIGxpbmsuY2xpY2soKTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKFwiZm9jdXNcIiwgKCkgPT4geyBpbnB1dC5zZWxlY3QoKSB9KTtcbiAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKFwiZm9jdXNvdXRcIiwgYWN0aW9uKTtcbiAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKFwia2V5cHJlc3NcIiwgZSA9PiB7IGlmIChlLmtleSA9PSBcIkVudGVyXCIpIHsgYWN0aW9uKCkgfSB9KTtcbiAgfTtcblxuICAvLyBQdWJsaWMgaW50ZXJmYWNlXG4gIHJldHVybiB7XG4gICAgdmVyc2lvbjogXCI0My41LjNcIixcblxuICAgIC8vIFNjYW4gZm9yIGVsZW1lbnRzIHdpdGggYSBcImRhdGEtcGFneVwiIGF0dHJpYnV0ZSBhbmQgY2FsbCB0aGVpciBpbml0IGZ1bmN0aW9ucyB3aXRoIHRoZSBkZWNvZGVkIGFyZ3NcbiAgICBpbml0KGFyZz86SFRNTEVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGFyZyBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ID8gYXJnIDogZG9jdW1lbnQsXG4gICAgICAgICAgICBlbGVtZW50cyA9IHRhcmdldC5xdWVyeVNlbGVjdG9yQWxsKFwiW2RhdGEtcGFneV1cIik7XG4gICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgPE5vZGVMaXN0T2Y8SFRNTEVsZW1lbnQ+PmVsZW1lbnRzKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgW2hlbHBlcklkLCAuLi5hcmdzXSA9IDxJbml0QXJncz5KU09OLnBhcnNlKEI2NERlY29kZSg8c3RyaW5nPmVsZW1lbnQuZ2V0QXR0cmlidXRlKFwiZGF0YS1wYWd5XCIpKSk7XG4gICAgICAgICAgaWYgKGhlbHBlcklkID09IFwia1wiKSB7XG4gICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIHNwcmVhZCAyIGFyZ3VtZW50cywgbm90IDMgYXMgaXQgY29tcGxhaW5zIGFib3V0XG4gICAgICAgICAgICB2b2lkIGF1Z21lbnRLZXluYXYoZWxlbWVudCwgLi4uPEtleW5hdkFyZ3M+PHVua25vd24+YXJncyk7XG4gICAgICAgICAgfSBlbHNlIGlmIChoZWxwZXJJZCA9PSBcInNualwiKSB7XG4gICAgICAgICAgICBidWlsZE5hdkpzKDxOYXZKc0VsZW1lbnQ+ZWxlbWVudCwgPFNlcmllc05hdkpzQXJncz48dW5rbm93bj5hcmdzKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGhlbHBlcklkID09IFwiaW5qXCIpIHtcbiAgICAgICAgICAgIHZvaWQgaW5pdElucHV0TmF2SnMoZWxlbWVudCwgPElucHV0TmF2SnNBcmdzPjx1bmtub3duPmFyZ3MpO1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS1jb25kaXRpb25cbiAgICAgICAgICB9IGVsc2UgaWYgKGhlbHBlcklkID09IFwibHRqXCIpIHtcbiAgICAgICAgICAgIGluaXRMaW1pdFRhZ0pzKGVsZW1lbnQsIDxMaW1pdFRhZ0pzQXJncz48dW5rbm93bj5hcmdzKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gZWxzZSB7IGNvbnNvbGUud2FybihcIlBhZ3kuaW5pdDogJW9cXG5Vbmtub3duIGhlbHBlcklkICclcydcIiwgZWxlbWVudCwgaGVscGVySWQpIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7IGNvbnNvbGUud2FybihcIlBhZ3kuaW5pdDogJW9cXG4lc1wiLCBlbGVtZW50LCBlcnIpIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG59KSgpO1xuIiwKICAgICJpbXBvcnQgUGFneSBmcm9tIFwiLi9wYWd5LnRzXCJcbndpbmRvdy5QYWd5ID0gUGFneVxuIgogIF0sCiAgIm1hcHBpbmdzIjogIjtBQWdEQSxJQUFnQixzQkFBTTtBQUFBLEVBQ3BCLE1BQU0saUJBQWlCLG9CQUFvQixVQUFVLHNCQUFzQjtBQUFBLEVBRTNFLElBQUksT0FBTyxRQUFRLFNBQWtCLE1BQXdCO0FBQUEsRUFDN0QsSUFBSSxnQkFBZ0I7QUFBQSxJQUNsQixVQUFVO0FBQUEsSUFDVixPQUFVLElBQUksaUJBQWlCLElBQUk7QUFBQSxJQUNuQyxRQUFVLEtBQUssSUFBSTtBQUFBLElBR25CLEtBQUssaUJBQWlCLFdBQVcsQ0FBQyxNQUE2QjtBQUFBLE1BQzdELElBQUksRUFBRSxL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
|
data/javascripts/pagy.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
window.Pagy=(()=>{let O="sessionStorage"in window&&"BroadcastChannel"in window,B="pagy",Z,L,W;if(O)Z=sessionStorage,L=new BroadcastChannel(B),W=Date.now(),L.addEventListener("message",(q)=>{if(q.data.from){let z=Z.getItem(q.data.key);if(z)L.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(".series-nav-js").forEach((C)=>{C.render()})})}),_=(q)=>btoa(String.fromCharCode(...new TextEncoder().encode(q))).replace(/[+/=]/g,(z)=>z=="+"?"-":z=="/"?"_":""),T=(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(B+"="))?.split("=")[1]??P();if(document.cookie=`${B}=${X}`,z&&!(z in Z)){if(L.postMessage({from:W,key:z}),await new Promise((M)=>setTimeout(()=>{M("")},100)),!(z in Z))Q=(M)=>`${M}+${String(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)=>`${String($)}${Q(R)}`);return Q},x=(q,[[z,C,F,H,G],Q,[X,D,E],M])=>{let Y=-1,$=q.parentElement;q.render=()=>{let R=X.findIndex((j)=>j<$.clientWidth);if(R===-1||X[R]===Y)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]??`${String(j)}<`)}),U+=G,q.innerHTML="",q.insertAdjacentHTML("afterbegin",U),Y=X[R],M&&O)J(q,M)},V.observe($)},w=async(q,[z,C,F])=>{let H=F&&O?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.5.
|
|
1
|
+
window.Pagy=(()=>{let O="sessionStorage"in window&&"BroadcastChannel"in window,B="pagy",Z,L,W;if(O)Z=sessionStorage,L=new BroadcastChannel(B),W=Date.now(),L.addEventListener("message",(q)=>{if(q.data.from){let z=Z.getItem(q.data.key);if(z)L.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(".series-nav-js").forEach((C)=>{C.render()})})}),_=(q)=>btoa(String.fromCharCode(...new TextEncoder().encode(q))).replace(/[+/=]/g,(z)=>z=="+"?"-":z=="/"?"_":""),T=(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(B+"="))?.split("=")[1]??P();if(document.cookie=`${B}=${X}`,z&&!(z in Z)){if(L.postMessage({from:W,key:z}),await new Promise((M)=>setTimeout(()=>{M("")},100)),!(z in Z))Q=(M)=>`${M}+${String(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)=>`${String($)}${Q(R)}`);return Q},x=(q,[[z,C,F,H,G],Q,[X,D,E],M])=>{let Y=-1,$=q.parentElement;q.render=()=>{let R=X.findIndex((j)=>j<$.clientWidth);if(R===-1||X[R]===Y)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]??`${String(j)}<`)}),U+=G,q.innerHTML="",q.insertAdjacentHTML("afterbegin",U),Y=X[R],M&&O)J(q,M)},V.observe($)},w=async(q,[z,C,F])=>{let H=F&&O?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.5.3",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(T(F.getAttribute("data-pagy")));if(H=="k")J(F,...G);else if(H=="snj")x(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
|
@@ -134,7 +134,7 @@ export default (() => {
|
|
|
134
134
|
});
|
|
135
135
|
};
|
|
136
136
|
return {
|
|
137
|
-
version: "43.5.
|
|
137
|
+
version: "43.5.3",
|
|
138
138
|
init(arg) {
|
|
139
139
|
const target = arg instanceof HTMLElement ? arg : document, elements = target.querySelectorAll("[data-pagy]");
|
|
140
140
|
for (const element of elements) {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
class Pagy
|
|
4
4
|
DEFAULT_DATA_KEYS = %i[url_template first_url previous_url current_url page_url next_url last_url
|
|
5
|
-
count page limit last in from to previous next options].freeze
|
|
5
|
+
count page limit last in from to previous next options series].freeze
|
|
6
6
|
|
|
7
7
|
# Generate a hash of the wanted internal data
|
|
8
8
|
def data_hash(data_keys: @options[:data_keys] || DEFAULT_DATA_KEYS, **)
|
|
@@ -27,11 +27,14 @@ class Pagy
|
|
|
27
27
|
module HelperLoader
|
|
28
28
|
end
|
|
29
29
|
|
|
30
|
-
paths = { public:
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
30
|
+
paths = { public: { page_url: 'page_url',
|
|
31
|
+
data_hash: 'data_hash',
|
|
32
|
+
headers_hash: 'headers_hash',
|
|
33
|
+
urls_hash: 'urls_hash',
|
|
34
|
+
next_tag: 'anchor_tags' },
|
|
35
|
+
protected: { series: 'support/series',
|
|
36
|
+
page_label: 'support/a_lambda',
|
|
37
|
+
a_lambda: 'support/a_lambda' } }.freeze
|
|
35
38
|
|
|
36
39
|
aliaser.(HelperLoader, paths)
|
|
37
40
|
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require_relative 'series'
|
|
4
3
|
require_relative 'nav_aria_label_attribute'
|
|
5
4
|
require_relative 'data_pagy_attribute'
|
|
6
|
-
require_relative 'a_lambda' # inherited use
|
|
7
5
|
|
|
8
6
|
# Relegate internal functions. Make overriding navs easier.
|
|
9
7
|
class Pagy
|
data/lib/pagy.rb
CHANGED
|
@@ -9,7 +9,7 @@ require_relative 'pagy/toolbox/helpers/loaders'
|
|
|
9
9
|
|
|
10
10
|
# Top superclass
|
|
11
11
|
class Pagy
|
|
12
|
-
VERSION = '43.5.
|
|
12
|
+
VERSION = '43.5.3'
|
|
13
13
|
ROOT = Pathname.new(__dir__).parent.freeze
|
|
14
14
|
DEFAULT = { limit: 20, limit_key: 'limit', page_key: 'page' }.freeze
|
|
15
15
|
PAGE_TOKEN = EscapedValue.new('P ')
|
data/locales/hu.yml
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# See https://ddnexus.github.io/pagy/resources/i18n
|
|
2
|
+
|
|
3
|
+
hu:
|
|
4
|
+
pagy:
|
|
5
|
+
aria_label:
|
|
6
|
+
nav:
|
|
7
|
+
one: Oldal
|
|
8
|
+
other: Oldalak
|
|
9
|
+
next: Következő
|
|
10
|
+
previous: Előző
|
|
11
|
+
gap: "…"
|
|
12
|
+
info_tag:
|
|
13
|
+
multiple_pages: "%{from}-%{to}. %{item_name} megjelenítve %{count} közül"
|
|
14
|
+
no_count: "%{page}. oldal / %{pages}"
|
|
15
|
+
no_items: Nem található %{item_name}
|
|
16
|
+
single_page: "%{count} %{item_name} megjelenítve"
|
|
17
|
+
input_nav_js: "%{page_input}. oldal / %{pages}"
|
|
18
|
+
item_name:
|
|
19
|
+
one: tétel
|
|
20
|
+
other: tétel
|
|
21
|
+
limit_tag_js: "%{limit_input} %{item_name} oldalanként"
|
|
22
|
+
next: ">"
|
|
23
|
+
p11n: OneOther
|
|
24
|
+
previous: "<"
|
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.5.
|
|
4
|
+
version: 43.5.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Domizio Demichelis
|
|
@@ -169,6 +169,7 @@ files:
|
|
|
169
169
|
- locales/es.yml
|
|
170
170
|
- locales/fr.yml
|
|
171
171
|
- locales/hr.yml
|
|
172
|
+
- locales/hu.yml
|
|
172
173
|
- locales/id.yml
|
|
173
174
|
- locales/it.yml
|
|
174
175
|
- locales/ja.yml
|