@tricoteuses/assemblee 1.0.0-next.2 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/README.md +2 -0
  2. package/lib/api.js +23 -7
  3. package/lib/api.mjs +41 -0
  4. package/lib/bugs/acteur-00010/plugin.test.js +139 -33
  5. package/lib/bugs/acteur-00010/plugin.test.mjs +33 -0
  6. package/lib/bugs/acteur-00010.js +166 -24
  7. package/lib/bugs/acteur-00010.mjs +31 -0
  8. package/lib/bugs/agenda-00002/plugin.test.js +178 -52
  9. package/lib/bugs/agenda-00002/plugin.test.mjs +52 -0
  10. package/lib/bugs/agenda-00002.js +507 -143
  11. package/lib/bugs/agenda-00002.mjs +197 -0
  12. package/lib/bugs/agenda-00008/plugin.test.js +143 -31
  13. package/lib/bugs/agenda-00008/plugin.test.mjs +31 -0
  14. package/lib/bugs/agenda-00008.js +180 -25
  15. package/lib/bugs/agenda-00008.mjs +30 -0
  16. package/lib/bugs/agenda-00011/plugin.test.js +371 -156
  17. package/lib/bugs/agenda-00011/plugin.test.mjs +156 -0
  18. package/lib/bugs/agenda-00011.js +416 -117
  19. package/lib/bugs/agenda-00011.mjs +150 -0
  20. package/lib/bugs.js +591 -54
  21. package/lib/bugs.mjs +93 -0
  22. package/lib/cleaners/actes_legislatifs.js +149 -61
  23. package/lib/cleaners/actes_legislatifs.mjs +311 -0
  24. package/lib/cleaners/acteurs.js +255 -123
  25. package/lib/cleaners/acteurs.mjs +211 -0
  26. package/lib/cleaners/amendements.js +242 -117
  27. package/lib/cleaners/amendements.mjs +292 -0
  28. package/lib/cleaners/documents.js +147 -62
  29. package/lib/cleaners/documents.mjs +162 -0
  30. package/lib/cleaners/dossiers_legislatifs.js +132 -45
  31. package/lib/cleaners/dossiers_legislatifs.mjs +123 -0
  32. package/lib/cleaners/index.js +64 -8
  33. package/lib/cleaners/index.mjs +8 -0
  34. package/lib/cleaners/organes.js +54 -21
  35. package/lib/cleaners/organes.mjs +64 -0
  36. package/lib/cleaners/reunions.js +237 -127
  37. package/lib/cleaners/reunions.mjs +318 -0
  38. package/lib/cleaners/scrutins.js +261 -99
  39. package/lib/cleaners/scrutins.mjs +254 -0
  40. package/lib/cleaners/xml.js +81 -16
  41. package/lib/cleaners/xml.mjs +42 -0
  42. package/lib/datasets.js +284 -153
  43. package/lib/datasets.mjs +596 -0
  44. package/lib/dates.js +93 -34
  45. package/lib/dates.mjs +98 -0
  46. package/lib/dossiers_legislatifs.js +107 -33
  47. package/lib/dossiers_legislatifs.mjs +215 -0
  48. package/lib/file_systems.js +203 -35
  49. package/lib/file_systems.mjs +64 -0
  50. package/lib/git.js +139 -41
  51. package/lib/git.mjs +114 -0
  52. package/lib/index.js +310 -16
  53. package/lib/index.mjs +16 -0
  54. package/lib/inserters.js +355 -131
  55. package/lib/inserters.mjs +413 -0
  56. package/lib/loaders.js +900 -440
  57. package/lib/loaders.mjs +678 -0
  58. package/lib/organes.js +15 -5
  59. package/lib/organes.mjs +18 -0
  60. package/lib/parsers/documents.js +241 -89
  61. package/lib/parsers/documents.mjs +433 -0
  62. package/lib/parsers/index.js +36 -3
  63. package/lib/parsers/index.mjs +3 -0
  64. package/lib/parsers/recherche_amendements.js +616 -173
  65. package/lib/parsers/recherche_amendements.mjs +189 -0
  66. package/lib/raw_types/acteurs_et_organes.d.ts +36 -148
  67. package/lib/raw_types/acteurs_et_organes.js +228 -506
  68. package/lib/raw_types/acteurs_et_organes.mjs +1240 -0
  69. package/lib/raw_types/agendas.js +165 -75
  70. package/lib/raw_types/agendas.mjs +944 -0
  71. package/lib/raw_types/amendements.js +165 -77
  72. package/lib/raw_types/amendements.mjs +1040 -0
  73. package/lib/raw_types/dossiers_legislatifs.d.ts +1 -43
  74. package/lib/raw_types/dossiers_legislatifs.js +181 -143
  75. package/lib/raw_types/dossiers_legislatifs.mjs +1792 -0
  76. package/lib/raw_types/scrutins.js +144 -61
  77. package/lib/raw_types/scrutins.mjs +645 -0
  78. package/lib/scripts/bugs_helper.js +657 -155
  79. package/lib/scripts/bugs_helper.mjs +286 -0
  80. package/lib/scripts/clean_data.js +380 -145
  81. package/lib/scripts/clean_data.mjs +190 -0
  82. package/lib/scripts/clean_reorganized_data.js +627 -331
  83. package/lib/scripts/clean_reorganized_data.mjs +520 -0
  84. package/lib/scripts/diff_amendements.js +159 -73
  85. package/lib/scripts/diff_amendements.mjs +234 -0
  86. package/lib/scripts/document_dossiers_legislatifs.js +570 -288
  87. package/lib/scripts/document_dossiers_legislatifs.mjs +494 -0
  88. package/lib/scripts/get_today_reunions.js +37 -20
  89. package/lib/scripts/get_today_reunions.mjs +41 -0
  90. package/lib/scripts/merge_scrutins.js +121 -39
  91. package/lib/scripts/merge_scrutins.mjs +69 -0
  92. package/lib/scripts/parse_textes_lois.js +179 -125
  93. package/lib/scripts/parse_textes_lois.mjs +215 -0
  94. package/lib/scripts/raw_types_from_amendements.js +276 -77
  95. package/lib/scripts/raw_types_from_amendements.mjs +118 -0
  96. package/lib/scripts/reorganize_data.js +867 -446
  97. package/lib/scripts/reorganize_data.mjs +712 -0
  98. package/lib/scripts/retrieve_deputes_photos.js +378 -157
  99. package/lib/scripts/retrieve_deputes_photos.mjs +230 -0
  100. package/lib/scripts/retrieve_documents.js +648 -172
  101. package/lib/scripts/retrieve_documents.mjs +292 -0
  102. package/lib/scripts/retrieve_open_data.js +286 -85
  103. package/lib/scripts/retrieve_open_data.mjs +125 -0
  104. package/lib/scripts/retrieve_pending_amendments.js +302 -69
  105. package/lib/scripts/retrieve_pending_amendments.mjs +130 -0
  106. package/lib/scripts/retrieve_senateurs_photos.js +374 -198
  107. package/lib/scripts/retrieve_senateurs_photos.mjs +277 -0
  108. package/lib/scripts/retrieve_textes_lois.js +343 -89
  109. package/lib/scripts/retrieve_textes_lois.mjs +168 -0
  110. package/lib/scripts/test_load.js +30 -11
  111. package/lib/scripts/test_load.mjs +26 -0
  112. package/lib/scripts/test_load_big_files.js +30 -11
  113. package/lib/scripts/test_load_big_files.mjs +26 -0
  114. package/lib/scripts/validate_json.js +370 -120
  115. package/lib/scripts/validate_json.mjs +216 -0
  116. package/lib/shared_types/codes_actes.js +50 -15
  117. package/lib/shared_types/codes_actes.mjs +228 -0
  118. package/lib/strings.js +16 -3
  119. package/lib/strings.mjs +7 -0
  120. package/lib/types/acteurs_et_organes.js +156 -71
  121. package/lib/types/acteurs_et_organes.mjs +918 -0
  122. package/lib/types/agendas.js +154 -67
  123. package/lib/types/agendas.mjs +623 -0
  124. package/lib/types/amendements.js +166 -77
  125. package/lib/types/amendements.mjs +885 -0
  126. package/lib/types/dossiers_legislatifs.d.ts +1 -42
  127. package/lib/types/dossiers_legislatifs.js +182 -143
  128. package/lib/types/dossiers_legislatifs.mjs +1120 -0
  129. package/lib/types/legislatures.js +12 -3
  130. package/lib/types/legislatures.mjs +9 -0
  131. package/lib/types/scrutins.js +144 -61
  132. package/lib/types/scrutins.mjs +528 -0
  133. package/lib/urls.js +44 -25
  134. package/lib/urls.mjs +201 -0
  135. package/package.json +33 -12
package/lib/git.js CHANGED
@@ -1,27 +1,88 @@
1
- import path from "path";
2
- import fs from "fs-extra";
3
- import { getFiles } from "./file_systems.js";
4
- import { execSync } from "child_process";
5
- const MAXBUFFER = 50 * 1024 * 1024;
6
- export function run(repositoryDir, args, verbose) {
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.array.slice.js");
4
+
5
+ require("core-js/modules/es.function.name.js");
6
+
7
+ require("core-js/modules/es.array.from.js");
8
+
9
+ require("core-js/modules/es.string.iterator.js");
10
+
11
+ require("core-js/modules/es.symbol.js");
12
+
13
+ require("core-js/modules/es.symbol.description.js");
14
+
15
+ require("core-js/modules/es.symbol.iterator.js");
16
+
17
+ require("core-js/modules/es.array.iterator.js");
18
+
19
+ require("core-js/modules/web.dom-collections.iterator.js");
20
+
21
+ require("core-js/modules/es.array.is-array.js");
22
+
23
+ require("core-js/modules/es.object.define-property.js");
24
+
25
+ Object.defineProperty(exports, "__esModule", {
26
+ value: true
27
+ });
28
+ exports.commit = commit;
29
+ exports.run = run;
30
+ exports.test = test;
31
+ exports.uidBranchUpdate = uidBranchUpdate;
32
+
33
+ require("core-js/modules/es.array.concat.js");
34
+
35
+ require("core-js/modules/es.string.trim.js");
36
+
37
+ require("core-js/modules/es.date.to-string.js");
38
+
39
+ require("core-js/modules/es.object.to-string.js");
40
+
41
+ require("core-js/modules/es.regexp.to-string.js");
42
+
43
+ require("core-js/modules/es.regexp.exec.js");
44
+
45
+ var _path = _interopRequireDefault(require("path"));
46
+
47
+ var _fsExtra = _interopRequireDefault(require("fs-extra"));
48
+
49
+ var _file_systems = require("./file_systems");
50
+
51
+ var _child_process = require("child_process");
52
+
53
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
54
+
55
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
56
+
57
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
58
+
59
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
60
+
61
+ var MAXBUFFER = 50 * 1024 * 1024;
62
+
63
+ function run(repositoryDir, args, verbose) {
7
64
  try {
8
- if (verbose) console.log(`git -C ${repositoryDir} ${args}`);
9
- const output = execSync(`git ${args}`, {
65
+ if (verbose) console.log("git -C ".concat(repositoryDir, " ").concat(args));
66
+ var output = (0, _child_process.execSync)("git ".concat(args), {
10
67
  cwd: repositoryDir,
11
68
  maxBuffer: MAXBUFFER
12
69
  }).toString().trim();
13
70
  if (verbose) console.log(output);
14
71
  return output;
15
72
  } catch (childProcess) {
16
- for (const output of ["stdout", "stderr"]) console.error(`${output}: ${childProcess[output]}`);
73
+ for (var _i = 0, _arr = ["stdout", "stderr"]; _i < _arr.length; _i++) {
74
+ var _output = _arr[_i];
75
+ console.error("".concat(_output, ": ").concat(childProcess[_output]));
76
+ }
17
77
 
18
78
  throw childProcess;
19
79
  }
20
80
  }
21
- export function test(repositoryDir, args, verbose) {
81
+
82
+ function test(repositoryDir, args, verbose) {
22
83
  try {
23
- if (verbose) console.log(`git -C ${repositoryDir} ${args}`);
24
- const output = execSync(`git ${args}`, {
84
+ if (verbose) console.log("git -C ".concat(repositoryDir, " ").concat(args));
85
+ var output = (0, _child_process.execSync)("git ".concat(args), {
25
86
  cwd: repositoryDir,
26
87
  stdio: ["ignore", "pipe", "pipe"],
27
88
  maxBuffer: MAXBUFFER
@@ -33,8 +94,9 @@ export function test(repositoryDir, args, verbose) {
33
94
  throw childProcess;
34
95
  }
35
96
  }
36
- export function commit(repositoryDir, message) {
37
- execSync("git add .", {
97
+
98
+ function commit(repositoryDir, message) {
99
+ (0, _child_process.execSync)("git add .", {
38
100
  cwd: repositoryDir,
39
101
  env: process.env,
40
102
  encoding: "utf-8",
@@ -43,7 +105,7 @@ export function commit(repositoryDir, message) {
43
105
  });
44
106
 
45
107
  try {
46
- execSync(`git commit -m "${message}"`, {
108
+ (0, _child_process.execSync)("git commit -m \"".concat(message, "\""), {
47
109
  cwd: repositoryDir,
48
110
  env: process.env,
49
111
  encoding: "utf-8",
@@ -59,56 +121,92 @@ export function commit(repositoryDir, message) {
59
121
  return false;
60
122
  }
61
123
  }
62
- export function uidBranchUpdate(repositoryDir, subdirectories, notHard) {
63
- const previousBranch = run(repositoryDir, "rev-parse --abbrev-ref HEAD");
64
- const branch = "uid";
65
- const cwd = process.cwd();
124
+
125
+ function uidBranchUpdate(repositoryDir, subdirectories, notHard) {
126
+ var previousBranch = run(repositoryDir, "rev-parse --abbrev-ref HEAD");
127
+ var branch = "uid";
128
+ var cwd = process.cwd();
66
129
  process.chdir(repositoryDir);
67
130
 
68
- for (const subdirectory of subdirectories) {
69
- const uidDirectory = `${subdirectory}/uid`;
70
- fs.ensureDirSync(uidDirectory);
131
+ var _iterator = _createForOfIteratorHelper(subdirectories),
132
+ _step;
71
133
 
72
- for (const pathname of getFiles([`${subdirectory}/**/*.json`])) {
73
- const filename = path.basename(pathname);
74
- fs.renameSync(pathname, `${uidDirectory}/${filename}`);
134
+ try {
135
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
136
+ var subdirectory = _step.value;
137
+ var uidDirectory = "".concat(subdirectory, "/uid");
138
+
139
+ _fsExtra["default"].ensureDirSync(uidDirectory);
140
+
141
+ var _iterator3 = _createForOfIteratorHelper((0, _file_systems.getFiles)(["".concat(subdirectory, "/**/*.json")])),
142
+ _step3;
143
+
144
+ try {
145
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
146
+ var pathname = _step3.value;
147
+
148
+ var filename = _path["default"].basename(pathname);
149
+
150
+ _fsExtra["default"].renameSync(pathname, "".concat(uidDirectory, "/").concat(filename));
151
+ }
152
+ } catch (err) {
153
+ _iterator3.e(err);
154
+ } finally {
155
+ _iterator3.f();
156
+ }
75
157
  }
158
+ } catch (err) {
159
+ _iterator.e(err);
160
+ } finally {
161
+ _iterator.f();
76
162
  }
77
163
 
78
164
  process.chdir(cwd);
79
165
 
80
- if (test(repositoryDir, `rev-parse remotes/origin/${branch}`)) {
166
+ if (test(repositoryDir, "rev-parse remotes/origin/".concat(branch))) {
81
167
  // if a remote branch exists, it must be used even if a local branch exists
82
- run(repositoryDir, `branch --force ${branch} origin/${branch}`);
83
- run(repositoryDir, `symbolic-ref HEAD refs/heads/${branch}`);
168
+ run(repositoryDir, "branch --force ".concat(branch, " origin/").concat(branch));
169
+ run(repositoryDir, "symbolic-ref HEAD refs/heads/".concat(branch));
84
170
  run(repositoryDir, "reset");
85
- } else if (test(repositoryDir, `rev-parse refs/heads/${branch}`)) {
171
+ } else if (test(repositoryDir, "rev-parse refs/heads/".concat(branch))) {
86
172
  // if no remote branch exists but a local one exists, use it
87
- run(repositoryDir, `symbolic-ref HEAD refs/heads/${branch}`);
173
+ run(repositoryDir, "symbolic-ref HEAD refs/heads/".concat(branch));
88
174
  run(repositoryDir, "reset");
89
175
  } else {
90
176
  // if there are no remote or local branches, create a new one
91
- run(repositoryDir, `branch --force ${branch} master`);
92
- run(repositoryDir, `symbolic-ref HEAD refs/heads/${branch}`);
177
+ run(repositoryDir, "branch --force ".concat(branch, " master"));
178
+ run(repositoryDir, "symbolic-ref HEAD refs/heads/".concat(branch));
93
179
  run(repositoryDir, "reset");
94
180
  run(repositoryDir, "rm -r .");
95
181
  }
96
182
 
97
- for (const subdirectory of subdirectories) {
98
- const uidDirectory = `${subdirectory}/uid`;
99
- run(repositoryDir, `add ${uidDirectory}`);
183
+ var _iterator2 = _createForOfIteratorHelper(subdirectories),
184
+ _step2;
185
+
186
+ try {
187
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
188
+ var _subdirectory = _step2.value;
189
+
190
+ var _uidDirectory = "".concat(_subdirectory, "/uid");
191
+
192
+ run(repositoryDir, "add ".concat(_uidDirectory));
193
+ }
194
+ } catch (err) {
195
+ _iterator2.e(err);
196
+ } finally {
197
+ _iterator2.f();
100
198
  }
101
199
 
102
- let status = false;
200
+ var status = false;
103
201
 
104
202
  if (!test(repositoryDir, "diff --quiet --cached")) {
105
- run(repositoryDir, `commit -m 'Update'`);
203
+ run(repositoryDir, "commit -m 'Update'");
106
204
  status = true;
107
205
  }
108
206
 
109
- run(repositoryDir, `symbolic-ref HEAD refs/heads/${previousBranch}`);
110
- const resetOption = notHard ? "" : "--hard";
111
- run(repositoryDir, `reset ${resetOption}`);
207
+ run(repositoryDir, "symbolic-ref HEAD refs/heads/".concat(previousBranch));
208
+ var resetOption = notHard ? "" : "--hard";
209
+ run(repositoryDir, "reset ".concat(resetOption));
112
210
  return status;
113
211
  }
114
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXRoIiwiZnMiLCJnZXRGaWxlcyIsImV4ZWNTeW5jIiwiTUFYQlVGRkVSIiwicnVuIiwicmVwb3NpdG9yeURpciIsImFyZ3MiLCJ2ZXJib3NlIiwiY29uc29sZSIsImxvZyIsIm91dHB1dCIsImN3ZCIsIm1heEJ1ZmZlciIsInRvU3RyaW5nIiwidHJpbSIsImNoaWxkUHJvY2VzcyIsImVycm9yIiwidGVzdCIsInN0ZGlvIiwic3RhdHVzIiwiY29tbWl0IiwibWVzc2FnZSIsImVudiIsInByb2Nlc3MiLCJlbmNvZGluZyIsInN0ZG91dCIsInVpZEJyYW5jaFVwZGF0ZSIsInN1YmRpcmVjdG9yaWVzIiwibm90SGFyZCIsInByZXZpb3VzQnJhbmNoIiwiYnJhbmNoIiwiY2hkaXIiLCJzdWJkaXJlY3RvcnkiLCJ1aWREaXJlY3RvcnkiLCJlbnN1cmVEaXJTeW5jIiwicGF0aG5hbWUiLCJmaWxlbmFtZSIsImJhc2VuYW1lIiwicmVuYW1lU3luYyIsInJlc2V0T3B0aW9uIl0sInNvdXJjZXMiOlsiLi4vc3JjL2dpdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCB7IGdldEZpbGVzIH0gZnJvbSBcIi4vZmlsZV9zeXN0ZW1zXCJcbmltcG9ydCB7IENoaWxkUHJvY2VzcywgZXhlY1N5bmMgfSBmcm9tIFwiY2hpbGRfcHJvY2Vzc1wiXG5cbmNvbnN0IE1BWEJVRkZFUiA9IDUwICogMTAyNCAqIDEwMjRcblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bihcbiAgcmVwb3NpdG9yeURpcjogc3RyaW5nLFxuICBhcmdzOiBzdHJpbmcsXG4gIHZlcmJvc2U/OiBib29sZWFuLFxuKTogc3RyaW5nIHtcbiAgdHJ5IHtcbiAgICBpZiAodmVyYm9zZSkgY29uc29sZS5sb2coYGdpdCAtQyAke3JlcG9zaXRvcnlEaXJ9ICR7YXJnc31gKVxuICAgIGNvbnN0IG91dHB1dCA9IGV4ZWNTeW5jKGBnaXQgJHthcmdzfWAsIHtcbiAgICAgIGN3ZDogcmVwb3NpdG9yeURpcixcbiAgICAgIG1heEJ1ZmZlcjogTUFYQlVGRkVSLFxuICAgIH0pXG4gICAgICAudG9TdHJpbmcoKVxuICAgICAgLnRyaW0oKVxuICAgIGlmICh2ZXJib3NlKSBjb25zb2xlLmxvZyhvdXRwdXQpXG4gICAgcmV0dXJuIG91dHB1dFxuICB9IGNhdGNoIChjaGlsZFByb2Nlc3MpIHtcbiAgICBmb3IgKGNvbnN0IG91dHB1dCBvZiBbXCJzdGRvdXRcIiwgXCJzdGRlcnJcIl0pXG4gICAgICBjb25zb2xlLmVycm9yKGAke291dHB1dH06ICR7KGNoaWxkUHJvY2VzcyBhcyBhbnkpW291dHB1dF19YClcbiAgICB0aHJvdyBjaGlsZFByb2Nlc3NcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVzdChcbiAgcmVwb3NpdG9yeURpcjogc3RyaW5nLFxuICBhcmdzOiBzdHJpbmcsXG4gIHZlcmJvc2U/OiBib29sZWFuLFxuKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgaWYgKHZlcmJvc2UpIGNvbnNvbGUubG9nKGBnaXQgLUMgJHtyZXBvc2l0b3J5RGlyfSAke2FyZ3N9YClcbiAgICBjb25zdCBvdXRwdXQgPSBleGVjU3luYyhgZ2l0ICR7YXJnc31gLCB7XG4gICAgICBjd2Q6IHJlcG9zaXRvcnlEaXIsXG4gICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwicGlwZVwiLCBcInBpcGVcIl0sXG4gICAgICBtYXhCdWZmZXI6IE1BWEJVRkZFUixcbiAgICB9KVxuICAgICAgLnRvU3RyaW5nKClcbiAgICAgIC50cmltKClcbiAgICBpZiAodmVyYm9zZSkgY29uc29sZS5sb2cob3V0cHV0KVxuICAgIHJldHVybiB0cnVlXG4gIH0gY2F0Y2ggKGNoaWxkUHJvY2Vzcykge1xuICAgIGlmICgoY2hpbGRQcm9jZXNzIGFzIGFueSkuc3RhdHVzICE9IDApIHJldHVybiBmYWxzZVxuICAgIHRocm93IGNoaWxkUHJvY2Vzc1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21taXQocmVwb3NpdG9yeURpcjogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgZXhlY1N5bmMoXCJnaXQgYWRkIC5cIiwge1xuICAgIGN3ZDogcmVwb3NpdG9yeURpcixcbiAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgbWF4QnVmZmVyOiBNQVhCVUZGRVIsXG4gIH0pXG4gIHRyeSB7XG4gICAgZXhlY1N5bmMoYGdpdCBjb21taXQgLW0gXCIke21lc3NhZ2V9XCJgLCB7XG4gICAgICBjd2Q6IHJlcG9zaXRvcnlEaXIsXG4gICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJwaXBlXCIsIFwicGlwZVwiXSxcbiAgICB9KVxuICAgIHJldHVybiB0cnVlXG4gIH0gY2F0Y2ggKGNoaWxkUHJvY2Vzcykge1xuICAgIGlmIChcbiAgICAgIChjaGlsZFByb2Nlc3MgYXMgQ2hpbGRQcm9jZXNzKS5zdGRvdXQgPT09IG51bGwgfHxcbiAgICAgICEvbm90aGluZyB0byBjb21taXQvLnRlc3QoKGNoaWxkUHJvY2VzcyBhcyBhbnkpLnN0ZG91dClcbiAgICApIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoKGNoaWxkUHJvY2VzcyBhcyBhbnkpLm91dHB1dClcbiAgICAgIHRocm93IGNoaWxkUHJvY2Vzc1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdWlkQnJhbmNoVXBkYXRlKFxuICByZXBvc2l0b3J5RGlyOiBzdHJpbmcsXG4gIHN1YmRpcmVjdG9yaWVzOiBhbnksXG4gIG5vdEhhcmQ6IGJvb2xlYW4sXG4pOiBib29sZWFuIHtcbiAgY29uc3QgcHJldmlvdXNCcmFuY2ggPSBydW4ocmVwb3NpdG9yeURpciwgXCJyZXYtcGFyc2UgLS1hYmJyZXYtcmVmIEhFQURcIilcbiAgY29uc3QgYnJhbmNoID0gXCJ1aWRcIlxuICBjb25zdCBjd2QgPSBwcm9jZXNzLmN3ZCgpXG4gIHByb2Nlc3MuY2hkaXIocmVwb3NpdG9yeURpcilcbiAgZm9yIChjb25zdCBzdWJkaXJlY3Rvcnkgb2Ygc3ViZGlyZWN0b3JpZXMpIHtcbiAgICBjb25zdCB1aWREaXJlY3RvcnkgPSBgJHtzdWJkaXJlY3Rvcnl9L3VpZGBcbiAgICBmcy5lbnN1cmVEaXJTeW5jKHVpZERpcmVjdG9yeSlcbiAgICBmb3IgKGNvbnN0IHBhdGhuYW1lIG9mIGdldEZpbGVzKFtgJHtzdWJkaXJlY3Rvcnl9LyoqLyouanNvbmBdKSkge1xuICAgICAgY29uc3QgZmlsZW5hbWUgPSBwYXRoLmJhc2VuYW1lKHBhdGhuYW1lKVxuICAgICAgZnMucmVuYW1lU3luYyhwYXRobmFtZSwgYCR7dWlkRGlyZWN0b3J5fS8ke2ZpbGVuYW1lfWApXG4gICAgfVxuICB9XG4gIHByb2Nlc3MuY2hkaXIoY3dkKVxuICBpZiAodGVzdChyZXBvc2l0b3J5RGlyLCBgcmV2LXBhcnNlIHJlbW90ZXMvb3JpZ2luLyR7YnJhbmNofWApKSB7XG4gICAgLy8gaWYgYSByZW1vdGUgYnJhbmNoIGV4aXN0cywgaXQgbXVzdCBiZSB1c2VkIGV2ZW4gaWYgYSBsb2NhbCBicmFuY2ggZXhpc3RzXG4gICAgcnVuKHJlcG9zaXRvcnlEaXIsIGBicmFuY2ggLS1mb3JjZSAke2JyYW5jaH0gb3JpZ2luLyR7YnJhbmNofWApXG4gICAgcnVuKHJlcG9zaXRvcnlEaXIsIGBzeW1ib2xpYy1yZWYgSEVBRCByZWZzL2hlYWRzLyR7YnJhbmNofWApXG4gICAgcnVuKHJlcG9zaXRvcnlEaXIsIFwicmVzZXRcIilcbiAgfSBlbHNlIGlmICh0ZXN0KHJlcG9zaXRvcnlEaXIsIGByZXYtcGFyc2UgcmVmcy9oZWFkcy8ke2JyYW5jaH1gKSkge1xuICAgIC8vIGlmIG5vIHJlbW90ZSBicmFuY2ggZXhpc3RzIGJ1dCBhIGxvY2FsIG9uZSBleGlzdHMsIHVzZSBpdFxuICAgIHJ1bihyZXBvc2l0b3J5RGlyLCBgc3ltYm9saWMtcmVmIEhFQUQgcmVmcy9oZWFkcy8ke2JyYW5jaH1gKVxuICAgIHJ1bihyZXBvc2l0b3J5RGlyLCBcInJlc2V0XCIpXG4gIH0gZWxzZSB7XG4gICAgLy8gaWYgdGhlcmUgYXJlIG5vIHJlbW90ZSBvciBsb2NhbCBicmFuY2hlcywgY3JlYXRlIGEgbmV3IG9uZVxuICAgIHJ1bihyZXBvc2l0b3J5RGlyLCBgYnJhbmNoIC0tZm9yY2UgJHticmFuY2h9IG1hc3RlcmApXG4gICAgcnVuKHJlcG9zaXRvcnlEaXIsIGBzeW1ib2xpYy1yZWYgSEVBRCByZWZzL2hlYWRzLyR7YnJhbmNofWApXG4gICAgcnVuKHJlcG9zaXRvcnlEaXIsIFwicmVzZXRcIilcbiAgICBydW4ocmVwb3NpdG9yeURpciwgXCJybSAtciAuXCIpXG4gIH1cbiAgZm9yIChjb25zdCBzdWJkaXJlY3Rvcnkgb2Ygc3ViZGlyZWN0b3JpZXMpIHtcbiAgICBjb25zdCB1aWREaXJlY3RvcnkgPSBgJHtzdWJkaXJlY3Rvcnl9L3VpZGBcbiAgICBydW4ocmVwb3NpdG9yeURpciwgYGFkZCAke3VpZERpcmVjdG9yeX1gKVxuICB9XG4gIGxldCBzdGF0dXMgPSBmYWxzZVxuICBpZiAoIXRlc3QocmVwb3NpdG9yeURpciwgXCJkaWZmIC0tcXVpZXQgLS1jYWNoZWRcIikpIHtcbiAgICBydW4ocmVwb3NpdG9yeURpciwgYGNvbW1pdCAtbSAnVXBkYXRlJ2ApXG4gICAgc3RhdHVzID0gdHJ1ZVxuICB9XG4gIHJ1bihyZXBvc2l0b3J5RGlyLCBgc3ltYm9saWMtcmVmIEhFQUQgcmVmcy9oZWFkcy8ke3ByZXZpb3VzQnJhbmNofWApXG4gIGNvbnN0IHJlc2V0T3B0aW9uID0gbm90SGFyZCA/IFwiXCIgOiBcIi0taGFyZFwiXG4gIHJ1bihyZXBvc2l0b3J5RGlyLCBgcmVzZXQgJHtyZXNldE9wdGlvbn1gKVxuICByZXR1cm4gc3RhdHVz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
212
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNQVhCVUZGRVIiLCJydW4iLCJyZXBvc2l0b3J5RGlyIiwiYXJncyIsInZlcmJvc2UiLCJjb25zb2xlIiwibG9nIiwib3V0cHV0IiwiZXhlY1N5bmMiLCJjd2QiLCJtYXhCdWZmZXIiLCJ0b1N0cmluZyIsInRyaW0iLCJjaGlsZFByb2Nlc3MiLCJlcnJvciIsInRlc3QiLCJzdGRpbyIsInN0YXR1cyIsImNvbW1pdCIsIm1lc3NhZ2UiLCJlbnYiLCJwcm9jZXNzIiwiZW5jb2RpbmciLCJzdGRvdXQiLCJ1aWRCcmFuY2hVcGRhdGUiLCJzdWJkaXJlY3RvcmllcyIsIm5vdEhhcmQiLCJwcmV2aW91c0JyYW5jaCIsImJyYW5jaCIsImNoZGlyIiwic3ViZGlyZWN0b3J5IiwidWlkRGlyZWN0b3J5IiwiZnMiLCJlbnN1cmVEaXJTeW5jIiwiZ2V0RmlsZXMiLCJwYXRobmFtZSIsImZpbGVuYW1lIiwicGF0aCIsImJhc2VuYW1lIiwicmVuYW1lU3luYyIsInJlc2V0T3B0aW9uIl0sInNvdXJjZXMiOlsiLi4vc3JjL2dpdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCB7IGdldEZpbGVzIH0gZnJvbSBcIi4vZmlsZV9zeXN0ZW1zXCJcbmltcG9ydCB7IENoaWxkUHJvY2VzcywgZXhlY1N5bmMgfSBmcm9tIFwiY2hpbGRfcHJvY2Vzc1wiXG5cbmNvbnN0IE1BWEJVRkZFUiA9IDUwICogMTAyNCAqIDEwMjRcblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bihcbiAgcmVwb3NpdG9yeURpcjogc3RyaW5nLFxuICBhcmdzOiBzdHJpbmcsXG4gIHZlcmJvc2U/OiBib29sZWFuLFxuKTogc3RyaW5nIHtcbiAgdHJ5IHtcbiAgICBpZiAodmVyYm9zZSkgY29uc29sZS5sb2coYGdpdCAtQyAke3JlcG9zaXRvcnlEaXJ9ICR7YXJnc31gKVxuICAgIGNvbnN0IG91dHB1dCA9IGV4ZWNTeW5jKGBnaXQgJHthcmdzfWAsIHtcbiAgICAgIGN3ZDogcmVwb3NpdG9yeURpcixcbiAgICAgIG1heEJ1ZmZlcjogTUFYQlVGRkVSLFxuICAgIH0pXG4gICAgICAudG9TdHJpbmcoKVxuICAgICAgLnRyaW0oKVxuICAgIGlmICh2ZXJib3NlKSBjb25zb2xlLmxvZyhvdXRwdXQpXG4gICAgcmV0dXJuIG91dHB1dFxuICB9IGNhdGNoIChjaGlsZFByb2Nlc3MpIHtcbiAgICBmb3IgKGNvbnN0IG91dHB1dCBvZiBbXCJzdGRvdXRcIiwgXCJzdGRlcnJcIl0pXG4gICAgICBjb25zb2xlLmVycm9yKGAke291dHB1dH06ICR7KGNoaWxkUHJvY2VzcyBhcyBhbnkpW291dHB1dF19YClcbiAgICB0aHJvdyBjaGlsZFByb2Nlc3NcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVzdChcbiAgcmVwb3NpdG9yeURpcjogc3RyaW5nLFxuICBhcmdzOiBzdHJpbmcsXG4gIHZlcmJvc2U/OiBib29sZWFuLFxuKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgaWYgKHZlcmJvc2UpIGNvbnNvbGUubG9nKGBnaXQgLUMgJHtyZXBvc2l0b3J5RGlyfSAke2FyZ3N9YClcbiAgICBjb25zdCBvdXRwdXQgPSBleGVjU3luYyhgZ2l0ICR7YXJnc31gLCB7XG4gICAgICBjd2Q6IHJlcG9zaXRvcnlEaXIsXG4gICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwicGlwZVwiLCBcInBpcGVcIl0sXG4gICAgICBtYXhCdWZmZXI6IE1BWEJVRkZFUixcbiAgICB9KVxuICAgICAgLnRvU3RyaW5nKClcbiAgICAgIC50cmltKClcbiAgICBpZiAodmVyYm9zZSkgY29uc29sZS5sb2cob3V0cHV0KVxuICAgIHJldHVybiB0cnVlXG4gIH0gY2F0Y2ggKGNoaWxkUHJvY2Vzcykge1xuICAgIGlmICgoY2hpbGRQcm9jZXNzIGFzIGFueSkuc3RhdHVzICE9IDApIHJldHVybiBmYWxzZVxuICAgIHRocm93IGNoaWxkUHJvY2Vzc1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21taXQocmVwb3NpdG9yeURpcjogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgZXhlY1N5bmMoXCJnaXQgYWRkIC5cIiwge1xuICAgIGN3ZDogcmVwb3NpdG9yeURpcixcbiAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgbWF4QnVmZmVyOiBNQVhCVUZGRVIsXG4gIH0pXG4gIHRyeSB7XG4gICAgZXhlY1N5bmMoYGdpdCBjb21taXQgLW0gXCIke21lc3NhZ2V9XCJgLCB7XG4gICAgICBjd2Q6IHJlcG9zaXRvcnlEaXIsXG4gICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJwaXBlXCIsIFwicGlwZVwiXSxcbiAgICB9KVxuICAgIHJldHVybiB0cnVlXG4gIH0gY2F0Y2ggKGNoaWxkUHJvY2Vzcykge1xuICAgIGlmIChcbiAgICAgIChjaGlsZFByb2Nlc3MgYXMgQ2hpbGRQcm9jZXNzKS5zdGRvdXQgPT09IG51bGwgfHxcbiAgICAgICEvbm90aGluZyB0byBjb21taXQvLnRlc3QoKGNoaWxkUHJvY2VzcyBhcyBhbnkpLnN0ZG91dClcbiAgICApIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoKGNoaWxkUHJvY2VzcyBhcyBhbnkpLm91dHB1dClcbiAgICAgIHRocm93IGNoaWxkUHJvY2Vzc1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdWlkQnJhbmNoVXBkYXRlKFxuICByZXBvc2l0b3J5RGlyOiBzdHJpbmcsXG4gIHN1YmRpcmVjdG9yaWVzOiBhbnksXG4gIG5vdEhhcmQ6IGJvb2xlYW4sXG4pOiBib29sZWFuIHtcbiAgY29uc3QgcHJldmlvdXNCcmFuY2ggPSBydW4ocmVwb3NpdG9yeURpciwgXCJyZXYtcGFyc2UgLS1hYmJyZXYtcmVmIEhFQURcIilcbiAgY29uc3QgYnJhbmNoID0gXCJ1aWRcIlxuICBjb25zdCBjd2QgPSBwcm9jZXNzLmN3ZCgpXG4gIHByb2Nlc3MuY2hkaXIocmVwb3NpdG9yeURpcilcbiAgZm9yIChjb25zdCBzdWJkaXJlY3Rvcnkgb2Ygc3ViZGlyZWN0b3JpZXMpIHtcbiAgICBjb25zdCB1aWREaXJlY3RvcnkgPSBgJHtzdWJkaXJlY3Rvcnl9L3VpZGBcbiAgICBmcy5lbnN1cmVEaXJTeW5jKHVpZERpcmVjdG9yeSlcbiAgICBmb3IgKGNvbnN0IHBhdGhuYW1lIG9mIGdldEZpbGVzKFtgJHtzdWJkaXJlY3Rvcnl9LyoqLyouanNvbmBdKSkge1xuICAgICAgY29uc3QgZmlsZW5hbWUgPSBwYXRoLmJhc2VuYW1lKHBhdGhuYW1lKVxuICAgICAgZnMucmVuYW1lU3luYyhwYXRobmFtZSwgYCR7dWlkRGlyZWN0b3J5fS8ke2ZpbGVuYW1lfWApXG4gICAgfVxuICB9XG4gIHByb2Nlc3MuY2hkaXIoY3dkKVxuICBpZiAodGVzdChyZXBvc2l0b3J5RGlyLCBgcmV2LXBhcnNlIHJlbW90ZXMvb3JpZ2luLyR7YnJhbmNofWApKSB7XG4gICAgLy8gaWYgYSByZW1vdGUgYnJhbmNoIGV4aXN0cywgaXQgbXVzdCBiZSB1c2VkIGV2ZW4gaWYgYSBsb2NhbCBicmFuY2ggZXhpc3RzXG4gICAgcnVuKHJlcG9zaXRvcnlEaXIsIGBicmFuY2ggLS1mb3JjZSAke2JyYW5jaH0gb3JpZ2luLyR7YnJhbmNofWApXG4gICAgcnVuKHJlcG9zaXRvcnlEaXIsIGBzeW1ib2xpYy1yZWYgSEVBRCByZWZzL2hlYWRzLyR7YnJhbmNofWApXG4gICAgcnVuKHJlcG9zaXRvcnlEaXIsIFwicmVzZXRcIilcbiAgfSBlbHNlIGlmICh0ZXN0KHJlcG9zaXRvcnlEaXIsIGByZXYtcGFyc2UgcmVmcy9oZWFkcy8ke2JyYW5jaH1gKSkge1xuICAgIC8vIGlmIG5vIHJlbW90ZSBicmFuY2ggZXhpc3RzIGJ1dCBhIGxvY2FsIG9uZSBleGlzdHMsIHVzZSBpdFxuICAgIHJ1bihyZXBvc2l0b3J5RGlyLCBgc3ltYm9saWMtcmVmIEhFQUQgcmVmcy9oZWFkcy8ke2JyYW5jaH1gKVxuICAgIHJ1bihyZXBvc2l0b3J5RGlyLCBcInJlc2V0XCIpXG4gIH0gZWxzZSB7XG4gICAgLy8gaWYgdGhlcmUgYXJlIG5vIHJlbW90ZSBvciBsb2NhbCBicmFuY2hlcywgY3JlYXRlIGEgbmV3IG9uZVxuICAgIHJ1bihyZXBvc2l0b3J5RGlyLCBgYnJhbmNoIC0tZm9yY2UgJHticmFuY2h9IG1hc3RlcmApXG4gICAgcnVuKHJlcG9zaXRvcnlEaXIsIGBzeW1ib2xpYy1yZWYgSEVBRCByZWZzL2hlYWRzLyR7YnJhbmNofWApXG4gICAgcnVuKHJlcG9zaXRvcnlEaXIsIFwicmVzZXRcIilcbiAgICBydW4ocmVwb3NpdG9yeURpciwgXCJybSAtciAuXCIpXG4gIH1cbiAgZm9yIChjb25zdCBzdWJkaXJlY3Rvcnkgb2Ygc3ViZGlyZWN0b3JpZXMpIHtcbiAgICBjb25zdCB1aWREaXJlY3RvcnkgPSBgJHtzdWJkaXJlY3Rvcnl9L3VpZGBcbiAgICBydW4ocmVwb3NpdG9yeURpciwgYGFkZCAke3VpZERpcmVjdG9yeX1gKVxuICB9XG4gIGxldCBzdGF0dXMgPSBmYWxzZVxuICBpZiAoIXRlc3QocmVwb3NpdG9yeURpciwgXCJkaWZmIC0tcXVpZXQgLS1jYWNoZWRcIikpIHtcbiAgICBydW4ocmVwb3NpdG9yeURpciwgYGNvbW1pdCAtbSAnVXBkYXRlJ2ApXG4gICAgc3RhdHVzID0gdHJ1ZVxuICB9XG4gIHJ1bihyZXBvc2l0b3J5RGlyLCBgc3ltYm9saWMtcmVmIEhFQUQgcmVmcy9oZWFkcy8ke3ByZXZpb3VzQnJhbmNofWApXG4gIGNvbnN0IHJlc2V0T3B0aW9uID0gbm90SGFyZCA/IFwiXCIgOiBcIi0taGFyZFwiXG4gIHJ1bihyZXBvc2l0b3J5RGlyLCBgcmVzZXQgJHtyZXNldE9wdGlvbn1gKVxuICByZXR1cm4gc3RhdHVz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
package/lib/git.mjs ADDED
@@ -0,0 +1,114 @@
1
+ import path from "path";
2
+ import fs from "fs-extra";
3
+ import { getFiles } from "./file_systems.mjs";
4
+ import { execSync } from "child_process";
5
+ const MAXBUFFER = 50 * 1024 * 1024;
6
+ export function run(repositoryDir, args, verbose) {
7
+ try {
8
+ if (verbose) console.log(`git -C ${repositoryDir} ${args}`);
9
+ const output = execSync(`git ${args}`, {
10
+ cwd: repositoryDir,
11
+ maxBuffer: MAXBUFFER
12
+ }).toString().trim();
13
+ if (verbose) console.log(output);
14
+ return output;
15
+ } catch (childProcess) {
16
+ for (const output of ["stdout", "stderr"]) console.error(`${output}: ${childProcess[output]}`);
17
+
18
+ throw childProcess;
19
+ }
20
+ }
21
+ export function test(repositoryDir, args, verbose) {
22
+ try {
23
+ if (verbose) console.log(`git -C ${repositoryDir} ${args}`);
24
+ const output = execSync(`git ${args}`, {
25
+ cwd: repositoryDir,
26
+ stdio: ["ignore", "pipe", "pipe"],
27
+ maxBuffer: MAXBUFFER
28
+ }).toString().trim();
29
+ if (verbose) console.log(output);
30
+ return true;
31
+ } catch (childProcess) {
32
+ if (childProcess.status != 0) return false;
33
+ throw childProcess;
34
+ }
35
+ }
36
+ export function commit(repositoryDir, message) {
37
+ execSync("git add .", {
38
+ cwd: repositoryDir,
39
+ env: process.env,
40
+ encoding: "utf-8",
41
+ stdio: ["ignore", "ignore", "pipe"],
42
+ maxBuffer: MAXBUFFER
43
+ });
44
+
45
+ try {
46
+ execSync(`git commit -m "${message}"`, {
47
+ cwd: repositoryDir,
48
+ env: process.env,
49
+ encoding: "utf-8",
50
+ stdio: ["ignore", "pipe", "pipe"]
51
+ });
52
+ return true;
53
+ } catch (childProcess) {
54
+ if (childProcess.stdout === null || !/nothing to commit/.test(childProcess.stdout)) {
55
+ console.error(childProcess.output);
56
+ throw childProcess;
57
+ }
58
+
59
+ return false;
60
+ }
61
+ }
62
+ export function uidBranchUpdate(repositoryDir, subdirectories, notHard) {
63
+ const previousBranch = run(repositoryDir, "rev-parse --abbrev-ref HEAD");
64
+ const branch = "uid";
65
+ const cwd = process.cwd();
66
+ process.chdir(repositoryDir);
67
+
68
+ for (const subdirectory of subdirectories) {
69
+ const uidDirectory = `${subdirectory}/uid`;
70
+ fs.ensureDirSync(uidDirectory);
71
+
72
+ for (const pathname of getFiles([`${subdirectory}/**/*.json`])) {
73
+ const filename = path.basename(pathname);
74
+ fs.renameSync(pathname, `${uidDirectory}/${filename}`);
75
+ }
76
+ }
77
+
78
+ process.chdir(cwd);
79
+
80
+ if (test(repositoryDir, `rev-parse remotes/origin/${branch}`)) {
81
+ // if a remote branch exists, it must be used even if a local branch exists
82
+ run(repositoryDir, `branch --force ${branch} origin/${branch}`);
83
+ run(repositoryDir, `symbolic-ref HEAD refs/heads/${branch}`);
84
+ run(repositoryDir, "reset");
85
+ } else if (test(repositoryDir, `rev-parse refs/heads/${branch}`)) {
86
+ // if no remote branch exists but a local one exists, use it
87
+ run(repositoryDir, `symbolic-ref HEAD refs/heads/${branch}`);
88
+ run(repositoryDir, "reset");
89
+ } else {
90
+ // if there are no remote or local branches, create a new one
91
+ run(repositoryDir, `branch --force ${branch} master`);
92
+ run(repositoryDir, `symbolic-ref HEAD refs/heads/${branch}`);
93
+ run(repositoryDir, "reset");
94
+ run(repositoryDir, "rm -r .");
95
+ }
96
+
97
+ for (const subdirectory of subdirectories) {
98
+ const uidDirectory = `${subdirectory}/uid`;
99
+ run(repositoryDir, `add ${uidDirectory}`);
100
+ }
101
+
102
+ let status = false;
103
+
104
+ if (!test(repositoryDir, "diff --quiet --cached")) {
105
+ run(repositoryDir, `commit -m 'Update'`);
106
+ status = true;
107
+ }
108
+
109
+ run(repositoryDir, `symbolic-ref HEAD refs/heads/${previousBranch}`);
110
+ const resetOption = notHard ? "" : "--hard";
111
+ run(repositoryDir, `reset ${resetOption}`);
112
+ return status;
113
+ }
114
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXRoIiwiZnMiLCJnZXRGaWxlcyIsImV4ZWNTeW5jIiwiTUFYQlVGRkVSIiwicnVuIiwicmVwb3NpdG9yeURpciIsImFyZ3MiLCJ2ZXJib3NlIiwiY29uc29sZSIsImxvZyIsIm91dHB1dCIsImN3ZCIsIm1heEJ1ZmZlciIsInRvU3RyaW5nIiwidHJpbSIsImNoaWxkUHJvY2VzcyIsImVycm9yIiwidGVzdCIsInN0ZGlvIiwic3RhdHVzIiwiY29tbWl0IiwibWVzc2FnZSIsImVudiIsInByb2Nlc3MiLCJlbmNvZGluZyIsInN0ZG91dCIsInVpZEJyYW5jaFVwZGF0ZSIsInN1YmRpcmVjdG9yaWVzIiwibm90SGFyZCIsInByZXZpb3VzQnJhbmNoIiwiYnJhbmNoIiwiY2hkaXIiLCJzdWJkaXJlY3RvcnkiLCJ1aWREaXJlY3RvcnkiLCJlbnN1cmVEaXJTeW5jIiwicGF0aG5hbWUiLCJmaWxlbmFtZSIsImJhc2VuYW1lIiwicmVuYW1lU3luYyIsInJlc2V0T3B0aW9uIl0sInNvdXJjZXMiOlsiLi4vc3JjL2dpdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCB7IGdldEZpbGVzIH0gZnJvbSBcIi4vZmlsZV9zeXN0ZW1zXCJcbmltcG9ydCB7IENoaWxkUHJvY2VzcywgZXhlY1N5bmMgfSBmcm9tIFwiY2hpbGRfcHJvY2Vzc1wiXG5cbmNvbnN0IE1BWEJVRkZFUiA9IDUwICogMTAyNCAqIDEwMjRcblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bihcbiAgcmVwb3NpdG9yeURpcjogc3RyaW5nLFxuICBhcmdzOiBzdHJpbmcsXG4gIHZlcmJvc2U/OiBib29sZWFuLFxuKTogc3RyaW5nIHtcbiAgdHJ5IHtcbiAgICBpZiAodmVyYm9zZSkgY29uc29sZS5sb2coYGdpdCAtQyAke3JlcG9zaXRvcnlEaXJ9ICR7YXJnc31gKVxuICAgIGNvbnN0IG91dHB1dCA9IGV4ZWNTeW5jKGBnaXQgJHthcmdzfWAsIHtcbiAgICAgIGN3ZDogcmVwb3NpdG9yeURpcixcbiAgICAgIG1heEJ1ZmZlcjogTUFYQlVGRkVSLFxuICAgIH0pXG4gICAgICAudG9TdHJpbmcoKVxuICAgICAgLnRyaW0oKVxuICAgIGlmICh2ZXJib3NlKSBjb25zb2xlLmxvZyhvdXRwdXQpXG4gICAgcmV0dXJuIG91dHB1dFxuICB9IGNhdGNoIChjaGlsZFByb2Nlc3MpIHtcbiAgICBmb3IgKGNvbnN0IG91dHB1dCBvZiBbXCJzdGRvdXRcIiwgXCJzdGRlcnJcIl0pXG4gICAgICBjb25zb2xlLmVycm9yKGAke291dHB1dH06ICR7KGNoaWxkUHJvY2VzcyBhcyBhbnkpW291dHB1dF19YClcbiAgICB0aHJvdyBjaGlsZFByb2Nlc3NcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVzdChcbiAgcmVwb3NpdG9yeURpcjogc3RyaW5nLFxuICBhcmdzOiBzdHJpbmcsXG4gIHZlcmJvc2U/OiBib29sZWFuLFxuKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgaWYgKHZlcmJvc2UpIGNvbnNvbGUubG9nKGBnaXQgLUMgJHtyZXBvc2l0b3J5RGlyfSAke2FyZ3N9YClcbiAgICBjb25zdCBvdXRwdXQgPSBleGVjU3luYyhgZ2l0ICR7YXJnc31gLCB7XG4gICAgICBjd2Q6IHJlcG9zaXRvcnlEaXIsXG4gICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwicGlwZVwiLCBcInBpcGVcIl0sXG4gICAgICBtYXhCdWZmZXI6IE1BWEJVRkZFUixcbiAgICB9KVxuICAgICAgLnRvU3RyaW5nKClcbiAgICAgIC50cmltKClcbiAgICBpZiAodmVyYm9zZSkgY29uc29sZS5sb2cob3V0cHV0KVxuICAgIHJldHVybiB0cnVlXG4gIH0gY2F0Y2ggKGNoaWxkUHJvY2Vzcykge1xuICAgIGlmICgoY2hpbGRQcm9jZXNzIGFzIGFueSkuc3RhdHVzICE9IDApIHJldHVybiBmYWxzZVxuICAgIHRocm93IGNoaWxkUHJvY2Vzc1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21taXQocmVwb3NpdG9yeURpcjogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgZXhlY1N5bmMoXCJnaXQgYWRkIC5cIiwge1xuICAgIGN3ZDogcmVwb3NpdG9yeURpcixcbiAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgbWF4QnVmZmVyOiBNQVhCVUZGRVIsXG4gIH0pXG4gIHRyeSB7XG4gICAgZXhlY1N5bmMoYGdpdCBjb21taXQgLW0gXCIke21lc3NhZ2V9XCJgLCB7XG4gICAgICBjd2Q6IHJlcG9zaXRvcnlEaXIsXG4gICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJwaXBlXCIsIFwicGlwZVwiXSxcbiAgICB9KVxuICAgIHJldHVybiB0cnVlXG4gIH0gY2F0Y2ggKGNoaWxkUHJvY2Vzcykge1xuICAgIGlmIChcbiAgICAgIChjaGlsZFByb2Nlc3MgYXMgQ2hpbGRQcm9jZXNzKS5zdGRvdXQgPT09IG51bGwgfHxcbiAgICAgICEvbm90aGluZyB0byBjb21taXQvLnRlc3QoKGNoaWxkUHJvY2VzcyBhcyBhbnkpLnN0ZG91dClcbiAgICApIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoKGNoaWxkUHJvY2VzcyBhcyBhbnkpLm91dHB1dClcbiAgICAgIHRocm93IGNoaWxkUHJvY2Vzc1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdWlkQnJhbmNoVXBkYXRlKFxuICByZXBvc2l0b3J5RGlyOiBzdHJpbmcsXG4gIHN1YmRpcmVjdG9yaWVzOiBhbnksXG4gIG5vdEhhcmQ6IGJvb2xlYW4sXG4pOiBib29sZWFuIHtcbiAgY29uc3QgcHJldmlvdXNCcmFuY2ggPSBydW4ocmVwb3NpdG9yeURpciwgXCJyZXYtcGFyc2UgLS1hYmJyZXYtcmVmIEhFQURcIilcbiAgY29uc3QgYnJhbmNoID0gXCJ1aWRcIlxuICBjb25zdCBjd2QgPSBwcm9jZXNzLmN3ZCgpXG4gIHByb2Nlc3MuY2hkaXIocmVwb3NpdG9yeURpcilcbiAgZm9yIChjb25zdCBzdWJkaXJlY3Rvcnkgb2Ygc3ViZGlyZWN0b3JpZXMpIHtcbiAgICBjb25zdCB1aWREaXJlY3RvcnkgPSBgJHtzdWJkaXJlY3Rvcnl9L3VpZGBcbiAgICBmcy5lbnN1cmVEaXJTeW5jKHVpZERpcmVjdG9yeSlcbiAgICBmb3IgKGNvbnN0IHBhdGhuYW1lIG9mIGdldEZpbGVzKFtgJHtzdWJkaXJlY3Rvcnl9LyoqLyouanNvbmBdKSkge1xuICAgICAgY29uc3QgZmlsZW5hbWUgPSBwYXRoLmJhc2VuYW1lKHBhdGhuYW1lKVxuICAgICAgZnMucmVuYW1lU3luYyhwYXRobmFtZSwgYCR7dWlkRGlyZWN0b3J5fS8ke2ZpbGVuYW1lfWApXG4gICAgfVxuICB9XG4gIHByb2Nlc3MuY2hkaXIoY3dkKVxuICBpZiAodGVzdChyZXBvc2l0b3J5RGlyLCBgcmV2LXBhcnNlIHJlbW90ZXMvb3JpZ2luLyR7YnJhbmNofWApKSB7XG4gICAgLy8gaWYgYSByZW1vdGUgYnJhbmNoIGV4aXN0cywgaXQgbXVzdCBiZSB1c2VkIGV2ZW4gaWYgYSBsb2NhbCBicmFuY2ggZXhpc3RzXG4gICAgcnVuKHJlcG9zaXRvcnlEaXIsIGBicmFuY2ggLS1mb3JjZSAke2JyYW5jaH0gb3JpZ2luLyR7YnJhbmNofWApXG4gICAgcnVuKHJlcG9zaXRvcnlEaXIsIGBzeW1ib2xpYy1yZWYgSEVBRCByZWZzL2hlYWRzLyR7YnJhbmNofWApXG4gICAgcnVuKHJlcG9zaXRvcnlEaXIsIFwicmVzZXRcIilcbiAgfSBlbHNlIGlmICh0ZXN0KHJlcG9zaXRvcnlEaXIsIGByZXYtcGFyc2UgcmVmcy9oZWFkcy8ke2JyYW5jaH1gKSkge1xuICAgIC8vIGlmIG5vIHJlbW90ZSBicmFuY2ggZXhpc3RzIGJ1dCBhIGxvY2FsIG9uZSBleGlzdHMsIHVzZSBpdFxuICAgIHJ1bihyZXBvc2l0b3J5RGlyLCBgc3ltYm9saWMtcmVmIEhFQUQgcmVmcy9oZWFkcy8ke2JyYW5jaH1gKVxuICAgIHJ1bihyZXBvc2l0b3J5RGlyLCBcInJlc2V0XCIpXG4gIH0gZWxzZSB7XG4gICAgLy8gaWYgdGhlcmUgYXJlIG5vIHJlbW90ZSBvciBsb2NhbCBicmFuY2hlcywgY3JlYXRlIGEgbmV3IG9uZVxuICAgIHJ1bihyZXBvc2l0b3J5RGlyLCBgYnJhbmNoIC0tZm9yY2UgJHticmFuY2h9IG1hc3RlcmApXG4gICAgcnVuKHJlcG9zaXRvcnlEaXIsIGBzeW1ib2xpYy1yZWYgSEVBRCByZWZzL2hlYWRzLyR7YnJhbmNofWApXG4gICAgcnVuKHJlcG9zaXRvcnlEaXIsIFwicmVzZXRcIilcbiAgICBydW4ocmVwb3NpdG9yeURpciwgXCJybSAtciAuXCIpXG4gIH1cbiAgZm9yIChjb25zdCBzdWJkaXJlY3Rvcnkgb2Ygc3ViZGlyZWN0b3JpZXMpIHtcbiAgICBjb25zdCB1aWREaXJlY3RvcnkgPSBgJHtzdWJkaXJlY3Rvcnl9L3VpZGBcbiAgICBydW4ocmVwb3NpdG9yeURpciwgYGFkZCAke3VpZERpcmVjdG9yeX1gKVxuICB9XG4gIGxldCBzdGF0dXMgPSBmYWxzZVxuICBpZiAoIXRlc3QocmVwb3NpdG9yeURpciwgXCJkaWZmIC0tcXVpZXQgLS1jYWNoZWRcIikpIHtcbiAgICBydW4ocmVwb3NpdG9yeURpciwgYGNvbW1pdCAtbSAnVXBkYXRlJ2ApXG4gICAgc3RhdHVzID0gdHJ1ZVxuICB9XG4gIHJ1bihyZXBvc2l0b3J5RGlyLCBgc3ltYm9saWMtcmVmIEhFQUQgcmVmcy9oZWFkcy8ke3ByZXZpb3VzQnJhbmNofWApXG4gIGNvbnN0IHJlc2V0T3B0aW9uID0gbm90SGFyZCA/IFwiXCIgOiBcIi0taGFyZFwiXG4gIHJ1bihyZXBvc2l0b3J5RGlyLCBgcmVzZXQgJHtyZXNldE9wdGlvbn1gKVxuICByZXR1cm4gc3RhdHVzXG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLElBQVAsTUFBaUIsTUFBakI7QUFDQSxPQUFPQyxFQUFQLE1BQWUsVUFBZjtTQUNTQyxRO0FBQ1QsU0FBdUJDLFFBQXZCLFFBQXVDLGVBQXZDO0FBRUEsTUFBTUMsU0FBUyxHQUFHLEtBQUssSUFBTCxHQUFZLElBQTlCO0FBRUEsT0FBTyxTQUFTQyxHQUFULENBQ0xDLGFBREssRUFFTEMsSUFGSyxFQUdMQyxPQUhLLEVBSUc7RUFDUixJQUFJO0lBQ0YsSUFBSUEsT0FBSixFQUFhQyxPQUFPLENBQUNDLEdBQVIsQ0FBYSxVQUFTSixhQUFjLElBQUdDLElBQUssRUFBNUM7SUFDYixNQUFNSSxNQUFNLEdBQUdSLFFBQVEsQ0FBRSxPQUFNSSxJQUFLLEVBQWIsRUFBZ0I7TUFDckNLLEdBQUcsRUFBRU4sYUFEZ0M7TUFFckNPLFNBQVMsRUFBRVQ7SUFGMEIsQ0FBaEIsQ0FBUixDQUlaVSxRQUpZLEdBS1pDLElBTFksRUFBZjtJQU1BLElBQUlQLE9BQUosRUFBYUMsT0FBTyxDQUFDQyxHQUFSLENBQVlDLE1BQVo7SUFDYixPQUFPQSxNQUFQO0VBQ0QsQ0FWRCxDQVVFLE9BQU9LLFlBQVAsRUFBcUI7SUFDckIsS0FBSyxNQUFNTCxNQUFYLElBQXFCLENBQUMsUUFBRCxFQUFXLFFBQVgsQ0FBckIsRUFDRUYsT0FBTyxDQUFDUSxLQUFSLENBQWUsR0FBRU4sTUFBTyxLQUFLSyxZQUFELENBQXNCTCxNQUF0QixDQUE4QixFQUExRDs7SUFDRixNQUFNSyxZQUFOO0VBQ0Q7QUFDRjtBQUVELE9BQU8sU0FBU0UsSUFBVCxDQUNMWixhQURLLEVBRUxDLElBRkssRUFHTEMsT0FISyxFQUlJO0VBQ1QsSUFBSTtJQUNGLElBQUlBLE9BQUosRUFBYUMsT0FBTyxDQUFDQyxHQUFSLENBQWEsVUFBU0osYUFBYyxJQUFHQyxJQUFLLEVBQTVDO0lBQ2IsTUFBTUksTUFBTSxHQUFHUixRQUFRLENBQUUsT0FBTUksSUFBSyxFQUFiLEVBQWdCO01BQ3JDSyxHQUFHLEVBQUVOLGFBRGdDO01BRXJDYSxLQUFLLEVBQUUsQ0FBQyxRQUFELEVBQVcsTUFBWCxFQUFtQixNQUFuQixDQUY4QjtNQUdyQ04sU0FBUyxFQUFFVDtJQUgwQixDQUFoQixDQUFSLENBS1pVLFFBTFksR0FNWkMsSUFOWSxFQUFmO0lBT0EsSUFBSVAsT0FBSixFQUFhQyxPQUFPLENBQUNDLEdBQVIsQ0FBWUMsTUFBWjtJQUNiLE9BQU8sSUFBUDtFQUNELENBWEQsQ0FXRSxPQUFPSyxZQUFQLEVBQXFCO0lBQ3JCLElBQUtBLFlBQUQsQ0FBc0JJLE1BQXRCLElBQWdDLENBQXBDLEVBQXVDLE9BQU8sS0FBUDtJQUN2QyxNQUFNSixZQUFOO0VBQ0Q7QUFDRjtBQUVELE9BQU8sU0FBU0ssTUFBVCxDQUFnQmYsYUFBaEIsRUFBdUNnQixPQUF2QyxFQUFpRTtFQUN0RW5CLFFBQVEsQ0FBQyxXQUFELEVBQWM7SUFDcEJTLEdBQUcsRUFBRU4sYUFEZTtJQUVwQmlCLEdBQUcsRUFBRUMsT0FBTyxDQUFDRCxHQUZPO0lBR3BCRSxRQUFRLEVBQUUsT0FIVTtJQUlwQk4sS0FBSyxFQUFFLENBQUMsUUFBRCxFQUFXLFFBQVgsRUFBcUIsTUFBckIsQ0FKYTtJQUtwQk4sU0FBUyxFQUFFVDtFQUxTLENBQWQsQ0FBUjs7RUFPQSxJQUFJO0lBQ0ZELFFBQVEsQ0FBRSxrQkFBaUJtQixPQUFRLEdBQTNCLEVBQStCO01BQ3JDVixHQUFHLEVBQUVOLGFBRGdDO01BRXJDaUIsR0FBRyxFQUFFQyxPQUFPLENBQUNELEdBRndCO01BR3JDRSxRQUFRLEVBQUUsT0FIMkI7TUFJckNOLEtBQUssRUFBRSxDQUFDLFFBQUQsRUFBVyxNQUFYLEVBQW1CLE1BQW5CO0lBSjhCLENBQS9CLENBQVI7SUFNQSxPQUFPLElBQVA7RUFDRCxDQVJELENBUUUsT0FBT0gsWUFBUCxFQUFxQjtJQUNyQixJQUNHQSxZQUFELENBQStCVSxNQUEvQixLQUEwQyxJQUExQyxJQUNBLENBQUMsb0JBQW9CUixJQUFwQixDQUEwQkYsWUFBRCxDQUFzQlUsTUFBL0MsQ0FGSCxFQUdFO01BQ0FqQixPQUFPLENBQUNRLEtBQVIsQ0FBZUQsWUFBRCxDQUFzQkwsTUFBcEM7TUFDQSxNQUFNSyxZQUFOO0lBQ0Q7O0lBQ0QsT0FBTyxLQUFQO0VBQ0Q7QUFDRjtBQUVELE9BQU8sU0FBU1csZUFBVCxDQUNMckIsYUFESyxFQUVMc0IsY0FGSyxFQUdMQyxPQUhLLEVBSUk7RUFDVCxNQUFNQyxjQUFjLEdBQUd6QixHQUFHLENBQUNDLGFBQUQsRUFBZ0IsNkJBQWhCLENBQTFCO0VBQ0EsTUFBTXlCLE1BQU0sR0FBRyxLQUFmO0VBQ0EsTUFBTW5CLEdBQUcsR0FBR1ksT0FBTyxDQUFDWixHQUFSLEVBQVo7RUFDQVksT0FBTyxDQUFDUSxLQUFSLENBQWMxQixhQUFkOztFQUNBLEtBQUssTUFBTTJCLFlBQVgsSUFBMkJMLGNBQTNCLEVBQTJDO0lBQ3pDLE1BQU1NLFlBQVksR0FBSSxHQUFFRCxZQUFhLE1BQXJDO0lBQ0FoQyxFQUFFLENBQUNrQyxhQUFILENBQWlCRCxZQUFqQjs7SUFDQSxLQUFLLE1BQU1FLFFBQVgsSUFBdUJsQyxRQUFRLENBQUMsQ0FBRSxHQUFFK0IsWUFBYSxZQUFqQixDQUFELENBQS9CLEVBQWdFO01BQzlELE1BQU1JLFFBQVEsR0FBR3JDLElBQUksQ0FBQ3NDLFFBQUwsQ0FBY0YsUUFBZCxDQUFqQjtNQUNBbkMsRUFBRSxDQUFDc0MsVUFBSCxDQUFjSCxRQUFkLEVBQXlCLEdBQUVGLFlBQWEsSUFBR0csUUFBUyxFQUFwRDtJQUNEO0VBQ0Y7O0VBQ0RiLE9BQU8sQ0FBQ1EsS0FBUixDQUFjcEIsR0FBZDs7RUFDQSxJQUFJTSxJQUFJLENBQUNaLGFBQUQsRUFBaUIsNEJBQTJCeUIsTUFBTyxFQUFuRCxDQUFSLEVBQStEO0lBQzdEO0lBQ0ExQixHQUFHLENBQUNDLGFBQUQsRUFBaUIsa0JBQWlCeUIsTUFBTyxXQUFVQSxNQUFPLEVBQTFELENBQUg7SUFDQTFCLEdBQUcsQ0FBQ0MsYUFBRCxFQUFpQixnQ0FBK0J5QixNQUFPLEVBQXZELENBQUg7SUFDQTFCLEdBQUcsQ0FBQ0MsYUFBRCxFQUFnQixPQUFoQixDQUFIO0VBQ0QsQ0FMRCxNQUtPLElBQUlZLElBQUksQ0FBQ1osYUFBRCxFQUFpQix3QkFBdUJ5QixNQUFPLEVBQS9DLENBQVIsRUFBMkQ7SUFDaEU7SUFDQTFCLEdBQUcsQ0FBQ0MsYUFBRCxFQUFpQixnQ0FBK0J5QixNQUFPLEVBQXZELENBQUg7SUFDQTFCLEdBQUcsQ0FBQ0MsYUFBRCxFQUFnQixPQUFoQixDQUFIO0VBQ0QsQ0FKTSxNQUlBO0lBQ0w7SUFDQUQsR0FBRyxDQUFDQyxhQUFELEVBQWlCLGtCQUFpQnlCLE1BQU8sU0FBekMsQ0FBSDtJQUNBMUIsR0FBRyxDQUFDQyxhQUFELEVBQWlCLGdDQUErQnlCLE1BQU8sRUFBdkQsQ0FBSDtJQUNBMUIsR0FBRyxDQUFDQyxhQUFELEVBQWdCLE9BQWhCLENBQUg7SUFDQUQsR0FBRyxDQUFDQyxhQUFELEVBQWdCLFNBQWhCLENBQUg7RUFDRDs7RUFDRCxLQUFLLE1BQU0yQixZQUFYLElBQTJCTCxjQUEzQixFQUEyQztJQUN6QyxNQUFNTSxZQUFZLEdBQUksR0FBRUQsWUFBYSxNQUFyQztJQUNBNUIsR0FBRyxDQUFDQyxhQUFELEVBQWlCLE9BQU00QixZQUFhLEVBQXBDLENBQUg7RUFDRDs7RUFDRCxJQUFJZCxNQUFNLEdBQUcsS0FBYjs7RUFDQSxJQUFJLENBQUNGLElBQUksQ0FBQ1osYUFBRCxFQUFnQix1QkFBaEIsQ0FBVCxFQUFtRDtJQUNqREQsR0FBRyxDQUFDQyxhQUFELEVBQWlCLG9CQUFqQixDQUFIO0lBQ0FjLE1BQU0sR0FBRyxJQUFUO0VBQ0Q7O0VBQ0RmLEdBQUcsQ0FBQ0MsYUFBRCxFQUFpQixnQ0FBK0J3QixjQUFlLEVBQS9ELENBQUg7RUFDQSxNQUFNVSxXQUFXLEdBQUdYLE9BQU8sR0FBRyxFQUFILEdBQVEsUUFBbkM7RUFDQXhCLEdBQUcsQ0FBQ0MsYUFBRCxFQUFpQixTQUFRa0MsV0FBWSxFQUFyQyxDQUFIO0VBQ0EsT0FBT3BCLE1BQVA7QUFDRCJ9